@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
@@ -10,7 +10,6 @@ import {
10
10
  import {
11
11
  activeProfileConfigPath
12
12
  } from "./chunk-YMXXOOFN.js";
13
- import "./chunk-7OCVIDC7.js";
14
13
 
15
14
  // src/subcommands/handlers/sessions-config.ts
16
15
  import { color as color2, expectDefined } from "@wrongstack/core/utils";
@@ -244,7 +243,7 @@ var sessionsCmd = async (args, deps) => {
244
243
  return sessionsFleetCmd(args.slice(1), deps);
245
244
  }
246
245
  if (sub === "doctor") {
247
- const { sessionsDoctorCmd } = await import("./sessions-doctor-EXHAZSSE.js");
246
+ const { sessionsDoctorCmd } = await import("./sessions-doctor-QUL37U32.js");
248
247
  return sessionsDoctorCmd(args.slice(1), deps);
249
248
  }
250
249
  if (!deps.sessionStore) {
@@ -419,4 +418,4 @@ export {
419
418
  configCmd,
420
419
  sessionsCmd
421
420
  };
422
- //# sourceMappingURL=sessions-config-KAMEBVOX.js.map
421
+ //# sourceMappingURL=sessions-config-UL45XKX7.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/subcommands/handlers/sessions-doctor.ts
4
3
  import {
@@ -143,4 +142,4 @@ var sessionsDoctorCmd = async (args, deps) => {
143
142
  export {
144
143
  sessionsDoctorCmd
145
144
  };
146
- //# sourceMappingURL=sessions-doctor-EXHAZSSE.js.map
145
+ //# sourceMappingURL=sessions-doctor-QUL37U32.js.map
@@ -0,0 +1,10 @@
1
+ import {
2
+ handleHelpVersionShortCircuit
3
+ } from "./chunk-4HV5RKZH.js";
4
+ import "./chunk-FPIWTJ2G.js";
5
+ import "./chunk-XJXDOF63.js";
6
+ import "./chunk-Z7A5MXKJ.js";
7
+ export {
8
+ handleHelpVersionShortCircuit
9
+ };
10
+ //# sourceMappingURL=short-circuit-flags-6PSP56L7.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/simpleui-dist.ts
4
3
  import { spawn } from "node:child_process";
@@ -97,4 +96,4 @@ export {
97
96
  ensureSimpleUiDistDir,
98
97
  resolveSimpleUiDistDir
99
98
  };
100
- //# sourceMappingURL=simpleui-dist-JKNRCRRK.js.map
99
+ //# sourceMappingURL=simpleui-dist-CXSIDAXZ.js.map
@@ -576,7 +576,17 @@ export interface SlashCommandContext {
576
576
  kind: string;
577
577
  question: string;
578
578
  outcome: string;
579
+ /** Tier that resolved the decision, when the chain recorded one. */
580
+ tier?: string | undefined;
579
581
  }>) | undefined;
582
+ /**
583
+ * Session-lifetime per-tier decision tally for `/brain stats`.
584
+ *
585
+ * Optional: hosts that only wire `getBrainLog` (the WebUI route context,
586
+ * bare test containers) fall back to counting the ring buffer, which is
587
+ * capped at 20 entries and therefore only ever describes the recent past.
588
+ */
589
+ brainTierStats?: (() => import('@wrongstack/core/coordination').BrainTierStats) | undefined;
580
590
  /** Config store for reading/writing config sections at runtime (e.g. settings menu). */
581
591
  configStore: import('@wrongstack/core/types').ConfigStore;
582
592
  /**
@@ -5,7 +5,7 @@ export type { TaskProgress } from '@wrongstack/core/types';
5
5
  export { findSpec, gatherProjectContext, getActiveBuilder, getActiveSDDContext, getActiveSDDPhase, } from '../services/sdd/project-context.js';
6
6
  export { autoDetectTaskCompletion, isExplanatoryText, trySaveImplementationPlan, trySaveSpecFromAIOutput, } from '../services/sdd/spec-detection.js';
7
7
  export { SDDState, sddState } from '../services/sdd/state.js';
8
- export { advanceToNextTask, formatElapsed, getCurrentExecutingContext, getTaskGraphId, getTaskListText, getTaskProgress, getTaskTrackerExport, markTaskCompleted, renderTaskListWithProgress, trySaveTasksFromAIOutput } from '../services/sdd/task-manager.js';
8
+ export { advanceToNextTask, formatElapsed, getCurrentExecutingContext, getTaskGraphId, getTaskListText, getTaskProgress, getTaskTrackerExport, markTaskCompleted, renderTaskListWithProgress, trySaveTasksFromAIOutput, } from '../services/sdd/task-manager.js';
9
9
  export { renderProgress };
10
10
  export declare function getTaskTracker(): TaskTracker | null;
11
11
  /**
@@ -1,6 +1,6 @@
1
1
  import type { SlashCommand } from '@wrongstack/core/types';
2
2
  import { type StatuslineConfigKey, type StatuslineDocument } from '../services/statusline-config.js';
3
- export { DEFAULTS, ensureStatuslineConfig, loadStatuslineConfig, STATUSLINE_CONFIG_KEYS, STATUSLINE_CONFIG_VERSION, type StatuslineConfig, type StatuslineConfigKey, type StatuslineDocument, saveStatuslineConfig, } from '../services/statusline-config.js';
3
+ export { DEFAULTS, ensureStatuslineConfig, loadStatuslineConfig, loadStatuslineDensities, loadStatuslineLines, STATUSLINE_CONFIG_KEYS, STATUSLINE_CONFIG_VERSION, type StatuslineConfig, type StatuslineConfigKey, type StatuslineDocument, saveStatuslineConfig, saveStatuslineLayout, saveStatuslineLines, } from '../services/statusline-config.js';
4
4
  export interface StatuslineCommandDeps {
5
5
  cwd: string;
6
6
  /** Current hidden items list. Written by the command when toggling. */
@@ -0,0 +1,18 @@
1
+ import { type BenchConfig } from '@wrongstack/bench';
2
+ export declare const DEFAULT_BENCH_MODELS_FILE = "bench.config.json";
3
+ export interface ResolveBenchRunConfigInput {
4
+ suiteId: string;
5
+ cwd: string;
6
+ flags?: Record<string, string | boolean> | undefined;
7
+ savedProvider?: string | undefined;
8
+ savedModel?: string | undefined;
9
+ }
10
+ /**
11
+ * Resolve the model matrix for `wstack bench run`.
12
+ *
13
+ * A missing default `bench.config.json` is not an error — fall through to
14
+ * `--cell`, `--provider`/`--model`, or the saved CLI provider/model. Only an
15
+ * explicit `--models <other-file>` that cannot be read fails closed.
16
+ */
17
+ export declare function resolveBenchRunConfig(input: ResolveBenchRunConfigInput): Promise<BenchConfig>;
18
+ //# sourceMappingURL=bench-run-config.d.ts.map
@@ -1,13 +1,14 @@
1
1
  import type { SubcommandHandler } from '../contracts.js';
2
2
  /**
3
- * `wstack bench` — run model-independent agentic benchmarks (local manifests,
4
- * Aider polyglot, SWE-bench Verified) with deterministic graders and a harness
5
- * fingerprint.
3
+ * `wstack bench` — run model-independent agentic benchmarks (bundled smoke,
4
+ * local manifests, Aider polyglot, SWE-bench Verified) with deterministic
5
+ * graders and a harness fingerprint.
6
6
  *
7
- * wstack bench run --suite <id> --models <config> [...]
8
- * wstack bench mine --transcript <session.jsonl> [--out <eval-dir>]
9
- * wstack bench report <dir>
10
- * wstack bench list [--models <config>]
7
+ * wstack bench run --suite <id> [--cell spec | --models config] [...]
8
+ * wstack bench mine --transcript <session.jsonl> [--out <eval-dir>]
9
+ * wstack bench report <dir>
10
+ * wstack bench compare <baseline-dir> <candidate-dir>
11
+ * wstack bench list [--models <config>]
11
12
  */
12
13
  export declare const benchCmd: SubcommandHandler;
13
14
  //# sourceMappingURL=bench.d.ts.map
@@ -0,0 +1,9 @@
1
+ import {
2
+ subcommandNames,
3
+ subcommands
4
+ } from "./chunk-ETYHZPXP.js";
5
+ export {
6
+ subcommandNames,
7
+ subcommands
8
+ };
9
+ //# sourceMappingURL=subcommands-HZQKA4G2.js.map
@@ -1,4 +1,3 @@
1
- import "./chunk-7OCVIDC7.js";
2
1
 
3
2
  // src/subcommands/handlers/tools-skills.ts
4
3
  import { color } from "@wrongstack/core/utils";
@@ -26,4 +25,4 @@ export {
26
25
  skillsCmd,
27
26
  toolsCmd
28
27
  };
29
- //# sourceMappingURL=tools-skills-Q4P27URS.js.map
28
+ //# sourceMappingURL=tools-skills-GH24UCBY.js.map
@@ -6,11 +6,10 @@ import {
6
6
  } from "./chunk-DE7BZDNK.js";
7
7
  import "./chunk-U3SS4NRH.js";
8
8
  import "./chunk-YLQEGYV4.js";
9
- import "./chunk-7OCVIDC7.js";
10
9
  export {
11
10
  detectUpdatePackageManager,
12
11
  detectUpdatePackageName,
13
12
  runUpdateCommand,
14
13
  updateCmd
15
14
  };
16
- //# sourceMappingURL=update-K45CS6SS.js.map
15
+ //# sourceMappingURL=update-5DPB4YD4.js.map
@@ -6,7 +6,6 @@ import {
6
6
  getUpdateNotification,
7
7
  isNewer
8
8
  } from "./chunk-YLQEGYV4.js";
9
- import "./chunk-7OCVIDC7.js";
10
9
  export {
11
10
  cachePath,
12
11
  checkForUpdate,
@@ -15,4 +14,4 @@ export {
15
14
  getUpdateNotification,
16
15
  isNewer
17
16
  };
18
- //# sourceMappingURL=update-check-PKSMSMD6.js.map
17
+ //# sourceMappingURL=update-check-BS3DHTSI.js.map
@@ -0,0 +1,10 @@
1
+ import {
2
+ helpCmd,
3
+ versionCmd
4
+ } from "./chunk-FPIWTJ2G.js";
5
+ import "./chunk-XJXDOF63.js";
6
+ export {
7
+ helpCmd,
8
+ versionCmd
9
+ };
10
+ //# sourceMappingURL=version-help-MYKF724O.js.map
@@ -1,7 +1,9 @@
1
1
  import { type HqCommandController } from '../hq-command-controller.js';
2
2
  export interface WebuiHqControlHooks {
3
- interruptLeader: () => boolean;
3
+ interruptLeader: (sessionId?: string) => boolean;
4
4
  allowRunCommand: () => boolean;
5
+ /** Does this host currently own the named session (an open tab)? */
6
+ ownsSession?: ((sessionId: string) => boolean) | undefined;
5
7
  spawnAgent?: HqCommandController['spawnAgent'];
6
8
  killFleet?: HqCommandController['killFleet'];
7
9
  terminateAgent?: HqCommandController['terminateAgent'];
@@ -12,6 +14,12 @@ export interface WebuiClientRegistrationDeps {
12
14
  events: import('@wrongstack/core/kernel').EventBus;
13
15
  hqSessionId: string;
14
16
  getSessionId: () => string;
17
+ /** Session ids the connected browsers display — one per open tab. */
18
+ listSessions?: (() => readonly string[]) | undefined;
19
+ /** Sessions another publisher in this process already announces to HQ. */
20
+ isSessionOwnedElsewhere?: ((sessionId: string) => boolean) | undefined;
21
+ /** A tab's own session writer, so HQ streams its turns without a disk tail. */
22
+ getSessionWriter?: ((sessionId: string) => import('@wrongstack/core/types').SessionWriter | undefined) | undefined;
15
23
  hqControl?: WebuiHqControlHooks | undefined;
16
24
  }
17
25
  export interface WebuiClientRegistration {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createHqCommandDispatcher
3
- } from "./chunk-7YLN7YUA.js";
3
+ } from "./chunk-IMWXXF4J.js";
4
4
  import {
5
5
  WEBUI_SESSION_CHILD_CAPABILITIES
6
6
  } from "./chunk-GPPRNAKW.js";
@@ -9,12 +9,11 @@ import {
9
9
  } from "./chunk-VCYZ3WZV.js";
10
10
  import {
11
11
  startCliHqConnection
12
- } from "./chunk-XYKYXFEE.js";
12
+ } from "./chunk-TE3Q32JP.js";
13
13
  import {
14
14
  loadConfigProviders,
15
15
  mutateConfigProviders
16
- } from "./chunk-XPX432BZ.js";
17
- import "./chunk-7OCVIDC7.js";
16
+ } from "./chunk-DR2OXU46.js";
18
17
 
19
18
  // src/webui-server.ts
20
19
  import * as path7 from "node:path";
@@ -41,6 +40,7 @@ import {
41
40
  resolvePendingConfirmsForSession,
42
41
  scheduleOwnerlessEmptySessionCleanup,
43
42
  sendSerialized,
43
+ stampDispatchSession,
44
44
  startTerminalDashboard,
45
45
  startWebUILiveStatusLogger,
46
46
  toSessionHistoryEntries
@@ -48,6 +48,7 @@ import {
48
48
  import { WebSocketServer } from "ws";
49
49
 
50
50
  // src/webui-server/client-registration.ts
51
+ import { mailboxSessionTag } from "@wrongstack/core/coordination";
51
52
  import { createWebuiClientPresence } from "@wrongstack/webui-server";
52
53
  function createWebuiClientRegistration(deps) {
53
54
  const control = deps.hqControl;
@@ -57,6 +58,9 @@ function createWebuiClientRegistration(deps) {
57
58
  events: deps.events,
58
59
  hqSessionId: deps.hqSessionId,
59
60
  getSessionId: deps.getSessionId,
61
+ ...deps.listSessions ? { listSessions: deps.listSessions } : {},
62
+ ...deps.isSessionOwnedElsewhere ? { isSessionOwnedElsewhere: deps.isSessionOwnedElsewhere } : {},
63
+ ...deps.getSessionWriter ? { getSessionWriter: deps.getSessionWriter } : {},
60
64
  startHqConnection: (options) => startCliHqConnection({
61
65
  ...options,
62
66
  capabilities: options.capabilities
@@ -66,7 +70,17 @@ function createWebuiClientRegistration(deps) {
66
70
  steerMailbox: mailbox,
67
71
  interruptLeader: control.interruptLeader,
68
72
  allowRunCommand: control.allowRunCommand,
69
- sessionTag: deps.getSessionId,
73
+ // The session HQ actually SHOWS for this client — the boot
74
+ // session the telemetry bridge publishes under and the only one
75
+ // `interruptLeader` speaks for. `getSessionId` follows whichever
76
+ // browser tab is in front, which is a different session HQ has
77
+ // no view of and cannot control.
78
+ sessionTag: () => mailboxSessionTag(deps.hqSessionId),
79
+ // The session HQ falls back to when a command names none — the
80
+ // boot tab. A command that DOES name one is honoured (and
81
+ // refused when this host no longer has it) via `ownsSession`.
82
+ sessionId: () => deps.hqSessionId,
83
+ ...control.ownsSession ? { ownsSession: control.ownsSession } : {},
70
84
  ...control.spawnAgent ? { spawnAgent: control.spawnAgent } : {},
71
85
  ...control.killFleet ? { killFleet: control.killFleet } : {},
72
86
  ...control.terminateAgent ? { terminateAgent: control.terminateAgent } : {}
@@ -1175,7 +1189,7 @@ function createSessionStartPayloadBuilder(deps) {
1175
1189
  }
1176
1190
 
1177
1191
  // src/webui-server/setup-events.ts
1178
- import { mailboxSessionTag } from "@wrongstack/core/coordination";
1192
+ import { mailboxSessionTag as mailboxSessionTag2 } from "@wrongstack/core/coordination";
1179
1193
  import {
1180
1194
  createEternalSubscription,
1181
1195
  setupEvents as setupCanonicalEvents
@@ -1246,7 +1260,7 @@ function createSetupEvents(deps) {
1246
1260
  type: "subagent.event",
1247
1261
  payload: deps.sessionPayload({
1248
1262
  kind: "leader_updated",
1249
- subagentId: `leader@${mailboxSessionTag(deps.currentSessionId())}`,
1263
+ subagentId: `leader@${mailboxSessionTag2(deps.currentSessionId())}`,
1250
1264
  isLeader: true,
1251
1265
  name: "Leader",
1252
1266
  status: "running"
@@ -1303,7 +1317,9 @@ async function runWebUI(opts) {
1303
1317
  const terminalLogView = startTerminalDashboard({
1304
1318
  title: surface === "simpleui" ? "SimpleUI" : "WebUI",
1305
1319
  quiet: !envFlag("WEBUI_LOGS"),
1306
- getUrl: () => `http://${host}:${httpPort}`
1320
+ // The dashboard is operator-owned terminal output, so retain the full
1321
+ // authenticated access URL here even though startup logs remain redacted.
1322
+ getUrl: () => accessUrl
1307
1323
  });
1308
1324
  const strictPort = opts.strictPort ?? isStrictPort();
1309
1325
  let httpPort = requestedHttpPort;
@@ -1389,6 +1405,23 @@ async function runWebUI(opts) {
1389
1405
  events: opts.events,
1390
1406
  hqSessionId: opts.session.id,
1391
1407
  getSessionId: () => opts.agent.ctx.session?.id ?? opts.session.id,
1408
+ // One HQ session per open tab. The set is the same one the terminal
1409
+ // panel lists: every session a connected browser is displaying.
1410
+ listSessions: () => {
1411
+ const ids = /* @__PURE__ */ new Set();
1412
+ for (const client of clients.values()) {
1413
+ if (client.sessionId) ids.add(client.sessionId);
1414
+ for (const id of client.sessionIds ?? []) ids.add(id);
1415
+ }
1416
+ return [...ids];
1417
+ },
1418
+ // `cli-main` already runs a tracker and a bridge for the boot session.
1419
+ // Announcing it here too would put two trackers on one bus flushing the
1420
+ // same agent list.
1421
+ isSessionOwnedElsewhere: (sessionId) => sessionId === opts.session.id,
1422
+ // The tab's own journal, so HQ takes its turns from the write path
1423
+ // instead of tailing the file.
1424
+ getSessionWriter: (sessionId) => sessionAgentsRef?.peek(sessionId)?.ctx.session,
1392
1425
  hqControl: {
1393
1426
  // HQ speaks for the LEADER — the boot session, the one it registered
1394
1427
  // itself under (`hqSessionId`) — not for whatever else the browser
@@ -1397,8 +1430,12 @@ async function runWebUI(opts) {
1397
1430
  // the three other tabs' in-flight runs. Deleting the entries was
1398
1431
  // wrong on its own terms too: the run's own `end()` owns removal, and
1399
1432
  // clearing early makes `isRunActive` lie to every tab still running.
1400
- interruptLeader: () => {
1401
- const leaderId = opts.session.id;
1433
+ // Every open tab is its own session with its own abort controller, so
1434
+ // the command's session is the one that gets stopped. Falling back to
1435
+ // the boot session keeps a dashboard that sends no session — every one
1436
+ // before this existed — behaving exactly as before.
1437
+ interruptLeader: (sessionId) => {
1438
+ const leaderId = sessionId ?? opts.session.id;
1402
1439
  const controller = abortControllers.get(leaderId);
1403
1440
  if (!controller) return false;
1404
1441
  controller.abort();
@@ -1408,7 +1445,11 @@ async function runWebUI(opts) {
1408
1445
  }
1409
1446
  return true;
1410
1447
  },
1411
- allowRunCommand: () => opts.hqAllowExec === true
1448
+ allowRunCommand: () => opts.hqAllowExec === true,
1449
+ // A command naming a tab this process no longer holds is refused, not
1450
+ // redirected onto the boot session: the operator picked a terminal,
1451
+ // and steering a different one is worse than not steering at all.
1452
+ ownsSession: (sessionId) => sessionId === opts.session.id || sessionAgentsRef?.has(sessionId) === true
1412
1453
  }
1413
1454
  });
1414
1455
  registerWebuiClient();
@@ -1888,7 +1929,7 @@ async function runWebUI(opts) {
1888
1929
  registerWebuiSignalHandlers(signalShutdown);
1889
1930
  });
1890
1931
  function send(ws, msg) {
1891
- sendSerialized(ws, JSON.stringify(msg));
1932
+ sendSerialized(ws, JSON.stringify(stampDispatchSession(msg)));
1892
1933
  }
1893
1934
  function broadcast(msg, targetSessionId) {
1894
1935
  const data = JSON.stringify(msg);
@@ -1910,4 +1951,4 @@ async function runWebUI(opts) {
1910
1951
  export {
1911
1952
  runWebUI
1912
1953
  };
1913
- //# sourceMappingURL=webui-server-SY4EQCKD.js.map
1954
+ //# sourceMappingURL=webui-server-T6AMOXJJ.js.map
@@ -67,6 +67,8 @@ interface BrainOrchestrationDeps {
67
67
  interface BrainOrchestrationResult {
68
68
  brain: ObservableBrainArbiter;
69
69
  brainLog: AnyObj[];
70
+ /** Session-lifetime per-tier decision tally for `/brain stats`. */
71
+ brainTierStats: () => import('@wrongstack/core/coordination').BrainTierStats;
70
72
  brainSettings: BrainRuntimeSettings;
71
73
  /** Live-editable Brain config owner (apply = live + persist-to-global). */
72
74
  brainRuntime: BrainRuntime;
@@ -54,6 +54,7 @@ export declare function runCliExecution(params: {
54
54
  resolvedProvider: X['provider']['resolvedProvider'];
55
55
  logger: Logger;
56
56
  switchProviderAndModel: X['provider']['switchProviderAndModel'];
57
+ reloadProviderConfig: () => Promise<void>;
57
58
  applyMaxContext: NonNullable<X['provider']['onModelContextResolved']>;
58
59
  renderer: X['ui']['renderer'];
59
60
  reader: X['ui']['reader'];
@@ -86,6 +87,9 @@ export declare function runCliExecution(params: {
86
87
  statuslineLines?: RC['statuslineLines'];
87
88
  setStatuslineLines?: NonNullable<RC['setStatuslineLines']>;
88
89
  saveStatuslineLines?: NonNullable<RC['saveStatuslineLines']>;
90
+ statuslineDensities?: RC['statuslineDensities'];
91
+ setStatuslineDensities?: NonNullable<RC['setStatuslineDensities']>;
92
+ saveStatuslineDensities?: NonNullable<RC['saveStatuslineDensities']>;
89
93
  setYoloMode: NonNullable<RC['getYolo']>;
90
94
  autonomyMode: ReturnType<RC['getAutonomy']>;
91
95
  setAutonomyMode: NonNullable<RC['setAutonomy']>;
@@ -62,6 +62,7 @@ export declare function setupCliSlashCommands(params: {
62
62
  brainSettings: B['brainSettings'];
63
63
  brainRuntime: B['brainRuntime'];
64
64
  initialBrainLog: ReturnType<NonNullable<B['getBrainLog']>>;
65
+ brainTierStats: NonNullable<B['brainTierStats']>;
65
66
  coordinatorController: B['coordinatorController'];
66
67
  statusTracker: B['statusTracker'];
67
68
  shadowController: B['shadowController'];
@@ -1,6 +1,7 @@
1
1
  /** Mutable command-host state created after the runtime fleet is available. */
2
2
  import { type BrainArbiter, type Director } from '@wrongstack/core/coordination';
3
3
  import type { EventBus } from '@wrongstack/core/kernel';
4
+ import type { StatuslineDensities, StatuslineLines } from '@wrongstack/core/statusline';
4
5
  import { type Config, type SessionWriter } from '@wrongstack/core/types';
5
6
  import type { WstackPaths } from '@wrongstack/core/utils';
6
7
  import { SddRunRegistry } from '@wrongstack/sdd';
@@ -8,7 +9,6 @@ import type { HqCommandController } from '../hq-command-controller.js';
8
9
  import type { ReadlineInputReader } from '../input-reader.js';
9
10
  import type { MultiAgentHost } from '../multi-agent.js';
10
11
  import type { TerminalRenderer } from '../renderer.js';
11
- import type { StatuslineLines } from '@wrongstack/core/statusline';
12
12
  interface CommandHostStateInput {
13
13
  getConfig: () => Config;
14
14
  setConfig: (config: Config) => void;
@@ -44,10 +44,10 @@ export declare function setupCommandHostState(input: CommandHostStateInput): Pro
44
44
  interruptController: import("./controllers.js").InterruptController;
45
45
  enhanceController: import("./controllers.js").EnhanceController;
46
46
  statuslineConfigDeps: import("./controllers.js").StatuslineConfigDeps;
47
- statuslineHiddenItems: ("auto_proceed" | "autonomy" | "brain" | "breaker" | "cache" | "context" | "cost" | "debug_stream" | "dropped_tools" | "elapsed" | "enhance" | "eternal_stage" | "fleet" | "fleet_agents" | "git" | "goal" | "hint" | "index" | "mailbox" | "memory_context" | "mode" | "model" | "next_steps" | "plan" | "processes" | "project" | "prompt_variant" | "queue" | "sessions" | "side_effects" | "state" | "tasks" | "theme" | "todos" | "token_saving" | "tokens" | "tools" | "version" | "working_dir" | "yolo")[];
48
- getCurrentHiddenItems: () => ("auto_proceed" | "autonomy" | "brain" | "breaker" | "cache" | "context" | "cost" | "debug_stream" | "dropped_tools" | "elapsed" | "enhance" | "eternal_stage" | "fleet" | "fleet_agents" | "git" | "goal" | "hint" | "index" | "mailbox" | "memory_context" | "mode" | "model" | "next_steps" | "plan" | "processes" | "project" | "prompt_variant" | "queue" | "sessions" | "side_effects" | "state" | "tasks" | "theme" | "todos" | "token_saving" | "tokens" | "tools" | "version" | "working_dir" | "yolo")[];
49
- setStatuslineHiddenItems: (items: ("auto_proceed" | "autonomy" | "brain" | "breaker" | "cache" | "context" | "cost" | "debug_stream" | "dropped_tools" | "elapsed" | "enhance" | "eternal_stage" | "fleet" | "fleet_agents" | "git" | "goal" | "hint" | "index" | "mailbox" | "memory_context" | "mode" | "model" | "next_steps" | "plan" | "processes" | "project" | "prompt_variant" | "queue" | "sessions" | "side_effects" | "state" | "tasks" | "theme" | "todos" | "token_saving" | "tokens" | "tools" | "version" | "working_dir" | "yolo")[]) => void;
50
- saveStatuslineHiddenItems: (items: ("auto_proceed" | "autonomy" | "brain" | "breaker" | "cache" | "context" | "cost" | "debug_stream" | "dropped_tools" | "elapsed" | "enhance" | "eternal_stage" | "fleet" | "fleet_agents" | "git" | "goal" | "hint" | "index" | "mailbox" | "memory_context" | "mode" | "model" | "next_steps" | "plan" | "processes" | "project" | "prompt_variant" | "queue" | "sessions" | "side_effects" | "state" | "tasks" | "theme" | "todos" | "token_saving" | "tokens" | "tools" | "version" | "working_dir" | "yolo")[]) => Promise<void>;
47
+ statuslineHiddenItems: import("@wrongstack/core/statusline").StatuslineItem[];
48
+ getCurrentHiddenItems: () => import("@wrongstack/core/statusline").StatuslineItem[];
49
+ setStatuslineHiddenItems: (items: import("@wrongstack/core/statusline").StatuslineItem[]) => void;
50
+ saveStatuslineHiddenItems: (items: import("@wrongstack/core/statusline").StatuslineItem[]) => Promise<void>;
51
51
  statuslineLines: {
52
52
  auto_proceed?: import("@wrongstack/core/statusline").StatuslineLine;
53
53
  autonomy?: import("@wrongstack/core/statusline").StatuslineLine;
@@ -93,6 +93,51 @@ export declare function setupCommandHostState(input: CommandHostStateInput): Pro
93
93
  getCurrentStatuslineLines: () => Partial<Record<import("@wrongstack/core/statusline").StatuslineItem, import("@wrongstack/core/statusline").StatuslineLine>>;
94
94
  setStatuslineLines: (next: StatuslineLines) => void;
95
95
  saveStatuslineLines: (next: StatuslineLines) => Promise<void>;
96
+ statuslineDensities: {
97
+ auto_proceed?: import("@wrongstack/core/statusline").StatuslineDensity;
98
+ autonomy?: import("@wrongstack/core/statusline").StatuslineDensity;
99
+ brain?: import("@wrongstack/core/statusline").StatuslineDensity;
100
+ breaker?: import("@wrongstack/core/statusline").StatuslineDensity;
101
+ cache?: import("@wrongstack/core/statusline").StatuslineDensity;
102
+ context?: import("@wrongstack/core/statusline").StatuslineDensity;
103
+ cost?: import("@wrongstack/core/statusline").StatuslineDensity;
104
+ debug_stream?: import("@wrongstack/core/statusline").StatuslineDensity;
105
+ dropped_tools?: import("@wrongstack/core/statusline").StatuslineDensity;
106
+ elapsed?: import("@wrongstack/core/statusline").StatuslineDensity;
107
+ enhance?: import("@wrongstack/core/statusline").StatuslineDensity;
108
+ eternal_stage?: import("@wrongstack/core/statusline").StatuslineDensity;
109
+ fleet?: import("@wrongstack/core/statusline").StatuslineDensity;
110
+ fleet_agents?: import("@wrongstack/core/statusline").StatuslineDensity;
111
+ git?: import("@wrongstack/core/statusline").StatuslineDensity;
112
+ goal?: import("@wrongstack/core/statusline").StatuslineDensity;
113
+ hint?: import("@wrongstack/core/statusline").StatuslineDensity;
114
+ index?: import("@wrongstack/core/statusline").StatuslineDensity;
115
+ mailbox?: import("@wrongstack/core/statusline").StatuslineDensity;
116
+ memory_context?: import("@wrongstack/core/statusline").StatuslineDensity;
117
+ mode?: import("@wrongstack/core/statusline").StatuslineDensity;
118
+ model?: import("@wrongstack/core/statusline").StatuslineDensity;
119
+ next_steps?: import("@wrongstack/core/statusline").StatuslineDensity;
120
+ plan?: import("@wrongstack/core/statusline").StatuslineDensity;
121
+ processes?: import("@wrongstack/core/statusline").StatuslineDensity;
122
+ project?: import("@wrongstack/core/statusline").StatuslineDensity;
123
+ prompt_variant?: import("@wrongstack/core/statusline").StatuslineDensity;
124
+ queue?: import("@wrongstack/core/statusline").StatuslineDensity;
125
+ sessions?: import("@wrongstack/core/statusline").StatuslineDensity;
126
+ side_effects?: import("@wrongstack/core/statusline").StatuslineDensity;
127
+ state?: import("@wrongstack/core/statusline").StatuslineDensity;
128
+ tasks?: import("@wrongstack/core/statusline").StatuslineDensity;
129
+ theme?: import("@wrongstack/core/statusline").StatuslineDensity;
130
+ todos?: import("@wrongstack/core/statusline").StatuslineDensity;
131
+ token_saving?: import("@wrongstack/core/statusline").StatuslineDensity;
132
+ tokens?: import("@wrongstack/core/statusline").StatuslineDensity;
133
+ tools?: import("@wrongstack/core/statusline").StatuslineDensity;
134
+ version?: import("@wrongstack/core/statusline").StatuslineDensity;
135
+ working_dir?: import("@wrongstack/core/statusline").StatuslineDensity;
136
+ yolo?: import("@wrongstack/core/statusline").StatuslineDensity;
137
+ };
138
+ getCurrentStatuslineDensities: () => Partial<Record<import("@wrongstack/core/statusline").StatuslineItem, import("@wrongstack/core/statusline").StatuslineDensity>>;
139
+ setStatuslineDensities: (next: StatuslineDensities) => void;
140
+ saveStatuslineDensities: (next: StatuslineDensities) => Promise<void>;
96
141
  agentsMonitorController: import("./controllers.js").AgentsMonitorController;
97
142
  onPanelOpen: {
98
143
  current: ((action: string) => boolean) | null;
@@ -25,6 +25,15 @@
25
25
  * First-party/built-in plugins never enter this module.
26
26
  */
27
27
  import type { Config, Logger, Plugin } from '@wrongstack/core/types';
28
+ /** Policy for the external-plugin trust gate. See FeaturesConfig.pluginsTrust. */
29
+ export type ExternalPluginTrustMode = 'off' | 'required' | 'tofu' | 'advisory';
30
+ /**
31
+ * Resolve the trust mode from config. `true`, `undefined`, and `'tofu'` all
32
+ * map to the documented default (trust on first use); `false` skips the
33
+ * gate; unknown strings fall back to the default rather than inventing
34
+ * behavior.
35
+ */
36
+ export declare function resolveExternalPluginTrustMode(raw: boolean | string | undefined): ExternalPluginTrustMode;
28
37
  /** Resolve a `file:` URL / absolute / relative path to an absolute fs path. */
29
38
  export declare function normalizeConfigPath(raw: string, projectRoot: string): string;
30
39
  /**
@@ -62,6 +62,8 @@ interface ProviderRuntimeResult {
62
62
  refreshMaxContextFor: (providerId: string, modelId: string) => Promise<void>;
63
63
  refreshRuntimeModelStateFor: (providerId: string, modelId: string) => Promise<void>;
64
64
  switchProviderAndModel: (providerId: string, modelId: string) => Promise<string | null>;
65
+ /** Immediately apply the same merged snapshot used by the file watcher. */
66
+ reloadProviderConfig: () => Promise<void>;
65
67
  }
66
68
  /**
67
69
  * Wire runtime provider-config helpers, fallback model extension,
@@ -22,6 +22,9 @@ interface RuntimeControllerDepsInput {
22
22
  statuslineLines?: ControllerDeps['statuslineLines'];
23
23
  setStatuslineLines?: ControllerDeps['setStatuslineLines'];
24
24
  saveStatuslineLines?: ControllerDeps['saveStatuslineLines'];
25
+ statuslineDensities?: ControllerDeps['statuslineDensities'];
26
+ setStatuslineDensities?: ControllerDeps['setStatuslineDensities'];
27
+ saveStatuslineDensities?: ControllerDeps['saveStatuslineDensities'];
25
28
  getYolo: NonNullable<ControllerDeps['getYolo']>;
26
29
  onYolo: NonNullable<ControllerDeps['onYolo']>;
27
30
  getAutonomy: () => AutonomyMode;
@@ -1,10 +1,22 @@
1
1
  import type { MemoryPort } from '@wrongstack/core/types';
2
2
  import { VectorMemoryStore } from '@wrongstack/vector-memory';
3
+ /** Subset of `Config['Sage']['vector']` this phase reads. */
4
+ export interface VectorMemoryTuning {
5
+ enabled?: boolean | undefined;
6
+ weight?: number | undefined;
7
+ threshold?: number | undefined;
8
+ vectorOnlyThreshold?: number | undefined;
9
+ maxMaterializations?: number | undefined;
10
+ }
11
+ /** Weight of the semantic channel in the RRF blend when config says nothing. */
12
+ export declare const DEFAULT_VECTOR_WEIGHT = 0.3;
3
13
  interface VectorMemoryArgs {
4
14
  projectRoot: string;
5
15
  flags: {
6
16
  'vector-sync'?: unknown;
7
17
  };
18
+ /** `config.Sage?.vector`. Omitted = every default applies. */
19
+ tuning?: VectorMemoryTuning | undefined;
8
20
  logger: {
9
21
  warn: (message: string) => void;
10
22
  info: (message: string) => void;
@@ -8,6 +8,6 @@
8
8
  * working unchanged through this shim. NOTE: this is NOT core/utils'
9
9
  * `withFileLock` (a local file lock) — same name, different mechanism.
10
10
  */
11
- export { getWrongTrace, preflightFileEdit, resetWrongTraceGate, withFileLock, } from "@wrongstack/wrongtrace";
12
- export type { PreflightOptions, PreflightVerdict } from "@wrongstack/wrongtrace";
11
+ export { getWrongTrace, preflightFileEdit, resetWrongTraceGate, withFileLock, } from '@wrongstack/wrongtrace';
12
+ export type { PreflightOptions, PreflightVerdict } from '@wrongstack/wrongtrace';
13
13
  //# sourceMappingURL=wrongtrace-gate.d.ts.map
@@ -4,5 +4,5 @@
4
4
  * shared by every host process that executes tools.
5
5
  */
6
6
  export { createWrongTraceHookPair } from '@wrongstack/wrongtrace';
7
- export type { WrongTraceGateDecisionEvent, WrongTraceHookInput, WrongTraceHookOptions, WrongTraceHookPair, WrongTracePreToolUseOutcome, } from "@wrongstack/wrongtrace";
7
+ export type { WrongTraceGateDecisionEvent, WrongTraceHookInput, WrongTraceHookOptions, WrongTraceHookPair, WrongTracePreToolUseOutcome, } from '@wrongstack/wrongtrace';
8
8
  //# sourceMappingURL=wrongtrace-hooks.d.ts.map
@@ -14,10 +14,13 @@
14
14
  * - Registered in `bindSystemPromptBuilder`'s contributors array, after
15
15
  * the ETERNAL AUTONOMY contributor (registration order is preserved).
16
16
  */
17
- import type { SystemPromptContributor } from '@wrongstack/core/types';
17
+ import type { SystemPromptContributor, TokenSavingTier } from '@wrongstack/core/types';
18
+ export interface WrongTracePromptContributorOptions {
19
+ tokenSavingMode?: TokenSavingTier | boolean | undefined;
20
+ }
18
21
  /**
19
22
  * Build the contributor. Fresh instance per `bindSystemPromptBuilder` call
20
23
  * (i.e. per process); cheap since the gate singleton is process-shared.
21
24
  */
22
- export declare function createWrongTracePromptContributor(): SystemPromptContributor;
25
+ export declare function createWrongTracePromptContributor(options?: WrongTracePromptContributorOptions): SystemPromptContributor;
23
26
  //# sourceMappingURL=wrongtrace-prompt-contributor.d.ts.map
@@ -7,8 +7,7 @@ import {
7
7
  recordGateDecision,
8
8
  resetGateDecisions,
9
9
  snapshotGateDecisions
10
- } from "./chunk-7CECQDNH.js";
11
- import "./chunk-7OCVIDC7.js";
10
+ } from "./chunk-D3K4NYQL.js";
12
11
  export {
13
12
  countersFilePath,
14
13
  createWrongTraceGateCounter,
@@ -19,4 +18,4 @@ export {
19
18
  resetGateDecisions,
20
19
  snapshotGateDecisions
21
20
  };
22
- //# sourceMappingURL=wrongtrace-gate-counters-P5BCBXQN.js.map
21
+ //# sourceMappingURL=wrongtrace-gate-counters-7C2EAAZL.js.map