@wrongstack/cli 1.0.3 → 1.0.4

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 (74) hide show
  1. package/dist/{acp-JK4ZQO3R.js → acp-AB54FWM2.js} +120 -38
  2. package/dist/acp-agent-list.d.ts +14 -0
  3. package/dist/acp-hq-telemetry.d.ts +9 -2
  4. package/dist/acp-mcp-servers.d.ts +49 -0
  5. package/dist/acp-server-agent.d.ts +18 -6
  6. package/dist/{auth-XD3GN5RJ.js → auth-WDMSNZ3S.js} +2 -2
  7. package/dist/boot/short-circuit-hq.d.ts +2 -0
  8. package/dist/boot/tool-registry.d.ts +18 -1
  9. package/dist/{chunk-C2E24IXZ.js → chunk-3I5ZJXM5.js} +147 -241
  10. package/dist/{chunk-JHPXJRRI.js → chunk-4XCBEUBX.js} +13 -3
  11. package/dist/{chunk-FPIWTJ2G.js → chunk-6WRKAACA.js} +4 -4
  12. package/dist/chunk-AUQDGU5D.js +32 -0
  13. package/dist/{chunk-IUEKNHPT.js → chunk-BIWE22O5.js} +10 -10
  14. package/dist/{chunk-VOTTENR5.js → chunk-CDY4D5QK.js} +2 -2
  15. package/dist/{chunk-E6RFXHWD.js → chunk-EK2P53GL.js} +3 -2
  16. package/dist/chunk-I7V2OYVH.js +242 -0
  17. package/dist/{chunk-MXEJEYT7.js → chunk-JX6KL7OF.js} +15 -5
  18. package/dist/{chunk-GMY45LO6.js → chunk-KEPABQYT.js} +101 -2
  19. package/dist/{chunk-IMWXXF4J.js → chunk-KNMIBKLV.js} +79 -1
  20. package/dist/chunk-Q7E3BPDU.js +62 -0
  21. package/dist/{chunk-4NHD5OXJ.js → chunk-U6PGWDMZ.js} +5 -5
  22. package/dist/{chunk-U6KCWRMC.js → chunk-XJ7K67PP.js} +5 -1
  23. package/dist/{cli-context-Q6QP534K.js → cli-context-WFC3BNGM.js} +116 -21
  24. package/dist/{cli-main-JQXCDZEA.js → cli-main-GU3YZLMO.js} +1221 -694
  25. package/dist/{diag-doctor-7LYUYU35.js → diag-doctor-PCER6KHH.js} +2 -2
  26. package/dist/{execution-KH7WJNAX.js → execution-RAZDDQFC.js} +107 -15
  27. package/dist/execution-specialist-trigger.d.ts +28 -0
  28. package/dist/fleet/acp-live-progress.d.ts +19 -0
  29. package/dist/fleet/host-acp-runner-cache.d.ts +3 -1
  30. package/dist/fleet/host-acp.d.ts +14 -2
  31. package/dist/fleet/host.d.ts +1 -0
  32. package/dist/{hq-IG3YRGCO.js → hq-5XHEIIH6.js} +127 -8
  33. package/dist/hq-command-controller.d.ts +31 -2
  34. package/dist/hq-server/client-address.d.ts +2 -0
  35. package/dist/hq-server/ip-allowlist.d.ts +16 -0
  36. package/dist/hq-server/preflight.d.ts +1 -0
  37. package/dist/hq-server/routes/auth/password-routes.d.ts +1 -1
  38. package/dist/hq-server/routes.d.ts +5 -4
  39. package/dist/hq-server/secret-input.d.ts +7 -0
  40. package/dist/hq-server/types.d.ts +3 -2
  41. package/dist/hq-server/upgrade-handler.d.ts +2 -0
  42. package/dist/hq-server/utils.d.ts +6 -0
  43. package/dist/{hq-server-OILU3NPI.js → hq-server-CNUTBWTK.js} +4 -3
  44. package/dist/hq-server.d.ts +4 -0
  45. package/dist/hq-service-L5INQFM4.js +507 -0
  46. package/dist/hq-service.d.ts +22 -0
  47. package/dist/index.js +4 -4
  48. package/dist/ip-allowlist-NHXO6AKJ.js +9 -0
  49. package/dist/live-settings-input.d.ts +2 -0
  50. package/dist/{per-subcommand-help-BWBHYVJO.js → per-subcommand-help-DHTYU524.js} +2 -2
  51. package/dist/{plugins-U7KGQAUG.js → plugins-WJLW6ULV.js} +2 -2
  52. package/dist/projects-LMNAGGEU.js +36 -0
  53. package/dist/{proxy-wiring-MGRSKZZB.js → proxy-wiring-K2DORFFL.js} +3 -3
  54. package/dist/short-circuit-flags-YDMLAQ5R.js +10 -0
  55. package/dist/slash-commands/acp.d.ts +3 -0
  56. package/dist/slash-commands/command-context.d.ts +22 -0
  57. package/dist/slash-commands/ensemble.d.ts +1 -1
  58. package/dist/slash-commands/profile.d.ts +7 -0
  59. package/dist/subcommands/handlers/hq.d.ts +1 -0
  60. package/dist/subcommands/handlers/projects.d.ts +14 -0
  61. package/dist/{subcommands-CUTGBDKP.js → subcommands-7N4RIK6H.js} +2 -2
  62. package/dist/{version-help-MYKF724O.js → version-help-WXI42PZ3.js} +2 -2
  63. package/dist/{webui-server-QWBUT7BO.js → webui-server-OBV5JYJV.js} +9 -3
  64. package/dist/wiring/cli-slash-commands-setup.d.ts +7 -0
  65. package/dist/wiring/codebase-embeddings.d.ts +2 -2
  66. package/dist/wiring/command-host-state.d.ts +7 -0
  67. package/dist/wiring/pipeline.d.ts +2 -0
  68. package/dist/wiring/provider-runtime-setup.d.ts +1 -1
  69. package/dist/wiring/session-command-handlers.d.ts +2 -1
  70. package/dist/wiring/slash-commands.d.ts +1 -0
  71. package/package.json +28 -28
  72. package/dist/chunk-Q5GTM25S.js +0 -17
  73. package/dist/projects-L6C6XLDY.js +0 -37
  74. package/dist/short-circuit-flags-ZNZX44MC.js +0 -10
@@ -6,7 +6,7 @@ import {
6
6
  pluginNameFromSpec,
7
7
  setupPlugins,
8
8
  warnIfDeprecatedPluginName
9
- } from "./chunk-U6KCWRMC.js";
9
+ } from "./chunk-XJ7K67PP.js";
10
10
  import "./chunk-EWKESL4L.js";
11
11
  import "./chunk-SIS37L3W.js";
12
12
  export {
@@ -18,4 +18,4 @@ export {
18
18
  setupPlugins,
19
19
  warnIfDeprecatedPluginName
20
20
  };
21
- //# sourceMappingURL=plugins-U7KGQAUG.js.map
21
+ //# sourceMappingURL=plugins-WJLW6ULV.js.map
@@ -0,0 +1,36 @@
1
+
2
+ // src/subcommands/handlers/projects.ts
3
+ import * as fs from "node:fs/promises";
4
+ import * as path from "node:path";
5
+ import { color } from "@wrongstack/core/utils";
6
+ var projectsCmd = async (_args, deps) => {
7
+ const manifestPath = path.join(deps.paths.globalRoot, "projects.json");
8
+ let entries;
9
+ try {
10
+ const parsed = JSON.parse(await fs.readFile(manifestPath, "utf8"));
11
+ entries = Array.isArray(parsed.projects) ? parsed.projects : [];
12
+ } catch {
13
+ deps.renderer.write("No projects tracked yet.\n");
14
+ return 0;
15
+ }
16
+ if (entries.length === 0) {
17
+ deps.renderer.write("No projects tracked yet.\n");
18
+ return 0;
19
+ }
20
+ const sorted = [...entries].sort((a, b) => (b.lastSeen ?? "").localeCompare(a.lastSeen ?? ""));
21
+ const slugWidth = Math.min(
22
+ Math.max(...sorted.map((entry) => (entry.slug ?? "").length), 4),
23
+ 40
24
+ );
25
+ for (const entry of sorted) {
26
+ const slug = (entry.slug ?? "?").padEnd(slugWidth);
27
+ const seen = entry.lastSeen ?? "";
28
+ deps.renderer.write(` ${color.dim(slug)} ${color.dim(seen)} ${entry.root ?? "?"}
29
+ `);
30
+ }
31
+ return 0;
32
+ };
33
+ export {
34
+ projectsCmd
35
+ };
36
+ //# sourceMappingURL=projects-LMNAGGEU.js.map
@@ -3,12 +3,12 @@ import {
3
3
  awaitFirstWrongProxyProbe,
4
4
  bootstrapWrongProxy,
5
5
  shutdownWrongProxy
6
- } from "./chunk-VOTTENR5.js";
7
- import "./chunk-JHPXJRRI.js";
6
+ } from "./chunk-CDY4D5QK.js";
7
+ import "./chunk-4XCBEUBX.js";
8
8
  export {
9
9
  applyWrongProxyPrefs,
10
10
  awaitFirstWrongProxyProbe,
11
11
  bootstrapWrongProxy,
12
12
  shutdownWrongProxy
13
13
  };
14
- //# sourceMappingURL=proxy-wiring-MGRSKZZB.js.map
14
+ //# sourceMappingURL=proxy-wiring-K2DORFFL.js.map
@@ -0,0 +1,10 @@
1
+ import {
2
+ handleHelpVersionShortCircuit
3
+ } from "./chunk-U6PGWDMZ.js";
4
+ import "./chunk-6WRKAACA.js";
5
+ import "./chunk-XJXDOF63.js";
6
+ import "./chunk-EK2P53GL.js";
7
+ export {
8
+ handleHelpVersionShortCircuit
9
+ };
10
+ //# sourceMappingURL=short-circuit-flags-YDMLAQ5R.js.map
@@ -10,6 +10,9 @@ import type { SlashCommandContext } from './command-context.js';
10
10
  * /acp <agent-id> <task> run a task on one agent (inline, streamed)
11
11
  * /acp <agent-id> --bg <task> run it as a background fleet subagent
12
12
  * /acp parallel <csv> <task> fan a task out to several agents at once
13
+ * /acp parallel <csv> --bg <task> same, but each agent runs as a background
14
+ * fleet subagent — live progress shows in /agents,
15
+ * the TUI fleet panel and the WebUI Agents panel
13
16
  * /acp probe [csv] handshake-test agents (what actually works)
14
17
  * /acp bench [csv] [--fs] end-to-end verify each agent + graded report
15
18
  * /acp sync pull the official agentclientprotocol/registry
@@ -259,6 +259,16 @@ export interface SlashCommandContext {
259
259
  onContextLimit?: ((tokens?: number) => number) | undefined;
260
260
  /** Toggle or query YOLO mode at runtime. Pass undefined to query, boolean to set. */
261
261
  onYolo?: ((setTo?: boolean) => boolean) | undefined;
262
+ /**
263
+ * Read, or set, which kinds of damage still prompt while YOLO is on.
264
+ *
265
+ * Returns the EFFECTIVE map after any update — the locked kinds report `true`
266
+ * whatever was asked, so a caller can tell an ignored "off" from a real one.
267
+ */
268
+ onYoloConfirm?: ((update?: {
269
+ kind: import('@wrongstack/core/security').DestructiveKind;
270
+ confirm: boolean;
271
+ }) => Record<string, boolean>) | undefined;
262
272
  /** Toggle or query next-task prediction. Pass undefined to query, boolean to set. */
263
273
  onNextPredict?: ((setTo?: boolean) => boolean) | undefined;
264
274
  /**
@@ -596,6 +606,18 @@ export interface SlashCommandContext {
596
606
  brainTierStats?: (() => import('@wrongstack/core/coordination').BrainTierStats) | undefined;
597
607
  /** Config store for reading/writing config sections at runtime (e.g. settings menu). */
598
608
  configStore: import('@wrongstack/core/types').ConfigStore;
609
+ /**
610
+ * Host hook that adopts the store's new merged config after an in-process
611
+ * selection change (today only `/profile switch`). The host's own `config`
612
+ * object is a distinct snapshot from the store's, so a command that mutates
613
+ * the store must hand the result back or the host keeps reading the values
614
+ * it booted with.
615
+ *
616
+ * Optional by design: only the interactive CLI has a live merged config to
617
+ * keep in step. Surfaces that leave it unset still persist the selection to
618
+ * the bootstrap and pick it up on their next start.
619
+ */
620
+ onActiveProfileChange?: ((next: import('@wrongstack/core/types').Config) => void) | undefined;
599
621
  /**
600
622
  * Optional accessor for the Chronicle metrics store. When wired, the
601
623
  * `/tool autothin candidates` and `apply` commands can read the
@@ -13,5 +13,5 @@ import type { SlashCommandContext } from './command-context.js';
13
13
  *
14
14
  * Run /ensemble (no args) to see usage and the list of available agents.
15
15
  */
16
- export declare function buildEnsembleCommand(_opts: SlashCommandContext): SlashCommand;
16
+ export declare function buildEnsembleCommand(opts: SlashCommandContext): SlashCommand;
17
17
  //# sourceMappingURL=ensemble.d.ts.map
@@ -10,6 +10,13 @@ import type { SlashCommandContext } from './command-context.js';
10
10
  * /profile list Show available profiles (● = active)
11
11
  * /profile switch <name> Switch to an existing profile
12
12
  * /profile copy <name> Copy the active profile's settings to a new profile
13
+ *
14
+ * `switch` writes the bootstrap (the durable selection read at next boot) and
15
+ * then pushes `activeProfile` through the live ConfigStore, which is the only
16
+ * event source the provider-runtime rebind watcher observes. `syncConfig` is
17
+ * the host's own copy of the merged config; it is a separate object from the
18
+ * store, so it has to be told too or the host keeps routing against the
19
+ * profile that was active when it booted.
13
20
  */
14
21
  export declare function buildProfileCommand(opts: SlashCommandContext): SlashCommand;
15
22
  //# sourceMappingURL=profile.d.ts.map
@@ -11,6 +11,7 @@
11
11
  * wstack hq token list --client → list issued client tokens
12
12
  * wstack hq token revoke <id> → revoke a browser token (prefix match)
13
13
  * wstack hq token revoke --client <id> → revoke a client token
14
+ * wstack hq service install|status|update|uninstall → Ubuntu systemd lifecycle
14
15
  *
15
16
  * All subcommands accept `--data-dir <path>` to override the HQ data
16
17
  * directory (default `~/.wrongstack/hq`, honors `WRONGSTACK_HOME` /
@@ -1,3 +1,17 @@
1
1
  import type { SubcommandHandler } from '../contracts.js';
2
+ /**
3
+ * List the projects WrongStack has actually been used in.
4
+ *
5
+ * The source is `~/.wrongstack/projects.json`, the manifest `boot.ts` writes
6
+ * on every start and the one `/project` already reads.
7
+ *
8
+ * This used to enumerate the `~/.wrongstack/projects/` DIRECTORY instead, which
9
+ * is not the same thing: that directory also holds per-run scratch state for
10
+ * ephemeral roots — Chimera review worktrees and the like — which are created
11
+ * by the hundred and carry no `meta.json`. On a working machine the listing was
12
+ * 1,495 rows of which 1,461 printed `(no meta)` and 262 were single-use
13
+ * `chimera-*` scratch dirs, against 30 real entries in the manifest. The
14
+ * command was unusable for the one question it answers.
15
+ */
2
16
  export declare const projectsCmd: SubcommandHandler;
3
17
  //# sourceMappingURL=projects.d.ts.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  subcommandNames,
3
3
  subcommands
4
- } from "./chunk-IUEKNHPT.js";
4
+ } from "./chunk-BIWE22O5.js";
5
5
  export {
6
6
  subcommandNames,
7
7
  subcommands
8
8
  };
9
- //# sourceMappingURL=subcommands-CUTGBDKP.js.map
9
+ //# sourceMappingURL=subcommands-7N4RIK6H.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  helpCmd,
3
3
  versionCmd
4
- } from "./chunk-FPIWTJ2G.js";
4
+ } from "./chunk-6WRKAACA.js";
5
5
  import "./chunk-XJXDOF63.js";
6
6
  export {
7
7
  helpCmd,
8
8
  versionCmd
9
9
  };
10
- //# sourceMappingURL=version-help-MYKF724O.js.map
10
+ //# sourceMappingURL=version-help-WXI42PZ3.js.map
@@ -1,6 +1,8 @@
1
1
  import {
2
- createHqCommandDispatcher
3
- } from "./chunk-IMWXXF4J.js";
2
+ createHqCommandDispatcher,
3
+ createProjectKanbanAssignHandler,
4
+ createProjectKanbanTransitionHandler
5
+ } from "./chunk-KNMIBKLV.js";
4
6
  import {
5
7
  createKanbanRunMirror
6
8
  } from "./chunk-VCYZ3WZV.js";
@@ -71,6 +73,10 @@ function createWebuiClientRegistration(deps) {
71
73
  steerMailbox: mailbox,
72
74
  interruptLeader: control.interruptLeader,
73
75
  allowRunCommand: control.allowRunCommand,
76
+ ...deps.projectRoot ? {
77
+ kanbanTransition: createProjectKanbanTransitionHandler(deps.projectRoot),
78
+ kanbanAssign: createProjectKanbanAssignHandler(deps.projectRoot)
79
+ } : {},
74
80
  // The session HQ actually SHOWS for this client — the boot
75
81
  // session the telemetry bridge publishes under and the only one
76
82
  // `interruptLeader` speaks for. `getSessionId` follows whichever
@@ -1968,4 +1974,4 @@ async function runWebUI(opts) {
1968
1974
  export {
1969
1975
  runWebUI
1970
1976
  };
1971
- //# sourceMappingURL=webui-server-QWBUT7BO.js.map
1977
+ //# sourceMappingURL=webui-server-OBV5JYJV.js.map
@@ -53,6 +53,12 @@ export declare function setupCliSlashCommands(params: {
53
53
  agentMonitor: B['agentMonitor'];
54
54
  onPanelOpen: B['onPanelOpen'];
55
55
  configStore: B['configStore'];
56
+ /**
57
+ * Forwards the store's new merged config back to the host after an in-process
58
+ * selection change (`/profile switch`). Optional: hosts without a live merged
59
+ * config leave it unset and the selection still applies on their next boot.
60
+ */
61
+ onActiveProfileChange?: B['onActiveProfileChange'];
56
62
  secretInputController: {
57
63
  readSecret: NonNullable<B['readSecret']>;
58
64
  readText: NonNullable<B['readText']>;
@@ -79,6 +85,7 @@ export declare function setupCliSlashCommands(params: {
79
85
  };
80
86
  mcpRegistry: SE['mcpRegistry'];
81
87
  setYoloMode: SE['onYolo'];
88
+ setYoloConfirm: SE['onYoloConfirm'];
82
89
  getNextPredict: SE['getNextPredict'];
83
90
  setNextPredict: SE['setNextPredict'];
84
91
  getCurrentSuggestions: SE['getCurrentSuggestions'];
@@ -5,7 +5,7 @@
5
5
  * already emits 384-dimensional vectors — the width `file_vectors` stores. It
6
6
  * arrives here rather than inside `packages/tools` for two reasons:
7
7
  *
8
- * - `@huggingface/transformers` is an **optional** dependency. A repository
8
+ * - `@huggingface/transformers` is an **opt-in** backend. A repository
9
9
  * that never enables semantic search should not have to install a model
10
10
  * runtime, and `packages/tools` must stay importable without one.
11
11
  * - A function cannot cross the project daemon's IPC boundary. The daemon
@@ -23,7 +23,7 @@ import type { EmbeddingPort } from '@wrongstack/tools';
23
23
  * Build the embedding port, or `undefined` when semantic search is off or
24
24
  * unavailable.
25
25
  *
26
- * The dynamic import is what keeps `@huggingface/transformers` optional: a
26
+ * The dynamic import is what keeps `@huggingface/transformers` opt-in: a
27
27
  * missing package throws here and is reported as "unavailable", never as a
28
28
  * startup failure.
29
29
  */
@@ -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 DestructiveKind } from '@wrongstack/core/security';
4
5
  import type { StatuslineDensities, StatuslineLines } from '@wrongstack/core/statusline';
5
6
  import { type Config, type SessionWriter } from '@wrongstack/core/types';
6
7
  import type { WstackPaths } from '@wrongstack/core/utils';
@@ -28,6 +29,8 @@ interface CommandHostStateInput {
28
29
  permissionPolicy: {
29
30
  setYolo?(enabled: boolean): void;
30
31
  getYolo?(): boolean;
32
+ setYoloConfirmKinds?(kinds: Iterable<DestructiveKind>): void;
33
+ getYoloConfirmKinds?(): ReadonlySet<DestructiveKind>;
31
34
  };
32
35
  /**
33
36
  * The live conversation's meta bag.
@@ -179,6 +182,10 @@ export declare function setupCommandHostState(input: CommandHostStateInput): Pro
179
182
  } | null>) | undefined;
180
183
  };
181
184
  setYoloMode: (enabled?: boolean) => boolean;
185
+ setYoloConfirm: (update?: {
186
+ kind: DestructiveKind;
187
+ confirm: boolean;
188
+ }) => Record<DestructiveKind, boolean>;
182
189
  secretInputController: {
183
190
  readSecret: (prompt: string) => Promise<string>;
184
191
  readText: (prompt: string) => Promise<string>;
@@ -82,6 +82,8 @@ export declare function createAgent(params: {
82
82
  /** Opt-in Kanban governance gate; see ToolsConfig.kanbanGovernance. */
83
83
  kanbanGovernance?: boolean | undefined;
84
84
  loopDetection?: import('@wrongstack/core/types').LoopDetectionConfig | undefined;
85
+ autoExtendLimit?: boolean | undefined;
86
+ maxAutoExtensions?: number | undefined;
85
87
  };
86
88
  };
87
89
  confirmAwaiter: import('@wrongstack/core/agent').AgentInit['confirmAwaiter'];
@@ -3,7 +3,7 @@ import type { ProviderModelStatusTracker } from '@wrongstack/core/coordination';
3
3
  import type { EventBus } from '@wrongstack/core/kernel';
4
4
  import type { ProviderRegistry } from '@wrongstack/core/registry';
5
5
  import type { Config, Logger, ModelsRegistry, Provider, ProviderConfig, SecretVault } from '@wrongstack/core/types';
6
- import type { WstackPaths } from '@wrongstack/core/utils';
6
+ import { type WstackPaths } from '@wrongstack/core/utils';
7
7
  export declare function serializeProviderRuntimeSnapshot(snapshot: unknown): string;
8
8
  type AnyObj = any;
9
9
  export interface ProviderRuntimeDeps {
@@ -7,7 +7,7 @@ import type { MultiAgentHost } from '../multi-agent.js';
7
7
  import type { SessionStats } from '../session-stats.js';
8
8
  import type { BuiltinSlashCommandDeps } from './slash-commands.js';
9
9
  type SlashCommandDeps = BuiltinSlashCommandDeps;
10
- type SessionCommandHandlers = Pick<SlashCommandDeps, 'onPlugin' | 'onContextLimit' | 'onMcp' | 'mcpRegistry' | 'mcpStatus' | 'onYolo' | 'onNextPredict' | 'onSuggestions' | 'onExit' | 'onBeforeExit' | 'onClear' | 'onNewSession' | 'onDiag' | 'onStats' | 'generateCommitMessage' | 'onDispatchClassify'>;
10
+ type SessionCommandHandlers = Pick<SlashCommandDeps, 'onPlugin' | 'onContextLimit' | 'onMcp' | 'mcpRegistry' | 'mcpStatus' | 'onYolo' | 'onYoloConfirm' | 'onNextPredict' | 'onSuggestions' | 'onExit' | 'onBeforeExit' | 'onClear' | 'onNewSession' | 'onDiag' | 'onStats' | 'generateCommitMessage' | 'onDispatchClassify'>;
11
11
  interface ErrorRecord {
12
12
  ts: string;
13
13
  phase: string;
@@ -30,6 +30,7 @@ interface SessionCommandHandlersInput {
30
30
  setEventMaxContext: (tokens: number) => void;
31
31
  mcpRegistry: MCPRegistry;
32
32
  onYolo: NonNullable<SlashCommandDeps['onYolo']>;
33
+ onYoloConfirm: SlashCommandDeps['onYoloConfirm'];
33
34
  getNextPredict: () => boolean;
34
35
  setNextPredict: (enabled: boolean) => void;
35
36
  getCurrentSuggestions: () => string[];
@@ -65,6 +65,7 @@ interface SlashCommandsDeps {
65
65
  }): Promise<CompactReport>;
66
66
  };
67
67
  configStore: ConfigStore;
68
+ onActiveProfileChange?: BuiltinSlashCommandDeps['onActiveProfileChange'];
68
69
  /** Called by /clear after wiping the session on disk — tells the TUI to reset its UI state. */
69
70
  onNewSession?: (() => Promise<void>) | undefined;
70
71
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/cli",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "license": "MIT",
5
5
  "description": "WrongStack CLI — terminal AI coding agent with provider catalog from models.dev. Provides `wrongstack` and `wstack` binaries.",
6
6
  "keywords": [
@@ -41,36 +41,36 @@
41
41
  "data"
42
42
  ],
43
43
  "dependencies": {
44
- "@wrongstack/acp": "1.0.3",
45
- "@wrongstack/bench": "1.0.3",
46
- "@wrongstack/core": "1.0.3",
47
- "@wrongstack/primitives": "1.0.3",
48
- "@wrongstack/kanban": "1.0.3",
49
- "@wrongstack/mcp": "1.0.3",
50
- "@wrongstack/persistence": "1.0.3",
51
- "@wrongstack/plug-lsp": "1.0.3",
52
- "@wrongstack/plugins": "1.0.3",
53
- "@wrongstack/providers": "1.0.3",
54
- "@wrongstack/requirement-intake": "1.0.3",
55
- "@wrongstack/runtime": "1.0.3",
56
- "@wrongstack/sage": "1.0.3",
57
- "@wrongstack/sdd": "1.0.3",
58
- "@wrongstack/security-scanner": "1.0.3",
59
- "@wrongstack/simpleui": "1.0.3",
60
- "@wrongstack/techstack": "1.0.3",
61
- "@wrongstack/telegram": "1.0.3",
62
- "@wrongstack/tools": "1.0.3",
63
- "@wrongstack/tui": "1.0.3",
64
- "@wrongstack/vector-memory": "1.0.3",
65
- "@wrongstack/webui": "1.0.3",
66
- "@wrongstack/webui-hq": "1.0.3",
67
- "@wrongstack/webui-protocol": "1.0.3",
68
- "@wrongstack/wrongtrace": "1.0.3",
69
- "@wrongstack/webui-server": "1.0.3",
44
+ "@wrongstack/acp": "1.0.4",
45
+ "@wrongstack/bench": "1.0.4",
46
+ "@wrongstack/core": "1.0.4",
47
+ "@wrongstack/primitives": "1.0.4",
48
+ "@wrongstack/kanban": "1.0.4",
49
+ "@wrongstack/mcp": "1.0.4",
50
+ "@wrongstack/persistence": "1.0.4",
51
+ "@wrongstack/plug-lsp": "1.0.4",
52
+ "@wrongstack/plugins": "1.0.4",
53
+ "@wrongstack/providers": "1.0.4",
54
+ "@wrongstack/requirement-intake": "1.0.4",
55
+ "@wrongstack/runtime": "1.0.4",
56
+ "@wrongstack/sage": "1.0.4",
57
+ "@wrongstack/sdd": "1.0.4",
58
+ "@wrongstack/security-scanner": "1.0.4",
59
+ "@wrongstack/simpleui": "1.0.4",
60
+ "@wrongstack/techstack": "1.0.4",
61
+ "@wrongstack/telegram": "1.0.4",
62
+ "@wrongstack/tools": "1.0.4",
63
+ "@wrongstack/tui": "1.0.4",
64
+ "@wrongstack/vector-memory": "1.0.4",
65
+ "@wrongstack/webui": "1.0.4",
66
+ "@wrongstack/webui-hq": "1.0.4",
67
+ "@wrongstack/webui-protocol": "1.0.4",
68
+ "@wrongstack/wrongtrace": "1.0.4",
69
+ "@wrongstack/webui-server": "1.0.4",
70
70
  "ws": "^8.21.3"
71
71
  },
72
72
  "optionalDependencies": {
73
- "@wrongstack/desktop": "1.0.3"
73
+ "@wrongstack/desktop": "1.0.4"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@types/node": "^26.2.0",
@@ -1,17 +0,0 @@
1
-
2
- // src/hq-server/audit-actor.ts
3
- import * as os from "node:os";
4
- function resolveAuditActor() {
5
- const user = (process.env.USERNAME ?? process.env.USER ?? "").toString();
6
- try {
7
- const host = os.hostname();
8
- return user ? `${user}@${host}` : `cli@${host}`;
9
- } catch {
10
- return user ? `${user}@unknown` : "cli";
11
- }
12
- }
13
-
14
- export {
15
- resolveAuditActor
16
- };
17
- //# sourceMappingURL=chunk-Q5GTM25S.js.map
@@ -1,37 +0,0 @@
1
-
2
- // src/subcommands/handlers/projects.ts
3
- import * as fs from "node:fs/promises";
4
- import * as path from "node:path";
5
- import { color } from "@wrongstack/core/utils";
6
- var projectsCmd = async (_args, deps) => {
7
- const projectsRoot = path.join(deps.paths.globalRoot, "projects");
8
- try {
9
- const entries = await fs.readdir(projectsRoot);
10
- if (entries.length === 0) {
11
- deps.renderer.write("No projects tracked.\n");
12
- return 0;
13
- }
14
- for (const hash of entries) {
15
- try {
16
- const meta = JSON.parse(
17
- await fs.readFile(path.join(projectsRoot, hash, "meta.json"), "utf8")
18
- );
19
- deps.renderer.write(
20
- ` ${color.dim(hash)} ${color.dim(meta.lastSeen ?? "")} ${meta.root ?? "?"}
21
- `
22
- );
23
- } catch {
24
- deps.renderer.write(` ${color.dim(hash)} ${color.dim("(no meta)")}
25
- `);
26
- }
27
- }
28
- return 0;
29
- } catch {
30
- deps.renderer.write("No projects directory.\n");
31
- return 0;
32
- }
33
- };
34
- export {
35
- projectsCmd
36
- };
37
- //# sourceMappingURL=projects-L6C6XLDY.js.map
@@ -1,10 +0,0 @@
1
- import {
2
- handleHelpVersionShortCircuit
3
- } from "./chunk-4NHD5OXJ.js";
4
- import "./chunk-FPIWTJ2G.js";
5
- import "./chunk-XJXDOF63.js";
6
- import "./chunk-E6RFXHWD.js";
7
- export {
8
- handleHelpVersionShortCircuit
9
- };
10
- //# sourceMappingURL=short-circuit-flags-ZNZX44MC.js.map