wicked-crew 0.7.39 → 0.7.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/audit.d.ts +3 -0
- package/dist/api/audit.d.ts.map +1 -1
- package/dist/api/audit.js +2 -0
- package/dist/api/audit.js.map +1 -1
- package/dist/api/capture.d.ts +149 -0
- package/dist/api/capture.d.ts.map +1 -0
- package/dist/api/capture.js +330 -0
- package/dist/api/capture.js.map +1 -0
- package/dist/api/chat-citations.d.ts +174 -0
- package/dist/api/chat-citations.d.ts.map +1 -0
- package/dist/api/chat-citations.js +528 -0
- package/dist/api/chat-citations.js.map +1 -0
- package/dist/api/chat-scope.d.ts +37 -1
- package/dist/api/chat-scope.d.ts.map +1 -1
- package/dist/api/chat-scope.js +131 -7
- package/dist/api/chat-scope.js.map +1 -1
- package/dist/api/chat-transcripts.d.ts +20 -1
- package/dist/api/chat-transcripts.d.ts.map +1 -1
- package/dist/api/chat-transcripts.js +29 -0
- package/dist/api/chat-transcripts.js.map +1 -1
- package/dist/api/delivery-cache.d.ts +2 -2
- package/dist/api/delivery-freeze.d.ts +66 -0
- package/dist/api/delivery-freeze.d.ts.map +1 -0
- package/dist/api/delivery-freeze.js +104 -0
- package/dist/api/delivery-freeze.js.map +1 -0
- package/dist/api/delivery-index.d.ts +53 -9
- package/dist/api/delivery-index.d.ts.map +1 -1
- package/dist/api/delivery-index.js +115 -22
- package/dist/api/delivery-index.js.map +1 -1
- package/dist/api/demo.d.ts +90 -0
- package/dist/api/demo.d.ts.map +1 -0
- package/dist/api/demo.js +492 -0
- package/dist/api/demo.js.map +1 -0
- package/dist/api/diagnostics.d.ts +64 -1
- package/dist/api/diagnostics.d.ts.map +1 -1
- package/dist/api/diagnostics.js +129 -1
- package/dist/api/diagnostics.js.map +1 -1
- package/dist/api/eval-sample.d.ts +6 -6
- package/dist/api/governance-steering.d.ts +2 -2
- package/dist/api/mcp.d.ts +282 -0
- package/dist/api/mcp.d.ts.map +1 -0
- package/dist/api/mcp.js +521 -0
- package/dist/api/mcp.js.map +1 -0
- package/dist/api/plan-schema.d.ts +56 -0
- package/dist/api/plan-schema.d.ts.map +1 -0
- package/dist/api/plan-schema.js +26 -0
- package/dist/api/plan-schema.js.map +1 -0
- package/dist/api/roster-standing.d.ts +15 -2
- package/dist/api/roster-standing.d.ts.map +1 -1
- package/dist/api/roster-standing.js +55 -3
- package/dist/api/roster-standing.js.map +1 -1
- package/dist/api/routes.d.ts +647 -59
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +906 -146
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-files.d.ts.map +1 -1
- package/dist/api/run-files.js +31 -2
- package/dist/api/run-files.js.map +1 -1
- package/dist/api/run-liveness.d.ts +41 -0
- package/dist/api/run-liveness.d.ts.map +1 -0
- package/dist/api/run-liveness.js +166 -0
- package/dist/api/run-liveness.js.map +1 -0
- package/dist/api/run-timing-index.d.ts +10 -0
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +24 -0
- package/dist/api/run-timing-index.js.map +1 -1
- package/dist/api/seat-health.d.ts.map +1 -1
- package/dist/api/seat-health.js +20 -4
- package/dist/api/seat-health.js.map +1 -1
- package/dist/api/seat-probe.d.ts +141 -0
- package/dist/api/seat-probe.d.ts.map +1 -0
- package/dist/api/seat-probe.js +257 -0
- package/dist/api/seat-probe.js.map +1 -0
- package/dist/api/seat-record.d.ts +40 -0
- package/dist/api/seat-record.d.ts.map +1 -0
- package/dist/api/seat-record.js +218 -0
- package/dist/api/seat-record.js.map +1 -0
- package/dist/api/seat-signin.d.ts.map +1 -1
- package/dist/api/seat-signin.js +3 -1
- package/dist/api/seat-signin.js.map +1 -1
- package/dist/api/seat-standing.d.ts +24 -4
- package/dist/api/seat-standing.d.ts.map +1 -1
- package/dist/api/seat-standing.js +50 -3
- package/dist/api/seat-standing.js.map +1 -1
- package/dist/api/server.d.ts +34 -48
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +316 -116
- package/dist/api/server.js.map +1 -1
- package/dist/api/skills.d.ts +3 -1
- package/dist/api/skills.d.ts.map +1 -1
- package/dist/api/skills.js +7 -2
- package/dist/api/skills.js.map +1 -1
- package/dist/api/stall-watchdog.d.ts +34 -3
- package/dist/api/stall-watchdog.d.ts.map +1 -1
- package/dist/api/stall-watchdog.js +107 -8
- package/dist/api/stall-watchdog.js.map +1 -1
- package/dist/api/steering-landing.d.ts +6 -6
- package/dist/api/steering-landing.d.ts.map +1 -1
- package/dist/api/steering-landing.js +7 -9
- package/dist/api/steering-landing.js.map +1 -1
- package/dist/api/testing.d.ts +6 -4
- package/dist/api/testing.d.ts.map +1 -1
- package/dist/api/testing.js +82 -47
- package/dist/api/testing.js.map +1 -1
- package/dist/campaign/boot-resume.d.ts +34 -0
- package/dist/campaign/boot-resume.d.ts.map +1 -0
- package/dist/campaign/boot-resume.js +45 -0
- package/dist/campaign/boot-resume.js.map +1 -0
- package/dist/campaigns/rollup.d.ts +4 -1
- package/dist/campaigns/rollup.d.ts.map +1 -1
- package/dist/campaigns/rollup.js +6 -1
- package/dist/campaigns/rollup.js.map +1 -1
- package/dist/campaigns/routes.d.ts +2 -2
- package/dist/cli/bearer.d.ts +27 -1
- package/dist/cli/bearer.d.ts.map +1 -1
- package/dist/cli/bearer.js +62 -2
- package/dist/cli/bearer.js.map +1 -1
- package/dist/cli/governance.d.ts +11 -0
- package/dist/cli/governance.d.ts.map +1 -1
- package/dist/cli/governance.js +8 -2
- package/dist/cli/governance.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +140 -75
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp.d.ts +11 -0
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +40 -9
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/service.d.ts +78 -0
- package/dist/cli/service.d.ts.map +1 -0
- package/dist/cli/service.js +334 -0
- package/dist/cli/service.js.map +1 -0
- package/dist/core/adapter.d.ts +247 -14
- package/dist/core/adapter.d.ts.map +1 -1
- package/dist/core/adapter.js +638 -161
- package/dist/core/adapter.js.map +1 -1
- package/dist/core/bridge-reaper.d.ts +4 -1
- package/dist/core/bridge-reaper.d.ts.map +1 -1
- package/dist/core/bridge-reaper.js +15 -1
- package/dist/core/bridge-reaper.js.map +1 -1
- package/dist/core/bus-notice.d.ts +27 -0
- package/dist/core/bus-notice.d.ts.map +1 -0
- package/dist/core/bus-notice.js +24 -0
- package/dist/core/bus-notice.js.map +1 -0
- package/dist/core/bus.d.ts +99 -0
- package/dist/core/bus.d.ts.map +1 -0
- package/dist/core/bus.js +176 -0
- package/dist/core/bus.js.map +1 -0
- package/dist/core/deliver-exclusions.d.ts +71 -0
- package/dist/core/deliver-exclusions.d.ts.map +1 -0
- package/dist/core/deliver-exclusions.js +110 -0
- package/dist/core/deliver-exclusions.js.map +1 -0
- package/dist/core/deliver-text.d.ts +61 -14
- package/dist/core/deliver-text.d.ts.map +1 -1
- package/dist/core/deliver-text.js +178 -30
- package/dist/core/deliver-text.js.map +1 -1
- package/dist/core/deliver-triage.d.ts +11 -2
- package/dist/core/deliver-triage.d.ts.map +1 -1
- package/dist/core/deliver-triage.js +19 -1
- package/dist/core/deliver-triage.js.map +1 -1
- package/dist/core/deliver.d.ts +161 -3
- package/dist/core/deliver.d.ts.map +1 -1
- package/dist/core/deliver.js +463 -25
- package/dist/core/deliver.js.map +1 -1
- package/dist/core/deliverable-floor.d.ts.map +1 -1
- package/dist/core/deliverable-floor.js +5 -7
- package/dist/core/deliverable-floor.js.map +1 -1
- package/dist/core/engine-bus.d.ts +40 -0
- package/dist/core/engine-bus.d.ts.map +1 -0
- package/dist/core/engine-bus.js +27 -0
- package/dist/core/engine-bus.js.map +1 -0
- package/dist/core/estate-mcp-client.d.ts +87 -5
- package/dist/core/estate-mcp-client.d.ts.map +1 -1
- package/dist/core/estate-mcp-client.js +90 -11
- package/dist/core/estate-mcp-client.js.map +1 -1
- package/dist/core/linked-issues.d.ts +46 -0
- package/dist/core/linked-issues.d.ts.map +1 -0
- package/dist/core/linked-issues.js +123 -0
- package/dist/core/linked-issues.js.map +1 -0
- package/dist/core/run-identity.d.ts +100 -0
- package/dist/core/run-identity.d.ts.map +1 -0
- package/dist/core/run-identity.js +178 -0
- package/dist/core/run-identity.js.map +1 -0
- package/dist/core/shutdown.d.ts +16 -0
- package/dist/core/shutdown.d.ts.map +1 -0
- package/dist/core/shutdown.js +39 -0
- package/dist/core/shutdown.js.map +1 -0
- package/dist/core/types.d.ts +15 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +4 -0
- package/dist/core/types.js.map +1 -1
- package/dist/interactive/bridge-pool.d.ts +67 -3
- package/dist/interactive/bridge-pool.d.ts.map +1 -1
- package/dist/interactive/bridge-pool.js +129 -13
- package/dist/interactive/bridge-pool.js.map +1 -1
- package/dist/interactive/bridge-root.d.ts +9 -0
- package/dist/interactive/bridge-root.d.ts.map +1 -1
- package/dist/interactive/bridge-root.js +11 -4
- package/dist/interactive/bridge-root.js.map +1 -1
- package/dist/interactive/chat-events.d.ts +14 -9
- package/dist/interactive/chat-events.d.ts.map +1 -1
- package/dist/interactive/chat-events.js +55 -57
- package/dist/interactive/chat-events.js.map +1 -1
- package/dist/interactive/council-outcome.d.ts +1 -0
- package/dist/interactive/council-outcome.d.ts.map +1 -1
- package/dist/interactive/council-outcome.js +33 -0
- package/dist/interactive/council-outcome.js.map +1 -1
- package/dist/interactive/draft-events.d.ts +36 -17
- package/dist/interactive/draft-events.d.ts.map +1 -1
- package/dist/interactive/draft-events.js +121 -92
- package/dist/interactive/draft-events.js.map +1 -1
- package/dist/interactive/draft-skill.d.ts +59 -0
- package/dist/interactive/draft-skill.d.ts.map +1 -1
- package/dist/interactive/draft-skill.js +233 -0
- package/dist/interactive/draft-skill.js.map +1 -1
- package/dist/interactive/edit-events.d.ts +1 -14
- package/dist/interactive/edit-events.d.ts.map +1 -1
- package/dist/interactive/edit-events.js +37 -70
- package/dist/interactive/edit-events.js.map +1 -1
- package/dist/interactive/proxy-routes.d.ts +2 -2
- package/dist/interactive/proxy-routes.d.ts.map +1 -1
- package/dist/interactive/proxy-routes.js +4 -13
- package/dist/interactive/proxy-routes.js.map +1 -1
- package/dist/interactive/ws-relay.d.ts +9 -10
- package/dist/interactive/ws-relay.d.ts.map +1 -1
- package/dist/interactive/ws-relay.js +23 -50
- package/dist/interactive/ws-relay.js.map +1 -1
- package/dist/mcp/broker.d.ts +88 -0
- package/dist/mcp/broker.d.ts.map +1 -0
- package/dist/mcp/broker.js +307 -0
- package/dist/mcp/broker.js.map +1 -0
- package/dist/mcp/call-records.d.ts +61 -0
- package/dist/mcp/call-records.d.ts.map +1 -0
- package/dist/mcp/call-records.js +135 -0
- package/dist/mcp/call-records.js.map +1 -0
- package/dist/mcp/classify.d.ts +45 -0
- package/dist/mcp/classify.d.ts.map +1 -0
- package/dist/mcp/classify.js +83 -0
- package/dist/mcp/classify.js.map +1 -0
- package/dist/mcp/discovery.d.ts +24 -0
- package/dist/mcp/discovery.d.ts.map +1 -0
- package/dist/mcp/discovery.js +78 -0
- package/dist/mcp/discovery.js.map +1 -0
- package/dist/mcp/invoke.d.ts +36 -0
- package/dist/mcp/invoke.d.ts.map +1 -0
- package/dist/mcp/invoke.js +80 -0
- package/dist/mcp/invoke.js.map +1 -0
- package/dist/mcp/policies.d.ts +110 -0
- package/dist/mcp/policies.d.ts.map +1 -0
- package/dist/mcp/policies.js +400 -0
- package/dist/mcp/policies.js.map +1 -0
- package/dist/mcp/probe.d.ts +66 -0
- package/dist/mcp/probe.d.ts.map +1 -0
- package/dist/mcp/probe.js +116 -0
- package/dist/mcp/probe.js.map +1 -0
- package/dist/mcp/redact.d.ts +34 -0
- package/dist/mcp/redact.d.ts.map +1 -0
- package/dist/mcp/redact.js +84 -0
- package/dist/mcp/redact.js.map +1 -0
- package/dist/mcp/registry-store.d.ts +69 -0
- package/dist/mcp/registry-store.d.ts.map +1 -0
- package/dist/mcp/registry-store.js +82 -0
- package/dist/mcp/registry-store.js.map +1 -0
- package/dist/mcp/registry.d.ts +147 -0
- package/dist/mcp/registry.d.ts.map +1 -0
- package/dist/mcp/registry.js +509 -0
- package/dist/mcp/registry.js.map +1 -0
- package/dist/mcp/rest.d.ts +111 -0
- package/dist/mcp/rest.d.ts.map +1 -0
- package/dist/mcp/rest.js +606 -0
- package/dist/mcp/rest.js.map +1 -0
- package/dist/mcp/secrets.d.ts +66 -0
- package/dist/mcp/secrets.d.ts.map +1 -0
- package/dist/mcp/secrets.js +180 -0
- package/dist/mcp/secrets.js.map +1 -0
- package/dist/mcp/tool-list.d.ts +25 -0
- package/dist/mcp/tool-list.d.ts.map +1 -0
- package/dist/mcp/tool-list.js +62 -0
- package/dist/mcp/tool-list.js.map +1 -0
- package/dist/mcp/upstream-error.d.ts +12 -0
- package/dist/mcp/upstream-error.d.ts.map +1 -0
- package/dist/mcp/upstream-error.js +14 -0
- package/dist/mcp/upstream-error.js.map +1 -0
- package/dist/mcp/usage.d.ts +31 -0
- package/dist/mcp/usage.d.ts.map +1 -0
- package/dist/mcp/usage.js +159 -0
- package/dist/mcp/usage.js.map +1 -0
- package/dist/presets/routes.d.ts +53 -0
- package/dist/presets/routes.d.ts.map +1 -0
- package/dist/presets/routes.js +115 -0
- package/dist/presets/routes.js.map +1 -0
- package/dist/projects/activity.d.ts +6 -18
- package/dist/projects/activity.d.ts.map +1 -1
- package/dist/projects/activity.js +17 -60
- package/dist/projects/activity.js.map +1 -1
- package/dist/projects/events.d.ts +6 -5
- package/dist/projects/events.d.ts.map +1 -1
- package/dist/projects/events.js +33 -58
- package/dist/projects/events.js.map +1 -1
- package/dist/projects/graph.d.ts +11 -0
- package/dist/projects/graph.d.ts.map +1 -1
- package/dist/projects/graph.js +12 -0
- package/dist/projects/graph.js.map +1 -1
- package/dist/projects/routes.d.ts.map +1 -1
- package/dist/projects/routes.js +19 -0
- package/dist/projects/routes.js.map +1 -1
- package/dist/projects/state-home-preflight.d.ts.map +1 -1
- package/dist/projects/state-home-preflight.js +7 -0
- package/dist/projects/state-home-preflight.js.map +1 -1
- package/dist/projects/state-home-registry.d.ts.map +1 -1
- package/dist/projects/state-home-registry.js +9 -1
- package/dist/projects/state-home-registry.js.map +1 -1
- package/dist/qe/acceptance.d.ts +28 -28
- package/dist/qe/acceptance.d.ts.map +1 -1
- package/dist/qe/acceptance.js +60 -61
- package/dist/qe/acceptance.js.map +1 -1
- package/dist/qe/test-sets.d.ts +3 -5
- package/dist/qe/test-sets.d.ts.map +1 -1
- package/dist/qe/test-sets.js +5 -7
- package/dist/qe/test-sets.js.map +1 -1
- package/dist/skills/installed.d.ts +51 -0
- package/dist/skills/installed.d.ts.map +1 -0
- package/dist/skills/installed.js +46 -0
- package/dist/skills/installed.js.map +1 -0
- package/dist/skills/phase-skill-gaps.d.ts +108 -0
- package/dist/skills/phase-skill-gaps.d.ts.map +1 -0
- package/dist/skills/phase-skill-gaps.js +199 -0
- package/dist/skills/phase-skill-gaps.js.map +1 -0
- package/dist/skills/runtime.d.ts +1 -1
- package/dist/skills/runtime.d.ts.map +1 -1
- package/dist/skills/runtime.js +2 -1
- package/dist/skills/runtime.js.map +1 -1
- package/dist/standing-orders/evaluator.d.ts +113 -0
- package/dist/standing-orders/evaluator.d.ts.map +1 -0
- package/dist/standing-orders/evaluator.js +225 -0
- package/dist/standing-orders/evaluator.js.map +1 -0
- package/dist/standing-orders/history.d.ts +58 -0
- package/dist/standing-orders/history.d.ts.map +1 -0
- package/dist/standing-orders/history.js +117 -0
- package/dist/standing-orders/history.js.map +1 -0
- package/dist/standing-orders/parse.d.ts +19 -0
- package/dist/standing-orders/parse.d.ts.map +1 -0
- package/dist/standing-orders/parse.js +75 -0
- package/dist/standing-orders/parse.js.map +1 -0
- package/dist/standing-orders/routes.d.ts +180 -0
- package/dist/standing-orders/routes.d.ts.map +1 -0
- package/dist/standing-orders/routes.js +95 -0
- package/dist/standing-orders/routes.js.map +1 -0
- package/dist/standing-orders/store.d.ts +154 -0
- package/dist/standing-orders/store.d.ts.map +1 -0
- package/dist/standing-orders/store.js +189 -0
- package/dist/standing-orders/store.js.map +1 -0
- package/dist/studio/assets/index-CvV5qITf.css +32 -0
- package/dist/studio/assets/index-jCOy6Ns7.js +568 -0
- package/dist/studio/index.html +3 -3
- package/dist/studio/testid-inventory.json +3307 -897
- package/dist/team/key.d.ts +5 -0
- package/dist/team/key.d.ts.map +1 -0
- package/dist/team/key.js +21 -0
- package/dist/team/key.js.map +1 -0
- package/dist/team/routes.d.ts +196 -0
- package/dist/team/routes.d.ts.map +1 -0
- package/dist/team/routes.js +274 -0
- package/dist/team/routes.js.map +1 -0
- package/dist/team/ws-relay.d.ts +39 -0
- package/dist/team/ws-relay.d.ts.map +1 -0
- package/dist/team/ws-relay.js +63 -0
- package/dist/team/ws-relay.js.map +1 -0
- package/endpoint-manifest.json +502 -6
- package/package.json +6 -6
- package/dist/interactive/demo-events.d.ts +0 -367
- package/dist/interactive/demo-events.d.ts.map +0 -1
- package/dist/interactive/demo-events.js +0 -1293
- package/dist/interactive/demo-events.js.map +0 -1
- package/dist/qe/gate-events.d.ts +0 -113
- package/dist/qe/gate-events.d.ts.map +0 -1
- package/dist/qe/gate-events.js +0 -172
- package/dist/qe/gate-events.js.map +0 -1
- package/dist/studio/assets/index-BRDAN35i.js +0 -548
- package/dist/studio/assets/index-Drfcsy8b.css +0 -32
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Freeze deliveries (studio brainstorm idea 15, the SRE stop-the-line) — ONE switch that holds
|
|
3
|
+
* every deliver gate:
|
|
4
|
+
*
|
|
5
|
+
* GET /deliveries/freeze {frozen, since, by, reason}
|
|
6
|
+
* PUT /deliveries/freeze {frozen, reason?} → the same shape; audited
|
|
7
|
+
*
|
|
8
|
+
* While frozen, THE gate decision path (`decideGate` in routes.ts, which standing orders share)
|
|
9
|
+
* refuses an APPROVE of a gate that would run a deliver unit (409 `deliveries_frozen`), and the
|
|
10
|
+
* post-hoc `POST /runs/:id/deliver` refuses too. The gate stays open: unfreezing lets the same
|
|
11
|
+
* approve through. A reject still cancels (it pushes nothing), and no other gate is held.
|
|
12
|
+
*
|
|
13
|
+
* Not held: a run launched with `deliverGate: "auto"` has no gate to hold — the engine pushes it
|
|
14
|
+
* without asking the daemon. The switch stops every push a person or an order would approve.
|
|
15
|
+
*
|
|
16
|
+
* The durable record is the AUDIT TRAIL (`deliveries.frozen {reason?}` / `deliveries.unfrozen`),
|
|
17
|
+
* folded once at boot like the standing orders' away flag, so a restart keeps the freeze. No file
|
|
18
|
+
* under the state home (core's worker fence refuses unregistered top-level entries there).
|
|
19
|
+
*/
|
|
20
|
+
import { z } from 'zod';
|
|
21
|
+
import { API_PREFIX } from './api-prefix.js';
|
|
22
|
+
import { LOCAL_ACTOR } from './auth.js';
|
|
23
|
+
import { DELIVER_PHASE_ID } from '../core/deliver.js';
|
|
24
|
+
const V = API_PREFIX;
|
|
25
|
+
export const DELIVERY_FREEZE_ACTIONS = ['deliveries.frozen', 'deliveries.unfrozen'];
|
|
26
|
+
export const PutDeliveryFreezeSchema = z
|
|
27
|
+
.object({ frozen: z.boolean(), reason: z.string().trim().min(1).max(500).optional() })
|
|
28
|
+
.strict();
|
|
29
|
+
const THAWED = Object.freeze({ frozen: false, since: null, by: null, reason: null });
|
|
30
|
+
/** Whether a unit is a run's deliver step: by phase, by phase id in its unit id, or by catalog id. */
|
|
31
|
+
export function isDeliverUnit(u) {
|
|
32
|
+
if (u.phase_ref === DELIVER_PHASE_ID || u.catalog === DELIVER_PHASE_ID)
|
|
33
|
+
return true;
|
|
34
|
+
const i = u.id.indexOf(':');
|
|
35
|
+
return i >= 0 && u.id.slice(i + 1) === DELIVER_PHASE_ID;
|
|
36
|
+
}
|
|
37
|
+
/** The refusal a held approve answers with. */
|
|
38
|
+
export function frozenRefusal(s) {
|
|
39
|
+
const who = s.by !== null ? ` by ${s.by}` : '';
|
|
40
|
+
const when = s.since !== null ? ` since ${s.since}` : '';
|
|
41
|
+
const why = s.reason !== null ? ` (${s.reason})` : '';
|
|
42
|
+
return {
|
|
43
|
+
error: `Deliveries are frozen${who}${when}${why}: nothing is pushed while the freeze is on. `
|
|
44
|
+
+ 'The gate stays open — unfreeze deliveries, then approve again.',
|
|
45
|
+
code: 'deliveries_frozen',
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export class DeliveryFreeze {
|
|
49
|
+
s = { ...THAWED };
|
|
50
|
+
state() {
|
|
51
|
+
return { ...this.s };
|
|
52
|
+
}
|
|
53
|
+
/** Set the switch; records one audit line when it changes. Returns whether it changed. */
|
|
54
|
+
set(frozen, actor, audit, reason) {
|
|
55
|
+
if (frozen === this.s.frozen)
|
|
56
|
+
return false;
|
|
57
|
+
const ts = audit.record(frozen ? 'deliveries.frozen' : 'deliveries.unfrozen', actor, {
|
|
58
|
+
detail: frozen && reason !== undefined ? { reason } : {},
|
|
59
|
+
});
|
|
60
|
+
this.s = frozen
|
|
61
|
+
? { frozen: true, since: new Date(ts > 0 ? ts : Date.now()).toISOString(), by: actor.id, reason: reason ?? null }
|
|
62
|
+
: { ...THAWED };
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
/** Fold the trail once at boot. A trail that cannot be read leaves the switch off, loudly. */
|
|
66
|
+
async hydrate(trail, log) {
|
|
67
|
+
try {
|
|
68
|
+
const mine = new Set(DELIVERY_FREEZE_ACTIONS);
|
|
69
|
+
// Newest first: the first matching entry is the current state.
|
|
70
|
+
const last = (await trail.readAll()).find((e) => mine.has(e.action));
|
|
71
|
+
if (last === undefined || last.action === 'deliveries.unfrozen') {
|
|
72
|
+
this.s = { ...THAWED };
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const reason = last.detail?.['reason'];
|
|
76
|
+
this.s = {
|
|
77
|
+
frozen: true,
|
|
78
|
+
since: new Date(last.ts).toISOString(),
|
|
79
|
+
by: typeof last.actor?.id === 'string' ? last.actor.id : null,
|
|
80
|
+
reason: typeof reason === 'string' ? reason : null,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
log?.(`[deliveries] freeze hydrate failed — deliveries NOT frozen until restart: ${err instanceof Error ? err.message : String(err)}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function registerDeliveryFreezeRoutes(app, deps) {
|
|
89
|
+
const actorOf = (req) => req.actor ?? LOCAL_ACTOR;
|
|
90
|
+
app.get(`${V}/deliveries/freeze`, { config: { manifest: { responseType: 'DeliveryFreezeState', statusCodes: [200] } } }, async () => deps.freeze.state());
|
|
91
|
+
app.put(`${V}/deliveries/freeze`, {
|
|
92
|
+
config: {
|
|
93
|
+
manifest: { requestType: 'PutDeliveryFreezeBody', responseType: 'DeliveryFreezeState', statusCodes: [200, 400] },
|
|
94
|
+
},
|
|
95
|
+
}, async (req, reply) => {
|
|
96
|
+
const parsed = PutDeliveryFreezeSchema.safeParse(req.body);
|
|
97
|
+
if (!parsed.success) {
|
|
98
|
+
return reply.code(400).send({ error: 'Invalid request body: expected {frozen: boolean, reason?: string}', details: parsed.error.issues });
|
|
99
|
+
}
|
|
100
|
+
deps.freeze.set(parsed.data.frozen, actorOf(req), deps.audit, parsed.data.reason);
|
|
101
|
+
return deps.freeze.state();
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=delivery-freeze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-freeze.js","sourceRoot":"","sources":["../../src/api/delivery-freeze.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,12 +22,19 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import type { AuditLog } from './audit.js';
|
|
24
24
|
import type { AgentSession, SessionView, WorkUnit, WorkflowDef } from '../core/types.js';
|
|
25
|
+
import { type PushedOnlyDelivery } from '../core/deliver.js';
|
|
25
26
|
/** What `AgentSession.delivery` + `deliverUrl` spell on the wire (api-types 0.18.0, crew#393). */
|
|
26
27
|
export interface DeliveryState {
|
|
27
|
-
delivery: 'delivered' | 'stranded' | 'vacuous' | 'none';
|
|
28
|
+
delivery: 'delivered' | 'pushed' | 'stranded' | 'vacuous' | 'none';
|
|
28
29
|
/** Present exactly when `delivery === 'delivered'`. */
|
|
29
30
|
deliverUrl?: string;
|
|
31
|
+
/** Present exactly when `delivery === 'pushed'` (N1): the run branch that is on the remote. */
|
|
32
|
+
deliverBranch?: string;
|
|
33
|
+
/** Present exactly when `delivery === 'pushed'`: the remote it was pushed to, userinfo removed. */
|
|
34
|
+
deliverRemote?: string;
|
|
30
35
|
}
|
|
36
|
+
/** The wire spelling of a recorded push-only delivery (N1). */
|
|
37
|
+
export declare function pushedState(p: PushedOnlyDelivery): DeliveryState;
|
|
31
38
|
/**
|
|
32
39
|
* Does this workflow DEFINITION do code work — the ONE predicate crew already applies at launch
|
|
33
40
|
* (`routes.ts` `POST /runs`: `deliver` defaults to `'pr'` only for such a def): some phase declares
|
|
@@ -49,17 +56,25 @@ export declare function phaseIdOf(unitId: string): string;
|
|
|
49
56
|
* operator overlay's own), when the def is unknown (`null` — a free-text `wf-…` run or a def the
|
|
50
57
|
* registry no longer holds: today's candidacy, never narrowed on a guess), or when the def does
|
|
51
58
|
* code work ({@link isCodeWorkDef}). FALSE only for a RESOLVED def with no deliver unit and no
|
|
52
|
-
* code-work phase — `
|
|
59
|
+
* code-work phase — `capture-learnings`, `steering-author`, … — whose
|
|
53
60
|
* completed runs then read `delivery: 'none'` instead of the stranded/vacuous a live worktree used
|
|
54
61
|
* to earn them (the board's "nine runs need you" after onboarding). A code-work run launched with
|
|
55
62
|
* `deliver: 'none'` stays a candidate: its work is on `wicked/<id>`, liftable post hoc.
|
|
63
|
+
*
|
|
64
|
+
* A PRESET or USER-PLAN run (seam X2) is judged by what it CONTAINS, never by a def looked up by
|
|
65
|
+
* name: it could deliver when one of its planned units does code work (`executes_code`, not the
|
|
66
|
+
* evaluator's — the same rule as {@link isCodeWorkDef}, over the units the engine planned). With
|
|
67
|
+
* no planned units yet it stays a candidate, and so does a run whose PA is still scoping its plan
|
|
68
|
+
* (`team_plan.scope`, wicked-core#633 X1): its only unit is the read-only `pa-scope` step, which
|
|
69
|
+
* says nothing about what the plan will contain. `def` is not read for such a run.
|
|
56
70
|
*/
|
|
57
71
|
export declare function runCanDeliver(view: SessionView, def: WorkflowDef | null): boolean;
|
|
58
72
|
/**
|
|
59
73
|
* The ONE def-awareness closure the daemon hands its delivery cache and its campaigns rollup —
|
|
60
|
-
* `runCanDeliver` over the
|
|
61
|
-
*
|
|
62
|
-
*
|
|
74
|
+
* `runCanDeliver` over the def registered under the run's recorded NAME (`runWorkflowDef`, seam
|
|
75
|
+
* X2: its preset or workflow, never a phase-sequence guess). Built for a READ path: a run with no
|
|
76
|
+
* name (a user plan, free text, a fake adapter's minimal session, an older record), no `units`, or a
|
|
77
|
+
* registry that throws resolves NO def ⇒ `runCanDeliver(view, null)` ⇒
|
|
63
78
|
* today's candidacy — never a 500 on `GET /runs` (the auth-required suite's `{ id, status }`
|
|
64
79
|
* sessions are exactly this shape). Absence of an answer is today's label, not an error.
|
|
65
80
|
*/
|
|
@@ -69,6 +84,10 @@ export declare function canDeliverResolver(listWorkflows: () => WorkflowDef[], l
|
|
|
69
84
|
* assembly from three facts and nothing else:
|
|
70
85
|
*
|
|
71
86
|
* 1. a recorded PR URL (the `run.delivered` trail via {@link DeliveryIndex}) ⇒ `'delivered'`;
|
|
87
|
+
* 1b. a recorded PUSH-ONLY delivery (N1: the branch is on a non-GitHub origin, no PR could be
|
|
88
|
+
* opened — the same trail, `detail.pushed`) ⇒ `'pushed'`. Without it, every successful
|
|
89
|
+
* delivery to a local/SSH/GitLab origin read `'stranded'` ("sitting uncommitted… No PR is on
|
|
90
|
+
* record") and offered a post-hoc "open a PR" that cannot succeed;
|
|
72
91
|
* 2. otherwise a COMPLETED repo-scoped run whose worktree still exists on disk ⇒ `'stranded'`
|
|
73
92
|
* — reviewable work nobody lifted into a PR. This is a derivation over the run record's
|
|
74
93
|
* existing fields (`status`, `repo_ref`, `workdir`) plus one stat, so runs recorded BEFORE
|
|
@@ -86,7 +105,7 @@ export declare function canDeliverResolver(listWorkflows: () => WorkflowDef[], l
|
|
|
86
105
|
* PR always wins, whatever the def) and BEFORE the worktree stat (nothing there is liftable work).
|
|
87
106
|
* Defaults to `true` = today's behaviour for every caller that has no def in hand.
|
|
88
107
|
*/
|
|
89
|
-
export declare function deliveryStateOf(session: Pick<AgentSession, 'status' | 'repo_ref' | 'workdir'>, url: string | undefined, worktreeExists: (path: string) => boolean, canDeliver?: boolean): DeliveryState;
|
|
108
|
+
export declare function deliveryStateOf(session: Pick<AgentSession, 'status' | 'repo_ref' | 'workdir'>, url: string | undefined, worktreeExists: (path: string) => boolean, canDeliver?: boolean, pushed?: PushedOnlyDelivery): DeliveryState;
|
|
90
109
|
/** The probes behind the `'vacuous'` derivation (crew#311) — injected so route tests can pin the
|
|
91
110
|
* derivation without staging real repos; production wires the memoized git probes below.
|
|
92
111
|
*
|
|
@@ -141,7 +160,7 @@ export declare class VacuityProbeUnavailable extends Error {
|
|
|
141
160
|
* completed run's branch has made its work unreachable — it reads vacuous, which is what the
|
|
142
161
|
* run now amounts to.)
|
|
143
162
|
*/
|
|
144
|
-
export declare function deliveryStateWithVacuity(session: Pick<AgentSession, 'id' | 'status' | 'repo_ref' | 'workdir'>, url: string | undefined, probes: VacuityProbes, canDeliver?: boolean): Promise<DeliveryState>;
|
|
163
|
+
export declare function deliveryStateWithVacuity(session: Pick<AgentSession, 'id' | 'status' | 'repo_ref' | 'workdir'>, url: string | undefined, probes: VacuityProbes, canDeliver?: boolean, pushed?: PushedOnlyDelivery): Promise<DeliveryState>;
|
|
145
164
|
/** How long a per-worktree cleanliness read is trusted before the next request re-probes. A
|
|
146
165
|
* terminal run's worktree only changes under operator hands, and `GET /runs` is polled — an
|
|
147
166
|
* unmemoized probe would be two git subprocesses per stranded run per poll. */
|
|
@@ -190,6 +209,22 @@ export declare function gitRunBranchIsEmpty(resolveRepoRoot: (repoRef: string) =
|
|
|
190
209
|
* from ever matching; the LAST match wins, same as `tail -1`.
|
|
191
210
|
*/
|
|
192
211
|
export declare function prUrlFrom(text: string): string | null;
|
|
212
|
+
/** What an approved deliver unit's transcript puts on the `run.delivered` trail (`detail`). */
|
|
213
|
+
export type DeliveryRecord = {
|
|
214
|
+
url: string;
|
|
215
|
+
} | {
|
|
216
|
+
pushed: PushedOnlyDelivery;
|
|
217
|
+
};
|
|
218
|
+
/**
|
|
219
|
+
* The delivery an APPROVED deliver unit's transcript records, or `null` (nothing to record).
|
|
220
|
+
*
|
|
221
|
+
* The script ends each success path with its own verdict on stdout: the PR URL (`echo "$URL"`) or,
|
|
222
|
+
* on a non-GitHub origin (N1), the `deliver: PUSHED-NO-PR` line. Text before that verdict can be the
|
|
223
|
+
* remote's — `git push` output is echoed, and a hook may print a `/pull/<n>` URL or even a forged
|
|
224
|
+
* marker line (Copilot on crew#734, both directions). So whichever of the two appears LAST is the
|
|
225
|
+
* script's verdict.
|
|
226
|
+
*/
|
|
227
|
+
export declare function deliveryRecordFrom(output: string): DeliveryRecord | null;
|
|
193
228
|
/**
|
|
194
229
|
* This run's deliver unit, or `null`. The composed id suffix (`<base>:deliver`) is the
|
|
195
230
|
* primary key; the `tool_cmd` probe is the fallback for an operator OVERLAY that carried the
|
|
@@ -198,13 +233,14 @@ export declare function prUrlFrom(text: string): string | null;
|
|
|
198
233
|
*/
|
|
199
234
|
export declare function deliverUnitOf(view: SessionView): WorkUnit | null;
|
|
200
235
|
/**
|
|
201
|
-
* Is this a `failed` run whose ONLY failure was a recoverable deliver LIFT failure (crew#418
|
|
236
|
+
* Is this a `failed` run whose ONLY failure was a recoverable deliver LIFT failure (crew#418)?
|
|
202
237
|
*
|
|
203
238
|
* The deliver phase is the LAST phase, so a rejected deliver unit whose `denial_reason` carries
|
|
204
239
|
* the deliver script's {@link DELIVER_LIFT_CONFLICT_MARKER} — with EVERY non-deliver unit still
|
|
205
240
|
* `done` — means the run's WORK is complete and committed on its `wicked/<id>` branch: only the
|
|
206
241
|
* lift into origin could not complete (a rebase conflict the changelog union merge could not
|
|
207
|
-
* clear,
|
|
242
|
+
* clear, or the engine's own lift conflict). A push the REMOTE refused no longer carries the marker
|
|
243
|
+
* (N4): it parks at the engine's deliver-refusal gate instead. The engine reports the run `failed` because a Tool phase exited
|
|
208
244
|
* non-zero; crew reinterprets THIS shape on the wire as `completed` + `delivery: 'stranded'`
|
|
209
245
|
* (recoverable via `POST /runs/:id/deliver`) — the same wire-derivation posture as `delivery`
|
|
210
246
|
* itself, leaving the engine's durable `failed` record untouched. The deliver unit stays
|
|
@@ -220,6 +256,8 @@ export declare function deliverUnitOf(view: SessionView): WorkUnit | null;
|
|
|
220
256
|
export declare function isDeliverConflictStranded(view: SessionView): boolean;
|
|
221
257
|
export declare class DeliveryIndex {
|
|
222
258
|
private readonly runToUrl;
|
|
259
|
+
/** N1: runs whose deliver phase pushed the branch and could open no PR (a non-GitHub origin). */
|
|
260
|
+
private readonly runToPushed;
|
|
223
261
|
/**
|
|
224
262
|
* Load deliveries from EVERY `run.delivered` entry in the trail — exhaustively, not capped
|
|
225
263
|
* (BRIEF-UX-002 C5, the same defect class as `RetryIndex.hydrate`: a durable record must
|
|
@@ -232,6 +270,12 @@ export declare class DeliveryIndex {
|
|
|
232
270
|
hydrate(audit: AuditLog, log?: (msg: string) => void): Promise<void>;
|
|
233
271
|
/** Record the run's delivered PR URL (idempotent — the newest write wins). */
|
|
234
272
|
set(runId: string, url: string): void;
|
|
273
|
+
/** Record a PUSH-ONLY delivery (N1). A recorded PR URL is never downgraded by it. */
|
|
274
|
+
setPushed(runId: string, pushed: PushedOnlyDelivery): void;
|
|
275
|
+
/** The recorded push-only delivery for this run, or `undefined` (N1). */
|
|
276
|
+
pushedFor(runId: string): PushedOnlyDelivery | undefined;
|
|
277
|
+
/** Did this run deliver at all — a PR on record OR a pushed branch on record? */
|
|
278
|
+
isDelivered(runId: string): boolean;
|
|
235
279
|
/**
|
|
236
280
|
* The recorded PR URL for this run, or `undefined` — the fact {@link deliveryStateOf} turns
|
|
237
281
|
* into the wire's `delivery: 'delivered'` + `deliverUrl` (api-types 0.18.0; the 0.11.0 object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-index.d.ts","sourceRoot":"","sources":["../../src/api/delivery-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"delivery-index.d.ts","sourceRoot":"","sources":["../../src/api/delivery-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,8 +21,13 @@
|
|
|
21
21
|
* the per-run output endpoint.
|
|
22
22
|
*/
|
|
23
23
|
import { execCapped } from '../core/exec.js';
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
24
|
+
import { lastDeliverMarker } from '../core/deliver-triage.js';
|
|
25
|
+
import { DELIVER_LIFT_CONFLICT_MARKER, DELIVER_PHASE_ID, DELIVER_PUSHED_NO_PR_MARKER, pushedOnlyFrom, } from '../core/deliver.js';
|
|
26
|
+
import { runIdentityOf, runWorkflowDef } from '../core/run-identity.js';
|
|
27
|
+
/** The wire spelling of a recorded push-only delivery (N1). */
|
|
28
|
+
export function pushedState(p) {
|
|
29
|
+
return { delivery: 'pushed', deliverBranch: p.branch, deliverRemote: p.remote };
|
|
30
|
+
}
|
|
26
31
|
/**
|
|
27
32
|
* Does this workflow DEFINITION do code work — the ONE predicate crew already applies at launch
|
|
28
33
|
* (`routes.ts` `POST /runs`: `deliver` defaults to `'pr'` only for such a def): some phase declares
|
|
@@ -49,23 +54,40 @@ export function phaseIdOf(unitId) {
|
|
|
49
54
|
* operator overlay's own), when the def is unknown (`null` — a free-text `wf-…` run or a def the
|
|
50
55
|
* registry no longer holds: today's candidacy, never narrowed on a guess), or when the def does
|
|
51
56
|
* code work ({@link isCodeWorkDef}). FALSE only for a RESOLVED def with no deliver unit and no
|
|
52
|
-
* code-work phase — `
|
|
57
|
+
* code-work phase — `capture-learnings`, `steering-author`, … — whose
|
|
53
58
|
* completed runs then read `delivery: 'none'` instead of the stranded/vacuous a live worktree used
|
|
54
59
|
* to earn them (the board's "nine runs need you" after onboarding). A code-work run launched with
|
|
55
60
|
* `deliver: 'none'` stays a candidate: its work is on `wicked/<id>`, liftable post hoc.
|
|
61
|
+
*
|
|
62
|
+
* A PRESET or USER-PLAN run (seam X2) is judged by what it CONTAINS, never by a def looked up by
|
|
63
|
+
* name: it could deliver when one of its planned units does code work (`executes_code`, not the
|
|
64
|
+
* evaluator's — the same rule as {@link isCodeWorkDef}, over the units the engine planned). With
|
|
65
|
+
* no planned units yet it stays a candidate, and so does a run whose PA is still scoping its plan
|
|
66
|
+
* (`team_plan.scope`, wicked-core#633 X1): its only unit is the read-only `pa-scope` step, which
|
|
67
|
+
* says nothing about what the plan will contain. `def` is not read for such a run.
|
|
56
68
|
*/
|
|
57
69
|
export function runCanDeliver(view, def) {
|
|
58
|
-
|
|
70
|
+
const units = view.units ?? [];
|
|
71
|
+
// A planned `deliver` step: by phase id, or by its catalog id on a preset/user-plan run.
|
|
72
|
+
if (units.some((u) => phaseIdOf(u.id) === DELIVER_PHASE_ID || u.catalog === DELIVER_PHASE_ID)) {
|
|
59
73
|
return true;
|
|
74
|
+
}
|
|
75
|
+
const kind = view.session !== undefined ? runIdentityOf(view).kind : 'unknown';
|
|
76
|
+
if (kind === 'preset' || kind === 'user_plan') {
|
|
77
|
+
if (units.length === 0 || view.session?.team_plan?.scope != null)
|
|
78
|
+
return true;
|
|
79
|
+
return units.some((u) => u.executes_code === true && u.role !== 'evaluator');
|
|
80
|
+
}
|
|
60
81
|
if (def === null)
|
|
61
82
|
return true;
|
|
62
83
|
return isCodeWorkDef(def);
|
|
63
84
|
}
|
|
64
85
|
/**
|
|
65
86
|
* The ONE def-awareness closure the daemon hands its delivery cache and its campaigns rollup —
|
|
66
|
-
* `runCanDeliver` over the
|
|
67
|
-
*
|
|
68
|
-
*
|
|
87
|
+
* `runCanDeliver` over the def registered under the run's recorded NAME (`runWorkflowDef`, seam
|
|
88
|
+
* X2: its preset or workflow, never a phase-sequence guess). Built for a READ path: a run with no
|
|
89
|
+
* name (a user plan, free text, a fake adapter's minimal session, an older record), no `units`, or a
|
|
90
|
+
* registry that throws resolves NO def ⇒ `runCanDeliver(view, null)` ⇒
|
|
69
91
|
* today's candidacy — never a 500 on `GET /runs` (the auth-required suite's `{ id, status }`
|
|
70
92
|
* sessions are exactly this shape). Absence of an answer is today's label, not an error.
|
|
71
93
|
*/
|
|
@@ -73,8 +95,7 @@ export function canDeliverResolver(listWorkflows, log) {
|
|
|
73
95
|
return (view) => {
|
|
74
96
|
let def = null;
|
|
75
97
|
try {
|
|
76
|
-
def =
|
|
77
|
-
typeof view.session?.workflow_id === 'string' ? resolveRunWorkflow(view, listWorkflows() ?? []) : null;
|
|
98
|
+
def = view.session !== undefined ? runWorkflowDef(view, listWorkflows() ?? []) : null;
|
|
78
99
|
}
|
|
79
100
|
catch (err) {
|
|
80
101
|
// A registry that cannot answer is the ABSENCE of a def, not a verdict: the run keeps today's
|
|
@@ -90,6 +111,10 @@ export function canDeliverResolver(listWorkflows, log) {
|
|
|
90
111
|
* assembly from three facts and nothing else:
|
|
91
112
|
*
|
|
92
113
|
* 1. a recorded PR URL (the `run.delivered` trail via {@link DeliveryIndex}) ⇒ `'delivered'`;
|
|
114
|
+
* 1b. a recorded PUSH-ONLY delivery (N1: the branch is on a non-GitHub origin, no PR could be
|
|
115
|
+
* opened — the same trail, `detail.pushed`) ⇒ `'pushed'`. Without it, every successful
|
|
116
|
+
* delivery to a local/SSH/GitLab origin read `'stranded'` ("sitting uncommitted… No PR is on
|
|
117
|
+
* record") and offered a post-hoc "open a PR" that cannot succeed;
|
|
93
118
|
* 2. otherwise a COMPLETED repo-scoped run whose worktree still exists on disk ⇒ `'stranded'`
|
|
94
119
|
* — reviewable work nobody lifted into a PR. This is a derivation over the run record's
|
|
95
120
|
* existing fields (`status`, `repo_ref`, `workdir`) plus one stat, so runs recorded BEFORE
|
|
@@ -107,9 +132,12 @@ export function canDeliverResolver(listWorkflows, log) {
|
|
|
107
132
|
* PR always wins, whatever the def) and BEFORE the worktree stat (nothing there is liftable work).
|
|
108
133
|
* Defaults to `true` = today's behaviour for every caller that has no def in hand.
|
|
109
134
|
*/
|
|
110
|
-
export function deliveryStateOf(session, url, worktreeExists, canDeliver = true) {
|
|
135
|
+
export function deliveryStateOf(session, url, worktreeExists, canDeliver = true, pushed) {
|
|
111
136
|
if (url !== undefined)
|
|
112
137
|
return { delivery: 'delivered', deliverUrl: url };
|
|
138
|
+
// A recorded push is a delivery, whatever the def or the worktree say — like a recorded PR.
|
|
139
|
+
if (pushed !== undefined)
|
|
140
|
+
return pushedState(pushed);
|
|
113
141
|
if (!canDeliver)
|
|
114
142
|
return { delivery: 'none' };
|
|
115
143
|
if (session.status === 'completed' &&
|
|
@@ -160,8 +188,10 @@ export class VacuityProbeUnavailable extends Error {
|
|
|
160
188
|
* completed run's branch has made its work unreachable — it reads vacuous, which is what the
|
|
161
189
|
* run now amounts to.)
|
|
162
190
|
*/
|
|
163
|
-
export async function deliveryStateWithVacuity(session, url, probes, canDeliver = true) {
|
|
164
|
-
const state = deliveryStateOf(session, url, probes.worktreeExists, canDeliver);
|
|
191
|
+
export async function deliveryStateWithVacuity(session, url, probes, canDeliver = true, pushed) {
|
|
192
|
+
const state = deliveryStateOf(session, url, probes.worktreeExists, canDeliver, pushed);
|
|
193
|
+
if (state.delivery === 'pushed')
|
|
194
|
+
return state;
|
|
165
195
|
// A run that could never have delivered is 'none' by definition (crew#481): no probe can turn
|
|
166
196
|
// "nothing was ever liftable" into vacuous — and the git pair must not be spent finding out.
|
|
167
197
|
if (!canDeliver)
|
|
@@ -333,6 +363,29 @@ export function prUrlFrom(text) {
|
|
|
333
363
|
const matches = text.match(/https:\/\/\S+\/pull\/\d+/g);
|
|
334
364
|
return matches === null ? null : (matches[matches.length - 1] ?? null);
|
|
335
365
|
}
|
|
366
|
+
/**
|
|
367
|
+
* The delivery an APPROVED deliver unit's transcript records, or `null` (nothing to record).
|
|
368
|
+
*
|
|
369
|
+
* The script ends each success path with its own verdict on stdout: the PR URL (`echo "$URL"`) or,
|
|
370
|
+
* on a non-GitHub origin (N1), the `deliver: PUSHED-NO-PR` line. Text before that verdict can be the
|
|
371
|
+
* remote's — `git push` output is echoed, and a hook may print a `/pull/<n>` URL or even a forged
|
|
372
|
+
* marker line (Copilot on crew#734, both directions). So whichever of the two appears LAST is the
|
|
373
|
+
* script's verdict.
|
|
374
|
+
*/
|
|
375
|
+
export function deliveryRecordFrom(output) {
|
|
376
|
+
const pushed = pushedOnlyFrom(output);
|
|
377
|
+
const url = prUrlFrom(output);
|
|
378
|
+
if (pushed === null)
|
|
379
|
+
return url === null ? null : { url };
|
|
380
|
+
if (url === null)
|
|
381
|
+
return { pushed };
|
|
382
|
+
// Only a URL on a LATER line outranks the marker: the marker line itself names the remote, and a
|
|
383
|
+
// forge URL can look like a PR URL (`https://gitlab.example.com/team/pull/9`; Copilot on #734).
|
|
384
|
+
const markerAt = output.lastIndexOf(DELIVER_PUSHED_NO_PR_MARKER);
|
|
385
|
+
const lineEnd = output.indexOf('\n', markerAt);
|
|
386
|
+
const markerLineEnd = lineEnd === -1 ? output.length : lineEnd;
|
|
387
|
+
return output.lastIndexOf(url) >= markerLineEnd ? { url } : { pushed };
|
|
388
|
+
}
|
|
336
389
|
/**
|
|
337
390
|
* This run's deliver unit, or `null`. The composed id suffix (`<base>:deliver`) is the
|
|
338
391
|
* primary key; the `tool_cmd` probe is the fallback for an operator OVERLAY that carried the
|
|
@@ -346,13 +399,14 @@ export function deliverUnitOf(view) {
|
|
|
346
399
|
return view.units.find((u) => (u.tool_cmd ?? []).join(' ').includes('gh pr create')) ?? null;
|
|
347
400
|
}
|
|
348
401
|
/**
|
|
349
|
-
* Is this a `failed` run whose ONLY failure was a recoverable deliver LIFT failure (crew#418
|
|
402
|
+
* Is this a `failed` run whose ONLY failure was a recoverable deliver LIFT failure (crew#418)?
|
|
350
403
|
*
|
|
351
404
|
* The deliver phase is the LAST phase, so a rejected deliver unit whose `denial_reason` carries
|
|
352
405
|
* the deliver script's {@link DELIVER_LIFT_CONFLICT_MARKER} — with EVERY non-deliver unit still
|
|
353
406
|
* `done` — means the run's WORK is complete and committed on its `wicked/<id>` branch: only the
|
|
354
407
|
* lift into origin could not complete (a rebase conflict the changelog union merge could not
|
|
355
|
-
* clear,
|
|
408
|
+
* clear, or the engine's own lift conflict). A push the REMOTE refused no longer carries the marker
|
|
409
|
+
* (N4): it parks at the engine's deliver-refusal gate instead. The engine reports the run `failed` because a Tool phase exited
|
|
356
410
|
* non-zero; crew reinterprets THIS shape on the wire as `completed` + `delivery: 'stranded'`
|
|
357
411
|
* (recoverable via `POST /runs/:id/deliver`) — the same wire-derivation posture as `delivery`
|
|
358
412
|
* itself, leaving the engine's durable `failed` record untouched. The deliver unit stays
|
|
@@ -377,10 +431,14 @@ export function isDeliverConflictStranded(view) {
|
|
|
377
431
|
// clean run whose only casualty was the lift.
|
|
378
432
|
if (view.units.some((u) => u.id !== deliver.id && u.status === 'rejected'))
|
|
379
433
|
return false;
|
|
380
|
-
|
|
434
|
+
// The LAST marker decides (codex review of N4): a refused push whose remote echoed the lift
|
|
435
|
+
// marker is still a refused push, never a liftable strand.
|
|
436
|
+
return lastDeliverMarker(deliver.denial_reason ?? '') === DELIVER_LIFT_CONFLICT_MARKER;
|
|
381
437
|
}
|
|
382
438
|
export class DeliveryIndex {
|
|
383
439
|
runToUrl = new Map();
|
|
440
|
+
/** N1: runs whose deliver phase pushed the branch and could open no PR (a non-GitHub origin). */
|
|
441
|
+
runToPushed = new Map();
|
|
384
442
|
/**
|
|
385
443
|
* Load deliveries from EVERY `run.delivered` entry in the trail — exhaustively, not capped
|
|
386
444
|
* (BRIEF-UX-002 C5, the same defect class as `RetryIndex.hydrate`: a durable record must
|
|
@@ -392,19 +450,39 @@ export class DeliveryIndex {
|
|
|
392
450
|
*/
|
|
393
451
|
async hydrate(audit, log) {
|
|
394
452
|
try {
|
|
395
|
-
|
|
453
|
+
// `decided`: the run's record is settled (a PR URL, or a malformed newest write).
|
|
454
|
+
// `pushedOnly`: the newest entry was a push-only record (N1) — still open to an OLDER PR URL,
|
|
455
|
+
// because a recorded PR always outranks a push (the same precedence `setPushed` keeps live;
|
|
456
|
+
// codex review of N1). A malformed entry OLDER than a push changes nothing.
|
|
457
|
+
const decided = new Set();
|
|
458
|
+
const pushedOnly = new Set();
|
|
396
459
|
for (const entry of await audit.readAll({ action: 'run.delivered' })) {
|
|
397
460
|
if (typeof entry.runId !== 'string')
|
|
398
461
|
continue;
|
|
399
|
-
if (
|
|
462
|
+
if (decided.has(entry.runId))
|
|
400
463
|
continue;
|
|
401
|
-
// Newest entry decides, even when malformed — marking the run seen BEFORE the url
|
|
402
|
-
// check keeps a corrupt newest write from resurrecting an older one (the #312 rule).
|
|
403
|
-
seen.add(entry.runId);
|
|
404
464
|
const url = entry.detail?.['url'];
|
|
405
|
-
if (typeof url
|
|
465
|
+
if (typeof url === 'string' && url !== '') {
|
|
466
|
+
decided.add(entry.runId);
|
|
467
|
+
this.runToPushed.delete(entry.runId);
|
|
468
|
+
this.runToUrl.set(entry.runId, url);
|
|
469
|
+
continue;
|
|
470
|
+
}
|
|
471
|
+
if (pushedOnly.has(entry.runId))
|
|
472
|
+
continue;
|
|
473
|
+
const pushed = entry.detail?.['pushed'];
|
|
474
|
+
if (pushed !== undefined &&
|
|
475
|
+
pushed !== null &&
|
|
476
|
+
typeof pushed.branch === 'string' &&
|
|
477
|
+
pushed.branch !== '' &&
|
|
478
|
+
typeof pushed.remote === 'string') {
|
|
479
|
+
pushedOnly.add(entry.runId);
|
|
480
|
+
this.runToPushed.set(entry.runId, { branch: pushed.branch, remote: pushed.remote });
|
|
406
481
|
continue;
|
|
407
|
-
|
|
482
|
+
}
|
|
483
|
+
// Newest entry decides, even when malformed — a corrupt newest write never resurrects an
|
|
484
|
+
// older one (the #312 rule).
|
|
485
|
+
decided.add(entry.runId);
|
|
408
486
|
}
|
|
409
487
|
}
|
|
410
488
|
catch (err) {
|
|
@@ -413,8 +491,23 @@ export class DeliveryIndex {
|
|
|
413
491
|
}
|
|
414
492
|
/** Record the run's delivered PR URL (idempotent — the newest write wins). */
|
|
415
493
|
set(runId, url) {
|
|
494
|
+
this.runToPushed.delete(runId);
|
|
416
495
|
this.runToUrl.set(runId, url);
|
|
417
496
|
}
|
|
497
|
+
/** Record a PUSH-ONLY delivery (N1). A recorded PR URL is never downgraded by it. */
|
|
498
|
+
setPushed(runId, pushed) {
|
|
499
|
+
if (this.runToUrl.has(runId))
|
|
500
|
+
return;
|
|
501
|
+
this.runToPushed.set(runId, pushed);
|
|
502
|
+
}
|
|
503
|
+
/** The recorded push-only delivery for this run, or `undefined` (N1). */
|
|
504
|
+
pushedFor(runId) {
|
|
505
|
+
return this.runToPushed.get(runId);
|
|
506
|
+
}
|
|
507
|
+
/** Did this run deliver at all — a PR on record OR a pushed branch on record? */
|
|
508
|
+
isDelivered(runId) {
|
|
509
|
+
return this.runToUrl.has(runId) || this.runToPushed.has(runId);
|
|
510
|
+
}
|
|
418
511
|
/**
|
|
419
512
|
* The recorded PR URL for this run, or `undefined` — the fact {@link deliveryStateOf} turns
|
|
420
513
|
* into the wire's `delivery: 'delivered'` + `deliverUrl` (api-types 0.18.0; the 0.11.0 object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-index.js","sourceRoot":"","sources":["../../src/api/delivery-index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"delivery-index.js","sourceRoot":"","sources":["../../src/api/delivery-index.ts"],"names":[],"mappings":"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"}
|