@isaacriehm/cairn-core 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/LICENSE +21 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/claude/error.d.ts +33 -0
- package/dist/claude/error.js +58 -0
- package/dist/claude/error.js.map +1 -0
- package/dist/claude/index.d.ts +3 -0
- package/dist/claude/index.js +3 -0
- package/dist/claude/index.js.map +1 -0
- package/dist/claude/runner.d.ts +11 -0
- package/dist/claude/runner.js +132 -0
- package/dist/claude/runner.js.map +1 -0
- package/dist/claude/types.d.ts +52 -0
- package/dist/claude/types.js +14 -0
- package/dist/claude/types.js.map +1 -0
- package/dist/context/checkpoint.d.ts +10 -0
- package/dist/context/checkpoint.js +29 -0
- package/dist/context/checkpoint.js.map +1 -0
- package/dist/context/handoff-builder.d.ts +11 -0
- package/dist/context/handoff-builder.js +268 -0
- package/dist/context/handoff-builder.js.map +1 -0
- package/dist/context/index.d.ts +11 -0
- package/dist/context/index.js +11 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/spec-delta.d.ts +47 -0
- package/dist/context/spec-delta.js +237 -0
- package/dist/context/spec-delta.js.map +1 -0
- package/dist/decision-capture/capture.d.ts +57 -0
- package/dist/decision-capture/capture.js +186 -0
- package/dist/decision-capture/capture.js.map +1 -0
- package/dist/decision-capture/extractor.d.ts +20 -0
- package/dist/decision-capture/extractor.js +103 -0
- package/dist/decision-capture/extractor.js.map +1 -0
- package/dist/decision-capture/id.d.ts +21 -0
- package/dist/decision-capture/id.js +60 -0
- package/dist/decision-capture/id.js.map +1 -0
- package/dist/decision-capture/index.d.ts +25 -0
- package/dist/decision-capture/index.js +21 -0
- package/dist/decision-capture/index.js.map +1 -0
- package/dist/decision-capture/prompt.d.ts +15 -0
- package/dist/decision-capture/prompt.js +68 -0
- package/dist/decision-capture/prompt.js.map +1 -0
- package/dist/decision-capture/refinement-prompt.d.ts +25 -0
- package/dist/decision-capture/refinement-prompt.js +146 -0
- package/dist/decision-capture/refinement-prompt.js.map +1 -0
- package/dist/decision-capture/refinement-schema.d.ts +52 -0
- package/dist/decision-capture/refinement-schema.js +61 -0
- package/dist/decision-capture/refinement-schema.js.map +1 -0
- package/dist/decision-capture/refinement.d.ts +60 -0
- package/dist/decision-capture/refinement.js +439 -0
- package/dist/decision-capture/refinement.js.map +1 -0
- package/dist/decision-capture/schema.d.ts +70 -0
- package/dist/decision-capture/schema.js +71 -0
- package/dist/decision-capture/schema.js.map +1 -0
- package/dist/decision-capture/types.d.ts +201 -0
- package/dist/decision-capture/types.js +20 -0
- package/dist/decision-capture/types.js.map +1 -0
- package/dist/decision-capture/writer.d.ts +90 -0
- package/dist/decision-capture/writer.js +267 -0
- package/dist/decision-capture/writer.js.map +1 -0
- package/dist/doctor/index.d.ts +48 -0
- package/dist/doctor/index.js +460 -0
- package/dist/doctor/index.js.map +1 -0
- package/dist/events/index.d.ts +15 -0
- package/dist/events/index.js +14 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/paths.d.ts +2 -0
- package/dist/events/paths.js +6 -0
- package/dist/events/paths.js.map +1 -0
- package/dist/events/reader.d.ts +40 -0
- package/dist/events/reader.js +139 -0
- package/dist/events/reader.js.map +1 -0
- package/dist/events/writer.d.ts +61 -0
- package/dist/events/writer.js +68 -0
- package/dist/events/writer.js.map +1 -0
- package/dist/frontend-types.d.ts +243 -0
- package/dist/frontend-types.js +15 -0
- package/dist/frontend-types.js.map +1 -0
- package/dist/gc/apply.d.ts +26 -0
- package/dist/gc/apply.js +48 -0
- package/dist/gc/apply.js.map +1 -0
- package/dist/gc/canary.d.ts +42 -0
- package/dist/gc/canary.js +134 -0
- package/dist/gc/canary.js.map +1 -0
- package/dist/gc/citation-integrity.d.ts +24 -0
- package/dist/gc/citation-integrity.js +151 -0
- package/dist/gc/citation-integrity.js.map +1 -0
- package/dist/gc/classify.d.ts +25 -0
- package/dist/gc/classify.js +89 -0
- package/dist/gc/classify.js.map +1 -0
- package/dist/gc/completion-integrity.d.ts +22 -0
- package/dist/gc/completion-integrity.js +165 -0
- package/dist/gc/completion-integrity.js.map +1 -0
- package/dist/gc/doc-gardening.d.ts +29 -0
- package/dist/gc/doc-gardening.js +146 -0
- package/dist/gc/doc-gardening.js.map +1 -0
- package/dist/gc/frontmatter.d.ts +35 -0
- package/dist/gc/frontmatter.js +105 -0
- package/dist/gc/frontmatter.js.map +1 -0
- package/dist/gc/generator-drift.d.ts +28 -0
- package/dist/gc/generator-drift.js +53 -0
- package/dist/gc/generator-drift.js.map +1 -0
- package/dist/gc/index.d.ts +42 -0
- package/dist/gc/index.js +30 -0
- package/dist/gc/index.js.map +1 -0
- package/dist/gc/quality-update.d.ts +23 -0
- package/dist/gc/quality-update.js +69 -0
- package/dist/gc/quality-update.js.map +1 -0
- package/dist/gc/scope-coverage.d.ts +20 -0
- package/dist/gc/scope-coverage.js +70 -0
- package/dist/gc/scope-coverage.js.map +1 -0
- package/dist/gc/stub-hits.d.ts +31 -0
- package/dist/gc/stub-hits.js +78 -0
- package/dist/gc/stub-hits.js.map +1 -0
- package/dist/gc/sweep.d.ts +56 -0
- package/dist/gc/sweep.js +205 -0
- package/dist/gc/sweep.js.map +1 -0
- package/dist/gc/types.d.ts +129 -0
- package/dist/gc/types.js +26 -0
- package/dist/gc/types.js.map +1 -0
- package/dist/gc/walk-source.d.ts +14 -0
- package/dist/gc/walk-source.js +59 -0
- package/dist/gc/walk-source.js.map +1 -0
- package/dist/ground/drift.d.ts +8 -0
- package/dist/ground/drift.js +23 -0
- package/dist/ground/drift.js.map +1 -0
- package/dist/ground/frontmatter.d.ts +20 -0
- package/dist/ground/frontmatter.js +49 -0
- package/dist/ground/frontmatter.js.map +1 -0
- package/dist/ground/glob.d.ts +10 -0
- package/dist/ground/glob.js +46 -0
- package/dist/ground/glob.js.map +1 -0
- package/dist/ground/index.d.ts +16 -0
- package/dist/ground/index.js +11 -0
- package/dist/ground/index.js.map +1 -0
- package/dist/ground/ledgers.d.ts +18 -0
- package/dist/ground/ledgers.js +103 -0
- package/dist/ground/ledgers.js.map +1 -0
- package/dist/ground/manifest.d.ts +10 -0
- package/dist/ground/manifest.js +88 -0
- package/dist/ground/manifest.js.map +1 -0
- package/dist/ground/paths.d.ts +20 -0
- package/dist/ground/paths.js +61 -0
- package/dist/ground/paths.js.map +1 -0
- package/dist/ground/quality-grades.d.ts +11 -0
- package/dist/ground/quality-grades.js +98 -0
- package/dist/ground/quality-grades.js.map +1 -0
- package/dist/ground/schemas.d.ts +306 -0
- package/dist/ground/schemas.js +188 -0
- package/dist/ground/schemas.js.map +1 -0
- package/dist/ground/scope-index.d.ts +48 -0
- package/dist/ground/scope-index.js +120 -0
- package/dist/ground/scope-index.js.map +1 -0
- package/dist/ground/walk.d.ts +7 -0
- package/dist/ground/walk.js +53 -0
- package/dist/ground/walk.js.map +1 -0
- package/dist/hooks/bypass-detection.d.ts +28 -0
- package/dist/hooks/bypass-detection.js +106 -0
- package/dist/hooks/bypass-detection.js.map +1 -0
- package/dist/hooks/index.d.ts +12 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/post-tool-use/allowlist-reader.d.ts +14 -0
- package/dist/hooks/post-tool-use/allowlist-reader.js +69 -0
- package/dist/hooks/post-tool-use/allowlist-reader.js.map +1 -0
- package/dist/hooks/post-tool-use/citation-scanner.d.ts +23 -0
- package/dist/hooks/post-tool-use/citation-scanner.js +59 -0
- package/dist/hooks/post-tool-use/citation-scanner.js.map +1 -0
- package/dist/hooks/post-tool-use/copy-scanner.d.ts +25 -0
- package/dist/hooks/post-tool-use/copy-scanner.js +192 -0
- package/dist/hooks/post-tool-use/copy-scanner.js.map +1 -0
- package/dist/hooks/post-tool-use/index.d.ts +19 -0
- package/dist/hooks/post-tool-use/index.js +15 -0
- package/dist/hooks/post-tool-use/index.js.map +1 -0
- package/dist/hooks/post-tool-use/ledger-cache.d.ts +32 -0
- package/dist/hooks/post-tool-use/ledger-cache.js +236 -0
- package/dist/hooks/post-tool-use/ledger-cache.js.map +1 -0
- package/dist/hooks/post-tool-use/legend-builder.d.ts +15 -0
- package/dist/hooks/post-tool-use/legend-builder.js +84 -0
- package/dist/hooks/post-tool-use/legend-builder.js.map +1 -0
- package/dist/hooks/post-tool-use/read-enricher.d.ts +13 -0
- package/dist/hooks/post-tool-use/read-enricher.js +157 -0
- package/dist/hooks/post-tool-use/read-enricher.js.map +1 -0
- package/dist/hooks/post-tool-use/write-guardian.d.ts +17 -0
- package/dist/hooks/post-tool-use/write-guardian.js +176 -0
- package/dist/hooks/post-tool-use/write-guardian.js.map +1 -0
- package/dist/hooks/read-enrich.d.ts +6 -0
- package/dist/hooks/read-enrich.js +11 -0
- package/dist/hooks/read-enrich.js.map +1 -0
- package/dist/hooks/runners/index.d.ts +12 -0
- package/dist/hooks/runners/index.js +11 -0
- package/dist/hooks/runners/index.js.map +1 -0
- package/dist/hooks/runners/payload.d.ts +32 -0
- package/dist/hooks/runners/payload.js +70 -0
- package/dist/hooks/runners/payload.js.map +1 -0
- package/dist/hooks/runners/session-end.d.ts +7 -0
- package/dist/hooks/runners/session-end.js +42 -0
- package/dist/hooks/runners/session-end.js.map +1 -0
- package/dist/hooks/runners/session-start.d.ts +10 -0
- package/dist/hooks/runners/session-start.js +167 -0
- package/dist/hooks/runners/session-start.js.map +1 -0
- package/dist/hooks/runners/stop.d.ts +18 -0
- package/dist/hooks/runners/stop.js +165 -0
- package/dist/hooks/runners/stop.js.map +1 -0
- package/dist/hooks/session-end.d.ts +5 -0
- package/dist/hooks/session-end.js +10 -0
- package/dist/hooks/session-end.js.map +1 -0
- package/dist/hooks/session-start.d.ts +7 -0
- package/dist/hooks/session-start.js +12 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/hooks/stop.d.ts +5 -0
- package/dist/hooks/stop.js +10 -0
- package/dist/hooks/stop.js.map +1 -0
- package/dist/hooks/write-guard.d.ts +6 -0
- package/dist/hooks/write-guard.js +11 -0
- package/dist/hooks/write-guard.js.map +1 -0
- package/dist/inbox.d.ts +17 -0
- package/dist/inbox.js +30 -0
- package/dist/inbox.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/init/baseline-audit.d.ts +71 -0
- package/dist/init/baseline-audit.js +377 -0
- package/dist/init/baseline-audit.js.map +1 -0
- package/dist/init/brand-setup.d.ts +44 -0
- package/dist/init/brand-setup.js +201 -0
- package/dist/init/brand-setup.js.map +1 -0
- package/dist/init/daemon-autostart.d.ts +16 -0
- package/dist/init/daemon-autostart.js +95 -0
- package/dist/init/daemon-autostart.js.map +1 -0
- package/dist/init/detect.d.ts +25 -0
- package/dist/init/detect.js +319 -0
- package/dist/init/detect.js.map +1 -0
- package/dist/init/index.d.ts +32 -0
- package/dist/init/index.js +18 -0
- package/dist/init/index.js.map +1 -0
- package/dist/init/ingest-docs.d.ts +74 -0
- package/dist/init/ingest-docs.js +499 -0
- package/dist/init/ingest-docs.js.map +1 -0
- package/dist/init/init.d.ts +165 -0
- package/dist/init/init.js +1166 -0
- package/dist/init/init.js.map +1 -0
- package/dist/init/mapper-legacy.d.ts +148 -0
- package/dist/init/mapper-legacy.js +238 -0
- package/dist/init/mapper-legacy.js.map +1 -0
- package/dist/init/mapper-merge.d.ts +38 -0
- package/dist/init/mapper-merge.js +238 -0
- package/dist/init/mapper-merge.js.map +1 -0
- package/dist/init/mapper-parallel.d.ts +48 -0
- package/dist/init/mapper-parallel.js +409 -0
- package/dist/init/mapper-parallel.js.map +1 -0
- package/dist/init/mapper-prompts.d.ts +135 -0
- package/dist/init/mapper-prompts.js +189 -0
- package/dist/init/mapper-prompts.js.map +1 -0
- package/dist/init/mapper.d.ts +211 -0
- package/dist/init/mapper.js +151 -0
- package/dist/init/mapper.js.map +1 -0
- package/dist/init/module-slicer.d.ts +39 -0
- package/dist/init/module-slicer.js +809 -0
- package/dist/init/module-slicer.js.map +1 -0
- package/dist/init/multi-dev/index.d.ts +2 -0
- package/dist/init/multi-dev/index.js +2 -0
- package/dist/init/multi-dev/index.js.map +1 -0
- package/dist/init/multi-dev/install.d.ts +40 -0
- package/dist/init/multi-dev/install.js +139 -0
- package/dist/init/multi-dev/install.js.map +1 -0
- package/dist/init/preflight-guards.d.ts +42 -0
- package/dist/init/preflight-guards.js +108 -0
- package/dist/init/preflight-guards.js.map +1 -0
- package/dist/init/prompts.d.ts +61 -0
- package/dist/init/prompts.js +66 -0
- package/dist/init/prompts.js.map +1 -0
- package/dist/init/rules-merge/discover.d.ts +21 -0
- package/dist/init/rules-merge/discover.js +78 -0
- package/dist/init/rules-merge/discover.js.map +1 -0
- package/dist/init/rules-merge/index.d.ts +10 -0
- package/dist/init/rules-merge/index.js +6 -0
- package/dist/init/rules-merge/index.js.map +1 -0
- package/dist/init/rules-merge/ingest.d.ts +56 -0
- package/dist/init/rules-merge/ingest.js +336 -0
- package/dist/init/rules-merge/ingest.js.map +1 -0
- package/dist/init/rules-merge/keep-markers.d.ts +39 -0
- package/dist/init/rules-merge/keep-markers.js +97 -0
- package/dist/init/rules-merge/keep-markers.js.map +1 -0
- package/dist/init/rules-merge/parse-sections.d.ts +24 -0
- package/dist/init/rules-merge/parse-sections.js +71 -0
- package/dist/init/rules-merge/parse-sections.js.map +1 -0
- package/dist/init/rules-merge/regenerate.d.ts +33 -0
- package/dist/init/rules-merge/regenerate.js +163 -0
- package/dist/init/rules-merge/regenerate.js.map +1 -0
- package/dist/init/secrets.d.ts +18 -0
- package/dist/init/secrets.js +76 -0
- package/dist/init/secrets.js.map +1 -0
- package/dist/init/seed.d.ts +21 -0
- package/dist/init/seed.js +96 -0
- package/dist/init/seed.js.map +1 -0
- package/dist/init/setup-runners.d.ts +15 -0
- package/dist/init/setup-runners.js +143 -0
- package/dist/init/setup-runners.js.map +1 -0
- package/dist/init/source-comments/classify.d.ts +98 -0
- package/dist/init/source-comments/classify.js +244 -0
- package/dist/init/source-comments/classify.js.map +1 -0
- package/dist/init/source-comments/index.d.ts +8 -0
- package/dist/init/source-comments/index.js +5 -0
- package/dist/init/source-comments/index.js.map +1 -0
- package/dist/init/source-comments/ingest.d.ts +51 -0
- package/dist/init/source-comments/ingest.js +236 -0
- package/dist/init/source-comments/ingest.js.map +1 -0
- package/dist/init/source-comments/strip-replace.d.ts +106 -0
- package/dist/init/source-comments/strip-replace.js +284 -0
- package/dist/init/source-comments/strip-replace.js.map +1 -0
- package/dist/init/source-comments/walker.d.ts +65 -0
- package/dist/init/source-comments/walker.js +777 -0
- package/dist/init/source-comments/walker.js.map +1 -0
- package/dist/init/submodules.d.ts +48 -0
- package/dist/init/submodules.js +149 -0
- package/dist/init/submodules.js.map +1 -0
- package/dist/init/types.d.ts +55 -0
- package/dist/init/types.js +10 -0
- package/dist/init/types.js.map +1 -0
- package/dist/init/visual.d.ts +69 -0
- package/dist/init/visual.js +265 -0
- package/dist/init/visual.js.map +1 -0
- package/dist/init/walker.d.ts +82 -0
- package/dist/init/walker.js +585 -0
- package/dist/init/walker.js.map +1 -0
- package/dist/init/workflow-block.d.ts +34 -0
- package/dist/init/workflow-block.js +110 -0
- package/dist/init/workflow-block.js.map +1 -0
- package/dist/join/index.d.ts +67 -0
- package/dist/join/index.js +256 -0
- package/dist/join/index.js.map +1 -0
- package/dist/lock.d.ts +39 -0
- package/dist/lock.js +129 -0
- package/dist/lock.js.map +1 -0
- package/dist/logger.d.ts +13 -0
- package/dist/logger.js +78 -0
- package/dist/logger.js.map +1 -0
- package/dist/mcp/bootstrap-guard.d.ts +29 -0
- package/dist/mcp/bootstrap-guard.js +47 -0
- package/dist/mcp/bootstrap-guard.js.map +1 -0
- package/dist/mcp/context.d.ts +23 -0
- package/dist/mcp/context.js +9 -0
- package/dist/mcp/context.js.map +1 -0
- package/dist/mcp/errors.d.ts +17 -0
- package/dist/mcp/errors.js +23 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/history/index.d.ts +6 -0
- package/dist/mcp/history/index.js +5 -0
- package/dist/mcp/history/index.js.map +1 -0
- package/dist/mcp/history/prompt.d.ts +32 -0
- package/dist/mcp/history/prompt.js +99 -0
- package/dist/mcp/history/prompt.js.map +1 -0
- package/dist/mcp/history/schema.d.ts +58 -0
- package/dist/mcp/history/schema.js +41 -0
- package/dist/mcp/history/schema.js.map +1 -0
- package/dist/mcp/history/summarizer.d.ts +81 -0
- package/dist/mcp/history/summarizer.js +196 -0
- package/dist/mcp/history/summarizer.js.map +1 -0
- package/dist/mcp/history/walker.d.ts +57 -0
- package/dist/mcp/history/walker.js +156 -0
- package/dist/mcp/history/walker.js.map +1 -0
- package/dist/mcp/index.d.ts +13 -0
- package/dist/mcp/index.js +9 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/path-allowlist.d.ts +29 -0
- package/dist/mcp/path-allowlist.js +71 -0
- package/dist/mcp/path-allowlist.js.map +1 -0
- package/dist/mcp/result.d.ts +8 -0
- package/dist/mcp/result.js +18 -0
- package/dist/mcp/result.js.map +1 -0
- package/dist/mcp/schemas.d.ts +192 -0
- package/dist/mcp/schemas.js +174 -0
- package/dist/mcp/schemas.js.map +1 -0
- package/dist/mcp/serve.d.ts +15 -0
- package/dist/mcp/serve.js +71 -0
- package/dist/mcp/serve.js.map +1 -0
- package/dist/mcp/server.d.ts +11 -0
- package/dist/mcp/server.js +58 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/telemetry.d.ts +15 -0
- package/dist/mcp/telemetry.js +13 -0
- package/dist/mcp/telemetry.js.map +1 -0
- package/dist/mcp/tools/append-run-note.d.ts +18 -0
- package/dist/mcp/tools/append-run-note.js +47 -0
- package/dist/mcp/tools/append-run-note.js.map +1 -0
- package/dist/mcp/tools/append.d.ts +8 -0
- package/dist/mcp/tools/append.js +37 -0
- package/dist/mcp/tools/append.js.map +1 -0
- package/dist/mcp/tools/archive.d.ts +8 -0
- package/dist/mcp/tools/archive.js +72 -0
- package/dist/mcp/tools/archive.js.map +1 -0
- package/dist/mcp/tools/ask-operator.d.ts +34 -0
- package/dist/mcp/tools/ask-operator.js +97 -0
- package/dist/mcp/tools/ask-operator.js.map +1 -0
- package/dist/mcp/tools/canonical-for-topic.d.ts +6 -0
- package/dist/mcp/tools/canonical-for-topic.js +40 -0
- package/dist/mcp/tools/canonical-for-topic.js.map +1 -0
- package/dist/mcp/tools/decision-get.d.ts +6 -0
- package/dist/mcp/tools/decision-get.js +49 -0
- package/dist/mcp/tools/decision-get.js.map +1 -0
- package/dist/mcp/tools/decisions-for-symbol.d.ts +7 -0
- package/dist/mcp/tools/decisions-for-symbol.js +42 -0
- package/dist/mcp/tools/decisions-for-symbol.js.map +1 -0
- package/dist/mcp/tools/decisions-in-scope.d.ts +7 -0
- package/dist/mcp/tools/decisions-in-scope.js +47 -0
- package/dist/mcp/tools/decisions-in-scope.js.map +1 -0
- package/dist/mcp/tools/drop-task.d.ts +12 -0
- package/dist/mcp/tools/drop-task.js +68 -0
- package/dist/mcp/tools/drop-task.js.map +1 -0
- package/dist/mcp/tools/get-full.d.ts +7 -0
- package/dist/mcp/tools/get-full.js +46 -0
- package/dist/mcp/tools/get-full.js.map +1 -0
- package/dist/mcp/tools/ground-get.d.ts +7 -0
- package/dist/mcp/tools/ground-get.js +77 -0
- package/dist/mcp/tools/ground-get.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -0
- package/dist/mcp/tools/index.js +40 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/invariant-get.d.ts +6 -0
- package/dist/mcp/tools/invariant-get.js +49 -0
- package/dist/mcp/tools/invariant-get.js.map +1 -0
- package/dist/mcp/tools/invariants-in-scope.d.ts +7 -0
- package/dist/mcp/tools/invariants-in-scope.js +62 -0
- package/dist/mcp/tools/invariants-in-scope.js.map +1 -0
- package/dist/mcp/tools/query-history.d.ts +20 -0
- package/dist/mcp/tools/query-history.js +51 -0
- package/dist/mcp/tools/query-history.js.map +1 -0
- package/dist/mcp/tools/record-decision.d.ts +14 -0
- package/dist/mcp/tools/record-decision.js +98 -0
- package/dist/mcp/tools/record-decision.js.map +1 -0
- package/dist/mcp/tools/record-run-event.d.ts +10 -0
- package/dist/mcp/tools/record-run-event.js +32 -0
- package/dist/mcp/tools/record-run-event.js.map +1 -0
- package/dist/mcp/tools/resolve-attention.d.ts +31 -0
- package/dist/mcp/tools/resolve-attention.js +191 -0
- package/dist/mcp/tools/resolve-attention.js.map +1 -0
- package/dist/mcp/tools/search.d.ts +9 -0
- package/dist/mcp/tools/search.js +164 -0
- package/dist/mcp/tools/search.js.map +1 -0
- package/dist/mcp/tools/supersedes-chain.d.ts +6 -0
- package/dist/mcp/tools/supersedes-chain.js +66 -0
- package/dist/mcp/tools/supersedes-chain.js.map +1 -0
- package/dist/mcp/tools/timeline.d.ts +9 -0
- package/dist/mcp/tools/timeline.js +65 -0
- package/dist/mcp/tools/timeline.js.map +1 -0
- package/dist/mcp/tools/types.d.ts +9 -0
- package/dist/mcp/tools/types.js +2 -0
- package/dist/mcp/tools/types.js.map +1 -0
- package/dist/mirror/clone.d.ts +6 -0
- package/dist/mirror/clone.js +48 -0
- package/dist/mirror/clone.js.map +1 -0
- package/dist/mirror/dirty-overlap.d.ts +13 -0
- package/dist/mirror/dirty-overlap.js +42 -0
- package/dist/mirror/dirty-overlap.js.map +1 -0
- package/dist/mirror/index.d.ts +7 -0
- package/dist/mirror/index.js +7 -0
- package/dist/mirror/index.js.map +1 -0
- package/dist/mirror/paths.d.ts +18 -0
- package/dist/mirror/paths.js +45 -0
- package/dist/mirror/paths.js.map +1 -0
- package/dist/mirror/push.d.ts +9 -0
- package/dist/mirror/push.js +27 -0
- package/dist/mirror/push.js.map +1 -0
- package/dist/mirror/state.d.ts +4 -0
- package/dist/mirror/state.js +36 -0
- package/dist/mirror/state.js.map +1 -0
- package/dist/mirror/sync.d.ts +9 -0
- package/dist/mirror/sync.js +33 -0
- package/dist/mirror/sync.js.map +1 -0
- package/dist/mirror/types.d.ts +77 -0
- package/dist/mirror/types.js +2 -0
- package/dist/mirror/types.js.map +1 -0
- package/dist/paths/index.d.ts +23 -0
- package/dist/paths/index.js +50 -0
- package/dist/paths/index.js.map +1 -0
- package/dist/profiles/index.d.ts +3 -0
- package/dist/profiles/index.js +3 -0
- package/dist/profiles/index.js.map +1 -0
- package/dist/profiles/registry.d.ts +5 -0
- package/dist/profiles/registry.js +31 -0
- package/dist/profiles/registry.js.map +1 -0
- package/dist/profiles/types.d.ts +48 -0
- package/dist/profiles/types.js +11 -0
- package/dist/profiles/types.js.map +1 -0
- package/dist/profiles/unknown.d.ts +9 -0
- package/dist/profiles/unknown.js +17 -0
- package/dist/profiles/unknown.js.map +1 -0
- package/dist/prompt.d.ts +19 -0
- package/dist/prompt.js +50 -0
- package/dist/prompt.js.map +1 -0
- package/dist/sensors/attestation.d.ts +44 -0
- package/dist/sensors/attestation.js +262 -0
- package/dist/sensors/attestation.js.map +1 -0
- package/dist/sensors/catalog.d.ts +41 -0
- package/dist/sensors/catalog.js +123 -0
- package/dist/sensors/catalog.js.map +1 -0
- package/dist/sensors/decisions.d.ts +30 -0
- package/dist/sensors/decisions.js +393 -0
- package/dist/sensors/decisions.js.map +1 -0
- package/dist/sensors/diff.d.ts +27 -0
- package/dist/sensors/diff.js +148 -0
- package/dist/sensors/diff.js.map +1 -0
- package/dist/sensors/index.d.ts +13 -0
- package/dist/sensors/index.js +9 -0
- package/dist/sensors/index.js.map +1 -0
- package/dist/sensors/remediation.d.ts +20 -0
- package/dist/sensors/remediation.js +65 -0
- package/dist/sensors/remediation.js.map +1 -0
- package/dist/sensors/runner.d.ts +44 -0
- package/dist/sensors/runner.js +95 -0
- package/dist/sensors/runner.js.map +1 -0
- package/dist/sensors/structural.d.ts +30 -0
- package/dist/sensors/structural.js +204 -0
- package/dist/sensors/structural.js.map +1 -0
- package/dist/sensors/stub-catalog.d.ts +39 -0
- package/dist/sensors/stub-catalog.js +115 -0
- package/dist/sensors/stub-catalog.js.map +1 -0
- package/dist/sensors/types.d.ts +135 -0
- package/dist/sensors/types.js +14 -0
- package/dist/sensors/types.js.map +1 -0
- package/dist/session/events-marker.d.ts +39 -0
- package/dist/session/events-marker.js +74 -0
- package/dist/session/events-marker.js.map +1 -0
- package/dist/session/id.d.ts +83 -0
- package/dist/session/id.js +166 -0
- package/dist/session/id.js.map +1 -0
- package/dist/session/index.d.ts +14 -0
- package/dist/session/index.js +13 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session-start/build.d.ts +53 -0
- package/dist/session-start/build.js +645 -0
- package/dist/session-start/build.js.map +1 -0
- package/dist/session-start/index.d.ts +18 -0
- package/dist/session-start/index.js +18 -0
- package/dist/session-start/index.js.map +1 -0
- package/dist/session-start/templates.d.ts +6 -0
- package/dist/session-start/templates.js +38 -0
- package/dist/session-start/templates.js.map +1 -0
- package/dist/status-line/format.d.ts +14 -0
- package/dist/status-line/format.js +40 -0
- package/dist/status-line/format.js.map +1 -0
- package/dist/status-line/index.d.ts +29 -0
- package/dist/status-line/index.js +14 -0
- package/dist/status-line/index.js.map +1 -0
- package/dist/status-line/reader.d.ts +13 -0
- package/dist/status-line/reader.js +76 -0
- package/dist/status-line/reader.js.map +1 -0
- package/dist/status-line/writer.d.ts +33 -0
- package/dist/status-line/writer.js +72 -0
- package/dist/status-line/writer.js.map +1 -0
- package/dist/tier0/classify.d.ts +10 -0
- package/dist/tier0/classify.js +110 -0
- package/dist/tier0/classify.js.map +1 -0
- package/dist/tier0/index.d.ts +2 -0
- package/dist/tier0/index.js +2 -0
- package/dist/tier0/index.js.map +1 -0
- package/dist/tier0/ollama.d.ts +22 -0
- package/dist/tier0/ollama.js +63 -0
- package/dist/tier0/ollama.js.map +1 -0
- package/dist/tier0/types.d.ts +24 -0
- package/dist/tier0/types.js +9 -0
- package/dist/tier0/types.js.map +1 -0
- package/dist/tightener/index.d.ts +4 -0
- package/dist/tightener/index.js +4 -0
- package/dist/tightener/index.js.map +1 -0
- package/dist/tightener/prompt.d.ts +3 -0
- package/dist/tightener/prompt.js +67 -0
- package/dist/tightener/prompt.js.map +1 -0
- package/dist/tightener/schema.d.ts +68 -0
- package/dist/tightener/schema.js +44 -0
- package/dist/tightener/schema.js.map +1 -0
- package/dist/tightener/tighten.d.ts +2 -0
- package/dist/tightener/tighten.js +66 -0
- package/dist/tightener/tighten.js.map +1 -0
- package/dist/tightener/types.d.ts +74 -0
- package/dist/tightener/types.js +6 -0
- package/dist/tightener/types.js.map +1 -0
- package/dist/voice/index.d.ts +4 -0
- package/dist/voice/index.js +4 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/model.d.ts +23 -0
- package/dist/voice/model.js +46 -0
- package/dist/voice/model.js.map +1 -0
- package/dist/voice/pipe.d.ts +9 -0
- package/dist/voice/pipe.js +47 -0
- package/dist/voice/pipe.js.map +1 -0
- package/dist/voice/transcribe.d.ts +3 -0
- package/dist/voice/transcribe.js +43 -0
- package/dist/voice/transcribe.js.map +1 -0
- package/dist/voice/types.d.ts +26 -0
- package/dist/voice/types.js +9 -0
- package/dist/voice/types.js.map +1 -0
- package/package.json +54 -0
- package/templates/.archive/README.md +67 -0
- package/templates/.cairn/JOIN.md +87 -0
- package/templates/.cairn/config/sensors.yaml +185 -0
- package/templates/.cairn/config/stub-patterns.yaml +231 -0
- package/templates/.cairn/config/trust-policy.yaml +95 -0
- package/templates/.cairn/config/workflow.md +230 -0
- package/templates/.cairn/git-hooks/commit-msg +17 -0
- package/templates/.cairn/git-hooks/post-commit +28 -0
- package/templates/.cairn/git-hooks/pre-commit +24 -0
- package/templates/.cairn/ground/brand/overview.md +24 -0
- package/templates/.cairn/ground/brand/voice.md +20 -0
- package/templates/.cairn/ground/canonical-map/topics.yaml +54 -0
- package/templates/.cairn/ground/capabilities/mcp-tools.yaml +4 -0
- package/templates/.cairn/ground/capabilities/skills.yaml +3 -0
- package/templates/.cairn/ground/capabilities/snippets.yaml +3 -0
- package/templates/.cairn/ground/manifest.yaml +16 -0
- package/templates/.cairn/ground/product/personas.yaml +4 -0
- package/templates/.cairn/ground/product/positioning.md +21 -0
- package/templates/.claude/settings.json +57 -0
- package/templates/.github/workflows/cairn-check.yml +31 -0
- package/templates/.mcp.json +8 -0
- package/templates/README.md +24 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../../src/mcp/tools/timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA4B9C;;;;GAIG;AACH,KAAK,UAAU,OAAO,CAAC,GAAe,EAAE,KAAY;IAClD,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5D,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YAC5E,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAC/B,MAAM,IAAI,GAAG,QAAQ,CAAU,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC;YAC/C,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK;gBAAE,SAAS;YACjE,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YACjD,iEAAiE;YACjE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAChE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;gBAC9E,IAAI,CAAC,GAAG;oBAAE,SAAS;YACrB,CAAC;YACD,GAAG,CAAC,IAAI,CAAC;gBACP,EAAE;gBACF,IAAI,EAAE,KAAK;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,QAAQ,CAAI,IAAY;IAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAM,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC1C,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,mKAAmK;IACrK,WAAW,EAAE,aAAa;IAC1B,OAAO;CACR,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ZodTypeAny } from "zod";
|
|
2
|
+
import type { McpContext } from "../context.js";
|
|
3
|
+
export type ToolInputShape = Record<string, ZodTypeAny>;
|
|
4
|
+
export interface ToolDef<Input> {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
inputSchema: ToolInputShape;
|
|
8
|
+
handler: (ctx: McpContext, input: Input) => Promise<unknown>;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/tools/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CloneOptions, MirrorRecord } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Idempotent: ensures the mirror exists for the given project. Records the
|
|
4
|
+
* record if missing. Returns the (possibly-updated) record.
|
|
5
|
+
*/
|
|
6
|
+
export declare function ensureMirror(opts: CloneOptions): Promise<MirrorRecord>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { simpleGit } from "simple-git";
|
|
4
|
+
import { logger } from "../logger.js";
|
|
5
|
+
import { mirrorPath, reposRoot } from "./paths.js";
|
|
6
|
+
import { readMirrorRecord, writeMirrorRecord } from "./state.js";
|
|
7
|
+
const log = logger("mirror.clone");
|
|
8
|
+
/**
|
|
9
|
+
* Idempotent: ensures the mirror exists for the given project. Records the
|
|
10
|
+
* record if missing. Returns the (possibly-updated) record.
|
|
11
|
+
*/
|
|
12
|
+
export async function ensureMirror(opts) {
|
|
13
|
+
const { projectName, userTreePath, originUrl } = opts;
|
|
14
|
+
const path = mirrorPath(projectName);
|
|
15
|
+
const existing = readMirrorRecord(projectName);
|
|
16
|
+
if (existing && existsSync(path)) {
|
|
17
|
+
log.debug({ projectName, path }, "mirror already present");
|
|
18
|
+
if (existing.originUrl !== originUrl || existing.userTreePath !== userTreePath) {
|
|
19
|
+
throw new Error(`Mirror record for "${projectName}" exists with different origin/userTreePath.\n` +
|
|
20
|
+
` recorded: ${existing.originUrl} (tree ${existing.userTreePath})\n` +
|
|
21
|
+
` requested: ${originUrl} (tree ${userTreePath})\n` +
|
|
22
|
+
"Refusing to overwrite. Resolve manually before re-running.");
|
|
23
|
+
}
|
|
24
|
+
return existing;
|
|
25
|
+
}
|
|
26
|
+
log.info({ projectName, originUrl, path }, "cloning mirror");
|
|
27
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
28
|
+
mkdirSync(reposRoot(), { recursive: true });
|
|
29
|
+
const git = simpleGit();
|
|
30
|
+
await git.clone(originUrl, path);
|
|
31
|
+
const repo = simpleGit(path);
|
|
32
|
+
const branchSummary = await repo.branch();
|
|
33
|
+
const defaultBranch = opts.defaultBranch ?? branchSummary.current;
|
|
34
|
+
const record = {
|
|
35
|
+
projectName,
|
|
36
|
+
userTreePath,
|
|
37
|
+
originUrl,
|
|
38
|
+
defaultBranch,
|
|
39
|
+
mirrorPath: path,
|
|
40
|
+
lastSyncedAt: null,
|
|
41
|
+
lastSha: null,
|
|
42
|
+
createdAt: new Date().toISOString(),
|
|
43
|
+
};
|
|
44
|
+
writeMirrorRecord(record);
|
|
45
|
+
log.info({ projectName, defaultBranch }, "mirror clone complete");
|
|
46
|
+
return record;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=clone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/mirror/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGjE,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEnC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAkB;IACnD,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YAC/E,MAAM,IAAI,KAAK,CACb,sBAAsB,WAAW,gDAAgD;gBAC/E,gBAAgB,QAAQ,CAAC,SAAS,UAAU,QAAQ,CAAC,YAAY,KAAK;gBACtE,gBAAgB,SAAS,UAAU,YAAY,KAAK;gBACpD,4DAA4D,CAC/D,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC7D,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,SAAS,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAEjC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,OAAO,CAAC;IAElE,MAAM,MAAM,GAAiB;QAC3B,WAAW;QACX,YAAY;QACZ,SAAS;QACT,aAAa;QACb,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,uBAAuB,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DirtyOverlapOptions, DirtyOverlapResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* `local_dirty_overlap` gate.
|
|
4
|
+
*
|
|
5
|
+
* Reads the user's working tree (NEVER writes) and reports any un-committed
|
|
6
|
+
* files that overlap the dispatched run's target globs. If overlap is
|
|
7
|
+
* non-empty, the orchestrator pauses the run and offers the operator
|
|
8
|
+
* stash / cancel / wait via the active frontend adapter.
|
|
9
|
+
*
|
|
10
|
+
* Glob matching reuses `ground/glob.ts` so the matcher is the same one
|
|
11
|
+
* `walkCanonical` and the GC sweeps use.
|
|
12
|
+
*/
|
|
13
|
+
export declare function checkLocalDirtyOverlap(opts: DirtyOverlapOptions): Promise<DirtyOverlapResult>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { simpleGit } from "simple-git";
|
|
2
|
+
import { matchAnyGlob } from "../ground/glob.js";
|
|
3
|
+
import { logger } from "../logger.js";
|
|
4
|
+
import { requireMirrorRecord } from "./state.js";
|
|
5
|
+
const log = logger("mirror.dirty-overlap");
|
|
6
|
+
/**
|
|
7
|
+
* `local_dirty_overlap` gate.
|
|
8
|
+
*
|
|
9
|
+
* Reads the user's working tree (NEVER writes) and reports any un-committed
|
|
10
|
+
* files that overlap the dispatched run's target globs. If overlap is
|
|
11
|
+
* non-empty, the orchestrator pauses the run and offers the operator
|
|
12
|
+
* stash / cancel / wait via the active frontend adapter.
|
|
13
|
+
*
|
|
14
|
+
* Glob matching reuses `ground/glob.ts` so the matcher is the same one
|
|
15
|
+
* `walkCanonical` and the GC sweeps use.
|
|
16
|
+
*/
|
|
17
|
+
export async function checkLocalDirtyOverlap(opts) {
|
|
18
|
+
const record = requireMirrorRecord(opts.projectName);
|
|
19
|
+
const repo = simpleGit(record.userTreePath);
|
|
20
|
+
const status = await repo.status();
|
|
21
|
+
const dirtyFiles = [
|
|
22
|
+
...status.not_added,
|
|
23
|
+
...status.modified,
|
|
24
|
+
...status.created,
|
|
25
|
+
...status.deleted,
|
|
26
|
+
...status.renamed.map((r) => r.to),
|
|
27
|
+
...status.staged,
|
|
28
|
+
];
|
|
29
|
+
const dedup = Array.from(new Set(dirtyFiles));
|
|
30
|
+
const overlapping = dedup.filter((path) => matchAnyGlob(path, opts.targetGlobs));
|
|
31
|
+
log.debug({
|
|
32
|
+
projectName: opts.projectName,
|
|
33
|
+
dirtyCount: dedup.length,
|
|
34
|
+
overlapCount: overlapping.length,
|
|
35
|
+
}, "dirty-overlap check");
|
|
36
|
+
return {
|
|
37
|
+
dirtyFiles: dedup,
|
|
38
|
+
overlappingFiles: overlapping,
|
|
39
|
+
overlap: overlapping.length > 0,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=dirty-overlap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirty-overlap.js","sourceRoot":"","sources":["../../src/mirror/dirty-overlap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,MAAM,GAAG,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAE3C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAyB;IAEzB,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG;QACjB,GAAG,MAAM,CAAC,SAAS;QACnB,GAAG,MAAM,CAAC,QAAQ;QAClB,GAAG,MAAM,CAAC,OAAO;QACjB,GAAG,MAAM,CAAC,OAAO;QACjB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,GAAG,MAAM,CAAC,MAAM;KACjB,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAEjF,GAAG,CAAC,KAAK,CACP;QACE,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,YAAY,EAAE,WAAW,CAAC,MAAM;KACjC,EACD,qBAAqB,CACtB,CAAC;IAEF,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,gBAAgB,EAAE,WAAW;QAC7B,OAAO,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ensureMirror } from "./clone.js";
|
|
2
|
+
export { syncMirror } from "./sync.js";
|
|
3
|
+
export { pushMirror } from "./push.js";
|
|
4
|
+
export { checkLocalDirtyOverlap } from "./dirty-overlap.js";
|
|
5
|
+
export { harnessHome, reposRoot, stateRoot, modelsRoot, mirrorPath, projectStatePath, mirrorRecordPath, normalizeProjectName, } from "./paths.js";
|
|
6
|
+
export { readMirrorRecord, writeMirrorRecord, requireMirrorRecord, } from "./state.js";
|
|
7
|
+
export type { ProjectName, MirrorRecord, SyncResult, PushResult, DirtyOverlapResult, CloneOptions, SyncOptions, PushOptions, DirtyOverlapOptions, } from "./types.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ensureMirror } from "./clone.js";
|
|
2
|
+
export { syncMirror } from "./sync.js";
|
|
3
|
+
export { pushMirror } from "./push.js";
|
|
4
|
+
export { checkLocalDirtyOverlap } from "./dirty-overlap.js";
|
|
5
|
+
export { harnessHome, reposRoot, stateRoot, modelsRoot, mirrorPath, projectStatePath, mirrorRecordPath, normalizeProjectName, } from "./paths.js";
|
|
6
|
+
export { readMirrorRecord, writeMirrorRecord, requireMirrorRecord, } from "./state.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mirror/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ProjectName } from "./types.js";
|
|
2
|
+
export declare function harnessHome(): string;
|
|
3
|
+
export declare function reposRoot(): string;
|
|
4
|
+
export declare function stateRoot(): string;
|
|
5
|
+
export declare function modelsRoot(): string;
|
|
6
|
+
export declare function mirrorPath(projectName: ProjectName): string;
|
|
7
|
+
export declare function projectStatePath(projectName: ProjectName): string;
|
|
8
|
+
export declare function mirrorRecordPath(projectName: ProjectName): string;
|
|
9
|
+
/**
|
|
10
|
+
* Normalize a free-form name (package.json `name`, directory name) into the
|
|
11
|
+
* filesystem slug used as a directory key.
|
|
12
|
+
*
|
|
13
|
+
* - Lowercased
|
|
14
|
+
* - Scoped names (`@org/pkg`) use the path-after-slash
|
|
15
|
+
* - Non-alphanumerics collapse to a single underscore
|
|
16
|
+
* - Leading/trailing underscores stripped
|
|
17
|
+
*/
|
|
18
|
+
export declare function normalizeProjectName(raw: string): ProjectName;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
const HARNESS_HOME_ROOT = ".local/harness";
|
|
4
|
+
export function harnessHome() {
|
|
5
|
+
return resolve(homedir(), HARNESS_HOME_ROOT);
|
|
6
|
+
}
|
|
7
|
+
export function reposRoot() {
|
|
8
|
+
return join(harnessHome(), "repos");
|
|
9
|
+
}
|
|
10
|
+
export function stateRoot() {
|
|
11
|
+
return join(harnessHome(), "state");
|
|
12
|
+
}
|
|
13
|
+
export function modelsRoot() {
|
|
14
|
+
return join(harnessHome(), "models");
|
|
15
|
+
}
|
|
16
|
+
export function mirrorPath(projectName) {
|
|
17
|
+
return join(reposRoot(), projectName);
|
|
18
|
+
}
|
|
19
|
+
export function projectStatePath(projectName) {
|
|
20
|
+
return join(stateRoot(), projectName);
|
|
21
|
+
}
|
|
22
|
+
export function mirrorRecordPath(projectName) {
|
|
23
|
+
return join(projectStatePath(projectName), "mirror.json");
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Normalize a free-form name (package.json `name`, directory name) into the
|
|
27
|
+
* filesystem slug used as a directory key.
|
|
28
|
+
*
|
|
29
|
+
* - Lowercased
|
|
30
|
+
* - Scoped names (`@org/pkg`) use the path-after-slash
|
|
31
|
+
* - Non-alphanumerics collapse to a single underscore
|
|
32
|
+
* - Leading/trailing underscores stripped
|
|
33
|
+
*/
|
|
34
|
+
export function normalizeProjectName(raw) {
|
|
35
|
+
const afterScope = raw.includes("/") ? (raw.split("/").pop() ?? raw) : raw;
|
|
36
|
+
const slug = afterScope
|
|
37
|
+
.toLowerCase()
|
|
38
|
+
.replace(/[^a-z0-9]+/g, "_")
|
|
39
|
+
.replace(/^_+|_+$/g, "");
|
|
40
|
+
if (slug.length === 0) {
|
|
41
|
+
throw new Error(`Cannot normalize project name from "${raw}" — result is empty`);
|
|
42
|
+
}
|
|
43
|
+
return slug;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/mirror/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAE3C,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,WAAwB;IACjD,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAwB;IACvD,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,WAAwB;IACvD,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3E,MAAM,IAAI,GAAG,UAAU;SACpB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,qBAAqB,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PushOptions, PushResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Pushes the mirror's current HEAD to origin. Caller commits first.
|
|
4
|
+
*
|
|
5
|
+
* Force pushes are refused unless `force: true` is explicitly set; the only
|
|
6
|
+
* time the harness sets that is during recovery flows that have explicit
|
|
7
|
+
* operator authorization. Routine pushes never force.
|
|
8
|
+
*/
|
|
9
|
+
export declare function pushMirror(opts: PushOptions): Promise<PushResult>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { simpleGit } from "simple-git";
|
|
2
|
+
import { logger } from "../logger.js";
|
|
3
|
+
import { requireMirrorRecord } from "./state.js";
|
|
4
|
+
const log = logger("mirror.push");
|
|
5
|
+
/**
|
|
6
|
+
* Pushes the mirror's current HEAD to origin. Caller commits first.
|
|
7
|
+
*
|
|
8
|
+
* Force pushes are refused unless `force: true` is explicitly set; the only
|
|
9
|
+
* time the harness sets that is during recovery flows that have explicit
|
|
10
|
+
* operator authorization. Routine pushes never force.
|
|
11
|
+
*/
|
|
12
|
+
export async function pushMirror(opts) {
|
|
13
|
+
const record = requireMirrorRecord(opts.projectName);
|
|
14
|
+
const branch = opts.branch ?? record.defaultBranch;
|
|
15
|
+
const repo = simpleGit(record.mirrorPath);
|
|
16
|
+
const sha = (await repo.revparse(["HEAD"])).trim();
|
|
17
|
+
log.info({ projectName: opts.projectName, branch, sha, force: opts.force === true }, "pushing");
|
|
18
|
+
const args = ["origin", branch];
|
|
19
|
+
if (opts.force === true)
|
|
20
|
+
args.unshift("--force-with-lease");
|
|
21
|
+
const result = await repo.push(args);
|
|
22
|
+
const pushedAt = new Date().toISOString();
|
|
23
|
+
const raw = JSON.stringify(result);
|
|
24
|
+
log.info({ projectName: opts.projectName, branch, sha }, "push complete");
|
|
25
|
+
return { sha, branch, pushedAt, raw };
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../src/mirror/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAiB;IAChD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAEhG,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEnC,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;IAC1E,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { MirrorRecord, ProjectName } from "./types.js";
|
|
2
|
+
export declare function readMirrorRecord(projectName: ProjectName): MirrorRecord | null;
|
|
3
|
+
export declare function writeMirrorRecord(record: MirrorRecord): void;
|
|
4
|
+
export declare function requireMirrorRecord(projectName: ProjectName): MirrorRecord;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { mirrorRecordPath } from "./paths.js";
|
|
5
|
+
const MirrorRecordSchema = z.object({
|
|
6
|
+
projectName: z.string().min(1),
|
|
7
|
+
userTreePath: z.string().min(1),
|
|
8
|
+
originUrl: z.string().min(1),
|
|
9
|
+
defaultBranch: z.string().min(1),
|
|
10
|
+
mirrorPath: z.string().min(1),
|
|
11
|
+
lastSyncedAt: z.string().nullable(),
|
|
12
|
+
lastSha: z.string().nullable(),
|
|
13
|
+
createdAt: z.string().min(1),
|
|
14
|
+
});
|
|
15
|
+
export function readMirrorRecord(projectName) {
|
|
16
|
+
const path = mirrorRecordPath(projectName);
|
|
17
|
+
if (!existsSync(path))
|
|
18
|
+
return null;
|
|
19
|
+
const raw = readFileSync(path, "utf8");
|
|
20
|
+
const parsed = JSON.parse(raw);
|
|
21
|
+
return MirrorRecordSchema.parse(parsed);
|
|
22
|
+
}
|
|
23
|
+
export function writeMirrorRecord(record) {
|
|
24
|
+
const validated = MirrorRecordSchema.parse(record);
|
|
25
|
+
const path = mirrorRecordPath(record.projectName);
|
|
26
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
27
|
+
writeFileSync(path, `${JSON.stringify(validated, null, 2)}\n`, "utf8");
|
|
28
|
+
}
|
|
29
|
+
export function requireMirrorRecord(projectName) {
|
|
30
|
+
const record = readMirrorRecord(projectName);
|
|
31
|
+
if (!record) {
|
|
32
|
+
throw new Error(`No mirror record for project "${projectName}". Run \`harness mirror init\` first.`);
|
|
33
|
+
}
|
|
34
|
+
return record;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/mirror/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB,CAAC,WAAwB;IACvD,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IAC1C,OAAO,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAClD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAAwB;IAC1D,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,iCAAiC,WAAW,uCAAuC,CACpF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SyncOptions, SyncResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Pins the mirror to origin/<branch> via fetch + reset --hard. Caller is
|
|
4
|
+
* responsible for ensuring no in-flight task is touching the mirror — the
|
|
5
|
+
* orchestrator gates this on the FIFO queue idle state.
|
|
6
|
+
*
|
|
7
|
+
* Returns the SHA pin captured immediately after the reset.
|
|
8
|
+
*/
|
|
9
|
+
export declare function syncMirror(opts: SyncOptions): Promise<SyncResult>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { simpleGit } from "simple-git";
|
|
2
|
+
import { logger } from "../logger.js";
|
|
3
|
+
import { readMirrorRecord, requireMirrorRecord, writeMirrorRecord } from "./state.js";
|
|
4
|
+
const log = logger("mirror.sync");
|
|
5
|
+
/**
|
|
6
|
+
* Pins the mirror to origin/<branch> via fetch + reset --hard. Caller is
|
|
7
|
+
* responsible for ensuring no in-flight task is touching the mirror — the
|
|
8
|
+
* orchestrator gates this on the FIFO queue idle state.
|
|
9
|
+
*
|
|
10
|
+
* Returns the SHA pin captured immediately after the reset.
|
|
11
|
+
*/
|
|
12
|
+
export async function syncMirror(opts) {
|
|
13
|
+
const record = requireMirrorRecord(opts.projectName);
|
|
14
|
+
const branch = opts.branch ?? record.defaultBranch;
|
|
15
|
+
const repo = simpleGit(record.mirrorPath);
|
|
16
|
+
log.info({ projectName: opts.projectName, branch }, "fetching origin");
|
|
17
|
+
await repo.fetch("origin");
|
|
18
|
+
log.info({ projectName: opts.projectName, target: `origin/${branch}` }, "hard-resetting mirror");
|
|
19
|
+
await repo.reset(["--hard", `origin/${branch}`]);
|
|
20
|
+
const sha = (await repo.revparse(["HEAD"])).trim();
|
|
21
|
+
const syncedAt = new Date().toISOString();
|
|
22
|
+
// Re-read in case another process wrote in parallel; merge sync fields only.
|
|
23
|
+
const fresh = readMirrorRecord(opts.projectName) ?? record;
|
|
24
|
+
writeMirrorRecord({
|
|
25
|
+
...fresh,
|
|
26
|
+
defaultBranch: fresh.defaultBranch === branch ? fresh.defaultBranch : fresh.defaultBranch,
|
|
27
|
+
lastSyncedAt: syncedAt,
|
|
28
|
+
lastSha: sha,
|
|
29
|
+
});
|
|
30
|
+
log.info({ projectName: opts.projectName, sha, branch }, "sync complete");
|
|
31
|
+
return { sha, branch, syncedAt };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/mirror/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGtF,MAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAElC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAiB;IAChD,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC;IACnD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAE1C,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACvE,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE3B,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,MAAM,EAAE,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACjG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC;IAEjD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE1C,6EAA6E;IAC7E,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC;IAC3D,iBAAiB,CAAC;QAChB,GAAG,KAAK;QACR,aAAa,EAAE,KAAK,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa;QACzF,YAAY,EAAE,QAAQ;QACtB,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC;IAC1E,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project-name slug used as the directory key under
|
|
3
|
+
* ~/.local/harness/{repos,state}/<name>/.
|
|
4
|
+
*
|
|
5
|
+
* Normalized by `normalizeProjectName` from package.json `name` (preferred)
|
|
6
|
+
* or directory name. Lowercased; non-alphanumerics → underscores.
|
|
7
|
+
*/
|
|
8
|
+
export type ProjectName = string;
|
|
9
|
+
/**
|
|
10
|
+
* Persisted at ~/.local/harness/state/<projectName>/mirror.json.
|
|
11
|
+
*
|
|
12
|
+
* Owned by the harness; the user's working tree at userTreePath is sacred —
|
|
13
|
+
* harness reads it for dirty-overlap checks, never writes.
|
|
14
|
+
*/
|
|
15
|
+
export interface MirrorRecord {
|
|
16
|
+
projectName: ProjectName;
|
|
17
|
+
/** Absolute path to the user's primary working tree. Read-only for harness. */
|
|
18
|
+
userTreePath: string;
|
|
19
|
+
/** Origin URL discovered at adoption (or supplied). */
|
|
20
|
+
originUrl: string;
|
|
21
|
+
/** Default branch (resolved at adoption from origin/HEAD). */
|
|
22
|
+
defaultBranch: string;
|
|
23
|
+
/** Absolute path to the parallel mirror clone. */
|
|
24
|
+
mirrorPath: string;
|
|
25
|
+
/** ISO timestamp of last successful sync. */
|
|
26
|
+
lastSyncedAt: string | null;
|
|
27
|
+
/** SHA at HEAD after last sync. */
|
|
28
|
+
lastSha: string | null;
|
|
29
|
+
/** ISO timestamp the record was created. */
|
|
30
|
+
createdAt: string;
|
|
31
|
+
}
|
|
32
|
+
export interface SyncResult {
|
|
33
|
+
/** SHA pin captured immediately after fetch + reset. */
|
|
34
|
+
sha: string;
|
|
35
|
+
/** Branch the mirror is pinned to (default origin/<defaultBranch>). */
|
|
36
|
+
branch: string;
|
|
37
|
+
syncedAt: string;
|
|
38
|
+
}
|
|
39
|
+
export interface PushResult {
|
|
40
|
+
/** SHA pushed to origin. */
|
|
41
|
+
sha: string;
|
|
42
|
+
branch: string;
|
|
43
|
+
pushedAt: string;
|
|
44
|
+
/** Stdout from git push, kept for the run event log. */
|
|
45
|
+
raw: string;
|
|
46
|
+
}
|
|
47
|
+
export interface DirtyOverlapResult {
|
|
48
|
+
/** Files with un-committed changes in the user's working tree. */
|
|
49
|
+
dirtyFiles: string[];
|
|
50
|
+
/** Subset of dirtyFiles that match any of the run's target globs. */
|
|
51
|
+
overlappingFiles: string[];
|
|
52
|
+
/** True iff overlappingFiles is non-empty. */
|
|
53
|
+
overlap: boolean;
|
|
54
|
+
}
|
|
55
|
+
export interface CloneOptions {
|
|
56
|
+
projectName: ProjectName;
|
|
57
|
+
userTreePath: string;
|
|
58
|
+
originUrl: string;
|
|
59
|
+
defaultBranch?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface SyncOptions {
|
|
62
|
+
projectName: ProjectName;
|
|
63
|
+
/** Override default branch for this sync (rare). */
|
|
64
|
+
branch?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface PushOptions {
|
|
67
|
+
projectName: ProjectName;
|
|
68
|
+
/** Branch to push; defaults to record.defaultBranch. */
|
|
69
|
+
branch?: string;
|
|
70
|
+
/** Set to true only when explicitly authorized; otherwise refuse force pushes. */
|
|
71
|
+
force?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface DirtyOverlapOptions {
|
|
74
|
+
projectName: ProjectName;
|
|
75
|
+
/** Globs from the dispatched run's tightened spec (target_path_globs). */
|
|
76
|
+
targetGlobs: string[];
|
|
77
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mirror/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type ProjectName = string;
|
|
2
|
+
export declare function cairnHome(): string;
|
|
3
|
+
export declare function modelsRoot(): string;
|
|
4
|
+
/** `.cairn/sessions/` — per-session state root inside an adopted project. */
|
|
5
|
+
export declare function sessionsDir(repoRoot: string): string;
|
|
6
|
+
/** `.cairn/sessions/<id>/` — directory owned by one session for the duration of that session. */
|
|
7
|
+
export declare function sessionStateDir(repoRoot: string, sessionId: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Sanitize a session id to a filesystem-safe slug. Claude Code ids are
|
|
10
|
+
* already uuid-shaped, but defensively reject path separators / dots and
|
|
11
|
+
* collapse any other non-alphanumeric run to `_`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function sanitizeSessionId(raw: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Normalize a free-form name (package.json `name`, directory name) into the
|
|
16
|
+
* filesystem slug used as a directory key.
|
|
17
|
+
*
|
|
18
|
+
* - Lowercased
|
|
19
|
+
* - Scoped names (`@org/pkg`) use the path-after-slash
|
|
20
|
+
* - Non-alphanumerics collapse to a single underscore
|
|
21
|
+
* - Leading/trailing underscores stripped
|
|
22
|
+
*/
|
|
23
|
+
export declare function normalizeProjectName(raw: string): ProjectName;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
const CAIRN_HOME_ROOT = ".local/cairn";
|
|
4
|
+
export function cairnHome() {
|
|
5
|
+
return resolve(homedir(), CAIRN_HOME_ROOT);
|
|
6
|
+
}
|
|
7
|
+
export function modelsRoot() {
|
|
8
|
+
return join(cairnHome(), "models");
|
|
9
|
+
}
|
|
10
|
+
/** `.cairn/sessions/` — per-session state root inside an adopted project. */
|
|
11
|
+
export function sessionsDir(repoRoot) {
|
|
12
|
+
return join(repoRoot, ".cairn", "sessions");
|
|
13
|
+
}
|
|
14
|
+
/** `.cairn/sessions/<id>/` — directory owned by one session for the duration of that session. */
|
|
15
|
+
export function sessionStateDir(repoRoot, sessionId) {
|
|
16
|
+
return join(sessionsDir(repoRoot), sanitizeSessionId(sessionId));
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Sanitize a session id to a filesystem-safe slug. Claude Code ids are
|
|
20
|
+
* already uuid-shaped, but defensively reject path separators / dots and
|
|
21
|
+
* collapse any other non-alphanumeric run to `_`.
|
|
22
|
+
*/
|
|
23
|
+
export function sanitizeSessionId(raw) {
|
|
24
|
+
const slug = raw.replace(/[^a-zA-Z0-9._-]+/g, "_").replace(/^[._-]+|[._-]+$/g, "");
|
|
25
|
+
if (slug.length === 0) {
|
|
26
|
+
throw new Error(`Cannot sanitize session id from "${raw}" — result is empty`);
|
|
27
|
+
}
|
|
28
|
+
return slug;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Normalize a free-form name (package.json `name`, directory name) into the
|
|
32
|
+
* filesystem slug used as a directory key.
|
|
33
|
+
*
|
|
34
|
+
* - Lowercased
|
|
35
|
+
* - Scoped names (`@org/pkg`) use the path-after-slash
|
|
36
|
+
* - Non-alphanumerics collapse to a single underscore
|
|
37
|
+
* - Leading/trailing underscores stripped
|
|
38
|
+
*/
|
|
39
|
+
export function normalizeProjectName(raw) {
|
|
40
|
+
const afterScope = raw.includes("/") ? (raw.split("/").pop() ?? raw) : raw;
|
|
41
|
+
const slug = afterScope
|
|
42
|
+
.toLowerCase()
|
|
43
|
+
.replace(/[^a-z0-9]+/g, "_")
|
|
44
|
+
.replace(/^_+|_+$/g, "");
|
|
45
|
+
if (slug.length === 0) {
|
|
46
|
+
throw new Error(`Cannot normalize project name from "${raw}" — result is empty`);
|
|
47
|
+
}
|
|
48
|
+
return slug;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/paths/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,eAAe,GAAG,cAAc,CAAC;AAIvC,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,SAAiB;IACjE,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACnF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,qBAAqB,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3E,MAAM,IAAI,GAAG,UAAU;SACpB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,qBAAqB,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/profiles/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Profile } from "./types.js";
|
|
2
|
+
export declare function registerProfile(profile: Profile): void;
|
|
3
|
+
export declare function selectProfile(repoRoot: string): Profile;
|
|
4
|
+
export declare function getProfile(id: string): Profile | null;
|
|
5
|
+
export declare function listProfiles(): readonly Profile[];
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { unknownProfile } from "./unknown.js";
|
|
2
|
+
/**
|
|
3
|
+
* Profile registry. Order matters — earlier profiles win.
|
|
4
|
+
*
|
|
5
|
+
* `unknown` is always last; it detects unconditionally as the fallback.
|
|
6
|
+
* Future profiles (typescript-next-nest, python-fastapi, rails, go, rust)
|
|
7
|
+
* are added before `unknown`, in priority order.
|
|
8
|
+
*/
|
|
9
|
+
const profiles = [unknownProfile];
|
|
10
|
+
export function registerProfile(profile) {
|
|
11
|
+
if (profile.id === "unknown") {
|
|
12
|
+
throw new Error("Cannot re-register the unknown profile");
|
|
13
|
+
}
|
|
14
|
+
// Insert before unknown.
|
|
15
|
+
const insertAt = profiles.findIndex((p) => p.id === "unknown");
|
|
16
|
+
profiles.splice(insertAt, 0, profile);
|
|
17
|
+
}
|
|
18
|
+
export function selectProfile(repoRoot) {
|
|
19
|
+
for (const profile of profiles) {
|
|
20
|
+
if (profile.detect(repoRoot))
|
|
21
|
+
return profile;
|
|
22
|
+
}
|
|
23
|
+
return unknownProfile;
|
|
24
|
+
}
|
|
25
|
+
export function getProfile(id) {
|
|
26
|
+
return profiles.find((p) => p.id === id) ?? null;
|
|
27
|
+
}
|
|
28
|
+
export function listProfiles() {
|
|
29
|
+
return profiles;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/profiles/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,QAAQ,GAAc,CAAC,cAAc,CAAC,CAAC;AAE7C,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,yBAAyB;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,OAAO,OAAO,CAAC;IAC/C,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|