@schnick371/devsteps-shared 1.1.0-next.3 → 2.0.0-next.1
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/LICENSE.md +115 -0
- package/README.md +14 -3
- package/dist/constants/index.d.ts +40 -56
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +7 -23
- package/dist/constants/index.js.map +1 -1
- package/dist/core/add-batch-input.d.ts +28 -0
- package/dist/core/add-batch-input.d.ts.map +1 -0
- package/dist/core/add-batch-input.js +106 -0
- package/dist/core/add-batch-input.js.map +1 -0
- package/dist/core/add-batch.d.ts +37 -0
- package/dist/core/add-batch.d.ts.map +1 -0
- package/dist/core/add-batch.js +219 -0
- package/dist/core/add-batch.js.map +1 -0
- package/dist/core/add-preparation.d.ts +40 -0
- package/dist/core/add-preparation.d.ts.map +1 -0
- package/dist/core/add-preparation.js +208 -0
- package/dist/core/add-preparation.js.map +1 -0
- package/dist/core/add.d.ts +29 -6
- package/dist/core/add.d.ts.map +1 -1
- package/dist/core/add.js +54 -64
- package/dist/core/add.js.map +1 -1
- package/dist/core/archive.d.ts +18 -3
- package/dist/core/archive.d.ts.map +1 -1
- package/dist/core/archive.js +80 -35
- package/dist/core/archive.js.map +1 -1
- package/dist/core/auto-migrate-detect.d.ts +51 -16
- package/dist/core/auto-migrate-detect.d.ts.map +1 -1
- package/dist/core/auto-migrate-detect.js +128 -29
- package/dist/core/auto-migrate-detect.js.map +1 -1
- package/dist/core/auto-migrate-folders.d.ts +35 -0
- package/dist/core/auto-migrate-folders.d.ts.map +1 -0
- package/dist/core/auto-migrate-folders.js +104 -0
- package/dist/core/auto-migrate-folders.js.map +1 -0
- package/dist/core/auto-migrate-impl.d.ts +12 -10
- package/dist/core/auto-migrate-impl.d.ts.map +1 -1
- package/dist/core/auto-migrate-impl.js +79 -64
- package/dist/core/auto-migrate-impl.js.map +1 -1
- package/dist/core/auto-migrate.d.ts +16 -20
- package/dist/core/auto-migrate.d.ts.map +1 -1
- package/dist/core/auto-migrate.js +65 -56
- package/dist/core/auto-migrate.js.map +1 -1
- package/dist/core/board.d.ts +34 -0
- package/dist/core/board.d.ts.map +1 -0
- package/dist/core/board.js +64 -0
- package/dist/core/board.js.map +1 -0
- package/dist/core/bulk-update.d.ts +2 -0
- package/dist/core/bulk-update.d.ts.map +1 -1
- package/dist/core/bulk-update.js +45 -76
- package/dist/core/bulk-update.js.map +1 -1
- package/dist/core/child-relations.d.ts +26 -0
- package/dist/core/child-relations.d.ts.map +1 -0
- package/dist/core/child-relations.js +50 -0
- package/dist/core/child-relations.js.map +1 -0
- package/dist/core/classification-defaults.d.ts +20 -0
- package/dist/core/classification-defaults.d.ts.map +1 -0
- package/dist/core/classification-defaults.js +253 -0
- package/dist/core/classification-defaults.js.map +1 -0
- package/dist/core/classification-exports.d.ts +16 -0
- package/dist/core/classification-exports.d.ts.map +1 -0
- package/dist/core/classification-exports.js +16 -0
- package/dist/core/classification-exports.js.map +1 -0
- package/dist/core/classification-gate.d.ts +86 -0
- package/dist/core/classification-gate.d.ts.map +1 -0
- package/dist/core/classification-gate.js +250 -0
- package/dist/core/classification-gate.js.map +1 -0
- package/dist/core/classification-leaf.d.ts +50 -0
- package/dist/core/classification-leaf.d.ts.map +1 -0
- package/dist/core/classification-leaf.js +134 -0
- package/dist/core/classification-leaf.js.map +1 -0
- package/dist/core/classification-registry-action.d.ts +34 -0
- package/dist/core/classification-registry-action.d.ts.map +1 -0
- package/dist/core/classification-registry-action.js +71 -0
- package/dist/core/classification-registry-action.js.map +1 -0
- package/dist/core/classification-registry-ops.d.ts +30 -0
- package/dist/core/classification-registry-ops.d.ts.map +1 -0
- package/dist/core/classification-registry-ops.js +122 -0
- package/dist/core/classification-registry-ops.js.map +1 -0
- package/dist/core/classification-registry.d.ts +132 -0
- package/dist/core/classification-registry.d.ts.map +1 -0
- package/dist/core/classification-registry.js +141 -0
- package/dist/core/classification-registry.js.map +1 -0
- package/dist/core/classification-resolve.d.ts +31 -0
- package/dist/core/classification-resolve.d.ts.map +1 -0
- package/dist/core/classification-resolve.js +69 -0
- package/dist/core/classification-resolve.js.map +1 -0
- package/dist/core/classification-score.d.ts +50 -0
- package/dist/core/classification-score.d.ts.map +1 -0
- package/dist/core/classification-score.js +107 -0
- package/dist/core/classification-score.js.map +1 -0
- package/dist/core/classification-snapshot.d.ts +55 -0
- package/dist/core/classification-snapshot.d.ts.map +1 -0
- package/dist/core/classification-snapshot.js +85 -0
- package/dist/core/classification-snapshot.js.map +1 -0
- package/dist/core/closeout-branch-record.d.ts +56 -0
- package/dist/core/closeout-branch-record.d.ts.map +1 -0
- package/dist/core/closeout-branch-record.js +201 -0
- package/dist/core/closeout-branch-record.js.map +1 -0
- package/dist/core/closeout-classify.d.ts +25 -0
- package/dist/core/closeout-classify.d.ts.map +1 -0
- package/dist/core/closeout-classify.js +271 -0
- package/dist/core/closeout-classify.js.map +1 -0
- package/dist/core/closeout-git.d.ts +52 -0
- package/dist/core/closeout-git.d.ts.map +1 -0
- package/dist/core/closeout-git.js +94 -0
- package/dist/core/closeout-git.js.map +1 -0
- package/dist/core/closeout-handover-draft.d.ts +19 -0
- package/dist/core/closeout-handover-draft.d.ts.map +1 -0
- package/dist/core/closeout-handover-draft.js +144 -0
- package/dist/core/closeout-handover-draft.js.map +1 -0
- package/dist/core/closeout-inventory.d.ts +18 -0
- package/dist/core/closeout-inventory.d.ts.map +1 -0
- package/dist/core/closeout-inventory.js +251 -0
- package/dist/core/closeout-inventory.js.map +1 -0
- package/dist/core/closeout-preserve.d.ts +23 -0
- package/dist/core/closeout-preserve.d.ts.map +1 -0
- package/dist/core/closeout-preserve.js +123 -0
- package/dist/core/closeout-preserve.js.map +1 -0
- package/dist/core/closeout-record-write.d.ts +29 -0
- package/dist/core/closeout-record-write.d.ts.map +1 -0
- package/dist/core/closeout-record-write.js +69 -0
- package/dist/core/closeout-record-write.js.map +1 -0
- package/dist/core/closeout-repository.d.ts +16 -0
- package/dist/core/closeout-repository.d.ts.map +1 -0
- package/dist/core/closeout-repository.js +84 -0
- package/dist/core/closeout-repository.js.map +1 -0
- package/dist/core/closeout-rescue-refs.d.ts +18 -0
- package/dist/core/closeout-rescue-refs.d.ts.map +1 -0
- package/dist/core/closeout-rescue-refs.js +90 -0
- package/dist/core/closeout-rescue-refs.js.map +1 -0
- package/dist/core/closeout-rescue-run.d.ts +29 -0
- package/dist/core/closeout-rescue-run.d.ts.map +1 -0
- package/dist/core/closeout-rescue-run.js +66 -0
- package/dist/core/closeout-rescue-run.js.map +1 -0
- package/dist/core/closeout-rescue.d.ts +66 -0
- package/dist/core/closeout-rescue.d.ts.map +1 -0
- package/dist/core/closeout-rescue.js +302 -0
- package/dist/core/closeout-rescue.js.map +1 -0
- package/dist/core/closeout-rows.d.ts +10 -0
- package/dist/core/closeout-rows.d.ts.map +1 -0
- package/dist/core/closeout-rows.js +103 -0
- package/dist/core/closeout-rows.js.map +1 -0
- package/dist/core/closeout-secrets.d.ts +20 -0
- package/dist/core/closeout-secrets.d.ts.map +1 -0
- package/dist/core/closeout-secrets.js +119 -0
- package/dist/core/closeout-secrets.js.map +1 -0
- package/dist/core/closeout-types.d.ts +140 -0
- package/dist/core/closeout-types.d.ts.map +1 -0
- package/dist/core/closeout-types.js +9 -0
- package/dist/core/closeout-types.js.map +1 -0
- package/dist/core/closeout-worktree-links.d.ts +27 -0
- package/dist/core/closeout-worktree-links.d.ts.map +1 -0
- package/dist/core/closeout-worktree-links.js +112 -0
- package/dist/core/closeout-worktree-links.js.map +1 -0
- package/dist/core/closeout-worktrees.d.ts +54 -0
- package/dist/core/closeout-worktrees.d.ts.map +1 -0
- package/dist/core/closeout-worktrees.js +250 -0
- package/dist/core/closeout-worktrees.js.map +1 -0
- package/dist/core/commit-hint.d.ts +30 -0
- package/dist/core/commit-hint.d.ts.map +1 -0
- package/dist/core/commit-hint.js +34 -0
- package/dist/core/commit-hint.js.map +1 -0
- package/dist/core/compass-chain.d.ts +32 -0
- package/dist/core/compass-chain.d.ts.map +1 -0
- package/dist/core/compass-chain.js +90 -0
- package/dist/core/compass-chain.js.map +1 -0
- package/dist/core/compass-render.d.ts +16 -0
- package/dist/core/compass-render.d.ts.map +1 -0
- package/dist/core/compass-render.js +87 -0
- package/dist/core/compass-render.js.map +1 -0
- package/dist/core/compass-types.d.ts +93 -0
- package/dist/core/compass-types.d.ts.map +1 -0
- package/dist/core/compass-types.js +12 -0
- package/dist/core/compass-types.js.map +1 -0
- package/dist/core/compass.d.ts +31 -0
- package/dist/core/compass.d.ts.map +1 -0
- package/dist/core/compass.js +207 -0
- package/dist/core/compass.js.map +1 -0
- package/dist/core/config.d.ts +11 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +33 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/context-items.d.ts +61 -0
- package/dist/core/context-items.d.ts.map +1 -0
- package/dist/core/context-items.js +111 -0
- package/dist/core/context-items.js.map +1 -0
- package/dist/core/context-render.d.ts +23 -0
- package/dist/core/context-render.d.ts.map +1 -0
- package/dist/core/context-render.js +228 -0
- package/dist/core/context-render.js.map +1 -0
- package/dist/core/context.d.ts +5 -35
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +11 -316
- package/dist/core/context.js.map +1 -1
- package/dist/core/coord-handover-notice.d.ts +32 -0
- package/dist/core/coord-handover-notice.d.ts.map +1 -0
- package/dist/core/coord-handover-notice.js +66 -0
- package/dist/core/coord-handover-notice.js.map +1 -0
- package/dist/core/coord-input.d.ts +106 -0
- package/dist/core/coord-input.d.ts.map +1 -0
- package/dist/core/coord-input.js +142 -0
- package/dist/core/coord-input.js.map +1 -0
- package/dist/core/coord-journal.d.ts +28 -0
- package/dist/core/coord-journal.d.ts.map +1 -0
- package/dist/core/coord-journal.js +51 -0
- package/dist/core/coord-journal.js.map +1 -0
- package/dist/core/coord-paths.d.ts +30 -0
- package/dist/core/coord-paths.d.ts.map +1 -0
- package/dist/core/coord-paths.js +65 -0
- package/dist/core/coord-paths.js.map +1 -0
- package/dist/core/coord-read.d.ts +135 -0
- package/dist/core/coord-read.d.ts.map +1 -0
- package/dist/core/coord-read.js +154 -0
- package/dist/core/coord-read.js.map +1 -0
- package/dist/core/coord-store.d.ts +51 -0
- package/dist/core/coord-store.d.ts.map +1 -0
- package/dist/core/coord-store.js +188 -0
- package/dist/core/coord-store.js.map +1 -0
- package/dist/core/coord-summary.d.ts +23 -0
- package/dist/core/coord-summary.d.ts.map +1 -0
- package/dist/core/coord-summary.js +70 -0
- package/dist/core/coord-summary.js.map +1 -0
- package/dist/core/coord-sweep.d.ts +20 -0
- package/dist/core/coord-sweep.d.ts.map +1 -0
- package/dist/core/coord-sweep.js +60 -0
- package/dist/core/coord-sweep.js.map +1 -0
- package/dist/core/coord-target.d.ts +13 -0
- package/dist/core/coord-target.d.ts.map +1 -0
- package/dist/core/coord-target.js +20 -0
- package/dist/core/coord-target.js.map +1 -0
- package/dist/core/coord-write.d.ts +43 -0
- package/dist/core/coord-write.d.ts.map +1 -0
- package/dist/core/coord-write.js +210 -0
- package/dist/core/coord-write.js.map +1 -0
- package/dist/core/coordination-text.d.ts +49 -0
- package/dist/core/coordination-text.d.ts.map +1 -0
- package/dist/core/coordination-text.js +159 -0
- package/dist/core/coordination-text.js.map +1 -0
- package/dist/core/counter-lock-owner.d.ts +33 -0
- package/dist/core/counter-lock-owner.d.ts.map +1 -0
- package/dist/core/counter-lock-owner.js +129 -0
- package/dist/core/counter-lock-owner.js.map +1 -0
- package/dist/core/counter-lock-types.d.ts +39 -0
- package/dist/core/counter-lock-types.d.ts.map +1 -0
- package/dist/core/counter-lock-types.js +21 -0
- package/dist/core/counter-lock-types.js.map +1 -0
- package/dist/core/counter-lock.d.ts +33 -0
- package/dist/core/counter-lock.d.ts.map +1 -0
- package/dist/core/counter-lock.js +295 -0
- package/dist/core/counter-lock.js.map +1 -0
- package/dist/core/counters.d.ts +58 -0
- package/dist/core/counters.d.ts.map +1 -0
- package/dist/core/counters.js +244 -0
- package/dist/core/counters.js.map +1 -0
- package/dist/core/dashboard-insights.d.ts +101 -0
- package/dist/core/dashboard-insights.d.ts.map +1 -0
- package/dist/core/dashboard-insights.js +175 -0
- package/dist/core/dashboard-insights.js.map +1 -0
- package/dist/core/dashboard-model.d.ts +106 -0
- package/dist/core/dashboard-model.d.ts.map +1 -0
- package/dist/core/dashboard-model.js +176 -0
- package/dist/core/dashboard-model.js.map +1 -0
- package/dist/core/decision-count.d.ts +18 -0
- package/dist/core/decision-count.d.ts.map +1 -0
- package/dist/core/decision-count.js +74 -0
- package/dist/core/decision-count.js.map +1 -0
- package/dist/core/decision-question-status.d.ts +36 -0
- package/dist/core/decision-question-status.d.ts.map +1 -0
- package/dist/core/decision-question-status.js +106 -0
- package/dist/core/decision-question-status.js.map +1 -0
- package/dist/core/decision-question.d.ts +73 -0
- package/dist/core/decision-question.d.ts.map +1 -0
- package/dist/core/decision-question.js +203 -0
- package/dist/core/decision-question.js.map +1 -0
- package/dist/core/decision-round-actions.d.ts +49 -0
- package/dist/core/decision-round-actions.d.ts.map +1 -0
- package/dist/core/decision-round-actions.js +114 -0
- package/dist/core/decision-round-actions.js.map +1 -0
- package/dist/core/decision-round-owner.d.ts +29 -0
- package/dist/core/decision-round-owner.d.ts.map +1 -0
- package/dist/core/decision-round-owner.js +130 -0
- package/dist/core/decision-round-owner.js.map +1 -0
- package/dist/core/decision-round-text.d.ts +43 -0
- package/dist/core/decision-round-text.d.ts.map +1 -0
- package/dist/core/decision-round-text.js +146 -0
- package/dist/core/decision-round-text.js.map +1 -0
- package/dist/core/decision-round-types.d.ts +108 -0
- package/dist/core/decision-round-types.d.ts.map +1 -0
- package/dist/core/decision-round-types.js +11 -0
- package/dist/core/decision-round-types.js.map +1 -0
- package/dist/core/decision-round.d.ts +19 -0
- package/dist/core/decision-round.d.ts.map +1 -0
- package/dist/core/decision-round.js +166 -0
- package/dist/core/decision-round.js.map +1 -0
- package/dist/core/description-patch.d.ts +39 -0
- package/dist/core/description-patch.d.ts.map +1 -0
- package/dist/core/description-patch.js +107 -0
- package/dist/core/description-patch.js.map +1 -0
- package/dist/core/docs-assemble.d.ts +91 -0
- package/dist/core/docs-assemble.d.ts.map +1 -0
- package/dist/core/docs-assemble.js +210 -0
- package/dist/core/docs-assemble.js.map +1 -0
- package/dist/core/docs-map.d.ts +74 -0
- package/dist/core/docs-map.d.ts.map +1 -0
- package/dist/core/docs-map.js +247 -0
- package/dist/core/docs-map.js.map +1 -0
- package/dist/core/doctor-attachments.d.ts +29 -0
- package/dist/core/doctor-attachments.d.ts.map +1 -0
- package/dist/core/doctor-attachments.js +95 -0
- package/dist/core/doctor-attachments.js.map +1 -0
- package/dist/core/doctor-classification.d.ts +14 -0
- package/dist/core/doctor-classification.d.ts.map +1 -0
- package/dist/core/doctor-classification.js +55 -0
- package/dist/core/doctor-classification.js.map +1 -0
- package/dist/core/doctor-commit-evidence-git.d.ts +19 -0
- package/dist/core/doctor-commit-evidence-git.d.ts.map +1 -0
- package/dist/core/doctor-commit-evidence-git.js +278 -0
- package/dist/core/doctor-commit-evidence-git.js.map +1 -0
- package/dist/core/doctor-commit-evidence.d.ts +11 -0
- package/dist/core/doctor-commit-evidence.d.ts.map +1 -0
- package/dist/core/doctor-commit-evidence.js +139 -0
- package/dist/core/doctor-commit-evidence.js.map +1 -0
- package/dist/core/doctor-coordination.d.ts +20 -0
- package/dist/core/doctor-coordination.d.ts.map +1 -0
- package/dist/core/doctor-coordination.js +88 -0
- package/dist/core/doctor-coordination.js.map +1 -0
- package/dist/core/doctor-counters.d.ts +13 -0
- package/dist/core/doctor-counters.d.ts.map +1 -0
- package/dist/core/doctor-counters.js +46 -0
- package/dist/core/doctor-counters.js.map +1 -0
- package/dist/core/doctor-generated-files.d.ts +32 -0
- package/dist/core/doctor-generated-files.d.ts.map +1 -0
- package/dist/core/doctor-generated-files.js +178 -0
- package/dist/core/doctor-generated-files.js.map +1 -0
- package/dist/core/doctor-placeholders.d.ts +10 -0
- package/dist/core/doctor-placeholders.d.ts.map +1 -0
- package/dist/core/doctor-placeholders.js +49 -0
- package/dist/core/doctor-placeholders.js.map +1 -0
- package/dist/core/doctor-relations.d.ts +27 -0
- package/dist/core/doctor-relations.d.ts.map +1 -0
- package/dist/core/doctor-relations.js +179 -0
- package/dist/core/doctor-relations.js.map +1 -0
- package/dist/core/doctor-schema-normalize.d.ts +16 -0
- package/dist/core/doctor-schema-normalize.d.ts.map +1 -0
- package/dist/core/doctor-schema-normalize.js +63 -0
- package/dist/core/doctor-schema-normalize.js.map +1 -0
- package/dist/core/doctor-schema-repair-types.d.ts +37 -0
- package/dist/core/doctor-schema-repair-types.d.ts.map +1 -0
- package/dist/core/doctor-schema-repair-types.js +8 -0
- package/dist/core/doctor-schema-repair-types.js.map +1 -0
- package/dist/core/doctor-schema-repair.d.ts +17 -0
- package/dist/core/doctor-schema-repair.d.ts.map +1 -0
- package/dist/core/doctor-schema-repair.js +113 -0
- package/dist/core/doctor-schema-repair.js.map +1 -0
- package/dist/core/doctor-schema-set.d.ts +11 -0
- package/dist/core/doctor-schema-set.d.ts.map +1 -0
- package/dist/core/doctor-schema-set.js +57 -0
- package/dist/core/doctor-schema-set.js.map +1 -0
- package/dist/core/doctor-schema-tokens.d.ts +21 -0
- package/dist/core/doctor-schema-tokens.d.ts.map +1 -0
- package/dist/core/doctor-schema-tokens.js +88 -0
- package/dist/core/doctor-schema-tokens.js.map +1 -0
- package/dist/core/doctor-schema.d.ts +16 -0
- package/dist/core/doctor-schema.d.ts.map +1 -0
- package/dist/core/doctor-schema.js +59 -0
- package/dist/core/doctor-schema.js.map +1 -0
- package/dist/core/doctor-types.d.ts +23 -0
- package/dist/core/doctor-types.d.ts.map +1 -0
- package/dist/core/doctor-types.js +14 -0
- package/dist/core/doctor-types.js.map +1 -0
- package/dist/core/doctor.d.ts +17 -0
- package/dist/core/doctor.d.ts.map +1 -0
- package/dist/core/doctor.js +132 -0
- package/dist/core/doctor.js.map +1 -0
- package/dist/core/epic-sections.d.ts +39 -0
- package/dist/core/epic-sections.d.ts.map +1 -0
- package/dist/core/epic-sections.js +147 -0
- package/dist/core/epic-sections.js.map +1 -0
- package/dist/core/expedition-metadata.d.ts +42 -0
- package/dist/core/expedition-metadata.d.ts.map +1 -0
- package/dist/core/expedition-metadata.js +54 -0
- package/dist/core/expedition-metadata.js.map +1 -0
- package/dist/core/expedition-paths.d.ts +31 -0
- package/dist/core/expedition-paths.d.ts.map +1 -0
- package/dist/core/expedition-paths.js +52 -0
- package/dist/core/expedition-paths.js.map +1 -0
- package/dist/core/export-render.d.ts +29 -0
- package/dist/core/export-render.d.ts.map +1 -0
- package/dist/core/export-render.js +105 -0
- package/dist/core/export-render.js.map +1 -0
- package/dist/core/export.d.ts +24 -0
- package/dist/core/export.d.ts.map +1 -0
- package/dist/core/export.js +61 -0
- package/dist/core/export.js.map +1 -0
- package/dist/core/focus-work.d.ts +13 -0
- package/dist/core/focus-work.d.ts.map +1 -0
- package/dist/core/focus-work.js +13 -0
- package/dist/core/focus-work.js.map +1 -0
- package/dist/core/focus.d.ts +35 -0
- package/dist/core/focus.d.ts.map +1 -0
- package/dist/core/focus.js +60 -0
- package/dist/core/focus.js.map +1 -0
- package/dist/core/frontmatter.d.ts +58 -0
- package/dist/core/frontmatter.d.ts.map +1 -0
- package/dist/core/frontmatter.js +178 -0
- package/dist/core/frontmatter.js.map +1 -0
- package/dist/core/get-fields.d.ts +27 -0
- package/dist/core/get-fields.d.ts.map +1 -0
- package/dist/core/get-fields.js +60 -0
- package/dist/core/get-fields.js.map +1 -0
- package/dist/core/get.d.ts +36 -2
- package/dist/core/get.d.ts.map +1 -1
- package/dist/core/get.js +54 -12
- package/dist/core/get.js.map +1 -1
- package/dist/core/guide-acceptance.d.ts +21 -0
- package/dist/core/guide-acceptance.d.ts.map +1 -0
- package/dist/core/guide-acceptance.js +311 -0
- package/dist/core/guide-acceptance.js.map +1 -0
- package/dist/core/guide-step-list.d.ts +25 -0
- package/dist/core/guide-step-list.d.ts.map +1 -0
- package/dist/core/guide-step-list.js +91 -0
- package/dist/core/guide-step-list.js.map +1 -0
- package/dist/core/heuristic-classify.d.ts +44 -0
- package/dist/core/heuristic-classify.d.ts.map +1 -0
- package/dist/core/heuristic-classify.js +147 -0
- package/dist/core/heuristic-classify.js.map +1 -0
- package/dist/core/host-config.d.ts +80 -0
- package/dist/core/host-config.d.ts.map +1 -0
- package/dist/core/host-config.js +121 -0
- package/dist/core/host-config.js.map +1 -0
- package/dist/core/host-setup.d.ts +146 -0
- package/dist/core/host-setup.d.ts.map +1 -0
- package/dist/core/host-setup.js +277 -0
- package/dist/core/host-setup.js.map +1 -0
- package/dist/core/import-excerpt.d.ts +9 -0
- package/dist/core/import-excerpt.d.ts.map +1 -0
- package/dist/core/import-excerpt.js +17 -0
- package/dist/core/import-excerpt.js.map +1 -0
- package/dist/core/import-materialize.d.ts +66 -0
- package/dist/core/import-materialize.d.ts.map +1 -0
- package/dist/core/import-materialize.js +217 -0
- package/dist/core/import-materialize.js.map +1 -0
- package/dist/core/import-session.d.ts +85 -0
- package/dist/core/import-session.d.ts.map +1 -0
- package/dist/core/import-session.js +192 -0
- package/dist/core/import-session.js.map +1 -0
- package/dist/core/import-source.d.ts +15 -0
- package/dist/core/import-source.d.ts.map +1 -0
- package/dist/core/import-source.js +57 -0
- package/dist/core/import-source.js.map +1 -0
- package/dist/core/index-rebuild.js.map +1 -1
- package/dist/core/index-refs-core.d.ts +23 -0
- package/dist/core/index-refs-core.d.ts.map +1 -1
- package/dist/core/index-refs-core.js +54 -7
- package/dist/core/index-refs-core.js.map +1 -1
- package/dist/core/index-refs.d.ts +13 -0
- package/dist/core/index-refs.d.ts.map +1 -1
- package/dist/core/index-refs.js +42 -1
- package/dist/core/index-refs.js.map +1 -1
- package/dist/core/index.d.ts +90 -8
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +90 -10
- package/dist/core/index.js.map +1 -1
- package/dist/core/init-project.d.ts +69 -0
- package/dist/core/init-project.d.ts.map +1 -0
- package/dist/core/init-project.js +177 -0
- package/dist/core/init-project.js.map +1 -0
- package/dist/core/item-attachments-error.d.ts +22 -0
- package/dist/core/item-attachments-error.d.ts.map +1 -0
- package/dist/core/item-attachments-error.js +23 -0
- package/dist/core/item-attachments-error.js.map +1 -0
- package/dist/core/item-attachments-io.d.ts +37 -0
- package/dist/core/item-attachments-io.d.ts.map +1 -0
- package/dist/core/item-attachments-io.js +156 -0
- package/dist/core/item-attachments-io.js.map +1 -0
- package/dist/core/item-attachments-storage.d.ts +15 -0
- package/dist/core/item-attachments-storage.d.ts.map +1 -0
- package/dist/core/item-attachments-storage.js +81 -0
- package/dist/core/item-attachments-storage.js.map +1 -0
- package/dist/core/item-attachments.d.ts +58 -0
- package/dist/core/item-attachments.d.ts.map +1 -0
- package/dist/core/item-attachments.js +317 -0
- package/dist/core/item-attachments.js.map +1 -0
- package/dist/core/item-paths.d.ts +70 -0
- package/dist/core/item-paths.d.ts.map +1 -0
- package/dist/core/item-paths.js +135 -0
- package/dist/core/item-paths.js.map +1 -0
- package/dist/core/item-raw.d.ts +36 -0
- package/dist/core/item-raw.d.ts.map +1 -0
- package/dist/core/item-raw.js +98 -0
- package/dist/core/item-raw.js.map +1 -0
- package/dist/core/item-store.d.ts +120 -0
- package/dist/core/item-store.d.ts.map +1 -0
- package/dist/core/item-store.js +269 -0
- package/dist/core/item-store.js.map +1 -0
- package/dist/core/item-type-availability.d.ts +9 -0
- package/dist/core/item-type-availability.d.ts.map +1 -0
- package/dist/core/item-type-availability.js +29 -0
- package/dist/core/item-type-availability.js.map +1 -0
- package/dist/core/item-validation.d.ts +35 -0
- package/dist/core/item-validation.d.ts.map +1 -0
- package/dist/core/item-validation.js +99 -0
- package/dist/core/item-validation.js.map +1 -0
- package/dist/core/item-write-pair.d.ts +25 -0
- package/dist/core/item-write-pair.d.ts.map +1 -0
- package/dist/core/item-write-pair.js +71 -0
- package/dist/core/item-write-pair.js.map +1 -0
- package/dist/core/link-conflicts.d.ts +11 -0
- package/dist/core/link-conflicts.d.ts.map +1 -0
- package/dist/core/link-conflicts.js +45 -0
- package/dist/core/link-conflicts.js.map +1 -0
- package/dist/core/link-write.d.ts +15 -0
- package/dist/core/link-write.d.ts.map +1 -0
- package/dist/core/link-write.js +63 -0
- package/dist/core/link-write.js.map +1 -0
- package/dist/core/link.d.ts +10 -0
- package/dist/core/link.d.ts.map +1 -1
- package/dist/core/link.js +52 -65
- package/dist/core/link.js.map +1 -1
- package/dist/core/list-page.d.ts +42 -0
- package/dist/core/list-page.d.ts.map +1 -0
- package/dist/core/list-page.js +70 -0
- package/dist/core/list-page.js.map +1 -0
- package/dist/core/list.d.ts +36 -3
- package/dist/core/list.d.ts.map +1 -1
- package/dist/core/list.js +67 -107
- package/dist/core/list.js.map +1 -1
- package/dist/core/markdown-heading-ranges.d.ts +23 -0
- package/dist/core/markdown-heading-ranges.d.ts.map +1 -0
- package/dist/core/markdown-heading-ranges.js +163 -0
- package/dist/core/markdown-heading-ranges.js.map +1 -0
- package/dist/core/path-guard.d.ts +48 -0
- package/dist/core/path-guard.d.ts.map +1 -0
- package/dist/core/path-guard.js +120 -0
- package/dist/core/path-guard.js.map +1 -0
- package/dist/core/process-definition-hint.d.ts +16 -0
- package/dist/core/process-definition-hint.d.ts.map +1 -0
- package/dist/core/process-definition-hint.js +37 -0
- package/dist/core/process-definition-hint.js.map +1 -0
- package/dist/core/project-status.d.ts +56 -0
- package/dist/core/project-status.d.ts.map +1 -0
- package/dist/core/project-status.js +94 -0
- package/dist/core/project-status.js.map +1 -0
- package/dist/core/promote.d.ts +26 -0
- package/dist/core/promote.d.ts.map +1 -0
- package/dist/core/promote.js +62 -0
- package/dist/core/promote.js.map +1 -0
- package/dist/core/relationship-completeness.d.ts +32 -0
- package/dist/core/relationship-completeness.d.ts.map +1 -0
- package/dist/core/relationship-completeness.js +82 -0
- package/dist/core/relationship-completeness.js.map +1 -0
- package/dist/core/relationship-lock.d.ts +2 -0
- package/dist/core/relationship-lock.d.ts.map +1 -0
- package/dist/core/relationship-lock.js +32 -0
- package/dist/core/relationship-lock.js.map +1 -0
- package/dist/core/relationship-map.d.ts +10 -0
- package/dist/core/relationship-map.d.ts.map +1 -0
- package/dist/core/relationship-map.js +25 -0
- package/dist/core/relationship-map.js.map +1 -0
- package/dist/core/search.d.ts +53 -0
- package/dist/core/search.d.ts.map +1 -0
- package/dist/core/search.js +122 -0
- package/dist/core/search.js.map +1 -0
- package/dist/core/task-workflow-loader.d.ts +37 -0
- package/dist/core/task-workflow-loader.d.ts.map +1 -0
- package/dist/core/task-workflow-loader.js +162 -0
- package/dist/core/task-workflow-loader.js.map +1 -0
- package/dist/core/test-workflow-loader.d.ts +32 -0
- package/dist/core/test-workflow-loader.d.ts.map +1 -0
- package/dist/core/test-workflow-loader.js +98 -0
- package/dist/core/test-workflow-loader.js.map +1 -0
- package/dist/core/trace.d.ts +51 -0
- package/dist/core/trace.d.ts.map +1 -0
- package/dist/core/trace.js +193 -0
- package/dist/core/trace.js.map +1 -0
- package/dist/core/traceability-narrative.d.ts +67 -0
- package/dist/core/traceability-narrative.d.ts.map +1 -0
- package/dist/core/traceability-narrative.js +149 -0
- package/dist/core/traceability-narrative.js.map +1 -0
- package/dist/core/unlink.d.ts +4 -0
- package/dist/core/unlink.d.ts.map +1 -1
- package/dist/core/unlink.js +62 -56
- package/dist/core/unlink.js.map +1 -1
- package/dist/core/update-category-receipt.d.ts +19 -0
- package/dist/core/update-category-receipt.d.ts.map +1 -0
- package/dist/core/update-category-receipt.js +25 -0
- package/dist/core/update-category-receipt.js.map +1 -0
- package/dist/core/update-category.d.ts +12 -0
- package/dist/core/update-category.d.ts.map +1 -0
- package/dist/core/update-category.js +59 -0
- package/dist/core/update-category.js.map +1 -0
- package/dist/core/update-reminders.d.ts +30 -0
- package/dist/core/update-reminders.d.ts.map +1 -0
- package/dist/core/update-reminders.js +48 -0
- package/dist/core/update-reminders.js.map +1 -0
- package/dist/core/update.d.ts +46 -2
- package/dist/core/update.d.ts.map +1 -1
- package/dist/core/update.js +182 -28
- package/dist/core/update.js.map +1 -1
- package/dist/core/validation.d.ts +4 -2
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +61 -29
- package/dist/core/validation.js.map +1 -1
- package/dist/core/workflow-compiler-host-rules.d.ts +32 -0
- package/dist/core/workflow-compiler-host-rules.d.ts.map +1 -0
- package/dist/core/workflow-compiler-host-rules.js +266 -0
- package/dist/core/workflow-compiler-host-rules.js.map +1 -0
- package/dist/core/workflow-compiler-loop-rules.d.ts +13 -0
- package/dist/core/workflow-compiler-loop-rules.d.ts.map +1 -0
- package/dist/core/workflow-compiler-loop-rules.js +31 -0
- package/dist/core/workflow-compiler-loop-rules.js.map +1 -0
- package/dist/core/workflow-compiler-optional-rules.d.ts +14 -0
- package/dist/core/workflow-compiler-optional-rules.d.ts.map +1 -0
- package/dist/core/workflow-compiler-optional-rules.js +76 -0
- package/dist/core/workflow-compiler-optional-rules.js.map +1 -0
- package/dist/core/workflow-compiler-party-rules.d.ts +22 -0
- package/dist/core/workflow-compiler-party-rules.d.ts.map +1 -0
- package/dist/core/workflow-compiler-party-rules.js +146 -0
- package/dist/core/workflow-compiler-party-rules.js.map +1 -0
- package/dist/core/workflow-compiler-rules.d.ts +27 -0
- package/dist/core/workflow-compiler-rules.d.ts.map +1 -0
- package/dist/core/workflow-compiler-rules.js +284 -0
- package/dist/core/workflow-compiler-rules.js.map +1 -0
- package/dist/core/workflow-compiler-section-rules.d.ts +13 -0
- package/dist/core/workflow-compiler-section-rules.d.ts.map +1 -0
- package/dist/core/workflow-compiler-section-rules.js +57 -0
- package/dist/core/workflow-compiler-section-rules.js.map +1 -0
- package/dist/core/workflow-compiler-text-rules.d.ts +18 -0
- package/dist/core/workflow-compiler-text-rules.d.ts.map +1 -0
- package/dist/core/workflow-compiler-text-rules.js +82 -0
- package/dist/core/workflow-compiler-text-rules.js.map +1 -0
- package/dist/core/workflow-compiler.d.ts +52 -0
- package/dist/core/workflow-compiler.d.ts.map +1 -0
- package/dist/core/workflow-compiler.js +130 -0
- package/dist/core/workflow-compiler.js.map +1 -0
- package/dist/core/workflow-definition-facts.d.ts +32 -0
- package/dist/core/workflow-definition-facts.d.ts.map +1 -0
- package/dist/core/workflow-definition-facts.js +48 -0
- package/dist/core/workflow-definition-facts.js.map +1 -0
- package/dist/core/workflow-exports.d.ts +17 -0
- package/dist/core/workflow-exports.d.ts.map +1 -0
- package/dist/core/workflow-exports.js +17 -0
- package/dist/core/workflow-exports.js.map +1 -0
- package/dist/core/workflow-host-profiles.d.ts +44 -0
- package/dist/core/workflow-host-profiles.d.ts.map +1 -0
- package/dist/core/workflow-host-profiles.js +147 -0
- package/dist/core/workflow-host-profiles.js.map +1 -0
- package/dist/core/workflow-v2-authoring.d.ts +22 -0
- package/dist/core/workflow-v2-authoring.d.ts.map +1 -0
- package/dist/core/workflow-v2-authoring.js +88 -0
- package/dist/core/workflow-v2-authoring.js.map +1 -0
- package/dist/core/workflow-v2-loader.d.ts +26 -0
- package/dist/core/workflow-v2-loader.d.ts.map +1 -0
- package/dist/core/workflow-v2-loader.js +50 -0
- package/dist/core/workflow-v2-loader.js.map +1 -0
- package/dist/core/write-diagnostics.d.ts +69 -0
- package/dist/core/write-diagnostics.d.ts.map +1 -0
- package/dist/core/write-diagnostics.js +126 -0
- package/dist/core/write-diagnostics.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime/controls.d.ts +26 -0
- package/dist/runtime/controls.d.ts.map +1 -0
- package/dist/runtime/controls.js +54 -0
- package/dist/runtime/controls.js.map +1 -0
- package/dist/runtime/dispatcher.d.ts +73 -0
- package/dist/runtime/dispatcher.d.ts.map +1 -0
- package/dist/runtime/dispatcher.js +178 -0
- package/dist/runtime/dispatcher.js.map +1 -0
- package/dist/runtime/event-log.d.ts +65 -0
- package/dist/runtime/event-log.d.ts.map +1 -0
- package/dist/runtime/event-log.js +189 -0
- package/dist/runtime/event-log.js.map +1 -0
- package/dist/runtime/evidence.d.ts +72 -0
- package/dist/runtime/evidence.d.ts.map +1 -0
- package/dist/runtime/evidence.js +80 -0
- package/dist/runtime/evidence.js.map +1 -0
- package/dist/runtime/guide-catalog.d.ts +70 -0
- package/dist/runtime/guide-catalog.d.ts.map +1 -0
- package/dist/runtime/guide-catalog.js +132 -0
- package/dist/runtime/guide-catalog.js.map +1 -0
- package/dist/runtime/human-checkpoint.d.ts +45 -0
- package/dist/runtime/human-checkpoint.d.ts.map +1 -0
- package/dist/runtime/human-checkpoint.js +73 -0
- package/dist/runtime/human-checkpoint.js.map +1 -0
- package/dist/runtime/index.d.ts +201 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +171 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/json-path.d.ts +31 -0
- package/dist/runtime/json-path.d.ts.map +1 -0
- package/dist/runtime/json-path.js +120 -0
- package/dist/runtime/json-path.js.map +1 -0
- package/dist/runtime/predicates.d.ts +37 -0
- package/dist/runtime/predicates.d.ts.map +1 -0
- package/dist/runtime/predicates.js +185 -0
- package/dist/runtime/predicates.js.map +1 -0
- package/dist/runtime/process-report-render.d.ts +10 -0
- package/dist/runtime/process-report-render.d.ts.map +1 -0
- package/dist/runtime/process-report-render.js +93 -0
- package/dist/runtime/process-report-render.js.map +1 -0
- package/dist/runtime/process-report.d.ts +78 -0
- package/dist/runtime/process-report.d.ts.map +1 -0
- package/dist/runtime/process-report.js +228 -0
- package/dist/runtime/process-report.js.map +1 -0
- package/dist/runtime/reconciliation.d.ts +31 -0
- package/dist/runtime/reconciliation.d.ts.map +1 -0
- package/dist/runtime/reconciliation.js +42 -0
- package/dist/runtime/reconciliation.js.map +1 -0
- package/dist/runtime/redaction.d.ts +19 -0
- package/dist/runtime/redaction.d.ts.map +1 -0
- package/dist/runtime/redaction.js +80 -0
- package/dist/runtime/redaction.js.map +1 -0
- package/dist/runtime/run-catalog.d.ts +65 -0
- package/dist/runtime/run-catalog.d.ts.map +1 -0
- package/dist/runtime/run-catalog.js +218 -0
- package/dist/runtime/run-catalog.js.map +1 -0
- package/dist/runtime/run-event-payload.d.ts +52 -0
- package/dist/runtime/run-event-payload.d.ts.map +1 -0
- package/dist/runtime/run-event-payload.js +60 -0
- package/dist/runtime/run-event-payload.js.map +1 -0
- package/dist/runtime/run-history.d.ts +80 -0
- package/dist/runtime/run-history.d.ts.map +1 -0
- package/dist/runtime/run-history.js +222 -0
- package/dist/runtime/run-history.js.map +1 -0
- package/dist/runtime/run-store.d.ts +60 -0
- package/dist/runtime/run-store.d.ts.map +1 -0
- package/dist/runtime/run-store.js +233 -0
- package/dist/runtime/run-store.js.map +1 -0
- package/dist/runtime/run-trail.d.ts +112 -0
- package/dist/runtime/run-trail.d.ts.map +1 -0
- package/dist/runtime/run-trail.js +187 -0
- package/dist/runtime/run-trail.js.map +1 -0
- package/dist/runtime/state-machine.d.ts +30 -0
- package/dist/runtime/state-machine.d.ts.map +1 -0
- package/dist/runtime/state-machine.js +170 -0
- package/dist/runtime/state-machine.js.map +1 -0
- package/dist/runtime/workflow-contract.d.ts +60 -0
- package/dist/runtime/workflow-contract.d.ts.map +1 -0
- package/dist/runtime/workflow-contract.js +142 -0
- package/dist/runtime/workflow-contract.js.map +1 -0
- package/dist/runtime/workflow-response.d.ts +27 -0
- package/dist/runtime/workflow-response.d.ts.map +1 -0
- package/dist/runtime/workflow-response.js +41 -0
- package/dist/runtime/workflow-response.js.map +1 -0
- package/dist/runtime/workflow-template.d.ts +18 -0
- package/dist/runtime/workflow-template.d.ts.map +1 -0
- package/dist/runtime/workflow-template.js +65 -0
- package/dist/runtime/workflow-template.js.map +1 -0
- package/dist/runtime/workflow-v1-cancel.d.ts +30 -0
- package/dist/runtime/workflow-v1-cancel.d.ts.map +1 -0
- package/dist/runtime/workflow-v1-cancel.js +89 -0
- package/dist/runtime/workflow-v1-cancel.js.map +1 -0
- package/dist/runtime/workflow-v2-context.d.ts +27 -0
- package/dist/runtime/workflow-v2-context.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-context.js +62 -0
- package/dist/runtime/workflow-v2-context.js.map +1 -0
- package/dist/runtime/workflow-v2-continuation.d.ts +23 -0
- package/dist/runtime/workflow-v2-continuation.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-continuation.js +36 -0
- package/dist/runtime/workflow-v2-continuation.js.map +1 -0
- package/dist/runtime/workflow-v2-dispatch.d.ts +58 -0
- package/dist/runtime/workflow-v2-dispatch.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-dispatch.js +125 -0
- package/dist/runtime/workflow-v2-dispatch.js.map +1 -0
- package/dist/runtime/workflow-v2-engine.d.ts +28 -0
- package/dist/runtime/workflow-v2-engine.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-engine.js +166 -0
- package/dist/runtime/workflow-v2-engine.js.map +1 -0
- package/dist/runtime/workflow-v2-failure-route.d.ts +28 -0
- package/dist/runtime/workflow-v2-failure-route.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-failure-route.js +101 -0
- package/dist/runtime/workflow-v2-failure-route.js.map +1 -0
- package/dist/runtime/workflow-v2-fields.d.ts +40 -0
- package/dist/runtime/workflow-v2-fields.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-fields.js +112 -0
- package/dist/runtime/workflow-v2-fields.js.map +1 -0
- package/dist/runtime/workflow-v2-finalize.d.ts +29 -0
- package/dist/runtime/workflow-v2-finalize.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-finalize.js +167 -0
- package/dist/runtime/workflow-v2-finalize.js.map +1 -0
- package/dist/runtime/workflow-v2-handover.d.ts +43 -0
- package/dist/runtime/workflow-v2-handover.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-handover.js +124 -0
- package/dist/runtime/workflow-v2-handover.js.map +1 -0
- package/dist/runtime/workflow-v2-human-response.d.ts +17 -0
- package/dist/runtime/workflow-v2-human-response.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-human-response.js +133 -0
- package/dist/runtime/workflow-v2-human-response.js.map +1 -0
- package/dist/runtime/workflow-v2-human.d.ts +46 -0
- package/dist/runtime/workflow-v2-human.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-human.js +132 -0
- package/dist/runtime/workflow-v2-human.js.map +1 -0
- package/dist/runtime/workflow-v2-labels.d.ts +26 -0
- package/dist/runtime/workflow-v2-labels.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-labels.js +75 -0
- package/dist/runtime/workflow-v2-labels.js.map +1 -0
- package/dist/runtime/workflow-v2-notes.d.ts +58 -0
- package/dist/runtime/workflow-v2-notes.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-notes.js +124 -0
- package/dist/runtime/workflow-v2-notes.js.map +1 -0
- package/dist/runtime/workflow-v2-observation.d.ts +22 -0
- package/dist/runtime/workflow-v2-observation.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-observation.js +163 -0
- package/dist/runtime/workflow-v2-observation.js.map +1 -0
- package/dist/runtime/workflow-v2-operator-words.d.ts +50 -0
- package/dist/runtime/workflow-v2-operator-words.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-operator-words.js +93 -0
- package/dist/runtime/workflow-v2-operator-words.js.map +1 -0
- package/dist/runtime/workflow-v2-parties.d.ts +60 -0
- package/dist/runtime/workflow-v2-parties.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-parties.js +115 -0
- package/dist/runtime/workflow-v2-parties.js.map +1 -0
- package/dist/runtime/workflow-v2-party-state.d.ts +75 -0
- package/dist/runtime/workflow-v2-party-state.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-party-state.js +98 -0
- package/dist/runtime/workflow-v2-party-state.js.map +1 -0
- package/dist/runtime/workflow-v2-receipt.d.ts +54 -0
- package/dist/runtime/workflow-v2-receipt.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-receipt.js +252 -0
- package/dist/runtime/workflow-v2-receipt.js.map +1 -0
- package/dist/runtime/workflow-v2-reply.d.ts +30 -0
- package/dist/runtime/workflow-v2-reply.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-reply.js +52 -0
- package/dist/runtime/workflow-v2-reply.js.map +1 -0
- package/dist/runtime/workflow-v2-report-events.d.ts +70 -0
- package/dist/runtime/workflow-v2-report-events.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-report-events.js +97 -0
- package/dist/runtime/workflow-v2-report-events.js.map +1 -0
- package/dist/runtime/workflow-v2-report-render.d.ts +18 -0
- package/dist/runtime/workflow-v2-report-render.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-report-render.js +248 -0
- package/dist/runtime/workflow-v2-report-render.js.map +1 -0
- package/dist/runtime/workflow-v2-report.d.ts +134 -0
- package/dist/runtime/workflow-v2-report.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-report.js +206 -0
- package/dist/runtime/workflow-v2-report.js.map +1 -0
- package/dist/runtime/workflow-v2-revise-open.d.ts +27 -0
- package/dist/runtime/workflow-v2-revise-open.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-revise-open.js +79 -0
- package/dist/runtime/workflow-v2-revise-open.js.map +1 -0
- package/dist/runtime/workflow-v2-revise.d.ts +24 -0
- package/dist/runtime/workflow-v2-revise.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-revise.js +192 -0
- package/dist/runtime/workflow-v2-revise.js.map +1 -0
- package/dist/runtime/workflow-v2-routing.d.ts +43 -0
- package/dist/runtime/workflow-v2-routing.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-routing.js +123 -0
- package/dist/runtime/workflow-v2-routing.js.map +1 -0
- package/dist/runtime/workflow-v2-run-events.d.ts +49 -0
- package/dist/runtime/workflow-v2-run-events.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-run-events.js +85 -0
- package/dist/runtime/workflow-v2-run-events.js.map +1 -0
- package/dist/runtime/workflow-v2-run.d.ts +80 -0
- package/dist/runtime/workflow-v2-run.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-run.js +137 -0
- package/dist/runtime/workflow-v2-run.js.map +1 -0
- package/dist/runtime/workflow-v2-runtime-steps.d.ts +35 -0
- package/dist/runtime/workflow-v2-runtime-steps.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-runtime-steps.js +138 -0
- package/dist/runtime/workflow-v2-runtime-steps.js.map +1 -0
- package/dist/runtime/workflow-v2-skip.d.ts +20 -0
- package/dist/runtime/workflow-v2-skip.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-skip.js +77 -0
- package/dist/runtime/workflow-v2-skip.js.map +1 -0
- package/dist/runtime/workflow-v2-step-text.d.ts +23 -0
- package/dist/runtime/workflow-v2-step-text.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-step-text.js +34 -0
- package/dist/runtime/workflow-v2-step-text.js.map +1 -0
- package/dist/runtime/workflow-v2-submission.d.ts +64 -0
- package/dist/runtime/workflow-v2-submission.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-submission.js +99 -0
- package/dist/runtime/workflow-v2-submission.js.map +1 -0
- package/dist/runtime/workflow-v2-types.d.ts +208 -0
- package/dist/runtime/workflow-v2-types.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-types.js +140 -0
- package/dist/runtime/workflow-v2-types.js.map +1 -0
- package/dist/runtime/workflow-v2-variables.d.ts +11 -0
- package/dist/runtime/workflow-v2-variables.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-variables.js +63 -0
- package/dist/runtime/workflow-v2-variables.js.map +1 -0
- package/dist/runtime/workflow-v2-wait.d.ts +34 -0
- package/dist/runtime/workflow-v2-wait.d.ts.map +1 -0
- package/dist/runtime/workflow-v2-wait.js +53 -0
- package/dist/runtime/workflow-v2-wait.js.map +1 -0
- package/dist/runtime/workspace-fingerprint.d.ts +15 -0
- package/dist/runtime/workspace-fingerprint.d.ts.map +1 -0
- package/dist/runtime/workspace-fingerprint.js +36 -0
- package/dist/runtime/workspace-fingerprint.js.map +1 -0
- package/dist/schemas/coord.d.ts +246 -0
- package/dist/schemas/coord.d.ts.map +1 -0
- package/dist/schemas/coord.js +122 -0
- package/dist/schemas/coord.js.map +1 -0
- package/dist/schemas/counters.schema.d.ts +10 -0
- package/dist/schemas/counters.schema.d.ts.map +1 -0
- package/dist/schemas/counters.schema.js +13 -0
- package/dist/schemas/counters.schema.js.map +1 -0
- package/dist/schemas/expedition.d.ts +52 -0
- package/dist/schemas/expedition.d.ts.map +1 -0
- package/dist/schemas/expedition.js +45 -0
- package/dist/schemas/expedition.js.map +1 -0
- package/dist/schemas/guide-acceptance.d.ts +170 -0
- package/dist/schemas/guide-acceptance.d.ts.map +1 -0
- package/dist/schemas/guide-acceptance.js +93 -0
- package/dist/schemas/guide-acceptance.js.map +1 -0
- package/dist/schemas/index-refs.schema.d.ts +12 -11
- package/dist/schemas/index-refs.schema.d.ts.map +1 -1
- package/dist/schemas/index-refs.schema.js +13 -6
- package/dist/schemas/index-refs.schema.js.map +1 -1
- package/dist/schemas/index.d.ts +118 -81
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +83 -27
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/item-id.d.ts +15 -0
- package/dist/schemas/item-id.d.ts.map +1 -0
- package/dist/schemas/item-id.js +29 -0
- package/dist/schemas/item-id.js.map +1 -0
- package/dist/schemas/relationships.d.ts +6 -7
- package/dist/schemas/relationships.d.ts.map +1 -1
- package/dist/schemas/relationships.js +11 -11
- package/dist/schemas/relationships.js.map +1 -1
- package/dist/schemas/task-workflow.d.ts +206 -0
- package/dist/schemas/task-workflow.d.ts.map +1 -0
- package/dist/schemas/task-workflow.js +102 -0
- package/dist/schemas/task-workflow.js.map +1 -0
- package/dist/schemas/test-profile.d.ts +13 -0
- package/dist/schemas/test-profile.d.ts.map +1 -0
- package/dist/schemas/test-profile.js +9 -0
- package/dist/schemas/test-profile.js.map +1 -0
- package/dist/schemas/test-workflow.d.ts +117 -0
- package/dist/schemas/test-workflow.d.ts.map +1 -0
- package/dist/schemas/test-workflow.js +69 -0
- package/dist/schemas/test-workflow.js.map +1 -0
- package/dist/schemas/workflow-definition-v2.d.ts +554 -0
- package/dist/schemas/workflow-definition-v2.d.ts.map +1 -0
- package/dist/schemas/workflow-definition-v2.js +161 -0
- package/dist/schemas/workflow-definition-v2.js.map +1 -0
- package/dist/schemas/workflow-graph.d.ts +29 -0
- package/dist/schemas/workflow-graph.d.ts.map +1 -0
- package/dist/schemas/workflow-graph.js +83 -0
- package/dist/schemas/workflow-graph.js.map +1 -0
- package/dist/schemas/workflow-v2-contracts.d.ts +248 -0
- package/dist/schemas/workflow-v2-contracts.d.ts.map +1 -0
- package/dist/schemas/workflow-v2-contracts.js +236 -0
- package/dist/schemas/workflow-v2-contracts.js.map +1 -0
- package/dist/schemas/workflow-v2-vocabulary.d.ts +93 -0
- package/dist/schemas/workflow-v2-vocabulary.d.ts.map +1 -0
- package/dist/schemas/workflow-v2-vocabulary.js +89 -0
- package/dist/schemas/workflow-v2-vocabulary.js.map +1 -0
- package/dist/templates/diataxis.d.ts +20 -0
- package/dist/templates/diataxis.d.ts.map +1 -0
- package/dist/templates/diataxis.js +176 -0
- package/dist/templates/diataxis.js.map +1 -0
- package/dist/templates/epic.d.ts +27 -0
- package/dist/templates/epic.d.ts.map +1 -0
- package/dist/templates/epic.js +67 -0
- package/dist/templates/epic.js.map +1 -0
- package/dist/templates/madr.d.ts +17 -0
- package/dist/templates/madr.d.ts.map +1 -0
- package/dist/templates/madr.js +61 -0
- package/dist/templates/madr.js.map +1 -0
- package/dist/templates/reminders.d.ts +28 -0
- package/dist/templates/reminders.d.ts.map +1 -0
- package/dist/templates/reminders.js +54 -0
- package/dist/templates/reminders.js.map +1 -0
- package/dist/templates/story.d.ts +24 -0
- package/dist/templates/story.d.ts.map +1 -0
- package/dist/templates/story.js +36 -0
- package/dist/templates/story.js.map +1 -0
- package/dist/templates/task-workflow.d.ts +9 -0
- package/dist/templates/task-workflow.d.ts.map +1 -0
- package/dist/templates/task-workflow.js +39 -0
- package/dist/templates/task-workflow.js.map +1 -0
- package/dist/templates/test-workflow.d.ts +9 -0
- package/dist/templates/test-workflow.d.ts.map +1 -0
- package/dist/templates/test-workflow.js +36 -0
- package/dist/templates/test-workflow.js.map +1 -0
- package/dist/types/commands.d.ts +1 -0
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/types/commands.js +3 -0
- package/dist/types/commands.js.map +1 -1
- package/dist/types/docs-map.d.ts +110 -0
- package/dist/types/docs-map.d.ts.map +1 -0
- package/dist/types/docs-map.js +15 -0
- package/dist/types/docs-map.js.map +1 -0
- package/dist/types/index-refs.types.d.ts.map +1 -1
- package/dist/types/index-refs.types.js +1 -0
- package/dist/types/index-refs.types.js.map +1 -1
- package/dist/types/index.d.ts +2 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/agent-files-payload.d.ts +66 -0
- package/dist/utils/agent-files-payload.d.ts.map +1 -0
- package/dist/utils/agent-files-payload.js +153 -0
- package/dist/utils/agent-files-payload.js.map +1 -0
- package/dist/utils/agent-files-prune.d.ts +49 -0
- package/dist/utils/agent-files-prune.d.ts.map +1 -0
- package/dist/utils/agent-files-prune.js +164 -0
- package/dist/utils/agent-files-prune.js.map +1 -0
- package/dist/utils/agent-files-snapshot.d.ts +31 -0
- package/dist/utils/agent-files-snapshot.d.ts.map +1 -0
- package/dist/utils/agent-files-snapshot.js +128 -0
- package/dist/utils/agent-files-snapshot.js.map +1 -0
- package/dist/utils/atomic-write.d.ts +56 -0
- package/dist/utils/atomic-write.d.ts.map +1 -0
- package/dist/utils/atomic-write.js +129 -0
- package/dist/utils/atomic-write.js.map +1 -0
- package/dist/utils/backup-github-files.d.ts +7 -26
- package/dist/utils/backup-github-files.d.ts.map +1 -1
- package/dist/utils/backup-github-files.js +36 -113
- package/dist/utils/backup-github-files.js.map +1 -1
- package/dist/utils/cache.d.ts.map +1 -1
- package/dist/utils/claude-host.d.ts +48 -0
- package/dist/utils/claude-host.d.ts.map +1 -0
- package/dist/utils/claude-host.js +72 -0
- package/dist/utils/claude-host.js.map +1 -0
- package/dist/utils/codex-config.d.ts +14 -0
- package/dist/utils/codex-config.d.ts.map +1 -0
- package/dist/utils/codex-config.js +93 -0
- package/dist/utils/codex-config.js.map +1 -0
- package/dist/utils/codex-ignore.d.ts +19 -0
- package/dist/utils/codex-ignore.d.ts.map +1 -0
- package/dist/utils/codex-ignore.js +92 -0
- package/dist/utils/codex-ignore.js.map +1 -0
- package/dist/utils/codex-manifest.d.ts +72 -0
- package/dist/utils/codex-manifest.d.ts.map +1 -0
- package/dist/utils/codex-manifest.js +63 -0
- package/dist/utils/codex-manifest.js.map +1 -0
- package/dist/utils/codex-mcp-input.d.ts +7 -0
- package/dist/utils/codex-mcp-input.d.ts.map +1 -0
- package/dist/utils/codex-mcp-input.js +14 -0
- package/dist/utils/codex-mcp-input.js.map +1 -0
- package/dist/utils/codex-payload.d.ts +19 -0
- package/dist/utils/codex-payload.d.ts.map +1 -0
- package/dist/utils/codex-payload.js +133 -0
- package/dist/utils/codex-payload.js.map +1 -0
- package/dist/utils/codex-plan.d.ts +8 -0
- package/dist/utils/codex-plan.d.ts.map +1 -0
- package/dist/utils/codex-plan.js +137 -0
- package/dist/utils/codex-plan.js.map +1 -0
- package/dist/utils/codex-setup.d.ts +12 -0
- package/dist/utils/codex-setup.d.ts.map +1 -0
- package/dist/utils/codex-setup.js +130 -0
- package/dist/utils/codex-setup.js.map +1 -0
- package/dist/utils/codex-spans.d.ts +27 -0
- package/dist/utils/codex-spans.d.ts.map +1 -0
- package/dist/utils/codex-spans.js +69 -0
- package/dist/utils/codex-spans.js.map +1 -0
- package/dist/utils/codex-state.d.ts +14 -0
- package/dist/utils/codex-state.d.ts.map +1 -0
- package/dist/utils/codex-state.js +64 -0
- package/dist/utils/codex-state.js.map +1 -0
- package/dist/utils/codex-types.d.ts +49 -0
- package/dist/utils/codex-types.d.ts.map +1 -0
- package/dist/utils/codex-types.js +46 -0
- package/dist/utils/codex-types.js.map +1 -0
- package/dist/utils/contract-block.d.ts +79 -0
- package/dist/utils/contract-block.d.ts.map +1 -0
- package/dist/utils/contract-block.js +153 -0
- package/dist/utils/contract-block.js.map +1 -0
- package/dist/utils/contract-staleness.d.ts +22 -0
- package/dist/utils/contract-staleness.d.ts.map +1 -0
- package/dist/utils/contract-staleness.js +67 -0
- package/dist/utils/contract-staleness.js.map +1 -0
- package/dist/utils/index.d.ts +14 -37
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +68 -120
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/init-helpers.d.ts +8 -6
- package/dist/utils/init-helpers.d.ts.map +1 -1
- package/dist/utils/init-helpers.js +54 -102
- package/dist/utils/init-helpers.js.map +1 -1
- package/dist/utils/mcp-tool-groups.d.ts +101 -0
- package/dist/utils/mcp-tool-groups.d.ts.map +1 -0
- package/dist/utils/mcp-tool-groups.js +117 -0
- package/dist/utils/mcp-tool-groups.js.map +1 -0
- package/dist/utils/packaged-github.d.ts +23 -0
- package/dist/utils/packaged-github.d.ts.map +1 -0
- package/dist/utils/packaged-github.js +38 -0
- package/dist/utils/packaged-github.js.map +1 -0
- package/dist/utils/setup-guide.d.ts +7 -0
- package/dist/utils/setup-guide.d.ts.map +1 -0
- package/dist/utils/setup-guide.js +87 -0
- package/dist/utils/setup-guide.js.map +1 -0
- package/dist/utils/snapshot-manifest.d.ts +36 -0
- package/dist/utils/snapshot-manifest.d.ts.map +1 -0
- package/dist/utils/snapshot-manifest.js +116 -0
- package/dist/utils/snapshot-manifest.js.map +1 -0
- package/dist/utils/snapshot-paths.d.ts +21 -0
- package/dist/utils/snapshot-paths.d.ts.map +1 -0
- package/dist/utils/snapshot-paths.js +111 -0
- package/dist/utils/snapshot-paths.js.map +1 -0
- package/dist/utils/snapshot-retention.d.ts +12 -0
- package/dist/utils/snapshot-retention.d.ts.map +1 -0
- package/dist/utils/snapshot-retention.js +71 -0
- package/dist/utils/snapshot-retention.js.map +1 -0
- package/dist/utils/text-file.d.ts +13 -0
- package/dist/utils/text-file.d.ts.map +1 -0
- package/dist/utils/text-file.js +19 -0
- package/dist/utils/text-file.js.map +1 -0
- package/dist/utils/update-agent-files.d.ts +63 -0
- package/dist/utils/update-agent-files.d.ts.map +1 -0
- package/dist/utils/update-agent-files.js +248 -0
- package/dist/utils/update-agent-files.js.map +1 -0
- package/dist/utils/update-copilot-files.d.ts +4 -2
- package/dist/utils/update-copilot-files.d.ts.map +1 -1
- package/dist/utils/update-copilot-files.js +52 -12
- package/dist/utils/update-copilot-files.js.map +1 -1
- package/package.json +14 -10
- package/dist/core/auto-migrate.test.d.ts +0 -7
- package/dist/core/auto-migrate.test.d.ts.map +0 -1
- package/dist/core/auto-migrate.test.js +0 -368
- package/dist/core/auto-migrate.test.js.map +0 -1
- package/dist/core/context.test.d.ts +0 -10
- package/dist/core/context.test.d.ts.map +0 -1
- package/dist/core/context.test.js +0 -239
- package/dist/core/context.test.js.map +0 -1
- package/dist/core/index-rebuild.test.d.ts +0 -8
- package/dist/core/index-rebuild.test.d.ts.map +0 -1
- package/dist/core/index-rebuild.test.js +0 -563
- package/dist/core/index-rebuild.test.js.map +0 -1
- package/dist/core/index-refs.test.d.ts +0 -7
- package/dist/core/index-refs.test.d.ts.map +0 -1
- package/dist/core/index-refs.test.js +0 -367
- package/dist/core/index-refs.test.js.map +0 -1
- package/dist/schemas/analysis.d.ts +0 -206
- package/dist/schemas/analysis.d.ts.map +0 -1
- package/dist/schemas/analysis.js +0 -138
- package/dist/schemas/analysis.js.map +0 -1
- package/dist/schemas/cbp-loops.d.ts +0 -154
- package/dist/schemas/cbp-loops.d.ts.map +0 -1
- package/dist/schemas/cbp-loops.js +0 -160
- package/dist/schemas/cbp-loops.js.map +0 -1
- package/dist/schemas/cbp-loops.test.d.ts +0 -10
- package/dist/schemas/cbp-loops.test.d.ts.map +0 -1
- package/dist/schemas/cbp-loops.test.js +0 -268
- package/dist/schemas/cbp-loops.test.js.map +0 -1
- package/dist/schemas/cbp-mandate.d.ts +0 -107
- package/dist/schemas/cbp-mandate.d.ts.map +0 -1
- package/dist/schemas/cbp-mandate.js +0 -107
- package/dist/schemas/cbp-mandate.js.map +0 -1
- package/dist/schemas/cbp-mandate.test.d.ts +0 -10
- package/dist/schemas/cbp-mandate.test.d.ts.map +0 -1
- package/dist/schemas/cbp-mandate.test.js +0 -188
- package/dist/schemas/cbp-mandate.test.js.map +0 -1
- package/dist/utils/normalize.test.d.ts +0 -15
- package/dist/utils/normalize.test.d.ts.map +0 -1
- package/dist/utils/normalize.test.js +0 -101
- package/dist/utils/normalize.test.js.map +0 -1
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Decision (DEC) and question (QST) items (EPIC-059, design v6.1 §1): the cross-cutting types, the
|
|
6
|
+
* body templates, the body field parser and renderer, and the deviation tag. The status rules live in
|
|
7
|
+
* `decision-question-status.ts`.
|
|
8
|
+
*/
|
|
9
|
+
import { markdownSections } from './epic-sections.js';
|
|
10
|
+
/** Types outside the implements hierarchy: they link through relates-to, blocks or documents. */
|
|
11
|
+
export const CROSS_CUTTING_TYPES = ['doc', 'decision', 'question'];
|
|
12
|
+
/** True for doc, decision and question: exempt from the hierarchy and never an orphan. */
|
|
13
|
+
export function isCrossCutting(type) {
|
|
14
|
+
return CROSS_CUTTING_TYPES.includes(type);
|
|
15
|
+
}
|
|
16
|
+
/** True for the two types whose body carries fields and whose statuses carry a meaning. */
|
|
17
|
+
export function isDecisionOrQuestion(type) {
|
|
18
|
+
return type === 'decision' || type === 'question';
|
|
19
|
+
}
|
|
20
|
+
export const DECISION_FIELDS = ['Why', 'Rejected', 'Check'];
|
|
21
|
+
export const QUESTION_FIELDS = ['Recommendation'];
|
|
22
|
+
/** The tag that marks a decision as a deviation; its priority (eisenhower) ranks it. */
|
|
23
|
+
export const DEVIATION_TAG = 'deviation';
|
|
24
|
+
const DECISION_FIELD_HELP = {
|
|
25
|
+
Why: 'the rationale; for a deviation, the constraint it departs from',
|
|
26
|
+
Rejected: 'optional: the alternatives that lost, and why',
|
|
27
|
+
Check: 'optional: the test, lint or command that verifies it',
|
|
28
|
+
};
|
|
29
|
+
const RECOMMENDATION_HELP = 'the recommended option, and why';
|
|
30
|
+
const PLACES = 'The paths it concerns go into affected_paths; the person who answers or owns it into assignee.';
|
|
31
|
+
const OPTION_KEYS = ['a', 'b', 'c'];
|
|
32
|
+
/** The DEC body fields as `add` returns them in its hint and a reminder carries them. */
|
|
33
|
+
export const DECISION_TEMPLATE = [
|
|
34
|
+
...DECISION_FIELDS.map((field) => `- ${field}: ${DECISION_FIELD_HELP[field]}`),
|
|
35
|
+
`A deviation carries the tag ${DEVIATION_TAG}, and its priority ranks it. ${PLACES}`,
|
|
36
|
+
].join('\n');
|
|
37
|
+
/** The QST body: the options, the recommendation and the answer section. */
|
|
38
|
+
export const QUESTION_TEMPLATE = [
|
|
39
|
+
...OPTION_KEYS.map((key) => `${key}) an option`),
|
|
40
|
+
`- Recommendation: ${RECOMMENDATION_HELP}`,
|
|
41
|
+
'## Answer, a section that names the chosen option and why; status done expects it',
|
|
42
|
+
PLACES,
|
|
43
|
+
].join('\n');
|
|
44
|
+
/** The body `add` writes for a decision without a description; placeholders are comments. */
|
|
45
|
+
export function decisionSkeleton(title) {
|
|
46
|
+
const fields = DECISION_FIELDS.map((field) => `- ${field}: <!-- ${DECISION_FIELD_HELP[field]} -->`);
|
|
47
|
+
return `# ${title}\n\n<!-- The decision in one or two sentences. -->\n\n${fields.join('\n')}\n`;
|
|
48
|
+
}
|
|
49
|
+
/** The body `add` writes for a question without a description; placeholders are comments. */
|
|
50
|
+
export function questionSkeleton(title) {
|
|
51
|
+
const lines = [
|
|
52
|
+
...OPTION_KEYS.map((key) => `${key}) <!-- an option -->`),
|
|
53
|
+
`- Recommendation: <!-- ${RECOMMENDATION_HELP} -->`,
|
|
54
|
+
];
|
|
55
|
+
return `# ${title}\n\n<!-- The question in one or two sentences. -->\n\n${lines.join('\n')}\n`;
|
|
56
|
+
}
|
|
57
|
+
/** The skeleton `add` writes for a decision or question without a description, else undefined. */
|
|
58
|
+
export function bodySkeleton(type, title) {
|
|
59
|
+
if (type === 'decision')
|
|
60
|
+
return decisionSkeleton(title);
|
|
61
|
+
if (type === 'question')
|
|
62
|
+
return questionSkeleton(title);
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
/** Blank HTML comments and fenced code, so placeholders and examples never read as fields. */
|
|
66
|
+
function readableLines(markdown) {
|
|
67
|
+
const lines = markdown
|
|
68
|
+
.replace(/<!--[\s\S]*?-->/g, (comment) => comment.replace(/[^\r\n]/g, ''))
|
|
69
|
+
.split(/\r?\n/);
|
|
70
|
+
let fence = false;
|
|
71
|
+
return lines.map((line) => {
|
|
72
|
+
if (/^\s*(```|~~~)/.test(line)) {
|
|
73
|
+
fence = !fence;
|
|
74
|
+
return '';
|
|
75
|
+
}
|
|
76
|
+
return fence ? '' : line;
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Every `- Key: value` bullet, or `Key: value` line, with a value; the first occurrence of a key
|
|
81
|
+
* wins. Both forms are in use, and a decision written `Why: …` has its Why (EPIC-060).
|
|
82
|
+
*/
|
|
83
|
+
function parseBullets(lines) {
|
|
84
|
+
const fields = new Map();
|
|
85
|
+
for (const line of lines) {
|
|
86
|
+
const match = /^(?:- )?([A-Za-z]+):\s*(.*)$/.exec(line);
|
|
87
|
+
const value = match?.[2].trim();
|
|
88
|
+
if (match && value && !fields.has(match[1]))
|
|
89
|
+
fields.set(match[1], value);
|
|
90
|
+
}
|
|
91
|
+
return fields;
|
|
92
|
+
}
|
|
93
|
+
/** The headings a decision field falls back to when its bullet is absent (BUG-239). */
|
|
94
|
+
const FIELD_SECTIONS = {
|
|
95
|
+
Why: /^(?:why|rationale)(?:\s*\([^\n)]+\)|\s*[:—–-]\s+.+)?$/i,
|
|
96
|
+
Rejected: /^(?:(?:considered )?options|alternatives|rejected(?: alternatives)?)$/i,
|
|
97
|
+
Check: /^(?:check|verification)$/i,
|
|
98
|
+
};
|
|
99
|
+
/** The text of the first H2+ section whose heading matches, bullets joined with `; `. */
|
|
100
|
+
export function sectionText(markdown, heading) {
|
|
101
|
+
const body = readableLines(markdown).join('\n');
|
|
102
|
+
for (const section of markdownSections(body)) {
|
|
103
|
+
if (section.level < 2 || !heading.test(section.heading.trim()))
|
|
104
|
+
continue;
|
|
105
|
+
const lines = section.body
|
|
106
|
+
.split('\n')
|
|
107
|
+
.map((line) => line.trim())
|
|
108
|
+
.filter((line) => line.length > 0);
|
|
109
|
+
const bullets = lines.some((line) => /^(?:[-*+]|\d+[.)])\s/.test(line));
|
|
110
|
+
const items = lines.map((line) => line.replace(/^(?:[-*+]|\d+[.)])\s+/, ''));
|
|
111
|
+
const text = items.join(bullets ? '; ' : ' ').trim();
|
|
112
|
+
if (text)
|
|
113
|
+
return text;
|
|
114
|
+
}
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
/** The fields of a decision body: bullets first, then the matching section; empty ones left out. */
|
|
118
|
+
export function parseDecisionFields(markdown) {
|
|
119
|
+
const bullets = parseBullets(readableLines(markdown));
|
|
120
|
+
const fields = {};
|
|
121
|
+
for (const field of DECISION_FIELDS) {
|
|
122
|
+
const value = bullets.get(field) || sectionText(markdown, FIELD_SECTIONS[field]);
|
|
123
|
+
if (value)
|
|
124
|
+
fields[field] = value;
|
|
125
|
+
}
|
|
126
|
+
return fields;
|
|
127
|
+
}
|
|
128
|
+
const ANSWER_HEADING = /^##\s+Answer\s*$/i;
|
|
129
|
+
/** The text of the `## Answer` section up to the next H1 or H2, or undefined when empty. */
|
|
130
|
+
export function answerSection(markdown) {
|
|
131
|
+
const lines = readableLines(markdown);
|
|
132
|
+
const start = lines.findIndex((line) => ANSWER_HEADING.test(line));
|
|
133
|
+
if (start < 0)
|
|
134
|
+
return undefined;
|
|
135
|
+
const rest = lines.slice(start + 1);
|
|
136
|
+
const end = rest.findIndex((line) => /^#{1,2}\s/.test(line));
|
|
137
|
+
const text = (end < 0 ? rest : rest.slice(0, end)).join('\n').trim();
|
|
138
|
+
return text || undefined;
|
|
139
|
+
}
|
|
140
|
+
/** The fields, options and answer of a question body; fields and options precede the answer. */
|
|
141
|
+
export function parseQuestionFields(markdown) {
|
|
142
|
+
const all = readableLines(markdown);
|
|
143
|
+
const answerAt = all.findIndex((line) => ANSWER_HEADING.test(line));
|
|
144
|
+
const lines = answerAt < 0 ? all : all.slice(0, answerAt);
|
|
145
|
+
const bullets = parseBullets(lines);
|
|
146
|
+
const result = { options: [] };
|
|
147
|
+
for (const field of QUESTION_FIELDS) {
|
|
148
|
+
const value = bullets.get(field);
|
|
149
|
+
if (value)
|
|
150
|
+
result[field] = value;
|
|
151
|
+
}
|
|
152
|
+
for (const line of lines) {
|
|
153
|
+
const match = /^(?:- )?([a-z])\)\s+(.*)$/.exec(line);
|
|
154
|
+
const text = match?.[2].trim();
|
|
155
|
+
if (match && text)
|
|
156
|
+
result.options.push({ key: match[1], text });
|
|
157
|
+
}
|
|
158
|
+
const answer = answerSection(markdown);
|
|
159
|
+
if (answer)
|
|
160
|
+
result.answer = answer;
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
163
|
+
/** A deviation is a decision tagged `deviation` (design v6.1 §1). */
|
|
164
|
+
export function isDeviation(item) {
|
|
165
|
+
return item.type === 'decision' && item.tags.includes(DEVIATION_TAG);
|
|
166
|
+
}
|
|
167
|
+
/** What a decision body lacks, one sentence each; empty when it is complete. */
|
|
168
|
+
export function decisionFieldProblems(fields, markdown) {
|
|
169
|
+
if (fields.Why)
|
|
170
|
+
return [];
|
|
171
|
+
if (markdown === undefined)
|
|
172
|
+
return ['Why is missing.'];
|
|
173
|
+
const readable = readableLines(markdown);
|
|
174
|
+
const at = readable.findIndex((line) => {
|
|
175
|
+
const heading = /^#{2,6}\s+(.+?)\s*#*\s*$/.exec(line);
|
|
176
|
+
return (/^(?:- )?Why:\s*/i.test(line) ||
|
|
177
|
+
(heading !== null && FIELD_SECTIONS.Why.test(heading[1].trim())));
|
|
178
|
+
});
|
|
179
|
+
const location = at >= 0
|
|
180
|
+
? ` Empty rationale at line ${at + 1}: "${markdown.split(/\r?\n/)[at].trim().slice(0, 100)}".`
|
|
181
|
+
: ` No populated Why field or heading in lines 1-${readable.length}.`;
|
|
182
|
+
return [`Why is missing.${location}`];
|
|
183
|
+
}
|
|
184
|
+
/** A decision body in the template's order: title, statement, then the fields that are set. */
|
|
185
|
+
export function renderDecisionBody(input) {
|
|
186
|
+
const fields = DECISION_FIELDS.filter((field) => input.fields[field]?.trim()).map((field) => `- ${field}: ${input.fields[field]?.trim()}`);
|
|
187
|
+
return joinBody(input.title, input.text, [fields]);
|
|
188
|
+
}
|
|
189
|
+
/** A question body: title, question, options, the recommendation, and the answer. */
|
|
190
|
+
export function renderQuestionBody(input) {
|
|
191
|
+
const recommendation = input.fields.Recommendation?.trim();
|
|
192
|
+
const options = (input.options ?? []).map((option) => `${option.key}) ${option.text.trim()}`);
|
|
193
|
+
const answer = input.answer?.trim() ? [`## Answer\n\n${input.answer.trim()}`] : [];
|
|
194
|
+
return joinBody(input.title, input.text, [
|
|
195
|
+
[...options, ...(recommendation ? [`- Recommendation: ${recommendation}`] : [])],
|
|
196
|
+
answer,
|
|
197
|
+
]);
|
|
198
|
+
}
|
|
199
|
+
function joinBody(title, text, blocks) {
|
|
200
|
+
const parts = [`# ${title}`, text?.trim() ?? '', ...blocks.map((block) => block.join('\n'))];
|
|
201
|
+
return `${parts.filter((part) => part.length > 0).join('\n\n')}\n`;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=decision-question.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-question.js","sourceRoot":"","sources":["../../src/core/decision-question.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Decision round actions (EPIC-060): answer and drop a question, accept and reject a decision.
|
|
6
|
+
* Each is one `updateItem` with a plain status, never refused for the status the item is in
|
|
7
|
+
* (DEC-004), and returns the warnings of the update. An answer is the chosen option and the
|
|
8
|
+
* free text in an `## Answer` section (DEC-049); a question that already has one gets it
|
|
9
|
+
* replaced, so the section stays single. The prompt hands the round to the decision-round skill.
|
|
10
|
+
*/
|
|
11
|
+
import type { ItemStatus } from '../schemas/index.js';
|
|
12
|
+
import type { RoundOption } from './decision-round-types.js';
|
|
13
|
+
export type RoundIntentKind = 'answer' | 'drop' | 'accept' | 'reject';
|
|
14
|
+
export type RoundIntent = {
|
|
15
|
+
kind: 'answer';
|
|
16
|
+
id: string;
|
|
17
|
+
option?: string;
|
|
18
|
+
text?: string;
|
|
19
|
+
} | {
|
|
20
|
+
kind: 'drop' | 'accept' | 'reject';
|
|
21
|
+
id: string;
|
|
22
|
+
};
|
|
23
|
+
export interface RoundActionResult {
|
|
24
|
+
id: string;
|
|
25
|
+
kind: RoundIntentKind;
|
|
26
|
+
status: ItemStatus;
|
|
27
|
+
/** The in-band warnings of the update, empty when it has none. */
|
|
28
|
+
warnings: string[];
|
|
29
|
+
}
|
|
30
|
+
/** An intent that does not fit its item: wrong type, an unknown option, an empty answer. */
|
|
31
|
+
export declare class RoundIntentError extends Error {
|
|
32
|
+
constructor(message: string);
|
|
33
|
+
}
|
|
34
|
+
/** The skill that turns a round's answers into decisions. */
|
|
35
|
+
export declare const DECISION_ROUND_SKILL = "sdevsteps-decision-round";
|
|
36
|
+
/** The longest free text an answer carries. */
|
|
37
|
+
export declare const ANSWER_TEXT_MAX = 4000;
|
|
38
|
+
/** The text of an answer: `b) option text`, the free text, or both. */
|
|
39
|
+
export declare function answerText(options: readonly RoundOption[], option: string | undefined, text: string | undefined): string;
|
|
40
|
+
/** The body with its `## Answer` section's text replaced, or undefined when it has none. */
|
|
41
|
+
export declare function replaceAnswerSection(markdown: string, answer: string): string | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Apply one round intent as a plain status update. A write that meets another writer's change
|
|
44
|
+
* (STORY-428) is read and applied once more, because a round runs while Claude writes items.
|
|
45
|
+
*/
|
|
46
|
+
export declare function applyRoundIntent(devstepsDir: string, intent: RoundIntent): Promise<RoundActionResult>;
|
|
47
|
+
/** The prompt a chat without a monitor gets: run the skill over the answers of the round. */
|
|
48
|
+
export declare function decisionRoundPrompt(scope?: string): string;
|
|
49
|
+
//# sourceMappingURL=decision-round-actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-round-actions.d.ts","sourceRoot":"","sources":["../../src/core/decision-round-actions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI7D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtE,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,kEAAkE;IAClE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,4FAA4F;AAC5F,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAE/D,+CAA+C;AAC/C,eAAO,MAAM,eAAe,OAAO,CAAC;AAWpC,uEAAuE;AACvE,wBAAgB,UAAU,CACxB,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,MAAM,CAYR;AAED,4FAA4F;AAC5F,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQzF;AAqCD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAO5B;AAED,6FAA6F;AAC7F,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAO1D"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Decision round actions (EPIC-060): answer and drop a question, accept and reject a decision.
|
|
6
|
+
* Each is one `updateItem` with a plain status, never refused for the status the item is in
|
|
7
|
+
* (DEC-004), and returns the warnings of the update. An answer is the chosen option and the
|
|
8
|
+
* free text in an `## Answer` section (DEC-049); a question that already has one gets it
|
|
9
|
+
* replaced, so the section stays single. The prompt hands the round to the decision-round skill.
|
|
10
|
+
*/
|
|
11
|
+
import { questionOptions } from './decision-round-text.js';
|
|
12
|
+
import { readItem, StaleItemError } from './item-store.js';
|
|
13
|
+
import { updateItem } from './update.js';
|
|
14
|
+
/** An intent that does not fit its item: wrong type, an unknown option, an empty answer. */
|
|
15
|
+
export class RoundIntentError extends Error {
|
|
16
|
+
constructor(message) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.name = 'RoundIntentError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/** The skill that turns a round's answers into decisions. */
|
|
22
|
+
export const DECISION_ROUND_SKILL = 'sdevsteps-decision-round';
|
|
23
|
+
/** The longest free text an answer carries. */
|
|
24
|
+
export const ANSWER_TEXT_MAX = 4000;
|
|
25
|
+
const TARGETS = {
|
|
26
|
+
answer: { type: 'question', status: 'done' },
|
|
27
|
+
drop: { type: 'question', status: 'cancelled' },
|
|
28
|
+
accept: { type: 'decision', status: 'done' },
|
|
29
|
+
reject: { type: 'decision', status: 'cancelled' },
|
|
30
|
+
};
|
|
31
|
+
const ANSWER_HEADING = /^##\s+Answer\s*$/i;
|
|
32
|
+
/** The text of an answer: `b) option text`, the free text, or both. */
|
|
33
|
+
export function answerText(options, option, text) {
|
|
34
|
+
const chosen = option ? options.find((candidate) => candidate.key === option) : undefined;
|
|
35
|
+
if (option && !chosen)
|
|
36
|
+
throw new RoundIntentError(`The question has no option ${option}).`);
|
|
37
|
+
const raw = (text ?? '').trim();
|
|
38
|
+
if (raw.length > ANSWER_TEXT_MAX) {
|
|
39
|
+
throw new RoundIntentError(`An answer carries at most ${ANSWER_TEXT_MAX} characters of text.`);
|
|
40
|
+
}
|
|
41
|
+
// A line of free text that starts with `#` stays text: as a heading it would end the section.
|
|
42
|
+
const note = raw.replace(/^(\s*)(#)/gm, '$1\\$2');
|
|
43
|
+
const answer = [chosen ? `${chosen.key}) ${chosen.text}` : '', note].filter(Boolean).join('\n\n');
|
|
44
|
+
if (!answer)
|
|
45
|
+
throw new RoundIntentError('An answer names an option or carries text.');
|
|
46
|
+
return answer;
|
|
47
|
+
}
|
|
48
|
+
/** The body with its `## Answer` section's text replaced, or undefined when it has none. */
|
|
49
|
+
export function replaceAnswerSection(markdown, answer) {
|
|
50
|
+
const lines = markdown.replace(/\r\n?/g, '\n').split('\n');
|
|
51
|
+
const start = lines.findIndex((line) => ANSWER_HEADING.test(line));
|
|
52
|
+
if (start < 0)
|
|
53
|
+
return undefined;
|
|
54
|
+
const rest = lines.slice(start + 1);
|
|
55
|
+
const next = rest.findIndex((line) => /^#{1,2}\s/.test(line));
|
|
56
|
+
const tail = next < 0 ? [] : ['', ...rest.slice(next)];
|
|
57
|
+
return [...lines.slice(0, start + 1), '', answer, ...tail].join('\n').replace(/\n*$/, '\n');
|
|
58
|
+
}
|
|
59
|
+
/** The description patch of an answer: a replaced section, or one appended after a blank line. */
|
|
60
|
+
function answerPatch(description, answer) {
|
|
61
|
+
const replaced = replaceAnswerSection(description, answer);
|
|
62
|
+
if (replaced !== undefined)
|
|
63
|
+
return { description: replaced };
|
|
64
|
+
const gap = description.endsWith('\n\n') ? '' : description.endsWith('\n') ? '\n' : '\n\n';
|
|
65
|
+
return { append_description: `${description ? gap : ''}## Answer\n\n${answer}\n` };
|
|
66
|
+
}
|
|
67
|
+
async function applyOnce(devstepsDir, intent) {
|
|
68
|
+
const target = TARGETS[intent.kind];
|
|
69
|
+
const item = readItem(devstepsDir, intent.id);
|
|
70
|
+
const { type } = item.metadata;
|
|
71
|
+
if (type !== target.type) {
|
|
72
|
+
throw new RoundIntentError(`${intent.id} is a ${type}; ${intent.kind} applies to a ${target.type}.`);
|
|
73
|
+
}
|
|
74
|
+
const args = { id: intent.id, status: target.status };
|
|
75
|
+
if (intent.kind === 'answer') {
|
|
76
|
+
const answer = answerText(questionOptions(item.description), intent.option, intent.text);
|
|
77
|
+
Object.assign(args, answerPatch(item.description, answer));
|
|
78
|
+
}
|
|
79
|
+
// BUG-199: the update refuses when the item changed after this read, so the answer is
|
|
80
|
+
// rebuilt on the fresh description instead of overwriting the other writer's change.
|
|
81
|
+
const result = await updateItem(devstepsDir, args, {
|
|
82
|
+
expected: { metadata: item.stamp, description: item.descriptionStamp },
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
id: intent.id,
|
|
86
|
+
kind: intent.kind,
|
|
87
|
+
status: result.metadata.status,
|
|
88
|
+
warnings: result.warnings ?? [],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Apply one round intent as a plain status update. A write that meets another writer's change
|
|
93
|
+
* (STORY-428) is read and applied once more, because a round runs while Claude writes items.
|
|
94
|
+
*/
|
|
95
|
+
export async function applyRoundIntent(devstepsDir, intent) {
|
|
96
|
+
try {
|
|
97
|
+
return await applyOnce(devstepsDir, intent);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (!(error instanceof StaleItemError))
|
|
101
|
+
throw error;
|
|
102
|
+
return applyOnce(devstepsDir, intent);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** The prompt a chat without a monitor gets: run the skill over the answers of the round. */
|
|
106
|
+
export function decisionRoundPrompt(scope) {
|
|
107
|
+
const round = scope ? `the decision round of ${scope}` : 'the decision round';
|
|
108
|
+
return [
|
|
109
|
+
`Evaluate ${round} with the ${DECISION_ROUND_SKILL} skill.`,
|
|
110
|
+
'Turn each answered question without a linked decision into a decision, link it, and update the recommendations of the questions that depend on it.',
|
|
111
|
+
'Then summarise the round, propose follow-up items for my approval, and list conflicts of the accepted decisions with each other and with the epic constraints.',
|
|
112
|
+
].join(' ');
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=decision-round-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-round-actions.js","sourceRoot":"","sources":["../../src/core/decision-round-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Where a decision or question belongs in a decision round (EPIC-060), and what applies there.
|
|
6
|
+
* The owner is the most specific epic or story it is linked to: a story, spike or feature before
|
|
7
|
+
* an epic or requirement, the lowest ID within a level, and a linked task, bug or test stands for
|
|
8
|
+
* the nearest of them on its implements chain. The compass of a group is the owner chain's source
|
|
9
|
+
* sections and accepted decisions, the parts of the compass block a card adds to the round.
|
|
10
|
+
*/
|
|
11
|
+
import type { ItemMetadata, ItemType } from '../schemas/index.js';
|
|
12
|
+
import type { RoundCompass, RoundRef } from './decision-round-types.js';
|
|
13
|
+
/** The accepted decisions a group compass lists at most. */
|
|
14
|
+
export declare const ROUND_COMPASS_DECISIONS_MAX = 5;
|
|
15
|
+
export type MetadataReader = (id: string) => ItemMetadata | undefined;
|
|
16
|
+
/** A reader over the item store that remembers each answer for one round build. */
|
|
17
|
+
export declare function metadataReader(devstepsDir: string): MetadataReader;
|
|
18
|
+
export declare function roundRef(item: ItemMetadata): RoundRef;
|
|
19
|
+
export declare function ownerLevel(type: ItemType): number | undefined;
|
|
20
|
+
/** Every owner an item is linked to, the one its group follows first. */
|
|
21
|
+
export declare function ownerCandidates(devstepsDir: string, read: MetadataReader, item: ItemMetadata): ItemMetadata[];
|
|
22
|
+
/** The owner first, then its implements chain up to the top item. */
|
|
23
|
+
export declare function ownerChain(devstepsDir: string, owner: ItemMetadata): ItemMetadata[];
|
|
24
|
+
/**
|
|
25
|
+
* What applies to a group's items: the constraint and out-of-scope lines of the owner chain's top
|
|
26
|
+
* item, capped as in the compass block, and its accepted decisions; undefined when none apply.
|
|
27
|
+
*/
|
|
28
|
+
export declare function groupCompass(devstepsDir: string, chain: readonly ItemMetadata[]): RoundCompass | undefined;
|
|
29
|
+
//# sourceMappingURL=decision-round-owner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-round-owner.d.ts","sourceRoot":"","sources":["../../src/core/decision-round-owner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAKlE,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAgBxE,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;AAEtE,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAYlE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ,CAErD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE7D;AAoBD,yEAAyE;AACzE,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,YAAY,GACjB,YAAY,EAAE,CAYhB;AAED,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,EAAE,CAEnF;AAuBD;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,YAAY,EAAE,GAC7B,YAAY,GAAG,SAAS,CAwB1B"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Where a decision or question belongs in a decision round (EPIC-060), and what applies there.
|
|
6
|
+
* The owner is the most specific epic or story it is linked to: a story, spike or feature before
|
|
7
|
+
* an epic or requirement, the lowest ID within a level, and a linked task, bug or test stands for
|
|
8
|
+
* the nearest of them on its implements chain. The compass of a group is the owner chain's source
|
|
9
|
+
* sections and accepted decisions, the parts of the compass block a card adds to the round.
|
|
10
|
+
*/
|
|
11
|
+
import { parseItemId } from '../utils/index.js';
|
|
12
|
+
import { COMPASS_MAX_CONSTRAINTS, COMPASS_MAX_OUT_OF_SCOPE } from './compass.js';
|
|
13
|
+
import { linkedDecisionsAndQuestions, walkCompassChain } from './compass-chain.js';
|
|
14
|
+
import { isDeviation } from './decision-question.js';
|
|
15
|
+
import { findEpicSection, sectionLines } from './epic-sections.js';
|
|
16
|
+
import { readItem, readItemMetadata } from './item-store.js';
|
|
17
|
+
/** Owner levels: 0 is a story, spike or feature, 1 an epic or requirement. */
|
|
18
|
+
const OWNER_LEVELS = {
|
|
19
|
+
story: 0,
|
|
20
|
+
spike: 0,
|
|
21
|
+
feature: 0,
|
|
22
|
+
epic: 1,
|
|
23
|
+
requirement: 1,
|
|
24
|
+
};
|
|
25
|
+
/** Linked types that stand for the owner on their implements chain. */
|
|
26
|
+
const WALK_UP_TYPES = ['task', 'bug', 'test'];
|
|
27
|
+
/** The accepted decisions a group compass lists at most. */
|
|
28
|
+
export const ROUND_COMPASS_DECISIONS_MAX = 5;
|
|
29
|
+
/** A reader over the item store that remembers each answer for one round build. */
|
|
30
|
+
export function metadataReader(devstepsDir) {
|
|
31
|
+
const cache = new Map();
|
|
32
|
+
return (id) => {
|
|
33
|
+
if (!cache.has(id)) {
|
|
34
|
+
try {
|
|
35
|
+
cache.set(id, readItemMetadata(devstepsDir, id).metadata);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
cache.set(id, null);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return cache.get(id) ?? undefined;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function roundRef(item) {
|
|
45
|
+
return { id: item.id, type: item.type, title: item.title, status: item.status };
|
|
46
|
+
}
|
|
47
|
+
export function ownerLevel(type) {
|
|
48
|
+
return OWNER_LEVELS[type];
|
|
49
|
+
}
|
|
50
|
+
function idNumber(id) {
|
|
51
|
+
return parseItemId(id)?.number ?? Number.MAX_SAFE_INTEGER;
|
|
52
|
+
}
|
|
53
|
+
function compareOwners(a, b) {
|
|
54
|
+
const level = (ownerLevel(a.type) ?? 9) - (ownerLevel(b.type) ?? 9);
|
|
55
|
+
if (level !== 0)
|
|
56
|
+
return level;
|
|
57
|
+
const number = idNumber(a.id) - idNumber(b.id);
|
|
58
|
+
return number !== 0 ? number : a.id.localeCompare(b.id);
|
|
59
|
+
}
|
|
60
|
+
/** The nearest owner on the implements chain of a linked task, bug or test. */
|
|
61
|
+
function nearestOwner(devstepsDir, item) {
|
|
62
|
+
if (!WALK_UP_TYPES.includes(item.type))
|
|
63
|
+
return undefined;
|
|
64
|
+
const chain = walkCompassChain(devstepsDir, item).items.slice(1);
|
|
65
|
+
return chain.find((member) => ownerLevel(member.type) !== undefined);
|
|
66
|
+
}
|
|
67
|
+
/** Every owner an item is linked to, the one its group follows first. */
|
|
68
|
+
export function ownerCandidates(devstepsDir, read, item) {
|
|
69
|
+
const found = new Map();
|
|
70
|
+
for (const ids of Object.values(item.linked_items)) {
|
|
71
|
+
for (const id of ids ?? []) {
|
|
72
|
+
const linked = read(id);
|
|
73
|
+
if (!linked)
|
|
74
|
+
continue;
|
|
75
|
+
const owner = ownerLevel(linked.type) !== undefined ? linked : nearestOwner(devstepsDir, linked);
|
|
76
|
+
if (owner && owner.id !== item.id)
|
|
77
|
+
found.set(owner.id, owner);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return [...found.values()].sort(compareOwners);
|
|
81
|
+
}
|
|
82
|
+
/** The owner first, then its implements chain up to the top item. */
|
|
83
|
+
export function ownerChain(devstepsDir, owner) {
|
|
84
|
+
return walkCompassChain(devstepsDir, owner).items;
|
|
85
|
+
}
|
|
86
|
+
function descriptionOf(devstepsDir, id) {
|
|
87
|
+
try {
|
|
88
|
+
return readItem(devstepsDir, id).description;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return '';
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function acceptedDecisions(devstepsDir, chain) {
|
|
95
|
+
return linkedDecisionsAndQuestions(devstepsDir, chain)
|
|
96
|
+
.map((record) => record.metadata)
|
|
97
|
+
.filter((metadata) => metadata.type === 'decision' && metadata.status === 'done')
|
|
98
|
+
.sort((a, b) => a.updated === b.updated ? idNumber(b.id) - idNumber(a.id) : a.updated < b.updated ? 1 : -1)
|
|
99
|
+
.map((metadata) => ({ ...roundRef(metadata), deviation: isDeviation(metadata) }));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* What applies to a group's items: the constraint and out-of-scope lines of the owner chain's top
|
|
103
|
+
* item, capped as in the compass block, and its accepted decisions; undefined when none apply.
|
|
104
|
+
*/
|
|
105
|
+
export function groupCompass(devstepsDir, chain) {
|
|
106
|
+
const top = chain[chain.length - 1];
|
|
107
|
+
if (!top)
|
|
108
|
+
return undefined;
|
|
109
|
+
const description = descriptionOf(devstepsDir, top.id);
|
|
110
|
+
const lines = (key) => sectionLines(findEpicSection(description, key)?.body ?? '');
|
|
111
|
+
const constraints = lines('constraints');
|
|
112
|
+
const outOfScope = lines('out-of-scope');
|
|
113
|
+
const decisions = acceptedDecisions(devstepsDir, chain);
|
|
114
|
+
if (constraints.length + outOfScope.length + decisions.length === 0)
|
|
115
|
+
return undefined;
|
|
116
|
+
const more = Math.max(0, constraints.length - COMPASS_MAX_CONSTRAINTS) +
|
|
117
|
+
Math.max(0, outOfScope.length - COMPASS_MAX_OUT_OF_SCOPE) +
|
|
118
|
+
Math.max(0, decisions.length - ROUND_COMPASS_DECISIONS_MAX);
|
|
119
|
+
return {
|
|
120
|
+
source: roundRef(top),
|
|
121
|
+
via: chain.slice(1, -1).map((member) => member.id),
|
|
122
|
+
constraints: constraints
|
|
123
|
+
.slice(0, COMPASS_MAX_CONSTRAINTS)
|
|
124
|
+
.map((line) => (line.check ? { text: line.text, check: line.check } : { text: line.text })),
|
|
125
|
+
outOfScope: outOfScope.slice(0, COMPASS_MAX_OUT_OF_SCOPE).map((line) => line.text),
|
|
126
|
+
decisions: decisions.slice(0, ROUND_COMPASS_DECISIONS_MAX),
|
|
127
|
+
more,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=decision-round-owner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-round-owner.js","sourceRoot":"","sources":["../../src/core/decision-round-owner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* The card texts of a decision round (EPIC-060), read from a question or decision body: the
|
|
6
|
+
* prose before the fields, the options with their consequences, the option a recommendation
|
|
7
|
+
* names, the evidence lines, and the decision fields. The field parsing itself is
|
|
8
|
+
* `decision-question.ts`; this module adds what a card shows beside the fields.
|
|
9
|
+
*/
|
|
10
|
+
import type { RoundOption } from './decision-round-types.js';
|
|
11
|
+
/** The longest text a card carries for one field; the item itself holds the rest. */
|
|
12
|
+
export declare const ROUND_TEXT_MAX = 2000;
|
|
13
|
+
/** The evidence lines a question card shows at most. */
|
|
14
|
+
export declare const ROUND_SOURCES_MAX = 8;
|
|
15
|
+
/** The question in prose: the body before its options and fields. */
|
|
16
|
+
export declare function questionText(markdown: string): string | undefined;
|
|
17
|
+
/** The options of a question, each with the consequence it names split off. */
|
|
18
|
+
export declare function questionOptions(markdown: string): RoundOption[];
|
|
19
|
+
/** The option key a recommendation names first (`b)`, `b.`, `b,` or `b ` …), if it is one. */
|
|
20
|
+
export declare function recommendedOption(recommendation: string | undefined, options: readonly RoundOption[]): string | undefined;
|
|
21
|
+
/** The evidence of a question: an Evidence or Sources section, and `Source:` lines. */
|
|
22
|
+
export declare function questionSources(markdown: string): string[];
|
|
23
|
+
export interface QuestionCardText {
|
|
24
|
+
text?: string;
|
|
25
|
+
options: RoundOption[];
|
|
26
|
+
recommendation?: string;
|
|
27
|
+
recommended?: string;
|
|
28
|
+
sources: string[];
|
|
29
|
+
}
|
|
30
|
+
/** Everything a question card shows from the body. */
|
|
31
|
+
export declare function questionCardText(markdown: string): QuestionCardText;
|
|
32
|
+
export interface DecisionCardText {
|
|
33
|
+
text?: string;
|
|
34
|
+
deviates?: string;
|
|
35
|
+
why?: string;
|
|
36
|
+
rejected?: string;
|
|
37
|
+
check?: string;
|
|
38
|
+
sources: string[];
|
|
39
|
+
consequences?: string;
|
|
40
|
+
}
|
|
41
|
+
/** Everything a decision card shows from the body: the decision, Deviates and the fields. */
|
|
42
|
+
export declare function decisionCardText(markdown: string): DecisionCardText;
|
|
43
|
+
//# sourceMappingURL=decision-round-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-round-text.d.ts","sourceRoot":"","sources":["../../src/core/decision-round-text.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,qFAAqF;AACrF,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,wDAAwD;AACxD,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAyDnC,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEjE;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAQ/D;AAED,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAC/B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,SAAS,WAAW,EAAE,GAC9B,MAAM,GAAG,SAAS,CAGpB;AAUD,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAe1D;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAYnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAoBnE"}
|