@wrongstack/cli 1.0.12 → 1.0.14
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/{chunk-TNZBQG45.js → chunk-DUF5FEWD.js} +2 -2
- package/dist/{chunk-YRC3I3LE.js → chunk-MZY6UDWC.js} +14 -3
- package/dist/{chunk-OJR7K3OI.js → chunk-U3PDQOYU.js} +2 -2
- package/dist/{cli-context-5IF7ZYEY.js → cli-context-6MTVFJPO.js} +5 -5
- package/dist/{cli-main-6LMQSS66.js → cli-main-6JWASRH2.js} +88 -25
- package/dist/fleet/host-context.d.ts +1 -1
- package/dist/{hq-NO2NWGU4.js → hq-O5BOP6UY.js} +12 -2
- package/dist/hq-server/auth.d.ts +10 -0
- package/dist/{hq-server-KE5YDNGG.js → hq-server-YW4MJCKH.js} +2 -2
- package/dist/index.js +10 -4
- package/dist/{short-circuit-flags-72E77TJI.js → short-circuit-flags-T6EFG3W6.js} +2 -2
- package/dist/{subcommands-EJI7DBQS.js → subcommands-3ILCNR2T.js} +2 -2
- package/package.json +28 -28
|
@@ -22,7 +22,7 @@ async function handleHelpVersionShortCircuit(argv) {
|
|
|
22
22
|
}
|
|
23
23
|
if (earlyFlags["help"] === true) {
|
|
24
24
|
if (positional.length > 0) {
|
|
25
|
-
const { subcommandNames } = await import("./subcommands-
|
|
25
|
+
const { subcommandNames } = await import("./subcommands-3ILCNR2T.js");
|
|
26
26
|
if (subcommandNames.includes(positional[0])) {
|
|
27
27
|
const first = positional[0];
|
|
28
28
|
const deep = positional[1];
|
|
@@ -43,4 +43,4 @@ async function handleHelpVersionShortCircuit(argv) {
|
|
|
43
43
|
export {
|
|
44
44
|
handleHelpVersionShortCircuit
|
|
45
45
|
};
|
|
46
|
-
//# sourceMappingURL=chunk-
|
|
46
|
+
//# sourceMappingURL=chunk-DUF5FEWD.js.map
|
|
@@ -231,7 +231,7 @@ function hqAuthRequired(mutableAuth, requireBrowserAuth) {
|
|
|
231
231
|
return (requireBrowserAuth ?? mutableAuth.requireBrowserAuth) === true || mutableAuth.requireAuthFloor === true || mutableAuth.browserTokens.size > 0 || mutableAuth.passwordHash !== void 0;
|
|
232
232
|
}
|
|
233
233
|
function hqClientAuthRequired(mutableAuth) {
|
|
234
|
-
return mutableAuth.
|
|
234
|
+
return mutableAuth.clientTokens.size > 0 || hqAuthRequired(mutableAuth);
|
|
235
235
|
}
|
|
236
236
|
function extractBrowserToken(req, url) {
|
|
237
237
|
const queryToken = url.searchParams.get("token");
|
|
@@ -4880,8 +4880,19 @@ async function startHqServerWithAuth(options, host, port, dataDir, firstRunAuth)
|
|
|
4880
4880
|
bootstrapStore
|
|
4881
4881
|
};
|
|
4882
4882
|
const handleRequest = createHqRouter(routerDeps);
|
|
4883
|
+
const closeSocketsOfRemovedSessions = (before) => {
|
|
4884
|
+
for (const [browser, sessionId] of browserSocketSessions) {
|
|
4885
|
+
if (!before.has(sessionId) || sessions.has(sessionId)) continue;
|
|
4886
|
+
if (browser.readyState === WebSocket3.OPEN) {
|
|
4887
|
+
browser.close(1008, "Browser session revoked");
|
|
4888
|
+
}
|
|
4889
|
+
}
|
|
4890
|
+
};
|
|
4883
4891
|
const httpServer = http.createServer((req, res) => {
|
|
4884
|
-
|
|
4892
|
+
const sessionsBefore = sessions.size > 0 ? new Set(sessions.keys()) : void 0;
|
|
4893
|
+
void handleRequest(req, res).finally(() => {
|
|
4894
|
+
if (sessionsBefore !== void 0) closeSocketsOfRemovedSessions(sessionsBefore);
|
|
4895
|
+
});
|
|
4885
4896
|
});
|
|
4886
4897
|
const wss = new WebSocketServer({ noServer: true, maxPayload: 1 * 1024 * 1024 });
|
|
4887
4898
|
const browserHeartbeatTimer = setInterval(() => {
|
|
@@ -5089,4 +5100,4 @@ export {
|
|
|
5089
5100
|
startHqServer,
|
|
5090
5101
|
HqInsecureExposureError2 as HqInsecureExposureError
|
|
5091
5102
|
};
|
|
5092
|
-
//# sourceMappingURL=chunk-
|
|
5103
|
+
//# sourceMappingURL=chunk-MZY6UDWC.js.map
|
|
@@ -31,7 +31,7 @@ var loaders = {
|
|
|
31
31
|
quick: async () => (await import("./quick-CNB4Z3HS.js")).quickCmd,
|
|
32
32
|
bench: async () => (await import("./bench-YBU6BVQP.js")).benchCmd,
|
|
33
33
|
chronicle: async () => (await import("./chronicle-UTFETHP6.js")).chronicleCmd,
|
|
34
|
-
hq: async () => (await import("./hq-
|
|
34
|
+
hq: async () => (await import("./hq-O5BOP6UY.js")).hqCmd,
|
|
35
35
|
mailbox: async () => (await import("./mailbox-serve-X3CR6VFW.js")).mailboxServeCmd,
|
|
36
36
|
permissions: async () => (await import("./permissions-CFDLXETM.js")).permissionsCmd,
|
|
37
37
|
project: async () => (await import("./project-AOQI5XTK.js")).projectCmd,
|
|
@@ -51,4 +51,4 @@ export {
|
|
|
51
51
|
subcommands,
|
|
52
52
|
subcommandNames
|
|
53
53
|
};
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-U3PDQOYU.js.map
|
|
@@ -19,17 +19,17 @@ import {
|
|
|
19
19
|
} from "./chunk-GPPRNAKW.js";
|
|
20
20
|
import {
|
|
21
21
|
subcommands
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-U3PDQOYU.js";
|
|
23
23
|
import {
|
|
24
24
|
renderDeepHelp,
|
|
25
25
|
renderFocusedHelp
|
|
26
26
|
} from "./chunk-JX6KL7OF.js";
|
|
27
27
|
import {
|
|
28
28
|
handleHelpVersionShortCircuit
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-DUF5FEWD.js";
|
|
30
30
|
import {
|
|
31
31
|
DEFAULT_PORT
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-MZY6UDWC.js";
|
|
33
33
|
import "./chunk-HXJYHAR4.js";
|
|
34
34
|
import {
|
|
35
35
|
resolveHqPasswordInput
|
|
@@ -866,7 +866,7 @@ async function isPortInUse(host, port) {
|
|
|
866
866
|
}
|
|
867
867
|
async function handleHqShortCircuit(flags) {
|
|
868
868
|
if (flags["hq"] !== true) return null;
|
|
869
|
-
const { startHqServer } = await import("./hq-server-
|
|
869
|
+
const { startHqServer } = await import("./hq-server-YW4MJCKH.js");
|
|
870
870
|
const tunnelRequested = flags["tunnel"] === true;
|
|
871
871
|
const rawPublicUrl = typeof flags["hq-public-url"] === "string" ? flags["hq-public-url"] : process.env.WRONGSTACK_HQ_PUBLIC_URL;
|
|
872
872
|
let publicOrigin;
|
|
@@ -3303,4 +3303,4 @@ async function initializeCli(argv) {
|
|
|
3303
3303
|
export {
|
|
3304
3304
|
initializeCli
|
|
3305
3305
|
};
|
|
3306
|
-
//# sourceMappingURL=cli-context-
|
|
3306
|
+
//# sourceMappingURL=cli-context-6MTVFJPO.js.map
|
|
@@ -3228,8 +3228,8 @@ import {
|
|
|
3228
3228
|
runtimeToolReferencesFromText
|
|
3229
3229
|
} from "@wrongstack/core/agent-catalog";
|
|
3230
3230
|
import { TOKENS as TOKENS3 } from "@wrongstack/core/kernel";
|
|
3231
|
-
import { formatProjectSuppliedBlock } from "@wrongstack/core/utils";
|
|
3232
|
-
import { getSageRetrieval } from "@wrongstack/sage";
|
|
3231
|
+
import { formatMemoryEvidenceBlock, formatProjectSuppliedBlock } from "@wrongstack/core/utils";
|
|
3232
|
+
import { formatMemoryHintsDetailed, getSageRetrieval } from "@wrongstack/sage";
|
|
3233
3233
|
var EAGER_SKILL_LIMIT = DEFAULT_EAGER_SKILL_LIMIT;
|
|
3234
3234
|
var MIN_TRIMMED_BODY_CHARS = 800;
|
|
3235
3235
|
async function resolveHostSubagentSkillResolution(deps, roster, subCfg, availableToolNames = []) {
|
|
@@ -3344,8 +3344,9 @@ _(body trimmed)_` : body,
|
|
|
3344
3344
|
async function retrieveHostSubagentMemory(deps, getLeaderMode, subCfg, taskContext, owningSessionId) {
|
|
3345
3345
|
const memoryPort = deps.container.safeResolve(TOKENS3.MemoryStore);
|
|
3346
3346
|
const memory = memoryPort ? getSageRetrieval(memoryPort) : void 0;
|
|
3347
|
-
if (!memory?.retrieveForAudience) return
|
|
3347
|
+
if (!memory?.retrieveForAudience) return void 0;
|
|
3348
3348
|
const contextualTaskType = typeof taskContext?.["taskType"] === "string" ? taskContext["taskType"] : void 0;
|
|
3349
|
+
const sessionId = owningSessionId ?? deps.session.id;
|
|
3349
3350
|
try {
|
|
3350
3351
|
const taskType = subCfg.memoryContext?.taskType ?? contextualTaskType;
|
|
3351
3352
|
const mode = subCfg.memoryContext?.mode ?? getLeaderMode?.();
|
|
@@ -3355,18 +3356,30 @@ async function retrieveHostSubagentMemory(deps, getLeaderMode, subCfg, taskConte
|
|
|
3355
3356
|
...taskType !== void 0 ? { taskType } : {},
|
|
3356
3357
|
...mode !== void 0 ? { mode } : {}
|
|
3357
3358
|
},
|
|
3358
|
-
20
|
|
3359
|
+
20,
|
|
3360
|
+
void 0,
|
|
3361
|
+
// The owning conversation's own session-scoped audience memories are
|
|
3362
|
+
// visible to its workers; other sessions' stay hidden.
|
|
3363
|
+
sessionId
|
|
3359
3364
|
);
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
"subagent_audience",
|
|
3363
|
-
owningSessionId ?? deps.session.id
|
|
3365
|
+
const eligible = matches.filter(
|
|
3366
|
+
(item) => item.status === "active" && item.contextPolicy !== "never"
|
|
3364
3367
|
);
|
|
3365
|
-
|
|
3368
|
+
const rendered = formatMemoryHintsDetailed(eligible, {
|
|
3369
|
+
heading: "SAGE: project memory for this agent role",
|
|
3370
|
+
maxChars: SUBAGENT_AUDIENCE_MEMORY_CHARS
|
|
3371
|
+
});
|
|
3372
|
+
if (!rendered.text || rendered.memoryIds.length === 0) return void 0;
|
|
3373
|
+
try {
|
|
3374
|
+
await memory.recordInjection?.(rendered.memoryIds, "subagent_audience", sessionId);
|
|
3375
|
+
} catch {
|
|
3376
|
+
}
|
|
3377
|
+
return formatMemoryEvidenceBlock("sage.subagent-audience", rendered.text);
|
|
3366
3378
|
} catch {
|
|
3367
|
-
return
|
|
3379
|
+
return void 0;
|
|
3368
3380
|
}
|
|
3369
3381
|
}
|
|
3382
|
+
var SUBAGENT_AUDIENCE_MEMORY_CHARS = 4e3;
|
|
3370
3383
|
|
|
3371
3384
|
// src/fleet/host-session-writer.ts
|
|
3372
3385
|
import { stampAgentId } from "@wrongstack/core/storage";
|
|
@@ -3592,13 +3605,7 @@ ${message} Falling back to the assigned checkout.` : `${message} Falling back to
|
|
|
3592
3605
|
task?.context,
|
|
3593
3606
|
owningSessionId
|
|
3594
3607
|
);
|
|
3595
|
-
if (audienceMemory.
|
|
3596
|
-
baseSystem.push({
|
|
3597
|
-
type: "text",
|
|
3598
|
-
text: `Project memory for this agent role:
|
|
3599
|
-
${audienceMemory.map((text) => `- ${text}`).join("\n")}`
|
|
3600
|
-
});
|
|
3601
|
-
}
|
|
3608
|
+
if (audienceMemory) baseSystem.push({ type: "text", text: audienceMemory });
|
|
3602
3609
|
const skillResolution = await resolveHostSubagentSkillResolution(
|
|
3603
3610
|
host.deps,
|
|
3604
3611
|
host.roster,
|
|
@@ -21164,8 +21171,17 @@ async function applyDispatch(Sage, report) {
|
|
|
21164
21171
|
let mergeFail = 0;
|
|
21165
21172
|
for (const merge of report.merges.merges) {
|
|
21166
21173
|
try {
|
|
21167
|
-
await Sage.
|
|
21168
|
-
|
|
21174
|
+
const keeper = await Sage.getSage(merge.keeperId);
|
|
21175
|
+
if (!keeper || keeper.status !== "active" && keeper.status !== "stale") {
|
|
21176
|
+
throw new Error(`keeper ${merge.keeperId} is no longer active`);
|
|
21177
|
+
}
|
|
21178
|
+
await Sage.updateSage(merge.supersededId, {
|
|
21179
|
+
status: "superseded",
|
|
21180
|
+
supersededBy: merge.keeperId
|
|
21181
|
+
});
|
|
21182
|
+
await Sage.updateSage(merge.keeperId, {
|
|
21183
|
+
supersedes: [.../* @__PURE__ */ new Set([...keeper.supersedes ?? [], merge.supersededId])]
|
|
21184
|
+
});
|
|
21169
21185
|
mergeOk++;
|
|
21170
21186
|
} catch (err) {
|
|
21171
21187
|
mergeFail++;
|
|
@@ -21444,12 +21460,58 @@ function buildMemoryCommand(opts) {
|
|
|
21444
21460
|
case "candidates": {
|
|
21445
21461
|
if (!Sage) return requiresSage("candidates");
|
|
21446
21462
|
const action = rest[0]?.toLowerCase() ?? "list";
|
|
21463
|
+
if (action === "resolve") {
|
|
21464
|
+
const decision = rest[2]?.toLowerCase();
|
|
21465
|
+
if (!rest[1] || decision !== "delete" && decision !== "archive" && decision !== "keep") {
|
|
21466
|
+
return {
|
|
21467
|
+
message: "Usage: /memory candidates resolve <candidate-id> delete|archive|keep [reason]"
|
|
21468
|
+
};
|
|
21469
|
+
}
|
|
21470
|
+
try {
|
|
21471
|
+
const resolution = await Sage.resolveCandidate(
|
|
21472
|
+
rest[1],
|
|
21473
|
+
decision,
|
|
21474
|
+
rest.slice(3).join(" ") || void 0
|
|
21475
|
+
);
|
|
21476
|
+
if (!resolution) return { message: `Candidate ${rest[1]} was not found.` };
|
|
21477
|
+
if (resolution.error) {
|
|
21478
|
+
return { message: `Could not resolve ${rest[1]}: ${resolution.error}` };
|
|
21479
|
+
}
|
|
21480
|
+
return {
|
|
21481
|
+
message: `Resolved ${rest[1]}: ${decision}${resolution.applied ? "" : " (target memory unchanged)"}.`
|
|
21482
|
+
};
|
|
21483
|
+
} catch (error) {
|
|
21484
|
+
return {
|
|
21485
|
+
message: `Could not resolve ${rest[1]}: ${error instanceof Error ? error.message : String(error)}`
|
|
21486
|
+
};
|
|
21487
|
+
}
|
|
21488
|
+
}
|
|
21447
21489
|
if (action === "accept") {
|
|
21448
21490
|
if (!rest[1]) return { message: "Usage: /memory candidates accept <candidate-id>" };
|
|
21449
|
-
|
|
21450
|
-
|
|
21451
|
-
|
|
21452
|
-
|
|
21491
|
+
try {
|
|
21492
|
+
const review = (await Sage.listCandidates(false)).find(
|
|
21493
|
+
(c) => c.id === rest[1] && c.kind === "memory_review"
|
|
21494
|
+
);
|
|
21495
|
+
if (review) {
|
|
21496
|
+
const decision = review.suggestedAction === "archive" ? "archive" : "delete";
|
|
21497
|
+
const resolution = await Sage.resolveCandidate(rest[1], decision);
|
|
21498
|
+
if (!resolution) return { message: `Candidate ${rest[1]} was not found.` };
|
|
21499
|
+
if (resolution.error) {
|
|
21500
|
+
return { message: `Could not accept ${rest[1]}: ${resolution.error}` };
|
|
21501
|
+
}
|
|
21502
|
+
return {
|
|
21503
|
+
message: `Accepted review ${rest[1]}: ${decision}${resolution.applied ? "" : " (target memory unchanged)"}.`
|
|
21504
|
+
};
|
|
21505
|
+
}
|
|
21506
|
+
const accepted = await Sage.acceptCandidate(rest[1]);
|
|
21507
|
+
return {
|
|
21508
|
+
message: accepted ? `Accepted ${rest[1]} as ${accepted.id}.` : `Candidate ${rest[1]} was not found.`
|
|
21509
|
+
};
|
|
21510
|
+
} catch (error) {
|
|
21511
|
+
return {
|
|
21512
|
+
message: `Could not accept ${rest[1]}: ${error instanceof Error ? error.message : String(error)}`
|
|
21513
|
+
};
|
|
21514
|
+
}
|
|
21453
21515
|
}
|
|
21454
21516
|
if (action === "reject") {
|
|
21455
21517
|
if (!rest[1])
|
|
@@ -31525,7 +31587,8 @@ function buildTodosCommand(opts) {
|
|
|
31525
31587
|
];
|
|
31526
31588
|
const result = await updateTodos(nextTodos);
|
|
31527
31589
|
const projected = ctx.todos.find((todo) => todo.id === doneItem.id);
|
|
31528
|
-
|
|
31590
|
+
const completedAndCleared = ctx.todos.length === 0 && !result.kanban_warnings?.length;
|
|
31591
|
+
if (isManagedProjection(doneItem) && projected?.status !== "completed" && !completedAndCleared) {
|
|
31529
31592
|
return {
|
|
31530
31593
|
message: result.kanban_warnings?.[0] ?? `Kanban kept ${doneItem.content} at ${projected?.status ?? "its current state"}.`
|
|
31531
31594
|
};
|
|
@@ -38992,4 +39055,4 @@ export {
|
|
|
38992
39055
|
CLI_VERSION,
|
|
38993
39056
|
runInteractive
|
|
38994
39057
|
};
|
|
38995
|
-
//# sourceMappingURL=cli-main-
|
|
39058
|
+
//# sourceMappingURL=cli-main-6JWASRH2.js.map
|
|
@@ -19,5 +19,5 @@ export declare function retrieveHostSubagentMemory(deps: MultiAgentDeps, getLead
|
|
|
19
19
|
* without it every background tab's memory reads were recorded against a
|
|
20
20
|
* conversation that never made them.
|
|
21
21
|
*/
|
|
22
|
-
owningSessionId?: string): Promise<string
|
|
22
|
+
owningSessionId?: string): Promise<string | undefined>;
|
|
23
23
|
//# sourceMappingURL=host-context.d.ts.map
|
|
@@ -68,7 +68,7 @@ var hqCmd = async (args, deps) => {
|
|
|
68
68
|
return 1;
|
|
69
69
|
};
|
|
70
70
|
async function startServer(deps) {
|
|
71
|
-
const { startHqServer } = await import("./hq-server-
|
|
71
|
+
const { startHqServer } = await import("./hq-server-YW4MJCKH.js");
|
|
72
72
|
const dataDir = resolveDataDir(deps);
|
|
73
73
|
const flags = deps.flags ?? {};
|
|
74
74
|
const rawPublicUrl = typeof flags["hq-public-url"] === "string" ? flags["hq-public-url"] : process.env.WRONGSTACK_HQ_PUBLIC_URL;
|
|
@@ -538,6 +538,16 @@ async function tokenList(args, deps) {
|
|
|
538
538
|
});
|
|
539
539
|
const tokens = authFile[tokenField] ?? [];
|
|
540
540
|
if (tokens.length === 0) {
|
|
541
|
+
const browserCredential = authFile.passwordHash !== void 0 || (authFile.browserTokens ?? []).length > 0;
|
|
542
|
+
if (scope === "client" && browserCredential) {
|
|
543
|
+
deps.renderer.write(
|
|
544
|
+
"No client tokens issued. HQ has a browser credential, so /ws/client REJECTS every publisher.\n"
|
|
545
|
+
);
|
|
546
|
+
deps.renderer.write(
|
|
547
|
+
"Run `wstack hq token create --client [label]` to let publishers connect.\n"
|
|
548
|
+
);
|
|
549
|
+
return 0;
|
|
550
|
+
}
|
|
541
551
|
deps.renderer.write(
|
|
542
552
|
`No ${scope} tokens issued. ${scope === "browser" ? "Browsers" : "Clients"} are in OPEN MODE.
|
|
543
553
|
`
|
|
@@ -977,4 +987,4 @@ export {
|
|
|
977
987
|
hqCmd,
|
|
978
988
|
resolveAuditActor
|
|
979
989
|
};
|
|
980
|
-
//# sourceMappingURL=hq-
|
|
990
|
+
//# sourceMappingURL=hq-O5BOP6UY.js.map
|
package/dist/hq-server/auth.d.ts
CHANGED
|
@@ -91,6 +91,16 @@ export declare function hqAuthRequired(mutableAuth: HqRouterMutableAuth, require
|
|
|
91
91
|
* which are a separate set from the browser tokens, but the same fail-closed
|
|
92
92
|
* floor applies: an all-expired client-token file must not mean "no auth
|
|
93
93
|
* configured, let anyone register as a session".
|
|
94
|
+
*
|
|
95
|
+
* WS-2026-09-15-01: this used to be `requireAuthFloor || clientTokens.size > 0`.
|
|
96
|
+
* The floor only latches in true open mode (no password, no browser token), so
|
|
97
|
+
* a password-protected HQ on a network bind whose client tokens had all expired
|
|
98
|
+
* or been revoked accepted a tokenless `/ws/client` — and `client.hello` then
|
|
99
|
+
* granted every capability the socket declared, `control.approve` included.
|
|
100
|
+
* OPEN MODE is "no credential of any kind" (SECURITY.md); once HQ holds ANY
|
|
101
|
+
* browser credential, the publisher channel must present a client token too.
|
|
102
|
+
* A loopback exemption is deliberately absent: `--tunnel` and reverse proxies
|
|
103
|
+
* deliver remote traffic from 127.0.0.1.
|
|
94
104
|
*/
|
|
95
105
|
export declare function hqClientAuthRequired(mutableAuth: HqRouterMutableAuth): boolean;
|
|
96
106
|
/**
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
readLocalSubagentTranscript,
|
|
11
11
|
sanitizeApiError,
|
|
12
12
|
startHqServer
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-MZY6UDWC.js";
|
|
14
14
|
import "./chunk-HXJYHAR4.js";
|
|
15
15
|
import "./chunk-5EA6OTLJ.js";
|
|
16
16
|
import "./chunk-Q7E3BPDU.js";
|
|
@@ -27,4 +27,4 @@ export {
|
|
|
27
27
|
sanitizeApiError,
|
|
28
28
|
startHqServer
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=hq-server-
|
|
30
|
+
//# sourceMappingURL=hq-server-YW4MJCKH.js.map
|
package/dist/index.js
CHANGED
|
@@ -16,14 +16,14 @@ async function main(argv) {
|
|
|
16
16
|
applySessionShellDefault();
|
|
17
17
|
const earlyFlags = parseArgs(argv).flags;
|
|
18
18
|
if (earlyFlags["help"] === true || earlyFlags["version"] === true) {
|
|
19
|
-
const { handleHelpVersionShortCircuit } = await import("./short-circuit-flags-
|
|
19
|
+
const { handleHelpVersionShortCircuit } = await import("./short-circuit-flags-T6EFG3W6.js");
|
|
20
20
|
const earlyExit = await handleHelpVersionShortCircuit(argv);
|
|
21
21
|
if (earlyExit !== null) return earlyExit;
|
|
22
22
|
}
|
|
23
|
-
const { initializeCli } = await import("./cli-context-
|
|
23
|
+
const { initializeCli } = await import("./cli-context-6MTVFJPO.js");
|
|
24
24
|
const cliCtx = await initializeCli(argv);
|
|
25
25
|
if (typeof cliCtx === "number") return cliCtx;
|
|
26
|
-
const { runInteractive } = await import("./cli-main-
|
|
26
|
+
const { runInteractive } = await import("./cli-main-6JWASRH2.js");
|
|
27
27
|
return runInteractive(cliCtx);
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -31,7 +31,12 @@ async function main(argv) {
|
|
|
31
31
|
import { resolve } from "node:path";
|
|
32
32
|
import { pathToFileURL } from "node:url";
|
|
33
33
|
import { scrubErrorText } from "@wrongstack/core/security";
|
|
34
|
-
import {
|
|
34
|
+
import {
|
|
35
|
+
hardenWin32ExecutableSearch,
|
|
36
|
+
installCrashShield,
|
|
37
|
+
runFatalSalvageSync,
|
|
38
|
+
writeErr
|
|
39
|
+
} from "@wrongstack/core/utils";
|
|
35
40
|
var SQLITE_WARNING_RE = /sqlite is an experimental feature/i;
|
|
36
41
|
function installSqliteWarningFilter() {
|
|
37
42
|
const originalEmit = process.emitWarning.bind(process);
|
|
@@ -119,6 +124,7 @@ function runAsMain(mainFn) {
|
|
|
119
124
|
if (!isMain) return;
|
|
120
125
|
installBrokenPipeHandlers();
|
|
121
126
|
installCrashShield();
|
|
127
|
+
hardenWin32ExecutableSearch();
|
|
122
128
|
process.on("exit", () => {
|
|
123
129
|
runFatalSalvageSync();
|
|
124
130
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
handleHelpVersionShortCircuit
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DUF5FEWD.js";
|
|
4
4
|
import "./chunk-6WRKAACA.js";
|
|
5
5
|
import "./chunk-XJXDOF63.js";
|
|
6
6
|
import "./chunk-C3Z4N6A6.js";
|
|
7
7
|
export {
|
|
8
8
|
handleHelpVersionShortCircuit
|
|
9
9
|
};
|
|
10
|
-
//# sourceMappingURL=short-circuit-flags-
|
|
10
|
+
//# sourceMappingURL=short-circuit-flags-T6EFG3W6.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrongstack/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.14",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "WrongStack CLI — terminal AI coding agent with provider catalog from models.dev. Provides `wrongstack` and `wstack` binaries.",
|
|
6
6
|
"keywords": [
|
|
@@ -41,36 +41,36 @@
|
|
|
41
41
|
"data"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@wrongstack/acp": "1.0.
|
|
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/sdd": "1.0.
|
|
58
|
-
"@wrongstack/security-scanner": "1.0.
|
|
59
|
-
"@wrongstack/simpleui": "1.0.
|
|
60
|
-
"@wrongstack/techstack": "1.0.
|
|
61
|
-
"@wrongstack/telegram": "1.0.
|
|
62
|
-
"@wrongstack/tools": "1.0.
|
|
63
|
-
"@wrongstack/tui": "1.0.
|
|
64
|
-
"@wrongstack/vector-memory": "1.0.
|
|
65
|
-
"@wrongstack/webui": "1.0.
|
|
66
|
-
"@wrongstack/webui-hq": "1.0.
|
|
67
|
-
"@wrongstack/webui-protocol": "1.0.
|
|
68
|
-
"@wrongstack/webui-server": "1.0.
|
|
69
|
-
"@wrongstack/wrongtrace": "1.0.
|
|
44
|
+
"@wrongstack/acp": "1.0.14",
|
|
45
|
+
"@wrongstack/bench": "1.0.14",
|
|
46
|
+
"@wrongstack/core": "1.0.14",
|
|
47
|
+
"@wrongstack/kanban": "1.0.14",
|
|
48
|
+
"@wrongstack/mcp": "1.0.14",
|
|
49
|
+
"@wrongstack/persistence": "1.0.14",
|
|
50
|
+
"@wrongstack/plug-lsp": "1.0.14",
|
|
51
|
+
"@wrongstack/plugins": "1.0.14",
|
|
52
|
+
"@wrongstack/primitives": "1.0.14",
|
|
53
|
+
"@wrongstack/providers": "1.0.14",
|
|
54
|
+
"@wrongstack/requirement-intake": "1.0.14",
|
|
55
|
+
"@wrongstack/runtime": "1.0.14",
|
|
56
|
+
"@wrongstack/sage": "1.0.14",
|
|
57
|
+
"@wrongstack/sdd": "1.0.14",
|
|
58
|
+
"@wrongstack/security-scanner": "1.0.14",
|
|
59
|
+
"@wrongstack/simpleui": "1.0.14",
|
|
60
|
+
"@wrongstack/techstack": "1.0.14",
|
|
61
|
+
"@wrongstack/telegram": "1.0.14",
|
|
62
|
+
"@wrongstack/tools": "1.0.14",
|
|
63
|
+
"@wrongstack/tui": "1.0.14",
|
|
64
|
+
"@wrongstack/vector-memory": "1.0.14",
|
|
65
|
+
"@wrongstack/webui": "1.0.14",
|
|
66
|
+
"@wrongstack/webui-hq": "1.0.14",
|
|
67
|
+
"@wrongstack/webui-protocol": "1.0.14",
|
|
68
|
+
"@wrongstack/webui-server": "1.0.14",
|
|
69
|
+
"@wrongstack/wrongtrace": "1.0.14",
|
|
70
70
|
"ws": "^8.21.3"
|
|
71
71
|
},
|
|
72
72
|
"optionalDependencies": {
|
|
73
|
-
"@wrongstack/desktop": "1.0.
|
|
73
|
+
"@wrongstack/desktop": "1.0.14"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@types/node": "^26.5.1",
|