@openrig/cli 0.4.2 → 0.4.4
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/guidance/openrig-start.md +6 -0
- package/daemon/assets/plugins/openrig-core/hooks/scripts/activity-relay.cjs +42 -2
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +115 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +12 -12
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +46 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +167 -3
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts +31 -0
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +62 -0
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/build-info.d.ts +12 -0
- package/daemon/dist/build-info.d.ts.map +1 -0
- package/daemon/dist/build-info.js +11 -0
- package/daemon/dist/build-info.js.map +1 -0
- package/daemon/dist/db/migrations/045_resume_verification.d.ts +29 -0
- package/daemon/dist/db/migrations/045_resume_verification.d.ts.map +1 -0
- package/daemon/dist/db/migrations/045_resume_verification.js +34 -0
- package/daemon/dist/db/migrations/045_resume_verification.js.map +1 -0
- package/daemon/dist/db/migrations/046_seat_identity_verdicts.d.ts +41 -0
- package/daemon/dist/db/migrations/046_seat_identity_verdicts.d.ts.map +1 -0
- package/daemon/dist/db/migrations/046_seat_identity_verdicts.js +56 -0
- package/daemon/dist/db/migrations/046_seat_identity_verdicts.js.map +1 -0
- package/daemon/dist/db/migrations/047_events_node_type_index.d.ts +48 -0
- package/daemon/dist/db/migrations/047_events_node_type_index.d.ts.map +1 -0
- package/daemon/dist/db/migrations/047_events_node_type_index.js +52 -0
- package/daemon/dist/db/migrations/047_events_node_type_index.js.map +1 -0
- package/daemon/dist/db/migrations/048_queue_item_evidence_ref.d.ts +18 -0
- package/daemon/dist/db/migrations/048_queue_item_evidence_ref.d.ts.map +1 -0
- package/daemon/dist/db/migrations/048_queue_item_evidence_ref.js +22 -0
- package/daemon/dist/db/migrations/048_queue_item_evidence_ref.js.map +1 -0
- package/daemon/dist/domain/activity-endpoint.d.ts +25 -0
- package/daemon/dist/domain/activity-endpoint.d.ts.map +1 -0
- package/daemon/dist/domain/activity-endpoint.js +91 -0
- package/daemon/dist/domain/activity-endpoint.js.map +1 -0
- package/daemon/dist/domain/claim-service.d.ts +36 -0
- package/daemon/dist/domain/claim-service.d.ts.map +1 -1
- package/daemon/dist/domain/claim-service.js +90 -0
- package/daemon/dist/domain/claim-service.js.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts +57 -0
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +149 -3
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/event-loop-monitor.d.ts +100 -0
- package/daemon/dist/domain/event-loop-monitor.d.ts.map +1 -0
- package/daemon/dist/domain/event-loop-monitor.js +127 -0
- package/daemon/dist/domain/event-loop-monitor.js.map +1 -0
- package/daemon/dist/domain/feed/attention-aggregator.d.ts +31 -0
- package/daemon/dist/domain/feed/attention-aggregator.d.ts.map +1 -0
- package/daemon/dist/domain/feed/attention-aggregator.js +119 -0
- package/daemon/dist/domain/feed/attention-aggregator.js.map +1 -0
- package/daemon/dist/domain/files/file-write-service.d.ts +11 -2
- package/daemon/dist/domain/files/file-write-service.d.ts.map +1 -1
- package/daemon/dist/domain/files/file-write-service.js +77 -0
- package/daemon/dist/domain/files/file-write-service.js.map +1 -1
- package/daemon/dist/domain/gate-predicate.d.ts +29 -0
- package/daemon/dist/domain/gate-predicate.d.ts.map +1 -0
- package/daemon/dist/domain/gate-predicate.js +73 -0
- package/daemon/dist/domain/gate-predicate.js.map +1 -0
- package/daemon/dist/domain/graph-projection.d.ts +7 -1
- package/daemon/dist/domain/graph-projection.d.ts.map +1 -1
- package/daemon/dist/domain/graph-projection.js +19 -1
- package/daemon/dist/domain/graph-projection.js.map +1 -1
- package/daemon/dist/domain/hosts/fanout-contract.d.ts +33 -0
- package/daemon/dist/domain/hosts/fanout-contract.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/fanout-contract.js +23 -0
- package/daemon/dist/domain/hosts/fanout-contract.js.map +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts +49 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.js +165 -0
- package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts +35 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.js +105 -0
- package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -0
- package/daemon/dist/domain/human-route-enforcer.d.ts +71 -0
- package/daemon/dist/domain/human-route-enforcer.d.ts.map +1 -0
- package/daemon/dist/domain/human-route-enforcer.js +80 -0
- package/daemon/dist/domain/human-route-enforcer.js.map +1 -0
- package/daemon/dist/domain/mission-control/audit-browse.d.ts +8 -0
- package/daemon/dist/domain/mission-control/audit-browse.d.ts.map +1 -1
- package/daemon/dist/domain/mission-control/audit-browse.js +19 -0
- package/daemon/dist/domain/mission-control/audit-browse.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts +1 -1
- package/daemon/dist/domain/mission-control/mission-control-action-log.d.ts.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-action-log.js +4 -0
- package/daemon/dist/domain/mission-control/mission-control-action-log.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js +1 -1
- package/daemon/dist/domain/mission-control/mission-control-fleet-cli-capability.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-read-layer.js +1 -1
- package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts +28 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.d.ts.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-write-contract.js +125 -0
- package/daemon/dist/domain/mission-control/mission-control-write-contract.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +7 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +84 -5
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.js +11 -0
- package/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
- package/daemon/dist/domain/policies/idle-gate-qitem.d.ts +14 -0
- package/daemon/dist/domain/policies/idle-gate-qitem.d.ts.map +1 -0
- package/daemon/dist/domain/policies/idle-gate-qitem.js +114 -0
- package/daemon/dist/domain/policies/idle-gate-qitem.js.map +1 -0
- package/daemon/dist/domain/ps-projection.d.ts +28 -1
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +39 -0
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +25 -1
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +111 -7
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.d.ts +8 -0
- package/daemon/dist/domain/restore-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/restore-orchestrator.js +109 -27
- package/daemon/dist/domain/restore-orchestrator.js.map +1 -1
- package/daemon/dist/domain/restore-plan-preview.d.ts +25 -1
- package/daemon/dist/domain/restore-plan-preview.d.ts.map +1 -1
- package/daemon/dist/domain/restore-plan-preview.js +72 -4
- package/daemon/dist/domain/restore-plan-preview.js.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.d.ts +44 -2
- package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.js +92 -6
- package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/daemon/dist/domain/resume-token-capture.d.ts +50 -0
- package/daemon/dist/domain/resume-token-capture.d.ts.map +1 -0
- package/daemon/dist/domain/resume-token-capture.js +63 -0
- package/daemon/dist/domain/resume-token-capture.js.map +1 -0
- package/daemon/dist/domain/review/brief-spine.d.ts +19 -0
- package/daemon/dist/domain/review/brief-spine.d.ts.map +1 -0
- package/daemon/dist/domain/review/brief-spine.js +86 -0
- package/daemon/dist/domain/review/brief-spine.js.map +1 -0
- package/daemon/dist/domain/review/compose.d.ts +228 -0
- package/daemon/dist/domain/review/compose.d.ts.map +1 -0
- package/daemon/dist/domain/review/compose.js +773 -0
- package/daemon/dist/domain/review/compose.js.map +1 -0
- package/daemon/dist/domain/review/freeze.d.ts +31 -0
- package/daemon/dist/domain/review/freeze.d.ts.map +1 -0
- package/daemon/dist/domain/review/freeze.js +257 -0
- package/daemon/dist/domain/review/freeze.js.map +1 -0
- package/daemon/dist/domain/review/gather.d.ts +100 -0
- package/daemon/dist/domain/review/gather.d.ts.map +1 -0
- package/daemon/dist/domain/review/gather.js +676 -0
- package/daemon/dist/domain/review/gather.js.map +1 -0
- package/daemon/dist/domain/review/types.d.ts +258 -0
- package/daemon/dist/domain/review/types.d.ts.map +1 -0
- package/daemon/dist/domain/review/types.js +35 -0
- package/daemon/dist/domain/review/types.js.map +1 -0
- package/daemon/dist/domain/rig-status-compose.d.ts +62 -0
- package/daemon/dist/domain/rig-status-compose.d.ts.map +1 -0
- package/daemon/dist/domain/rig-status-compose.js +149 -0
- package/daemon/dist/domain/rig-status-compose.js.map +1 -0
- package/daemon/dist/domain/rig-teardown.d.ts +3 -1
- package/daemon/dist/domain/rig-teardown.d.ts.map +1 -1
- package/daemon/dist/domain/rig-teardown.js +4 -19
- package/daemon/dist/domain/rig-teardown.js.map +1 -1
- package/daemon/dist/domain/route-timing-recorder.d.ts +42 -0
- package/daemon/dist/domain/route-timing-recorder.d.ts.map +1 -0
- package/daemon/dist/domain/route-timing-recorder.js +62 -0
- package/daemon/dist/domain/route-timing-recorder.js.map +1 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts +64 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -0
- package/daemon/dist/domain/scope/scope-approve.js +153 -0
- package/daemon/dist/domain/scope/scope-approve.js.map +1 -0
- package/daemon/dist/domain/scope/scope-audit.d.ts +11 -1
- package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.js +203 -2
- package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +50 -7
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +273 -33
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/seat-identity-reconciler.d.ts +59 -0
- package/daemon/dist/domain/seat-identity-reconciler.d.ts.map +1 -0
- package/daemon/dist/domain/seat-identity-reconciler.js +207 -0
- package/daemon/dist/domain/seat-identity-reconciler.js.map +1 -0
- package/daemon/dist/domain/seat-identity-store.d.ts +27 -0
- package/daemon/dist/domain/seat-identity-store.d.ts.map +1 -0
- package/daemon/dist/domain/seat-identity-store.js +106 -0
- package/daemon/dist/domain/seat-identity-store.js.map +1 -0
- package/daemon/dist/domain/seat-switch-client-service.d.ts +57 -0
- package/daemon/dist/domain/seat-switch-client-service.d.ts.map +1 -0
- package/daemon/dist/domain/seat-switch-client-service.js +168 -0
- package/daemon/dist/domain/seat-switch-client-service.js.map +1 -0
- package/daemon/dist/domain/self-attach-service.d.ts +8 -0
- package/daemon/dist/domain/self-attach-service.d.ts.map +1 -1
- package/daemon/dist/domain/self-attach-service.js +20 -7
- package/daemon/dist/domain/self-attach-service.js.map +1 -1
- package/daemon/dist/domain/session-registry.d.ts +35 -4
- package/daemon/dist/domain/session-registry.d.ts.map +1 -1
- package/daemon/dist/domain/session-registry.js +89 -10
- package/daemon/dist/domain/session-registry.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +8 -1
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +143 -37
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +34 -2
- package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
- package/daemon/dist/domain/startup-proof.d.ts +63 -0
- package/daemon/dist/domain/startup-proof.d.ts.map +1 -0
- package/daemon/dist/domain/startup-proof.js +165 -0
- package/daemon/dist/domain/startup-proof.js.map +1 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts +103 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -0
- package/daemon/dist/domain/successor-session-launcher.js +246 -0
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -0
- package/daemon/dist/domain/topology/multi-rig-launcher.d.ts +49 -0
- package/daemon/dist/domain/topology/multi-rig-launcher.d.ts.map +1 -0
- package/daemon/dist/domain/topology/multi-rig-launcher.js +132 -0
- package/daemon/dist/domain/topology/multi-rig-launcher.js.map +1 -0
- package/daemon/dist/domain/topology/remote-up-leaf.d.ts +29 -0
- package/daemon/dist/domain/topology/remote-up-leaf.d.ts.map +1 -0
- package/daemon/dist/domain/topology/remote-up-leaf.js +60 -0
- package/daemon/dist/domain/topology/remote-up-leaf.js.map +1 -0
- package/daemon/dist/domain/topology/topology-manifest.d.ts +34 -0
- package/daemon/dist/domain/topology/topology-manifest.d.ts.map +1 -0
- package/daemon/dist/domain/topology/topology-manifest.js +195 -0
- package/daemon/dist/domain/topology/topology-manifest.js.map +1 -0
- package/daemon/dist/domain/types.d.ts +86 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js +8 -0
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/up-command-router.d.ts +1 -1
- package/daemon/dist/domain/up-command-router.d.ts.map +1 -1
- package/daemon/dist/domain/up-command-router.js +34 -2
- package/daemon/dist/domain/up-command-router.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +17 -0
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +109 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -2
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-jobs-repository.js +4 -0
- package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-policy-engine.js +19 -0
- package/daemon/dist/domain/watchdog-policy-engine.js.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js +51 -6
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.d.ts +11 -0
- package/daemon/dist/domain/workspace/workspace-doctor.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.js +82 -0
- package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +18 -1
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/routes/activity.d.ts.map +1 -1
- package/daemon/dist/routes/activity.js +26 -0
- package/daemon/dist/routes/activity.js.map +1 -1
- package/daemon/dist/routes/agent-images.d.ts.map +1 -1
- package/daemon/dist/routes/agent-images.js +139 -0
- package/daemon/dist/routes/agent-images.js.map +1 -1
- package/daemon/dist/routes/compaction.d.ts +17 -0
- package/daemon/dist/routes/compaction.d.ts.map +1 -0
- package/daemon/dist/routes/compaction.js +125 -0
- package/daemon/dist/routes/compaction.js.map +1 -0
- package/daemon/dist/routes/config.d.ts.map +1 -1
- package/daemon/dist/routes/config.js +15 -6
- package/daemon/dist/routes/config.js.map +1 -1
- package/daemon/dist/routes/files.d.ts.map +1 -1
- package/daemon/dist/routes/files.js +45 -1
- package/daemon/dist/routes/files.js.map +1 -1
- package/daemon/dist/routes/mission-control.d.ts.map +1 -1
- package/daemon/dist/routes/mission-control.js +67 -2
- package/daemon/dist/routes/mission-control.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts +8 -2
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +44 -4
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/restore-check.d.ts +10 -0
- package/daemon/dist/routes/restore-check.d.ts.map +1 -1
- package/daemon/dist/routes/restore-check.js +46 -37
- package/daemon/dist/routes/restore-check.js.map +1 -1
- package/daemon/dist/routes/review.d.ts +3 -0
- package/daemon/dist/routes/review.d.ts.map +1 -0
- package/daemon/dist/routes/review.js +169 -0
- package/daemon/dist/routes/review.js.map +1 -0
- package/daemon/dist/routes/rigs.d.ts.map +1 -1
- package/daemon/dist/routes/rigs.js +70 -1
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/scope-approve.d.ts +3 -0
- package/daemon/dist/routes/scope-approve.d.ts.map +1 -0
- package/daemon/dist/routes/scope-approve.js +55 -0
- package/daemon/dist/routes/scope-approve.js.map +1 -0
- package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/daemon/dist/routes/scope-audit.js +28 -1
- package/daemon/dist/routes/scope-audit.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +53 -2
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.d.ts.map +1 -1
- package/daemon/dist/routes/sessions.js +44 -9
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/slices.d.ts.map +1 -1
- package/daemon/dist/routes/slices.js +49 -9
- package/daemon/dist/routes/slices.js.map +1 -1
- package/daemon/dist/routes/snapshots.d.ts.map +1 -1
- package/daemon/dist/routes/snapshots.js +16 -1
- package/daemon/dist/routes/snapshots.js.map +1 -1
- package/daemon/dist/routes/terminal-ws.d.ts.map +1 -1
- package/daemon/dist/routes/terminal-ws.js +58 -21
- package/daemon/dist/routes/terminal-ws.js.map +1 -1
- package/daemon/dist/routes/transport.d.ts.map +1 -1
- package/daemon/dist/routes/transport.js +12 -5
- package/daemon/dist/routes/transport.js.map +1 -1
- package/daemon/dist/routes/up.d.ts.map +1 -1
- package/daemon/dist/routes/up.js +84 -0
- package/daemon/dist/routes/up.js.map +1 -1
- package/daemon/dist/routes/workspace.js +2 -2
- package/daemon/dist/server.d.ts +33 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +41 -1
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts +1 -0
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +108 -20
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-startup-guide.md +1 -1
- package/daemon/docs/reference/product-factory-vps-runbook.md +132 -0
- package/daemon/docs/reference/sdlc-conventions.md +187 -0
- package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/builder/guidance/role.md +1 -0
- package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/lead/guidance/role.md +1 -0
- package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/planner/guidance/role.md +1 -0
- package/daemon/specs/agents/conveyor/reviewer/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/reviewer/guidance/role.md +1 -0
- package/daemon/specs/agents/design/product-designer/agent.yaml +1 -1
- package/daemon/specs/agents/design/product-designer/guidance/role.md +1 -0
- package/daemon/specs/agents/development/implementer/agent.yaml +1 -1
- package/daemon/specs/agents/development/implementer/guidance/role.md +1 -0
- package/daemon/specs/agents/development/qa/agent.yaml +1 -1
- package/daemon/specs/agents/development/qa/guidance/role.md +1 -0
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -1
- package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +1 -0
- package/daemon/specs/agents/product-management/pm/agent.yaml +1 -0
- package/daemon/specs/agents/product-management/pm/guidance/role.md +13 -0
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -1
- package/daemon/specs/agents/review/independent-reviewer/guidance/role.md +1 -0
- package/daemon/specs/agents/shared/agent.yaml +2 -0
- package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +115 -0
- package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +4 -4
- package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +69 -23
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +3 -3
- package/daemon/specs/rigs/focused/pm-team/CULTURE.md +4 -0
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +1 -1
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +1 -1
- package/daemon/specs/rigs/preview/product-team/CULTURE.md +4 -0
- package/dist/build-info.d.ts +8 -0
- package/dist/build-info.d.ts.map +1 -0
- package/dist/build-info.js +11 -0
- package/dist/build-info.js.map +1 -0
- package/dist/commands/compact.d.ts +15 -0
- package/dist/commands/compact.d.ts.map +1 -0
- package/dist/commands/compact.js +62 -0
- package/dist/commands/compact.js.map +1 -0
- package/dist/commands/config-init-workspace.d.ts.map +1 -1
- package/dist/commands/config-init-workspace.js +20 -4
- package/dist/commands/config-init-workspace.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +18 -2
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/expand.js +1 -1
- package/dist/commands/expand.js.map +1 -1
- package/dist/commands/file.d.ts +7 -0
- package/dist/commands/file.d.ts.map +1 -0
- package/dist/commands/file.js +77 -0
- package/dist/commands/file.js.map +1 -0
- package/dist/commands/fork.d.ts +4 -0
- package/dist/commands/fork.d.ts.map +1 -0
- package/dist/commands/fork.js +101 -0
- package/dist/commands/fork.js.map +1 -0
- package/dist/commands/host.d.ts +34 -0
- package/dist/commands/host.d.ts.map +1 -0
- package/dist/commands/host.js +448 -0
- package/dist/commands/host.js.map +1 -0
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +34 -4
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/proof.d.ts +54 -0
- package/dist/commands/proof.d.ts.map +1 -0
- package/dist/commands/proof.js +311 -0
- package/dist/commands/proof.js.map +1 -0
- package/dist/commands/ps.d.ts +41 -7
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +357 -135
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts +6 -0
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +154 -4
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/reconcile-session.d.ts.map +1 -1
- package/dist/commands/reconcile-session.js +2 -2
- package/dist/commands/reconcile-session.js.map +1 -1
- package/dist/commands/restore-check.d.ts.map +1 -1
- package/dist/commands/restore-check.js +93 -0
- package/dist/commands/restore-check.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +191 -4
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/seat.d.ts +17 -0
- package/dist/commands/seat.d.ts.map +1 -1
- package/dist/commands/seat.js +145 -32
- package/dist/commands/seat.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +161 -11
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/start.d.ts +5 -0
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/startup-proof.d.ts +24 -0
- package/dist/commands/startup-proof.d.ts.map +1 -0
- package/dist/commands/startup-proof.js +100 -0
- package/dist/commands/startup-proof.js.map +1 -0
- package/dist/commands/unclaim.js +2 -2
- package/dist/commands/unclaim.js.map +1 -1
- package/dist/commands/up.d.ts +2 -0
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +79 -2
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/watchdog.js +2 -2
- package/dist/commands/watchdog.js.map +1 -1
- package/dist/commands/workspace.js +6 -6
- package/dist/commands/workspace.js.map +1 -1
- package/dist/config-store.d.ts +4 -0
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +68 -0
- package/dist/config-store.js.map +1 -1
- package/dist/cross-host-executor.d.ts +1 -0
- package/dist/cross-host-executor.d.ts.map +1 -1
- package/dist/cross-host-executor.js +4 -1
- package/dist/cross-host-executor.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts +23 -0
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +54 -6
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/host-registry.d.ts +9 -0
- package/dist/host-registry.d.ts.map +1 -1
- package/dist/host-registry.js +32 -2
- package/dist/host-registry.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/codex-auth.d.ts +24 -0
- package/dist/lib/codex-auth.d.ts.map +1 -1
- package/dist/lib/codex-auth.js +89 -17
- package/dist/lib/codex-auth.js.map +1 -1
- package/dist/lib/file-transfer.d.ts +89 -0
- package/dist/lib/file-transfer.d.ts.map +1 -0
- package/dist/lib/file-transfer.js +300 -0
- package/dist/lib/file-transfer.js.map +1 -0
- package/dist/lib/hosts/fanout-contract.d.ts +33 -0
- package/dist/lib/hosts/fanout-contract.d.ts.map +1 -0
- package/dist/lib/hosts/fanout-contract.js +23 -0
- package/dist/lib/hosts/fanout-contract.js.map +1 -0
- package/dist/lib/scope/scope-audit.d.ts +11 -1
- package/dist/lib/scope/scope-audit.d.ts.map +1 -1
- package/dist/lib/scope/scope-audit.js +203 -2
- package/dist/lib/scope/scope-audit.js.map +1 -1
- package/dist/lib/scope/templates.d.ts +1 -0
- package/dist/lib/scope/templates.d.ts.map +1 -1
- package/dist/lib/scope/templates.js +9 -0
- package/dist/lib/scope/templates.js.map +1 -1
- package/dist/lib/scope-templates/backlog-deprecation.md +16 -0
- package/dist/lib/scope-templates/backlog-tech-debt.md +16 -0
- package/dist/lib/scope-templates/bug-fix.md +16 -0
- package/dist/lib/scope-templates/implementation-prd.md +33 -0
- package/dist/lib/scope-templates/mission-placeholder.md +41 -0
- package/dist/lib/scope-templates/mission-progress.md +2 -0
- package/dist/lib/scope-templates/mission-release.md +41 -0
- package/dist/lib/scope-templates/placeholder.md +12 -4
- package/dist/lib/scope-templates/proof.md +6 -0
- package/dist/lib/scope-templates/release-feature.md +14 -6
- package/dist/lib/scope-templates/research.md +16 -0
- package/dist/lib/scope-templates/slice-progress.md +2 -0
- package/dist/openrig-compat.d.ts +19 -0
- package/dist/openrig-compat.d.ts.map +1 -1
- package/dist/openrig-compat.js +31 -1
- package/dist/openrig-compat.js.map +1 -1
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +11 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/ui/dist/assets/index-D69ZhNIr.js +598 -0
- package/ui/dist/assets/index-DJYun-8d.css +32 -0
- package/ui/dist/index.html +23 -2
- package/ui/dist/assets/index-CnqRX7A3.css +0 -32
- package/ui/dist/assets/index-CtL9jXFt.js +0 -582
|
@@ -22,6 +22,17 @@ interface ResumeMetadataRefresherDeps {
|
|
|
22
22
|
resolveHomeDirByPid?: ResolveHomeDirByPid;
|
|
23
23
|
sleep?: (ms: number) => Promise<void>;
|
|
24
24
|
homeDir?: string;
|
|
25
|
+
contextUsageStore?: {
|
|
26
|
+
readSidecar(sessionName: string): {
|
|
27
|
+
ok: true;
|
|
28
|
+
data: {
|
|
29
|
+
session_id?: string;
|
|
30
|
+
};
|
|
31
|
+
} | {
|
|
32
|
+
ok: false;
|
|
33
|
+
reason: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
25
36
|
}
|
|
26
37
|
export declare class ResumeMetadataRefresher {
|
|
27
38
|
private sessionRegistry;
|
|
@@ -32,9 +43,40 @@ export declare class ResumeMetadataRefresher {
|
|
|
32
43
|
private resolveHomeDirByPid;
|
|
33
44
|
private sleep;
|
|
34
45
|
private homeDir;
|
|
46
|
+
private contextUsageStore;
|
|
35
47
|
constructor(deps: ResumeMetadataRefresherDeps);
|
|
36
|
-
|
|
37
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Refresh the live per-seat resume ledger.
|
|
50
|
+
*
|
|
51
|
+
* OPR.0.4.3.20 FR-4 (rev1 fix) — `opts.fillNullOnly` is the **snapshot-refresh**
|
|
52
|
+
* mode used by the RECURRING snapshot paths (periodic scheduler every ~5min +
|
|
53
|
+
* manual route). It does exactly two things, both LIGHTWEIGHT (file reads only,
|
|
54
|
+
* like FR-3's capture — Claude sidecar `readSidecar` + Codex `captureCodexThreadId`
|
|
55
|
+
* over pid-logs), and NOTHING heavy:
|
|
56
|
+
* 1. FILL-NULL ONLY — populate a null token from live state; NEVER clear an
|
|
57
|
+
* already-present token (rev1-r2). A present-but-not-currently-resumable
|
|
58
|
+
* Claude token SURVIVES the routine snapshot (stays in the ledger for FR-6 to
|
|
59
|
+
* surface as `stale/unverified — re-verify`) instead of being nulled before
|
|
60
|
+
* FR-6 exists. Invariant: **a snapshot refresh never clears a present token.**
|
|
61
|
+
* 2. NO heavyweight resumability PROBE — it never runs `probeClaudeResume`
|
|
62
|
+
* (which spawns a real `claude --resume` tmux session per present Claude seat).
|
|
63
|
+
* Spawning N probe processes every periodic tick, forever, against live seats
|
|
64
|
+
* is unacceptable recurring blast radius (rev1-r1). Resumability VERIFICATION
|
|
65
|
+
* is FR-6's on-demand job, not a recurring-snapshot op.
|
|
66
|
+
*
|
|
67
|
+
* Default (`fillNullOnly` falsy) preserves the legacy validate-and-probe-and-clear
|
|
68
|
+
* behavior for the non-snapshot / teardown auto-pre-down path (a one-time
|
|
69
|
+
* at-shutdown check — unchanged here; FR-6 §2.1b owns unifying the clear semantics
|
|
70
|
+
* across all callers).
|
|
71
|
+
*/
|
|
72
|
+
refresh(sessions: ResumeRefreshSession[], opts?: {
|
|
73
|
+
fillNullOnly?: boolean;
|
|
74
|
+
}): Promise<void>;
|
|
75
|
+
/** Best-effort derive a Codex thread id from live pane state (getPanePid →
|
|
76
|
+
* codex descendant pids → pid-keyed logs sqlite). Async, returns undefined
|
|
77
|
+
* on timeout/absence. Public for reuse by adoption-boundary capture
|
|
78
|
+
* (OPR.0.4.3.20 FR-3) — no behavior change to the teardown-path scrape. */
|
|
79
|
+
captureCodexThreadId(sessionTarget: string): Promise<string | undefined>;
|
|
38
80
|
private defaultProbeClaudeResume;
|
|
39
81
|
private waitForProbeShellReady;
|
|
40
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume-metadata-refresher.d.ts","sourceRoot":"","sources":["../../src/domain/resume-metadata-refresher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAO9B,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,UAAU,2BAA2B;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC7D,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC;IAC/I,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"resume-metadata-refresher.d.ts","sourceRoot":"","sources":["../../src/domain/resume-metadata-refresher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAO9B,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,UAAU,2BAA2B;IACnC,eAAe,EAAE,eAAe,CAAC;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC7D,iBAAiB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC,CAAC;IAC/I,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IAKjB,iBAAiB,CAAC,EAAE;QAClB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG;YAAE,EAAE,EAAE,IAAI,CAAC;YAAC,IAAI,EAAE;gBAAE,UAAU,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,GAAG;YAAE,EAAE,EAAE,KAAK,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/G,CAAC;CACH;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAA8D;IACnF,OAAO,CAAC,sBAAsB,CAAsC;IACpE,OAAO,CAAC,iBAAiB,CAA6H;IACtJ,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAA0D;gBAEvE,IAAI,EAAE,2BAA2B;IAgB7C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,OAAO,CAAC,QAAQ,EAAE,oBAAoB,EAAE,EAAE,IAAI,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8EjG;;;gFAG4E;IACtE,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAkBhE,wBAAwB;YA2DxB,sBAAsB;CAgBrC"}
|
|
@@ -12,6 +12,7 @@ export class ResumeMetadataRefresher {
|
|
|
12
12
|
resolveHomeDirByPid;
|
|
13
13
|
sleep;
|
|
14
14
|
homeDir;
|
|
15
|
+
contextUsageStore;
|
|
15
16
|
constructor(deps) {
|
|
16
17
|
this.sessionRegistry = deps.sessionRegistry;
|
|
17
18
|
this.tmuxAdapter = deps.tmuxAdapter;
|
|
@@ -21,26 +22,111 @@ export class ResumeMetadataRefresher {
|
|
|
21
22
|
this.probeClaudeResume = deps.probeClaudeResume ?? ((sessionName, resumeToken, cwd) => this.defaultProbeClaudeResume(sessionName, resumeToken, cwd));
|
|
22
23
|
this.sleep = deps.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
23
24
|
this.homeDir = deps.homeDir ?? os.homedir();
|
|
25
|
+
this.contextUsageStore = deps.contextUsageStore ?? null;
|
|
24
26
|
}
|
|
25
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Refresh the live per-seat resume ledger.
|
|
29
|
+
*
|
|
30
|
+
* OPR.0.4.3.20 FR-4 (rev1 fix) — `opts.fillNullOnly` is the **snapshot-refresh**
|
|
31
|
+
* mode used by the RECURRING snapshot paths (periodic scheduler every ~5min +
|
|
32
|
+
* manual route). It does exactly two things, both LIGHTWEIGHT (file reads only,
|
|
33
|
+
* like FR-3's capture — Claude sidecar `readSidecar` + Codex `captureCodexThreadId`
|
|
34
|
+
* over pid-logs), and NOTHING heavy:
|
|
35
|
+
* 1. FILL-NULL ONLY — populate a null token from live state; NEVER clear an
|
|
36
|
+
* already-present token (rev1-r2). A present-but-not-currently-resumable
|
|
37
|
+
* Claude token SURVIVES the routine snapshot (stays in the ledger for FR-6 to
|
|
38
|
+
* surface as `stale/unverified — re-verify`) instead of being nulled before
|
|
39
|
+
* FR-6 exists. Invariant: **a snapshot refresh never clears a present token.**
|
|
40
|
+
* 2. NO heavyweight resumability PROBE — it never runs `probeClaudeResume`
|
|
41
|
+
* (which spawns a real `claude --resume` tmux session per present Claude seat).
|
|
42
|
+
* Spawning N probe processes every periodic tick, forever, against live seats
|
|
43
|
+
* is unacceptable recurring blast radius (rev1-r1). Resumability VERIFICATION
|
|
44
|
+
* is FR-6's on-demand job, not a recurring-snapshot op.
|
|
45
|
+
*
|
|
46
|
+
* Default (`fillNullOnly` falsy) preserves the legacy validate-and-probe-and-clear
|
|
47
|
+
* behavior for the non-snapshot / teardown auto-pre-down path (a one-time
|
|
48
|
+
* at-shutdown check — unchanged here; FR-6 §2.1b owns unifying the clear semantics
|
|
49
|
+
* across all callers).
|
|
50
|
+
*/
|
|
51
|
+
async refresh(sessions, opts) {
|
|
52
|
+
const fillNullOnly = opts?.fillNullOnly === true;
|
|
26
53
|
for (const session of sessions) {
|
|
27
54
|
if (session.runtime === "codex") {
|
|
28
|
-
if (session.resumeToken)
|
|
55
|
+
if (session.resumeToken) {
|
|
56
|
+
// OPR.0.4.3.20 FR-6.1 — lightweight equal-value freshness RE-STAMP on the
|
|
57
|
+
// periodic (fill-null) path so a present-and-still-valid token does not age
|
|
58
|
+
// to a FALSE `stale — re-verify` after the FR-6 threshold. Re-derive via the
|
|
59
|
+
// SAME pure-read helper FR-3 uses (getPanePid → pid-keyed logs; NO probe/spawn,
|
|
60
|
+
// NO `claude --resume`, NO launch) and refresh freshness ONLY on an EXACT match.
|
|
61
|
+
if (fillNullOnly) {
|
|
62
|
+
const derived = await this.captureCodexThreadId(session.sessionName);
|
|
63
|
+
if (derived && derived === session.resumeToken) {
|
|
64
|
+
// Present + matching = genuine positive evidence; stamp freshness via the
|
|
65
|
+
// FR-6 marker (never updateResumeToken → no token/provenance clobber).
|
|
66
|
+
this.sessionRegistry.markResumeProbeResult(session.sessionId, "resumable");
|
|
67
|
+
}
|
|
68
|
+
// DIFFERENT / ABSENT (rolled or underivable) → no-op: no re-stamp, no clobber.
|
|
69
|
+
// Left honest for FR-6 (stale — re-verify) + FR-7 restore-time rollback.
|
|
70
|
+
}
|
|
29
71
|
continue;
|
|
72
|
+
}
|
|
30
73
|
const threadId = await this.captureCodexThreadId(session.sessionName);
|
|
31
74
|
if (threadId) {
|
|
32
75
|
this.sessionRegistry.updateResumeToken(session.sessionId, "codex_id", threadId, "scrape");
|
|
33
76
|
}
|
|
34
77
|
continue;
|
|
35
78
|
}
|
|
36
|
-
if (session.runtime === "claude-code"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
79
|
+
if (session.runtime === "claude-code") {
|
|
80
|
+
if (!session.resumeToken) {
|
|
81
|
+
// OPR.0.4.3.20 FR-4 — null-fill from the Claude status-line sidecar
|
|
82
|
+
// (best-effort; missing/parse-error/empty leaves null, never throws).
|
|
83
|
+
// `scrape` provenance (rank 0) fills a null slot and never clobbers a
|
|
84
|
+
// higher-trust adoption/hook/operator token (the FR-3 rank guard).
|
|
85
|
+
const sidecar = this.contextUsageStore?.readSidecar(session.sessionName);
|
|
86
|
+
if (sidecar?.ok) {
|
|
87
|
+
const token = sidecar.data.session_id;
|
|
88
|
+
if (typeof token === "string" && token.trim().length > 0) {
|
|
89
|
+
this.sessionRegistry.updateResumeToken(session.sessionId, "claude_id", token.trim(), "scrape");
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
continue;
|
|
40
93
|
}
|
|
94
|
+
// Present token.
|
|
95
|
+
// OPR.0.4.3.20 FR-4 (rev1 fix) — in snapshot-refresh (fill-null-only) mode,
|
|
96
|
+
// return BEFORE the probe: never spawn the heavyweight `claude --resume`
|
|
97
|
+
// probe on the recurring snapshot path (rev1-r1), and never clear a present
|
|
98
|
+
// token (rev1-r2). A present-but-not-resumable token stays in the ledger for
|
|
99
|
+
// FR-6 to surface as `stale/unverified — re-verify`. Only the legacy/teardown
|
|
100
|
+
// default path probes + clears (a one-time at-shutdown check).
|
|
101
|
+
if (fillNullOnly) {
|
|
102
|
+
// OPR.0.4.3.20 FR-6.1 — equal-value freshness RE-STAMP on the periodic path
|
|
103
|
+
// (NO probe; never spawns `claude --resume`). Re-derive via the pure-read
|
|
104
|
+
// status-line sidecar and refresh freshness ONLY on an EXACT match to the
|
|
105
|
+
// stored token. Different / absent / parse-error / unreadable → no-op: no
|
|
106
|
+
// re-stamp and no token clobber (left honest for FR-6 + FR-7).
|
|
107
|
+
const sidecar = this.contextUsageStore?.readSidecar(session.sessionName);
|
|
108
|
+
if (sidecar?.ok) {
|
|
109
|
+
const derived = sidecar.data.session_id;
|
|
110
|
+
if (typeof derived === "string" && derived.trim().length > 0 && derived.trim() === session.resumeToken) {
|
|
111
|
+
this.sessionRegistry.markResumeProbeResult(session.sessionId, "resumable");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
const probe = await this.probeClaudeResume(session.sessionName, session.resumeToken, session.cwd ?? null);
|
|
117
|
+
// OPR.0.4.3.20 FR-6 §2.1b — record the probe result WITHOUT clearing:
|
|
118
|
+
// `not_resumable`/`inconclusive` marks the present token stale (the plan
|
|
119
|
+
// surfaces it as `stale — re-verify`), `resumable` stamps freshness. The
|
|
120
|
+
// token stays put — a rolled-but-present token is no longer silently
|
|
121
|
+
// nulled; FR-7's rollback catches an actually-unresumable token at restore.
|
|
122
|
+
this.sessionRegistry.markResumeProbeResult(session.sessionId, probe);
|
|
41
123
|
}
|
|
42
124
|
}
|
|
43
125
|
}
|
|
126
|
+
/** Best-effort derive a Codex thread id from live pane state (getPanePid →
|
|
127
|
+
* codex descendant pids → pid-keyed logs sqlite). Async, returns undefined
|
|
128
|
+
* on timeout/absence. Public for reuse by adoption-boundary capture
|
|
129
|
+
* (OPR.0.4.3.20 FR-3) — no behavior change to the teardown-path scrape. */
|
|
44
130
|
async captureCodexThreadId(sessionTarget) {
|
|
45
131
|
if (!this.tmuxAdapter.getPanePid)
|
|
46
132
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resume-metadata-refresher.js","sourceRoot":"","sources":["../../src/domain/resume-metadata-refresher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EACL,0BAA0B,EAC1B,mCAAmC,GAEpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"resume-metadata-refresher.js","sourceRoot":"","sources":["../../src/domain/resume-metadata-refresher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EACL,0BAA0B,EAC1B,mCAAmC,GAEpC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AA6BlC,MAAM,OAAO,uBAAuB;IAC1B,eAAe,CAAkB;IACjC,WAAW,CAAc;IACzB,aAAa,CAA8D;IAC3E,sBAAsB,CAAsC;IAC5D,iBAAiB,CAA6H;IAC9I,mBAAmB,CAAsB;IACzC,KAAK,CAAgC;IACrC,OAAO,CAAS;IAChB,iBAAiB,CAA0D;IAEnF,YAAY,IAAiC;QAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,oBAAoB,CAAC;QAChE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,0BAA0B,CAAC;QAClF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,yBAAyB,CAC9F,GAAG,EACH,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAC7B,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QACrJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAC5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;IAC1D,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgC,EAAE,IAAiC;QAC/E,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;QACjD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBAChC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;oBACxB,0EAA0E;oBAC1E,4EAA4E;oBAC5E,6EAA6E;oBAC7E,gFAAgF;oBAChF,iFAAiF;oBACjF,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;wBACrE,IAAI,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;4BAC/C,0EAA0E;4BAC1E,uEAAuE;4BACvE,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;wBAC7E,CAAC;wBACD,+EAA+E;wBAC/E,yEAAyE;oBAC3E,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACtE,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC5F,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;gBACtC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBACzB,oEAAoE;oBACpE,sEAAsE;oBACtE,sEAAsE;oBACtE,mEAAmE;oBACnE,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACzE,IAAI,OAAO,EAAE,EAAE,EAAE,CAAC;wBAChB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;wBACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACzD,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;wBACjG,CAAC;oBACH,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,iBAAiB;gBACjB,4EAA4E;gBAC5E,yEAAyE;gBACzE,4EAA4E;gBAC5E,6EAA6E;gBAC7E,8EAA8E;gBAC9E,+DAA+D;gBAC/D,IAAI,YAAY,EAAE,CAAC;oBACjB,4EAA4E;oBAC5E,0EAA0E;oBAC1E,0EAA0E;oBAC1E,0EAA0E;oBAC1E,+DAA+D;oBAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;oBACzE,IAAI,OAAO,EAAE,EAAE,EAAE,CAAC;wBAChB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;wBACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;4BACvG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;wBAC7E,CAAC;oBACH,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;gBAC1G,sEAAsE;gBACtE,yEAAyE;gBACzE,yEAAyE;gBACzE,qEAAqE;gBACrE,4EAA4E;gBAC5E,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;gFAG4E;IAC5E,KAAK,CAAC,oBAAoB,CAAC,aAAqB;QAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAEnD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAClE,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAC1E,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;oBACvD,IAAI,QAAQ;wBAAE,OAAO,QAAQ,CAAC;gBAChC,CAAC;YACH,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,WAAmB,EACnB,WAAmB,EACnB,GAAmB;QAEnB,MAAM,OAAO,GAAG,wBAAwB,CAAC,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,MAAM,YAAY,GAAG,kBAAkB,gBAAgB,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAClG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,cAAc,CAAC;YACxB,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,cAAc,CAAC;YACxB,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;gBACd,OAAO,cAAc,CAAC;YACxB,CAAC;YAED,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;gBACpD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBACxE,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACxF,MAAM,MAAM,GAAG,uBAAuB,CAAC;oBACrC,OAAO,EAAE,aAAa;oBACtB,WAAW;oBACX,WAAW;iBACZ,CAAC,CAAC;gBAEH,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,WAAW,CAAC;gBACrB,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC/B,OAAO,eAAe,CAAC;gBACzB,CAAC;gBAED,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,OAAO,cAAc,CAAC;QACxB,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,WAAmB;QACtD,MAAM,QAAQ,GAAG,EAAE,CAAC;QAEpB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;YACpD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvF,IAAI,iBAAiB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,SAAS,oBAAoB;IAC3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACtF,OAAO,MAAM;aACV,KAAK,CAAC,IAAI,CAAC;aACX,KAAK,CAAC,CAAC,CAAC;aACR,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAC;YACxB,OAAO;gBACL,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;aACxB,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,GAAG,EAAyD,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IAC1F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,SAAgE,EAChE,SAAiB;IAEjB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmD,CAAC;IACpF,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,GAAW,EAAQ,EAAE;QAClC,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACpD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,IAAI,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,CAAC;IACjB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB,CAChC,GAAW,EACX,mBAAwC,EACxC,OAAe;IAEf,OAAO,mCAAmC,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,IAAI,KAAK,OAAO,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,eAAe,CAAC,GAA8B,EAAE,OAAe;IACtE,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type ResumeType } from "./resume-token-validation.js";
|
|
2
|
+
export interface ResumeTokenCaptureDeps {
|
|
3
|
+
contextUsageStore?: {
|
|
4
|
+
readSidecar(sessionName: string): {
|
|
5
|
+
ok: true;
|
|
6
|
+
data: {
|
|
7
|
+
session_id?: string;
|
|
8
|
+
};
|
|
9
|
+
} | {
|
|
10
|
+
ok: false;
|
|
11
|
+
reason: string;
|
|
12
|
+
};
|
|
13
|
+
} | null;
|
|
14
|
+
resumeTokenCapturer?: {
|
|
15
|
+
captureCodexThreadId(sessionName: string): Promise<string | undefined>;
|
|
16
|
+
} | null;
|
|
17
|
+
}
|
|
18
|
+
export type ResumeTokenDeriveResult =
|
|
19
|
+
/** Runtime has no resume token (terminal / unknown) — not a failure, no event. */
|
|
20
|
+
{
|
|
21
|
+
outcome: "exempt";
|
|
22
|
+
}
|
|
23
|
+
/** A required derive dependency is absent (older wiring / test) — silent no-op. */
|
|
24
|
+
| {
|
|
25
|
+
outcome: "noop";
|
|
26
|
+
}
|
|
27
|
+
/** A live token was derived + format-validated. The caller persists it. */
|
|
28
|
+
| {
|
|
29
|
+
outcome: "captured";
|
|
30
|
+
resumeType: ResumeType;
|
|
31
|
+
token: string;
|
|
32
|
+
}
|
|
33
|
+
/** Derivation ran but produced no usable token — the caller emits a skip event. */
|
|
34
|
+
| {
|
|
35
|
+
outcome: "skipped";
|
|
36
|
+
reason: "missing_sidecar" | "parse_error" | "probe_timeout" | "invalid_token";
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Derive a runtime's resume token from live, read-only sources:
|
|
40
|
+
* claude-code → the status-line sidecar's session_id (a file read)
|
|
41
|
+
* codex → the thread id derived from live pid-keyed logs
|
|
42
|
+
* Returns a structured outcome; never throws for a missing/invalid token
|
|
43
|
+
* (those are honest skips). ANY unexpected throw from a dependency is the
|
|
44
|
+
* caller's to swallow (capture must never fail or block its lifecycle op).
|
|
45
|
+
*/
|
|
46
|
+
export declare function deriveResumeToken(input: {
|
|
47
|
+
runtime: string | null;
|
|
48
|
+
sessionName: string;
|
|
49
|
+
}, deps: ResumeTokenCaptureDeps): Promise<ResumeTokenDeriveResult>;
|
|
50
|
+
//# sourceMappingURL=resume-token-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-token-capture.d.ts","sourceRoot":"","sources":["../../src/domain/resume-token-capture.ts"],"names":[],"mappings":"AAkBA,OAAO,EAA6C,KAAK,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1G,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,CAAC,EAAE;QAClB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG;YAAE,EAAE,EAAE,IAAI,CAAC;YAAC,IAAI,EAAE;gBAAE,UAAU,CAAC,EAAE,MAAM,CAAA;aAAE,CAAA;SAAE,GAAG;YAAE,EAAE,EAAE,KAAK,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/G,GAAG,IAAI,CAAC;IACT,mBAAmB,CAAC,EAAE;QACpB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;KACxE,GAAG,IAAI,CAAC;CACV;AAED,MAAM,MAAM,uBAAuB;AACjC,kFAAkF;AAChF;IAAE,OAAO,EAAE,QAAQ,CAAA;CAAE;AACvB,mFAAmF;GACjF;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE;AACrB,2EAA2E;GACzE;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAChE,mFAAmF;GACjF;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,iBAAiB,GAAG,aAAa,GAAG,eAAe,GAAG,eAAe,CAAA;CAAE,CAAC;AAE1G;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EACtD,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CA8BlC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// OPR.0.4.3.04 B2 — the PURE, reusable resume-token DERIVE helper.
|
|
2
|
+
//
|
|
3
|
+
// This is the shared derivation core behind FR-3's adoption-boundary capture
|
|
4
|
+
// (ClaimService.captureResumeTokenOnAdoption) AND the seat-handover discovered-
|
|
5
|
+
// mode capture. It performs REUSE-ONLY, PURE READ derivation — no pane writes,
|
|
6
|
+
// no launch, no persistence, no event emission. The CALLER owns persistence
|
|
7
|
+
// (updateResumeToken) and event emission (captured / preserved / skipped), so
|
|
8
|
+
// each caller keeps its own provenance + audit semantics.
|
|
9
|
+
//
|
|
10
|
+
// The derived token is credential-class: it is NEVER logged, echoed, or placed
|
|
11
|
+
// in any returned message/error. Only the caller's redacted persistence path
|
|
12
|
+
// ever touches it. Honest failure = a structured skip reason (no token), never
|
|
13
|
+
// a fabricated value.
|
|
14
|
+
//
|
|
15
|
+
// FR-3's scope is UNCHANGED: this helper is derive-only and does not alter
|
|
16
|
+
// which lifecycle ops adopt. It only removes the duplication between the two
|
|
17
|
+
// derive sites the ruling asked us to share.
|
|
18
|
+
import { resumeTypeForRuntime, validateResumeToken } from "./resume-token-validation.js";
|
|
19
|
+
/**
|
|
20
|
+
* Derive a runtime's resume token from live, read-only sources:
|
|
21
|
+
* claude-code → the status-line sidecar's session_id (a file read)
|
|
22
|
+
* codex → the thread id derived from live pid-keyed logs
|
|
23
|
+
* Returns a structured outcome; never throws for a missing/invalid token
|
|
24
|
+
* (those are honest skips). ANY unexpected throw from a dependency is the
|
|
25
|
+
* caller's to swallow (capture must never fail or block its lifecycle op).
|
|
26
|
+
*/
|
|
27
|
+
export async function deriveResumeToken(input, deps) {
|
|
28
|
+
const resumeType = resumeTypeForRuntime(input.runtime);
|
|
29
|
+
if (!resumeType)
|
|
30
|
+
return { outcome: "exempt" }; // terminal / unknown — exempt, not a failure
|
|
31
|
+
const runtime = input.runtime; // non-null: resumeType is set only for claude-code / codex
|
|
32
|
+
let token;
|
|
33
|
+
if (runtime === "claude-code") {
|
|
34
|
+
if (!deps.contextUsageStore)
|
|
35
|
+
return { outcome: "noop" }; // dep absent — silent no-op
|
|
36
|
+
const sidecar = deps.contextUsageStore.readSidecar(input.sessionName);
|
|
37
|
+
if (!sidecar.ok) {
|
|
38
|
+
return { outcome: "skipped", reason: sidecar.reason === "parse_error" ? "parse_error" : "missing_sidecar" };
|
|
39
|
+
}
|
|
40
|
+
const sid = sidecar.data.session_id;
|
|
41
|
+
if (typeof sid === "string" && sid.trim().length > 0)
|
|
42
|
+
token = sid.trim();
|
|
43
|
+
else
|
|
44
|
+
return { outcome: "skipped", reason: "missing_sidecar" };
|
|
45
|
+
}
|
|
46
|
+
else if (runtime === "codex") {
|
|
47
|
+
if (!deps.resumeTokenCapturer)
|
|
48
|
+
return { outcome: "noop" }; // dep absent — silent no-op
|
|
49
|
+
token = await deps.resumeTokenCapturer.captureCodexThreadId(input.sessionName);
|
|
50
|
+
if (!token)
|
|
51
|
+
return { outcome: "skipped", reason: "probe_timeout" };
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return { outcome: "noop" }; // resumeType set but runtime is not one we derive — defensive
|
|
55
|
+
}
|
|
56
|
+
// Defensive format validation before the caller persists — a malformed token
|
|
57
|
+
// is an honest skip, never a bad write (validity-before-rank).
|
|
58
|
+
const validation = validateResumeToken(runtime, token);
|
|
59
|
+
if (!validation.ok)
|
|
60
|
+
return { outcome: "skipped", reason: "invalid_token" };
|
|
61
|
+
return { outcome: "captured", resumeType: validation.resumeType, token: validation.token };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=resume-token-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-token-capture.js","sourceRoot":"","sources":["../../src/domain/resume-token-capture.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,6EAA6E;AAC7E,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,8EAA8E;AAC9E,0DAA0D;AAC1D,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,+EAA+E;AAC/E,sBAAsB;AACtB,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,6CAA6C;AAE7C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAmB,MAAM,8BAA8B,CAAC;AAqB1G;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAAsD,EACtD,IAA4B;IAE5B,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,6CAA6C;IAE5F,MAAM,OAAO,GAAG,KAAK,CAAC,OAAiB,CAAC,CAAC,2DAA2D;IAEpG,IAAI,KAAyB,CAAC;IAC9B,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,4BAA4B;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;QAC9G,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;;YACpE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAChE,CAAC;SAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,mBAAmB;YAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,4BAA4B;QACvF,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/E,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrE,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,8DAA8D;IAC5F,CAAC;IAED,6EAA6E;IAC7E,+DAA+D;IAC/D,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAE3E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ComposedMissionReview } from "./types.js";
|
|
2
|
+
export interface BriefSpine {
|
|
3
|
+
building: string;
|
|
4
|
+
progress: string;
|
|
5
|
+
proven: string;
|
|
6
|
+
needsYou: string;
|
|
7
|
+
}
|
|
8
|
+
/** The four generated section bodies — derived from the same composer
|
|
9
|
+
* queries FR-7 renders (no second computation path). */
|
|
10
|
+
export declare function renderBriefSpine(m: ComposedMissionReview): BriefSpine;
|
|
11
|
+
/**
|
|
12
|
+
* Section-scoped application: replaces ONLY the four spine section bodies in
|
|
13
|
+
* an existing MISSION_BRIEF.md, preserving every other byte (hand-authored
|
|
14
|
+
* "What & why"/"Pointers", the H1, frontmatter, ordering). Returns null when
|
|
15
|
+
* the brief does not carry the pinned schema (never guess-rewrite a
|
|
16
|
+
* malformed brief — the audit owns that finding).
|
|
17
|
+
*/
|
|
18
|
+
export declare function applyBriefSpine(briefContent: string, spine: BriefSpine): string | null;
|
|
19
|
+
//# sourceMappingURL=brief-spine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brief-spine.d.ts","sourceRoot":"","sources":["../../../src/domain/review/brief-spine.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;yDACyD;AACzD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,qBAAqB,GAAG,UAAU,CA6BrE;AASD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAiCtF"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Living Notes Packet 2 — MISSION_BRIEF status-spine convergence (OPR.0.4.4.20 FR-8).
|
|
2
|
+
//
|
|
3
|
+
// ONE computation path: the spine sections (Building / Progress / Proven /
|
|
4
|
+
// Needs you) are rendered HERE from the composed mission review; the tab
|
|
5
|
+
// serves them always-fresh (pure projection, zero writes) and the SAME
|
|
6
|
+
// strings are written into MISSION_BRIEF.md ONLY at the deliberate freeze
|
|
7
|
+
// moments — never a watcher, never a continuous writer. Generation is
|
|
8
|
+
// SECTION-SCOPED: hand-authored prose in non-spine sections ("What & why",
|
|
9
|
+
// "Pointers") is byte-untouched, and the pinned exact-order H2 schema the
|
|
10
|
+
// scope audit enforces is preserved by construction (the header list is
|
|
11
|
+
// IMPORTED from the audit, not re-declared).
|
|
12
|
+
import { MISSION_BRIEF_HEADERS } from "../scope/scope-audit.js";
|
|
13
|
+
/** The four generated section bodies — derived from the same composer
|
|
14
|
+
* queries FR-7 renders (no second computation path). */
|
|
15
|
+
export function renderBriefSpine(m) {
|
|
16
|
+
const byLane = (lane) => m.board.filter((b) => b.laneLabel === lane);
|
|
17
|
+
const buildingRows = [...byLane("BUILD"), ...byLane("PLAN")];
|
|
18
|
+
const building = buildingRows.length === 0
|
|
19
|
+
? "_Nothing in flight._"
|
|
20
|
+
: buildingRows.map((b) => `- ${b.slice} — ${b.laneLabel} · ${b.stageCell}`).join("\n");
|
|
21
|
+
const progress = m.board.length === 0
|
|
22
|
+
? "_No slices yet._"
|
|
23
|
+
: ["INTENT", "PLAN", "BUILD", "REVIEW", "LOCKED"]
|
|
24
|
+
.map((lane) => `- ${lane}: ${byLane(lane).length}`)
|
|
25
|
+
.join("\n");
|
|
26
|
+
const greenRows = m.ledger.filter((r) => r.green);
|
|
27
|
+
const proven = greenRows.length === 0
|
|
28
|
+
? "_Nothing proven yet._"
|
|
29
|
+
: greenRows
|
|
30
|
+
.map((r) => `- ${r.slice} — proven at ${r.candidateSha ?? "unknown"} · merged ${r.mergeSha ?? "UNMERGED"}`)
|
|
31
|
+
.join("\n") + `\n\nCut-gating: ${m.cutComplete ? "COMPLETE" : "incomplete"} — ${m.cutCompleteBasis}`;
|
|
32
|
+
const needsYou = m.needsYou.items.length === 0
|
|
33
|
+
? `_${m.needsYou.provenance}_`
|
|
34
|
+
: m.needsYou.items.map((i) => `- ${i.source === "derived" ? "▲" : "●"} ${i.summary} (${i.leg})`).join("\n");
|
|
35
|
+
return { building, progress, proven, needsYou };
|
|
36
|
+
}
|
|
37
|
+
const SPINE_BY_HEADER = {
|
|
38
|
+
Building: "building",
|
|
39
|
+
Progress: "progress",
|
|
40
|
+
Proven: "proven",
|
|
41
|
+
"Needs you": "needsYou",
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Section-scoped application: replaces ONLY the four spine section bodies in
|
|
45
|
+
* an existing MISSION_BRIEF.md, preserving every other byte (hand-authored
|
|
46
|
+
* "What & why"/"Pointers", the H1, frontmatter, ordering). Returns null when
|
|
47
|
+
* the brief does not carry the pinned schema (never guess-rewrite a
|
|
48
|
+
* malformed brief — the audit owns that finding).
|
|
49
|
+
*/
|
|
50
|
+
export function applyBriefSpine(briefContent, spine) {
|
|
51
|
+
const lines = briefContent.split("\n");
|
|
52
|
+
// Locate each pinned H2 (exact-order schema).
|
|
53
|
+
const headerIdx = [];
|
|
54
|
+
const headerName = [];
|
|
55
|
+
for (let i = 0; i < lines.length; i++) {
|
|
56
|
+
const m = lines[i].match(/^##\s+(.+?)\s*$/);
|
|
57
|
+
if (m) {
|
|
58
|
+
headerIdx.push(i);
|
|
59
|
+
headerName.push(m[1]);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// The brief must carry the exact pinned sequence to be generation-safe.
|
|
63
|
+
if (headerName.length !== MISSION_BRIEF_HEADERS.length)
|
|
64
|
+
return null;
|
|
65
|
+
for (let i = 0; i < MISSION_BRIEF_HEADERS.length; i++) {
|
|
66
|
+
if (headerName[i] !== MISSION_BRIEF_HEADERS[i])
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const out = [];
|
|
70
|
+
out.push(...lines.slice(0, headerIdx[0]));
|
|
71
|
+
for (let h = 0; h < headerIdx.length; h++) {
|
|
72
|
+
const start = headerIdx[h];
|
|
73
|
+
const end = h + 1 < headerIdx.length ? headerIdx[h + 1] : lines.length;
|
|
74
|
+
const name = headerName[h];
|
|
75
|
+
const spineKey = SPINE_BY_HEADER[name];
|
|
76
|
+
out.push(lines[start]);
|
|
77
|
+
if (spineKey) {
|
|
78
|
+
out.push("", spine[spineKey], "");
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
out.push(...lines.slice(start + 1, end));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return out.join("\n");
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=brief-spine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brief-spine.js","sourceRoot":"","sources":["../../../src/domain/review/brief-spine.ts"],"names":[],"mappings":"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"}
|