@wrongstack/cli 0.300.0 → 0.302.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 (62) hide show
  1. package/dist/{acp-IDNS2YVE.js → acp-DATHHPNT.js} +34 -15
  2. package/dist/acp-server-agent.d.ts +1 -1
  3. package/dist/{audit-2ZSFGNIF.js → audit-QRCLEHHW.js} +5 -1
  4. package/dist/{auth-6T6ZOT2R.js → auth-PJD3JRH2.js} +150 -37
  5. package/dist/boot/dispatch-webui.d.ts +3 -16
  6. package/dist/boot/launch-menu.d.ts +2 -4
  7. package/dist/boot/tool-registry.d.ts +3 -0
  8. package/dist/boot/webui-session-child.d.ts +91 -0
  9. package/dist/chimera-reviewer-policy.d.ts +10 -3
  10. package/dist/chimera-work-registry.d.ts +19 -0
  11. package/dist/{chronicle-QQEQFSSE.js → chronicle-63MFCZN6.js} +26 -5
  12. package/dist/{chunk-YWUPHRGB.js → chunk-263G3FMB.js} +33 -10
  13. package/dist/{chunk-GYDQABMA.js → chunk-2KDOFTTM.js} +44 -32
  14. package/dist/{chunk-V76R7DC5.js → chunk-3MOUBRKZ.js} +311 -309
  15. package/dist/chunk-CSAPOCBP.js +24 -0
  16. package/dist/{chunk-N7ULWBO5.js → chunk-ETOEGL3V.js} +3 -7
  17. package/dist/{chunk-3MWUZMOL.js → chunk-GUHQQG63.js} +14 -3
  18. package/dist/chunk-KE7E7DPX.js +38 -0
  19. package/dist/{chunk-PEMN4T5O.js → chunk-MT6FGXO3.js} +23 -4
  20. package/dist/chunk-PFVVUH5B.js +127 -0
  21. package/dist/{chunk-DPJZQCVP.js → chunk-YMXXOOFN.js} +1 -1
  22. package/dist/{chunk-4WJKVQJY.js → chunk-ZECLGUTF.js} +15 -3
  23. package/dist/cli-context.d.ts +2 -0
  24. package/dist/{cli-main-7B3G2YSG.js → cli-main-EOJ74CI4.js} +336 -99
  25. package/dist/execute-deps.d.ts +3 -0
  26. package/dist/{execution-SHGM7BVC.js → execution-CQ772VPS.js} +246 -97
  27. package/dist/execution-chimera-cascade.d.ts +3 -4
  28. package/dist/execution-chimera-review.d.ts +2 -3
  29. package/dist/execution-cleanup.d.ts +3 -2
  30. package/dist/execution.d.ts +1 -1
  31. package/dist/{export-TPORYVRZ.js → export-DOBGPY23.js} +12 -1
  32. package/dist/fleet/host-context.d.ts +1 -1
  33. package/dist/fleet/host-helpers.d.ts +14 -0
  34. package/dist/fleet/status-broadcast.d.ts +1 -1
  35. package/dist/{hq-DVDD4XPV.js → hq-LN5CJHCM.js} +2 -2
  36. package/dist/hq-server/routes.d.ts +10 -1
  37. package/dist/hq-server/ws.d.ts +17 -6
  38. package/dist/{hq-server-DQHLNHDL.js → hq-server-S7HZG3PA.js} +3 -2
  39. package/dist/index.js +142 -100
  40. package/dist/live-settings-input.d.ts +5 -0
  41. package/dist/{mcp-CYLPUEHC.js → mcp-OHPJH73U.js} +6 -2
  42. package/dist/{modeldiag-YOQZHBQV.js → modeldiag-3DOK4BWW.js} +2 -2
  43. package/dist/{plugin-usage-EOG4ET4S.js → plugin-usage-YEVLOR33.js} +7 -3
  44. package/dist/{plugins-56CMWMPR.js → plugins-K3BAUP4D.js} +3 -3
  45. package/dist/profile-config-path.d.ts +0 -2
  46. package/dist/provider-helpers.d.ts +0 -5
  47. package/dist/{providers-models-K6RT7ABI.js → providers-models-WEZ4EGLL.js} +6 -5
  48. package/dist/{replay-KCTXNMZQ.js → replay-FCBNHW3K.js} +5 -1
  49. package/dist/{rewind-EJMVFVLS.js → rewind-AOD3JIYX.js} +5 -1
  50. package/dist/{sessions-config-NLCMK3BY.js → sessions-config-XXN7267N.js} +8 -3
  51. package/dist/subcommands/flags.d.ts +23 -0
  52. package/dist/terminal-format.d.ts +15 -0
  53. package/dist/{webui-server-G3EKFXLL.js → webui-server-NFNRGNNT.js} +54 -29
  54. package/dist/webui-server-options.d.ts +7 -0
  55. package/dist/wiring/brain-and-orchestration.d.ts +1 -1
  56. package/dist/wiring/mailbox-bridge-bootstrap.d.ts +3 -1
  57. package/dist/wiring/management-tools.d.ts +9 -1
  58. package/dist/wiring/pipeline.d.ts +5 -5
  59. package/dist/wiring/plugins.d.ts +2 -3
  60. package/dist/wiring/provider-utility-tools.d.ts +1 -0
  61. package/dist/wiring/tools.d.ts +4 -5
  62. package/package.json +23 -23
@@ -1,12 +1,15 @@
1
+ import {
2
+ restoreFlags
3
+ } from "./chunk-CSAPOCBP.js";
1
4
  import {
2
5
  getHistoryEntry,
3
6
  listHistory,
4
7
  restoreFromHistory,
5
8
  restoreLast
6
- } from "./chunk-YWUPHRGB.js";
9
+ } from "./chunk-263G3FMB.js";
7
10
  import {
8
11
  activeProfileConfigPath
9
- } from "./chunk-DPJZQCVP.js";
12
+ } from "./chunk-YMXXOOFN.js";
10
13
  import "./chunk-7OCVIDC7.js";
11
14
 
12
15
  // src/subcommands/handlers/sessions-config.ts
@@ -233,6 +236,7 @@ Fleet Run: ${runId}
233
236
 
234
237
  // src/subcommands/handlers/sessions-config.ts
235
238
  var sessionsCmd = async (args, deps) => {
239
+ args = restoreFlags(args, deps, ["to", "id", "latest", "l"]);
236
240
  const sub = args[0];
237
241
  if (sub === "fleet") {
238
242
  return sessionsFleetCmd(args.slice(1), deps);
@@ -302,6 +306,7 @@ var sessionsCmd = async (args, deps) => {
302
306
  return 0;
303
307
  };
304
308
  var configCmd = async (args, deps) => {
309
+ args = restoreFlags(args, deps, ["id", "latest", "l"]);
305
310
  const sub = args[0];
306
311
  if (!sub || sub === "show") {
307
312
  deps.renderer.write(JSON.stringify(redactKeys(deps.config), null, 2) + "\n");
@@ -406,4 +411,4 @@ export {
406
411
  configCmd,
407
412
  sessionsCmd
408
413
  };
409
- //# sourceMappingURL=sessions-config-NLCMK3BY.js.map
414
+ //# sourceMappingURL=sessions-config-XXN7267N.js.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Re-attach the flags `parseArgs` stripped before a subcommand handler ran.
3
+ *
4
+ * The dispatcher (`boot.ts`) hands a handler only `positional.slice(1)`, while
5
+ * `parseArgs` has already pulled every `--flag` into `flags`. A handler that
6
+ * parses its own `args` therefore saw NONE of the flags it documents:
7
+ * `rewind --last 2` printed usage, `export --format json --out r.json` dumped
8
+ * markdown to stdout, `plugin add X --disabled` wrote it enabled, and
9
+ * `chronicle prune --days 7 --dry-run` performed a real 30-day purge.
10
+ *
11
+ * Re-injecting every flag at the dispatcher would be wrong: top-level switches
12
+ * (`--verbose`, `--yolo`, `--tui`) would land in the subcommand's argv too, and
13
+ * handlers with an "Unknown flag" branch — `export.ts` has one — would start
14
+ * rejecting valid invocations. So each handler declares the flags it owns and
15
+ * gets back exactly those.
16
+ *
17
+ * A spelling already present in `args` always wins: a directly-invoked handler
18
+ * (and anything the caller placed after `--`) keeps overriding.
19
+ */
20
+ export declare function restoreFlags(args: string[], deps: {
21
+ flags?: Record<string, string | boolean> | undefined;
22
+ }, names: readonly string[]): string[];
23
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1,15 @@
1
+ export type TerminalTone = 'blue' | 'cyan' | 'green' | 'magenta' | 'muted' | 'success' | 'yellow';
2
+ export interface TerminalStyleOptions {
3
+ readonly bold?: boolean;
4
+ /** Capability override for deterministic tests; production derives this from env/TTY. */
5
+ readonly enabled?: boolean;
6
+ }
7
+ /** Match the CLI banner's NO_COLOR/FORCE_COLOR/TTY precedence. */
8
+ export declare function terminalFormattingEnabled(env?: NodeJS.ProcessEnv, isTty?: boolean): boolean;
9
+ /** Add semantic color while preserving plain text when formatting is disabled. */
10
+ export declare function terminalText(text: string, tone: TerminalTone, options?: TerminalStyleOptions): string;
11
+ /** Render a colored OSC 8 hyperlink, falling back to the visible URL unchanged. */
12
+ export declare function terminalLink(url: string, options?: TerminalStyleOptions & {
13
+ readonly tone?: TerminalTone;
14
+ }): string;
15
+ //# sourceMappingURL=terminal-format.d.ts.map
@@ -7,6 +7,9 @@ import {
7
7
  import {
8
8
  startCliHqConnection
9
9
  } from "./chunk-JW75HY4F.js";
10
+ import {
11
+ WEBUI_SESSION_CHILD_CAPABILITIES
12
+ } from "./chunk-PFVVUH5B.js";
10
13
  import {
11
14
  loadConfigProviders,
12
15
  mutateConfigProviders
@@ -41,11 +44,12 @@ import {
41
44
  resolveAuthToken,
42
45
  SddBoardWebSocketHandler,
43
46
  SddWizardWebSocketHandler,
47
+ sendSerialized,
44
48
  SpecsWebSocketHandler,
45
49
  TerminalWebSocketHandler,
46
50
  WorktreeWebSocketHandler
47
51
  } from "@wrongstack/webui-server";
48
- import { WebSocket, WebSocketServer } from "ws";
52
+ import { WebSocketServer } from "ws";
49
53
 
50
54
  // src/webui-server/client-registration.ts
51
55
  import { createWebuiClientPresence } from "@wrongstack/webui-server";
@@ -871,7 +875,7 @@ async function runWebUI(opts) {
871
875
  const surface = opts.surface ?? "webui";
872
876
  const surfaceDefaults = surface === "simpleui" ? { http: 3466 } : { http: 3456 };
873
877
  const requestedHttpPort = opts.httpPort ?? opts.port ?? surfaceDefaults.http;
874
- const strictPort = process.env["WEBUI_STRICT_PORT"] === "1" || process.env["WEBUI_STRICT_PORT"] === "true";
878
+ const strictPort = opts.strictPort ?? (process.env["WEBUI_STRICT_PORT"] === "1" || process.env["WEBUI_STRICT_PORT"] === "true");
875
879
  let httpPort = requestedHttpPort;
876
880
  if (!strictPort) {
877
881
  httpPort = await findFreePort(host, requestedHttpPort);
@@ -1088,24 +1092,47 @@ async function runWebUI(opts) {
1088
1092
  `[WebUI] Frontend not served (run \`pnpm --filter @wrongstack/webui build\`). WS bridge still active on ws://${host}:${httpPort}.`
1089
1093
  );
1090
1094
  }
1095
+ const currentSessionId = () => opts.agent.ctx.session?.id ?? opts.session.id;
1091
1096
  const registryBaseDir = globalRoot;
1097
+ let webuiInstanceRegistered = false;
1092
1098
  if (opts.projectRoot) {
1093
- registerWebuiInstance({
1094
- pid: process.pid,
1095
- surface,
1096
- host,
1097
- httpPort,
1098
- publicUrl,
1099
- projectRoot: opts.projectRoot,
1100
- startedAt: (/* @__PURE__ */ new Date()).toISOString(),
1101
- registryBaseDir,
1102
- // Lets a same-project TUI/REPL authenticate `POST /api/fleet/ping` now
1103
- // that the API requires a token on every bind (H3).
1104
- authToken: wsToken
1105
- });
1099
+ const registration = Promise.resolve(
1100
+ registerWebuiInstance({
1101
+ pid: process.pid,
1102
+ surface,
1103
+ host,
1104
+ httpPort,
1105
+ publicUrl,
1106
+ projectRoot: opts.projectRoot,
1107
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
1108
+ registryBaseDir,
1109
+ // Lets a same-project TUI/REPL authenticate `POST /api/fleet/ping` now
1110
+ // that the API requires a token on every bind (H3).
1111
+ authToken: wsToken,
1112
+ ...opts.webuiSessionChild ? {
1113
+ role: "session-child",
1114
+ sessionId: currentSessionId(),
1115
+ parentPid: opts.webuiSessionChild.parentPid,
1116
+ parentShellId: opts.webuiSessionChild.parentShellId,
1117
+ runtimeId: opts.webuiSessionChild.runtimeId,
1118
+ attachable: opts.webuiSessionChild.attachable,
1119
+ lastReadyAt: (/* @__PURE__ */ new Date()).toISOString(),
1120
+ protocolVersion: opts.webuiSessionChild.protocolVersion,
1121
+ capabilities: [...WEBUI_SESSION_CHILD_CAPABILITIES]
1122
+ } : {}
1123
+ })
1124
+ ).then(
1125
+ (value) => value !== false,
1126
+ () => false
1127
+ );
1128
+ if (opts.webuiSessionChild) {
1129
+ webuiInstanceRegistered = await registration;
1130
+ } else {
1131
+ void registration;
1132
+ webuiInstanceRegistered = true;
1133
+ }
1106
1134
  }
1107
1135
  const eventUnsubscribers = [];
1108
- const currentSessionId = () => opts.agent.ctx.session?.id ?? opts.session.id;
1109
1136
  const sessionPayload = (payload) => {
1110
1137
  const provided = payload["sessionId"];
1111
1138
  const sessionId = typeof provided === "string" && provided.length > 0 ? provided : currentSessionId();
@@ -1405,7 +1432,14 @@ async function runWebUI(opts) {
1405
1432
  console.log(`[WebUI] WebSocket server running on ws://${host}:${httpPort}`);
1406
1433
  try {
1407
1434
  setupEvents();
1408
- opts.onListening?.({ httpPort, wsPort, host, url: accessUrl });
1435
+ opts.onListening?.({
1436
+ httpPort,
1437
+ wsPort,
1438
+ host,
1439
+ url: accessUrl,
1440
+ authToken: wsToken,
1441
+ webuiInstanceRegistered
1442
+ });
1409
1443
  } catch (err) {
1410
1444
  consoleLogger.error("setup_events_failed", { message: toErrorMessage(err) });
1411
1445
  }
@@ -1535,20 +1569,11 @@ async function runWebUI(opts) {
1535
1569
  registerWebuiSignalHandlers(signalShutdown);
1536
1570
  });
1537
1571
  function send(ws, msg) {
1538
- if (ws.readyState === WebSocket.OPEN) {
1539
- ws.send(JSON.stringify(msg));
1540
- }
1572
+ sendSerialized(ws, JSON.stringify(msg));
1541
1573
  }
1542
1574
  function broadcast(msg) {
1543
1575
  const data = JSON.stringify(msg);
1544
- for (const [ws] of clients) {
1545
- if (ws.readyState === WebSocket.OPEN) {
1546
- try {
1547
- ws.send(data);
1548
- } catch {
1549
- }
1550
- }
1551
- }
1576
+ for (const [ws] of clients) sendSerialized(ws, data);
1552
1577
  }
1553
1578
  function sendResult(ws, success, message) {
1554
1579
  send(ws, { type: "key.operation_result", payload: { success, message } });
@@ -1558,4 +1583,4 @@ async function runWebUI(opts) {
1558
1583
  export {
1559
1584
  runWebUI
1560
1585
  };
1561
- //# sourceMappingURL=webui-server-G3EKFXLL.js.map
1586
+ //# sourceMappingURL=webui-server-NFNRGNNT.js.map
@@ -1,5 +1,6 @@
1
1
  import type { Agent } from '@wrongstack/core/agent';
2
2
  import type { BrainArbiter } from '@wrongstack/core/coordination';
3
+ import type { WebuiSessionChildOptions } from './boot/webui-session-child.js';
3
4
  import type { BrainAutoRisk } from '@wrongstack/core/execution';
4
5
  import type { EventBus } from '@wrongstack/core/kernel';
5
6
  import type { TrustBoundary } from '@wrongstack/core/security';
@@ -36,6 +37,10 @@ export interface CliWebUIOptions {
36
37
  surface?: 'webui' | 'simpleui' | undefined;
37
38
  /** Fixed access token/password. Defaults to WEBUI_TOKEN or random per process. */
38
39
  accessToken?: string | undefined;
40
+ /** Fail instead of auto-advancing when the requested HTTP/WS port is busy. */
41
+ strictPort?: boolean | undefined;
42
+ /** Internal one-session child launch metadata for the multi-session parent shell. */
43
+ webuiSessionChild?: WebuiSessionChildOptions | undefined;
39
44
  /**
40
45
  * Live fleet concurrency + lifetime spawn budget for WebUI (issue #323).
41
46
  * Merged into `fleet.concurrency_update` broadcasts.
@@ -81,6 +86,8 @@ export interface CliWebUIOptions {
81
86
  wsPort: number;
82
87
  host: string;
83
88
  url: string;
89
+ authToken: string;
90
+ webuiInstanceRegistered: boolean;
84
91
  }) => void;
85
92
  modelsRegistry?: ModelsRegistry | undefined;
86
93
  globalConfigPath?: string | undefined;
@@ -1,7 +1,7 @@
1
1
  import { BrainDecisionQueue, type BrainEscalationMode, ObservableBrainArbiter } from '@wrongstack/core/coordination';
2
2
  import { type BrainAutoRisk, type BrainRuntime } from '@wrongstack/core/execution';
3
3
  import type { ToolRegistry } from '@wrongstack/core/registry';
4
- import type { Config, Provider, SecretVault, SessionWriter } from '@wrongstack/core/types';
4
+ import { type Config, type Provider, type SecretVault, type SessionWriter } from '@wrongstack/core/types';
5
5
  import { MultiAgentHost } from '../multi-agent.js';
6
6
  type AnyObj = any;
7
7
  /**
@@ -33,7 +33,9 @@ export declare const MAILBOX_BRIDGE_META_KEY = "mailboxBridge";
33
33
  */
34
34
  export declare function bootstrapMailboxBridgeAtStartup(params: {
35
35
  projectRoot: string | undefined;
36
- config: Pick<Config, 'features'> | undefined;
36
+ config: {
37
+ features: Pick<Config['features'], 'mailboxBridge'>;
38
+ } | undefined;
37
39
  logger: Logger;
38
40
  /** Surface label — logged for debugging when something goes wrong. */
39
41
  source: 'cli' | 'webui' | 'eternal';
@@ -1,4 +1,5 @@
1
1
  import type { Config } from '@wrongstack/core/types';
2
+ import { type PluginManagerHookRunner } from '@wrongstack/core/tools';
2
3
  import type { ToolRegistry } from '@wrongstack/core/registry';
3
4
  type ConfigStoreLike = {
4
5
  get(): Config;
@@ -9,7 +10,14 @@ export interface RegisterCliManagementToolsDeps {
9
10
  configStore: ConfigStoreLike;
10
11
  profileConfigPath: string;
11
12
  stdinInteractive: boolean;
13
+ /**
14
+ * Late-bound PreToolUse pipeline for plugin_manager's nested `use` path.
15
+ * The hook runner is created by `setupLifecycleAndPlugins` AFTER the
16
+ * management tools register, so cli-main passes a ref-backed getter that
17
+ * starts null and is filled once wiring completes.
18
+ */
19
+ getHookRunner?: (() => PluginManagerHookRunner | null) | undefined;
12
20
  }
13
- export declare function registerCliManagementTools({ toolRegistry, configStore, profileConfigPath, stdinInteractive, }: RegisterCliManagementToolsDeps): void;
21
+ export declare function registerCliManagementTools({ toolRegistry, configStore, profileConfigPath, stdinInteractive, getHookRunner, }: RegisterCliManagementToolsDeps): void;
14
22
  export {};
15
23
  //# sourceMappingURL=management-tools.d.ts.map
@@ -1,9 +1,9 @@
1
1
  import { Agent, type AgentPipelines, type Context } from '@wrongstack/core/agent';
2
2
  import { AutoCompactionMiddleware } from '@wrongstack/core/execution';
3
- import type { Config, Logger, ModelsRegistry, Provider } from '@wrongstack/core/types';
4
- import type { SessionEventBridge } from '@wrongstack/core/storage';
5
3
  import { type EventBus } from '@wrongstack/core/kernel';
6
4
  import type { ProviderRegistry, ToolRegistry } from '@wrongstack/core/registry';
5
+ import type { SessionEventBridge } from '@wrongstack/core/storage';
6
+ import type { Config, Logger, ModelsRegistry, Provider } from '@wrongstack/core/types';
7
7
  type CompactionDriver = ConstructorParameters<typeof AutoCompactionMiddleware>[0];
8
8
  export declare function setupPipelines(params: {
9
9
  events: EventBus;
@@ -90,9 +90,9 @@ export declare function createAgent(params: {
90
90
  /**
91
91
  * Full Config object, used for `features.mailboxBridge` gating and
92
92
  * forwarded to `bootstrapMailboxBridgeAtStartup`. Optional — when
93
- * omitted, the bootstrap defaults to 'auto' (i.e. always run).
94
- * Tests can pass a stub with just `{ features: { mailboxBridge: 'off' } }`
95
- * to skip the bridge entirely without touching the host config.
93
+ * omitted, the bootstrap defaults to 'off' (i.e. never run), so tests
94
+ * and embedders get no detached bridge process unless they ask for one
95
+ * with `{ features: { mailboxBridge: 'auto' } }`.
96
96
  */
97
97
  fullConfig?: Pick<Config, 'features'> | undefined;
98
98
  /** Surface label for the bootstrap log breadcrumb. */
@@ -1,10 +1,9 @@
1
1
  import type { AgentPipelines } from '@wrongstack/core/agent';
2
- import type { Config, HealthRegistry, Logger, MetricsRuntimeStatus, MetricsSinkView, ModelsRegistry, Plugin, PromptLoader, SkillLoader } from '@wrongstack/core/types';
3
2
  import type { ExtensionRegistry } from '@wrongstack/core/extension';
4
- import type { PluginAPIInit, PluginHostHandle } from '@wrongstack/core/plugin';
5
- import type { ConfigStore, SessionWriter } from '@wrongstack/core/types';
6
3
  import type { Container, EventBus } from '@wrongstack/core/kernel';
4
+ import type { PluginAPIInit, PluginHostHandle } from '@wrongstack/core/plugin';
7
5
  import type { ProviderRegistry, SlashCommandRegistry, ToolRegistry } from '@wrongstack/core/registry';
6
+ import type { Config, ConfigStore, HealthRegistry, Logger, MetricsRuntimeStatus, MetricsSinkView, ModelsRegistry, Plugin, PromptLoader, SessionWriter, SkillLoader } from '@wrongstack/core/types';
8
7
  import type { MCPRegistry } from '@wrongstack/mcp';
9
8
  export declare const DEPRECATED_PLUGIN_NAMES: Record<string, string>;
10
9
  export declare const BUILTIN_PLUGIN_CONFIG_NAMES: Set<string>;
@@ -11,6 +11,7 @@ export interface ProviderUtilityToolsInput {
11
11
  getConfig: () => Config;
12
12
  fallbackProfileManager: FallbackProfileManager;
13
13
  statusTracker: ProviderModelStatusTracker;
14
+ wrapProviderCall: NonNullable<import('@wrongstack/core/types').OneShotOrchestratorOptions['wrapProviderCall']>;
14
15
  compactor: NonNullable<Parameters<typeof createContextManagerTool>[0]>['compactor'];
15
16
  }
16
17
  export declare function adoptResumedProvider(input: {
@@ -1,10 +1,9 @@
1
- import type { TextBlock } from '@wrongstack/core/types';
2
- import type { Config, MemoryPort } from '@wrongstack/core/types';
3
- import { type WstackPaths } from '@wrongstack/core/utils';
4
- import { type DefaultModelsRegistry, DefaultModeStore } from '@wrongstack/core/models';
5
- import { DefaultSkillLoader } from '@wrongstack/core/execution';
6
1
  import { DefaultSystemPromptBuilder } from '@wrongstack/core/agent';
2
+ import { DefaultSkillLoader } from '@wrongstack/core/execution';
3
+ import { type DefaultModelsRegistry, DefaultModeStore } from '@wrongstack/core/models';
7
4
  import type { ToolRegistry } from '@wrongstack/core/registry';
5
+ import type { Config, MemoryPort, TextBlock } from '@wrongstack/core/types';
6
+ import { type WstackPaths } from '@wrongstack/core/utils';
8
7
  export interface ToolsWiringDeps {
9
8
  config: Config;
10
9
  toolRegistry: ToolRegistry;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/cli",
3
- "version": "0.300.0",
3
+ "version": "0.302.0",
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": [
@@ -42,30 +42,30 @@
42
42
  ],
43
43
  "dependencies": {
44
44
  "ws": "^8.21.1",
45
- "@wrongstack/core": "0.300.0",
46
- "@wrongstack/bench": "0.300.0",
47
- "@wrongstack/providers": "0.300.0",
48
- "@wrongstack/mcp": "0.300.0",
49
- "@wrongstack/acp": "0.300.0",
50
- "@wrongstack/kanban": "0.300.0",
51
- "@wrongstack/sdd": "0.300.0",
52
- "@wrongstack/plugins": "0.300.0",
53
- "@wrongstack/plug-lsp": "0.300.0",
54
- "@wrongstack/requirement-intake": "0.300.0",
55
- "@wrongstack/security-scanner": "0.300.0",
56
- "@wrongstack/runtime": "0.300.0",
57
- "@wrongstack/sage": "0.300.0",
58
- "@wrongstack/techstack": "0.300.0",
59
- "@wrongstack/telegram": "0.300.0",
60
- "@wrongstack/simpleui": "0.300.0",
61
- "@wrongstack/tools": "0.300.0",
62
- "@wrongstack/webui-hq": "0.300.0",
63
- "@wrongstack/tui": "0.300.0",
64
- "@wrongstack/webui": "0.300.0",
65
- "@wrongstack/webui-server": "0.300.0"
45
+ "@wrongstack/plug-lsp": "0.302.0",
46
+ "@wrongstack/acp": "0.302.0",
47
+ "@wrongstack/bench": "0.302.0",
48
+ "@wrongstack/core": "0.302.0",
49
+ "@wrongstack/runtime": "0.302.0",
50
+ "@wrongstack/plugins": "0.302.0",
51
+ "@wrongstack/providers": "0.302.0",
52
+ "@wrongstack/mcp": "0.302.0",
53
+ "@wrongstack/sdd": "0.302.0",
54
+ "@wrongstack/kanban": "0.302.0",
55
+ "@wrongstack/security-scanner": "0.302.0",
56
+ "@wrongstack/sage": "0.302.0",
57
+ "@wrongstack/requirement-intake": "0.302.0",
58
+ "@wrongstack/techstack": "0.302.0",
59
+ "@wrongstack/telegram": "0.302.0",
60
+ "@wrongstack/webui": "0.302.0",
61
+ "@wrongstack/simpleui": "0.302.0",
62
+ "@wrongstack/tools": "0.302.0",
63
+ "@wrongstack/tui": "0.302.0",
64
+ "@wrongstack/webui-hq": "0.302.0",
65
+ "@wrongstack/webui-server": "0.302.0"
66
66
  },
67
67
  "optionalDependencies": {
68
- "@wrongstack/desktop": "0.300.0"
68
+ "@wrongstack/desktop": "0.302.0"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@types/node": "^26.1.2",