@dotobokuri/fleet-console 1.50.1 → 1.52.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.
Files changed (73) hide show
  1. package/AGENTS.md +10 -5
  2. package/README.md +10 -8
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.mjs +8507 -8365
  5. package/dist/client/assets/{_baseUniq-CXYajthv.js → _baseUniq-CYpcPDgB.js} +1 -1
  6. package/dist/client/assets/{arc-CN2U0RJi.js → arc-BuehZLUz.js} +1 -1
  7. package/dist/client/assets/{architectureDiagram-Q4EWVU46-KMYgwTU-.js → architectureDiagram-Q4EWVU46-Bqn18zpp.js} +1 -1
  8. package/dist/client/assets/{blockDiagram-DXYQGD6D-B2n_Ujhi.js → blockDiagram-DXYQGD6D-DmtLdC53.js} +1 -1
  9. package/dist/client/assets/{c4Diagram-AHTNJAMY-BmExz-H8.js → c4Diagram-AHTNJAMY-BEBhZ5GG.js} +1 -1
  10. package/dist/client/assets/channel-BQlgz3sc.js +1 -0
  11. package/dist/client/assets/{chunk-4BX2VUAB-WxXjYCDb.js → chunk-4BX2VUAB-B8PizWjA.js} +1 -1
  12. package/dist/client/assets/{chunk-4TB4RGXK-CoSmkS4d.js → chunk-4TB4RGXK-C1ofR8zt.js} +1 -1
  13. package/dist/client/assets/{chunk-55IACEB6-BQ6DMyRz.js → chunk-55IACEB6-CbKQ3d6C.js} +1 -1
  14. package/dist/client/assets/{chunk-EDXVE4YY-DEhxxADi.js → chunk-EDXVE4YY-DU-bru4J.js} +1 -1
  15. package/dist/client/assets/{chunk-FMBD7UC4-BUW_vTgY.js → chunk-FMBD7UC4-DD9GbN05.js} +1 -1
  16. package/dist/client/assets/{chunk-OYMX7WX6-xqJeGGdu.js → chunk-OYMX7WX6-DZKa6Wtf.js} +1 -1
  17. package/dist/client/assets/{chunk-QZHKN3VN-DPXuiqFZ.js → chunk-QZHKN3VN-fK2o17Jf.js} +1 -1
  18. package/dist/client/assets/{chunk-YZCP3GAM-CJBloo9Q.js → chunk-YZCP3GAM-z-7p86Bc.js} +1 -1
  19. package/dist/client/assets/classDiagram-6PBFFD2Q-CQs4cWly.js +1 -0
  20. package/dist/client/assets/classDiagram-v2-HSJHXN6E-CQs4cWly.js +1 -0
  21. package/dist/client/assets/clone-B5bOHdOg.js +1 -0
  22. package/dist/client/assets/{cose-bilkent-S5V4N54A-C7eVojQK.js → cose-bilkent-S5V4N54A-x5L9kNFv.js} +1 -1
  23. package/dist/client/assets/{dagre-KV5264BT-DYPawRSP.js → dagre-KV5264BT-944maqqT.js} +1 -1
  24. package/dist/client/assets/{diagram-5BDNPKRD-9nbdU3Kr.js → diagram-5BDNPKRD-PV4GQ8C6.js} +1 -1
  25. package/dist/client/assets/{diagram-G4DWMVQ6-DtSzEakz.js → diagram-G4DWMVQ6-GcoFZYg0.js} +1 -1
  26. package/dist/client/assets/{diagram-MMDJMWI5-2FX1CuCi.js → diagram-MMDJMWI5-8cIlnSEJ.js} +1 -1
  27. package/dist/client/assets/{diagram-TYMM5635-D1aBD1Sv.js → diagram-TYMM5635-BlIMSlQ5.js} +1 -1
  28. package/dist/client/assets/{erDiagram-SMLLAGMA-AK79bFYW.js → erDiagram-SMLLAGMA-KjlbhDy3.js} +1 -1
  29. package/dist/client/assets/{flowDiagram-DWJPFMVM-C1ApmkLT.js → flowDiagram-DWJPFMVM-DqYNn08z.js} +1 -1
  30. package/dist/client/assets/{ganttDiagram-T4ZO3ILL-CQvFUGlj.js → ganttDiagram-T4ZO3ILL-BplrlRlU.js} +1 -1
  31. package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-C-Vh-bKl.js → gitGraphDiagram-UUTBAWPF-CISgtHAu.js} +1 -1
  32. package/dist/client/assets/{graph-DeEdzsTp.js → graph-DaTRgbvC.js} +1 -1
  33. package/dist/client/assets/index-DVQ5EO_a.css +1 -0
  34. package/dist/client/assets/index-alR6ElCr.js +479 -0
  35. package/dist/client/assets/{infoDiagram-42DDH7IO-B_0wD24T.js → infoDiagram-42DDH7IO-BbFeDUi-.js} +1 -1
  36. package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-DgGbx2eb.js → ishikawaDiagram-UXIWVN3A-BQTo9ri4.js} +1 -1
  37. package/dist/client/assets/{journeyDiagram-VCZTEJTY-BdQqxMsJ.js → journeyDiagram-VCZTEJTY-CiRkOhp8.js} +1 -1
  38. package/dist/client/assets/{kanban-definition-6JOO6SKY-DU8AwVYp.js → kanban-definition-6JOO6SKY-IIn_MSzy.js} +1 -1
  39. package/dist/client/assets/{layout-BF-OB3sH.js → layout-Cr58D4FS.js} +1 -1
  40. package/dist/client/assets/{linear-Cd22n3Ol.js → linear-DNaIPcgl.js} +1 -1
  41. package/dist/client/assets/{mermaid.core-CV1wZraa.js → mermaid.core-Dq_ukAsT.js} +4 -4
  42. package/dist/client/assets/{min-Avezts6s.js → min-DpLyTgPW.js} +1 -1
  43. package/dist/client/assets/{mindmap-definition-QFDTVHPH-BiYy2OKo.js → mindmap-definition-QFDTVHPH-C2DLYGq2.js} +1 -1
  44. package/dist/client/assets/{pieDiagram-DEJITSTG-Bg9O56EU.js → pieDiagram-DEJITSTG-C3Cxmz-n.js} +1 -1
  45. package/dist/client/assets/{quadrantDiagram-34T5L4WZ-B9NeeqFq.js → quadrantDiagram-34T5L4WZ-CEdmiODY.js} +1 -1
  46. package/dist/client/assets/{requirementDiagram-MS252O5E-DV1FugSk.js → requirementDiagram-MS252O5E-B-Vj0Wyw.js} +1 -1
  47. package/dist/client/assets/{sankeyDiagram-XADWPNL6-BvIHcJf7.js → sankeyDiagram-XADWPNL6-CyvEd7TA.js} +1 -1
  48. package/dist/client/assets/{sequenceDiagram-FGHM5R23-BCQ2xDy1.js → sequenceDiagram-FGHM5R23-B2MiPHOT.js} +1 -1
  49. package/dist/client/assets/{stateDiagram-FHFEXIEX-BpK4LvW_.js → stateDiagram-FHFEXIEX-Dsa-VSCx.js} +1 -1
  50. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-BKHWSGsO.js +1 -0
  51. package/dist/client/assets/{timeline-definition-GMOUNBTQ-BEwHf_wL.js → timeline-definition-GMOUNBTQ-B9p0xkPR.js} +1 -1
  52. package/dist/client/assets/{vennDiagram-DHZGUBPP-Cd0iA5Vu.js → vennDiagram-DHZGUBPP-DeU4CNd8.js} +1 -1
  53. package/dist/client/assets/{wardley-RL74JXVD-cubfgt6B.js → wardley-RL74JXVD-BQyG38I_.js} +1 -1
  54. package/dist/client/assets/{wardleyDiagram-NUSXRM2D-DTdlOJlu.js → wardleyDiagram-NUSXRM2D-DjrdDkEs.js} +1 -1
  55. package/dist/client/assets/{xychartDiagram-5P7HB3ND-BguY4oGj.js → xychartDiagram-5P7HB3ND-CG0KUfn_.js} +1 -1
  56. package/dist/client/index.html +2 -2
  57. package/dist/desktop-protocol.mjs +3 -3
  58. package/dist/fleet-plugins/file-explorer/routes.mjs +4 -4
  59. package/dist/fleet-plugins/ledger/routes.mjs +61 -16510
  60. package/dist/fleet-plugins/quota/routes.mjs +2864 -2483
  61. package/dist/fleet-plugins/repository/routes.mjs +107 -50
  62. package/dist/fleet-plugins/scuttlebutt/routes.mjs +4955 -6895
  63. package/dist/fleet-plugins/skills/routes.mjs +75 -16523
  64. package/dist/fleet-plugins/terminal/routes.mjs +24129 -34156
  65. package/dist/fleet.mjs +54671 -0
  66. package/package.json +6 -4
  67. package/dist/client/assets/channel-7u-T-USm.js +0 -1
  68. package/dist/client/assets/classDiagram-6PBFFD2Q-CdK4kqo5.js +0 -1
  69. package/dist/client/assets/classDiagram-v2-HSJHXN6E-CdK4kqo5.js +0 -1
  70. package/dist/client/assets/clone-BJX0Y00S.js +0 -1
  71. package/dist/client/assets/index-PYKMOCH4.css +0 -1
  72. package/dist/client/assets/index-rFuEoKaA.js +0 -482
  73. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-CEPxcteM.js +0 -1
package/AGENTS.md CHANGED
@@ -1,11 +1,12 @@
1
1
  # Fleet Console
2
2
 
3
- `runtime/fleet-console` is the standalone loopback host and React product. The Console product — core plus built-ins under `../fleet-plugins/` — is the sole owner of Console HTTP, streaming, PTY/provider/plugin runtime, durable state, and browser UI.
3
+ `runtime/fleet-console` is the sole published host for Fleet Console and the `fleet` terminal launcher. The Console product — core plus built-ins under `../fleet-plugins/` — owns Console HTTP, streaming, PTY/provider/plugin runtime, durable state, and browser UI; `cli/` owns the thin Claude Code launcher and shared auth/update commands.
4
4
 
5
5
  ## Directory index
6
6
 
7
7
  | Directory | Responsibility |
8
8
  |---|---|
9
+ | `cli/` | Dual-entry `fleet` launcher (auth/update/console/cli passthrough) and thin Claude gateway |
9
10
  | `core/host/` | Server lifecycle, security, durable state, and core APIs |
10
11
  | `core/client/` | React application, host chrome, and browser state |
11
12
  | `desktop-protocol/` | Shared Console-Desktop protocol contract |
@@ -21,12 +22,16 @@
21
22
  - A **Theater** is any registered project root. An **Operation** is a Console-managed unit inside a Theater. A Codex workspace is the subset of a Theater or selected path that contains Fleet Wiki knowledge.
22
23
  - Console owns Theater and Operation state, window chrome, path selection, security gates, and plugin registries. Plugins own their panel bodies and plugin-scoped runtime behavior.
23
24
  - Desktop may supervise and display Console only through the public desktop protocol; it must not duplicate server, PTY, provider, plugin, state, or React behavior.
24
- - Host code may consume public APIs from lower-layer Fleet packages, but must not import `fleet-cli` or any package's implementation paths. Browser code remains Node-free. SDK dependencies point from host, client, and plugins into SDK, never back into core or plugin implementations.
25
+ - Host code may consume public APIs from lower-layer Fleet packages, but must not import any package's implementation paths. Browser code remains Node-free. SDK dependencies point from host, client, and plugins into SDK, never back into core or plugin implementations.
25
26
  - Built-ins are trusted static plugins. Installing an external plugin grants same-process Node and same-origin browser privileges; external plugins are not sandboxed.
26
27
 
27
28
  ## Security and state constraints
28
29
 
29
- - Core browser APIs do not use bearer, admin, MCP, or session tokens. Loopback is not authorization: preserve route-specific Host and Origin gates.
30
+ - The loopback listener's core browser APIs do not use bearer, admin, MCP, or session tokens. Loopback is not authorization: preserve route-specific Host and Origin gates.
31
+ - A remote listener is the opposite default: every request it accepts requires a session, decided once before routing, and the only exceptions are the join endpoint and the static notice that explains an access link. Sessions are bound to the listener that issued them and never cross between loopback and remote.
32
+ - A session is an open connection; a pairing is the standing permission behind it, and the two never collapse into one. A single-use grant from an access link creates a pairing; after that the paired device reopens a session on its own, so ending a session — by reclaiming control, by idling out, or by restarting the console — never costs that device its way back. Unpairing and a new certificate do, and so does a device that stays away longer than the cookie carrying its secret: browsers cap that lifetime well below the certificate's, so each return renews it and only a dormant device ages out. Console stores a pairing's hash, never its secret, and the device carries the secret in a cookie the console sets.
33
+ - A link publishes an address as much as a credential, and a device keeps only what the link told it. So the remote listener remembers the port it first opened on and reopens that one, rather than following the console's own port, which is free to move on every start; it never slides to another port on its own, because a device that cannot find the address it was given is unpaired in fact while the list still says otherwise. Releasing that port belongs with the acts that already void every pairing.
34
+ - Console owns which other consoles this one can reach, and that list is reachable only from the loopback listener — a remote session must not enumerate or edit the addresses and certificate pins of third machines. A saved host stores where to go and what certificate to trust, never a credential; a link's single-use grant lives in memory until the shell takes it, and is handed over exactly once.
30
35
  - Terminal WebSocket is the sole ticketed browser transport: an Origin-authorized HTTP route issues a short-lived one-use ticket consumed by the upgrade. Do not generalize that ticket into browser bearer authentication.
31
36
  - Provider session identities, transcripts, and raw filesystem paths may remain in sensitive server-side state but must not enter ordinary core or built-in browser DTOs, browser-visible logs, streams, or static assets.
32
37
  - Local-channel environment diagnostics invoked only by an explicit user action may return the Console's own data-root and runtime-lock paths, and the Agent CLI executable paths a user configured together with the PATH entries searched to resolve them.
@@ -37,13 +42,13 @@
37
42
 
38
43
  ## Design invariants
39
44
 
40
- - Every color speaks on exactly one channel: signal tokens (`aurora`/`warn`/`coral`/`positive`) carry state only, `brass` carries location/focus/hover only, and user or carrier identity uses the `--id-*` tones painted exclusively through the spine+mark+wash grammar — borders stay state-owned and identity never repaints signal surfaces.
45
+ - Every color speaks on exactly one channel: signal tokens (`aurora`/`warn`/`coral`/`positive`) carry state only, `brass` carries location/focus/hover only, and user or agent identity uses the `--id-*` tones painted exclusively through the spine+mark+wash grammar — borders stay state-owned and identity never repaints signal surfaces.
41
46
  - Core and built-in plugin CSS consume colors only as theme tokens via `var()`/`color-mix`; chromatic raw literals live solely in `theme.css` token definitions so all three themes retune together. Near-achromatic shadow, scrim, and sheen literals that carry depth rather than hue are the sanctioned exception.
42
47
  - `tests/instrument-design-contract.test.ts` pins the design grammar: a legitimate grammar change updates the contract together with the change, and intentional exceptions are recorded as doctrine comments beside the exempted CSS rule.
43
48
 
44
49
  ## Distribution constraints
45
50
 
46
- - Console serves its own web build; there is no second gateway or embedded web owner.
51
+ - Console serves its own web build and owns both published bins (`fleet`, `fleet-console`); there is no second Console web/HTTP owner. The `fleet` entry may still run an ephemeral per-process AI Gateway for Claude Code passthrough.
47
52
  - Published Console artifacts are self-contained: workspace packages are bundled and must not survive as workspace-version dependencies.
48
53
  - The published `./desktop-protocol` subpath is a compatibility surface for shipped Desktop shells under always-latest Console installs; keep its export surface unchanged.
49
54
  - Host and built-in plugin bundles may load separate copies of a module. Never coordinate across that boundary through module-scoped singleton state.
package/README.md CHANGED
@@ -1,15 +1,14 @@
1
1
  # Fleet Console
2
2
 
3
- Standalone loopback web console for observing carrier jobs, live output streams, and plugin-owned PTY terminal workspaces.
3
+ Standalone loopback web console for observing live output streams and plugin-owned PTY terminal workspaces.
4
4
 
5
5
  ## What It Does
6
6
 
7
- Fleet Console owns its own local HTTP server. The Terminal plugin owns Shell and Agent PTY runtime, tickets, launch, and WebSocket transport; carrier events are streamed to the browser through the observer API.
7
+ Fleet Console owns its own local HTTP server. The Terminal plugin owns Shell and Agent PTY runtime, tickets, launch, and WebSocket transport; session events are streamed to the browser through the observer API.
8
8
 
9
9
  - Plugin-owned terminal sessions and observed jobs in a navigable rail.
10
10
  - Workspace hub sessions created through an in-console directory browser — no OS-native dialog.
11
11
  - Terminal plugin-spawned Agent CLI PTYs with in-process observation.
12
- - Per-job carrier tracks with incremental output text, reasoning folds, and tool-call activity.
13
12
  - Codex/Fleet Wiki browsing under the shared Console GNB at `/console/codex`.
14
13
  - Codex Cowork lets you open a Wiki entry in a focused AI editing session: compare its immutable current version with a live draft, give the assistant selected text or annotations as context, and Apply once when ready. Your draft and conversation survive refresh or restart, while knowledge remains unchanged until that final Apply; Cowork has no terminal or PTY access and keeps provider details, workspace paths, and credentials out of the browser.
15
14
  - Browser observer snapshots and SSE streams backed by console-owned global observed ids.
@@ -51,18 +50,21 @@ Codex/Fleet Wiki routes preserve the migrated wiki security boundary: Host allow
51
50
  ## Usage
52
51
 
53
52
  ```bash
53
+ fleet console
54
+ fleet console status
55
+ fleet console stop
56
+
57
+ # transitional alias
54
58
  fleet-console
55
- fleet-console status
56
- fleet-console stop
57
59
  ```
58
60
 
59
- The launcher ensures the local console server is running and opens `/console/` directly without browser token fragments.
61
+ Prefer `fleet console`. The transitional `fleet-console` bin still works. The launcher ensures the local console server is running and opens `/console/` directly without browser token fragments.
60
62
 
61
63
  ## Desktop coexistence
62
64
 
63
65
  Fleet Console Desktop is a thin Electron shell around this service, not a second Console implementation. Its packaged standard Node `22.23.1` sidecar runs this package's `dist/cli.mjs serve` outside Electron's asar and loads exactly `http://127.0.0.1:<verified-port>/console/`. The service remains the owner of HTTP/REST/SSE/WebSocket, PTY, provider policy, plugin runtime, durable JSON state, and the React UI.
64
66
 
65
- Published stable CLI/browser and Desktop-supervised Console share one canonical stable lock and `~/.fleet/console` durable-state namespace (unless the existing `FLEET_CONSOLE_DIR` override is deliberately set). Owner metadata remains provenance/lifecycle compatibility data; it does not alter Console channel, health, update, or CLI-control behavior. Desktop can pair with an already running Console by its token-free loopback pairing identity.
67
+ Published stable CLI/browser and Desktop-supervised Console share one canonical stable lock and `~/.fleet/console` durable-state namespace (unless the `FLEET_CONSOLE_DATA_DIR` override — formerly `FLEET_CONSOLE_DIR`, still accepted — is deliberately set). Owner metadata remains provenance/lifecycle compatibility data; it does not alter Console channel, health, update, or CLI-control behavior. Desktop can pair with an already running Console by its token-free loopback pairing identity.
66
68
 
67
69
  Updates apply in-session only to ordinary global packages through the npm-global worker. A managed `console/latest` runtime is updated by Desktop's hardened entry-flow installer on relaunch; `POST /api/v1/updates/apply` refuses unsupported install layouts rather than mutating a live managed runtime. The pairing identity endpoint is discovery, not authentication: the user's exact `127.0.0.1:port` choice is the trust decision.
68
70
 
@@ -77,6 +79,6 @@ pnpm --filter @dotobokuri/fleet-console typecheck
77
79
  pnpm --filter @dotobokuri/fleet-console build
78
80
  ```
79
81
 
80
- `build` emits `dist/cli.mjs`, `dist/cli-bin.mjs`, `dist/client/`, and `dist/fleet-plugins/terminal/routes.mjs`. There is no external embed step.
82
+ `build` emits `dist/fleet.mjs`, `dist/cli.mjs`, `dist/client/`, and `dist/fleet-plugins/terminal/routes.mjs`. There is no external embed step.
81
83
 
82
84
  See `AGENTS.md` for ownership, token-boundary, and streaming invariants.
package/dist/cli.d.ts CHANGED
@@ -86,6 +86,8 @@ type ConsoleHookCommand = {
86
86
  readonly command: "turn-start";
87
87
  } | {
88
88
  readonly command: "turn-end";
89
+ } | {
90
+ readonly command: "background-report";
89
91
  } | {
90
92
  readonly command: "background-spawn";
91
93
  } | {
@@ -126,6 +128,7 @@ declare function assertCliCanControlDaemon(payload: ConsoleLockPayload): void;
126
128
  declare function isLockProcessAlive(pid: number): boolean;
127
129
  declare function runConsoleRestart(deps?: ConsoleRestartDeps): Promise<OpenFleetConsoleResult>;
128
130
  declare function main(): Promise<void>;
131
+
129
132
  declare function isCliDirectRun(argv1: string | undefined, moduleUrl?: string): boolean;
130
133
 
131
134
  export { type BuildConsoleHelpTextOptions, type ConsoleCliMode, type ConsoleDaemonLifecycleDeps, type ConsoleHookCommand, type ConsoleRestartDeps, type ConsoleStatusDeps, type ConsoleStopDeps, type OpenFleetConsoleDeps, type OpenFleetConsoleResult, assertCliCanControlDaemon, buildConsoleHelpText, createConsoleDaemonLifecycle, isCliDirectRun, isLockProcessAlive, main, openFleetConsole, parseConsoleCliMode, parseConsoleHookCommand, runConsoleRestart, runConsoleStatus, runConsoleStop };