wingfoil 0.2.1 → 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 +88 -42
- 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 +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +3 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-command.d.ts.map +1 -1
- package/dist/cli/init-command.js +6 -3
- 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 +270 -60
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/registrar.d.ts +16 -7
- package/dist/cli/registrar.d.ts.map +1 -1
- package/dist/cli/registrar.js +71 -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.js +6 -6
- 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 +189 -14
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1241 -238
- package/dist/core/index.js.map +1 -1
- package/dist/core/init.d.ts +50 -8
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +139 -27
- 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 +147 -23
- 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 +35 -30
- package/dist/directives/schema.d.ts.map +1 -1
- package/dist/directives/schema.js +36 -30
- 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 +9 -5
- 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 +160 -17
- package/dist/memory/add.d.ts.map +1 -1
- package/dist/memory/add.js +361 -51
- package/dist/memory/add.js.map +1 -1
- package/dist/memory/audit.d.ts +165 -32
- package/dist/memory/audit.d.ts.map +1 -1
- package/dist/memory/audit.js +267 -97
- 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 +74 -13
- package/dist/memory/history.d.ts.map +1 -1
- package/dist/memory/history.js +129 -45
- 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 +38 -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 +136 -48
- 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 +182 -17
- 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 +40 -0
- package/dist/validation/id.d.ts.map +1 -1
- package/dist/validation/id.js +99 -12
- 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 +33 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/validation/secret-scan.d.ts +10 -7
- package/dist/validation/secret-scan.d.ts.map +1 -1
- package/dist/validation/secret-scan.js +39 -16
- 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 +190 -16
- package/dist/workflow/schema.js.map +1 -1
- package/package.json +37 -13
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow state deduction (task-198, task-203, task-202; `spec-017` §1, §3.1–§3.5, §4.1–§4.11, §5.2
|
|
3
|
+
* re-entry; `adr-007` stateless state derivation, `adr-008` per-type state machines; P4.13, P4.16,
|
|
4
|
+
* P4.11).
|
|
5
|
+
*
|
|
6
|
+
* One **pure** function, {@link deduceWorkflowState}, answers every consumer — `workflow next`,
|
|
7
|
+
* `status`, `list`, the MCP Resources and `agent execute --next` — from one {@link DeductionSnapshot}:
|
|
8
|
+
* the repository as committed at `HEAD`, read once by `src/core`'s snapshot reader
|
|
9
|
+
* (`src/core/workflow-deduction.ts`). Nothing here touches the filesystem, git or the clock, and every
|
|
10
|
+
* collection is iterated in a declared order (`spec-017` §1.3, REQ-SYS-07, REQ-STATE-09), so two runs
|
|
11
|
+
* on one snapshot give the same value, byte for byte once serialized. No `.wingfoil/state/` exists or
|
|
12
|
+
* is read (REQ-SYS-03): state is the frontmatter of the Memory documents, the files `HEAD` holds and
|
|
13
|
+
* the commit history reachable from `HEAD` (each instance's walk, §4.8).
|
|
14
|
+
*
|
|
15
|
+
* What is deduced here:
|
|
16
|
+
* - **Instances** (§3.1–§3.3): an open main is a `plan` element (`draft`/`active`, no `parent`) whose
|
|
17
|
+
* `workflow` is startable; most recently started first, the first one active. A plan naming a
|
|
18
|
+
* workflow the registry does not load is listed with an empty frontier (`W_INSTANCE_WORKFLOW_UNKNOWN`).
|
|
19
|
+
* - **The bound element** (§3.4; §3.5 the context). A self-creating workflow's element is the element
|
|
20
|
+
* of its creating phase's type that its creating step created (step linkage, §4.8) with the oldest add
|
|
21
|
+
* commit; until then it is `null` and its `{id}` tokens are pending, never unresolved. Further linked
|
|
22
|
+
* elements are listed in `Instance.created` and do not rebind. An archived bound element
|
|
23
|
+
* (`deprecated`, or `superseded`) abandons the instance (§4.11).
|
|
24
|
+
* - **Evidence** (§4.3): `state`, `produces`, `selection`, `include` and `record` decide a phase;
|
|
25
|
+
* `awaits` and a checkpoint complete by a record; an implicit-owner `produces` is shown and is not
|
|
26
|
+
* evidence. `created` (a `memory.add`) is satisfied when, for each type the phase adds, the step
|
|
27
|
+
* created an element at or after the state the phase leaves it in, with each `{ type, path }` entry
|
|
28
|
+
* committed for it; a step that created nothing leaves the kind to its other evidence, or to a record.
|
|
29
|
+
* - **Re-entries** (§4.8, §5.2): after a `reject`/`park` that moved the pass's element back, the
|
|
30
|
+
* `record` and `state` evidence of the phases from the `fallback.step` of the phase whose gate state
|
|
31
|
+
* was `<from>` onward counts only if newer than the re-entry; those steps report `reentered: true`.
|
|
32
|
+
* An `iterate_over` does not hand its own cutoff to its iterations: each iterated element has its own
|
|
33
|
+
* re-entries.
|
|
34
|
+
* - **`iterate_over`** (§4.6): over a Memory type, the `where` splits into the entry filter (`status`)
|
|
35
|
+
* and the scope filter, and each candidate is eligible, entered, complete or ignored; over a
|
|
36
|
+
* collection (`dna:<path>`, `bindings:<name>`, `dl-104` D2 (b)) every matching entry is a candidate,
|
|
37
|
+
* keyed per `spec-003` § "Collections" and interpolated as `{item}` / `{item.<field>}`. Zero counted
|
|
38
|
+
* candidates make the phase **vacuously** complete, with the note
|
|
39
|
+
* {@link NO_ITERATION_NOTE}.
|
|
40
|
+
* - **Live queries and optional phases** (§4.7, §4.10): a selection or `iterate_over` phase is also
|
|
41
|
+
* complete once a later phase of the same pass is complete other than vacuously, its open candidates
|
|
42
|
+
* reported `late`; an optional phase is then skipped instead. A vacuous completion closes nothing.
|
|
43
|
+
* - **The frontier** (§4.9): phases are sequential; a plain `include` descends into its sub, an
|
|
44
|
+
* `iterate_over` into the sub once per eligible or entered candidate, in iteration order. An optional
|
|
45
|
+
* current phase is reported together with the phases up to the next non-optional one.
|
|
46
|
+
*
|
|
47
|
+
* Not here: approvals and routing (§5, task-225), action/check views and directives (§6, the
|
|
48
|
+
* `next`/`status` tasks).
|
|
49
|
+
*/
|
|
50
|
+
import type { MemoryYaml } from '../memory/schema';
|
|
51
|
+
import { type MemoryDocumentSummary } from '../memory/query';
|
|
52
|
+
import { type Diagnostic } from '../validation';
|
|
53
|
+
import type { DnaYaml } from '../dna/schema';
|
|
54
|
+
import { type BindingsYaml, type CollectionEntry } from './bindings';
|
|
55
|
+
import { type Phase, type Workflow } from './schema';
|
|
56
|
+
/** `W_UNCOMMITTED_INPUTS` (`spec-017` §1.2): a deduction input differs from `HEAD`; the answer is `HEAD`'s. */
|
|
57
|
+
export declare const W_UNCOMMITTED_INPUTS = "W_UNCOMMITTED_INPUTS";
|
|
58
|
+
/**
|
|
59
|
+
* The `W_UNCOMMITTED_INPUTS` diagnostic of one dirty input path (`spec-017` §1.2; one per path, task-198).
|
|
60
|
+
* The deduction builds its own through here, and so does `agent list --past`, which runs no deduction and
|
|
61
|
+
* emits the code itself under the same rule (`spec-016` §5, task-240), so the two cannot word it apart.
|
|
62
|
+
*/
|
|
63
|
+
export declare function uncommittedInputDiagnostic(path: string): Diagnostic;
|
|
64
|
+
/** `W_MEMORY_INVALID_STATE` (`spec-017` §1.4, P4.13 sc. 3): a status its type's machine does not declare. */
|
|
65
|
+
export declare const W_MEMORY_INVALID_STATE = "W_MEMORY_INVALID_STATE";
|
|
66
|
+
/** `W_UNRESOLVED_TOKEN` (`spec-017` §4.1): a token with no value on the element it resolves against. */
|
|
67
|
+
export declare const W_UNRESOLVED_TOKEN = "W_UNRESOLVED_TOKEN";
|
|
68
|
+
/** `W_INSTANCE_WORKFLOW_UNKNOWN` (`spec-017` §2): an open plan names a workflow the registry does not load. */
|
|
69
|
+
export declare const W_INSTANCE_WORKFLOW_UNKNOWN = "W_INSTANCE_WORKFLOW_UNKNOWN";
|
|
70
|
+
/** The note of an `iterate_over` phase no candidate was counted for (`spec-017` §4.6, P4.16 sc. 3). */
|
|
71
|
+
export declare const NO_ITERATION_NOTE = "no elements matched the iterate_over filter";
|
|
72
|
+
/** The plan statuses of an open instance (`spec-017` §3.2). */
|
|
73
|
+
export declare const OPEN_PLAN_STATUSES: readonly string[];
|
|
74
|
+
/** The Memory type that records a workflow instance (`spec-017` §3.1, `dl-019`). */
|
|
75
|
+
export declare const PLAN_TYPE = "plan";
|
|
76
|
+
/** Where an instance started: the commit that added its plan file, and its index in `git rev-list --topo-order HEAD`. */
|
|
77
|
+
export interface StartCommit {
|
|
78
|
+
readonly commit: string;
|
|
79
|
+
/** `0` is `HEAD`; a larger number is an older start. */
|
|
80
|
+
readonly position: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* A commit's place in the history walk (`spec-017` §4.8): its index in the `git log --topo-order` of
|
|
84
|
+
* the union of the open instances' walks, `0` the commit at `HEAD`. A smaller position is listed first;
|
|
85
|
+
* whether evidence is **newer than a re-entry** is decided by ancestry, not by position (review F1).
|
|
86
|
+
*/
|
|
87
|
+
export interface WalkPosition {
|
|
88
|
+
readonly commit: string;
|
|
89
|
+
readonly position: number;
|
|
90
|
+
}
|
|
91
|
+
/** One phase record (`spec-003` § "Evidence"): a commit carrying the `WingFoil-Phase: <w>.<p> completed` trailers. */
|
|
92
|
+
export interface PhaseRecord extends WalkPosition {
|
|
93
|
+
/** `<workflow>.<phase>`, without the trailing ` completed`. */
|
|
94
|
+
readonly phase: string;
|
|
95
|
+
readonly instance: string;
|
|
96
|
+
/** `WingFoil-Element`, `<type>:<id>`, or `null`. */
|
|
97
|
+
readonly element: string | null;
|
|
98
|
+
/** `WingFoil-Item`, `<collection>#<key>`, or `null`. */
|
|
99
|
+
readonly item: string | null;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* One step linkage (`spec-017` §4.8): an add commit, `wf(<type>): add <id>`, whose trailers carry
|
|
103
|
+
* `WingFoil-Instance` and `WingFoil-Step` — the element it adds was **created by** that step. One entry
|
|
104
|
+
* per id the subject names.
|
|
105
|
+
*/
|
|
106
|
+
export interface StepLink extends WalkPosition {
|
|
107
|
+
readonly instance: string;
|
|
108
|
+
/** The step key, `<workflow>.<phase>[@<scope>]`, as `WingFoil-Step` gives it. */
|
|
109
|
+
readonly step: string;
|
|
110
|
+
readonly type: string;
|
|
111
|
+
readonly id: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* One re-entry (`spec-017` §4.8): a `reject` or `park` commit, `wf(<type>): reject|park <ids> [<from> → <to>]`,
|
|
115
|
+
* that moved the element to an earlier position of its type's `sequence`. One entry per id the subject names.
|
|
116
|
+
*/
|
|
117
|
+
export interface Reentry extends WalkPosition {
|
|
118
|
+
readonly verb: 'reject' | 'park';
|
|
119
|
+
readonly type: string;
|
|
120
|
+
readonly id: string;
|
|
121
|
+
/** The bracket's first state. */
|
|
122
|
+
readonly from: string;
|
|
123
|
+
/** The bracket's last state. */
|
|
124
|
+
readonly to: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* A Memory-operation commit naming a re-entered element — a `wf(<type>): <verb> <ids> [… → <to>]` subject, or
|
|
128
|
+
* a bracketless `wf(<type>): add|submit <ids>` (task-281, `bug-300`): the candidates for the commit that put
|
|
129
|
+
* the element in its current status (§4.8, `state` evidence after a re-entry).
|
|
130
|
+
*/
|
|
131
|
+
export interface TransitionCommit extends WalkPosition {
|
|
132
|
+
readonly type: string;
|
|
133
|
+
readonly id: string;
|
|
134
|
+
/**
|
|
135
|
+
* The status the commit left: its bracket's last state, or — for a bracketless `add` / `submit` — the
|
|
136
|
+
* status the element's file holds at that commit (task-281, `bug-300`).
|
|
137
|
+
*/
|
|
138
|
+
readonly to: string;
|
|
139
|
+
}
|
|
140
|
+
/** What one instance's walk holds (§4.8): the commits reachable from `HEAD` and not from its start commit's parents. */
|
|
141
|
+
export interface InstanceHistory {
|
|
142
|
+
/** Its phase records, newest first. */
|
|
143
|
+
readonly records: readonly PhaseRecord[];
|
|
144
|
+
/** Its step linkages, newest first. */
|
|
145
|
+
readonly links: readonly StepLink[];
|
|
146
|
+
/** Its re-entries, newest first. */
|
|
147
|
+
readonly reentries: readonly Reentry[];
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Everything the deduction reads, as `HEAD` holds it (`spec-017` §1.1), gathered by the snapshot reader
|
|
151
|
+
* in `src/core`. Pure data: the deduction is a function of this value alone.
|
|
152
|
+
*/
|
|
153
|
+
export interface DeductionSnapshot {
|
|
154
|
+
/** The full sha `HEAD` resolved to. */
|
|
155
|
+
readonly commit: string;
|
|
156
|
+
/** The registry's workflows, in manifest `include` order. */
|
|
157
|
+
readonly workflows: readonly Workflow[];
|
|
158
|
+
/** Each workflow's file, repository-relative (`.wingfoil/workflows/custom/x.yaml`), parallel to `workflows`. */
|
|
159
|
+
readonly workflowFiles: readonly string[];
|
|
160
|
+
/** The registry's load-time diagnostics (warnings only: an error refuses the load), in `spec-003`'s order. */
|
|
161
|
+
readonly registryDiagnostics: readonly Diagnostic[];
|
|
162
|
+
/** `memory.yaml` at `HEAD`, or `null` when the commit holds none. */
|
|
163
|
+
readonly memoryYaml: MemoryYaml | null;
|
|
164
|
+
/** Every Memory document at `HEAD`, in sorted path order, the unparsable ones already left out. */
|
|
165
|
+
readonly documents: readonly MemoryDocumentSummary[];
|
|
166
|
+
/** The scan's `W_MEMORY_UNREADABLE` reports for the documents it left out, in path order. */
|
|
167
|
+
readonly scanDiagnostics: readonly Diagnostic[];
|
|
168
|
+
/** Every file path `HEAD` holds, sorted (`produces` evidence). */
|
|
169
|
+
readonly tree: readonly string[];
|
|
170
|
+
/** The start commit of each candidate plan, by its path. */
|
|
171
|
+
readonly starts: ReadonlyMap<string, StartCommit>;
|
|
172
|
+
/** What each instance's walk holds (§4.8) — records, linkages, re-entries — by the instance's start commit. */
|
|
173
|
+
readonly history: ReadonlyMap<string, InstanceHistory>;
|
|
174
|
+
/** The transition commits in the walk that name a re-entered element, newest first. */
|
|
175
|
+
readonly transitions: readonly TransitionCommit[];
|
|
176
|
+
/** The latest commit in the walk that changed each re-entered element's file, by `<type>:<id>` (one lookup each). */
|
|
177
|
+
readonly lastChanges: ReadonlyMap<string, WalkPosition>;
|
|
178
|
+
/**
|
|
179
|
+
* The parent links of every commit of the walk, by sha (parents outside the walk included). "Newer than a
|
|
180
|
+
* re-entry" means "descends from the re-entry commit", decided through them (§4.8, review F1 ruling (a)).
|
|
181
|
+
*/
|
|
182
|
+
readonly parents: ReadonlyMap<string, readonly string[]>;
|
|
183
|
+
/** The deduction inputs that differ from `HEAD` in the working tree, sorted (§1.2). */
|
|
184
|
+
readonly dirty: readonly string[];
|
|
185
|
+
/**
|
|
186
|
+
* The entries of each collection a loaded workflow iterates over (`dna:<path>`, `bindings:<name>`,
|
|
187
|
+
* `spec-003` § "Collections"), in declared order, by reference. A reference with no entry here has
|
|
188
|
+
* no candidates. Absent: no collection is iterated.
|
|
189
|
+
*/
|
|
190
|
+
readonly collections?: ReadonlyMap<string, readonly CollectionEntry[]>;
|
|
191
|
+
/**
|
|
192
|
+
* `workflows/bindings.yaml` at the snapshot's commit, as the registry loaded it, or `null` (none). Carried so
|
|
193
|
+
* `workflow next` and `show` resolve bindings from the one registry load (task-216; W3 B3 handover). Absent:
|
|
194
|
+
* not read.
|
|
195
|
+
*/
|
|
196
|
+
readonly bindings?: BindingsYaml | null;
|
|
197
|
+
/** `dna.yaml` at the snapshot's commit, or `null` (none): `next`'s role holders and agent roles (task-216). Absent: not read. */
|
|
198
|
+
readonly dnaYaml?: DnaYaml | null;
|
|
199
|
+
}
|
|
200
|
+
/** The baseline an answer comes from (`spec-017` §8, `dl-084` (A)). */
|
|
201
|
+
export interface Baseline {
|
|
202
|
+
readonly rev: 'HEAD';
|
|
203
|
+
readonly commit: string;
|
|
204
|
+
}
|
|
205
|
+
/** A Memory element as deduction reports it (`spec-017` §8). */
|
|
206
|
+
export interface ElementRef {
|
|
207
|
+
readonly type: string;
|
|
208
|
+
readonly id: string;
|
|
209
|
+
readonly status: string;
|
|
210
|
+
}
|
|
211
|
+
/** What a step runs on: an element or a collection entry (`spec-017` §8). */
|
|
212
|
+
export type ScopeRef = {
|
|
213
|
+
readonly element: ElementRef;
|
|
214
|
+
} | {
|
|
215
|
+
readonly item: {
|
|
216
|
+
readonly collection: string;
|
|
217
|
+
readonly key: string;
|
|
218
|
+
};
|
|
219
|
+
};
|
|
220
|
+
/** A workflow instance (`spec-017` §3, §8). */
|
|
221
|
+
export interface Instance {
|
|
222
|
+
readonly id: string;
|
|
223
|
+
readonly workflow: string;
|
|
224
|
+
/** The bound element (§3.4), or `null`: none declared, not found, or not yet created. */
|
|
225
|
+
readonly element: ElementRef | null;
|
|
226
|
+
/** The context element (§3.5) of a workflow that declares no element, or `null`. */
|
|
227
|
+
readonly context: ElementRef | null;
|
|
228
|
+
/** Every element a step of the instance created (§4.8 linkage), ascending `(type, id)`; the bound one included. */
|
|
229
|
+
readonly created: readonly ElementRef[];
|
|
230
|
+
readonly planStatus: 'draft' | 'active';
|
|
231
|
+
readonly startCommit: string;
|
|
232
|
+
readonly active: boolean;
|
|
233
|
+
/** `true` when the bound element is archived (`deprecated`, `superseded`): the frontier is empty (§4.11). */
|
|
234
|
+
readonly abandoned: boolean;
|
|
235
|
+
}
|
|
236
|
+
/** One link of a step's trail, from the instance down to the step itself (`spec-017` §4.9). */
|
|
237
|
+
export interface TrailEntry {
|
|
238
|
+
readonly workflow: string;
|
|
239
|
+
readonly phase: string;
|
|
240
|
+
readonly scope: ScopeRef | null;
|
|
241
|
+
}
|
|
242
|
+
/** The evidence kinds of `spec-017` §4.3. */
|
|
243
|
+
export type EvidenceKind = 'state' | 'created' | 'produces' | 'selection' | 'include' | 'awaits' | 'record';
|
|
244
|
+
/** One `produces` entry of a step, resolved (`spec-017` §8). */
|
|
245
|
+
export interface ProducesView {
|
|
246
|
+
readonly pattern: string;
|
|
247
|
+
/** The type that owns it: the workflow's element type, `T` of `{ type: T, path }`, or `null` (no element, or an implicit owner). */
|
|
248
|
+
readonly owner: string | null;
|
|
249
|
+
readonly resolved: readonly string[];
|
|
250
|
+
readonly exists: boolean;
|
|
251
|
+
/** `false` for an implicit-owner entry, which is shown but is not evidence (§4.3), and for a created-owned one. */
|
|
252
|
+
readonly evidence: boolean;
|
|
253
|
+
}
|
|
254
|
+
/** What an action acts on (`spec-017` §4.2, §8 `ActionView.target`). */
|
|
255
|
+
export type ActionTarget = 'bound' | 'selection' | 'created' | 'run' | 'none';
|
|
256
|
+
/**
|
|
257
|
+
* One action of a step, as deduction resolves it (`spec-017` §4.1, §4.2): its text with the tokens
|
|
258
|
+
* substituted, the tokens with no value, and the elements it acts on at `HEAD`. Its binding is `next`'s
|
|
259
|
+
* (§6.1, `src/core/workflow-next.ts`).
|
|
260
|
+
*/
|
|
261
|
+
export interface DeducedAction {
|
|
262
|
+
readonly token: string;
|
|
263
|
+
/** The token with each `{…}` that has a value substituted; a pending or unresolved one is kept as written. */
|
|
264
|
+
readonly text: string;
|
|
265
|
+
/** The `{…}` tokens with no value (each reported `W_UNRESOLVED_TOKEN`), in order. */
|
|
266
|
+
readonly unresolved: readonly string[];
|
|
267
|
+
readonly target: ActionTarget;
|
|
268
|
+
/** The Memory type the action acts on when deduction knows it (`null`: a selection of several types, or none). */
|
|
269
|
+
readonly targetType: string | null;
|
|
270
|
+
/**
|
|
271
|
+
* The elements the action acts on, known at `HEAD`, ascending `(type, id)`: the bound element, the
|
|
272
|
+
* selected ones, the ones the step (or, for a `run` target, an earlier step of the pass) created, or those a
|
|
273
|
+
* `<T>.sync_state(for_each: <type>.<field>)` names. Empty when none is known yet.
|
|
274
|
+
*/
|
|
275
|
+
readonly targets: readonly ElementRef[];
|
|
276
|
+
/** The bound element's state just before this action, computed statically (§4.4), or `null`. */
|
|
277
|
+
readonly boundFrom: string | null;
|
|
278
|
+
/**
|
|
279
|
+
* For a `<T>.sync_state(for_each: <S>.<field>)`: the type and the state of the source element `S` at this action,
|
|
280
|
+
* and, per target id, the other elements of `S` (not archived) whose field names it, ascending `(type, id)` — the
|
|
281
|
+
* input of the aggregate rule `workflow next` / `status` apply (a bug moves on once every task naming it has, task-225).
|
|
282
|
+
*/
|
|
283
|
+
readonly source?: {
|
|
284
|
+
readonly type: string;
|
|
285
|
+
readonly state: string | null;
|
|
286
|
+
readonly peers: readonly {
|
|
287
|
+
readonly id: string;
|
|
288
|
+
readonly sources: readonly ElementRef[];
|
|
289
|
+
}[];
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
/** A leaf step on an instance's frontier (`spec-017` §4.9; the part of §8's `Step` deduction decides). */
|
|
293
|
+
export interface DeducedStep {
|
|
294
|
+
/** `<workflow>.<phase>`, then `@<type>:<id>` or `@<collection>#<key>` when the step runs on a scope. */
|
|
295
|
+
readonly key: string;
|
|
296
|
+
readonly instance: string;
|
|
297
|
+
readonly trail: readonly TrailEntry[];
|
|
298
|
+
readonly workflow: string;
|
|
299
|
+
readonly phase: string;
|
|
300
|
+
readonly scope: ScopeRef | null;
|
|
301
|
+
readonly role: string | null;
|
|
302
|
+
readonly optional: boolean;
|
|
303
|
+
readonly produces: readonly ProducesView[];
|
|
304
|
+
/** The elements this step created (§4.8 linkage), ascending `(type, id)`. */
|
|
305
|
+
readonly created: readonly ElementRef[];
|
|
306
|
+
readonly evidence: {
|
|
307
|
+
readonly kinds: readonly EvidenceKind[];
|
|
308
|
+
readonly missing: readonly EvidenceKind[];
|
|
309
|
+
/** `true` when the only evidence missing is a `record` (`workflow finalize`, §7.9). */
|
|
310
|
+
readonly finalizable: boolean;
|
|
311
|
+
};
|
|
312
|
+
/**
|
|
313
|
+
* `true` when a re-entry of the element the pass runs on (§4.8) reaches this phase — it lies at or
|
|
314
|
+
* after the `fallback.step` of the phase whose gate the re-entry left — so its `record` and `state`
|
|
315
|
+
* evidence count only if newer than the re-entry (§5.2).
|
|
316
|
+
*/
|
|
317
|
+
readonly reentered: boolean;
|
|
318
|
+
/** The first listed such re-entry commit (the newest in a linear history), or `null`. */
|
|
319
|
+
readonly reentryCommit: string | null;
|
|
320
|
+
/**
|
|
321
|
+
* The `fallback` that re-entered the step — the step it names and the `set_state` the phase whose gate the
|
|
322
|
+
* re-entry left declares (§5.2) — or `null` when the step is not re-entered.
|
|
323
|
+
*/
|
|
324
|
+
readonly reentryFallback: {
|
|
325
|
+
readonly step: string;
|
|
326
|
+
readonly setState: string | null;
|
|
327
|
+
} | null;
|
|
328
|
+
/**
|
|
329
|
+
* The phase's approval (§5.1), or `null` when it declares none: the carried elements that **await** it — the
|
|
330
|
+
* targets of its actions sitting in a gate state the phase holds, ascending `(type, id)` — and whether it holds no
|
|
331
|
+
* gate at all, so that `workflow finalize` records it (`recordNeeded`; the step then has `record` evidence).
|
|
332
|
+
*/
|
|
333
|
+
readonly approval: {
|
|
334
|
+
readonly elements: readonly ElementRef[];
|
|
335
|
+
readonly recordNeeded: boolean;
|
|
336
|
+
} | null;
|
|
337
|
+
/** The phase's actions, resolved (§4.1, §4.2), in declared order (task-216). */
|
|
338
|
+
readonly actions: readonly DeducedAction[];
|
|
339
|
+
}
|
|
340
|
+
/** How an `iterate_over` phase's candidates stand (`spec-017` §4.6, §4.7, §8). */
|
|
341
|
+
export interface IterationCounts {
|
|
342
|
+
readonly eligible: number;
|
|
343
|
+
readonly entered: number;
|
|
344
|
+
readonly complete: number;
|
|
345
|
+
/** The candidates still open when a later phase closed the live query (§4.7). */
|
|
346
|
+
readonly late: number;
|
|
347
|
+
/** {@link NO_ITERATION_NOTE} when no candidate was counted (P4.16 sc. 3). */
|
|
348
|
+
readonly note?: string;
|
|
349
|
+
}
|
|
350
|
+
/** One top-level phase of an instance (`spec-017` §7.4, §8). */
|
|
351
|
+
export interface PhaseProgress {
|
|
352
|
+
readonly phase: string;
|
|
353
|
+
/** `skipped`: an optional phase a later non-vacuous completion passed over (§4.10). */
|
|
354
|
+
readonly state: 'complete' | 'current' | 'pending' | 'skipped';
|
|
355
|
+
/** `true` on a phase complete only vacuously (§4.7): a live query that found nothing. */
|
|
356
|
+
readonly vacuous?: boolean;
|
|
357
|
+
/** The candidates of an `iterate_over` phase, once it is complete or current. */
|
|
358
|
+
readonly iterations?: IterationCounts;
|
|
359
|
+
}
|
|
360
|
+
/** One open instance, deduced. */
|
|
361
|
+
export interface InstanceDeduction {
|
|
362
|
+
readonly instance: Instance;
|
|
363
|
+
/** `true` when every phase is complete (an empty frontier of a known workflow). */
|
|
364
|
+
readonly complete: boolean;
|
|
365
|
+
readonly phases: readonly PhaseProgress[];
|
|
366
|
+
readonly frontier: readonly DeducedStep[];
|
|
367
|
+
/** The elements a live query matches after a later phase closed it (§4.7), ascending `(type, id)`. */
|
|
368
|
+
readonly late: readonly ElementRef[];
|
|
369
|
+
}
|
|
370
|
+
/** The whole answer at one commit. */
|
|
371
|
+
export interface Deduction {
|
|
372
|
+
readonly baseline: Baseline;
|
|
373
|
+
/** The active instance's id, or `null` when none is open. */
|
|
374
|
+
readonly active: string | null;
|
|
375
|
+
/** The open instances, most recently started first (§3.3). */
|
|
376
|
+
readonly instances: readonly InstanceDeduction[];
|
|
377
|
+
/** The registry's diagnostics, then this deduction's, in `spec-017` §1.3's order. */
|
|
378
|
+
readonly diagnostics: readonly Diagnostic[];
|
|
379
|
+
/**
|
|
380
|
+
* Every Memory element at `HEAD` sitting in a `gates` state of its type that is not also a `waiting` state (an approver
|
|
381
|
+
* acts on it), ascending `(type, id)` (§5.1, ungated elements).
|
|
382
|
+
*/
|
|
383
|
+
readonly gated: readonly ElementRef[];
|
|
384
|
+
}
|
|
385
|
+
/** Whether `phase` declares `state` evidence on an element of `boundType` (`spec-003` § "Evidence", `spec-017` §4.2). */
|
|
386
|
+
export declare function declaresState(phase: Phase, boundType: string | null): boolean;
|
|
387
|
+
/**
|
|
388
|
+
* Deduce every open workflow instance at the snapshot's commit (`spec-017` §3–§4): its bound element,
|
|
389
|
+
* its top-level phase progress and its frontier, plus the ordered diagnostics of §1.3 — the registry's,
|
|
390
|
+
* then `W_UNCOMMITTED_INPUTS`, then `W_MEMORY_*` by path, then `W_INSTANCE_WORKFLOW_UNKNOWN` in
|
|
391
|
+
* instance order, then the step-attached `W_UNRESOLVED_TOKEN` in frontier order. Never throws on a
|
|
392
|
+
* Memory document it cannot use: it leaves the document out and reports it (§1.4).
|
|
393
|
+
*/
|
|
394
|
+
export declare function deduceWorkflowState(snapshot: DeductionSnapshot): Deduction;
|
|
395
|
+
/**
|
|
396
|
+
* The open instance `ref` names (`spec-017` §3.3): a workflow name selects its most recently started
|
|
397
|
+
* open instance, an instance id that instance; no `ref` selects the active instance. `null` when none.
|
|
398
|
+
*/
|
|
399
|
+
export declare function resolveInstanceRef(deduction: Deduction, ref?: string): InstanceDeduction | null;
|
|
400
|
+
//# sourceMappingURL=deduce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deduce.d.ts","sourceRoot":"","sources":["../../src/workflow/deduce.ts"],"names":[],"mappings":"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"}
|