@aiwg/cockpit 2026.6.3
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/README.md +337 -0
- package/bridge/package.json +13 -0
- package/bridge/src/public/index.html +395 -0
- package/bridge/src/server.mjs +1132 -0
- package/bridge/src/smoke.mjs +158 -0
- package/contrib/aiwg-core.json +15 -0
- package/contrib/contribution.schema.json +69 -0
- package/desktop/README.md +42 -0
- package/desktop/src-tauri/Cargo.toml +17 -0
- package/desktop/src-tauri/build.rs +3 -0
- package/desktop/src-tauri/frontend/index.html +11 -0
- package/desktop/src-tauri/src/main.rs +55 -0
- package/desktop/src-tauri/tauri.conf.json +20 -0
- package/package.json +49 -0
- package/runtime-docs/README.md +38 -0
- package/shell-core/runtime.mjs +45 -0
- package/shell-core/smoke.mjs +36 -0
- package/vscode/README.md +25 -0
- package/vscode/extension.js +59 -0
- package/vscode/package.json +29 -0
- package/web/dist/assets/index-B5anpdS1.js +67 -0
- package/web/dist/assets/index-CP3BF6uZ.css +32 -0
- package/web/dist/index.html +14 -0
- package/web/index.html +13 -0
- package/web/package.json +31 -0
- package/web/src/App.test.tsx +237 -0
- package/web/src/App.tsx +255 -0
- package/web/src/api.ts +20 -0
- package/web/src/components/Actions.tsx +60 -0
- package/web/src/components/Approvals.tsx +62 -0
- package/web/src/components/CapabilitySearch.tsx +73 -0
- package/web/src/components/Explore.tsx +41 -0
- package/web/src/components/Inventory.tsx +124 -0
- package/web/src/components/LaunchInstanceModal.test.tsx +97 -0
- package/web/src/components/LaunchInstanceModal.tsx +236 -0
- package/web/src/components/Library.tsx +76 -0
- package/web/src/components/Running.tsx +60 -0
- package/web/src/components/Sessions.test.tsx +125 -0
- package/web/src/components/Sessions.tsx +189 -0
- package/web/src/components/StartSessionModal.test.tsx +86 -0
- package/web/src/components/StartSessionModal.tsx +168 -0
- package/web/src/components/Welcome.tsx +474 -0
- package/web/src/main.tsx +11 -0
- package/web/src/styles.css +254 -0
- package/web/src/types.ts +47 -0
- package/web/src/useDebounce.ts +10 -0
- package/web/src/useSession.ts +220 -0
- package/web/src/util.test.ts +30 -0
- package/web/src/util.ts +17 -0
package/README.md
ADDED
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
# AIWG Cockpit
|
|
2
|
+
|
|
3
|
+
A **UX-first control plane** over your AIWG install and the multi-stack agentic
|
|
4
|
+
sessions it runs — observe what agents are doing, take the wheel when you want, and
|
|
5
|
+
coordinate from one place. It fronts the CLI and the registry; it never replaces them.
|
|
6
|
+
|
|
7
|
+
> **The model (ADR):** the Cockpit is a *session-control surface, not a CLI runner*.
|
|
8
|
+
> **Agents run the CLI — you direct the agents.** An action button injects a command
|
|
9
|
+
> into an agentic session; the agent there runs it. The Cockpit only sources read-only
|
|
10
|
+
> catalog data for display. See `.aiwg/architecture/adr-cockpit-session-control-not-cli-runner.md`.
|
|
11
|
+
|
|
12
|
+
> **Opt-in, separately published.** Nothing here ships in the base `aiwg` npm package
|
|
13
|
+
> (guarded by `test/smoke/cockpit-base-footprint.test.js`).
|
|
14
|
+
|
|
15
|
+
## Architecture
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
operator / CLI: aiwg cockpit
|
|
19
|
+
│ spawns the Bridge; writes ~/.aiwg/cockpit/runtime/bridge.json (token+port, 0600)
|
|
20
|
+
▼
|
|
21
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
22
|
+
│ Bridge (127.0.0.1, token-gated /api) │
|
|
23
|
+
│ · control plane: inventory, lifecycle, running, approvals, │
|
|
24
|
+
│ cost, sessions (create + attach_url), contributions │
|
|
25
|
+
│ · read-only catalog: aiwg discover / show (display only) │
|
|
26
|
+
│ · user asset library: clone/import/delete (never writes AIWG)│
|
|
27
|
+
│ · serves the built React app (token-injected) │
|
|
28
|
+
└─────────────────────────────────────────────────────────────┘
|
|
29
|
+
│ proxies / sources ▲ loads /?token=…
|
|
30
|
+
▼ │
|
|
31
|
+
agentic-sandbox executor ┌──────┴──────┬───────────────┐
|
|
32
|
+
browser VS Code webview Tauri window
|
|
33
|
+
· A2A v2 + pty-ws/v1 (apps/cockpit/{web,vscode,desktop})
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- **Control plane** (lifecycle, approvals, actions) goes through the gated Bridge.
|
|
37
|
+
- **Data plane** (the pty session stream) connects browser→executor directly via the
|
|
38
|
+
`attach_url` the Bridge issues (WS masking differs per direction).
|
|
39
|
+
|
|
40
|
+
## Surfaces (tabs)
|
|
41
|
+
|
|
42
|
+
| Tab | What it does |
|
|
43
|
+
|---|---|
|
|
44
|
+
| **Home** | Guided first-run: what-is-this, live status, the **Start a session** primary verb, first-run tour. |
|
|
45
|
+
| **Inventory** | Instances + lifecycle (Start/Stop/Destroy). |
|
|
46
|
+
| **Running** | Running work across stacks + cross-stack spend + per-task Stop. |
|
|
47
|
+
| **Sessions** | Live pty terminal — observe/drive, keyframe, non-destructive replay; inline **+ capability picker**. |
|
|
48
|
+
| **Approvals** | Unified HITL inbox (`hitl-prompt/v1`); decisions = operator authorization. |
|
|
49
|
+
| **Explore** | Read-only AIWG catalog — Tenor-style capability search (fortemi-react-modeled). |
|
|
50
|
+
| **Library** | Your own assets — clone from the catalog / import / remove. AIWG files never overwritten. |
|
|
51
|
+
| **Actions** | Contributed buttons that **inject a command into a session** (the agent runs it). |
|
|
52
|
+
|
|
53
|
+
## Runtime, Session, and Trust Posture
|
|
54
|
+
|
|
55
|
+
Cockpit renders the runtime tier reported by agentic-sandbox instead of assuming
|
|
56
|
+
only VM/container instances. Known tiers are displayed as:
|
|
57
|
+
|
|
58
|
+
- `host` — full host access / least isolated. The host runtime daemon status is
|
|
59
|
+
shown separately from the Cockpit Bridge state (`available`, `stopped`,
|
|
60
|
+
`permission_denied`, `degraded`, etc.). Cockpit may show the documented
|
|
61
|
+
operator command to start or reconnect the daemon, but it does not silently
|
|
62
|
+
install or start it.
|
|
63
|
+
- `container` / `docker` — shared-kernel isolation.
|
|
64
|
+
- `vm` — stronger VM boundary.
|
|
65
|
+
- any future kind — opaque/degraded rather than broken UI.
|
|
66
|
+
|
|
67
|
+
Session creation uses sandbox-advertised backend pairs. Operators choose
|
|
68
|
+
direct/native or managed backends such as `tmux`, `screen`, or `zellij` when the
|
|
69
|
+
sandbox reports support. Attach remains observe-first; drive/control is explicit
|
|
70
|
+
and backend denial reasons stay visible in the session surface.
|
|
71
|
+
|
|
72
|
+
Transport trust is a separate badge from local Cockpit auth. Cockpit observes and
|
|
73
|
+
relays Bridge-to-agentic-sandbox posture (`loopback-rest`, UDS, vsock, mTLS local
|
|
74
|
+
CA, bootstrap-token enrollment, legacy shared-secret compatibility) without
|
|
75
|
+
storing tokens, private keys, CSRs, or bearer material in UI state, logs, or
|
|
76
|
+
activity payloads. Legacy shared-secret and TOFU paths render as compatibility or
|
|
77
|
+
degraded, not default-green. Agentic-sandbox owns transport provisioning and peer
|
|
78
|
+
identity enforcement; Cockpit owns visibility and audit presentation.
|
|
79
|
+
|
|
80
|
+
## Run (dev/test, against a real agentic-sandbox executor)
|
|
81
|
+
|
|
82
|
+
One command (#1634) — prefers a reachable real executor, builds the web UI if
|
|
83
|
+
needed, and launches the Bridge on its off-range default port:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
npm --prefix apps/cockpit run dev # → apps/cockpit/scripts/cockpit-dev.sh
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
It refuses to run against the bundled mock (automated-test-only). If no executor
|
|
90
|
+
is reachable, Bridge startup best-effort launches an installed `agentic-mgmt`
|
|
91
|
+
binary before serving Cockpit. Override `AIWG_COCKPIT_EXECUTOR_URL` (default
|
|
92
|
+
`http://127.0.0.1:8122`) or `PORT` (default `8140`). Set
|
|
93
|
+
`AIWG_COCKPIT_EXECUTOR_COMMAND` to pin the autostart command, or
|
|
94
|
+
`AIWG_COCKPIT_AUTOSTART_EXECUTOR=0` to require an already-running executor.
|
|
95
|
+
Equivalent manual steps:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
npm --prefix apps/cockpit run build:web # install + vite build → web/dist
|
|
99
|
+
AIWG_COCKPIT_EXECUTOR_URL=http://127.0.0.1:<executor-port> \
|
|
100
|
+
node apps/cockpit/bridge/src/server.mjs
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Ports (sane defaults, #1634).** The agentic-sandbox canonical dev runner
|
|
104
|
+
(`management/dev.sh`) binds `8120` (gRPC) / `8121` (WS) / `8122` (HTTP). The
|
|
105
|
+
Bridge therefore defaults to **`8140`** — off that range — so `node
|
|
106
|
+
bridge/src/server.mjs` against a canonical executor on `8122` never collides.
|
|
107
|
+
Override with `PORT` (or `AIWG_COCKPIT_BRIDGE_PORT`); the Bridge refuses to start
|
|
108
|
+
on a reserved executor port (`8120/8121/8122`) rather than silently squat on it.
|
|
109
|
+
|
|
110
|
+
`EXECUTOR_URL` is accepted as a short alias, but new launch scripts should use
|
|
111
|
+
`AIWG_COCKPIT_EXECUTOR_URL`. Human dev/test launches must point at a real
|
|
112
|
+
agentic-sandbox executor. The bundled mock is reserved for automated tests and
|
|
113
|
+
PoCs; if a mock-like executor is detected, the Bridge refuses it unless
|
|
114
|
+
`AIWG_COCKPIT_ALLOW_MOCK_EXECUTOR=1` is set by an automated harness.
|
|
115
|
+
|
|
116
|
+
The Bridge keeps legacy admin-surface compatibility (`/admin/instances`,
|
|
117
|
+
`/admin/running`) for automated coverage, but dev/test launches should target
|
|
118
|
+
real agentic-sandbox v2 admin surfaces (`/api/v2/admin/instances`,
|
|
119
|
+
`/api/v2/admin/running`). Field normalization covers snake_case and camelCase
|
|
120
|
+
payloads so live sandboxes can evolve without breaking the operator UI; unknown
|
|
121
|
+
fields degrade to opaque posture rather than failing the screen.
|
|
122
|
+
|
|
123
|
+
The top-bar **Launch instance** command provisions additive runtime targets
|
|
124
|
+
through the real executor (`POST /api/v2/admin/instances`) for host, Docker, and
|
|
125
|
+
QEMU/VM launches. Cockpit does not replace attached sessions when provisioning;
|
|
126
|
+
it refreshes inventory and leaves concurrency and resource admission to
|
|
127
|
+
agentic-sandbox.
|
|
128
|
+
|
|
129
|
+
`aiwg cockpit` (the operator command) will wrap this; the Bridge serves the built
|
|
130
|
+
React app token-injected, falling back to a legacy page when no build is present.
|
|
131
|
+
|
|
132
|
+
## Components
|
|
133
|
+
|
|
134
|
+
| Path | Role |
|
|
135
|
+
|---|---|
|
|
136
|
+
| `web/` | React 19 + Vite + TS UI (the surfaces above) |
|
|
137
|
+
| `mock-executor/` | **automated-test-only** wire-faithful agentic-sandbox A2A v2 stand-in (conformance 33/0/17). The Bridge refuses it for human launches (needs `AIWG_COCKPIT_ALLOW_MOCK_EXECUTOR=1`); a contract guard (#1636) pins its legacy `/admin/{running,approvals,cost}` divergence from real v2 so new drift fails CI. |
|
|
138
|
+
| `bridge/` | the registry-bound control-plane server + static serving |
|
|
139
|
+
| `shell-core/` | the cross-shell handshake (runtime token → connect) |
|
|
140
|
+
| `vscode/` · `desktop/` | VS Code extension + Tauri shells over the same Bridge |
|
|
141
|
+
| `contrib/` | declarative UI contributions + schema (actions inject commands) |
|
|
142
|
+
| `poc/` | Iteration-1 risk-gate PoCs (kill-bridge isolation, security) |
|
|
143
|
+
|
|
144
|
+
## Verify
|
|
145
|
+
|
|
146
|
+
Tests run **at stages** — committed harnesses, never `/tmp` rigs (#1635):
|
|
147
|
+
|
|
148
|
+
| Stage | Command | Executor | CI |
|
|
149
|
+
|---|---|---|---|
|
|
150
|
+
| **Unit / integration** | `npm --prefix apps/cockpit run check` · `npx vitest run test/integration/cockpit-bridge.test.js` | **mock** (automated-test-only) | always |
|
|
151
|
+
| **Dev e2e** (full control-plane chain: health→inventory→create session→attach) | `npm run e2e:cockpit-dev` | **real**, safe-skip when absent | non-blocking |
|
|
152
|
+
| **Release matrix** (host/docker/vm + provider workload, #1621) | `npm run uat:cockpit-live:matrix` | **real**, all three families | release gate |
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
npm --prefix apps/cockpit run check # build web + typecheck + render/a11y tests + smokes + PoCs
|
|
156
|
+
npx vitest run test/integration/cockpit-bridge.test.js # Bridge contract + mock guard + port defaults (CI)
|
|
157
|
+
npx vitest run test/smoke/cockpit-base-footprint.test.js # base-npm guard (CI)
|
|
158
|
+
npm run e2e:cockpit-dev # dev full-system e2e — real executor, skips cleanly
|
|
159
|
+
npm run uat:cockpit-live # opt-in real sandbox posture gate
|
|
160
|
+
npm run uat:cockpit-live:matrix # required host/docker/vm live matrix (#1621)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
The React UI is also browser-verified per surface (see `.playwright-mcp/cockpit-*.png`).
|
|
164
|
+
Conformance (`agentic-sandbox-conformance`) was 33 pass / 0 fail / 17 skip; the
|
|
165
|
+
Bridge-only additions since (session-create, library) don't touch the conformant
|
|
166
|
+
discovery/A2A/pty surfaces — re-run the harness after executor-surface changes.
|
|
167
|
+
|
|
168
|
+
`npm run uat:cockpit-live` targets `AIWG_COCKPIT_EXECUTOR_URL`, then
|
|
169
|
+
`AIWG_SANDBOX_ENDPOINT`, then `http://127.0.0.1:8122`. It skips with a clear
|
|
170
|
+
reason when no live sandbox is reachable so ordinary CI stays deterministic. Set
|
|
171
|
+
`AIWG_COCKPIT_LIVE_REQUIRED=1` for release/local validation where the live gate
|
|
172
|
+
must be green. The command writes `test-results/cockpit-live-uat.json` and
|
|
173
|
+
`test-results/cockpit-live-uat.md` by default; set
|
|
174
|
+
`AIWG_COCKPIT_LIVE_REPORT=.aiwg/testing/cockpit-live-uat-<date>` when the report
|
|
175
|
+
should be kept as a project artifact. If the upstream
|
|
176
|
+
`agentic-sandbox-conformance` harness is also run, set
|
|
177
|
+
`AIWG_SANDBOX_CONFORMANCE_REPORT=<path>` so the Cockpit live report links the
|
|
178
|
+
external conformance output. The harness also probes common executor identity
|
|
179
|
+
endpoints (`/health`, `/version`, `/api/version`, `/api/v2/version`) and records
|
|
180
|
+
safe version/build fields in the report. When the executor build does not expose
|
|
181
|
+
that metadata, set `AIWG_COCKPIT_EXECUTOR_VERSION=<tag-or-commit>` so release
|
|
182
|
+
evidence still names the tested agentic-sandbox build. A manual run against
|
|
183
|
+
agentic-sandbox `v2026.6.15` or newer should attach its markdown/JSON result to
|
|
184
|
+
epic roctinam/aiwg#1588 before the epic is considered done-done.
|
|
185
|
+
|
|
186
|
+
The executable release-validation procedure is
|
|
187
|
+
`.aiwg/testing/cockpit-real-integration-uat-runbook.md`. Use that runbook for
|
|
188
|
+
real executor smoke, Codex provider evidence (#1631), Claude auth/evidence
|
|
189
|
+
(#1632), strict host/container/VM matrix evidence (#1621), artifact naming, and
|
|
190
|
+
safe evidence handling. The older
|
|
191
|
+
`.aiwg/testing/cockpit-real-integration-uat-plan-2026-06-19.md` is the planning
|
|
192
|
+
source, not the operator procedure.
|
|
193
|
+
|
|
194
|
+
The stricter matrix gate for #1621 is intentionally separate from the mock lane:
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
AIWG_COCKPIT_EXECUTOR_URL=http://127.0.0.1:<real-executor-port> \
|
|
198
|
+
AIWG_COCKPIT_LIVE_PROVIDER=codex \
|
|
199
|
+
npm run uat:cockpit-live:matrix
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Use `AIWG_COCKPIT_LIVE_PROVIDER=claude` instead when the live workload should
|
|
203
|
+
exercise the pre-authenticated Claude session.
|
|
204
|
+
|
|
205
|
+
Matrix mode requires real `host`, `docker`/`container`, and `vm` runtime
|
|
206
|
+
families in inventory. For each target it verifies inventory normalization,
|
|
207
|
+
runtime and transport posture, session backend evidence, session create/list,
|
|
208
|
+
observe attach, and a minimal provider-backed workload through a controller
|
|
209
|
+
session when control is advertised. The selected provider is invoked through the
|
|
210
|
+
attached session (`codex exec -s read-only ...`
|
|
211
|
+
or `claude --print --permission-mode dontAsk --output-format text ...`) and must
|
|
212
|
+
emit `AIWG_COCKPIT_LIVE_OK` and the expected discovery result (`issue-audit` by
|
|
213
|
+
default). This proves a pre-authenticated agentic framework actually launched in
|
|
214
|
+
the target session and could use AIWG discovery from that environment, rather
|
|
215
|
+
than only proving shell plumbing or provider login. Set
|
|
216
|
+
`AIWG_COCKPIT_LIVE_DISCOVERY_EXPECT=<capability-name>` to validate a different
|
|
217
|
+
discovered framework capability, or `AIWG_COCKPIT_LIVE_WORKLOAD=<prompt>` to
|
|
218
|
+
replace the full prompt while still satisfying the marker and discovery checks.
|
|
219
|
+
Set `AIWG_COCKPIT_LIVE_MATRIX_TARGETS=host` only for scoped rehearsal/evidence
|
|
220
|
+
when Docker/container or VM are intentionally out of scope; the default remains
|
|
221
|
+
`host,container,vm` for the release matrix. To prove controller-side PTY command
|
|
222
|
+
injection can mutate target data, set
|
|
223
|
+
`AIWG_COCKPIT_LIVE_MUTATION_FILE=<absolute-safe-test-path>` and optionally
|
|
224
|
+
`AIWG_COCKPIT_LIVE_MUTATION_TEXT=<expected-content>`. The harness opens a fresh
|
|
225
|
+
managed PTY session on the same target, observes it, drives a shell command via
|
|
226
|
+
`pty.session_input`, waits for `AIWG_COCKPIT_MUTATION_OK`, then reads the file
|
|
227
|
+
from the test runner and verifies the exact content.
|
|
228
|
+
The matrix report records each target family independently (`matrix host`,
|
|
229
|
+
`matrix container`, `matrix vm`) with the instance, runtime family, selected
|
|
230
|
+
session backend, provider, discovery expectation, and exact failure reason; the
|
|
231
|
+
test aggregates those records and fails only after all three target families have
|
|
232
|
+
been attempted. Mock-only success does not satisfy this gate;
|
|
233
|
+
`AIWG_COCKPIT_LIVE_ALLOW_MOCK_MATRIX=1` exists only for harness development.
|
|
234
|
+
|
|
235
|
+
To prove the launch path itself, set `AIWG_COCKPIT_LIVE_PROVISION=1`. In this
|
|
236
|
+
mode the matrix harness first calls the real executor admin API
|
|
237
|
+
(`POST /api/v2/admin/instances`) for each requested target, waits for the
|
|
238
|
+
operation to complete, waits for the instance to appear as running with a
|
|
239
|
+
registered agent and session backend, then sends the selected provider command
|
|
240
|
+
over the managed PTY interface. Provisioned instances are tracked by exact id so
|
|
241
|
+
the workload is driven against the instance created by the UAT run. Optional
|
|
242
|
+
overrides:
|
|
243
|
+
|
|
244
|
+
- `AIWG_COCKPIT_LIVE_PROVISION_NAME_PREFIX` names launched instances; default is
|
|
245
|
+
`cockpit-uat`.
|
|
246
|
+
- `AIWG_COCKPIT_LIVE_PROVISION_LOADOUT` overrides the default host or VM loadout.
|
|
247
|
+
- `AIWG_COCKPIT_LIVE_PROVISION_IMAGE` overrides the Docker/container image.
|
|
248
|
+
- `AIWG_COCKPIT_LIVE_PROVISION_PROFILE` passes an executor profile.
|
|
249
|
+
- `AIWG_COCKPIT_LIVE_PROVISION_TIMEOUT_MS` controls operation and boot readiness
|
|
250
|
+
timeout; default is `180000`.
|
|
251
|
+
|
|
252
|
+
### Live matrix prerequisites (#1621)
|
|
253
|
+
|
|
254
|
+
Before treating `uat:cockpit-live:matrix` as release evidence, provision all
|
|
255
|
+
three runtime families in the same real agentic-sandbox executor:
|
|
256
|
+
|
|
257
|
+
1. **Host** — a connected host agent must appear in `GET /api/v1/agents` with an
|
|
258
|
+
`instance_id` matching a `host` item from `GET /api/v2/admin/instances`.
|
|
259
|
+
Cockpit resolves this instance-to-agent mapping before session create/list.
|
|
260
|
+
2. **Docker/container** — a `docker` or `container` instance must register an
|
|
261
|
+
agent and support managed session creation via
|
|
262
|
+
`POST /api/v1/agents/{agent_id}/sessions`.
|
|
263
|
+
3. **VM** — a `vm` instance must register an agent and expose the same managed
|
|
264
|
+
session API.
|
|
265
|
+
|
|
266
|
+
For each family, the executor must return enough metadata for Cockpit to prove
|
|
267
|
+
runtime posture, transport posture, session backend capability, session
|
|
268
|
+
create/list, observe attach, and the provider-backed controller workload. Set
|
|
269
|
+
`AIWG_COCKPIT_EXECUTOR_VERSION=<tag-or-commit>` when the executor does not expose
|
|
270
|
+
version metadata through `/health` or `/version`.
|
|
271
|
+
|
|
272
|
+
Known state as of the 2026-06-19 host live run:
|
|
273
|
+
|
|
274
|
+
- Host target passes against the local agentic-sandbox `4cb1c90` build using a
|
|
275
|
+
real mTLS-registered host agent and a managed `tmux` session.
|
|
276
|
+
- Codex launched inside that managed host session and returned
|
|
277
|
+
`AIWG_COCKPIT_LIVE_OK` plus `issue-audit`; evidence lives at
|
|
278
|
+
`.aiwg/testing/cockpit-real-codex-matrix-2026-06-19.md/.json`.
|
|
279
|
+
- Cockpit also proved direct PTY command injection and mutation on the same real
|
|
280
|
+
host path with `AIWG_COCKPIT_LIVE_MATRIX_TARGETS=host` and
|
|
281
|
+
`AIWG_COCKPIT_LIVE_MUTATION_FILE`; evidence lives at
|
|
282
|
+
`.aiwg/testing/cockpit-real-codex-mutation-2026-06-19.md/.json`, and the
|
|
283
|
+
verified mutation artifact is
|
|
284
|
+
`.aiwg/testing/cockpit-pty-mutation-2026-06-19.txt`.
|
|
285
|
+
- Claude launched inside the same real host-session path and also returned
|
|
286
|
+
`AIWG_COCKPIT_LIVE_OK` plus `issue-audit`; evidence lives at
|
|
287
|
+
`.aiwg/testing/cockpit-real-claude-matrix-2026-06-19.md/.json`.
|
|
288
|
+
- The previous Claude login-required blocker remains linked as
|
|
289
|
+
roctinam/agentic-sandbox#499 for upstream regression tracking, but it was not
|
|
290
|
+
reproduced by this isolated host proof.
|
|
291
|
+
- Docker/container secure bootstrap is fixed from the agentic-sandbox side in
|
|
292
|
+
`v2026.6.24`; roctinam/agentic-sandbox#497 is closed. AIWG still needs to
|
|
293
|
+
rerun this matrix against that release and record Cockpit-side evidence.
|
|
294
|
+
- VM bootstrap/readiness is fixed from the agentic-sandbox side in
|
|
295
|
+
`v2026.6.24`; roctinam/agentic-sandbox#498 is closed. AIWG still needs to
|
|
296
|
+
rerun this matrix against that release and record Cockpit-side evidence.
|
|
297
|
+
- Remaining upstream follow-ups are Claude auth-state propagation
|
|
298
|
+
(roctinam/agentic-sandbox#499) and agent-scoped PTY sessions not appearing in
|
|
299
|
+
the formal/global session registry (roctinam/agentic-sandbox#500).
|
|
300
|
+
|
|
301
|
+
This gate extends #1617: #1617 proves Cockpit can talk to a reachable real
|
|
302
|
+
executor; #1621 proves coverage across the intended base host, container, and VM
|
|
303
|
+
runtime families. It also complements #1529 by exercising the operator-ready
|
|
304
|
+
provider session path instead of only the mock or shell plumbing.
|
|
305
|
+
|
|
306
|
+
## Status
|
|
307
|
+
|
|
308
|
+
Built and browser-verified, with release evidence wired to a real
|
|
309
|
+
agentic-sandbox executor through `AIWG_COCKPIT_EXECUTOR_URL`. The host target
|
|
310
|
+
(agentic-sandbox#460) and direct/managed multiplexer sessions
|
|
311
|
+
(agentic-sandbox#461) have landed upstream; the Bridge seam is now the
|
|
312
|
+
AIWG-side integration point for #1589. Runtime-tier provisioning and
|
|
313
|
+
host-daemon UX are tracked in roctinam/aiwg#1615, direct/managed PTY negotiation
|
|
314
|
+
in #1616, the live real-sandbox gate in #1617, and transport-trust visibility in
|
|
315
|
+
#1618. Secure transport details map back to agentic-sandbox#409/#410/#412; local
|
|
316
|
+
Browser/Tauri/VS Code-to-Bridge auth remains roctinam/aiwg#1595.
|
|
317
|
+
|
|
318
|
+
### Operator-wall review modes (#1622)
|
|
319
|
+
|
|
320
|
+
Connected Home exposes a `Wall review mode` control for the active design review:
|
|
321
|
+
|
|
322
|
+
- `Topology` is the default A1-style eleven-stack operator wall.
|
|
323
|
+
- `Handoff` emphasizes the A2-style mission route while keeping the same live
|
|
324
|
+
data-bound nodes.
|
|
325
|
+
- Open `/?wall=handoff` to load the handoff review layout directly for browser
|
|
326
|
+
capture or operator comparison.
|
|
327
|
+
|
|
328
|
+
The detailed review script and screenshot commands live in
|
|
329
|
+
`.aiwg/ux/cockpit-operator-wall-layout-review.md`.
|
|
330
|
+
|
|
331
|
+
## See also
|
|
332
|
+
|
|
333
|
+
- `apps/cockpit/RELEASE.md` — cockpit release pattern (channels, publish leg, config-defaults gate)
|
|
334
|
+
- `.aiwg/architecture/adr-cockpit-session-control-not-cli-runner.md` — the core model
|
|
335
|
+
- `.aiwg/architecture/cockpit-sad.md` + `cockpit-instance-control-interface.md`
|
|
336
|
+
- `.aiwg/ux/cockpit-ux-design.md` · `.aiwg/reports/cockpit-abm-gate.md`
|
|
337
|
+
- Epic roctinam/aiwg#1588
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aiwg/cockpit-bridge",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "AIWG Cockpit Bridge — local 127.0.0.1 client of AIWG surfaces + agentic-sandbox A2A; serves the registry-driven UI. Dev skeleton: reads instance inventory and serves a minimal screen.",
|
|
7
|
+
"bin": { "cockpit-bridge": "src/server.mjs" },
|
|
8
|
+
"scripts": {
|
|
9
|
+
"start": "node src/server.mjs",
|
|
10
|
+
"smoke": "node src/smoke.mjs"
|
|
11
|
+
},
|
|
12
|
+
"engines": { "node": ">=18" }
|
|
13
|
+
}
|