opencode-swarm 7.99.5 → 7.99.7
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/cli/{evidence-summary-service-5ww1npaa.js → evidence-summary-service-ch74hb16.js} +2 -2
- package/dist/cli/{guardrail-explain-2q5q86jv.js → guardrail-explain-dkh5f7nf.js} +5 -5
- package/dist/cli/{index-94qwbx11.js → index-7ztmmqpt.js} +6 -0
- package/dist/cli/{index-s3esnz7m.js → index-e9n3xsk0.js} +1 -1
- package/dist/cli/{index-s0nsx5v6.js → index-sz3kw59p.js} +5 -5
- package/dist/cli/{index-gjyrjr08.js → index-wpnam1jh.js} +53 -36
- package/dist/cli/{index-9twtnjkv.js → index-y3x3gvy6.js} +1 -1
- package/dist/cli/{index-tn5exv94.js → index-zyhd4mnn.js} +1 -1
- package/dist/cli/index.js +4 -4
- package/dist/cli/{pending-delegations-vh2nae3n.js → pending-delegations-dvprsdfy.js} +1 -1
- package/dist/cli/{pr-subscriptions-d57tq0c0.js → pr-subscriptions-zfxjtyzw.js} +2 -2
- package/dist/commands/registry.d.ts +2 -0
- package/dist/hooks/utils.d.ts +8 -3
- package/dist/index.js +476 -113
- package/dist/services/version-check.d.ts +0 -4
- package/dist/tools/repo-graph/builder.d.ts +7 -5
- package/dist/tools/repo-graph/query.d.ts +2 -1
- package/dist/tools/repo-graph/types.d.ts +37 -0
- package/dist/tools/repo-graph.d.ts +2 -2
- package/package.json +1 -1
package/dist/cli/{evidence-summary-service-5ww1npaa.js → evidence-summary-service-ch74hb16.js}
RENAMED
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
loadPlanJsonOnly,
|
|
7
7
|
mergeDurableGateEntriesFromEvidence,
|
|
8
8
|
readDurableGateEvidence
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-y3x3gvy6.js";
|
|
10
10
|
import"./index-r8f89sm9.js";
|
|
11
11
|
import"./index-9b7qp18e.js";
|
|
12
|
-
import"./index-
|
|
12
|
+
import"./index-7ztmmqpt.js";
|
|
13
13
|
import"./index-jtqkh8jf.js";
|
|
14
14
|
import"./index-5e4e2hvv.js";
|
|
15
15
|
import"./index-p0arc26j.js";
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
handleGuardrailExplain
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
4
|
+
} from "./index-zyhd4mnn.js";
|
|
5
|
+
import"./index-wpnam1jh.js";
|
|
6
6
|
import"./index-xsswhy6k.js";
|
|
7
7
|
import"./index-ydgy7vg5.js";
|
|
8
8
|
import"./index-vwyjkzgs.js";
|
|
9
9
|
import"./index-f7nma02k.js";
|
|
10
10
|
import"./index-0d3pmjf9.js";
|
|
11
11
|
import"./index-7hnwnw5g.js";
|
|
12
|
-
import"./index-
|
|
12
|
+
import"./index-y3x3gvy6.js";
|
|
13
13
|
import"./index-adz3nk9b.js";
|
|
14
14
|
import"./index-v4fcn4tr.js";
|
|
15
15
|
import"./index-r8f89sm9.js";
|
|
16
16
|
import"./index-9b7qp18e.js";
|
|
17
|
-
import"./index-
|
|
18
|
-
import"./index-
|
|
17
|
+
import"./index-e9n3xsk0.js";
|
|
18
|
+
import"./index-7ztmmqpt.js";
|
|
19
19
|
import"./index-jtqkh8jf.js";
|
|
20
20
|
import"./index-5e4e2hvv.js";
|
|
21
21
|
import"./index-p0arc26j.js";
|
|
@@ -22,6 +22,9 @@ var _internals = {
|
|
|
22
22
|
readSwarmFileAsync,
|
|
23
23
|
readCachedTextFile
|
|
24
24
|
};
|
|
25
|
+
function isFailClosedHandler(value) {
|
|
26
|
+
return typeof value === "function" && Object.hasOwn(value, "__failClosed") && value.__failClosed === true;
|
|
27
|
+
}
|
|
25
28
|
function safeHook(fn) {
|
|
26
29
|
return async (input, output) => {
|
|
27
30
|
try {
|
|
@@ -43,6 +46,9 @@ function composeHandlers(...fns) {
|
|
|
43
46
|
}
|
|
44
47
|
return async (input, output) => {
|
|
45
48
|
for (const fn of fns) {
|
|
49
|
+
if (isFailClosedHandler(fn)) {
|
|
50
|
+
throw new Error("composeHandlers cannot wrap fail-closed handlers; use composeBlockingHandlers or await them directly");
|
|
51
|
+
}
|
|
46
52
|
const safeFn = _internals.safeHook(fn);
|
|
47
53
|
await safeFn(input, output);
|
|
48
54
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
handleGuardrailExplain
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-zyhd4mnn.js";
|
|
5
5
|
import {
|
|
6
6
|
handleGuardrailLog
|
|
7
7
|
} from "./index-h9ptj4b1.js";
|
|
@@ -79,7 +79,7 @@ import {
|
|
|
79
79
|
handleWriteRetroCommand,
|
|
80
80
|
normalizeSwarmCommandInput,
|
|
81
81
|
resolveCommand
|
|
82
|
-
} from "./index-
|
|
82
|
+
} from "./index-wpnam1jh.js";
|
|
83
83
|
import"./index-xsswhy6k.js";
|
|
84
84
|
import"./index-ydgy7vg5.js";
|
|
85
85
|
import"./index-vwyjkzgs.js";
|
|
@@ -90,13 +90,13 @@ import {
|
|
|
90
90
|
ORCHESTRATOR_NAME,
|
|
91
91
|
stripKnownSwarmPrefix
|
|
92
92
|
} from "./index-7hnwnw5g.js";
|
|
93
|
-
import"./index-
|
|
93
|
+
import"./index-y3x3gvy6.js";
|
|
94
94
|
import"./index-adz3nk9b.js";
|
|
95
95
|
import"./index-v4fcn4tr.js";
|
|
96
96
|
import"./index-r8f89sm9.js";
|
|
97
97
|
import"./index-9b7qp18e.js";
|
|
98
|
-
import"./index-
|
|
99
|
-
import"./index-
|
|
98
|
+
import"./index-e9n3xsk0.js";
|
|
99
|
+
import"./index-7ztmmqpt.js";
|
|
100
100
|
import"./index-jtqkh8jf.js";
|
|
101
101
|
import"./index-5e4e2hvv.js";
|
|
102
102
|
import"./index-p0arc26j.js";
|
|
@@ -114,7 +114,7 @@ import {
|
|
|
114
114
|
transientBackoff,
|
|
115
115
|
validateProjectRoot,
|
|
116
116
|
writeProjectedSpecSync
|
|
117
|
-
} from "./index-
|
|
117
|
+
} from "./index-y3x3gvy6.js";
|
|
118
118
|
import {
|
|
119
119
|
_internals as _internals2,
|
|
120
120
|
_internals1 as _internals3,
|
|
@@ -138,12 +138,12 @@ import {
|
|
|
138
138
|
listActive,
|
|
139
139
|
subscribe,
|
|
140
140
|
unsubscribe
|
|
141
|
-
} from "./index-
|
|
141
|
+
} from "./index-e9n3xsk0.js";
|
|
142
142
|
import {
|
|
143
143
|
readSwarmFileAsync,
|
|
144
144
|
safeHook,
|
|
145
145
|
validateSwarmPath
|
|
146
|
-
} from "./index-
|
|
146
|
+
} from "./index-7ztmmqpt.js";
|
|
147
147
|
import {
|
|
148
148
|
deepMerge
|
|
149
149
|
} from "./index-p0arc26j.js";
|
|
@@ -909,7 +909,7 @@ var init_executor = __esm(() => {
|
|
|
909
909
|
// package.json
|
|
910
910
|
var package_default = {
|
|
911
911
|
name: "opencode-swarm",
|
|
912
|
-
version: "7.99.
|
|
912
|
+
version: "7.99.7",
|
|
913
913
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
914
914
|
main: "dist/index.js",
|
|
915
915
|
types: "dist/index.d.ts",
|
|
@@ -1562,6 +1562,9 @@ async function syncBundledProjectSkillsIfMissingAsync(projectDirectory, packageR
|
|
|
1562
1562
|
}
|
|
1563
1563
|
}
|
|
1564
1564
|
|
|
1565
|
+
// src/commands/registry.ts
|
|
1566
|
+
init_logger();
|
|
1567
|
+
|
|
1565
1568
|
// src/state.ts
|
|
1566
1569
|
import * as fs6 from "fs/promises";
|
|
1567
1570
|
import * as path11 from "path";
|
|
@@ -6031,7 +6034,7 @@ function hasActiveEpicMode(sessionID) {
|
|
|
6031
6034
|
async function rehydratePrSubscriptions(sessionID, directory) {
|
|
6032
6035
|
const map = new Map;
|
|
6033
6036
|
try {
|
|
6034
|
-
const { listActive: listActive2 } = await import("./pr-subscriptions-
|
|
6037
|
+
const { listActive: listActive2 } = await import("./pr-subscriptions-zfxjtyzw.js");
|
|
6035
6038
|
const records = await listActive2(directory);
|
|
6036
6039
|
for (const record of records) {
|
|
6037
6040
|
if (record.sessionID !== sessionID)
|
|
@@ -15886,6 +15889,7 @@ import { existsSync as existsSync16, mkdirSync as mkdirSync9, readFileSync as re
|
|
|
15886
15889
|
import { homedir as homedir4 } from "os";
|
|
15887
15890
|
import { join as join27 } from "path";
|
|
15888
15891
|
var CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
15892
|
+
var SEMVER_REGEX = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/;
|
|
15889
15893
|
var MAX_RESPONSE_BYTES = 256 * 1024;
|
|
15890
15894
|
function cacheDir() {
|
|
15891
15895
|
const xdg = process.env.XDG_CACHE_HOME;
|
|
@@ -15910,26 +15914,39 @@ function readVersionCache() {
|
|
|
15910
15914
|
return null;
|
|
15911
15915
|
}
|
|
15912
15916
|
}
|
|
15917
|
+
function parseVersion(version) {
|
|
15918
|
+
const trimmed = version.trim();
|
|
15919
|
+
const match = SEMVER_REGEX.exec(trimmed);
|
|
15920
|
+
if (!match)
|
|
15921
|
+
return null;
|
|
15922
|
+
return {
|
|
15923
|
+
major: Number.parseInt(match[1], 10),
|
|
15924
|
+
minor: Number.parseInt(match[2], 10),
|
|
15925
|
+
patch: Number.parseInt(match[3], 10),
|
|
15926
|
+
prerelease: match[4] ?? null
|
|
15927
|
+
};
|
|
15928
|
+
}
|
|
15913
15929
|
function compareVersions(a, b) {
|
|
15914
|
-
const
|
|
15915
|
-
const
|
|
15916
|
-
|
|
15917
|
-
|
|
15918
|
-
|
|
15919
|
-
|
|
15920
|
-
const av = aParts[i] ?? 0;
|
|
15921
|
-
const bv = bParts[i] ?? 0;
|
|
15922
|
-
if (av > bv)
|
|
15923
|
-
return 1;
|
|
15924
|
-
if (av < bv)
|
|
15925
|
-
return -1;
|
|
15930
|
+
const aParsed = parseVersion(a);
|
|
15931
|
+
const bParsed = parseVersion(b);
|
|
15932
|
+
if (!aParsed || !bParsed)
|
|
15933
|
+
return 0;
|
|
15934
|
+
if (aParsed.major !== bParsed.major) {
|
|
15935
|
+
return aParsed.major > bParsed.major ? 1 : -1;
|
|
15926
15936
|
}
|
|
15927
|
-
if (
|
|
15937
|
+
if (aParsed.minor !== bParsed.minor) {
|
|
15938
|
+
return aParsed.minor > bParsed.minor ? 1 : -1;
|
|
15939
|
+
}
|
|
15940
|
+
if (aParsed.patch !== bParsed.patch) {
|
|
15941
|
+
return aParsed.patch > bParsed.patch ? 1 : -1;
|
|
15942
|
+
}
|
|
15943
|
+
if (aParsed.prerelease && !bParsed.prerelease)
|
|
15928
15944
|
return -1;
|
|
15929
|
-
if (!
|
|
15945
|
+
if (!aParsed.prerelease && bParsed.prerelease)
|
|
15930
15946
|
return 1;
|
|
15931
|
-
if (
|
|
15932
|
-
return
|
|
15947
|
+
if (aParsed.prerelease && bParsed.prerelease) {
|
|
15948
|
+
return aParsed.prerelease < bParsed.prerelease ? -1 : aParsed.prerelease > bParsed.prerelease ? 1 : 0;
|
|
15949
|
+
}
|
|
15933
15950
|
return 0;
|
|
15934
15951
|
}
|
|
15935
15952
|
|
|
@@ -17950,7 +17967,7 @@ async function handleEvidenceCommand(directory, args) {
|
|
|
17950
17967
|
return formatTaskEvidenceMarkdown(evidenceData);
|
|
17951
17968
|
}
|
|
17952
17969
|
async function handleEvidenceSummaryCommand(directory) {
|
|
17953
|
-
const { buildEvidenceSummary } = await import("./evidence-summary-service-
|
|
17970
|
+
const { buildEvidenceSummary } = await import("./evidence-summary-service-ch74hb16.js");
|
|
17954
17971
|
const artifact = await buildEvidenceSummary(directory);
|
|
17955
17972
|
if (!artifact) {
|
|
17956
17973
|
return "No plan found. Run `/swarm plan` to check plan status.";
|
|
@@ -32275,6 +32292,13 @@ function findSimilarCommands(query) {
|
|
|
32275
32292
|
scored.sort((a, b) => a.score - b.score);
|
|
32276
32293
|
return scored.slice(0, 3).map((s) => s.cmd);
|
|
32277
32294
|
}
|
|
32295
|
+
function emitValidationWarnings(prefix, warnings) {
|
|
32296
|
+
if (warnings.length === 0)
|
|
32297
|
+
return;
|
|
32298
|
+
warn(`${prefix}:
|
|
32299
|
+
${warnings.join(`
|
|
32300
|
+
`)}`);
|
|
32301
|
+
}
|
|
32278
32302
|
function buildDetailedHelp(commandName, entry) {
|
|
32279
32303
|
const lines = [];
|
|
32280
32304
|
lines.push(`## /swarm ${commandName}`, "");
|
|
@@ -32296,7 +32320,7 @@ function buildDetailedHelp(commandName, entry) {
|
|
|
32296
32320
|
async function handleHelpCommand(ctx) {
|
|
32297
32321
|
const targetCommand = ctx.args.join(" ");
|
|
32298
32322
|
if (!targetCommand) {
|
|
32299
|
-
const { buildHelpText } = await import("./index-
|
|
32323
|
+
const { buildHelpText } = await import("./index-sz3kw59p.js");
|
|
32300
32324
|
return buildHelpText();
|
|
32301
32325
|
}
|
|
32302
32326
|
const tokens = targetCommand.split(/\s+/);
|
|
@@ -32305,7 +32329,7 @@ async function handleHelpCommand(ctx) {
|
|
|
32305
32329
|
return _internals46.buildDetailedHelp(resolved.key, resolved.entry);
|
|
32306
32330
|
}
|
|
32307
32331
|
const similar = _internals46.findSimilarCommands(targetCommand);
|
|
32308
|
-
const { buildHelpText: fullHelp } = await import("./index-
|
|
32332
|
+
const { buildHelpText: fullHelp } = await import("./index-sz3kw59p.js");
|
|
32309
32333
|
if (similar.length > 0) {
|
|
32310
32334
|
return `Command '/swarm ${targetCommand}' not found.
|
|
32311
32335
|
|
|
@@ -32438,7 +32462,7 @@ var COMMAND_REGISTRY = {
|
|
|
32438
32462
|
},
|
|
32439
32463
|
"guardrail explain": {
|
|
32440
32464
|
handler: async (ctx) => {
|
|
32441
|
-
const { handleGuardrailExplain } = await import("./guardrail-explain-
|
|
32465
|
+
const { handleGuardrailExplain } = await import("./guardrail-explain-dkh5f7nf.js");
|
|
32442
32466
|
return handleGuardrailExplain(ctx.directory, ctx.args);
|
|
32443
32467
|
},
|
|
32444
32468
|
description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
|
|
@@ -33251,6 +33275,7 @@ var _internals46 = {
|
|
|
33251
33275
|
handleHelpCommand,
|
|
33252
33276
|
validateAliases,
|
|
33253
33277
|
validateToolPolicy,
|
|
33278
|
+
emitValidationWarnings,
|
|
33254
33279
|
resolveCommand,
|
|
33255
33280
|
levenshteinDistance,
|
|
33256
33281
|
findSimilarCommands,
|
|
@@ -33262,20 +33287,12 @@ if (!validation.valid) {
|
|
|
33262
33287
|
${validation.errors.join(`
|
|
33263
33288
|
`)}`);
|
|
33264
33289
|
}
|
|
33265
|
-
|
|
33266
|
-
console.warn(`COMMAND_REGISTRY alias warnings:
|
|
33267
|
-
${validation.warnings.join(`
|
|
33268
|
-
`)}`);
|
|
33269
|
-
}
|
|
33290
|
+
_internals46.emitValidationWarnings("COMMAND_REGISTRY alias warnings", validation.warnings);
|
|
33270
33291
|
try {
|
|
33271
33292
|
const toolPolicyValidation = _internals46.validateToolPolicy();
|
|
33272
|
-
|
|
33273
|
-
console.warn(`COMMAND_REGISTRY toolPolicy warnings:
|
|
33274
|
-
${toolPolicyValidation.warnings.join(`
|
|
33275
|
-
`)}`);
|
|
33276
|
-
}
|
|
33293
|
+
_internals46.emitValidationWarnings("COMMAND_REGISTRY toolPolicy warnings", toolPolicyValidation.warnings);
|
|
33277
33294
|
} catch (e) {
|
|
33278
|
-
|
|
33295
|
+
warn(`COMMAND_REGISTRY toolPolicy validation failed (non-fatal): ${e.message}`);
|
|
33279
33296
|
}
|
|
33280
33297
|
function resolveCommand(tokens) {
|
|
33281
33298
|
if (tokens.length === 0)
|
package/dist/cli/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
getPluginLockFilePaths,
|
|
8
8
|
package_default,
|
|
9
9
|
resolveCommand
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-wpnam1jh.js";
|
|
11
11
|
import"./index-xsswhy6k.js";
|
|
12
12
|
import"./index-ydgy7vg5.js";
|
|
13
13
|
import"./index-vwyjkzgs.js";
|
|
@@ -16,13 +16,13 @@ import"./index-0d3pmjf9.js";
|
|
|
16
16
|
import {
|
|
17
17
|
DEFAULT_AGENT_CONFIGS
|
|
18
18
|
} from "./index-7hnwnw5g.js";
|
|
19
|
-
import"./index-
|
|
19
|
+
import"./index-y3x3gvy6.js";
|
|
20
20
|
import"./index-adz3nk9b.js";
|
|
21
21
|
import"./index-v4fcn4tr.js";
|
|
22
22
|
import"./index-r8f89sm9.js";
|
|
23
23
|
import"./index-9b7qp18e.js";
|
|
24
|
-
import"./index-
|
|
25
|
-
import"./index-
|
|
24
|
+
import"./index-e9n3xsk0.js";
|
|
25
|
+
import"./index-7ztmmqpt.js";
|
|
26
26
|
import"./index-jtqkh8jf.js";
|
|
27
27
|
import"./index-5e4e2hvv.js";
|
|
28
28
|
import"./index-p0arc26j.js";
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
sweepStale,
|
|
10
10
|
unsubscribe,
|
|
11
11
|
updateSnapshot
|
|
12
|
-
} from "./index-
|
|
13
|
-
import"./index-
|
|
12
|
+
} from "./index-e9n3xsk0.js";
|
|
13
|
+
import"./index-7ztmmqpt.js";
|
|
14
14
|
import"./index-jtqkh8jf.js";
|
|
15
15
|
import"./index-5e4e2hvv.js";
|
|
16
16
|
import"./index-p0arc26j.js";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentDefinition } from '../agents/index.js';
|
|
2
2
|
declare function levenshteinDistance(a: string, b: string): number;
|
|
3
3
|
declare function findSimilarCommands(query: string): string[];
|
|
4
|
+
declare function emitValidationWarnings(prefix: string, warnings: readonly string[]): void;
|
|
4
5
|
declare function buildDetailedHelp(commandName: string, entry: CommandEntry): string;
|
|
5
6
|
export declare function handleHelpCommand(ctx: CommandContext): Promise<string>;
|
|
6
7
|
export type CommandContext = {
|
|
@@ -924,6 +925,7 @@ export declare const _internals: {
|
|
|
924
925
|
handleHelpCommand: typeof handleHelpCommand;
|
|
925
926
|
validateAliases: typeof validateAliases;
|
|
926
927
|
validateToolPolicy: typeof validateToolPolicy;
|
|
928
|
+
emitValidationWarnings: typeof emitValidationWarnings;
|
|
927
929
|
resolveCommand: typeof resolveCommand;
|
|
928
930
|
levenshteinDistance: typeof levenshteinDistance;
|
|
929
931
|
findSimilarCommands: typeof findSimilarCommands;
|
package/dist/hooks/utils.d.ts
CHANGED
|
@@ -21,7 +21,11 @@ export declare const _internals: {
|
|
|
21
21
|
readSwarmFileAsync: typeof readSwarmFileAsync;
|
|
22
22
|
readCachedTextFile: typeof readCachedTextFile;
|
|
23
23
|
};
|
|
24
|
-
|
|
24
|
+
type HookHandler<I, O> = (input: I, output: O) => Promise<void>;
|
|
25
|
+
export declare function markFailClosed<I, O>(fn: HookHandler<I, O>): HookHandler<I, O> & {
|
|
26
|
+
__failClosed?: true;
|
|
27
|
+
};
|
|
28
|
+
export declare function safeHook<I, O>(fn: HookHandler<I, O>): HookHandler<I, O>;
|
|
25
29
|
/**
|
|
26
30
|
* `composeHandlers` runs handlers sequentially, wrapping EACH handler in
|
|
27
31
|
* `safeHook` so any thrown error is downgraded to a warning. Use this for
|
|
@@ -37,7 +41,7 @@ export declare function safeHook<I, O>(fn: (input: I, output: O) => Promise<void
|
|
|
37
41
|
*
|
|
38
42
|
* Reference: AGENTS.md invariant 11 + Full-Auto v2 fail-closed contract.
|
|
39
43
|
*/
|
|
40
|
-
export declare function composeHandlers<I, O>(...fns: Array<
|
|
44
|
+
export declare function composeHandlers<I, O>(...fns: Array<HookHandler<I, O>>): HookHandler<I, O>;
|
|
41
45
|
/**
|
|
42
46
|
* `composeBlockingHandlers` runs handlers sequentially WITHOUT `safeHook`,
|
|
43
47
|
* so any thrown error propagates to the caller and stops the chain.
|
|
@@ -62,7 +66,7 @@ export declare function composeHandlers<I, O>(...fns: Array<(input: I, output: O
|
|
|
62
66
|
* place — silently swallowing a Full-Auto denial would be a runtime
|
|
63
67
|
* fail-open and is a critical regression.
|
|
64
68
|
*/
|
|
65
|
-
export declare function composeBlockingHandlers<I, O>(...fns: Array<
|
|
69
|
+
export declare function composeBlockingHandlers<I, O>(...fns: Array<HookHandler<I, O>>): HookHandler<I, O>;
|
|
66
70
|
/**
|
|
67
71
|
* Validates that a filename is safe to use within the .swarm directory
|
|
68
72
|
*
|
|
@@ -74,3 +78,4 @@ export declare function composeBlockingHandlers<I, O>(...fns: Array<(input: I, o
|
|
|
74
78
|
export declare function validateSwarmPath(directory: string, filename: string): string;
|
|
75
79
|
export declare function readSwarmFileAsync(directory: string, filename: string, cache?: Map<string, Promise<string | null>>): Promise<string | null>;
|
|
76
80
|
export declare function estimateTokens(text: string): number;
|
|
81
|
+
export {};
|