@leanandmean/coding-agent 0.74.1-scramjet.74 → 0.74.1-scramjet.76
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -16,6 +16,32 @@ The shared headless terminal feeds actual TUI writes into `@xterm/headless`; its
|
|
|
16
16
|
|
|
17
17
|
The native journey fixture is `packages/scramjet/tests/fixtures/interactive-viewport.mjs`. Hosted interaction and graphics drivers live in `.github/scripts/terminal-probe.py` and `.github/scripts/terminal-safety.py`; `.github/scripts/test-terminal-fixtures.py` exercises their evidence predicates. `.github/workflows/terminal-feasibility.yml` owns the hosted matrix. Build the runtime before running fixtures, because they load compiled packages. Windows desktop/clipboard execution through `.github/scripts/windows-terminal-probe.sh` requires separate explicit permission.
|
|
18
18
|
|
|
19
|
+
## Settings-input diagnostics
|
|
20
|
+
|
|
21
|
+
The native interaction driver arms the fixture's serialized `settings-trace-dock`, `settings-trace-wheel` or `settings-trace-height` action immediately before typing the synthetic search query, and disarms with `settings-trace-end` in `finally`. The action ID is the transaction ID; `report.json` retains each transaction separately before subsequent input or cleanup can overwrite fixture state. `/settings` entry precedes the armed search window. Exact flushed `> query` readiness and its existing four-second polling deadline remain authoritative: there is one typing attempt, no prefix acceptance, paste substitution or automatic retyping.
|
|
22
|
+
|
|
23
|
+
`settingsTransactions` records the intended `queryId`, ID, acceptance result, driver-local duration, optional posting receipt and final `fixture` evidence. Missing fixture/receipt evidence is explicit (`diagnosticError`, or an absent posting record if generation failed). `fixture.json` retains only the current or last transaction as `settingsInput`; a new arm resets all observations. A failed disarm retains the pre-disarm snapshot and does not replace the original acceptance error.
|
|
24
|
+
|
|
25
|
+
Observation boundaries are deliberately distinct:
|
|
26
|
+
|
|
27
|
+
- macOS key/text stdout contains ordered `keys` receipts with attempted physical codes/flags, down/up HID postings (including modifier events), local monotonic start/end and posting offsets, and frontmost bundle/PID at start plus PID at end. Physical ordering and 20ms pacing are unchanged. `hid-posting-only` means the posting calls returned, **not OS/terminal delivery acknowledgement**. The other Swift consumer, `terminal-safety.py`, ignores key/text stdout; mouse receipts are unchanged.
|
|
28
|
+
- The fixture wraps each `ProcessTerminal.start()` callback once and forwards its original arguments and return value unchanged. `parsed` observations precede TUI preprocessing; they are already downstream of stream framing, terminal protocol interception and parsing, **not raw stdin**. Restart, suspension and external-editor handoffs reuse this wrapper rather than accumulating observers.
|
|
29
|
+
- `listener` observations occur at the fixture's existing TUI listener. Earlier preprocessing/listeners may consume input; observing it here still does **not** prove settings-component receipt. Events include ordered sequence, fixture-local offset, editor-focus and frame-flush state. Final painted-query evidence accepts only prefixes of the expected synthetic query; anything else becomes `other-or-absent`.
|
|
30
|
+
|
|
31
|
+
New input diagnostics contain only the expected query's allowlisted keys and press/release categories, unrelated-input categories, or `redacted-paste`. Parsed bracketed paste is classified before key matching; even split stream delivery is reassembled by the existing production parser, not a second diagnostic parser. No paste payload, clipboard text, raw stdin or payload hashes are added. These privacy claims concern the new diagnostic fields, not a redesign of pre-existing synthetic fixture snapshots. Each window expires after ten seconds, retains at most 128 events, and reports `expired`, total `observations` and `dropped`; disarmed/expired evidence is frozen until the next transaction.
|
|
32
|
+
|
|
33
|
+
Correlate by transaction ID and ordered observations, not by subtracting monotonic origins from different processes. Posting without parsed-callback evidence leaves OS delivery, terminal encoding/stream delivery and parsing unresolved. Parsed/listener differences narrow application handling; neither an unchanged-code rerun nor these records establish a runner-flake diagnosis or fix the original lost character.
|
|
34
|
+
|
|
35
|
+
`phaseSeconds` reports startup/calibration, interaction, cleanup and (on macOS) Swift compilation durations, including failure paths. Compilation is nested within startup/calibration, and settings transaction durations are nested within interaction: do not sum overlapping intervals. These are measured local elapsed durations, not configured allowances or end-to-end input latency. Offline Python/PTY checks verify accounting, transaction privacy/lifecycle and exact incomplete-query evidence, not fresh macOS posting/delivery. Hosted receipt inspection and matched before/after native timing remain required in S3 of issue #617; no live npm publication is authorized as a benchmark.
|
|
36
|
+
|
|
37
|
+
## Job-local desktop driver reuse
|
|
38
|
+
|
|
39
|
+
The macOS interaction workflow compiles `.github/scripts/macos-terminal-events.swift` once after its clean exact-revision guard into `$RUNNER_TEMP/native-driver/desktop-events`. It explicitly supplies `--desktop-driver=<path>` to installed and checkout journeys, each installed control and the ARM64 iTerm2 default-off diagnostic. Omission preserves standalone compilation; an explicit empty, missing, directory or non-executable path fails without compiling a replacement. Shared-driver input is macOS-only. Safety jobs remain independent.
|
|
40
|
+
|
|
41
|
+
Uploaded `native-driver/compilation.json` identifies the source revision/SHA-256, binary SHA-256, compiler version, architecture, executable path and measured compilation duration. Each invocation's `desktopDriver` records mode (`shared`/`standalone`), resolved executable and binary digest, allowing correlation with that job's compilation record. Trust comes from same-job compilation of the guarded checkout, not from a digest alone. There is no cross-job/run/architecture cache or downloaded executable. Shared invocation has no `phaseSeconds.swiftCompilation`; the job's compilation duration is accounted separately, not charged to every invocation.
|
|
42
|
+
|
|
43
|
+
Per-invocation SDK/capability checks, profile configuration, fresh owned terminal execution, calibration, full interaction predicates, controls and restoration are unchanged. Reuse does not make desktop delivery or cleanup redundant. Native before/after evidence must qualify sample count, runner image/architecture, terminal/profile/toolchain, failures and queueing; compilation-count reduction alone is not measured elapsed benefit. Full release performance remains a separate, independently authorized observation.
|
|
44
|
+
|
|
19
45
|
## Recovery input smoke — 2026-10-08
|
|
20
46
|
|
|
21
47
|
A separately authorized Windows Terminal 1.24.12741.0 / Windows build 22631 / WSL offline production InteractiveMode smoke ran against freshly built Stage 5 changes on the dirty working tree based on `08defe2b1e33b0505e9105d36858d241ac17aa60`. A disposable fixture used isolated in-memory settings, a synthetic provider, and the real terminal-indicator implementation; no paid calls, personal extensions, clipboard writes or terminal preference changes occurred.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leanandmean/coding-agent",
|
|
3
|
-
"version": "0.74.1-scramjet.
|
|
3
|
+
"version": "0.74.1-scramjet.76",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"test": "vitest --run --passWithNoTests"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@leanandmean/agent": "0.74.1-scramjet.
|
|
41
|
-
"@leanandmean/ai": "0.74.1-scramjet.
|
|
42
|
-
"@leanandmean/tui": "0.74.1-scramjet.
|
|
40
|
+
"@leanandmean/agent": "0.74.1-scramjet.55",
|
|
41
|
+
"@leanandmean/ai": "0.74.1-scramjet.51",
|
|
42
|
+
"@leanandmean/tui": "0.74.1-scramjet.48",
|
|
43
43
|
"@silvia-odwyer/photon-node": "^0.3.4",
|
|
44
44
|
"chalk": "^5.5.0",
|
|
45
45
|
"dictionary-en": "^4.0.0",
|