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.
Files changed (135) hide show
  1. package/dist/activityLog.js +6 -1
  2. package/dist/activityLog.js.map +1 -1
  3. package/dist/approvalQueue.js +15 -0
  4. package/dist/approvalQueue.js.map +1 -1
  5. package/dist/bridge.js +32 -1
  6. package/dist/bridge.js.map +1 -1
  7. package/dist/claudeDriver.d.ts +10 -0
  8. package/dist/claudeDriver.js +27 -4
  9. package/dist/claudeDriver.js.map +1 -1
  10. package/dist/claudeOrchestrator.d.ts +5 -0
  11. package/dist/claudeOrchestrator.js +94 -6
  12. package/dist/claudeOrchestrator.js.map +1 -1
  13. package/dist/commands/patchworkInit.js +10 -0
  14. package/dist/commands/patchworkInit.js.map +1 -1
  15. package/dist/commands/policyExplain.d.ts +50 -0
  16. package/dist/commands/policyExplain.js +221 -0
  17. package/dist/commands/policyExplain.js.map +1 -0
  18. package/dist/commands/profile.d.ts +17 -0
  19. package/dist/commands/profile.js +85 -0
  20. package/dist/commands/profile.js.map +1 -0
  21. package/dist/commands/recipe.d.ts +8 -0
  22. package/dist/commands/recipe.js +64 -0
  23. package/dist/commands/recipe.js.map +1 -1
  24. package/dist/commands/recipeInstall.js +19 -0
  25. package/dist/commands/recipeInstall.js.map +1 -1
  26. package/dist/connectors/baseConnector.js +5 -0
  27. package/dist/connectors/baseConnector.js.map +1 -1
  28. package/dist/connectors/secrets.js +10 -2
  29. package/dist/connectors/secrets.js.map +1 -1
  30. package/dist/connectors/tokenStorage.d.ts +9 -0
  31. package/dist/connectors/tokenStorage.js +27 -0
  32. package/dist/connectors/tokenStorage.js.map +1 -1
  33. package/dist/decisionTraceLog.js +4 -3
  34. package/dist/decisionTraceLog.js.map +1 -1
  35. package/dist/drivers/claude/envSanitizer.d.ts +39 -0
  36. package/dist/drivers/claude/envSanitizer.js +114 -0
  37. package/dist/drivers/claude/envSanitizer.js.map +1 -1
  38. package/dist/drivers/claude/subprocess.d.ts +12 -0
  39. package/dist/drivers/claude/subprocess.js +114 -25
  40. package/dist/drivers/claude/subprocess.js.map +1 -1
  41. package/dist/drivers/claude/subprocessSettings.d.ts +4 -1
  42. package/dist/drivers/claude/subprocessSettings.js +24 -7
  43. package/dist/drivers/claude/subprocessSettings.js.map +1 -1
  44. package/dist/drivers/codex/subprocess.d.ts +19 -0
  45. package/dist/drivers/codex/subprocess.js +40 -8
  46. package/dist/drivers/codex/subprocess.js.map +1 -1
  47. package/dist/drivers/gemini/index.d.ts +24 -0
  48. package/dist/drivers/gemini/index.js +76 -13
  49. package/dist/drivers/gemini/index.js.map +1 -1
  50. package/dist/drivers/types.d.ts +14 -0
  51. package/dist/drivers/types.js.map +1 -1
  52. package/dist/errors.d.ts +1 -0
  53. package/dist/errors.js +1 -0
  54. package/dist/errors.js.map +1 -1
  55. package/dist/governance/doctorReport.d.ts +45 -0
  56. package/dist/governance/doctorReport.js +251 -0
  57. package/dist/governance/doctorReport.js.map +1 -0
  58. package/dist/governance/effectivePolicy.d.ts +134 -0
  59. package/dist/governance/effectivePolicy.js +322 -0
  60. package/dist/governance/effectivePolicy.js.map +1 -0
  61. package/dist/governance/killSwitchPolicy.d.ts +30 -0
  62. package/dist/governance/killSwitchPolicy.js +52 -0
  63. package/dist/governance/killSwitchPolicy.js.map +1 -0
  64. package/dist/governance/pluginPolicy.d.ts +111 -0
  65. package/dist/governance/pluginPolicy.js +247 -0
  66. package/dist/governance/pluginPolicy.js.map +1 -0
  67. package/dist/governance/profile.d.ts +153 -0
  68. package/dist/governance/profile.js +181 -0
  69. package/dist/governance/profile.js.map +1 -0
  70. package/dist/governance/secretValues.d.ts +89 -0
  71. package/dist/governance/secretValues.js +286 -0
  72. package/dist/governance/secretValues.js.map +1 -0
  73. package/dist/governance/toolFacts.d.ts +11 -0
  74. package/dist/governance/toolFacts.js +46 -0
  75. package/dist/governance/toolFacts.js.map +1 -0
  76. package/dist/governance/untrustedContent.d.ts +43 -0
  77. package/dist/governance/untrustedContent.js +81 -0
  78. package/dist/governance/untrustedContent.js.map +1 -0
  79. package/dist/index.js +73 -5
  80. package/dist/index.js.map +1 -1
  81. package/dist/logger.js +7 -6
  82. package/dist/logger.js.map +1 -1
  83. package/dist/patchworkConfig.d.ts +22 -0
  84. package/dist/patchworkConfig.js.map +1 -1
  85. package/dist/pluginLoader.d.ts +10 -2
  86. package/dist/pluginLoader.js +12 -8
  87. package/dist/pluginLoader.js.map +1 -1
  88. package/dist/recipeOrchestration.d.ts +0 -6
  89. package/dist/recipeOrchestration.js +80 -23
  90. package/dist/recipeOrchestration.js.map +1 -1
  91. package/dist/recipeRoutes.js +52 -0
  92. package/dist/recipeRoutes.js.map +1 -1
  93. package/dist/recipes/agentExecutor.d.ts +43 -3
  94. package/dist/recipes/agentExecutor.js +55 -7
  95. package/dist/recipes/agentExecutor.js.map +1 -1
  96. package/dist/recipes/approvalRequest.d.ts +8 -0
  97. package/dist/recipes/approvalRequest.js.map +1 -1
  98. package/dist/recipes/chainedRunner.d.ts +18 -5
  99. package/dist/recipes/chainedRunner.js +107 -12
  100. package/dist/recipes/chainedRunner.js.map +1 -1
  101. package/dist/recipes/haltCategory.d.ts +4 -0
  102. package/dist/recipes/haltCategory.js +4 -0
  103. package/dist/recipes/haltCategory.js.map +1 -1
  104. package/dist/recipes/schema.d.ts +5 -1
  105. package/dist/recipes/schemaGenerator.js +12 -1
  106. package/dist/recipes/schemaGenerator.js.map +1 -1
  107. package/dist/recipes/stepObservation.d.ts +15 -0
  108. package/dist/recipes/stepObservation.js +27 -22
  109. package/dist/recipes/stepObservation.js.map +1 -1
  110. package/dist/recipes/templateEngine.d.ts +11 -1
  111. package/dist/recipes/templateEngine.js +12 -2
  112. package/dist/recipes/templateEngine.js.map +1 -1
  113. package/dist/recipes/toolRegistry.d.ts +3 -1
  114. package/dist/recipes/toolRegistry.js +9 -3
  115. package/dist/recipes/toolRegistry.js.map +1 -1
  116. package/dist/recipes/tools/http.d.ts +5 -2
  117. package/dist/recipes/tools/http.js +29 -10
  118. package/dist/recipes/tools/http.js.map +1 -1
  119. package/dist/recipes/validation.d.ts +10 -1
  120. package/dist/recipes/validation.js +51 -1
  121. package/dist/recipes/validation.js.map +1 -1
  122. package/dist/recipes/yamlRunner.d.ts +46 -5
  123. package/dist/recipes/yamlRunner.js +173 -21
  124. package/dist/recipes/yamlRunner.js.map +1 -1
  125. package/dist/schemas/recipe.v1.json +60 -3
  126. package/dist/server.js +15 -0
  127. package/dist/server.js.map +1 -1
  128. package/dist/ssrfGuard.d.ts +89 -5
  129. package/dist/ssrfGuard.js +250 -5
  130. package/dist/ssrfGuard.js.map +1 -1
  131. package/dist/tools/httpClient.js +23 -165
  132. package/dist/tools/httpClient.js.map +1 -1
  133. package/dist/transport.js +41 -0
  134. package/dist/transport.js.map +1 -1
  135. 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
- const mcp = this.bridgeMcp?.();
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 approvalMode = typeof opts.approvalMode === "string" ? opts.approvalMode : "yolo";
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([...existingToolsExclude, ...GEMINI_SHELL_DENY_PATTERNS])),
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([...existingExcludeTools, ...GEMINI_SHELL_DENY_PATTERNS]));
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 = sanitizeEnv(process.env, {
268
- preserve: [
269
- "GEMINI_API_KEY",
270
- "GOOGLE_API_KEY",
271
- "GOOGLE_GENAI_API_KEY",
272
- "GOOGLE_APPLICATION_CREDENTIALS",
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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"}
@@ -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;AAoEH,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"}
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
@@ -30,5 +30,6 @@ export const ToolErrorCodes = {
30
30
  AMBIGUOUS_TASK_ID: "ambiguous_task_id",
31
31
  DRIVER_NOT_CONFIGURED: "driver_not_configured",
32
32
  COOLDOWN_ACTIVE: "cooldown_active",
33
+ KILL_SWITCH_BLOCKED: "kill_switch_blocked",
33
34
  };
34
35
  //# sourceMappingURL=errors.js.map
@@ -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;CAC1B,CAAC"}
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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"}