@schnick371/devsteps-shared 1.1.0-next.4 → 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 +12 -30
- 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/agents.test.d.ts +0 -18
- package/dist/agents.test.d.ts.map +0 -1
- package/dist/agents.test.js +0 -96
- package/dist/agents.test.js.map +0 -1
- 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 -242
- package/dist/schemas/cbp-mandate.d.ts.map +0 -1
- package/dist/schemas/cbp-mandate.js +0 -210
- package/dist/schemas/cbp-mandate.js.map +0 -1
- package/dist/schemas/cbp-mandate.test.d.ts +0 -11
- package/dist/schemas/cbp-mandate.test.d.ts.map +0 -1
- package/dist/schemas/cbp-mandate.test.js +0 -312
- 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,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Which MCP tool groups a workspace exposes, and how that choice is written
|
|
6
|
+
* into a host configuration file.
|
|
7
|
+
*
|
|
8
|
+
* Three places decide this — the MCP server (reading the environment), the CLI
|
|
9
|
+
* (`devsteps setup --tools`) and the VS Code extension (a workspace setting) —
|
|
10
|
+
* and a selection that means different things in different hosts would be worse
|
|
11
|
+
* than no selection at all. The rules therefore live here, once.
|
|
12
|
+
*
|
|
13
|
+
* @see STORY-392
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Environment variable that selects which MCP tool groups the server exposes.
|
|
17
|
+
*
|
|
18
|
+
* Every tool schema sits in the agent's context on every request, so a
|
|
19
|
+
* workspace that never touches the docs or workflow pipeline can drop those
|
|
20
|
+
* schemas by naming only the groups it uses. Unset means the default catalog.
|
|
21
|
+
*/
|
|
22
|
+
export const MCP_TOOL_GROUP_ENV_VAR = 'DEVSTEPS_MCP_TOOLS';
|
|
23
|
+
/**
|
|
24
|
+
* Selectable MCP tool groups, in catalog order.
|
|
25
|
+
*
|
|
26
|
+
* The membership of each group lives in the MCP server's tool catalog; this
|
|
27
|
+
* list exists so the CLI and the extension can validate a selection without
|
|
28
|
+
* depending on the server package. `catalog.test.ts` asserts that both stay in
|
|
29
|
+
* step, so a new group fails there rather than drifting silently.
|
|
30
|
+
*/
|
|
31
|
+
export const MCP_TOOL_GROUP_NAMES = ['core', 'docs', 'workflow', 'coord', 'batch'];
|
|
32
|
+
/**
|
|
33
|
+
* Groups a workspace would get only by naming them, left out of an unset selection and `all`.
|
|
34
|
+
* Batch creation is explicit; existing default catalog profiles remain unchanged.
|
|
35
|
+
*/
|
|
36
|
+
export const MCP_OPT_IN_TOOL_GROUPS = ['batch'];
|
|
37
|
+
/** What an unset selection or `all` exposes: every group that is not opt-in. */
|
|
38
|
+
export const MCP_DEFAULT_TOOL_GROUPS = MCP_TOOL_GROUP_NAMES.filter((name) => !MCP_OPT_IN_TOOL_GROUPS.includes(name));
|
|
39
|
+
/**
|
|
40
|
+
* The groups a parsed selection activates: the default groups for an unset or `all` selection
|
|
41
|
+
* (plus the opt-in groups it names), the named groups otherwise, and the defaults when nothing
|
|
42
|
+
* valid remains, so a typo cannot disarm the server.
|
|
43
|
+
*/
|
|
44
|
+
export function activeToolGroups(selection) {
|
|
45
|
+
if (!selection.all && selection.groups.length > 0)
|
|
46
|
+
return selection.groups;
|
|
47
|
+
const optIn = selection.groups.filter((name) => MCP_OPT_IN_TOOL_GROUPS.includes(name));
|
|
48
|
+
return MCP_TOOL_GROUP_NAMES.filter((name) => MCP_DEFAULT_TOOL_GROUPS.includes(name) || optIn.includes(name));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Parse a `DEVSTEPS_MCP_TOOLS` value into a validated selection.
|
|
52
|
+
*
|
|
53
|
+
* Comma-separated, order- and case-insensitive. Callers decide what to do with
|
|
54
|
+
* an unusable selection: the server falls back to the default catalog so a typo
|
|
55
|
+
* cannot disarm it, while the CLI refuses the write and says what is wrong.
|
|
56
|
+
*/
|
|
57
|
+
export function parseToolGroupSelection(raw) {
|
|
58
|
+
const requested = (raw ?? '')
|
|
59
|
+
.split(',')
|
|
60
|
+
.map((entry) => entry.trim().toLowerCase())
|
|
61
|
+
.filter((entry) => entry.length > 0);
|
|
62
|
+
const all = requested.length === 0 || requested.includes('all');
|
|
63
|
+
const known = new Set(MCP_TOOL_GROUP_NAMES);
|
|
64
|
+
return {
|
|
65
|
+
groups: MCP_TOOL_GROUP_NAMES.filter((name) => requested.includes(name)),
|
|
66
|
+
unknown: requested.filter((entry) => entry !== 'all' && !known.has(entry)),
|
|
67
|
+
all,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Turn a raw setting or flag value into a selection.
|
|
72
|
+
*
|
|
73
|
+
* `undefined` means not configured. A value that survives parsing with no valid
|
|
74
|
+
* group left is treated the same way: acting on a typo would rewrite a host
|
|
75
|
+
* entry for a selection the server would ignore anyway.
|
|
76
|
+
*/
|
|
77
|
+
export function selectToolGroups(raw) {
|
|
78
|
+
if (raw === undefined || raw.trim().length === 0) {
|
|
79
|
+
return { selection: { managed: false }, unknown: [] };
|
|
80
|
+
}
|
|
81
|
+
const parsed = parseToolGroupSelection(raw);
|
|
82
|
+
const { groups, unknown, all } = parsed;
|
|
83
|
+
if (all && !groups.some((name) => MCP_OPT_IN_TOOL_GROUPS.includes(name))) {
|
|
84
|
+
return { selection: { managed: true }, unknown };
|
|
85
|
+
}
|
|
86
|
+
if (all)
|
|
87
|
+
return { selection: { managed: true, groups: activeToolGroups(parsed).join(',') }, unknown };
|
|
88
|
+
if (groups.length === 0)
|
|
89
|
+
return { selection: { managed: false }, unknown };
|
|
90
|
+
return { selection: { managed: true, groups: groups.join(',') }, unknown };
|
|
91
|
+
}
|
|
92
|
+
/** The `env` block a selection contributes, empty when the default catalog is active. */
|
|
93
|
+
export function toolGroupEnv(selection) {
|
|
94
|
+
return selection?.groups ? { env: { [MCP_TOOL_GROUP_ENV_VAR]: selection.groups } } : {};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Merge a selection into the environment an existing host entry already carries.
|
|
98
|
+
*
|
|
99
|
+
* Variables the workspace added itself are kept — a rewrite is triggered by a
|
|
100
|
+
* changed runtime resolution, which says nothing about the rest of the entry.
|
|
101
|
+
* The tool-group key is only replaced when the selection manages it; otherwise
|
|
102
|
+
* a hand-written selection would be discarded without notice.
|
|
103
|
+
*/
|
|
104
|
+
export function mergeToolGroupEnv(existingEnv, selection) {
|
|
105
|
+
const preserved = {};
|
|
106
|
+
if (existingEnv && typeof existingEnv === 'object') {
|
|
107
|
+
for (const [key, value] of Object.entries(existingEnv)) {
|
|
108
|
+
if (typeof value === 'string')
|
|
109
|
+
preserved[key] = value;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (selection.managed)
|
|
113
|
+
delete preserved[MCP_TOOL_GROUP_ENV_VAR];
|
|
114
|
+
const merged = { ...preserved, ...toolGroupEnv(selection).env };
|
|
115
|
+
return Object.keys(merged).length > 0 ? merged : undefined;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=mcp-tool-groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-groups.js","sourceRoot":"","sources":["../../src/utils/mcp-tool-groups.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Locate the `.github` payload an installed DevSteps package ships.
|
|
6
|
+
*
|
|
7
|
+
* An adapter module runs from two layouts: unbundled (`dist/commands/<file>`,
|
|
8
|
+
* `src/handlers/<file>`) sits two levels below the package root, while an
|
|
9
|
+
* esbuild bundle (`dist/index.bundled.mjs`) sits one level below it. A fixed
|
|
10
|
+
* `'..', '..'` lands outside the package in the bundled case, which left `init`
|
|
11
|
+
* without the contract block and the Copilot tree (BUG-124). The VS Code
|
|
12
|
+
* extension ships its payload beside its MCP bundle, at `dist/.github` next to
|
|
13
|
+
* `dist/mcp-server.js`, so the module directory itself is the last candidate
|
|
14
|
+
* (BUG-140).
|
|
15
|
+
*
|
|
16
|
+
* @see STORY-407 BUG-124 TASK-792 BUG-140
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* The packaged `.github` directory for an adapter module located in
|
|
20
|
+
* `moduleDirectory`, or undefined when the installation ships none.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolvePackagedGithubDir(moduleDirectory: string): string | undefined;
|
|
23
|
+
//# sourceMappingURL=packaged-github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packaged-github.d.ts","sourceRoot":"","sources":["../../src/utils/packaged-github.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAcH;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOpF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Locate the `.github` payload an installed DevSteps package ships.
|
|
6
|
+
*
|
|
7
|
+
* An adapter module runs from two layouts: unbundled (`dist/commands/<file>`,
|
|
8
|
+
* `src/handlers/<file>`) sits two levels below the package root, while an
|
|
9
|
+
* esbuild bundle (`dist/index.bundled.mjs`) sits one level below it. A fixed
|
|
10
|
+
* `'..', '..'` lands outside the package in the bundled case, which left `init`
|
|
11
|
+
* without the contract block and the Copilot tree (BUG-124). The VS Code
|
|
12
|
+
* extension ships its payload beside its MCP bundle, at `dist/.github` next to
|
|
13
|
+
* `dist/mcp-server.js`, so the module directory itself is the last candidate
|
|
14
|
+
* (BUG-140).
|
|
15
|
+
*
|
|
16
|
+
* @see STORY-407 BUG-124 TASK-792 BUG-140
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync } from 'node:fs';
|
|
19
|
+
import { join } from 'node:path';
|
|
20
|
+
function isPackagedGithubDir(directory) {
|
|
21
|
+
return (existsSync(join(directory, 'copilot-instructions.md')) &&
|
|
22
|
+
existsSync(join(directory, 'agents')) &&
|
|
23
|
+
existsSync(join(directory, 'instructions')) &&
|
|
24
|
+
existsSync(join(directory, 'prompts')));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The packaged `.github` directory for an adapter module located in
|
|
28
|
+
* `moduleDirectory`, or undefined when the installation ships none.
|
|
29
|
+
*/
|
|
30
|
+
export function resolvePackagedGithubDir(moduleDirectory) {
|
|
31
|
+
const candidates = [
|
|
32
|
+
join(moduleDirectory, '..', '..', '.github'),
|
|
33
|
+
join(moduleDirectory, '..', '.github'),
|
|
34
|
+
join(moduleDirectory, '.github'),
|
|
35
|
+
];
|
|
36
|
+
return candidates.find(isPackagedGithubDir);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=packaged-github.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packaged-github.js","sourceRoot":"","sources":["../../src/utils/packaged-github.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,OAAO,CACL,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;QACtD,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAC3C,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CACvC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,eAAuB;IAC9D,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC;QAC5C,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC;QACtC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC;KACjC,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*/
|
|
5
|
+
/** Render the optional generated setup guide without writing to the filesystem. */
|
|
6
|
+
export declare function renderSetupMd(projectName: string): string;
|
|
7
|
+
//# sourceMappingURL=setup-guide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-guide.d.ts","sourceRoot":"","sources":["../../src/utils/setup-guide.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgFzD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2026 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*/
|
|
5
|
+
/** Render the optional generated setup guide without writing to the filesystem. */
|
|
6
|
+
export function renderSetupMd(projectName) {
|
|
7
|
+
return `# ${projectName} - Setup Guide
|
|
8
|
+
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
- Node.js v18+ (https://nodejs.org)
|
|
12
|
+
- Package manager: pnpm (recommended) or npm
|
|
13
|
+
- Git (optional, for version control)
|
|
14
|
+
|
|
15
|
+
## Quick Start
|
|
16
|
+
|
|
17
|
+
\`\`\`bash
|
|
18
|
+
# 1. Install dependencies
|
|
19
|
+
pnpm install # or: npm install
|
|
20
|
+
|
|
21
|
+
# 2. Verify setup
|
|
22
|
+
devsteps doctor
|
|
23
|
+
|
|
24
|
+
# 3. Check project status
|
|
25
|
+
devsteps status
|
|
26
|
+
|
|
27
|
+
# 4. Add your first item
|
|
28
|
+
devsteps add req "Your first requirement"
|
|
29
|
+
\`\`\`
|
|
30
|
+
|
|
31
|
+
## MCP Setup (AI Integration)
|
|
32
|
+
|
|
33
|
+
\`\`\`bash
|
|
34
|
+
# For VS Code (auto-detect)
|
|
35
|
+
devsteps setup
|
|
36
|
+
|
|
37
|
+
# Explicit IDE selection
|
|
38
|
+
devsteps setup --tool vscode
|
|
39
|
+
\`\`\`
|
|
40
|
+
|
|
41
|
+
After setup: restart your IDE, then open Copilot/AI Chat.
|
|
42
|
+
|
|
43
|
+
## Project Structure
|
|
44
|
+
|
|
45
|
+
\`\`\`
|
|
46
|
+
${projectName}/
|
|
47
|
+
├── .devsteps/
|
|
48
|
+
│ ├── config.json # Project configuration
|
|
49
|
+
│ ├── index/ # Refs-style distributed index
|
|
50
|
+
│ ├── items/ # Item files (source of truth)
|
|
51
|
+
│ └── archive/ # Archived items
|
|
52
|
+
└── .vscode/
|
|
53
|
+
├── tasks.json # VS Code tasks
|
|
54
|
+
└── mcp.json # MCP configuration
|
|
55
|
+
\`\`\`
|
|
56
|
+
|
|
57
|
+
## Common Commands
|
|
58
|
+
|
|
59
|
+
\`\`\`bash
|
|
60
|
+
# Add items
|
|
61
|
+
devsteps add story "Implement feature X"
|
|
62
|
+
devsteps add bug "Error on page load"
|
|
63
|
+
|
|
64
|
+
# List & filter
|
|
65
|
+
devsteps list --status draft
|
|
66
|
+
devsteps list --type story --priority urgent-important
|
|
67
|
+
|
|
68
|
+
# Update
|
|
69
|
+
devsteps update STORY-001 --status in-progress
|
|
70
|
+
|
|
71
|
+
# Link items
|
|
72
|
+
devsteps link TASK-001 implements STORY-005
|
|
73
|
+
|
|
74
|
+
# Maintenance
|
|
75
|
+
devsteps archive STORY-001
|
|
76
|
+
devsteps purge --status done
|
|
77
|
+
\`\`\`
|
|
78
|
+
|
|
79
|
+
## Troubleshooting
|
|
80
|
+
|
|
81
|
+
- **"Project not initialized"** — run \`devsteps init\` in your project directory
|
|
82
|
+
- **"Node.js version too old"** — upgrade to v18+ from nodejs.org
|
|
83
|
+
- **"MCP server not found"** — run \`devsteps setup\`, then restart your IDE
|
|
84
|
+
- **Dependencies missing** — run \`pnpm install\`
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=setup-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-guide.js","sourceRoot":"","sources":["../../src/utils/setup-guide.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCvB,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCZ,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2025 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Snapshot byte evidence and recognition; foreign backup trees are never owned.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SNAPSHOT_FORMAT = "devsteps-agent-files-snapshot";
|
|
8
|
+
export interface SnapshotEntry {
|
|
9
|
+
source: string;
|
|
10
|
+
file: string;
|
|
11
|
+
sha256: string;
|
|
12
|
+
size: number;
|
|
13
|
+
}
|
|
14
|
+
export interface SnapshotManifest {
|
|
15
|
+
format: typeof SNAPSHOT_FORMAT;
|
|
16
|
+
schemaVersion: 1;
|
|
17
|
+
status: 'complete';
|
|
18
|
+
timestamp: string;
|
|
19
|
+
completedAt: string;
|
|
20
|
+
packageVersion: string;
|
|
21
|
+
workspaceRoot: string;
|
|
22
|
+
githubDir?: string;
|
|
23
|
+
files: SnapshotEntry[];
|
|
24
|
+
}
|
|
25
|
+
export declare function byteHash(bytes: Buffer): string;
|
|
26
|
+
/** A descriptor keeps the read on the checked inode and refuses leaf links. */
|
|
27
|
+
export declare function readSnapshotBytes(path: string): Buffer;
|
|
28
|
+
export interface SafeSnapshotTree {
|
|
29
|
+
files: string[];
|
|
30
|
+
directories: string[];
|
|
31
|
+
}
|
|
32
|
+
/** Inventory before deletion; a single unexpected link makes the whole tree ineligible. */
|
|
33
|
+
export declare function inspectSnapshotTree(root: string): SafeSnapshotTree;
|
|
34
|
+
/** Recognition is intentionally stricter than checking a directory name or marker. */
|
|
35
|
+
export declare function recognizedSnapshot(root: string, workspaceRoot: string): SafeSnapshotTree;
|
|
36
|
+
//# sourceMappingURL=snapshot-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-manifest.d.ts","sourceRoot":"","sources":["../../src/utils/snapshot-manifest.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,eAAO,MAAM,eAAe,kCAAkC,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,aAAa,EAAE,CAAC,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA6BtD;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAgBlE;AAmBD,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,gBAAgB,CAkDxF"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2025 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Snapshot byte evidence and recognition; foreign backup trees are never owned.
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
8
|
+
import { closeSync, constants, fstatSync, openSync, readdirSync, readFileSync } from 'node:fs';
|
|
9
|
+
import { basename, join, relative } from 'node:path';
|
|
10
|
+
import { assertSafeDirectory, assertSafeFile, assertUniqueKeys, pathEntry, } from './snapshot-paths.js';
|
|
11
|
+
export const SNAPSHOT_FORMAT = 'devsteps-agent-files-snapshot';
|
|
12
|
+
export function byteHash(bytes) {
|
|
13
|
+
return createHash('sha256').update(bytes).digest('hex');
|
|
14
|
+
}
|
|
15
|
+
/** A descriptor keeps the read on the checked inode and refuses leaf links. */
|
|
16
|
+
export function readSnapshotBytes(path) {
|
|
17
|
+
const before = assertSafeFile(path);
|
|
18
|
+
const descriptor = openSync(path, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
|
|
19
|
+
try {
|
|
20
|
+
const opened = fstatSync(descriptor);
|
|
21
|
+
if (!before ||
|
|
22
|
+
!opened.isFile() ||
|
|
23
|
+
opened.nlink !== 1 ||
|
|
24
|
+
before.dev !== opened.dev ||
|
|
25
|
+
before.ino !== opened.ino) {
|
|
26
|
+
throw new Error(`Snapshot source changed while opening: ${path}`);
|
|
27
|
+
}
|
|
28
|
+
const bytes = readFileSync(descriptor);
|
|
29
|
+
const after = fstatSync(descriptor);
|
|
30
|
+
if (after.size !== opened.size ||
|
|
31
|
+
after.mtimeMs !== opened.mtimeMs ||
|
|
32
|
+
after.ctimeMs !== opened.ctimeMs ||
|
|
33
|
+
after.nlink !== 1 ||
|
|
34
|
+
bytes.length !== after.size) {
|
|
35
|
+
throw new Error(`Snapshot source changed while reading: ${path}`);
|
|
36
|
+
}
|
|
37
|
+
return bytes;
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
closeSync(descriptor);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** Inventory before deletion; a single unexpected link makes the whole tree ineligible. */
|
|
44
|
+
export function inspectSnapshotTree(root) {
|
|
45
|
+
const tree = { files: [], directories: [root] };
|
|
46
|
+
for (let index = 0; index < tree.directories.length; index++) {
|
|
47
|
+
const directory = tree.directories[index];
|
|
48
|
+
assertSafeDirectory(directory);
|
|
49
|
+
for (const name of readdirSync(directory)) {
|
|
50
|
+
const path = join(directory, name);
|
|
51
|
+
const entry = pathEntry(path);
|
|
52
|
+
if (entry?.isDirectory() && !entry.isSymbolicLink())
|
|
53
|
+
tree.directories.push(path);
|
|
54
|
+
else {
|
|
55
|
+
assertSafeFile(path);
|
|
56
|
+
tree.files.push(path);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return tree;
|
|
61
|
+
}
|
|
62
|
+
function isRecord(value) {
|
|
63
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
64
|
+
}
|
|
65
|
+
function isSnapshotEntry(value) {
|
|
66
|
+
return (isRecord(value) &&
|
|
67
|
+
typeof value.source === 'string' &&
|
|
68
|
+
typeof value.file === 'string' &&
|
|
69
|
+
typeof value.sha256 === 'string' &&
|
|
70
|
+
/^[a-f0-9]{64}$/.test(value.sha256) &&
|
|
71
|
+
typeof value.size === 'number' &&
|
|
72
|
+
Number.isSafeInteger(value.size) &&
|
|
73
|
+
value.size >= 0);
|
|
74
|
+
}
|
|
75
|
+
/** Recognition is intentionally stricter than checking a directory name or marker. */
|
|
76
|
+
export function recognizedSnapshot(root, workspaceRoot) {
|
|
77
|
+
const value = JSON.parse(readSnapshotBytes(join(root, 'manifest.json')).toString('utf8'));
|
|
78
|
+
if (!isRecord(value) ||
|
|
79
|
+
value.format !== SNAPSHOT_FORMAT ||
|
|
80
|
+
value.schemaVersion !== 1 ||
|
|
81
|
+
value.status !== 'complete' ||
|
|
82
|
+
value.workspaceRoot !== workspaceRoot ||
|
|
83
|
+
typeof value.timestamp !== 'string' ||
|
|
84
|
+
!/^\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}$/.test(value.timestamp) ||
|
|
85
|
+
!basename(root).startsWith(`github-${value.timestamp}-`) ||
|
|
86
|
+
typeof value.completedAt !== 'string' ||
|
|
87
|
+
!Number.isFinite(Date.parse(value.completedAt)) ||
|
|
88
|
+
!Array.isArray(value.files) ||
|
|
89
|
+
value.files.length === 0 ||
|
|
90
|
+
!value.files.every(isSnapshotEntry)) {
|
|
91
|
+
throw new Error('Unrecognized or incomplete snapshot manifest');
|
|
92
|
+
}
|
|
93
|
+
const entries = value.files;
|
|
94
|
+
assertUniqueKeys(entries.map((entry) => entry.source));
|
|
95
|
+
assertUniqueKeys(entries.map((entry) => entry.file), true);
|
|
96
|
+
const tree = inspectSnapshotTree(root);
|
|
97
|
+
const expected = new Set(['manifest.json', ...entries.map((entry) => entry.file)]);
|
|
98
|
+
const expectedDirectories = new Set(['']);
|
|
99
|
+
for (const entry of entries) {
|
|
100
|
+
const parts = entry.file.split('/');
|
|
101
|
+
for (let length = 1; length < parts.length; length++) {
|
|
102
|
+
expectedDirectories.add(parts.slice(0, length).join('/'));
|
|
103
|
+
}
|
|
104
|
+
const bytes = readSnapshotBytes(join(root, entry.file));
|
|
105
|
+
if (bytes.length !== entry.size || byteHash(bytes) !== entry.sha256) {
|
|
106
|
+
throw new Error(`Snapshot byte evidence does not match: ${entry.file}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (tree.files.length !== expected.size ||
|
|
110
|
+
tree.files.some((path) => !expected.has(relative(root, path).split('\\').join('/'))) ||
|
|
111
|
+
tree.directories.some((path) => !expectedDirectories.has(relative(root, path).split('\\').join('/')))) {
|
|
112
|
+
throw new Error('Snapshot contains foreign files or directories');
|
|
113
|
+
}
|
|
114
|
+
return tree;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=snapshot-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-manifest.js","sourceRoot":"","sources":["../../src/utils/snapshot-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2025 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Conservative path and link checks for pre-write snapshots and update targets.
|
|
6
|
+
*/
|
|
7
|
+
import { type Stats } from 'node:fs';
|
|
8
|
+
/** Snapshot keys use one portable spelling on every supported host. */
|
|
9
|
+
export declare function validateSnapshotKey(key: string): void;
|
|
10
|
+
export declare function pathEntry(path: string): Stats | undefined;
|
|
11
|
+
/** Walk every existing ancestor rather than merely resolving links into the workspace. */
|
|
12
|
+
export declare function assertSafeDirectory(path: string, allowMissing?: boolean): void;
|
|
13
|
+
export declare function workspacePath(root: string, key: string): string;
|
|
14
|
+
/** Reject duplicate, case-alias and file/directory prefix mappings. */
|
|
15
|
+
export declare function assertUniqueKeys(keys: readonly string[], reserveManifest?: boolean): void;
|
|
16
|
+
export declare function assertSafeFile(path: string, allowMissing?: boolean): Stats | undefined;
|
|
17
|
+
/** Preflight all overwrite/delete/add targets before any updater mutation. */
|
|
18
|
+
export declare function validateWorkspaceTargets(root: string, keys: readonly string[]): void;
|
|
19
|
+
/** Backup roots may be absent but must remain strictly inside the workspace. */
|
|
20
|
+
export declare function validateBackupsRoot(root: string, devstepsDir: string): string;
|
|
21
|
+
//# sourceMappingURL=snapshot-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-paths.d.ts","sourceRoot":"","sources":["../../src/utils/snapshot-paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAa,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAIhD,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAqBrD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAOzD;AAED,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,IAAI,CAY5E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,eAAe,UAAQ,GAAG,IAAI,CAmBvF;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,KAAK,GAAG,SAAS,CAQpF;AAED,8EAA8E;AAC9E,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAIpF;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ7E"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2025 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Conservative path and link checks for pre-write snapshots and update targets.
|
|
6
|
+
*/
|
|
7
|
+
import { lstatSync } from 'node:fs';
|
|
8
|
+
import { dirname, isAbsolute, join, parse, relative, resolve } from 'node:path';
|
|
9
|
+
import { validateWorkspacePath } from '../core/path-guard.js';
|
|
10
|
+
/** Snapshot keys use one portable spelling on every supported host. */
|
|
11
|
+
export function validateSnapshotKey(key) {
|
|
12
|
+
if (!key ||
|
|
13
|
+
key.includes('\\') ||
|
|
14
|
+
/[<>:"|?*]/.test(key) ||
|
|
15
|
+
[...key].some((character) => character.charCodeAt(0) < 32) ||
|
|
16
|
+
isAbsolute(key)) {
|
|
17
|
+
throw new Error(`Unsafe snapshot path: ${key}`);
|
|
18
|
+
}
|
|
19
|
+
for (const part of key.split('/')) {
|
|
20
|
+
if (!part ||
|
|
21
|
+
part === '.' ||
|
|
22
|
+
part === '..' ||
|
|
23
|
+
/[. ]$/.test(part) ||
|
|
24
|
+
/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(part)) {
|
|
25
|
+
throw new Error(`Ambiguous snapshot path: ${key}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function pathEntry(path) {
|
|
30
|
+
try {
|
|
31
|
+
return lstatSync(path);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
if (error.code === 'ENOENT')
|
|
35
|
+
return undefined;
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/** Walk every existing ancestor rather than merely resolving links into the workspace. */
|
|
40
|
+
export function assertSafeDirectory(path, allowMissing = false) {
|
|
41
|
+
const absolute = resolve(path);
|
|
42
|
+
const root = parse(absolute).root;
|
|
43
|
+
let current = root;
|
|
44
|
+
for (const segment of relative(root, absolute).split(/[\\/]/).filter(Boolean)) {
|
|
45
|
+
current = join(current, segment);
|
|
46
|
+
const entry = pathEntry(current);
|
|
47
|
+
if (!entry && allowMissing)
|
|
48
|
+
continue;
|
|
49
|
+
if (!entry || entry.isSymbolicLink() || !entry.isDirectory()) {
|
|
50
|
+
throw new Error(`Unsafe snapshot directory: ${current}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function workspacePath(root, key) {
|
|
55
|
+
validateSnapshotKey(key);
|
|
56
|
+
const target = validateWorkspacePath(key, root);
|
|
57
|
+
if (!target || target === resolve(root))
|
|
58
|
+
throw new Error(`Path escapes workspace: ${key}`);
|
|
59
|
+
return target;
|
|
60
|
+
}
|
|
61
|
+
/** Reject duplicate, case-alias and file/directory prefix mappings. */
|
|
62
|
+
export function assertUniqueKeys(keys, reserveManifest = false) {
|
|
63
|
+
const claimed = new Set();
|
|
64
|
+
const sorted = keys
|
|
65
|
+
.map((key) => {
|
|
66
|
+
validateSnapshotKey(key);
|
|
67
|
+
return key.normalize('NFC').toLowerCase();
|
|
68
|
+
})
|
|
69
|
+
.sort();
|
|
70
|
+
if (reserveManifest)
|
|
71
|
+
sorted.push('manifest.json');
|
|
72
|
+
for (const key of sorted.sort()) {
|
|
73
|
+
if (claimed.has(key))
|
|
74
|
+
throw new Error(`Snapshot path collision: ${key}`);
|
|
75
|
+
const parts = key.split('/');
|
|
76
|
+
for (let index = 1; index < parts.length; index++) {
|
|
77
|
+
if (claimed.has(parts.slice(0, index).join('/'))) {
|
|
78
|
+
throw new Error(`Snapshot file/directory collision: ${key}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
claimed.add(key);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export function assertSafeFile(path, allowMissing = false) {
|
|
85
|
+
assertSafeDirectory(dirname(path), allowMissing);
|
|
86
|
+
const entry = pathEntry(path);
|
|
87
|
+
if (!entry && allowMissing)
|
|
88
|
+
return undefined;
|
|
89
|
+
if (!entry || entry.isSymbolicLink() || !entry.isFile() || entry.nlink !== 1) {
|
|
90
|
+
throw new Error(`Unsafe snapshot file (links and non-files are refused): ${path}`);
|
|
91
|
+
}
|
|
92
|
+
return entry;
|
|
93
|
+
}
|
|
94
|
+
/** Preflight all overwrite/delete/add targets before any updater mutation. */
|
|
95
|
+
export function validateWorkspaceTargets(root, keys) {
|
|
96
|
+
assertSafeDirectory(root);
|
|
97
|
+
assertUniqueKeys(keys);
|
|
98
|
+
for (const key of keys)
|
|
99
|
+
assertSafeFile(workspacePath(root, key), true);
|
|
100
|
+
}
|
|
101
|
+
/** Backup roots may be absent but must remain strictly inside the workspace. */
|
|
102
|
+
export function validateBackupsRoot(root, devstepsDir) {
|
|
103
|
+
assertSafeDirectory(root);
|
|
104
|
+
const relativeDir = relative(resolve(root), resolve(devstepsDir)).split('\\').join('/');
|
|
105
|
+
const directory = workspacePath(root, relativeDir);
|
|
106
|
+
assertSafeDirectory(directory, true);
|
|
107
|
+
const backupsRoot = join(directory, 'backups');
|
|
108
|
+
assertSafeDirectory(backupsRoot, true);
|
|
109
|
+
return backupsRoot;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=snapshot-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-paths.js","sourceRoot":"","sources":["../../src/utils/snapshot-paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright © 2025 Thomas Hertel (the@devsteps.dev)
|
|
3
|
+
* Licensed under the Apache License, Version 2.0
|
|
4
|
+
*
|
|
5
|
+
* Retain only recognized complete snapshots, preserving unsafe and foreign entries.
|
|
6
|
+
*/
|
|
7
|
+
import { type Stats } from 'node:fs';
|
|
8
|
+
export declare const BACKUP_DIR_PREFIX = "github-";
|
|
9
|
+
export declare function cleanIncompleteSnapshot(directory: string, owner?: Stats): void;
|
|
10
|
+
/** A retention problem does not invalidate the completed pre-write evidence. */
|
|
11
|
+
export declare function pruneSnapshots(backupsRoot: string, fresh: string, workspaceRoot: string, maxBackups: number): string[];
|
|
12
|
+
//# sourceMappingURL=snapshot-retention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-retention.d.ts","sourceRoot":"","sources":["../../src/utils/snapshot-retention.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA0B,KAAK,KAAK,EAAc,MAAM,SAAS,CAAC;AASzE,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAe3C,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAY9E;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,GACjB,MAAM,EAAE,CA8BV"}
|