@wrongstack/cli 0.308.7 → 0.309.1
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.
- package/dist/{acp-5ZLGFHWP.js → acp-7NWCC2GO.js} +3 -3
- package/dist/{auth-WOKC2RVG.js → auth-GZ2FK5KR.js} +3 -3
- package/dist/auth-menu/loopback-server.d.ts +0 -12
- package/dist/{chunk-JQURRYU4.js → chunk-UINEP3E7.js} +2 -2
- package/dist/{chunk-DOJLAULS.js → chunk-WOTGMHAH.js} +36 -26
- package/dist/{chunk-SSSJQVUY.js → chunk-XQ6FI2K6.js} +14 -1
- package/dist/{chunk-7JOMY3HO.js → chunk-ZRZ54GVL.js} +2 -2
- package/dist/{cli-main-L3T4KJKU.js → cli-main-XGDOIPN5.js} +952 -618
- package/dist/diff-renderer.d.ts +17 -0
- package/dist/{execution-6HIKTAUB.js → execution-TYUXABWI.js} +51 -2
- package/dist/index.js +6 -6
- package/dist/{providers-models-4FAKM2WO.js → providers-models-D23WUD74.js} +2 -2
- package/dist/slash-commands/dev.d.ts +50 -0
- package/dist/slash-commands/effort.d.ts +33 -0
- package/dist/wiring/cli-execute-builder.d.ts +110 -85
- package/dist/wiring/cli-slash-commands-setup.d.ts +102 -72
- package/package.json +25 -25
package/dist/diff-renderer.d.ts
CHANGED
|
@@ -1,2 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Colorize a single already-sanitized diff line.
|
|
3
|
+
*
|
|
4
|
+
* Exported so callers that must sanitize untrusted text themselves can apply
|
|
5
|
+
* the styling AFTER sanitizing — sanitizing colorized text would strip the
|
|
6
|
+
* colors, and colorizing before sanitizing would leave the untrusted escape
|
|
7
|
+
* sequences in place. See `permission-prompt.ts`.
|
|
8
|
+
*/
|
|
9
|
+
export declare function diffLineStyle(line: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Render a diff for terminal display.
|
|
12
|
+
*
|
|
13
|
+
* The diff body can carry model-supplied or file-supplied text, so it is
|
|
14
|
+
* sanitized before styling: a raw `\x1b[2J\x1b[H` in a diff line clears the
|
|
15
|
+
* screen and lets a payload repaint the surrounding UI — including an approval
|
|
16
|
+
* prompt's header.
|
|
17
|
+
*/
|
|
1
18
|
export declare function renderDiff(diff: string): string;
|
|
2
19
|
//# sourceMappingURL=diff-renderer.d.ts.map
|
|
@@ -2203,7 +2203,15 @@ function applyChimeraReviewerReadOnlyPolicy(config) {
|
|
|
2203
2203
|
// mutation tools/capabilities so Chimera reviewers cannot repair files.
|
|
2204
2204
|
tools: [...CHIMERA_REVIEW_READ_ONLY_TOOLS],
|
|
2205
2205
|
allowedCapabilities: ["fs.read"],
|
|
2206
|
-
worktree: "off"
|
|
2206
|
+
worktree: "off",
|
|
2207
|
+
// Mandatory model-driven completion: a reviewer must never be killed by
|
|
2208
|
+
// the wall-clock watchdog. At its deadline (or when the leader's session
|
|
2209
|
+
// ends and `Director.requestFinish()` fires) it receives an in-band
|
|
2210
|
+
// `subagent.finish_requested` notification between tool batches and
|
|
2211
|
+
// finishes its report in its own turn within the granted grace window.
|
|
2212
|
+
// Only if that window also elapses does the terminal stop apply — the
|
|
2213
|
+
// reviewer's bounded maximum lifetime.
|
|
2214
|
+
gracefulFinish: true
|
|
2207
2215
|
};
|
|
2208
2216
|
}
|
|
2209
2217
|
|
|
@@ -2284,10 +2292,30 @@ async function finalizeExecutionCleanup(input) {
|
|
|
2284
2292
|
sessionEndProducers.add(tracked);
|
|
2285
2293
|
}
|
|
2286
2294
|
});
|
|
2295
|
+
if (director) {
|
|
2296
|
+
try {
|
|
2297
|
+
director.requestFinish("leader session ended \u2014 finish your review now");
|
|
2298
|
+
} catch (finishErr) {
|
|
2299
|
+
console.warn(
|
|
2300
|
+
JSON.stringify({
|
|
2301
|
+
level: "warn",
|
|
2302
|
+
event: "shutdown.subagent_finish_notify_failed",
|
|
2303
|
+
message: finishErr instanceof Error ? finishErr.message : String(finishErr),
|
|
2304
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
2305
|
+
})
|
|
2306
|
+
);
|
|
2307
|
+
}
|
|
2308
|
+
}
|
|
2287
2309
|
try {
|
|
2288
2310
|
while (sessionEndProducers.size > 0) {
|
|
2289
2311
|
await Promise.allSettled([...sessionEndProducers]);
|
|
2290
2312
|
}
|
|
2313
|
+
if (director) {
|
|
2314
|
+
try {
|
|
2315
|
+
director.requestFinish("leader session ended \u2014 finish your review now");
|
|
2316
|
+
} catch {
|
|
2317
|
+
}
|
|
2318
|
+
}
|
|
2291
2319
|
await chimeraWork?.drainAndClose();
|
|
2292
2320
|
} catch (err) {
|
|
2293
2321
|
console.warn(
|
|
@@ -2300,6 +2328,18 @@ async function finalizeExecutionCleanup(input) {
|
|
|
2300
2328
|
);
|
|
2301
2329
|
}
|
|
2302
2330
|
if (director) {
|
|
2331
|
+
try {
|
|
2332
|
+
director.requestFinish("leader session ended \u2014 finish your review now");
|
|
2333
|
+
} catch (finishErr) {
|
|
2334
|
+
console.warn(
|
|
2335
|
+
JSON.stringify({
|
|
2336
|
+
level: "warn",
|
|
2337
|
+
event: "shutdown.subagent_finish_notify_failed",
|
|
2338
|
+
message: finishErr instanceof Error ? finishErr.message : String(finishErr),
|
|
2339
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
2340
|
+
})
|
|
2341
|
+
);
|
|
2342
|
+
}
|
|
2303
2343
|
try {
|
|
2304
2344
|
await director.terminateAll();
|
|
2305
2345
|
} catch (termErr) {
|
|
@@ -3212,6 +3252,15 @@ function installChimeraCascadeHandler({
|
|
|
3212
3252
|
// Cascade agents are ephemeral infrastructure: like reviewers,
|
|
3213
3253
|
// they must not consume the leader's lifetime maxSpawns budget.
|
|
3214
3254
|
spawnBudgetExempt: true,
|
|
3255
|
+
// Model-driven completion (see core coordination/subagent-finish.ts):
|
|
3256
|
+
// a rung crossing its wall-clock budget is notified in-band
|
|
3257
|
+
// between tool batches and finishes its own turn within the
|
|
3258
|
+
// grace window instead of being killed. Ladder-retry semantics
|
|
3259
|
+
// are intact: a rung that still exhausts the grace window lands
|
|
3260
|
+
// as a `timeout` task result, which advances the ladder, and
|
|
3261
|
+
// `buildRetryPreamble` below already warns the successor that
|
|
3262
|
+
// the tree may hold the dead rung's partial edits.
|
|
3263
|
+
gracefulFinish: true,
|
|
3215
3264
|
// Rung 0 stays unpinned so the role model matrix still decides;
|
|
3216
3265
|
// later rungs pin a model precisely because it just failed.
|
|
3217
3266
|
...attempt.tier === "inherit" ? {} : {
|
|
@@ -6045,4 +6094,4 @@ export {
|
|
|
6045
6094
|
execute,
|
|
6046
6095
|
resolveReviewerFallbackModels
|
|
6047
6096
|
};
|
|
6048
|
-
//# sourceMappingURL=execution-
|
|
6097
|
+
//# sourceMappingURL=execution-TYUXABWI.js.map
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
makePromptDelegate,
|
|
7
7
|
renderAgentsTemplate,
|
|
8
8
|
renderDiff
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-WOTGMHAH.js";
|
|
10
10
|
import {
|
|
11
11
|
theme
|
|
12
12
|
} from "./chunk-QD544J2B.js";
|
|
@@ -1849,9 +1849,9 @@ var subcommandsWithFocusedHelp = Object.keys(helpTable);
|
|
|
1849
1849
|
|
|
1850
1850
|
// src/subcommands/index.ts
|
|
1851
1851
|
var loaders = {
|
|
1852
|
-
acp: async () => (await import("./acp-
|
|
1852
|
+
acp: async () => (await import("./acp-7NWCC2GO.js")).acpCmd,
|
|
1853
1853
|
init: async () => (await import("./init-E2NDDOHI.js")).initCmd,
|
|
1854
|
-
auth: async () => (await import("./auth-
|
|
1854
|
+
auth: async () => (await import("./auth-GZ2FK5KR.js")).authCmd,
|
|
1855
1855
|
update: async () => (await import("./update-VZSOZGYC.js")).updateCmd,
|
|
1856
1856
|
sessions: async () => (await import("./sessions-config-YX2ZPAFM.js")).sessionsCmd,
|
|
1857
1857
|
config: async () => (await import("./sessions-config-YX2ZPAFM.js")).configCmd,
|
|
@@ -1860,8 +1860,8 @@ var loaders = {
|
|
|
1860
1860
|
audit: async () => (await import("./audit-BBR22QH3.js")).auditCmd,
|
|
1861
1861
|
tools: async () => (await import("./tools-skills-UNKLOB7M.js")).toolsCmd,
|
|
1862
1862
|
skills: async () => (await import("./tools-skills-UNKLOB7M.js")).skillsCmd,
|
|
1863
|
-
providers: async () => (await import("./providers-models-
|
|
1864
|
-
models: async () => (await import("./providers-models-
|
|
1863
|
+
providers: async () => (await import("./providers-models-D23WUD74.js")).providersCmd,
|
|
1864
|
+
models: async () => (await import("./providers-models-D23WUD74.js")).modelsCmd,
|
|
1865
1865
|
mcp: async () => (await import("./mcp-CMLFHRG2.js")).mcpCmd,
|
|
1866
1866
|
plugin: async () => (await import("./plugin-usage-26LIIW3P.js")).pluginCmd,
|
|
1867
1867
|
plugins: async () => (await import("./plugin-usage-26LIIW3P.js")).pluginCmd,
|
|
@@ -4466,7 +4466,7 @@ async function initializeCli(argv) {
|
|
|
4466
4466
|
async function main(argv) {
|
|
4467
4467
|
const cliCtx = await initializeCli(argv);
|
|
4468
4468
|
if (typeof cliCtx === "number") return cliCtx;
|
|
4469
|
-
const { runInteractive } = await import("./cli-main-
|
|
4469
|
+
const { runInteractive } = await import("./cli-main-XGDOIPN5.js");
|
|
4470
4470
|
return runInteractive(cliCtx);
|
|
4471
4471
|
}
|
|
4472
4472
|
|
|
@@ -496,7 +496,7 @@ async function modelsCaps(args, deps) {
|
|
|
496
496
|
" disable: " + (rc.disableSupported ? "supported" : "unsupported") + "\n"
|
|
497
497
|
);
|
|
498
498
|
deps.renderer.write(
|
|
499
|
-
" effort: " + (rc.effortSupported ? rc.effortLevels.join(", ") : "unsupported") + "\n"
|
|
499
|
+
" effort: " + (rc.effortSupported === void 0 ? "not enumerated (model reasons; any level forwarded)" : rc.effortSupported ? rc.effortLevels.join(", ") : "unsupported") + "\n"
|
|
500
500
|
);
|
|
501
501
|
deps.renderer.write(" preserve: " + rc.preserveThinking + "\n");
|
|
502
502
|
} else if (caps.reasoning) {
|
|
@@ -661,4 +661,4 @@ export {
|
|
|
661
661
|
modelsCmd,
|
|
662
662
|
providersCmd
|
|
663
663
|
};
|
|
664
|
-
//# sourceMappingURL=providers-models-
|
|
664
|
+
//# sourceMappingURL=providers-models-D23WUD74.js.map
|
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
import type { SlashCommand } from '@wrongstack/core/types';
|
|
2
2
|
import type { SlashCommandContext } from './command-context.js';
|
|
3
|
+
export interface DevCommandResult {
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
exitCode: number;
|
|
7
|
+
/** True when the process died from a signal (timeout kill or foreign). */
|
|
8
|
+
killed: boolean;
|
|
9
|
+
/** True when the program never started (not found / not executable /
|
|
10
|
+
* refused by the Windows shim builder). Rendered as SPAWN ERROR. */
|
|
11
|
+
spawnFailed: boolean;
|
|
12
|
+
/** Signal name when the process died from a signal (e.g. SIGTERM). */
|
|
13
|
+
signalName?: string | undefined;
|
|
14
|
+
/** True only when killed by the /dev timeout itself — not by a foreign
|
|
15
|
+
* signal. The distinction matters: both arrive at `close(null, signal)`,
|
|
16
|
+
* but only the former is a TIMEOUT. */
|
|
17
|
+
timedOut?: boolean | undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Split a command line into program + argv, honoring single quotes, double
|
|
21
|
+
* quotes, and backslash escapes. Deliberately NOT a shell: no variable
|
|
22
|
+
* expansion, no globbing, no operators. Tokens are passed verbatim to a
|
|
23
|
+
* shell-less spawn — which is what makes `&`, `|`, `;` inert on POSIX
|
|
24
|
+
* (BIZ-001: the old code passed the whole string as one argv element, so
|
|
25
|
+
* every command with arguments ENOENT'd) and lets the win32 shim builder
|
|
26
|
+
* validate each token individually.
|
|
27
|
+
*
|
|
28
|
+
* Backslash handling is platform-aware (chimera follow-up to BIZ-002). On
|
|
29
|
+
* POSIX, OUTSIDE quotes `\` escapes the next character (shell convention);
|
|
30
|
+
* INSIDE double quotes it escapes only the four chars bash treats specially
|
|
31
|
+
* there (" \ $ `) plus newline-continuation, and is literal otherwise. On
|
|
32
|
+
* Windows it is the path separator and MUST stay literal everywhere —
|
|
33
|
+
* treating it as an escape silently corrupted `C:\Users\foo` into
|
|
34
|
+
* `C:Usersfoo`, defeating the very path-separator fix BIZ-002 made. Inside
|
|
35
|
+
* single quotes everything is literal on both platforms.
|
|
36
|
+
*
|
|
37
|
+
* Throws on an unterminated quoted argument.
|
|
38
|
+
*/
|
|
39
|
+
export declare function tokenizeCommand(command: string, platform?: NodeJS.Platform): string[];
|
|
40
|
+
/**
|
|
41
|
+
* Run `/dev <command>` without a shell on POSIX and through the canonical
|
|
42
|
+
* hardened cmd.exe shim on Windows.
|
|
43
|
+
*
|
|
44
|
+
* - POSIX: `spawn(program, args, { shell: false })` — metacharacters are
|
|
45
|
+
* literal argv, so `/dev git diff --stat` actually runs (BIZ-001).
|
|
46
|
+
* - Windows: Node cannot spawn `.cmd`/`.bat` shims without a shell
|
|
47
|
+
* (CVE-2024-27980), so the invocation goes through
|
|
48
|
+
* {@link buildWin32CmdShimInvocation}, which quotes every token and refuses
|
|
49
|
+
* the real cmd.exe operators (`& | < > " %`, newlines) outright. Path
|
|
50
|
+
* separators are no longer blocked — they are not operators (BIZ-002).
|
|
51
|
+
*/
|
|
52
|
+
export declare function runCommand(cmd: string, cwd: string, timeout?: number): Promise<DevCommandResult>;
|
|
3
53
|
/**
|
|
4
54
|
* `/dev <shell command>` — execute a shell command from the chat input and
|
|
5
55
|
* display its output. The LLM does NOT see the result — this is a developer
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type ReasoningEffort, type SlashCommand } from '@wrongstack/core/types';
|
|
2
|
+
import type { SlashCommandContext } from './command-context.js';
|
|
3
|
+
import type { WstackPaths } from '@wrongstack/core/utils';
|
|
4
|
+
/**
|
|
5
|
+
* `/effort` — view or set the SESSION-WIDE reasoning effort applied to the
|
|
6
|
+
* active leader model. This is the quick, discoverable front-end for
|
|
7
|
+
* `Config.modelRuntime.reasoning.effort` — the same field `/settings
|
|
8
|
+
* reasoning-effort` writes and the WebUI "Reasoning effort" dropdown edits.
|
|
9
|
+
*
|
|
10
|
+
* Distinct from `/setmodel reasoning-effort <key>`, which pins effort onto a
|
|
11
|
+
* model-matrix entry (role/phase/*) for spawned subagents.
|
|
12
|
+
*
|
|
13
|
+
* Model-aware: when the active model's catalog entry advertises
|
|
14
|
+
* `effortLevels`, only those values are accepted and the view highlights the
|
|
15
|
+
* supported set. When capabilities are unknown, any canonical value is
|
|
16
|
+
* accepted (the runtime resolver drops unsupported values with a warning
|
|
17
|
+
* instead of erroring), and the view says so.
|
|
18
|
+
*
|
|
19
|
+
* Subcommands:
|
|
20
|
+
* (none) Show current effort, model-supported levels, and usage.
|
|
21
|
+
* <level> Set the session effort.
|
|
22
|
+
* clear Remove the setting (provider default applies).
|
|
23
|
+
* matrix Show per-key (role/phase/*) effort overrides, if any.
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildEffortCommand(opts: SlashCommandContext): SlashCommand;
|
|
26
|
+
/**
|
|
27
|
+
* Persist `Config.modelRuntime.reasoning.effort` to the active profile config.
|
|
28
|
+
* `undefined` removes the key entirely (JSON has no undefined). Uses the same
|
|
29
|
+
* read → decrypt → mutate → encrypt → atomicWrite cycle as `/setmodel` and
|
|
30
|
+
* `persistConfigSetting` so encrypted secrets round-trip byte-for-byte.
|
|
31
|
+
*/
|
|
32
|
+
export declare function patchSessionEffort(effort: ReasoningEffort | undefined, paths: WstackPaths, activeProfile: string): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=effort.d.ts.map
|
|
@@ -1,90 +1,115 @@
|
|
|
1
|
+
import { gatedEnhancerReasoning } from '@wrongstack/core/execution';
|
|
2
|
+
import type { Container } from '@wrongstack/core/kernel';
|
|
3
|
+
import type { Logger } from '@wrongstack/core/types';
|
|
4
|
+
import { createAuthPanelHost } from '../auth-menu/panel-service.js';
|
|
5
|
+
import type { CliGovernanceRuntimeHandle } from '../cli-main-helpers.js';
|
|
6
|
+
import type { MultiAgentHost } from '../fleet/host.js';
|
|
7
|
+
import { createRuntimeControllerDeps } from './runtime-controller-deps.js';
|
|
8
|
+
import { createRuntimeLifecycleDeps } from './runtime-lifecycle-deps.js';
|
|
9
|
+
import { createRuntimePickerDeps } from './runtime-picker-deps.js';
|
|
10
|
+
import { toExecuteDeps } from './to-execute-deps.js';
|
|
11
|
+
type X = Parameters<typeof toExecuteDeps>[0];
|
|
12
|
+
type RC = Parameters<typeof createRuntimeControllerDeps>[0];
|
|
13
|
+
type RP = Parameters<typeof createRuntimePickerDeps>[0];
|
|
14
|
+
type RL = Parameters<typeof createRuntimeLifecycleDeps>[0];
|
|
15
|
+
type AUP = Parameters<typeof createAuthPanelHost>[0];
|
|
1
16
|
export declare function runCliExecution(params: {
|
|
2
|
-
agent:
|
|
3
|
-
events:
|
|
4
|
-
slashRegistry:
|
|
5
|
-
tokenCounter:
|
|
6
|
-
sessionRef:
|
|
7
|
-
activateSession:
|
|
8
|
-
config:
|
|
9
|
-
configStore:
|
|
10
|
-
wpaths:
|
|
17
|
+
agent: X['core']['agent'];
|
|
18
|
+
events: X['core']['events'];
|
|
19
|
+
slashRegistry: X['core']['slashRegistry'];
|
|
20
|
+
tokenCounter: X['core']['tokenCounter'];
|
|
21
|
+
sessionRef: NonNullable<X['core']['sessionRef']>;
|
|
22
|
+
activateSession: X['core']['activateSessionIdentity'];
|
|
23
|
+
config: X['core']['config'];
|
|
24
|
+
configStore: X['core']['configStore'];
|
|
25
|
+
wpaths: X['core']['wpaths'];
|
|
11
26
|
projectRoot: string;
|
|
12
|
-
flags:
|
|
13
|
-
positional:
|
|
14
|
-
webuiSessionChild:
|
|
15
|
-
updateInfo:
|
|
16
|
-
attachments:
|
|
17
|
-
brainMailbox:
|
|
18
|
-
session:
|
|
19
|
-
mcpRegistry:
|
|
20
|
-
queueStore:
|
|
21
|
-
context:
|
|
22
|
-
detachTodosCheckpoint:
|
|
23
|
-
sessResult:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
27
|
+
flags: X['core']['flags'];
|
|
28
|
+
positional: X['core']['positional'];
|
|
29
|
+
webuiSessionChild: X['core']['webuiSessionChild'];
|
|
30
|
+
updateInfo: X['core']['updateInfo'];
|
|
31
|
+
attachments: X['session']['attachments'];
|
|
32
|
+
brainMailbox: X['session']['mailbox'];
|
|
33
|
+
session: X['session']['session'];
|
|
34
|
+
mcpRegistry: X['session']['mcpRegistry'];
|
|
35
|
+
queueStore: X['session']['queueStore'];
|
|
36
|
+
context: X['session']['context'];
|
|
37
|
+
detachTodosCheckpoint: X['session']['detachTodosCheckpoint'];
|
|
38
|
+
sessResult: {
|
|
39
|
+
rebindTodosCheckpoint: X['session']['rebindTodosCheckpoint'];
|
|
40
|
+
restoredMessages: X['session']['restoredMessages'];
|
|
41
|
+
restoredToolCalls: X['session']['restoredToolCalls'];
|
|
42
|
+
restoredEvents: X['session']['restoredEvents'];
|
|
43
|
+
};
|
|
44
|
+
sessionStore: X['session']['sessionStore'];
|
|
45
|
+
memoryStore: NonNullable<X['session']['memoryStore']>;
|
|
46
|
+
vectorMemoryStore: X['session']['vectorMemoryStore'];
|
|
47
|
+
vectorMemoryModelCacheDir: X['session']['vectorMemoryModelCacheDir'];
|
|
48
|
+
modeStore: X['session']['modeStore'];
|
|
49
|
+
needsSetup: X['session']['needsSetup'];
|
|
50
|
+
statusTracker: X['provider']['statusTracker'];
|
|
51
|
+
multiAgentHost: MultiAgentHost;
|
|
52
|
+
modelsRegistry: X['provider']['modelsRegistry'];
|
|
53
|
+
savedProviderCfg: X['provider']['savedProviderCfg'];
|
|
54
|
+
resolvedProvider: X['provider']['resolvedProvider'];
|
|
55
|
+
logger: Logger;
|
|
56
|
+
switchProviderAndModel: X['provider']['switchProviderAndModel'];
|
|
57
|
+
applyMaxContext: NonNullable<X['provider']['onModelContextResolved']>;
|
|
58
|
+
renderer: X['ui']['renderer'];
|
|
59
|
+
reader: X['ui']['reader'];
|
|
60
|
+
secretInputController: X['ui']['secretInputController'];
|
|
61
|
+
effectiveMaxContextRef: {
|
|
62
|
+
readonly current: X['ui']['effectiveMaxContext'];
|
|
63
|
+
};
|
|
64
|
+
stats: X['ui']['stats'];
|
|
65
|
+
skillLoader: X['ui']['skillLoader'];
|
|
66
|
+
promptLoader: X['ui']['promptLoader'];
|
|
67
|
+
modeId: X['ui']['modeId'];
|
|
68
|
+
director: X['fleet']['director'];
|
|
69
|
+
coordinatorController: X['fleet']['coordinatorController'];
|
|
70
|
+
fleetStreamController: X['fleet']['fleetStreamController'];
|
|
71
|
+
agentTranscripts?: X['fleet']['agentTranscripts'];
|
|
72
|
+
agentMonitor?: X['fleet']['agentTranscripts'];
|
|
73
|
+
vault: AUP['vault'];
|
|
52
74
|
profileConfigPath: string;
|
|
53
|
-
onPanelOpen:
|
|
54
|
-
interruptController:
|
|
55
|
-
enhanceController:
|
|
56
|
-
activeReasoningConfig:
|
|
57
|
-
configRef:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
75
|
+
onPanelOpen: X['fleet']['onPanelOpen'];
|
|
76
|
+
interruptController: RC['interruptController'];
|
|
77
|
+
enhanceController: RC['enhanceController'];
|
|
78
|
+
activeReasoningConfig: Parameters<typeof gatedEnhancerReasoning>[0];
|
|
79
|
+
configRef: {
|
|
80
|
+
current: X['core']['config'];
|
|
81
|
+
};
|
|
82
|
+
buildProviderForModel: RC['buildProviderForModel'];
|
|
83
|
+
statuslineHiddenItems: RC['statuslineHiddenItems'];
|
|
84
|
+
setStatuslineHiddenItems: NonNullable<RC['setStatuslineHiddenItems']>;
|
|
85
|
+
saveStatuslineHiddenItems: NonNullable<RC['saveStatuslineHiddenItems']>;
|
|
86
|
+
setYoloMode: NonNullable<RC['getYolo']>;
|
|
87
|
+
autonomyMode: ReturnType<RC['getAutonomy']>;
|
|
88
|
+
setAutonomyMode: NonNullable<RC['setAutonomy']>;
|
|
89
|
+
nextPredictEnabled: ReturnType<RC['getNextPredict']>;
|
|
90
|
+
setNextPredict: NonNullable<RC['setNextPredict']>;
|
|
91
|
+
container: Container;
|
|
92
|
+
sessionBridge: RC['sessionBridge'];
|
|
93
|
+
autoCompactor: RC['autoCompactor'];
|
|
94
|
+
getPluginPickerItems: RP['getPluginItems'];
|
|
95
|
+
togglePluginFromPicker: RP['togglePlugin'];
|
|
96
|
+
getToolPickerItems: RP['getToolItems'];
|
|
97
|
+
brain: RP['brain'];
|
|
98
|
+
brainSettings: RP['brainSettings'];
|
|
99
|
+
brainRuntime: RP['brainRuntime'];
|
|
100
|
+
brainLog: ReturnType<NonNullable<RP['getBrainLog']>>;
|
|
101
|
+
currentSuggestions: ReturnType<RL['getCurrentSuggestions']>;
|
|
102
|
+
setCurrentSuggestions: RL['setCurrentSuggestions'];
|
|
103
|
+
eternalEngine: ReturnType<RL['getEternalEngine']>;
|
|
104
|
+
parallelEngine: ReturnType<RL['getParallelEngine']>;
|
|
105
|
+
sddRunRegistry: RL['sddRunRegistry'];
|
|
106
|
+
eternalListeners: RL['eternalListeners'];
|
|
107
|
+
stageListeners: RL['stageListeners'];
|
|
108
|
+
runSageSessionHygiene: RL['runSageSessionHygiene'];
|
|
109
|
+
pluginHost: RL['pluginHost'];
|
|
110
|
+
teardownHandlers: RL['teardownHandlers'];
|
|
111
|
+
governanceHandle: CliGovernanceRuntimeHandle | undefined;
|
|
112
|
+
setConfig: RC['setConfig'];
|
|
89
113
|
}): Promise<number>;
|
|
114
|
+
export {};
|
|
90
115
|
//# sourceMappingURL=cli-execute-builder.d.ts.map
|
|
@@ -1,86 +1,116 @@
|
|
|
1
|
+
import type { Container } from '@wrongstack/core/kernel';
|
|
2
|
+
import { createCommandHostAdapters } from './command-host-adapters.js';
|
|
3
|
+
import { createEternalCommandHandlers } from './eternal-command-handlers.js';
|
|
4
|
+
import { createFleetCommandHandlers } from './fleet-command-handlers.js';
|
|
5
|
+
import { createSddHandlers } from './sdd-handlers.js';
|
|
6
|
+
import { createSessionCommandHandlers } from './session-command-handlers.js';
|
|
7
|
+
import { buildCommandHostSlashCommands } from './slash-commands.js';
|
|
8
|
+
type B = Parameters<typeof buildCommandHostSlashCommands>[0];
|
|
9
|
+
type A = Parameters<typeof createCommandHostAdapters>[0];
|
|
10
|
+
type F = Parameters<typeof createFleetCommandHandlers>[0];
|
|
11
|
+
type SE = Parameters<typeof createSessionCommandHandlers>[0];
|
|
12
|
+
type E = Parameters<typeof createEternalCommandHandlers>[0];
|
|
13
|
+
type SD = Parameters<typeof createSddHandlers>[0];
|
|
1
14
|
export declare function setupCliSlashCommands(params: {
|
|
2
|
-
slashRegistry:
|
|
3
|
-
toolRegistry:
|
|
4
|
-
agent:
|
|
5
|
-
interruptController:
|
|
6
|
-
reader:
|
|
7
|
-
wpaths:
|
|
8
|
-
container:
|
|
9
|
-
sessionStore:
|
|
10
|
-
skillLoader:
|
|
11
|
-
tokenCounter:
|
|
12
|
-
renderer:
|
|
13
|
-
events:
|
|
14
|
-
memoryStore:
|
|
15
|
+
slashRegistry: B['registry'];
|
|
16
|
+
toolRegistry: B['toolRegistry'];
|
|
17
|
+
agent: A['agent'];
|
|
18
|
+
interruptController: NonNullable<B['interruptController']>;
|
|
19
|
+
reader: A['reader'];
|
|
20
|
+
wpaths: B['paths'];
|
|
21
|
+
container: Container;
|
|
22
|
+
sessionStore: B['sessionStore'];
|
|
23
|
+
skillLoader: B['skillLoader'];
|
|
24
|
+
tokenCounter: B['tokenCounter'];
|
|
25
|
+
renderer: B['renderer'];
|
|
26
|
+
events: B['events'];
|
|
27
|
+
memoryStore: B['memoryStore'];
|
|
15
28
|
/**
|
|
16
29
|
* Vector memory store (semantic recall channel). When supplied, the
|
|
17
30
|
* `/memory diagnostics` and `/memory race` slash commands can
|
|
18
31
|
* surface cross-system health and the lexical vs semantic channel
|
|
19
32
|
* comparison.
|
|
20
33
|
*/
|
|
21
|
-
vectorMemoryStore?:
|
|
22
|
-
context:
|
|
34
|
+
vectorMemoryStore?: B['vectorMemoryStore'];
|
|
35
|
+
context: NonNullable<B['context']>;
|
|
23
36
|
cwd: string;
|
|
24
37
|
projectRoot: string;
|
|
25
|
-
metricsSink:
|
|
26
|
-
healthRegistry:
|
|
27
|
-
metricsStatus:
|
|
38
|
+
metricsSink: B['metricsSink'];
|
|
39
|
+
healthRegistry: B['healthRegistry'];
|
|
40
|
+
metricsStatus: B['metricsStatus'];
|
|
28
41
|
planPath: string;
|
|
29
|
-
modeStore:
|
|
30
|
-
fleetStreamController:
|
|
31
|
-
enhanceController:
|
|
32
|
-
provider:
|
|
33
|
-
config:
|
|
34
|
-
buildProviderForId:
|
|
35
|
-
statuslineConfigDeps:
|
|
36
|
-
getCurrentHiddenItems: () =>
|
|
37
|
-
setStatuslineHiddenItems:
|
|
38
|
-
saveStatuslineHiddenItems:
|
|
39
|
-
agentsMonitorController:
|
|
40
|
-
agentMonitor:
|
|
41
|
-
onPanelOpen:
|
|
42
|
-
configStore:
|
|
43
|
-
secretInputController:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
42
|
+
modeStore: B['modeStore'];
|
|
43
|
+
fleetStreamController: B['fleetStreamController'];
|
|
44
|
+
enhanceController: B['enhanceController'];
|
|
45
|
+
provider: B['llmProvider'];
|
|
46
|
+
config: SD['config'];
|
|
47
|
+
buildProviderForId: NonNullable<B['createProvider']>;
|
|
48
|
+
statuslineConfigDeps: B['statuslineConfig'];
|
|
49
|
+
getCurrentHiddenItems: () => NonNullable<B['statuslineHiddenItems']>;
|
|
50
|
+
setStatuslineHiddenItems: NonNullable<B['setStatuslineHiddenItems']>;
|
|
51
|
+
saveStatuslineHiddenItems: NonNullable<B['saveStatuslineHiddenItems']>;
|
|
52
|
+
agentsMonitorController: B['agentsMonitorController'];
|
|
53
|
+
agentMonitor: B['agentMonitor'];
|
|
54
|
+
onPanelOpen: B['onPanelOpen'];
|
|
55
|
+
configStore: B['configStore'];
|
|
56
|
+
secretInputController: {
|
|
57
|
+
readSecret: NonNullable<B['readSecret']>;
|
|
58
|
+
readText: NonNullable<B['readText']>;
|
|
59
|
+
};
|
|
60
|
+
vault: B['vault'];
|
|
61
|
+
brain: B['brain'];
|
|
62
|
+
brainSettings: B['brainSettings'];
|
|
63
|
+
brainRuntime: B['brainRuntime'];
|
|
64
|
+
initialBrainLog: ReturnType<NonNullable<B['getBrainLog']>>;
|
|
65
|
+
coordinatorController: B['coordinatorController'];
|
|
66
|
+
statusTracker: B['statusTracker'];
|
|
67
|
+
shadowController: B['shadowController'];
|
|
68
|
+
multiAgentHost: F['multiAgentHost'];
|
|
69
|
+
director: ReturnType<F['getDirector']>;
|
|
70
|
+
sessionRef: SD['sessionRef'];
|
|
71
|
+
session: SD['session'];
|
|
56
72
|
fleetRootForPromotion: string;
|
|
57
73
|
profileConfigPath: string;
|
|
58
|
-
effectiveMaxContextRef:
|
|
59
|
-
autoCompactor:
|
|
60
|
-
eventWiring:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
74
|
+
effectiveMaxContextRef: SE['effectiveMaxContext'];
|
|
75
|
+
autoCompactor: SE['autoCompactor'];
|
|
76
|
+
eventWiring: {
|
|
77
|
+
setEffectiveMaxContext: SE['setEventMaxContext'];
|
|
78
|
+
};
|
|
79
|
+
mcpRegistry: SE['mcpRegistry'];
|
|
80
|
+
setYoloMode: SE['onYolo'];
|
|
81
|
+
getNextPredict: SE['getNextPredict'];
|
|
82
|
+
setNextPredict: SE['setNextPredict'];
|
|
83
|
+
getCurrentSuggestions: SE['getCurrentSuggestions'];
|
|
84
|
+
setCurrentSuggestions: SE['setCurrentSuggestions'];
|
|
85
|
+
teardownHandlers: SE['teardownHandlers'];
|
|
86
|
+
pluginHost: SE['pluginHost'];
|
|
87
|
+
logger: SD['logger'];
|
|
88
|
+
flags: SE['flags'];
|
|
89
|
+
errorRing: SE['errorRing'];
|
|
90
|
+
stats: SE['stats'];
|
|
91
|
+
broadcastEternalIteration: E['onIteration'];
|
|
92
|
+
broadcastAutonomyStage: E['onStage'];
|
|
93
|
+
getAutonomyMode: E['getAutonomyMode'];
|
|
94
|
+
setAutonomyMode: E['setAutonomyMode'];
|
|
95
|
+
autonomyModeRef: E['autonomyModeRef'];
|
|
96
|
+
getEternalEngine: E['getEternalEngine'];
|
|
97
|
+
setEternalEngine: E['setEternalEngine'];
|
|
98
|
+
getParallelEngine: E['getParallelEngine'];
|
|
99
|
+
setParallelEngine: E['setParallelEngine'];
|
|
100
|
+
sddRunRegistry: SD['sddRunRegistry'];
|
|
101
|
+
goalHost?: {
|
|
102
|
+
onGoalStart: NonNullable<B['onGoalStart']>;
|
|
103
|
+
onGoalPause: NonNullable<B['onGoalPause']>;
|
|
104
|
+
onGoalResume: NonNullable<B['onGoalResume']>;
|
|
105
|
+
onGoalStop: NonNullable<B['onGoalStop']>;
|
|
106
|
+
getGoalRunner: NonNullable<B['getGoalRunner']>;
|
|
107
|
+
onGoalMoveTask: NonNullable<B['onGoalMoveTask']>;
|
|
108
|
+
onGoalAssignTask: NonNullable<B['onGoalAssignTask']>;
|
|
109
|
+
onGoalAddTask: NonNullable<B['onGoalAddTask']>;
|
|
110
|
+
onGoalRetryTask: NonNullable<B['onGoalRetryTask']>;
|
|
111
|
+
onWorktree: NonNullable<B['onWorktree']>;
|
|
112
|
+
};
|
|
113
|
+
setConfig: SE['setConfig'];
|
|
85
114
|
}): void;
|
|
115
|
+
export {};
|
|
86
116
|
//# sourceMappingURL=cli-slash-commands-setup.d.ts.map
|