dorfl 0.0.0 → 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/dist/advance-ci-template.d.ts +73 -0
- package/dist/advance-ci-template.d.ts.map +1 -0
- package/dist/advance-ci-template.js +104 -0
- package/dist/advance-ci-template.js.map +1 -0
- package/dist/advance-classify.d.ts +132 -0
- package/dist/advance-classify.d.ts.map +1 -0
- package/dist/advance-classify.js +120 -0
- package/dist/advance-classify.js.map +1 -0
- package/dist/advance-drivers.d.ts +182 -0
- package/dist/advance-drivers.d.ts.map +1 -0
- package/dist/advance-drivers.js +231 -0
- package/dist/advance-drivers.js.map +1 -0
- package/dist/advance-isolated.d.ts +156 -0
- package/dist/advance-isolated.d.ts.map +1 -0
- package/dist/advance-isolated.js +256 -0
- package/dist/advance-isolated.js.map +1 -0
- package/dist/advance-lifecycle-template.d.ts +107 -0
- package/dist/advance-lifecycle-template.d.ts.map +1 -0
- package/dist/advance-lifecycle-template.js +668 -0
- package/dist/advance-lifecycle-template.js.map +1 -0
- package/dist/advance-loop-driver.d.ts +325 -0
- package/dist/advance-loop-driver.d.ts.map +1 -0
- package/dist/advance-loop-driver.js +437 -0
- package/dist/advance-loop-driver.js.map +1 -0
- package/dist/advance-treeless-publish.d.ts +108 -0
- package/dist/advance-treeless-publish.d.ts.map +1 -0
- package/dist/advance-treeless-publish.js +71 -0
- package/dist/advance-treeless-publish.js.map +1 -0
- package/dist/advance.d.ts +340 -0
- package/dist/advance.d.ts.map +1 -0
- package/dist/advance.js +1122 -0
- package/dist/advance.js.map +1 -0
- package/dist/advancing-lock.d.ts +294 -0
- package/dist/advancing-lock.d.ts.map +1 -0
- package/dist/advancing-lock.js +594 -0
- package/dist/advancing-lock.js.map +1 -0
- package/dist/agent-launch.d.ts +79 -0
- package/dist/agent-launch.d.ts.map +1 -0
- package/dist/agent-launch.js +61 -0
- package/dist/agent-launch.js.map +1 -0
- package/dist/agent-stop.d.ts +149 -0
- package/dist/agent-stop.d.ts.map +1 -0
- package/dist/agent-stop.js +307 -0
- package/dist/agent-stop.js.map +1 -0
- package/dist/apply-decide.d.ts +127 -0
- package/dist/apply-decide.d.ts.map +1 -0
- package/dist/apply-decide.js +176 -0
- package/dist/apply-decide.js.map +1 -0
- package/dist/apply-merge-action.d.ts +206 -0
- package/dist/apply-merge-action.d.ts.map +1 -0
- package/dist/apply-merge-action.js +307 -0
- package/dist/apply-merge-action.js.map +1 -0
- package/dist/apply-persist.d.ts +174 -0
- package/dist/apply-persist.d.ts.map +1 -0
- package/dist/apply-persist.js +359 -0
- package/dist/apply-persist.js.map +1 -0
- package/dist/arbiter.d.ts +120 -0
- package/dist/arbiter.d.ts.map +1 -0
- package/dist/arbiter.js +255 -0
- package/dist/arbiter.js.map +1 -0
- package/dist/brand.d.ts +70 -0
- package/dist/brand.d.ts.map +1 -0
- package/dist/brand.js +84 -0
- package/dist/brand.js.map +1 -0
- package/dist/buildable-body.d.ts +132 -0
- package/dist/buildable-body.d.ts.map +1 -0
- package/dist/buildable-body.js +131 -0
- package/dist/buildable-body.js.map +1 -0
- package/dist/categorise.d.ts +66 -0
- package/dist/categorise.d.ts.map +1 -0
- package/dist/categorise.js +106 -0
- package/dist/categorise.js.map +1 -0
- package/dist/claim-cas.d.ts +117 -0
- package/dist/claim-cas.d.ts.map +1 -0
- package/dist/claim-cas.js +312 -0
- package/dist/claim-cas.js.map +1 -0
- package/dist/cli-spinner.d.ts +112 -0
- package/dist/cli-spinner.d.ts.map +1 -0
- package/dist/cli-spinner.js +157 -0
- package/dist/cli-spinner.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3094 -0
- package/dist/cli.js.map +1 -0
- package/dist/close-job-template.d.ts +70 -0
- package/dist/close-job-template.d.ts.map +1 -0
- package/dist/close-job-template.js +180 -0
- package/dist/close-job-template.js.map +1 -0
- package/dist/close-job.d.ts +95 -0
- package/dist/close-job.d.ts.map +1 -0
- package/dist/close-job.js +226 -0
- package/dist/close-job.js.map +1 -0
- package/dist/complete.d.ts +361 -0
- package/dist/complete.d.ts.map +1 -0
- package/dist/complete.js +885 -0
- package/dist/complete.js.map +1 -0
- package/dist/concurrency.d.ts +68 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +112 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/config-override.d.ts +76 -0
- package/dist/config-override.d.ts.map +1 -0
- package/dist/config-override.js +50 -0
- package/dist/config-override.js.map +1 -0
- package/dist/config.d.ts +668 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +241 -0
- package/dist/config.js.map +1 -0
- package/dist/continue-branch.d.ts +249 -0
- package/dist/continue-branch.d.ts.map +1 -0
- package/dist/continue-branch.js +389 -0
- package/dist/continue-branch.js.map +1 -0
- package/dist/cwd-section.d.ts +186 -0
- package/dist/cwd-section.d.ts.map +1 -0
- package/dist/cwd-section.js +209 -0
- package/dist/cwd-section.js.map +1 -0
- package/dist/decision-engine.d.ts +170 -0
- package/dist/decision-engine.d.ts.map +1 -0
- package/dist/decision-engine.js +136 -0
- package/dist/decision-engine.js.map +1 -0
- package/dist/detect.d.ts +17 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +118 -0
- package/dist/detect.js.map +1 -0
- package/dist/do-autopick.d.ts +85 -0
- package/dist/do-autopick.d.ts.map +1 -0
- package/dist/do-autopick.js +112 -0
- package/dist/do-autopick.js.map +1 -0
- package/dist/do-config.d.ts +312 -0
- package/dist/do-config.d.ts.map +1 -0
- package/dist/do-config.js +358 -0
- package/dist/do-config.js.map +1 -0
- package/dist/do-remote-auto.d.ts +75 -0
- package/dist/do-remote-auto.d.ts.map +1 -0
- package/dist/do-remote-auto.js +111 -0
- package/dist/do-remote-auto.js.map +1 -0
- package/dist/do.d.ts +621 -0
- package/dist/do.d.ts.map +1 -0
- package/dist/do.js +1882 -0
- package/dist/do.js.map +1 -0
- package/dist/drop-source.d.ts +96 -0
- package/dist/drop-source.d.ts.map +1 -0
- package/dist/drop-source.js +91 -0
- package/dist/drop-source.js.map +1 -0
- package/dist/eligibility.d.ts +46 -0
- package/dist/eligibility.d.ts.map +1 -0
- package/dist/eligibility.js +34 -0
- package/dist/eligibility.js.map +1 -0
- package/dist/env-config.d.ts +51 -0
- package/dist/env-config.d.ts.map +1 -0
- package/dist/env-config.js +272 -0
- package/dist/env-config.js.map +1 -0
- package/dist/failure-cause.d.ts +70 -0
- package/dist/failure-cause.d.ts.map +1 -0
- package/dist/failure-cause.js +126 -0
- package/dist/failure-cause.js.map +1 -0
- package/dist/format.d.ts +43 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +256 -0
- package/dist/format.js.map +1 -0
- package/dist/frontmatter.d.ts +215 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +345 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/gate-readiness.d.ts +84 -0
- package/dist/gate-readiness.d.ts.map +1 -0
- package/dist/gate-readiness.js +103 -0
- package/dist/gate-readiness.js.map +1 -0
- package/dist/gc.d.ts +165 -0
- package/dist/gc.d.ts.map +1 -0
- package/dist/gc.js +313 -0
- package/dist/gc.js.map +1 -0
- package/dist/gh-failure.d.ts +42 -0
- package/dist/gh-failure.d.ts.map +1 -0
- package/dist/gh-failure.js +49 -0
- package/dist/gh-failure.js.map +1 -0
- package/dist/git.d.ts +75 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +130 -0
- package/dist/git.js.map +1 -0
- package/dist/github.d.ts +187 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +343 -0
- package/dist/github.js.map +1 -0
- package/dist/harness.d.ts +242 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +157 -0
- package/dist/harness.js.map +1 -0
- package/dist/identity.d.ts +167 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +231 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +147 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/install-ci-branch-protection.d.ts +147 -0
- package/dist/install-ci-branch-protection.d.ts.map +1 -0
- package/dist/install-ci-branch-protection.js +166 -0
- package/dist/install-ci-branch-protection.js.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
- package/dist/install-ci-capabilities/close-job.d.ts +13 -0
- package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
- package/dist/install-ci-capabilities/close-job.js +26 -0
- package/dist/install-ci-capabilities/close-job.js.map +1 -0
- package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
- package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
- package/dist/install-ci-capabilities/example-noop.js +23 -0
- package/dist/install-ci-capabilities/example-noop.js.map +1 -0
- package/dist/install-ci-capabilities/intake.d.ts +15 -0
- package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
- package/dist/install-ci-capabilities/intake.js +28 -0
- package/dist/install-ci-capabilities/intake.js.map +1 -0
- package/dist/install-ci-capabilities/verify.d.ts +14 -0
- package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
- package/dist/install-ci-capabilities/verify.js +27 -0
- package/dist/install-ci-capabilities/verify.js.map +1 -0
- package/dist/install-ci-core.d.ts +446 -0
- package/dist/install-ci-core.d.ts.map +1 -0
- package/dist/install-ci-core.js +760 -0
- package/dist/install-ci-core.js.map +1 -0
- package/dist/install-ci-github.d.ts +167 -0
- package/dist/install-ci-github.d.ts.map +1 -0
- package/dist/install-ci-github.js +315 -0
- package/dist/install-ci-github.js.map +1 -0
- package/dist/install-ci.d.ts +105 -0
- package/dist/install-ci.d.ts.map +1 -0
- package/dist/install-ci.js +363 -0
- package/dist/install-ci.js.map +1 -0
- package/dist/intake-event.d.ts +88 -0
- package/dist/intake-event.d.ts.map +1 -0
- package/dist/intake-event.js +66 -0
- package/dist/intake-event.js.map +1 -0
- package/dist/intake-marker.d.ts +95 -0
- package/dist/intake-marker.d.ts.map +1 -0
- package/dist/intake-marker.js +127 -0
- package/dist/intake-marker.js.map +1 -0
- package/dist/intake-triage.d.ts +48 -0
- package/dist/intake-triage.d.ts.map +1 -0
- package/dist/intake-triage.js +95 -0
- package/dist/intake-triage.js.map +1 -0
- package/dist/intake-trigger-template.d.ts +185 -0
- package/dist/intake-trigger-template.d.ts.map +1 -0
- package/dist/intake-trigger-template.js +449 -0
- package/dist/intake-trigger-template.js.map +1 -0
- package/dist/intake.d.ts +569 -0
- package/dist/intake.d.ts.map +1 -0
- package/dist/intake.js +1628 -0
- package/dist/intake.js.map +1 -0
- package/dist/integration-core.d.ts +539 -0
- package/dist/integration-core.d.ts.map +1 -0
- package/dist/integration-core.js +2195 -0
- package/dist/integration-core.js.map +1 -0
- package/dist/integrator.d.ts +343 -0
- package/dist/integrator.d.ts.map +1 -0
- package/dist/integrator.js +400 -0
- package/dist/integrator.js.map +1 -0
- package/dist/isolation.d.ts +219 -0
- package/dist/isolation.d.ts.map +1 -0
- package/dist/isolation.js +261 -0
- package/dist/isolation.js.map +1 -0
- package/dist/issue-provider.d.ts +349 -0
- package/dist/issue-provider.d.ts.map +1 -0
- package/dist/issue-provider.js +360 -0
- package/dist/issue-provider.js.map +1 -0
- package/dist/item-lock.d.ts +626 -0
- package/dist/item-lock.d.ts.map +1 -0
- package/dist/item-lock.js +1381 -0
- package/dist/item-lock.js.map +1 -0
- package/dist/item-path.d.ts +49 -0
- package/dist/item-path.d.ts.map +1 -0
- package/dist/item-path.js +66 -0
- package/dist/item-path.js.map +1 -0
- package/dist/ledger-lint.d.ts +129 -0
- package/dist/ledger-lint.d.ts.map +1 -0
- package/dist/ledger-lint.js +249 -0
- package/dist/ledger-lint.js.map +1 -0
- package/dist/ledger-read.d.ts +357 -0
- package/dist/ledger-read.d.ts.map +1 -0
- package/dist/ledger-read.js +442 -0
- package/dist/ledger-read.js.map +1 -0
- package/dist/ledger-write.d.ts +330 -0
- package/dist/ledger-write.d.ts.map +1 -0
- package/dist/ledger-write.js +411 -0
- package/dist/ledger-write.js.map +1 -0
- package/dist/lifecycle-gather.d.ts +30 -0
- package/dist/lifecycle-gather.d.ts.map +1 -0
- package/dist/lifecycle-gather.js +205 -0
- package/dist/lifecycle-gather.js.map +1 -0
- package/dist/lifecycle-pools.d.ts +180 -0
- package/dist/lifecycle-pools.d.ts.map +1 -0
- package/dist/lifecycle-pools.js +78 -0
- package/dist/lifecycle-pools.js.map +1 -0
- package/dist/merge-question-surfacer.d.ts +166 -0
- package/dist/merge-question-surfacer.d.ts.map +1 -0
- package/dist/merge-question-surfacer.js +297 -0
- package/dist/merge-question-surfacer.js.map +1 -0
- package/dist/mint-adr.d.ts +126 -0
- package/dist/mint-adr.d.ts.map +1 -0
- package/dist/mint-adr.js +257 -0
- package/dist/mint-adr.js.map +1 -0
- package/dist/mirror-pool-scan.d.ts +125 -0
- package/dist/mirror-pool-scan.d.ts.map +1 -0
- package/dist/mirror-pool-scan.js +104 -0
- package/dist/mirror-pool-scan.js.map +1 -0
- package/dist/needs-attention.d.ts +341 -0
- package/dist/needs-attention.d.ts.map +1 -0
- package/dist/needs-attention.js +900 -0
- package/dist/needs-attention.js.map +1 -0
- package/dist/orphan-sidecar.d.ts +79 -0
- package/dist/orphan-sidecar.d.ts.map +1 -0
- package/dist/orphan-sidecar.js +71 -0
- package/dist/orphan-sidecar.js.map +1 -0
- package/dist/output.d.ts +48 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +66 -0
- package/dist/output.js.map +1 -0
- package/dist/pi-harness.d.ts +179 -0
- package/dist/pi-harness.d.ts.map +1 -0
- package/dist/pi-harness.js +342 -0
- package/dist/pi-harness.js.map +1 -0
- package/dist/placement.d.ts +99 -0
- package/dist/placement.d.ts.map +1 -0
- package/dist/placement.js +67 -0
- package/dist/placement.js.map +1 -0
- package/dist/prd-to-spec.d.ts +315 -0
- package/dist/prd-to-spec.d.ts.map +1 -0
- package/dist/prd-to-spec.js +684 -0
- package/dist/prd-to-spec.js.map +1 -0
- package/dist/prepare.d.ts +121 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +140 -0
- package/dist/prepare.js.map +1 -0
- package/dist/prompt.d.ts +360 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +499 -0
- package/dist/prompt.js.map +1 -0
- package/dist/protocol/ADR-FORMAT.md +47 -0
- package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
- package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
- package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
- package/dist/protocol/TASKING-PROTOCOL.md +122 -0
- package/dist/protocol/WORK-CONTRACT.md +276 -0
- package/dist/protocol/spec-template.md +71 -0
- package/dist/protocol/task-template.md +65 -0
- package/dist/readiness.d.ts +66 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +36 -0
- package/dist/readiness.js.map +1 -0
- package/dist/reap-branches.d.ts +102 -0
- package/dist/reap-branches.d.ts.map +1 -0
- package/dist/reap-branches.js +149 -0
- package/dist/reap-branches.js.map +1 -0
- package/dist/recover-isolated.d.ts +72 -0
- package/dist/recover-isolated.d.ts.map +1 -0
- package/dist/recover-isolated.js +188 -0
- package/dist/recover-isolated.js.map +1 -0
- package/dist/registry.d.ts +172 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +296 -0
- package/dist/registry.js.map +1 -0
- package/dist/repo-config.d.ts +201 -0
- package/dist/repo-config.d.ts.map +1 -0
- package/dist/repo-config.js +414 -0
- package/dist/repo-config.js.map +1 -0
- package/dist/repo-key.d.ts +20 -0
- package/dist/repo-key.d.ts.map +1 -0
- package/dist/repo-key.js +68 -0
- package/dist/repo-key.js.map +1 -0
- package/dist/repo-mirror.d.ts +177 -0
- package/dist/repo-mirror.d.ts.map +1 -0
- package/dist/repo-mirror.js +271 -0
- package/dist/repo-mirror.js.map +1 -0
- package/dist/retry-backoff.d.ts +90 -0
- package/dist/retry-backoff.d.ts.map +1 -0
- package/dist/retry-backoff.js +98 -0
- package/dist/retry-backoff.js.map +1 -0
- package/dist/review-gate.d.ts +173 -0
- package/dist/review-gate.d.ts.map +1 -0
- package/dist/review-gate.js +261 -0
- package/dist/review-gate.js.map +1 -0
- package/dist/review-verdict.d.ts +149 -0
- package/dist/review-verdict.d.ts.map +1 -0
- package/dist/review-verdict.js +332 -0
- package/dist/review-verdict.js.map +1 -0
- package/dist/run.d.ts +221 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +963 -0
- package/dist/run.js.map +1 -0
- package/dist/scan.d.ts +308 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +374 -0
- package/dist/scan.js.map +1 -0
- package/dist/select-order.d.ts +75 -0
- package/dist/select-order.d.ts.map +1 -0
- package/dist/select-order.js +108 -0
- package/dist/select-order.js.map +1 -0
- package/dist/select-priority.d.ts +188 -0
- package/dist/select-priority.d.ts.map +1 -0
- package/dist/select-priority.js +80 -0
- package/dist/select-priority.js.map +1 -0
- package/dist/select.d.ts +25 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +43 -0
- package/dist/select.js.map +1 -0
- package/dist/session-path.d.ts +36 -0
- package/dist/session-path.d.ts.map +1 -0
- package/dist/session-path.js +129 -0
- package/dist/session-path.js.map +1 -0
- package/dist/sidecar-apply.d.ts +83 -0
- package/dist/sidecar-apply.d.ts.map +1 -0
- package/dist/sidecar-apply.js +111 -0
- package/dist/sidecar-apply.js.map +1 -0
- package/dist/sidecar.d.ts +245 -0
- package/dist/sidecar.d.ts.map +1 -0
- package/dist/sidecar.js +481 -0
- package/dist/sidecar.js.map +1 -0
- package/dist/slug-namespace.d.ts +204 -0
- package/dist/slug-namespace.d.ts.map +1 -0
- package/dist/slug-namespace.js +229 -0
- package/dist/slug-namespace.js.map +1 -0
- package/dist/spec-complete.d.ts +44 -0
- package/dist/spec-complete.d.ts.map +1 -0
- package/dist/spec-complete.js +69 -0
- package/dist/spec-complete.js.map +1 -0
- package/dist/start.d.ts +97 -0
- package/dist/start.d.ts.map +1 -0
- package/dist/start.js +633 -0
- package/dist/start.js.map +1 -0
- package/dist/status.d.ts +199 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +228 -0
- package/dist/status.js.map +1 -0
- package/dist/surface-gate.d.ts +162 -0
- package/dist/surface-gate.d.ts.map +1 -0
- package/dist/surface-gate.js +206 -0
- package/dist/surface-gate.js.map +1 -0
- package/dist/surface-persist.d.ts +86 -0
- package/dist/surface-persist.d.ts.map +1 -0
- package/dist/surface-persist.js +129 -0
- package/dist/surface-persist.js.map +1 -0
- package/dist/tasker-review-loop.d.ts +249 -0
- package/dist/tasker-review-loop.d.ts.map +1 -0
- package/dist/tasker-review-loop.js +369 -0
- package/dist/tasker-review-loop.js.map +1 -0
- package/dist/tasking-eligibility.d.ts +74 -0
- package/dist/tasking-eligibility.d.ts.map +1 -0
- package/dist/tasking-eligibility.js +52 -0
- package/dist/tasking-eligibility.js.map +1 -0
- package/dist/tasking-lock.d.ts +111 -0
- package/dist/tasking-lock.d.ts.map +1 -0
- package/dist/tasking-lock.js +256 -0
- package/dist/tasking-lock.js.map +1 -0
- package/dist/tasking.d.ts +275 -0
- package/dist/tasking.d.ts.map +1 -0
- package/dist/tasking.js +952 -0
- package/dist/tasking.js.map +1 -0
- package/dist/triage-gate.d.ts +127 -0
- package/dist/triage-gate.d.ts.map +1 -0
- package/dist/triage-gate.js +139 -0
- package/dist/triage-gate.js.map +1 -0
- package/dist/triage-persist.d.ts +163 -0
- package/dist/triage-persist.d.ts.map +1 -0
- package/dist/triage-persist.js +387 -0
- package/dist/triage-persist.js.map +1 -0
- package/dist/verdict-json.d.ts +32 -0
- package/dist/verdict-json.d.ts.map +1 -0
- package/dist/verdict-json.js +74 -0
- package/dist/verdict-json.js.map +1 -0
- package/dist/verify-workflow-template.d.ts +60 -0
- package/dist/verify-workflow-template.d.ts.map +1 -0
- package/dist/verify-workflow-template.js +126 -0
- package/dist/verify-workflow-template.js.map +1 -0
- package/dist/verify.d.ts +60 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +62 -0
- package/dist/verify.js.map +1 -0
- package/dist/watch-session.d.ts +112 -0
- package/dist/watch-session.d.ts.map +1 -0
- package/dist/watch-session.js +347 -0
- package/dist/watch-session.js.map +1 -0
- package/dist/work-layout.d.ts +198 -0
- package/dist/work-layout.d.ts.map +1 -0
- package/dist/work-layout.js +217 -0
- package/dist/work-layout.js.map +1 -0
- package/dist/work-on.d.ts +154 -0
- package/dist/work-on.d.ts.map +1 -0
- package/dist/work-on.js +387 -0
- package/dist/work-on.js.map +1 -0
- package/dist/workspace.d.ts +224 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +325 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +46 -2
- package/src/advance-ci-template.ts +203 -0
- package/src/advance-classify.ts +197 -0
- package/src/advance-drivers.ts +414 -0
- package/src/advance-isolated.ts +432 -0
- package/src/advance-lifecycle-template.ts +791 -0
- package/src/advance-loop-driver.ts +745 -0
- package/src/advance-treeless-publish.ts +177 -0
- package/src/advance.ts +1564 -0
- package/src/advancing-lock.ts +988 -0
- package/src/agent-launch.ts +137 -0
- package/src/agent-stop.ts +361 -0
- package/src/apply-decide.ts +242 -0
- package/src/apply-merge-action.ts +502 -0
- package/src/apply-persist.ts +518 -0
- package/src/arbiter.ts +372 -0
- package/src/brand.ts +111 -0
- package/src/buildable-body.ts +196 -0
- package/src/categorise.ts +158 -0
- package/src/claim-cas.ts +513 -0
- package/src/cli-spinner.ts +225 -0
- package/src/cli.ts +4369 -0
- package/src/close-job-template.ts +236 -0
- package/src/close-job.ts +319 -0
- package/src/complete.ts +1379 -0
- package/src/concurrency.ts +151 -0
- package/src/config-override.ts +116 -0
- package/src/config.ts +883 -0
- package/src/continue-branch.ts +542 -0
- package/src/cwd-section.ts +392 -0
- package/src/decision-engine.ts +272 -0
- package/src/detect.ts +124 -0
- package/src/do-autopick.ts +223 -0
- package/src/do-config.ts +589 -0
- package/src/do-remote-auto.ts +197 -0
- package/src/do.ts +2623 -0
- package/src/drop-source.ts +194 -0
- package/src/eligibility.ts +79 -0
- package/src/env-config.ts +305 -0
- package/src/failure-cause.ts +142 -0
- package/src/format.ts +313 -0
- package/src/frontmatter.ts +485 -0
- package/src/gate-readiness.ts +147 -0
- package/src/gc.ts +510 -0
- package/src/gh-failure.ts +53 -0
- package/src/git.ts +186 -0
- package/src/github.ts +468 -0
- package/src/harness.ts +355 -0
- package/src/identity.ts +322 -0
- package/src/index.ts +785 -0
- package/src/install-ci-branch-protection.ts +255 -0
- package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
- package/src/install-ci-capabilities/close-job.ts +32 -0
- package/src/install-ci-capabilities/example-noop.ts +24 -0
- package/src/install-ci-capabilities/intake.ts +34 -0
- package/src/install-ci-capabilities/verify.ts +33 -0
- package/src/install-ci-core.ts +1088 -0
- package/src/install-ci-github.ts +376 -0
- package/src/install-ci.ts +552 -0
- package/src/intake-event.ts +102 -0
- package/src/intake-marker.ts +195 -0
- package/src/intake-triage.ts +138 -0
- package/src/intake-trigger-template.ts +591 -0
- package/src/intake.ts +2445 -0
- package/src/integration-core.ts +3065 -0
- package/src/integrator.ts +771 -0
- package/src/isolation.ts +484 -0
- package/src/issue-provider.ts +733 -0
- package/src/item-lock.ts +1858 -0
- package/src/item-path.ts +75 -0
- package/src/ledger-lint.ts +332 -0
- package/src/ledger-read.ts +924 -0
- package/src/ledger-write.ts +865 -0
- package/src/lifecycle-gather.ts +298 -0
- package/src/lifecycle-pools.ts +250 -0
- package/src/merge-question-surfacer.ts +496 -0
- package/src/mint-adr.ts +362 -0
- package/src/mirror-pool-scan.ts +240 -0
- package/src/needs-attention.ts +1506 -0
- package/src/orphan-sidecar.ts +150 -0
- package/src/output.ts +89 -0
- package/src/pi-harness.ts +403 -0
- package/src/placement.ts +131 -0
- package/src/prd-to-spec.ts +1023 -0
- package/src/prepare.ts +230 -0
- package/src/prompt.ts +760 -0
- package/src/readiness.ts +98 -0
- package/src/reap-branches.ts +278 -0
- package/src/recover-isolated.ts +276 -0
- package/src/registry.ts +475 -0
- package/src/repo-config.ts +550 -0
- package/src/repo-key.ts +74 -0
- package/src/repo-mirror.ts +367 -0
- package/src/retry-backoff.ts +130 -0
- package/src/review-gate.ts +389 -0
- package/src/review-verdict.ts +422 -0
- package/src/run.ts +1430 -0
- package/src/scan.ts +611 -0
- package/src/select-order.ts +143 -0
- package/src/select-priority.ts +266 -0
- package/src/select.ts +62 -0
- package/src/session-path.ts +153 -0
- package/src/sidecar-apply.ts +216 -0
- package/src/sidecar.ts +700 -0
- package/src/slug-namespace.ts +367 -0
- package/src/spec-complete.ts +118 -0
- package/src/start.ts +974 -0
- package/src/status.ts +441 -0
- package/src/surface-gate.ts +337 -0
- package/src/surface-persist.ts +241 -0
- package/src/tasker-review-loop.ts +671 -0
- package/src/tasking-eligibility.ts +114 -0
- package/src/tasking-lock.ts +416 -0
- package/src/tasking.ts +1438 -0
- package/src/triage-gate.ts +248 -0
- package/src/triage-persist.ts +570 -0
- package/src/verdict-json.ts +73 -0
- package/src/verify-workflow-template.ts +159 -0
- package/src/verify.ts +123 -0
- package/src/watch-session.ts +397 -0
- package/src/work-layout.ts +262 -0
- package/src/work-on.ts +660 -0
- package/src/workspace.ts +502 -0
package/dist/sidecar.js
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
import { parseSlugArg } from './slug-namespace.js';
|
|
2
|
+
import { workItemRel } from './work-layout.js';
|
|
3
|
+
const SIDECAR_KINDS = new Set([
|
|
4
|
+
'merge',
|
|
5
|
+
'stuck',
|
|
6
|
+
'triage',
|
|
7
|
+
'spec',
|
|
8
|
+
]);
|
|
9
|
+
/** Raised for a structurally-invalid sidecar the parser cannot trust. */
|
|
10
|
+
export class SidecarParseError extends Error {
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = 'SidecarParseError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Is this entry ANSWERED? The MAINTAINER-RESOLVED §1 predicate: a non-empty
|
|
18
|
+
* `answer` ⇒ answered, with the explicit `answered=…` override (carried in the
|
|
19
|
+
* per-entry HTML comment) winning when present. An explicit `answered=false`
|
|
20
|
+
* overrides a non-empty answer back to unanswered; an explicit `answered=true`
|
|
21
|
+
* forces answered even with an empty answer.
|
|
22
|
+
*/
|
|
23
|
+
export function isEntryAnswered(entry) {
|
|
24
|
+
if (entry.answeredOverride !== undefined) {
|
|
25
|
+
return entry.answeredOverride;
|
|
26
|
+
}
|
|
27
|
+
return entry.answer.trim() !== '';
|
|
28
|
+
}
|
|
29
|
+
/** Every entry that is NOT yet answered (derived from the entries). */
|
|
30
|
+
export function pendingEntries(model) {
|
|
31
|
+
return model.entries.filter((entry) => !isEntryAnswered(entry));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Is the WHOLE sidecar answered? DERIVED from the entries (never read off the
|
|
35
|
+
* identity comment mirror). An EMPTY sidecar (no entries) is NOT all-answered —
|
|
36
|
+
* a sidecar with no open questions should not exist (it would be deleted on
|
|
37
|
+
* full resolution), so `allAnswered` over zero entries is `false`, keeping the
|
|
38
|
+
* "pending ⇒ NO-OP" classifier honest.
|
|
39
|
+
*/
|
|
40
|
+
export function allAnswered(model) {
|
|
41
|
+
return model.entries.length > 0 && pendingEntries(model).length === 0;
|
|
42
|
+
}
|
|
43
|
+
const TYPE_TO_NAMESPACE = {
|
|
44
|
+
spec: 'spec',
|
|
45
|
+
task: 'task',
|
|
46
|
+
observation: 'observation',
|
|
47
|
+
};
|
|
48
|
+
/** Map a namespaced-identity prefix onto the sidecar type. */
|
|
49
|
+
function typeForNamespace(explicit, rawPrefix) {
|
|
50
|
+
// A `spec:` prefix / `explicit === 'spec'` maps to the `'spec'` type — NOT the
|
|
51
|
+
// `task` fall-through below — so `spec:<slug>` gets its own `spec-<slug>`
|
|
52
|
+
// lock/sidecar entry.
|
|
53
|
+
if (explicit === 'spec') {
|
|
54
|
+
return 'spec';
|
|
55
|
+
}
|
|
56
|
+
if (explicit === 'task') {
|
|
57
|
+
return 'task';
|
|
58
|
+
}
|
|
59
|
+
// `parseSlugArg` only knows `task:`/`prd:`; the sidecar adds the
|
|
60
|
+
// `observation:` namespace (`obs:` is the CLI alias the verb resolves; the
|
|
61
|
+
// sidecar stores the canonical `observation`). A bare slug (no prefix)
|
|
62
|
+
// defaults to the task namespace, matching the resolver's "bare = task".
|
|
63
|
+
if (rawPrefix === 'observation' || rawPrefix === 'obs') {
|
|
64
|
+
return 'observation';
|
|
65
|
+
}
|
|
66
|
+
return 'task';
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve a namespaced-identity argument (`spec:autotask`, `task:foo`,
|
|
70
|
+
* `observation:bar`, `obs:bar`, or a bare `<slug>` = task) into its
|
|
71
|
+
* `{type, slug, item}`. PURE string work over {@link parseSlugArg} — the
|
|
72
|
+
* resolver is the single source of truth for the task/spec split; the sidecar
|
|
73
|
+
* extends it with the `observation` namespace.
|
|
74
|
+
*/
|
|
75
|
+
export function resolveSidecarIdentity(identity) {
|
|
76
|
+
// `observation:`/`obs:` are not slug-namespace prefixes — peel them first.
|
|
77
|
+
const colon = identity.indexOf(':');
|
|
78
|
+
if (colon !== -1) {
|
|
79
|
+
const prefix = identity.slice(0, colon);
|
|
80
|
+
if (prefix === 'observation' || prefix === 'obs') {
|
|
81
|
+
const slug = identity.slice(colon + 1);
|
|
82
|
+
return { type: 'observation', slug, item: `observation:${slug}` };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const parsed = parseSlugArg(identity);
|
|
86
|
+
const type = typeForNamespace(parsed.explicit, identity.slice(0, colon));
|
|
87
|
+
return {
|
|
88
|
+
type,
|
|
89
|
+
slug: parsed.slug,
|
|
90
|
+
item: `${TYPE_TO_NAMESPACE[type]}:${parsed.slug}`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Derive the sidecar PATH `work/questions/<type>-<slug>.md` from the item's
|
|
95
|
+
* namespaced identity. The identity is the single source of truth; `:`→`-` for
|
|
96
|
+
* the filename. Accepts the same forms as {@link resolveSidecarIdentity}.
|
|
97
|
+
*/
|
|
98
|
+
export function sidecarPathFor(identity) {
|
|
99
|
+
const { type, slug } = resolveSidecarIdentity(identity);
|
|
100
|
+
return workItemRel('questions', `${type}-${slug}.md`);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The ordered candidate sidecar PATHS a READER should probe for `identity`: the
|
|
104
|
+
* canonical {@link sidecarPathFor} path FIRST, then any legacy-data fallback that
|
|
105
|
+
* may still be on disk before the migration command converts it.
|
|
106
|
+
*
|
|
107
|
+
* MIGRATE step (prd `prd-to-spec-vocabulary-cutover-and-migration-command`): the
|
|
108
|
+
* producer side now emits `spec:<slug>`, so {@link sidecarPathFor} resolves
|
|
109
|
+
* `work/questions/spec-<slug>.md`. But the ON-DISK sidecar is still the legacy
|
|
110
|
+
* `work/questions/prd-<slug>.md` until `dorfl prd-to-spec` renames the DATA. So a
|
|
111
|
+
* `spec`-typed identity ALSO probes the legacy `prd-<slug>.md` as a fallback, and
|
|
112
|
+
* a reader takes the FIRST candidate that exists. This is a FILE-PATH DATA alias
|
|
113
|
+
* the migration command removes (it converts `prd-<slug>.md → spec-<slug>.md` on
|
|
114
|
+
* disk); it is NOT the `SlugNamespace`/`SidecarType` `'prd'` type member. Every
|
|
115
|
+
* non-`spec` type has a single candidate (its canonical path), unchanged.
|
|
116
|
+
*/
|
|
117
|
+
export function sidecarPathCandidates(identity) {
|
|
118
|
+
const { type, slug } = resolveSidecarIdentity(identity);
|
|
119
|
+
const canonical = workItemRel('questions', `${type}-${slug}.md`);
|
|
120
|
+
if (type === 'spec') {
|
|
121
|
+
return [canonical, workItemRel('questions', `prd-${slug}.md`)];
|
|
122
|
+
}
|
|
123
|
+
return [canonical];
|
|
124
|
+
}
|
|
125
|
+
// --- Format constants -----------------------------------------------------
|
|
126
|
+
/** The fixed answer marker the human types prose under. */
|
|
127
|
+
const ANSWER_MARKER = '**Your answer** (write below this line):';
|
|
128
|
+
// --- Parse ----------------------------------------------------------------
|
|
129
|
+
/** Pull the next monotonic id given the highest existing id number. */
|
|
130
|
+
function nextId(entries) {
|
|
131
|
+
let max = 0;
|
|
132
|
+
for (const entry of entries) {
|
|
133
|
+
const m = /^q(\d+)$/.exec(entry.id);
|
|
134
|
+
if (m) {
|
|
135
|
+
const n = Number(m[1]);
|
|
136
|
+
if (n > max) {
|
|
137
|
+
max = n;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return `q${max + 1}`;
|
|
142
|
+
}
|
|
143
|
+
/** Normalise CRLF → LF and strip a leading BOM. */
|
|
144
|
+
function normaliseText(text) {
|
|
145
|
+
return text.replace(/\r\n/g, '\n').replace(/^\uFEFF/, '');
|
|
146
|
+
}
|
|
147
|
+
/** Strip leading + trailing blank lines, leaving inner blanks intact. */
|
|
148
|
+
function trimBlankLines(value) {
|
|
149
|
+
return value.replace(/^\n+/, '').replace(/\n+$/, '');
|
|
150
|
+
}
|
|
151
|
+
/** Parse the top identity HTML comment. */
|
|
152
|
+
function parseIdentityComment(line) {
|
|
153
|
+
const match = /^<!--\s*dorfl-sidecar:\s*(.*?)\s*-->\s*$/.exec(line);
|
|
154
|
+
if (!match) {
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
const fields = {};
|
|
158
|
+
for (const token of match[1].split(/\s+/)) {
|
|
159
|
+
if (token === '') {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
const eq = token.indexOf('=');
|
|
163
|
+
if (eq === -1) {
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
fields[token.slice(0, eq)] = token.slice(eq + 1);
|
|
167
|
+
}
|
|
168
|
+
const item = fields['item'];
|
|
169
|
+
if (item === undefined || item === '') {
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
const out = { item };
|
|
173
|
+
if (fields['allAnswered'] !== undefined) {
|
|
174
|
+
out.allAnswered = fields['allAnswered'] === 'true';
|
|
175
|
+
}
|
|
176
|
+
return out;
|
|
177
|
+
}
|
|
178
|
+
/** Parse a per-entry `<!-- qN fields: key=val … -->` HTML comment. */
|
|
179
|
+
function parseEntryComment(line) {
|
|
180
|
+
const match = /^<!--\s*q\d+\s+fields:\s*(.*?)\s*-->\s*$/.exec(line);
|
|
181
|
+
if (!match) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
const out = {};
|
|
185
|
+
for (const token of match[1].split(/\s+/)) {
|
|
186
|
+
if (token === '') {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
const eq = token.indexOf('=');
|
|
190
|
+
if (eq === -1) {
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
const key = token.slice(0, eq);
|
|
194
|
+
const value = token.slice(eq + 1);
|
|
195
|
+
if (key === 'id') {
|
|
196
|
+
out.id = value;
|
|
197
|
+
}
|
|
198
|
+
else if (key === 'answered') {
|
|
199
|
+
if (value === 'true') {
|
|
200
|
+
out.answered = true;
|
|
201
|
+
}
|
|
202
|
+
else if (value === 'false') {
|
|
203
|
+
out.answered = false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else if (key === 'kind') {
|
|
207
|
+
// Silent-on-malformed (retired `disposition` precedent): a mistyped or
|
|
208
|
+
// unknown kind reads as `undefined`, never a throw, never a coerce.
|
|
209
|
+
if (SIDECAR_KINDS.has(value)) {
|
|
210
|
+
out.kind = value;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return out;
|
|
215
|
+
}
|
|
216
|
+
/** Parse one entry's content lines (between two `## ` headings) into an entry. */
|
|
217
|
+
function parseEntrySection(lines) {
|
|
218
|
+
let id = '';
|
|
219
|
+
let question = '';
|
|
220
|
+
const contextLines = [];
|
|
221
|
+
let inBlockquote = false;
|
|
222
|
+
let defaultVal;
|
|
223
|
+
let answeredOverride;
|
|
224
|
+
let kind;
|
|
225
|
+
let answerStart = -1;
|
|
226
|
+
for (let i = 0; i < lines.length; i++) {
|
|
227
|
+
const line = lines[i];
|
|
228
|
+
if (line === ANSWER_MARKER) {
|
|
229
|
+
answerStart = i + 1;
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
const entryFields = parseEntryComment(line);
|
|
233
|
+
if (entryFields) {
|
|
234
|
+
if (entryFields.id !== undefined) {
|
|
235
|
+
id = entryFields.id;
|
|
236
|
+
}
|
|
237
|
+
if (entryFields.answered !== undefined) {
|
|
238
|
+
answeredOverride = entryFields.answered;
|
|
239
|
+
}
|
|
240
|
+
if (entryFields.kind !== undefined) {
|
|
241
|
+
kind = entryFields.kind;
|
|
242
|
+
}
|
|
243
|
+
inBlockquote = false;
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
// Blockquote context: collect the FIRST contiguous run of `> …` lines.
|
|
247
|
+
// Once a non-quote line breaks the run, later `>` lines (e.g. the human
|
|
248
|
+
// quoting something in their answer's preamble) are ignored as context.
|
|
249
|
+
const blockquoteMatch = /^>\s?(.*)$/.exec(line);
|
|
250
|
+
if (blockquoteMatch && (contextLines.length === 0 || inBlockquote)) {
|
|
251
|
+
contextLines.push(blockquoteMatch[1]);
|
|
252
|
+
inBlockquote = true;
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
if (inBlockquote && !blockquoteMatch && line.trim() !== '') {
|
|
256
|
+
inBlockquote = false;
|
|
257
|
+
}
|
|
258
|
+
// Italic "_Suggested default: …_" line.
|
|
259
|
+
const defaultMatch = /^_Suggested default:\s*(.+?)_\s*$/.exec(line);
|
|
260
|
+
if (defaultMatch && defaultVal === undefined) {
|
|
261
|
+
defaultVal = defaultMatch[1];
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
// Bold question line (first one wins; skip the answer marker line which
|
|
265
|
+
// has trailing `(write below this line):` and so does not match this regex).
|
|
266
|
+
const questionMatch = /^\*\*(.+?)\*\*\s*$/.exec(line);
|
|
267
|
+
if (questionMatch && question === '') {
|
|
268
|
+
question = questionMatch[1];
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (id === '') {
|
|
273
|
+
throw new SidecarParseError('sidecar entry is missing its id (HTML comment)');
|
|
274
|
+
}
|
|
275
|
+
const context = trimBlankLines(contextLines.join('\n'));
|
|
276
|
+
let answer = '';
|
|
277
|
+
if (answerStart >= 0) {
|
|
278
|
+
answer = trimBlankLines(lines.slice(answerStart).join('\n'));
|
|
279
|
+
}
|
|
280
|
+
// Re-interpret the override: store it ONLY when it DISAGREES with the
|
|
281
|
+
// answer-derived predicate (so a redundant `answered=false` over an empty
|
|
282
|
+
// answer cannot become a sticky override that freezes a later tolerant edit).
|
|
283
|
+
const derivedAnswered = answer.trim() !== '';
|
|
284
|
+
let finalOverride;
|
|
285
|
+
if (answeredOverride === true && !derivedAnswered) {
|
|
286
|
+
finalOverride = true;
|
|
287
|
+
}
|
|
288
|
+
else if (answeredOverride === false && derivedAnswered) {
|
|
289
|
+
finalOverride = false;
|
|
290
|
+
}
|
|
291
|
+
const entry = {
|
|
292
|
+
id,
|
|
293
|
+
question,
|
|
294
|
+
context,
|
|
295
|
+
answer,
|
|
296
|
+
};
|
|
297
|
+
if (defaultVal !== undefined) {
|
|
298
|
+
entry.default = defaultVal;
|
|
299
|
+
}
|
|
300
|
+
if (finalOverride !== undefined) {
|
|
301
|
+
entry.answeredOverride = finalOverride;
|
|
302
|
+
}
|
|
303
|
+
if (kind !== undefined) {
|
|
304
|
+
entry.kind = kind;
|
|
305
|
+
}
|
|
306
|
+
return entry;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Parse a sidecar document into its typed model. The on-disk format is the
|
|
310
|
+
* human-readable Markdown + HTML-comments form (see the module doc); the
|
|
311
|
+
* identity comment lives at the top, each entry opens with a `## ` heading, and
|
|
312
|
+
* the answer is heading-delimited (everything between the answer marker and the
|
|
313
|
+
* next `## ` heading is the answer). TOLERANT of the human typing only under
|
|
314
|
+
* the answer marker: a non-empty answer ⇒ answered (no comment edit needed).
|
|
315
|
+
*/
|
|
316
|
+
export function parseSidecar(text) {
|
|
317
|
+
const lines = normaliseText(text).split('\n');
|
|
318
|
+
// Find the identity HTML comment (scan from the top, skipping blank lines).
|
|
319
|
+
let identity;
|
|
320
|
+
let cursor = 0;
|
|
321
|
+
while (cursor < lines.length) {
|
|
322
|
+
const line = lines[cursor];
|
|
323
|
+
cursor++;
|
|
324
|
+
if (line.trim() === '') {
|
|
325
|
+
continue;
|
|
326
|
+
}
|
|
327
|
+
identity = parseIdentityComment(line);
|
|
328
|
+
if (identity) {
|
|
329
|
+
break;
|
|
330
|
+
}
|
|
331
|
+
throw new SidecarParseError('sidecar must open with an `<!-- dorfl-sidecar: … -->` identity comment');
|
|
332
|
+
}
|
|
333
|
+
if (!identity) {
|
|
334
|
+
throw new SidecarParseError('sidecar is missing its identity HTML comment');
|
|
335
|
+
}
|
|
336
|
+
const resolved = resolveSidecarIdentity(identity.item);
|
|
337
|
+
// Split the rest into per-entry sections on `## ` headings. Anything before
|
|
338
|
+
// the first heading is preamble we ignore (a stray human note, or the blank
|
|
339
|
+
// line after the identity comment).
|
|
340
|
+
const entries = [];
|
|
341
|
+
let sectionLines;
|
|
342
|
+
for (let i = cursor; i < lines.length; i++) {
|
|
343
|
+
const line = lines[i];
|
|
344
|
+
if (/^##\s+/.test(line)) {
|
|
345
|
+
if (sectionLines !== undefined) {
|
|
346
|
+
entries.push(parseEntrySection(sectionLines));
|
|
347
|
+
}
|
|
348
|
+
sectionLines = [];
|
|
349
|
+
continue;
|
|
350
|
+
}
|
|
351
|
+
if (sectionLines !== undefined) {
|
|
352
|
+
sectionLines.push(line);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
if (sectionLines !== undefined) {
|
|
356
|
+
entries.push(parseEntrySection(sectionLines));
|
|
357
|
+
}
|
|
358
|
+
return {
|
|
359
|
+
item: resolved.item,
|
|
360
|
+
type: resolved.type,
|
|
361
|
+
slug: resolved.slug,
|
|
362
|
+
entries,
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
// --- Serialise ------------------------------------------------------------
|
|
366
|
+
/** Collapse internal newlines so a value renders as a single Markdown line. */
|
|
367
|
+
function singleLine(value) {
|
|
368
|
+
return value.replace(/\s*\n\s*/g, ' ').trim();
|
|
369
|
+
}
|
|
370
|
+
/** Render a multi-line value as a Markdown blockquote (each line `> …`). */
|
|
371
|
+
function blockquote(value) {
|
|
372
|
+
const trimmed = trimBlankLines(value);
|
|
373
|
+
if (trimmed === '') {
|
|
374
|
+
return [];
|
|
375
|
+
}
|
|
376
|
+
return trimmed.split('\n').map((line) => (line === '' ? '>' : `> ${line}`));
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Serialise a model to its CANONICAL human-readable Markdown text. The identity
|
|
380
|
+
* HTML comment at the top carries `item`/`type`/`slug` + the derived
|
|
381
|
+
* `allAnswered` mirror; each entry is a `## Qn` heading, a bold question line,
|
|
382
|
+
* a blockquote context (when non-empty), an italic suggested-default (when
|
|
383
|
+
* present), a per-entry HTML comment carrying `id` (and an explicit `answered`
|
|
384
|
+
* override when it disagrees with the derived predicate), the fixed answer
|
|
385
|
+
* marker, then the answer prose. Round-trip is SEMANTIC:
|
|
386
|
+
* `parseSidecar(serialiseSidecar(m))` recovers an equal MODEL; re-serialising
|
|
387
|
+
* canonicalises the text.
|
|
388
|
+
*/
|
|
389
|
+
export function serialiseSidecar(model) {
|
|
390
|
+
const out = [];
|
|
391
|
+
const identityParts = [
|
|
392
|
+
`item=${model.item}`,
|
|
393
|
+
`type=${model.type}`,
|
|
394
|
+
`slug=${model.slug}`,
|
|
395
|
+
`allAnswered=${allAnswered(model)}`,
|
|
396
|
+
];
|
|
397
|
+
out.push(`<!-- dorfl-sidecar: ${identityParts.join(' ')} -->`);
|
|
398
|
+
model.entries.forEach((entry) => {
|
|
399
|
+
out.push('');
|
|
400
|
+
const heading = entry.id.replace(/^q/, 'Q');
|
|
401
|
+
out.push(`## ${heading}`);
|
|
402
|
+
out.push('');
|
|
403
|
+
out.push(`**${singleLine(entry.question)}**`);
|
|
404
|
+
const ctx = blockquote(entry.context);
|
|
405
|
+
if (ctx.length > 0) {
|
|
406
|
+
out.push('');
|
|
407
|
+
out.push(...ctx);
|
|
408
|
+
}
|
|
409
|
+
if (entry.default !== undefined && entry.default.trim() !== '') {
|
|
410
|
+
out.push('');
|
|
411
|
+
out.push(`_Suggested default: ${singleLine(entry.default)}_`);
|
|
412
|
+
}
|
|
413
|
+
out.push('');
|
|
414
|
+
// Per-entry machine comment. The override is emitted ONLY when it
|
|
415
|
+
// DISAGREES with the answer-derived predicate (otherwise the
|
|
416
|
+
// just-serialised line would re-parse as a sticky override).
|
|
417
|
+
const fields = [`id=${entry.id}`];
|
|
418
|
+
const derivedAnswered = entry.answer.trim() !== '';
|
|
419
|
+
if (entry.answeredOverride === true && !derivedAnswered) {
|
|
420
|
+
fields.push('answered=true');
|
|
421
|
+
}
|
|
422
|
+
else if (entry.answeredOverride === false && derivedAnswered) {
|
|
423
|
+
fields.push('answered=false');
|
|
424
|
+
}
|
|
425
|
+
if (entry.kind !== undefined) {
|
|
426
|
+
fields.push(`kind=${entry.kind}`);
|
|
427
|
+
}
|
|
428
|
+
out.push(`<!-- ${entry.id} fields: ${fields.join(' ')} -->`);
|
|
429
|
+
out.push('');
|
|
430
|
+
out.push(ANSWER_MARKER);
|
|
431
|
+
const answerText = trimBlankLines(entry.answer);
|
|
432
|
+
if (answerText !== '') {
|
|
433
|
+
out.push('');
|
|
434
|
+
out.push(answerText);
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
out.push('');
|
|
438
|
+
return out.join('\n');
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Append `newQuestions` to the model, minting `qN+1…` ids off the highest
|
|
442
|
+
* existing id. NEVER overwrites or mutates an existing entry (answered or not) —
|
|
443
|
+
* the sidecar is the item's full Q&A history. Appending flips a previously-
|
|
444
|
+
* `allAnswered` sidecar back to not-all-answered (the new entries are pending).
|
|
445
|
+
* Returns a NEW model (the input is not mutated).
|
|
446
|
+
*/
|
|
447
|
+
export function appendQuestions(model, newQuestions) {
|
|
448
|
+
const entries = model.entries.slice();
|
|
449
|
+
for (const q of newQuestions) {
|
|
450
|
+
const entry = {
|
|
451
|
+
id: nextId(entries),
|
|
452
|
+
question: q.question,
|
|
453
|
+
context: q.context ?? '',
|
|
454
|
+
answer: '',
|
|
455
|
+
};
|
|
456
|
+
if (q.default !== undefined) {
|
|
457
|
+
entry.default = q.default;
|
|
458
|
+
}
|
|
459
|
+
if (q.kind !== undefined) {
|
|
460
|
+
entry.kind = q.kind;
|
|
461
|
+
}
|
|
462
|
+
entries.push(entry);
|
|
463
|
+
}
|
|
464
|
+
return { ...model, entries };
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Build a fresh sidecar model for `identity` carrying `newQuestions` (ids minted
|
|
468
|
+
* `q1…`). The first-pass constructor the surface-question rung uses before there
|
|
469
|
+
* is any sidecar to append to.
|
|
470
|
+
*/
|
|
471
|
+
export function newSidecar(identity, newQuestions) {
|
|
472
|
+
const resolved = resolveSidecarIdentity(identity);
|
|
473
|
+
const base = {
|
|
474
|
+
item: resolved.item,
|
|
475
|
+
type: resolved.type,
|
|
476
|
+
slug: resolved.slug,
|
|
477
|
+
entries: [],
|
|
478
|
+
};
|
|
479
|
+
return appendQuestions(base, newQuestions);
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=sidecar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../src/sidecar.ts"],"names":[],"mappings":"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"}
|