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
package/dist/memory/add.js
CHANGED
|
@@ -3,9 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.slugifyTitle = slugifyTitle;
|
|
4
4
|
exports.parseTags = parseTags;
|
|
5
5
|
exports.hasNumericToken = hasNumericToken;
|
|
6
|
-
exports.
|
|
6
|
+
exports.readAuthorDate = readAuthorDate;
|
|
7
|
+
exports.identDate = identDate;
|
|
8
|
+
exports.formatIdDate = formatIdDate;
|
|
9
|
+
exports.highestSequenceNumber = highestSequenceNumber;
|
|
10
|
+
exports.refBaselineCommits = refBaselineCommits;
|
|
7
11
|
exports.nextSequenceNumber = nextSequenceNumber;
|
|
12
|
+
exports.idOccupancy = idOccupancy;
|
|
8
13
|
exports.renderAddDocument = renderAddDocument;
|
|
14
|
+
exports.parseSetOptions = parseSetOptions;
|
|
15
|
+
exports.unknownSetNames = unknownSetNames;
|
|
16
|
+
exports.expandFieldTokens = expandFieldTokens;
|
|
17
|
+
exports.writtenFields = writtenFields;
|
|
9
18
|
/**
|
|
10
19
|
* Pure/domain helpers behind `wingfoil memory add` (P1.3, task-020-implement-memory-add). Factored
|
|
11
20
|
* out of the `CoreResult`-wrapped orchestration in `src/core` so that (mirroring `dna set`'s split —
|
|
@@ -13,25 +22,31 @@ exports.renderAddDocument = renderAddDocument;
|
|
|
13
22
|
* thin composition and the id/slug/document-render logic is independently unit-testable.
|
|
14
23
|
*
|
|
15
24
|
* Every function here is deterministic (REQ-SYS-07): a slug is a pure function of the title, the
|
|
16
|
-
* rendered document a pure function of `(scaffold, id, title, tags)`, and the sequence counter a
|
|
17
|
-
*
|
|
18
|
-
* randomness
|
|
25
|
+
* rendered document a pure function of `(scaffold, id, title, tags)`, and the sequence counter a
|
|
26
|
+
* maximum over the paths every ref and the working tree hold (order-independent, task-128) — no
|
|
27
|
+
* randomness and no unordered iteration in a value that reaches the produced id or document. The one
|
|
28
|
+
* time read is `{date}`'s ({@link readAuthorDate}, task-163): a write path, not a context-building
|
|
29
|
+
* one, taken once per add from the author date git records for the add commit, so a caller fixes it
|
|
30
|
+
* with `GIT_AUTHOR_DATE` and the id never disagrees with its own commit.
|
|
19
31
|
*/
|
|
20
|
-
const fs_1 = require("fs");
|
|
21
|
-
const path_1 = require("path");
|
|
22
32
|
const storage_1 = require("../storage");
|
|
23
33
|
const validation_1 = require("../validation");
|
|
34
|
+
const frontmatter_edit_1 = require("./frontmatter-edit");
|
|
24
35
|
const TOKEN_RE = /\{([^{}]+)\}/g;
|
|
25
36
|
/**
|
|
26
37
|
* Turn a human `--title` into a single, valid `[a-z0-9-.]` ID slug piece (spec-009-validation-strategy
|
|
27
38
|
* §1's ID character class, the same one `generateId` enforces): lowercase, every run of characters
|
|
28
|
-
* outside `[a-z0-9]` collapsed to one `-`, and no leading/trailing/doubled
|
|
29
|
-
*
|
|
39
|
+
* outside `[a-z0-9]` collapsed to one `-`, and no leading/trailing/doubled `-` — except that a run
|
|
40
|
+
* consisting of exactly one `.` between two alphanumerics is **kept** (`v0.2` → `v0.2`,
|
|
41
|
+
* `dl-107` S1 (a), task-110). That is the character rule `generateId`'s Pass-B slug check
|
|
42
|
+
* (`[a-z0-9.]+(?:-[a-z0-9.]+)*`) already accepts, so the slugifier and the validator share one rule
|
|
43
|
+
* instead of the slug being stricter than the id it feeds. Ids added before this rule are untouched:
|
|
44
|
+
* an id is immutable once added.
|
|
30
45
|
*/
|
|
31
46
|
function slugifyTitle(title) {
|
|
32
47
|
return title
|
|
33
48
|
.toLowerCase()
|
|
34
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
49
|
+
.replace(/[^a-z0-9]+/g, (run, offset, text) => run === '.' && offset > 0 && offset + run.length < text.length ? '.' : '-')
|
|
35
50
|
.replace(/^-+|-+$/g, '');
|
|
36
51
|
}
|
|
37
52
|
/**
|
|
@@ -48,68 +63,205 @@ function parseTags(raw) {
|
|
|
48
63
|
.filter((tag) => tag.length > 0);
|
|
49
64
|
return tags.length > 0 ? tags : undefined;
|
|
50
65
|
}
|
|
51
|
-
/** Whether an `id_pattern` contains a `{n}`-family numeric token (e.g. `task-{n}-{slug}`) —
|
|
52
|
-
* needs a sequence counter resolved before {@link generateId} can render it. */
|
|
66
|
+
/** Whether an `id_pattern` contains a `{n}`-family numeric token (e.g. `task-{n}-{slug}`, `u-{n:1}`) —
|
|
67
|
+
* i.e. it needs a sequence counter resolved before {@link generateId} can render it. */
|
|
53
68
|
function hasNumericToken(idPattern) {
|
|
54
69
|
for (const match of idPattern.matchAll(TOKEN_RE)) {
|
|
55
|
-
if (
|
|
70
|
+
if ((0, validation_1.isNumericToken)(match[1] ?? ''))
|
|
56
71
|
return true;
|
|
57
72
|
}
|
|
58
73
|
return false;
|
|
59
74
|
}
|
|
60
75
|
/**
|
|
61
|
-
* The
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
76
|
+
* The author date git would record for a commit made now at `root`, as git's internal
|
|
77
|
+
* `<seconds> <offset>` pair (`1790731800 -0200`): `GIT_AUTHOR_DATE` when it is set, in any format git
|
|
78
|
+
* accepts, otherwise the system clock — read ONCE, through `git var GIT_AUTHOR_IDENT` (task-163,
|
|
79
|
+
* `bug-158`). `memory add` builds `{date}` from it ({@link formatIdDate}) and records the add commit
|
|
80
|
+
* with this same author date (passed back as `@<seconds> <offset>`: git reads a bare pair as a
|
|
81
|
+
* timestamp only from 9 digits of seconds up), so the id and the commit cannot disagree, and a caller (a test, a
|
|
82
|
+
* replay) fixes the date the way it fixes any git author date.
|
|
83
|
+
*
|
|
84
|
+
* `identity` is passed to git as `GIT_AUTHOR_NAME`/`GIT_AUTHOR_EMAIL`: the identity was already
|
|
85
|
+
* resolved and checked (`requireGitIdentity`), and only the date part of git's answer is read.
|
|
86
|
+
*
|
|
87
|
+
* @throws {@link StorageError} `E_GIT_READ_FAILED` when git refuses (e.g. a `GIT_AUTHOR_DATE` it
|
|
88
|
+
* cannot parse) or answers in a shape that is not `… <seconds> <offset>`.
|
|
66
89
|
*/
|
|
67
|
-
function
|
|
68
|
-
|
|
90
|
+
function readAuthorDate(root, identity) {
|
|
91
|
+
const answer = (0, storage_1.runGitRead)(root, ['var', 'GIT_AUTHOR_IDENT'], {
|
|
92
|
+
env: { GIT_AUTHOR_NAME: identity.name, GIT_AUTHOR_EMAIL: identity.email },
|
|
93
|
+
}).stdout;
|
|
94
|
+
return identDate(answer);
|
|
69
95
|
}
|
|
70
96
|
/**
|
|
71
|
-
* The
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* unrelated files never perturb it. Returns `1` when the directory does not yet exist.
|
|
97
|
+
* The `<seconds> <offset>` date that ends a git ident line (`Name <email> 1790731800 -0200`). Pure.
|
|
98
|
+
*
|
|
99
|
+
* @throws {@link StorageError} `E_GIT_READ_FAILED` when the line does not end with one.
|
|
75
100
|
*/
|
|
76
|
-
function
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
let count = 0;
|
|
81
|
-
for (const entry of (0, fs_1.readdirSync)(dir).sort()) {
|
|
82
|
-
if (entry.endsWith('.md') && re.test(entry.slice(0, -'.md'.length)))
|
|
83
|
-
count += 1;
|
|
101
|
+
function identDate(ident) {
|
|
102
|
+
const date = /> (-?[0-9]+ [+-][0-9]{4})$/.exec(ident.trim())?.[1];
|
|
103
|
+
if (date === undefined) {
|
|
104
|
+
throw new storage_1.StorageError(storage_1.E_GIT_READ_FAILED, `git var GIT_AUTHOR_IDENT gave no author date: "${ident.trim()}"`);
|
|
84
105
|
}
|
|
85
|
-
return
|
|
106
|
+
return date;
|
|
86
107
|
}
|
|
87
108
|
/**
|
|
88
|
-
*
|
|
89
|
-
|
|
90
|
-
|
|
109
|
+
* `{date}`'s value (`spec-001`'s placeholder table): the UTC calendar date `YYYYMMDD` of a git
|
|
110
|
+
* `<seconds> <offset>` date ({@link readAuthorDate}). The offset does not move the instant, so
|
|
111
|
+
* `23:30 -0200` on the 29th is the 30th. Pure.
|
|
112
|
+
*/
|
|
113
|
+
function formatIdDate(gitDate) {
|
|
114
|
+
const seconds = Number.parseInt(gitDate, 10);
|
|
115
|
+
return new Date(seconds * 1000).toISOString().slice(0, 10).replace(/-/g, '');
|
|
116
|
+
}
|
|
117
|
+
/** A non-`{id}` `path` token as the counter matches it: one or more path segments (`dl-101` (a)). */
|
|
118
|
+
const PATH_TOKEN_SOURCE = '[^/]+(?:/[^/]+)*';
|
|
119
|
+
/**
|
|
120
|
+
* The RegExp a repository-relative path of this type matches, with the `{n}` value as group 1: the
|
|
121
|
+
* `path` pattern with `{id}` replaced by the (materialized) `id_pattern` and **every other token a
|
|
122
|
+
* wildcard**, whatever value this add gives it — so a `task`'s counter spans every
|
|
123
|
+
* `docs/04_memory/{release}/` folder, not only the one being added to (`bug-162`).
|
|
124
|
+
*/
|
|
125
|
+
function sequencePathRegExp(pathPattern, idPattern) {
|
|
126
|
+
const idSource = (0, validation_1.patternToSource)(idPattern, { captureNumeric: true });
|
|
127
|
+
let source = '^';
|
|
128
|
+
let last = 0;
|
|
129
|
+
for (const match of pathPattern.matchAll(TOKEN_RE)) {
|
|
130
|
+
const index = match.index;
|
|
131
|
+
source += escapeRegExp(pathPattern.slice(last, index));
|
|
132
|
+
source += match[1] === 'id' ? `(?:${idSource})` : PATH_TOKEN_SOURCE;
|
|
133
|
+
last = index + match[0].length;
|
|
134
|
+
}
|
|
135
|
+
return new RegExp(`${source}${escapeRegExp(pathPattern.slice(last))}$`);
|
|
91
136
|
}
|
|
92
137
|
/**
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
138
|
+
* The highest `{n}` value among `paths` (repository-relative, `/`-separated) that the type's `path`
|
|
139
|
+
* pattern and materialized `id_pattern` match, or `0` when none does (`spec-001` "Counter algorithm",
|
|
140
|
+
* `dl-101` §2 (a)). The **highest**, not a count, so a gap never reissues a number (`bug-087`); and a
|
|
141
|
+
* maximum, so the answer is independent of the order `paths` arrive in (REQ-SYS-07).
|
|
97
142
|
*/
|
|
98
|
-
function
|
|
99
|
-
const re =
|
|
100
|
-
|
|
101
|
-
|
|
143
|
+
function highestSequenceNumber(paths, pathPattern, idPattern) {
|
|
144
|
+
const re = sequencePathRegExp(pathPattern, idPattern);
|
|
145
|
+
let highest = 0;
|
|
146
|
+
for (const path of paths) {
|
|
147
|
+
const digits = re.exec(path)?.[1];
|
|
148
|
+
if (digits !== undefined)
|
|
149
|
+
highest = Math.max(highest, Number.parseInt(digits, 10));
|
|
102
150
|
}
|
|
103
|
-
return
|
|
151
|
+
return highest;
|
|
152
|
+
}
|
|
153
|
+
/** The literal directory a `path` pattern starts with (up to its last `/` before any token), or `''`. */
|
|
154
|
+
function literalPrefix(pathPattern) {
|
|
155
|
+
const head = pathPattern.split('{', 1)[0];
|
|
156
|
+
return head.slice(0, head.lastIndexOf('/') + 1);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Every repository-relative path under `prefix` that any baseline a number can be taken on holds —
|
|
160
|
+
* `command-baseline`'s declared baseline for `memory add`'s counter (`dl-101` §2 (a), `dl-080`):
|
|
161
|
+
*
|
|
162
|
+
* - the tree of every local branch (`refs/heads/*`) and remote-tracking ref (`refs/remotes/*`), and
|
|
163
|
+
* of `HEAD` (a detached `HEAD` is on no branch);
|
|
164
|
+
* - the working tree as git sees it: the index and the untracked, non-ignored files.
|
|
165
|
+
*
|
|
166
|
+
* No network: the remote-tracking refs are what the last `git fetch` left (`dl-101` §1.1). Commits are
|
|
167
|
+
* de-duplicated and visited in sorted order, and the result is sorted (REQ-SYS-07).
|
|
168
|
+
*/
|
|
169
|
+
function sequenceCandidatePaths(root, prefix) {
|
|
170
|
+
const pathspec = prefix.length === 0 ? [] : ['--', prefix];
|
|
171
|
+
const paths = new Set();
|
|
172
|
+
const worktree = (0, storage_1.runGitRead)(root, ['ls-files', '-z', '--cached', '--others', '--exclude-standard', ...pathspec]);
|
|
173
|
+
for (const path of worktree.stdout.split('\0'))
|
|
174
|
+
if (path.length > 0)
|
|
175
|
+
paths.add(path);
|
|
176
|
+
// One batched read for every commit, not one `git ls-tree` each (`bug-178`, task-142): the number of
|
|
177
|
+
// git processes no longer grows with the number of branches and remote-tracking refs.
|
|
178
|
+
for (const path of (0, storage_1.listPathsAtRevs)(root, refBaselineCommits(root), prefix))
|
|
179
|
+
paths.add(path);
|
|
180
|
+
return [...paths].sort();
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* The commits of the refs a number or a WIP slot can be taken on (`dl-101` §2 (a)): the tip of every
|
|
184
|
+
* local branch (`refs/heads/*`) and remote-tracking ref (`refs/remotes/*`), and `HEAD` (a detached
|
|
185
|
+
* `HEAD` is on no branch; an unborn one adds nothing), as full shas, de-duplicated and sorted
|
|
186
|
+
* (REQ-SYS-07). No network: the remote-tracking refs are what the last `git fetch` left (`dl-101`
|
|
187
|
+
* §1.1).
|
|
188
|
+
*
|
|
189
|
+
* The one listing of "every ref" both wider reads use — `memory add`'s `{n}` counter
|
|
190
|
+
* ({@link nextSequenceNumber}) and the WIP-limit holder count (`requireWipSlot`, `dl-156` Q1 (a),
|
|
191
|
+
* task-274) — so the two cannot disagree about which refs exist (`command-baseline`, *Declared
|
|
192
|
+
* baselines*).
|
|
193
|
+
*
|
|
194
|
+
* @throws {@link StorageError} `E_GIT_READ_FAILED` when a git read fails.
|
|
195
|
+
*/
|
|
196
|
+
function refBaselineCommits(root) {
|
|
197
|
+
const refs = (0, storage_1.runGitRead)(root, ['for-each-ref', '--format=%(objectname)', 'refs/heads', 'refs/remotes']);
|
|
198
|
+
// `--verify --quiet` exits 1, printing nothing, on an unborn `HEAD`: an answer, not a failure.
|
|
199
|
+
const head = (0, storage_1.runGitRead)(root, ['rev-parse', '--verify', '--quiet', 'HEAD^{commit}'], { accepted: [0, 1] });
|
|
200
|
+
const commits = new Set(`${refs.stdout}\n${head.stdout}`.split('\n').map((sha) => sha.trim()));
|
|
201
|
+
commits.delete('');
|
|
202
|
+
return [...commits].sort();
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* The next sequence number for a `{n}`-token id: `1 +` the highest number any baseline holds for this
|
|
206
|
+
* type — every local branch, remote-tracking ref, `HEAD`, the index and the untracked working-tree
|
|
207
|
+
* files ({@link sequenceCandidatePaths}) — over every folder the type's `path` can resolve to
|
|
208
|
+
* ({@link highestSequenceNumber}). `1` when nothing matches. Ratified `dl-101` §2 (a) (task-128,
|
|
209
|
+
* `bug-087`, `bug-162`); `spec-001` "Counter algorithm".
|
|
210
|
+
*
|
|
211
|
+
* @param root - The repository root.
|
|
212
|
+
* @param pathPattern - The type's committed `path` pattern, e.g. `docs/04_memory/{release}/{id}.md`.
|
|
213
|
+
* @param idPattern - The type's `id_pattern` with its field tokens already materialized.
|
|
214
|
+
* @throws {@link StorageError} `E_GIT_READ_FAILED` when a git read fails.
|
|
215
|
+
*/
|
|
216
|
+
function nextSequenceNumber(root, pathPattern, idPattern) {
|
|
217
|
+
const prefix = literalPrefix(pathPattern);
|
|
218
|
+
return highestSequenceNumber(sequenceCandidatePaths(root, prefix), pathPattern, idPattern) + 1;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Which ids of a type with `path` pattern `pathPattern` exist on any baseline a number can be taken on —
|
|
222
|
+
* the ones {@link nextSequenceNumber} reads (every local branch, remote-tracking ref, `HEAD`, the index and
|
|
223
|
+
* the untracked working-tree files; `dl-101` §2 (a)) — in any folder the pattern resolves to: every token
|
|
224
|
+
* other than `{id}` matches one or more path segments. The paths are listed once; the returned predicate
|
|
225
|
+
* answers for any id. `workflow start` asks it of a derived or `--set phase=` plan id (`spec-017` §7.1,
|
|
226
|
+
* task-217): ids are unique per type, so a plan held by another branch, or under another `{scope}`,
|
|
227
|
+
* occupies its id.
|
|
228
|
+
*
|
|
229
|
+
* @throws {@link StorageError} `E_GIT_READ_FAILED` when a git read fails.
|
|
230
|
+
*/
|
|
231
|
+
function idOccupancy(root, pathPattern) {
|
|
232
|
+
const paths = sequenceCandidatePaths(root, literalPrefix(pathPattern));
|
|
233
|
+
return (id) => {
|
|
234
|
+
let source = '^';
|
|
235
|
+
let last = 0;
|
|
236
|
+
for (const match of pathPattern.matchAll(TOKEN_RE)) {
|
|
237
|
+
const index = match.index;
|
|
238
|
+
source += escapeRegExp(pathPattern.slice(last, index));
|
|
239
|
+
source += match[1] === 'id' ? escapeRegExp(id) : PATH_TOKEN_SOURCE;
|
|
240
|
+
last = index + match[0].length;
|
|
241
|
+
}
|
|
242
|
+
const re = new RegExp(`${source}${escapeRegExp(pathPattern.slice(last))}$`);
|
|
243
|
+
return paths.some((path) => re.test(path));
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Escape a literal string for safe insertion into a `RegExp` source (a frontmatter key here). */
|
|
248
|
+
function escapeRegExp(value) {
|
|
249
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
104
250
|
}
|
|
105
251
|
/**
|
|
106
252
|
* Copy a type's `template.file` scaffold verbatim and fill only the frontmatter skeleton `memory.add`
|
|
107
253
|
* pins (P1.3; spec-010-memory-frontmatter-schema): the generated `id`, the `--title`, the
|
|
108
|
-
* initial `status
|
|
254
|
+
* initial `status` (the head of the type's machine, {@link AddDocumentFields.status}), when `--tags`
|
|
255
|
+
* was supplied the `tags` flow sequence, and the `--set` fields
|
|
256
|
+
* {@link AddDocumentFields.fields} carries (task-110). Every other
|
|
109
257
|
* field (notably `type` and `tmpl_version`, spec-010: not touched by add) and the whole body are left
|
|
110
258
|
* exactly as the scaffold had them. `title`/`tags` are JSON-quoted (valid YAML double-quoted scalars /
|
|
111
259
|
* flow sequences), so an arbitrary title with spaces or colons is written safely.
|
|
112
260
|
*
|
|
261
|
+
* Each field is set through `./frontmatter-edit`'s shared setter, the one the transition verbs use
|
|
262
|
+
* (task-163, `bug-033`): only a TOP-LEVEL key is matched, so a nested key of the same name is never
|
|
263
|
+
* edited, and an edited line keeps the scaffold's inline `# comment`.
|
|
264
|
+
*
|
|
113
265
|
* @throws when the scaffold has no frontmatter block (a malformed template — a config error surfaced
|
|
114
266
|
* as a thrown `Error` the core op maps to a `CoreError`).
|
|
115
267
|
*/
|
|
@@ -118,14 +270,172 @@ function renderAddDocument(scaffold, fields) {
|
|
|
118
270
|
if (frontmatter === null) {
|
|
119
271
|
throw new Error('memory template scaffold has no frontmatter block');
|
|
120
272
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
273
|
+
// Rebuilt as `memory add` always wrote it (a `---` line, the frontmatter, a `---` line, the body),
|
|
274
|
+
// then edited in place by the shared setter.
|
|
275
|
+
let document = `---\n${frontmatter}\n---\n${body}`;
|
|
276
|
+
document = (0, frontmatter_edit_1.setFrontmatterEntry)(document, 'id', fields.id);
|
|
277
|
+
document = (0, frontmatter_edit_1.setFrontmatterEntry)(document, 'title', JSON.stringify(fields.title));
|
|
278
|
+
document = (0, frontmatter_edit_1.setFrontmatterEntry)(document, 'status', fields.status ?? 'draft');
|
|
125
279
|
if (fields.tags !== undefined) {
|
|
126
280
|
const flow = `[${fields.tags.map((tag) => JSON.stringify(tag)).join(',')}]`;
|
|
127
|
-
|
|
281
|
+
document = (0, frontmatter_edit_1.setFrontmatterEntry)(document, 'tags', flow);
|
|
282
|
+
}
|
|
283
|
+
for (const [name, value] of fields.fields ?? []) {
|
|
284
|
+
document = (0, frontmatter_edit_1.setFrontmatterEntry)(document, name, JSON.stringify(value));
|
|
285
|
+
}
|
|
286
|
+
return document;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Names `memory add --set` refuses (`spec-008-cli-grammar` §10): the fields `memory add` fills itself
|
|
290
|
+
* or through its own option (`id`, `type`, `status`, `title`, `tags`), and the tokens with a source of
|
|
291
|
+
* their own (`n`, `slug`, `date`, `author` — `spec-001`'s placeholder table).
|
|
292
|
+
*/
|
|
293
|
+
const RESERVED_SET_NAMES = new Set(['id', 'type', 'status', 'title', 'tags', 'n', 'slug', 'date', 'author']);
|
|
294
|
+
/**
|
|
295
|
+
* The refusal of a reserved `--set` name, saying where its value comes from (`spec-008` §10). `date`
|
|
296
|
+
* and `author` name their source, which is not an option of `memory add` (task-163, `bug-158`: the
|
|
297
|
+
* generic sentence was false while nothing filled them, and unhelpful once something did).
|
|
298
|
+
*/
|
|
299
|
+
function reservedSetMessage(name) {
|
|
300
|
+
const prefix = `invalid flag value: --set cannot set "${name}": memory add fills`;
|
|
301
|
+
if (name === 'date')
|
|
302
|
+
return `${prefix} {date} from the add commit's author date (GIT_AUTHOR_DATE, or the clock)`;
|
|
303
|
+
if (name === 'author')
|
|
304
|
+
return `${prefix} {author} from the git author name`;
|
|
305
|
+
return `${prefix} it itself or through its own option`;
|
|
306
|
+
}
|
|
307
|
+
/** A `--set` field name: `[a-z][a-z0-9_-]*` — the same shape `idPatternIssues` accepts for a token. */
|
|
308
|
+
const SET_NAME_RE = /^[a-z][a-z0-9_-]*$/;
|
|
309
|
+
/**
|
|
310
|
+
* Tokens that are workflow **context** rather than a frontmatter field (`spec-001`, `dl-107` S2 (c)):
|
|
311
|
+
* written into the document only where its template declares a field of that name.
|
|
312
|
+
*/
|
|
313
|
+
const CONTEXT_TOKENS = new Set(['workflow', 'phase', 'scope']);
|
|
314
|
+
/**
|
|
315
|
+
* The spelling refusal of a `--set` value read as a path (task-281, `bug-325`; `spec-008` §10), or `null`.
|
|
316
|
+
* A token value may be substituted into the type's `path` pattern, so it must be a relative path whose
|
|
317
|
+
* segments (split on `/` and `\`) are neither empty nor `.` / `..` — first match wins: absolute, empty
|
|
318
|
+
* segment, dot segment. Applied to every `--set` value, because which names are path tokens is known only
|
|
319
|
+
* from the committed `memory.yaml`, and spelling is decided before anything is read (exit 2).
|
|
320
|
+
*/
|
|
321
|
+
function pathSpellingRefusal(name, value) {
|
|
322
|
+
if (/^[/\\]/.test(value) || /^[A-Za-z]:/.test(value))
|
|
323
|
+
return `invalid flag value: --set ${name} must be a relative path, got "${value}"`;
|
|
324
|
+
const segments = value.split(/[/\\]/);
|
|
325
|
+
if (segments.includes(''))
|
|
326
|
+
return `invalid flag value: --set ${name} holds an empty path segment: "${value}"`;
|
|
327
|
+
if (segments.some((segment) => segment === '.' || segment === '..')) {
|
|
328
|
+
return `invalid flag value: --set ${name} holds a '.' or '..' path segment: "${value}"`;
|
|
128
329
|
}
|
|
129
|
-
return
|
|
330
|
+
return null;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Parse `memory add`'s repeatable `--set <name>=<value>` occurrences (`spec-008-cli-grammar` §10,
|
|
334
|
+
* task-110). The CLI hands every occurrence as a string array; a single string is one occurrence;
|
|
335
|
+
* `undefined` is none. `<name>` is split from `<value>` at the FIRST `=`.
|
|
336
|
+
*
|
|
337
|
+
* Every refusal here is a property of how the argument is spelled, decided before anything is read,
|
|
338
|
+
* so the caller raises it as a usage error (exit 2) — the first failing occurrence, in the order
|
|
339
|
+
* given, with §10's exact message. Pure and order-preserving (REQ-SYS-07).
|
|
340
|
+
*/
|
|
341
|
+
function parseSetOptions(raw) {
|
|
342
|
+
const occurrences = raw === undefined ? [] : typeof raw === 'string' ? [raw] : raw;
|
|
343
|
+
const values = {};
|
|
344
|
+
for (const occurrence of occurrences) {
|
|
345
|
+
const eq = occurrence.indexOf('=');
|
|
346
|
+
if (eq <= 0) {
|
|
347
|
+
return { ok: false, message: `invalid flag value: --set expects <name>=<value>, got "${occurrence}"` };
|
|
348
|
+
}
|
|
349
|
+
const name = occurrence.slice(0, eq);
|
|
350
|
+
const value = occurrence.slice(eq + 1);
|
|
351
|
+
if (!SET_NAME_RE.test(name)) {
|
|
352
|
+
return { ok: false, message: `invalid flag value: --set name "${name}" is not a field name ([a-z][a-z0-9_-]*)` };
|
|
353
|
+
}
|
|
354
|
+
if (RESERVED_SET_NAMES.has(name)) {
|
|
355
|
+
return { ok: false, message: reservedSetMessage(name) };
|
|
356
|
+
}
|
|
357
|
+
if (value.trim().length === 0) {
|
|
358
|
+
return { ok: false, message: `invalid flag value: --set ${name} must not be blank` };
|
|
359
|
+
}
|
|
360
|
+
const spelling = pathSpellingRefusal(name, value);
|
|
361
|
+
if (spelling !== null)
|
|
362
|
+
return { ok: false, message: spelling };
|
|
363
|
+
if (Object.prototype.hasOwnProperty.call(values, name)) {
|
|
364
|
+
return { ok: false, message: `invalid flag value: --set ${name} given more than once` };
|
|
365
|
+
}
|
|
366
|
+
values[name] = value;
|
|
367
|
+
}
|
|
368
|
+
return { ok: true, values };
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* The `--set` names a type's committed patterns cannot use: every name that is not a token of its
|
|
372
|
+
* `id_pattern` or of its `path` (other than `{id}`), in the order given. `memory add` refuses them
|
|
373
|
+
* (exit 1, `spec-008` §10) rather than writing a field no token reads.
|
|
374
|
+
*/
|
|
375
|
+
function unknownSetNames(values, idPattern, pathPattern) {
|
|
376
|
+
const tokens = new Set([...(0, validation_1.patternTokens)(idPattern), ...(0, validation_1.patternTokens)(pathPattern)]);
|
|
377
|
+
tokens.delete('id');
|
|
378
|
+
return Object.keys(values).filter((name) => !tokens.has(name));
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Materialize an `id_pattern`'s `{date}`, `{author}`, frontmatter and context tokens (`{kind}`,
|
|
382
|
+
* `{version}`, `{workflow}`, …), leaving `{slug}` and the `{n}` family in place — `spec-001`'s fixed
|
|
383
|
+
* expansion order (`{date}` → `{author}` → field and context tokens → `{slug}` → `{n}`), so the
|
|
384
|
+
* `{n}` counter regexp built from the result sees a fully-materialized prefix (task-110). `{date}` is
|
|
385
|
+
* the UTC `YYYYMMDD` of `sources.date` ({@link formatIdDate}); `{author}` the slug of
|
|
386
|
+
* `sources.authorName` ({@link slugifyTitle}) — task-163, `bug-158`.
|
|
387
|
+
*
|
|
388
|
+
* @throws {@link ValidationError} naming every field token with no value
|
|
389
|
+
* (`missing value for token {<name>}: give it with --set <name>=<value>`), an `{author}` whose
|
|
390
|
+
* name slugs to nothing, and every value outside the ID character class, in pattern order — the
|
|
391
|
+
* same `E_INVALID_ID` code `generateId` raises.
|
|
392
|
+
*/
|
|
393
|
+
function expandFieldTokens(idPattern, values, sources = {}) {
|
|
394
|
+
const issues = [];
|
|
395
|
+
const expanded = idPattern.replace(TOKEN_RE, (whole, token) => {
|
|
396
|
+
if (token === 'date' && sources.date !== undefined)
|
|
397
|
+
return formatIdDate(sources.date);
|
|
398
|
+
if (token === 'author' && sources.authorName !== undefined) {
|
|
399
|
+
const author = slugifyTitle(sources.authorName);
|
|
400
|
+
if (author.length > 0)
|
|
401
|
+
return author;
|
|
402
|
+
issues.push(fieldIssue(idPattern, `value for token {author} is empty once the git author name "${sources.authorName}" is slugged`));
|
|
403
|
+
return whole;
|
|
404
|
+
}
|
|
405
|
+
if ((0, validation_1.isNumericToken)(token) || RESERVED_SET_NAMES.has(token))
|
|
406
|
+
return whole;
|
|
407
|
+
const value = values[token];
|
|
408
|
+
if (value === undefined) {
|
|
409
|
+
issues.push(fieldIssue(idPattern, `missing value for token {${token}}: give it with --set ${token}=<value>`));
|
|
410
|
+
return whole;
|
|
411
|
+
}
|
|
412
|
+
if (!(0, validation_1.isIdPiece)(value)) {
|
|
413
|
+
issues.push(fieldIssue(idPattern, `value for token {${token}} is not a valid [a-z0-9-.] piece: "${value}"`));
|
|
414
|
+
return whole;
|
|
415
|
+
}
|
|
416
|
+
return value;
|
|
417
|
+
});
|
|
418
|
+
if (issues.length > 0)
|
|
419
|
+
throw new validation_1.ValidationError(issues);
|
|
420
|
+
return expanded;
|
|
421
|
+
}
|
|
422
|
+
function fieldIssue(pattern, message) {
|
|
423
|
+
return { code: 'E_INVALID_ID', path: 'id', file: pattern, message };
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* The `--set` values `memory add` writes into the new document's frontmatter, as `[name, value]`
|
|
427
|
+
* pairs sorted by name (REQ-SYS-07). A field token is always written, so the id and the field cannot
|
|
428
|
+
* disagree (`dl-107` S2 (a)); a context token (`workflow`, `phase`, `scope`) only where the committed
|
|
429
|
+
* scaffold's frontmatter declares that key (`dl-107` S2 (c) — `plan` declares `workflow` and `phase`,
|
|
430
|
+
* not `scope`).
|
|
431
|
+
*/
|
|
432
|
+
function writtenFields(scaffold, values) {
|
|
433
|
+
const { frontmatter } = (0, storage_1.splitFrontmatter)(scaffold);
|
|
434
|
+
// A top-level key only (task-163): a nested key of the same name is not a declaration of the field.
|
|
435
|
+
const declared = (key) => frontmatter !== null && new RegExp(`^${escapeRegExp(key)}:(?:[ \\t\\r]|$)`, 'm').test(frontmatter);
|
|
436
|
+
return Object.keys(values)
|
|
437
|
+
.sort()
|
|
438
|
+
.filter((name) => !CONTEXT_TOKENS.has(name) || declared(name))
|
|
439
|
+
.map((name) => [name, values[name]]);
|
|
130
440
|
}
|
|
131
441
|
//# sourceMappingURL=add.js.map
|
package/dist/memory/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/memory/add.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/memory/add.ts"],"names":[],"mappings":"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"}
|