@tacuchi/agent-workflow-cli 25.8.0 → 26.0.0
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/CHANGELOG.md +106 -0
- package/README.md +6 -3
- package/dist/adapters/git-cli.js +225 -17
- package/dist/adapters/git-cli.js.map +1 -1
- package/dist/adapters/node-file-system.js +48 -0
- package/dist/adapters/node-file-system.js.map +1 -1
- package/dist/application/amend-service.js +51 -14
- package/dist/application/amend-service.js.map +1 -1
- package/dist/application/branch-resolver.js +6 -3
- package/dist/application/branch-resolver.js.map +1 -1
- package/dist/application/capability/design-handler.js +218 -43
- package/dist/application/capability/design-handler.js.map +1 -1
- package/dist/application/capability/dispatcher.js +182 -19
- package/dist/application/capability/dispatcher.js.map +1 -1
- package/dist/application/capability/durable-effect.js +3 -0
- package/dist/application/capability/durable-effect.js.map +1 -1
- package/dist/application/capability/readiness.js +8 -54
- package/dist/application/capability/readiness.js.map +1 -1
- package/dist/application/capability/resolution.js +124 -192
- package/dist/application/capability/resolution.js.map +1 -1
- package/dist/application/check-branch-service.js +158 -19
- package/dist/application/check-branch-service.js.map +1 -1
- package/dist/application/checkpoint/markdown.js +2 -2
- package/dist/application/checkpoint/markdown.js.map +1 -1
- package/dist/application/checkpoint/state-reader.js +12 -0
- package/dist/application/checkpoint/state-reader.js.map +1 -1
- package/dist/application/checkpoint-service.js +12 -4
- package/dist/application/checkpoint-service.js.map +1 -1
- package/dist/application/checkpoint-write-service.js +91 -17
- package/dist/application/checkpoint-write-service.js.map +1 -1
- package/dist/application/claims-ledger.js +137 -11
- package/dist/application/claims-ledger.js.map +1 -1
- package/dist/application/claims-recovery.js +85 -44
- package/dist/application/claims-recovery.js.map +1 -1
- package/dist/application/database-tool-catalog.js +33 -0
- package/dist/application/database-tool-catalog.js.map +1 -1
- package/dist/application/design/consumer-document.js +2 -2
- package/dist/application/design/consumer-document.js.map +1 -1
- package/dist/application/design/design-content-gate-service.js +20 -2
- package/dist/application/design/design-content-gate-service.js.map +1 -1
- package/dist/application/design/design-gate-service.js +2 -0
- package/dist/application/design/design-gate-service.js.map +1 -1
- package/dist/application/design/design-index-service.js +4 -0
- package/dist/application/design/design-index-service.js.map +1 -1
- package/dist/application/design/design-publish-service.js +1 -4
- package/dist/application/design/design-publish-service.js.map +1 -1
- package/dist/application/design/design-record-service.js +13 -7
- package/dist/application/design/design-record-service.js.map +1 -1
- package/dist/application/design/design-resolver-service.js +22 -3
- package/dist/application/design/design-resolver-service.js.map +1 -1
- package/dist/application/design/design-simple-service.js +24 -5
- package/dist/application/design/design-simple-service.js.map +1 -1
- package/dist/application/design/digest.js +41 -0
- package/dist/application/design/digest.js.map +1 -0
- package/dist/application/dev-only-services.js +166 -20
- package/dist/application/dev-only-services.js.map +1 -1
- package/dist/application/doc-branch-ledger.js +145 -0
- package/dist/application/doc-branch-ledger.js.map +1 -0
- package/dist/application/docs-canon-service.js +1 -1
- package/dist/application/docs-canon-service.js.map +1 -1
- package/dist/application/doctor/dist-integrity.js +113 -0
- package/dist/application/doctor/dist-integrity.js.map +1 -0
- package/dist/application/doctor/hosts.js +5 -2
- package/dist/application/doctor/hosts.js.map +1 -1
- package/dist/application/doctor/prepare.js +3 -3
- package/dist/application/doctor/prepare.js.map +1 -1
- package/dist/application/doctor/provider-installation.js +39 -19
- package/dist/application/doctor/provider-installation.js.map +1 -1
- package/dist/application/doctor/provider-mcps.js +9 -1
- package/dist/application/doctor/provider-mcps.js.map +1 -1
- package/dist/application/doctor/provider-skills.js +29 -115
- package/dist/application/doctor/provider-skills.js.map +1 -1
- package/dist/application/doctor/provider-visibility.js +76 -3
- package/dist/application/doctor/provider-visibility.js.map +1 -1
- package/dist/application/doctor/provider-workspace-block.js +156 -0
- package/dist/application/doctor/provider-workspace-block.js.map +1 -0
- package/dist/application/doctor/repair-runner.js +36 -39
- package/dist/application/doctor/repair-runner.js.map +1 -1
- package/dist/application/doctor/report.js +24 -4
- package/dist/application/doctor/report.js.map +1 -1
- package/dist/application/export-catalog-check.js +200 -0
- package/dist/application/export-catalog-check.js.map +1 -0
- package/dist/application/export-service.js +716 -79
- package/dist/application/export-service.js.map +1 -1
- package/dist/application/fix-git-service.js +285 -64
- package/dist/application/fix-git-service.js.map +1 -1
- package/dist/application/flow/advance.js +202 -25
- package/dist/application/flow/advance.js.map +1 -1
- package/dist/application/flow/annul-service.js +3 -1
- package/dist/application/flow/annul-service.js.map +1 -1
- package/dist/application/flow/batch-commit.js +189 -0
- package/dist/application/flow/batch-commit.js.map +1 -0
- package/dist/application/flow/checkout-observation.js +63 -10
- package/dist/application/flow/checkout-observation.js.map +1 -1
- package/dist/application/flow/close-artifacts.js +105 -0
- package/dist/application/flow/close-artifacts.js.map +1 -0
- package/dist/application/flow/close-at-boundary.js +25 -14
- package/dist/application/flow/close-at-boundary.js.map +1 -1
- package/dist/application/flow/close-document-guidance.js +70 -0
- package/dist/application/flow/close-document-guidance.js.map +1 -0
- package/dist/application/flow/flow-service.js +46 -3
- package/dist/application/flow/flow-service.js.map +1 -1
- package/dist/application/flow/internal-actions.js +300 -82
- package/dist/application/flow/internal-actions.js.map +1 -1
- package/dist/application/flow/internal-drive.js +24 -1
- package/dist/application/flow/internal-drive.js.map +1 -1
- package/dist/application/flow/plan-entry.js +82 -0
- package/dist/application/flow/plan-entry.js.map +1 -0
- package/dist/application/flow/prove.js +32 -1
- package/dist/application/flow/prove.js.map +1 -1
- package/dist/application/flow/quick-checkouts.js +48 -0
- package/dist/application/flow/quick-checkouts.js.map +1 -0
- package/dist/application/flow/reinfer-batch.js +177 -0
- package/dist/application/flow/reinfer-batch.js.map +1 -0
- package/dist/application/flow/reopen-run.js +12 -5
- package/dist/application/flow/reopen-run.js.map +1 -1
- package/dist/application/flow/run-state-service.js +2 -0
- package/dist/application/flow/run-state-service.js.map +1 -1
- package/dist/application/flow/submit.js +584 -117
- package/dist/application/flow/submit.js.map +1 -1
- package/dist/application/generate-launch-service.js +16 -6
- package/dist/application/generate-launch-service.js.map +1 -1
- package/dist/application/git-flow-service.js +34 -3
- package/dist/application/git-flow-service.js.map +1 -1
- package/dist/application/history-publications.js +24 -0
- package/dist/application/history-publications.js.map +1 -1
- package/dist/application/history-reconcile-service.js +45 -0
- package/dist/application/history-reconcile-service.js.map +1 -0
- package/dist/application/history-table.js +61 -12
- package/dist/application/history-table.js.map +1 -1
- package/dist/application/history-update-service.js +25 -4
- package/dist/application/history-update-service.js.map +1 -1
- package/dist/application/hook-branch-check.js +25 -3
- package/dist/application/hook-branch-check.js.map +1 -1
- package/dist/application/hook-git-commit-advisor.js +3 -4
- package/dist/application/hook-git-commit-advisor.js.map +1 -1
- package/dist/application/hook-turn-start.js +51 -0
- package/dist/application/hook-turn-start.js.map +1 -0
- package/dist/application/host-memory/codex.js +1 -1
- package/dist/application/host-memory/codex.js.map +1 -1
- package/dist/application/hub-registry.js +135 -0
- package/dist/application/hub-registry.js.map +1 -0
- package/dist/application/local-proposal.js +72 -19
- package/dist/application/local-proposal.js.map +1 -1
- package/dist/application/mcp-host-reader.js +1 -1
- package/dist/application/mcp-host-reader.js.map +1 -1
- package/dist/application/mcp-host-writer.js +16 -10
- package/dist/application/mcp-host-writer.js.map +1 -1
- package/dist/application/merge-state-service.js +150 -34
- package/dist/application/merge-state-service.js.map +1 -1
- package/dist/application/multiroot/claude.js +17 -10
- package/dist/application/multiroot/claude.js.map +1 -1
- package/dist/application/multiroot/codex.js +17 -11
- package/dist/application/multiroot/codex.js.map +1 -1
- package/dist/application/multiroot-service.js +52 -28
- package/dist/application/multiroot-service.js.map +1 -1
- package/dist/application/parsers/execution-batches.js +64 -0
- package/dist/application/parsers/execution-batches.js.map +1 -0
- package/dist/application/parsers/phases.js +23 -2
- package/dist/application/parsers/phases.js.map +1 -1
- package/dist/application/parsers/project-block.js +146 -17
- package/dist/application/parsers/project-block.js.map +1 -1
- package/dist/application/parsers/tasks.js +16 -2
- package/dist/application/parsers/tasks.js.map +1 -1
- package/dist/application/parsers/toml.js +19 -0
- package/dist/application/parsers/toml.js.map +1 -0
- package/dist/application/paths-service.js +13 -16
- package/dist/application/paths-service.js.map +1 -1
- package/dist/application/persist-service.js +118 -5
- package/dist/application/persist-service.js.map +1 -1
- package/dist/application/plan-exec-batch-service.js +162 -22
- package/dist/application/plan-exec-batch-service.js.map +1 -1
- package/dist/application/plan-exec-decision-service.js +61 -12
- package/dist/application/plan-exec-decision-service.js.map +1 -1
- package/dist/application/plan-exec-plan-diff.js +105 -0
- package/dist/application/plan-exec-plan-diff.js.map +1 -0
- package/dist/application/plan-lint-service.js +33 -5
- package/dist/application/plan-lint-service.js.map +1 -1
- package/dist/application/plan-passes.js +41 -0
- package/dist/application/plan-passes.js.map +1 -0
- package/dist/application/preparation-receipts.js +58 -0
- package/dist/application/preparation-receipts.js.map +1 -0
- package/dist/application/project-md-upsert-service.js +191 -52
- package/dist/application/project-md-upsert-service.js.map +1 -1
- package/dist/application/project-tab-data.js +40 -10
- package/dist/application/project-tab-data.js.map +1 -1
- package/dist/application/release-data/artifacts.js +15 -7
- package/dist/application/release-data/artifacts.js.map +1 -1
- package/dist/application/release-data/bundles.js +52 -6
- package/dist/application/release-data/bundles.js.map +1 -1
- package/dist/application/release-data/common.js +2 -2
- package/dist/application/release-data/common.js.map +1 -1
- package/dist/application/release-data/rollback.js +7 -0
- package/dist/application/release-data/rollback.js.map +1 -0
- package/dist/application/release-data/sessions.js +2 -2
- package/dist/application/release-data/sessions.js.map +1 -1
- package/dist/application/release-pass-ledger.js +1 -1
- package/dist/application/render/history-row.js +2 -0
- package/dist/application/render/history-row.js.map +1 -1
- package/dist/application/render/project-block.js +28 -11
- package/dist/application/render/project-block.js.map +1 -1
- package/dist/application/reseal-service.js +1 -0
- package/dist/application/reseal-service.js.map +1 -1
- package/dist/application/resume-service.js +55 -8
- package/dist/application/resume-service.js.map +1 -1
- package/dist/application/retirement/apply.js +25 -7
- package/dist/application/retirement/apply.js.map +1 -1
- package/dist/application/retirement/attribution.js +122 -50
- package/dist/application/retirement/attribution.js.map +1 -1
- package/dist/application/retirement/prepare.js +17 -11
- package/dist/application/retirement/prepare.js.map +1 -1
- package/dist/application/retirement/preview.js +2 -1
- package/dist/application/retirement/preview.js.map +1 -1
- package/dist/application/self/clean-legacy.js +1 -2
- package/dist/application/self/clean-legacy.js.map +1 -1
- package/dist/application/self/codex-plugin.js +1 -1
- package/dist/application/self/codex-plugin.js.map +1 -1
- package/dist/application/self/host-states.js +3 -3
- package/dist/application/self/host-states.js.map +1 -1
- package/dist/application/self/install-hooks.js +1 -1
- package/dist/application/self/install-hooks.js.map +1 -1
- package/dist/application/self/install-skill.js +5 -49
- package/dist/application/self/install-skill.js.map +1 -1
- package/dist/application/self/mcp-config.js +19 -11
- package/dist/application/self/mcp-config.js.map +1 -1
- package/dist/application/self/opencode-plugin.js +1 -0
- package/dist/application/self/opencode-plugin.js.map +1 -1
- package/dist/application/self/skill-files.js +29 -0
- package/dist/application/self/skill-files.js.map +1 -0
- package/dist/application/self/uninstall.js +1 -1
- package/dist/application/self/uninstall.js.map +1 -1
- package/dist/application/semantic-operation/protocol.js +66 -5
- package/dist/application/semantic-operation/protocol.js.map +1 -1
- package/dist/application/session-archive-service.js +113 -0
- package/dist/application/session-archive-service.js.map +1 -0
- package/dist/application/session-binding-service.js +35 -0
- package/dist/application/session-binding-service.js.map +1 -1
- package/dist/application/session-close-service.js +390 -54
- package/dist/application/session-close-service.js.map +1 -1
- package/dist/application/session-create-service.js +97 -5
- package/dist/application/session-create-service.js.map +1 -1
- package/dist/application/session-custody-recorder.js +15 -12
- package/dist/application/session-custody-recorder.js.map +1 -1
- package/dist/application/session-custody-service.js +1 -0
- package/dist/application/session-custody-service.js.map +1 -1
- package/dist/application/session-narrative.js +42 -12
- package/dist/application/session-narrative.js.map +1 -1
- package/dist/application/session-pause-service.js +46 -0
- package/dist/application/session-pause-service.js.map +1 -0
- package/dist/application/session-resolver.js +36 -11
- package/dist/application/session-resolver.js.map +1 -1
- package/dist/application/session-resume-service.js +134 -13
- package/dist/application/session-resume-service.js.map +1 -1
- package/dist/application/sessions-service.js +4 -0
- package/dist/application/sessions-service.js.map +1 -1
- package/dist/application/sessions-sweep-service.js +77 -0
- package/dist/application/sessions-sweep-service.js.map +1 -0
- package/dist/application/settle-service.js +3 -1
- package/dist/application/settle-service.js.map +1 -1
- package/dist/application/skills-resolver-service.js +6 -92
- package/dist/application/skills-resolver-service.js.map +1 -1
- package/dist/application/source-add-service.js +37 -0
- package/dist/application/source-add-service.js.map +1 -0
- package/dist/application/source-boundary-policy.js +105 -8
- package/dist/application/source-boundary-policy.js.map +1 -1
- package/dist/application/source-pipeline.js +68 -0
- package/dist/application/source-pipeline.js.map +1 -0
- package/dist/application/source-remove-service.js +15 -3
- package/dist/application/source-remove-service.js.map +1 -1
- package/dist/application/sources-service.js +71 -16
- package/dist/application/sources-service.js.map +1 -1
- package/dist/application/status-service.js +55 -5
- package/dist/application/status-service.js.map +1 -1
- package/dist/application/unit-dependencies.js +100 -0
- package/dist/application/unit-dependencies.js.map +1 -0
- package/dist/application/unit-membership.js +37 -0
- package/dist/application/unit-membership.js.map +1 -0
- package/dist/application/unit-residue.js +72 -0
- package/dist/application/unit-residue.js.map +1 -0
- package/dist/application/visibility-doctor-service.js +66 -4
- package/dist/application/visibility-doctor-service.js.map +1 -1
- package/dist/application/working-branch-service.js +6 -0
- package/dist/application/working-branch-service.js.map +1 -1
- package/dist/application/workline-graph.js +1 -1
- package/dist/application/workline-graph.js.map +1 -1
- package/dist/application/workline-index-service.js +118 -17
- package/dist/application/workline-index-service.js.map +1 -1
- package/dist/application/workspace-commit-service.js +218 -0
- package/dist/application/workspace-commit-service.js.map +1 -0
- package/dist/application/workspace-init-service.js +64 -34
- package/dist/application/workspace-init-service.js.map +1 -1
- package/dist/application/workspace-local-config.js +90 -0
- package/dist/application/workspace-local-config.js.map +1 -0
- package/dist/application/workspace-materialization-service.js +52 -3
- package/dist/application/workspace-materialization-service.js.map +1 -1
- package/dist/application/workspace-migrate/apply.js +525 -4
- package/dist/application/workspace-migrate/apply.js.map +1 -1
- package/dist/application/workspace-migrate/markers.js +9 -6
- package/dist/application/workspace-migrate/markers.js.map +1 -1
- package/dist/application/workspace-migrate/plan.js +97 -5
- package/dist/application/workspace-migrate/plan.js.map +1 -1
- package/dist/application/workspace-move-service.js +270 -0
- package/dist/application/workspace-move-service.js.map +1 -0
- package/dist/application/workspace-untrack-service.js +28 -0
- package/dist/application/workspace-untrack-service.js.map +1 -0
- package/dist/application/worktree-service.js +654 -105
- package/dist/application/worktree-service.js.map +1 -1
- package/dist/cli/ascii.js +2 -0
- package/dist/cli/ascii.js.map +1 -1
- package/dist/cli/commands/add-source.js +38 -0
- package/dist/cli/commands/add-source.js.map +1 -0
- package/dist/cli/commands/amend.js +14 -3
- package/dist/cli/commands/amend.js.map +1 -1
- package/dist/cli/commands/capability.js +23 -4
- package/dist/cli/commands/capability.js.map +1 -1
- package/dist/cli/commands/designs.js +14 -5
- package/dist/cli/commands/designs.js.map +1 -1
- package/dist/cli/commands/dev-only.js +19 -6
- package/dist/cli/commands/dev-only.js.map +1 -1
- package/dist/cli/commands/doc-branch.js +184 -0
- package/dist/cli/commands/doc-branch.js.map +1 -0
- package/dist/cli/commands/doctor.js +5 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/export.js +78 -18
- package/dist/cli/commands/export.js.map +1 -1
- package/dist/cli/commands/fix-git.js +89 -14
- package/dist/cli/commands/fix-git.js.map +1 -1
- package/dist/cli/commands/flow.js +120 -15
- package/dist/cli/commands/flow.js.map +1 -1
- package/dist/cli/commands/generate-launch.js +14 -2
- package/dist/cli/commands/generate-launch.js.map +1 -1
- package/dist/cli/commands/history-update.js +1 -1
- package/dist/cli/commands/history-update.js.map +1 -1
- package/dist/cli/commands/history.js +14 -0
- package/dist/cli/commands/history.js.map +1 -0
- package/dist/cli/commands/hook.js +15 -2
- package/dist/cli/commands/hook.js.map +1 -1
- package/dist/cli/commands/index.js +18 -5
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/merge-state.js +2 -2
- package/dist/cli/commands/merge-state.js.map +1 -1
- package/dist/cli/commands/persist.js +6 -5
- package/dist/cli/commands/persist.js.map +1 -1
- package/dist/cli/commands/project-md-upsert.js +5 -3
- package/dist/cli/commands/project-md-upsert.js.map +1 -1
- package/dist/cli/commands/release-pass.js +3 -3
- package/dist/cli/commands/release-pass.js.map +1 -1
- package/dist/cli/commands/resume.js +12 -3
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/self.js +8 -24
- package/dist/cli/commands/self.js.map +1 -1
- package/dist/cli/commands/session-close.js +64 -9
- package/dist/cli/commands/session-close.js.map +1 -1
- package/dist/cli/commands/session-create.js +4 -2
- package/dist/cli/commands/session-create.js.map +1 -1
- package/dist/cli/commands/session-pause.js +14 -0
- package/dist/cli/commands/session-pause.js.map +1 -0
- package/dist/cli/commands/sessions.js +16 -3
- package/dist/cli/commands/sessions.js.map +1 -1
- package/dist/cli/commands/set-branch.js +28 -4
- package/dist/cli/commands/set-branch.js.map +1 -1
- package/dist/cli/commands/set-edit-mode.js +20 -0
- package/dist/cli/commands/set-edit-mode.js.map +1 -0
- package/dist/cli/commands/set-pipeline.js +35 -0
- package/dist/cli/commands/set-pipeline.js.map +1 -0
- package/dist/cli/commands/skills.js +4 -11
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/sources.js +4 -0
- package/dist/cli/commands/sources.js.map +1 -1
- package/dist/cli/commands/status.js +35 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/unknown-flags.js +1 -0
- package/dist/cli/commands/unknown-flags.js.map +1 -1
- package/dist/cli/commands/visibility.js +1 -0
- package/dist/cli/commands/visibility.js.map +1 -1
- package/dist/cli/commands/workspace-commit.js +62 -0
- package/dist/cli/commands/workspace-commit.js.map +1 -0
- package/dist/cli/commands/workspace-init.js +39 -2
- package/dist/cli/commands/workspace-init.js.map +1 -1
- package/dist/cli/commands/workspace-migrate.js +31 -3
- package/dist/cli/commands/workspace-migrate.js.map +1 -1
- package/dist/cli/commands/workspace-move.js +42 -0
- package/dist/cli/commands/workspace-move.js.map +1 -0
- package/dist/cli/commands/worktree.js +4 -4
- package/dist/cli/commands/worktree.js.map +1 -1
- package/dist/cli/context-id.js +6 -0
- package/dist/cli/context-id.js.map +1 -1
- package/dist/cli/full-cli.js +555 -0
- package/dist/cli/full-cli.js.map +1 -0
- package/dist/cli/help-groups.js +76 -19
- package/dist/cli/help-groups.js.map +1 -1
- package/dist/cli/hook-stdin-cache.js +12 -0
- package/dist/cli/hook-stdin-cache.js.map +1 -0
- package/dist/cli/main.js +47 -453
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/parser.js +4 -0
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/tui/app.js +3 -4
- package/dist/cli/tui/app.js.map +1 -1
- package/dist/cli/tui/components/host-admin-section.js +2 -13
- package/dist/cli/tui/components/host-admin-section.js.map +1 -1
- package/dist/cli/tui/components/tabs-config.js +1 -2
- package/dist/cli/tui/components/tabs-config.js.map +1 -1
- package/dist/cli/tui/components/workspace-init-form.js +4 -1
- package/dist/cli/tui/components/workspace-init-form.js.map +1 -1
- package/dist/cli/tui/data/workflow-content.js +6 -1
- package/dist/cli/tui/data/workflow-content.js.map +1 -1
- package/dist/cli/tui/tabs/mcp-tab.js +4 -3
- package/dist/cli/tui/tabs/mcp-tab.js.map +1 -1
- package/dist/cli/tui/tabs/project-tab.js +7 -2
- package/dist/cli/tui/tabs/project-tab.js.map +1 -1
- package/dist/cli/tui/tui-prefs.js +2 -0
- package/dist/cli/tui/tui-prefs.js.map +1 -1
- package/dist/dist-manifest.json +3973 -0
- package/dist/domain/capability/protocol.js +3 -1
- package/dist/domain/capability/protocol.js.map +1 -1
- package/dist/domain/decision-note.js +13 -0
- package/dist/domain/decision-note.js.map +1 -1
- package/dist/domain/design/artifact.js +22 -3
- package/dist/domain/design/artifact.js.map +1 -1
- package/dist/domain/design/capability.js +1 -0
- package/dist/domain/design/capability.js.map +1 -1
- package/dist/domain/design/expansion.js +1 -1
- package/dist/domain/design/expansion.js.map +1 -1
- package/dist/domain/design/maturity.js +16 -0
- package/dist/domain/design/maturity.js.map +1 -1
- package/dist/domain/design/reference.js +5 -0
- package/dist/domain/design/reference.js.map +1 -1
- package/dist/domain/doctor/operations.js +20 -12
- package/dist/domain/doctor/operations.js.map +1 -1
- package/dist/domain/effective-contract.js +3 -1
- package/dist/domain/effective-contract.js.map +1 -1
- package/dist/domain/elicitation.js +1 -1
- package/dist/domain/flow/answer.js +265 -130
- package/dist/domain/flow/answer.js.map +1 -1
- package/dist/domain/flow/authority.js +194 -37
- package/dist/domain/flow/authority.js.map +1 -1
- package/dist/domain/flow/batch-review.js +65 -0
- package/dist/domain/flow/batch-review.js.map +1 -0
- package/dist/domain/flow/decision-schema.js +47 -0
- package/dist/domain/flow/decision-schema.js.map +1 -0
- package/dist/domain/flow/directive.js +16 -0
- package/dist/domain/flow/directive.js.map +1 -1
- package/dist/domain/flow/execution-result.js +91 -2
- package/dist/domain/flow/execution-result.js.map +1 -1
- package/dist/domain/flow/run-state.js +352 -24
- package/dist/domain/flow/run-state.js.map +1 -1
- package/dist/domain/flow/test-run-evidence.js +285 -0
- package/dist/domain/flow/test-run-evidence.js.map +1 -0
- package/dist/domain/flow/unchanged-phase.js +15 -0
- package/dist/domain/flow/unchanged-phase.js.map +1 -0
- package/dist/domain/harnesses.js +14 -5
- package/dist/domain/harnesses.js.map +1 -1
- package/dist/domain/isolation-unit.js +2 -2
- package/dist/domain/isolation-unit.js.map +1 -1
- package/dist/domain/lineage.js +7 -2
- package/dist/domain/lineage.js.map +1 -1
- package/dist/domain/obligation-correspondence.js +4 -2
- package/dist/domain/obligation-correspondence.js.map +1 -1
- package/dist/domain/plan-handoff.js +5 -0
- package/dist/domain/plan-handoff.js.map +1 -0
- package/dist/domain/proposal.js +18 -7
- package/dist/domain/proposal.js.map +1 -1
- package/dist/domain/reservation.js +5 -3
- package/dist/domain/reservation.js.map +1 -1
- package/dist/domain/retirement/proposal.js +1 -0
- package/dist/domain/retirement/proposal.js.map +1 -1
- package/dist/domain/session/custody.js +10 -6
- package/dist/domain/session/custody.js.map +1 -1
- package/dist/domain/session/narrative.js +4 -1
- package/dist/domain/session/narrative.js.map +1 -1
- package/dist/domain/skills.js +4 -6
- package/dist/domain/skills.js.map +1 -1
- package/dist/domain/sql-lexer.js +1 -1
- package/dist/domain/sql-lexer.js.map +1 -1
- package/dist/runtime/namespace-resolver.js +4 -0
- package/dist/runtime/namespace-resolver.js.map +1 -1
- package/dist/runtime/workline-marker.js +35 -8
- package/dist/runtime/workline-marker.js.map +1 -1
- package/dist/runtime/workspace-resolution.js +123 -0
- package/dist/runtime/workspace-resolution.js.map +1 -0
- package/package.json +6 -5
- package/skills/w/SKILL.md +12 -17
- package/skills/w/artifacts/artifacts-core/CHECKPOINT.md +1 -1
- package/skills/w/artifacts/artifacts-core/SCRIPTS.rollback.sql +8 -0
- package/skills/w/artifacts/artifacts-core/SCRIPTS.sql +4 -8
- package/skills/w/commands/export-diagrams.md +3 -3
- package/skills/w/commands/export-manuals.md +6 -6
- package/skills/w/commands/export-reports.md +3 -3
- package/skills/w/commands/export-scripts.md +5 -5
- package/skills/w/commands/fix-git.md +12 -13
- package/skills/w/commands/persist.md +2 -2
- package/skills/w/commands/plan-exec.md +4 -2
- package/skills/w/commands/spec-new.md +1 -1
- package/skills/w/commands/workspace-init.md +2 -0
- package/skills/w/context/MANIFEST.json +1 -1
- package/skills/w/exports/README.md +4 -4
- package/skills/w/exports/export-diagrams/EXPORT.md +4 -4
- package/skills/w/exports/export-manuals/EXPORT.md +14 -16
- package/skills/w/exports/export-reports/EXPORT.md +3 -3
- package/skills/w/exports/export-scripts/EXPORT.md +46 -22
- package/skills/w/harness/HARNESS.md +4 -7
- package/skills/w/hooks/hooks.template.json +6 -4
- package/skills/w/loops/CHASSIS.md +12 -6
- package/skills/w/loops/CODE-POLICIES.md +8 -5
- package/skills/w/loops/README.md +2 -2
- package/skills/w/loops/plan-exec-loop/LOOP.md +23 -22
- package/skills/w/loops/plan-new-loop/LOOP.md +23 -31
- package/skills/w/loops/plan-refine-loop/LOOP.md +8 -2
- package/skills/w/loops/quick-loop/LOOP.md +7 -6
- package/skills/w/loops/spec-refine-loop/LOOP.md +1 -1
- package/skills/w/modules/DESIGN-REFERENCES.md +9 -11
- package/skills/w/modules/PLAN-EXECUTION-BATCHES.md +4 -4
- package/skills/w/modules/SESSION-NUMBERING.md +2 -0
- package/skills/w/roles/README.md +11 -47
- package/skills/w/roles/design/CONTRACT.md +6 -4
- package/skills/w/roles/design/ROLE.md +7 -3
- package/skills/w/roles/diagrams/ROLE.md +1 -1
- package/skills/w/roles/git/ROLE.md +17 -10
- package/skills/w/roles/research/ROLE.md +2 -2
- package/skills/w/roles/sql/ROLE.md +17 -15
- package/skills/w/schemas/design/ui-screen.v1.schema.json +9 -0
- package/dist/application/capability/descriptor-loader.js +0 -109
- package/dist/application/capability/descriptor-loader.js.map +0 -1
- package/dist/application/capability/installed-inventory.js +0 -168
- package/dist/application/capability/installed-inventory.js.map +0 -1
- package/dist/application/self/install-plugin-skills-git.js +0 -226
- package/dist/application/self/install-plugin-skills-git.js.map +0 -1
- package/dist/application/self/install-plugin-skills.js +0 -203
- package/dist/application/self/install-plugin-skills.js.map +0 -1
- package/dist/application/self/plugin-cache-clear.js +0 -133
- package/dist/application/self/plugin-cache-clear.js.map +0 -1
- package/dist/application/self/plugin-cache-reload.js +0 -141
- package/dist/application/self/plugin-cache-reload.js.map +0 -1
- package/dist/application/self/skills-apply.js +0 -623
- package/dist/application/self/skills-apply.js.map +0 -1
- package/dist/application/self/skills-catalog.js +0 -35
- package/dist/application/self/skills-catalog.js.map +0 -1
- package/dist/application/self/skills-change.js +0 -479
- package/dist/application/self/skills-change.js.map +0 -1
- package/dist/application/self/skills-discovery.js +0 -275
- package/dist/application/self/skills-discovery.js.map +0 -1
- package/dist/application/self/skills-manager.js +0 -253
- package/dist/application/self/skills-manager.js.map +0 -1
- package/dist/application/self/skills-payload.js +0 -566
- package/dist/application/self/skills-payload.js.map +0 -1
- package/dist/application/self/skills-registry.js +0 -107
- package/dist/application/self/skills-registry.js.map +0 -1
- package/dist/application/skill-index-service.js +0 -78
- package/dist/application/skill-index-service.js.map +0 -1
- package/dist/cli/commands/plugin-cache.js +0 -25
- package/dist/cli/commands/plugin-cache.js.map +0 -1
- package/dist/cli/commands/skill-index.js +0 -19
- package/dist/cli/commands/skill-index.js.map +0 -1
- package/dist/cli/tui/data/recommended-skills.js +0 -482
- package/dist/cli/tui/data/recommended-skills.js.map +0 -1
- package/dist/cli/tui/tabs/skills-tab.js +0 -664
- package/dist/cli/tui/tabs/skills-tab.js.map +0 -1
|
@@ -1,14 +1,38 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
1
2
|
import { join } from "node:path";
|
|
2
3
|
import { leadingCorrelative } from "../domain/correlative.js";
|
|
3
|
-
import { reservationMarker } from "../domain/reservation.js";
|
|
4
|
-
import {
|
|
4
|
+
import { FOLDER_RESERVATION_MARKER, reservationMarker } from "../domain/reservation.js";
|
|
5
|
+
import { stripNarrativeBlock } from "../domain/session/narrative.js";
|
|
6
|
+
import { appendClaimEvent, readClaimEvents, releaseAlreadyRecorded, wasPublished, } from "./claims-ledger.js";
|
|
7
|
+
import { localDateIso } from "./dates.js";
|
|
8
|
+
import { locateRun, readRun } from "./flow/run-state-service.js";
|
|
9
|
+
import { readHistoryRows } from "./history-table.js";
|
|
5
10
|
import { historyFields, sharedNumberError, upsertHistoryRow } from "./history-update-service.js";
|
|
6
11
|
import { withCwdLock } from "./lock-service.js";
|
|
12
|
+
import { parseMdSectionBilingual } from "./markdown.js";
|
|
13
|
+
import { readWorkspaceBlock } from "./parsers/project-block.js";
|
|
14
|
+
import { readScriptsArtifacts } from "./release-data/artifacts.js";
|
|
15
|
+
import { listGraduatedBundles } from "./release-data/bundles.js";
|
|
16
|
+
import { archiveSessionMinimum, copySessionEvidence, sessionScratchReferences, } from "./session-archive-service.js";
|
|
7
17
|
import { canonicalArtifactPath } from "./session-artifacts.js";
|
|
8
18
|
import { invalidateBindingsTo } from "./session-binding-service.js";
|
|
19
|
+
import { readCustody } from "./session-custody-service.js";
|
|
9
20
|
import { writeSessionNarrative } from "./session-narrative.js";
|
|
10
|
-
import { CLOSED_MARKER, resolveSessionTarget, sessionsSharingNumber, } from "./session-resolver.js";
|
|
11
|
-
|
|
21
|
+
import { ABANDONED_MARKER, CLOSED_MARKER, PAUSED_MARKER, resolveSessionTarget, sessionsSharingNumber, } from "./session-resolver.js";
|
|
22
|
+
import { runWorkspaceCommit } from "./workspace-commit-service.js";
|
|
23
|
+
export async function runSessionClose(fs, paths, input, isolation, git, process, release) {
|
|
24
|
+
if (await fs.exists(join(paths.cwdRoot(), "renumber-pending.json"))) {
|
|
25
|
+
try {
|
|
26
|
+
const { recoverRenumberJournal } = await import("./workspace-migrate/apply.js");
|
|
27
|
+
await recoverRenumberJournal(fs, paths);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return {
|
|
31
|
+
error: `renumerado pendiente: ${error instanceof Error ? error.message : String(error)}`,
|
|
32
|
+
code: "SESSION_RENUMBER_PENDING",
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
12
36
|
// Closing is destructive to continuity: it always names its target. Falling
|
|
13
37
|
// back to "the sole active one" would let a conversation close a line it
|
|
14
38
|
// never selected.
|
|
@@ -22,6 +46,17 @@ export async function runSessionClose(fs, paths, input, isolation) {
|
|
|
22
46
|
if (resolution.outcome !== "resolved")
|
|
23
47
|
return { sessionError: resolution };
|
|
24
48
|
const session = resolution.session;
|
|
49
|
+
if (session.state === "abandoned" && input.abandon !== true) {
|
|
50
|
+
return {
|
|
51
|
+
error: `la sesión ${session.folder} está abandonada; sólo --reopen la reactiva`,
|
|
52
|
+
code: "SESSION_ABANDONED",
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (input.force !== true && input.abandon !== true) {
|
|
56
|
+
const incomplete = await incompleteSessionReason(fs, session.path);
|
|
57
|
+
if (incomplete !== null)
|
|
58
|
+
return { error: incomplete, code: "SESSION_INCOMPLETE" };
|
|
59
|
+
}
|
|
25
60
|
// The record indexes rows by number, so two folders sharing one means this
|
|
26
61
|
// close could only register by overwriting the other session's row. Asked HERE
|
|
27
62
|
// rather than only inside the primitive: down there the lock is held and
|
|
@@ -33,24 +68,48 @@ export async function runSessionClose(fs, paths, input, isolation) {
|
|
|
33
68
|
const sharing = await sessionsSharingNumber(fs, paths, session.folder);
|
|
34
69
|
if (sharing.length > 1)
|
|
35
70
|
return { sessionError: sharedNumberError(session.folder, sharing) };
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
71
|
+
let sqlPending;
|
|
72
|
+
let sqlPendingError;
|
|
73
|
+
try {
|
|
74
|
+
sqlPending = await pendingSqlExport(fs, paths, session);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
sqlPendingError = error instanceof Error ? error.message : String(error);
|
|
78
|
+
}
|
|
79
|
+
// Validate before mutating either the checkpoint or the closed marker.
|
|
40
80
|
const checkpointPath = canonicalArtifactPath(session.path, "checkpoint");
|
|
41
|
-
await ensureFile(fs, checkpointPath, "# CHECKPOINT\n");
|
|
42
81
|
// BEFORE the marker, and that is the whole of it: `.closed` is what makes the
|
|
43
82
|
// integrate commands below stop resolving, so a check that ran after writing it
|
|
44
83
|
// would be a receipt for a state it had just made harder to leave.
|
|
45
|
-
const units = await heldUnits(isolation, session.folder);
|
|
84
|
+
const units = await heldUnits(isolation, session.folder, input.final !== false, release);
|
|
46
85
|
if (input.requireIntegrated === true && (units.held.length > 0 || units.error !== undefined)) {
|
|
47
86
|
return refuseHeld(session.code ?? input.code, session.folder, units);
|
|
48
87
|
}
|
|
49
|
-
const
|
|
88
|
+
const gitState = git === undefined
|
|
89
|
+
? "fuentes no verificables (sin adaptador git)"
|
|
90
|
+
: await sourceGitState(fs, paths, git);
|
|
91
|
+
const historyFile = paths.cwdHistoryFile();
|
|
92
|
+
const registeredClosed = (await fs.exists(historyFile)) &&
|
|
93
|
+
readHistoryRows(await fs.readText(historyFile)).some((row) => row.key === session.folder && row.state === "closed");
|
|
94
|
+
const needsRefs = !registeredClosed;
|
|
95
|
+
let published;
|
|
96
|
+
try {
|
|
97
|
+
published = needsRefs ? await publishedRefs(fs, session.path) : undefined;
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
return {
|
|
101
|
+
error: error instanceof Error ? error.message : String(error),
|
|
102
|
+
code: "SESSION_CUSTODY_UNREADABLE",
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const run = needsRefs ? await readRun(fs, locateRun(paths, session.folder)) : null;
|
|
106
|
+
const plan = run?.ok ? run.state.scope?.plan : undefined;
|
|
107
|
+
const refs = [input.refs?.trim(), published, plan].filter((item) => item && item.length > 0).join(",") ||
|
|
108
|
+
undefined;
|
|
50
109
|
const closure = await closeUnderLock(fs, paths, session, {
|
|
51
110
|
code: session.code ?? input.code,
|
|
52
111
|
...(refs !== undefined && refs.length > 0 ? { refs } : {}),
|
|
53
|
-
});
|
|
112
|
+
}, checkpointPath, gitState, input.force === true || input.abandon === true, input.abandon === true, input.preserveReservations ?? [], input.withEvidence === true);
|
|
54
113
|
if ("error" in closure)
|
|
55
114
|
return closure;
|
|
56
115
|
const sessionClose = {
|
|
@@ -63,23 +122,115 @@ export async function runSessionClose(fs, paths, input, isolation) {
|
|
|
63
122
|
bindings_invalidated: closure.bindings_invalidated,
|
|
64
123
|
...(closure.history ? { history: closure.history } : {}),
|
|
65
124
|
...(closure.history_error !== undefined ? { history_error: closure.history_error } : {}),
|
|
125
|
+
...(sqlPending === undefined ? {} : { sql_pending_export: sqlPending }),
|
|
126
|
+
...(sqlPendingError === undefined ? {} : { sql_pending_export_error: sqlPendingError }),
|
|
127
|
+
...(closure.archive_paths === undefined ? {} : { archive_paths: closure.archive_paths }),
|
|
128
|
+
...(closure.archive_error === undefined ? {} : { archive_error: closure.archive_error }),
|
|
129
|
+
...(closure.scratch_references?.length
|
|
130
|
+
? { scratch_references: closure.scratch_references }
|
|
131
|
+
: {}),
|
|
132
|
+
...(closure.evidence_copied?.length ? { evidence_copied: closure.evidence_copied } : {}),
|
|
66
133
|
};
|
|
67
134
|
reportHeld(sessionClose, session.folder, units);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
135
|
+
if (units.released_empty.length > 0)
|
|
136
|
+
sessionClose.released_empty = units.released_empty;
|
|
137
|
+
if (units.released_preserved.length > 0)
|
|
138
|
+
sessionClose.released_preserved = units.released_preserved;
|
|
139
|
+
if (units.released_integrated.length > 0)
|
|
140
|
+
sessionClose.released_integrated = units.released_integrated;
|
|
141
|
+
if (units.empty.length > 0)
|
|
142
|
+
sessionClose.empty_units = units.empty;
|
|
143
|
+
if (units.preserved.length > 0)
|
|
144
|
+
sessionClose.preserved_units = units.preserved;
|
|
145
|
+
reportReservations(sessionClose, closure.reservations);
|
|
146
|
+
if (git && process) {
|
|
147
|
+
const offer = await runWorkspaceCommit(fs, git, process, paths, { code: session.folder });
|
|
148
|
+
if ("proposal" in offer)
|
|
149
|
+
sessionClose.commit_proposal = offer.proposal;
|
|
150
|
+
else
|
|
151
|
+
sessionClose.commit_proposal_error = offer.error;
|
|
152
|
+
}
|
|
73
153
|
return { sessionClose };
|
|
74
154
|
}
|
|
155
|
+
async function incompleteSessionReason(fs, sessionPath) {
|
|
156
|
+
const file = join(sessionPath, "SESSION.md");
|
|
157
|
+
if (!(await fs.exists(file)))
|
|
158
|
+
return null; // historical sessions without this artifact
|
|
159
|
+
const text = stripNarrativeBlock(await fs.readText(file));
|
|
160
|
+
const origin = parseMdSectionBilingual(text, "Origin");
|
|
161
|
+
if (origin !== undefined &&
|
|
162
|
+
!origin.split("\n").some((line) => {
|
|
163
|
+
const value = line.trim();
|
|
164
|
+
return value !== "" && value !== "-" && !value.startsWith("<!--");
|
|
165
|
+
}))
|
|
166
|
+
return "SESSION.md tiene ## Origin en blanco; completalo antes de cerrar";
|
|
167
|
+
const criteria = parseMdSectionBilingual(text, "Success criteria");
|
|
168
|
+
if (criteria === undefined)
|
|
169
|
+
return null;
|
|
170
|
+
for (const match of criteria.matchAll(/^\s*[-*]\s*\[\s\]\s*(.+)?$/gm)) {
|
|
171
|
+
const text = match[1]?.trim() ?? "";
|
|
172
|
+
if (!/(?:\braz[oó]n\b|\bmotivo\b|\bporque\b|\bbloquead[oa]\b|\bpendiente por\b|—\s+\S)/i.test(text)) {
|
|
173
|
+
return `SESSION.md tiene un criterio sin marcar y sin razón escrita: ${text || "(vacío)"}`;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
async function pendingSqlExport(fs, paths, session) {
|
|
179
|
+
const scripts = (await readScriptsArtifacts(fs, session.path)).filter((file) => !file.is_rollback);
|
|
180
|
+
if (scripts.length === 0)
|
|
181
|
+
return undefined;
|
|
182
|
+
const bundles = await listGraduatedBundles(fs, paths.workspaceDir(), paths);
|
|
183
|
+
const exported = new Set();
|
|
184
|
+
for (const bundle of bundles) {
|
|
185
|
+
const manifest = join(bundle.path, "bundle.json");
|
|
186
|
+
if (!(await fs.exists(manifest)))
|
|
187
|
+
continue;
|
|
188
|
+
try {
|
|
189
|
+
const parsed = JSON.parse(await fs.readText(manifest));
|
|
190
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
191
|
+
continue;
|
|
192
|
+
const origin = parsed.origin;
|
|
193
|
+
for (const entry of origin?.sessions ?? []) {
|
|
194
|
+
if (entry.session === session.folder)
|
|
195
|
+
for (const file of entry.files)
|
|
196
|
+
exported.add(file.digest);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
/* A bundle without readable metadata cannot claim this SQL. */
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
const pending = [];
|
|
204
|
+
for (const file of scripts) {
|
|
205
|
+
const text = await fs.readText(file.path);
|
|
206
|
+
if (/--\s*\[Q\d+\].*Type:\s*A\b/i.test(text) &&
|
|
207
|
+
!/--\s*(?:\[M\d+\]|@category:\s*0[1-5]|Type:\s*B\b)/i.test(text))
|
|
208
|
+
continue;
|
|
209
|
+
if (!/(?:--\s*(?:\[M\d+\]|@category:\s*0[1-5]|Type:\s*B\b)|\b(?:CREATE|ALTER|DROP|UPDATE|DELETE|INSERT|GRANT|REVOKE|TRUNCATE)\b)/i.test(text))
|
|
210
|
+
continue;
|
|
211
|
+
const digest = `sha256:${createHash("sha256")
|
|
212
|
+
.update(await fs.readBytes(file.path))
|
|
213
|
+
.digest("hex")}`;
|
|
214
|
+
if (!exported.has(digest))
|
|
215
|
+
pending.push(file.name);
|
|
216
|
+
}
|
|
217
|
+
return pending.length > 0
|
|
218
|
+
? {
|
|
219
|
+
files: pending,
|
|
220
|
+
command: `aw export-scripts prepare --sessions ${leadingCorrelative(session.folder) ?? session.code ?? session.folder}`,
|
|
221
|
+
}
|
|
222
|
+
: undefined;
|
|
223
|
+
}
|
|
75
224
|
/** Units survived the close: say so, and say how to come back for them. */
|
|
76
225
|
function reportHeld(output, folder, units) {
|
|
77
226
|
if (units.error !== undefined)
|
|
78
227
|
output.pending_integration_error = units.error;
|
|
228
|
+
if (units.unverifiable.length > 0)
|
|
229
|
+
output.unverifiable_sources = units.unverifiable;
|
|
79
230
|
if (units.held.length === 0)
|
|
80
231
|
return;
|
|
81
232
|
output.pending_integration = units.held;
|
|
82
|
-
output.
|
|
233
|
+
output.integrate = `aw worktree integrate --code ${folder}`;
|
|
83
234
|
}
|
|
84
235
|
function reportReservations(output, reservations) {
|
|
85
236
|
if (reservations.released.length > 0)
|
|
@@ -96,7 +247,7 @@ function refuseHeld(code, folder, units) {
|
|
|
96
247
|
closed: false,
|
|
97
248
|
reason: units.error !== undefined
|
|
98
249
|
? `no se pudo comprobar si la sesión conserva unidades — ${units.error}`
|
|
99
|
-
: `la sesión todavía tiene ${units.held.length} unidad(es) sin integrar
|
|
250
|
+
: `la sesión todavía tiene ${units.held.length} unidad(es) sin integrar o retenida(s) por cambios locales`,
|
|
100
251
|
pending_integration: units.held,
|
|
101
252
|
integrate: `aw worktree integrate --code ${folder}`,
|
|
102
253
|
},
|
|
@@ -111,29 +262,96 @@ function refuseHeld(code, folder, units) {
|
|
|
111
262
|
* that it can refuse, because the one state that must never close silently is
|
|
112
263
|
* exactly the one whose evidence could not be read.
|
|
113
264
|
*/
|
|
114
|
-
async function heldUnits(isolation, folder) {
|
|
265
|
+
async function heldUnits(isolation, folder, final, release) {
|
|
266
|
+
const emptyResult = () => ({
|
|
267
|
+
held: [],
|
|
268
|
+
unverifiable: [],
|
|
269
|
+
empty: [],
|
|
270
|
+
preserved: [],
|
|
271
|
+
released_empty: [],
|
|
272
|
+
released_preserved: [],
|
|
273
|
+
released_integrated: [],
|
|
274
|
+
});
|
|
115
275
|
if (isolation === undefined)
|
|
116
|
-
return
|
|
117
|
-
let
|
|
276
|
+
return emptyResult();
|
|
277
|
+
let inventory;
|
|
118
278
|
try {
|
|
119
|
-
|
|
279
|
+
inventory = await isolation();
|
|
120
280
|
}
|
|
121
281
|
catch (error) {
|
|
122
282
|
return {
|
|
123
|
-
|
|
283
|
+
...emptyResult(),
|
|
124
284
|
error: `no se pudieron leer las unidades de ${folder}: ${error instanceof Error ? error.message : String(error)}`,
|
|
125
285
|
};
|
|
126
286
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
287
|
+
const units = Array.isArray(inventory) ? inventory : inventory.units;
|
|
288
|
+
const unreadable = Array.isArray(inventory) ? [] : inventory.unreadable;
|
|
289
|
+
const unverifiable = unreadable
|
|
290
|
+
.filter((item) => item.code === "SOURCE_PATH_MISSING")
|
|
291
|
+
.map((item) => ({ alias: item.alias, reason: item.error }));
|
|
292
|
+
const otherErrors = unreadable.filter((item) => item.code !== "SOURCE_PATH_MISSING");
|
|
293
|
+
const result = {
|
|
294
|
+
...emptyResult(),
|
|
295
|
+
unverifiable,
|
|
296
|
+
...(otherErrors.length > 0
|
|
297
|
+
? {
|
|
298
|
+
error: `inventario ilegible: ${otherErrors.map((item) => `${item.alias}: ${item.error}`).join("; ")}`,
|
|
299
|
+
}
|
|
300
|
+
: {}),
|
|
136
301
|
};
|
|
302
|
+
for (const unit of units.filter((entry) => entry.session === folder)) {
|
|
303
|
+
const summary = {
|
|
304
|
+
alias: unit.alias,
|
|
305
|
+
branch: unit.branch,
|
|
306
|
+
path: unit.path,
|
|
307
|
+
...(unit.preserved_in ? { preserved_in: unit.preserved_in } : {}),
|
|
308
|
+
};
|
|
309
|
+
const kind = unit.classification ?? (unit.dirty === true ? "retained" : "pending");
|
|
310
|
+
if (kind === "empty" || kind === "preserved") {
|
|
311
|
+
if (!final) {
|
|
312
|
+
result[kind === "empty" ? "empty" : "preserved"].push(summary);
|
|
313
|
+
continue;
|
|
314
|
+
}
|
|
315
|
+
if (release !== undefined) {
|
|
316
|
+
try {
|
|
317
|
+
const freed = await release(unit.alias, folder);
|
|
318
|
+
if ("released" in freed && freed.released) {
|
|
319
|
+
const named = {
|
|
320
|
+
...summary,
|
|
321
|
+
...(freed.branch_kept ? { branch_kept: freed.branch_kept } : {}),
|
|
322
|
+
};
|
|
323
|
+
const collection = kind === "empty"
|
|
324
|
+
? result.released_empty
|
|
325
|
+
: unit.integrated
|
|
326
|
+
? result.released_integrated
|
|
327
|
+
: result.released_preserved;
|
|
328
|
+
collection.push(named);
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
unit.classification_reason = "error" in freed ? freed.message : "liberación incompleta";
|
|
332
|
+
}
|
|
333
|
+
catch (err) {
|
|
334
|
+
unit.classification_reason = `liberación fallida: ${err.message}`;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
else
|
|
338
|
+
unit.classification_reason = "sin operación de liberación verificable";
|
|
339
|
+
}
|
|
340
|
+
result.held.push({
|
|
341
|
+
alias: unit.alias,
|
|
342
|
+
branch: unit.branch,
|
|
343
|
+
path: unit.path,
|
|
344
|
+
...(unit.dirty === undefined ? {} : { dirty: unit.dirty }),
|
|
345
|
+
classification: kind === "retained" ? "retained" : "pending",
|
|
346
|
+
reason: unit.classification_reason ?? "commits no preservados",
|
|
347
|
+
command: kind === "retained" && unit.dirty === true
|
|
348
|
+
? `commiteá el trabajo en ${unit.path} y después aw worktree integrate --source ${unit.alias} --code ${folder}`
|
|
349
|
+
: kind === "retained" && unit.classification_reason?.includes("operación git")
|
|
350
|
+
? `aw fix-git --path ${unit.path}`
|
|
351
|
+
: `aw worktree integrate --source ${unit.alias} --code ${folder}`,
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
return result;
|
|
137
355
|
}
|
|
138
356
|
/**
|
|
139
357
|
* Give back every correlative this session claimed and never wrote into.
|
|
@@ -150,11 +368,15 @@ async function heldUnits(isolation, folder) {
|
|
|
150
368
|
* categories: the claim mechanism is category-agnostic, and a hardcoded list is a
|
|
151
369
|
* second place to update the day something else claims a number.
|
|
152
370
|
*/
|
|
153
|
-
async function releaseReservations(fs, paths, folder) {
|
|
371
|
+
async function releaseReservations(fs, paths, folder, preserve) {
|
|
154
372
|
const marker = reservationMarker(folder);
|
|
155
373
|
const docs = join(paths.workspaceDir(), "docs");
|
|
374
|
+
const retained = new Set(preserve.map((path) => join(paths.workspaceDir(), path)));
|
|
156
375
|
const released = [];
|
|
157
376
|
try {
|
|
377
|
+
const ledger = await readClaimEvents(fs, paths, { lockHeld: true });
|
|
378
|
+
if (ledger.unreadable > 0)
|
|
379
|
+
throw new Error("claims.jsonl no permite liberar reservas con seguridad");
|
|
158
380
|
if (!(await fs.exists(docs)))
|
|
159
381
|
return { released };
|
|
160
382
|
for (const category of await fs.list(docs)) {
|
|
@@ -162,10 +384,17 @@ async function releaseReservations(fs, paths, folder) {
|
|
|
162
384
|
continue;
|
|
163
385
|
for (const entry of await fs.list(category.path)) {
|
|
164
386
|
const correlative = leadingCorrelative(entry.name);
|
|
165
|
-
if (entry.type !== "file"
|
|
387
|
+
if ((entry.type !== "file" && entry.type !== "dir") ||
|
|
388
|
+
correlative === null ||
|
|
389
|
+
retained.has(entry.path)) {
|
|
166
390
|
continue;
|
|
167
391
|
}
|
|
168
|
-
if (
|
|
392
|
+
if (entry.type === "dir") {
|
|
393
|
+
const contents = await fs.list(entry.path);
|
|
394
|
+
if (contents.length !== 1 || contents[0]?.name !== FOLDER_RESERVATION_MARKER)
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
397
|
+
if ((await fs.readText(entry.type === "dir" ? join(entry.path, FOLDER_RESERVATION_MARKER) : entry.path)) !== marker)
|
|
169
398
|
continue;
|
|
170
399
|
// The record goes in BEFORE the file is removed, and the order is the
|
|
171
400
|
// whole safety argument. Recording after would leave a window — an I/O
|
|
@@ -177,17 +406,22 @@ async function releaseReservations(fs, paths, folder) {
|
|
|
177
406
|
// record for a marker still on disk. A retry or a recovery reconciles
|
|
178
407
|
// that; nothing reconciles a silent deletion. Same doctrine the baseline
|
|
179
408
|
// seal follows — before, not after, and not only on success.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
409
|
+
const claim = {
|
|
410
|
+
category: category.name,
|
|
411
|
+
correlative,
|
|
412
|
+
name: entry.name.slice(correlative.length + 1),
|
|
413
|
+
owner: folder,
|
|
414
|
+
};
|
|
415
|
+
if (wasPublished(ledger.events, claim))
|
|
416
|
+
continue;
|
|
417
|
+
if (!releaseAlreadyRecorded(ledger.events, claim)) {
|
|
418
|
+
await appendClaimEvent(fs, paths, {
|
|
419
|
+
at: new Date().toISOString(),
|
|
420
|
+
event: "released",
|
|
421
|
+
claim,
|
|
422
|
+
cause: "aw session-close: la reserva seguía intacta al cerrar su sesión",
|
|
423
|
+
});
|
|
424
|
+
}
|
|
191
425
|
await fs.remove(entry.path);
|
|
192
426
|
released.push(`docs/${category.name}/${entry.name}`);
|
|
193
427
|
}
|
|
@@ -211,31 +445,133 @@ async function releaseReservations(fs, paths, folder) {
|
|
|
211
445
|
* mutated nothing, rather than leaving a closed session that conversations are
|
|
212
446
|
* still associated with.
|
|
213
447
|
*/
|
|
214
|
-
async function closeUnderLock(fs, paths, session, row) {
|
|
448
|
+
async function closeUnderLock(fs, paths, session, row, checkpointPath, gitState, force, abandon, preserveReservations, withEvidence) {
|
|
215
449
|
const result = await withCwdLock(fs, paths, async () => {
|
|
450
|
+
if (!(await fs.exists(session.path))) {
|
|
451
|
+
return {
|
|
452
|
+
ok: false,
|
|
453
|
+
failure: {
|
|
454
|
+
error: `${session.folder} cambió de nombre antes del cierre; resolvé otra vez la sesión`,
|
|
455
|
+
code: "SESSION_RENUMBER_STALE",
|
|
456
|
+
},
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
const currentSharing = await sessionsSharingNumber(fs, paths, session.folder);
|
|
460
|
+
if (currentSharing.length > 1) {
|
|
461
|
+
return {
|
|
462
|
+
ok: false,
|
|
463
|
+
failure: {
|
|
464
|
+
error: `el número de ${session.folder} volvió a colisionar; ejecutá aw workspace-migrate --renumber`,
|
|
465
|
+
code: "SESSION_AMBIGUOUS",
|
|
466
|
+
},
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
const checkpoint = (await fs.exists(checkpointPath))
|
|
470
|
+
? await fs.readText(checkpointPath)
|
|
471
|
+
: "# CHECKPOINT\n\n## Completed\n\n## Pending / Next\n";
|
|
472
|
+
// A retry after an approved exceptional close must finish finalize even if
|
|
473
|
+
// the previous process died after writing .closed but before recording it.
|
|
474
|
+
if (!force &&
|
|
475
|
+
!(await fs.exists(join(session.path, CLOSED_MARKER))) &&
|
|
476
|
+
/_\[AI:[^\n]*\]_/.test(checkpoint)) {
|
|
477
|
+
return {
|
|
478
|
+
ok: false,
|
|
479
|
+
failure: {
|
|
480
|
+
error: "CHECKPOINT contiene placeholders sin llenar; completalos o usá --force",
|
|
481
|
+
code: "CHECKPOINT_INCOMPLETE",
|
|
482
|
+
},
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
let body = checkpoint.replace(/\n+## Closure\n\n- Cierre: [^\n]*\n?/g, "").trimEnd();
|
|
486
|
+
if (!/^## (?:Completed|Last action|Lo (?:último|ultimo) que hice)\s*$/m.test(body)) {
|
|
487
|
+
body += "\n\n## Completed";
|
|
488
|
+
}
|
|
489
|
+
if (!/^## (?:Pending \/ Next|Pending|Next step|Pr(?:ó|o)ximo paso)\s*$/m.test(body)) {
|
|
490
|
+
body += "\n\n## Pending / Next";
|
|
491
|
+
}
|
|
216
492
|
const invalidated = await invalidateBindingsTo(fs, paths, session.folder);
|
|
217
493
|
if (!invalidated.ok) {
|
|
218
494
|
return { ok: false, failure: { error: invalidated.reason, code: "SESSION_BINDING_INVALID" } };
|
|
219
495
|
}
|
|
220
496
|
await fs.writeText(join(session.path, CLOSED_MARKER), "");
|
|
221
|
-
|
|
497
|
+
if (abandon)
|
|
498
|
+
await fs.writeText(join(session.path, ABANDONED_MARKER), "");
|
|
499
|
+
await fs.remove(join(session.path, PAUSED_MARKER));
|
|
500
|
+
// Never claim closure in the CHECKPOINT before the marker exists. A write
|
|
501
|
+
// failure afterwards can be repaired by the idempotent close retry.
|
|
502
|
+
await fs.writeText(checkpointPath, `${body}\n\n## Closure\n\n- Cierre: ${gitState}\n`);
|
|
503
|
+
const closure = {
|
|
504
|
+
bindings_invalidated: invalidated.removed,
|
|
505
|
+
reservations: { released: [] },
|
|
506
|
+
};
|
|
222
507
|
try {
|
|
223
|
-
const history = await upsertHistoryRow(fs, paths, historyFields({ ...row, state: "closed" }, session, row.code));
|
|
508
|
+
const history = await upsertHistoryRow(fs, paths, historyFields({ ...row, state: abandon ? "abandoned" : "closed", date: localDateIso(new Date()) }, session, row.code));
|
|
224
509
|
closure.history = { action: history.action, state: history.state };
|
|
225
510
|
}
|
|
226
511
|
catch (err) {
|
|
227
512
|
// Non-fatal, as before: the caller re-runs `aw history-update` on this.
|
|
228
513
|
closure.history_error = err instanceof Error ? err.message : String(err);
|
|
229
514
|
}
|
|
515
|
+
// The same workspace lock excludes renumbering while checking and releasing
|
|
516
|
+
// the marker; a close must not release a claim another session just acquired.
|
|
517
|
+
closure.reservations = await releaseReservations(fs, paths, session.folder, preserveReservations);
|
|
518
|
+
// The narrative belongs to the same locked identity as the marker, HISTORY
|
|
519
|
+
// and reservation sweep. A concurrent renumber cannot move it in between.
|
|
520
|
+
await writeSessionNarrative(fs, paths, { folder: session.folder, path: session.path });
|
|
521
|
+
try {
|
|
522
|
+
closure.scratch_references = await sessionScratchReferences(fs, session.path);
|
|
523
|
+
if (withEvidence)
|
|
524
|
+
closure.evidence_copied = await copySessionEvidence(fs, session.path, closure.scratch_references);
|
|
525
|
+
closure.archive_paths = await archiveSessionMinimum(fs, paths, session.folder, session.path);
|
|
526
|
+
}
|
|
527
|
+
catch (error) {
|
|
528
|
+
closure.archive_error = `no se pudo archivar el mínimo: ${error instanceof Error ? error.message : String(error)}; reintentá aw session-close --code ${session.folder}`;
|
|
529
|
+
}
|
|
230
530
|
return { ok: true, closure };
|
|
231
531
|
});
|
|
232
532
|
if ("error" in result)
|
|
233
533
|
return { error: result.error, code: "LOCK_BUSY" };
|
|
234
534
|
return result.ok ? result.closure : result.failure;
|
|
235
535
|
}
|
|
236
|
-
async function
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
536
|
+
async function publishedRefs(fs, sessionPath) {
|
|
537
|
+
const custody = await readCustody(fs, sessionPath);
|
|
538
|
+
if (custody.status === "unreadable")
|
|
539
|
+
throw new Error(custody.reason);
|
|
540
|
+
if (custody.status !== "present")
|
|
541
|
+
return undefined;
|
|
542
|
+
const paths = new Set(custody.custody.effects
|
|
543
|
+
.filter((effect) => effect.kind === "artifact_published")
|
|
544
|
+
.flatMap((effect) => effect.paths));
|
|
545
|
+
return paths.size === 0 ? undefined : [...paths].sort().join(",");
|
|
546
|
+
}
|
|
547
|
+
async function sourceGitState(fs, paths, git) {
|
|
548
|
+
const block = await readWorkspaceBlock(fs, paths.workspaceDir(), paths.blockMarkers());
|
|
549
|
+
if (!block || block.fuentes.length === 0)
|
|
550
|
+
return "sin fuentes declaradas";
|
|
551
|
+
const result = [];
|
|
552
|
+
for (const source of block.fuentes) {
|
|
553
|
+
if (source.path === null) {
|
|
554
|
+
result.push(`${source.alias}: ruta no disponible`);
|
|
555
|
+
continue;
|
|
556
|
+
}
|
|
557
|
+
try {
|
|
558
|
+
const branch = await git.currentBranch(source.path);
|
|
559
|
+
if (!branch) {
|
|
560
|
+
result.push(`${source.alias}: rama no disponible`);
|
|
561
|
+
continue;
|
|
562
|
+
}
|
|
563
|
+
const upstream = await git.upstreamBranch(source.path, branch);
|
|
564
|
+
if (upstream === null) {
|
|
565
|
+
result.push(`${source.alias}: ${branch}, sin upstream, publicada: no`);
|
|
566
|
+
continue;
|
|
567
|
+
}
|
|
568
|
+
const { ahead, behind } = await git.aheadBehind(source.path, branch, upstream);
|
|
569
|
+
result.push(`${source.alias}: ${branch}, upstream ${upstream}, adelante ${ahead}, atrás ${behind}, publicada: ${upstream.startsWith("refs/remotes/") && upstream.endsWith(`/${branch}`) && ahead === 0 ? "sí" : "no"}`);
|
|
570
|
+
}
|
|
571
|
+
catch (error) {
|
|
572
|
+
result.push(`${source.alias}: estado git no disponible (${error instanceof Error ? error.message : String(error)})`);
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
return result.join("; ");
|
|
240
576
|
}
|
|
241
577
|
//# sourceMappingURL=session-close-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-close-service.js","sourceRoot":"","sources":["../../src/application/session-close-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-close-service.js","sourceRoot":"","sources":["../../src/application/session-close-service.ts"],"names":[],"mappings":"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"}
|