patchwork-os 0.2.0-beta.10.canary.99 → 0.2.0-beta.11
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/README.md +20 -1
- package/dist/adapters/grok.js +6 -1
- package/dist/adapters/grok.js.map +1 -1
- package/dist/approvalHttp.js +61 -66
- package/dist/approvalHttp.js.map +1 -1
- package/dist/bridge.js +3 -2
- package/dist/bridge.js.map +1 -1
- package/dist/claudeOrchestrator.js +15 -0
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/patchworkInit.d.ts +7 -0
- package/dist/commands/patchworkInit.js +26 -0
- package/dist/commands/patchworkInit.js.map +1 -1
- package/dist/commands/recipe.d.ts +14 -0
- package/dist/commands/recipe.js +51 -0
- package/dist/commands/recipe.js.map +1 -1
- package/dist/commands/recipeInstall.js +15 -0
- package/dist/commands/recipeInstall.js.map +1 -1
- package/dist/connectors/postgres.d.ts +7 -0
- package/dist/connectors/postgres.js +16 -2
- package/dist/connectors/postgres.js.map +1 -1
- package/dist/connectors/snowflake.js +6 -0
- package/dist/connectors/snowflake.js.map +1 -1
- package/dist/connectors/tokenStorage.d.ts +8 -0
- package/dist/connectors/tokenStorage.js +42 -3
- package/dist/connectors/tokenStorage.js.map +1 -1
- package/dist/drivers/claude/api.js +15 -2
- package/dist/drivers/claude/api.js.map +1 -1
- package/dist/drivers/claude/subprocess.js +1 -29
- package/dist/drivers/claude/subprocess.js.map +1 -1
- package/dist/drivers/gemini/index.js +9 -5
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/openai/index.js +29 -4
- package/dist/drivers/openai/index.js.map +1 -1
- package/dist/drivers/outputCap.d.ts +27 -0
- package/dist/drivers/outputCap.js +50 -0
- package/dist/drivers/outputCap.js.map +1 -0
- package/dist/featureFlags.d.ts +9 -0
- package/dist/featureFlags.js +16 -0
- package/dist/featureFlags.js.map +1 -1
- package/dist/fp/commandDescription.d.ts +6 -0
- package/dist/fp/commandDescription.js +4 -4
- package/dist/fp/commandDescription.js.map +1 -1
- package/dist/fp/policyParser.js +13 -7
- package/dist/fp/policyParser.js.map +1 -1
- package/dist/haltPushDispatch.js +7 -22
- package/dist/haltPushDispatch.js.map +1 -1
- package/dist/index.js +128 -0
- package/dist/index.js.map +1 -1
- package/dist/mcpRoutes.js +1 -1
- package/dist/mcpRoutes.js.map +1 -1
- package/dist/oauth.d.ts +13 -0
- package/dist/oauth.js +34 -1
- package/dist/oauth.js.map +1 -1
- package/dist/recipeOrchestration.js +10 -0
- package/dist/recipeOrchestration.js.map +1 -1
- package/dist/recipeRoutes.d.ts +39 -0
- package/dist/recipeRoutes.js +214 -12
- package/dist/recipeRoutes.js.map +1 -1
- package/dist/recipes/agentExecutor.d.ts +20 -0
- package/dist/recipes/agentExecutor.js +32 -10
- package/dist/recipes/agentExecutor.js.map +1 -1
- package/dist/recipes/chainedRunner.d.ts +41 -2
- package/dist/recipes/chainedRunner.js +134 -6
- package/dist/recipes/chainedRunner.js.map +1 -1
- package/dist/recipes/connectorPreflight.js +30 -0
- package/dist/recipes/connectorPreflight.js.map +1 -1
- package/dist/recipes/haltCategory.d.ts +5 -0
- package/dist/recipes/haltCategory.js +7 -1
- package/dist/recipes/haltCategory.js.map +1 -1
- package/dist/recipes/judgeVerdict.d.ts +10 -0
- package/dist/recipes/judgeVerdict.js +10 -0
- package/dist/recipes/judgeVerdict.js.map +1 -1
- package/dist/recipes/names.d.ts +5 -0
- package/dist/recipes/names.js +10 -5
- package/dist/recipes/names.js.map +1 -1
- package/dist/recipes/parser.js +32 -9
- package/dist/recipes/parser.js.map +1 -1
- package/dist/recipes/pricing/costRouter.d.ts +43 -0
- package/dist/recipes/pricing/costRouter.js +44 -0
- package/dist/recipes/pricing/costRouter.js.map +1 -0
- package/dist/recipes/pricing/priceTable.d.ts +76 -0
- package/dist/recipes/pricing/priceTable.js +144 -0
- package/dist/recipes/pricing/priceTable.js.map +1 -0
- package/dist/recipes/runBudget.d.ts +82 -32
- package/dist/recipes/runBudget.js +182 -49
- package/dist/recipes/runBudget.js.map +1 -1
- package/dist/recipes/schema.d.ts +25 -4
- package/dist/recipes/schemaGenerator.d.ts +9 -0
- package/dist/recipes/schemaGenerator.js +386 -75
- package/dist/recipes/schemaGenerator.js.map +1 -1
- package/dist/recipes/simulation/aggregateRunRisk.d.ts +43 -0
- package/dist/recipes/simulation/aggregateRunRisk.js +117 -0
- package/dist/recipes/simulation/aggregateRunRisk.js.map +1 -0
- package/dist/recipes/simulation/costProjector.d.ts +32 -0
- package/dist/recipes/simulation/costProjector.js +194 -0
- package/dist/recipes/simulation/costProjector.js.map +1 -0
- package/dist/recipes/simulation/sideEffects.d.ts +32 -0
- package/dist/recipes/simulation/sideEffects.js +62 -0
- package/dist/recipes/simulation/sideEffects.js.map +1 -0
- package/dist/recipes/simulation/simulate.d.ts +36 -0
- package/dist/recipes/simulation/simulate.js +264 -0
- package/dist/recipes/simulation/simulate.js.map +1 -0
- package/dist/recipes/simulation/simulateMockedRun.d.ts +52 -0
- package/dist/recipes/simulation/simulateMockedRun.js +72 -0
- package/dist/recipes/simulation/simulateMockedRun.js.map +1 -0
- package/dist/recipes/simulation/synthesizeMockedOutputs.d.ts +31 -0
- package/dist/recipes/simulation/synthesizeMockedOutputs.js +50 -0
- package/dist/recipes/simulation/synthesizeMockedOutputs.js.map +1 -0
- package/dist/recipes/simulation/types.d.ts +198 -0
- package/dist/recipes/simulation/types.js +30 -0
- package/dist/recipes/simulation/types.js.map +1 -0
- package/dist/recipes/stepObservation.d.ts +12 -0
- package/dist/recipes/stepObservation.js +21 -1
- package/dist/recipes/stepObservation.js.map +1 -1
- package/dist/recipes/tools/airtable.d.ts +15 -0
- package/dist/recipes/tools/airtable.js +240 -0
- package/dist/recipes/tools/airtable.js.map +1 -0
- package/dist/recipes/tools/caldiy.d.ts +13 -0
- package/dist/recipes/tools/caldiy.js +214 -0
- package/dist/recipes/tools/caldiy.js.map +1 -0
- package/dist/recipes/tools/circleci.d.ts +10 -0
- package/dist/recipes/tools/circleci.js +204 -0
- package/dist/recipes/tools/circleci.js.map +1 -0
- package/dist/recipes/tools/cloudflare.d.ts +13 -0
- package/dist/recipes/tools/cloudflare.js +211 -0
- package/dist/recipes/tools/cloudflare.js.map +1 -0
- package/dist/recipes/tools/docs.d.ts +18 -0
- package/dist/recipes/tools/docs.js +94 -0
- package/dist/recipes/tools/docs.js.map +1 -0
- package/dist/recipes/tools/elasticsearch.d.ts +11 -0
- package/dist/recipes/tools/elasticsearch.js +156 -0
- package/dist/recipes/tools/elasticsearch.js.map +1 -0
- package/dist/recipes/tools/figma.d.ts +12 -0
- package/dist/recipes/tools/figma.js +194 -0
- package/dist/recipes/tools/figma.js.map +1 -0
- package/dist/recipes/tools/grafana.d.ts +11 -0
- package/dist/recipes/tools/grafana.js +216 -0
- package/dist/recipes/tools/grafana.js.map +1 -0
- package/dist/recipes/tools/http.d.ts +1 -1
- package/dist/recipes/tools/http.js +10 -28
- package/dist/recipes/tools/http.js.map +1 -1
- package/dist/recipes/tools/index.d.ts +26 -0
- package/dist/recipes/tools/index.js +26 -0
- package/dist/recipes/tools/index.js.map +1 -1
- package/dist/recipes/tools/monday.d.ts +22 -0
- package/dist/recipes/tools/monday.js +242 -0
- package/dist/recipes/tools/monday.js.map +1 -0
- package/dist/recipes/tools/obsidian.d.ts +15 -0
- package/dist/recipes/tools/obsidian.js +172 -0
- package/dist/recipes/tools/obsidian.js.map +1 -0
- package/dist/recipes/tools/paystack.d.ts +11 -0
- package/dist/recipes/tools/paystack.js +211 -0
- package/dist/recipes/tools/paystack.js.map +1 -0
- package/dist/recipes/tools/pipedrive.d.ts +16 -0
- package/dist/recipes/tools/pipedrive.js +233 -0
- package/dist/recipes/tools/pipedrive.js.map +1 -0
- package/dist/recipes/tools/postgres.d.ts +15 -0
- package/dist/recipes/tools/postgres.js +185 -0
- package/dist/recipes/tools/postgres.js.map +1 -0
- package/dist/recipes/tools/posthog.d.ts +16 -0
- package/dist/recipes/tools/posthog.js +219 -0
- package/dist/recipes/tools/posthog.js.map +1 -0
- package/dist/recipes/tools/redis.d.ts +9 -0
- package/dist/recipes/tools/redis.js +140 -0
- package/dist/recipes/tools/redis.js.map +1 -0
- package/dist/recipes/tools/resend.d.ts +8 -0
- package/dist/recipes/tools/resend.js +153 -0
- package/dist/recipes/tools/resend.js.map +1 -0
- package/dist/recipes/tools/salesforce.d.ts +16 -0
- package/dist/recipes/tools/salesforce.js +184 -0
- package/dist/recipes/tools/salesforce.js.map +1 -0
- package/dist/recipes/tools/sendgrid.d.ts +9 -0
- package/dist/recipes/tools/sendgrid.js +174 -0
- package/dist/recipes/tools/sendgrid.js.map +1 -0
- package/dist/recipes/tools/shopify.d.ts +16 -0
- package/dist/recipes/tools/shopify.js +265 -0
- package/dist/recipes/tools/shopify.js.map +1 -0
- package/dist/recipes/tools/snowflake.d.ts +16 -0
- package/dist/recipes/tools/snowflake.js +173 -0
- package/dist/recipes/tools/snowflake.js.map +1 -0
- package/dist/recipes/tools/stripe.js +13 -12
- package/dist/recipes/tools/stripe.js.map +1 -1
- package/dist/recipes/tools/supabase.d.ts +9 -0
- package/dist/recipes/tools/supabase.js +132 -0
- package/dist/recipes/tools/supabase.js.map +1 -0
- package/dist/recipes/tools/todoist.d.ts +15 -0
- package/dist/recipes/tools/todoist.js +227 -0
- package/dist/recipes/tools/todoist.js.map +1 -0
- package/dist/recipes/tools/twilio.d.ts +11 -0
- package/dist/recipes/tools/twilio.js +180 -0
- package/dist/recipes/tools/twilio.js.map +1 -0
- package/dist/recipes/tools/vercel.d.ts +9 -0
- package/dist/recipes/tools/vercel.js +145 -0
- package/dist/recipes/tools/vercel.js.map +1 -0
- package/dist/recipes/tools/webflow.d.ts +11 -0
- package/dist/recipes/tools/webflow.js +243 -0
- package/dist/recipes/tools/webflow.js.map +1 -0
- package/dist/recipes/tools/woocommerce.d.ts +18 -0
- package/dist/recipes/tools/woocommerce.js +259 -0
- package/dist/recipes/tools/woocommerce.js.map +1 -0
- package/dist/recipes/tools/wrapConnectorExecute.d.ts +25 -0
- package/dist/recipes/tools/wrapConnectorExecute.js +37 -0
- package/dist/recipes/tools/wrapConnectorExecute.js.map +1 -0
- package/dist/recipes/validation.js +264 -0
- package/dist/recipes/validation.js.map +1 -1
- package/dist/recipes/yamlRunner.d.ts +112 -3
- package/dist/recipes/yamlRunner.js +482 -19
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/runLog.d.ts +46 -0
- package/dist/runLog.js +4 -0
- package/dist/runLog.js.map +1 -1
- package/dist/schemas/recipe.v1.json +217 -11
- package/dist/server.d.ts +3 -0
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/dist/streamableHttp.js +3 -2
- package/dist/streamableHttp.js.map +1 -1
- package/dist/tools/gitWrite.js +5 -1
- package/dist/tools/gitWrite.js.map +1 -1
- package/dist/tools/terminal.js +15 -49
- package/dist/tools/terminal.js.map +1 -1
- package/dist/transport.d.ts +1 -0
- package/dist/transport.js +7 -0
- package/dist/transport.js.map +1 -1
- package/package.json +3 -3
- package/scripts/mcp-stdio-shim.cjs +218 -84
- package/templates/recipes/incident-to-pr.yaml +187 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { truncateUtf8Bytes } from "../outputCap.js";
|
|
1
2
|
const OUTPUT_CAP = 50 * 1024;
|
|
2
3
|
/**
|
|
3
4
|
* OpenAI API driver — streams via chat.completions.create.
|
|
@@ -66,6 +67,8 @@ export class OpenAIApiDriver {
|
|
|
66
67
|
this.log(`[${this.name}] streaming: model=${model} workspace=${input.workspace}`);
|
|
67
68
|
let text = "";
|
|
68
69
|
let firstChunkAt;
|
|
70
|
+
let promptTokens;
|
|
71
|
+
let completionTokens;
|
|
69
72
|
try {
|
|
70
73
|
// biome-ignore lint/suspicious/noExplicitAny: dynamic import shape
|
|
71
74
|
const stream = await client.chat.completions.create({
|
|
@@ -74,9 +77,24 @@ export class OpenAIApiDriver {
|
|
|
74
77
|
...(temperature !== undefined ? { temperature } : {}),
|
|
75
78
|
messages,
|
|
76
79
|
stream: true,
|
|
80
|
+
// Ask the API to emit a final usage chunk (prompt/completion token
|
|
81
|
+
// counts) so RunBudget can enforce a real token/USD budget instead
|
|
82
|
+
// of failing open. Compliant OpenAI-style endpoints return it; an
|
|
83
|
+
// endpoint that ignores the option simply omits usage and we fail
|
|
84
|
+
// open (providerMeta carries no tokens).
|
|
85
|
+
stream_options: { include_usage: true },
|
|
77
86
|
}, { signal: input.signal });
|
|
78
87
|
// biome-ignore lint/suspicious/noExplicitAny: stream shape from dynamic import
|
|
79
88
|
for await (const chunk of stream) {
|
|
89
|
+
// The include_usage final chunk carries an empty `choices` array and a
|
|
90
|
+
// `usage` object; capture it whenever present (so it works even if an
|
|
91
|
+
// endpoint attaches usage to a content-bearing chunk).
|
|
92
|
+
if (chunk.usage) {
|
|
93
|
+
if (typeof chunk.usage.prompt_tokens === "number")
|
|
94
|
+
promptTokens = chunk.usage.prompt_tokens;
|
|
95
|
+
if (typeof chunk.usage.completion_tokens === "number")
|
|
96
|
+
completionTokens = chunk.usage.completion_tokens;
|
|
97
|
+
}
|
|
80
98
|
const delta = chunk.choices?.[0]?.delta?.content ?? "";
|
|
81
99
|
if (delta) {
|
|
82
100
|
if (firstChunkAt === undefined)
|
|
@@ -111,23 +129,30 @@ export class OpenAIApiDriver {
|
|
|
111
129
|
input.signal.aborted;
|
|
112
130
|
if (isAbort) {
|
|
113
131
|
return {
|
|
114
|
-
text: text
|
|
132
|
+
text: truncateUtf8Bytes(text, OUTPUT_CAP),
|
|
115
133
|
durationMs: Date.now() - start,
|
|
116
134
|
wasAborted: true,
|
|
117
135
|
startupMs: firstChunkAt !== undefined ? firstChunkAt - start : undefined,
|
|
118
136
|
};
|
|
119
137
|
}
|
|
120
138
|
return {
|
|
121
|
-
text: text
|
|
139
|
+
text: truncateUtf8Bytes(text, OUTPUT_CAP),
|
|
122
140
|
durationMs: Date.now() - start,
|
|
123
141
|
errorMessage: err instanceof Error ? err.message : String(err),
|
|
124
142
|
};
|
|
125
143
|
}
|
|
126
144
|
return {
|
|
127
|
-
text: text
|
|
145
|
+
text: truncateUtf8Bytes(text, OUTPUT_CAP),
|
|
128
146
|
durationMs: Date.now() - start,
|
|
129
147
|
startupMs: firstChunkAt !== undefined ? firstChunkAt - start : undefined,
|
|
130
|
-
providerMeta: {
|
|
148
|
+
providerMeta: {
|
|
149
|
+
model,
|
|
150
|
+
// Present only when the endpoint returned a usage chunk. Both fields
|
|
151
|
+
// together or neither — a half-populated count would mislead budgets.
|
|
152
|
+
...(promptTokens !== undefined && completionTokens !== undefined
|
|
153
|
+
? { inputTokens: promptTokens, outputTokens: completionTokens }
|
|
154
|
+
: {}),
|
|
155
|
+
},
|
|
131
156
|
};
|
|
132
157
|
}
|
|
133
158
|
/** Override in subclasses to use a different env var. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/drivers/openai/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/drivers/openai/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared UTF-8-aware output truncation for driver results.
|
|
3
|
+
*
|
|
4
|
+
* Audit 2026-06-03 (MEDIUM #30): the API drivers (claude/api, openai, gemini)
|
|
5
|
+
* capped output with `text.slice(0, OUTPUT_CAP)`, which counts UTF-16 code
|
|
6
|
+
* units — so a 50K "byte" cap could emit ~200KB of UTF-8 wire bytes for CJK /
|
|
7
|
+
* emoji content and could leave a lone surrogate at the boundary. These
|
|
8
|
+
* helpers (previously private to claude/subprocess.ts) measure and cut by
|
|
9
|
+
* UTF-8 bytes. Shared so every driver path uses one implementation.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Truncate `text` to at most `cap` UTF-8 bytes without splitting a multi-byte
|
|
13
|
+
* codepoint. `String.slice(0, cap)` counts UTF-16 code units, so a 50K cap can
|
|
14
|
+
* emit ~200KB of UTF-8 wire bytes for CJK / emoji content; this cuts by bytes
|
|
15
|
+
* at a codepoint boundary.
|
|
16
|
+
*/
|
|
17
|
+
export declare function truncateUtf8Bytes(text: string, cap: number): string;
|
|
18
|
+
/**
|
|
19
|
+
* Truncate `text` so it adds at most `remaining` UTF-8 bytes to a stream and
|
|
20
|
+
* never splits a multi-byte codepoint. Returns the safely-truncated slice plus
|
|
21
|
+
* its actual byte length so a running byte total can be advanced correctly
|
|
22
|
+
* (used by the streaming accumulators).
|
|
23
|
+
*/
|
|
24
|
+
export declare function truncateToBytes(text: string, remaining: number): {
|
|
25
|
+
send: string;
|
|
26
|
+
bytes: number;
|
|
27
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared UTF-8-aware output truncation for driver results.
|
|
3
|
+
*
|
|
4
|
+
* Audit 2026-06-03 (MEDIUM #30): the API drivers (claude/api, openai, gemini)
|
|
5
|
+
* capped output with `text.slice(0, OUTPUT_CAP)`, which counts UTF-16 code
|
|
6
|
+
* units — so a 50K "byte" cap could emit ~200KB of UTF-8 wire bytes for CJK /
|
|
7
|
+
* emoji content and could leave a lone surrogate at the boundary. These
|
|
8
|
+
* helpers (previously private to claude/subprocess.ts) measure and cut by
|
|
9
|
+
* UTF-8 bytes. Shared so every driver path uses one implementation.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Largest byte length ≤ `cap` that ends on a UTF-8 codepoint boundary. UTF-8
|
|
13
|
+
* continuation bytes match `0b10xxxxxx`; if the byte at the cut is one, we're
|
|
14
|
+
* mid-sequence, so back off to the preceding lead byte. This drops a partial
|
|
15
|
+
* trailing codepoint cleanly (no U+FFFD, no lone surrogate, never over `cap`).
|
|
16
|
+
*/
|
|
17
|
+
function codepointBoundary(buf, cap) {
|
|
18
|
+
let end = cap;
|
|
19
|
+
while (end > 0 && (buf[end] & 0xc0) === 0x80)
|
|
20
|
+
end--;
|
|
21
|
+
return end;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Truncate `text` to at most `cap` UTF-8 bytes without splitting a multi-byte
|
|
25
|
+
* codepoint. `String.slice(0, cap)` counts UTF-16 code units, so a 50K cap can
|
|
26
|
+
* emit ~200KB of UTF-8 wire bytes for CJK / emoji content; this cuts by bytes
|
|
27
|
+
* at a codepoint boundary.
|
|
28
|
+
*/
|
|
29
|
+
export function truncateUtf8Bytes(text, cap) {
|
|
30
|
+
const buf = Buffer.from(text, "utf8");
|
|
31
|
+
if (buf.length <= cap)
|
|
32
|
+
return text;
|
|
33
|
+
return buf.subarray(0, codepointBoundary(buf, cap)).toString("utf8");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Truncate `text` so it adds at most `remaining` UTF-8 bytes to a stream and
|
|
37
|
+
* never splits a multi-byte codepoint. Returns the safely-truncated slice plus
|
|
38
|
+
* its actual byte length so a running byte total can be advanced correctly
|
|
39
|
+
* (used by the streaming accumulators).
|
|
40
|
+
*/
|
|
41
|
+
export function truncateToBytes(text, remaining) {
|
|
42
|
+
const buf = Buffer.from(text, "utf8");
|
|
43
|
+
if (buf.length <= remaining)
|
|
44
|
+
return { send: text, bytes: buf.length };
|
|
45
|
+
const send = buf
|
|
46
|
+
.subarray(0, codepointBoundary(buf, remaining))
|
|
47
|
+
.toString("utf8");
|
|
48
|
+
return { send, bytes: Buffer.byteLength(send, "utf8") };
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=outputCap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputCap.js","sourceRoot":"","sources":["../../src/drivers/outputCap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,GAAW,EAAE,GAAW;IACjD,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,OAAO,GAAG,GAAG,CAAC,IAAI,CAAE,GAAG,CAAC,GAAG,CAAY,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,GAAG,EAAE,CAAC;IAChE,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,GAAW;IACzD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,SAAiB;IAEjB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,GAAG;SACb,QAAQ,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;SAC9C,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;AAC1D,CAAC"}
|
package/dist/featureFlags.d.ts
CHANGED
|
@@ -124,6 +124,15 @@ export declare const FLAG_SCHEMA_LINT = "ui.schema-lint";
|
|
|
124
124
|
* explicit opt-in.
|
|
125
125
|
*/
|
|
126
126
|
export declare const FLAG_REPAIR_AI = "recipe.repair-ai";
|
|
127
|
+
/**
|
|
128
|
+
* Globally disable the per-step `allowPrivate: true` SSRF bypass in the
|
|
129
|
+
* recipe `http.post` tool. Default OFF (backward-compatible — recipes that
|
|
130
|
+
* set `allowPrivate: true` keep working). When an operator turns this ON
|
|
131
|
+
* (e.g. for a shared / multi-tenant bridge running untrusted marketplace
|
|
132
|
+
* recipes), the bypass is ignored and private/loopback hosts are blocked
|
|
133
|
+
* regardless of what the recipe requests.
|
|
134
|
+
*/
|
|
135
|
+
export declare const FLAG_BLOCK_RECIPE_ALLOW_PRIVATE = "block-recipe-allow-private";
|
|
127
136
|
/**
|
|
128
137
|
* Watch the flags.json file for cross-process changes. When another
|
|
129
138
|
* process (typically the `patchwork kill-switch` CLI in its fallback
|
package/dist/featureFlags.js
CHANGED
|
@@ -255,6 +255,15 @@ export const FLAG_SCHEMA_LINT = "ui.schema-lint";
|
|
|
255
255
|
* explicit opt-in.
|
|
256
256
|
*/
|
|
257
257
|
export const FLAG_REPAIR_AI = "recipe.repair-ai";
|
|
258
|
+
/**
|
|
259
|
+
* Globally disable the per-step `allowPrivate: true` SSRF bypass in the
|
|
260
|
+
* recipe `http.post` tool. Default OFF (backward-compatible — recipes that
|
|
261
|
+
* set `allowPrivate: true` keep working). When an operator turns this ON
|
|
262
|
+
* (e.g. for a shared / multi-tenant bridge running untrusted marketplace
|
|
263
|
+
* recipes), the bypass is ignored and private/loopback hosts are blocked
|
|
264
|
+
* regardless of what the recipe requests.
|
|
265
|
+
*/
|
|
266
|
+
export const FLAG_BLOCK_RECIPE_ALLOW_PRIVATE = "block-recipe-allow-private";
|
|
258
267
|
// Register built-in flags
|
|
259
268
|
registerFlag({
|
|
260
269
|
id: KILL_SWITCH_WRITES,
|
|
@@ -278,6 +287,13 @@ registerFlag({
|
|
|
278
287
|
category: "ui",
|
|
279
288
|
requiresOptIn: true,
|
|
280
289
|
});
|
|
290
|
+
registerFlag({
|
|
291
|
+
id: FLAG_BLOCK_RECIPE_ALLOW_PRIVATE,
|
|
292
|
+
description: "Globally disable the per-step allowPrivate:true SSRF bypass in the recipe http.post tool. When on, private/loopback hosts are blocked even if a recipe sets allowPrivate:true.",
|
|
293
|
+
defaultValue: false,
|
|
294
|
+
category: "safety",
|
|
295
|
+
requiresOptIn: true,
|
|
296
|
+
});
|
|
281
297
|
// Load persisted flags on module init
|
|
282
298
|
loadFlags();
|
|
283
299
|
/**
|
package/dist/featureFlags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featureFlags.js","sourceRoot":"","sources":["../src/featureFlags.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"featureFlags.js","sourceRoot":"","sources":["../src/featureFlags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/** Flags that allow interpreter commands to execute arbitrary code */
|
|
2
|
+
export declare const DANGEROUS_INTERPRETER_FLAGS: Set<string>;
|
|
3
|
+
/** Flags that redirect where commands read config/manifests from */
|
|
4
|
+
export declare const DANGEROUS_PATH_FLAGS: Set<string>;
|
|
5
|
+
export declare const DANGEROUS_FLAGS_FOR_COMMAND: Record<string, Set<string>>;
|
|
6
|
+
export declare const PATH_FLAG_EXEMPTIONS: Record<string, Set<string>>;
|
|
1
7
|
export interface CommandDescription {
|
|
2
8
|
readonly command: string;
|
|
3
9
|
readonly args: readonly string[];
|
|
@@ -9,7 +9,7 @@ import { optionalInt, optionalString, requireString, resolveFilePath, } from "..
|
|
|
9
9
|
const MAX_ARGS = 100;
|
|
10
10
|
const MAX_ARG_LENGTH = 16_384;
|
|
11
11
|
/** Flags that allow interpreter commands to execute arbitrary code */
|
|
12
|
-
const DANGEROUS_INTERPRETER_FLAGS = new Set([
|
|
12
|
+
export const DANGEROUS_INTERPRETER_FLAGS = new Set([
|
|
13
13
|
"-e",
|
|
14
14
|
"--eval",
|
|
15
15
|
"-c",
|
|
@@ -25,7 +25,7 @@ const DANGEROUS_INTERPRETER_FLAGS = new Set([
|
|
|
25
25
|
"--inspect-port",
|
|
26
26
|
]);
|
|
27
27
|
/** Flags that redirect where commands read config/manifests from */
|
|
28
|
-
const DANGEROUS_PATH_FLAGS = new Set([
|
|
28
|
+
export const DANGEROUS_PATH_FLAGS = new Set([
|
|
29
29
|
"--prefix",
|
|
30
30
|
"--manifest-path",
|
|
31
31
|
"--config",
|
|
@@ -45,14 +45,14 @@ const DANGEROUS_PATH_FLAGS = new Set([
|
|
|
45
45
|
"--abstract-unix-socket",
|
|
46
46
|
"--netrc-file",
|
|
47
47
|
]);
|
|
48
|
-
const DANGEROUS_FLAGS_FOR_COMMAND = {
|
|
48
|
+
export const DANGEROUS_FLAGS_FOR_COMMAND = {
|
|
49
49
|
make: new Set(["-f", "--file"]),
|
|
50
50
|
curl: new Set(["-w", "--write-out"]),
|
|
51
51
|
node: new Set(["-r"]),
|
|
52
52
|
"ts-node": new Set(["-r"]),
|
|
53
53
|
tsx: new Set(["-r"]),
|
|
54
54
|
};
|
|
55
|
-
const PATH_FLAG_EXEMPTIONS = {
|
|
55
|
+
export const PATH_FLAG_EXEMPTIONS = {
|
|
56
56
|
psql: new Set(["--config"]),
|
|
57
57
|
pg_dump: new Set(["--config"]),
|
|
58
58
|
pg_restore: new Set(["--config"]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandDescription.js","sourceRoot":"","sources":["../../src/fp/commandDescription.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,sEAAsE;AACtE,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"commandDescription.js","sourceRoot":"","sources":["../../src/fp/commandDescription.ts"],"names":[],"mappings":"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"}
|
package/dist/fp/policyParser.js
CHANGED
|
@@ -139,18 +139,24 @@ function buildHook(hookType, src, enabled, cooldownMs, condition, patterns, extr
|
|
|
139
139
|
let program = useDedup
|
|
140
140
|
? hookNode
|
|
141
141
|
: withCooldown(key, safeCooldownMs, hookNode);
|
|
142
|
-
// Wrap
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
// Wrap WithDedup for diagnostics error with dedupeByContent
|
|
142
|
+
// Wrap WithDedup for diagnostics error with dedupeByContent.
|
|
143
|
+
// Audit 2026-06-03 (HIGH #12): dedup must be wrapped BEFORE (inside) retry.
|
|
144
|
+
// A scheduled retry re-enters the OUTERMOST node; with WithDedup as the outer
|
|
145
|
+
// wrapper a retried-into-success task never re-passed through dedup, so the
|
|
146
|
+
// dedup key was never recorded and identical content re-fired forever.
|
|
147
|
+
// Final order: WithRetry → WithDedup → Hook.
|
|
149
148
|
if (useDedup) {
|
|
150
149
|
const dedupCooldown = Math.max(5_000, extras
|
|
151
150
|
.dedupeContentCooldownMs ?? 900_000);
|
|
152
151
|
program = withDedup(`dedup:${key}`, dedupCooldown, program);
|
|
153
152
|
}
|
|
153
|
+
// Wrap WithRetry (outermost) so retries re-enter the full stack — cooldown
|
|
154
|
+
// and dedup included — and record their state on success.
|
|
155
|
+
const retryCount = src.retryCount ?? 0;
|
|
156
|
+
if (retryCount > 0) {
|
|
157
|
+
const retryDelayMs = Math.max(5_000, src.retryDelayMs ?? 30_000);
|
|
158
|
+
program = withRetry(key, retryCount, retryDelayMs, program);
|
|
159
|
+
}
|
|
154
160
|
return ok(program);
|
|
155
161
|
}
|
|
156
162
|
// ── Main parser ───────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policyParser.js","sourceRoot":"","sources":["../../src/fp/policyParser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"policyParser.js","sourceRoot":"","sources":["../../src/fp/policyParser.ts"],"names":[],"mappings":"AAOA,OAAO,EAKL,IAAI,EAIJ,YAAY,EACZ,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAmB,MAAM,aAAa,CAAC;AAEvD,iFAAiF;AAEjF,SAAS,WAAW,CAAC,QAAkB,EAAE,SAAkB;IACzD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,YAAY;YACf,OAAO,QAAQ,SAAS,IAAI,GAAG,EAAE,CAAC;QACpC,KAAK,eAAe;YAClB,OAAO,UAAU,SAAS,IAAI,GAAG,EAAE,CAAC;QACtC,KAAK,oBAAoB;YACvB,OAAO,eAAe,SAAS,IAAI,GAAG,EAAE,CAAC;QAC3C,KAAK,sBAAsB;YACzB,OAAO,WAAW,SAAS,IAAI,GAAG,EAAE,CAAC;QACvC,KAAK,aAAa;YAChB,OAAO,WAAW,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,SAAS,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,SAAS,CAAC;QACnB,KAAK,kBAAkB;YACrB,OAAO,UAAU,CAAC;QACpB,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC;QACd,KAAK,WAAW;YACd,OAAO,SAAS,CAAC;QACnB,KAAK,wBAAwB;YAC3B,OAAO,UAAU,CAAC;QACpB,KAAK,eAAe;YAClB,OAAO,aAAa,CAAC;QACvB,KAAK,eAAe;YAClB,OAAO,aAAa,CAAC;QACvB,KAAK,oBAAoB;YACvB,OAAO,YAAY,CAAC;QACtB,KAAK,cAAc;YACjB,OAAO,YAAY,CAAC;QACtB,KAAK,cAAc;YACjB,OAAO,YAAY,CAAC;QACtB,KAAK,eAAe;YAClB,OAAO,aAAa,CAAC;QACvB,KAAK,sBAAsB;YACzB,OAAO,cAAc,CAAC;QACxB,KAAK,qBAAqB;YACxB,OAAO,YAAY,CAAC;QACtB,KAAK,mBAAmB;YACtB,OAAO,UAAU,CAAC;QACpB,KAAK,cAAc;YACjB,mEAAmE;YACnE,sEAAsE;YACtE,sEAAsE;YACtE,iEAAiE;YACjE,OAAO,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACzE,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF,SAAS,iBAAiB,CAAC,GAAiB;IAC1C,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,EAAE,CAAC;YACR,IAAI,EAAE,OAAgB;YACtB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,2EAA2E;IAC3E,qEAAqE;IACrE,2EAA2E;IAC3E,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,GAAG,CACR,aAAa,EACb,+DAA+D,CAChE,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,SAAS,CAAC,GAAiB;IAClC,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IACnB,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,IAAI,CAAC,CAAC,kBAAkB,KAAK,SAAS;QACpC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC;IAClD,IAAI,CAAC,CAAC,sBAAsB,KAAK,SAAS;QACxC,KAAK,CAAC,sBAAsB,GAAG,CAAC,CAAC,sBAAsB,CAAC;IAC1D,IAAI,CAAC,CAAC,oBAAoB,KAAK,SAAS;QACtC,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,oBAAoB,CAAC;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;QAClC,CAAC,CAAE,KAAkC;QACrC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAW;IACnD,cAAc;IACd,eAAe;CAChB,CAAC,CAAC;AAEH,SAAS,SAAS,CAChB,QAAkB,EAClB,GAAiB,EACjB,OAAgB,EAChB,UAAkB,EAClB,SAA6B,EAC7B,QAA8B,EAC9B,MAA8B,EAC9B,KAAyB,EACzB,MAAqD,EACrD,YAAgC;IAEhC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,CAAC,kBAAkB,CAAC,EAAE;QAAE,OAAO,kBAAkB,CAAC;IAEtD,4EAA4E;IAC5E,yEAAyE;IACzE,yEAAyE;IACzE,4DAA4D;IAC5D,MAAM,OAAO,GACX,GAAG,CAAC,OAAO,IAAI,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC;QACrD,CAAC,CAAC;YACE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG;YACpB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO;SAC7B;QACH,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,QAAQ,GAAa,IAAI,CAAC;QAC9B,QAAQ;QACR,OAAO;QACP,SAAS;QACT,QAAQ;QACR,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC;QACpB,YAAY,EAAE,kBAAkB,CAAC,KAAK;QACtC,KAAK;QACL,MAAM;QACN,YAAY;QACZ,MAAM;QACN,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE7C,2EAA2E;IAC3E,oEAAoE;IACpE,0EAA0E;IAC1E,MAAM,QAAQ,GACZ,QAAQ,KAAK,oBAAoB;QACjC,MAAM,EAAE,IAAI,KAAK,kBAAkB;QACnC,MAAM,CAAC,eAAe,CAAC;IAEzB,uEAAuE;IACvE,2EAA2E;IAC3E,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,OAAO,GAAsB,QAAQ;QACvC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;IAEhD,6DAA6D;IAC7D,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,uEAAuE;IACvE,6CAA6C;IAC7C,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,KAAK,EACJ,MAA+C;aAC7C,uBAAuB,IAAI,OAAO,CACtC,CAAC;QACF,OAAO,GAAG,SAAS,CAAC,SAAS,GAAG,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,2EAA2E;IAC3E,0DAA0D;IAC1D,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;IACvC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;QACjE,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,MAAwB;IAExB,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,2BAA2B,CAAC;IACxE,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC;IACpD,MAAM,qBAAqB,GACzB,0CAA0C;QAC1C,8DAA8D;QAC9D,qEAAqE,CAAC;IACxE,MAAM,mBAAmB,GACvB,MAAM,CAAC,sBAAsB,IAAI,qBAAqB,CAAC;IAEzD,iDAAiD;IACjD,SAAS,IAAI,CAAC,MAAqC;QACjD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,CAAC,kBAAkB,EAAE,OAAO,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACpC,MAAM,MAAM,GAAe;YACzB,IAAI,EAAE,kBAAkB;YACxB,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,sBAAsB,EAAE,CAAC,CAAC,WAIhB;YACV,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,uBAAuB,EAAE,CAAC,CAAC,uBAAuB;SACnD,CAAC;QACF,8EAA8E;QAC9E,6EAA6E;QAC7E,iDAAiD;QACjD,MAAM,YAAY,GAAG,CAAC,CAAC,WAKV,CAAC;QACd,MAAM,aAAa,GAAiB,YAAY;YAC9C,CAAC,CAAE;gBACC,GAAG,CAAC;gBACJ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,sBAAsB,EAAE,YAAY,EAAE;aAC9B;YAC/B,CAAC,CAAE,CAA6B,CAAC;QACnC,MAAM,MAAM,GAAG,SAAS,CACtB,oBAAoB,EACpB,aAAa,EACb,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,MAAM,EACN,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAM,CAAC,oBAAoB,EAAE,OAAO,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACtC,MAAM,MAAM,GAAG,SAAS,CACtB,sBAAsB,EACtB,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,aAAa;IACb,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QAC5B,MAAM,MAAM,GAAG,SAAS,CACtB,YAAY,EACZ,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,CAAC,CAAC,QAAQ,EACV,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;QAC/B,MAAM,MAAM,GAAG,SAAS,CACtB,eAAe,EACf,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,CAAC,CAAC,QAAQ,EACV,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,IAAI,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;QAC9B,wEAAwE;QACxE,MAAM,YAAY,GAChB,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS;YAClD,CAAC,CAAC;gBACE,GAAG,CAAC;gBACJ,MAAM,EACJ,sKAAsK;aACzK;YACH,CAAC,CAAC,CAAC,CAAC;QACR,MAAM,MAAM,GAAG,SAAS,CACtB,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,CAAC,CAAC,UAAU,IAAI,MAAM,EACtB,SAAS,EACT,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CACtB,cAAc,EACd,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;QAC/B,MAAM,MAAM,GAAG,SAAS,CACtB,eAAe,EACf,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,uBAAuB;IACvB,IAAI,MAAM,CAAC,oBAAoB,EAAE,OAAO,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,MAAM,CAAC,oBAAoB,CAAC;QACtC,MAAM,MAAM,GAAG,SAAS,CACtB,sBAAsB,EACtB,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,IAAI,MAAM,EACtB,SAAS,EACT,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;QAC9B,MAAM,MAAM,GAAG,SAAS,CACtB,cAAc,EACd,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,SAAS,EACT,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,YAAY;IACZ,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3B,MAAM,MAAM,GAAe;YACzB,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,CAAC,CAAC,aAAa;YAC9B,WAAW,EAAE,CAAC,CAAC,WAAW;SAC3B,CAAC;QACF,MAAM,MAAM,GAAG,SAAS,CACtB,WAAW,EACX,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,MAAM,EACN,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,yBAAyB;IACzB,IAAI,MAAM,CAAC,sBAAsB,EAAE,OAAO,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,sBAAsB,CAAC;QACxC,MAAM,MAAM,GAAG,SAAS,CACtB,wBAAwB,EACxB,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,cAAc;IACd,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QAC7B,MAAM,MAAM,GAAG,SAAS,CACtB,aAAa,EACb,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,YAAY;IACZ,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3B,MAAM,MAAM,GAAG,SAAS,CACtB,WAAW,EACX,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,YAAY;IACZ,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3B,MAAM,MAAM,GAAG,SAAS,CACtB,WAAW,EACX,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAM,CAAC,gBAAgB,EAAE,OAAO,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAClC,MAAM,MAAM,GAAG,SAAS,CACtB,kBAAkB,EAClB,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;QAC/B,MAAM,MAAM,GAAG,SAAS,CACtB,eAAe,EACf,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;QAC/B,MAAM,MAAM,GAAG,SAAS,CACtB,eAAe,EACf,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,qBAAqB;IACrB,IAAI,MAAM,CAAC,kBAAkB,EAAE,OAAO,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,kBAAkB,CAAC;QACpC,MAAM,MAAM,GAAG,SAAS,CACtB,oBAAoB,EACpB,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,IAAI,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;QAC/B,MAAM,MAAM,GAAG,SAAS,CACtB,eAAe,EACf,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,sBAAsB;IACtB,IAAI,MAAM,CAAC,mBAAmB,EAAE,OAAO,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,MAAM,CAAC,mBAAmB,CAAC;QACrC,MAAM,MAAM,GAAG,SAAS,CACtB,qBAAqB,EACrB,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,oBAAoB;IACpB,IAAI,MAAM,CAAC,iBAAiB,EAAE,OAAO,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC;QACnC,MAAM,MAAM,GAAG,SAAS,CACtB,mBAAmB,EACnB,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,UAAU,EACZ,CAAC,CAAC,SAAS,EACX,SAAS,EACT,SAAS,EACT,CAAC,CAAC,KAAK,IAAI,YAAY,EACvB,CAAC,CAAC,MAAM,IAAI,aAAa,EACzB,mBAAmB,CACpB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,CAAC;IACf,CAAC;IAED,4DAA4D;IAC5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzC,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;IAC/C,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACnB,+EAA+E;QAC/E,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;AACtB,CAAC"}
|
package/dist/haltPushDispatch.js
CHANGED
|
@@ -15,31 +15,16 @@
|
|
|
15
15
|
* the runner itself ignorant of push transport.
|
|
16
16
|
*/
|
|
17
17
|
import dns from "node:dns/promises";
|
|
18
|
+
import { isPrivateHost } from "./ssrfGuard.js";
|
|
18
19
|
/**
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* approvalHttp version
|
|
22
|
-
*
|
|
23
|
-
*
|
|
20
|
+
* SSRF blocklist — delegates to the shared, tested `isPrivateHost`
|
|
21
|
+
* (audit 2026-06-03 HIGH #5). Previously an inline copy that, like the
|
|
22
|
+
* approvalHttp version, missed IPv4-mapped IPv6 (`::ffff:127.0.0.1`) and
|
|
23
|
+
* every native IPv6 private range because it split on "." and Number()-
|
|
24
|
+
* coerced the octets.
|
|
24
25
|
*/
|
|
25
26
|
function isBlockedIp(ip) {
|
|
26
|
-
|
|
27
|
-
return true;
|
|
28
|
-
const parts = ip.split(".").map(Number);
|
|
29
|
-
if (parts.length !== 4)
|
|
30
|
-
return false;
|
|
31
|
-
const [a, b] = parts;
|
|
32
|
-
if (a === 127)
|
|
33
|
-
return true;
|
|
34
|
-
if (a === 10)
|
|
35
|
-
return true;
|
|
36
|
-
if (a === 172 && b >= 16 && b <= 31)
|
|
37
|
-
return true;
|
|
38
|
-
if (a === 192 && b === 168)
|
|
39
|
-
return true;
|
|
40
|
-
if (a === 169 && b === 254)
|
|
41
|
-
return true;
|
|
42
|
-
return false;
|
|
27
|
+
return isPrivateHost(ip);
|
|
43
28
|
}
|
|
44
29
|
/**
|
|
45
30
|
* Fire-and-forget dispatch. Never throws — caller cannot recover from a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"haltPushDispatch.js","sourceRoot":"","sources":["../src/haltPushDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,GAAG,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"haltPushDispatch.js","sourceRoot":"","sources":["../src/haltPushDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;GAMG;AACH,SAAS,WAAW,CAAC,EAAU;IAC7B,OAAO,aAAa,CAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAeD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,cAAsB,EACtB,gBAAwB,EACxB,OAAwB;IAExB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACnE,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CACV,6DAA6D,QAAQ,CAAC,OAAO,EAAE,CAChF,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,yCAAyC,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACzG,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,OAAO,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,gBAAgB,EAAE;aAC5C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,2DAA2D;YAC3D,gEAAgE;YAChE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,OAAO,CAAC,IAAI,CACV,wCAAwC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CACvE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CACV,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACnF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2451,6 +2451,134 @@ if (process.argv[2] === "recipe" && process.argv[3] === "preflight") {
|
|
|
2451
2451
|
}
|
|
2452
2452
|
})();
|
|
2453
2453
|
}
|
|
2454
|
+
// `recipe simulate <name|file>` — What-If Preview. Statically simulates a
|
|
2455
|
+
// recipe before it is enabled: projected actions, side-effect taxonomy,
|
|
2456
|
+
// blast-radius risk, tier-only approval projection (honestly flagged as NOT
|
|
2457
|
+
// gated on recipe steps today), low-confidence cost, and undetermined
|
|
2458
|
+
// conditional branches. Executes nothing. See runRecipeSimulate in
|
|
2459
|
+
// commands/recipe.ts.
|
|
2460
|
+
if (process.argv[2] === "recipe" && process.argv[3] === "simulate") {
|
|
2461
|
+
const args = process.argv.slice(4);
|
|
2462
|
+
const usage = "Usage: patchwork recipe simulate <name|file.yaml> [--json] [--step <id>] [--var k=v]\n\n" +
|
|
2463
|
+
"What-If Preview: statically simulate a recipe before enabling it.\n" +
|
|
2464
|
+
"Shows projected actions, side effects, risk, approvals (tier-only),\n" +
|
|
2465
|
+
"cost (low-confidence), and undetermined branches. Executes nothing.\n";
|
|
2466
|
+
let json = false;
|
|
2467
|
+
let step;
|
|
2468
|
+
const vars = {};
|
|
2469
|
+
let target;
|
|
2470
|
+
for (let i = 0; i < args.length; i++) {
|
|
2471
|
+
const arg = args[i];
|
|
2472
|
+
if (arg === undefined)
|
|
2473
|
+
continue;
|
|
2474
|
+
if (arg === "--json") {
|
|
2475
|
+
json = true;
|
|
2476
|
+
continue;
|
|
2477
|
+
}
|
|
2478
|
+
if (arg === "--step" || arg.startsWith("--step=")) {
|
|
2479
|
+
const value = arg === "--step" ? args[++i] : arg.slice("--step=".length);
|
|
2480
|
+
if (!value) {
|
|
2481
|
+
process.stderr.write(`Error: --step requires a value\n${usage}`);
|
|
2482
|
+
process.exit(1);
|
|
2483
|
+
}
|
|
2484
|
+
step = value;
|
|
2485
|
+
continue;
|
|
2486
|
+
}
|
|
2487
|
+
if (arg === "--var" || arg.startsWith("--var=")) {
|
|
2488
|
+
const value = arg === "--var" ? args[++i] : arg.slice("--var=".length);
|
|
2489
|
+
if (!value?.includes("=")) {
|
|
2490
|
+
process.stderr.write(`Error: --var requires k=v\n${usage}`);
|
|
2491
|
+
process.exit(1);
|
|
2492
|
+
}
|
|
2493
|
+
const idx = value.indexOf("=");
|
|
2494
|
+
vars[value.slice(0, idx)] = value.slice(idx + 1);
|
|
2495
|
+
continue;
|
|
2496
|
+
}
|
|
2497
|
+
if (!arg.startsWith("--")) {
|
|
2498
|
+
target = arg;
|
|
2499
|
+
}
|
|
2500
|
+
}
|
|
2501
|
+
if (!target) {
|
|
2502
|
+
process.stderr.write(usage);
|
|
2503
|
+
process.exit(1);
|
|
2504
|
+
}
|
|
2505
|
+
(async () => {
|
|
2506
|
+
try {
|
|
2507
|
+
const { runRecipeSimulate } = await import("./commands/recipe.js");
|
|
2508
|
+
const report = await runRecipeSimulate(target, {
|
|
2509
|
+
...(step ? { step } : {}),
|
|
2510
|
+
...(Object.keys(vars).length ? { vars } : {}),
|
|
2511
|
+
});
|
|
2512
|
+
if (json) {
|
|
2513
|
+
process.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
|
|
2514
|
+
process.exit(0);
|
|
2515
|
+
}
|
|
2516
|
+
const out = process.stdout;
|
|
2517
|
+
const mark = (tier) => tier === "high" ? "●" : tier === "medium" ? "◐" : "○";
|
|
2518
|
+
const fidelityLabel = report.fidelity === "mocked"
|
|
2519
|
+
? `mocked fidelity, ${report.sampleRuns ?? 0} prior run(s)`
|
|
2520
|
+
: `${report.fidelity} fidelity`;
|
|
2521
|
+
out.write(`\n What-If Preview — ${report.recipe} (${report.topology}, ${fidelityLabel})\n`);
|
|
2522
|
+
out.write(` Trigger: ${report.triggerType} · ${report.summary.totalSteps} step(s)\n\n`);
|
|
2523
|
+
out.write(` Risk: ${report.risk.tier.toUpperCase()} (score ${report.risk.score}/100)\n`);
|
|
2524
|
+
const c = report.risk.components;
|
|
2525
|
+
out.write(` high:${c.highSteps} medium:${c.mediumSteps} writes:${c.writeSteps} connector-writes:${c.connectorWriteSteps} http:${c.externalHttpSteps} unresolved:${c.unresolvedSteps}\n\n`);
|
|
2526
|
+
out.write(" Actions:\n");
|
|
2527
|
+
for (const s of report.steps) {
|
|
2528
|
+
const tool = s.tool ?? s.type;
|
|
2529
|
+
const when = s.condition ? ` when: ${s.condition}` : "";
|
|
2530
|
+
out.write(` ${mark(s.effectiveRisk)} ${s.id} ${tool} [${s.sideEffect}]${when}\n`);
|
|
2531
|
+
}
|
|
2532
|
+
out.write("\n");
|
|
2533
|
+
const ns = report.summary.connectorNamespaces;
|
|
2534
|
+
out.write(` Side effects: ${report.summary.writeSteps} write(s) · ${report.summary.connectorSteps} connector call(s)${ns.length ? ` (${ns.join(", ")})` : ""} · ${report.summary.agentSteps} agent step(s)\n`);
|
|
2535
|
+
const gating = report.approvals.projected.filter((a) => a.wouldRequireApproval).length;
|
|
2536
|
+
out.write(` Approvals: ${gating} step(s) would gate IF recipe steps were gated — they are NOT gated today\n`);
|
|
2537
|
+
{
|
|
2538
|
+
const c = report.cost;
|
|
2539
|
+
const toks = typeof c.estInputTokens === "number"
|
|
2540
|
+
? ` ~${c.estInputTokens} in / ${c.estOutputTokens ?? 0} out tokens`
|
|
2541
|
+
: typeof c.estPromptTokens === "number"
|
|
2542
|
+
? ` ~${c.estPromptTokens} input tokens`
|
|
2543
|
+
: "";
|
|
2544
|
+
const usd = typeof c.usd === "number"
|
|
2545
|
+
? ` ≈$${c.usd.toFixed(4)}${typeof c.minUsd === "number" && typeof c.maxUsd === "number"
|
|
2546
|
+
? ` ($${c.minUsd.toFixed(4)}–$${c.maxUsd.toFixed(4)})`
|
|
2547
|
+
: ""}`
|
|
2548
|
+
: "";
|
|
2549
|
+
const conf = c.confidence ? `/${c.confidence}` : "";
|
|
2550
|
+
out.write(` Cost [${c.basis}${conf}]:${toks}${usd}\n`);
|
|
2551
|
+
out.write(` ${c.note}\n`);
|
|
2552
|
+
}
|
|
2553
|
+
if (report.branches.length > 0) {
|
|
2554
|
+
if (report.fidelity === "mocked") {
|
|
2555
|
+
const taken = report.branches.filter((b) => b.outcome === "taken").length;
|
|
2556
|
+
const skipped = report.branches.filter((b) => b.outcome === "skipped").length;
|
|
2557
|
+
const undet = report.branches.filter((b) => b.outcome === "undetermined").length;
|
|
2558
|
+
out.write(` Branches: ${report.branches.length} conditional — ${taken} taken, ${skipped} skipped, ${undet} undetermined\n`);
|
|
2559
|
+
for (const b of report.branches) {
|
|
2560
|
+
out.write(` ${b.outcome.padEnd(12)} ${b.stepId} ${b.condition}\n`);
|
|
2561
|
+
}
|
|
2562
|
+
}
|
|
2563
|
+
else {
|
|
2564
|
+
out.write(` Branches: ${report.branches.length} conditional — undetermined (resolve in a later sandbox phase)\n`);
|
|
2565
|
+
}
|
|
2566
|
+
}
|
|
2567
|
+
if (report.lint.errors.length > 0 || report.lint.warnings.length > 0) {
|
|
2568
|
+
out.write(` Lint: ${report.lint.errors.length} error(s), ${report.lint.warnings.length} warning(s)\n`);
|
|
2569
|
+
}
|
|
2570
|
+
out.write("\n Notes:\n");
|
|
2571
|
+
for (const n of report.notes)
|
|
2572
|
+
out.write(` • ${n}\n`);
|
|
2573
|
+
out.write("\n");
|
|
2574
|
+
process.exit(0);
|
|
2575
|
+
}
|
|
2576
|
+
catch (err) {
|
|
2577
|
+
process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
2578
|
+
process.exit(1);
|
|
2579
|
+
}
|
|
2580
|
+
})();
|
|
2581
|
+
}
|
|
2454
2582
|
// `recipe doctor <name|file>` — one-screen "why is this recipe unhealthy
|
|
2455
2583
|
// + how do I fix it" diagnosis. Composes the static preflight check with
|
|
2456
2584
|
// the recipe-scoped runtime halt summary from a live bridge (fail-soft:
|