d58e4e0ec8
v0.8.28: expose 5 lib-only tools + fix nc-engine arg-parsing crash
...
Wires nc_status, nc_engine, nc_xlate, nc_smat_diff, nc_tclgen as first-class
LLM tools (all 4 surfaces). nc_engine unlocks TPS testing (hcitps) + the
route-test driver. Fixes a real nc-engine.sh bug surfaced by the exposure:
the dispatcher treated every --flag as taking a value (--dry-run ate the next
token) and a set -u leak from journal.sh crashed start/stop/bounce on bash 3.2;
fixed with set +u + a multi-case parser (no over-shift on bare trailing flags).
Corrects stale CHANGELOG + nc_engine schema text that misstated the bug as live.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 17:18:23 -07:00
9dd5821436
v0.7.5: OAuth CR-taint fix + mouse opt-in + CR-safety sweep
...
- Fix bash arithmetic crash on MobaXterm/Cygwin: $(date +%s) was
returning CR-tainted values landing in $(( )) operands
- Mouse mode off by default; opt in via LARRY_MOUSE=1 or /mouse on
- Comprehensive CR-safety sweep across lib/*.sh and larry.sh — every
command-substitution result, file read, and user input that feeds
an arithmetic context, case dispatcher, or path/header is now
CR-stripped at the source
New shared helper lib/cygwin-safe.sh defines three primitives:
coerce_int VAL [DEFAULT] — for arithmetic / integer-test operands
strip_cr VAL — for case patterns, regex tests, paths, headers
read_clean VAR [PROMPT] — read -r wrapper that strips CR pre-assign
Hardened call sites (14 files, 60+ patch points):
- larry.sh: status-line date/tput, 3 y/N approvals, auth menu, API key
- lib/oauth.sh: cmd_login + cmd_refresh date+%s captures
- lib/nc-engine.sh: 5 y/N action prompts + find|wc arithmetic
- lib/nc-msgs.sh: parse_time_ms (4 date sites) + meta-TSV time + MSG_COUNT
- lib/nc-regression.sh: tr|wc count + hl7-diff ?-fallback arithmetic
- lib/nc-smat-diff.sh: A_COUNT/B_COUNT/DIFFS_TOTAL
- lib/nc-insert-protocol.sh: every awk-emitted line number → head/tail math
- lib/journal.sh: _next_seq wc -l arithmetic
- lib/lessons.sh: _next_id/_count + 2 y/N prompts
- lib/hl7-sanitize.sh: cmd_count + clear-table y/N
- lib/ssh-helper.sh: 4 local+remote wc -c integer compares
- lib/nc-find.sh, lib/nc-table.sh, lib/nc-document.sh, larry-rollback.sh
Reproduces the exact error Bryan hit:
bash: ...: arithmetic syntax error: invalid arithmetic operator (error token is "")
lib/cygwin-safe.sh added to MANIFEST so it auto-syncs on next launch.
Co-Authored-By: Clover (Claude Opus 4.7) <noreply@anthropic.com>
2026-05-27 19:17:48 -07:00
a0502e2ec6
v0.4.2: operational layer — engine ctrl, tables CRUD, xlate viz, smat-diff, create-thread, tclgen
...
Seven new lib tools — covers the remaining Bryan-requested gaps.
lib/nc-engine.sh
- Cloverleaf process control. Wraps shipped binaries (hcienginestop,
hcienginerun, hcienginerestart, hciengineroutetest). Every action
is Y/N confirmed AND journaled into engine-actions.tsv.
- Subcommands: stop, start, bounce/restart, status, resend-ib,
resend-ob, route-test, testxlate, tpstest.
lib/nc-status.sh
- Runtime status, v1-modelled. Subcommands: sites, threads, not-up,
connections, queued, raw. Auto-discovers hcienginestat / tstat /
connstatus binaries; falls back to file-presence heuristics.
lib/nc-table.sh
- Read+CRUD for .tbl lookup tables. Subcommands: list, show, pairs
(→csv/tsv), lookup, reverse-lookup, add, delete, create, replace.
- All modifications journal-backed. Composes csv-to-table /
table-to-csv for format conversion.
lib/nc-xlate.sh
- Visualize .xlt files. Parses the TCL nested-block ops format.
Subcommands: list, show, ops (TSV), tree (ASCII flow), summary
(counts + segments + tables touched), diff (cross-xlate).
- Confirmed working against Epic_ADT_CodaMetrix.xlt: identified
12 PATHCOPY + 1 COPY ops across MSH/EVN/PID/PV1/PV2/PD1/ZPD/ZPV/
AL1/GT1/IN1/IN2.
lib/nc-smat-diff.sh
- Cross-env smat content diff. Samples N msgs from each side,
pairs by configurable HL7 field (default MSH.10 = control ID),
hl7-diffs each pair with --ignore MSH.7. Outputs per-pair reports
+ master _summary.md with paired/A-only/B-only counts.
lib/nc-create-thread.sh
- High-level: create a new protocol + optionally splice a route from
an existing thread to the new one. Both writes journal-backed.
Confirmed end-to-end: created to_metrics_test outbound + routed
IB_ADT_muxS → to_metrics_test via journal entries 001+002.
lib/nc-tclgen.sh
- TCL UPOC scaffolding from intent. Templates: tps-presc, tps-postsc,
tps-iclkill, xlate-helper, trxid, ack, field-rewrite. Produces
clean syntax-correct TCL ready to edit.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 11:11:30 -07:00