@wrongstack/core 0.313.0 → 0.313.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/chronicle/index.js +84 -6391
- package/dist/chronicle/project-server.js +84 -4868
- package/dist/chunk-2BUUIMQB.js +225 -0
- package/dist/chunk-2FK4WTFF.js +207 -0
- package/dist/chunk-2FQL4PDC.js +292 -0
- package/dist/chunk-2KKODIQU.js +2256 -0
- package/dist/chunk-2YU4WVBW.js +134 -0
- package/dist/chunk-3E244UDA.js +356 -0
- package/dist/chunk-3XPVB7BA.js +135 -0
- package/dist/chunk-4LJJYBAU.js +388 -0
- package/dist/chunk-4VWO3ZXL.js +342 -0
- package/dist/chunk-4XV6IR37.js +187 -0
- package/dist/chunk-4ZHTKJHM.js +183 -0
- package/dist/chunk-52RTVH4M.js +361 -0
- package/dist/chunk-57GEWK5X.js +26 -0
- package/dist/chunk-5DSMEVA4.js +931 -0
- package/dist/chunk-5RP3QTRL.js +1223 -0
- package/dist/chunk-5S437PRC.js +50 -0
- package/dist/chunk-5XDUGTKN.js +511 -0
- package/dist/chunk-62V2AFVG.js +422 -0
- package/dist/chunk-65RDIOR2.js +2470 -0
- package/dist/chunk-6AKOTGLM.js +597 -0
- package/dist/chunk-7ZHZE5EO.js +28 -0
- package/dist/chunk-A455ATZB.js +140 -0
- package/dist/chunk-AD7ZFZCS.js +46 -0
- package/dist/chunk-AI4LLQ2U.js +856 -0
- package/dist/chunk-ASX6AW36.js +789 -0
- package/dist/chunk-AT4V4XGI.js +3522 -0
- package/dist/chunk-AWNQ6ED6.js +311 -0
- package/dist/chunk-B4AMLZPB.js +9 -0
- package/dist/chunk-BAKVJLEV.js +417 -0
- package/dist/chunk-BJHVULHO.js +55 -0
- package/dist/chunk-CB2HFKTP.js +9 -0
- package/dist/chunk-CE4ZOCOI.js +1640 -0
- package/dist/chunk-CQQL4ZOQ.js +151 -0
- package/dist/chunk-DEIQMBD2.js +65 -0
- package/dist/chunk-E6I5RXVK.js +58 -0
- package/dist/chunk-EFEHDQGY.js +1589 -0
- package/dist/chunk-EODDVJBM.js +82 -0
- package/dist/chunk-EPC3GZD4.js +308 -0
- package/dist/chunk-FAYRX2AD.js +13 -0
- package/dist/chunk-FFSX2QDQ.js +362 -0
- package/dist/chunk-FHAMQS7Q.js +5856 -0
- package/dist/chunk-FIV4IJL7.js +2263 -0
- package/dist/chunk-FNXVT7HF.js +52 -0
- package/dist/chunk-FSWCWSTS.js +395 -0
- package/dist/chunk-FW5LDDMJ.js +16464 -0
- package/dist/chunk-FXQLIX3K.js +211 -0
- package/dist/chunk-G5AAKEEZ.js +228 -0
- package/dist/chunk-G5S3S5ZN.js +38 -0
- package/dist/chunk-GAZEWQEZ.js +231 -0
- package/dist/chunk-GFJOMSHG.js +125 -0
- package/dist/chunk-GFXZTHNI.js +158 -0
- package/dist/chunk-GM54GJBU.js +960 -0
- package/dist/chunk-GPQ3NJPR.js +900 -0
- package/dist/chunk-GTCU6DZ3.js +1 -0
- package/dist/chunk-H5E77KUJ.js +15 -0
- package/dist/chunk-H72H4XDU.js +1023 -0
- package/dist/chunk-HA4ZYA6T.js +178 -0
- package/dist/chunk-I45KAW2N.js +5020 -0
- package/dist/chunk-IQ35HMQL.js +1396 -0
- package/dist/chunk-IYFBFX34.js +86 -0
- package/dist/chunk-JJPMWPB6.js +109 -0
- package/dist/chunk-JTHKOYWU.js +663 -0
- package/dist/chunk-JVGPR3TS.js +365 -0
- package/dist/chunk-JVKB2TBL.js +48 -0
- package/dist/chunk-JX7VBZDK.js +31 -0
- package/dist/chunk-K3G6JBUC.js +5232 -0
- package/dist/chunk-K4YUNKU7.js +589 -0
- package/dist/chunk-KBZGE6LN.js +710 -0
- package/dist/chunk-KDQJCT2J.js +45 -0
- package/dist/chunk-KI4L2DUL.js +560 -0
- package/dist/chunk-KJ2ZTQSL.js +47 -0
- package/dist/chunk-KSJ5UTP7.js +154 -0
- package/dist/chunk-LHOA5DWA.js +28 -0
- package/dist/chunk-LX5QWLBL.js +27 -0
- package/dist/chunk-LZDDLNCZ.js +279 -0
- package/dist/chunk-M2WF6AXG.js +115 -0
- package/dist/chunk-M7BS2K6U.js +1 -0
- package/dist/chunk-NDBIPFNY.js +102 -0
- package/dist/chunk-NEMIWEXC.js +1199 -0
- package/dist/chunk-NFAYHPRH.js +323 -0
- package/dist/chunk-O37BQ65S.js +21 -0
- package/dist/chunk-O74MJHXU.js +187 -0
- package/dist/chunk-OJZEX73F.js +112 -0
- package/dist/chunk-PAAWLLZX.js +74 -0
- package/dist/chunk-PFXFQQRT.js +339 -0
- package/dist/chunk-PFZO3C6H.js +14 -0
- package/dist/chunk-PHH7LD45.js +113 -0
- package/dist/chunk-QRTG4XTI.js +188 -0
- package/dist/chunk-QVOVMXJR.js +1351 -0
- package/dist/chunk-RCQYT2I4.js +757 -0
- package/dist/chunk-RD6DEE36.js +1178 -0
- package/dist/chunk-RJIZEJ42.js +30 -0
- package/dist/chunk-RPOA7IAE.js +150 -0
- package/dist/chunk-SN2DQRL6.js +1172 -0
- package/dist/chunk-SQJVFEBV.js +41 -0
- package/dist/chunk-SQP64RCS.js +5391 -0
- package/dist/chunk-SVT4RNTR.js +49 -0
- package/dist/chunk-SWUFN7XM.js +43 -0
- package/dist/chunk-SXMVYC5H.js +174 -0
- package/dist/chunk-SZ6AYUIZ.js +23 -0
- package/dist/chunk-T3KGZBU5.js +3171 -0
- package/dist/chunk-TBRL2RCC.js +9 -0
- package/dist/chunk-TRT2HRWZ.js +18 -0
- package/dist/chunk-TYW2GI5I.js +1077 -0
- package/dist/chunk-UIWONWVG.js +4959 -0
- package/dist/chunk-VB3H5WWB.js +151 -0
- package/dist/chunk-W4A6QA3D.js +258 -0
- package/dist/chunk-WBPVKEEE.js +227 -0
- package/dist/chunk-WEBMSQP2.js +123 -0
- package/dist/chunk-WOEZV3Q4.js +333 -0
- package/dist/chunk-WQQON3SV.js +473 -0
- package/dist/chunk-WQTOVMGV.js +119 -0
- package/dist/chunk-WZO23AWO.js +2779 -0
- package/dist/chunk-XBDP4QPW.js +7 -0
- package/dist/chunk-XEBHSJLT.js +103 -0
- package/dist/chunk-XQ2ECNK3.js +1 -0
- package/dist/chunk-XQ2XGIBF.js +2086 -0
- package/dist/chunk-Y2GE5TSI.js +355 -0
- package/dist/chunk-YBUJCZ57.js +351 -0
- package/dist/chunk-YNCVSFGF.js +149 -0
- package/dist/chunk-YUPMXOGP.js +282 -0
- package/dist/chunk-YY6APYUM.js +49 -0
- package/dist/chunk-Z2IJUO45.js +691 -0
- package/dist/chunk-ZEHUCJHY.js +129 -0
- package/dist/chunk-ZYU2YOJ6.js +1496 -0
- package/dist/chunk-ZZ4V3WIZ.js +163 -0
- package/dist/coordination/agents/index.js +145 -6260
- package/dist/coordination/index.js +365 -34324
- package/dist/coordination/mailbox-project-server.js +48 -3276
- package/dist/coordination/provider-status-tracker.d.ts +4 -0
- package/dist/core/agent.d.ts +14 -1
- package/dist/core/index.js +267 -12480
- package/dist/core/model-ref.js +5 -23
- package/dist/core/provider-runner.d.ts +36 -1
- package/dist/design/index.js +50 -1087
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/index.js +1599 -21888
- package/dist/execution/prompt-enhancer.js +16 -535
- package/dist/execution/retry-policy.d.ts +31 -1
- package/dist/extension/index.js +7 -311
- package/dist/goal/index.js +33 -3435
- package/dist/hooks/index.js +14 -1138
- package/dist/hq/index.js +112 -5139
- package/dist/hq/protocol.js +21 -668
- package/dist/index.js +1410 -92656
- package/dist/infrastructure/index.js +64 -4811
- package/dist/kernel/events/provider-events.d.ts +15 -0
- package/dist/kernel/index.js +14 -992
- package/dist/models/index.js +40 -1117
- package/dist/notifications/index.js +3 -108
- package/dist/observability/index.js +17 -279
- package/dist/plugin/index.js +584 -14835
- package/dist/prompts/index.js +14 -948
- package/dist/registry/index.js +9 -822
- package/dist/registry-R23UBE7H.js +14 -0
- package/dist/replay/index.js +6 -84
- package/dist/review-finding-store-DKAV3AS6.js +21 -0
- package/dist/review-report-store-OWY3EC3N.js +19 -0
- package/dist/security/index.js +114 -2202
- package/dist/session-catalog/index.js +36 -2103
- package/dist/session-catalog/project-server.js +42 -1435
- package/dist/skills/index.js +35 -1578
- package/dist/storage/index.js +182 -15600
- package/dist/tasking/index.js +10 -676
- package/dist/tools/index.js +52 -9590
- package/dist/types/config/autonomy.d.ts +5 -0
- package/dist/types/config/ui.d.ts +1 -1
- package/dist/types/errors.d.ts +18 -0
- package/dist/types/index.js +121 -1342
- package/dist/types/provider-runner.d.ts +8 -0
- package/dist/types/session-markers.js +8 -144
- package/dist/utils/error.js +3 -4
- package/dist/utils/expect-defined.js +3 -9
- package/dist/utils/heap-watchdog.js +6 -706
- package/dist/utils/index.js +269 -5685
- package/dist/utils/sage-output-block.js +5 -42
- package/dist/wiring/proxy-rewrite.d.ts +18 -0
- package/dist/wiring/proxy-rewrite.js +18 -121
- package/dist/worktree/index.js +6 -887
- package/package.json +4 -4
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// src/utils/sage-output-block.ts
|
|
2
|
+
var SAGE_INJECTOR_HEADINGS = /* @__PURE__ */ new Set([
|
|
3
|
+
"--- SAGE: task-aware project knowledge (Memory Injector) ---",
|
|
4
|
+
"--- SAGE: related project knowledge (Memory Injector) ---"
|
|
5
|
+
]);
|
|
6
|
+
var SAGE_MEMORY_LINE = /^- \[[^\]]+\](?:\[[^\]]+\])* <memory id="[^"]+">.*<\/memory>(?: .*)?$/;
|
|
7
|
+
var SAGE_MEMORY_LINE_TRUNCATED = /^- \[[^\]]+\](?:\[[^\]]+\])* <memory id="[^"]+">.*…$/;
|
|
8
|
+
function splitSageOutputBlock(output) {
|
|
9
|
+
if (!output.includes("--- SAGE: ")) return { body: output, sageLines: [] };
|
|
10
|
+
const lines = output.split("\n");
|
|
11
|
+
for (let sageIdx = lines.length - 1; sageIdx >= 0; sageIdx--) {
|
|
12
|
+
if (!SAGE_INJECTOR_HEADINGS.has(lines[sageIdx] ?? "")) continue;
|
|
13
|
+
const candidate = lines.slice(sageIdx);
|
|
14
|
+
if (candidate.length < 2) continue;
|
|
15
|
+
const memoryLines = candidate.slice(1).filter((line) => line.trim().length > 0);
|
|
16
|
+
if (memoryLines.length === 0) continue;
|
|
17
|
+
const bodyOk = memoryLines.every(
|
|
18
|
+
(line, index) => SAGE_MEMORY_LINE.test(line) || index === memoryLines.length - 1 && SAGE_MEMORY_LINE_TRUNCATED.test(line)
|
|
19
|
+
);
|
|
20
|
+
if (!bodyOk) continue;
|
|
21
|
+
let end = candidate.length;
|
|
22
|
+
while (end > 1 && candidate[end - 1].trim().length === 0) end--;
|
|
23
|
+
return {
|
|
24
|
+
body: lines.slice(0, sageIdx).join("\n").trimEnd(),
|
|
25
|
+
sageLines: candidate.slice(0, end)
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return { body: output, sageLines: [] };
|
|
29
|
+
}
|
|
30
|
+
function capSageLines(sageLines, maxChars) {
|
|
31
|
+
if (sageLines.length < 2) return [];
|
|
32
|
+
const header = sageLines[0];
|
|
33
|
+
if (header.length >= maxChars) return [];
|
|
34
|
+
const out = [header];
|
|
35
|
+
let used = header.length;
|
|
36
|
+
for (const line of sageLines.slice(1)) {
|
|
37
|
+
if (used + 1 + line.length > maxChars) break;
|
|
38
|
+
out.push(line);
|
|
39
|
+
used += 1 + line.length;
|
|
40
|
+
}
|
|
41
|
+
return out.length > 1 ? out : [];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export {
|
|
45
|
+
SAGE_INJECTOR_HEADINGS,
|
|
46
|
+
splitSageOutputBlock,
|
|
47
|
+
capSageLines
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=chunk-SVT4RNTR.js.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/replay/hash.ts
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
function stableStringify(value) {
|
|
4
|
+
return JSON.stringify(sortKeys(value));
|
|
5
|
+
}
|
|
6
|
+
function sortKeys(value) {
|
|
7
|
+
if (Array.isArray(value)) return value.map(sortKeys);
|
|
8
|
+
if (value && typeof value === "object") {
|
|
9
|
+
const obj = value;
|
|
10
|
+
const sorted = {};
|
|
11
|
+
for (const key of Object.keys(obj).sort()) {
|
|
12
|
+
sorted[key] = sortKeys(obj[key]);
|
|
13
|
+
}
|
|
14
|
+
return sorted;
|
|
15
|
+
}
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
function semanticMessage(message) {
|
|
19
|
+
const { ts: _ts, _estTokens: _estimate, origin: _origin, ...semantic } = message;
|
|
20
|
+
return semantic;
|
|
21
|
+
}
|
|
22
|
+
function hashRequest(request) {
|
|
23
|
+
const payload = {
|
|
24
|
+
model: request.model,
|
|
25
|
+
system: request.system,
|
|
26
|
+
messages: request.messages.map(semanticMessage),
|
|
27
|
+
tools: request.tools,
|
|
28
|
+
maxTokens: request.maxTokens,
|
|
29
|
+
temperature: request.temperature,
|
|
30
|
+
topP: request.topP,
|
|
31
|
+
stopSequences: request.stopSequences,
|
|
32
|
+
toolChoice: request.toolChoice
|
|
33
|
+
};
|
|
34
|
+
const json = stableStringify(payload);
|
|
35
|
+
const digest = createHash("sha256").update(json, "utf8").digest("hex");
|
|
36
|
+
return `sha256:${digest}`;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export {
|
|
40
|
+
stableStringify,
|
|
41
|
+
hashRequest
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=chunk-SWUFN7XM.js.map
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
// src/security/permission-policy-schema.ts
|
|
2
|
+
var TRUST_POLICY_SCHEMA_VERSION = 1;
|
|
3
|
+
var TRUST_POLICY_LIMITS = Object.freeze({
|
|
4
|
+
maxTools: 1e3,
|
|
5
|
+
maxPatternsPerRule: 1e3,
|
|
6
|
+
maxToolNameChars: 256,
|
|
7
|
+
maxPatternChars: 4096
|
|
8
|
+
});
|
|
9
|
+
var TRUST_POLICY_JSON_SCHEMA = Object.freeze({
|
|
10
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
11
|
+
$id: "https://wrongstack.dev/schemas/trust-policy-v1.json",
|
|
12
|
+
title: "WrongStack Trust Policy",
|
|
13
|
+
type: "object",
|
|
14
|
+
maxProperties: TRUST_POLICY_LIMITS.maxTools,
|
|
15
|
+
propertyNames: {
|
|
16
|
+
minLength: 1,
|
|
17
|
+
maxLength: TRUST_POLICY_LIMITS.maxToolNameChars,
|
|
18
|
+
not: { enum: ["__proto__", "prototype", "constructor"] }
|
|
19
|
+
},
|
|
20
|
+
additionalProperties: {
|
|
21
|
+
type: "object",
|
|
22
|
+
additionalProperties: false,
|
|
23
|
+
properties: {
|
|
24
|
+
allow: {
|
|
25
|
+
type: "array",
|
|
26
|
+
maxItems: TRUST_POLICY_LIMITS.maxPatternsPerRule,
|
|
27
|
+
items: { type: "string", minLength: 1, maxLength: TRUST_POLICY_LIMITS.maxPatternChars }
|
|
28
|
+
},
|
|
29
|
+
deny: {
|
|
30
|
+
type: "array",
|
|
31
|
+
maxItems: TRUST_POLICY_LIMITS.maxPatternsPerRule,
|
|
32
|
+
items: { type: "string", minLength: 1, maxLength: TRUST_POLICY_LIMITS.maxPatternChars }
|
|
33
|
+
},
|
|
34
|
+
auto: { type: "boolean" },
|
|
35
|
+
trustWorkdir: { type: "boolean" },
|
|
36
|
+
denyPrivate: { type: "boolean" }
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
var RULE_FIELDS = /* @__PURE__ */ new Set(["allow", "deny", "auto", "trustWorkdir", "denyPrivate"]);
|
|
41
|
+
var UNSAFE_PROPERTY_NAMES = /* @__PURE__ */ new Set(["__proto__", "prototype", "constructor"]);
|
|
42
|
+
function isRecord(value) {
|
|
43
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
44
|
+
}
|
|
45
|
+
function error(diagnostics, code, path, message) {
|
|
46
|
+
diagnostics.push({ severity: "error", code, path, message });
|
|
47
|
+
}
|
|
48
|
+
function validatePatterns(value, path, diagnostics) {
|
|
49
|
+
if (!Array.isArray(value)) {
|
|
50
|
+
error(diagnostics, "invalid_pattern_list", path, "must be an array of strings");
|
|
51
|
+
return void 0;
|
|
52
|
+
}
|
|
53
|
+
if (value.length > TRUST_POLICY_LIMITS.maxPatternsPerRule) {
|
|
54
|
+
error(
|
|
55
|
+
diagnostics,
|
|
56
|
+
"too_many_patterns",
|
|
57
|
+
path,
|
|
58
|
+
`must contain at most ${TRUST_POLICY_LIMITS.maxPatternsPerRule} patterns`
|
|
59
|
+
);
|
|
60
|
+
return void 0;
|
|
61
|
+
}
|
|
62
|
+
const patterns = [];
|
|
63
|
+
const seen = /* @__PURE__ */ new Set();
|
|
64
|
+
for (const [index, pattern] of value.entries()) {
|
|
65
|
+
const itemPath = `${path}[${index}]`;
|
|
66
|
+
if (typeof pattern !== "string" || pattern.length === 0 || pattern.length > TRUST_POLICY_LIMITS.maxPatternChars) {
|
|
67
|
+
error(
|
|
68
|
+
diagnostics,
|
|
69
|
+
"invalid_pattern",
|
|
70
|
+
itemPath,
|
|
71
|
+
`must be a non-empty string up to ${TRUST_POLICY_LIMITS.maxPatternChars} characters`
|
|
72
|
+
);
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (seen.has(pattern)) {
|
|
76
|
+
diagnostics.push({
|
|
77
|
+
severity: "warning",
|
|
78
|
+
code: "duplicate_pattern",
|
|
79
|
+
path: itemPath,
|
|
80
|
+
message: "duplicates an earlier pattern and was normalized away"
|
|
81
|
+
});
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
seen.add(pattern);
|
|
85
|
+
patterns.push(pattern);
|
|
86
|
+
}
|
|
87
|
+
return patterns;
|
|
88
|
+
}
|
|
89
|
+
function validateTrustPolicy(value) {
|
|
90
|
+
const diagnostics = [];
|
|
91
|
+
if (!isRecord(value)) {
|
|
92
|
+
return {
|
|
93
|
+
ok: false,
|
|
94
|
+
diagnostics: [
|
|
95
|
+
{
|
|
96
|
+
severity: "error",
|
|
97
|
+
code: "invalid_root",
|
|
98
|
+
path: "$",
|
|
99
|
+
message: "trust policy must be an object"
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
const entries = Object.entries(value);
|
|
105
|
+
if (entries.length > TRUST_POLICY_LIMITS.maxTools) {
|
|
106
|
+
error(
|
|
107
|
+
diagnostics,
|
|
108
|
+
"too_many_tools",
|
|
109
|
+
"$",
|
|
110
|
+
`must contain at most ${TRUST_POLICY_LIMITS.maxTools} tool rules`
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
const policy = {};
|
|
114
|
+
for (const [toolName, rawRule] of entries.slice(0, TRUST_POLICY_LIMITS.maxTools)) {
|
|
115
|
+
const toolPath = `$[${JSON.stringify(toolName)}]`;
|
|
116
|
+
if (toolName.length === 0 || toolName.length > TRUST_POLICY_LIMITS.maxToolNameChars) {
|
|
117
|
+
error(
|
|
118
|
+
diagnostics,
|
|
119
|
+
"invalid_tool_name",
|
|
120
|
+
toolPath,
|
|
121
|
+
`tool name must be 1-${TRUST_POLICY_LIMITS.maxToolNameChars} characters`
|
|
122
|
+
);
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if (UNSAFE_PROPERTY_NAMES.has(toolName)) {
|
|
126
|
+
error(
|
|
127
|
+
diagnostics,
|
|
128
|
+
"unsafe_tool_name",
|
|
129
|
+
toolPath,
|
|
130
|
+
"reserved object property names are not valid tool rules"
|
|
131
|
+
);
|
|
132
|
+
continue;
|
|
133
|
+
}
|
|
134
|
+
if (!isRecord(rawRule)) {
|
|
135
|
+
error(diagnostics, "invalid_rule", toolPath, "tool rule must be an object");
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
for (const field of Object.keys(rawRule)) {
|
|
139
|
+
if (!RULE_FIELDS.has(field)) {
|
|
140
|
+
error(
|
|
141
|
+
diagnostics,
|
|
142
|
+
"unknown_field",
|
|
143
|
+
`${toolPath}.${field}`,
|
|
144
|
+
`unknown policy field "${field}"`
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const rule = {};
|
|
149
|
+
for (const field of ["allow", "deny"]) {
|
|
150
|
+
if (rawRule[field] === void 0) continue;
|
|
151
|
+
const patterns = validatePatterns(rawRule[field], `${toolPath}.${field}`, diagnostics);
|
|
152
|
+
if (patterns) rule[field] = patterns;
|
|
153
|
+
}
|
|
154
|
+
for (const field of ["auto", "trustWorkdir", "denyPrivate"]) {
|
|
155
|
+
const setting = rawRule[field];
|
|
156
|
+
if (setting === void 0) continue;
|
|
157
|
+
if (typeof setting !== "boolean") {
|
|
158
|
+
error(diagnostics, "invalid_boolean", `${toolPath}.${field}`, "must be a boolean");
|
|
159
|
+
} else {
|
|
160
|
+
rule[field] = setting;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
policy[toolName] = rule;
|
|
164
|
+
}
|
|
165
|
+
return diagnostics.some((diagnostic) => diagnostic.severity === "error") ? { ok: false, diagnostics } : { ok: true, policy, diagnostics };
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export {
|
|
169
|
+
TRUST_POLICY_SCHEMA_VERSION,
|
|
170
|
+
TRUST_POLICY_LIMITS,
|
|
171
|
+
TRUST_POLICY_JSON_SCHEMA,
|
|
172
|
+
validateTrustPolicy
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=chunk-SXMVYC5H.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/storage/storage-concurrency.ts
|
|
2
|
+
async function mapWithConcurrency(items, concurrency, mapper) {
|
|
3
|
+
if (items.length === 0) return [];
|
|
4
|
+
const limit = Math.max(1, Math.floor(concurrency));
|
|
5
|
+
const results = new Array(items.length);
|
|
6
|
+
let next = 0;
|
|
7
|
+
async function worker() {
|
|
8
|
+
while (true) {
|
|
9
|
+
const index = next;
|
|
10
|
+
next++;
|
|
11
|
+
if (index >= items.length) return;
|
|
12
|
+
results[index] = await mapper(items[index], index);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const workers = Array.from({ length: Math.min(limit, items.length) }, () => worker());
|
|
16
|
+
await Promise.all(workers);
|
|
17
|
+
return results;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
mapWithConcurrency
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=chunk-SZ6AYUIZ.js.map
|