@dotobokuri/fleet-console 1.6.0 → 1.7.0
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/AGENTS.md +1 -0
- package/README.md +9 -4
- package/dist/cli-bin.mjs +439 -284
- package/dist/cli.d.ts +4 -0
- package/dist/cli.mjs +439 -284
- package/dist/client/assets/{_baseUniq-CYDnUUwD.js → _baseUniq-DaRHKvkJ.js} +1 -1
- package/dist/client/assets/{arc-C2kUi1S_.js → arc-ByrjrNFZ.js} +1 -1
- package/dist/client/assets/{architectureDiagram-Q4EWVU46-CsfgL2zC.js → architectureDiagram-Q4EWVU46-yRDXYtYq.js} +1 -1
- package/dist/client/assets/{blockDiagram-DXYQGD6D-uqim2Pmo.js → blockDiagram-DXYQGD6D-B3Ud4HmY.js} +1 -1
- package/dist/client/assets/{c4Diagram-AHTNJAMY-CRz88GqP.js → c4Diagram-AHTNJAMY-BWtT7uJ6.js} +1 -1
- package/dist/client/assets/channel-D1hUfR86.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-DNgf85a7.js → chunk-4BX2VUAB-Cdk_k5EX.js} +1 -1
- package/dist/client/assets/{chunk-4TB4RGXK-Ds39jFtV.js → chunk-4TB4RGXK-CfeLiRAa.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-Bv7hCHgD.js → chunk-55IACEB6-B26kabv5.js} +1 -1
- package/dist/client/assets/{chunk-EDXVE4YY-BUjgWLOR.js → chunk-EDXVE4YY-CZ5hqsgg.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-WVMeE3Je.js → chunk-FMBD7UC4-CuCp-r0v.js} +1 -1
- package/dist/client/assets/{chunk-OYMX7WX6-Bd5Z4NNL.js → chunk-OYMX7WX6-Dy5T8Uzb.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-BfIbGoT4.js → chunk-QZHKN3VN-PNRzwWoU.js} +1 -1
- package/dist/client/assets/{chunk-YZCP3GAM-T_CDhFqg.js → chunk-YZCP3GAM-BjJxIVvV.js} +1 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-B7ZtwAd2.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-B7ZtwAd2.js +1 -0
- package/dist/client/assets/clone-BggxG0Ng.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-M6EvTH7M.js → cose-bilkent-S5V4N54A-CIL2KUnC.js} +1 -1
- package/dist/client/assets/{dagre-KV5264BT-UUCScvPY.js → dagre-KV5264BT-BoekxdN3.js} +1 -1
- package/dist/client/assets/{diagram-5BDNPKRD-BnmEvwtB.js → diagram-5BDNPKRD-8Uqn3Uve.js} +1 -1
- package/dist/client/assets/{diagram-G4DWMVQ6-QHdTQz1G.js → diagram-G4DWMVQ6-CWZp4Fw1.js} +1 -1
- package/dist/client/assets/{diagram-MMDJMWI5-B-4tZ6wC.js → diagram-MMDJMWI5-Cxxmq5lR.js} +1 -1
- package/dist/client/assets/{diagram-TYMM5635-D5KVosUo.js → diagram-TYMM5635-BDL3SVhp.js} +1 -1
- package/dist/client/assets/{erDiagram-SMLLAGMA-B-FwpOjI.js → erDiagram-SMLLAGMA-Bm_XDDZi.js} +1 -1
- package/dist/client/assets/{flowDiagram-DWJPFMVM-CO00mjhm.js → flowDiagram-DWJPFMVM-z3JhyUpl.js} +1 -1
- package/dist/client/assets/{ganttDiagram-T4ZO3ILL-ChcRAmXN.js → ganttDiagram-T4ZO3ILL-DVfDRTRP.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-BWSq2uT3.js → gitGraphDiagram-UUTBAWPF-_gni8LDF.js} +1 -1
- package/dist/client/assets/{graph-mErvxWG_.js → graph-Beq1lcyq.js} +1 -1
- package/dist/client/assets/index-3nhZQ9tb.css +1 -0
- package/dist/client/assets/index-DFffaVk9.js +734 -0
- package/dist/client/assets/{infoDiagram-42DDH7IO-CchQFIPi.js → infoDiagram-42DDH7IO-B-TP33al.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-BAsF6BnZ.js → ishikawaDiagram-UXIWVN3A-1YDVINPA.js} +1 -1
- package/dist/client/assets/{journeyDiagram-VCZTEJTY-DE0wiQxC.js → journeyDiagram-VCZTEJTY-CZJuR6NC.js} +1 -1
- package/dist/client/assets/{kanban-definition-6JOO6SKY-BzPJLpKw.js → kanban-definition-6JOO6SKY-_sSHU_-t.js} +1 -1
- package/dist/client/assets/{layout-CO0unZG0.js → layout-UzmHJbGX.js} +1 -1
- package/dist/client/assets/{linear-CkDoVGz5.js → linear-BHitegAT.js} +1 -1
- package/dist/client/assets/{mermaid.core-BWqsf-WS.js → mermaid.core-ptwBQDH8.js} +4 -4
- package/dist/client/assets/{min-BMb-G34C.js → min-CBjwmJst.js} +1 -1
- package/dist/client/assets/{mindmap-definition-QFDTVHPH-XVxnUTPw.js → mindmap-definition-QFDTVHPH-C8NIvAO1.js} +1 -1
- package/dist/client/assets/{pieDiagram-DEJITSTG-CKM6Cfhz.js → pieDiagram-DEJITSTG-paebhRXC.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-34T5L4WZ-Dn_2AZqA.js → quadrantDiagram-34T5L4WZ-Bk0pN-T7.js} +1 -1
- package/dist/client/assets/{requirementDiagram-MS252O5E-uNgGGE60.js → requirementDiagram-MS252O5E-CkPyeOJB.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-XADWPNL6-B75Ahck1.js → sankeyDiagram-XADWPNL6-tJsRZl9C.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-FGHM5R23-Cw5UNG2_.js → sequenceDiagram-FGHM5R23-D1V2Qnb3.js} +1 -1
- package/dist/client/assets/{stateDiagram-FHFEXIEX-C6u6py_B.js → stateDiagram-FHFEXIEX-DdEFxPzQ.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-CpqK8Q3C.js +1 -0
- package/dist/client/assets/{timeline-definition-GMOUNBTQ-Bi50wA17.js → timeline-definition-GMOUNBTQ-D8sNtFqY.js} +1 -1
- package/dist/client/assets/{vennDiagram-DHZGUBPP-CufQGlDN.js → vennDiagram-DHZGUBPP-DoTEQk3E.js} +1 -1
- package/dist/client/assets/{wardley-RL74JXVD-BQLghHpH.js → wardley-RL74JXVD-BuEgLJ7M.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-NUSXRM2D-C-_4o-CK.js → wardleyDiagram-NUSXRM2D-B0Gl34Zh.js} +1 -1
- package/dist/client/assets/{xychartDiagram-5P7HB3ND-e4ekvSc7.js → xychartDiagram-5P7HB3ND-Bf4nAMbM.js} +1 -1
- package/dist/client/index.html +2 -2
- package/package.json +1 -1
- package/dist/client/assets/channel-BDggAVtM.js +0 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-AVod154E.js +0 -1
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-AVod154E.js +0 -1
- package/dist/client/assets/clone-DMJcvMWj.js +0 -1
- package/dist/client/assets/index-B4QPttGw.css +0 -1
- package/dist/client/assets/index-GN6Lp6Jj.js +0 -734
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-BMBsbsoy.js +0 -1
package/AGENTS.md
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
- Terminal HTTP routes do not use browser bearer tokens, but must retain the terminal Origin check; the terminal WebSocket is reached through a one-use ticket.
|
|
37
37
|
- MCP session tokens must never reach browser code, URL query strings, SSE payloads, terminal tickets, logs, or static assets.
|
|
38
38
|
- Theater routes likewise do not expose admin bearer tokens, MCP/session tokens, terminal tickets, folder-grant identifiers, raw working-directory paths, provider session ids, or transcript paths to the browser.
|
|
39
|
+
- Folder browser routes (`POST /terminal/folders/list`, `POST /terminal/folders/grants`) are gated by `validateHost` then `isTerminalAuthorized` (the same Origin boundary as all terminal routes). No adminToken or bearer auth is added. Folder selection is browser UI plus loopback fs APIs; no OS-native dialog or child process is spawned. Selected absolute paths appear only in list and grant responses; they are not included in session, Theater, observer, or SSE payloads. When a Theater is registered the resolved cwd is stored in durable local state (`sensitivity: "sensitive"`) as before — it is not transmitted to the browser.
|
|
39
40
|
|
|
40
41
|
## Carrier Readiness/Settings Boundary
|
|
41
42
|
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Standalone loopback web console for observing carrier jobs, live output streams,
|
|
|
7
7
|
Fleet Console owns its own local HTTP server. Terminal sessions are spawned by the console server and observed in-process; carrier events are streamed to the browser through the observer API.
|
|
8
8
|
|
|
9
9
|
- Console-owned terminal sessions and observed jobs in a navigable rail.
|
|
10
|
-
- Workspace hub sessions created
|
|
10
|
+
- Workspace hub sessions created through an in-console directory browser — no OS-native dialog.
|
|
11
11
|
- Console-spawned Agent CLI PTYs with in-process observation.
|
|
12
12
|
- Per-job carrier tracks with incremental output text, reasoning folds, and tool-call activity.
|
|
13
13
|
- Codex/Fleet Wiki browsing under the shared Console GNB at `/console/codex`.
|
|
@@ -19,7 +19,8 @@ Fleet Console owns its own local HTTP server. Terminal sessions are spawned by t
|
|
|
19
19
|
| Channel | Purpose | Token Boundary |
|
|
20
20
|
|---|---|---|
|
|
21
21
|
| `/observer/*` | Browser snapshot and SSE observer surface. | Loopback-only; no browser bearer token. |
|
|
22
|
-
| `POST /terminal/folders/
|
|
22
|
+
| `POST /terminal/folders/list` | Returns a directory listing (`{ path, parentPath, roots, entries, truncated? }`) for the given path, or the server home directory when `path` is null. Directories only, non-recursive, capped at 500 entries. | Requires the terminal Origin boundary (`isTerminalAuthorized`); no adminToken. |
|
|
23
|
+
| `POST /terminal/folders/grants` | Validates the client-supplied absolute path through `validateAbsoluteDirectory` and returns a one-use `{ folderGrantId }`. | Requires the terminal Origin boundary; no adminToken. |
|
|
23
24
|
| `POST /terminal/sessions` | Consumes `{ folderGrantId }` to create a console-spawned Agent CLI PTY session. | Raw cwd values from browser requests are rejected. |
|
|
24
25
|
| `GET /terminal/sessions` | Lists non-secret terminal session metadata for hydration. | Requires the terminal Origin boundary. |
|
|
25
26
|
| `POST /terminal/ticket` + `/terminal/ws` | Browser terminal PTY transport; ticket requests may include `{ sessionId }` and default to `"default"` for compatibility. | Browser receives a one-use ticket. |
|
|
@@ -32,11 +33,15 @@ Fleet Console owns its own local HTTP server. Terminal sessions are spawned by t
|
|
|
32
33
|
|
|
33
34
|
When the console creates a terminal session, it generates a session id, resolves the selected Agent CLI through the shared fleet-admiral runtime, and keeps the selected absolute cwd server-side. The console records non-secret session metadata for observer hydration.
|
|
34
35
|
|
|
35
|
-
Folder grants
|
|
36
|
+
Folder selection is handled entirely in the browser UI: the React directory browser modal calls `POST /terminal/folders/list` to browse the server's local filesystem, then calls `POST /terminal/folders/grants` once the operator confirms a directory. The resulting one-use grant is consumed by `POST /terminal/sessions` or Theater registration; no OS-native dialog or child process is involved. The browser modal works in remote and headless browser sessions without any OS-level dialog support.
|
|
37
|
+
|
|
38
|
+
Folder grants are one-use and in-memory. Browser-side cancellation stays local to the modal and does not call the server grant endpoint.
|
|
36
39
|
|
|
37
40
|
## Security Notes
|
|
38
41
|
|
|
39
|
-
HTTP surfaces are loopback-only. Browser observer routes are directly available on loopback and terminal routes retain their Origin boundary. MCP session tokens, bootstrap tokens, and selected absolute paths are not exposed through browser payloads, URL query strings, SSE frames, terminal tickets, logs, or static assets.
|
|
42
|
+
HTTP surfaces are loopback-only. Browser observer routes are directly available on loopback and terminal routes retain their Origin boundary (`isTerminalAuthorized`). MCP session tokens, bootstrap tokens, and selected absolute paths are not exposed through browser payloads, URL query strings, SSE frames, terminal tickets, logs, or static assets.
|
|
43
|
+
|
|
44
|
+
`POST /terminal/folders/list` and `POST /terminal/folders/grants` both require `validateHost` and `isTerminalAuthorized`. No adminToken or bearer auth is used for folder endpoints. Selected absolute paths appear only in list and grant API responses; they are not included in session, Theater, observer, or SSE payloads. When a Theater is registered, the resolved cwd is stored in durable local state (`~/.fleet/console/state.json`, `sensitivity: "sensitive"`) exactly as before; this is a sensitive local file and is not transmitted to the browser.
|
|
40
45
|
|
|
41
46
|
Codex/Fleet Wiki routes preserve the migrated wiki security boundary: Host allowlist, Origin checks for write routes, loopback write gates, path containment, DOMPurify markdown sanitization, strict Mermaid rendering, and lockfile bearer auth for workspace registration.
|
|
42
47
|
|