patchwork-os 1.2.0-beta.2.canary.781 → 1.2.0-beta.2.canary.783
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/activityLog.js +6 -1
- package/dist/activityLog.js.map +1 -1
- package/dist/approvalQueue.js +15 -0
- package/dist/approvalQueue.js.map +1 -1
- package/dist/bridge.js +32 -1
- package/dist/bridge.js.map +1 -1
- package/dist/claudeDriver.d.ts +10 -0
- package/dist/claudeDriver.js +27 -4
- package/dist/claudeDriver.js.map +1 -1
- package/dist/claudeOrchestrator.d.ts +5 -0
- package/dist/claudeOrchestrator.js +94 -6
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/patchworkInit.js +10 -0
- package/dist/commands/patchworkInit.js.map +1 -1
- package/dist/commands/policyExplain.d.ts +50 -0
- package/dist/commands/policyExplain.js +221 -0
- package/dist/commands/policyExplain.js.map +1 -0
- package/dist/commands/profile.d.ts +17 -0
- package/dist/commands/profile.js +85 -0
- package/dist/commands/profile.js.map +1 -0
- package/dist/commands/recipe.d.ts +8 -0
- package/dist/commands/recipe.js +64 -0
- package/dist/commands/recipe.js.map +1 -1
- package/dist/commands/recipeInstall.js +19 -0
- package/dist/commands/recipeInstall.js.map +1 -1
- package/dist/connectors/baseConnector.js +5 -0
- package/dist/connectors/baseConnector.js.map +1 -1
- package/dist/connectors/secrets.js +10 -2
- package/dist/connectors/secrets.js.map +1 -1
- package/dist/connectors/tokenStorage.d.ts +9 -0
- package/dist/connectors/tokenStorage.js +27 -0
- package/dist/connectors/tokenStorage.js.map +1 -1
- package/dist/decisionTraceLog.js +4 -3
- package/dist/decisionTraceLog.js.map +1 -1
- package/dist/drivers/claude/envSanitizer.d.ts +39 -0
- package/dist/drivers/claude/envSanitizer.js +114 -0
- package/dist/drivers/claude/envSanitizer.js.map +1 -1
- package/dist/drivers/claude/subprocess.d.ts +12 -0
- package/dist/drivers/claude/subprocess.js +114 -25
- package/dist/drivers/claude/subprocess.js.map +1 -1
- package/dist/drivers/claude/subprocessSettings.d.ts +4 -1
- package/dist/drivers/claude/subprocessSettings.js +24 -7
- package/dist/drivers/claude/subprocessSettings.js.map +1 -1
- package/dist/drivers/codex/subprocess.d.ts +19 -0
- package/dist/drivers/codex/subprocess.js +40 -8
- package/dist/drivers/codex/subprocess.js.map +1 -1
- package/dist/drivers/gemini/index.d.ts +24 -0
- package/dist/drivers/gemini/index.js +76 -13
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/types.d.ts +14 -0
- package/dist/drivers/types.js.map +1 -1
- package/dist/errors.d.ts +1 -0
- package/dist/errors.js +1 -0
- package/dist/errors.js.map +1 -1
- package/dist/governance/doctorReport.d.ts +45 -0
- package/dist/governance/doctorReport.js +251 -0
- package/dist/governance/doctorReport.js.map +1 -0
- package/dist/governance/effectivePolicy.d.ts +134 -0
- package/dist/governance/effectivePolicy.js +322 -0
- package/dist/governance/effectivePolicy.js.map +1 -0
- package/dist/governance/killSwitchPolicy.d.ts +30 -0
- package/dist/governance/killSwitchPolicy.js +52 -0
- package/dist/governance/killSwitchPolicy.js.map +1 -0
- package/dist/governance/pluginPolicy.d.ts +111 -0
- package/dist/governance/pluginPolicy.js +247 -0
- package/dist/governance/pluginPolicy.js.map +1 -0
- package/dist/governance/profile.d.ts +153 -0
- package/dist/governance/profile.js +181 -0
- package/dist/governance/profile.js.map +1 -0
- package/dist/governance/secretValues.d.ts +89 -0
- package/dist/governance/secretValues.js +286 -0
- package/dist/governance/secretValues.js.map +1 -0
- package/dist/governance/toolFacts.d.ts +11 -0
- package/dist/governance/toolFacts.js +46 -0
- package/dist/governance/toolFacts.js.map +1 -0
- package/dist/governance/untrustedContent.d.ts +43 -0
- package/dist/governance/untrustedContent.js +81 -0
- package/dist/governance/untrustedContent.js.map +1 -0
- package/dist/index.js +73 -5
- package/dist/index.js.map +1 -1
- package/dist/logger.js +7 -6
- package/dist/logger.js.map +1 -1
- package/dist/patchworkConfig.d.ts +22 -0
- package/dist/patchworkConfig.js.map +1 -1
- package/dist/pluginLoader.d.ts +10 -2
- package/dist/pluginLoader.js +12 -8
- package/dist/pluginLoader.js.map +1 -1
- package/dist/recipeOrchestration.d.ts +0 -6
- package/dist/recipeOrchestration.js +80 -23
- package/dist/recipeOrchestration.js.map +1 -1
- package/dist/recipeRoutes.js +52 -0
- package/dist/recipeRoutes.js.map +1 -1
- package/dist/recipes/agentExecutor.d.ts +43 -3
- package/dist/recipes/agentExecutor.js +55 -7
- package/dist/recipes/agentExecutor.js.map +1 -1
- package/dist/recipes/approvalRequest.d.ts +8 -0
- package/dist/recipes/approvalRequest.js.map +1 -1
- package/dist/recipes/chainedRunner.d.ts +18 -5
- package/dist/recipes/chainedRunner.js +107 -12
- package/dist/recipes/chainedRunner.js.map +1 -1
- package/dist/recipes/haltCategory.d.ts +4 -0
- package/dist/recipes/haltCategory.js +4 -0
- package/dist/recipes/haltCategory.js.map +1 -1
- package/dist/recipes/schema.d.ts +5 -1
- package/dist/recipes/schemaGenerator.js +12 -1
- package/dist/recipes/schemaGenerator.js.map +1 -1
- package/dist/recipes/stepObservation.d.ts +15 -0
- package/dist/recipes/stepObservation.js +27 -22
- package/dist/recipes/stepObservation.js.map +1 -1
- package/dist/recipes/templateEngine.d.ts +11 -1
- package/dist/recipes/templateEngine.js +12 -2
- package/dist/recipes/templateEngine.js.map +1 -1
- package/dist/recipes/toolRegistry.d.ts +3 -1
- package/dist/recipes/toolRegistry.js +9 -3
- package/dist/recipes/toolRegistry.js.map +1 -1
- package/dist/recipes/tools/http.d.ts +5 -2
- package/dist/recipes/tools/http.js +29 -10
- package/dist/recipes/tools/http.js.map +1 -1
- package/dist/recipes/validation.d.ts +10 -1
- package/dist/recipes/validation.js +51 -1
- package/dist/recipes/validation.js.map +1 -1
- package/dist/recipes/yamlRunner.d.ts +46 -5
- package/dist/recipes/yamlRunner.js +173 -21
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/schemas/recipe.v1.json +60 -3
- package/dist/server.js +15 -0
- package/dist/server.js.map +1 -1
- package/dist/ssrfGuard.d.ts +89 -5
- package/dist/ssrfGuard.js +250 -5
- package/dist/ssrfGuard.js.map +1 -1
- package/dist/tools/httpClient.js +23 -165
- package/dist/tools/httpClient.js.map +1 -1
- package/dist/transport.js +41 -0
- package/dist/transport.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,8 +4,9 @@ import { homedir } from "node:os";
|
|
|
4
4
|
import { isAbsolute, join, resolve } from "node:path";
|
|
5
5
|
import { treeKill } from "../../processTree.js";
|
|
6
6
|
import { ensureCmdShim } from "../../winShim.js";
|
|
7
|
-
import { sanitizeEnv } from "../claude/envSanitizer.js";
|
|
7
|
+
import { allowlistEnv, passEnvFromProviderOptions, sanitizeEnv, } from "../claude/envSanitizer.js";
|
|
8
8
|
import { splitLines } from "../claude/streamParser.js";
|
|
9
|
+
import { containmentFromInput } from "../claude/subprocess.js";
|
|
9
10
|
import { truncateToBytes, truncateUtf8Bytes } from "../outputCap.js";
|
|
10
11
|
import { toProviderTaskOutcome } from "../types.js";
|
|
11
12
|
const OUTPUT_CAP = 50 * 1024;
|
|
@@ -57,6 +58,38 @@ export const GEMINI_SHELL_DENY_PATTERNS = [
|
|
|
57
58
|
"run_shell_command(kill -9)",
|
|
58
59
|
"run_shell_command(pkill)",
|
|
59
60
|
];
|
|
61
|
+
/**
|
|
62
|
+
* Gemini containment (Phase 0 step 6) — what the CLI CAN and CANNOT express.
|
|
63
|
+
*
|
|
64
|
+
* Gemini CLI has no per-tool ALLOW list and no argv deny flag; the only
|
|
65
|
+
* knobs are `--approval-mode` and the settings-file `tools.exclude` list
|
|
66
|
+
* (tool names, or `run_shell_command(<prefix>)`). So containment is COARSE:
|
|
67
|
+
*
|
|
68
|
+
* - Contained, shell NOT widened: `--approval-mode plan` (read-only mode —
|
|
69
|
+
* no edits, no shell) AND exclude `run_shell_command`, `write_file`,
|
|
70
|
+
* `replace`, `save_memory` by name.
|
|
71
|
+
* - Network NOT widened: exclude `web_fetch` and `google_web_search`.
|
|
72
|
+
* - Shell widened: the operator's approvalMode (default yolo) is kept,
|
|
73
|
+
* since no headless mode exists that permits shell without prompts
|
|
74
|
+
* other than yolo; the shell deny-prefix list still applies.
|
|
75
|
+
* - `allowedTools` from the containment is NOT enforceable here (no
|
|
76
|
+
* allowlist primitive) — `policy explain` should describe Gemini
|
|
77
|
+
* containment as "coarse: mode + exclusions, no allowlist".
|
|
78
|
+
*
|
|
79
|
+
* Provider credentials kept under the env allowlist: GEMINI_API_KEY and
|
|
80
|
+
* the GOOGLE_* auth vars.
|
|
81
|
+
*/
|
|
82
|
+
export const GEMINI_CONTAINED_NETWORK_EXCLUDES = Object.freeze(["web_fetch", "google_web_search"]);
|
|
83
|
+
export const GEMINI_CONTAINED_SHELL_EXCLUDES = Object.freeze(["run_shell_command", "write_file", "replace", "save_memory"]);
|
|
84
|
+
export const GEMINI_PROVIDER_ENV_KEYS = Object.freeze([
|
|
85
|
+
"GEMINI_API_KEY",
|
|
86
|
+
"GOOGLE_API_KEY",
|
|
87
|
+
"GOOGLE_GENAI_API_KEY",
|
|
88
|
+
"GOOGLE_APPLICATION_CREDENTIALS",
|
|
89
|
+
"GOOGLE_CLOUD_PROJECT",
|
|
90
|
+
"GOOGLE_CLOUD_LOCATION",
|
|
91
|
+
"GOOGLE_GENAI_USE_VERTEXAI",
|
|
92
|
+
]);
|
|
60
93
|
function scrubSecrets(text) {
|
|
61
94
|
return text
|
|
62
95
|
.replace(/AIza[A-Za-z0-9_-]{35}/g, "[REDACTED_API_KEY]")
|
|
@@ -104,7 +137,10 @@ export class GeminiSubprocessDriver {
|
|
|
104
137
|
// gate, once inside _runLocked) opens a TOCTOU window: if the value
|
|
105
138
|
// ever flips falsy→truthy between the two calls, the gate skips the
|
|
106
139
|
// mutex but _runLocked writes settings.json without a lock.
|
|
107
|
-
|
|
140
|
+
// A containment decides MCP access; without one, the bridge endpoint
|
|
141
|
+
// closure alone decides (legacy).
|
|
142
|
+
const containment = containmentFromInput(input);
|
|
143
|
+
const mcp = containment && !containment.mcpAccess ? undefined : this.bridgeMcp?.();
|
|
108
144
|
// _runLocked ALWAYS mutates ~/.gemini/settings.json now — to inject the
|
|
109
145
|
// destructive-command deny list (drivers-orch-6) even when no MCP is
|
|
110
146
|
// injected — so EVERY run must hold the settings mutex, not just MCP runs.
|
|
@@ -125,7 +161,21 @@ export class GeminiSubprocessDriver {
|
|
|
125
161
|
}
|
|
126
162
|
async _runLocked(input, mcp) {
|
|
127
163
|
const opts = input.providerOptions ?? {};
|
|
128
|
-
const
|
|
164
|
+
const containment = containmentFromInput(input);
|
|
165
|
+
const contained = containment?.enforced === true;
|
|
166
|
+
const shellWidened = contained && !(containment?.deniedTools ?? []).includes("Bash");
|
|
167
|
+
const networkWidened = contained && !(containment?.deniedTools ?? []).includes("WebFetch");
|
|
168
|
+
const approvalMode = contained && !shellWidened
|
|
169
|
+
? "plan"
|
|
170
|
+
: typeof opts.approvalMode === "string"
|
|
171
|
+
? opts.approvalMode
|
|
172
|
+
: "yolo";
|
|
173
|
+
const containedExcludes = contained
|
|
174
|
+
? [
|
|
175
|
+
...(networkWidened ? [] : GEMINI_CONTAINED_NETWORK_EXCLUDES),
|
|
176
|
+
...(shellWidened ? [] : GEMINI_CONTAINED_SHELL_EXCLUDES),
|
|
177
|
+
]
|
|
178
|
+
: [];
|
|
129
179
|
// Mutate ~/.gemini/settings.json before spawning so the subprocess (1) can
|
|
130
180
|
// call bridge tools when MCP is injected and (2) ALWAYS runs with a
|
|
131
181
|
// destructive-command deny list (drivers-orch-6). Gemini CLI reads
|
|
@@ -183,12 +233,20 @@ export class GeminiSubprocessDriver {
|
|
|
183
233
|
: [];
|
|
184
234
|
settings.tools = {
|
|
185
235
|
...existingTools,
|
|
186
|
-
exclude: Array.from(new Set([
|
|
236
|
+
exclude: Array.from(new Set([
|
|
237
|
+
...existingToolsExclude,
|
|
238
|
+
...GEMINI_SHELL_DENY_PATTERNS,
|
|
239
|
+
...containedExcludes,
|
|
240
|
+
])),
|
|
187
241
|
};
|
|
188
242
|
const existingExcludeTools = Array.isArray(settings.excludeTools)
|
|
189
243
|
? settings.excludeTools.filter((e) => typeof e === "string")
|
|
190
244
|
: [];
|
|
191
|
-
settings.excludeTools = Array.from(new Set([
|
|
245
|
+
settings.excludeTools = Array.from(new Set([
|
|
246
|
+
...existingExcludeTools,
|
|
247
|
+
...GEMINI_SHELL_DENY_PATTERNS,
|
|
248
|
+
...containedExcludes,
|
|
249
|
+
]));
|
|
192
250
|
mkdirSync(join(homedir(), ".gemini"), { recursive: true });
|
|
193
251
|
writeFileSync(settingsFile, JSON.stringify(settings, null, 2), {
|
|
194
252
|
mode: 0o600,
|
|
@@ -264,14 +322,19 @@ export class GeminiSubprocessDriver {
|
|
|
264
322
|
// GEMINI_API_KEY plus the GOOGLE_* vars used for API-key / Vertex / ADC
|
|
265
323
|
// auth. Every other provider's key (OPENAI/XAI/...) is stripped so a
|
|
266
324
|
// prompt-injected Gemini step can't exfiltrate them.
|
|
267
|
-
const env =
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
325
|
+
const env = containment?.envAllowlist
|
|
326
|
+
? allowlistEnv(process.env, {
|
|
327
|
+
providerKeys: GEMINI_PROVIDER_ENV_KEYS,
|
|
328
|
+
passEnv: passEnvFromProviderOptions(opts),
|
|
329
|
+
})
|
|
330
|
+
: sanitizeEnv(process.env, {
|
|
331
|
+
preserve: [
|
|
332
|
+
"GEMINI_API_KEY",
|
|
333
|
+
"GOOGLE_API_KEY",
|
|
334
|
+
"GOOGLE_GENAI_API_KEY",
|
|
335
|
+
"GOOGLE_APPLICATION_CREDENTIALS",
|
|
336
|
+
],
|
|
337
|
+
});
|
|
275
338
|
// Also strip Claude-specific auth vars that must not reach the Gemini process.
|
|
276
339
|
// CLAUDE_CODE_OAUTH_TOKEN is the user's Anthropic subscription token — any
|
|
277
340
|
// shell command the Gemini agent runs (printenv, curl, etc.) can read it from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/drivers/gemini/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/drivers/gemini/index.ts"],"names":[],"mappings":"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"}
|
package/dist/drivers/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Provider-neutral driver types.
|
|
3
3
|
* All drivers implement ProviderDriver; Claude-specific fields go in providerOptions.
|
|
4
4
|
*/
|
|
5
|
+
import type { AgentContainment } from "../governance/profile.js";
|
|
5
6
|
export interface ProviderTaskInput {
|
|
6
7
|
prompt: string;
|
|
7
8
|
/** Working directory / context hint passed as cwd to the subprocess or API call. */
|
|
@@ -23,6 +24,19 @@ export interface ProviderTaskInput {
|
|
|
23
24
|
* OpenAI API: { maxTokens, temperature }
|
|
24
25
|
*/
|
|
25
26
|
providerOptions?: Record<string, unknown>;
|
|
27
|
+
/**
|
|
28
|
+
* Resolved agent containment (Phase 0 step 6 — `resolveAgentContainment`).
|
|
29
|
+
* When present AND `enforced`, a subprocess driver applies the tool
|
|
30
|
+
* allowlist / deny list, the environment allowlist and the MCP-access gate
|
|
31
|
+
* it describes. Absent ⇒ the driver's pre-profile behaviour (the legacy
|
|
32
|
+
* `providerOptions.sandbox` / `allowedTools` / `disallowedTools` /
|
|
33
|
+
* `mcpAccess` keys), so no existing caller changes behaviour.
|
|
34
|
+
*
|
|
35
|
+
* Drivers also accept the same object under `providerOptions.containment`
|
|
36
|
+
* for the one hop (`claudeOrchestrator`) that repackages typed fields into
|
|
37
|
+
* the untyped bag.
|
|
38
|
+
*/
|
|
39
|
+
containment?: AgentContainment;
|
|
26
40
|
}
|
|
27
41
|
export interface ProviderTaskResult {
|
|
28
42
|
text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/drivers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/drivers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmFH,MAAM,UAAU,qBAAqB,CACnC,MAA0B,EAC1B,YAAkE;IAElE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,UAAU,GACd,MAAM,CAAC,eAAe,IAAI,YAAY,KAAK,iBAAiB;YAC1D,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,YAAY,KAAK,SAAS;gBAC1B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;IAC3E,CAAC;IACD,IACE,MAAM,CAAC,YAAY;QACnB,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,CAAC,EACxD,CAAC;QACD,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,aAAa,MAAM,CAAC,QAAQ,EAAE;YACnE,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;AACJ,CAAC"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -28,5 +28,6 @@ export declare const ToolErrorCodes: {
|
|
|
28
28
|
readonly AMBIGUOUS_TASK_ID: "ambiguous_task_id";
|
|
29
29
|
readonly DRIVER_NOT_CONFIGURED: "driver_not_configured";
|
|
30
30
|
readonly COOLDOWN_ACTIVE: "cooldown_active";
|
|
31
|
+
readonly KILL_SWITCH_BLOCKED: "kill_switch_blocked";
|
|
31
32
|
};
|
|
32
33
|
export type ToolErrorCode = (typeof ToolErrorCodes)[keyof typeof ToolErrorCodes];
|
package/dist/errors.js
CHANGED
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,8BAA8B;IAC9B,WAAW,EAAE,CAAC,KAAK;IACnB,eAAe,EAAE,CAAC,KAAK;IACvB,gBAAgB,EAAE,CAAC,KAAK;IACxB,cAAc,EAAE,CAAC,KAAK;IACtB,wEAAwE;IACxE,cAAc,EAAE,CAAC,KAAK;IACtB,mBAAmB,EAAE,CAAC,KAAK;IAC3B,kBAAkB,EAAE,CAAC,KAAK;CAClB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,uBAAuB,EAAE,yBAAyB;IAClD,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;IACtC,qBAAqB,EAAE,uBAAuB;IAC9C,eAAe,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,8BAA8B;IAC9B,WAAW,EAAE,CAAC,KAAK;IACnB,eAAe,EAAE,CAAC,KAAK;IACvB,gBAAgB,EAAE,CAAC,KAAK;IACxB,cAAc,EAAE,CAAC,KAAK;IACtB,wEAAwE;IACxE,cAAc,EAAE,CAAC,KAAK;IACtB,mBAAmB,EAAE,CAAC,KAAK;IAC3B,kBAAkB,EAAE,CAAC,KAAK;CAClB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,uBAAuB,EAAE,yBAAyB;IAClD,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;IACtC,qBAAqB,EAAE,uBAAuB;IAC9C,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;CAClC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Governance posture for `patchwork doctor` — "am I actually running
|
|
3
|
+
* governed?"
|
|
4
|
+
*
|
|
5
|
+
* Every line is read from RUNTIME-EFFECTIVE state, never from what the config
|
|
6
|
+
* file says it wants: the resolved profile, the live flag values, the plugin
|
|
7
|
+
* scan of installed recipes, the destination registry as parsed, the
|
|
8
|
+
* secret-value registry count. A line that could be green while the runtime
|
|
9
|
+
* did something else would be worse than no line.
|
|
10
|
+
*
|
|
11
|
+
* Output names no recipe and prints no value — counts and verdicts only —
|
|
12
|
+
* so it is safe to paste.
|
|
13
|
+
*/
|
|
14
|
+
import { loadConfig } from "../patchworkConfig.js";
|
|
15
|
+
import { type GovernanceProfile } from "./profile.js";
|
|
16
|
+
export interface GovernanceLine {
|
|
17
|
+
key: string;
|
|
18
|
+
label: string;
|
|
19
|
+
value: string;
|
|
20
|
+
/** ok = contributes to GOVERNED; warn = informational; fail = a NOT GOVERNED reason. */
|
|
21
|
+
status: "ok" | "warn" | "fail";
|
|
22
|
+
reason?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface GovernanceReport {
|
|
25
|
+
profile: GovernanceProfile;
|
|
26
|
+
governed: boolean;
|
|
27
|
+
lines: GovernanceLine[];
|
|
28
|
+
reasons: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface GovernanceReportOpts {
|
|
31
|
+
/** Config to judge (default: `loadConfig()`). Tests inject. */
|
|
32
|
+
config?: ReturnType<typeof loadConfig>;
|
|
33
|
+
/** Live flag reader (default: featureFlags.isEnabled). Tests inject. */
|
|
34
|
+
isFlagOn?: (id: string) => boolean;
|
|
35
|
+
recipesDir?: string;
|
|
36
|
+
workersDir?: string;
|
|
37
|
+
/**
|
|
38
|
+
* Whether this process IS the bridge (flags resolved at startup). From the
|
|
39
|
+
* CLI, flags are re-derived from the profile — the CLI cannot see a live
|
|
40
|
+
* bridge's memory — and the report says so.
|
|
41
|
+
*/
|
|
42
|
+
live?: boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare function governanceReport(opts?: GovernanceReportOpts): GovernanceReport;
|
|
45
|
+
export declare function formatGovernanceReport(r: GovernanceReport): string;
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Governance posture for `patchwork doctor` — "am I actually running
|
|
3
|
+
* governed?"
|
|
4
|
+
*
|
|
5
|
+
* Every line is read from RUNTIME-EFFECTIVE state, never from what the config
|
|
6
|
+
* file says it wants: the resolved profile, the live flag values, the plugin
|
|
7
|
+
* scan of installed recipes, the destination registry as parsed, the
|
|
8
|
+
* secret-value registry count. A line that could be green while the runtime
|
|
9
|
+
* did something else would be worse than no line.
|
|
10
|
+
*
|
|
11
|
+
* Output names no recipe and prints no value — counts and verdicts only —
|
|
12
|
+
* so it is safe to paste.
|
|
13
|
+
*/
|
|
14
|
+
import { readdirSync } from "node:fs";
|
|
15
|
+
import { FLAG_ENFORCE_POLICY, FLAG_WORKER_AUTONOMY, isEnabled, } from "../featureFlags.js";
|
|
16
|
+
import { loadConfig } from "../patchworkConfig.js";
|
|
17
|
+
import { patchworkPath } from "../patchworkHome.js";
|
|
18
|
+
import { parseRegistry } from "../privacy/destinationRegistry.js";
|
|
19
|
+
import { readKillSwitch } from "./killSwitchPolicy.js";
|
|
20
|
+
import { policyInputFromConfig, scanInstalledRecipePlugins, } from "./pluginPolicy.js";
|
|
21
|
+
import { resolveProfile } from "./profile.js";
|
|
22
|
+
import { secretValueCount } from "./secretValues.js";
|
|
23
|
+
export function governanceReport(opts = {}) {
|
|
24
|
+
let cfg = opts.config;
|
|
25
|
+
let configError;
|
|
26
|
+
if (!cfg) {
|
|
27
|
+
try {
|
|
28
|
+
cfg = loadConfig();
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
configError = err instanceof Error ? err.message : String(err);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const profile = resolveProfile(cfg ? { profile: cfg.profile, approvalGate: cfg.approvalGate } : undefined);
|
|
35
|
+
const lines = [];
|
|
36
|
+
const reasons = [];
|
|
37
|
+
const push = (l) => {
|
|
38
|
+
lines.push(l);
|
|
39
|
+
if (l.status === "fail" && l.reason)
|
|
40
|
+
reasons.push(l.reason);
|
|
41
|
+
};
|
|
42
|
+
// 1. Profile.
|
|
43
|
+
if (configError) {
|
|
44
|
+
push({
|
|
45
|
+
key: "profile",
|
|
46
|
+
label: "Governed profile",
|
|
47
|
+
value: "UNKNOWN",
|
|
48
|
+
status: "fail",
|
|
49
|
+
reason: `config.json unreadable (${configError}); runtime resolves to compat`,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
push({
|
|
54
|
+
key: "profile",
|
|
55
|
+
label: "Governed profile",
|
|
56
|
+
value: profile.mode === "governed"
|
|
57
|
+
? "ON"
|
|
58
|
+
: profile.declared
|
|
59
|
+
? "OFF (compat)"
|
|
60
|
+
: "OFF (no profile: key — compat)",
|
|
61
|
+
status: profile.mode === "governed" ? "ok" : "fail",
|
|
62
|
+
reason: profile.mode === "governed"
|
|
63
|
+
? undefined
|
|
64
|
+
: "profile is compat: approval, automated-run gating, containment, plugin allowlist and fail-closed kill switch are all off by default (`patchwork profile governed` to opt in)",
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
// 2. Approval gate.
|
|
68
|
+
push({
|
|
69
|
+
key: "approvalGate",
|
|
70
|
+
label: "Approval gate",
|
|
71
|
+
value: profile.approvalGate === "off" ? "OFF" : `ON (${profile.approvalGate})`,
|
|
72
|
+
status: profile.approvalGate === "off" ? "fail" : "ok",
|
|
73
|
+
reason: profile.approvalGate === "off"
|
|
74
|
+
? "approval gate is off: no tool call is ever queued for a human"
|
|
75
|
+
: undefined,
|
|
76
|
+
});
|
|
77
|
+
// 3. Automated runs.
|
|
78
|
+
push({
|
|
79
|
+
key: "automatedRuns",
|
|
80
|
+
label: "Automated runs",
|
|
81
|
+
value: profile.gateAutomatedRuns ? "GATED" : "NOT GATED (manual runs only)",
|
|
82
|
+
status: profile.gateAutomatedRuns ? "ok" : "fail",
|
|
83
|
+
reason: profile.gateAutomatedRuns
|
|
84
|
+
? undefined
|
|
85
|
+
: "cron / webhook / file-watch / git-hook recipes bypass approval",
|
|
86
|
+
});
|
|
87
|
+
// 4. Worker authority — live flag if we are the bridge, else profile-derived.
|
|
88
|
+
const flagOn = opts.isFlagOn ?? isEnabled;
|
|
89
|
+
const workerOn = opts.live
|
|
90
|
+
? flagOn(FLAG_WORKER_AUTONOMY)
|
|
91
|
+
: profile.workerAuthority || flagOn(FLAG_WORKER_AUTONOMY);
|
|
92
|
+
const policyOn = opts.live
|
|
93
|
+
? flagOn(FLAG_ENFORCE_POLICY)
|
|
94
|
+
: profile.policyEnforce || flagOn(FLAG_ENFORCE_POLICY);
|
|
95
|
+
push({
|
|
96
|
+
key: "workerAuthority",
|
|
97
|
+
label: "Worker authority",
|
|
98
|
+
value: workerOn ? "ENFORCED" : "INERT (manifests are reporting-only)",
|
|
99
|
+
status: workerOn ? "ok" : "fail",
|
|
100
|
+
reason: workerOn
|
|
101
|
+
? undefined
|
|
102
|
+
: "worker manifests (owns / forbids / ceiling) govern nothing",
|
|
103
|
+
});
|
|
104
|
+
push({
|
|
105
|
+
key: "policyMatrix",
|
|
106
|
+
label: "Policy matrix",
|
|
107
|
+
value: policyOn ? "ENFORCED (patchwork.policy.yml)" : "OFF",
|
|
108
|
+
status: policyOn ? "ok" : "warn",
|
|
109
|
+
});
|
|
110
|
+
// 5. Privacy destinations — parsed registry, not the raw block.
|
|
111
|
+
let destCount = 0;
|
|
112
|
+
let remoteCount = 0;
|
|
113
|
+
let registryError;
|
|
114
|
+
try {
|
|
115
|
+
const reg = parseRegistry(cfg?.privacy);
|
|
116
|
+
destCount = reg.destinations.length;
|
|
117
|
+
remoteCount = reg.destinations.filter((d) => d.type === "remote").length;
|
|
118
|
+
if (reg.invalid.length > 0) {
|
|
119
|
+
registryError = `${reg.invalid.length} destination(s) failed to parse`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
registryError = err instanceof Error ? err.message : String(err);
|
|
124
|
+
}
|
|
125
|
+
push({
|
|
126
|
+
key: "privacyDestinations",
|
|
127
|
+
label: "Privacy destinations",
|
|
128
|
+
value: registryError
|
|
129
|
+
? `ERROR (${registryError})`
|
|
130
|
+
: destCount === 0
|
|
131
|
+
? "NONE REGISTERED (boundary inert)"
|
|
132
|
+
: `${destCount} REGISTERED (${remoteCount} remote)`,
|
|
133
|
+
status: registryError ? "fail" : destCount === 0 ? "fail" : "ok",
|
|
134
|
+
reason: registryError
|
|
135
|
+
? `privacy destinations: ${registryError}`
|
|
136
|
+
: destCount === 0
|
|
137
|
+
? "no model destination registered: agent steps dispatch anywhere with no data-boundary decision"
|
|
138
|
+
: undefined,
|
|
139
|
+
});
|
|
140
|
+
// 6. Agent containment.
|
|
141
|
+
push({
|
|
142
|
+
key: "agentContainment",
|
|
143
|
+
label: "Agent sandbox",
|
|
144
|
+
value: profile.agentContainment === "enforced"
|
|
145
|
+
? "ENFORCED (read-only tools, no network/shell, env allowlist)"
|
|
146
|
+
: "OPT-IN per step",
|
|
147
|
+
status: profile.agentContainment === "enforced" ? "ok" : "fail",
|
|
148
|
+
reason: profile.agentContainment === "enforced"
|
|
149
|
+
? undefined
|
|
150
|
+
: "subprocess agents run with --dangerously-skip-permissions, WebFetch and the full environment unless a step sets sandbox: true",
|
|
151
|
+
});
|
|
152
|
+
// 7. Plugin policy + scan.
|
|
153
|
+
const recipesDir = opts.recipesDir ?? patchworkPath("recipes");
|
|
154
|
+
let scanText = "";
|
|
155
|
+
let refused = 0;
|
|
156
|
+
let scanned = 0;
|
|
157
|
+
try {
|
|
158
|
+
const scan = scanInstalledRecipePlugins(recipesDir, policyInputFromConfig(profile, cfg));
|
|
159
|
+
scanned = scan.recipesScanned;
|
|
160
|
+
refused = scan.refusedSpecs;
|
|
161
|
+
scanText = ` — ${scanned} recipe(s) scanned, ${refused} plugin spec(s) refused`;
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
scanText = " — recipes dir not scanned";
|
|
165
|
+
}
|
|
166
|
+
push({
|
|
167
|
+
key: "pluginPolicy",
|
|
168
|
+
label: "Plugin policy",
|
|
169
|
+
value: (profile.pluginPolicy === "allowlist"
|
|
170
|
+
? "ALLOWLIST"
|
|
171
|
+
: "OPEN (any servers: entry loads in-process)") + scanText,
|
|
172
|
+
status: profile.pluginPolicy !== "allowlist"
|
|
173
|
+
? "fail"
|
|
174
|
+
: refused > 0
|
|
175
|
+
? "fail"
|
|
176
|
+
: "ok",
|
|
177
|
+
reason: profile.pluginPolicy !== "allowlist"
|
|
178
|
+
? "recipe servers: entries load arbitrary in-process code"
|
|
179
|
+
: refused > 0
|
|
180
|
+
? `${refused} installed recipe plugin spec(s) are not allowlisted and will be refused at run time (run \`recipe doctor\` for names)`
|
|
181
|
+
: undefined,
|
|
182
|
+
});
|
|
183
|
+
// 8. Kill switch.
|
|
184
|
+
const ks = readKillSwitch(profile);
|
|
185
|
+
push({
|
|
186
|
+
key: "killSwitch",
|
|
187
|
+
label: "Kill switch",
|
|
188
|
+
value: ks.engaged
|
|
189
|
+
? `ENGAGED (${ks.reason})`
|
|
190
|
+
: profile.killSwitchFailClosed
|
|
191
|
+
? "READY (fails closed)"
|
|
192
|
+
: "READY (fails OPEN if unreadable)",
|
|
193
|
+
status: ks.reason === "unreadable_fail_open"
|
|
194
|
+
? "fail"
|
|
195
|
+
: profile.killSwitchFailClosed
|
|
196
|
+
? "ok"
|
|
197
|
+
: "warn",
|
|
198
|
+
reason: ks.reason === "unreadable_fail_open"
|
|
199
|
+
? "kill-switch state unreadable and the compat profile treats that as released"
|
|
200
|
+
: undefined,
|
|
201
|
+
});
|
|
202
|
+
// 9. Secret redaction.
|
|
203
|
+
const n = secretValueCount();
|
|
204
|
+
push({
|
|
205
|
+
key: "secretRedaction",
|
|
206
|
+
label: "Secret redaction",
|
|
207
|
+
value: `ACTIVE (key-based + ${n} value(s) registered${opts.live ? "" : " in this process"})`,
|
|
208
|
+
status: "ok",
|
|
209
|
+
});
|
|
210
|
+
// 10. Untrusted envelope.
|
|
211
|
+
push({
|
|
212
|
+
key: "untrustedEnvelope",
|
|
213
|
+
label: "Untrusted content",
|
|
214
|
+
value: profile.untrustedEnvelope
|
|
215
|
+
? "ENVELOPED in agent prompts"
|
|
216
|
+
: "RAW (connector output rendered as-is)",
|
|
217
|
+
status: profile.untrustedEnvelope ? "ok" : "warn",
|
|
218
|
+
});
|
|
219
|
+
// 11. Worker manifests present (informational).
|
|
220
|
+
let workerCount = 0;
|
|
221
|
+
try {
|
|
222
|
+
workerCount = readdirSync(opts.workersDir ?? patchworkPath("workers")).filter((f) => /\.worker\.ya?ml$/.test(f)).length;
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
workerCount = 0;
|
|
226
|
+
}
|
|
227
|
+
push({
|
|
228
|
+
key: "workers",
|
|
229
|
+
label: "Worker manifests",
|
|
230
|
+
value: String(workerCount),
|
|
231
|
+
status: "warn",
|
|
232
|
+
});
|
|
233
|
+
const governed = lines.every((l) => l.status !== "fail");
|
|
234
|
+
return { profile, governed, lines, reasons };
|
|
235
|
+
}
|
|
236
|
+
export function formatGovernanceReport(r) {
|
|
237
|
+
const out = ["PATCHWORK GOVERNANCE", ""];
|
|
238
|
+
for (const l of r.lines) {
|
|
239
|
+
out.push(`${l.label.padEnd(24)}${l.value}`);
|
|
240
|
+
}
|
|
241
|
+
out.push("");
|
|
242
|
+
out.push(`STATUS: ${r.governed ? "GOVERNED" : "NOT GOVERNED"}`);
|
|
243
|
+
if (!r.governed) {
|
|
244
|
+
out.push("");
|
|
245
|
+
out.push("Reasons:");
|
|
246
|
+
for (const reason of r.reasons)
|
|
247
|
+
out.push(` * ${reason}`);
|
|
248
|
+
}
|
|
249
|
+
return out.join("\n");
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=doctorReport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctorReport.js","sourceRoot":"","sources":["../../src/governance/doctorReport.ts"],"names":[],"mappings":"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"}
|