@openrig/cli 0.4.4 → 0.4.6
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/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +6 -8
- package/daemon/assets/plugins/openrig-core/skills/openrig-cmux/SKILL.md +86 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-herdr/SKILL.md +158 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +744 -96
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +12 -8
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/pi-resume.d.ts +32 -0
- package/daemon/dist/adapters/pi-resume.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-resume.js +125 -0
- package/daemon/dist/adapters/pi-resume.js.map +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts +88 -0
- package/daemon/dist/adapters/pi-runner-protocol.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-runner-protocol.js +153 -0
- package/daemon/dist/adapters/pi-runner-protocol.js.map +1 -0
- package/daemon/dist/adapters/pi-runner.d.ts +99 -0
- package/daemon/dist/adapters/pi-runner.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-runner.js +519 -0
- package/daemon/dist/adapters/pi-runner.js.map +1 -0
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts +61 -0
- package/daemon/dist/adapters/pi-runtime-adapter.d.ts.map +1 -0
- package/daemon/dist/adapters/pi-runtime-adapter.js +356 -0
- package/daemon/dist/adapters/pi-runtime-adapter.js.map +1 -0
- package/daemon/dist/adapters/tmux.d.ts +22 -1
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +40 -1
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/builtins/workflow-specs/branched-remediation.yaml +31 -0
- package/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +152 -0
- package/daemon/dist/builtins/workflow-specs/gated-release.yaml +26 -0
- package/daemon/dist/builtins/workflow-specs/linear-build.yaml +21 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts +20 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.d.ts.map +1 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.js +24 -0
- package/daemon/dist/db/migrations/049_workflow_instance_version.js.map +1 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts +22 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.d.ts.map +1 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.js +26 -0
- package/daemon/dist/db/migrations/050_workflow_spec_json.js.map +1 -0
- package/daemon/dist/db/migrations/051_workflow_resume.d.ts +22 -0
- package/daemon/dist/db/migrations/051_workflow_resume.d.ts.map +1 -0
- package/daemon/dist/db/migrations/051_workflow_resume.js +27 -0
- package/daemon/dist/db/migrations/051_workflow_resume.js.map +1 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts +26 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.d.ts.map +1 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js +30 -0
- package/daemon/dist/db/migrations/052_workflow_instance_bound_rig.js.map +1 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts +48 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.d.ts.map +1 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.js +53 -0
- package/daemon/dist/db/migrations/053_sessions_node_id_index.js.map +1 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts +34 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.d.ts.map +1 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.js +49 -0
- package/daemon/dist/db/migrations/054_queue_transitions_archive.js.map +1 -0
- package/daemon/dist/domain/claim-service.d.ts +11 -0
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +3 -1
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/discovery-types.d.ts +1 -1
- package/daemon/dist/domain/discovery-types.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.js +19 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts +11 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.js +54 -0
- package/daemon/dist/domain/hosts/hosts-registry-writer.js.map +1 -0
- package/daemon/dist/domain/hosts/read-through.d.ts +28 -0
- package/daemon/dist/domain/hosts/read-through.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/read-through.js +139 -0
- package/daemon/dist/domain/hosts/read-through.js.map +1 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts +21 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/remote-daemon-http.js +49 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +18 -0
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +206 -95
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/node-launcher.d.ts +11 -0
- package/daemon/dist/domain/node-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/node-launcher.js +10 -0
- package/daemon/dist/domain/node-launcher.js.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts +7 -0
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.js +93 -13
- package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +37 -26
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +105 -0
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +193 -4
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-retention.d.ts +130 -0
- package/daemon/dist/domain/queue-retention.d.ts.map +1 -0
- package/daemon/dist/domain/queue-retention.js +224 -0
- package/daemon/dist/domain/queue-retention.js.map +1 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts +5 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +29 -2
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/resume-token-capture.d.ts +13 -0
- package/daemon/dist/domain/resume-token-capture.d.ts.map +1 -1
- package/daemon/dist/domain/resume-token-capture.js +14 -1
- package/daemon/dist/domain/resume-token-capture.js.map +1 -1
- package/daemon/dist/domain/resume-token-validation.d.ts +1 -1
- package/daemon/dist/domain/resume-token-validation.d.ts.map +1 -1
- package/daemon/dist/domain/resume-token-validation.js +58 -10
- package/daemon/dist/domain/resume-token-validation.js.map +1 -1
- package/daemon/dist/domain/review/compose.d.ts +50 -1
- package/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/daemon/dist/domain/review/compose.js +92 -3
- package/daemon/dist/domain/review/compose.js.map +1 -1
- package/daemon/dist/domain/review/fleet-compose.d.ts +52 -0
- package/daemon/dist/domain/review/fleet-compose.d.ts.map +1 -0
- package/daemon/dist/domain/review/fleet-compose.js +294 -0
- package/daemon/dist/domain/review/fleet-compose.js.map +1 -0
- package/daemon/dist/domain/review/gather.d.ts +16 -1
- package/daemon/dist/domain/review/gather.d.ts.map +1 -1
- package/daemon/dist/domain/review/gather.js +177 -41
- package/daemon/dist/domain/review/gather.js.map +1 -1
- package/daemon/dist/domain/review/types.d.ts +104 -1
- package/daemon/dist/domain/review/types.d.ts.map +1 -1
- package/daemon/dist/domain/rig-expansion-service.d.ts.map +1 -1
- package/daemon/dist/domain/rig-expansion-service.js +3 -0
- package/daemon/dist/domain/rig-expansion-service.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +7 -6
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +33 -11
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rigspec-codec.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-codec.js +3 -0
- package/daemon/dist/domain/rigspec-codec.js.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.js +4 -0
- package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +11 -0
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.d.ts +6 -0
- package/daemon/dist/domain/rigspec-preflight.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-preflight.js +26 -1
- package/daemon/dist/domain/rigspec-preflight.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +20 -1
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/runtime-verifier.d.ts +7 -1
- package/daemon/dist/domain/runtime-verifier.d.ts.map +1 -1
- package/daemon/dist/domain/runtime-verifier.js +39 -1
- package/daemon/dist/domain/runtime-verifier.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +9 -0
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +2 -0
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/seat-identity-store.d.ts +7 -0
- package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -1
- package/daemon/dist/domain/seat-identity-store.js +27 -0
- package/daemon/dist/domain/seat-identity-store.js.map +1 -1
- package/daemon/dist/domain/seat-status-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-status-service.js +6 -4
- package/daemon/dist/domain/seat-status-service.js.map +1 -1
- package/daemon/dist/domain/session-name.d.ts +22 -0
- package/daemon/dist/domain/session-name.d.ts.map +1 -1
- package/daemon/dist/domain/session-name.js +29 -0
- package/daemon/dist/domain/session-name.js.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js +4 -5
- package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.d.ts +18 -2
- package/daemon/dist/domain/spec-library-workflow-scanner.d.ts.map +1 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.js +23 -1
- package/daemon/dist/domain/spec-library-workflow-scanner.js.map +1 -1
- package/daemon/dist/domain/startup-proof.d.ts +10 -6
- package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
- package/daemon/dist/domain/startup-proof.js +35 -7
- package/daemon/dist/domain/startup-proof.js.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.d.ts +16 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +13 -0
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts +27 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js +67 -0
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -0
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts +77 -0
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/herdr-adapter.js +266 -0
- package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -0
- package/daemon/dist/domain/terminal/herdr-transport.d.ts +50 -0
- package/daemon/dist/domain/terminal/herdr-transport.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/herdr-transport.js +145 -0
- package/daemon/dist/domain/terminal/herdr-transport.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts +88 -0
- package/daemon/dist/domain/terminal/terminal-provider.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/terminal-provider.js +17 -0
- package/daemon/dist/domain/terminal/terminal-provider.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts +60 -0
- package/daemon/dist/domain/terminal/terminal-service.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/terminal-service.js +174 -0
- package/daemon/dist/domain/terminal/terminal-service.js.map +1 -0
- package/daemon/dist/domain/terminal/terminal-views-store.d.ts +77 -0
- package/daemon/dist/domain/terminal/terminal-views-store.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/terminal-views-store.js +146 -0
- package/daemon/dist/domain/terminal/terminal-views-store.js.map +1 -0
- package/daemon/dist/domain/terminal/view-composer.d.ts +42 -0
- package/daemon/dist/domain/terminal/view-composer.d.ts.map +1 -0
- package/daemon/dist/domain/terminal/view-composer.js +137 -0
- package/daemon/dist/domain/terminal/view-composer.js.map +1 -0
- package/daemon/dist/domain/tmux-option-defaults.d.ts +89 -0
- package/daemon/dist/domain/tmux-option-defaults.d.ts.map +1 -0
- package/daemon/dist/domain/tmux-option-defaults.js +132 -0
- package/daemon/dist/domain/tmux-option-defaults.js.map +1 -0
- package/daemon/dist/domain/types.d.ts +34 -1
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +92 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/workflow/slice-workflow-projection.d.ts.map +1 -1
- package/daemon/dist/domain/workflow/slice-workflow-projection.js +6 -2
- package/daemon/dist/domain/workflow/slice-workflow-projection.js.map +1 -1
- package/daemon/dist/domain/workflow-boot-sweep.d.ts +28 -0
- package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-boot-sweep.js +102 -0
- package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -0
- package/daemon/dist/domain/workflow-deadline.d.ts +74 -0
- package/daemon/dist/domain/workflow-deadline.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-deadline.js +165 -0
- package/daemon/dist/domain/workflow-deadline.js.map +1 -0
- package/daemon/dist/domain/workflow-exception-escalation.d.ts +33 -0
- package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-exception-escalation.js +104 -0
- package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -0
- package/daemon/dist/domain/workflow-exception-router.d.ts +33 -0
- package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-exception-router.js +96 -0
- package/daemon/dist/domain/workflow-exception-router.js.map +1 -0
- package/daemon/dist/domain/workflow-exception.d.ts +90 -0
- package/daemon/dist/domain/workflow-exception.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-exception.js +122 -0
- package/daemon/dist/domain/workflow-exception.js.map +1 -0
- package/daemon/dist/domain/workflow-frontier-guard.d.ts +24 -0
- package/daemon/dist/domain/workflow-frontier-guard.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-frontier-guard.js +30 -0
- package/daemon/dist/domain/workflow-frontier-guard.js.map +1 -0
- package/daemon/dist/domain/workflow-instance-store.d.ts +28 -0
- package/daemon/dist/domain/workflow-instance-store.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-instance-store.js +66 -10
- package/daemon/dist/domain/workflow-instance-store.js.map +1 -1
- package/daemon/dist/domain/workflow-keepalive-arming.d.ts +35 -0
- package/daemon/dist/domain/workflow-keepalive-arming.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-keepalive-arming.js +87 -0
- package/daemon/dist/domain/workflow-keepalive-arming.js.map +1 -0
- package/daemon/dist/domain/workflow-projector.d.ts +117 -2
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-projector.js +672 -41
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-role-context.d.ts +57 -0
- package/daemon/dist/domain/workflow-role-context.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-role-context.js +120 -0
- package/daemon/dist/domain/workflow-role-context.js.map +1 -0
- package/daemon/dist/domain/workflow-role-resolver.d.ts +65 -0
- package/daemon/dist/domain/workflow-role-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-role-resolver.js +108 -0
- package/daemon/dist/domain/workflow-role-resolver.js.map +1 -0
- package/daemon/dist/domain/workflow-runtime.d.ts +157 -1
- package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-runtime.js +718 -11
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.d.ts +26 -1
- package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.js +327 -13
- package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
- package/daemon/dist/domain/workflow-types.d.ts +143 -8
- package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-types.js +14 -1
- package/daemon/dist/domain/workflow-types.js.map +1 -1
- package/daemon/dist/domain/workflow-validator.d.ts +11 -1
- package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-validator.js +246 -1
- package/daemon/dist/domain/workflow-validator.js.map +1 -1
- package/daemon/dist/index.d.ts +17 -0
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +44 -0
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/routes/activity.js +22 -0
- package/daemon/dist/routes/activity.js.map +1 -1
- package/daemon/dist/routes/hosts.d.ts +5 -0
- package/daemon/dist/routes/hosts.d.ts.map +1 -0
- package/daemon/dist/routes/hosts.js +346 -0
- package/daemon/dist/routes/hosts.js.map +1 -0
- package/daemon/dist/routes/queue.d.ts +2 -7
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +264 -9
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/review.d.ts.map +1 -1
- package/daemon/dist/routes/review.js +26 -0
- package/daemon/dist/routes/review.js.map +1 -1
- package/daemon/dist/routes/seat.js +13 -0
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/terminal.d.ts +11 -0
- package/daemon/dist/routes/terminal.d.ts.map +1 -0
- package/daemon/dist/routes/terminal.js +104 -0
- package/daemon/dist/routes/terminal.js.map +1 -0
- package/daemon/dist/routes/workflow.d.ts.map +1 -1
- package/daemon/dist/routes/workflow.js +102 -10
- package/daemon/dist/routes/workflow.js.map +1 -1
- package/daemon/dist/server.d.ts +5 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +22 -0
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +221 -12
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +29 -0
- package/daemon/specs/agents/factory-rsi/dogfood/guidance/role.md +37 -0
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +29 -0
- package/daemon/specs/agents/factory-rsi/release-manager/guidance/role.md +40 -0
- package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +6 -8
- package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +86 -0
- package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +158 -0
- package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +6 -6
- package/daemon/specs/rigs/launch/factory-rsi/CULTURE.md +47 -0
- package/daemon/specs/rigs/launch/factory-rsi/rig.yaml +115 -0
- package/dist/build-info.js +3 -3
- package/dist/commands/broadcast.d.ts +6 -1
- package/dist/commands/broadcast.d.ts.map +1 -1
- package/dist/commands/broadcast.js +101 -15
- package/dist/commands/broadcast.js.map +1 -1
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +99 -8
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +4 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +5 -0
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/host.d.ts +14 -0
- package/dist/commands/host.d.ts.map +1 -1
- package/dist/commands/host.js +338 -14
- package/dist/commands/host.js.map +1 -1
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +5 -0
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +10 -4
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts +36 -0
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +73 -7
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/restore-packet.d.ts.map +1 -1
- package/dist/commands/restore-packet.js +13 -2
- package/dist/commands/restore-packet.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +114 -9
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/terminal.d.ts +6 -0
- package/dist/commands/terminal.d.ts.map +1 -0
- package/dist/commands/terminal.js +116 -0
- package/dist/commands/terminal.js.map +1 -0
- package/dist/commands/transcript.d.ts +6 -1
- package/dist/commands/transcript.d.ts.map +1 -1
- package/dist/commands/transcript.js +113 -30
- package/dist/commands/transcript.js.map +1 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +9 -0
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +11 -0
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/workflow-errors.d.ts +23 -0
- package/dist/commands/workflow-errors.d.ts.map +1 -0
- package/dist/commands/workflow-errors.js +100 -0
- package/dist/commands/workflow-errors.js.map +1 -0
- package/dist/commands/workflow-follow.d.ts +71 -0
- package/dist/commands/workflow-follow.d.ts.map +1 -0
- package/dist/commands/workflow-follow.js +259 -0
- package/dist/commands/workflow-follow.js.map +1 -0
- package/dist/commands/workflow-render.d.ts +114 -0
- package/dist/commands/workflow-render.d.ts.map +1 -0
- package/dist/commands/workflow-render.js +223 -0
- package/dist/commands/workflow-render.js.map +1 -0
- package/dist/commands/workflow.d.ts +1 -0
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +278 -14
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config-store.d.ts +15 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +103 -0
- package/dist/config-store.js.map +1 -1
- package/dist/cross-host-cli-helpers.d.ts +13 -0
- package/dist/cross-host-cli-helpers.d.ts.map +1 -1
- package/dist/cross-host-cli-helpers.js +27 -0
- package/dist/cross-host-cli-helpers.js.map +1 -1
- package/dist/cross-host-target.d.ts +49 -0
- package/dist/cross-host-target.d.ts.map +1 -0
- package/dist/cross-host-target.js +35 -0
- package/dist/cross-host-target.js.map +1 -0
- package/dist/host-registry.d.ts +8 -0
- package/dist/host-registry.d.ts.map +1 -1
- package/dist/host-registry.js +32 -0
- package/dist/host-registry.js.map +1 -1
- package/dist/host-selection.d.ts +13 -0
- package/dist/host-selection.d.ts.map +1 -0
- package/dist/host-selection.js +54 -0
- package/dist/host-selection.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/remote-host-ops.d.ts +1 -0
- package/dist/remote-host-ops.d.ts.map +1 -1
- package/dist/remote-host-ops.js +11 -4
- package/dist/remote-host-ops.js.map +1 -1
- package/dist/session-name.d.ts +23 -0
- package/dist/session-name.d.ts.map +1 -0
- package/dist/session-name.js +61 -0
- package/dist/session-name.js.map +1 -0
- package/package.json +1 -1
- package/ui/dist/assets/index-CFqxa0zW.css +32 -0
- package/ui/dist/assets/index-zrFqS7gL.js +623 -0
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/index-D69ZhNIr.js +0 -598
- package/ui/dist/assets/index-DJYun-8d.css +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-runtime.js","sourceRoot":"","sources":["../../src/domain/workflow-runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-runtime.js","sourceRoot":"","sources":["../../src/domain/workflow-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,27 @@ export declare class WorkflowSpecError extends Error {
|
|
|
5
5
|
readonly details?: Record<string, unknown> | undefined;
|
|
6
6
|
constructor(code: string, message: string, details?: Record<string, unknown> | undefined);
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* OPR.0.4.6.WF1 FR-7 — THE closed keysets, EXPORTED as named
|
|
10
|
+
* constants: parseWorkflowSpec is the ONLY seam that sees raw keys
|
|
11
|
+
* (the validator operates on the typed spec and can never see dropped
|
|
12
|
+
* keys), so unknown-key rejection lands here — and WF-2's new fields
|
|
13
|
+
* (next_hop.on / harness / host / gate) EXTEND these constants rather
|
|
14
|
+
* than re-plumbing the parser.
|
|
15
|
+
*/
|
|
16
|
+
export declare const WORKFLOW_TOP_LEVEL_KEYS: readonly ["id", "version", "objective", "target", "entry", "roles", "steps", "invariants", "closure", "loop_guards", "exception_routing", "coordination_terminal_turn_rule"];
|
|
17
|
+
export declare const WORKFLOW_STEP_KEYS: readonly ["id", "actor_role", "objective", "allowed_exits", "next_hop", "harness", "host", "gate"];
|
|
18
|
+
export declare const WORKFLOW_ROLE_KEYS: readonly ["skill_refs", "preferred_targets"];
|
|
19
|
+
export declare const WORKFLOW_NEXT_HOP_KEYS: readonly ["mode", "suggested_roles", "on"];
|
|
20
|
+
export declare const WORKFLOW_GATE_KEYS: readonly ["target", "summary", "evidence_ref"];
|
|
21
|
+
export declare const WORKFLOW_TARGET_KEYS: readonly ["rig"];
|
|
22
|
+
export declare const WORKFLOW_ENTRY_KEYS: readonly ["role"];
|
|
23
|
+
export declare const WORKFLOW_INVARIANTS_KEYS: readonly ["continuation_required", "allowed_exits", "preserve_lineage", "closure_required"];
|
|
24
|
+
export declare const WORKFLOW_CLOSURE_KEYS: readonly ["success", "degraded", "failed"];
|
|
25
|
+
export declare const WORKFLOW_LOOP_GUARDS_KEYS: readonly ["max_hops", "spawn_budget"];
|
|
26
|
+
/** OPR.0.4.6.WF5 FR-2: the dial grammar keyset (WF-2 strictness rail —
|
|
27
|
+
* unknown keys reject loud naming this set). */
|
|
28
|
+
export declare const WORKFLOW_EXCEPTION_ROUTING_KEYS: readonly ["default", "orchestrator_role", "classes"];
|
|
8
29
|
/**
|
|
9
30
|
* Parse a workflow spec from raw YAML content. The POC fixture shape
|
|
10
31
|
* wraps everything under a top-level `workflow:` key:
|
|
@@ -16,12 +37,14 @@ export declare class WorkflowSpecError extends Error {
|
|
|
16
37
|
* steps: [ ... ]
|
|
17
38
|
*
|
|
18
39
|
* Returns the parsed spec or throws WorkflowSpecError on malformed
|
|
19
|
-
* YAML / missing required fields.
|
|
40
|
+
* YAML / missing required fields. FR-7: unknown keys at every level
|
|
41
|
+
* are rejected loud against the exported closed keysets above.
|
|
20
42
|
*/
|
|
21
43
|
export declare function parseWorkflowSpec(rawYaml: string, sourcePath: string): WorkflowSpec;
|
|
22
44
|
export declare class WorkflowSpecCache {
|
|
23
45
|
private readonly db;
|
|
24
46
|
private readonly now;
|
|
47
|
+
private readonly hasSpecJsonColumn;
|
|
25
48
|
constructor(db: Database.Database, now?: () => Date);
|
|
26
49
|
/**
|
|
27
50
|
* Read a workflow spec from disk through the cache. Returns the
|
|
@@ -107,4 +130,6 @@ export declare class WorkflowSpecCache {
|
|
|
107
130
|
pruneNoiseDirRows(installRoot?: string): number;
|
|
108
131
|
getByIdOrThrow(specId: string): WorkflowSpecRow;
|
|
109
132
|
}
|
|
133
|
+
/** Exported for the named honest-degrade test only. */
|
|
134
|
+
export declare function resetLegacyRehydrationWarnings(): void;
|
|
110
135
|
//# sourceMappingURL=workflow-spec-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-spec-cache.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-spec-cache.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-spec-cache.d.ts","sourceRoot":"","sources":["../../src/domain/workflow-spec-cache.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAqCzE,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,IAAI,EAAE,MAAM;aAEZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAKpD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,8KAc1B,CAAC;AACX,eAAO,MAAM,kBAAkB,oGAarB,CAAC;AACX,eAAO,MAAM,kBAAkB,8CAA+C,CAAC;AAC/E,eAAO,MAAM,sBAAsB,4CAA6C,CAAC;AACjF,eAAO,MAAM,kBAAkB,gDAAiD,CAAC;AACjF,eAAO,MAAM,oBAAoB,kBAAmB,CAAC;AACrD,eAAO,MAAM,mBAAmB,mBAAoB,CAAC;AACrD,eAAO,MAAM,wBAAwB,6FAK3B,CAAC;AACX,eAAO,MAAM,qBAAqB,4CAA6C,CAAC;AAChF,eAAO,MAAM,yBAAyB,uCAAwC,CAAC;AAC/E;iDACiD;AACjD,eAAO,MAAM,+BAA+B,sDAIlC,CAAC;AAuBX;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAoUnF;AAED,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;gBAGzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,GAAG,GAAE,MAAM,IAAuB;IAKrD;;;;OAIG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe;IAkHhD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAOvE;;;;;;;;;;;;;;;;;OAiBG;IACH,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWpD;;;;;OAKG;IACH,OAAO,IAAI,eAAe,EAAE;IAO5B;;;;;;;;;;;;;;;OAeG;IACH,eAAe,CAAC,IAAI,EAAE;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI;IAqCR;;;;OAIG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAO9C;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM;IAmB/C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAahD;AAID,uDAAuD;AACvD,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
|
|
@@ -13,6 +13,21 @@ import { createHash } from "node:crypto";
|
|
|
13
13
|
import { existsSync, readFileSync } from "node:fs";
|
|
14
14
|
import { ulid } from "ulid";
|
|
15
15
|
import { parse as parseYaml } from "yaml";
|
|
16
|
+
import { WORKFLOW_AGENT_HARNESSES, WORKFLOW_EXIT_KINDS } from "./workflow-types.js";
|
|
17
|
+
/** Defensive column probe (the detectQueueColumn house pattern) —
|
|
18
|
+
* older test fixtures bypass the canonical migration list, so
|
|
19
|
+
* spec_json (migration 050) may be absent. */
|
|
20
|
+
function detectSpecColumn(db, columnName) {
|
|
21
|
+
try {
|
|
22
|
+
return db
|
|
23
|
+
.prepare("PRAGMA table_info(workflow_specs)")
|
|
24
|
+
.all()
|
|
25
|
+
.some((row) => row.name === columnName);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
16
31
|
export class WorkflowSpecError extends Error {
|
|
17
32
|
code;
|
|
18
33
|
details;
|
|
@@ -23,6 +38,75 @@ export class WorkflowSpecError extends Error {
|
|
|
23
38
|
this.name = "WorkflowSpecError";
|
|
24
39
|
}
|
|
25
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* OPR.0.4.6.WF1 FR-7 — THE closed keysets, EXPORTED as named
|
|
43
|
+
* constants: parseWorkflowSpec is the ONLY seam that sees raw keys
|
|
44
|
+
* (the validator operates on the typed spec and can never see dropped
|
|
45
|
+
* keys), so unknown-key rejection lands here — and WF-2's new fields
|
|
46
|
+
* (next_hop.on / harness / host / gate) EXTEND these constants rather
|
|
47
|
+
* than re-plumbing the parser.
|
|
48
|
+
*/
|
|
49
|
+
export const WORKFLOW_TOP_LEVEL_KEYS = [
|
|
50
|
+
"id",
|
|
51
|
+
"version",
|
|
52
|
+
"objective",
|
|
53
|
+
"target",
|
|
54
|
+
"entry",
|
|
55
|
+
"roles",
|
|
56
|
+
"steps",
|
|
57
|
+
"invariants",
|
|
58
|
+
"closure",
|
|
59
|
+
"loop_guards",
|
|
60
|
+
// OPR.0.4.6.WF5 FR-2: the maturity dial's spec-declared routing surface.
|
|
61
|
+
"exception_routing",
|
|
62
|
+
"coordination_terminal_turn_rule",
|
|
63
|
+
];
|
|
64
|
+
export const WORKFLOW_STEP_KEYS = [
|
|
65
|
+
"id",
|
|
66
|
+
"actor_role",
|
|
67
|
+
"objective",
|
|
68
|
+
"allowed_exits",
|
|
69
|
+
"next_hop",
|
|
70
|
+
// OPR.0.4.6.WF2: `gates` is deliberately NOT in this list — it is
|
|
71
|
+
// REMOVED with a specific migration error (checked before the
|
|
72
|
+
// unknown-key sweep so authors get the what/why/fix, not a generic
|
|
73
|
+
// unknown-key rejection).
|
|
74
|
+
"harness",
|
|
75
|
+
"host",
|
|
76
|
+
"gate",
|
|
77
|
+
];
|
|
78
|
+
export const WORKFLOW_ROLE_KEYS = ["skill_refs", "preferred_targets"];
|
|
79
|
+
export const WORKFLOW_NEXT_HOP_KEYS = ["mode", "suggested_roles", "on"];
|
|
80
|
+
export const WORKFLOW_GATE_KEYS = ["target", "summary", "evidence_ref"];
|
|
81
|
+
export const WORKFLOW_TARGET_KEYS = ["rig"];
|
|
82
|
+
export const WORKFLOW_ENTRY_KEYS = ["role"];
|
|
83
|
+
export const WORKFLOW_INVARIANTS_KEYS = [
|
|
84
|
+
"continuation_required",
|
|
85
|
+
"allowed_exits",
|
|
86
|
+
"preserve_lineage",
|
|
87
|
+
"closure_required",
|
|
88
|
+
];
|
|
89
|
+
export const WORKFLOW_CLOSURE_KEYS = ["success", "degraded", "failed"];
|
|
90
|
+
export const WORKFLOW_LOOP_GUARDS_KEYS = ["max_hops", "spawn_budget"];
|
|
91
|
+
/** OPR.0.4.6.WF5 FR-2: the dial grammar keyset (WF-2 strictness rail —
|
|
92
|
+
* unknown keys reject loud naming this set). */
|
|
93
|
+
export const WORKFLOW_EXCEPTION_ROUTING_KEYS = [
|
|
94
|
+
"default",
|
|
95
|
+
"orchestrator_role",
|
|
96
|
+
"classes",
|
|
97
|
+
];
|
|
98
|
+
/** FR-7: reject unknown keys loud (what/why/fix) instead of the
|
|
99
|
+
* pre-0.4.6 silent drop. Applied only to object-shaped nodes; shape
|
|
100
|
+
* errors on non-objects stay the concern of the existing checks. */
|
|
101
|
+
function rejectUnknownKeys(node, allowed, path, sourcePath) {
|
|
102
|
+
if (!node || typeof node !== "object" || Array.isArray(node))
|
|
103
|
+
return;
|
|
104
|
+
for (const key of Object.keys(node)) {
|
|
105
|
+
if (!allowed.includes(key)) {
|
|
106
|
+
throw new WorkflowSpecError("spec_unknown_key", `workflow spec at ${sourcePath}: unknown key "${key}" at ${path}. Allowed keys: [${allowed.join(", ")}]. Unknown keys were silently DROPPED before 0.4.6 (the spec looked accepted while the field did nothing); they now fail loud — remove the key or fix its spelling.`, { sourcePath, path, key, allowed: [...allowed] });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
26
110
|
/**
|
|
27
111
|
* Parse a workflow spec from raw YAML content. The POC fixture shape
|
|
28
112
|
* wraps everything under a top-level `workflow:` key:
|
|
@@ -34,7 +118,8 @@ export class WorkflowSpecError extends Error {
|
|
|
34
118
|
* steps: [ ... ]
|
|
35
119
|
*
|
|
36
120
|
* Returns the parsed spec or throws WorkflowSpecError on malformed
|
|
37
|
-
* YAML / missing required fields.
|
|
121
|
+
* YAML / missing required fields. FR-7: unknown keys at every level
|
|
122
|
+
* are rejected loud against the exported closed keysets above.
|
|
38
123
|
*/
|
|
39
124
|
export function parseWorkflowSpec(rawYaml, sourcePath) {
|
|
40
125
|
let parsed;
|
|
@@ -64,6 +149,159 @@ export function parseWorkflowSpec(rawYaml, sourcePath) {
|
|
|
64
149
|
if (!wf.roles || typeof wf.roles !== "object" || Array.isArray(wf.roles)) {
|
|
65
150
|
throw new WorkflowSpecError("spec_field_missing", `workflow spec at ${sourcePath} requires a workflow.roles mapping`, { sourcePath, field: "workflow.roles" });
|
|
66
151
|
}
|
|
152
|
+
// FR-7: strict unknown-key rejection at every level — INCLUDING the
|
|
153
|
+
// document root (guard blocker 2 recipe): only `workflow:` may sit
|
|
154
|
+
// at the YAML root; a stray root sibling was silently ignored.
|
|
155
|
+
rejectUnknownKeys(root, ["workflow"], "(document root)", sourcePath);
|
|
156
|
+
rejectUnknownKeys(wf, WORKFLOW_TOP_LEVEL_KEYS, "workflow", sourcePath);
|
|
157
|
+
// FR-6/FR-7 (guard blocker 2): loop_guards SHAPE validation at the
|
|
158
|
+
// raw seam. A nonnumeric max_hops would sanction a cycle at
|
|
159
|
+
// validation while the runtime comparison coerces to NaN and never
|
|
160
|
+
// trips — reopening the unbounded-loop class. Reject loud here, the
|
|
161
|
+
// only place that sees the raw value.
|
|
162
|
+
if (wf.loop_guards && typeof wf.loop_guards === "object" && !Array.isArray(wf.loop_guards)) {
|
|
163
|
+
const lg = wf.loop_guards;
|
|
164
|
+
// Normalize YAML `key: null` to ABSENT — a null that survived into
|
|
165
|
+
// the typed spec would coerce to 0 in the projection comparison
|
|
166
|
+
// and trip every first handoff.
|
|
167
|
+
if (lg.max_hops === null)
|
|
168
|
+
delete lg.max_hops;
|
|
169
|
+
if (lg.spawn_budget === null)
|
|
170
|
+
delete lg.spawn_budget;
|
|
171
|
+
if (lg.max_hops !== undefined) {
|
|
172
|
+
if (typeof lg.max_hops !== "number" || !Number.isInteger(lg.max_hops) || lg.max_hops < 1) {
|
|
173
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.loop_guards.max_hops must be an integer >= 1 (got ${JSON.stringify(lg.max_hops)}). A non-numeric or non-positive guard can never trip at projection, so it cannot sanction a cycle — fix the value or remove the key.`, { sourcePath, field: "workflow.loop_guards.max_hops", value: lg.max_hops });
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (lg.spawn_budget !== undefined) {
|
|
177
|
+
if (typeof lg.spawn_budget !== "number" || !Number.isInteger(lg.spawn_budget) || lg.spawn_budget < 0) {
|
|
178
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.loop_guards.spawn_budget must be an integer >= 0 (got ${JSON.stringify(lg.spawn_budget)}).`, { sourcePath, field: "workflow.loop_guards.spawn_budget", value: lg.spawn_budget });
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
// OPR.0.4.6.WF5 FR-2: the dial grammar at the raw seam. Positions are
|
|
183
|
+
// the closed value space; classes keys are the closed FR-1 class set
|
|
184
|
+
// MINUS human_gate_trip (intrinsically human-only — a config line
|
|
185
|
+
// claiming otherwise would silently lie, so it rejects loud).
|
|
186
|
+
if (wf.exception_routing !== undefined) {
|
|
187
|
+
const er = wf.exception_routing;
|
|
188
|
+
if (!er || typeof er !== "object" || Array.isArray(er)) {
|
|
189
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.exception_routing must be a mapping (got ${JSON.stringify(er)}). Declare default / orchestrator_role / classes, or remove the key for the host-default → orchestrator-first chain.`, { sourcePath, field: "workflow.exception_routing" });
|
|
190
|
+
}
|
|
191
|
+
rejectUnknownKeys(er, WORKFLOW_EXCEPTION_ROUTING_KEYS, "workflow.exception_routing", sourcePath);
|
|
192
|
+
const erm = er;
|
|
193
|
+
const validPosition = (v) => v === "orchestrator" || v === "human_only";
|
|
194
|
+
if (erm.default !== undefined && !validPosition(erm.default)) {
|
|
195
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.exception_routing.default must be "orchestrator" or "human_only" (got ${JSON.stringify(erm.default)}).`, { sourcePath, field: "workflow.exception_routing.default", value: erm.default });
|
|
196
|
+
}
|
|
197
|
+
if (erm.orchestrator_role !== undefined && (typeof erm.orchestrator_role !== "string" || erm.orchestrator_role.length === 0)) {
|
|
198
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.exception_routing.orchestrator_role must be a non-empty declared role name (got ${JSON.stringify(erm.orchestrator_role)}). Role EXISTENCE is the validator's graph check.`, { sourcePath, field: "workflow.exception_routing.orchestrator_role", value: erm.orchestrator_role });
|
|
199
|
+
}
|
|
200
|
+
if (erm.classes !== undefined) {
|
|
201
|
+
const cls = erm.classes;
|
|
202
|
+
if (!cls || typeof cls !== "object" || Array.isArray(cls)) {
|
|
203
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.exception_routing.classes must be a mapping of exception class → position (got ${JSON.stringify(cls)}).`, { sourcePath, field: "workflow.exception_routing.classes" });
|
|
204
|
+
}
|
|
205
|
+
for (const [k, v] of Object.entries(cls)) {
|
|
206
|
+
if (k === "human_gate_trip") {
|
|
207
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.exception_routing.classes.human_gate_trip is not configurable — a human gate is intrinsically human-only (the human decision IS the exception); the dial cannot re-point it. Remove the line.`, { sourcePath, field: "workflow.exception_routing.classes.human_gate_trip" });
|
|
208
|
+
}
|
|
209
|
+
if (k !== "unmapped_failed" && k !== "stuck_overdue") {
|
|
210
|
+
throw new WorkflowSpecError("spec_unknown_key", `workflow spec at ${sourcePath}: workflow.exception_routing.classes.${k} is not a known exception class. Allowed: unmapped_failed, stuck_overdue.`, { sourcePath, field: `workflow.exception_routing.classes.${k}` });
|
|
211
|
+
}
|
|
212
|
+
if (!validPosition(v)) {
|
|
213
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.exception_routing.classes.${k} must be "orchestrator" or "human_only" (got ${JSON.stringify(v)}).`, { sourcePath, field: `workflow.exception_routing.classes.${k}`, value: v });
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
rejectUnknownKeys(wf.target, WORKFLOW_TARGET_KEYS, "workflow.target", sourcePath);
|
|
219
|
+
rejectUnknownKeys(wf.entry, WORKFLOW_ENTRY_KEYS, "workflow.entry", sourcePath);
|
|
220
|
+
rejectUnknownKeys(wf.invariants, WORKFLOW_INVARIANTS_KEYS, "workflow.invariants", sourcePath);
|
|
221
|
+
rejectUnknownKeys(wf.closure, WORKFLOW_CLOSURE_KEYS, "workflow.closure", sourcePath);
|
|
222
|
+
rejectUnknownKeys(wf.loop_guards, WORKFLOW_LOOP_GUARDS_KEYS, "workflow.loop_guards", sourcePath);
|
|
223
|
+
for (const [roleName, role] of Object.entries(wf.roles)) {
|
|
224
|
+
rejectUnknownKeys(role, WORKFLOW_ROLE_KEYS, `workflow.roles.${roleName}`, sourcePath);
|
|
225
|
+
}
|
|
226
|
+
wf.steps.forEach((step, idx) => {
|
|
227
|
+
if (step && typeof step === "object" && !Array.isArray(step)) {
|
|
228
|
+
const s = step;
|
|
229
|
+
// OPR.0.4.6.WF2 FR-5: the legacy `gates: [...]` string list is
|
|
230
|
+
// REMOVED at parse — checked BEFORE the unknown-key sweep so the
|
|
231
|
+
// author gets the specific migration recipe, not a generic
|
|
232
|
+
// rejection. Safe for pinned in-flight instances by FR-6
|
|
233
|
+
// versioning honesty (they complete un-failed; re-validation of
|
|
234
|
+
// the FILE teaches the new shape).
|
|
235
|
+
if (s.gates !== undefined) {
|
|
236
|
+
throw new WorkflowSpecError("spec_gates_removed", `workflow spec at ${sourcePath}: workflow.steps[${idx}].gates is removed in 0.4.6. The string list could not carry a target/summary/evidence without becoming a magic-string mini-grammar, and it was never enforced. Declare the structured step-level gate instead:\n gate:\n target: <human seat session or declared role name>\n summary: <plain-language ask> # required for a human target\n evidence_ref: <durable artifact path> # required for a human target`, { sourcePath, path: `workflow.steps[${idx}].gates` });
|
|
237
|
+
}
|
|
238
|
+
// OPR.0.4.6.WF2 FR-4: `next_hop.mode: prefer` is REMOVED — it
|
|
239
|
+
// never had distinct behavior (identical to omitting mode), the
|
|
240
|
+
// inert third state dies. Specific migration error before the
|
|
241
|
+
// shape checks below.
|
|
242
|
+
const nh = s.next_hop;
|
|
243
|
+
if (nh && typeof nh === "object" && !Array.isArray(nh) && nh.mode === "prefer") {
|
|
244
|
+
throw new WorkflowSpecError("spec_prefer_mode_removed", `workflow spec at ${sourcePath}: workflow.steps[${idx}].next_hop.mode "prefer" is removed in 0.4.6. It never had distinct behavior — routing treated it identically to omitting mode. Delete the mode line (same routing), or use "require" (route ONLY via suggested_roles; no declaration-order fallback) / "forbid" (terminal step).`, { sourcePath, path: `workflow.steps[${idx}].next_hop.mode` });
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
rejectUnknownKeys(step, WORKFLOW_STEP_KEYS, `workflow.steps[${idx}]`, sourcePath);
|
|
248
|
+
if (step && typeof step === "object" && !Array.isArray(step)) {
|
|
249
|
+
const s = step;
|
|
250
|
+
rejectUnknownKeys(s.next_hop, WORKFLOW_NEXT_HOP_KEYS, `workflow.steps[${idx}].next_hop`, sourcePath);
|
|
251
|
+
// OPR.0.4.6.WF2 FR-1: branch-key shape at the raw seam — keys of
|
|
252
|
+
// next_hop.on are the closed exit enum ONLY (BR-1); values are
|
|
253
|
+
// non-empty step-id strings (target EXISTENCE is the validator's
|
|
254
|
+
// graph check).
|
|
255
|
+
const nh = s.next_hop;
|
|
256
|
+
const on = nh?.on;
|
|
257
|
+
if (on !== undefined) {
|
|
258
|
+
if (!on || typeof on !== "object" || Array.isArray(on)) {
|
|
259
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.steps[${idx}].next_hop.on must be a mapping of recorded exit → step id (got ${JSON.stringify(on)}).`, { sourcePath, path: `workflow.steps[${idx}].next_hop.on` });
|
|
260
|
+
}
|
|
261
|
+
for (const [exitKey, target] of Object.entries(on)) {
|
|
262
|
+
if (!WORKFLOW_EXIT_KINDS.includes(exitKey)) {
|
|
263
|
+
throw new WorkflowSpecError("spec_branch_key_invalid", `workflow spec at ${sourcePath}: workflow.steps[${idx}].next_hop.on key "${exitKey}" is not a recorded exit. Branch keys are the closed exit enum ONLY: [${WORKFLOW_EXIT_KINDS.join(", ")}] — branching on anything else (free text, identity, evidence JSON) is deliberately unsupported (branch purity).`, { sourcePath, path: `workflow.steps[${idx}].next_hop.on.${exitKey}`, allowed: [...WORKFLOW_EXIT_KINDS] });
|
|
264
|
+
}
|
|
265
|
+
if (typeof target !== "string" || target.length === 0) {
|
|
266
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.steps[${idx}].next_hop.on.${exitKey} must be a step id string (got ${JSON.stringify(target)}).`, { sourcePath, path: `workflow.steps[${idx}].next_hop.on.${exitKey}` });
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
// OPR.0.4.6.WF2 FR-2: harness value space at the raw seam —
|
|
271
|
+
// agent harnesses only; `terminal` gets the specific teaching
|
|
272
|
+
// error (it is a real runtime value but not a pinnable one).
|
|
273
|
+
if (s.harness !== undefined) {
|
|
274
|
+
if (typeof s.harness !== "string" ||
|
|
275
|
+
!WORKFLOW_AGENT_HARNESSES.includes(s.harness)) {
|
|
276
|
+
throw new WorkflowSpecError("spec_harness_invalid", `workflow spec at ${sourcePath}: workflow.steps[${idx}].harness must be one of the AGENT harnesses [${WORKFLOW_AGENT_HARNESSES.join(", ")}] (got ${JSON.stringify(s.harness)}).${s.harness === "terminal" ? " A terminal node is not an agent harness — a workflow step cannot be pinned to it." : ""} Pi Agent joins the value space in 0.4.7 when its adapter lands.`, { sourcePath, path: `workflow.steps[${idx}].harness`, allowed: [...WORKFLOW_AGENT_HARNESSES] });
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// OPR.0.4.6.WF2 FR-3: host pin shape — non-empty string. Registry
|
|
280
|
+
// membership is the validator's check (it sees the registry);
|
|
281
|
+
// the parser only pins the shape.
|
|
282
|
+
if (s.host !== undefined && (typeof s.host !== "string" || s.host.length === 0)) {
|
|
283
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.steps[${idx}].host must be "local" or a registered host id string (got ${JSON.stringify(s.host)}).`, { sourcePath, path: `workflow.steps[${idx}].host` });
|
|
284
|
+
}
|
|
285
|
+
// OPR.0.4.6.WF2 FR-5: gate object shape — closed keyset, singular,
|
|
286
|
+
// target required. Target-kind resolution (human seat vs declared
|
|
287
|
+
// role) is the validator's semantic check.
|
|
288
|
+
if (s.gate !== undefined) {
|
|
289
|
+
if (!s.gate || typeof s.gate !== "object" || Array.isArray(s.gate)) {
|
|
290
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.steps[${idx}].gate must be a mapping with a target (and summary/evidence_ref for human targets). The legacy gates: [...] string list is removed.`, { sourcePath, path: `workflow.steps[${idx}].gate` });
|
|
291
|
+
}
|
|
292
|
+
rejectUnknownKeys(s.gate, WORKFLOW_GATE_KEYS, `workflow.steps[${idx}].gate`, sourcePath);
|
|
293
|
+
const g = s.gate;
|
|
294
|
+
if (typeof g.target !== "string" || g.target.length === 0) {
|
|
295
|
+
throw new WorkflowSpecError("spec_field_missing", `workflow spec at ${sourcePath}: workflow.steps[${idx}].gate.target is required — a human seat session or a declared role name.`, { sourcePath, field: `workflow.steps[${idx}].gate.target` });
|
|
296
|
+
}
|
|
297
|
+
for (const optional of ["summary", "evidence_ref"]) {
|
|
298
|
+
if (g[optional] !== undefined && (typeof g[optional] !== "string" || g[optional].length === 0)) {
|
|
299
|
+
throw new WorkflowSpecError("spec_field_invalid", `workflow spec at ${sourcePath}: workflow.steps[${idx}].gate.${optional} must be a non-empty string when present (got ${JSON.stringify(g[optional])}).`, { sourcePath, path: `workflow.steps[${idx}].gate.${optional}` });
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
});
|
|
67
305
|
return {
|
|
68
306
|
id: wf.id,
|
|
69
307
|
version: String(wf.version),
|
|
@@ -75,6 +313,10 @@ export function parseWorkflowSpec(rawYaml, sourcePath) {
|
|
|
75
313
|
invariants: wf.invariants,
|
|
76
314
|
closure: wf.closure,
|
|
77
315
|
loop_guards: wf.loop_guards,
|
|
316
|
+
// OPR.0.4.6.WF5 FR-2: validated above — and COPIED here (the exact
|
|
317
|
+
// WF-1 migration-050 lesson: a validated key dropped at assembly is
|
|
318
|
+
// silently inert; the VM caught this one at first execution).
|
|
319
|
+
exception_routing: wf.exception_routing,
|
|
78
320
|
coordination_terminal_turn_rule: typeof wf.coordination_terminal_turn_rule === "string"
|
|
79
321
|
? wf.coordination_terminal_turn_rule
|
|
80
322
|
: undefined,
|
|
@@ -83,9 +325,11 @@ export function parseWorkflowSpec(rawYaml, sourcePath) {
|
|
|
83
325
|
export class WorkflowSpecCache {
|
|
84
326
|
db;
|
|
85
327
|
now;
|
|
328
|
+
hasSpecJsonColumn;
|
|
86
329
|
constructor(db, now = () => new Date()) {
|
|
87
330
|
this.db = db;
|
|
88
331
|
this.now = now;
|
|
332
|
+
this.hasSpecJsonColumn = detectSpecColumn(db, "spec_json");
|
|
89
333
|
}
|
|
90
334
|
/**
|
|
91
335
|
* Read a workflow spec from disk through the cache. Returns the
|
|
@@ -106,6 +350,15 @@ export class WorkflowSpecCache {
|
|
|
106
350
|
// readThrough is file-authoritative: return the freshly parsed
|
|
107
351
|
// file spec so validation sees non-column metadata such as
|
|
108
352
|
// workflow.entry and workflow.invariants.
|
|
353
|
+
// OPR.0.4.6.WF1: self-heal legacy rows — backfill spec_json so
|
|
354
|
+
// PROJECTION-time consumers (getByNameVersion) also see the full
|
|
355
|
+
// spec (loop_guards/invariants/closure/entry were dropped by the
|
|
356
|
+
// column-only reconstruction before migration 050).
|
|
357
|
+
if (this.hasSpecJsonColumn && !existing.spec_json) {
|
|
358
|
+
this.db
|
|
359
|
+
.prepare(`UPDATE workflow_specs SET spec_json = ? WHERE spec_id = ?`)
|
|
360
|
+
.run(JSON.stringify(spec), existing.spec_id);
|
|
361
|
+
}
|
|
109
362
|
return rowToWorkflowSpec(existing, spec);
|
|
110
363
|
}
|
|
111
364
|
const cachedAt = this.now().toISOString();
|
|
@@ -116,13 +369,27 @@ export class WorkflowSpecCache {
|
|
|
116
369
|
const coordinationTerminalTurnRule = spec.coordination_terminal_turn_rule ?? "hot_potato";
|
|
117
370
|
if (existing) {
|
|
118
371
|
// Update in place (same name+version, content changed).
|
|
372
|
+
const specJsonSet = this.hasSpecJsonColumn ? ", spec_json = ?" : "";
|
|
373
|
+
const updateParams = [
|
|
374
|
+
purpose,
|
|
375
|
+
targetRig,
|
|
376
|
+
rolesJson,
|
|
377
|
+
stepsJson,
|
|
378
|
+
coordinationTerminalTurnRule,
|
|
379
|
+
sourcePath,
|
|
380
|
+
sourceHash,
|
|
381
|
+
cachedAt,
|
|
382
|
+
];
|
|
383
|
+
if (this.hasSpecJsonColumn)
|
|
384
|
+
updateParams.push(JSON.stringify(spec));
|
|
385
|
+
updateParams.push(existing.spec_id);
|
|
119
386
|
this.db
|
|
120
387
|
.prepare(`UPDATE workflow_specs SET
|
|
121
388
|
purpose = ?, target_rig = ?, roles_json = ?, steps_json = ?,
|
|
122
389
|
coordination_terminal_turn_rule = ?, source_path = ?,
|
|
123
|
-
source_hash = ?, cached_at =
|
|
390
|
+
source_hash = ?, cached_at = ?${specJsonSet}
|
|
124
391
|
WHERE spec_id = ?`)
|
|
125
|
-
.run(
|
|
392
|
+
.run(...updateParams);
|
|
126
393
|
return rowToWorkflowSpec({
|
|
127
394
|
...existing,
|
|
128
395
|
purpose,
|
|
@@ -136,13 +403,30 @@ export class WorkflowSpecCache {
|
|
|
136
403
|
}, spec);
|
|
137
404
|
}
|
|
138
405
|
const specId = ulid();
|
|
406
|
+
const insertCols = this.hasSpecJsonColumn ? ", spec_json" : "";
|
|
407
|
+
const insertPlaceholder = this.hasSpecJsonColumn ? ", ?" : "";
|
|
408
|
+
const insertParams = [
|
|
409
|
+
specId,
|
|
410
|
+
spec.id,
|
|
411
|
+
spec.version,
|
|
412
|
+
purpose,
|
|
413
|
+
targetRig,
|
|
414
|
+
rolesJson,
|
|
415
|
+
stepsJson,
|
|
416
|
+
coordinationTerminalTurnRule,
|
|
417
|
+
sourcePath,
|
|
418
|
+
sourceHash,
|
|
419
|
+
cachedAt,
|
|
420
|
+
];
|
|
421
|
+
if (this.hasSpecJsonColumn)
|
|
422
|
+
insertParams.push(JSON.stringify(spec));
|
|
139
423
|
this.db
|
|
140
424
|
.prepare(`INSERT INTO workflow_specs (
|
|
141
425
|
spec_id, name, version, purpose, target_rig,
|
|
142
426
|
roles_json, steps_json, coordination_terminal_turn_rule,
|
|
143
|
-
source_path, source_hash, cached_at
|
|
144
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
|
145
|
-
.run(
|
|
427
|
+
source_path, source_hash, cached_at${insertCols}
|
|
428
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?${insertPlaceholder})`)
|
|
429
|
+
.run(...insertParams);
|
|
146
430
|
return rowToWorkflowSpec({
|
|
147
431
|
spec_id: specId,
|
|
148
432
|
name: spec.id,
|
|
@@ -307,21 +591,51 @@ export class WorkflowSpecCache {
|
|
|
307
591
|
return rowToWorkflowSpec(row);
|
|
308
592
|
}
|
|
309
593
|
}
|
|
594
|
+
const warnedLegacyRehydrations = new Set();
|
|
595
|
+
/** Exported for the named honest-degrade test only. */
|
|
596
|
+
export function resetLegacyRehydrationWarnings() {
|
|
597
|
+
warnedLegacyRehydrations.clear();
|
|
598
|
+
}
|
|
599
|
+
function warnLegacyRehydrationOnce(name, version) {
|
|
600
|
+
const key = `${name}@${version}`;
|
|
601
|
+
if (warnedLegacyRehydrations.has(key))
|
|
602
|
+
return;
|
|
603
|
+
warnedLegacyRehydrations.add(key);
|
|
604
|
+
console.warn(`workflow spec ${key} rehydrated WITHOUT full fidelity (pre-050 cache row: loop_guards/invariants/closure/entry unavailable at projection). Re-validate the spec file (rig workflow validate <path>) to heal the cache row.`);
|
|
605
|
+
}
|
|
310
606
|
function rowToWorkflowSpec(row, parsedSpec) {
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
607
|
+
// OPR.0.4.6.WF1: prefer, in order — the freshly file-parsed spec
|
|
608
|
+
// (readThrough's file-authoritative override), then the STORED full
|
|
609
|
+
// spec (migration 050 spec_json — what makes loop_guards/invariants/
|
|
610
|
+
// closure/entry visible at PROJECTION time via getByNameVersion),
|
|
611
|
+
// then the legacy column-only reconstruction (pre-050 rows; those
|
|
612
|
+
// fields are honestly absent until the row self-heals on next
|
|
613
|
+
// readThrough).
|
|
614
|
+
const storedSpec = !parsedSpec && row.spec_json
|
|
615
|
+
? JSON.parse(row.spec_json)
|
|
616
|
+
: undefined;
|
|
617
|
+
const hydrated = parsedSpec ?? storedSpec;
|
|
618
|
+
if (!hydrated) {
|
|
619
|
+
// The residual worst case (arch fold, mid-build contract): a
|
|
620
|
+
// legacy pre-050 row whose source file may be gone, resolved at
|
|
621
|
+
// projection time — the reconstruction below has NO
|
|
622
|
+
// loop_guards/invariants/closure/entry. The degrade must be
|
|
623
|
+
// VISIBLE, never a silent no-guards run. Once per spec per
|
|
624
|
+
// process (bounded noise; the condition holds until healed).
|
|
625
|
+
warnLegacyRehydrationOnce(row.name, row.version);
|
|
626
|
+
}
|
|
627
|
+
const spec = hydrated
|
|
314
628
|
? {
|
|
315
|
-
...
|
|
316
|
-
coordination_terminal_turn_rule:
|
|
629
|
+
...hydrated,
|
|
630
|
+
coordination_terminal_turn_rule: hydrated.coordination_terminal_turn_rule ?? row.coordination_terminal_turn_rule,
|
|
317
631
|
}
|
|
318
632
|
: {
|
|
319
633
|
id: row.name,
|
|
320
634
|
version: row.version,
|
|
321
635
|
objective: row.purpose ?? undefined,
|
|
322
636
|
target: row.target_rig ? { rig: row.target_rig } : undefined,
|
|
323
|
-
roles,
|
|
324
|
-
steps,
|
|
637
|
+
roles: JSON.parse(row.roles_json),
|
|
638
|
+
steps: JSON.parse(row.steps_json),
|
|
325
639
|
coordination_terminal_turn_rule: row.coordination_terminal_turn_rule,
|
|
326
640
|
};
|
|
327
641
|
return {
|