wingfoil 0.2.2 → 0.3.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/README.md +83 -43
- package/dist/agent/discovery.d.ts +72 -0
- package/dist/agent/discovery.d.ts.map +1 -0
- package/dist/agent/discovery.js +210 -0
- package/dist/agent/discovery.js.map +1 -0
- package/dist/agent/execute.d.ts +206 -0
- package/dist/agent/execute.d.ts.map +1 -0
- package/dist/agent/execute.js +581 -0
- package/dist/agent/execute.js.map +1 -0
- package/dist/agent/index.d.ts +23 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +85 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/launch.d.ts +133 -0
- package/dist/agent/launch.d.ts.map +1 -0
- package/dist/agent/launch.js +380 -0
- package/dist/agent/launch.js.map +1 -0
- package/dist/agent/manifest.d.ts +30 -0
- package/dist/agent/manifest.d.ts.map +1 -0
- package/dist/agent/manifest.js +93 -0
- package/dist/agent/manifest.js.map +1 -0
- package/dist/agent/placeholders.d.ts +49 -0
- package/dist/agent/placeholders.d.ts.map +1 -0
- package/dist/agent/placeholders.js +177 -0
- package/dist/agent/placeholders.js.map +1 -0
- package/dist/agent/run-log.d.ts +254 -0
- package/dist/agent/run-log.d.ts.map +1 -0
- package/dist/agent/run-log.js +612 -0
- package/dist/agent/run-log.js.map +1 -0
- package/dist/agent/schema.d.ts +100 -0
- package/dist/agent/schema.d.ts.map +1 -0
- package/dist/agent/schema.js +89 -0
- package/dist/agent/schema.js.map +1 -0
- package/dist/agent/step.d.ts +41 -0
- package/dist/agent/step.d.ts.map +1 -0
- package/dist/agent/step.js +95 -0
- package/dist/agent/step.js.map +1 -0
- package/dist/build-info.json +4 -0
- package/dist/cli/error.d.ts +11 -2
- package/dist/cli/error.d.ts.map +1 -1
- package/dist/cli/error.js +27 -6
- package/dist/cli/error.js.map +1 -1
- package/dist/cli/exit.d.ts +33 -3
- package/dist/cli/exit.d.ts.map +1 -1
- package/dist/cli/exit.js +54 -3
- package/dist/cli/exit.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-command.d.ts.map +1 -1
- package/dist/cli/init-command.js +4 -2
- package/dist/cli/init-command.js.map +1 -1
- package/dist/cli/mcp-command.d.ts +13 -4
- package/dist/cli/mcp-command.d.ts.map +1 -1
- package/dist/cli/mcp-command.js +25 -8
- package/dist/cli/mcp-command.js.map +1 -1
- package/dist/cli/output.d.ts +12 -4
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +15 -4
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/program.d.ts +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +162 -40
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/registrar.d.ts +1 -1
- package/dist/cli/registrar.d.ts.map +1 -1
- package/dist/cli/registrar.js +67 -6
- package/dist/cli/registrar.js.map +1 -1
- package/dist/cli/suggest.d.ts +20 -0
- package/dist/cli/suggest.d.ts.map +1 -0
- package/dist/cli/suggest.js +49 -0
- package/dist/cli/suggest.js.map +1 -0
- package/dist/cli/warning.d.ts +26 -0
- package/dist/cli/warning.d.ts.map +1 -0
- package/dist/cli/warning.js +66 -0
- package/dist/cli/warning.js.map +1 -0
- package/dist/cli.js +11 -2
- package/dist/cli.js.map +1 -1
- package/dist/core/agent-execute.d.ts +44 -0
- package/dist/core/agent-execute.d.ts.map +1 -0
- package/dist/core/agent-execute.js +71 -0
- package/dist/core/agent-execute.js.map +1 -0
- package/dist/core/agent-list.d.ts +95 -0
- package/dist/core/agent-list.d.ts.map +1 -0
- package/dist/core/agent-list.js +207 -0
- package/dist/core/agent-list.js.map +1 -0
- package/dist/core/agent-show.d.ts +44 -0
- package/dist/core/agent-show.d.ts.map +1 -0
- package/dist/core/agent-show.js +188 -0
- package/dist/core/agent-show.js.map +1 -0
- package/dist/core/approval-authority.d.ts +17 -14
- package/dist/core/approval-authority.d.ts.map +1 -1
- package/dist/core/approval-authority.js +9 -9
- package/dist/core/approval-authority.js.map +1 -1
- package/dist/core/builtin-asset.d.ts +18 -15
- package/dist/core/builtin-asset.d.ts.map +1 -1
- package/dist/core/builtin-asset.js +17 -14
- package/dist/core/builtin-asset.js.map +1 -1
- package/dist/core/builtin-integrity.d.ts +12 -2
- package/dist/core/builtin-integrity.d.ts.map +1 -1
- package/dist/core/builtin-integrity.js +85 -9
- package/dist/core/builtin-integrity.js.map +1 -1
- package/dist/core/confinement.d.ts +3 -1
- package/dist/core/confinement.d.ts.map +1 -1
- package/dist/core/confinement.js +7 -4
- package/dist/core/confinement.js.map +1 -1
- package/dist/core/context.d.ts +150 -98
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +602 -66
- package/dist/core/context.js.map +1 -1
- package/dist/core/directive-assign.d.ts +33 -7
- package/dist/core/directive-assign.d.ts.map +1 -1
- package/dist/core/directive-assign.js +67 -27
- package/dist/core/directive-assign.js.map +1 -1
- package/dist/core/directive-scope.d.ts +36 -0
- package/dist/core/directive-scope.d.ts.map +1 -0
- package/dist/core/directive-scope.js +34 -0
- package/dist/core/directive-scope.js.map +1 -0
- package/dist/core/directives-list.d.ts +13 -3
- package/dist/core/directives-list.d.ts.map +1 -1
- package/dist/core/directives-list.js +18 -6
- package/dist/core/directives-list.js.map +1 -1
- package/dist/core/dry-run.d.ts +33 -0
- package/dist/core/dry-run.d.ts.map +1 -0
- package/dist/core/dry-run.js +45 -0
- package/dist/core/dry-run.js.map +1 -0
- package/dist/core/element-ref.d.ts +23 -0
- package/dist/core/element-ref.d.ts.map +1 -0
- package/dist/core/element-ref.js +24 -0
- package/dist/core/element-ref.js.map +1 -0
- package/dist/core/error-details.d.ts +20 -0
- package/dist/core/error-details.d.ts.map +1 -0
- package/dist/core/error-details.js +65 -0
- package/dist/core/error-details.js.map +1 -0
- package/dist/core/exit-code.d.ts.map +1 -1
- package/dist/core/exit-code.js +6 -7
- package/dist/core/exit-code.js.map +1 -1
- package/dist/core/git-identity.d.ts +46 -11
- package/dist/core/git-identity.d.ts.map +1 -1
- package/dist/core/git-identity.js +140 -27
- package/dist/core/git-identity.js.map +1 -1
- package/dist/core/index.d.ts +184 -10
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1045 -185
- package/dist/core/index.js.map +1 -1
- package/dist/core/init.d.ts +45 -5
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +134 -24
- package/dist/core/init.js.map +1 -1
- package/dist/core/loaders.d.ts +170 -14
- package/dist/core/loaders.d.ts.map +1 -1
- package/dist/core/loaders.js +570 -89
- package/dist/core/loaders.js.map +1 -1
- package/dist/core/memory-add-link.d.ts +28 -0
- package/dist/core/memory-add-link.d.ts.map +1 -0
- package/dist/core/memory-add-link.js +67 -0
- package/dist/core/memory-add-link.js.map +1 -0
- package/dist/core/memory-add-type.d.ts +25 -1
- package/dist/core/memory-add-type.d.ts.map +1 -1
- package/dist/core/memory-add-type.js +59 -1
- package/dist/core/memory-add-type.js.map +1 -1
- package/dist/core/memory-amend.d.ts +80 -0
- package/dist/core/memory-amend.d.ts.map +1 -0
- package/dist/core/memory-amend.js +160 -0
- package/dist/core/memory-amend.js.map +1 -0
- package/dist/core/memory-supersede.d.ts +28 -0
- package/dist/core/memory-supersede.d.ts.map +1 -0
- package/dist/core/memory-supersede.js +79 -0
- package/dist/core/memory-supersede.js.map +1 -0
- package/dist/core/memory-transition.d.ts +190 -30
- package/dist/core/memory-transition.d.ts.map +1 -1
- package/dist/core/memory-transition.js +480 -59
- package/dist/core/memory-transition.js.map +1 -1
- package/dist/core/registry.d.ts +82 -10
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js +50 -0
- package/dist/core/registry.js.map +1 -1
- package/dist/core/relevance.d.ts +74 -12
- package/dist/core/relevance.d.ts.map +1 -1
- package/dist/core/relevance.js +45 -27
- package/dist/core/relevance.js.map +1 -1
- package/dist/core/require-reason.d.ts.map +1 -1
- package/dist/core/require-reason.js +6 -5
- package/dist/core/require-reason.js.map +1 -1
- package/dist/core/required-fields.d.ts +28 -0
- package/dist/core/required-fields.d.ts.map +1 -0
- package/dist/core/required-fields.js +60 -0
- package/dist/core/required-fields.js.map +1 -0
- package/dist/core/revision.d.ts +82 -0
- package/dist/core/revision.d.ts.map +1 -0
- package/dist/core/revision.js +144 -0
- package/dist/core/revision.js.map +1 -0
- package/dist/core/types.d.ts +28 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +12 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/workflow-core-checks.d.ts +34 -0
- package/dist/core/workflow-core-checks.d.ts.map +1 -0
- package/dist/core/workflow-core-checks.js +403 -0
- package/dist/core/workflow-core-checks.js.map +1 -0
- package/dist/core/workflow-create-remove.d.ts +65 -0
- package/dist/core/workflow-create-remove.d.ts.map +1 -0
- package/dist/core/workflow-create-remove.js +277 -0
- package/dist/core/workflow-create-remove.js.map +1 -0
- package/dist/core/workflow-deduction.d.ts +48 -0
- package/dist/core/workflow-deduction.d.ts.map +1 -0
- package/dist/core/workflow-deduction.js +523 -0
- package/dist/core/workflow-deduction.js.map +1 -0
- package/dist/core/workflow-diagnostics.d.ts +83 -0
- package/dist/core/workflow-diagnostics.d.ts.map +1 -0
- package/dist/core/workflow-diagnostics.js +375 -0
- package/dist/core/workflow-diagnostics.js.map +1 -0
- package/dist/core/workflow-exit-state.d.ts +125 -0
- package/dist/core/workflow-exit-state.d.ts.map +1 -0
- package/dist/core/workflow-exit-state.js +243 -0
- package/dist/core/workflow-exit-state.js.map +1 -0
- package/dist/core/workflow-finalize.d.ts +37 -0
- package/dist/core/workflow-finalize.d.ts.map +1 -0
- package/dist/core/workflow-finalize.js +153 -0
- package/dist/core/workflow-finalize.js.map +1 -0
- package/dist/core/workflow-list-show.d.ts +176 -0
- package/dist/core/workflow-list-show.d.ts.map +1 -0
- package/dist/core/workflow-list-show.js +268 -0
- package/dist/core/workflow-list-show.js.map +1 -0
- package/dist/core/workflow-next.d.ts +268 -0
- package/dist/core/workflow-next.d.ts.map +1 -0
- package/dist/core/workflow-next.js +503 -0
- package/dist/core/workflow-next.js.map +1 -0
- package/dist/core/workflow-registry.d.ts +52 -0
- package/dist/core/workflow-registry.d.ts.map +1 -0
- package/dist/core/workflow-registry.js +158 -0
- package/dist/core/workflow-registry.js.map +1 -0
- package/dist/core/workflow-start-end.d.ts +71 -0
- package/dist/core/workflow-start-end.d.ts.map +1 -0
- package/dist/core/workflow-start-end.js +298 -0
- package/dist/core/workflow-start-end.js.map +1 -0
- package/dist/core/workflow-status.d.ts +83 -0
- package/dist/core/workflow-status.d.ts.map +1 -0
- package/dist/core/workflow-status.js +125 -0
- package/dist/core/workflow-status.js.map +1 -0
- package/dist/core/write-guard.d.ts +51 -8
- package/dist/core/write-guard.d.ts.map +1 -1
- package/dist/core/write-guard.js +139 -9
- package/dist/core/write-guard.js.map +1 -1
- package/dist/directives/index.d.ts +3 -2
- package/dist/directives/index.d.ts.map +1 -1
- package/dist/directives/index.js +5 -3
- package/dist/directives/index.js.map +1 -1
- package/dist/directives/schema.d.ts +34 -29
- package/dist/directives/schema.d.ts.map +1 -1
- package/dist/directives/schema.js +35 -29
- package/dist/directives/schema.js.map +1 -1
- package/dist/directives/version.d.ts +28 -0
- package/dist/directives/version.d.ts.map +1 -0
- package/dist/directives/version.js +51 -0
- package/dist/directives/version.js.map +1 -0
- package/dist/dna/edit.d.ts +7 -6
- package/dist/dna/edit.d.ts.map +1 -1
- package/dist/dna/edit.js +96 -41
- package/dist/dna/edit.js.map +1 -1
- package/dist/dna/mutate.js +18 -3
- package/dist/dna/mutate.js.map +1 -1
- package/dist/dna/path.d.ts +2 -2
- package/dist/dna/roles.d.ts +1 -1
- package/dist/dna/schema.d.ts +61 -3
- package/dist/dna/schema.d.ts.map +1 -1
- package/dist/dna/schema.js +121 -6
- package/dist/dna/schema.js.map +1 -1
- package/dist/mcp/dna-resource.d.ts.map +1 -1
- package/dist/mcp/dna-resource.js +4 -4
- package/dist/mcp/dna-resource.js.map +1 -1
- package/dist/mcp/index.d.ts +8 -4
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +13 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/memory-resource.d.ts.map +1 -1
- package/dist/mcp/memory-resource.js +30 -19
- package/dist/mcp/memory-resource.js.map +1 -1
- package/dist/mcp/prompt.d.ts +61 -24
- package/dist/mcp/prompt.d.ts.map +1 -1
- package/dist/mcp/prompt.js +176 -47
- package/dist/mcp/prompt.js.map +1 -1
- package/dist/mcp/read-only.d.ts +39 -0
- package/dist/mcp/read-only.d.ts.map +1 -1
- package/dist/mcp/read-only.js +61 -0
- package/dist/mcp/read-only.js.map +1 -1
- package/dist/mcp/registrar.d.ts +10 -0
- package/dist/mcp/registrar.d.ts.map +1 -1
- package/dist/mcp/registrar.js +48 -12
- package/dist/mcp/registrar.js.map +1 -1
- package/dist/mcp/server.d.ts +21 -14
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +41 -15
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session-resource.d.ts +13 -0
- package/dist/mcp/session-resource.d.ts.map +1 -0
- package/dist/mcp/session-resource.js +65 -0
- package/dist/mcp/session-resource.js.map +1 -0
- package/dist/mcp/workflow-resource.d.ts +18 -0
- package/dist/mcp/workflow-resource.d.ts.map +1 -1
- package/dist/mcp/workflow-resource.js +37 -8
- package/dist/mcp/workflow-resource.js.map +1 -1
- package/dist/memory/add.d.ts +110 -24
- package/dist/memory/add.d.ts.map +1 -1
- package/dist/memory/add.js +251 -64
- package/dist/memory/add.js.map +1 -1
- package/dist/memory/audit.d.ts +152 -39
- package/dist/memory/audit.d.ts.map +1 -1
- package/dist/memory/audit.js +257 -103
- package/dist/memory/audit.js.map +1 -1
- package/dist/memory/commit-message.d.ts +60 -38
- package/dist/memory/commit-message.d.ts.map +1 -1
- package/dist/memory/commit-message.js +167 -21
- package/dist/memory/commit-message.js.map +1 -1
- package/dist/memory/entry.d.ts.map +1 -1
- package/dist/memory/entry.js +1 -2
- package/dist/memory/entry.js.map +1 -1
- package/dist/memory/frontmatter-edit.d.ts +16 -4
- package/dist/memory/frontmatter-edit.d.ts.map +1 -1
- package/dist/memory/frontmatter-edit.js +13 -1
- package/dist/memory/frontmatter-edit.js.map +1 -1
- package/dist/memory/git-log.d.ts +18 -6
- package/dist/memory/git-log.d.ts.map +1 -1
- package/dist/memory/git-log.js +40 -13
- package/dist/memory/git-log.js.map +1 -1
- package/dist/memory/history.d.ts +73 -12
- package/dist/memory/history.d.ts.map +1 -1
- package/dist/memory/history.js +128 -44
- package/dist/memory/history.js.map +1 -1
- package/dist/memory/index.d.ts +13 -11
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +34 -3
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/query.d.ts +161 -19
- package/dist/memory/query.d.ts.map +1 -1
- package/dist/memory/query.js +435 -55
- package/dist/memory/query.js.map +1 -1
- package/dist/memory/schema.d.ts +52 -3
- package/dist/memory/schema.d.ts.map +1 -1
- package/dist/memory/schema.js +132 -8
- package/dist/memory/schema.js.map +1 -1
- package/dist/memory/state-machine.d.ts +65 -10
- package/dist/memory/state-machine.d.ts.map +1 -1
- package/dist/memory/state-machine.js +134 -46
- package/dist/memory/state-machine.js.map +1 -1
- package/dist/memory/submit.d.ts +52 -3
- package/dist/memory/submit.d.ts.map +1 -1
- package/dist/memory/submit.js +118 -11
- package/dist/memory/submit.js.map +1 -1
- package/dist/storage/build-stamp.d.ts +18 -0
- package/dist/storage/build-stamp.d.ts.map +1 -0
- package/dist/storage/build-stamp.js +68 -0
- package/dist/storage/build-stamp.js.map +1 -0
- package/dist/storage/builtin-adapters.d.ts +32 -0
- package/dist/storage/builtin-adapters.d.ts.map +1 -0
- package/dist/storage/builtin-adapters.js +100 -0
- package/dist/storage/builtin-adapters.js.map +1 -0
- package/dist/storage/builtin-directives.d.ts +0 -29
- package/dist/storage/builtin-directives.d.ts.map +1 -1
- package/dist/storage/builtin-directives.js +9 -4
- package/dist/storage/builtin-directives.js.map +1 -1
- package/dist/storage/commit.d.ts +310 -3
- package/dist/storage/commit.d.ts.map +1 -1
- package/dist/storage/commit.js +807 -33
- package/dist/storage/commit.js.map +1 -1
- package/dist/storage/document.d.ts +6 -0
- package/dist/storage/document.d.ts.map +1 -1
- package/dist/storage/document.js +10 -1
- package/dist/storage/document.js.map +1 -1
- package/dist/storage/dry-run.d.ts +65 -0
- package/dist/storage/dry-run.d.ts.map +1 -0
- package/dist/storage/dry-run.js +150 -0
- package/dist/storage/dry-run.js.map +1 -0
- package/dist/storage/errors.d.ts +26 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +27 -1
- package/dist/storage/errors.js.map +1 -1
- package/dist/storage/frontmatter.d.ts +1 -1
- package/dist/storage/frontmatter.js +1 -1
- package/dist/storage/git-read.d.ts +64 -0
- package/dist/storage/git-read.d.ts.map +1 -0
- package/dist/storage/git-read.js +107 -0
- package/dist/storage/git-read.js.map +1 -0
- package/dist/storage/index.d.ts +13 -5
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +39 -2
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/layout.d.ts +2 -2
- package/dist/storage/layout.d.ts.map +1 -1
- package/dist/storage/layout.js +2 -7
- package/dist/storage/layout.js.map +1 -1
- package/dist/storage/memory-path.d.ts +18 -5
- package/dist/storage/memory-path.d.ts.map +1 -1
- package/dist/storage/memory-path.js +41 -5
- package/dist/storage/memory-path.js.map +1 -1
- package/dist/storage/snapshot.js +1 -1
- package/dist/storage/templates.d.ts +33 -6
- package/dist/storage/templates.d.ts.map +1 -1
- package/dist/storage/templates.js +170 -16
- package/dist/storage/templates.js.map +1 -1
- package/dist/validation/config-version.d.ts +19 -0
- package/dist/validation/config-version.d.ts.map +1 -0
- package/dist/validation/config-version.js +53 -0
- package/dist/validation/config-version.js.map +1 -0
- package/dist/validation/diagnostic.d.ts +40 -0
- package/dist/validation/diagnostic.d.ts.map +1 -0
- package/dist/validation/diagnostic.js +41 -0
- package/dist/validation/diagnostic.js.map +1 -0
- package/dist/validation/format.d.ts +74 -0
- package/dist/validation/format.d.ts.map +1 -0
- package/dist/validation/format.js +104 -0
- package/dist/validation/format.js.map +1 -0
- package/dist/validation/id.d.ts +14 -0
- package/dist/validation/id.d.ts.map +1 -1
- package/dist/validation/id.js +35 -11
- package/dist/validation/id.js.map +1 -1
- package/dist/validation/identity.d.ts +40 -0
- package/dist/validation/identity.d.ts.map +1 -0
- package/dist/validation/identity.js +78 -0
- package/dist/validation/identity.js.map +1 -0
- package/dist/validation/index.d.ts +9 -3
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +30 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/secret-scan.d.ts +3 -2
- package/dist/validation/secret-scan.d.ts.map +1 -1
- package/dist/validation/secret-scan.js +32 -11
- package/dist/validation/secret-scan.js.map +1 -1
- package/dist/validation/warning.d.ts +30 -16
- package/dist/validation/warning.d.ts.map +1 -1
- package/dist/validation/warning.js +74 -7
- package/dist/validation/warning.js.map +1 -1
- package/dist/workflow/bindings.d.ts +152 -0
- package/dist/workflow/bindings.d.ts.map +1 -0
- package/dist/workflow/bindings.js +249 -0
- package/dist/workflow/bindings.js.map +1 -0
- package/dist/workflow/create.d.ts +13 -0
- package/dist/workflow/create.d.ts.map +1 -0
- package/dist/workflow/create.js +41 -0
- package/dist/workflow/create.js.map +1 -0
- package/dist/workflow/deduce.d.ts +400 -0
- package/dist/workflow/deduce.d.ts.map +1 -0
- package/dist/workflow/deduce.js +1109 -0
- package/dist/workflow/deduce.js.map +1 -0
- package/dist/workflow/manifest-edit.d.ts +19 -0
- package/dist/workflow/manifest-edit.d.ts.map +1 -0
- package/dist/workflow/manifest-edit.js +124 -0
- package/dist/workflow/manifest-edit.js.map +1 -0
- package/dist/workflow/schema.d.ts +158 -19
- package/dist/workflow/schema.d.ts.map +1 -1
- package/dist/workflow/schema.js +163 -15
- package/dist/workflow/schema.js.map +1 -1
- package/package.json +18 -8
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ASSIGNED_TO_ME = exports.noApproverMessage = exports.W_APPROVAL_ROLE_WITHOUT_AUTHORITY = exports.noNextStepMessage = exports.NO_OPEN_WORKFLOWS = void 0;
|
|
4
|
+
exports.membersHoldingRole = membersHoldingRole;
|
|
5
|
+
exports.routeApproval = routeApproval;
|
|
6
|
+
exports.approvalDiagnostics = approvalDiagnostics;
|
|
7
|
+
exports.buildStep = buildStep;
|
|
8
|
+
exports.assigneeRoles = assigneeRoles;
|
|
9
|
+
exports.unresolvedRef = unresolvedRef;
|
|
10
|
+
exports.emptyFrontierMessage = emptyFrontierMessage;
|
|
11
|
+
exports.nextWorkflow = nextWorkflow;
|
|
12
|
+
exports.readNextInputs = readNextInputs;
|
|
13
|
+
exports.workflowNextAtHead = workflowNextAtHead;
|
|
14
|
+
exports.describeMembers = describeMembers;
|
|
15
|
+
exports.approvalLine = approvalLine;
|
|
16
|
+
exports.humanNeededLine = humanNeededLine;
|
|
17
|
+
exports.stepLines = stepLines;
|
|
18
|
+
exports.renderNextConsole = renderNextConsole;
|
|
19
|
+
const state_machine_1 = require("../memory/state-machine");
|
|
20
|
+
const warning_1 = require("../validation/warning");
|
|
21
|
+
const bindings_1 = require("../workflow/bindings");
|
|
22
|
+
const deduce_1 = require("../workflow/deduce");
|
|
23
|
+
const approval_authority_1 = require("./approval-authority");
|
|
24
|
+
const context_1 = require("./context");
|
|
25
|
+
const git_identity_1 = require("./git-identity");
|
|
26
|
+
const loaders_1 = require("./loaders");
|
|
27
|
+
const types_1 = require("./types");
|
|
28
|
+
const workflow_list_show_1 = require("./workflow-list-show");
|
|
29
|
+
const workflow_deduction_1 = require("./workflow-deduction");
|
|
30
|
+
/** `NextResult.message` when no instance is open (`spec-017` §7.3). */
|
|
31
|
+
exports.NO_OPEN_WORKFLOWS = 'no open workflows';
|
|
32
|
+
/** `NextResult.message` when the selected instance's frontier is empty and it is complete (BDD P4.4 sc. 3). */
|
|
33
|
+
const noNextStepMessage = (workflow) => `no next step: workflow '${workflow}' is complete`;
|
|
34
|
+
exports.noNextStepMessage = noNextStepMessage;
|
|
35
|
+
/** `W_APPROVAL_ROLE_WITHOUT_AUTHORITY` (`spec-017` §2, §5.1): an approval is routed to a member without the `approver` role. */
|
|
36
|
+
exports.W_APPROVAL_ROLE_WITHOUT_AUTHORITY = 'W_APPROVAL_ROLE_WITHOUT_AUTHORITY';
|
|
37
|
+
/** The `dna.yaml` path every member reference of a routing warning is reported against (repository-relative). */
|
|
38
|
+
const DNA_FILE = '.wingfoil/dna.yaml';
|
|
39
|
+
/** `routingError` when no member holds the approval's role (`spec-017` §5.1, BDD P4.14 sc. 3). */
|
|
40
|
+
const noApproverMessage = (role) => `no approver found for role '${role}' in dna.yaml`;
|
|
41
|
+
exports.noApproverMessage = noApproverMessage;
|
|
42
|
+
/** The `<who>` of `--assigned-to` that stands for the git identity (`spec-017` §7.3, BDD P4.4 sc. 2). */
|
|
43
|
+
exports.ASSIGNED_TO_ME = 'me';
|
|
44
|
+
/** Code-unit order, as a comparator. */
|
|
45
|
+
function compareText(a, b) {
|
|
46
|
+
return Number(a > b) - Number(a < b);
|
|
47
|
+
}
|
|
48
|
+
/** The modes a phase allows (`spec-017` §6.3): `fresh` always, plus the declared non-fresh one. */
|
|
49
|
+
function allowedModes(mode) {
|
|
50
|
+
return mode === undefined || mode === 'fresh' ? ['fresh'] : ['fresh', mode];
|
|
51
|
+
}
|
|
52
|
+
/** The members of `dna.yaml` holding `role`, ascending `(name, email)` (`spec-017` §1.3, §5.1). */
|
|
53
|
+
function membersHoldingRole(dnaYaml, role) {
|
|
54
|
+
return (dnaYaml?.team?.members ?? [])
|
|
55
|
+
.filter((member) => member.roles.includes(role))
|
|
56
|
+
.map((member) => ({ name: member.name, email: member.email ?? '' }))
|
|
57
|
+
.sort((a, b) => compareText(a.name, b.name) || compareText(a.email, b.email));
|
|
58
|
+
}
|
|
59
|
+
/** The `name: value` arguments of a token's parentheses, unquoted (`git.merge(from: main)` → `{ from: 'main' }`). */
|
|
60
|
+
function tokenArguments(text) {
|
|
61
|
+
const args = new Map();
|
|
62
|
+
const open = text.indexOf('(');
|
|
63
|
+
if (open === -1 || !text.endsWith(')'))
|
|
64
|
+
return args;
|
|
65
|
+
for (const match of text.slice(open + 1, -1).matchAll(/([A-Za-z_][\w-]*)\s*:\s*("[^"]*"|'[^']*'|[^,\s)]+)/g)) {
|
|
66
|
+
args.set(match[1], match[2].replace(/^["']|["']$/g, ''));
|
|
67
|
+
}
|
|
68
|
+
return args;
|
|
69
|
+
}
|
|
70
|
+
/** The first argument of `….set_state(s)` / `….set_release(v)`, unquoted, or `null`. */
|
|
71
|
+
function firstArgument(text) {
|
|
72
|
+
const match = /\(\s*["']?([^"'()]+?)["']?\s*\)\s*$/.exec(text);
|
|
73
|
+
return match ? match[1].trim() : null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* `wf(<type>): <verb> <ids> [<bracket>]` per group of entries with the same type, verb and bracket, ids joined
|
|
77
|
+
* by `, `, one subject per line; `assign release <v>` reads `wf(<type>): assign release <v> to <ids>`
|
|
78
|
+
* (`spec-003` verb table). `undefined` when there is no entry.
|
|
79
|
+
*/
|
|
80
|
+
function renderSubjects(entries) {
|
|
81
|
+
const groups = new Map();
|
|
82
|
+
for (const entry of entries) {
|
|
83
|
+
const key = `${entry.type}\u0000${entry.verb}\u0000${entry.bracket}`;
|
|
84
|
+
groups.set(key, [...(groups.get(key) ?? []), entry]);
|
|
85
|
+
}
|
|
86
|
+
if (groups.size === 0)
|
|
87
|
+
return undefined;
|
|
88
|
+
return [...groups.values()]
|
|
89
|
+
.map((group) => {
|
|
90
|
+
const { type, verb, bracket } = group[0];
|
|
91
|
+
const ids = group.map((entry) => entry.id).join(', ');
|
|
92
|
+
return bracket === '' ? `wf(${type}): ${verb} to ${ids}` : `wf(${type}): ${verb} ${ids} [${bracket}]`;
|
|
93
|
+
})
|
|
94
|
+
.join('\n');
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The commit subject(s) a built-in `manual` Memory action is expected to produce (`spec-003` § "Action
|
|
98
|
+
* expressions", the verb table and the rule under it; `spec-017` §6.1), or `undefined` when it produces none.
|
|
99
|
+
* A target not known yet is written `<id>` (and its type `<type>`, its state `<from>`):
|
|
100
|
+
* - `set_state(s)`: `approve` when the phase declares `approval:`, else `finalize` when `s` is the last state
|
|
101
|
+
* of the type's `sequence`, else `start`; bracket `[<from> → s]`, `<from>` the bound element's state before
|
|
102
|
+
* the action (§4.4) or each other target's status at `HEAD`;
|
|
103
|
+
* - `<T>.sync_state(for_each: <S>.<field>)`: `sync`, each named element moved to the state of the same name
|
|
104
|
+
* as the source's, or to its own last state when the source's is its type's last; the bracket chains the
|
|
105
|
+
* states passed forward. An element already there needs no commit;
|
|
106
|
+
* - `set_release(v)`: `assign release <v> to <ids>`, one subject per type.
|
|
107
|
+
*/
|
|
108
|
+
function expectedCommit(action, phase, memoryYaml) {
|
|
109
|
+
const name = (0, bindings_1.tokenName)(action.token);
|
|
110
|
+
const machineOf = (type) => (Object.prototype.hasOwnProperty.call(memoryYaml.types, type) ? (0, state_machine_1.resolveStateMachine)(memoryYaml, type) : null);
|
|
111
|
+
const lastOf = (machine) => machine.sequence[machine.sequence.length - 1];
|
|
112
|
+
const targets = action.targets.length > 0 ? action.targets : [{ type: action.targetType ?? '<type>', id: '<id>', status: action.target === 'bound' && action.boundFrom !== null ? action.boundFrom : '<from>' }];
|
|
113
|
+
const argument = firstArgument(action.text) ?? '';
|
|
114
|
+
if (name === 'element.set_release')
|
|
115
|
+
return renderSubjects(targets.map((target) => ({ type: target.type, verb: `assign release ${argument}`, bracket: '', id: target.id })));
|
|
116
|
+
if (name.endsWith('.set_state')) {
|
|
117
|
+
return renderSubjects(targets.map((target) => {
|
|
118
|
+
const machine = machineOf(target.type);
|
|
119
|
+
const verb = phase.approval !== undefined ? 'approve' : machine !== null && lastOf(machine) === argument ? 'finalize' : 'start';
|
|
120
|
+
const from = action.target === 'bound' && action.boundFrom !== null ? action.boundFrom : target.status;
|
|
121
|
+
return { type: target.type, verb, bracket: `${from} → ${argument}`, id: target.id };
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
// `<T>.sync_state(for_each: <S>.<field>)`; a sync whose source is not known yet expects nothing.
|
|
125
|
+
const source = action.source;
|
|
126
|
+
if (!name.endsWith('.sync_state') || source === undefined || source.state === null)
|
|
127
|
+
return undefined;
|
|
128
|
+
const sourceMachine = machineOf(source.type);
|
|
129
|
+
const sourceLast = sourceMachine !== null && lastOf(sourceMachine) === source.state;
|
|
130
|
+
// The aggregate rule (task-225, W3 B4 handover): a forward move waits until every other source naming the target
|
|
131
|
+
// has reached the source's state — its last state when the source is in its last (a bug passes `in-review` once
|
|
132
|
+
// every task naming it is `done`). A move back is never held.
|
|
133
|
+
// A state the source's machine does not place (`-1`) holds nothing back.
|
|
134
|
+
const rank = (state) => sourceMachine?.sequence.indexOf(state) ?? -1;
|
|
135
|
+
const required = rank(sourceLast ? lastOf(sourceMachine) : source.state);
|
|
136
|
+
// The deduction lists the peers of every target it names (`DeducedAction.source.peers`).
|
|
137
|
+
const peersReached = (id) => source.peers.find((entry) => entry.id === id).sources.every((peer) => rank(peer.status) >= required);
|
|
138
|
+
const entries = [];
|
|
139
|
+
for (const target of action.targets) {
|
|
140
|
+
const machine = machineOf(target.type); // a target was found as a Memory element of its type
|
|
141
|
+
const to = machine.sequence.includes(source.state) ? source.state : sourceLast ? lastOf(machine) : null;
|
|
142
|
+
if (to === null || target.status === to)
|
|
143
|
+
continue;
|
|
144
|
+
const from = machine.sequence.indexOf(target.status);
|
|
145
|
+
const toIndex = machine.sequence.indexOf(to);
|
|
146
|
+
const forward = from !== -1 && toIndex > from;
|
|
147
|
+
if (forward && !peersReached(target.id))
|
|
148
|
+
continue;
|
|
149
|
+
const chain = forward ? machine.sequence.slice(from, toIndex + 1) : [target.status, to];
|
|
150
|
+
entries.push({ type: target.type, verb: 'sync', bracket: chain.join(' → '), id: target.id });
|
|
151
|
+
}
|
|
152
|
+
return renderSubjects(entries);
|
|
153
|
+
}
|
|
154
|
+
/** Replace each `{name}` element of a project `run` argv with the token's `name:` argument, when it has one. */
|
|
155
|
+
function interpolateRun(run, text) {
|
|
156
|
+
const args = tokenArguments(text);
|
|
157
|
+
return run.map((element) => element.replace(/^\{([^{}]+)\}$/, (whole, name) => args.get(name) ?? whole));
|
|
158
|
+
}
|
|
159
|
+
/** The binding of one action, with the step's operands filled (`spec-017` §6.1). */
|
|
160
|
+
function actionBinding(action, step, phase, inputs) {
|
|
161
|
+
const binding = (0, bindings_1.resolveToken)(action.token, 'action', inputs.bindings);
|
|
162
|
+
const name = (0, bindings_1.tokenName)(action.token);
|
|
163
|
+
switch (binding.kind) {
|
|
164
|
+
case 'wingfoil': {
|
|
165
|
+
// A whole command (review fix 2): the operands the verb requires, as placeholders where only the user
|
|
166
|
+
// can give them. `--workflow` / `--step` link the added element to the step (spec-017 §7.10, task-227).
|
|
167
|
+
const argv = [...binding.argv]; // a built-in `wingfoil` binding always names its command (`bindings.ts`)
|
|
168
|
+
if (name === 'memory.add')
|
|
169
|
+
argv.push('--title', '<title>', '--workflow', step.instance, '--step', step.key);
|
|
170
|
+
else if (name.startsWith('memory.')) {
|
|
171
|
+
argv.push(...(action.targets.length > 0 ? action.targets.map((target) => target.id) : ['<id>']));
|
|
172
|
+
if (name === 'memory.approve' || name === 'memory.reject')
|
|
173
|
+
argv.push('--reason', '<reason>');
|
|
174
|
+
}
|
|
175
|
+
return { kind: 'wingfoil', argv };
|
|
176
|
+
}
|
|
177
|
+
case 'agent':
|
|
178
|
+
return { kind: 'agent', argv: ['wingfoil', 'agent', 'execute', '--workflow', step.instance, '--step', step.key] };
|
|
179
|
+
case 'run':
|
|
180
|
+
return { kind: 'run', argv: interpolateRun(binding.argv, action.text) }; // a `run` binding is its argv
|
|
181
|
+
case 'manual': {
|
|
182
|
+
// A step exists only for an open plan, a Memory element: `memory.yaml` is present.
|
|
183
|
+
const commit = binding.source === 'built-in' ? expectedCommit(action, phase, inputs.memoryYaml) : undefined;
|
|
184
|
+
return commit === undefined ? { kind: 'manual' } : { kind: 'manual', expectedCommit: commit };
|
|
185
|
+
}
|
|
186
|
+
default:
|
|
187
|
+
return { kind: 'unbound' };
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/** A check token with its binding, never evaluated (`spec-017` §6.1). */
|
|
191
|
+
function checkView(token, bindings) {
|
|
192
|
+
const binding = (0, bindings_1.resolveToken)(token, 'check', bindings);
|
|
193
|
+
return { token, binding: binding.kind === 'run' ? { kind: 'run', argv: interpolateRun(binding.argv, token) } : { kind: binding.kind }, evaluated: false };
|
|
194
|
+
}
|
|
195
|
+
/** The role's directives (`spec-017` §6.2): ids and titles, ascending by id, and the resolution's warnings. */
|
|
196
|
+
function roleDirectives(role, inputs) {
|
|
197
|
+
if (role === null)
|
|
198
|
+
return { directives: [], directiveWarnings: [] };
|
|
199
|
+
if (inputs.rolesYaml === null)
|
|
200
|
+
return { directives: [], directiveWarnings: [`roles.yaml is absent: no directive resolved for role '${role}'`] };
|
|
201
|
+
const resolution = (0, context_1.resolveRoleDirectives)(inputs.directiveFiles, inputs.rolesYaml, role);
|
|
202
|
+
return {
|
|
203
|
+
directives: resolution.directives
|
|
204
|
+
.map((file) => ({ id: file.frontmatter.id, title: file.frontmatter.title }))
|
|
205
|
+
.sort((a, b) => compareText(a.id, b.id)),
|
|
206
|
+
directiveWarnings: resolution.warnings,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Who an approval is routed to (`spec-017` §5.1, BDD P4.14, `dl-033`): `by_role: R` → every member holding `R`,
|
|
211
|
+
* ascending `(name, email)`, or `routedTo: []` with `routingError` when none does; `by_person: P` → the member whose
|
|
212
|
+
* name or email is `P` (the registry refuses one naming nobody, `E_PHASE_APPROVER_UNKNOWN`). Reported only.
|
|
213
|
+
*/
|
|
214
|
+
function routeApproval(approval, dnaYaml) {
|
|
215
|
+
if ('by_role' in approval) {
|
|
216
|
+
const routedTo = membersHoldingRole(dnaYaml, approval.by_role);
|
|
217
|
+
return routedTo.length > 0 ? { byRole: approval.by_role, routedTo } : { byRole: approval.by_role, routedTo, routingError: (0, exports.noApproverMessage)(approval.by_role) };
|
|
218
|
+
}
|
|
219
|
+
const person = approval.by_person;
|
|
220
|
+
const member = (dnaYaml?.team?.members ?? []).find((candidate) => candidate.name === person || candidate.email === person);
|
|
221
|
+
return member === undefined
|
|
222
|
+
? { byPerson: person, routedTo: [], routingError: `no member '${person}' found in dna.yaml` }
|
|
223
|
+
: { byPerson: person, routedTo: [{ name: member.name, email: member.email ?? '' }] };
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* `W_APPROVAL_ROLE_WITHOUT_AUTHORITY` for every member a step's approval is routed to who does not hold the
|
|
227
|
+
* `approver` role (`spec-017` §2, §5.1; REQ-SEC-03: routing never changes who may decide), in step order then
|
|
228
|
+
* routing order (§1.3), each against the member's `dna.yaml` entry.
|
|
229
|
+
*/
|
|
230
|
+
function approvalDiagnostics(steps, dnaYaml) {
|
|
231
|
+
const members = dnaYaml?.team?.members ?? [];
|
|
232
|
+
const out = [];
|
|
233
|
+
for (const step of steps) {
|
|
234
|
+
if (step.awaiting?.kind !== 'approval')
|
|
235
|
+
continue;
|
|
236
|
+
for (const routed of step.awaiting.routedTo) {
|
|
237
|
+
const index = members.findIndex((member) => member.name === routed.name && (member.email ?? '') === routed.email);
|
|
238
|
+
if (index === -1 || members[index].roles.includes(approval_authority_1.APPROVER_ROLE))
|
|
239
|
+
continue;
|
|
240
|
+
out.push({
|
|
241
|
+
code: exports.W_APPROVAL_ROLE_WITHOUT_AUTHORITY,
|
|
242
|
+
severity: 'warning',
|
|
243
|
+
file: DNA_FILE,
|
|
244
|
+
path: `team.members[${index}].roles`,
|
|
245
|
+
message: `approval of ${step.key} is routed to ${routed.name} <${routed.email}>, who does not hold the '${approval_authority_1.APPROVER_ROLE}' role: only an approver may decide it`,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return out;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Build the reported step from a deduced frontier step (`spec-017` §6, §8 `Step`). Pure: it reads the
|
|
253
|
+
* deduced step and `inputs` only.
|
|
254
|
+
*/
|
|
255
|
+
function buildStep(step, inputs) {
|
|
256
|
+
// The step's workflow and phase are loaded: deduction puts only loaded workflows' phases on a frontier.
|
|
257
|
+
const workflow = inputs.workflows.find((candidate) => candidate.name === step.workflow);
|
|
258
|
+
const phase = workflow.phases.find((candidate) => candidate.name === step.phase);
|
|
259
|
+
const scope = step.scope;
|
|
260
|
+
const role = step.role;
|
|
261
|
+
const agentRole = role !== null && (inputs.dnaYaml?.team?.agents ?? []).some((agent) => agent.executes_as.includes(role));
|
|
262
|
+
const otherMissing = step.evidence.missing.filter((kind) => kind !== 'awaits' && kind !== 'record');
|
|
263
|
+
const approval = step.approval;
|
|
264
|
+
// §5.1: a carried element awaits, or the phase holds no gate and only its record is missing.
|
|
265
|
+
const approvalPending = approval !== null && phase.approval !== undefined && (approval.elements.length > 0 || (approval.recordNeeded && otherMissing.length === 0 && step.evidence.missing.includes('record')));
|
|
266
|
+
const awaiting = approvalPending
|
|
267
|
+
? { kind: 'approval', ...routeApproval(phase.approval, inputs.dnaYaml), elements: approval.elements, recordNeeded: approval.elements.length === 0 }
|
|
268
|
+
: phase.awaits !== undefined && otherMissing.length === 0
|
|
269
|
+
? { kind: 'party', party: phase.awaits.party, evidence: checkView(phase.awaits.evidence, inputs.bindings) }
|
|
270
|
+
: null;
|
|
271
|
+
return {
|
|
272
|
+
key: step.key,
|
|
273
|
+
instance: step.instance,
|
|
274
|
+
trail: step.trail,
|
|
275
|
+
workflow: step.workflow,
|
|
276
|
+
phase: step.phase,
|
|
277
|
+
scope,
|
|
278
|
+
role,
|
|
279
|
+
agentRole,
|
|
280
|
+
members: role === null ? [] : membersHoldingRole(inputs.dnaYaml, role),
|
|
281
|
+
...roleDirectives(role, inputs),
|
|
282
|
+
actions: step.actions.map((action) => ({
|
|
283
|
+
token: action.token,
|
|
284
|
+
text: action.text,
|
|
285
|
+
unresolved: action.unresolved,
|
|
286
|
+
target: action.target,
|
|
287
|
+
binding: actionBinding(action, step, phase, inputs),
|
|
288
|
+
})),
|
|
289
|
+
checks: {
|
|
290
|
+
pre: (phase.checks?.pre ?? []).map((token) => checkView(token, inputs.bindings)),
|
|
291
|
+
post: (phase.checks?.post ?? []).map((token) => checkView(token, inputs.bindings)),
|
|
292
|
+
},
|
|
293
|
+
produces: step.produces,
|
|
294
|
+
created: step.created,
|
|
295
|
+
evidence: step.evidence,
|
|
296
|
+
optional: step.optional,
|
|
297
|
+
awaiting,
|
|
298
|
+
// A re-entered step reports the fallback that re-entered it (§5.2); any other step its phase's own.
|
|
299
|
+
fallback: step.reentered && step.reentryFallback !== null
|
|
300
|
+
? step.reentryFallback
|
|
301
|
+
: phase.fallback === undefined
|
|
302
|
+
? null
|
|
303
|
+
: { step: phase.fallback.step, setState: phase.fallback.set_state ?? null },
|
|
304
|
+
reentered: step.reentered,
|
|
305
|
+
reentryCommit: step.reentryCommit,
|
|
306
|
+
mode: 'fresh',
|
|
307
|
+
allowedModes: allowedModes(phase.mode),
|
|
308
|
+
distinctFrom: phase.distinct_from ?? [],
|
|
309
|
+
cadence: phase.cadence === 'once' ? null : { recurring: phase.cadence.recurring, lastRun: 'not-recorded' },
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* The roles `who` stands for (`spec-017` §7.3, BDD P4.4 sc. 2): `me` — the members whose email is the git
|
|
314
|
+
* identity's; otherwise the member whose name or email is `who`; otherwise the role named `who`. Emails
|
|
315
|
+
* compare case-insensitively. An empty set keeps no step.
|
|
316
|
+
*/
|
|
317
|
+
function assigneeRoles(dnaYaml, who, identityEmail) {
|
|
318
|
+
const members = dnaYaml?.team?.members ?? [];
|
|
319
|
+
const sameEmail = (a, b) => a !== undefined && a !== '' && a.toLowerCase() === b.toLowerCase();
|
|
320
|
+
const matched = who === exports.ASSIGNED_TO_ME
|
|
321
|
+
? members.filter((member) => identityEmail !== '' && sameEmail(member.email, identityEmail))
|
|
322
|
+
: members.filter((member) => member.name === who || sameEmail(member.email, who));
|
|
323
|
+
if (matched.length > 0)
|
|
324
|
+
return new Set(matched.flatMap((member) => member.roles));
|
|
325
|
+
return who === exports.ASSIGNED_TO_ME ? new Set() : new Set([who]);
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Warn when `--assigned-to <who>` names nobody (review fix 5): `me` whose email is no member's, or a `<who>`
|
|
329
|
+
* that is no member's name or email and no `team.roles` role. The filter still runs; it keeps no step.
|
|
330
|
+
*/
|
|
331
|
+
function warnUnknownAssignee(dnaYaml, who, identityEmail) {
|
|
332
|
+
const members = dnaYaml?.team?.members ?? [];
|
|
333
|
+
const sameEmail = (email, other) => email !== undefined && email !== '' && email.toLowerCase() === other.toLowerCase();
|
|
334
|
+
if (who === exports.ASSIGNED_TO_ME) {
|
|
335
|
+
if (!members.some((member) => identityEmail !== '' && sameEmail(member.email, identityEmail))) {
|
|
336
|
+
(0, warning_1.reportWarning)(`--assigned-to me: the git identity's email '${identityEmail}' is no team.members[] entry's`);
|
|
337
|
+
}
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
const known = members.some((member) => member.name === who || sameEmail(member.email, who)) || (dnaYaml?.team?.roles ?? []).some((role) => role.name === who);
|
|
341
|
+
if (!known)
|
|
342
|
+
(0, warning_1.reportWarning)(`--assigned-to '${who}' names no team.members[] entry (name or email) and no team.roles role in dna.yaml`);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* The refusal of a `<ref>` that selects no open instance (`spec-017` §10, task-216 review fix 1, task-281
|
|
346
|
+
* `bug-326`): a loaded workflow with no open instance, or an instance plan that is not open, is
|
|
347
|
+
* `workflow is not open: <ref>`; any other `<ref>` — a phase plan's id included (approver ruling D4) — names
|
|
348
|
+
* nothing, `unknown workflow: <ref>`. Both `NOT_FOUND`. The one answer of `next`, `status`, `finalize`, `end`
|
|
349
|
+
* and `memory add --workflow`.
|
|
350
|
+
*/
|
|
351
|
+
function unresolvedRef(known, ref) {
|
|
352
|
+
const named = known.workflows.some((workflow) => workflow.name === ref) || (known.plans ?? []).includes(ref);
|
|
353
|
+
if (named)
|
|
354
|
+
return (0, types_1.coreErr)({ code: 'NOT_FOUND', message: `workflow is not open: ${ref}`, details: { ref } });
|
|
355
|
+
return (0, types_1.coreErr)({ code: 'NOT_FOUND', message: (0, workflow_list_show_1.unknownWorkflowMessage)(ref), details: { ref } });
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Why an instance whose frontier is empty has no next step (`spec-017` §7.3): complete, abandoned (§4.11)
|
|
359
|
+
* or its workflow not loaded. Shared by `next` and `finalize` (task-226).
|
|
360
|
+
*/
|
|
361
|
+
function emptyFrontierMessage(selected) {
|
|
362
|
+
const { instance, complete } = selected;
|
|
363
|
+
if (complete)
|
|
364
|
+
return (0, exports.noNextStepMessage)(instance.workflow);
|
|
365
|
+
if (instance.abandoned)
|
|
366
|
+
return `no next step: workflow '${instance.workflow}' is abandoned: its element ${instance.element.type}:${instance.element.id} is ${instance.element.status}`;
|
|
367
|
+
return `no next step: workflow '${instance.workflow}' is not loaded`;
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* `workflow next`'s answer from one deduction (`spec-017` §7.3, §10). Pure. Exit `0` in every deduced
|
|
371
|
+
* case — `no open workflows`; `no next step: workflow '<name>' is complete`; a filter that keeps nothing — and
|
|
372
|
+
* `NOT_FOUND` for a `ref` naming no open instance — `workflow is not open: <ref>` or `unknown workflow: <ref>`
|
|
373
|
+
* ({@link unresolvedRef}).
|
|
374
|
+
*/
|
|
375
|
+
function nextWorkflow(inputs, deduction, options) {
|
|
376
|
+
const { ref, assignedTo } = options;
|
|
377
|
+
const base = { baseline: deduction.baseline, diagnostics: deduction.diagnostics };
|
|
378
|
+
const selected = (0, deduce_1.resolveInstanceRef)(deduction, ref);
|
|
379
|
+
if (selected === null) {
|
|
380
|
+
if (ref !== undefined)
|
|
381
|
+
return unresolvedRef(inputs, ref);
|
|
382
|
+
return (0, types_1.coreOk)({ ...base, instance: null, complete: false, next: null, more: [], message: exports.NO_OPEN_WORKFLOWS });
|
|
383
|
+
}
|
|
384
|
+
const { instance, complete, frontier } = selected;
|
|
385
|
+
if (frontier.length === 0)
|
|
386
|
+
return (0, types_1.coreOk)({ ...base, instance, complete, next: null, more: [], message: emptyFrontierMessage(selected) });
|
|
387
|
+
if (assignedTo !== undefined)
|
|
388
|
+
warnUnknownAssignee(inputs.dnaYaml, assignedTo, options.identityEmail ?? '');
|
|
389
|
+
const roles = assignedTo === undefined ? null : assigneeRoles(inputs.dnaYaml, assignedTo, options.identityEmail ?? '');
|
|
390
|
+
const kept = roles === null ? frontier : frontier.filter((step) => step.role !== null && roles.has(step.role));
|
|
391
|
+
if (kept.length === 0) {
|
|
392
|
+
return (0, types_1.coreOk)({ ...base, instance, complete, next: null, more: [], message: `no next step of workflow '${instance.workflow}' is assigned to '${assignedTo}'` });
|
|
393
|
+
}
|
|
394
|
+
const steps = kept.map((step) => buildStep(step, inputs));
|
|
395
|
+
const diagnostics = [...deduction.diagnostics, ...approvalDiagnostics(steps, inputs.dnaYaml)];
|
|
396
|
+
return (0, types_1.coreOk)({ ...base, diagnostics, instance, complete, next: steps[0], more: steps.slice(1) });
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* What building steps reads besides the deduction (`spec-017` §6), all at the snapshot's commit: the
|
|
400
|
+
* snapshot's workflows, `memory.yaml`, `dna.yaml` and `bindings.yaml`, and — only when some instance has a
|
|
401
|
+
* frontier step to report — `roles.yaml` and the directive files.
|
|
402
|
+
*
|
|
403
|
+
* @throws a `ValidationError` for an invalid `roles.yaml` or directive file at the snapshot's commit.
|
|
404
|
+
*/
|
|
405
|
+
function readNextInputs(root, snapshot, deduction) {
|
|
406
|
+
const hasSteps = deduction.instances.some((entry) => entry.frontier.length > 0);
|
|
407
|
+
return {
|
|
408
|
+
workflows: snapshot.workflows,
|
|
409
|
+
memoryYaml: snapshot.memoryYaml,
|
|
410
|
+
dnaYaml: snapshot.dnaYaml ?? null,
|
|
411
|
+
bindings: snapshot.bindings ?? null,
|
|
412
|
+
rolesYaml: hasSteps ? (0, loaders_1.loadRolesYamlAtCommit)(root, snapshot.commit) : null,
|
|
413
|
+
directiveFiles: hasSteps ? (0, loaders_1.loadDirectivesAtCommit)(root, snapshot.commit) : [],
|
|
414
|
+
plans: (0, workflow_deduction_1.instancePlanIds)(snapshot.documents),
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* `workflow next [<ref>] [--assigned-to <who>]` at `HEAD` (`spec-017` §7.3): the deduction snapshot (with
|
|
419
|
+
* `bindings.yaml` and `dna.yaml`), then `roles.yaml` and the directive files at the snapshot's commit — read
|
|
420
|
+
* only when a step is reported — and, for `--assigned-to me`, the git identity.
|
|
421
|
+
*
|
|
422
|
+
* @throws `DiagnosticsError` (`VALIDATION`) when the registry at `HEAD` has a `spec-003` error; a
|
|
423
|
+
* `ValidationError` for an invalid `roles.yaml` or directive file at `HEAD`; `StorageError` when git
|
|
424
|
+
* cannot answer.
|
|
425
|
+
*/
|
|
426
|
+
function workflowNextAtHead(root, ref, assignedTo) {
|
|
427
|
+
const snapshot = (0, workflow_deduction_1.readDeductionSnapshotAtHead)(root);
|
|
428
|
+
const deduction = (0, deduce_1.deduceWorkflowState)(snapshot);
|
|
429
|
+
const inputs = readNextInputs(root, snapshot, deduction);
|
|
430
|
+
const identityEmail = assignedTo === exports.ASSIGNED_TO_ME ? (0, git_identity_1.readGitIdentity)(root).email : '';
|
|
431
|
+
return nextWorkflow(inputs, deduction, { ...(ref === undefined ? {} : { ref }), ...(assignedTo === undefined ? {} : { assignedTo }), identityEmail });
|
|
432
|
+
}
|
|
433
|
+
// --- console --------------------------------------------------------------------------------------
|
|
434
|
+
/** One scope as `<type>:<id> (<status>)` or `<collection>#<key>`. */
|
|
435
|
+
function describeScope(scope) {
|
|
436
|
+
if (scope === null)
|
|
437
|
+
return '(none)';
|
|
438
|
+
if ('item' in scope)
|
|
439
|
+
return `${scope.item.collection}#${scope.item.key}`;
|
|
440
|
+
return `${scope.element.type}:${scope.element.id} (${scope.element.status})`;
|
|
441
|
+
}
|
|
442
|
+
/** Members as `Name <email>, …`, or `fallback` when there is none. */
|
|
443
|
+
function describeMembers(members, fallback) {
|
|
444
|
+
return members.length > 0 ? members.map((member) => `${member.name} <${member.email}>`).join(', ') : fallback;
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* The "human needed" line of a pending approval (`spec-017` §5.3, X1.1, X1.2): the action (`approve or reject`, or
|
|
448
|
+
* `finalize` for an approval record), the element ids or, for a record, the step key, and the routed members.
|
|
449
|
+
*/
|
|
450
|
+
function approvalLine(awaiting, stepKey) {
|
|
451
|
+
const action = awaiting.recordNeeded ? 'finalize' : 'approve or reject';
|
|
452
|
+
const what = awaiting.elements.length > 0 ? awaiting.elements.map((element) => element.id).join(', ') : stepKey;
|
|
453
|
+
return `human needed: ${action} ${what} — routed to ${describeMembers(awaiting.routedTo, awaiting.routingError ?? 'nobody')}`;
|
|
454
|
+
}
|
|
455
|
+
/** The "human needed" line of a step that awaits a decision (`spec-017` §5.3), or `null`. */
|
|
456
|
+
function humanNeededLine(step) {
|
|
457
|
+
const awaiting = step.awaiting;
|
|
458
|
+
if (awaiting === null)
|
|
459
|
+
return null;
|
|
460
|
+
// `workflow finalize` writes the record (spec-017 §7.9, §5.4; task-226): the whole command for this step.
|
|
461
|
+
if (awaiting.kind === 'party')
|
|
462
|
+
return `waiting for ${awaiting.party}: ${awaiting.evidence.token} (a phase record completes it: wingfoil workflow finalize ${step.instance} --step ${step.key})`;
|
|
463
|
+
return approvalLine(awaiting, step.key);
|
|
464
|
+
}
|
|
465
|
+
/** The console lines of one step (`spec-017` §8: key, trail, role, scope, actions with bindings, directive ids, human needed). */
|
|
466
|
+
function stepLines(step, heading) {
|
|
467
|
+
const lines = [`${heading}: ${step.key}`];
|
|
468
|
+
lines.push(` trail: ${step.trail.map((entry) => `${entry.workflow}.${entry.phase}`).join(' > ')}`);
|
|
469
|
+
lines.push(` scope: ${describeScope(step.scope)}`);
|
|
470
|
+
const holders = step.members.map((member) => member.name).join(', ');
|
|
471
|
+
lines.push(` role: ${step.role ?? '(none)'}${step.agentRole ? ' (an agent role)' : ''}${holders === '' ? '' : ` — held by ${holders}`}`);
|
|
472
|
+
lines.push(` directives: ${step.directives.length === 0 ? '(none)' : step.directives.map((directive) => directive.id).join(', ')}`);
|
|
473
|
+
if (step.actions.length > 0)
|
|
474
|
+
lines.push(' actions:');
|
|
475
|
+
for (const action of step.actions) {
|
|
476
|
+
const { binding } = action;
|
|
477
|
+
const detail = binding.argv !== undefined ? `: ${binding.argv.join(' ')}` : binding.expectedCommit !== undefined ? `: expects ${binding.expectedCommit.split('\n').join(' | ')}` : '';
|
|
478
|
+
lines.push(` - ${action.text} [${binding.kind}${detail}]`);
|
|
479
|
+
}
|
|
480
|
+
lines.push(` evidence missing: ${step.evidence.missing.length === 0 ? '(none)' : step.evidence.missing.join(', ')}${step.evidence.finalizable ? ' (finalizable)' : ''}`);
|
|
481
|
+
if (step.reentered)
|
|
482
|
+
lines.push(` re-entered after ${step.reentryCommit}`);
|
|
483
|
+
const human = humanNeededLine(step);
|
|
484
|
+
if (human !== null)
|
|
485
|
+
lines.push(` ${human}`);
|
|
486
|
+
return lines;
|
|
487
|
+
}
|
|
488
|
+
/** `workflow next`'s `--format console` rendering (`spec-017` §8). Pure. */
|
|
489
|
+
function renderNextConsole(result) {
|
|
490
|
+
const lines = [];
|
|
491
|
+
if (result.instance !== null)
|
|
492
|
+
lines.push(`workflow: ${result.instance.workflow} (${result.instance.id})`);
|
|
493
|
+
if (result.message !== undefined)
|
|
494
|
+
lines.push(result.message);
|
|
495
|
+
if (result.next !== null)
|
|
496
|
+
lines.push(...stepLines(result.next, 'next step'));
|
|
497
|
+
for (const step of result.more)
|
|
498
|
+
lines.push(...stepLines(step, 'also ready'));
|
|
499
|
+
if (result.diagnostics.length > 0)
|
|
500
|
+
lines.push(`${result.diagnostics.length} diagnostic(s): --format json lists them`);
|
|
501
|
+
return `${lines.join('\n')}\n`;
|
|
502
|
+
}
|
|
503
|
+
//# sourceMappingURL=workflow-next.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-next.js","sourceRoot":"","sources":["../../src/core/workflow-next.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { DnaYaml } from '../dna/schema';
|
|
2
|
+
import type { MemoryYaml } from '../memory/schema';
|
|
3
|
+
import { type WorkflowsLoadResult } from './loaders';
|
|
4
|
+
/**
|
|
5
|
+
* The `memory.yaml` and `dna.yaml` a caller has already loaded at the registry's commit, handed to the
|
|
6
|
+
* core checks so that one snapshot reads and parses each once (task-283, `bug-309`). Each is called at
|
|
7
|
+
* most once, at the point the checks would have read the file, so the order of reads and errors is the
|
|
8
|
+
* one {@link loadWorkflowRegistryAtRev} has.
|
|
9
|
+
*/
|
|
10
|
+
export interface RegistryPillars {
|
|
11
|
+
/** `memory.yaml` at the registry's commit, `null` when that commit does not hold it. */
|
|
12
|
+
readonly memoryYaml: () => MemoryYaml | null;
|
|
13
|
+
/** `dna.yaml` at the registry's commit, `null` when that commit does not hold it. */
|
|
14
|
+
readonly dnaYaml: () => DnaYaml | null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The workflow registry from the **working tree**: the loader's result and the core checks, every
|
|
18
|
+
* input read from disk. `workflow list` read it until task-204 moved that command to `HEAD`.
|
|
19
|
+
*
|
|
20
|
+
* @throws `DiagnosticsError` (`VALIDATION`) when the loader or a core check reports an error.
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadWorkflowRegistry(root: string): WorkflowsLoadResult;
|
|
23
|
+
/**
|
|
24
|
+
* The workflow registry **as commit `rev` holds it** (`spec-017` §1.1): `rev` is resolved once, and the
|
|
25
|
+
* workflow files, `bindings.yaml`, `memory.yaml`, `dna.yaml` and the Memory templates are all read at
|
|
26
|
+
* that commit, so a dirty working tree changes nothing (the `command-baseline` directive).
|
|
27
|
+
*
|
|
28
|
+
* @param overlay - Workflow files (the manifest, an included file) that replace the commit's own, keyed by
|
|
29
|
+
* repository-relative path, `null` for absent: the registry a commit about to be made would leave
|
|
30
|
+
* (`workflow create` / `remove`, task-211). `memory.yaml`, `dna.yaml` and the templates stay the commit's.
|
|
31
|
+
* @throws `RevisionError` for a malformed rev or one naming no commit; `DiagnosticsError`
|
|
32
|
+
* (`VALIDATION`) when the loader or a core check reports an error.
|
|
33
|
+
*/
|
|
34
|
+
export declare function loadWorkflowRegistryAtRev(root: string, rev: string, overlay?: ReadonlyMap<string, string | null>): WorkflowsLoadResult;
|
|
35
|
+
/**
|
|
36
|
+
* {@link loadWorkflowRegistryAtRev} for a `sha` already resolved to a commit, read without resolving it
|
|
37
|
+
* again (task-283, `bug-309`): the workflow deduction's snapshot resolves `HEAD` once and reads every
|
|
38
|
+
* pillar at that sha. The Memory templates the core checks read are fetched in one batch.
|
|
39
|
+
*
|
|
40
|
+
* @param sha - The full sha of a commit, as `resolveRevision` returned it.
|
|
41
|
+
* @param overlay - As {@link loadWorkflowRegistryAtRev}'s.
|
|
42
|
+
* @param pillars - `memory.yaml` and `dna.yaml` as the caller already loads them at `sha`
|
|
43
|
+
* ({@link RegistryPillars}); absent, the checks load them at `sha` themselves.
|
|
44
|
+
* @throws `DiagnosticsError` (`VALIDATION`) when the loader or a core check reports an error.
|
|
45
|
+
*/
|
|
46
|
+
export declare function loadWorkflowRegistryAtCommit(root: string, sha: string, overlay?: ReadonlyMap<string, string | null>, pillars?: RegistryPillars): WorkflowsLoadResult;
|
|
47
|
+
/**
|
|
48
|
+
* {@link loadWorkflowRegistryAtRev} at `HEAD`; a repository with no commit yet (or no repository)
|
|
49
|
+
* holds no committed manifest, so its registry is empty.
|
|
50
|
+
*/
|
|
51
|
+
export declare function loadWorkflowRegistryAtHead(root: string): WorkflowsLoadResult;
|
|
52
|
+
//# sourceMappingURL=workflow-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-registry.d.ts","sourceRoot":"","sources":["../../src/core/workflow-registry.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,EAQL,KAAK,mBAAmB,EACzB,MAAM,WAAW,CAAC;AAmBnB;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,UAAU,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IAC7C,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC;CACxC;AA8DD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CActE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG,mBAAmB,CAEtI;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,EAC5C,OAAO,CAAC,EAAE,eAAe,GACxB,mBAAmB,CAWrB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAE5E"}
|