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.
- package/README.bridge.md +5 -5
- package/README.md +156 -12
- package/deploy/deploy-dashboard.sh +25 -1
- package/deploy/macos/README.md +153 -0
- package/deploy/macos/com.patchwork.bridge.plist.template +54 -0
- package/deploy/macos/com.patchwork.tunnel.plist.template +76 -0
- package/deploy/macos/install-mac-bridge.sh +244 -0
- package/deploy/macos/uninstall-mac-bridge.sh +22 -0
- package/dist/activityLog.d.ts +6 -0
- package/dist/activityLog.js +8 -0
- package/dist/activityLog.js.map +1 -1
- package/dist/analyticsPrefs.d.ts +35 -2
- package/dist/analyticsPrefs.js +120 -21
- package/dist/analyticsPrefs.js.map +1 -1
- package/dist/analyticsSend.js +5 -1
- package/dist/analyticsSend.js.map +1 -1
- package/dist/approvalHttp.d.ts +14 -0
- package/dist/approvalHttp.js +172 -1
- package/dist/approvalHttp.js.map +1 -1
- package/dist/approvalQueue.d.ts +27 -2
- package/dist/approvalQueue.js +44 -7
- package/dist/approvalQueue.js.map +1 -1
- package/dist/automation.d.ts +34 -3
- package/dist/automation.js +85 -10
- package/dist/automation.js.map +1 -1
- package/dist/bridge.d.ts +2 -0
- package/dist/bridge.js +114 -8
- package/dist/bridge.js.map +1 -1
- package/dist/bridgeLockDiscovery.d.ts +27 -1
- package/dist/bridgeLockDiscovery.js +37 -11
- package/dist/bridgeLockDiscovery.js.map +1 -1
- package/dist/claudeOrchestrator.js +5 -2
- package/dist/claudeOrchestrator.js.map +1 -1
- package/dist/commands/patchworkInit.d.ts +5 -0
- package/dist/commands/patchworkInit.js +86 -7
- package/dist/commands/patchworkInit.js.map +1 -1
- package/dist/commands/recipe.d.ts +51 -0
- package/dist/commands/recipe.js +363 -3
- package/dist/commands/recipe.js.map +1 -1
- package/dist/commands/recipeInstall.js +6 -3
- package/dist/commands/recipeInstall.js.map +1 -1
- package/dist/commands/task.js +2 -2
- package/dist/commands/task.js.map +1 -1
- package/dist/config.d.ts +17 -2
- package/dist/config.js +54 -17
- package/dist/config.js.map +1 -1
- package/dist/connectors/baseConnector.js +25 -3
- package/dist/connectors/baseConnector.js.map +1 -1
- package/dist/connectors/tokenStorage.js +46 -10
- package/dist/connectors/tokenStorage.js.map +1 -1
- package/dist/drivers/gemini/index.d.ts +22 -0
- package/dist/drivers/gemini/index.js +240 -129
- package/dist/drivers/gemini/index.js.map +1 -1
- package/dist/drivers/local/index.d.ts +17 -0
- package/dist/drivers/local/index.js +99 -0
- package/dist/drivers/local/index.js.map +1 -1
- package/dist/drivers/openai/index.js +30 -2
- package/dist/drivers/openai/index.js.map +1 -1
- package/dist/extensionClient.d.ts +8 -0
- package/dist/extensionClient.js +24 -2
- package/dist/extensionClient.js.map +1 -1
- package/dist/featureFlags.d.ts +76 -0
- package/dist/featureFlags.js +166 -2
- package/dist/featureFlags.js.map +1 -1
- package/dist/fp/automationInterpreter.d.ts +9 -1
- package/dist/fp/automationInterpreter.js +151 -34
- package/dist/fp/automationInterpreter.js.map +1 -1
- package/dist/fp/automationProgram.d.ts +30 -0
- package/dist/fp/automationProgram.js.map +1 -1
- package/dist/fp/automationState.d.ts +23 -4
- package/dist/fp/automationState.js +28 -4
- package/dist/fp/automationState.js.map +1 -1
- package/dist/fp/interpreterContext.d.ts +66 -1
- package/dist/fp/interpreterContext.js +140 -1
- package/dist/fp/interpreterContext.js.map +1 -1
- package/dist/fp/policyParser.js +29 -1
- package/dist/fp/policyParser.js.map +1 -1
- package/dist/index.js +765 -69
- package/dist/index.js.map +1 -1
- package/dist/lockfile.js +4 -1
- package/dist/lockfile.js.map +1 -1
- package/dist/oauth.d.ts +9 -0
- package/dist/oauth.js +33 -0
- package/dist/oauth.js.map +1 -1
- package/dist/patchworkConfig.d.ts +16 -0
- package/dist/patchworkConfig.js +5 -0
- package/dist/patchworkConfig.js.map +1 -1
- package/dist/recipeOrchestration.js +35 -1
- package/dist/recipeOrchestration.js.map +1 -1
- package/dist/recipeRoutes.d.ts +36 -0
- package/dist/recipeRoutes.js +231 -32
- package/dist/recipeRoutes.js.map +1 -1
- package/dist/recipes/agentExecutor.d.ts +25 -5
- package/dist/recipes/agentExecutor.js.map +1 -1
- package/dist/recipes/chainedRunner.js +16 -2
- package/dist/recipes/chainedRunner.js.map +1 -1
- package/dist/recipes/connectorPreflight.d.ts +53 -0
- package/dist/recipes/connectorPreflight.js +79 -0
- package/dist/recipes/connectorPreflight.js.map +1 -0
- package/dist/recipes/githubInstallSource.d.ts +62 -0
- package/dist/recipes/githubInstallSource.js +125 -0
- package/dist/recipes/githubInstallSource.js.map +1 -0
- package/dist/recipes/haltCategory.d.ts +80 -0
- package/dist/recipes/haltCategory.js +125 -0
- package/dist/recipes/haltCategory.js.map +1 -0
- package/dist/recipes/idempotencyKey.d.ts +126 -0
- package/dist/recipes/idempotencyKey.js +298 -0
- package/dist/recipes/idempotencyKey.js.map +1 -0
- package/dist/recipes/judgeSummary.d.ts +50 -0
- package/dist/recipes/judgeSummary.js +47 -0
- package/dist/recipes/judgeSummary.js.map +1 -0
- package/dist/recipes/judgeVerdict.d.ts +48 -0
- package/dist/recipes/judgeVerdict.js +174 -0
- package/dist/recipes/judgeVerdict.js.map +1 -0
- package/dist/recipes/migrations/index.d.ts +9 -0
- package/dist/recipes/migrations/index.js +133 -0
- package/dist/recipes/migrations/index.js.map +1 -1
- package/dist/recipes/runBudget.d.ts +70 -0
- package/dist/recipes/runBudget.js +109 -0
- package/dist/recipes/runBudget.js.map +1 -0
- package/dist/recipes/scheduler.d.ts +7 -0
- package/dist/recipes/scheduler.js +31 -14
- package/dist/recipes/scheduler.js.map +1 -1
- package/dist/recipes/schema.d.ts +36 -0
- package/dist/recipes/toolRegistry.js +19 -0
- package/dist/recipes/toolRegistry.js.map +1 -1
- package/dist/recipes/tools/file.js +5 -2
- package/dist/recipes/tools/file.js.map +1 -1
- package/dist/recipes/tools/http.d.ts +10 -0
- package/dist/recipes/tools/http.js +176 -0
- package/dist/recipes/tools/http.js.map +1 -0
- package/dist/recipes/tools/index.d.ts +1 -0
- package/dist/recipes/tools/index.js +1 -0
- package/dist/recipes/tools/index.js.map +1 -1
- package/dist/recipes/validation.js +1 -1
- package/dist/recipes/validation.js.map +1 -1
- package/dist/recipes/yamlRunner.d.ts +88 -7
- package/dist/recipes/yamlRunner.js +216 -25
- package/dist/recipes/yamlRunner.js.map +1 -1
- package/dist/recipesHttp.d.ts +3 -1
- package/dist/recipesHttp.js +9 -3
- package/dist/recipesHttp.js.map +1 -1
- package/dist/runLog.d.ts +28 -0
- package/dist/runLog.js +5 -0
- package/dist/runLog.js.map +1 -1
- package/dist/server.d.ts +111 -1
- package/dist/server.js +480 -6
- package/dist/server.js.map +1 -1
- package/dist/streamableHttp.d.ts +9 -4
- package/dist/streamableHttp.js +34 -15
- package/dist/streamableHttp.js.map +1 -1
- package/dist/tools/bridgeDoctor.js +6 -2
- package/dist/tools/bridgeDoctor.js.map +1 -1
- package/dist/tools/ccRoutines.d.ts +221 -0
- package/dist/tools/ccRoutines.js +264 -0
- package/dist/tools/ccRoutines.js.map +1 -0
- package/dist/tools/getCodeCoverage.js +7 -3
- package/dist/tools/getCodeCoverage.js.map +1 -1
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/openInBrowser.js +6 -1
- package/dist/tools/openInBrowser.js.map +1 -1
- package/dist/tools/recentTracesDigest.js +56 -11
- package/dist/tools/recentTracesDigest.js.map +1 -1
- package/dist/tools/testRunners/vitestJest.js +3 -1
- package/dist/tools/testRunners/vitestJest.js.map +1 -1
- package/dist/tools/utils.js +13 -7
- package/dist/tools/utils.js.map +1 -1
- package/package.json +16 -5
- package/scripts/postinstall.mjs +27 -0
- package/scripts/smoke/run-all.mjs +162 -0
- package/scripts/start-all.mjs +513 -0
- package/scripts/start-all.ps1 +209 -0
- package/scripts/start-all.sh +73 -17
- package/scripts/start-orchestrator.ps1 +158 -0
- package/scripts/start-remote.mjs +122 -0
- package/templates/automation-policies/recipe-authoring.json +1 -1
- package/templates/automation-policies/security-first.json +1 -1
- package/templates/automation-policies/strict-lint.json +1 -1
- package/templates/automation-policies/test-driven.json +1 -1
- package/templates/automation-policy.example.json +1 -1
- package/templates/co.patchwork-os.bridge.plist +1 -1
- package/templates/recipes/approval-queue-ui-test.yaml +1 -1
- package/templates/recipes/ctx-loop-test.yaml +1 -1
- package/templates/recipes/webhook/apple-watch-health-log.yaml +145 -0
- package/dist/commands/marketplace.d.ts +0 -16
- package/dist/commands/marketplace.js +0 -32
- package/dist/commands/marketplace.js.map +0 -1
- package/dist/recipes/legacyRecipeCompat.d.ts +0 -10
- package/dist/recipes/legacyRecipeCompat.js +0 -131
- package/dist/recipes/legacyRecipeCompat.js.map +0 -1
package/dist/featureFlags.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - Kill switch for write-tier operations
|
|
8
8
|
* - Per-feature opt-in with default-off safety
|
|
9
9
|
*/
|
|
10
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { existsSync, mkdirSync, readFileSync, watch, writeFileSync, } from "node:fs";
|
|
11
11
|
import os from "node:os";
|
|
12
12
|
import { join } from "node:path";
|
|
13
13
|
/** Flag registry — all known flags */
|
|
@@ -101,13 +101,85 @@ export function isEnabled(flagId) {
|
|
|
101
101
|
// Unknown flag — default to false (safe)
|
|
102
102
|
return false;
|
|
103
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns true when the given kill-switch flag is **env-locked** — i.e. its
|
|
106
|
+
* value was frozen at startup from a `PATCHWORK_FLAG_<ID>` environment
|
|
107
|
+
* variable and any subsequent `setFlag()` call will be silently overridden
|
|
108
|
+
* by `isEnabled()`.
|
|
109
|
+
*
|
|
110
|
+
* Used by the `/kill-switch` endpoint (issue #422) to surface a 409
|
|
111
|
+
* Conflict instead of returning 200 OK for a setFlag that won't stick,
|
|
112
|
+
* and by the dashboard to render the toggle as disabled (with a tooltip
|
|
113
|
+
* naming which direction was sysadmin-locked) when this returns true.
|
|
114
|
+
*
|
|
115
|
+
* Returns false for non-kill-switch flags (they read env dynamically and
|
|
116
|
+
* are never "locked"), for unknown flags, and when `lockKillSwitchEnv()`
|
|
117
|
+
* has not yet been called.
|
|
118
|
+
*/
|
|
119
|
+
export function isEnvLockedFor(flagId) {
|
|
120
|
+
if (!envLocked)
|
|
121
|
+
return false;
|
|
122
|
+
const flag = FLAG_REGISTRY.get(flagId);
|
|
123
|
+
if (!flag?.isKillSwitch)
|
|
124
|
+
return false;
|
|
125
|
+
return FROZEN_KILL_SWITCH_ENV.get(flagId) !== undefined;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Returns the frozen env-locked value for a kill-switch flag (`true` /
|
|
129
|
+
* `false`), or `null` if not env-locked.
|
|
130
|
+
*
|
|
131
|
+
* Used by the dashboard tooltip so the disabled-state can read "env-locked
|
|
132
|
+
* to **on**" vs "env-locked to **off**" — both directions are policy-locked,
|
|
133
|
+
* but the user should know which.
|
|
134
|
+
*/
|
|
135
|
+
export function getEnvLockedValue(flagId) {
|
|
136
|
+
if (!isEnvLockedFor(flagId))
|
|
137
|
+
return null;
|
|
138
|
+
const frozen = FROZEN_KILL_SWITCH_ENV.get(flagId);
|
|
139
|
+
return frozen === undefined ? null : frozen;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Thrown by `setFlag` when a kill-switch flag is env-locked (its value was
|
|
143
|
+
* frozen at startup via `PATCHWORK_FLAG_<ID>`) and the caller attempts to
|
|
144
|
+
* mutate it. The `/kill-switch` POST handler catches this and returns a
|
|
145
|
+
* structured 409 Conflict so the CLI / dashboard can distinguish
|
|
146
|
+
* "policy-locked" from "bad request" (issue #422, pitfall I9).
|
|
147
|
+
*
|
|
148
|
+
* `frozenValue` is the locked direction — callers can surface
|
|
149
|
+
* "env-locked to on" vs "env-locked to off" in error messages.
|
|
150
|
+
*/
|
|
151
|
+
export class EnvLockedFlagError extends Error {
|
|
152
|
+
flagId;
|
|
153
|
+
frozenValue;
|
|
154
|
+
constructor(flagId, frozenValue) {
|
|
155
|
+
super(`Feature flag "${flagId}" is env-locked to ${frozenValue ? "true" : "false"} ` +
|
|
156
|
+
`(set at startup via PATCHWORK_FLAG_${flagId.replace(/[.-]/g, "_").toUpperCase()}). ` +
|
|
157
|
+
`Unset the environment variable to allow runtime mutation.`);
|
|
158
|
+
this.name = "EnvLockedFlagError";
|
|
159
|
+
this.flagId = flagId;
|
|
160
|
+
this.frozenValue = frozenValue;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
104
163
|
/**
|
|
105
164
|
* Set a flag value (persists to config file if persist=true).
|
|
165
|
+
*
|
|
166
|
+
* Throws `EnvLockedFlagError` if the flag is a kill-switch flag that has been
|
|
167
|
+
* frozen by `lockKillSwitchEnv()` — a sysadmin env-var override takes
|
|
168
|
+
* precedence over runtime mutation. The `/kill-switch` POST handler catches
|
|
169
|
+
* this and returns 409 (pitfall I9 from issue #422).
|
|
106
170
|
*/
|
|
107
171
|
export function setFlag(flagId, value, persist = false) {
|
|
108
172
|
if (!FLAG_REGISTRY.has(flagId)) {
|
|
109
173
|
throw new Error(`Unknown feature flag: "${flagId}"`);
|
|
110
174
|
}
|
|
175
|
+
// v2-I9: kill-switch flags that were env-locked at startup must not be
|
|
176
|
+
// silently overridden — throw so callers (the /kill-switch handler) can
|
|
177
|
+
// surface a structured 409 instead of returning 200 for a mutation that
|
|
178
|
+
// won't take effect.
|
|
179
|
+
if (isEnvLockedFor(flagId)) {
|
|
180
|
+
const frozen = FROZEN_KILL_SWITCH_ENV.get(flagId);
|
|
181
|
+
throw new EnvLockedFlagError(flagId, frozen === true);
|
|
182
|
+
}
|
|
111
183
|
FLAG_VALUES.set(flagId, value);
|
|
112
184
|
if (persist) {
|
|
113
185
|
persistFlags();
|
|
@@ -187,6 +259,91 @@ registerFlag({
|
|
|
187
259
|
});
|
|
188
260
|
// Load persisted flags on module init
|
|
189
261
|
loadFlags();
|
|
262
|
+
/**
|
|
263
|
+
* Watch the flags.json file for cross-process changes. When another
|
|
264
|
+
* process (typically the `patchwork kill-switch` CLI in its fallback
|
|
265
|
+
* fs-write path, or a sibling bridge in a multi-bridge deployment)
|
|
266
|
+
* writes to flags.json, this watcher reloads the in-memory FLAG_VALUES
|
|
267
|
+
* so the running bridge picks up the new state without a restart.
|
|
268
|
+
*
|
|
269
|
+
* v2-S1 + v2-B2 from #422. Closes the "no bridge reachable → CLI
|
|
270
|
+
* silent fallback → recipes keep writing" gap that motivated the
|
|
271
|
+
* redesign — even when the CLI's HTTP path fails and it falls back
|
|
272
|
+
* to writing the file directly, the running bridge still sees the
|
|
273
|
+
* change.
|
|
274
|
+
*
|
|
275
|
+
* **Env-lock interaction:** if `lockKillSwitchEnv()` already froze a
|
|
276
|
+
* kill-switch value from `PATCHWORK_FLAG_*`, the file-watch flow
|
|
277
|
+
* still updates FLAG_VALUES, but `isEnabled` continues reading from
|
|
278
|
+
* the frozen snapshot for that flag (existing behavior at L117-121).
|
|
279
|
+
* The env-lock is the source of truth — file changes can't override
|
|
280
|
+
* a sysadmin-mandated kill-switch state. This is the correct policy.
|
|
281
|
+
*
|
|
282
|
+
* Modeled on `src/pluginWatcher.ts`: directory-watch + filename
|
|
283
|
+
* filter + 100ms debounce so coalesced events (rename+create+change
|
|
284
|
+
* on most filesystems) don't trigger N reloads. Returns a close
|
|
285
|
+
* handle. Tolerates the file or directory not yet existing.
|
|
286
|
+
*/
|
|
287
|
+
export function watchFlags() {
|
|
288
|
+
const flagsPath = getFlagsPath();
|
|
289
|
+
const flagsDir = join(flagsPath, "..");
|
|
290
|
+
const flagsFile = "flags.json";
|
|
291
|
+
let debounceTimer = null;
|
|
292
|
+
let watcher = null;
|
|
293
|
+
let stopped = false;
|
|
294
|
+
const reload = () => {
|
|
295
|
+
if (debounceTimer)
|
|
296
|
+
clearTimeout(debounceTimer);
|
|
297
|
+
debounceTimer = setTimeout(() => {
|
|
298
|
+
debounceTimer = null;
|
|
299
|
+
if (stopped)
|
|
300
|
+
return;
|
|
301
|
+
try {
|
|
302
|
+
loadFlags();
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
// loadFlags has its own try/catch for parse errors;
|
|
306
|
+
// this catch is belt-and-suspenders for fs errors.
|
|
307
|
+
}
|
|
308
|
+
}, 100);
|
|
309
|
+
};
|
|
310
|
+
try {
|
|
311
|
+
// Watch the directory rather than the file directly — flags.json
|
|
312
|
+
// may not exist yet when watch is established, and editors / atomic
|
|
313
|
+
// writes (rename-into-place) lose direct file watches.
|
|
314
|
+
watcher = watch(flagsDir, { recursive: false }, (_event, filename) => {
|
|
315
|
+
if (stopped)
|
|
316
|
+
return;
|
|
317
|
+
// filename may be null on some platforms; reload on null to be safe.
|
|
318
|
+
if (!filename || filename === flagsFile) {
|
|
319
|
+
reload();
|
|
320
|
+
}
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
catch {
|
|
324
|
+
// Directory doesn't exist yet — the user hasn't engaged any flags.
|
|
325
|
+
// No-op; first `persistFlags()` creates the dir and from then on
|
|
326
|
+
// the watcher won't fire. This is acceptable for an emergency-stop
|
|
327
|
+
// flag because the file will exist as soon as anyone toggles via
|
|
328
|
+
// /kill-switch (which calls setFlag(..., persist=true)).
|
|
329
|
+
}
|
|
330
|
+
return () => {
|
|
331
|
+
stopped = true;
|
|
332
|
+
if (debounceTimer) {
|
|
333
|
+
clearTimeout(debounceTimer);
|
|
334
|
+
debounceTimer = null;
|
|
335
|
+
}
|
|
336
|
+
if (watcher) {
|
|
337
|
+
try {
|
|
338
|
+
watcher.close();
|
|
339
|
+
}
|
|
340
|
+
catch {
|
|
341
|
+
/* ignore */
|
|
342
|
+
}
|
|
343
|
+
watcher = null;
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
}
|
|
190
347
|
// ============================================================================
|
|
191
348
|
// Kill Switch Helpers
|
|
192
349
|
// ============================================================================
|
|
@@ -198,11 +355,18 @@ export function isWriteKillSwitchActive() {
|
|
|
198
355
|
}
|
|
199
356
|
/**
|
|
200
357
|
* Assert write is allowed — throws if kill switch is active.
|
|
358
|
+
*
|
|
359
|
+
* The thrown error carries `code: "kill_switch_blocked"` so the recipe
|
|
360
|
+
* runner can categorise the resulting halt as `kill_switch` (rather than
|
|
361
|
+
* a generic `tool_threw`) and the dashboard pill row can flag it
|
|
362
|
+
* distinctly from real tool failures.
|
|
201
363
|
*/
|
|
202
364
|
export function assertWriteAllowed(operation) {
|
|
203
365
|
if (isWriteKillSwitchActive()) {
|
|
204
|
-
|
|
366
|
+
const err = new Error(`Write operation blocked by kill switch: ${operation}. ` +
|
|
205
367
|
`Unset PATCHWORK_FLAG_KILL_SWITCH_WRITES or set kill-switch.writes=false to restore.`);
|
|
368
|
+
err.code = "kill_switch_blocked";
|
|
369
|
+
throw err;
|
|
206
370
|
}
|
|
207
371
|
}
|
|
208
372
|
//# sourceMappingURL=featureFlags.js.map
|
package/dist/featureFlags.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"featureFlags.js","sourceRoot":"","sources":["../src/featureFlags.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"featureFlags.js","sourceRoot":"","sources":["../src/featureFlags.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,13 @@ export declare function primaryValue(hookType: HookType, eventData: Readonly<Rec
|
|
|
25
25
|
* Resolve a PromptSourceNode to a string.
|
|
26
26
|
* For named prompts, calls getPrompt() and concatenates user messages.
|
|
27
27
|
* Returns null if a named prompt cannot be resolved (unknown name / missing args).
|
|
28
|
+
*
|
|
29
|
+
* When `source.kind === "none"`, returns the symbol `NO_PROMPT` so callers
|
|
30
|
+
* can distinguish "no inline prompt configured" (webhook-only hook) from
|
|
31
|
+
* "named prompt failed to resolve" (skip silently).
|
|
28
32
|
*/
|
|
33
|
+
export declare const NO_PROMPT: unique symbol;
|
|
34
|
+
export type ResolvedPrompt = string | null | typeof NO_PROMPT;
|
|
29
35
|
export declare function resolvePromptSource(source: {
|
|
30
36
|
kind: "inline";
|
|
31
37
|
prompt: string;
|
|
@@ -33,5 +39,7 @@ export declare function resolvePromptSource(source: {
|
|
|
33
39
|
kind: "named";
|
|
34
40
|
promptName: string;
|
|
35
41
|
promptArgs?: Record<string, string>;
|
|
36
|
-
}
|
|
42
|
+
} | {
|
|
43
|
+
kind: "none";
|
|
44
|
+
}, eventData: Readonly<Record<string, string>>): ResolvedPrompt;
|
|
37
45
|
export declare function executeAutomationPolicy(programs: AutomationProgram[], ctx: InterpreterContext): Promise<ToolResult<InterpreterResult>>;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import crypto from "node:crypto";
|
|
7
7
|
import { minimatch } from "minimatch";
|
|
8
8
|
import { getPrompt } from "../prompts.js";
|
|
9
|
-
import { clearPendingRetry, isDeduped, isOnCooldown, recordDedup, recordPendingRetry, recordTrigger, tasksInLastHour, } from "./automationState.js";
|
|
9
|
+
import { clearPendingRetry, isDeduped, isOnCooldown, recordDedup, recordPendingRetry, recordTrigger, recordWebhookFired, tasksInLastHour, } from "./automationState.js";
|
|
10
10
|
import { buildHookMetadata, truncatePrompt, untrustedBlock, } from "./automationUtils.js";
|
|
11
11
|
import { err, ok } from "./result.js";
|
|
12
12
|
function emptyAcc(state) {
|
|
@@ -126,8 +126,15 @@ export function primaryValue(hookType, eventData) {
|
|
|
126
126
|
* Resolve a PromptSourceNode to a string.
|
|
127
127
|
* For named prompts, calls getPrompt() and concatenates user messages.
|
|
128
128
|
* Returns null if a named prompt cannot be resolved (unknown name / missing args).
|
|
129
|
+
*
|
|
130
|
+
* When `source.kind === "none"`, returns the symbol `NO_PROMPT` so callers
|
|
131
|
+
* can distinguish "no inline prompt configured" (webhook-only hook) from
|
|
132
|
+
* "named prompt failed to resolve" (skip silently).
|
|
129
133
|
*/
|
|
134
|
+
export const NO_PROMPT = Symbol("no-prompt");
|
|
130
135
|
export function resolvePromptSource(source, eventData) {
|
|
136
|
+
if (source.kind === "none")
|
|
137
|
+
return NO_PROMPT;
|
|
131
138
|
if (source.kind === "inline")
|
|
132
139
|
return source.prompt;
|
|
133
140
|
// Substitute event placeholders into promptArgs values
|
|
@@ -311,33 +318,98 @@ async function interpret(program, ctx, acc) {
|
|
|
311
318
|
],
|
|
312
319
|
};
|
|
313
320
|
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
321
|
+
// When promptTemplate is a string, enqueue a Claude task. When it is
|
|
322
|
+
// NO_PROMPT, the hook is webhook-only — skip the enqueue but still
|
|
323
|
+
// proceed to webhook fan-out below. A webhook-only hook still records
|
|
324
|
+
// a trigger in state so cooldown gating can observe its firing.
|
|
325
|
+
let working = acc;
|
|
326
|
+
if (promptTemplate !== NO_PROMPT) {
|
|
327
|
+
const nonce = crypto.randomBytes(8).toString("hex");
|
|
328
|
+
const finalPrompt = buildFinalPrompt(promptTemplate, program.hookType, ctx.eventData, nonce);
|
|
329
|
+
try {
|
|
330
|
+
const taskId = await ctx.backend.enqueueTask({
|
|
331
|
+
prompt: finalPrompt,
|
|
332
|
+
triggerSource: program.hookType,
|
|
333
|
+
sessionId: "",
|
|
334
|
+
isAutomationTask: true,
|
|
335
|
+
model: program.model,
|
|
336
|
+
effort: program.effort,
|
|
337
|
+
systemPrompt: program.systemPrompt,
|
|
338
|
+
});
|
|
339
|
+
const newState = recordTrigger(working.state, program.hookType, taskId, ctx.now);
|
|
340
|
+
working = {
|
|
341
|
+
...working,
|
|
342
|
+
taskIds: [...working.taskIds, taskId],
|
|
343
|
+
state: newState,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
catch (e) {
|
|
347
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
348
|
+
ctx.log(`[interpreter] hook ${program.hookType} enqueue failed: ${message}`);
|
|
349
|
+
return {
|
|
350
|
+
...working,
|
|
351
|
+
errors: [...working.errors, { message, hook: program.hookType }],
|
|
352
|
+
};
|
|
353
|
+
}
|
|
332
354
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
355
|
+
// Webhook fan-out — runs AFTER the inline prompt enqueue (if any).
|
|
356
|
+
// Failures are recorded as interpreter errors and do not throw, so
|
|
357
|
+
// other hooks in the same run continue to fire. Always records
|
|
358
|
+
// `lastWebhookFiredAt` regardless of HTTP outcome — operators
|
|
359
|
+
// debugging webhook delivery want "we attempted X" telemetry.
|
|
360
|
+
if (program.webhook) {
|
|
361
|
+
const phase = program.hookType === "onPreCompact"
|
|
362
|
+
? "pre"
|
|
363
|
+
: program.hookType === "onPostCompact"
|
|
364
|
+
? "post"
|
|
365
|
+
: undefined;
|
|
366
|
+
const body = {
|
|
367
|
+
hookType: program.hookType,
|
|
368
|
+
timestamp: ctx.now,
|
|
369
|
+
...ctx.eventData,
|
|
339
370
|
};
|
|
371
|
+
if (phase)
|
|
372
|
+
body.phase = phase;
|
|
373
|
+
try {
|
|
374
|
+
const result = await ctx.backend.postWebhook({
|
|
375
|
+
url: program.webhook.url,
|
|
376
|
+
method: program.webhook.method ?? "POST",
|
|
377
|
+
headers: program.webhook.headers ?? {},
|
|
378
|
+
body,
|
|
379
|
+
hookKey: program.hookType,
|
|
380
|
+
});
|
|
381
|
+
working = {
|
|
382
|
+
...working,
|
|
383
|
+
state: recordWebhookFired(working.state, program.hookType, ctx.now),
|
|
384
|
+
};
|
|
385
|
+
if (!result.ok) {
|
|
386
|
+
const message = `webhook fan-out failed: ${result.error ?? "unknown"}${result.status !== undefined ? ` (status=${result.status})` : ""}`;
|
|
387
|
+
ctx.log(`[interpreter] hook ${program.hookType} ${message}`);
|
|
388
|
+
working = {
|
|
389
|
+
...working,
|
|
390
|
+
errors: [...working.errors, { message, hook: program.hookType }],
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
catch (e) {
|
|
395
|
+
// Defensive: postWebhook contract is "never rejects", but a buggy
|
|
396
|
+
// backend could still throw. Log + record but do not propagate.
|
|
397
|
+
const message = e instanceof Error ? e.message : String(e);
|
|
398
|
+
ctx.log(`[interpreter] hook ${program.hookType} webhook threw: ${message}`);
|
|
399
|
+
working = {
|
|
400
|
+
...working,
|
|
401
|
+
state: recordWebhookFired(working.state, program.hookType, ctx.now),
|
|
402
|
+
errors: [
|
|
403
|
+
...working.errors,
|
|
404
|
+
{
|
|
405
|
+
message: `webhook fan-out threw: ${message}`,
|
|
406
|
+
hook: program.hookType,
|
|
407
|
+
},
|
|
408
|
+
],
|
|
409
|
+
};
|
|
410
|
+
}
|
|
340
411
|
}
|
|
412
|
+
return working;
|
|
341
413
|
}
|
|
342
414
|
case "Sequence": {
|
|
343
415
|
let current = acc;
|
|
@@ -392,13 +464,26 @@ async function interpret(program, ctx, acc) {
|
|
|
392
464
|
};
|
|
393
465
|
}
|
|
394
466
|
const innerAcc = await interpret(program.program, ctx, acc);
|
|
395
|
-
// If we produced new task IDs, record the cooldown trigger
|
|
467
|
+
// If we produced new task IDs, record the cooldown trigger.
|
|
468
|
+
// For webhook-only hooks (kind: "none") no taskId is produced, but the
|
|
469
|
+
// webhook firing still counts as a trigger — detected via a delta in
|
|
470
|
+
// `lastWebhookFiredAt`. Without this branch, cooldowns never apply to
|
|
471
|
+
// webhook-only hooks, defeating the cooldown gate the operator
|
|
472
|
+
// configured.
|
|
396
473
|
const newTaskIds = innerAcc.taskIds.slice(acc.taskIds.length);
|
|
474
|
+
const webhookFired = innerAcc.state.lastWebhookFiredAt.size >
|
|
475
|
+
acc.state.lastWebhookFiredAt.size ||
|
|
476
|
+
// Same key was already in the map but timestamp moved forward
|
|
477
|
+
Array.from(innerAcc.state.lastWebhookFiredAt.entries()).some(([k, v]) => (acc.state.lastWebhookFiredAt.get(k) ?? -1) < v);
|
|
397
478
|
if (newTaskIds.length > 0) {
|
|
398
479
|
const lastTaskId = newTaskIds[newTaskIds.length - 1] ?? "";
|
|
399
480
|
const newState = recordTrigger(innerAcc.state, program.key, lastTaskId, ctx.now);
|
|
400
481
|
return { ...innerAcc, state: newState };
|
|
401
482
|
}
|
|
483
|
+
if (webhookFired) {
|
|
484
|
+
const newState = recordTrigger(innerAcc.state, program.key, "webhook", ctx.now);
|
|
485
|
+
return { ...innerAcc, state: newState };
|
|
486
|
+
}
|
|
402
487
|
return innerAcc;
|
|
403
488
|
}
|
|
404
489
|
case "WithDedup": {
|
|
@@ -451,28 +536,60 @@ async function interpret(program, ctx, acc) {
|
|
|
451
536
|
if (attempt < program.maxRetries) {
|
|
452
537
|
const nextAttempt = attempt + 1;
|
|
453
538
|
const nextRetryAt = ctx.now + program.retryDelayMs;
|
|
454
|
-
// Schedule retry: re-
|
|
455
|
-
// fires.
|
|
456
|
-
//
|
|
457
|
-
//
|
|
539
|
+
// Schedule retry: re-run the wrapped program when the timer
|
|
540
|
+
// fires. The work runs INSIDE AutomationHooks' mutation lock
|
|
541
|
+
// (`runRetryUnderLock`) so:
|
|
542
|
+
// 1. Read of live state is atomic w.r.t. concurrent _runInterpreter
|
|
543
|
+
// calls — the retry sees their cooldown / dedup / rateLimit
|
|
544
|
+
// writes, can't clobber them.
|
|
545
|
+
// 2. Write of post-retry state is atomic w.r.t. the same chain,
|
|
546
|
+
// so the retry's effects can't be lost to a concurrent run
|
|
547
|
+
// that started between scheduling and merge.
|
|
548
|
+
// 3. `clearPendingRetry` is in a try/finally so the
|
|
549
|
+
// pendingRetries entry is dropped even if the inner
|
|
550
|
+
// interpret() throws (otherwise the retry leaks the entry
|
|
551
|
+
// forever).
|
|
552
|
+
//
|
|
553
|
+
// TestBackend records the call but does not actually fire the timer.
|
|
554
|
+
// Tests that exercise retry dispatch synchronously override
|
|
555
|
+
// `scheduleRetry`.
|
|
458
556
|
const wrappedProgram = program.program;
|
|
459
557
|
const retrySnapshot = innerAcc.state;
|
|
558
|
+
const liveStateFn = ctx.getLiveState;
|
|
559
|
+
const runUnderLock = ctx.runRetryUnderLock;
|
|
460
560
|
ctx.backend.scheduleRetry(program.key, program.retryDelayMs, () => {
|
|
461
561
|
ctx.log(`[interpreter] retry attempt ${nextAttempt} for ${program.key}`);
|
|
462
|
-
|
|
562
|
+
const doRetry = async (live) => {
|
|
463
563
|
try {
|
|
464
564
|
const retryCtx = {
|
|
465
565
|
...ctx,
|
|
466
|
-
state:
|
|
566
|
+
state: live,
|
|
467
567
|
now: Date.now(),
|
|
468
568
|
};
|
|
469
|
-
await interpret(wrappedProgram, retryCtx, emptyAcc(
|
|
569
|
+
const retryResult = await interpret(wrappedProgram, retryCtx, emptyAcc(live));
|
|
570
|
+
return clearPendingRetry(retryResult.state, program.key);
|
|
470
571
|
}
|
|
471
572
|
catch (e) {
|
|
472
573
|
const m = e instanceof Error ? e.message : String(e);
|
|
473
574
|
ctx.log(`[interpreter] retry ${program.key} failed: ${m}`);
|
|
575
|
+
// Drop the pending entry even on error — leaving it would
|
|
576
|
+
// make `pendingRetries.get(key)` look truthy forever.
|
|
577
|
+
return clearPendingRetry(live, program.key);
|
|
474
578
|
}
|
|
475
|
-
}
|
|
579
|
+
};
|
|
580
|
+
if (runUnderLock) {
|
|
581
|
+
runUnderLock(doRetry);
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
// Fallback for tests that didn't supply a lock executor:
|
|
585
|
+
// run against the snapshot (or live read if available),
|
|
586
|
+
// discard result. Not atomic, but tests don't observe the
|
|
587
|
+
// chain anyway.
|
|
588
|
+
void (async () => {
|
|
589
|
+
const seed = liveStateFn ? liveStateFn() : retrySnapshot;
|
|
590
|
+
await doRetry(seed);
|
|
591
|
+
})();
|
|
592
|
+
}
|
|
476
593
|
});
|
|
477
594
|
const newState = recordPendingRetry(innerAcc.state, program.key, nextAttempt, nextRetryAt, "");
|
|
478
595
|
return { ...innerAcc, state: newState };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automationInterpreter.js","sourceRoot":"","sources":["../../src/fp/automationInterpreter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"automationInterpreter.js","sourceRoot":"","sources":["../../src/fp/automationInterpreter.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,14 @@ export type PromptSourceNode = {
|
|
|
12
12
|
readonly kind: "named";
|
|
13
13
|
readonly promptName: string;
|
|
14
14
|
readonly promptArgs?: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Webhook-only hook entry — no inline prompt, no task enqueue. The hook
|
|
18
|
+
* still flows through cooldown/dedup/rateLimit gates and fires its
|
|
19
|
+
* `webhook` (if configured) on the success path.
|
|
20
|
+
*/
|
|
21
|
+
| {
|
|
22
|
+
readonly kind: "none";
|
|
15
23
|
};
|
|
16
24
|
export interface WhenCondition {
|
|
17
25
|
readonly minDiagnosticCount?: number;
|
|
@@ -34,6 +42,22 @@ export interface TestRunExtras {
|
|
|
34
42
|
export type HookExtras = DiagnosticsErrorExtras | TestRunExtras | {
|
|
35
43
|
readonly kind: "none";
|
|
36
44
|
};
|
|
45
|
+
/**
|
|
46
|
+
* Outbound webhook configuration for an automation hook.
|
|
47
|
+
*
|
|
48
|
+
* When attached to a HookNode, the interpreter POSTs (or sends via the chosen
|
|
49
|
+
* method) a JSON body to `url` AFTER any inline prompt has been enqueued. The
|
|
50
|
+
* body shape is `{ phase, timestamp, hookType, ...eventData }` for v1.
|
|
51
|
+
*
|
|
52
|
+
* Failure modes (timeout, non-2xx, network error) are recorded and logged
|
|
53
|
+
* via the Backend, never thrown — webhook fan-out is always best-effort and
|
|
54
|
+
* does not block other hooks or the prompt enqueue.
|
|
55
|
+
*/
|
|
56
|
+
export interface WebhookConfig {
|
|
57
|
+
readonly url: string;
|
|
58
|
+
readonly method?: "POST" | "PUT" | "PATCH";
|
|
59
|
+
readonly headers?: Readonly<Record<string, string>>;
|
|
60
|
+
}
|
|
37
61
|
export interface HookNode {
|
|
38
62
|
readonly _tag: "Hook";
|
|
39
63
|
readonly hookType: HookType;
|
|
@@ -46,6 +70,12 @@ export interface HookNode {
|
|
|
46
70
|
readonly effort?: "low" | "medium" | "high" | "max";
|
|
47
71
|
readonly systemPrompt?: string;
|
|
48
72
|
readonly extras?: HookExtras;
|
|
73
|
+
/**
|
|
74
|
+
* Optional outbound webhook fired AFTER the inline prompt enqueue. Wired
|
|
75
|
+
* for `onCompaction` (onPreCompact/onPostCompact) only in v1; other hook
|
|
76
|
+
* types may opt in later by widening the parser. See ADR-0009.
|
|
77
|
+
*/
|
|
78
|
+
readonly webhook?: WebhookConfig;
|
|
49
79
|
}
|
|
50
80
|
export interface SequenceNode {
|
|
51
81
|
readonly _tag: "Sequence";
|