@wrongstack/cli 1.0.29 → 1.0.33
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/data/providers.json +206 -77
- package/dist/{acp-QWCBMQSO.js → acp-EDGUWU7N.js} +3 -6
- package/dist/{audit-46YK5DSC.js → audit-KCBTHUQI.js} +1 -1
- package/dist/{auth-TE55JF4Z.js → auth-SUHKFFO4.js} +136 -59
- package/dist/auth-menu/github-copilot-oauth.d.ts +1 -35
- package/dist/auth-menu/index-input.d.ts +3 -0
- package/dist/auth-menu/panel-flow-bridge.d.ts +29 -0
- package/dist/auth-menu/panel-service.d.ts +3 -34
- package/dist/auth-menu/provider-auth-login.d.ts +1 -1
- package/dist/auto-discover-providers-JX346GOM.js +7 -0
- package/dist/automation-MCDFCIMV.js +369 -0
- package/dist/{bench-GTLPM22B.js → bench-MMZHFHDL.js} +152 -43
- package/dist/boot/brain-decision-log.d.ts +1 -1
- package/dist/boot/system-prompt-builder.d.ts +1 -1
- package/dist/boot/system-prompt-menu.d.ts +11 -2
- package/dist/boot/tui-coordinator-setup.d.ts +2 -0
- package/dist/boot/tui-startup-output.d.ts +11 -0
- package/dist/{boot-auto-thin-6Q56FY3F.js → boot-auto-thin-K2DHHYIW.js} +3 -3
- package/dist/{chronicle-UTFETHP6.js → chronicle-PBJS7BN6.js} +5 -3
- package/dist/{chunk-KT34LWIS.js → chunk-24C6VVLM.js} +28 -26
- package/dist/{chunk-WRYZLEXP.js → chunk-2EZ2DHOW.js} +41 -7
- package/dist/{chunk-7IQWQCBH.js → chunk-3LEFXLAW.js} +39 -39
- package/dist/{chunk-WSTVGC2C.js → chunk-4BX2YDTQ.js} +13 -6
- package/dist/{chunk-SFBFYIOW.js → chunk-4MDRHMX4.js} +3 -2
- package/dist/{chunk-RDGGWMTI.js → chunk-65VNCAF6.js} +2 -22
- package/dist/{chunk-WQZW3RDP.js → chunk-7BNBD4PE.js} +2 -2
- package/dist/{chunk-RZ4ZDRYA.js → chunk-DIOODAYM.js} +2 -2
- package/dist/{chunk-L2RVEQWO.js → chunk-HHRYIDOW.js} +2 -2
- package/dist/{chunk-YHYINL47.js → chunk-LKFKO4JW.js} +2 -2
- package/dist/{chunk-Q4INH2DG.js → chunk-MPQCHBDJ.js} +2 -1
- package/dist/{chunk-2ERX3RPN.js → chunk-P3GRLV47.js} +30 -17
- package/dist/{chunk-ZMX5HRLI.js → chunk-P3Q3KMFH.js} +6 -4
- package/dist/chunk-PA4VBCXS.js +115 -0
- package/dist/{chunk-KOEO4CJG.js → chunk-PGNERAZL.js} +4 -4
- package/dist/{chunk-6A7URMWN.js → chunk-RQ4UBKYH.js} +3 -3
- package/dist/{chunk-X756ZS72.js → chunk-SUDNPYWD.js} +2 -2
- package/dist/{chunk-IFQ6NQPL.js → chunk-SWOPJHXI.js} +7 -7
- package/dist/{chunk-LDCGZJTC.js → chunk-TWSQTQKR.js} +12 -4
- package/dist/chunk-TXAFIERF.js +37 -0
- package/dist/{chunk-BZHT5GPF.js → chunk-WHEYHDIE.js} +2 -2
- package/dist/{chunk-LBPLTTZ6.js → chunk-WTJDSTYD.js} +4 -4
- package/dist/{chunk-IS2PPBQV.js → chunk-X4LW5CZM.js} +8 -4
- package/dist/{chunk-BBHWW6LR.js → chunk-YL4KCHZG.js} +18 -6
- package/dist/{chunk-LUMETJFO.js → chunk-ZYACRPLN.js} +2 -2
- package/dist/{cli-context-6RONY47P.js → cli-context-7HK67B2Z.js} +83 -76
- package/dist/cli-context.d.ts +3 -1
- package/dist/cli-infrastructure.d.ts +33 -0
- package/dist/{cli-main-YS3HIOSD.js → cli-main-TQGLKB6D.js} +3768 -2748
- package/dist/config-doctor.d.ts +1 -1
- package/dist/{config-transfer-RUWLDCNK.js → config-transfer-UE37X4B5.js} +2 -2
- package/dist/{execution-JEYF2L7O.js → execution-C2IECWF7.js} +4981 -4836
- package/dist/execution-chimera-handlers.d.ts +6 -0
- package/dist/execution-session-callbacks.d.ts +36 -0
- package/dist/execution-webui.d.ts +3 -0
- package/dist/execution.d.ts +1 -1
- package/dist/fleet/host-acp-runner.d.ts +15 -0
- package/dist/fleet/host-budget.d.ts +13 -0
- package/dist/fleet/host-context.d.ts +5 -0
- package/dist/fleet/host-explore-companion.d.ts +6 -15
- package/dist/fleet/host.d.ts +2 -0
- package/dist/fleet/status-broadcast.d.ts +1 -1
- package/dist/{hq-BNK67HOE.js → hq-KBFDKTDD.js} +13 -7
- package/dist/{hq-server-PCQACV7Y.js → hq-server-AVNKZ2PV.js} +2 -2
- package/dist/{hq-service-BMMJAHRT.js → hq-service-FGB7BY2D.js} +3 -3
- package/dist/index.js +126 -10
- package/dist/{mailbox-serve-FW3JCCPK.js → mailbox-serve-S536N66F.js} +3 -2
- package/dist/{modeldiag-W7XAE625.js → modeldiag-NEPTLFZW.js} +26 -8
- package/dist/{per-subcommand-help-MWQWFIAV.js → per-subcommand-help-VKPV3OEY.js} +2 -2
- package/dist/{plugin-usage-CIGOOTX3.js → plugin-usage-3TZGROK7.js} +3 -3
- package/dist/{plugins-HQTXUD6A.js → plugins-ITH4SLO6.js} +4 -4
- package/dist/pre-launch/project-check.d.ts +2 -8
- package/dist/pre-launch.d.ts +1 -1
- package/dist/{project-manifest-7NSFVBM3.js → project-manifest-FTFDCCTZ.js} +2 -2
- package/dist/{project-picker-SVBXMPKX.js → project-picker-NZYJKQQC.js} +3 -3
- package/dist/provider-cloud-config.d.ts +4 -0
- package/dist/provider-config-utils.d.ts +1 -1
- package/dist/{providers-models-5Z2PJTEW.js → providers-models-O75MKLN2.js} +52 -18
- package/dist/{remote-GB5VXCCT.js → remote-C74BCNND.js} +5 -5
- package/dist/{rewind-JA3ZLCNM.js → rewind-7AULJS7F.js} +7 -5
- package/dist/sandbox-TYGD6FI2.js +131 -0
- package/dist/services/sdd/project-context.d.ts +1 -1
- package/dist/{sessions-config-JGIZRNT6.js → sessions-config-VE26SB56.js} +5 -5
- package/dist/short-circuit-flags-D6VAG47Y.js +10 -0
- package/dist/slash-commands/openai-quota.d.ts +12 -6
- package/dist/slash-commands/sandbox.d.ts +5 -0
- package/dist/slash-commands/scout-stats.d.ts +46 -0
- package/dist/slash-commands/sdd-inspect-commands.d.ts +9 -0
- package/dist/slash-commands/sdd-session-commands.d.ts +19 -0
- package/dist/slash-commands/sdd.d.ts +1 -1
- package/dist/slash-commands/zai-plan.d.ts +26 -0
- package/dist/{standalone-auto-update-TOTRGCSA.js → standalone-auto-update-VQC4GYCM.js} +3 -3
- package/dist/{standalone-update-LZO3MNLH.js → standalone-update-HZHDZZOR.js} +2 -2
- package/dist/subcommands/handlers/automation-credentials.d.ts +8 -0
- package/dist/subcommands/handlers/automation.d.ts +3 -0
- package/dist/subcommands/handlers/bench-experiments.d.ts +5 -0
- package/dist/subcommands/handlers/sandbox.d.ts +5 -0
- package/dist/{subcommands-WX4GDMWB.js → subcommands-CLI6QTLU.js} +2 -2
- package/dist/{tools-skills-GH24UCBY.js → tools-skills-33AI6K6S.js} +2 -2
- package/dist/tui-provider-quota-menu.d.ts +5 -0
- package/dist/{typesafe-WA5O3KVS.js → typesafe-NHC322W5.js} +27 -8
- package/dist/{typesafe-topic-replay-ZILIU3WS.js → typesafe-topic-replay-DB2AYL7V.js} +2 -2
- package/dist/{typesafe-triage-replay-FGAW7QM7.js → typesafe-triage-replay-27NDAZ3V.js} +2 -2
- package/dist/{update-TDZX4IL2.js → update-J5WHAFPE.js} +3 -3
- package/dist/{update-check-J5ZVKS73.js → update-check-VLVT4IV2.js} +2 -2
- package/dist/{version-help-HN32QYQN.js → version-help-ATOKGMTK.js} +2 -2
- package/dist/webui-server/prefs-seeding.d.ts +1 -0
- package/dist/webui-server/route-contexts.d.ts +1 -0
- package/dist/{webui-server-EXJWLB3X.js → webui-server-GQOVLQS3.js} +71 -34
- package/dist/webui-session-retirement.d.ts +10 -0
- package/dist/wiring/command-host-state.d.ts +2 -0
- package/dist/wiring/director-announcement.d.ts +3 -1
- package/dist/wiring/session-establishment.d.ts +10 -8
- package/dist/wiring/session-runtime.d.ts +1 -1
- package/dist/wiring/session.d.ts +3 -0
- package/package.json +30 -30
- package/dist/auto-discover-providers-DXR25GTG.js +0 -7
- package/dist/chunk-D5GB5MHA.js +0 -87
- package/dist/chunk-SIGUWXAA.js +0 -43
- package/dist/short-circuit-flags-5N2LPK4R.js +0 -10
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
maskedKey,
|
|
3
3
|
mutateConfigProviders
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZYACRPLN.js";
|
|
5
5
|
import {
|
|
6
6
|
activeProfileConfigPath
|
|
7
7
|
} from "./chunk-YMXXOOFN.js";
|
|
@@ -29,6 +29,7 @@ import { buildChildEnv, color } from "@wrongstack/core/utils";
|
|
|
29
29
|
var USAGE = [
|
|
30
30
|
"Usage:",
|
|
31
31
|
" wstack typesafe [status] show account and feature configuration",
|
|
32
|
+
" wstack typesafe on|off enable/disable all Jev requests (keeps key)",
|
|
32
33
|
" wstack typesafe login [--route <id>] store an API key in the active profile",
|
|
33
34
|
" [--endpoint <url>] [--model <id>] configure a proxy or pin a model",
|
|
34
35
|
" wstack typesafe test send one question and report the answer",
|
|
@@ -58,6 +59,18 @@ var typesafeCmd = async (args, deps) => {
|
|
|
58
59
|
}
|
|
59
60
|
const sub = (args[0] ?? "status").toLowerCase();
|
|
60
61
|
switch (sub) {
|
|
62
|
+
case "on":
|
|
63
|
+
case "off": {
|
|
64
|
+
const configPath = activeProfileConfigPath(deps.paths, deps.config);
|
|
65
|
+
await mutateConfigProviders(configPath, deps.vault, (_providers, config) => {
|
|
66
|
+
config["typesafe"] = {
|
|
67
|
+
...config["typesafe"],
|
|
68
|
+
enabled: sub === "on"
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
write(`Jev ${sub === "on" ? "enabled" : "disabled"}. Saved in ${configPath}.`);
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
61
74
|
case "status":
|
|
62
75
|
return showStatus(deps, write);
|
|
63
76
|
case "login":
|
|
@@ -67,9 +80,9 @@ var typesafeCmd = async (args, deps) => {
|
|
|
67
80
|
case "lint-conventions":
|
|
68
81
|
return await lintConventions(deps, write);
|
|
69
82
|
case "replay-topic-shift":
|
|
70
|
-
return await (await import("./typesafe-topic-replay-
|
|
83
|
+
return await (await import("./typesafe-topic-replay-DB2AYL7V.js")).replayTopicShift(deps, write);
|
|
71
84
|
case "replay-memory-triage":
|
|
72
|
-
return await (await import("./typesafe-triage-replay-
|
|
85
|
+
return await (await import("./typesafe-triage-replay-27NDAZ3V.js")).replayMemoryTriage(deps, write);
|
|
73
86
|
case "replay-brain-ledger":
|
|
74
87
|
return await (await import("./typesafe-brain-replay-C5276FVR.js")).replayBrainLedger(deps, write);
|
|
75
88
|
case "check-judgments":
|
|
@@ -108,7 +121,9 @@ function showStatus(deps, write) {
|
|
|
108
121
|
}
|
|
109
122
|
write("");
|
|
110
123
|
write(
|
|
111
|
-
color.bold("Judgments") + color.dim(
|
|
124
|
+
color.bold("Judgments") + color.dim(
|
|
125
|
+
" (requires typesafe.enabled: true; typesafe.judgments.<id>: false turns one off)"
|
|
126
|
+
)
|
|
112
127
|
);
|
|
113
128
|
for (const feature of TYPESAFE_JUDGMENT_FEATURES) {
|
|
114
129
|
const on = isTypeSafeJudgmentEnabled(deps.config, feature);
|
|
@@ -127,7 +142,7 @@ function showStatus(deps, write) {
|
|
|
127
142
|
);
|
|
128
143
|
}
|
|
129
144
|
}
|
|
130
|
-
if (account.status !== "ready" && features.length > 0) {
|
|
145
|
+
if (account.status !== "ready" && account.status !== "disabled" && features.length > 0) {
|
|
131
146
|
write("");
|
|
132
147
|
write(` ${color.amber("Run `wstack typesafe login` \u2014 these switches do nothing today.")}`);
|
|
133
148
|
return 1;
|
|
@@ -167,7 +182,10 @@ async function login(deps, write) {
|
|
|
167
182
|
return next;
|
|
168
183
|
};
|
|
169
184
|
const settings = update(deps.config.typesafe ?? {});
|
|
170
|
-
const preview = resolveTypeSafeAccount({
|
|
185
|
+
const preview = resolveTypeSafeAccount({
|
|
186
|
+
config: { typesafe: { ...settings, enabled: true } },
|
|
187
|
+
env: {}
|
|
188
|
+
});
|
|
171
189
|
if (preview.status === "unusable") {
|
|
172
190
|
write(`${preview.reason}. For a custom route, pass --endpoint <url>.`);
|
|
173
191
|
return 1;
|
|
@@ -186,6 +204,7 @@ async function login(deps, write) {
|
|
|
186
204
|
config["typesafe"] = { ...update(existing), apiKey: key.trim() };
|
|
187
205
|
});
|
|
188
206
|
write(`${color.green("\u2713")} Key stored in ${configPath}`);
|
|
207
|
+
write(" Storing a key does not enable Jev. Use `wstack typesafe on` when you want it.");
|
|
189
208
|
if (route) write(` route set to ${route}`);
|
|
190
209
|
write(` Verify it with ${color.bold("wstack typesafe test")}.`);
|
|
191
210
|
return 0;
|
|
@@ -194,7 +213,7 @@ async function test(deps, write) {
|
|
|
194
213
|
const account = resolveTypeSafeAccount({ config: deps.config, restGate: null });
|
|
195
214
|
if (account.status !== "ready") {
|
|
196
215
|
write(`${color.red("\u2717")} ${account.reason}`);
|
|
197
|
-
write(" Run `wstack typesafe login`.");
|
|
216
|
+
if (account.status !== "disabled") write(" Run `wstack typesafe login`.");
|
|
198
217
|
return 1;
|
|
199
218
|
}
|
|
200
219
|
write(`Asking ${account.endpoint} (${account.model})\u2026`);
|
|
@@ -321,4 +340,4 @@ async function lintConventions(deps, write) {
|
|
|
321
340
|
export {
|
|
322
341
|
typesafeCmd
|
|
323
342
|
};
|
|
324
|
-
//# sourceMappingURL=typesafe-
|
|
343
|
+
//# sourceMappingURL=typesafe-NHC322W5.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-CZTXF6HY.js";
|
|
4
4
|
import {
|
|
5
5
|
createProviderForId
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-YL4KCHZG.js";
|
|
7
7
|
|
|
8
8
|
// src/subcommands/handlers/typesafe-topic-replay.ts
|
|
9
9
|
import { readdir, readFile } from "node:fs/promises";
|
|
@@ -231,4 +231,4 @@ async function replayTopicShift(deps, write) {
|
|
|
231
231
|
export {
|
|
232
232
|
replayTopicShift
|
|
233
233
|
};
|
|
234
|
-
//# sourceMappingURL=typesafe-topic-replay-
|
|
234
|
+
//# sourceMappingURL=typesafe-topic-replay-DB2AYL7V.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createProviderForId
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YL4KCHZG.js";
|
|
4
4
|
|
|
5
5
|
// src/subcommands/handlers/typesafe-triage-replay.ts
|
|
6
6
|
import * as path from "node:path";
|
|
@@ -212,4 +212,4 @@ async function replayMemoryTriage(deps, write) {
|
|
|
212
212
|
export {
|
|
213
213
|
replayMemoryTriage
|
|
214
214
|
};
|
|
215
|
-
//# sourceMappingURL=typesafe-triage-replay-
|
|
215
|
+
//# sourceMappingURL=typesafe-triage-replay-27NDAZ3V.js.map
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
detectUpdatePackageName,
|
|
4
4
|
runUpdateCommand,
|
|
5
5
|
updateCmd
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PGNERAZL.js";
|
|
7
7
|
import "./chunk-U3SS4NRH.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-DIOODAYM.js";
|
|
9
9
|
import "./chunk-F5DCFAKI.js";
|
|
10
10
|
export {
|
|
11
11
|
detectUpdatePackageManager,
|
|
@@ -13,4 +13,4 @@ export {
|
|
|
13
13
|
runUpdateCommand,
|
|
14
14
|
updateCmd
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=update-
|
|
16
|
+
//# sourceMappingURL=update-J5WHAFPE.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
fetchLatestFromNpm,
|
|
6
6
|
getUpdateNotification,
|
|
7
7
|
isNewer
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-DIOODAYM.js";
|
|
9
9
|
import "./chunk-F5DCFAKI.js";
|
|
10
10
|
export {
|
|
11
11
|
cachePath,
|
|
@@ -15,4 +15,4 @@ export {
|
|
|
15
15
|
getUpdateNotification,
|
|
16
16
|
isNewer
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=update-check-
|
|
18
|
+
//# sourceMappingURL=update-check-VLVT4IV2.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
helpCmd,
|
|
3
3
|
versionCmd
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WHEYHDIE.js";
|
|
5
5
|
import "./chunk-F5DCFAKI.js";
|
|
6
6
|
export {
|
|
7
7
|
helpCmd,
|
|
8
8
|
versionCmd
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=version-help-
|
|
10
|
+
//# sourceMappingURL=version-help-ATOKGMTK.js.map
|
|
@@ -21,6 +21,7 @@ interface CliWebUIOptions {
|
|
|
21
21
|
fallbackProfiles?: Record<string, string[]> | undefined;
|
|
22
22
|
favoriteModels?: string[] | undefined;
|
|
23
23
|
disabledModels?: string[] | undefined;
|
|
24
|
+
disabledProviders?: string[] | undefined;
|
|
24
25
|
favoriteModelsOnly?: boolean | undefined;
|
|
25
26
|
modelAvailabilitySchedule?: ModelBlackoutRule[] | undefined;
|
|
26
27
|
fallbackAuto?: boolean | undefined;
|
|
@@ -81,6 +81,7 @@ export declare function createWebuiRouteContexts({ opts, profileConfigPath, prof
|
|
|
81
81
|
projectsCtx: EmbeddedProjectContext;
|
|
82
82
|
mailboxRoutes: import("@wrongstack/webui-server").MailboxRouteHandlers;
|
|
83
83
|
chimeraRoutes: import("@wrongstack/webui-server").ChimeraRouteHandlers;
|
|
84
|
+
codeAssistRoutes: import("@wrongstack/webui-server").CodeAssistRouteHandlers | undefined;
|
|
84
85
|
sessionsCtx: EmbeddedSessionContext;
|
|
85
86
|
connectionCtx: EmbeddedConversationContext;
|
|
86
87
|
};
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
WEBUI_SESSION_CHILD_CAPABILITIES
|
|
3
|
+
} from "./chunk-P3Q3KMFH.js";
|
|
1
4
|
import {
|
|
2
5
|
createKanbanRunMirror
|
|
3
6
|
} from "./chunk-VCYZ3WZV.js";
|
|
@@ -5,8 +8,9 @@ import {
|
|
|
5
8
|
createKanbanSupervisor
|
|
6
9
|
} from "./chunk-R4QGL6GB.js";
|
|
7
10
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
loadConfigProviders,
|
|
12
|
+
mutateConfigProviders
|
|
13
|
+
} from "./chunk-ZYACRPLN.js";
|
|
10
14
|
import {
|
|
11
15
|
createHqCommandDispatcher,
|
|
12
16
|
createProjectKanbanAssignHandler,
|
|
@@ -18,10 +22,6 @@ import {
|
|
|
18
22
|
import {
|
|
19
23
|
CLI_VERSION
|
|
20
24
|
} from "./chunk-F5DCFAKI.js";
|
|
21
|
-
import {
|
|
22
|
-
loadConfigProviders,
|
|
23
|
-
mutateConfigProviders
|
|
24
|
-
} from "./chunk-LUMETJFO.js";
|
|
25
25
|
|
|
26
26
|
// src/webui-server-lifecycle.ts
|
|
27
27
|
import { toErrorMessage } from "@wrongstack/core/utils/error";
|
|
@@ -374,6 +374,36 @@ function runWebuiServerLifecycle({
|
|
|
374
374
|
return { stopped };
|
|
375
375
|
}
|
|
376
376
|
|
|
377
|
+
// src/webui-session-retirement.ts
|
|
378
|
+
import { resolvePendingConfirmsForSession } from "@wrongstack/webui-server";
|
|
379
|
+
function createWebuiSessionRetirement(inputs) {
|
|
380
|
+
const { opts, getForegroundSession, pendingConfirms, abortControllers, sessionAgents } = inputs;
|
|
381
|
+
const retireUndisplayedSessions = (sessionIds) => {
|
|
382
|
+
for (const sessionId of sessionIds) {
|
|
383
|
+
if (!sessionId || sessionId === opts.session.id) continue;
|
|
384
|
+
if (sessionId === getForegroundSession().id) continue;
|
|
385
|
+
const orphaned = resolvePendingConfirmsForSession(pendingConfirms, sessionId);
|
|
386
|
+
if (orphaned > 0) {
|
|
387
|
+
console.log(
|
|
388
|
+
JSON.stringify({
|
|
389
|
+
level: "warn",
|
|
390
|
+
event: "webui.confirm_orphaned_by_tab_close",
|
|
391
|
+
sessionId,
|
|
392
|
+
count: orphaned,
|
|
393
|
+
message: `Denied ${orphaned} unanswerable permission prompt(s) for closed session ${sessionId}.`
|
|
394
|
+
})
|
|
395
|
+
);
|
|
396
|
+
}
|
|
397
|
+
if (abortControllers.has(sessionId)) continue;
|
|
398
|
+
opts.onSessionRetired?.(sessionId);
|
|
399
|
+
const agent = sessionAgents.peek(sessionId);
|
|
400
|
+
if (!agent || agent === opts.agent) continue;
|
|
401
|
+
void sessionAgents.endAndClose(sessionId);
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
return { retireUndisplayedSessions };
|
|
405
|
+
}
|
|
406
|
+
|
|
377
407
|
// src/webui-server.ts
|
|
378
408
|
import * as path7 from "node:path";
|
|
379
409
|
import { createCompatibilityTrustBoundary, DefaultSecretScrubber } from "@wrongstack/core/security";
|
|
@@ -387,6 +417,7 @@ import {
|
|
|
387
417
|
clientWantsSession,
|
|
388
418
|
collectDisplayedSessionIds,
|
|
389
419
|
createCustomModeStore,
|
|
420
|
+
createDefaultFileWatcherMetrics,
|
|
390
421
|
createEmbeddedMessageRouter,
|
|
391
422
|
createEmbeddedProviderOperations,
|
|
392
423
|
createSessionAgentRegistry,
|
|
@@ -396,7 +427,6 @@ import {
|
|
|
396
427
|
findInstalledPackageJson,
|
|
397
428
|
isStrictPort,
|
|
398
429
|
resolveAuthToken,
|
|
399
|
-
resolvePendingConfirmsForSession,
|
|
400
430
|
scheduleOwnerlessEmptySessionCleanup,
|
|
401
431
|
sendSerialized,
|
|
402
432
|
stampDispatchSession,
|
|
@@ -525,6 +555,7 @@ function createEmbeddedClientRegistration(opts, clients, abortControllers, getSe
|
|
|
525
555
|
}
|
|
526
556
|
function startEmbeddedLiveStatusLogger(opts, clients, abortControllers, getSessionAgents, terminalLogView) {
|
|
527
557
|
return startWebUILiveStatusLogger({
|
|
558
|
+
title: opts.surface === "simpleui" ? "SimpleUI" : "WebUI",
|
|
528
559
|
events: opts.events,
|
|
529
560
|
dashboard: terminalLogView,
|
|
530
561
|
getSessionList: () => {
|
|
@@ -664,7 +695,7 @@ function startWebuiCredentialWatcher({
|
|
|
664
695
|
}
|
|
665
696
|
} catch {
|
|
666
697
|
}
|
|
667
|
-
const routingChanged = snapshot.fallbackModels !== void 0 || snapshot.fallbackBridge !== void 0 || hadFallbackBridge || snapshot.fallbackProfiles !== void 0 || snapshot.favoriteModels !== void 0 || snapshot.disabledModels !== void 0 || snapshot.favoriteModelsOnly !== void 0 || snapshot.modelMatrix !== void 0 || snapshot.fallbackAuto !== void 0;
|
|
698
|
+
const routingChanged = snapshot.fallbackModels !== void 0 || snapshot.fallbackBridge !== void 0 || hadFallbackBridge || snapshot.fallbackProfiles !== void 0 || snapshot.favoriteModels !== void 0 || snapshot.disabledModels !== void 0 || snapshot.disabledProviders !== void 0 || snapshot.favoriteModelsOnly !== void 0 || snapshot.modelMatrix !== void 0 || snapshot.fallbackAuto !== void 0;
|
|
668
699
|
if (routingChanged) {
|
|
669
700
|
const configStore = opts.agent.container?.safeResolve?.(TOKENS.ConfigStore);
|
|
670
701
|
configStore?.update({
|
|
@@ -673,6 +704,7 @@ function startWebuiCredentialWatcher({
|
|
|
673
704
|
...snapshot.fallbackProfiles !== void 0 ? { fallbackProfiles: snapshot.fallbackProfiles } : {},
|
|
674
705
|
...snapshot.favoriteModels !== void 0 ? { favoriteModels: snapshot.favoriteModels } : {},
|
|
675
706
|
...snapshot.disabledModels !== void 0 ? { disabledModels: snapshot.disabledModels } : {},
|
|
707
|
+
...snapshot.disabledProviders !== void 0 ? { disabledProviders: snapshot.disabledProviders } : {},
|
|
676
708
|
...snapshot.favoriteModelsOnly !== void 0 ? { favoriteModelsOnly: snapshot.favoriteModelsOnly } : {},
|
|
677
709
|
...snapshot.modelMatrix !== void 0 ? { modelMatrix: snapshot.modelMatrix } : {},
|
|
678
710
|
...snapshot.fallbackAuto !== void 0 ? { fallbackAuto: snapshot.fallbackAuto } : {}
|
|
@@ -1137,6 +1169,9 @@ function createPrefsSeeding(opts) {
|
|
|
1137
1169
|
if (Array.isArray(payload["disabledModels"])) {
|
|
1138
1170
|
patchLiveAppConfig({ disabledModels: payload["disabledModels"] });
|
|
1139
1171
|
}
|
|
1172
|
+
if (Array.isArray(payload["disabledProviders"])) {
|
|
1173
|
+
patchLiveAppConfig({ disabledProviders: payload["disabledProviders"] });
|
|
1174
|
+
}
|
|
1140
1175
|
if (typeof payload["favoriteModelsOnly"] === "boolean") {
|
|
1141
1176
|
patchLiveAppConfig({ favoriteModelsOnly: payload["favoriteModelsOnly"] });
|
|
1142
1177
|
}
|
|
@@ -1206,9 +1241,10 @@ import { TOKENS as TOKENS2 } from "@wrongstack/core/kernel";
|
|
|
1206
1241
|
import { SkillInstaller } from "@wrongstack/core/skills";
|
|
1207
1242
|
import { PromptUsageStore } from "@wrongstack/core/storage";
|
|
1208
1243
|
import { resolveTokenSavingTier } from "@wrongstack/core/types";
|
|
1209
|
-
import { resolveWstackPaths as resolveWstackPaths3 } from "@wrongstack/core/utils";
|
|
1244
|
+
import { isOutsideProject, resolveWstackPaths as resolveWstackPaths3 } from "@wrongstack/core/utils";
|
|
1210
1245
|
import {
|
|
1211
1246
|
createChimeraRouteHandlers,
|
|
1247
|
+
createCodeAssistRouteHandlers,
|
|
1212
1248
|
createMailboxRouteHandlers,
|
|
1213
1249
|
rebuildSystemPrompt
|
|
1214
1250
|
} from "@wrongstack/webui-server";
|
|
@@ -1359,6 +1395,7 @@ function createWebuiRouteContexts({
|
|
|
1359
1395
|
},
|
|
1360
1396
|
profileConfigPath,
|
|
1361
1397
|
current: () => opts.appConfig?.systemPrompt?.variant ?? "default",
|
|
1398
|
+
outsideProject: () => isOutsideProject(promptProjectRoot()),
|
|
1362
1399
|
// Patch the live config before rebuilding — `persistPrefs` writes the
|
|
1363
1400
|
// file, and the builder reads the variant off the in-memory object.
|
|
1364
1401
|
applyVariant: async (variant, sessionId) => {
|
|
@@ -1435,6 +1472,12 @@ function createWebuiRouteContexts({
|
|
|
1435
1472
|
send,
|
|
1436
1473
|
log: (m) => console.warn(m)
|
|
1437
1474
|
});
|
|
1475
|
+
const codeAssistRoutes = opts.sddSubagentFactory ? createCodeAssistRouteHandlers({
|
|
1476
|
+
subagentFactory: opts.sddSubagentFactory,
|
|
1477
|
+
projectRoot: () => opts.projectRoot ?? opts.agent.ctx.projectRoot ?? process.cwd(),
|
|
1478
|
+
send,
|
|
1479
|
+
log: (m) => console.warn(m)
|
|
1480
|
+
}) : void 0;
|
|
1438
1481
|
const sessionsCtx = {
|
|
1439
1482
|
opts,
|
|
1440
1483
|
buildSessionStart: (overrides) => buildSessionStartPayload(overrides),
|
|
@@ -1491,6 +1534,7 @@ function createWebuiRouteContexts({
|
|
|
1491
1534
|
projectsCtx,
|
|
1492
1535
|
mailboxRoutes,
|
|
1493
1536
|
chimeraRoutes,
|
|
1537
|
+
codeAssistRoutes,
|
|
1494
1538
|
sessionsCtx,
|
|
1495
1539
|
connectionCtx
|
|
1496
1540
|
};
|
|
@@ -1709,7 +1753,9 @@ async function runWebUI(opts) {
|
|
|
1709
1753
|
let wsPort = httpPort;
|
|
1710
1754
|
const globalRoot = opts.globalConfigPath ? path7.dirname(opts.globalConfigPath) : wstackGlobalRoot();
|
|
1711
1755
|
const profileConfigPath = opts.profileConfigPath ?? opts.globalConfigPath ?? path7.join(globalRoot, "config.json");
|
|
1712
|
-
const
|
|
1756
|
+
const rawRateLimit = process.env["WEBUI_RATE_LIMIT"]?.trim() ?? "";
|
|
1757
|
+
const parsedRateLimit = /^\d+$/.test(rawRateLimit) ? Number(rawRateLimit) : Number.NaN;
|
|
1758
|
+
const rateLimitMax = Number.isSafeInteger(parsedRateLimit) && parsedRateLimit >= 0 ? parsedRateLimit : 600;
|
|
1713
1759
|
const clients = /* @__PURE__ */ new Map();
|
|
1714
1760
|
const pendingConfirms = /* @__PURE__ */ new Map();
|
|
1715
1761
|
const secretScrubber = new DefaultSecretScrubber();
|
|
@@ -1816,6 +1862,11 @@ async function runWebUI(opts) {
|
|
|
1816
1862
|
onFleetPing: () => {
|
|
1817
1863
|
void fleetBroadcastCli?.();
|
|
1818
1864
|
},
|
|
1865
|
+
// Without this, /debug/watcher-metrics 503s and the Debug Dashboard has to
|
|
1866
|
+
// report the watcher as "Unavailable". The CLI host runs no status watcher
|
|
1867
|
+
// of its own, so this object stays all-zero and watcherActive reads false —
|
|
1868
|
+
// which is the truthful state for an embedded host.
|
|
1869
|
+
watcherMetrics: createDefaultFileWatcherMetrics(),
|
|
1819
1870
|
onTechStackEvent: (event) => broadcast(event),
|
|
1820
1871
|
getLlm: () => opts.agent.ctx.provider && opts.agent.ctx.model ? { provider: opts.agent.ctx.provider, model: opts.agent.ctx.model } : void 0,
|
|
1821
1872
|
projectRoot: opts.projectRoot,
|
|
@@ -1980,6 +2031,7 @@ async function runWebUI(opts) {
|
|
|
1980
2031
|
modelsRegistry: opts.modelsRegistry,
|
|
1981
2032
|
providerAuthRegistry: opts.providerAuthRegistry,
|
|
1982
2033
|
getDisabledModels: () => opts.appConfig?.disabledModels ?? [],
|
|
2034
|
+
getDisabledProviders: () => opts.appConfig?.disabledProviders ?? [],
|
|
1983
2035
|
send,
|
|
1984
2036
|
broadcast,
|
|
1985
2037
|
log: (m) => console.log(m)
|
|
@@ -2036,29 +2088,13 @@ async function runWebUI(opts) {
|
|
|
2036
2088
|
} catch {
|
|
2037
2089
|
}
|
|
2038
2090
|
});
|
|
2039
|
-
const retireUndisplayedSessions = (
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
JSON.stringify({
|
|
2047
|
-
level: "warn",
|
|
2048
|
-
event: "webui.confirm_orphaned_by_tab_close",
|
|
2049
|
-
sessionId,
|
|
2050
|
-
count: orphaned,
|
|
2051
|
-
message: `Denied ${orphaned} unanswerable permission prompt(s) for closed session ${sessionId}.`
|
|
2052
|
-
})
|
|
2053
|
-
);
|
|
2054
|
-
}
|
|
2055
|
-
if (abortControllers.has(sessionId)) continue;
|
|
2056
|
-
opts.onSessionRetired?.(sessionId);
|
|
2057
|
-
const agent = sessionAgents.peek(sessionId);
|
|
2058
|
-
if (!agent || agent === opts.agent) continue;
|
|
2059
|
-
void sessionAgents.endAndClose(sessionId);
|
|
2060
|
-
}
|
|
2061
|
-
};
|
|
2091
|
+
const { retireUndisplayedSessions } = createWebuiSessionRetirement({
|
|
2092
|
+
opts,
|
|
2093
|
+
getForegroundSession: () => foregroundSession,
|
|
2094
|
+
pendingConfirms,
|
|
2095
|
+
abortControllers,
|
|
2096
|
+
sessionAgents
|
|
2097
|
+
});
|
|
2062
2098
|
const refreshSessionHistory = async () => {
|
|
2063
2099
|
const list = await opts.sessionStore?.list(200);
|
|
2064
2100
|
if (!list) return;
|
|
@@ -2153,6 +2189,7 @@ async function runWebUI(opts) {
|
|
|
2153
2189
|
projectCtx: routeContexts.projectsCtx,
|
|
2154
2190
|
mailboxRoutes: routeContexts.mailboxRoutes,
|
|
2155
2191
|
chimeraRoutes: routeContexts.chimeraRoutes,
|
|
2192
|
+
codeAssistRoutes: routeContexts.codeAssistRoutes,
|
|
2156
2193
|
sessionCtx: routeContexts.sessionsCtx,
|
|
2157
2194
|
conversationCtx: routeContexts.connectionCtx,
|
|
2158
2195
|
goalHandler,
|
|
@@ -2246,4 +2283,4 @@ async function runWebUI(opts) {
|
|
|
2246
2283
|
export {
|
|
2247
2284
|
runWebUI
|
|
2248
2285
|
};
|
|
2249
|
-
//# sourceMappingURL=webui-server-
|
|
2286
|
+
//# sourceMappingURL=webui-server-GQOVLQS3.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function createWebuiSessionRetirement(inputs: {
|
|
2
|
+
opts: import('./webui-server-options.js').CliWebUIOptions;
|
|
3
|
+
getForegroundSession: () => import('@wrongstack/core/types').SessionWriter;
|
|
4
|
+
pendingConfirms: Map<string, import('@wrongstack/webui-server').PendingConfirm>;
|
|
5
|
+
abortControllers: Map<string, AbortController>;
|
|
6
|
+
sessionAgents: import('@wrongstack/webui-server').SessionAgentRegistry;
|
|
7
|
+
}): {
|
|
8
|
+
retireUndisplayedSessions: (sessionIds: string[]) => void;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=webui-session-retirement.d.ts.map
|
|
@@ -83,6 +83,7 @@ export declare function setupCommandHostState(input: CommandHostStateInput): Pro
|
|
|
83
83
|
prompt_variant?: import("@wrongstack/core/statusline").StatuslineLine;
|
|
84
84
|
queue?: import("@wrongstack/core/statusline").StatuslineLine;
|
|
85
85
|
quota?: import("@wrongstack/core/statusline").StatuslineLine;
|
|
86
|
+
sandbox?: import("@wrongstack/core/statusline").StatuslineLine;
|
|
86
87
|
sessions?: import("@wrongstack/core/statusline").StatuslineLine;
|
|
87
88
|
side_effects?: import("@wrongstack/core/statusline").StatuslineLine;
|
|
88
89
|
state?: import("@wrongstack/core/statusline").StatuslineLine;
|
|
@@ -129,6 +130,7 @@ export declare function setupCommandHostState(input: CommandHostStateInput): Pro
|
|
|
129
130
|
prompt_variant?: import("@wrongstack/core/statusline").StatuslineDensity;
|
|
130
131
|
queue?: import("@wrongstack/core/statusline").StatuslineDensity;
|
|
131
132
|
quota?: import("@wrongstack/core/statusline").StatuslineDensity;
|
|
133
|
+
sandbox?: import("@wrongstack/core/statusline").StatuslineDensity;
|
|
132
134
|
sessions?: import("@wrongstack/core/statusline").StatuslineDensity;
|
|
133
135
|
side_effects?: import("@wrongstack/core/statusline").StatuslineDensity;
|
|
134
136
|
state?: import("@wrongstack/core/statusline").StatuslineDensity;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Director } from '@wrongstack/core/coordination';
|
|
2
2
|
import type { ToolRegistry } from '@wrongstack/core/registry';
|
|
3
|
+
import type { Logger } from '@wrongstack/core/types';
|
|
3
4
|
import type { MultiAgentHost } from '../fleet/host.js';
|
|
4
5
|
/**
|
|
5
6
|
* Phase: director activation + announcement (card #7C slice 4).
|
|
@@ -7,7 +8,7 @@ import type { MultiAgentHost } from '../fleet/host.js';
|
|
|
7
8
|
* Verbatim extraction of the cli-main.ts director block: resolves the Director
|
|
8
9
|
* from the multi-agent host, restores any fleet checkpoint state, registers
|
|
9
10
|
* the roster tools, and prints the mode announcement (short line for browser
|
|
10
|
-
* surfaces, full paths for the
|
|
11
|
+
* surfaces, full paths for REPL and the TUI log file; budget summary only when resuming
|
|
11
12
|
* from a checkpoint so fresh starts stay quiet).
|
|
12
13
|
*
|
|
13
14
|
* Returns the resolved Director (or null when Director mode is disabled) so
|
|
@@ -20,6 +21,7 @@ export declare function ensureDirectorAndAnnounce(args: {
|
|
|
20
21
|
renderer: {
|
|
21
22
|
writeInfo(msg: string): void;
|
|
22
23
|
};
|
|
24
|
+
logger?: Pick<Logger, 'info'> | undefined;
|
|
23
25
|
toolRegistry: ToolRegistry;
|
|
24
26
|
flags: Record<string, unknown>;
|
|
25
27
|
/** Fleet paths are optional in DirectorAutonomyResult; the announcement prints them verbatim. */
|
|
@@ -4,10 +4,12 @@ import { setupSession } from './session.js';
|
|
|
4
4
|
interface SessionEstablishmentArgs {
|
|
5
5
|
/** Container used to resolve SessionStore + TokenCounter. */
|
|
6
6
|
container: Pick<CliContext['container'], 'resolve'>;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Passed to `setupSession` whole. Rebuilding it here field by field dropped
|
|
9
|
+
* `features` / `tools`, so the leader context always opened with filesystem
|
|
10
|
+
* access outside the project root, whatever the config said.
|
|
11
|
+
*/
|
|
12
|
+
config: Parameters<typeof setupSession>[0]['config'];
|
|
11
13
|
wpaths: Parameters<typeof setupSession>[0]['wpaths'];
|
|
12
14
|
projectRoot: string;
|
|
13
15
|
cwd: string;
|
|
@@ -29,11 +31,11 @@ interface SessionEstablishmentArgs {
|
|
|
29
31
|
tuiOwnsScreen: boolean;
|
|
30
32
|
}
|
|
31
33
|
export declare function setupSessionEstablishment(args: SessionEstablishmentArgs): Promise<{
|
|
32
|
-
sessionStore: import("@wrongstack/core").SessionStore;
|
|
33
|
-
tokenCounter: import("@wrongstack/core").TokenCounter;
|
|
34
|
-
context: import("@wrongstack/core").Context;
|
|
34
|
+
sessionStore: import("@wrongstack/core/types").SessionStore;
|
|
35
|
+
tokenCounter: import("@wrongstack/core/types").TokenCounter;
|
|
36
|
+
context: import("@wrongstack/core/agent").Context;
|
|
35
37
|
planPath: string;
|
|
36
|
-
session: import("@wrongstack/core").SessionWriter;
|
|
38
|
+
session: import("@wrongstack/core/types").SessionWriter;
|
|
37
39
|
attachments: import("@wrongstack/core/storage").DefaultAttachmentStore;
|
|
38
40
|
queueStore: import("@wrongstack/core/storage").QueueStore;
|
|
39
41
|
detachTodosCheckpoint: () => void | Promise<void>;
|
|
@@ -48,7 +48,7 @@ interface SessionRuntimeArgs {
|
|
|
48
48
|
}
|
|
49
49
|
export declare function setupSessionRuntime(args: SessionRuntimeArgs): {
|
|
50
50
|
errorRing: import("../session-event-wiring.js").ErrorEntry[];
|
|
51
|
-
sessionBridge: import("@wrongstack/core").SessionEventBridge;
|
|
51
|
+
sessionBridge: import("@wrongstack/core/storage").SessionEventBridge;
|
|
52
52
|
stats: SessionStats;
|
|
53
53
|
pipelines: import("@wrongstack/core/agent").AgentPipelines;
|
|
54
54
|
refreshActiveReasoningConfig: (providerId: string, modelId: string) => Promise<void>;
|
package/dist/wiring/session.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrongstack/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.33",
|
|
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,42 +41,42 @@
|
|
|
41
41
|
"data"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@wrongstack/acp": "1.0.
|
|
45
|
-
"@wrongstack/bench": "1.0.
|
|
46
|
-
"@wrongstack/core": "1.0.
|
|
47
|
-
"@wrongstack/kanban": "1.0.
|
|
48
|
-
"@wrongstack/mcp": "1.0.
|
|
49
|
-
"@wrongstack/persistence": "1.0.
|
|
50
|
-
"@wrongstack/plug-lsp": "1.0.
|
|
51
|
-
"@wrongstack/plugins": "1.0.
|
|
52
|
-
"@wrongstack/primitives": "1.0.
|
|
53
|
-
"@wrongstack/providers": "1.0.
|
|
54
|
-
"@wrongstack/requirement-intake": "1.0.
|
|
55
|
-
"@wrongstack/runtime": "1.0.
|
|
56
|
-
"@wrongstack/sage": "1.0.
|
|
57
|
-
"@wrongstack/sage-mcp": "1.0.
|
|
58
|
-
"@wrongstack/sdd": "1.0.
|
|
59
|
-
"@wrongstack/security-scanner": "1.0.
|
|
60
|
-
"@wrongstack/simpleui": "1.0.
|
|
61
|
-
"@wrongstack/techstack": "1.0.
|
|
62
|
-
"@wrongstack/telegram": "1.0.
|
|
63
|
-
"@wrongstack/tools": "1.0.
|
|
64
|
-
"@wrongstack/tui": "1.0.
|
|
65
|
-
"@wrongstack/vector-memory": "1.0.
|
|
66
|
-
"@wrongstack/webui": "1.0.
|
|
67
|
-
"@wrongstack/webui-hq": "1.0.
|
|
68
|
-
"@wrongstack/webui-protocol": "1.0.
|
|
69
|
-
"@wrongstack/webui-server": "1.0.
|
|
70
|
-
"@wrongstack/wrongtrace": "1.0.
|
|
44
|
+
"@wrongstack/acp": "1.0.33",
|
|
45
|
+
"@wrongstack/bench": "1.0.33",
|
|
46
|
+
"@wrongstack/core": "1.0.33",
|
|
47
|
+
"@wrongstack/kanban": "1.0.33",
|
|
48
|
+
"@wrongstack/mcp": "1.0.33",
|
|
49
|
+
"@wrongstack/persistence": "1.0.33",
|
|
50
|
+
"@wrongstack/plug-lsp": "1.0.33",
|
|
51
|
+
"@wrongstack/plugins": "1.0.33",
|
|
52
|
+
"@wrongstack/primitives": "1.0.33",
|
|
53
|
+
"@wrongstack/providers": "1.0.33",
|
|
54
|
+
"@wrongstack/requirement-intake": "1.0.33",
|
|
55
|
+
"@wrongstack/runtime": "1.0.33",
|
|
56
|
+
"@wrongstack/sage": "1.0.33",
|
|
57
|
+
"@wrongstack/sage-mcp": "1.0.33",
|
|
58
|
+
"@wrongstack/sdd": "1.0.33",
|
|
59
|
+
"@wrongstack/security-scanner": "1.0.33",
|
|
60
|
+
"@wrongstack/simpleui": "1.0.33",
|
|
61
|
+
"@wrongstack/techstack": "1.0.33",
|
|
62
|
+
"@wrongstack/telegram": "1.0.33",
|
|
63
|
+
"@wrongstack/tools": "1.0.33",
|
|
64
|
+
"@wrongstack/tui": "1.0.33",
|
|
65
|
+
"@wrongstack/vector-memory": "1.0.33",
|
|
66
|
+
"@wrongstack/webui": "1.0.33",
|
|
67
|
+
"@wrongstack/webui-hq": "1.0.33",
|
|
68
|
+
"@wrongstack/webui-protocol": "1.0.33",
|
|
69
|
+
"@wrongstack/webui-server": "1.0.33",
|
|
70
|
+
"@wrongstack/wrongtrace": "1.0.33",
|
|
71
71
|
"ws": "^8.21.3"
|
|
72
72
|
},
|
|
73
73
|
"optionalDependencies": {
|
|
74
|
-
"@wrongstack/desktop": "1.0.
|
|
74
|
+
"@wrongstack/desktop": "1.0.33"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@types/node": "^26.5.1",
|
|
78
78
|
"@types/ws": "^8.18.1",
|
|
79
|
-
"@wrongstack/governance": "1.0.
|
|
79
|
+
"@wrongstack/governance": "1.0.33",
|
|
80
80
|
"jsdom": "^30.0.1",
|
|
81
81
|
"typescript": "^7.0.2"
|
|
82
82
|
},
|