@timurproko/a1 0.2.6-dev.734 → 0.2.6
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.
- package/dist/app/session-shell/index.d.ts +2 -2
- package/dist/app/session-shell/index.js +1 -1
- package/dist/app/session-shell/session-shell-root.d.ts +9 -1
- package/dist/app/session-shell/session-shell-root.js +56 -47
- package/dist/app/session-shell/session-shell.d.ts +37 -9
- package/dist/app/session-shell/session-shell.js +266 -446
- package/dist/app/session-shell/shell-host.d.ts +105 -0
- package/dist/app/session-shell/shell-host.js +523 -0
- package/dist/cli/session-context.js +6 -3
- package/dist/composition/owned-ui.js +45 -25
- package/dist/contracts/owned-ui/index.d.ts +1 -1
- package/dist/contracts/owned-ui/session-presenters.d.ts +35 -8
- package/dist/features/launch/index.d.ts +1 -1
- package/dist/features/launch/index.js +1 -1
- package/dist/features/launch/session-context.d.ts +1 -0
- package/dist/features/launch/session-context.js +1 -0
- package/dist/features/owned-ui/resources/release-notes.json +4 -0
- package/dist/features/owned-ui/settings-app.js +3 -3
- package/dist/foundation/lifecycle/index.d.ts +1 -1
- package/dist/foundation/lifecycle/index.js +1 -1
- package/dist/foundation/lifecycle/session-repository-context.d.ts +8 -2
- package/dist/foundation/lifecycle/session-repository-context.js +200 -65
- package/dist/foundation/release/cohort-state.js +5 -2
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.d.ts +11 -0
- package/dist/integrations/pi/tui-runtime/damage-aware-terminal.js +18 -2
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/linux-x64/manifest.json +1 -1
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/native/win32-x64/process-guardian.exe +0 -0
- package/dist/ui/components/value-menu.d.ts +6 -3
- package/dist/ui/components/value-menu.js +6 -5
- package/docs/architecture/boundaries.md +1 -1
- package/docs/architecture/evidence/terminal-host-spike/manual-one-pane-terminal-host.md +70 -0
- package/docs/architecture/evidence/terminal-host-spike/manual-two-by-two-basic-terminal-host.md +32 -0
- package/docs/architecture/evidence/terminal-host-spike/milestone-baseline.json +115 -0
- package/docs/architecture/evidence/terminal-host-spike/owned-ui-foundation-prerequisite.json +48 -0
- package/docs/architecture/evidence/terminal-host-spike/terminal-host-provenance.json +125 -0
- package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-1.json +56 -0
- package/docs/architecture/evidence/terminal-host-spike/terminal-host-task-5-3.json +174 -0
- package/docs/architecture/evidence/terminal-host-spike/terminal-spike-acceptance-record.json +18 -0
- package/docs/architecture/terminal-host-proof-gate.md +1 -1
- package/docs/architecture/terminal-host-spike-evidence.md +1 -1
- package/docs/architecture/ui-reference-provenance.md +1 -1
- package/docs/releases/0.2.6.md +44 -0
- package/package.json +1 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { overlaySpan } from "./spans.js";
|
|
2
2
|
import { displayWidth, padToWidth } from "./text.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Where the menu is placed: over its anchor, so the value in effect sits on the very
|
|
5
|
+
* row it was read from, shifted only as far as the body edges require.
|
|
6
|
+
*/
|
|
4
7
|
export function valueMenuFrame(state, anchor, layout) {
|
|
5
8
|
const bodyTop = layout.bodyTop ?? 0;
|
|
6
9
|
const bodyBottom = bodyTop + layout.bodyHeight;
|
|
7
|
-
const
|
|
8
|
-
const top =
|
|
9
|
-
? below
|
|
10
|
-
: Math.max(bodyTop, anchor.screenRow - state.choices.length);
|
|
10
|
+
const currentIndex = Math.max(0, state.current === null ? 0 : state.choices.indexOf(state.current));
|
|
11
|
+
const top = Math.max(bodyTop, Math.min(anchor.screenRow - currentIndex, bodyBottom - state.choices.length));
|
|
11
12
|
const previewWidth = Math.max(0, ...(state.previews ?? []).map(displayWidth));
|
|
12
13
|
const previewColumns = previewWidth === 0 ? 0 : previewWidth + 1;
|
|
13
14
|
const width = Math.max(...state.choices.map(choice => displayWidth(choice) + previewColumns + 4), 6);
|
|
@@ -53,7 +53,7 @@ The engine host removes A1's own obstacles to several Pi sessions in one process
|
|
|
53
53
|
|
|
54
54
|
## Planned multi-agent boundaries
|
|
55
55
|
|
|
56
|
-
The multi-agent workspace feature, its dependency-free contracts, the structured-agent runtime, and the Node side of the terminal-host protocol were removed from `develop
|
|
56
|
+
The multi-agent workspace feature, its dependency-free contracts, the structured-agent runtime, and the Node side of the terminal-host protocol were removed from `develop`; their last state is commit `243eb7a7` in `develop` history. That structured-workspace plan was retired on 2026-10-10 in favor of `add-persistent-multi-agent-tabs`, where every tab runs the complete A1 UI under the native terminal host. A future implementation starts from the current codebase rather than from that copy. The boundary rules below remain the design intent for that work.
|
|
57
57
|
|
|
58
58
|
The workspace feature may depend on workspace contracts and the structured/terminal-host foundations. Those foundations may depend only on dependency-free workspace contracts, never on product features, launch profiles, or each other unless an approved capability adds the dependency. Launch profiles do not import, initialize, launch, or connect to composed terminal-host infrastructure.
|
|
59
59
|
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Manual one-pane terminal-host result
|
|
2
|
+
|
|
3
|
+
## First manual artifact
|
|
4
|
+
|
|
5
|
+
- Artifact: `native/terminal-host/target/debug/addone-terminal-host.exe`
|
|
6
|
+
- SHA-256: `8d81db199687a9b8f195b4e40cb4b235de3ea00ffeb9cf55f9c64b1b3582cbba`
|
|
7
|
+
- Size: 2,214,912 bytes
|
|
8
|
+
- User-controlled run: one fullscreen `cmd.exe` pane inside Windows Terminal
|
|
9
|
+
|
|
10
|
+
The user reported that typing commands, cursor movement, colors, Windows Terminal resize, and fast output worked correctly.
|
|
11
|
+
|
|
12
|
+
The first artifact had one finding: `Ctrl+Shift+Q` did not exit.
|
|
13
|
+
|
|
14
|
+
## Corrective artifact
|
|
15
|
+
|
|
16
|
+
- Corrective artifact SHA-256: `1025a0823114477b7ab311ef55098647fc337b98a9194cf389fc124a047360bf`
|
|
17
|
+
- Size: 2,227,712 bytes
|
|
18
|
+
- Correction: accept `Ctrl+Q` or `Ctrl+Shift+Q`, including uppercase key delivery.
|
|
19
|
+
- Correction: resolve Windows command shims through generic PATH/PATHEXT lookup; `pi` resolves to `C:\Users\tprokopiev\AppData\Roaming\npm\pi.cmd`.
|
|
20
|
+
- Automated non-interactive result after correction: build, version/provenance, terminal model, PTY start, process exit, and cleanup passed.
|
|
21
|
+
|
|
22
|
+
## Follow-up artifact
|
|
23
|
+
|
|
24
|
+
- Artifact SHA-256: `b083af60eb8c4ca90438e4022c4e6d10b1410dda5554f554a8b814ba2cdee291`
|
|
25
|
+
- Size: 2,238,464 bytes
|
|
26
|
+
- Removed the host-owned quit shortcut so `Ctrl+Q` no longer intercepts input.
|
|
27
|
+
- Added generic calling-shell ancestry detection; this Git Bash environment resolves to `C:\Program Files\Git\usr\bin\bash.exe --login -i`.
|
|
28
|
+
- Disabled mouse capture by default so the outer terminal can provide native selection.
|
|
29
|
+
- Added `Shift+PageUp`/`Shift+PageDown` and `Shift+Up`/`Shift+Down` host scrollback.
|
|
30
|
+
- Non-interactive terminal model and PTY cleanup probes pass.
|
|
31
|
+
|
|
32
|
+
## Theme-preservation artifact
|
|
33
|
+
|
|
34
|
+
- Artifact SHA-256: `9989373d1ee28ac42bf7a6b1be02d68b92c23b71f14336db493a93d76df48198`
|
|
35
|
+
- Size: 2,238,464 bytes
|
|
36
|
+
- The frame composer now emits the outer terminal's default foreground/background for unstyled cells instead of forcing black.
|
|
37
|
+
- The automated probe asserts the default-background sequence and passes.
|
|
38
|
+
|
|
39
|
+
## Palette-preservation artifact
|
|
40
|
+
|
|
41
|
+
- Artifact SHA-256: `203219f0ee79f3086467dccb5479b5749b09f8bac79623f84682545d374ba2f4`
|
|
42
|
+
- Size: 2,238,976 bytes
|
|
43
|
+
- Palette-indexed child colors are emitted as palette indexes (`38;5;n` / `48;5;n`) instead of being converted through Ghostty's default RGB palette.
|
|
44
|
+
- The automated probe asserts default-background and palette-passthrough sequences and passes.
|
|
45
|
+
|
|
46
|
+
## Scrollback artifact
|
|
47
|
+
|
|
48
|
+
- Artifact SHA-256: `6280786d713abe37eb979e309d27b7ed1eb1f1e1e76e485b0bc5f9c357391ca6`
|
|
49
|
+
- Size: 2,246,656 bytes
|
|
50
|
+
- Mouse capture is enabled so wheel events reach the host; wheel and Shift+navigation scroll the retained terminal viewport.
|
|
51
|
+
- Viewport changes mark the frame dirty before composition.
|
|
52
|
+
- The non-interactive probe verifies retained scrollback, viewport movement, and repainted earlier content.
|
|
53
|
+
- Use the outer terminal's modifier-based selection, usually Shift+drag in Windows Terminal, while pointer capture is active.
|
|
54
|
+
|
|
55
|
+
## Selection and exit artifact
|
|
56
|
+
|
|
57
|
+
- Artifact SHA-256: `fc6d9d1ecbaae4718b850a42b5e6868758d1f4c8c8e1a7645237115d1f1d883c`
|
|
58
|
+
- Size: 2,266,624 bytes
|
|
59
|
+
- Plain left-drag selects terminal content with one uniform white background and black foreground; release emits an OSC 52 clipboard write.
|
|
60
|
+
- Double-click selects a word; triple-click selects a line.
|
|
61
|
+
- Ctrl+C clears an active host selection before reaching the child; without selection, interrupt keys remain child-owned.
|
|
62
|
+
- Mouse wheel scrolls the retained viewport. Home, End, PageUp, PageDown, and arrow keys remain child-owned; no host keyboard scroll binding is active.
|
|
63
|
+
- PTY output-channel closure exits the host when the child session ends.
|
|
64
|
+
- Non-interactive probes pass for terminal rendering, scrollback, selection, and PTY cleanup.
|
|
65
|
+
|
|
66
|
+
Manual retest should verify plain drag selection, double/triple click, mouse wheel, and Ctrl+C selection clearing. No terminal was launched or driven by automation on the active workstation.
|
|
67
|
+
|
|
68
|
+
## User acceptance
|
|
69
|
+
|
|
70
|
+
The user manually confirmed that the vanilla-Pi terminal-host proof launches and works after the interaction corrections. The accepted one-pane pipeline includes theme/palette preservation, retained scrollback, mouse wheel scrolling, plain drag selection, word/line click selection, selection clearing with Ctrl+C, and child-owned interrupt behavior. Task 5.1 is accepted; the next gate is the 2×2 multi-pane proof.
|
package/docs/architecture/evidence/terminal-host-spike/manual-two-by-two-basic-terminal-host.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Manual 2×2 terminal-host basic result
|
|
2
|
+
|
|
3
|
+
## Exact artifact
|
|
4
|
+
|
|
5
|
+
- Recorded at: `2026-08-14T16:13:20.217Z`
|
|
6
|
+
- Source commit: `aeb7421ff5cc82bc5da04cfb0d356e8f8041b6cb`
|
|
7
|
+
- Artifact: `native/terminal-host/target/debug/addone-terminal-host.exe`
|
|
8
|
+
- SHA-256: `896e1b5d2e2730dfd8e591fe3bd565a2aa283fb3ec6f64e8345745c6afcf024d`
|
|
9
|
+
- Size: 2,367,488 bytes
|
|
10
|
+
- Invocation: user-controlled `npm run proof:terminal-host`
|
|
11
|
+
- Surface: one existing outer terminal, one fixed tab, four independently PTY-backed Pi sessions
|
|
12
|
+
|
|
13
|
+
## User-reported result
|
|
14
|
+
|
|
15
|
+
The user manually confirmed all of the following against the exact artifact:
|
|
16
|
+
|
|
17
|
+
- all four panes launched Pi;
|
|
18
|
+
- the four-pane presentation worked without observed flicker;
|
|
19
|
+
- pane focus and input routing worked;
|
|
20
|
+
- changing or clicking the focused pane preserved content in every pane after the repaint correction.
|
|
21
|
+
|
|
22
|
+
The user accepted this basic multi-pane proof result.
|
|
23
|
+
|
|
24
|
+
## Explicit product disposition
|
|
25
|
+
|
|
26
|
+
The fixed 2×2 grid and dashed pane outlines are disposable proof scaffolding, not an accepted production layout or UI design. This result proves the native multi-pane pipeline only. It does not approve carrying the fixed geometry, border treatment, or proof interaction model into the product.
|
|
27
|
+
|
|
28
|
+
Production tabs and panes are expected later to use authoritative arbitrary layouts selected through the AddOne UI. The proof implementation may be removed or replaced after the exact-artifact 2×2 gate is finished; it must not become the default production workspace by inertia.
|
|
29
|
+
|
|
30
|
+
## Gate scope
|
|
31
|
+
|
|
32
|
+
This record does not complete the formal tasks 5.3–5.6 acceptance gate. High-rate output, broader terminal modes and interactions, resize/terminal-size measurements, resource observations, abnormal exits, isolated-worker requirements, and the final stop/go decision remain separately required. No automated physical terminal control was performed on the active workstation.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "addone-multi-agent-milestone-baseline-v1",
|
|
3
|
+
"recordedAt": "2026-08-13T17:49:35.803Z",
|
|
4
|
+
"branch": "milestone/multi-agent-workspace",
|
|
5
|
+
"source": {
|
|
6
|
+
"commit": "8f4a45b907c8ccfca9b6fad52bd12c2bfe7b1172",
|
|
7
|
+
"tree": "f702a5cc6fba92a430d00634504039f0d8f4a304",
|
|
8
|
+
"developCommitAtBranchCreation": "8f4a45b907c8ccfca9b6fad52bd12c2bfe7b1172",
|
|
9
|
+
"originDevelopAtBranchCreation": "a526a63062b2f93db821c631548da885e20dc41d",
|
|
10
|
+
"tagAtCommit": null,
|
|
11
|
+
"cleanAtBranchCreation": true
|
|
12
|
+
},
|
|
13
|
+
"runtime": {
|
|
14
|
+
"platform": "win32",
|
|
15
|
+
"architecture": "x64",
|
|
16
|
+
"osRelease": "10.0.26200",
|
|
17
|
+
"node": "v24.16.0",
|
|
18
|
+
"npm": "11.13.0"
|
|
19
|
+
},
|
|
20
|
+
"package": {
|
|
21
|
+
"name": "@timurproko/addone",
|
|
22
|
+
"version": "0.1.5-dev.10",
|
|
23
|
+
"packageManager": "npm@11.13.0",
|
|
24
|
+
"nodeRange": ">=22.19.0 <25",
|
|
25
|
+
"lockfileVersion": 3,
|
|
26
|
+
"packageJsonSha256": "fb5966d03c9efb8d7aa726cc0582f34227aa525bf28baaa492c0a8af7fa0b617",
|
|
27
|
+
"packageLockSha256": "626b54ca5b5619c71a2dc7d667d49e4746bdea268be6fafa0635011f97824b80",
|
|
28
|
+
"localTarball": {
|
|
29
|
+
"filename": "timurproko-addone-0.1.5-dev.10.tgz",
|
|
30
|
+
"integrity": "sha512-7gLuq3Ec8uU76jXNWiBYUYMdK9O8roRROjs36xOnhJ+M9jboSRLdSBc0zQQXNqmsD6xa9b/87o/UqymmkbsFlg==",
|
|
31
|
+
"shasum": "370482e37ba171f7bd52f57eb6969c6c5940c2f4",
|
|
32
|
+
"sha256": "1046f005802bd1372ae232d5301d038511f7c9f072d1e0cb1a4ea1965b5f112f",
|
|
33
|
+
"size": 80121,
|
|
34
|
+
"unpackedSize": 370136,
|
|
35
|
+
"fileCount": 167,
|
|
36
|
+
"note": "Locally packed milestone source; it intentionally differs from the already-published dev.10 bytes because later documentation and update wording commits are present."
|
|
37
|
+
},
|
|
38
|
+
"registry": {
|
|
39
|
+
"latest": "0.1.4",
|
|
40
|
+
"next": "0.1.5-dev.10",
|
|
41
|
+
"nextIntegrity": "sha512-XjwhIsCbZjJbAwFQjWLnSsSS6Lb21Uls1MhkQUXOAiJh5Fg7IfQI4Ol4gMUGuzxSzOf38Cor+F+zB8nHLh79Dg==",
|
|
42
|
+
"nextShasum": "4af9a7697ad79209214889a8c56f3bb19228fb65"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"launchProfiles": {
|
|
46
|
+
"terminalCapability": "transparent",
|
|
47
|
+
"addone": {
|
|
48
|
+
"invocation": "a1",
|
|
49
|
+
"configurationRoot": "~/.a1/agent",
|
|
50
|
+
"projectTrust": "pi-default"
|
|
51
|
+
},
|
|
52
|
+
"pi": {
|
|
53
|
+
"invocation": "a1 pi",
|
|
54
|
+
"configurationRoot": "~/.pi/agent",
|
|
55
|
+
"environmentRule": "PI_CODING_AGENT_DIR removed",
|
|
56
|
+
"projectTrust": "pi-default"
|
|
57
|
+
},
|
|
58
|
+
"evidenceHashes": {
|
|
59
|
+
"documentationSha256": "0fcc0a7823dcdad2f00d6e2c82ba117d14b7cb2a2fcebfbb2615eafd94413003",
|
|
60
|
+
"contractsSha256": "bc63eeacdc65b89b0b4d84c2e25a4fb8f937d1864ab4275119a4a0aec707a38c",
|
|
61
|
+
"pathsSha256": "5a263fa07d3ccfd21a71721b43a99844d46f7cc15ed8f36caa556c1cc0cbbdfa",
|
|
62
|
+
"preparationSha256": "b5eb00f3c6ebbfda0dd9e8e793b6553b00720a4d24f24d5bcacf1d0f7183687d",
|
|
63
|
+
"isolationTestSha256": "9c72d63d2a4bcc143d73afbbe921821c3d813e10a4b0297288dff93bcb77d07e"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"gates": [
|
|
67
|
+
{
|
|
68
|
+
"command": "npm ci",
|
|
69
|
+
"passed": true,
|
|
70
|
+
"detail": "68 packages installed; 0 vulnerabilities"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"command": "npm run build",
|
|
74
|
+
"passed": true
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"command": "npm run check",
|
|
78
|
+
"passed": true,
|
|
79
|
+
"detail": "typecheck, architecture, deprecated-dependency policy, 31 Vitest files/155 tests, and 1 release file/3 tests"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"command": "npm audit --audit-level=high --json",
|
|
83
|
+
"passed": true,
|
|
84
|
+
"detail": "0 vulnerabilities"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"command": "openspec validate --specs --strict --no-interactive",
|
|
88
|
+
"passed": true,
|
|
89
|
+
"detail": "7 main specifications"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"command": "openspec validate evolve-bare-a1-into-multi-agent-workspace --strict --no-interactive",
|
|
93
|
+
"passed": true
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"command": "npm pack --ignore-scripts --json",
|
|
97
|
+
"passed": true,
|
|
98
|
+
"detail": "exact local tarball metadata and SHA-256 recorded"
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
"releaseVerdict": {
|
|
102
|
+
"schema": "addone-development-preview-platform-verdict-v2",
|
|
103
|
+
"passed": true,
|
|
104
|
+
"certificationStatus": "uncertified-development-preview",
|
|
105
|
+
"terminalCapability": "transparent",
|
|
106
|
+
"physicalHostCertification": "deferred",
|
|
107
|
+
"crossPlatformCertification": "deferred",
|
|
108
|
+
"stableReleaseEligible": false
|
|
109
|
+
},
|
|
110
|
+
"desktopAutomation": "not-run",
|
|
111
|
+
"terminalApplicationsLaunched": false,
|
|
112
|
+
"physicalCertification": "deferred",
|
|
113
|
+
"stableReleaseEligible": false,
|
|
114
|
+
"passed": true
|
|
115
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "addone-multi-agent-owned-ui-prerequisite-v1",
|
|
3
|
+
"milestone": "evolve-bare-a1-into-multi-agent-workspace",
|
|
4
|
+
"prerequisiteChange": "build-owned-pi-ui-foundation",
|
|
5
|
+
"recordedAt": "2026-08-17T12:31:58Z",
|
|
6
|
+
"result": "satisfied",
|
|
7
|
+
"acceptedBaselineCommit": "084d0fb7e4004bc4b83a0b28c8aaea736b558d44",
|
|
8
|
+
"hardenedFoundationCommit": "efb244472fa4e6499300533a3f535fe60ab7f948",
|
|
9
|
+
"publishedSourceCommit": "d407ed017a6f9216a9a0c62d85d7cd44803d4d2c",
|
|
10
|
+
"publication": {
|
|
11
|
+
"package": "@timurproko/addone@0.1.5-dev.11",
|
|
12
|
+
"tag": "next",
|
|
13
|
+
"workflowRun": "https://github.com/timurproko/addone/actions/runs/32030101549",
|
|
14
|
+
"integrity": "sha512-05GQdg7ZfvcEpI6wAvebyx/06JPnV5AUtSbptx7P3mzT28iU4yurP87uKIKsvpNwPzjMsr8k5RfiAeEyq/GfpQ==",
|
|
15
|
+
"latestPreserved": "0.1.4"
|
|
16
|
+
},
|
|
17
|
+
"acceptance": {
|
|
18
|
+
"sourcePortCoverage": "109 records and 29 behaviors; zero pending or stale entries",
|
|
19
|
+
"modalCoverage": "47 nodes, 111 transitions, and 36 settings instances",
|
|
20
|
+
"terminalParity": "54 checkpoints with zero differences",
|
|
21
|
+
"extensionBoundary": "validated public ExtensionUIContext translated through AddOne-owned contracts",
|
|
22
|
+
"zeroDebtGate": "passed",
|
|
23
|
+
"manualBaseAcceptance": "passed",
|
|
24
|
+
"prohibitedRuntimeOrPackagePatches": 0
|
|
25
|
+
},
|
|
26
|
+
"compositionBoundary": {
|
|
27
|
+
"ownedContractsComposableForStructuredTabs": true,
|
|
28
|
+
"terminalHostInitializationRequired": false,
|
|
29
|
+
"ptyCreationRequired": false,
|
|
30
|
+
"interactiveModeMutationRequired": false,
|
|
31
|
+
"deepPiImportsRequired": false
|
|
32
|
+
},
|
|
33
|
+
"milestoneAuthorization": {
|
|
34
|
+
"task5_4OwnedUiPrerequisite": "complete",
|
|
35
|
+
"structuredTabsMayBeginAtTask5_5": true,
|
|
36
|
+
"structuredTabsStartedByThisRecord": false,
|
|
37
|
+
"section6MayBegin": false,
|
|
38
|
+
"section6Blocker": "Section 6 additionally requires terminal-host proof acceptance; this record satisfies only the owned-UI prerequisite.",
|
|
39
|
+
"composedTerminalWorkAuthorized": false
|
|
40
|
+
},
|
|
41
|
+
"evidence": [
|
|
42
|
+
"evidence/owned-pi-ui-foundation/automated-evidence-7.35-zero-debt-final-gates.json",
|
|
43
|
+
"evidence/owned-pi-ui-foundation/zero-debt-architecture-audit.md",
|
|
44
|
+
"evidence/owned-pi-ui-foundation/manual-acceptance-pi-0.84.2-base-084d0fb.json",
|
|
45
|
+
"evidence/owned-pi-ui-foundation/owned-ui-shell-composability.json",
|
|
46
|
+
"evidence/owned-pi-ui-foundation/automated-evidence-8.5-next-publication.json"
|
|
47
|
+
]
|
|
48
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "a1-terminal-host-provenance-v1",
|
|
3
|
+
"recordedAt": "2026-08-20T09:25:48.307Z",
|
|
4
|
+
"change": "evolve-bare-a1-into-multi-agent-workspace",
|
|
5
|
+
"hostMode": "console-inside-existing-terminal",
|
|
6
|
+
"desktopApplicationRequired": false,
|
|
7
|
+
"sources": [
|
|
8
|
+
{
|
|
9
|
+
"name": "libghostty-vt",
|
|
10
|
+
"repository": "https://github.com/ghostty-org/ghostty",
|
|
11
|
+
"commit": "c5a21edfcbc2d5b46540ad91b7980aca31f5f1f3",
|
|
12
|
+
"committedAt": "2026-07-14T20:12:12-07:00",
|
|
13
|
+
"role": "terminal parsing, retained state, and input semantics",
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"licenseNotice": "Copyright (c) 2024 Mitchell Hashimoto, Ghostty contributors",
|
|
16
|
+
"licenseSha256": "3129de97bc7769d683e52ce02cb4eaecd2b0aab144b09d6325a1b135bdc87cc0",
|
|
17
|
+
"cleanSourceTree": true,
|
|
18
|
+
"licenseVerification": "verified-local-license-file"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "portable-pty",
|
|
22
|
+
"version": "0.9.0",
|
|
23
|
+
"role": "ConPTY and Unix PTY/process ownership",
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"licenseNotice": "Copyright (c) 2018 Wez Furlong",
|
|
26
|
+
"licenseSha256": "c06f48b2acbbb4bb88345225c6d85264773528fe9fc99241cd255a7e32be632e",
|
|
27
|
+
"cleanSourceTree": true,
|
|
28
|
+
"licenseVerification": "verified-local-license-file"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "crossterm",
|
|
32
|
+
"version": "0.29.0",
|
|
33
|
+
"registryChecksum": "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b",
|
|
34
|
+
"role": "outer-terminal raw mode and host input events",
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"cleanSourceTree": true,
|
|
37
|
+
"licenseVerification": "declared-license-recorded; license notice must be vendored before packaging"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"rendererPolicy": {
|
|
41
|
+
"initial": "A1-owned buffered frame composer",
|
|
42
|
+
"ratatui": "optional evaluation candidate, not selected by default"
|
|
43
|
+
},
|
|
44
|
+
"excludedStacks": [
|
|
45
|
+
"Ghostty desktop application",
|
|
46
|
+
"Winghostty Win32 runtime",
|
|
47
|
+
"OpenGL/WGL",
|
|
48
|
+
"Metal",
|
|
49
|
+
"GTK",
|
|
50
|
+
"AppKit",
|
|
51
|
+
"Herdr",
|
|
52
|
+
"Node terminal parser",
|
|
53
|
+
"Node terminal renderer"
|
|
54
|
+
],
|
|
55
|
+
"patchPolicy": {
|
|
56
|
+
"default": "retain upstream behavior without local patches",
|
|
57
|
+
"requiredPatchFields": [
|
|
58
|
+
"source revision",
|
|
59
|
+
"target revision",
|
|
60
|
+
"reason",
|
|
61
|
+
"tests",
|
|
62
|
+
"upstream synchronization decision",
|
|
63
|
+
"license impact"
|
|
64
|
+
],
|
|
65
|
+
"behavioralTerminalPatchesRequireSeparateReview": true
|
|
66
|
+
},
|
|
67
|
+
"buildPrerequisites": {
|
|
68
|
+
"operatingSystems": [
|
|
69
|
+
"windows-10",
|
|
70
|
+
"windows-11"
|
|
71
|
+
],
|
|
72
|
+
"architectures": [
|
|
73
|
+
"x64",
|
|
74
|
+
"arm64"
|
|
75
|
+
],
|
|
76
|
+
"language": "Rust",
|
|
77
|
+
"zig": ">=0.15.2 <0.16",
|
|
78
|
+
"cToolchain": "Visual Studio 2022 Build Tools/MSVC on Windows",
|
|
79
|
+
"terminal": "user-owned terminal emulator",
|
|
80
|
+
"isolatedPhysicalWorkerRequired": true,
|
|
81
|
+
"guiSdkRequired": false,
|
|
82
|
+
"openGlRequired": false,
|
|
83
|
+
"win32WindowRuntimeRequired": false,
|
|
84
|
+
"localProbe": {
|
|
85
|
+
"rustAvailable": true,
|
|
86
|
+
"rustVersion": "1.97.1",
|
|
87
|
+
"zigAvailable": true,
|
|
88
|
+
"zigVersion": "0.15.2",
|
|
89
|
+
"requiredZigAvailable": true,
|
|
90
|
+
"nativeBuildAttempted": true,
|
|
91
|
+
"reason": "Rust 1.97.1 and Zig 0.15.2 are available; the clean console-host build and non-interactive probe pass."
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"artifactManifestRequirements": [
|
|
95
|
+
"artifactPath",
|
|
96
|
+
"sha256",
|
|
97
|
+
"sizeBytes",
|
|
98
|
+
"signatureStatus",
|
|
99
|
+
"buildTimestamp",
|
|
100
|
+
"a1Commit",
|
|
101
|
+
"a1ProtocolVersion",
|
|
102
|
+
"libghosttyVtCommit",
|
|
103
|
+
"ptyComponentVersion",
|
|
104
|
+
"hostInputComponentVersion",
|
|
105
|
+
"rendererComponentIdentity",
|
|
106
|
+
"retainedComponents",
|
|
107
|
+
"adaptedComponents",
|
|
108
|
+
"compilerVersions",
|
|
109
|
+
"targetTriple",
|
|
110
|
+
"licenseHashes",
|
|
111
|
+
"buildCommand",
|
|
112
|
+
"dependencyCacheProvenance",
|
|
113
|
+
"cleanSourceTree",
|
|
114
|
+
"evidenceSchema",
|
|
115
|
+
"physicalVerdictReference"
|
|
116
|
+
],
|
|
117
|
+
"checks": {
|
|
118
|
+
"license": "passed",
|
|
119
|
+
"provenance": "passed",
|
|
120
|
+
"sourceTreeHygiene": "passed",
|
|
121
|
+
"binaryBuild": "passed",
|
|
122
|
+
"physicalAutomation": "not-run"
|
|
123
|
+
},
|
|
124
|
+
"passed": true
|
|
125
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "a1-terminal-host-task-5-1-v1",
|
|
3
|
+
"recordedAt": "2026-08-20T09:25:48.307Z",
|
|
4
|
+
"change": "evolve-bare-a1-into-multi-agent-workspace",
|
|
5
|
+
"task": "5.1",
|
|
6
|
+
"hostMode": "console-inside-existing-terminal",
|
|
7
|
+
"desktopWindowCreated": false,
|
|
8
|
+
"fullscreenRun": "not-run-user-controlled-only",
|
|
9
|
+
"toolchain": {
|
|
10
|
+
"rust": "1.97.1",
|
|
11
|
+
"cargo": "1.97.1",
|
|
12
|
+
"zig": "0.15.2",
|
|
13
|
+
"platform": "win32",
|
|
14
|
+
"architecture": "x64"
|
|
15
|
+
},
|
|
16
|
+
"artifact": {
|
|
17
|
+
"path": "native/terminal-host/target/debug/a1-terminal-host.exe",
|
|
18
|
+
"profile": "debug",
|
|
19
|
+
"sha256": "d1437d46d469a8823565a0428b57a1888bb327c2ce26d3cb51c0fb6fc88e4165",
|
|
20
|
+
"sizeBytes": 2394624
|
|
21
|
+
},
|
|
22
|
+
"source": {
|
|
23
|
+
"cargoTomlSha256": "8c6510f8d758189f24f91c1f044e93902a376e3c1a5bb71ca747603f03f0cc72",
|
|
24
|
+
"cargoLockSha256": "ec023df443170affda1ce69ddaa9489785fed1347d97bcb44a793607e61a20a2",
|
|
25
|
+
"buildScriptSha256": "54befce9dd9b1fbfadb388d8c4d1c97e1d6473660a075b7acc6baaddf54301c7",
|
|
26
|
+
"mainSha256": "6180f21f4dcfc0e1a8a4808a4312957eaff7bc7342660b3d449e8ea7ee164eed",
|
|
27
|
+
"ghosttyBindingSha256": "31747a4c5a4214059cea1d2ccab0b6245e74e05d5da3188271be4b331acb9231",
|
|
28
|
+
"libghosttyVtCommit": "c5a21edfcbc2d5b46540ad91b7980aca31f5f1f3",
|
|
29
|
+
"libghosttyVtLicenseSha256": "3129de97bc7769d683e52ce02cb4eaecd2b0aab144b09d6325a1b135bdc87cc0",
|
|
30
|
+
"portablePtyVersion": "0.9.0",
|
|
31
|
+
"crosstermVersion": "0.29.0"
|
|
32
|
+
},
|
|
33
|
+
"commands": [
|
|
34
|
+
{
|
|
35
|
+
"command": "cargo clean && npm run test:terminal-host",
|
|
36
|
+
"result": "passed"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"command": "a1-terminal-host.exe --version",
|
|
40
|
+
"result": "passed"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"command": "a1-terminal-host.exe --probe",
|
|
44
|
+
"result": "passed",
|
|
45
|
+
"detail": "created a retained terminal model, composed a frame, started cmd.exe through a PTY, waited for exit, and cleaned up without entering alternate-screen mode"
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"limitations": [
|
|
49
|
+
"No fullscreen interactive run was launched by the agent.",
|
|
50
|
+
"No user input or physical rendering acceptance is claimed.",
|
|
51
|
+
"One-pane manual terminal validation remains user-controlled.",
|
|
52
|
+
"Isolated-worker physical automation remains deferred."
|
|
53
|
+
],
|
|
54
|
+
"passed": true,
|
|
55
|
+
"sourceCommit": "b26383ed6605b222d6b853eb232c6b94e0fdb7ff"
|
|
56
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "a1-terminal-host-task-5-3-v1",
|
|
3
|
+
"recordedAt": "2026-08-20T09:25:48.307Z",
|
|
4
|
+
"change": "evolve-bare-a1-into-multi-agent-workspace",
|
|
5
|
+
"task": "5.3",
|
|
6
|
+
"sourceCommit": "b26383ed6605b222d6b853eb232c6b94e0fdb7ff",
|
|
7
|
+
"artifact": {
|
|
8
|
+
"path": "native/terminal-host/target/debug/a1-terminal-host.exe",
|
|
9
|
+
"profile": "debug",
|
|
10
|
+
"sha256": "d1437d46d469a8823565a0428b57a1888bb327c2ce26d3cb51c0fb6fc88e4165",
|
|
11
|
+
"sizeBytes": 2394624
|
|
12
|
+
},
|
|
13
|
+
"toolchain": {
|
|
14
|
+
"rust": "1.97.1",
|
|
15
|
+
"cargo": "1.97.1",
|
|
16
|
+
"zig": "0.15.2",
|
|
17
|
+
"platform": "win32",
|
|
18
|
+
"architecture": "x64"
|
|
19
|
+
},
|
|
20
|
+
"authority": {
|
|
21
|
+
"owner": "native-terminal-host",
|
|
22
|
+
"nodeRelay": false,
|
|
23
|
+
"rawPayloadExported": false,
|
|
24
|
+
"outerPresentationBufferedInNativeHost": true,
|
|
25
|
+
"controlPlanePayloads": "typed identity, topology, capability, lifecycle, recovery, and bounded diagnostics only"
|
|
26
|
+
},
|
|
27
|
+
"identityObservation": {
|
|
28
|
+
"schema": "a1-terminal-host-hot-path-v1",
|
|
29
|
+
"paneCount": 4,
|
|
30
|
+
"streamIdentities": [
|
|
31
|
+
1,
|
|
32
|
+
8,
|
|
33
|
+
15,
|
|
34
|
+
22
|
|
35
|
+
],
|
|
36
|
+
"inputIdentities": [
|
|
37
|
+
2,
|
|
38
|
+
9,
|
|
39
|
+
16,
|
|
40
|
+
23
|
|
41
|
+
],
|
|
42
|
+
"terminalModelIdentities": [
|
|
43
|
+
3,
|
|
44
|
+
10,
|
|
45
|
+
17,
|
|
46
|
+
24
|
|
47
|
+
],
|
|
48
|
+
"renderDamageIdentities": [
|
|
49
|
+
4,
|
|
50
|
+
11,
|
|
51
|
+
18,
|
|
52
|
+
25
|
|
53
|
+
],
|
|
54
|
+
"keyEncoderIdentities": [
|
|
55
|
+
5,
|
|
56
|
+
12,
|
|
57
|
+
19,
|
|
58
|
+
26
|
|
59
|
+
],
|
|
60
|
+
"mouseEncoderIdentities": [
|
|
61
|
+
6,
|
|
62
|
+
13,
|
|
63
|
+
20,
|
|
64
|
+
27
|
|
65
|
+
],
|
|
66
|
+
"selectionIdentities": [
|
|
67
|
+
7,
|
|
68
|
+
14,
|
|
69
|
+
21,
|
|
70
|
+
28
|
|
71
|
+
],
|
|
72
|
+
"allIdentitySetsUnique": true,
|
|
73
|
+
"presentationWrites": 2,
|
|
74
|
+
"presentationBytes": 4618,
|
|
75
|
+
"panes": [
|
|
76
|
+
{
|
|
77
|
+
"paneId": "pane-1",
|
|
78
|
+
"sessionId": "session-1",
|
|
79
|
+
"ptyOutputChunks": 8,
|
|
80
|
+
"ptyOutputBytes": 272,
|
|
81
|
+
"terminalModelWrites": 8,
|
|
82
|
+
"terminalModelBytes": 272,
|
|
83
|
+
"inputWrites": 2,
|
|
84
|
+
"inputBytes": 23,
|
|
85
|
+
"renderPasses": 2,
|
|
86
|
+
"renderedBytes": 642
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"paneId": "pane-2",
|
|
90
|
+
"sessionId": "session-2",
|
|
91
|
+
"ptyOutputChunks": 8,
|
|
92
|
+
"ptyOutputBytes": 272,
|
|
93
|
+
"terminalModelWrites": 8,
|
|
94
|
+
"terminalModelBytes": 272,
|
|
95
|
+
"inputWrites": 2,
|
|
96
|
+
"inputBytes": 23,
|
|
97
|
+
"renderPasses": 2,
|
|
98
|
+
"renderedBytes": 668
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"paneId": "pane-3",
|
|
102
|
+
"sessionId": "session-3",
|
|
103
|
+
"ptyOutputChunks": 9,
|
|
104
|
+
"ptyOutputBytes": 272,
|
|
105
|
+
"terminalModelWrites": 9,
|
|
106
|
+
"terminalModelBytes": 272,
|
|
107
|
+
"inputWrites": 2,
|
|
108
|
+
"inputBytes": 23,
|
|
109
|
+
"renderPasses": 2,
|
|
110
|
+
"renderedBytes": 698
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"paneId": "pane-4",
|
|
114
|
+
"sessionId": "session-4",
|
|
115
|
+
"ptyOutputChunks": 8,
|
|
116
|
+
"ptyOutputBytes": 272,
|
|
117
|
+
"terminalModelWrites": 8,
|
|
118
|
+
"terminalModelBytes": 272,
|
|
119
|
+
"inputWrites": 2,
|
|
120
|
+
"inputBytes": 23,
|
|
121
|
+
"renderPasses": 2,
|
|
122
|
+
"renderedBytes": 726
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"nativePrimitiveProbe": {
|
|
127
|
+
"keyEncoding": true,
|
|
128
|
+
"textImeEncoding": true,
|
|
129
|
+
"mouseEncoding": true,
|
|
130
|
+
"paneRelativeMouse": true,
|
|
131
|
+
"selection": true,
|
|
132
|
+
"clipboardOsc52Encoding": true,
|
|
133
|
+
"keyAndMouseModesRefreshedFromRetainedTerminal": true,
|
|
134
|
+
"nodeRelay": false
|
|
135
|
+
},
|
|
136
|
+
"staticBoundaryChecks": {
|
|
137
|
+
"nodeProtocolHotPathPayloadsAbsent": true,
|
|
138
|
+
"nativeImplementationDependenciesAbsentFromNodeManifest": true,
|
|
139
|
+
"probeRunnerUsesInheritedStdio": true,
|
|
140
|
+
"explicitTransparentModesRemainIndependent": true
|
|
141
|
+
},
|
|
142
|
+
"commands": [
|
|
143
|
+
{
|
|
144
|
+
"command": "npm run test:terminal-host",
|
|
145
|
+
"result": "passed"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"command": "npm run check:architecture",
|
|
149
|
+
"result": "passed"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"command": "npx vitest run test/repository-governance/native-host-boundary.test.ts test/repository-governance/terminal-architecture-policy.test.ts",
|
|
153
|
+
"result": "38 tests passed"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"command": "npm test",
|
|
157
|
+
"result": "285 tests passed"
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"command": "npm run typecheck",
|
|
161
|
+
"result": "passed"
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"command": "openspec validate evolve-bare-a1-into-multi-agent-workspace --strict",
|
|
165
|
+
"result": "passed"
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"limitations": [
|
|
169
|
+
"No physical terminal automation was run on the active workstation.",
|
|
170
|
+
"The text/IME gate validates the native composed-Unicode input path; operating-system IME behavior remains a task 5.4/5.5 physical workload where supported.",
|
|
171
|
+
"High-rate workloads, resource and latency measurements, abnormal exits, and exact-artifact physical acceptance remain tasks 5.4 and 5.5."
|
|
172
|
+
],
|
|
173
|
+
"passed": true
|
|
174
|
+
}
|