patchwork-os 0.2.0-beta.1 → 0.2.0-beta.3

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 (191) hide show
  1. package/README.bridge.md +5 -5
  2. package/README.md +156 -12
  3. package/deploy/deploy-dashboard.sh +25 -1
  4. package/deploy/macos/README.md +153 -0
  5. package/deploy/macos/com.patchwork.bridge.plist.template +54 -0
  6. package/deploy/macos/com.patchwork.tunnel.plist.template +76 -0
  7. package/deploy/macos/install-mac-bridge.sh +244 -0
  8. package/deploy/macos/uninstall-mac-bridge.sh +22 -0
  9. package/dist/activityLog.d.ts +6 -0
  10. package/dist/activityLog.js +8 -0
  11. package/dist/activityLog.js.map +1 -1
  12. package/dist/analyticsPrefs.d.ts +35 -2
  13. package/dist/analyticsPrefs.js +120 -21
  14. package/dist/analyticsPrefs.js.map +1 -1
  15. package/dist/analyticsSend.js +5 -1
  16. package/dist/analyticsSend.js.map +1 -1
  17. package/dist/approvalHttp.d.ts +14 -0
  18. package/dist/approvalHttp.js +172 -1
  19. package/dist/approvalHttp.js.map +1 -1
  20. package/dist/approvalQueue.d.ts +27 -2
  21. package/dist/approvalQueue.js +44 -7
  22. package/dist/approvalQueue.js.map +1 -1
  23. package/dist/automation.d.ts +34 -3
  24. package/dist/automation.js +85 -10
  25. package/dist/automation.js.map +1 -1
  26. package/dist/bridge.d.ts +2 -0
  27. package/dist/bridge.js +114 -8
  28. package/dist/bridge.js.map +1 -1
  29. package/dist/bridgeLockDiscovery.d.ts +27 -1
  30. package/dist/bridgeLockDiscovery.js +37 -11
  31. package/dist/bridgeLockDiscovery.js.map +1 -1
  32. package/dist/claudeOrchestrator.js +5 -2
  33. package/dist/claudeOrchestrator.js.map +1 -1
  34. package/dist/commands/patchworkInit.d.ts +5 -0
  35. package/dist/commands/patchworkInit.js +86 -7
  36. package/dist/commands/patchworkInit.js.map +1 -1
  37. package/dist/commands/recipe.d.ts +51 -0
  38. package/dist/commands/recipe.js +363 -3
  39. package/dist/commands/recipe.js.map +1 -1
  40. package/dist/commands/recipeInstall.js +6 -3
  41. package/dist/commands/recipeInstall.js.map +1 -1
  42. package/dist/commands/task.js +2 -2
  43. package/dist/commands/task.js.map +1 -1
  44. package/dist/config.d.ts +17 -2
  45. package/dist/config.js +54 -17
  46. package/dist/config.js.map +1 -1
  47. package/dist/connectors/baseConnector.js +25 -3
  48. package/dist/connectors/baseConnector.js.map +1 -1
  49. package/dist/connectors/tokenStorage.js +46 -10
  50. package/dist/connectors/tokenStorage.js.map +1 -1
  51. package/dist/drivers/gemini/index.d.ts +22 -0
  52. package/dist/drivers/gemini/index.js +240 -129
  53. package/dist/drivers/gemini/index.js.map +1 -1
  54. package/dist/drivers/local/index.d.ts +17 -0
  55. package/dist/drivers/local/index.js +99 -0
  56. package/dist/drivers/local/index.js.map +1 -1
  57. package/dist/drivers/openai/index.js +30 -2
  58. package/dist/drivers/openai/index.js.map +1 -1
  59. package/dist/extensionClient.d.ts +8 -0
  60. package/dist/extensionClient.js +24 -2
  61. package/dist/extensionClient.js.map +1 -1
  62. package/dist/featureFlags.d.ts +76 -0
  63. package/dist/featureFlags.js +166 -2
  64. package/dist/featureFlags.js.map +1 -1
  65. package/dist/fp/automationInterpreter.d.ts +9 -1
  66. package/dist/fp/automationInterpreter.js +151 -34
  67. package/dist/fp/automationInterpreter.js.map +1 -1
  68. package/dist/fp/automationProgram.d.ts +30 -0
  69. package/dist/fp/automationProgram.js.map +1 -1
  70. package/dist/fp/automationState.d.ts +23 -4
  71. package/dist/fp/automationState.js +28 -4
  72. package/dist/fp/automationState.js.map +1 -1
  73. package/dist/fp/interpreterContext.d.ts +66 -1
  74. package/dist/fp/interpreterContext.js +140 -1
  75. package/dist/fp/interpreterContext.js.map +1 -1
  76. package/dist/fp/policyParser.js +29 -1
  77. package/dist/fp/policyParser.js.map +1 -1
  78. package/dist/index.js +765 -69
  79. package/dist/index.js.map +1 -1
  80. package/dist/lockfile.js +4 -1
  81. package/dist/lockfile.js.map +1 -1
  82. package/dist/oauth.d.ts +9 -0
  83. package/dist/oauth.js +33 -0
  84. package/dist/oauth.js.map +1 -1
  85. package/dist/patchworkConfig.d.ts +16 -0
  86. package/dist/patchworkConfig.js +5 -0
  87. package/dist/patchworkConfig.js.map +1 -1
  88. package/dist/recipeOrchestration.js +35 -1
  89. package/dist/recipeOrchestration.js.map +1 -1
  90. package/dist/recipeRoutes.d.ts +36 -0
  91. package/dist/recipeRoutes.js +231 -32
  92. package/dist/recipeRoutes.js.map +1 -1
  93. package/dist/recipes/agentExecutor.d.ts +25 -5
  94. package/dist/recipes/agentExecutor.js.map +1 -1
  95. package/dist/recipes/chainedRunner.js +16 -2
  96. package/dist/recipes/chainedRunner.js.map +1 -1
  97. package/dist/recipes/connectorPreflight.d.ts +53 -0
  98. package/dist/recipes/connectorPreflight.js +79 -0
  99. package/dist/recipes/connectorPreflight.js.map +1 -0
  100. package/dist/recipes/githubInstallSource.d.ts +62 -0
  101. package/dist/recipes/githubInstallSource.js +125 -0
  102. package/dist/recipes/githubInstallSource.js.map +1 -0
  103. package/dist/recipes/haltCategory.d.ts +80 -0
  104. package/dist/recipes/haltCategory.js +125 -0
  105. package/dist/recipes/haltCategory.js.map +1 -0
  106. package/dist/recipes/idempotencyKey.d.ts +126 -0
  107. package/dist/recipes/idempotencyKey.js +298 -0
  108. package/dist/recipes/idempotencyKey.js.map +1 -0
  109. package/dist/recipes/judgeSummary.d.ts +50 -0
  110. package/dist/recipes/judgeSummary.js +47 -0
  111. package/dist/recipes/judgeSummary.js.map +1 -0
  112. package/dist/recipes/judgeVerdict.d.ts +48 -0
  113. package/dist/recipes/judgeVerdict.js +174 -0
  114. package/dist/recipes/judgeVerdict.js.map +1 -0
  115. package/dist/recipes/migrations/index.d.ts +9 -0
  116. package/dist/recipes/migrations/index.js +133 -0
  117. package/dist/recipes/migrations/index.js.map +1 -1
  118. package/dist/recipes/runBudget.d.ts +70 -0
  119. package/dist/recipes/runBudget.js +109 -0
  120. package/dist/recipes/runBudget.js.map +1 -0
  121. package/dist/recipes/scheduler.d.ts +7 -0
  122. package/dist/recipes/scheduler.js +31 -14
  123. package/dist/recipes/scheduler.js.map +1 -1
  124. package/dist/recipes/schema.d.ts +36 -0
  125. package/dist/recipes/toolRegistry.js +19 -0
  126. package/dist/recipes/toolRegistry.js.map +1 -1
  127. package/dist/recipes/tools/file.js +5 -2
  128. package/dist/recipes/tools/file.js.map +1 -1
  129. package/dist/recipes/tools/http.d.ts +10 -0
  130. package/dist/recipes/tools/http.js +176 -0
  131. package/dist/recipes/tools/http.js.map +1 -0
  132. package/dist/recipes/tools/index.d.ts +1 -0
  133. package/dist/recipes/tools/index.js +1 -0
  134. package/dist/recipes/tools/index.js.map +1 -1
  135. package/dist/recipes/validation.js +1 -1
  136. package/dist/recipes/validation.js.map +1 -1
  137. package/dist/recipes/yamlRunner.d.ts +88 -7
  138. package/dist/recipes/yamlRunner.js +216 -25
  139. package/dist/recipes/yamlRunner.js.map +1 -1
  140. package/dist/recipesHttp.d.ts +3 -1
  141. package/dist/recipesHttp.js +9 -3
  142. package/dist/recipesHttp.js.map +1 -1
  143. package/dist/runLog.d.ts +28 -0
  144. package/dist/runLog.js +5 -0
  145. package/dist/runLog.js.map +1 -1
  146. package/dist/server.d.ts +111 -1
  147. package/dist/server.js +480 -6
  148. package/dist/server.js.map +1 -1
  149. package/dist/streamableHttp.d.ts +9 -4
  150. package/dist/streamableHttp.js +34 -15
  151. package/dist/streamableHttp.js.map +1 -1
  152. package/dist/tools/bridgeDoctor.js +6 -2
  153. package/dist/tools/bridgeDoctor.js.map +1 -1
  154. package/dist/tools/ccRoutines.d.ts +221 -0
  155. package/dist/tools/ccRoutines.js +264 -0
  156. package/dist/tools/ccRoutines.js.map +1 -0
  157. package/dist/tools/getCodeCoverage.js +7 -3
  158. package/dist/tools/getCodeCoverage.js.map +1 -1
  159. package/dist/tools/index.js +6 -0
  160. package/dist/tools/index.js.map +1 -1
  161. package/dist/tools/openInBrowser.js +6 -1
  162. package/dist/tools/openInBrowser.js.map +1 -1
  163. package/dist/tools/recentTracesDigest.js +56 -11
  164. package/dist/tools/recentTracesDigest.js.map +1 -1
  165. package/dist/tools/testRunners/vitestJest.js +3 -1
  166. package/dist/tools/testRunners/vitestJest.js.map +1 -1
  167. package/dist/tools/utils.js +13 -7
  168. package/dist/tools/utils.js.map +1 -1
  169. package/package.json +16 -5
  170. package/scripts/postinstall.mjs +27 -0
  171. package/scripts/smoke/run-all.mjs +162 -0
  172. package/scripts/start-all.mjs +513 -0
  173. package/scripts/start-all.ps1 +209 -0
  174. package/scripts/start-all.sh +73 -17
  175. package/scripts/start-orchestrator.ps1 +158 -0
  176. package/scripts/start-remote.mjs +122 -0
  177. package/templates/automation-policies/recipe-authoring.json +1 -1
  178. package/templates/automation-policies/security-first.json +1 -1
  179. package/templates/automation-policies/strict-lint.json +1 -1
  180. package/templates/automation-policies/test-driven.json +1 -1
  181. package/templates/automation-policy.example.json +1 -1
  182. package/templates/co.patchwork-os.bridge.plist +1 -1
  183. package/templates/recipes/approval-queue-ui-test.yaml +1 -1
  184. package/templates/recipes/ctx-loop-test.yaml +1 -1
  185. package/templates/recipes/webhook/apple-watch-health-log.yaml +145 -0
  186. package/dist/commands/marketplace.d.ts +0 -16
  187. package/dist/commands/marketplace.js +0 -32
  188. package/dist/commands/marketplace.js.map +0 -1
  189. package/dist/recipes/legacyRecipeCompat.d.ts +0 -10
  190. package/dist/recipes/legacyRecipeCompat.js +0 -131
  191. package/dist/recipes/legacyRecipeCompat.js.map +0 -1
@@ -1,5 +1,17 @@
1
1
  import { v1Migration } from "./v1.js";
2
2
  export { v1Migration } from "./v1.js";
3
+ /**
4
+ * Default deprecation-warning sink for the runtime/validation/fmt callers.
5
+ * Forwards to `console.warn` outside of tests so users see migration
6
+ * prompts in CLI output, but stays silent under vitest so the dozens of
7
+ * intentional legacy-shape regression fixtures don't flood stderr. Tests
8
+ * that need to assert warnings still pass their own `vi.fn()` directly.
9
+ */
10
+ export const defaultDeprecationWarn = (msg) => {
11
+ if (process.env.VITEST || process.env.NODE_ENV === "test")
12
+ return;
13
+ console.warn(msg);
14
+ };
3
15
  /** apiVersion produced by the most recent migration. */
4
16
  export const CURRENT_API_VERSION = "patchwork.sh/v1";
5
17
  /**
@@ -52,4 +64,125 @@ export function migrateRecipeToCurrent(recipe, warn) {
52
64
  }
53
65
  return { recipe: current, applied };
54
66
  }
67
+ // ---------------------------------------------------------------------------
68
+ // Field-level legacy normalisation (formerly legacyRecipeCompat.ts)
69
+ //
70
+ // These functions accept recipes in any historical shape and produce the
71
+ // current canonical shape. They run alongside the apiVersion migration
72
+ // chain above.
73
+ // ---------------------------------------------------------------------------
74
+ export function normalizeRecipeForRuntime(recipe, warn) {
75
+ if (!isRecord(recipe)) {
76
+ return recipe;
77
+ }
78
+ // Apply apiVersion migrations first so downstream field-level
79
+ // legacy compat operates on a recipe stamped with the current
80
+ // apiVersion (and so the deprecation warning for missing
81
+ // apiVersion fires once per call).
82
+ const migrated = migrateRecipeToCurrent(recipe, warn).recipe;
83
+ const source = isRecord(migrated) ? migrated : recipe;
84
+ const normalized = {
85
+ ...source,
86
+ };
87
+ if (isRecord(normalized.trigger)) {
88
+ normalized.trigger = normalizeLegacyTriggerForRuntime(normalized.trigger, warn);
89
+ }
90
+ if (Array.isArray(normalized.steps)) {
91
+ normalized.steps = normalized.steps.map((step) => normalizeLegacyRuntimeStep(step, warn));
92
+ }
93
+ return normalized;
94
+ }
95
+ function normalizeLegacyTriggerForRuntime(trigger, warn) {
96
+ const normalized = { ...trigger };
97
+ if (normalized.type === "cron" &&
98
+ typeof normalized.schedule === "string" &&
99
+ typeof normalized.at !== "string") {
100
+ warn?.("Deprecated recipe field: trigger.schedule — rename to trigger.at (will be removed in a future major version)");
101
+ normalized.at = normalized.schedule;
102
+ }
103
+ delete normalized.schedule;
104
+ return normalized;
105
+ }
106
+ function normalizeLegacyRuntimeStep(step, warn) {
107
+ if (!isRecord(step)) {
108
+ return step;
109
+ }
110
+ const normalized = {};
111
+ for (const [key, value] of Object.entries(step)) {
112
+ if (key === "params" || key === "output" || key === "prompt") {
113
+ continue;
114
+ }
115
+ if (key === "agent" && typeof value === "boolean") {
116
+ continue;
117
+ }
118
+ if (key === "parallel" && Array.isArray(value)) {
119
+ normalized.parallel = value.map((entry) => normalizeLegacyRuntimeStep(entry, warn));
120
+ continue;
121
+ }
122
+ if (key === "branch" && Array.isArray(value)) {
123
+ normalized.branch = value.map((entry) => normalizeLegacyBranchEntry(entry, warn));
124
+ continue;
125
+ }
126
+ normalized[key] = value;
127
+ }
128
+ if (step.agent === true || isRecord(step.agent)) {
129
+ const agentConfig = isRecord(step.agent)
130
+ ? { ...step.agent }
131
+ : {};
132
+ if (typeof step.prompt === "string" &&
133
+ typeof agentConfig.prompt !== "string") {
134
+ warn?.("Deprecated recipe step field: prompt at step level — move to step.agent.prompt (will be removed in a future major version)");
135
+ agentConfig.prompt = step.prompt;
136
+ }
137
+ if (typeof step.output === "string" &&
138
+ typeof agentConfig.into !== "string") {
139
+ warn?.("Deprecated recipe step field: output — use step.agent.into instead (will be removed in a future major version)");
140
+ agentConfig.into = step.output;
141
+ }
142
+ if (step.agent === true) {
143
+ warn?.("Deprecated recipe step field: agent: true — use agent: { prompt, into } object instead (will be removed in a future major version)");
144
+ }
145
+ normalized.agent = agentConfig;
146
+ return normalized;
147
+ }
148
+ if (isRecord(step.params)) {
149
+ warn?.("Deprecated recipe step field: params — inline fields directly on the step (will be removed in a future major version)");
150
+ Object.assign(normalized, step.params);
151
+ }
152
+ if (typeof normalized.recipe !== "string" &&
153
+ typeof normalized.chain === "string") {
154
+ warn?.("Deprecated recipe step field: chain — rename to recipe (will be removed in a future major version)");
155
+ normalized.recipe = normalized.chain;
156
+ }
157
+ delete normalized.chain;
158
+ if (typeof normalized.into !== "string" && typeof step.output === "string") {
159
+ warn?.("Deprecated recipe step field: output — rename to into (will be removed in a future major version)");
160
+ normalized.into = step.output;
161
+ }
162
+ if (normalized.tool === "file.append" &&
163
+ typeof normalized.content !== "string" &&
164
+ typeof normalized.line === "string") {
165
+ warn?.("Deprecated recipe step field: line (file.append) — rename to content (will be removed in a future major version)");
166
+ normalized.content = normalized.line;
167
+ delete normalized.line;
168
+ }
169
+ return normalized;
170
+ }
171
+ function normalizeLegacyBranchEntry(entry, warn) {
172
+ if (!isRecord(entry)) {
173
+ return entry;
174
+ }
175
+ const normalized = {};
176
+ for (const [key, value] of Object.entries(entry)) {
177
+ if (key === "otherwise" && isRecord(value)) {
178
+ normalized.otherwise = normalizeLegacyRuntimeStep(value, warn);
179
+ continue;
180
+ }
181
+ normalized[key] = value;
182
+ }
183
+ if (Object.hasOwn(normalized, "otherwise")) {
184
+ return normalized;
185
+ }
186
+ return normalizeLegacyRuntimeStep(entry, warn);
187
+ }
55
188
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/recipes/migrations/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,wDAAwD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD;;;GAGG;AACH,MAAM,QAAQ,GAAmC,CAAC,WAAW,CAAC,CAAC;AAS/D,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,MAA+B;IACrD,OAAO,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAe,EACf,IAAa;IAEb,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACrD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,+DAA+D;IAC/D,6BAA6B;IAC7B,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,mBAAmB,EAAE,CAAC;YACpC,MAAM;QACR,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,gEAAgE;YAChE,6DAA6D;YAC7D,oCAAoC;YACpC,MAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9C,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,IAAI,eAAe,OAAO,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/recipes/migrations/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Per-recipe token budget — PR2b.
3
+ *
4
+ * Built on PR2a's `AgentResult.usage` plumbing. The runner constructs
5
+ * one `RunBudget` per recipe execution; agent steps consult it before
6
+ * dispatch (admission) and reconcile actual consumption after the call
7
+ * returns. On breach the run halts at the *next* admission check (we
8
+ * never retroactively fail a step that succeeded — the user's tokens
9
+ * are already spent, halting after-the-fact would just confuse the
10
+ * audit trail).
11
+ *
12
+ * Subscription drivers (Claude CLI, provider subprocess CLIs) don't
13
+ * surface per-call token counts. `RunBudget` tracks which drivers were
14
+ * unmeasured and exposes a deduped warnings list — fail-open with a
15
+ * single notice per driver per run, never block.
16
+ *
17
+ * Scope (PR2b only):
18
+ * - cumulative token enforcement (input + output)
19
+ * - halt-on-breach OR warn-on-breach via `BudgetPolicy.onBreach`
20
+ * - subscription-driver fail-open with warning
21
+ *
22
+ * Out of scope (future):
23
+ * - per-step caps (extend `BudgetPolicy` or add `AgentStep.tokensMax`)
24
+ * - `usdMax` (needs a price table; subscription drivers complicate)
25
+ * - `wallClockMs` (orthogonal to tokens, separate accounting)
26
+ */
27
+ import type { AgentUsage } from "./agentExecutor.js";
28
+ import type { BudgetPolicy } from "./schema.js";
29
+ export interface BudgetAdmission {
30
+ /** True = step may proceed. False = budget exhausted. */
31
+ admitted: boolean;
32
+ /** When `admitted: false`, a one-sentence reason fit for haltReason. */
33
+ reason?: string;
34
+ }
35
+ export interface BudgetTotals {
36
+ inputTokens: number;
37
+ outputTokens: number;
38
+ total: number;
39
+ /** Remaining tokens before breach. Undefined when no limit is set. */
40
+ remaining?: number;
41
+ /** True once total >= tokensMax. */
42
+ breached: boolean;
43
+ /** Whether the configured policy halts on breach (vs warn). */
44
+ haltOnBreach: boolean;
45
+ }
46
+ export declare class RunBudget {
47
+ private readonly tokensMax?;
48
+ private readonly haltOnBreach;
49
+ private inputTokens;
50
+ private outputTokens;
51
+ /** Drivers that returned `usage: undefined` during this run, deduped. */
52
+ private readonly unmeasuredDrivers;
53
+ /** Free-form warnings surfaced via the run log. */
54
+ private readonly warningList;
55
+ constructor(policy?: BudgetPolicy);
56
+ /** Cheap admission check before dispatching an agent step. */
57
+ admit(): BudgetAdmission;
58
+ /**
59
+ * Record the actual usage reported by an agent call. `usage` may be
60
+ * undefined when the driver doesn't surface token counts — we record
61
+ * the driver name once per run and continue (fail-open).
62
+ */
63
+ reconcile(driver: string, usage: AgentUsage | undefined): void;
64
+ /** Snapshot of current totals + breach state. */
65
+ totals(): BudgetTotals;
66
+ /** Warnings collected so the runner can surface them in the run log. */
67
+ warnings(): string[];
68
+ private totalTokens;
69
+ private breached;
70
+ }
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Per-recipe token budget — PR2b.
3
+ *
4
+ * Built on PR2a's `AgentResult.usage` plumbing. The runner constructs
5
+ * one `RunBudget` per recipe execution; agent steps consult it before
6
+ * dispatch (admission) and reconcile actual consumption after the call
7
+ * returns. On breach the run halts at the *next* admission check (we
8
+ * never retroactively fail a step that succeeded — the user's tokens
9
+ * are already spent, halting after-the-fact would just confuse the
10
+ * audit trail).
11
+ *
12
+ * Subscription drivers (Claude CLI, provider subprocess CLIs) don't
13
+ * surface per-call token counts. `RunBudget` tracks which drivers were
14
+ * unmeasured and exposes a deduped warnings list — fail-open with a
15
+ * single notice per driver per run, never block.
16
+ *
17
+ * Scope (PR2b only):
18
+ * - cumulative token enforcement (input + output)
19
+ * - halt-on-breach OR warn-on-breach via `BudgetPolicy.onBreach`
20
+ * - subscription-driver fail-open with warning
21
+ *
22
+ * Out of scope (future):
23
+ * - per-step caps (extend `BudgetPolicy` or add `AgentStep.tokensMax`)
24
+ * - `usdMax` (needs a price table; subscription drivers complicate)
25
+ * - `wallClockMs` (orthogonal to tokens, separate accounting)
26
+ */
27
+ export class RunBudget {
28
+ tokensMax;
29
+ haltOnBreach;
30
+ inputTokens = 0;
31
+ outputTokens = 0;
32
+ /** Drivers that returned `usage: undefined` during this run, deduped. */
33
+ unmeasuredDrivers = new Set();
34
+ /** Free-form warnings surfaced via the run log. */
35
+ warningList = [];
36
+ constructor(policy) {
37
+ this.tokensMax = policy?.tokensMax;
38
+ this.haltOnBreach = (policy?.onBreach ?? "halt") === "halt";
39
+ }
40
+ /** Cheap admission check before dispatching an agent step. */
41
+ admit() {
42
+ if (this.tokensMax === undefined)
43
+ return { admitted: true };
44
+ if (this.breached()) {
45
+ if (!this.haltOnBreach) {
46
+ // warn-mode: never block, just keep going. The warning was
47
+ // already emitted on the post-call reconcile that breached.
48
+ return { admitted: true };
49
+ }
50
+ return {
51
+ admitted: false,
52
+ reason: `Run exceeded its token budget — budget_exceeded: total=${this.totalTokens()} > tokensMax=${this.tokensMax}.`,
53
+ };
54
+ }
55
+ return { admitted: true };
56
+ }
57
+ /**
58
+ * Record the actual usage reported by an agent call. `usage` may be
59
+ * undefined when the driver doesn't surface token counts — we record
60
+ * the driver name once per run and continue (fail-open).
61
+ */
62
+ reconcile(driver, usage) {
63
+ if (this.tokensMax === undefined)
64
+ return;
65
+ if (!usage) {
66
+ if (!this.unmeasuredDrivers.has(driver)) {
67
+ this.unmeasuredDrivers.add(driver);
68
+ this.warningList.push(`Driver "${driver}" does not report token usage — budget enforcement skipped for its calls. Set recipe.budget.onBreach="warn" or move to an API driver to fix.`);
69
+ }
70
+ return;
71
+ }
72
+ this.inputTokens += usage.inputTokens;
73
+ this.outputTokens += usage.outputTokens;
74
+ if (this.breached() && !this.haltOnBreach) {
75
+ // warn-mode: emit a single in-band warning the first time we
76
+ // cross the line. Subsequent steps continue running.
77
+ const breachKey = "warn-breach-emitted";
78
+ if (!this.unmeasuredDrivers.has(breachKey)) {
79
+ this.unmeasuredDrivers.add(breachKey);
80
+ this.warningList.push(`Token budget exceeded (total=${this.totalTokens()}, tokensMax=${this.tokensMax}) but onBreach="warn" — continuing.`);
81
+ }
82
+ }
83
+ }
84
+ /** Snapshot of current totals + breach state. */
85
+ totals() {
86
+ const total = this.totalTokens();
87
+ return {
88
+ inputTokens: this.inputTokens,
89
+ outputTokens: this.outputTokens,
90
+ total,
91
+ ...(this.tokensMax !== undefined && {
92
+ remaining: Math.max(0, this.tokensMax - total),
93
+ }),
94
+ breached: this.breached(),
95
+ haltOnBreach: this.haltOnBreach,
96
+ };
97
+ }
98
+ /** Warnings collected so the runner can surface them in the run log. */
99
+ warnings() {
100
+ return [...this.warningList];
101
+ }
102
+ totalTokens() {
103
+ return this.inputTokens + this.outputTokens;
104
+ }
105
+ breached() {
106
+ return this.tokensMax !== undefined && this.totalTokens() >= this.tokensMax;
107
+ }
108
+ }
109
+ //# sourceMappingURL=runBudget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runBudget.js","sourceRoot":"","sources":["../../src/recipes/runBudget.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,13 @@ export interface SchedulerOptions {
34
34
  setInterval?: typeof setInterval;
35
35
  /** Override for tests — defaults to clearInterval. */
36
36
  clearInterval?: typeof clearInterval;
37
+ /**
38
+ * Override the disabled-recipe set. Defaults to reading from
39
+ * `loadConfig()` (the operator's ~/.patchwork/config.json). Tests inject
40
+ * an empty array so a stale disabled entry on the dev machine doesn't
41
+ * silently make the scheduler skip a freshly-fixtured recipe.
42
+ */
43
+ disabledRecipes?: ReadonlyArray<string>;
37
44
  }
38
45
  export declare class RecipeScheduler {
39
46
  private readonly opts;
@@ -17,13 +17,21 @@ export class RecipeScheduler {
17
17
  }
18
18
  start() {
19
19
  this.stop();
20
- // Load disabled list from config
20
+ // Load disabled list tests can inject `opts.disabledRecipes` to bypass
21
+ // reading the operator's real ~/.patchwork/config.json (which would
22
+ // otherwise silently skip a recipe whose name happens to be in the dev
23
+ // machine's disabled set).
21
24
  let disabled = new Set();
22
- try {
23
- disabled = getConfigDisabledNames(loadConfig());
25
+ if (this.opts.disabledRecipes !== undefined) {
26
+ disabled = new Set(this.opts.disabledRecipes);
24
27
  }
25
- catch {
26
- // non-fatal — proceed with empty disabled set
28
+ else {
29
+ try {
30
+ disabled = getConfigDisabledNames(loadConfig());
31
+ }
32
+ catch {
33
+ // non-fatal — proceed with empty disabled set
34
+ }
27
35
  }
28
36
  let entries;
29
37
  try {
@@ -200,15 +208,24 @@ export class RecipeScheduler {
200
208
  this.fire(name);
201
209
  }
202
210
  fire(name) {
203
- // TOCTOU defence: re-check the legacy `cfg.recipes.disabled` list at
204
- // fire time. `start()` snapshots it once; if the user runs `recipe
205
- // disable <name>` after start (and the recipe is a top-level legacy
206
- // file, where the marker file doesn't apply), the timer would
207
- // otherwise still fire until next restart(). The `.disabled` marker
208
- // case is handled inside findYamlRecipePath / loadRecipePrompt
209
- // (skip disabled install dirs) thanks to PR #49.
211
+ // TOCTOU defence: re-check the disabled list at fire time. `start()`
212
+ // snapshots it once; if the user runs `recipe disable <name>` after
213
+ // start (and the recipe is a top-level legacy file, where the marker
214
+ // file doesn't apply), the timer would otherwise still fire until
215
+ // next restart(). The `.disabled` marker case is handled inside
216
+ // findYamlRecipePath / loadRecipePrompt (skip disabled install dirs)
217
+ // thanks to PR #49.
218
+ //
219
+ // When `opts.disabledRecipes` is injected (test path), use it instead
220
+ // of `loadConfig()` — same reasoning as the start()-time injection in
221
+ // PR #375: reading the operator's real ~/.patchwork/config.json from
222
+ // a test process pollutes results when a fixtured recipe name
223
+ // collides with the dev box's disabled set.
210
224
  try {
211
- if (getConfigDisabledNames(loadConfig()).has(name)) {
225
+ const disabled = this.opts.disabledRecipes !== undefined
226
+ ? new Set(this.opts.disabledRecipes)
227
+ : getConfigDisabledNames(loadConfig());
228
+ if (disabled.has(name)) {
212
229
  this.opts.logger?.info?.(`[scheduler] skipping "${name}" — disabled via config (TOCTOU re-check)`);
213
230
  return;
214
231
  }
@@ -229,7 +246,7 @@ export class RecipeScheduler {
229
246
  }
230
247
  if (yamlPath) {
231
248
  if (!this.opts.runYaml) {
232
- this.opts.logger?.warn?.(`[scheduler] skipped "${name}" — YAML recipe requires runYaml callback (start bridge with --claude-driver)`);
249
+ this.opts.logger?.warn?.(`[scheduler] skipped "${name}" — YAML recipe requires runYaml callback (start bridge with --driver)`);
233
250
  return;
234
251
  }
235
252
  this.opts.runYaml(name).catch((err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/recipes/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/recipes/scheduler.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,34 @@ export interface ErrorPolicy {
75
75
  fallback?: "log_only" | "abort" | "deliver_original";
76
76
  notify?: boolean;
77
77
  }
78
+ /**
79
+ * PR2b — per-recipe token budget. When `tokensMax` is set, the runner
80
+ * tracks cumulative input + output tokens from API drivers across the
81
+ * run; on breach the run halts with a `budget_exceeded` haltReason
82
+ * (composes with the existing halt-summary / dashboard / CLI / Prom
83
+ * surfaces from #441/#444/#451/#452/#453).
84
+ *
85
+ * Subscription drivers (Claude CLI, provider subprocess CLIs) don't
86
+ * report token counts — the runner emits a one-time warning per driver
87
+ * per run and skips enforcement for those calls (fail-open). API
88
+ * drivers (Anthropic API, OpenAI/Gemini/Grok subprocess that surfaces
89
+ * usage, local LLM adapters) get full enforcement.
90
+ *
91
+ * Nested object (not flat `tokensMax`) so future siblings — `usdMax`,
92
+ * `wallClockMs`, `stepsMax` — don't churn the schema again.
93
+ */
94
+ export interface BudgetPolicy {
95
+ /** Cumulative input + output tokens allowed across the whole run. */
96
+ tokensMax?: number;
97
+ /**
98
+ * What to do when the budget is breached. `halt` (default) stops the
99
+ * run on the next admission check with a `budget_exceeded` halt
100
+ * reason. `warn` continues the run but emits a warning + records the
101
+ * breach in the run log; useful for tuning budgets without breaking
102
+ * production cron recipes.
103
+ */
104
+ onBreach?: "halt" | "warn";
105
+ }
78
106
  export interface Recipe {
79
107
  name: string;
80
108
  version: string;
@@ -82,5 +110,13 @@ export interface Recipe {
82
110
  trigger: Trigger;
83
111
  context?: ContextBlock[];
84
112
  steps: Step[];
113
+ /**
114
+ * Acknowledge write-tool steps so preflight does not flag them. Each entry
115
+ * is a tool id (e.g. "file.write") or a namespace (e.g. "slack"). Merged
116
+ * with any --allow-write CLI flags at preflight time.
117
+ */
118
+ allowWrites?: string[];
85
119
  on_error?: ErrorPolicy;
120
+ /** PR2b — see `BudgetPolicy` above. Absent = no enforcement. */
121
+ budget?: BudgetPolicy;
86
122
  }
@@ -9,6 +9,7 @@
9
9
  * - Namespace isolation for connectors
10
10
  */
11
11
  import { assertWriteAllowed } from "../featureFlags.js";
12
+ import { deriveIdempotencyKey } from "./idempotencyKey.js";
12
13
  /** Internal registry map */
13
14
  const registry = new Map();
14
15
  /**
@@ -66,6 +67,24 @@ export async function executeTool(id, context) {
66
67
  }
67
68
  if (tool.isWrite) {
68
69
  assertWriteAllowed(id);
70
+ // PR5a — idempotency dedup. Within a single recipe run, the same
71
+ // write tool with the same params must execute exactly once. If a
72
+ // parallel branch (chained recipe) or a re-dispatch reaches this
73
+ // function with a key already in the ledger, return the cached
74
+ // output so downstream `{{steps.x.data}}` references stay coherent.
75
+ // Errors are NOT recorded — retry-after-failure still re-executes
76
+ // (correct: a failed call may not have completed its side effect).
77
+ const ledger = context.deps.writeEffectLedger;
78
+ if (ledger) {
79
+ const key = deriveIdempotencyKey(id, context.params);
80
+ if (ledger.has(key)) {
81
+ const cached = ledger.get(key);
82
+ return cached ?? null;
83
+ }
84
+ const result = await tool.execute(context);
85
+ ledger.record(key, result);
86
+ return result;
87
+ }
69
88
  }
70
89
  return tool.execute(context);
71
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../src/recipes/toolRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../src/recipes/toolRegistry.ts"],"names":[],"mappings":"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"}
@@ -128,8 +128,11 @@ registerTool({
128
128
  assertWriteAllowed("file.append");
129
129
  const p = jailedPath(params.path, deps.workdir, true);
130
130
  const content = params.content;
131
- // 'when' condition is evaluated before executeStep is called in yamlRunner
132
- // but we check here too for direct registry usage
131
+ // 'when' is evaluated by both runners before executeStep is called
132
+ // (yamlRunner.ts step loop + chainedRunner.ts:248-266). This in-tool
133
+ // fallback only runs when the registry is invoked directly (no runner),
134
+ // and uses the limited evalCondition below — runner paths render the
135
+ // template against the recipe's context first, which this fallback can't.
133
136
  const when = step.when;
134
137
  if (when && !evalCondition(when, {})) {
135
138
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/recipes/tools/file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjE,SAAS,UAAU,CAAC,CAAS,EAAE,SAAiB,EAAE,KAAc;IAC9D,OAAO,iBAAiB,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,SAAS,CAAC,CAAS;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,WAAW;IACf,SAAS,EAAE,MAAM;IACjB,WAAW,EACT,gFAAgF;IAClF,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,aAAa,CAAC,QAAQ;YAC5B,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2DAA2D;KACzE;IACD,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACxC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAc,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAI,IAAI,CAAC,QAAoB,IAAI,KAAK,CAAC;QACrD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,YAAY;IAChB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,+DAA+D;IAC5E,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,aAAa,CAAC,QAAQ;YAC5B,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uDAAuD;aACrE;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;KAC9B;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACjC;KACF;IACD,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QAClC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAc,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiB,CAAC;QACzC,SAAS,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;CACF,CAAC,CAAC;AAEH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,YAAY,CAAC;IACX,EAAE,EAAE,aAAa;IACjB,SAAS,EAAE,MAAM;IACjB,WAAW,EACT,oFAAoF;IACtF,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,aAAa,CAAC,QAAQ;YAC5B,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wDAAwD;aACtE;YACD,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,IAAI,EAAE,aAAa,CAAC,IAAI;SACzB;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;KAC9B;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAClC;KACF;IACD,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACxC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAc,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiB,CAAC;QACzC,2EAA2E;QAC3E,kDAAkD;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAA0B,CAAC;QAC7C,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,CAAC,CAAC,CAAC,CAAC;QACb,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;CACF,CAAC,CAAC;AAEH;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,IAA6B;IAChE,sCAAsC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC9D,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,gDAAgD;QAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC9B,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,GAAG;gBACN,OAAO,GAAG,GAAG,GAAG,CAAC;YACnB,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,GAAG,CAAC;YACpB,KAAK,GAAG;gBACN,OAAO,GAAG,GAAG,GAAG,CAAC;YACnB,KAAK,IAAI;gBACP,OAAO,GAAG,IAAI,GAAG,CAAC;YACpB,KAAK,IAAI;gBACP,OAAO,GAAG,KAAK,GAAG,CAAC;YACrB,KAAK,IAAI;gBACP,OAAO,GAAG,KAAK,GAAG,CAAC;QACvB,CAAC;IACH,CAAC;IACD,2BAA2B;IAC3B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/recipes/tools/file.ts"],"names":[],"mappings":"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"}