open-wiki-spec 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +294 -0
- package/bin/open-wiki-spec.js +2 -0
- package/dist/cli/commands/apply.d.ts +3 -0
- package/dist/cli/commands/apply.d.ts.map +1 -0
- package/dist/cli/commands/apply.js +60 -0
- package/dist/cli/commands/apply.js.map +1 -0
- package/dist/cli/commands/archive.d.ts +20 -0
- package/dist/cli/commands/archive.d.ts.map +1 -0
- package/dist/cli/commands/archive.js +87 -0
- package/dist/cli/commands/archive.js.map +1 -0
- package/dist/cli/commands/continue.d.ts +6 -0
- package/dist/cli/commands/continue.d.ts.map +1 -0
- package/dist/cli/commands/continue.js +35 -0
- package/dist/cli/commands/continue.js.map +1 -0
- package/dist/cli/commands/formatters.d.ts +9 -0
- package/dist/cli/commands/formatters.d.ts.map +1 -0
- package/dist/cli/commands/formatters.js +55 -0
- package/dist/cli/commands/formatters.js.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +36 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +28 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +85 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +6 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +103 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/propose.d.ts +3 -0
- package/dist/cli/commands/propose.d.ts.map +1 -0
- package/dist/cli/commands/propose.js +64 -0
- package/dist/cli/commands/propose.js.map +1 -0
- package/dist/cli/commands/query.d.ts +3 -0
- package/dist/cli/commands/query.d.ts.map +1 -0
- package/dist/cli/commands/query.js +62 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/status.d.ts +30 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +144 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +3 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +38 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +40 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/init/init-engine.d.ts +6 -0
- package/dist/cli/init/init-engine.d.ts.map +1 -0
- package/dist/cli/init/init-engine.js +107 -0
- package/dist/cli/init/init-engine.js.map +1 -0
- package/dist/cli/init/meta-files.d.ts +9 -0
- package/dist/cli/init/meta-files.d.ts.map +1 -0
- package/dist/cli/init/meta-files.js +156 -0
- package/dist/cli/init/meta-files.js.map +1 -0
- package/dist/cli/init/skill-generator.d.ts +11 -0
- package/dist/cli/init/skill-generator.d.ts.map +1 -0
- package/dist/cli/init/skill-generator.js +753 -0
- package/dist/cli/init/skill-generator.js.map +1 -0
- package/dist/cli/init/types.d.ts +27 -0
- package/dist/cli/init/types.d.ts.map +1 -0
- package/dist/cli/init/types.js +5 -0
- package/dist/cli/init/types.js.map +1 -0
- package/dist/cli/vault-discovery.d.ts +9 -0
- package/dist/cli/vault-discovery.d.ts.map +1 -0
- package/dist/cli/vault-discovery.js +31 -0
- package/dist/cli/vault-discovery.js.map +1 -0
- package/dist/core/config/index.d.ts +2 -0
- package/dist/core/config/index.d.ts.map +1 -0
- package/dist/core/config/index.js +3 -0
- package/dist/core/config/index.js.map +1 -0
- package/dist/core/index/build.d.ts +10 -0
- package/dist/core/index/build.d.ts.map +1 -0
- package/dist/core/index/build.js +190 -0
- package/dist/core/index/build.js.map +1 -0
- package/dist/core/index/index.d.ts +7 -0
- package/dist/core/index/index.d.ts.map +1 -0
- package/dist/core/index/index.js +7 -0
- package/dist/core/index/index.js.map +1 -0
- package/dist/core/index/resolve.d.ts +41 -0
- package/dist/core/index/resolve.d.ts.map +1 -0
- package/dist/core/index/resolve.js +63 -0
- package/dist/core/index/resolve.js.map +1 -0
- package/dist/core/index/reverse.d.ts +7 -0
- package/dist/core/index/reverse.d.ts.map +1 -0
- package/dist/core/index/reverse.js +24 -0
- package/dist/core/index/reverse.js.map +1 -0
- package/dist/core/index/scan.d.ts +16 -0
- package/dist/core/index/scan.d.ts.map +1 -0
- package/dist/core/index/scan.js +19 -0
- package/dist/core/index/scan.js.map +1 -0
- package/dist/core/index/schema-version.d.ts +5 -0
- package/dist/core/index/schema-version.d.ts.map +1 -0
- package/dist/core/index/schema-version.js +19 -0
- package/dist/core/index/schema-version.js.map +1 -0
- package/dist/core/index/validate.d.ts +14 -0
- package/dist/core/index/validate.d.ts.map +1 -0
- package/dist/core/index/validate.js +77 -0
- package/dist/core/index/validate.js.map +1 -0
- package/dist/core/migrate/change-converter.d.ts +18 -0
- package/dist/core/migrate/change-converter.d.ts.map +1 -0
- package/dist/core/migrate/change-converter.js +475 -0
- package/dist/core/migrate/change-converter.js.map +1 -0
- package/dist/core/migrate/index.d.ts +8 -0
- package/dist/core/migrate/index.d.ts.map +1 -0
- package/dist/core/migrate/index.js +7 -0
- package/dist/core/migrate/index.js.map +1 -0
- package/dist/core/migrate/migrate.d.ts +15 -0
- package/dist/core/migrate/migrate.d.ts.map +1 -0
- package/dist/core/migrate/migrate.js +149 -0
- package/dist/core/migrate/migrate.js.map +1 -0
- package/dist/core/migrate/scanner.d.ts +10 -0
- package/dist/core/migrate/scanner.d.ts.map +1 -0
- package/dist/core/migrate/scanner.js +188 -0
- package/dist/core/migrate/scanner.js.map +1 -0
- package/dist/core/migrate/source-converter.d.ts +6 -0
- package/dist/core/migrate/source-converter.d.ts.map +1 -0
- package/dist/core/migrate/source-converter.js +63 -0
- package/dist/core/migrate/source-converter.js.map +1 -0
- package/dist/core/migrate/spec-converter.d.ts +16 -0
- package/dist/core/migrate/spec-converter.d.ts.map +1 -0
- package/dist/core/migrate/spec-converter.js +157 -0
- package/dist/core/migrate/spec-converter.js.map +1 -0
- package/dist/core/migrate/system-inferrer.d.ts +23 -0
- package/dist/core/migrate/system-inferrer.d.ts.map +1 -0
- package/dist/core/migrate/system-inferrer.js +118 -0
- package/dist/core/migrate/system-inferrer.js.map +1 -0
- package/dist/core/migrate/types.d.ts +125 -0
- package/dist/core/migrate/types.d.ts.map +1 -0
- package/dist/core/migrate/types.js +5 -0
- package/dist/core/migrate/types.js.map +1 -0
- package/dist/core/parser/delta-summary-parser.d.ts +10 -0
- package/dist/core/parser/delta-summary-parser.d.ts.map +1 -0
- package/dist/core/parser/delta-summary-parser.js +101 -0
- package/dist/core/parser/delta-summary-parser.js.map +1 -0
- package/dist/core/parser/frontmatter-parser.d.ts +21 -0
- package/dist/core/parser/frontmatter-parser.d.ts.map +1 -0
- package/dist/core/parser/frontmatter-parser.js +87 -0
- package/dist/core/parser/frontmatter-parser.js.map +1 -0
- package/dist/core/parser/index.d.ts +9 -0
- package/dist/core/parser/index.d.ts.map +1 -0
- package/dist/core/parser/index.js +8 -0
- package/dist/core/parser/index.js.map +1 -0
- package/dist/core/parser/note-parser.d.ts +9 -0
- package/dist/core/parser/note-parser.d.ts.map +1 -0
- package/dist/core/parser/note-parser.js +106 -0
- package/dist/core/parser/note-parser.js.map +1 -0
- package/dist/core/parser/requirement-parser.d.ts +13 -0
- package/dist/core/parser/requirement-parser.d.ts.map +1 -0
- package/dist/core/parser/requirement-parser.js +127 -0
- package/dist/core/parser/requirement-parser.js.map +1 -0
- package/dist/core/parser/section-parser.d.ts +15 -0
- package/dist/core/parser/section-parser.d.ts.map +1 -0
- package/dist/core/parser/section-parser.js +90 -0
- package/dist/core/parser/section-parser.js.map +1 -0
- package/dist/core/parser/task-parser.d.ts +9 -0
- package/dist/core/parser/task-parser.d.ts.map +1 -0
- package/dist/core/parser/task-parser.js +35 -0
- package/dist/core/parser/task-parser.js.map +1 -0
- package/dist/core/parser/types.d.ts +94 -0
- package/dist/core/parser/types.d.ts.map +1 -0
- package/dist/core/parser/types.js +2 -0
- package/dist/core/parser/types.js.map +1 -0
- package/dist/core/parser/wikilink-parser.d.ts +19 -0
- package/dist/core/parser/wikilink-parser.d.ts.map +1 -0
- package/dist/core/parser/wikilink-parser.js +74 -0
- package/dist/core/parser/wikilink-parser.js.map +1 -0
- package/dist/core/retrieval/classify.d.ts +11 -0
- package/dist/core/retrieval/classify.d.ts.map +1 -0
- package/dist/core/retrieval/classify.js +92 -0
- package/dist/core/retrieval/classify.js.map +1 -0
- package/dist/core/retrieval/constants.d.ts +49 -0
- package/dist/core/retrieval/constants.d.ts.map +1 -0
- package/dist/core/retrieval/constants.js +29 -0
- package/dist/core/retrieval/constants.js.map +1 -0
- package/dist/core/retrieval/graph-expand.d.ts +7 -0
- package/dist/core/retrieval/graph-expand.d.ts.map +1 -0
- package/dist/core/retrieval/graph-expand.js +20 -0
- package/dist/core/retrieval/graph-expand.js.map +1 -0
- package/dist/core/retrieval/helpers.d.ts +15 -0
- package/dist/core/retrieval/helpers.d.ts.map +1 -0
- package/dist/core/retrieval/helpers.js +36 -0
- package/dist/core/retrieval/helpers.js.map +1 -0
- package/dist/core/retrieval/index.d.ts +11 -0
- package/dist/core/retrieval/index.d.ts.map +1 -0
- package/dist/core/retrieval/index.js +9 -0
- package/dist/core/retrieval/index.js.map +1 -0
- package/dist/core/retrieval/lexical.d.ts +8 -0
- package/dist/core/retrieval/lexical.d.ts.map +1 -0
- package/dist/core/retrieval/lexical.js +107 -0
- package/dist/core/retrieval/lexical.js.map +1 -0
- package/dist/core/retrieval/retrieve.d.ts +16 -0
- package/dist/core/retrieval/retrieve.d.ts.map +1 -0
- package/dist/core/retrieval/retrieve.js +58 -0
- package/dist/core/retrieval/retrieve.js.map +1 -0
- package/dist/core/retrieval/scoring.d.ts +14 -0
- package/dist/core/retrieval/scoring.d.ts.map +1 -0
- package/dist/core/retrieval/scoring.js +169 -0
- package/dist/core/retrieval/scoring.js.map +1 -0
- package/dist/core/retrieval/warnings.d.ts +16 -0
- package/dist/core/retrieval/warnings.d.ts.map +1 -0
- package/dist/core/retrieval/warnings.js +73 -0
- package/dist/core/retrieval/warnings.js.map +1 -0
- package/dist/core/schema/base.schema.d.ts +31 -0
- package/dist/core/schema/base.schema.d.ts.map +1 -0
- package/dist/core/schema/base.schema.js +32 -0
- package/dist/core/schema/base.schema.js.map +1 -0
- package/dist/core/schema/change.schema.d.ts +96 -0
- package/dist/core/schema/change.schema.d.ts.map +1 -0
- package/dist/core/schema/change.schema.js +64 -0
- package/dist/core/schema/change.schema.js.map +1 -0
- package/dist/core/schema/decision.schema.d.ts +33 -0
- package/dist/core/schema/decision.schema.d.ts.map +1 -0
- package/dist/core/schema/decision.schema.js +19 -0
- package/dist/core/schema/decision.schema.js.map +1 -0
- package/dist/core/schema/delta-summary.d.ts +57 -0
- package/dist/core/schema/delta-summary.d.ts.map +1 -0
- package/dist/core/schema/delta-summary.js +38 -0
- package/dist/core/schema/delta-summary.js.map +1 -0
- package/dist/core/schema/feature.schema.d.ts +40 -0
- package/dist/core/schema/feature.schema.d.ts.map +1 -0
- package/dist/core/schema/feature.schema.js +25 -0
- package/dist/core/schema/feature.schema.js.map +1 -0
- package/dist/core/schema/frontmatter.d.ts +207 -0
- package/dist/core/schema/frontmatter.d.ts.map +1 -0
- package/dist/core/schema/frontmatter.js +23 -0
- package/dist/core/schema/frontmatter.js.map +1 -0
- package/dist/core/schema/index.d.ts +235 -0
- package/dist/core/schema/index.d.ts.map +1 -0
- package/dist/core/schema/index.js +52 -0
- package/dist/core/schema/index.js.map +1 -0
- package/dist/core/schema/query.schema.d.ts +39 -0
- package/dist/core/schema/query.schema.d.ts.map +1 -0
- package/dist/core/schema/query.schema.js +20 -0
- package/dist/core/schema/query.schema.js.map +1 -0
- package/dist/core/schema/requirement.d.ts +69 -0
- package/dist/core/schema/requirement.d.ts.map +1 -0
- package/dist/core/schema/requirement.js +35 -0
- package/dist/core/schema/requirement.js.map +1 -0
- package/dist/core/schema/source.schema.d.ts +33 -0
- package/dist/core/schema/source.schema.d.ts.map +1 -0
- package/dist/core/schema/source.schema.js +24 -0
- package/dist/core/schema/source.schema.js.map +1 -0
- package/dist/core/schema/system.schema.d.ts +27 -0
- package/dist/core/schema/system.schema.d.ts.map +1 -0
- package/dist/core/schema/system.schema.js +17 -0
- package/dist/core/schema/system.schema.js.map +1 -0
- package/dist/core/schema/templates.d.ts +14 -0
- package/dist/core/schema/templates.d.ts.map +1 -0
- package/dist/core/schema/templates.js +220 -0
- package/dist/core/schema/templates.js.map +1 -0
- package/dist/core/schema/validation-constants.d.ts +5 -0
- package/dist/core/schema/validation-constants.d.ts.map +1 -0
- package/dist/core/schema/validation-constants.js +5 -0
- package/dist/core/schema/validation-constants.js.map +1 -0
- package/dist/core/sequencing/analyze.d.ts +13 -0
- package/dist/core/sequencing/analyze.d.ts.map +1 -0
- package/dist/core/sequencing/analyze.js +107 -0
- package/dist/core/sequencing/analyze.js.map +1 -0
- package/dist/core/sequencing/index.d.ts +8 -0
- package/dist/core/sequencing/index.d.ts.map +1 -0
- package/dist/core/sequencing/index.js +8 -0
- package/dist/core/sequencing/index.js.map +1 -0
- package/dist/core/sequencing/ordering.d.ts +11 -0
- package/dist/core/sequencing/ordering.d.ts.map +1 -0
- package/dist/core/sequencing/ordering.js +148 -0
- package/dist/core/sequencing/ordering.js.map +1 -0
- package/dist/core/sequencing/out-of-order-detector.d.ts +9 -0
- package/dist/core/sequencing/out-of-order-detector.d.ts.map +1 -0
- package/dist/core/sequencing/out-of-order-detector.js +42 -0
- package/dist/core/sequencing/out-of-order-detector.js.map +1 -0
- package/dist/core/sequencing/priority-queue.d.ts +18 -0
- package/dist/core/sequencing/priority-queue.d.ts.map +1 -0
- package/dist/core/sequencing/priority-queue.js +31 -0
- package/dist/core/sequencing/priority-queue.js.map +1 -0
- package/dist/core/sequencing/requirement-conflict-detector.d.ts +9 -0
- package/dist/core/sequencing/requirement-conflict-detector.d.ts.map +1 -0
- package/dist/core/sequencing/requirement-conflict-detector.js +90 -0
- package/dist/core/sequencing/requirement-conflict-detector.js.map +1 -0
- package/dist/core/sequencing/stale-detector.d.ts +9 -0
- package/dist/core/sequencing/stale-detector.d.ts.map +1 -0
- package/dist/core/sequencing/stale-detector.js +49 -0
- package/dist/core/sequencing/stale-detector.js.map +1 -0
- package/dist/core/sequencing/touches-analyzer.d.ts +8 -0
- package/dist/core/sequencing/touches-analyzer.d.ts.map +1 -0
- package/dist/core/sequencing/touches-analyzer.js +91 -0
- package/dist/core/sequencing/touches-analyzer.js.map +1 -0
- package/dist/core/vault/index.d.ts +2 -0
- package/dist/core/vault/index.d.ts.map +1 -0
- package/dist/core/vault/index.js +3 -0
- package/dist/core/vault/index.js.map +1 -0
- package/dist/core/workflow/apply/apply.d.ts +17 -0
- package/dist/core/workflow/apply/apply.d.ts.map +1 -0
- package/dist/core/workflow/apply/apply.js +302 -0
- package/dist/core/workflow/apply/apply.js.map +1 -0
- package/dist/core/workflow/apply/delta-parser.d.ts +11 -0
- package/dist/core/workflow/apply/delta-parser.d.ts.map +1 -0
- package/dist/core/workflow/apply/delta-parser.js +164 -0
- package/dist/core/workflow/apply/delta-parser.js.map +1 -0
- package/dist/core/workflow/apply/feature-updater.d.ts +12 -0
- package/dist/core/workflow/apply/feature-updater.d.ts.map +1 -0
- package/dist/core/workflow/apply/feature-updater.js +75 -0
- package/dist/core/workflow/apply/feature-updater.js.map +1 -0
- package/dist/core/workflow/apply/index.d.ts +7 -0
- package/dist/core/workflow/apply/index.d.ts.map +1 -0
- package/dist/core/workflow/apply/index.js +6 -0
- package/dist/core/workflow/apply/index.js.map +1 -0
- package/dist/core/workflow/apply/stale-checker.d.ts +17 -0
- package/dist/core/workflow/apply/stale-checker.d.ts.map +1 -0
- package/dist/core/workflow/apply/stale-checker.js +99 -0
- package/dist/core/workflow/apply/stale-checker.js.map +1 -0
- package/dist/core/workflow/apply/types.d.ts +112 -0
- package/dist/core/workflow/apply/types.d.ts.map +1 -0
- package/dist/core/workflow/apply/types.js +2 -0
- package/dist/core/workflow/apply/types.js.map +1 -0
- package/dist/core/workflow/apply/verify-apply.d.ts +16 -0
- package/dist/core/workflow/apply/verify-apply.d.ts.map +1 -0
- package/dist/core/workflow/apply/verify-apply.js +81 -0
- package/dist/core/workflow/apply/verify-apply.js.map +1 -0
- package/dist/core/workflow/continue/continue.d.ts +17 -0
- package/dist/core/workflow/continue/continue.d.ts.map +1 -0
- package/dist/core/workflow/continue/continue.js +213 -0
- package/dist/core/workflow/continue/continue.js.map +1 -0
- package/dist/core/workflow/continue/decision-promoter.d.ts +20 -0
- package/dist/core/workflow/continue/decision-promoter.d.ts.map +1 -0
- package/dist/core/workflow/continue/decision-promoter.js +36 -0
- package/dist/core/workflow/continue/decision-promoter.js.map +1 -0
- package/dist/core/workflow/continue/index.d.ts +6 -0
- package/dist/core/workflow/continue/index.d.ts.map +1 -0
- package/dist/core/workflow/continue/index.js +5 -0
- package/dist/core/workflow/continue/index.js.map +1 -0
- package/dist/core/workflow/continue/next-action.d.ts +13 -0
- package/dist/core/workflow/continue/next-action.d.ts.map +1 -0
- package/dist/core/workflow/continue/next-action.js +129 -0
- package/dist/core/workflow/continue/next-action.js.map +1 -0
- package/dist/core/workflow/continue/section-checker.d.ts +18 -0
- package/dist/core/workflow/continue/section-checker.d.ts.map +1 -0
- package/dist/core/workflow/continue/section-checker.js +114 -0
- package/dist/core/workflow/continue/section-checker.js.map +1 -0
- package/dist/core/workflow/continue/types.d.ts +113 -0
- package/dist/core/workflow/continue/types.d.ts.map +1 -0
- package/dist/core/workflow/continue/types.js +2 -0
- package/dist/core/workflow/continue/types.js.map +1 -0
- package/dist/core/workflow/index.d.ts +11 -0
- package/dist/core/workflow/index.d.ts.map +1 -0
- package/dist/core/workflow/index.js +12 -0
- package/dist/core/workflow/index.js.map +1 -0
- package/dist/core/workflow/propose/index.d.ts +6 -0
- package/dist/core/workflow/propose/index.d.ts.map +1 -0
- package/dist/core/workflow/propose/index.js +5 -0
- package/dist/core/workflow/propose/index.js.map +1 -0
- package/dist/core/workflow/propose/note-creator.d.ts +35 -0
- package/dist/core/workflow/propose/note-creator.d.ts.map +1 -0
- package/dist/core/workflow/propose/note-creator.js +178 -0
- package/dist/core/workflow/propose/note-creator.js.map +1 -0
- package/dist/core/workflow/propose/prerequisites.d.ts +17 -0
- package/dist/core/workflow/propose/prerequisites.d.ts.map +1 -0
- package/dist/core/workflow/propose/prerequisites.js +78 -0
- package/dist/core/workflow/propose/prerequisites.js.map +1 -0
- package/dist/core/workflow/propose/propose.d.ts +13 -0
- package/dist/core/workflow/propose/propose.d.ts.map +1 -0
- package/dist/core/workflow/propose/propose.js +204 -0
- package/dist/core/workflow/propose/propose.js.map +1 -0
- package/dist/core/workflow/propose/query-normalizer.d.ts +7 -0
- package/dist/core/workflow/propose/query-normalizer.d.ts.map +1 -0
- package/dist/core/workflow/propose/query-normalizer.js +77 -0
- package/dist/core/workflow/propose/query-normalizer.js.map +1 -0
- package/dist/core/workflow/propose/types.d.ts +71 -0
- package/dist/core/workflow/propose/types.d.ts.map +1 -0
- package/dist/core/workflow/propose/types.js +2 -0
- package/dist/core/workflow/propose/types.js.map +1 -0
- package/dist/core/workflow/query/index.d.ts +6 -0
- package/dist/core/workflow/query/index.d.ts.map +1 -0
- package/dist/core/workflow/query/index.js +5 -0
- package/dist/core/workflow/query/index.js.map +1 -0
- package/dist/core/workflow/query/noteworthiness.d.ts +14 -0
- package/dist/core/workflow/query/noteworthiness.d.ts.map +1 -0
- package/dist/core/workflow/query/noteworthiness.js +48 -0
- package/dist/core/workflow/query/noteworthiness.js.map +1 -0
- package/dist/core/workflow/query/query-note-creator.d.ts +13 -0
- package/dist/core/workflow/query/query-note-creator.d.ts.map +1 -0
- package/dist/core/workflow/query/query-note-creator.js +168 -0
- package/dist/core/workflow/query/query-note-creator.js.map +1 -0
- package/dist/core/workflow/query/query-search.d.ts +19 -0
- package/dist/core/workflow/query/query-search.d.ts.map +1 -0
- package/dist/core/workflow/query/query-search.js +252 -0
- package/dist/core/workflow/query/query-search.js.map +1 -0
- package/dist/core/workflow/query/query.d.ts +18 -0
- package/dist/core/workflow/query/query.d.ts.map +1 -0
- package/dist/core/workflow/query/query.js +29 -0
- package/dist/core/workflow/query/query.js.map +1 -0
- package/dist/core/workflow/query/types.d.ts +67 -0
- package/dist/core/workflow/query/types.d.ts.map +1 -0
- package/dist/core/workflow/query/types.js +2 -0
- package/dist/core/workflow/query/types.js.map +1 -0
- package/dist/core/workflow/verify/coherence.d.ts +30 -0
- package/dist/core/workflow/verify/coherence.d.ts.map +1 -0
- package/dist/core/workflow/verify/coherence.js +206 -0
- package/dist/core/workflow/verify/coherence.js.map +1 -0
- package/dist/core/workflow/verify/completeness.d.ts +24 -0
- package/dist/core/workflow/verify/completeness.d.ts.map +1 -0
- package/dist/core/workflow/verify/completeness.js +172 -0
- package/dist/core/workflow/verify/completeness.js.map +1 -0
- package/dist/core/workflow/verify/correctness.d.ts +38 -0
- package/dist/core/workflow/verify/correctness.d.ts.map +1 -0
- package/dist/core/workflow/verify/correctness.js +352 -0
- package/dist/core/workflow/verify/correctness.js.map +1 -0
- package/dist/core/workflow/verify/index.d.ts +7 -0
- package/dist/core/workflow/verify/index.d.ts.map +1 -0
- package/dist/core/workflow/verify/index.js +6 -0
- package/dist/core/workflow/verify/index.js.map +1 -0
- package/dist/core/workflow/verify/vault-integrity.d.ts +45 -0
- package/dist/core/workflow/verify/vault-integrity.d.ts.map +1 -0
- package/dist/core/workflow/verify/vault-integrity.js +141 -0
- package/dist/core/workflow/verify/vault-integrity.js.map +1 -0
- package/dist/core/workflow/verify/verify.d.ts +23 -0
- package/dist/core/workflow/verify/verify.d.ts.map +1 -0
- package/dist/core/workflow/verify/verify.js +122 -0
- package/dist/core/workflow/verify/verify.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/types/delta.d.ts +17 -0
- package/dist/types/delta.d.ts.map +1 -0
- package/dist/types/delta.js +2 -0
- package/dist/types/delta.js.map +1 -0
- package/dist/types/frontmatter.d.ts +51 -0
- package/dist/types/frontmatter.d.ts.map +1 -0
- package/dist/types/frontmatter.js +2 -0
- package/dist/types/frontmatter.js.map +1 -0
- package/dist/types/index-record.d.ts +46 -0
- package/dist/types/index-record.d.ts.map +1 -0
- package/dist/types/index-record.js +2 -0
- package/dist/types/index-record.js.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/next-action.d.ts +10 -0
- package/dist/types/next-action.d.ts.map +1 -0
- package/dist/types/next-action.js +2 -0
- package/dist/types/next-action.js.map +1 -0
- package/dist/types/notes.d.ts +9 -0
- package/dist/types/notes.d.ts.map +1 -0
- package/dist/types/notes.js +2 -0
- package/dist/types/notes.js.map +1 -0
- package/dist/types/requirement.d.ts +19 -0
- package/dist/types/requirement.d.ts.map +1 -0
- package/dist/types/requirement.js +2 -0
- package/dist/types/requirement.js.map +1 -0
- package/dist/types/retrieval.d.ts +32 -0
- package/dist/types/retrieval.d.ts.map +1 -0
- package/dist/types/retrieval.js +2 -0
- package/dist/types/retrieval.js.map +1 -0
- package/dist/types/sequencing.d.ts +83 -0
- package/dist/types/sequencing.d.ts.map +1 -0
- package/dist/types/sequencing.js +2 -0
- package/dist/types/sequencing.js.map +1 -0
- package/dist/types/task.d.ts +7 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +2 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/verify.d.ts +23 -0
- package/dist/types/verify.d.ts.map +1 -0
- package/dist/types/verify.js +2 -0
- package/dist/types/verify.js.map +1 -0
- package/dist/utils/hash.d.ts +6 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +9 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/id-generator.d.ts +17 -0
- package/dist/utils/id-generator.d.ts.map +1 -0
- package/dist/utils/id-generator.js +24 -0
- package/dist/utils/id-generator.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/normalize.d.ts +11 -0
- package/dist/utils/normalize.d.ts.map +1 -0
- package/dist/utils/normalize.js +15 -0
- package/dist/utils/normalize.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import { join, basename, resolve } from 'node:path';
|
|
2
|
+
import { parseDeltaSummary, validateDeltaConflicts } from './delta-parser.js';
|
|
3
|
+
import { detectStale, computeRequirementHash } from './stale-checker.js';
|
|
4
|
+
import { applyDeltaToFeature } from './feature-updater.js';
|
|
5
|
+
const PROGRAMMATIC_OPS = new Set(['RENAMED', 'REMOVED']);
|
|
6
|
+
const AGENT_DRIVEN_OPS = new Set(['MODIFIED', 'ADDED']);
|
|
7
|
+
function getAtomicPriority(op) {
|
|
8
|
+
switch (op) {
|
|
9
|
+
case 'RENAMED': return 1;
|
|
10
|
+
case 'REMOVED': return 2;
|
|
11
|
+
case 'MODIFIED': return 3;
|
|
12
|
+
case 'ADDED': return 4;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Main apply workflow using a TWO-PHASE COMMIT pattern.
|
|
17
|
+
*
|
|
18
|
+
* Phase 1 (Validate & Compute -- no disk writes):
|
|
19
|
+
* 1-9. Parse, validate, stale-check, pre-validate, compute
|
|
20
|
+
*
|
|
21
|
+
* Phase 2 (Write -- only if Phase 1 passes):
|
|
22
|
+
* 10-11. Write files, transition status
|
|
23
|
+
*/
|
|
24
|
+
export function applyChange(options, index, deps) {
|
|
25
|
+
const warnings = [];
|
|
26
|
+
const errors = [];
|
|
27
|
+
// 1. Load Change note
|
|
28
|
+
const changeRecord = index.records.get(options.changeId);
|
|
29
|
+
if (!changeRecord) {
|
|
30
|
+
throw new Error(`Change "${options.changeId}" not found in index`);
|
|
31
|
+
}
|
|
32
|
+
const resolvedChangePath = resolve(options.vaultRoot, changeRecord.path);
|
|
33
|
+
const parsed = deps.parseNote(resolvedChangePath);
|
|
34
|
+
// Verify status
|
|
35
|
+
if (changeRecord.status !== 'in_progress') {
|
|
36
|
+
throw new Error(`Cannot apply change with status "${changeRecord.status}". ` +
|
|
37
|
+
'Expected "in_progress". Use \'continue\' to advance through the status lifecycle first.');
|
|
38
|
+
}
|
|
39
|
+
// Check all tasks complete
|
|
40
|
+
const uncheckedTasks = parsed.tasks.filter((t) => !t.done);
|
|
41
|
+
if (uncheckedTasks.length > 0) {
|
|
42
|
+
throw new Error(`Cannot apply: ${uncheckedTasks.length} unchecked task(s) remaining. ` +
|
|
43
|
+
'Complete all tasks via \'continue\' before applying.');
|
|
44
|
+
}
|
|
45
|
+
// 2. Parse Delta Summary
|
|
46
|
+
const resolveWikilink = (target) => {
|
|
47
|
+
// Simple lookup by title
|
|
48
|
+
for (const record of index.records.values()) {
|
|
49
|
+
if (record.title === target || record.id === target) {
|
|
50
|
+
return record.id;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return undefined;
|
|
54
|
+
};
|
|
55
|
+
const deltaPlan = parseDeltaSummary(parsed, resolveWikilink);
|
|
56
|
+
warnings.push(...deltaPlan.warnings);
|
|
57
|
+
if (deltaPlan.entries.length === 0) {
|
|
58
|
+
return makeResult(options, changeRecord, {
|
|
59
|
+
success: false,
|
|
60
|
+
errors: ['No Delta Summary entries found. Nothing to apply.'],
|
|
61
|
+
warnings,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
// Validate delta conflicts
|
|
65
|
+
const conflictErrors = validateDeltaConflicts(deltaPlan);
|
|
66
|
+
if (conflictErrors.length > 0) {
|
|
67
|
+
return makeResult(options, changeRecord, { success: false, errors: conflictErrors, warnings });
|
|
68
|
+
}
|
|
69
|
+
// 3. Build feature requirements maps
|
|
70
|
+
const featureRequirements = new Map();
|
|
71
|
+
for (const [noteKey] of deltaPlan.byTargetNote) {
|
|
72
|
+
const noteRecord = index.records.get(noteKey);
|
|
73
|
+
if (!noteRecord) {
|
|
74
|
+
errors.push(`Target note "${noteKey}" not found in index`);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const noteParsed = deps.parseNote(resolve(options.vaultRoot, noteRecord.path));
|
|
78
|
+
const reqMap = new Map();
|
|
79
|
+
for (const req of noteParsed.requirements) {
|
|
80
|
+
reqMap.set(req.name, req);
|
|
81
|
+
}
|
|
82
|
+
featureRequirements.set(noteKey, reqMap);
|
|
83
|
+
}
|
|
84
|
+
if (errors.length > 0) {
|
|
85
|
+
return makeResult(options, changeRecord, { success: false, errors, warnings });
|
|
86
|
+
}
|
|
87
|
+
// 4. Stale detection
|
|
88
|
+
const staleReport = detectStale(deltaPlan, featureRequirements);
|
|
89
|
+
// 5. Block if stale
|
|
90
|
+
if (staleReport.blocked && !options.forceStale) {
|
|
91
|
+
return makeResult(options, changeRecord, {
|
|
92
|
+
success: false,
|
|
93
|
+
staleReport,
|
|
94
|
+
warnings: [
|
|
95
|
+
...warnings,
|
|
96
|
+
'Stale base detected. Another change has modified the base requirements.',
|
|
97
|
+
],
|
|
98
|
+
errors: staleReport.staleEntries.map((s) => `STALE: ${s.entry.op} "${s.entry.targetName}" - ${s.reason}`),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// === PHASE 1: Validate and compute ===
|
|
102
|
+
const featureResults = [];
|
|
103
|
+
const allPostValidations = [];
|
|
104
|
+
const pendingAgentOps = [];
|
|
105
|
+
// 6. Pre-validate and apply programmatic ops
|
|
106
|
+
for (const [noteKey, entries] of deltaPlan.byTargetNote) {
|
|
107
|
+
const reqEntries = entries.filter((e) => e.targetType === 'requirement');
|
|
108
|
+
if (reqEntries.length === 0)
|
|
109
|
+
continue;
|
|
110
|
+
const reqMap = featureRequirements.get(noteKey);
|
|
111
|
+
const noteRecord = index.records.get(noteKey);
|
|
112
|
+
// Pre-validate in atomic order using a shadow map.
|
|
113
|
+
// This ensures RENAMED creates the new name before MODIFIED checks it.
|
|
114
|
+
const shadowMap = new Map(reqMap);
|
|
115
|
+
const sortedForValidation = [...reqEntries].sort((a, b) => getAtomicPriority(a.op) - getAtomicPriority(b.op));
|
|
116
|
+
for (const entry of sortedForValidation) {
|
|
117
|
+
const preError = preValidateEntry(entry, shadowMap);
|
|
118
|
+
if (preError) {
|
|
119
|
+
errors.push(`Pre-validation: ${preError}`);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
// Update shadow map to reflect the operation for subsequent validations
|
|
123
|
+
if (entry.op === 'RENAMED') {
|
|
124
|
+
const req = shadowMap.get(entry.targetName);
|
|
125
|
+
if (req) {
|
|
126
|
+
shadowMap.delete(entry.targetName);
|
|
127
|
+
shadowMap.set(entry.newName, { ...req, name: entry.newName, key: '' });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else if (entry.op === 'REMOVED') {
|
|
131
|
+
shadowMap.delete(entry.targetName);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (errors.length > 0)
|
|
136
|
+
continue;
|
|
137
|
+
// Apply programmatic operations (RENAMED, REMOVED)
|
|
138
|
+
const mechEntries = reqEntries.filter((e) => PROGRAMMATIC_OPS.has(e.op));
|
|
139
|
+
const agentEntries = reqEntries.filter((e) => AGENT_DRIVEN_OPS.has(e.op));
|
|
140
|
+
const resolvedNotePath = resolve(options.vaultRoot, noteRecord.path);
|
|
141
|
+
const result = applyDeltaToFeature(noteKey, resolvedNotePath, reqMap, mechEntries);
|
|
142
|
+
featureResults.push(result);
|
|
143
|
+
// Collect agent-driven ops
|
|
144
|
+
for (const entry of agentEntries) {
|
|
145
|
+
pendingAgentOps.push({
|
|
146
|
+
entry,
|
|
147
|
+
featureId: noteKey,
|
|
148
|
+
featurePath: resolvedNotePath,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Abort if any pre-validation failed
|
|
153
|
+
if (errors.length > 0) {
|
|
154
|
+
return makeResult(options, changeRecord, {
|
|
155
|
+
success: false,
|
|
156
|
+
staleReport,
|
|
157
|
+
featureResults,
|
|
158
|
+
errors,
|
|
159
|
+
warnings,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
// Snapshot content_hashes before agent edits
|
|
163
|
+
const preEditSnapshots = new Map();
|
|
164
|
+
for (const op of pendingAgentOps) {
|
|
165
|
+
if (!preEditSnapshots.has(op.featureId)) {
|
|
166
|
+
const reqMap = featureRequirements.get(op.featureId);
|
|
167
|
+
const hashMap = new Map();
|
|
168
|
+
for (const [name, req] of reqMap) {
|
|
169
|
+
hashMap.set(name, computeRequirementHash(req));
|
|
170
|
+
}
|
|
171
|
+
preEditSnapshots.set(op.featureId, hashMap);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Handle section operations
|
|
175
|
+
const sectionResults = [];
|
|
176
|
+
for (const [noteKey, entries] of deltaPlan.byTargetNote) {
|
|
177
|
+
const secEntries = entries.filter((e) => e.targetType === 'section');
|
|
178
|
+
if (secEntries.length === 0)
|
|
179
|
+
continue;
|
|
180
|
+
const secNoteRecord = index.records.get(noteKey);
|
|
181
|
+
for (const entry of secEntries) {
|
|
182
|
+
sectionResults.push({
|
|
183
|
+
noteId: noteKey,
|
|
184
|
+
notePath: resolve(options.vaultRoot, secNoteRecord.path),
|
|
185
|
+
sectionName: entry.targetName,
|
|
186
|
+
op: entry.op,
|
|
187
|
+
success: true, // Section ops are agent-driven
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// === PHASE 2: Write (only if Phase 1 passed) ===
|
|
192
|
+
let statusTransitioned = false;
|
|
193
|
+
if (!options.dryRun) {
|
|
194
|
+
// Write programmatic changes (RENAMED, REMOVED only)
|
|
195
|
+
// Feature content rebuilding from reqMap would be needed here
|
|
196
|
+
// For now, the agent handles the actual file writes
|
|
197
|
+
// If no agent-driven ops, transition to applied
|
|
198
|
+
if (pendingAgentOps.length === 0) {
|
|
199
|
+
const content = deps.readFile(resolvedChangePath);
|
|
200
|
+
const updated = content.replace(/^(status:\s*).+$/m, '$1applied');
|
|
201
|
+
deps.writeFile(resolvedChangePath, updated);
|
|
202
|
+
statusTransitioned = true;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
changeId: options.changeId,
|
|
207
|
+
changeName: changeRecord.title,
|
|
208
|
+
success: true,
|
|
209
|
+
staleReport,
|
|
210
|
+
featureResults,
|
|
211
|
+
sectionResults,
|
|
212
|
+
postValidation: allPostValidations,
|
|
213
|
+
pendingAgentOps,
|
|
214
|
+
preEditSnapshots,
|
|
215
|
+
statusTransitioned,
|
|
216
|
+
warnings,
|
|
217
|
+
errors,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Archive an applied Change.
|
|
222
|
+
*/
|
|
223
|
+
export function archiveChange(options, index, deps) {
|
|
224
|
+
const changeRecord = index.records.get(options.changeId);
|
|
225
|
+
if (!changeRecord) {
|
|
226
|
+
throw new Error(`Change "${options.changeId}" not found`);
|
|
227
|
+
}
|
|
228
|
+
if (changeRecord.status !== 'applied') {
|
|
229
|
+
return {
|
|
230
|
+
success: false,
|
|
231
|
+
fromPath: changeRecord.path,
|
|
232
|
+
toPath: '',
|
|
233
|
+
indexInvalidated: false,
|
|
234
|
+
error: `Cannot archive change with status "${changeRecord.status}". Must be "applied".`,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
const resolvedFromPath = resolve(options.vaultRoot, changeRecord.path);
|
|
238
|
+
const filename = basename(changeRecord.path);
|
|
239
|
+
const archiveDir = join(options.vaultRoot, 'wiki', '99-archive');
|
|
240
|
+
const toPath = join(archiveDir, filename);
|
|
241
|
+
if (deps.fileExists(toPath)) {
|
|
242
|
+
return {
|
|
243
|
+
success: false,
|
|
244
|
+
fromPath: resolvedFromPath,
|
|
245
|
+
toPath,
|
|
246
|
+
indexInvalidated: false,
|
|
247
|
+
error: `Archive target already exists: ${toPath}`,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
deps.ensureDir(archiveDir);
|
|
251
|
+
deps.moveFile(resolvedFromPath, toPath);
|
|
252
|
+
return {
|
|
253
|
+
success: true,
|
|
254
|
+
fromPath: resolvedFromPath,
|
|
255
|
+
toPath,
|
|
256
|
+
indexInvalidated: true,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
// ── Helpers ──
|
|
260
|
+
function preValidateEntry(entry, requirements) {
|
|
261
|
+
switch (entry.op) {
|
|
262
|
+
case 'ADDED':
|
|
263
|
+
return requirements.has(entry.targetName)
|
|
264
|
+
? `Requirement "${entry.targetName}" already exists (ADDED requires non-existence)`
|
|
265
|
+
: null;
|
|
266
|
+
case 'MODIFIED':
|
|
267
|
+
return !requirements.has(entry.targetName)
|
|
268
|
+
? `Requirement "${entry.targetName}" not found (MODIFIED requires existence)`
|
|
269
|
+
: null;
|
|
270
|
+
case 'REMOVED':
|
|
271
|
+
return !requirements.has(entry.targetName)
|
|
272
|
+
? `Requirement "${entry.targetName}" not found (REMOVED requires existence)`
|
|
273
|
+
: null;
|
|
274
|
+
case 'RENAMED': {
|
|
275
|
+
if (!requirements.has(entry.targetName)) {
|
|
276
|
+
return `Old name "${entry.targetName}" not found`;
|
|
277
|
+
}
|
|
278
|
+
if (requirements.has(entry.newName)) {
|
|
279
|
+
return `New name "${entry.newName}" already exists`;
|
|
280
|
+
}
|
|
281
|
+
return null;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
function makeResult(options, changeRecord, overrides) {
|
|
286
|
+
return {
|
|
287
|
+
changeId: options.changeId,
|
|
288
|
+
changeName: changeRecord.title,
|
|
289
|
+
success: false,
|
|
290
|
+
staleReport: { hasStaleEntries: false, staleEntries: [], cleanEntries: [], blocked: false },
|
|
291
|
+
featureResults: [],
|
|
292
|
+
sectionResults: [],
|
|
293
|
+
postValidation: [],
|
|
294
|
+
pendingAgentOps: [],
|
|
295
|
+
preEditSnapshots: new Map(),
|
|
296
|
+
statusTransitioned: false,
|
|
297
|
+
warnings: [],
|
|
298
|
+
errors: [],
|
|
299
|
+
...overrides,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../src/core/workflow/apply/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DeltaPlan } from './types.js';
|
|
2
|
+
import type { ParseResult } from '../../parser/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Parse Delta Summary entries from a Change note's parsed result.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseDeltaSummary(parsed: ParseResult, resolveWikilink: (target: string) => string | undefined): DeltaPlan;
|
|
7
|
+
/**
|
|
8
|
+
* Validate Delta Summary entries for cross-section conflicts.
|
|
9
|
+
*/
|
|
10
|
+
export declare function validateDeltaConflicts(plan: DeltaPlan): string[];
|
|
11
|
+
//# sourceMappingURL=delta-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-parser.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/apply/delta-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAYzD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACtD,SAAS,CAiFX;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CA+DhE"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
const REQUIREMENT_OP_RE = /^-\s+(ADDED|MODIFIED|REMOVED)\s+requirement\s+"([^"]+)"\s+(to|in|from)\s+\[\[([^\]]+)\]\](?:\s+\[base:\s*((?:sha256:[a-f0-9]+)|n\/a)\])?/;
|
|
2
|
+
const RENAMED_RE = /^-\s+RENAMED\s+requirement\s+"([^"]+)"\s+to\s+"([^"]+)"\s+in\s+\[\[([^\]]+)\]\](?:\s+\[base:\s*((?:sha256:[a-f0-9]+)|n\/a)\])?/;
|
|
3
|
+
const SECTION_OP_RE = /^-\s+(ADDED|MODIFIED|REMOVED)\s+section\s+"([^"]+)"\s+(to|in|from)\s+\[\[([^\]]+)\]\](?::\s*(.+))?/;
|
|
4
|
+
/**
|
|
5
|
+
* Parse Delta Summary entries from a Change note's parsed result.
|
|
6
|
+
*/
|
|
7
|
+
export function parseDeltaSummary(parsed, resolveWikilink) {
|
|
8
|
+
// Find the Delta Summary section
|
|
9
|
+
const deltaSection = findSection(parsed, 'Delta Summary');
|
|
10
|
+
if (!deltaSection) {
|
|
11
|
+
return { entries: [], byTargetNote: new Map(), warnings: ['No Delta Summary section found'] };
|
|
12
|
+
}
|
|
13
|
+
const lines = deltaSection.split('\n');
|
|
14
|
+
const entries = [];
|
|
15
|
+
const warnings = [];
|
|
16
|
+
for (const line of lines) {
|
|
17
|
+
const trimmed = line.trim();
|
|
18
|
+
if (!trimmed || !trimmed.startsWith('-'))
|
|
19
|
+
continue;
|
|
20
|
+
// Try RENAMED first (more specific pattern)
|
|
21
|
+
const renamedMatch = trimmed.match(RENAMED_RE);
|
|
22
|
+
if (renamedMatch) {
|
|
23
|
+
const targetNoteId = resolveWikilink(renamedMatch[3]);
|
|
24
|
+
entries.push({
|
|
25
|
+
op: 'RENAMED',
|
|
26
|
+
targetType: 'requirement',
|
|
27
|
+
targetName: renamedMatch[1],
|
|
28
|
+
newName: renamedMatch[2],
|
|
29
|
+
targetNote: renamedMatch[3],
|
|
30
|
+
targetNoteId,
|
|
31
|
+
baseFingerprint: parseBaseFingerprint(renamedMatch[4]),
|
|
32
|
+
rawLine: trimmed,
|
|
33
|
+
});
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
// Try requirement operation
|
|
37
|
+
const reqMatch = trimmed.match(REQUIREMENT_OP_RE);
|
|
38
|
+
if (reqMatch) {
|
|
39
|
+
const targetNoteId = resolveWikilink(reqMatch[4]);
|
|
40
|
+
entries.push({
|
|
41
|
+
op: reqMatch[1],
|
|
42
|
+
targetType: 'requirement',
|
|
43
|
+
targetName: reqMatch[2],
|
|
44
|
+
targetNote: reqMatch[4],
|
|
45
|
+
targetNoteId,
|
|
46
|
+
baseFingerprint: parseBaseFingerprint(reqMatch[5]),
|
|
47
|
+
rawLine: trimmed,
|
|
48
|
+
});
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// Try section operation
|
|
52
|
+
const secMatch = trimmed.match(SECTION_OP_RE);
|
|
53
|
+
if (secMatch) {
|
|
54
|
+
const targetNoteId = resolveWikilink(secMatch[4]);
|
|
55
|
+
entries.push({
|
|
56
|
+
op: secMatch[1],
|
|
57
|
+
targetType: 'section',
|
|
58
|
+
targetName: secMatch[2],
|
|
59
|
+
targetNote: secMatch[4],
|
|
60
|
+
targetNoteId,
|
|
61
|
+
baseFingerprint: null,
|
|
62
|
+
description: secMatch[5]?.trim(),
|
|
63
|
+
rawLine: trimmed,
|
|
64
|
+
});
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
// Unrecognized line
|
|
68
|
+
if (trimmed.match(/^-\s+(ADDED|MODIFIED|REMOVED|RENAMED)/)) {
|
|
69
|
+
warnings.push(`Unparseable Delta Summary entry: "${trimmed}"`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Group by target note
|
|
73
|
+
const byTargetNote = new Map();
|
|
74
|
+
for (const entry of entries) {
|
|
75
|
+
const key = entry.targetNoteId ?? entry.targetNote;
|
|
76
|
+
const group = byTargetNote.get(key) ?? [];
|
|
77
|
+
group.push(entry);
|
|
78
|
+
byTargetNote.set(key, group);
|
|
79
|
+
}
|
|
80
|
+
return { entries, byTargetNote, warnings };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Validate Delta Summary entries for cross-section conflicts.
|
|
84
|
+
*/
|
|
85
|
+
export function validateDeltaConflicts(plan) {
|
|
86
|
+
const errors = [];
|
|
87
|
+
for (const [noteKey, entries] of plan.byTargetNote) {
|
|
88
|
+
const reqEntries = entries.filter((e) => e.targetType === 'requirement');
|
|
89
|
+
const added = new Set(reqEntries.filter((e) => e.op === 'ADDED').map((e) => e.targetName));
|
|
90
|
+
const modified = new Set(reqEntries.filter((e) => e.op === 'MODIFIED').map((e) => e.targetName));
|
|
91
|
+
const removed = new Set(reqEntries.filter((e) => e.op === 'REMOVED').map((e) => e.targetName));
|
|
92
|
+
const renamedFrom = new Map(reqEntries.filter((e) => e.op === 'RENAMED').map((e) => [e.targetName, e.newName]));
|
|
93
|
+
const renamedTo = new Set(reqEntries.filter((e) => e.op === 'RENAMED').map((e) => e.newName));
|
|
94
|
+
// Duplicate within same operation
|
|
95
|
+
const addedList = reqEntries.filter((e) => e.op === 'ADDED').map((e) => e.targetName);
|
|
96
|
+
for (const d of findDuplicates(addedList)) {
|
|
97
|
+
errors.push(`Duplicate ADDED requirement "${d}" in ${noteKey}`);
|
|
98
|
+
}
|
|
99
|
+
const modifiedList = reqEntries.filter((e) => e.op === 'MODIFIED').map((e) => e.targetName);
|
|
100
|
+
for (const d of findDuplicates(modifiedList)) {
|
|
101
|
+
errors.push(`Duplicate MODIFIED requirement "${d}" in ${noteKey}`);
|
|
102
|
+
}
|
|
103
|
+
const removedList = reqEntries.filter((e) => e.op === 'REMOVED').map((e) => e.targetName);
|
|
104
|
+
for (const d of findDuplicates(removedList)) {
|
|
105
|
+
errors.push(`Duplicate REMOVED requirement "${d}" in ${noteKey}`);
|
|
106
|
+
}
|
|
107
|
+
const renamedFromList = reqEntries.filter((e) => e.op === 'RENAMED').map((e) => e.targetName);
|
|
108
|
+
for (const d of findDuplicates(renamedFromList)) {
|
|
109
|
+
errors.push(`Duplicate RENAMED (from) requirement "${d}" in ${noteKey}`);
|
|
110
|
+
}
|
|
111
|
+
const renamedToList = reqEntries.filter((e) => e.op === 'RENAMED').map((e) => e.newName);
|
|
112
|
+
for (const d of findDuplicates(renamedToList)) {
|
|
113
|
+
errors.push(`Duplicate RENAMED (to) requirement "${d}" in ${noteKey}`);
|
|
114
|
+
}
|
|
115
|
+
// Cross-section conflicts
|
|
116
|
+
for (const name of modified) {
|
|
117
|
+
if (removed.has(name))
|
|
118
|
+
errors.push(`"${name}" in ${noteKey}: MODIFIED + REMOVED conflict`);
|
|
119
|
+
if (added.has(name))
|
|
120
|
+
errors.push(`"${name}" in ${noteKey}: MODIFIED + ADDED conflict`);
|
|
121
|
+
}
|
|
122
|
+
for (const name of added) {
|
|
123
|
+
if (removed.has(name))
|
|
124
|
+
errors.push(`"${name}" in ${noteKey}: ADDED + REMOVED conflict`);
|
|
125
|
+
}
|
|
126
|
+
// RENAMED interplay
|
|
127
|
+
for (const [from, to] of renamedFrom) {
|
|
128
|
+
if (modified.has(from)) {
|
|
129
|
+
errors.push(`"${from}" in ${noteKey}: RENAMED FROM + MODIFIED old name (use new name "${to}")`);
|
|
130
|
+
}
|
|
131
|
+
if (added.has(to)) {
|
|
132
|
+
errors.push(`"${to}" in ${noteKey}: RENAMED TO + ADDED collision`);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return errors;
|
|
137
|
+
}
|
|
138
|
+
function parseBaseFingerprint(raw) {
|
|
139
|
+
if (!raw || raw === 'n/a')
|
|
140
|
+
return null;
|
|
141
|
+
return raw;
|
|
142
|
+
}
|
|
143
|
+
function findSection(parsed, title) {
|
|
144
|
+
for (const section of parsed.sections) {
|
|
145
|
+
if (section.title === title)
|
|
146
|
+
return section.content;
|
|
147
|
+
for (const child of section.children) {
|
|
148
|
+
if (child.title === title)
|
|
149
|
+
return child.content;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
function findDuplicates(arr) {
|
|
155
|
+
const seen = new Set();
|
|
156
|
+
const dupes = new Set();
|
|
157
|
+
for (const item of arr) {
|
|
158
|
+
if (seen.has(item))
|
|
159
|
+
dupes.add(item);
|
|
160
|
+
seen.add(item);
|
|
161
|
+
}
|
|
162
|
+
return [...dupes];
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=delta-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-parser.js","sourceRoot":"","sources":["../../../../src/core/workflow/apply/delta-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DeltaEntry, FeatureApplyResult } from './types.js';
|
|
2
|
+
import type { Requirement } from '../../../types/requirement.js';
|
|
3
|
+
/**
|
|
4
|
+
* Apply delta operations to a Feature note's requirements map.
|
|
5
|
+
* Operations are executed in atomic order: RENAMED -> REMOVED -> MODIFIED -> ADDED.
|
|
6
|
+
*
|
|
7
|
+
* Returns which operations succeeded/failed. Does NOT write to disk.
|
|
8
|
+
* MODIFIED and ADDED are validated structurally but content changes
|
|
9
|
+
* are performed by the agent.
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyDeltaToFeature(featureId: string, featurePath: string, requirementsMap: Map<string, Requirement>, entries: DeltaEntry[]): FeatureApplyResult;
|
|
12
|
+
//# sourceMappingURL=feature-updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-updater.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/apply/feature-updater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAwB,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAejE;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,OAAO,EAAE,UAAU,EAAE,GACpB,kBAAkB,CAoBpB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map operation to atomic priority.
|
|
3
|
+
* RENAMED(1) -> REMOVED(2) -> MODIFIED(3) -> ADDED(4)
|
|
4
|
+
*/
|
|
5
|
+
function getAtomicPriority(op) {
|
|
6
|
+
switch (op) {
|
|
7
|
+
case 'RENAMED': return 1;
|
|
8
|
+
case 'REMOVED': return 2;
|
|
9
|
+
case 'MODIFIED': return 3;
|
|
10
|
+
case 'ADDED': return 4;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Apply delta operations to a Feature note's requirements map.
|
|
15
|
+
* Operations are executed in atomic order: RENAMED -> REMOVED -> MODIFIED -> ADDED.
|
|
16
|
+
*
|
|
17
|
+
* Returns which operations succeeded/failed. Does NOT write to disk.
|
|
18
|
+
* MODIFIED and ADDED are validated structurally but content changes
|
|
19
|
+
* are performed by the agent.
|
|
20
|
+
*/
|
|
21
|
+
export function applyDeltaToFeature(featureId, featurePath, requirementsMap, entries) {
|
|
22
|
+
const operations = [];
|
|
23
|
+
// Sort by atomic priority
|
|
24
|
+
const sorted = [...entries]
|
|
25
|
+
.filter((e) => e.targetType === 'requirement')
|
|
26
|
+
.sort((a, b) => getAtomicPriority(a.op) - getAtomicPriority(b.op));
|
|
27
|
+
for (const entry of sorted) {
|
|
28
|
+
const result = applySingleOperation(requirementsMap, entry);
|
|
29
|
+
operations.push(result);
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
featureId,
|
|
33
|
+
featurePath,
|
|
34
|
+
operations,
|
|
35
|
+
updatedContent: '', // Content rebuilding is agent-driven
|
|
36
|
+
requiresWrite: operations.some((o) => o.success),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function applySingleOperation(requirements, entry) {
|
|
40
|
+
switch (entry.op) {
|
|
41
|
+
case 'RENAMED': {
|
|
42
|
+
const oldReq = requirements.get(entry.targetName);
|
|
43
|
+
if (!oldReq) {
|
|
44
|
+
return { entry, success: false, error: `Requirement "${entry.targetName}" not found for RENAME` };
|
|
45
|
+
}
|
|
46
|
+
if (requirements.has(entry.newName)) {
|
|
47
|
+
return { entry, success: false, error: `Target name "${entry.newName}" already exists` };
|
|
48
|
+
}
|
|
49
|
+
requirements.delete(entry.targetName);
|
|
50
|
+
const renamed = { ...oldReq, name: entry.newName, key: '' };
|
|
51
|
+
requirements.set(entry.newName, renamed);
|
|
52
|
+
return { entry, success: true };
|
|
53
|
+
}
|
|
54
|
+
case 'REMOVED': {
|
|
55
|
+
if (!requirements.has(entry.targetName)) {
|
|
56
|
+
return { entry, success: false, error: `Requirement "${entry.targetName}" not found for REMOVE` };
|
|
57
|
+
}
|
|
58
|
+
requirements.delete(entry.targetName);
|
|
59
|
+
return { entry, success: true };
|
|
60
|
+
}
|
|
61
|
+
case 'MODIFIED': {
|
|
62
|
+
if (!requirements.has(entry.targetName)) {
|
|
63
|
+
return { entry, success: false, error: `Requirement "${entry.targetName}" not found for MODIFY` };
|
|
64
|
+
}
|
|
65
|
+
return { entry, success: true, contentChanged: true };
|
|
66
|
+
}
|
|
67
|
+
case 'ADDED': {
|
|
68
|
+
if (requirements.has(entry.targetName)) {
|
|
69
|
+
return { entry, success: false, error: `Requirement "${entry.targetName}" already exists for ADD` };
|
|
70
|
+
}
|
|
71
|
+
return { entry, success: true };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=feature-updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-updater.js","sourceRoot":"","sources":["../../../../src/core/workflow/apply/feature-updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { applyChange, archiveChange } from './apply.js';
|
|
2
|
+
export { parseDeltaSummary, validateDeltaConflicts } from './delta-parser.js';
|
|
3
|
+
export { detectStale, computeRequirementHash } from './stale-checker.js';
|
|
4
|
+
export { applyDeltaToFeature } from './feature-updater.js';
|
|
5
|
+
export { verifyApply } from './verify-apply.js';
|
|
6
|
+
export type { DeltaEntry, DeltaPlan, StaleReport, StaleCheckResult, FeatureApplyResult, ApplyOperationResult, PreValidation, PostValidation, SectionApplyResult, PendingAgentOp, ApplyOptions, ApplyResult, ArchiveOptions, ArchiveResult, ApplyDeps, } from './types.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/apply/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,GACV,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { applyChange, archiveChange } from './apply.js';
|
|
2
|
+
export { parseDeltaSummary, validateDeltaConflicts } from './delta-parser.js';
|
|
3
|
+
export { detectStale, computeRequirementHash } from './stale-checker.js';
|
|
4
|
+
export { applyDeltaToFeature } from './feature-updater.js';
|
|
5
|
+
export { verifyApply } from './verify-apply.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/workflow/apply/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|