@wrongstack/cli 0.319.0 → 1.0.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 (113) hide show
  1. package/data/providers.json +22 -15
  2. package/dist/{acp-5ANIAOZC.js → acp-3LARESEO.js} +113 -10
  3. package/dist/acp-hq-telemetry.d.ts +44 -0
  4. package/dist/{audit-ZPCLCC3C.js → audit-46YK5DSC.js} +1 -2
  5. package/dist/{auth-KF5TAD7V.js → auth-KIBJZZIE.js} +5 -6
  6. package/dist/auth-menu/add-provider.d.ts +7 -0
  7. package/dist/auth-menu/panel-service.d.ts +2 -20
  8. package/dist/{auto-discover-providers-MHFLDSD3.js → auto-discover-providers-VQU3IZMR.js} +1 -2
  9. package/dist/{bench-XYG56AMO.js → bench-YBU6BVQP.js} +175 -35
  10. package/dist/boot/brain-decision-log.d.ts +22 -2
  11. package/dist/{boot-auto-thin-BZ675EVT.js → boot-auto-thin-MANHOYHE.js} +1 -2
  12. package/dist/{chronicle-6EPPMUC5.js → chronicle-UTFETHP6.js} +1 -2
  13. package/dist/{chunk-VWCZL4OH.js → chunk-4HV5RKZH.js} +5 -5
  14. package/dist/{chunk-42JD25KU.js → chunk-5IA5337I.js} +3 -3
  15. package/dist/{chunk-7JBKXVMK.js → chunk-C2E24IXZ.js} +44 -32
  16. package/dist/{chunk-7CECQDNH.js → chunk-D3K4NYQL.js} +1 -1
  17. package/dist/{chunk-XPX432BZ.js → chunk-DR2OXU46.js} +50 -39
  18. package/dist/{chunk-4JRIWVJ4.js → chunk-ERX4BLKP.js} +1 -1
  19. package/dist/chunk-ETYHZPXP.js +52 -0
  20. package/dist/{chunk-TYO2OVAD.js → chunk-EWKESL4L.js} +8 -4
  21. package/dist/{chunk-QAC263FZ.js → chunk-FPIWTJ2G.js} +2 -3
  22. package/dist/{chunk-7YLN7YUA.js → chunk-IMWXXF4J.js} +61 -9
  23. package/dist/{chunk-G7337TTK.js → chunk-IS2PPBQV.js} +1 -1
  24. package/dist/{chunk-G3IMKQRH.js → chunk-JHPXJRRI.js} +1 -1
  25. package/dist/{chunk-XHIEA6LG.js → chunk-MNQQ4ZNF.js} +26 -22
  26. package/dist/{chunk-P2OKBDCH.js → chunk-MXEJEYT7.js} +53 -14
  27. package/dist/{chunk-PCBJSXYV.js → chunk-O4A3HHKD.js} +2 -2
  28. package/dist/{chunk-XYKYXFEE.js → chunk-TE3Q32JP.js} +10 -4
  29. package/dist/{chunk-H7GABTGS.js → chunk-TEBMCYZN.js} +69 -30
  30. package/dist/{chunk-E4I2TF5S.js → chunk-TNK6237M.js} +2 -2
  31. package/dist/{chunk-SYIBTG3X.js → chunk-VOTTENR5.js} +3 -5
  32. package/dist/chunk-WHOIR577.js +1 -0
  33. package/dist/{chunk-2ZNBRZ4W.js → chunk-WQZW3RDP.js} +2 -2
  34. package/dist/{chunk-GGGUZSAU.js → chunk-Z7A5MXKJ.js} +18 -12
  35. package/dist/{chunk-F5GA2QW2.js → chunk-ZSZ3EYWH.js} +2 -2
  36. package/dist/{cli-context-LH4QP4W2.js → cli-context-CYMKNOK3.js} +58 -307
  37. package/dist/{cli-main-72XUFUCL.js → cli-main-TTIVR4DI.js} +925 -329
  38. package/dist/{diag-doctor-LFCCBPMD.js → diag-doctor-7LYUYU35.js} +4 -6
  39. package/dist/execute-deps.d.ts +5 -1
  40. package/dist/{execution-DKJDNPYF.js → execution-3Y55IWBK.js} +512 -469
  41. package/dist/{export-ROG3DKTZ.js → export-VVRIOWFV.js} +1 -2
  42. package/dist/{governance-JSGHHA2R.js → governance-RYSHV675.js} +1 -2
  43. package/dist/{hq-3GWBFLON.js → hq-IG3YRGCO.js} +2 -3
  44. package/dist/hq-command-controller.d.ts +37 -7
  45. package/dist/hq-server/routes.d.ts +1 -1
  46. package/dist/hq-server/ws.d.ts +1 -1
  47. package/dist/{hq-server-OARPUSQJ.js → hq-server-OILU3NPI.js} +2 -3
  48. package/dist/{hq-ttl-KUO3AU7X.js → hq-ttl-VJR65OBJ.js} +1 -2
  49. package/dist/{hq-tunnel-LO55RCZE.js → hq-tunnel-NIJ5EP2Y.js} +1 -2
  50. package/dist/index.js +5 -6
  51. package/dist/{init-4JQSG66Q.js → init-DRMMFG2G.js} +1 -2
  52. package/dist/{kanban-run-mirror-EKVNGXWW.js → kanban-run-mirror-22HQ5FNG.js} +1 -2
  53. package/dist/live-settings-input.d.ts +2 -0
  54. package/dist/{mailbox-serve-VKQIRCCB.js → mailbox-serve-VUCWZ2SJ.js} +2 -3
  55. package/dist/{mcp-AQKSASHD.js → mcp-HOMLC4WE.js} +1 -2
  56. package/dist/{modeldiag-5FRMT6FQ.js → modeldiag-FMJT37SN.js} +2 -3
  57. package/dist/{per-subcommand-help-6VCIKDUW.js → per-subcommand-help-BWBHYVJO.js} +2 -3
  58. package/dist/{permissions-2PWBL4YU.js → permissions-CFDLXETM.js} +1 -2
  59. package/dist/{plugin-usage-CYUORYM6.js → plugin-usage-HFBI3TFT.js} +2 -3
  60. package/dist/{plugins-RV3OBBND.js → plugins-PZ2VZL7V.js} +4 -5
  61. package/dist/{project-BLQ3ALVL.js → project-AOQI5XTK.js} +1 -2
  62. package/dist/{project-manifest-YFTJ3D5N.js → project-manifest-7NSFVBM3.js} +2 -3
  63. package/dist/{project-picker-R5TYAE3Q.js → project-picker-SVBXMPKX.js} +3 -4
  64. package/dist/{projects-5J727S4L.js → projects-L6C6XLDY.js} +1 -2
  65. package/dist/provider-config-utils.d.ts +1 -1
  66. package/dist/{providers-models-OKKQZIWU.js → providers-models-YVMVYWRS.js} +3 -4
  67. package/dist/{proxy-wiring-EQB5X5YH.js → proxy-wiring-MGRSKZZB.js} +3 -4
  68. package/dist/{quick-XLYLZX4B.js → quick-CNB4Z3HS.js} +1 -2
  69. package/dist/{replay-RZXZKP2U.js → replay-JJ2NOWD6.js} +1 -2
  70. package/dist/{replay-FJ2JBXUA.js → replay-Z3FTJEMM.js} +1 -2
  71. package/dist/{rewind-2FFNOOKS.js → rewind-JA3ZLCNM.js} +1 -2
  72. package/dist/{sdd-runtime-FLKCSTYV.js → sdd-runtime-PTOSPYI4.js} +2 -3
  73. package/dist/services/sdd-runtime.d.ts +1 -1
  74. package/dist/services/statusline-config.d.ts +43 -13
  75. package/dist/{sessions-config-KAMEBVOX.js → sessions-config-UL45XKX7.js} +2 -3
  76. package/dist/{sessions-doctor-EXHAZSSE.js → sessions-doctor-QUL37U32.js} +1 -2
  77. package/dist/short-circuit-flags-6PSP56L7.js +10 -0
  78. package/dist/{simpleui-dist-JKNRCRRK.js → simpleui-dist-CXSIDAXZ.js} +1 -2
  79. package/dist/slash-commands/command-context.d.ts +10 -0
  80. package/dist/slash-commands/sdd.d.ts +1 -1
  81. package/dist/slash-commands/statusline.d.ts +1 -1
  82. package/dist/subcommands/handlers/bench-run-config.d.ts +18 -0
  83. package/dist/subcommands/handlers/bench.d.ts +8 -7
  84. package/dist/subcommands-HZQKA4G2.js +9 -0
  85. package/dist/{tools-skills-Q4P27URS.js → tools-skills-GH24UCBY.js} +1 -2
  86. package/dist/{update-K45CS6SS.js → update-5DPB4YD4.js} +1 -2
  87. package/dist/{update-check-PKSMSMD6.js → update-check-BS3DHTSI.js} +1 -2
  88. package/dist/version-help-MYKF724O.js +10 -0
  89. package/dist/webui-server/client-registration.d.ts +9 -1
  90. package/dist/{webui-server-SY4EQCKD.js → webui-server-T6AMOXJJ.js} +54 -13
  91. package/dist/wiring/brain-and-orchestration.d.ts +2 -0
  92. package/dist/wiring/cli-execute-builder.d.ts +4 -0
  93. package/dist/wiring/cli-slash-commands-setup.d.ts +1 -0
  94. package/dist/wiring/command-host-state.d.ts +50 -5
  95. package/dist/wiring/external-plugins.d.ts +9 -0
  96. package/dist/wiring/provider-runtime-setup.d.ts +2 -0
  97. package/dist/wiring/runtime-controller-deps.d.ts +3 -0
  98. package/dist/wiring/vector-memory-setup.d.ts +12 -0
  99. package/dist/wiring/wrongtrace-gate.d.ts +2 -2
  100. package/dist/wiring/wrongtrace-hooks.d.ts +1 -1
  101. package/dist/wiring/wrongtrace-prompt-contributor.d.ts +5 -2
  102. package/dist/{wrongtrace-gate-counters-P5BCBXQN.js → wrongtrace-gate-counters-7C2EAAZL.js} +2 -3
  103. package/dist/{wrongtrace-telemetry-FNLANZ5I.js → wrongtrace-telemetry-3ASFKOZO.js} +2 -3
  104. package/package.json +28 -28
  105. package/dist/chunk-7OCVIDC7.js +0 -11
  106. package/dist/chunk-ALE5KHCA.js +0 -1
  107. package/dist/chunk-OZDE3OWD.js +0 -52
  108. package/dist/launch-hints.d.ts +0 -49
  109. package/dist/short-circuit-flags-U6CJAF6J.js +0 -11
  110. package/dist/subcommands-J4JMWC5W.js +0 -10
  111. package/dist/version-help-WMPSEL4U.js +0 -11
  112. package/dist/webui-server/privileged-actions.d.ts +0 -14
  113. package/dist/wiring/cli-heap-watchdog.d.ts +0 -34
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  restoreFlags
3
3
  } from "./chunk-CSAPOCBP.js";
4
- import "./chunk-7OCVIDC7.js";
5
4
 
6
5
  // src/subcommands/handlers/export.ts
7
6
  import * as fs from "node:fs/promises";
@@ -64,4 +63,4 @@ var exportCmd = async (args, deps) => {
64
63
  export {
65
64
  exportCmd
66
65
  };
67
- //# sourceMappingURL=export-ROG3DKTZ.js.map
66
+ //# sourceMappingURL=export-VVRIOWFV.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/subcommands/handlers/governance.ts
4
3
  var DEFAULT_DEPENDENCIES = {
@@ -62,4 +61,4 @@ export {
62
61
  governanceCmd,
63
62
  runGovernanceStatusCommand
64
63
  };
65
- //# sourceMappingURL=governance-JSGHHA2R.js.map
64
+ //# sourceMappingURL=governance-RYSHV675.js.map
@@ -4,7 +4,6 @@ import {
4
4
  import {
5
5
  resolveAuditActor
6
6
  } from "./chunk-Q5GTM25S.js";
7
- import "./chunk-7OCVIDC7.js";
8
7
 
9
8
  // src/subcommands/handlers/hq.ts
10
9
  import * as fs from "node:fs/promises";
@@ -51,7 +50,7 @@ var hqCmd = async (args, deps) => {
51
50
  return 1;
52
51
  };
53
52
  async function startServer(deps) {
54
- const { startHqServer } = await import("./hq-server-OARPUSQJ.js");
53
+ const { startHqServer } = await import("./hq-server-OILU3NPI.js");
55
54
  const dataDir = resolveDataDir(deps);
56
55
  const flags = deps.flags ?? {};
57
56
  const host = typeof flags["host"] === "string" ? flags["host"] : HQ_CLI_DEFAULT_HOST;
@@ -709,4 +708,4 @@ export {
709
708
  hqCmd,
710
709
  resolveAuditActor
711
710
  };
712
- //# sourceMappingURL=hq-3GWBFLON.js.map
711
+ //# sourceMappingURL=hq-IG3YRGCO.js.map
@@ -25,16 +25,46 @@ import type { HqPublisherCommandResult } from '@wrongstack/core/hq';
25
25
  export interface HqCommandController {
26
26
  /** Project mailbox used to deliver steer/broadcast messages. */
27
27
  steerMailbox?: RemoteMailbox | undefined;
28
- /** Abort the session leader's running Agent.run(). Returns true if a run was aborted. */
29
- interruptLeader: () => boolean;
28
+ /**
29
+ * Abort the leader run of `sessionId`. Returns true if a run was aborted.
30
+ *
31
+ * The session is the one the command named, already resolved against this
32
+ * controller's default. A host that owns several sessions at once (the WebUI
33
+ * gives every open tab its own) MUST honour it rather than aborting whatever
34
+ * it considers the leader — that is how an operator who picked tab 3 in HQ
35
+ * ended up stopping tab 1.
36
+ */
37
+ interruptLeader: (sessionId?: string) => boolean;
30
38
  /** Terminate a specific subagent by id. Returns true if terminated. */
31
- terminateAgent?: (subagentId: string) => boolean | Promise<boolean>;
32
- /** Stop the entire fleet (all running/idle subagents). Returns kill count. */
33
- killFleet?: () => number | Promise<number>;
34
- /** Spawn a subagent of the given role. Returns the new subagentId. */
35
- spawnAgent?: (role: string, task?: string, maxIterations?: number) => Promise<string>;
39
+ terminateAgent?: (subagentId: string, sessionId?: string) => boolean | Promise<boolean>;
40
+ /** Stop the entire fleet of `sessionId` (all running/idle subagents). */
41
+ killFleet?: (sessionId?: string) => number | Promise<number>;
42
+ /** Spawn a subagent of the given role, owned by `sessionId`. */
43
+ spawnAgent?: (role: string, task?: string, maxIterations?: number, sessionId?: string) => Promise<string>;
36
44
  /** Derive the session-unique mailbox tag for addressing (e.g. `leader@<tag>`). */
37
45
  sessionTag: () => string;
46
+ /**
47
+ * The session HQ is speaking for, live.
48
+ *
49
+ * Steering addresses the bare `leader` alias, which EVERY leader in the
50
+ * project answers to — a second terminal on the same project consumes the
51
+ * same message (unread state is per reader, so both get it). Stamping the
52
+ * session id makes `acceptMailboxMessageForSession` drop it at every other
53
+ * leader, so an operator who picked one session in HQ reaches exactly that
54
+ * session. Optional: without it the message stays project-wide, which is
55
+ * the pre-existing behaviour rather than a silent drop.
56
+ */
57
+ sessionId?: (() => string | undefined) | undefined;
58
+ /**
59
+ * Does this host currently own `sessionId`?
60
+ *
61
+ * A command that names a session this process no longer has must be
62
+ * REJECTED, never silently redirected to the default: the operator picked a
63
+ * specific terminal, and steering a different one is worse than not steering
64
+ * at all. Absent means the host has a single session and the default check
65
+ * (equality with `sessionId()`) applies.
66
+ */
67
+ ownsSession?: ((sessionId: string) => boolean) | undefined;
38
68
  /** Whether raw shell execution is explicitly opted-in by the operator. */
39
69
  allowRunCommand: () => boolean;
40
70
  }
@@ -89,7 +89,7 @@ export interface HqRouterDeps {
89
89
  bootstrapStore?: import('@wrongstack/core/hq').HqBootstrapCodeStore | undefined;
90
90
  /**
91
91
  * Applies a freshly-persisted `auth.json` to live server state. Bound to
92
- * `HqAuthState.apply` so the in-process mutation routes share one projection
92
+ * `HqAuthState.apply` so the in-process mutation routes share one projection
93
93
  * — and one WS-010 exposure re-assessment — with the reload watcher.
94
94
  */
95
95
  applyAuthFile: ApplyHqAuthFile;
@@ -6,8 +6,8 @@
6
6
  import type { HqCommandAuditLog, HqEventEnvelope, HqPersistence, HqRedactionPolicy, HqToken, HqTranscriptEntry } from '@wrongstack/core/hq';
7
7
  import { WebSocket } from 'ws';
8
8
  import type { ConnectedClient, HqSnapshotBroadcaster, TranscriptRing } from './types.js';
9
- export { detectLeaderLoss } from './ws-leader.js';
10
9
  export { fanoutKanbanDelta } from './ws-client-events.js';
10
+ export { detectLeaderLoss } from './ws-leader.js';
11
11
  export { handleClientResume } from './ws-resume.js';
12
12
  export declare function handleBrowser(ws: WebSocket, snapshotBroadcaster: HqSnapshotBroadcaster, browsers: Set<WebSocket>, eventLog: HqEventEnvelope[]): void;
13
13
  export declare function handleClient(ws: WebSocket, clients: Map<WebSocket, ConnectedClient>, browsers: Set<WebSocket>, eventLog: HqEventEnvelope[], auth: {
@@ -10,10 +10,9 @@ import {
10
10
  readLocalSubagentTranscript,
11
11
  sanitizeApiError,
12
12
  startHqServer
13
- } from "./chunk-7JBKXVMK.js";
13
+ } from "./chunk-C2E24IXZ.js";
14
14
  import "./chunk-HXJYHAR4.js";
15
15
  import "./chunk-Q5GTM25S.js";
16
- import "./chunk-7OCVIDC7.js";
17
16
  export {
18
17
  DEFAULT_HOST,
19
18
  DEFAULT_PORT,
@@ -27,4 +26,4 @@ export {
27
26
  sanitizeApiError,
28
27
  startHqServer
29
28
  };
30
- //# sourceMappingURL=hq-server-OARPUSQJ.js.map
29
+ //# sourceMappingURL=hq-server-OILU3NPI.js.map
@@ -1,8 +1,7 @@
1
1
  import {
2
2
  parseTokenTtlValue
3
3
  } from "./chunk-UZ2TMHNH.js";
4
- import "./chunk-7OCVIDC7.js";
5
4
  export {
6
5
  parseTokenTtlValue
7
6
  };
8
- //# sourceMappingURL=hq-ttl-KUO3AU7X.js.map
7
+ //# sourceMappingURL=hq-ttl-VJR65OBJ.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/hq-tunnel.ts
4
3
  import { spawn } from "node:child_process";
@@ -111,4 +110,4 @@ export {
111
110
  hasRegisteredQuickTunnelConnection,
112
111
  startHqQuickTunnel
113
112
  };
114
- //# sourceMappingURL=hq-tunnel-LO55RCZE.js.map
113
+ //# sourceMappingURL=hq-tunnel-NIJ5EP2Y.js.map
package/dist/index.js CHANGED
@@ -2,14 +2,13 @@
2
2
  import {
3
3
  applyNodeEnvDefault,
4
4
  applySessionShellDefault
5
- } from "./chunk-PCBJSXYV.js";
5
+ } from "./chunk-O4A3HHKD.js";
6
6
  import {
7
7
  CLI_VERSION
8
8
  } from "./chunk-XJXDOF63.js";
9
9
  import {
10
10
  parseArgs
11
- } from "./chunk-GGGUZSAU.js";
12
- import "./chunk-7OCVIDC7.js";
11
+ } from "./chunk-Z7A5MXKJ.js";
13
12
 
14
13
  // src/cli-entry-main.ts
15
14
  async function main(argv) {
@@ -17,14 +16,14 @@ async function main(argv) {
17
16
  applySessionShellDefault();
18
17
  const earlyFlags = parseArgs(argv).flags;
19
18
  if (earlyFlags["help"] === true || earlyFlags["version"] === true) {
20
- const { handleHelpVersionShortCircuit } = await import("./short-circuit-flags-U6CJAF6J.js");
19
+ const { handleHelpVersionShortCircuit } = await import("./short-circuit-flags-6PSP56L7.js");
21
20
  const earlyExit = await handleHelpVersionShortCircuit(argv);
22
21
  if (earlyExit !== null) return earlyExit;
23
22
  }
24
- const { initializeCli } = await import("./cli-context-LH4QP4W2.js");
23
+ const { initializeCli } = await import("./cli-context-CYMKNOK3.js");
25
24
  const cliCtx = await initializeCli(argv);
26
25
  if (typeof cliCtx === "number") return cliCtx;
27
- const { runInteractive } = await import("./cli-main-72XUFUCL.js");
26
+ const { runInteractive } = await import("./cli-main-TTIVR4DI.js");
28
27
  return runInteractive(cliCtx);
29
28
  }
30
29
 
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/subcommands/handlers/init.ts
4
3
  import { color } from "@wrongstack/core/utils";
@@ -24,4 +23,4 @@ var initCmd = async (_args, deps) => {
24
23
  export {
25
24
  initCmd
26
25
  };
27
- //# sourceMappingURL=init-4JQSG66Q.js.map
26
+ //# sourceMappingURL=init-DRMMFG2G.js.map
@@ -3,10 +3,9 @@ import {
3
3
  buildTaskGraphFromSddSnapshot,
4
4
  createKanbanRunMirror
5
5
  } from "./chunk-VCYZ3WZV.js";
6
- import "./chunk-7OCVIDC7.js";
7
6
  export {
8
7
  buildTaskGraphFromGoalPhase,
9
8
  buildTaskGraphFromSddSnapshot,
10
9
  createKanbanRunMirror
11
10
  };
12
- //# sourceMappingURL=kanban-run-mirror-EKVNGXWW.js.map
11
+ //# sourceMappingURL=kanban-run-mirror-22HQ5FNG.js.map
@@ -30,6 +30,8 @@ export interface LiveSettingsInput {
30
30
  indexOnStart?: boolean | undefined;
31
31
  maxIterations?: number | undefined;
32
32
  autoProceedMaxIterations?: number | undefined;
33
+ /** Per-tool diff threshold that triggers multi-diff summary view. Default: 5. */
34
+ multiDiffSummaryThreshold?: number | undefined;
33
35
  /** When true, file tools are confined to the project root. Default false. */
34
36
  restrictFsToRoot?: boolean | undefined;
35
37
  debugStream?: boolean | undefined;
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  startCliHqConnection
3
- } from "./chunk-XYKYXFEE.js";
4
- import "./chunk-7OCVIDC7.js";
3
+ } from "./chunk-TE3Q32JP.js";
5
4
 
6
5
  // src/subcommands/handlers/mailbox-serve.ts
7
6
  import { createServer } from "node:http";
@@ -360,4 +359,4 @@ function printHelp(deps) {
360
359
  export {
361
360
  mailboxServeCmd
362
361
  };
363
- //# sourceMappingURL=mailbox-serve-VKQIRCCB.js.map
362
+ //# sourceMappingURL=mailbox-serve-VUCWZ2SJ.js.map
@@ -4,7 +4,6 @@ import {
4
4
  import {
5
5
  activeProfileConfigPath
6
6
  } from "./chunk-YMXXOOFN.js";
7
- import "./chunk-7OCVIDC7.js";
8
7
 
9
8
  // src/subcommands/handlers/mcp.ts
10
9
  import { allServers } from "@wrongstack/core/infrastructure";
@@ -441,4 +440,4 @@ function isRecord(value) {
441
440
  export {
442
441
  mcpCmd
443
442
  };
444
- //# sourceMappingURL=mcp-AQKSASHD.js.map
443
+ //# sourceMappingURL=mcp-HOMLC4WE.js.map
@@ -8,8 +8,7 @@ import {
8
8
  mutateConfigProviders,
9
9
  normalizeKeys,
10
10
  writeKeysBack
11
- } from "./chunk-XPX432BZ.js";
12
- import "./chunk-7OCVIDC7.js";
11
+ } from "./chunk-DR2OXU46.js";
13
12
 
14
13
  // src/subcommands/handlers/modeldiag.ts
15
14
  import * as fs from "node:fs/promises";
@@ -1323,4 +1322,4 @@ var modeldiagCmd = async (args, deps) => {
1323
1322
  export {
1324
1323
  modeldiagCmd
1325
1324
  };
1326
- //# sourceMappingURL=modeldiag-5FRMT6FQ.js.map
1325
+ //# sourceMappingURL=modeldiag-FMJT37SN.js.map
@@ -7,9 +7,8 @@ import {
7
7
  renderFocusedHelpToString,
8
8
  renderGenericHelp,
9
9
  subcommandsWithFocusedHelp
10
- } from "./chunk-P2OKBDCH.js";
10
+ } from "./chunk-MXEJEYT7.js";
11
11
  import "./chunk-2VMJ3E5Z.js";
12
- import "./chunk-7OCVIDC7.js";
13
12
  export {
14
13
  deepSubcommandsWithFocusedHelp,
15
14
  renderBlockToString,
@@ -20,4 +19,4 @@ export {
20
19
  renderGenericHelp,
21
20
  subcommandsWithFocusedHelp
22
21
  };
23
- //# sourceMappingURL=per-subcommand-help-6VCIKDUW.js.map
22
+ //# sourceMappingURL=per-subcommand-help-BWBHYVJO.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/subcommands/handlers/permissions.ts
4
3
  import { DefaultPermissionPolicy } from "@wrongstack/core/security";
@@ -114,4 +113,4 @@ Flags:
114
113
  export {
115
114
  permissionsCmd
116
115
  };
117
- //# sourceMappingURL=permissions-2PWBL4YU.js.map
116
+ //# sourceMappingURL=permissions-CFDLXETM.js.map
@@ -1,13 +1,12 @@
1
1
  import {
2
2
  runPluginManagementCommand
3
- } from "./chunk-H7GABTGS.js";
3
+ } from "./chunk-TEBMCYZN.js";
4
4
  import {
5
5
  restoreFlags
6
6
  } from "./chunk-CSAPOCBP.js";
7
7
  import {
8
8
  activeProfileConfigPath
9
9
  } from "./chunk-YMXXOOFN.js";
10
- import "./chunk-7OCVIDC7.js";
11
10
 
12
11
  // src/subcommands/handlers/plugin-usage.ts
13
12
  var pluginCmd = async (args, deps) => {
@@ -41,4 +40,4 @@ export {
41
40
  pluginCmd,
42
41
  usageCmd
43
42
  };
44
- //# sourceMappingURL=plugin-usage-CYUORYM6.js.map
43
+ //# sourceMappingURL=plugin-usage-HFBI3TFT.js.map
@@ -6,10 +6,9 @@ import {
6
6
  pluginNameFromSpec,
7
7
  setupPlugins,
8
8
  warnIfDeprecatedPluginName
9
- } from "./chunk-42JD25KU.js";
10
- import "./chunk-TYO2OVAD.js";
11
- import "./chunk-H7GABTGS.js";
12
- import "./chunk-7OCVIDC7.js";
9
+ } from "./chunk-5IA5337I.js";
10
+ import "./chunk-EWKESL4L.js";
11
+ import "./chunk-TEBMCYZN.js";
13
12
  export {
14
13
  BUILTIN_PLUGIN_FACTORIES,
15
14
  DEPRECATED_PLUGIN_NAMES,
@@ -19,4 +18,4 @@ export {
19
18
  setupPlugins,
20
19
  warnIfDeprecatedPluginName
21
20
  };
22
- //# sourceMappingURL=plugins-RV3OBBND.js.map
21
+ //# sourceMappingURL=plugins-PZ2VZL7V.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/subcommands/handlers/project.ts
4
3
  import {
@@ -73,4 +72,4 @@ ${color.dim("Commit this file so every clone and machine shares the same HQ proj
73
72
  export {
74
73
  projectCmd
75
74
  };
76
- //# sourceMappingURL=project-BLQ3ALVL.js.map
75
+ //# sourceMappingURL=project-AOQI5XTK.js.map
@@ -5,8 +5,7 @@ import {
5
5
  loadManifest,
6
6
  saveManifest,
7
7
  touchProjectInManifest
8
- } from "./chunk-G7337TTK.js";
9
- import "./chunk-7OCVIDC7.js";
8
+ } from "./chunk-IS2PPBQV.js";
10
9
  export {
11
10
  ensureProjectDataDir,
12
11
  findProject,
@@ -15,4 +14,4 @@ export {
15
14
  saveManifest,
16
15
  touchProjectInManifest
17
16
  };
18
- //# sourceMappingURL=project-manifest-YFTJ3D5N.js.map
17
+ //# sourceMappingURL=project-manifest-7NSFVBM3.js.map
@@ -4,9 +4,8 @@ import {
4
4
  filterItems,
5
5
  runProjectPicker,
6
6
  skipDivider
7
- } from "./chunk-2ZNBRZ4W.js";
8
- import "./chunk-G7337TTK.js";
9
- import "./chunk-7OCVIDC7.js";
7
+ } from "./chunk-WQZW3RDP.js";
8
+ import "./chunk-IS2PPBQV.js";
10
9
  export {
11
10
  buildPickerItems,
12
11
  effectiveVisibleHeight,
@@ -14,4 +13,4 @@ export {
14
13
  runProjectPicker,
15
14
  skipDivider
16
15
  };
17
- //# sourceMappingURL=project-picker-R5TYAE3Q.js.map
16
+ //# sourceMappingURL=project-picker-SVBXMPKX.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/subcommands/handlers/projects.ts
4
3
  import * as fs from "node:fs/promises";
@@ -35,4 +34,4 @@ var projectsCmd = async (_args, deps) => {
35
34
  export {
36
35
  projectsCmd
37
36
  };
38
- //# sourceMappingURL=projects-5J727S4L.js.map
37
+ //# sourceMappingURL=projects-L6C6XLDY.js.map
@@ -54,5 +54,5 @@ export declare function loadConfigProviders(configPath: string, vault: SecretVau
54
54
  * so non-provider keys are preserved. Refuses to overwrite a corrupt-but-
55
55
  * existing config (the user may still have salvageable data).
56
56
  */
57
- export declare function mutateConfigProviders(configPath: string, vault: SecretVault, mutator: (providers: Record<string, ProviderConfig>) => void, profileConfigPath?: string): Promise<void>;
57
+ export declare function mutateConfigProviders(configPath: string, vault: SecretVault, mutator: (providers: Record<string, ProviderConfig>, config: Record<string, unknown>) => void, profileConfigPath?: string): Promise<void>;
58
58
  //# sourceMappingURL=provider-config-utils.d.ts.map
@@ -6,8 +6,7 @@ import {
6
6
  } from "./chunk-YMXXOOFN.js";
7
7
  import {
8
8
  mutateConfigProviders
9
- } from "./chunk-XPX432BZ.js";
10
- import "./chunk-7OCVIDC7.js";
9
+ } from "./chunk-DR2OXU46.js";
11
10
 
12
11
  // src/subcommands/handlers/providers-models.ts
13
12
  import * as fs from "node:fs/promises";
@@ -240,7 +239,7 @@ function aliasProviderId(configProviderId, cfg) {
240
239
  async function discoverProviderModels(deps, ids) {
241
240
  if (!("mergeOverlay" in deps.modelsRegistry)) return void 0;
242
241
  try {
243
- const { discoverAndMergeProviders } = await import("./auto-discover-providers-MHFLDSD3.js");
242
+ const { discoverAndMergeProviders } = await import("./auto-discover-providers-VQU3IZMR.js");
244
243
  await discoverAndMergeProviders({
245
244
  config: deps.config,
246
245
  registry: deps.modelsRegistry,
@@ -661,4 +660,4 @@ export {
661
660
  modelsCmd,
662
661
  providersCmd
663
662
  };
664
- //# sourceMappingURL=providers-models-OKKQZIWU.js.map
663
+ //# sourceMappingURL=providers-models-YVMVYWRS.js.map
@@ -3,13 +3,12 @@ import {
3
3
  awaitFirstWrongProxyProbe,
4
4
  bootstrapWrongProxy,
5
5
  shutdownWrongProxy
6
- } from "./chunk-SYIBTG3X.js";
7
- import "./chunk-G3IMKQRH.js";
8
- import "./chunk-7OCVIDC7.js";
6
+ } from "./chunk-VOTTENR5.js";
7
+ import "./chunk-JHPXJRRI.js";
9
8
  export {
10
9
  applyWrongProxyPrefs,
11
10
  awaitFirstWrongProxyProbe,
12
11
  bootstrapWrongProxy,
13
12
  shutdownWrongProxy
14
13
  };
15
- //# sourceMappingURL=proxy-wiring-EQB5X5YH.js.map
14
+ //# sourceMappingURL=proxy-wiring-MGRSKZZB.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/subcommands/handlers/quick.ts
4
3
  var quickCmd = (_args, _deps) => {
@@ -7,4 +6,4 @@ var quickCmd = (_args, _deps) => {
7
6
  export {
8
7
  quickCmd
9
8
  };
10
- //# sourceMappingURL=quick-XLYLZX4B.js.map
9
+ //# sourceMappingURL=quick-CNB4Z3HS.js.map
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  restoreFlags
3
3
  } from "./chunk-CSAPOCBP.js";
4
- import "./chunk-7OCVIDC7.js";
5
4
 
6
5
  // src/subcommands/handlers/replay.ts
7
6
  import { ReplayLogStore } from "@wrongstack/core/storage";
@@ -76,4 +75,4 @@ Run a session with --record first, then --replay to re-execute it.`
76
75
  export {
77
76
  replayCmd
78
77
  };
79
- //# sourceMappingURL=replay-RZXZKP2U.js.map
78
+ //# sourceMappingURL=replay-JJ2NOWD6.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/wiring/replay.ts
4
3
  import { runProviderWithRetry } from "@wrongstack/core/agent";
@@ -31,4 +30,4 @@ function bindReplayToContainer(opts) {
31
30
  export {
32
31
  bindReplayToContainer
33
32
  };
34
- //# sourceMappingURL=replay-FJ2JBXUA.js.map
33
+ //# sourceMappingURL=replay-Z3FTJEMM.js.map
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  restoreFlags
3
3
  } from "./chunk-CSAPOCBP.js";
4
- import "./chunk-7OCVIDC7.js";
5
4
 
6
5
  // src/subcommands/handlers/rewind.ts
7
6
  import {
@@ -186,4 +185,4 @@ ${result.errors.length} error(s):
186
185
  export {
187
186
  rewindCmd
188
187
  };
189
- //# sourceMappingURL=rewind-2FFNOOKS.js.map
188
+ //# sourceMappingURL=rewind-JA3ZLCNM.js.map
@@ -1,4 +1,4 @@
1
- import "./chunk-ALE5KHCA.js";
1
+ import "./chunk-WHOIR577.js";
2
2
  import {
3
3
  SDDState,
4
4
  advanceToNextTask,
@@ -23,7 +23,6 @@ import {
23
23
  trySaveSpecFromAIOutput,
24
24
  trySaveTasksFromAIOutput
25
25
  } from "./chunk-JHUJUIOH.js";
26
- import "./chunk-7OCVIDC7.js";
27
26
  export {
28
27
  SDDState,
29
28
  advanceToNextTask,
@@ -49,4 +48,4 @@ export {
49
48
  trySaveSpecFromAIOutput,
50
49
  trySaveTasksFromAIOutput
51
50
  };
52
- //# sourceMappingURL=sdd-runtime-FLKCSTYV.js.map
51
+ //# sourceMappingURL=sdd-runtime-PTOSPYI4.js.map
@@ -1,5 +1,5 @@
1
1
  export { findSpec, gatherProjectContext, getActiveBuilder, getActiveSDDContext, getActiveSDDPhase, } from './sdd/project-context.js';
2
2
  export { autoDetectTaskCompletion, isExplanatoryText, trySaveImplementationPlan, trySaveSpecFromAIOutput, } from './sdd/spec-detection.js';
3
3
  export { getSessionState, SDDState, sddState } from './sdd/state.js';
4
- export { advanceToNextTask, formatElapsed, getCurrentExecutingContext, getTaskGraphId, getTaskListText, getTaskProgress, getTaskTrackerExport as getTaskTracker, getTaskTrackerExport, markTaskCompleted, renderTaskListWithProgress, trySaveTasksFromAIOutput } from './sdd/task-manager.js';
4
+ export { advanceToNextTask, formatElapsed, getCurrentExecutingContext, getTaskGraphId, getTaskListText, getTaskProgress, getTaskTrackerExport as getTaskTracker, getTaskTrackerExport, markTaskCompleted, renderTaskListWithProgress, trySaveTasksFromAIOutput, } from './sdd/task-manager.js';
5
5
  //# sourceMappingURL=sdd-runtime.d.ts.map
@@ -1,33 +1,63 @@
1
- import type { StatuslineLines } from '@wrongstack/core/statusline';
2
- /** On-disk schema version. v1 was a flat boolean map; v2 nests it under
3
- * `chips` alongside the sparse per-chip `lines` assignment. */
4
- export declare const STATUSLINE_CONFIG_VERSION = 2;
5
- export declare const STATUSLINE_CONFIG_KEYS: readonly ['state', 'model', 'context', 'tokens', 'cache', 'cost', 'queue', 'hint', 'index', 'breaker', 'yolo', 'autonomy', 'eternal_stage', 'elapsed', 'project', 'working_dir', 'goal', 'mode', 'auto_proceed', 'git', 'sessions', 'tools', 'theme', 'token_saving', 'processes', 'version', 'dropped_tools', 'prompt_variant', 'side_effects', 'todos', 'plan', 'tasks', 'fleet', 'brain', 'debug_stream', 'enhance', 'next_steps', 'mailbox', 'fleet_agents', 'memory_context'];
6
- export type StatuslineConfigKey = (typeof STATUSLINE_CONFIG_KEYS)[number];
1
+ import { type StatuslineDensities, type StatuslineItem, type StatuslineLines } from '@wrongstack/core/statusline';
2
+ /**
3
+ * On-disk schema version.
4
+ * v1 flat boolean map.
5
+ * v2 `{chips, lines}`.
6
+ * v3 adds `densities` (per-chip full/short/micro pin).
7
+ */
8
+ export declare const STATUSLINE_CONFIG_VERSION = 3;
9
+ /**
10
+ * The persistence vocabulary IS the core contract — one list, so a new chip
11
+ * cannot gain a default line without gaining a toggle (or vice versa). The
12
+ * drift guard in `statusline-contract-drift.test.ts` still asserts it.
13
+ */
14
+ export declare const STATUSLINE_CONFIG_KEYS: readonly StatuslineItem[];
15
+ export type StatuslineConfigKey = StatuslineItem;
7
16
  export type StatuslineConfig = {
8
17
  [K in StatuslineConfigKey]?: boolean | undefined;
9
18
  };
10
19
  /**
11
- * v2 statusline.json document: the chip on/off map plus the sparse
12
- * per-chip line assignment (`StatuslineLines` from the framework-free core
13
- * contract). Absent `lines` keys mean "render on the contract's default
14
- * line" (`DEFAULT_LINES`).
20
+ * v3 statusline.json document: the chip on/off map, the sparse per-chip line
21
+ * assignment, and the sparse per-chip density pin. Absent `lines` keys mean
22
+ * "render on the contract's default line" (`DEFAULT_LINES`); absent
23
+ * `densities` keys mean "let the rail fitter choose".
15
24
  */
16
25
  export interface StatuslineDocument {
17
26
  version: typeof STATUSLINE_CONFIG_VERSION;
18
27
  chips: StatuslineConfig;
19
28
  lines: StatuslineLines;
29
+ densities: StatuslineDensities;
20
30
  }
31
+ /**
32
+ * Chip toggles for a brand-new config. Not every chip is on: the static
33
+ * identity trivia in `DEFAULT_HIDDEN_ITEMS` starts off, because each costs
34
+ * 10–30 permanent columns and is recoverable from a slash command. An
35
+ * existing file's explicit map always wins over this.
36
+ */
21
37
  export declare const DEFAULTS: StatuslineConfig;
22
38
  export declare function loadStatuslineConfig(): Promise<StatuslineDocument>;
23
39
  export declare function ensureStatuslineConfig(): Promise<StatuslineDocument>;
24
40
  export declare function saveStatuslineConfig(config: StatuslineDocument): Promise<void>;
25
41
  /** Load just the per-chip line assignment (defaults to {} when unassigned). */
26
42
  export declare function loadStatuslineLines(): Promise<StatuslineLines>;
43
+ /** Load just the per-chip density pins (defaults to {} when unpinned). */
44
+ export declare function loadStatuslineDensities(): Promise<StatuslineDensities>;
45
+ /**
46
+ * Persist a new layout (lines and/or densities) while preserving the stored
47
+ * chip toggles. Values are re-normalized (unknown keys dropped, clamped) so a
48
+ * malformed caller cannot write garbage to disk.
49
+ */
50
+ export declare function saveStatuslineLayout(layout: {
51
+ lines?: StatuslineLines | undefined;
52
+ densities?: StatuslineDensities | undefined;
53
+ }): Promise<void>;
27
54
  /**
28
- * Persist a new line assignment while preserving the stored chip toggles.
29
- * Values are re-normalized (unknown keys dropped, clamped) so a malformed
30
- * caller cannot write garbage to disk.
55
+ * Persist the chip on/off map while preserving the stored layout. Same RMW
56
+ * hazard as {@link saveStatuslineLayout}, so it shares the mutation queue: a
57
+ * hidden-items save racing a layout save must not resurrect the other's
58
+ * stale field.
31
59
  */
60
+ export declare function saveStatuslineChips(chips: StatuslineConfig): Promise<void>;
61
+ /** Back-compat alias: persist only the line assignment. */
32
62
  export declare function saveStatuslineLines(lines: StatuslineLines): Promise<void>;
33
63
  //# sourceMappingURL=statusline-config.d.ts.map