patchwork-os 0.2.0-alpha.35 → 0.2.0-alpha.37

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 (207) hide show
  1. package/README.md +70 -15
  2. package/dist/activityLog.d.ts +49 -0
  3. package/dist/activityLog.js +78 -0
  4. package/dist/activityLog.js.map +1 -1
  5. package/dist/approvalHttp.d.ts +25 -0
  6. package/dist/approvalHttp.js +74 -18
  7. package/dist/approvalHttp.js.map +1 -1
  8. package/dist/approvalInsights.d.ts +49 -0
  9. package/dist/approvalInsights.js +97 -0
  10. package/dist/approvalInsights.js.map +1 -0
  11. package/dist/approvalQueue.d.ts +11 -0
  12. package/dist/approvalQueue.js +80 -1
  13. package/dist/approvalQueue.js.map +1 -1
  14. package/dist/approvalSignals.d.ts +124 -0
  15. package/dist/approvalSignals.js +512 -0
  16. package/dist/approvalSignals.js.map +1 -0
  17. package/dist/automation.d.ts +37 -0
  18. package/dist/automation.js +105 -61
  19. package/dist/automation.js.map +1 -1
  20. package/dist/automationSuggestions.d.ts +79 -0
  21. package/dist/automationSuggestions.js +150 -0
  22. package/dist/automationSuggestions.js.map +1 -0
  23. package/dist/bridge.js +46 -0
  24. package/dist/bridge.js.map +1 -1
  25. package/dist/ccPermissions.d.ts +15 -0
  26. package/dist/ccPermissions.js +15 -0
  27. package/dist/ccPermissions.js.map +1 -1
  28. package/dist/claudeDriver.js +74 -16
  29. package/dist/claudeDriver.js.map +1 -1
  30. package/dist/commands/patchworkInit.d.ts +8 -0
  31. package/dist/commands/patchworkInit.js +41 -5
  32. package/dist/commands/patchworkInit.js.map +1 -1
  33. package/dist/commands/recipe.d.ts +20 -0
  34. package/dist/commands/recipe.js +194 -5
  35. package/dist/commands/recipe.js.map +1 -1
  36. package/dist/commands/recipeInstall.js +93 -4
  37. package/dist/commands/recipeInstall.js.map +1 -1
  38. package/dist/commands/tracesExport.d.ts +83 -0
  39. package/dist/commands/tracesExport.js +269 -0
  40. package/dist/commands/tracesExport.js.map +1 -0
  41. package/dist/commands/tracesImport.d.ts +56 -0
  42. package/dist/commands/tracesImport.js +161 -0
  43. package/dist/commands/tracesImport.js.map +1 -0
  44. package/dist/config.d.ts +8 -0
  45. package/dist/config.js +9 -1
  46. package/dist/config.js.map +1 -1
  47. package/dist/connectorRoutes.d.ts +43 -0
  48. package/dist/connectorRoutes.js +1713 -0
  49. package/dist/connectorRoutes.js.map +1 -0
  50. package/dist/connectors/asana.js +6 -7
  51. package/dist/connectors/asana.js.map +1 -1
  52. package/dist/connectors/baseConnector.d.ts +20 -0
  53. package/dist/connectors/baseConnector.js +45 -4
  54. package/dist/connectors/baseConnector.js.map +1 -1
  55. package/dist/connectors/discord.js +6 -7
  56. package/dist/connectors/discord.js.map +1 -1
  57. package/dist/connectors/gmail.js +39 -10
  58. package/dist/connectors/gmail.js.map +1 -1
  59. package/dist/connectors/googleCalendar.js +36 -10
  60. package/dist/connectors/googleCalendar.js.map +1 -1
  61. package/dist/connectors/googleDrive.js +22 -6
  62. package/dist/connectors/googleDrive.js.map +1 -1
  63. package/dist/connectors/linear.js +2 -2
  64. package/dist/connectors/linear.js.map +1 -1
  65. package/dist/connectors/mcpOAuth.js +26 -2
  66. package/dist/connectors/mcpOAuth.js.map +1 -1
  67. package/dist/connectors/oauthStateStore.d.ts +31 -0
  68. package/dist/connectors/oauthStateStore.js +52 -0
  69. package/dist/connectors/oauthStateStore.js.map +1 -0
  70. package/dist/connectors/slack.d.ts +15 -0
  71. package/dist/connectors/slack.js +54 -4
  72. package/dist/connectors/slack.js.map +1 -1
  73. package/dist/connectors/tokenStorage.js +27 -2
  74. package/dist/connectors/tokenStorage.js.map +1 -1
  75. package/dist/connectors/zendesk.js +19 -1
  76. package/dist/connectors/zendesk.js.map +1 -1
  77. package/dist/cors.d.ts +10 -0
  78. package/dist/cors.js +29 -0
  79. package/dist/cors.js.map +1 -0
  80. package/dist/decisionReplay.d.ts +72 -0
  81. package/dist/decisionReplay.js +92 -0
  82. package/dist/decisionReplay.js.map +1 -0
  83. package/dist/decisionTraceLog.d.ts +6 -0
  84. package/dist/decisionTraceLog.js +54 -2
  85. package/dist/decisionTraceLog.js.map +1 -1
  86. package/dist/fp/automationInterpreter.js +25 -21
  87. package/dist/fp/automationInterpreter.js.map +1 -1
  88. package/dist/fp/automationState.js +4 -1
  89. package/dist/fp/automationState.js.map +1 -1
  90. package/dist/fp/policyParser.js +4 -1
  91. package/dist/fp/policyParser.js.map +1 -1
  92. package/dist/inboxRoutes.d.ts +22 -0
  93. package/dist/inboxRoutes.js +114 -0
  94. package/dist/inboxRoutes.js.map +1 -0
  95. package/dist/index.js +479 -17
  96. package/dist/index.js.map +1 -1
  97. package/dist/mcpRoutes.d.ts +37 -0
  98. package/dist/mcpRoutes.js +76 -0
  99. package/dist/mcpRoutes.js.map +1 -0
  100. package/dist/oauth.d.ts +3 -0
  101. package/dist/oauth.js +151 -26
  102. package/dist/oauth.js.map +1 -1
  103. package/dist/oauthRoutes.d.ts +32 -0
  104. package/dist/oauthRoutes.js +124 -0
  105. package/dist/oauthRoutes.js.map +1 -0
  106. package/dist/orchestrator/orchestratorBridge.js +2 -2
  107. package/dist/orchestrator/orchestratorBridge.js.map +1 -1
  108. package/dist/patchworkConfig.d.ts +7 -0
  109. package/dist/patchworkConfig.js.map +1 -1
  110. package/dist/pluginLoader.d.ts +12 -0
  111. package/dist/pluginLoader.js +43 -4
  112. package/dist/pluginLoader.js.map +1 -1
  113. package/dist/pluginWatcher.js +8 -3
  114. package/dist/pluginWatcher.js.map +1 -1
  115. package/dist/preToolUseHook.d.ts +12 -0
  116. package/dist/preToolUseHook.js +23 -0
  117. package/dist/preToolUseHook.js.map +1 -1
  118. package/dist/recipeOrchestration.d.ts +1 -0
  119. package/dist/recipeOrchestration.js +173 -13
  120. package/dist/recipeOrchestration.js.map +1 -1
  121. package/dist/recipeRoutes.d.ts +154 -0
  122. package/dist/recipeRoutes.js +1107 -0
  123. package/dist/recipeRoutes.js.map +1 -0
  124. package/dist/recipes/chainedRunner.d.ts +15 -0
  125. package/dist/recipes/chainedRunner.js +73 -8
  126. package/dist/recipes/chainedRunner.js.map +1 -1
  127. package/dist/recipes/compiler.js +3 -3
  128. package/dist/recipes/compiler.js.map +1 -1
  129. package/dist/recipes/installer.js +3 -3
  130. package/dist/recipes/installer.js.map +1 -1
  131. package/dist/recipes/migrationWarnings.d.ts +12 -0
  132. package/dist/recipes/migrationWarnings.js +44 -0
  133. package/dist/recipes/migrationWarnings.js.map +1 -0
  134. package/dist/recipes/resolveRecipePath.d.ts +69 -0
  135. package/dist/recipes/resolveRecipePath.js +202 -0
  136. package/dist/recipes/resolveRecipePath.js.map +1 -0
  137. package/dist/recipes/tools/file.d.ts +6 -0
  138. package/dist/recipes/tools/file.js +12 -8
  139. package/dist/recipes/tools/file.js.map +1 -1
  140. package/dist/recipes/tools/index.d.ts +2 -0
  141. package/dist/recipes/tools/index.js +2 -0
  142. package/dist/recipes/tools/index.js.map +1 -1
  143. package/dist/recipes/tools/jira.d.ts +14 -0
  144. package/dist/recipes/tools/jira.js +369 -0
  145. package/dist/recipes/tools/jira.js.map +1 -0
  146. package/dist/recipes/tools/linear.js +6 -3
  147. package/dist/recipes/tools/linear.js.map +1 -1
  148. package/dist/recipes/tools/sentry.d.ts +12 -0
  149. package/dist/recipes/tools/sentry.js +73 -0
  150. package/dist/recipes/tools/sentry.js.map +1 -0
  151. package/dist/recipes/tools/slack.js +7 -3
  152. package/dist/recipes/tools/slack.js.map +1 -1
  153. package/dist/recipes/validation.js +83 -14
  154. package/dist/recipes/validation.js.map +1 -1
  155. package/dist/recipes/yamlRunner.d.ts +7 -0
  156. package/dist/recipes/yamlRunner.js +107 -13
  157. package/dist/recipes/yamlRunner.js.map +1 -1
  158. package/dist/recipesHttp.d.ts +44 -1
  159. package/dist/recipesHttp.js +168 -15
  160. package/dist/recipesHttp.js.map +1 -1
  161. package/dist/runLog.d.ts +14 -0
  162. package/dist/runLog.js +88 -4
  163. package/dist/runLog.js.map +1 -1
  164. package/dist/schemas/dry-run-plan.v1.json +139 -0
  165. package/dist/schemas/recipe.v1.json +684 -0
  166. package/dist/server.d.ts +71 -10
  167. package/dist/server.js +363 -1703
  168. package/dist/server.js.map +1 -1
  169. package/dist/ssrfGuard.d.ts +54 -0
  170. package/dist/ssrfGuard.js +122 -0
  171. package/dist/ssrfGuard.js.map +1 -0
  172. package/dist/streamableHttp.d.ts +8 -0
  173. package/dist/streamableHttp.js +112 -21
  174. package/dist/streamableHttp.js.map +1 -1
  175. package/dist/tools/getDocumentSymbols.d.ts +24 -0
  176. package/dist/tools/getDocumentSymbols.js +74 -8
  177. package/dist/tools/getDocumentSymbols.js.map +1 -1
  178. package/dist/tools/getSecurityAdvisories.js +10 -1
  179. package/dist/tools/getSecurityAdvisories.js.map +1 -1
  180. package/dist/tools/getSessionUsage.d.ts +3 -0
  181. package/dist/tools/getSessionUsage.js +3 -0
  182. package/dist/tools/getSessionUsage.js.map +1 -1
  183. package/dist/tools/index.d.ts +8 -0
  184. package/dist/tools/index.js +32 -2
  185. package/dist/tools/index.js.map +1 -1
  186. package/dist/tools/transaction.d.ts +19 -0
  187. package/dist/tools/transaction.js +29 -0
  188. package/dist/tools/transaction.js.map +1 -1
  189. package/dist/traceEncryption.d.ts +46 -0
  190. package/dist/traceEncryption.js +124 -0
  191. package/dist/traceEncryption.js.map +1 -0
  192. package/dist/transport.d.ts +39 -0
  193. package/dist/transport.js +88 -8
  194. package/dist/transport.js.map +1 -1
  195. package/package.json +4 -2
  196. package/templates/policies/README.md +72 -0
  197. package/templates/policies/conservative.json +14 -0
  198. package/templates/policies/developer.json +14 -0
  199. package/templates/policies/headless-ci.json +24 -0
  200. package/templates/policies/personal-assistant.json +15 -0
  201. package/templates/policies/regulated-industry.json +18 -0
  202. package/templates/recipes/webhook/README.md +70 -0
  203. package/templates/recipes/webhook/capture-thought.yaml +26 -0
  204. package/templates/recipes/webhook/customer-escalation.yaml +49 -0
  205. package/templates/recipes/webhook/incident-intake.yaml +46 -0
  206. package/templates/recipes/webhook/meeting-prep.yaml +48 -0
  207. package/templates/recipes/webhook/morning-brief.yaml +57 -0
package/dist/runLog.d.ts CHANGED
@@ -57,6 +57,8 @@ export interface RecipeRun {
57
57
  durationMs: number;
58
58
  /** Per-step execution results — present when run via yamlRunner or chainedRunner. */
59
59
  stepResults?: RunStepResult[];
60
+ /** seq of the parent run that triggered this one, if trigger === "recipe". */
61
+ parentSeq?: number;
60
62
  /** Assertion failures from the recipe's expect block — present when assertions fail. */
61
63
  assertionFailures?: Array<{
62
64
  assertion: string;
@@ -98,6 +100,7 @@ export declare class RecipeRunLog {
98
100
  static parseTrigger(triggerSource: string | undefined): {
99
101
  trigger: RunTrigger;
100
102
  recipeName: string;
103
+ parentSeq?: number;
101
104
  } | null;
102
105
  record(task: {
103
106
  id: string;
@@ -126,6 +129,8 @@ export declare class RecipeRunLog {
126
129
  * `loadExisting` / `syncFromDisk` behaviour.
127
130
  */
128
131
  getBySeq(seq: number): RecipeRun | null;
132
+ /** Return seqs of all in-memory runs whose parentSeq matches this seq. */
133
+ getChildSeqs(parentSeq: number): number[];
129
134
  private readFromDiskBySeq;
130
135
  /** Test/inspection helper — current in-memory size. */
131
136
  size(): number;
@@ -146,6 +151,7 @@ export declare class RecipeRunLog {
146
151
  createdAt: number;
147
152
  startedAt?: number;
148
153
  model?: string;
154
+ parentSeq?: number;
149
155
  }): number;
150
156
  /**
151
157
  * Replace the in-memory step list for a running entry. Called as steps
@@ -169,6 +175,14 @@ export declare class RecipeRunLog {
169
175
  assertionFailures?: RecipeRun["assertionFailures"];
170
176
  }): void;
171
177
  private append;
178
+ /**
179
+ * Trim runs.jsonl to the most recent MAX_PERSIST_LINES (or whatever
180
+ * fits under MAX_PERSIST_BYTES). Lines beyond the cap are dropped from
181
+ * disk; in-memory `runs[]` is unaffected (separately bounded by
182
+ * memoryCap). Best-effort — failure is logged and the next append
183
+ * proceeds against the un-rotated file.
184
+ */
185
+ private rotateDisk;
172
186
  /** Incrementally read any new lines appended to the file since last load. */
173
187
  private syncFromDisk;
174
188
  private loadExisting;
package/dist/runLog.js CHANGED
@@ -1,7 +1,16 @@
1
- import { appendFileSync, mkdirSync, readFileSync, statSync } from "node:fs";
1
+ import { appendFileSync, mkdirSync, readFileSync, statSync, writeFileSync, } from "node:fs";
2
2
  import path from "node:path";
3
3
  const MAX_OUTPUT_TAIL = 2_000;
4
4
  const DEFAULT_MEMORY_CAP = 500;
5
+ /**
6
+ * Disk rotation thresholds. The file grows append-only via `appendFileSync`
7
+ * on every recipe run; without rotation a busy automation policy will fill
8
+ * `~/.claude/ide/` over time and OOM the bridge at next boot via
9
+ * `loadExisting`'s full `readFileSync`. We rotate at either limit, keeping
10
+ * the most recent N lines.
11
+ */
12
+ const MAX_PERSIST_BYTES = 1024 * 1024; // 1 MB
13
+ const MAX_PERSIST_LINES = 10_000;
5
14
  export class RecipeRunLog {
6
15
  opts;
7
16
  runs = [];
@@ -16,7 +25,11 @@ export class RecipeRunLog {
16
25
  this.memoryCap = opts.memoryCap ?? DEFAULT_MEMORY_CAP;
17
26
  this.now = opts.now ?? Date.now;
18
27
  try {
19
- mkdirSync(opts.dir, { recursive: true });
28
+ // 0o700 restrict directory listing to the bridge's user. Without
29
+ // an explicit mode here we fall through to the umask, which is
30
+ // typically 0o022 → world-traversable dir. File entries are 0o600
31
+ // so contents are safe; only listing leaks.
32
+ mkdirSync(opts.dir, { recursive: true, mode: 0o700 });
20
33
  }
21
34
  catch (err) {
22
35
  opts.logger?.warn?.(`[runlog] could not create ${opts.dir}: ${err instanceof Error ? err.message : String(err)}`);
@@ -36,10 +49,16 @@ export class RecipeRunLog {
36
49
  static parseTrigger(triggerSource) {
37
50
  if (!triggerSource)
38
51
  return null;
39
- const m = /^(cron|webhook|recipe):(.+)$/.exec(triggerSource);
52
+ // Format: "<kind>:<name>" or "<kind>:<name>:p<parentSeq>"
53
+ // parentSeq suffix ":p<N>" is always at the end and uses a numeric-only value.
54
+ const m = /^(cron|webhook|recipe):(.+?)(?::p(\d+))?$/.exec(triggerSource);
40
55
  if (!m?.[1] || !m[2])
41
56
  return null;
42
- return { trigger: m[1], recipeName: m[2] };
57
+ return {
58
+ trigger: m[1],
59
+ recipeName: m[2],
60
+ ...(m[3] !== undefined && { parentSeq: parseInt(m[3], 10) }),
61
+ };
43
62
  }
44
63
  record(task) {
45
64
  const parsed = RecipeRunLog.parseTrigger(task.triggerSource);
@@ -73,6 +92,7 @@ export class RecipeRunLog {
73
92
  errorMessage: task.errorMessage,
74
93
  }),
75
94
  durationMs,
95
+ ...(parsed.parentSeq !== undefined && { parentSeq: parsed.parentSeq }),
76
96
  };
77
97
  this.runs.push(run);
78
98
  if (this.runs.length > this.memoryCap) {
@@ -120,6 +140,11 @@ export class RecipeRunLog {
120
140
  return inMem;
121
141
  return this.readFromDiskBySeq(seq);
122
142
  }
143
+ /** Return seqs of all in-memory runs whose parentSeq matches this seq. */
144
+ getChildSeqs(parentSeq) {
145
+ this.syncFromDisk();
146
+ return this.runs.filter((r) => r.parentSeq === parentSeq).map((r) => r.seq);
147
+ }
123
148
  readFromDiskBySeq(seq) {
124
149
  let raw;
125
150
  try {
@@ -181,6 +206,7 @@ export class RecipeRunLog {
181
206
  doneAt: opts.createdAt,
182
207
  durationMs: 0,
183
208
  stepResults: [],
209
+ ...(opts.parentSeq !== undefined && { parentSeq: opts.parentSeq }),
184
210
  };
185
211
  this.runs.push(run);
186
212
  if (this.runs.length > this.memoryCap)
@@ -234,12 +260,70 @@ export class RecipeRunLog {
234
260
  }
235
261
  append(run) {
236
262
  try {
263
+ // Rotate first if the file is over the limit. Cheap stat call; only
264
+ // rewrites when needed. Without this, runs.jsonl grows unbounded.
265
+ try {
266
+ const st = statSync(this.file);
267
+ if (st.size > MAX_PERSIST_BYTES)
268
+ this.rotateDisk();
269
+ }
270
+ catch (err) {
271
+ const code = err.code;
272
+ if (code !== "ENOENT")
273
+ throw err;
274
+ }
237
275
  appendFileSync(this.file, `${JSON.stringify(run)}\n`, { mode: 0o600 });
238
276
  }
239
277
  catch (err) {
240
278
  this.opts.logger?.warn?.(`[runlog] append failed: ${err instanceof Error ? err.message : String(err)}`);
241
279
  }
242
280
  }
281
+ /**
282
+ * Trim runs.jsonl to the most recent MAX_PERSIST_LINES (or whatever
283
+ * fits under MAX_PERSIST_BYTES). Lines beyond the cap are dropped from
284
+ * disk; in-memory `runs[]` is unaffected (separately bounded by
285
+ * memoryCap). Best-effort — failure is logged and the next append
286
+ * proceeds against the un-rotated file.
287
+ */
288
+ rotateDisk() {
289
+ try {
290
+ const raw = readFileSync(this.file, "utf8");
291
+ let lines = raw.split("\n").filter((l) => l.trim());
292
+ if (lines.length > MAX_PERSIST_LINES) {
293
+ lines = lines.slice(-MAX_PERSIST_LINES);
294
+ }
295
+ let joined = lines.join("\n");
296
+ while (joined.length + 1 > MAX_PERSIST_BYTES && lines.length > 1) {
297
+ lines = lines.slice(-Math.max(1, Math.floor(lines.length / 2)));
298
+ joined = lines.join("\n");
299
+ }
300
+ // If we're down to a single line that still exceeds the cap, drop it
301
+ // entirely. Without this guard the while-loop exits at length===1 and
302
+ // we'd write an oversized row back, defeating rotation. A realistic
303
+ // offender is `RunStepResult.registrySnapshot` which is unbounded
304
+ // user JSON.
305
+ if (lines.length === 1 && joined.length + 1 > MAX_PERSIST_BYTES) {
306
+ this.opts.logger?.warn?.(`[runlog] rotate dropped 1 oversized row (${joined.length} bytes > ${MAX_PERSIST_BYTES} cap)`);
307
+ lines = [];
308
+ joined = "";
309
+ }
310
+ writeFileSync(this.file, joined.length > 0 ? `${joined}\n` : "", {
311
+ mode: 0o600,
312
+ });
313
+ // Refresh `lastFileSize` so the next syncFromDisk() doesn't see
314
+ // `size <= lastFileSize` (stale pre-rotation value) and silently
315
+ // skip freshly-appended rows.
316
+ try {
317
+ this.lastFileSize = statSync(this.file).size;
318
+ }
319
+ catch {
320
+ this.lastFileSize = 0;
321
+ }
322
+ }
323
+ catch (err) {
324
+ this.opts.logger?.warn?.(`[runlog] rotate failed: ${err instanceof Error ? err.message : String(err)}`);
325
+ }
326
+ }
243
327
  /** Incrementally read any new lines appended to the file since last load. */
244
328
  syncFromDisk() {
245
329
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"runLog.js","sourceRoot":"","sources":["../src/runLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runLog.js","sourceRoot":"","sources":["../src/runLog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/patchworkos/recipes/main/schema/dry-run-plan.v1.json",
4
+ "title": "Patchwork Recipe Dry-Run Plan",
5
+ "description": "Stable machine-readable output of `patchwork recipe run --dry-run`. Pin consumers on schemaVersion.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "recipe",
10
+ "mode",
11
+ "triggerType",
12
+ "generatedAt",
13
+ "steps"
14
+ ],
15
+ "properties": {
16
+ "schemaVersion": {
17
+ "type": "number",
18
+ "const": 1
19
+ },
20
+ "recipe": {
21
+ "type": "string"
22
+ },
23
+ "mode": {
24
+ "type": "string",
25
+ "const": "dry-run"
26
+ },
27
+ "triggerType": {
28
+ "type": "string"
29
+ },
30
+ "generatedAt": {
31
+ "type": "string",
32
+ "description": "ISO-8601 timestamp when plan was generated"
33
+ },
34
+ "stepSelection": {
35
+ "type": "object",
36
+ "properties": {
37
+ "query": {
38
+ "type": "string"
39
+ },
40
+ "matchedBy": {
41
+ "type": "string"
42
+ },
43
+ "matchedValue": {
44
+ "type": "string"
45
+ }
46
+ }
47
+ },
48
+ "steps": {
49
+ "type": "array",
50
+ "items": {
51
+ "type": "object",
52
+ "required": [
53
+ "id",
54
+ "type"
55
+ ],
56
+ "properties": {
57
+ "id": {
58
+ "type": "string"
59
+ },
60
+ "type": {
61
+ "type": "string",
62
+ "enum": [
63
+ "tool",
64
+ "agent",
65
+ "recipe"
66
+ ]
67
+ },
68
+ "tool": {
69
+ "type": "string"
70
+ },
71
+ "namespace": {
72
+ "type": "string"
73
+ },
74
+ "into": {
75
+ "type": "string"
76
+ },
77
+ "optional": {
78
+ "type": "boolean"
79
+ },
80
+ "prompt": {
81
+ "type": "string"
82
+ },
83
+ "params": {
84
+ "type": "object",
85
+ "additionalProperties": true
86
+ },
87
+ "dependencies": {
88
+ "type": "array",
89
+ "items": {
90
+ "type": "string"
91
+ }
92
+ },
93
+ "condition": {
94
+ "type": "string"
95
+ },
96
+ "risk": {
97
+ "type": "string",
98
+ "enum": [
99
+ "low",
100
+ "medium",
101
+ "high"
102
+ ]
103
+ },
104
+ "isWrite": {
105
+ "type": "boolean"
106
+ },
107
+ "isConnector": {
108
+ "type": "boolean"
109
+ },
110
+ "resolved": {
111
+ "type": "boolean",
112
+ "description": "True if the tool id is known to the registry at plan time"
113
+ }
114
+ }
115
+ }
116
+ },
117
+ "parallelGroups": {
118
+ "type": "array",
119
+ "items": {
120
+ "type": "array",
121
+ "items": {
122
+ "type": "string"
123
+ }
124
+ }
125
+ },
126
+ "maxDepth": {
127
+ "type": "number"
128
+ },
129
+ "connectorNamespaces": {
130
+ "type": "array",
131
+ "items": {
132
+ "type": "string"
133
+ }
134
+ },
135
+ "hasWriteSteps": {
136
+ "type": "boolean"
137
+ }
138
+ }
139
+ }