@wrongstack/cli 0.298.0 → 0.298.2

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.
@@ -1,3 +1,4 @@
1
+ import type { ProviderModelStatusTracker } from '@wrongstack/core/coordination';
1
2
  import { type ChimeraReviewCompletePayload } from '@wrongstack/core/plugin';
2
3
  import type { ExecuteDeps } from './execute-deps.js';
3
4
  type Director = NonNullable<ExecuteDeps['fleet']['director']>;
@@ -27,9 +28,18 @@ export type InstallChimeraReviewHandlerOptions = {
27
28
  agent: Agent;
28
29
  config: Config;
29
30
  projectDir: string;
31
+ /**
32
+ * Shared provider/model status tracker. When supplied, the round-robin
33
+ * Chimera reviewer spawn skips (provider, model) pairs currently in the
34
+ * waiting room (`state: 'blocked'`) so a 429-stricken model is never
35
+ * re-spawned on a concurrent reviewer turn. The tracker is the same
36
+ * singleton the leader's `/provider-status` reads from; see
37
+ * `packages/core/src/coordination/provider-status-tracker.ts`.
38
+ */
39
+ statusTracker?: ProviderModelStatusTracker | undefined;
30
40
  persistReview?: ((payload: ChimeraReviewCompletePayload, projectDir: string) => Promise<void>) | undefined;
31
41
  setPendingWork: (work: PendingChimeraWork) => void;
32
42
  };
33
- export declare function installChimeraReviewHandler({ events, director, session, mailbox, agent, config, projectDir, persistReview, setPendingWork, }: InstallChimeraReviewHandlerOptions): void;
43
+ export declare function installChimeraReviewHandler({ events, director, session, mailbox, agent, config, projectDir, statusTracker, persistReview, setPendingWork, }: InstallChimeraReviewHandlerOptions): void;
34
44
  export {};
35
45
  //# sourceMappingURL=execution-chimera-review.d.ts.map
package/dist/index.js CHANGED
@@ -36,7 +36,7 @@ import {
36
36
  parseArgs,
37
37
  runPicker,
38
38
  saveToGlobalConfig
39
- } from "./chunk-JBSQ7ONN.js";
39
+ } from "./chunk-ZNZJ34RF.js";
40
40
  import {
41
41
  isKeylessLocalProvider,
42
42
  visibleModelIds
@@ -1497,7 +1497,7 @@ function compactSingleLine(text) {
1497
1497
  var loaders = {
1498
1498
  acp: async () => (await import("./acp-S4LZQB66.js")).acpCmd,
1499
1499
  init: async () => (await import("./init-E2NDDOHI.js")).initCmd,
1500
- auth: async () => (await import("./auth-NLLGEYQR.js")).authCmd,
1500
+ auth: async () => (await import("./auth-G5YKKSRH.js")).authCmd,
1501
1501
  update: async () => (await import("./update-MV6TUACD.js")).updateCmd,
1502
1502
  sessions: async () => (await import("./sessions-config-NLCMK3BY.js")).sessionsCmd,
1503
1503
  config: async () => (await import("./sessions-config-NLCMK3BY.js")).configCmd,
@@ -1509,12 +1509,12 @@ var loaders = {
1509
1509
  providers: async () => (await import("./providers-models-GDELBHZK.js")).providersCmd,
1510
1510
  models: async () => (await import("./providers-models-GDELBHZK.js")).modelsCmd,
1511
1511
  mcp: async () => (await import("./mcp-CYLPUEHC.js")).mcpCmd,
1512
- plugin: async () => (await import("./plugin-usage-OU6X6LM3.js")).pluginCmd,
1513
- plugins: async () => (await import("./plugin-usage-OU6X6LM3.js")).pluginCmd,
1512
+ plugin: async () => (await import("./plugin-usage-VTL7ZTVC.js")).pluginCmd,
1513
+ plugins: async () => (await import("./plugin-usage-VTL7ZTVC.js")).pluginCmd,
1514
1514
  diag: async () => (await import("./diag-doctor-OQ3AA63O.js")).diagCmd,
1515
1515
  doctor: async () => (await import("./diag-doctor-OQ3AA63O.js")).doctorCmd,
1516
1516
  export: async () => (await import("./export-TPORYVRZ.js")).exportCmd,
1517
- usage: async () => (await import("./plugin-usage-OU6X6LM3.js")).usageCmd,
1517
+ usage: async () => (await import("./plugin-usage-VTL7ZTVC.js")).usageCmd,
1518
1518
  version: async () => (await import("./version-help-ASKQYXDJ.js")).versionCmd,
1519
1519
  help: async () => (await import("./version-help-ASKQYXDJ.js")).helpCmd,
1520
1520
  projects: async () => (await import("./projects-XE76NFNZ.js")).projectsCmd,
@@ -3149,7 +3149,7 @@ async function initializeCli(argv) {
3149
3149
  async function main(argv) {
3150
3150
  const cliCtx = await initializeCli(argv);
3151
3151
  if (typeof cliCtx === "number") return cliCtx;
3152
- const { runInteractive } = await import("./cli-main-TJEU4OUY.js");
3152
+ const { runInteractive } = await import("./cli-main-ZDZMCVLM.js");
3153
3153
  return runInteractive(cliCtx);
3154
3154
  }
3155
3155
 
@@ -63,8 +63,17 @@ export interface LiveSettingsInput {
63
63
  cacheTtl?: 'default' | '5m' | '1h' | undefined;
64
64
  /** Show "Model Reasoning" blocks in chat history. Default: true. */
65
65
  showModelReasoning?: boolean | undefined;
66
- /** Optionally show the persistent AGENT SWARM and todo mission queue panel; defaults to true at the storage layer. */
67
- showAgentSwarmPanel?: boolean | undefined;
66
+ /** Agent swarm panel placement: 'bottom' (lower region), 'sidebar' (right sidebar), or 'off' (hidden).
67
+ * Backward-compat: legacy boolean values are coerced by the TUI settings adapter. Default: 'bottom'. */
68
+ showAgentSwarmPanel?: 'bottom' | 'sidebar' | 'off' | boolean | undefined;
69
+ /**
70
+ * Per-panel position map (one entry per F-key panel id). Each value is
71
+ * 'bottom' (F-key behavior) or 'sidebar' (right-sidebar twin). Persisted
72
+ * as `autonomy.panelPositions` in the project/profile config. The TUI
73
+ * auto-save hook passes a full PanelPositionMap (13 entries); the adapter
74
+ * stores it as-is. Default: every panel 'bottom' when unset.
75
+ */
76
+ panelPositions?: Readonly<Record<string, 'bottom' | 'sidebar'>> | undefined;
68
77
  /** Show SAGE Memory Inject blocks in tool results. Default: false. */
69
78
  showSageMemoryInject?: boolean | undefined;
70
79
  /**
@@ -1,12 +1,7 @@
1
1
  import type { Config, PluginConfig, PluginManagerConfig } from '@wrongstack/core/types';
2
- export interface PluginAuditEntry {
3
- name: string;
4
- risk: 'low' | 'medium' | 'high';
5
- summary: string;
6
- defaultState: 'active' | 'inactive';
7
- canDisable: boolean;
8
- }
9
- export declare const PLUGIN_AUDIT_ENTRIES: readonly PluginAuditEntry[];
2
+ import { PLUGIN_AUDIT_ENTRIES, type PluginAuditEntry } from '@wrongstack/plugins/plugin-audit-catalog';
3
+ export { PLUGIN_AUDIT_ENTRIES };
4
+ export type { PluginAuditEntry };
10
5
  export declare const OFFICIAL_PLUGINS: readonly [{
11
6
  readonly alias: 'telegram';
12
7
  readonly specifier: '@wrongstack/telegram';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runPluginManagementCommand
3
- } from "./chunk-XWEGWYDU.js";
3
+ } from "./chunk-PEKUKUCH.js";
4
4
  import {
5
5
  activeProfileConfigPath
6
6
  } from "./chunk-DPJZQCVP.js";
@@ -37,4 +37,4 @@ export {
37
37
  pluginCmd,
38
38
  usageCmd
39
39
  };
40
- //# sourceMappingURL=plugin-usage-OU6X6LM3.js.map
40
+ //# sourceMappingURL=plugin-usage-VTL7ZTVC.js.map
@@ -7,8 +7,8 @@ import {
7
7
  pluginNameFromSpec,
8
8
  setupPlugins,
9
9
  warnIfDeprecatedPluginName
10
- } from "./chunk-QUNHS6O3.js";
11
- import "./chunk-XWEGWYDU.js";
10
+ } from "./chunk-4U3DMA2Y.js";
11
+ import "./chunk-PEKUKUCH.js";
12
12
  import "./chunk-TYO2OVAD.js";
13
13
  import "./chunk-7OCVIDC7.js";
14
14
  export {
@@ -21,4 +21,4 @@ export {
21
21
  setupPlugins,
22
22
  warnIfDeprecatedPluginName
23
23
  };
24
- //# sourceMappingURL=plugins-4LJ5IUBI.js.map
24
+ //# sourceMappingURL=plugins-ETY6W3DC.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/cli",
3
- "version": "0.298.0",
3
+ "version": "0.298.2",
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,32 +42,32 @@
42
42
  ],
43
43
  "dependencies": {
44
44
  "ws": "^8.21.1",
45
- "@wrongstack/mcp": "0.298.0",
46
- "@wrongstack/bench": "0.298.0",
47
- "@wrongstack/core": "0.298.0",
48
- "@wrongstack/acp": "0.298.0",
49
- "@wrongstack/providers": "0.298.0",
50
- "@wrongstack/plug-lsp": "0.298.0",
51
- "@wrongstack/kanban": "0.298.0",
52
- "@wrongstack/runtime": "0.298.0",
53
- "@wrongstack/security-scanner": "0.298.0",
54
- "@wrongstack/sdd": "0.298.0",
55
- "@wrongstack/simpleui": "0.298.0",
56
- "@wrongstack/techstack": "0.298.0",
57
- "@wrongstack/tui": "0.298.0",
58
- "@wrongstack/webui": "0.298.0",
59
- "@wrongstack/telegram": "0.298.0",
60
- "@wrongstack/plugins": "0.298.0",
61
- "@wrongstack/tools": "0.298.0",
62
- "@wrongstack/webui-hq": "0.298.0",
63
- "@wrongstack/sage": "0.298.0",
64
- "@wrongstack/webui-server": "0.298.0"
45
+ "@wrongstack/bench": "0.298.2",
46
+ "@wrongstack/acp": "0.298.2",
47
+ "@wrongstack/kanban": "0.298.2",
48
+ "@wrongstack/plug-lsp": "0.298.2",
49
+ "@wrongstack/mcp": "0.298.2",
50
+ "@wrongstack/plugins": "0.298.2",
51
+ "@wrongstack/core": "0.298.2",
52
+ "@wrongstack/sdd": "0.298.2",
53
+ "@wrongstack/runtime": "0.298.2",
54
+ "@wrongstack/providers": "0.298.2",
55
+ "@wrongstack/security-scanner": "0.298.2",
56
+ "@wrongstack/simpleui": "0.298.2",
57
+ "@wrongstack/sage": "0.298.2",
58
+ "@wrongstack/telegram": "0.298.2",
59
+ "@wrongstack/techstack": "0.298.2",
60
+ "@wrongstack/tools": "0.298.2",
61
+ "@wrongstack/tui": "0.298.2",
62
+ "@wrongstack/webui-hq": "0.298.2",
63
+ "@wrongstack/webui-server": "0.298.2",
64
+ "@wrongstack/webui": "0.298.2"
65
65
  },
66
66
  "optionalDependencies": {
67
- "@wrongstack/desktop": "0.298.0"
67
+ "@wrongstack/desktop": "0.298.2"
68
68
  },
69
69
  "devDependencies": {
70
- "@types/node": "^26.1.1",
70
+ "@types/node": "^26.1.2",
71
71
  "@types/ws": "^8.18.1",
72
72
  "jsdom": "^29.1.1",
73
73
  "typescript": "^7.0.2"
@@ -1,57 +0,0 @@
1
- import type { RunResult } from '@wrongstack/core/agent';
2
- import type { ContentBlock } from '@wrongstack/core/types';
3
- export interface ChimeraLeaderWakeAgent {
4
- readonly ctx: {
5
- activeRunSessionId?: string | undefined;
6
- session?: {
7
- id: string;
8
- } | undefined;
9
- };
10
- run(input: string | ContentBlock[], options?: {
11
- signal?: AbortSignal | undefined;
12
- }): Promise<RunResult>;
13
- }
14
- export interface ChimeraLeaderWakeEvents {
15
- emitCustom(event: string, payload: unknown): void;
16
- }
17
- export interface ChimeraLeaderWakeRequest {
18
- sessionId: string;
19
- cwd: string;
20
- changedFiles: readonly string[];
21
- structuredReport: string;
22
- /** Optional stable key supplied by a durable report store. */
23
- reportId?: string | undefined;
24
- }
25
- export interface ChimeraLeaderWakeResult {
26
- key: string;
27
- status: RunResult['status'];
28
- iterations: number;
29
- finalText?: string | undefined;
30
- }
31
- export declare function shouldWakeChimeraLeader(input: {
32
- autoFix: 'off' | 'ask' | 'auto';
33
- hasActionableFindings: boolean;
34
- leaderApproved: boolean;
35
- reviewLength: number;
36
- }): boolean;
37
- export interface ChimeraLeaderWakeQueue {
38
- enqueue(request: ChimeraLeaderWakeRequest): Promise<ChimeraLeaderWakeResult>;
39
- }
40
- export interface CreateChimeraLeaderWakeQueueOptions {
41
- agent: ChimeraLeaderWakeAgent;
42
- events: ChimeraLeaderWakeEvents;
43
- idlePollMs?: number | undefined;
44
- wakeTimeoutMs?: number | undefined;
45
- }
46
- /**
47
- * Serialize system-originated Chimera follow-ups through the session leader.
48
- *
49
- * A Chimera review can finish after the user's turn has returned. Calling
50
- * `Agent.run()` immediately is unsafe when that turn is still draining, so
51
- * the queue waits for the agent's pinned run marker to clear and then starts
52
- * exactly one synthetic follow-up for a report/content key.
53
- */
54
- export declare function createChimeraLeaderWakeQueue(options: CreateChimeraLeaderWakeQueueOptions): ChimeraLeaderWakeQueue;
55
- export declare function chimeraLeaderWakeKey(request: ChimeraLeaderWakeRequest): string;
56
- export declare function buildChimeraLeaderWakePrompt(request: ChimeraLeaderWakeRequest): string;
57
- //# sourceMappingURL=chimera-leader-wake.d.ts.map
@@ -1,10 +0,0 @@
1
- import type { Mailbox } from '@wrongstack/core/coordination';
2
- import type { SessionWriter } from '@wrongstack/core/types';
3
- export declare function waitForChimeraAskApproval(opts: {
4
- mailbox: Mailbox;
5
- messageId: string;
6
- meta: Record<string, unknown>;
7
- session: SessionWriter;
8
- askTimeoutMs: number;
9
- }): Promise<boolean>;
10
- //# sourceMappingURL=execution-chimera-ask.d.ts.map