@cleocode/core 2026.4.9 → 2026.4.11
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/adapters/adapter-registry.js +64 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/discovery.js +83 -0
- package/dist/adapters/discovery.js.map +1 -0
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/manager.js +260 -0
- package/dist/adapters/manager.js.map +1 -0
- package/dist/admin/export-tasks.js +171 -0
- package/dist/admin/export-tasks.js.map +1 -0
- package/dist/admin/export.js +103 -0
- package/dist/admin/export.js.map +1 -0
- package/dist/admin/help.js +106 -0
- package/dist/admin/help.js.map +1 -0
- package/dist/admin/import-tasks.js +182 -0
- package/dist/admin/import-tasks.js.map +1 -0
- package/dist/admin/import.js +129 -0
- package/dist/admin/import.js.map +1 -0
- package/dist/admin/index.js +13 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/adrs/find.js +134 -0
- package/dist/adrs/find.js.map +1 -0
- package/dist/adrs/index.js +15 -0
- package/dist/adrs/index.js.map +1 -0
- package/dist/adrs/link-pipeline.js +160 -0
- package/dist/adrs/link-pipeline.js.map +1 -0
- package/dist/adrs/list.js +43 -0
- package/dist/adrs/list.js.map +1 -0
- package/dist/adrs/parse.js +51 -0
- package/dist/adrs/parse.js.map +1 -0
- package/dist/adrs/show.js +22 -0
- package/dist/adrs/show.js.map +1 -0
- package/dist/adrs/sync.js +188 -0
- package/dist/adrs/sync.js.map +1 -0
- package/dist/adrs/types.js +9 -0
- package/dist/adrs/types.js.map +1 -0
- package/dist/adrs/validate.js +57 -0
- package/dist/adrs/validate.js.map +1 -0
- package/dist/agents/agent-registry.js +288 -0
- package/dist/agents/agent-registry.js.map +1 -0
- package/dist/agents/agent-schema.d.ts +2 -2
- package/dist/agents/agent-schema.js +82 -0
- package/dist/agents/agent-schema.js.map +1 -0
- package/dist/agents/capacity.js +116 -0
- package/dist/agents/capacity.js.map +1 -0
- package/dist/agents/execution-learning.js +474 -0
- package/dist/agents/execution-learning.js.map +1 -0
- package/dist/agents/health-monitor.js +217 -0
- package/dist/agents/health-monitor.js.map +1 -0
- package/dist/agents/index.js +29 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/registry.js +314 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/retry.js +215 -0
- package/dist/agents/retry.js.map +1 -0
- package/dist/audit-prune.js +94 -0
- package/dist/audit-prune.js.map +1 -0
- package/dist/audit.js +68 -0
- package/dist/audit.js.map +1 -0
- package/dist/backfill/index.js +229 -0
- package/dist/backfill/index.js.map +1 -0
- package/dist/bootstrap.js +344 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/caamp/adapter.js +259 -0
- package/dist/caamp/adapter.js.map +1 -0
- package/dist/caamp/capability-check.js +38 -0
- package/dist/caamp/capability-check.js.map +1 -0
- package/dist/caamp/index.js +21 -0
- package/dist/caamp/index.js.map +1 -0
- package/dist/caamp-init.js +16 -0
- package/dist/caamp-init.js.map +1 -0
- package/dist/cleo.js +322 -0
- package/dist/cleo.js.map +1 -0
- package/dist/code/index.js +10 -0
- package/dist/code/index.js.map +1 -0
- package/dist/code/outline.js +165 -0
- package/dist/code/outline.js.map +1 -0
- package/dist/code/parser.js +295 -0
- package/dist/code/parser.js.map +1 -0
- package/dist/code/search.js +135 -0
- package/dist/code/search.js.map +1 -0
- package/dist/code/unfold.js +155 -0
- package/dist/code/unfold.js.map +1 -0
- package/dist/codebase-map/analyzers/architecture.js +130 -0
- package/dist/codebase-map/analyzers/architecture.js.map +1 -0
- package/dist/codebase-map/analyzers/concerns.js +122 -0
- package/dist/codebase-map/analyzers/concerns.js.map +1 -0
- package/dist/codebase-map/analyzers/conventions.js +149 -0
- package/dist/codebase-map/analyzers/conventions.js.map +1 -0
- package/dist/codebase-map/analyzers/integrations.js +108 -0
- package/dist/codebase-map/analyzers/integrations.js.map +1 -0
- package/dist/codebase-map/analyzers/stack.js +117 -0
- package/dist/codebase-map/analyzers/stack.js.map +1 -0
- package/dist/codebase-map/analyzers/structure.js +137 -0
- package/dist/codebase-map/analyzers/structure.js.map +1 -0
- package/dist/codebase-map/analyzers/testing.js +118 -0
- package/dist/codebase-map/analyzers/testing.js.map +1 -0
- package/dist/codebase-map/index.js +57 -0
- package/dist/codebase-map/index.js.map +1 -0
- package/dist/codebase-map/store.js +122 -0
- package/dist/codebase-map/store.js.map +1 -0
- package/dist/codebase-map/summary.js +152 -0
- package/dist/codebase-map/summary.js.map +1 -0
- package/dist/compliance/index.js +288 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/protocol-enforcement.js +332 -0
- package/dist/compliance/protocol-enforcement.js.map +1 -0
- package/dist/compliance/protocol-rules.js +786 -0
- package/dist/compliance/protocol-rules.js.map +1 -0
- package/dist/compliance/protocol-types.js +79 -0
- package/dist/compliance/protocol-types.js.map +1 -0
- package/dist/compliance/store.js +53 -0
- package/dist/compliance/store.js.map +1 -0
- package/dist/conduit/conduit-client.js +107 -0
- package/dist/conduit/conduit-client.js.map +1 -0
- package/dist/conduit/factory.js +52 -0
- package/dist/conduit/factory.js.map +1 -0
- package/dist/conduit/http-transport.js +155 -0
- package/dist/conduit/http-transport.js.map +1 -0
- package/dist/conduit/index.js +15 -0
- package/dist/conduit/index.js.map +1 -0
- package/dist/conduit/local-transport.js +245 -0
- package/dist/conduit/local-transport.js.map +1 -0
- package/dist/conduit/sse-transport.js +299 -0
- package/dist/conduit/sse-transport.js.map +1 -0
- package/dist/config/build-config.js +29 -0
- package/dist/config/build-config.js.map +1 -0
- package/dist/config.js +401 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.js +18 -0
- package/dist/constants.js.map +1 -0
- package/dist/context/index.js +137 -0
- package/dist/context/index.js.map +1 -0
- package/dist/crypto/credentials.js +191 -0
- package/dist/crypto/credentials.js.map +1 -0
- package/dist/discovery.js +182 -0
- package/dist/discovery.js.map +1 -0
- package/dist/engine-result.js +12 -0
- package/dist/engine-result.js.map +1 -0
- package/dist/error-catalog.js +404 -0
- package/dist/error-catalog.js.map +1 -0
- package/dist/error-registry.js +393 -0
- package/dist/error-registry.js.map +1 -0
- package/dist/errors.js +167 -0
- package/dist/errors.js.map +1 -0
- package/dist/hooks/handlers/agent-hooks.js +106 -0
- package/dist/hooks/handlers/agent-hooks.js.map +1 -0
- package/dist/hooks/handlers/context-hooks.js +111 -0
- package/dist/hooks/handlers/context-hooks.js.map +1 -0
- package/dist/hooks/handlers/error-hooks.js +52 -0
- package/dist/hooks/handlers/error-hooks.js.map +1 -0
- package/dist/hooks/handlers/file-hooks.js +104 -0
- package/dist/hooks/handlers/file-hooks.js.map +1 -0
- package/dist/hooks/handlers/handler-helpers.js +61 -0
- package/dist/hooks/handlers/handler-helpers.js.map +1 -0
- package/dist/hooks/handlers/index.js +28 -0
- package/dist/hooks/handlers/index.js.map +1 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js +42 -0
- package/dist/hooks/handlers/memory-bridge-refresh.js.map +1 -0
- package/dist/hooks/handlers/notification-hooks.js +62 -0
- package/dist/hooks/handlers/notification-hooks.js.map +1 -0
- package/dist/hooks/handlers/session-hooks.d.ts +21 -0
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +142 -0
- package/dist/hooks/handlers/session-hooks.js.map +1 -0
- package/dist/hooks/handlers/task-hooks.js +65 -0
- package/dist/hooks/handlers/task-hooks.js.map +1 -0
- package/dist/hooks/handlers/work-capture-hooks.js +165 -0
- package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
- package/dist/hooks/index.js +13 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/payload-schemas.d.ts +2 -2
- package/dist/hooks/payload-schemas.js +220 -0
- package/dist/hooks/payload-schemas.js.map +1 -0
- package/dist/hooks/provider-hooks.js +66 -0
- package/dist/hooks/provider-hooks.js.map +1 -0
- package/dist/hooks/registry.js +229 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/types.js +66 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/hooks.js +136 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.js +3361 -3095
- package/dist/index.js.map +4 -4
- package/dist/init.js +852 -0
- package/dist/init.js.map +1 -0
- package/dist/inject/index.js +82 -0
- package/dist/inject/index.js.map +1 -0
- package/dist/injection.js +343 -0
- package/dist/injection.js.map +1 -0
- package/dist/intelligence/adaptive-validation.js +497 -0
- package/dist/intelligence/adaptive-validation.js.map +1 -0
- package/dist/intelligence/impact.js +675 -0
- package/dist/intelligence/impact.js.map +1 -0
- package/dist/intelligence/index.js +22 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/intelligence/patterns.js +492 -0
- package/dist/intelligence/patterns.js.map +1 -0
- package/dist/intelligence/prediction.js +499 -0
- package/dist/intelligence/prediction.js.map +1 -0
- package/dist/intelligence/types.js +13 -0
- package/dist/intelligence/types.js.map +1 -0
- package/dist/internal.d.ts +7 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +299 -0
- package/dist/internal.js.map +1 -0
- package/dist/issue/create.js +121 -0
- package/dist/issue/create.js.map +1 -0
- package/dist/issue/diagnostics.js +59 -0
- package/dist/issue/diagnostics.js.map +1 -0
- package/dist/issue/index.js +10 -0
- package/dist/issue/index.js.map +1 -0
- package/dist/issue/template-parser.js +267 -0
- package/dist/issue/template-parser.js.map +1 -0
- package/dist/json-schema-validator.js +76 -0
- package/dist/json-schema-validator.js.map +1 -0
- package/dist/lib/index.js +11 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/retry.js +152 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/tree-sitter-languages.js +71 -0
- package/dist/lib/tree-sitter-languages.js.map +1 -0
- package/dist/lifecycle/chain-composition.js +152 -0
- package/dist/lifecycle/chain-composition.js.map +1 -0
- package/dist/lifecycle/chain-store.js +246 -0
- package/dist/lifecycle/chain-store.js.map +1 -0
- package/dist/lifecycle/consolidate-rcasd.js +352 -0
- package/dist/lifecycle/consolidate-rcasd.js.map +1 -0
- package/dist/lifecycle/default-chain.js +176 -0
- package/dist/lifecycle/default-chain.js.map +1 -0
- package/dist/lifecycle/evidence.js +180 -0
- package/dist/lifecycle/evidence.js.map +1 -0
- package/dist/lifecycle/frontmatter.js +363 -0
- package/dist/lifecycle/frontmatter.js.map +1 -0
- package/dist/lifecycle/index.js +756 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/pipeline.js +656 -0
- package/dist/lifecycle/pipeline.js.map +1 -0
- package/dist/lifecycle/rcasd-index.js +326 -0
- package/dist/lifecycle/rcasd-index.js.map +1 -0
- package/dist/lifecycle/rcasd-paths.js +220 -0
- package/dist/lifecycle/rcasd-paths.js.map +1 -0
- package/dist/lifecycle/resume.js +864 -0
- package/dist/lifecycle/resume.js.map +1 -0
- package/dist/lifecycle/stage-artifacts.js +94 -0
- package/dist/lifecycle/stage-artifacts.js.map +1 -0
- package/dist/lifecycle/stage-guidance.js +234 -0
- package/dist/lifecycle/stage-guidance.js.map +1 -0
- package/dist/lifecycle/stages.js +534 -0
- package/dist/lifecycle/stages.js.map +1 -0
- package/dist/lifecycle/state-machine.js +516 -0
- package/dist/lifecycle/state-machine.js.map +1 -0
- package/dist/lifecycle/tessera-engine.js +249 -0
- package/dist/lifecycle/tessera-engine.js.map +1 -0
- package/dist/logger.js +140 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/auto-extract.js +177 -0
- package/dist/memory/auto-extract.js.map +1 -0
- package/dist/memory/brain-embedding.js +66 -0
- package/dist/memory/brain-embedding.js.map +1 -0
- package/dist/memory/brain-lifecycle.js +298 -0
- package/dist/memory/brain-lifecycle.js.map +1 -0
- package/dist/memory/brain-links.js +161 -0
- package/dist/memory/brain-links.js.map +1 -0
- package/dist/memory/brain-maintenance.js +114 -0
- package/dist/memory/brain-maintenance.js.map +1 -0
- package/dist/memory/brain-migration.js +149 -0
- package/dist/memory/brain-migration.js.map +1 -0
- package/dist/memory/brain-reasoning.js +215 -0
- package/dist/memory/brain-reasoning.js.map +1 -0
- package/dist/memory/brain-retrieval.js +542 -0
- package/dist/memory/brain-retrieval.js.map +1 -0
- package/dist/memory/brain-row-types.js +10 -0
- package/dist/memory/brain-row-types.js.map +1 -0
- package/dist/memory/brain-search.js +519 -0
- package/dist/memory/brain-search.js.map +1 -0
- package/dist/memory/brain-similarity.js +145 -0
- package/dist/memory/brain-similarity.js.map +1 -0
- package/dist/memory/claude-mem-migration.js +277 -0
- package/dist/memory/claude-mem-migration.js.map +1 -0
- package/dist/memory/decisions.js +162 -0
- package/dist/memory/decisions.js.map +1 -0
- package/dist/memory/embedding-local.js +97 -0
- package/dist/memory/embedding-local.js.map +1 -0
- package/dist/memory/embedding-queue.js +271 -0
- package/dist/memory/embedding-queue.js.map +1 -0
- package/dist/memory/embedding-worker.js +58 -0
- package/dist/memory/embedding-worker.js.map +1 -0
- package/dist/memory/engine-compat.js +1397 -0
- package/dist/memory/engine-compat.js.map +1 -0
- package/dist/memory/index.js +1140 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/learnings.d.ts +4 -4
- package/dist/memory/learnings.js +121 -0
- package/dist/memory/learnings.js.map +1 -0
- package/dist/memory/memory-bridge.js +370 -0
- package/dist/memory/memory-bridge.js.map +1 -0
- package/dist/memory/patterns.d.ts +6 -6
- package/dist/memory/patterns.js +122 -0
- package/dist/memory/patterns.js.map +1 -0
- package/dist/memory/pipeline-manifest-sqlite.js +975 -0
- package/dist/memory/pipeline-manifest-sqlite.js.map +1 -0
- package/dist/memory/session-memory.js +331 -0
- package/dist/memory/session-memory.js.map +1 -0
- package/dist/metrics/ab-test.js +260 -0
- package/dist/metrics/ab-test.js.map +1 -0
- package/dist/metrics/aggregation.js +363 -0
- package/dist/metrics/aggregation.js.map +1 -0
- package/dist/metrics/common.js +64 -0
- package/dist/metrics/common.js.map +1 -0
- package/dist/metrics/enums.js +78 -0
- package/dist/metrics/enums.js.map +1 -0
- package/dist/metrics/index.js +19 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/model-provider-registry.js +88 -0
- package/dist/metrics/model-provider-registry.js.map +1 -0
- package/dist/metrics/otel-integration.js +263 -0
- package/dist/metrics/otel-integration.js.map +1 -0
- package/dist/metrics/provider-detection.js +103 -0
- package/dist/metrics/provider-detection.js.map +1 -0
- package/dist/metrics/token-estimation.js +253 -0
- package/dist/metrics/token-estimation.js.map +1 -0
- package/dist/metrics/token-service.js +450 -0
- package/dist/metrics/token-service.js.map +1 -0
- package/dist/migration/agent-outputs.js +316 -0
- package/dist/migration/agent-outputs.js.map +1 -0
- package/dist/migration/checksum.js +92 -0
- package/dist/migration/checksum.js.map +1 -0
- package/dist/migration/index.js +282 -0
- package/dist/migration/index.js.map +1 -0
- package/dist/migration/logger.js +360 -0
- package/dist/migration/logger.js.map +1 -0
- package/dist/migration/preflight.js +9 -0
- package/dist/migration/preflight.js.map +1 -0
- package/dist/migration/state.js +421 -0
- package/dist/migration/state.js.map +1 -0
- package/dist/migration/validate.js +241 -0
- package/dist/migration/validate.js.map +1 -0
- package/dist/mvi-helpers.js +74 -0
- package/dist/mvi-helpers.js.map +1 -0
- package/dist/nexus/deps.js +375 -0
- package/dist/nexus/deps.js.map +1 -0
- package/dist/nexus/discover.js +288 -0
- package/dist/nexus/discover.js.map +1 -0
- package/dist/nexus/hash.js +10 -0
- package/dist/nexus/hash.js.map +1 -0
- package/dist/nexus/index.js +40 -0
- package/dist/nexus/index.js.map +1 -0
- package/dist/nexus/migrate-json-to-sqlite.js +115 -0
- package/dist/nexus/migrate-json-to-sqlite.js.map +1 -0
- package/dist/nexus/permissions.js +105 -0
- package/dist/nexus/permissions.js.map +1 -0
- package/dist/nexus/query.js +175 -0
- package/dist/nexus/query.js.map +1 -0
- package/dist/nexus/registry.js +584 -0
- package/dist/nexus/registry.js.map +1 -0
- package/dist/nexus/sharing/index.js +288 -0
- package/dist/nexus/sharing/index.js.map +1 -0
- package/dist/nexus/transfer-types.js +8 -0
- package/dist/nexus/transfer-types.js.map +1 -0
- package/dist/nexus/transfer.js +263 -0
- package/dist/nexus/transfer.js.map +1 -0
- package/dist/nexus/workspace.js +355 -0
- package/dist/nexus/workspace.js.map +1 -0
- package/dist/observability/index.js +103 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/log-filter.js +63 -0
- package/dist/observability/log-filter.js.map +1 -0
- package/dist/observability/log-parser.js +99 -0
- package/dist/observability/log-parser.js.map +1 -0
- package/dist/observability/log-reader.js +139 -0
- package/dist/observability/log-reader.js.map +1 -0
- package/dist/observability/types.js +19 -0
- package/dist/observability/types.js.map +1 -0
- package/dist/orchestration/analyze.js +107 -0
- package/dist/orchestration/analyze.js.map +1 -0
- package/dist/orchestration/bootstrap.js +132 -0
- package/dist/orchestration/bootstrap.js.map +1 -0
- package/dist/orchestration/context.js +56 -0
- package/dist/orchestration/context.js.map +1 -0
- package/dist/orchestration/critical-path.js +100 -0
- package/dist/orchestration/critical-path.js.map +1 -0
- package/dist/orchestration/hierarchy.js +183 -0
- package/dist/orchestration/hierarchy.js.map +1 -0
- package/dist/orchestration/index.js +287 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/parallel.js +89 -0
- package/dist/orchestration/parallel.js.map +1 -0
- package/dist/orchestration/protocol-validators.js +815 -0
- package/dist/orchestration/protocol-validators.js.map +1 -0
- package/dist/orchestration/skill-ops.js +98 -0
- package/dist/orchestration/skill-ops.js.map +1 -0
- package/dist/orchestration/status.js +107 -0
- package/dist/orchestration/status.js.map +1 -0
- package/dist/orchestration/unblock.js +103 -0
- package/dist/orchestration/unblock.js.map +1 -0
- package/dist/orchestration/validate-spawn.js +67 -0
- package/dist/orchestration/validate-spawn.js.map +1 -0
- package/dist/orchestration/waves.js +86 -0
- package/dist/orchestration/waves.js.map +1 -0
- package/dist/otel/index.js +163 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/output.js +164 -0
- package/dist/output.js.map +1 -0
- package/dist/pagination.js +64 -0
- package/dist/pagination.js.map +1 -0
- package/dist/paths.d.ts +39 -9
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +776 -0
- package/dist/paths.js.map +1 -0
- package/dist/phases/deps.js +372 -0
- package/dist/phases/deps.js.map +1 -0
- package/dist/phases/index.js +349 -0
- package/dist/phases/index.js.map +1 -0
- package/dist/pipeline/index.js +10 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/phase.js +45 -0
- package/dist/pipeline/phase.js.map +1 -0
- package/dist/platform.js +211 -0
- package/dist/platform.js.map +1 -0
- package/dist/project-info.js +84 -0
- package/dist/project-info.js.map +1 -0
- package/dist/reconciliation/index.js +10 -0
- package/dist/reconciliation/index.js.map +1 -0
- package/dist/reconciliation/link-store.js +129 -0
- package/dist/reconciliation/link-store.js.map +1 -0
- package/dist/reconciliation/reconciliation-engine.js +298 -0
- package/dist/reconciliation/reconciliation-engine.js.map +1 -0
- package/dist/release/artifacts.js +427 -0
- package/dist/release/artifacts.js.map +1 -0
- package/dist/release/changelog-writer.js +151 -0
- package/dist/release/changelog-writer.js.map +1 -0
- package/dist/release/channel.js +144 -0
- package/dist/release/channel.js.map +1 -0
- package/dist/release/ci.js +166 -0
- package/dist/release/ci.js.map +1 -0
- package/dist/release/github-pr.js +225 -0
- package/dist/release/github-pr.js.map +1 -0
- package/dist/release/guards.js +116 -0
- package/dist/release/guards.js.map +1 -0
- package/dist/release/index.js +22 -0
- package/dist/release/index.js.map +1 -0
- package/dist/release/release-config.js +158 -0
- package/dist/release/release-config.js.map +1 -0
- package/dist/release/release-manifest.js +1019 -0
- package/dist/release/release-manifest.js.map +1 -0
- package/dist/release/version-bump.js +255 -0
- package/dist/release/version-bump.js.map +1 -0
- package/dist/remote/index.js +257 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/repair.js +130 -0
- package/dist/repair.js.map +1 -0
- package/dist/research/index.js +2 -0
- package/dist/research/index.js.map +1 -0
- package/dist/roadmap/index.js +59 -0
- package/dist/roadmap/index.js.map +1 -0
- package/dist/routing/capability-matrix.js +1556 -0
- package/dist/routing/capability-matrix.js.map +1 -0
- package/dist/routing/index.js +9 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/scaffold.d.ts +15 -2
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +1759 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/schema-management.js +295 -0
- package/dist/schema-management.js.map +1 -0
- package/dist/security/index.js +9 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/input-sanitization.js +321 -0
- package/dist/security/input-sanitization.js.map +1 -0
- package/dist/sequence/index.js +295 -0
- package/dist/sequence/index.js.map +1 -0
- package/dist/sessions/assumptions.js +54 -0
- package/dist/sessions/assumptions.js.map +1 -0
- package/dist/sessions/briefing.js +377 -0
- package/dist/sessions/briefing.js.map +1 -0
- package/dist/sessions/context-alert.js +222 -0
- package/dist/sessions/context-alert.js.map +1 -0
- package/dist/sessions/context-inject.js +61 -0
- package/dist/sessions/context-inject.js.map +1 -0
- package/dist/sessions/context-monitor.js +98 -0
- package/dist/sessions/context-monitor.js.map +1 -0
- package/dist/sessions/decisions.js +65 -0
- package/dist/sessions/decisions.js.map +1 -0
- package/dist/sessions/find.js +65 -0
- package/dist/sessions/find.js.map +1 -0
- package/dist/sessions/handoff.js +328 -0
- package/dist/sessions/handoff.js.map +1 -0
- package/dist/sessions/hitl-warnings.js +254 -0
- package/dist/sessions/hitl-warnings.js.map +1 -0
- package/dist/sessions/index.js +327 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/session-archive.js +40 -0
- package/dist/sessions/session-archive.js.map +1 -0
- package/dist/sessions/session-cleanup.js +59 -0
- package/dist/sessions/session-cleanup.js.map +1 -0
- package/dist/sessions/session-drift.js +134 -0
- package/dist/sessions/session-drift.js.map +1 -0
- package/dist/sessions/session-enforcement.js +144 -0
- package/dist/sessions/session-enforcement.js.map +1 -0
- package/dist/sessions/session-grade.js +253 -0
- package/dist/sessions/session-grade.js.map +1 -0
- package/dist/sessions/session-history.js +42 -0
- package/dist/sessions/session-history.js.map +1 -0
- package/dist/sessions/session-id.js +81 -0
- package/dist/sessions/session-id.js.map +1 -0
- package/dist/sessions/session-memory-bridge.js +52 -0
- package/dist/sessions/session-memory-bridge.js.map +1 -0
- package/dist/sessions/session-show.js +24 -0
- package/dist/sessions/session-show.js.map +1 -0
- package/dist/sessions/session-stats.js +69 -0
- package/dist/sessions/session-stats.js.map +1 -0
- package/dist/sessions/session-suspend.js +39 -0
- package/dist/sessions/session-suspend.js.map +1 -0
- package/dist/sessions/session-switch.js +51 -0
- package/dist/sessions/session-switch.js.map +1 -0
- package/dist/sessions/session-view.js +76 -0
- package/dist/sessions/session-view.js.map +1 -0
- package/dist/sessions/snapshot.js +213 -0
- package/dist/sessions/snapshot.js.map +1 -0
- package/dist/sessions/statusline-setup.js +85 -0
- package/dist/sessions/statusline-setup.js.map +1 -0
- package/dist/sessions/types.js +8 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/skills/agents/config.js +94 -0
- package/dist/skills/agents/config.js.map +1 -0
- package/dist/skills/agents/install.js +116 -0
- package/dist/skills/agents/install.js.map +1 -0
- package/dist/skills/agents/registry.js +161 -0
- package/dist/skills/agents/registry.js.map +1 -0
- package/dist/skills/discovery.js +333 -0
- package/dist/skills/discovery.js.map +1 -0
- package/dist/skills/dispatch.js +347 -0
- package/dist/skills/dispatch.js.map +1 -0
- package/dist/skills/dynamic-skill-generator.js +87 -0
- package/dist/skills/dynamic-skill-generator.js.map +1 -0
- package/dist/skills/index.js +44 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/injection/subagent.js +195 -0
- package/dist/skills/injection/subagent.js.map +1 -0
- package/dist/skills/injection/token.js +260 -0
- package/dist/skills/injection/token.js.map +1 -0
- package/dist/skills/install.js +40 -0
- package/dist/skills/install.js.map +1 -0
- package/dist/skills/manifests/contribution.js +175 -0
- package/dist/skills/manifests/contribution.js.map +1 -0
- package/dist/skills/manifests/research.js +281 -0
- package/dist/skills/manifests/research.js.map +1 -0
- package/dist/skills/manifests/resolver.js +146 -0
- package/dist/skills/manifests/resolver.js.map +1 -0
- package/dist/skills/marketplace.js +90 -0
- package/dist/skills/marketplace.js.map +1 -0
- package/dist/skills/orchestrator/spawn.js +178 -0
- package/dist/skills/orchestrator/spawn.js.map +1 -0
- package/dist/skills/orchestrator/startup.js +451 -0
- package/dist/skills/orchestrator/startup.js.map +1 -0
- package/dist/skills/orchestrator/validator.js +301 -0
- package/dist/skills/orchestrator/validator.js.map +1 -0
- package/dist/skills/precedence-integration.js +73 -0
- package/dist/skills/precedence-integration.js.map +1 -0
- package/dist/skills/precedence-types.js +16 -0
- package/dist/skills/precedence-types.js.map +1 -0
- package/dist/skills/routing-table.js +63 -0
- package/dist/skills/routing-table.js.map +1 -0
- package/dist/skills/skill-paths.js +217 -0
- package/dist/skills/skill-paths.js.map +1 -0
- package/dist/skills/test-utility.js +55 -0
- package/dist/skills/test-utility.js.map +1 -0
- package/dist/skills/types.js +118 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validation.js +183 -0
- package/dist/skills/validation.js.map +1 -0
- package/dist/skills/version.js +57 -0
- package/dist/skills/version.js.map +1 -0
- package/dist/snapshot/index.js +188 -0
- package/dist/snapshot/index.js.map +1 -0
- package/dist/spawn/adapter-registry.js +246 -0
- package/dist/spawn/adapter-registry.js.map +1 -0
- package/dist/spawn/index.js +10 -0
- package/dist/spawn/index.js.map +1 -0
- package/dist/stats/index.js +343 -0
- package/dist/stats/index.js.map +1 -0
- package/dist/stats/workflow-telemetry.js +400 -0
- package/dist/stats/workflow-telemetry.js.map +1 -0
- package/dist/sticky/archive.js +47 -0
- package/dist/sticky/archive.js.map +1 -0
- package/dist/sticky/convert.js +235 -0
- package/dist/sticky/convert.js.map +1 -0
- package/dist/sticky/create.js +48 -0
- package/dist/sticky/create.js.map +1 -0
- package/dist/sticky/id.js +35 -0
- package/dist/sticky/id.js.map +1 -0
- package/dist/sticky/index.js +16 -0
- package/dist/sticky/index.js.map +1 -0
- package/dist/sticky/list.js +44 -0
- package/dist/sticky/list.js.map +1 -0
- package/dist/sticky/purge.js +45 -0
- package/dist/sticky/purge.js.map +1 -0
- package/dist/sticky/show.js +42 -0
- package/dist/sticky/show.js.map +1 -0
- package/dist/sticky/types.js +10 -0
- package/dist/sticky/types.js.map +1 -0
- package/dist/store/agent-registry-accessor.js +265 -0
- package/dist/store/agent-registry-accessor.js.map +1 -0
- package/dist/store/atomic.js +167 -0
- package/dist/store/atomic.js.map +1 -0
- package/dist/store/backup.js +94 -0
- package/dist/store/backup.js.map +1 -0
- package/dist/store/brain-accessor.js +397 -0
- package/dist/store/brain-accessor.js.map +1 -0
- package/dist/store/brain-schema.d.ts +8 -8
- package/dist/store/brain-schema.js +215 -0
- package/dist/store/brain-schema.js.map +1 -0
- package/dist/store/brain-sqlite.js +222 -0
- package/dist/store/brain-sqlite.js.map +1 -0
- package/dist/store/cache.js +168 -0
- package/dist/store/cache.js.map +1 -0
- package/dist/store/chain-schema.js +51 -0
- package/dist/store/chain-schema.js.map +1 -0
- package/dist/store/cleanup-legacy.d.ts +128 -0
- package/dist/store/cleanup-legacy.d.ts.map +1 -0
- package/dist/store/converters.js +124 -0
- package/dist/store/converters.js.map +1 -0
- package/dist/store/cross-db-cleanup.js +319 -0
- package/dist/store/cross-db-cleanup.js.map +1 -0
- package/dist/store/data-accessor.js +26 -0
- package/dist/store/data-accessor.js.map +1 -0
- package/dist/store/data-safety-central.js +269 -0
- package/dist/store/data-safety-central.js.map +1 -0
- package/dist/store/data-safety.js +274 -0
- package/dist/store/data-safety.js.map +1 -0
- package/dist/store/db-helpers.js +224 -0
- package/dist/store/db-helpers.js.map +1 -0
- package/dist/store/export.js +155 -0
- package/dist/store/export.js.map +1 -0
- package/dist/store/file-utils.js +270 -0
- package/dist/store/file-utils.js.map +1 -0
- package/dist/store/git-checkpoint.js +365 -0
- package/dist/store/git-checkpoint.js.map +1 -0
- package/dist/store/import-logging.js +139 -0
- package/dist/store/import-logging.js.map +1 -0
- package/dist/store/import-remap.js +145 -0
- package/dist/store/import-remap.js.map +1 -0
- package/dist/store/import-sort.js +121 -0
- package/dist/store/import-sort.js.map +1 -0
- package/dist/store/index.d.ts +1 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +29 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/json.js +208 -0
- package/dist/store/json.js.map +1 -0
- package/dist/store/lifecycle-store.js +249 -0
- package/dist/store/lifecycle-store.js.map +1 -0
- package/dist/store/lock.js +70 -0
- package/dist/store/lock.js.map +1 -0
- package/dist/store/migration-manager.js +151 -0
- package/dist/store/migration-manager.js.map +1 -0
- package/dist/store/migration-sqlite.js +676 -0
- package/dist/store/migration-sqlite.js.map +1 -0
- package/dist/store/nexus-schema.js +62 -0
- package/dist/store/nexus-schema.js.map +1 -0
- package/dist/store/nexus-sqlite.d.ts +14 -2
- package/dist/store/nexus-sqlite.d.ts.map +1 -1
- package/dist/store/nexus-sqlite.js +217 -0
- package/dist/store/nexus-sqlite.js.map +1 -0
- package/dist/store/nexus-validation-schemas.js +40 -0
- package/dist/store/nexus-validation-schemas.js.map +1 -0
- package/dist/store/parsers.js +37 -0
- package/dist/store/parsers.js.map +1 -0
- package/dist/store/project-detect.js +457 -0
- package/dist/store/project-detect.js.map +1 -0
- package/dist/store/provider.js +101 -0
- package/dist/store/provider.js.map +1 -0
- package/dist/store/safety-data-accessor.js +257 -0
- package/dist/store/safety-data-accessor.js.map +1 -0
- package/dist/store/schema.js +7 -0
- package/dist/store/schema.js.map +1 -0
- package/dist/store/session-store.js +219 -0
- package/dist/store/session-store.js.map +1 -0
- package/dist/store/signaldock-sqlite.js +400 -0
- package/dist/store/signaldock-sqlite.js.map +1 -0
- package/dist/store/sqlite-backup.d.ts +121 -10
- package/dist/store/sqlite-backup.d.ts.map +1 -1
- package/dist/store/sqlite-backup.js +241 -0
- package/dist/store/sqlite-backup.js.map +1 -0
- package/dist/store/sqlite-data-accessor.js +787 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -0
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +481 -0
- package/dist/store/sqlite.js.map +1 -0
- package/dist/store/status-registry.js +8 -0
- package/dist/store/status-registry.js.map +1 -0
- package/dist/store/task-store.js +358 -0
- package/dist/store/task-store.js.map +1 -0
- package/dist/store/tasks-schema.d.ts +8 -8
- package/dist/store/tasks-schema.js +610 -0
- package/dist/store/tasks-schema.js.map +1 -0
- package/dist/store/typed-query.js +15 -0
- package/dist/store/typed-query.js.map +1 -0
- package/dist/store/validation-schemas.d.ts +37 -37
- package/dist/store/validation-schemas.js +278 -0
- package/dist/store/validation-schemas.js.map +1 -0
- package/dist/system/archive-analytics.js +277 -0
- package/dist/system/archive-analytics.js.map +1 -0
- package/dist/system/archive-stats.js +64 -0
- package/dist/system/archive-stats.js.map +1 -0
- package/dist/system/audit.js +145 -0
- package/dist/system/audit.js.map +1 -0
- package/dist/system/backup.d.ts +91 -3
- package/dist/system/backup.d.ts.map +1 -1
- package/dist/system/backup.js +280 -0
- package/dist/system/backup.js.map +1 -0
- package/dist/system/cleanup.js +134 -0
- package/dist/system/cleanup.js.map +1 -0
- package/dist/system/health.js +1100 -0
- package/dist/system/health.js.map +1 -0
- package/dist/system/index.js +18 -0
- package/dist/system/index.js.map +1 -0
- package/dist/system/inject-generate.js +122 -0
- package/dist/system/inject-generate.js.map +1 -0
- package/dist/system/labels.js +38 -0
- package/dist/system/labels.js.map +1 -0
- package/dist/system/metrics.js +61 -0
- package/dist/system/metrics.js.map +1 -0
- package/dist/system/migrate.js +43 -0
- package/dist/system/migrate.js.map +1 -0
- package/dist/system/platform-paths.js +80 -0
- package/dist/system/platform-paths.js.map +1 -0
- package/dist/system/runtime.js +161 -0
- package/dist/system/runtime.js.map +1 -0
- package/dist/system/safestop.js +99 -0
- package/dist/system/safestop.js.map +1 -0
- package/dist/system/storage-preflight.js +123 -0
- package/dist/system/storage-preflight.js.map +1 -0
- package/dist/task-work/index.js +159 -0
- package/dist/task-work/index.js.map +1 -0
- package/dist/tasks/add.js +661 -0
- package/dist/tasks/add.js.map +1 -0
- package/dist/tasks/analyze.js +85 -0
- package/dist/tasks/analyze.js.map +1 -0
- package/dist/tasks/archive.js +90 -0
- package/dist/tasks/archive.js.map +1 -0
- package/dist/tasks/atomicity.js +83 -0
- package/dist/tasks/atomicity.js.map +1 -0
- package/dist/tasks/cancel-ops.js +83 -0
- package/dist/tasks/cancel-ops.js.map +1 -0
- package/dist/tasks/complete.js +211 -0
- package/dist/tasks/complete.js.map +1 -0
- package/dist/tasks/crossref-extract.js +73 -0
- package/dist/tasks/crossref-extract.js.map +1 -0
- package/dist/tasks/delete-preview.js +192 -0
- package/dist/tasks/delete-preview.js.map +1 -0
- package/dist/tasks/delete.js +120 -0
- package/dist/tasks/delete.js.map +1 -0
- package/dist/tasks/deletion-strategy.js +200 -0
- package/dist/tasks/deletion-strategy.js.map +1 -0
- package/dist/tasks/dependency-check.js +278 -0
- package/dist/tasks/dependency-check.js.map +1 -0
- package/dist/tasks/deps-ready.js +32 -0
- package/dist/tasks/deps-ready.js.map +1 -0
- package/dist/tasks/enforcement.js +86 -0
- package/dist/tasks/enforcement.js.map +1 -0
- package/dist/tasks/epic-enforcement.js +294 -0
- package/dist/tasks/epic-enforcement.js.map +1 -0
- package/dist/tasks/find.js +154 -0
- package/dist/tasks/find.js.map +1 -0
- package/dist/tasks/graph-cache.js +127 -0
- package/dist/tasks/graph-cache.js.map +1 -0
- package/dist/tasks/graph-ops.js +171 -0
- package/dist/tasks/graph-ops.js.map +1 -0
- package/dist/tasks/graph-rag.js +328 -0
- package/dist/tasks/graph-rag.js.map +1 -0
- package/dist/tasks/hierarchy-policy.js +149 -0
- package/dist/tasks/hierarchy-policy.js.map +1 -0
- package/dist/tasks/hierarchy.js +185 -0
- package/dist/tasks/hierarchy.js.map +1 -0
- package/dist/tasks/id-generator.js +65 -0
- package/dist/tasks/id-generator.js.map +1 -0
- package/dist/tasks/index.js +14 -0
- package/dist/tasks/index.js.map +1 -0
- package/dist/tasks/labels.js +52 -0
- package/dist/tasks/labels.js.map +1 -0
- package/dist/tasks/list.js +75 -0
- package/dist/tasks/list.js.map +1 -0
- package/dist/tasks/phase-tracking.js +133 -0
- package/dist/tasks/phase-tracking.js.map +1 -0
- package/dist/tasks/pipeline-stage.js +248 -0
- package/dist/tasks/pipeline-stage.js.map +1 -0
- package/dist/tasks/plan.js +268 -0
- package/dist/tasks/plan.js.map +1 -0
- package/dist/tasks/relates.js +89 -0
- package/dist/tasks/relates.js.map +1 -0
- package/dist/tasks/show.js +80 -0
- package/dist/tasks/show.js.map +1 -0
- package/dist/tasks/size-weighting.js +86 -0
- package/dist/tasks/size-weighting.js.map +1 -0
- package/dist/tasks/staleness.js +86 -0
- package/dist/tasks/staleness.js.map +1 -0
- package/dist/tasks/task-ops.js +1741 -0
- package/dist/tasks/task-ops.js.map +1 -0
- package/dist/tasks/update.js +277 -0
- package/dist/tasks/update.js.map +1 -0
- package/dist/templates/index.js +10 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/parser.js +254 -0
- package/dist/templates/parser.js.map +1 -0
- package/dist/ui/aliases.js +153 -0
- package/dist/ui/aliases.js.map +1 -0
- package/dist/ui/changelog.js +184 -0
- package/dist/ui/changelog.js.map +1 -0
- package/dist/ui/command-registry.js +168 -0
- package/dist/ui/command-registry.js.map +1 -0
- package/dist/ui/flags.js +94 -0
- package/dist/ui/flags.js.map +1 -0
- package/dist/ui/index.js +24 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/upgrade.js +1148 -0
- package/dist/upgrade.js.map +1 -0
- package/dist/validation/chain-validation.js +146 -0
- package/dist/validation/chain-validation.js.map +1 -0
- package/dist/validation/compliance.js +155 -0
- package/dist/validation/compliance.js.map +1 -0
- package/dist/validation/docs-sync.js +212 -0
- package/dist/validation/docs-sync.js.map +1 -0
- package/dist/validation/doctor/checks.js +1069 -0
- package/dist/validation/doctor/checks.js.map +1 -0
- package/dist/validation/doctor/index.js +9 -0
- package/dist/validation/doctor/index.js.map +1 -0
- package/dist/validation/doctor/project-cache.js +160 -0
- package/dist/validation/doctor/project-cache.js.map +1 -0
- package/dist/validation/doctor/utils.js +155 -0
- package/dist/validation/doctor/utils.js.map +1 -0
- package/dist/validation/engine.js +902 -0
- package/dist/validation/engine.js.map +1 -0
- package/dist/validation/gap-check.js +175 -0
- package/dist/validation/gap-check.js.map +1 -0
- package/dist/validation/index.js +40 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/manifest.js +237 -0
- package/dist/validation/manifest.js.map +1 -0
- package/dist/validation/operation-gate-validators.js +724 -0
- package/dist/validation/operation-gate-validators.js.map +1 -0
- package/dist/validation/operation-verification-gates.js +532 -0
- package/dist/validation/operation-verification-gates.js.map +1 -0
- package/dist/validation/param-utils.js +139 -0
- package/dist/validation/param-utils.js.map +1 -0
- package/dist/validation/protocol-common.js +300 -0
- package/dist/validation/protocol-common.js.map +1 -0
- package/dist/validation/protocols/_shared.js +75 -0
- package/dist/validation/protocols/_shared.js.map +1 -0
- package/dist/validation/protocols/architecture-decision.js +31 -0
- package/dist/validation/protocols/architecture-decision.js.map +1 -0
- package/dist/validation/protocols/artifact-publish.js +28 -0
- package/dist/validation/protocols/artifact-publish.js.map +1 -0
- package/dist/validation/protocols/consensus.js +41 -0
- package/dist/validation/protocols/consensus.js.map +1 -0
- package/dist/validation/protocols/contribution.js +27 -0
- package/dist/validation/protocols/contribution.js.map +1 -0
- package/dist/validation/protocols/decomposition.js +28 -0
- package/dist/validation/protocols/decomposition.js.map +1 -0
- package/dist/validation/protocols/implementation.js +24 -0
- package/dist/validation/protocols/implementation.js.map +1 -0
- package/dist/validation/protocols/provenance.js +29 -0
- package/dist/validation/protocols/provenance.js.map +1 -0
- package/dist/validation/protocols/release.js +29 -0
- package/dist/validation/protocols/release.js.map +1 -0
- package/dist/validation/protocols/research.js +24 -0
- package/dist/validation/protocols/research.js.map +1 -0
- package/dist/validation/protocols/specification.js +27 -0
- package/dist/validation/protocols/specification.js.map +1 -0
- package/dist/validation/protocols/testing.js +30 -0
- package/dist/validation/protocols/testing.js.map +1 -0
- package/dist/validation/protocols/validation.js +30 -0
- package/dist/validation/protocols/validation.js.map +1 -0
- package/dist/validation/schema-integrity.js +170 -0
- package/dist/validation/schema-integrity.js.map +1 -0
- package/dist/validation/schema-validator.js +176 -0
- package/dist/validation/schema-validator.js.map +1 -0
- package/dist/validation/validate-ops.js +937 -0
- package/dist/validation/validate-ops.js.map +1 -0
- package/dist/validation/validation-rules.js +226 -0
- package/dist/validation/validation-rules.js.map +1 -0
- package/dist/validation/verification.js +321 -0
- package/dist/validation/verification.js.map +1 -0
- package/package.json +10 -8
- package/src/__tests__/paths-walkup.test.ts +305 -0
- package/src/__tests__/paths.test.ts +61 -17
- package/src/hooks/handlers/session-hooks.ts +42 -0
- package/src/internal.ts +19 -2
- package/src/paths.ts +91 -14
- package/src/scaffold.ts +22 -3
- package/src/store/__tests__/cleanup-legacy.test.ts +268 -0
- package/src/store/__tests__/database-topology-integration.test.ts +504 -0
- package/src/store/__tests__/sqlite-backup-global.test.ts +281 -0
- package/src/store/__tests__/sqlite-backup.test.ts +118 -10
- package/src/store/cleanup-legacy.ts +208 -0
- package/src/store/index.ts +7 -0
- package/src/store/nexus-sqlite.ts +32 -3
- package/src/store/sqlite-backup.ts +368 -37
- package/src/store/sqlite.ts +19 -3
- package/src/system/__tests__/backup.test.ts +237 -0
- package/src/system/backup.ts +248 -28
- package/templates/cleo-gitignore +19 -3
package/dist/paths.js
ADDED
|
@@ -0,0 +1,776 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XDG-compliant path resolution for CLEO V2.
|
|
3
|
+
*
|
|
4
|
+
* Environment variables:
|
|
5
|
+
* CLEO_HOME - Global installation directory (default: ~/.cleo)
|
|
6
|
+
* CLEO_DIR - Project data directory (default: .cleo)
|
|
7
|
+
*
|
|
8
|
+
* @epic T4454
|
|
9
|
+
* @task T4458
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
12
|
+
import { homedir } from 'node:os';
|
|
13
|
+
import { dirname, join, resolve } from 'node:path';
|
|
14
|
+
import { getPlatformPaths } from './system/platform-paths.js';
|
|
15
|
+
/**
|
|
16
|
+
* Check if a CLEO project is initialized at the given root.
|
|
17
|
+
* Checks for tasks.db.
|
|
18
|
+
*
|
|
19
|
+
* @param projectRoot - Absolute path to check; defaults to the resolved project root
|
|
20
|
+
* @returns True if .cleo/ and tasks.db exist at the given root
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* A project is considered initialized when both the .cleo/ directory and
|
|
24
|
+
* the tasks.db SQLite database file are present.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* if (isProjectInitialized('/my/project')) {
|
|
29
|
+
* console.log('CLEO project found');
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function isProjectInitialized(projectRoot) {
|
|
34
|
+
const root = projectRoot ?? getProjectRoot();
|
|
35
|
+
const cleoDir = join(root, '.cleo');
|
|
36
|
+
return existsSync(cleoDir) && existsSync(join(cleoDir, 'tasks.db'));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the global CLEO home directory.
|
|
40
|
+
* Respects CLEO_HOME env var; otherwise uses the OS-appropriate data path
|
|
41
|
+
* via env-paths (XDG_DATA_HOME on Linux, Library/Application Support on macOS,
|
|
42
|
+
* %LOCALAPPDATA% on Windows).
|
|
43
|
+
*
|
|
44
|
+
* @returns Absolute path to the global CLEO data directory
|
|
45
|
+
*
|
|
46
|
+
* @remarks
|
|
47
|
+
* Delegates to `getPlatformPaths().data` which uses the `env-paths` package
|
|
48
|
+
* for XDG-compliant path resolution across operating systems.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const home = getCleoHome(); // e.g. "/home/user/.local/share/cleo"
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function getCleoHome() {
|
|
56
|
+
return getPlatformPaths().data;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get the global CLEO templates directory.
|
|
60
|
+
*
|
|
61
|
+
* @returns Absolute path to the templates directory under CLEO home
|
|
62
|
+
*
|
|
63
|
+
* @remarks
|
|
64
|
+
* Returns `{cleoHome}/templates` where CLEO-INJECTION.md and other global
|
|
65
|
+
* templates are stored.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```typescript
|
|
69
|
+
* const dir = getCleoTemplatesDir(); // e.g. "/home/user/.local/share/cleo/templates"
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export function getCleoTemplatesDir() {
|
|
73
|
+
return join(getCleoHome(), 'templates');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get the global CLEO schemas directory.
|
|
77
|
+
*
|
|
78
|
+
* @returns Absolute path to the schemas directory under CLEO home
|
|
79
|
+
*
|
|
80
|
+
* @remarks
|
|
81
|
+
* Returns `{cleoHome}/schemas`. Note that schemas are typically read at
|
|
82
|
+
* runtime from the npm package root, not this global directory.
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const dir = getCleoSchemasDir();
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export function getCleoSchemasDir() {
|
|
90
|
+
return join(getCleoHome(), 'schemas');
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get the global CLEO docs directory.
|
|
94
|
+
*
|
|
95
|
+
* @returns Absolute path to the docs directory under CLEO home
|
|
96
|
+
*
|
|
97
|
+
* @remarks
|
|
98
|
+
* Returns `{cleoHome}/docs` for global documentation storage.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* const dir = getCleoDocsDir();
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
export function getCleoDocsDir() {
|
|
106
|
+
return join(getCleoHome(), 'docs');
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get the project CLEO data directory (relative).
|
|
110
|
+
* Respects CLEO_DIR env var, defaults to ".cleo".
|
|
111
|
+
*
|
|
112
|
+
* @param cwd - Optional working directory; when provided, returns absolute path
|
|
113
|
+
* @returns Relative or absolute path to the project's .cleo directory
|
|
114
|
+
*
|
|
115
|
+
* @remarks
|
|
116
|
+
* If `cwd` is provided, delegates to `getCleoDirAbsolute`. Otherwise returns
|
|
117
|
+
* the `CLEO_DIR` env var or the default ".cleo" relative path.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```typescript
|
|
121
|
+
* const rel = getCleoDir(); // ".cleo"
|
|
122
|
+
* const abs = getCleoDir('/project'); // "/project/.cleo"
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export function getCleoDir(cwd) {
|
|
126
|
+
if (cwd) {
|
|
127
|
+
return getCleoDirAbsolute(cwd);
|
|
128
|
+
}
|
|
129
|
+
return process.env['CLEO_DIR'] ?? '.cleo';
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get the absolute path to the project CLEO directory.
|
|
133
|
+
*
|
|
134
|
+
* @param cwd - Optional working directory to resolve against; defaults to process.cwd()
|
|
135
|
+
* @returns Absolute path to the project's .cleo directory
|
|
136
|
+
*
|
|
137
|
+
* @remarks
|
|
138
|
+
* If CLEO_DIR is already absolute, returns it directly. Otherwise resolves
|
|
139
|
+
* it relative to the provided cwd or process.cwd().
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* const dir = getCleoDirAbsolute('/my/project'); // "/my/project/.cleo"
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export function getCleoDirAbsolute(cwd) {
|
|
147
|
+
const cleoDir = getCleoDir();
|
|
148
|
+
if (isAbsolutePath(cleoDir)) {
|
|
149
|
+
return cleoDir;
|
|
150
|
+
}
|
|
151
|
+
return resolve(cwd ?? process.cwd(), cleoDir);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get the project root from the CLEO directory.
|
|
155
|
+
* Respects CLEO_ROOT env var, then derives from CLEO_DIR.
|
|
156
|
+
* If CLEO_DIR is ".cleo", the project root is its parent.
|
|
157
|
+
*
|
|
158
|
+
* @param cwd - Optional working directory hint
|
|
159
|
+
* @returns Absolute path to the project root
|
|
160
|
+
*
|
|
161
|
+
* @remarks
|
|
162
|
+
* Resolution order: CLEO_ROOT env var (if no cwd), parent of the resolved
|
|
163
|
+
* .cleo directory (if it ends with /.cleo), or the cwd/process.cwd() fallback.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* const root = getProjectRoot(); // "/home/user/projects/myapp"
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
export function getProjectRoot(cwd) {
|
|
171
|
+
if (!cwd && process.env['CLEO_ROOT']) {
|
|
172
|
+
return process.env['CLEO_ROOT'];
|
|
173
|
+
}
|
|
174
|
+
const cleoDirAbs = getCleoDirAbsolute(cwd);
|
|
175
|
+
if (cleoDirAbs.endsWith('/.cleo') || cleoDirAbs.endsWith('\\.cleo')) {
|
|
176
|
+
return dirname(cleoDirAbs);
|
|
177
|
+
}
|
|
178
|
+
return cwd ?? process.cwd();
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Resolve a project-relative path to an absolute path.
|
|
182
|
+
*
|
|
183
|
+
* @param relativePath - Path to resolve (relative, absolute, or tilde-prefixed)
|
|
184
|
+
* @param cwd - Optional working directory for project root resolution
|
|
185
|
+
* @returns Absolute resolved path
|
|
186
|
+
*
|
|
187
|
+
* @remarks
|
|
188
|
+
* Returns absolute paths unchanged. Expands leading tilde (`~/`) to the user's
|
|
189
|
+
* home directory. Resolves other relative paths against the project root.
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* ```typescript
|
|
193
|
+
* resolveProjectPath('src/index.ts'); // "/project/src/index.ts"
|
|
194
|
+
* resolveProjectPath('~/notes.md'); // "/home/user/notes.md"
|
|
195
|
+
* resolveProjectPath('/absolute/path'); // "/absolute/path"
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
export function resolveProjectPath(relativePath, cwd) {
|
|
199
|
+
if (isAbsolutePath(relativePath)) {
|
|
200
|
+
return relativePath;
|
|
201
|
+
}
|
|
202
|
+
// Expand leading tilde (handles both ~/ on Unix and ~\ on Windows)
|
|
203
|
+
if (relativePath.startsWith('~/') || relativePath.startsWith('~\\') || relativePath === '~') {
|
|
204
|
+
return resolve(homedir(), relativePath.slice(2));
|
|
205
|
+
}
|
|
206
|
+
return resolve(getProjectRoot(cwd), relativePath);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get the path to the project's tasks.db file (SQLite database).
|
|
210
|
+
* @deprecated Use getAccessor() from './store/data-accessor.js' instead. This function
|
|
211
|
+
* returns the database file path for legacy compatibility, but all task data access
|
|
212
|
+
* should go through the DataAccessor interface to ensure proper SQLite interaction.
|
|
213
|
+
* Example:
|
|
214
|
+
* // OLD (deprecated):
|
|
215
|
+
* const taskPath = getTaskPath(cwd);
|
|
216
|
+
* const data = await readJsonFile<TaskFile>(taskPath);
|
|
217
|
+
* // NEW (correct):
|
|
218
|
+
* const accessor = await getAccessor(cwd);
|
|
219
|
+
* const data = await accessor.queryTasks({});
|
|
220
|
+
*
|
|
221
|
+
* @param cwd - Optional working directory for path resolution
|
|
222
|
+
* @returns Absolute path to the tasks.db file
|
|
223
|
+
*
|
|
224
|
+
* @remarks
|
|
225
|
+
* Returns `{cleoDir}/tasks.db`. Prefer `getAccessor()` for actual data access.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```typescript
|
|
229
|
+
* const dbPath = getTaskPath('/project');
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
export function getTaskPath(cwd) {
|
|
233
|
+
return join(getCleoDirAbsolute(cwd), 'tasks.db');
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Get the path to the project's config.json file.
|
|
237
|
+
*
|
|
238
|
+
* @param cwd - Optional working directory for path resolution
|
|
239
|
+
* @returns Absolute path to the project config.json
|
|
240
|
+
*
|
|
241
|
+
* @remarks
|
|
242
|
+
* Returns `{cleoDir}/config.json`.
|
|
243
|
+
*
|
|
244
|
+
* @example
|
|
245
|
+
* ```typescript
|
|
246
|
+
* const configPath = getConfigPath('/project');
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
export function getConfigPath(cwd) {
|
|
250
|
+
return join(getCleoDirAbsolute(cwd), 'config.json');
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Get the path to the project's sessions.json file.
|
|
254
|
+
*
|
|
255
|
+
* @param cwd - Optional working directory for path resolution
|
|
256
|
+
* @returns Absolute path to the sessions.json file
|
|
257
|
+
*
|
|
258
|
+
* @remarks
|
|
259
|
+
* Returns `{cleoDir}/sessions.json`.
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* ```typescript
|
|
263
|
+
* const sessionsPath = getSessionsPath('/project');
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export function getSessionsPath(cwd) {
|
|
267
|
+
return join(getCleoDirAbsolute(cwd), 'sessions.json');
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get the path to the project's archive file.
|
|
271
|
+
*
|
|
272
|
+
* @param cwd - Optional working directory for path resolution
|
|
273
|
+
* @returns Absolute path to the tasks-archive.json file
|
|
274
|
+
*
|
|
275
|
+
* @remarks
|
|
276
|
+
* Returns `{cleoDir}/tasks-archive.json` where archived tasks are stored.
|
|
277
|
+
*
|
|
278
|
+
* @example
|
|
279
|
+
* ```typescript
|
|
280
|
+
* const archivePath = getArchivePath('/project');
|
|
281
|
+
* ```
|
|
282
|
+
*/
|
|
283
|
+
export function getArchivePath(cwd) {
|
|
284
|
+
return join(getCleoDirAbsolute(cwd), 'tasks-archive.json');
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Get the path to the project's log file.
|
|
288
|
+
* Canonical structured runtime log path (pino).
|
|
289
|
+
*
|
|
290
|
+
* @param cwd - Optional working directory for path resolution
|
|
291
|
+
* @returns Absolute path to the cleo.log file
|
|
292
|
+
*
|
|
293
|
+
* @remarks
|
|
294
|
+
* Returns `{cleoDir}/logs/cleo.log`. Used by pino for structured JSON logging.
|
|
295
|
+
*
|
|
296
|
+
* @example
|
|
297
|
+
* ```typescript
|
|
298
|
+
* const logPath = getLogPath('/project');
|
|
299
|
+
* ```
|
|
300
|
+
*
|
|
301
|
+
* @task T4644
|
|
302
|
+
*/
|
|
303
|
+
export function getLogPath(cwd) {
|
|
304
|
+
return join(getCleoDirAbsolute(cwd), 'logs', 'cleo.log');
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Get the backup directory for operational backups.
|
|
308
|
+
*
|
|
309
|
+
* @param cwd - Optional working directory for path resolution
|
|
310
|
+
* @returns Absolute path to the operational backups directory
|
|
311
|
+
*
|
|
312
|
+
* @remarks
|
|
313
|
+
* Returns `{cleoDir}/backups/operational`.
|
|
314
|
+
*
|
|
315
|
+
* @example
|
|
316
|
+
* ```typescript
|
|
317
|
+
* const backupDir = getBackupDir('/project');
|
|
318
|
+
* ```
|
|
319
|
+
*/
|
|
320
|
+
export function getBackupDir(cwd) {
|
|
321
|
+
return join(getCleoDirAbsolute(cwd), 'backups', 'operational');
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Get the global config file path.
|
|
325
|
+
*
|
|
326
|
+
* @returns Absolute path to the global config.json in CLEO home
|
|
327
|
+
*
|
|
328
|
+
* @remarks
|
|
329
|
+
* Returns `{cleoHome}/config.json` for global CLEO configuration.
|
|
330
|
+
*
|
|
331
|
+
* @example
|
|
332
|
+
* ```typescript
|
|
333
|
+
* const globalConfig = getGlobalConfigPath();
|
|
334
|
+
* ```
|
|
335
|
+
*/
|
|
336
|
+
export function getGlobalConfigPath() {
|
|
337
|
+
return join(getCleoHome(), 'config.json');
|
|
338
|
+
}
|
|
339
|
+
// ============================================================================
|
|
340
|
+
// CleoOS Hub Paths (Phase 1)
|
|
341
|
+
// ============================================================================
|
|
342
|
+
/**
|
|
343
|
+
* Get the Global Justfile Hub directory.
|
|
344
|
+
*
|
|
345
|
+
* The hub stores cross-project recipe libraries agents can run in ANY project
|
|
346
|
+
* (cleo-bootstrap, rcasd-init, schema-validate, lint-standard). Both humans
|
|
347
|
+
* (via editor) and the meta Cleo Chef Agent write recipes here.
|
|
348
|
+
*
|
|
349
|
+
* @returns Absolute path to the global-recipes directory under CLEO home
|
|
350
|
+
*
|
|
351
|
+
* @remarks
|
|
352
|
+
* Returns `{cleoHome}/global-recipes`. Created by `ensureGlobalHome()`.
|
|
353
|
+
*
|
|
354
|
+
* @example
|
|
355
|
+
* ```typescript
|
|
356
|
+
* const dir = getCleoGlobalRecipesDir();
|
|
357
|
+
* // Linux: "/home/user/.local/share/cleo/global-recipes"
|
|
358
|
+
* ```
|
|
359
|
+
*/
|
|
360
|
+
export function getCleoGlobalRecipesDir() {
|
|
361
|
+
return join(getCleoHome(), 'global-recipes');
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Get the absolute path to the primary global justfile.
|
|
365
|
+
*
|
|
366
|
+
* @returns Absolute path to `{cleoHome}/global-recipes/justfile`
|
|
367
|
+
*
|
|
368
|
+
* @remarks
|
|
369
|
+
* This is the single-file entry point for the Justfile Hub. Additional
|
|
370
|
+
* domain-specific justfiles live alongside it in the same directory.
|
|
371
|
+
*
|
|
372
|
+
* @example
|
|
373
|
+
* ```typescript
|
|
374
|
+
* const path = getCleoGlobalJustfilePath();
|
|
375
|
+
* ```
|
|
376
|
+
*/
|
|
377
|
+
export function getCleoGlobalJustfilePath() {
|
|
378
|
+
return join(getCleoGlobalRecipesDir(), 'justfile');
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Get the Global Pi Extensions Hub directory.
|
|
382
|
+
*
|
|
383
|
+
* Houses the Pi extensions that drive the CleoOS UI and tools:
|
|
384
|
+
* orchestrator.ts (Conductor Loop), project-manager.ts (TUI dashboard),
|
|
385
|
+
* tilldone.ts (work visualization), cant-bridge.ts (CANT runtime),
|
|
386
|
+
* stage-guide.ts (before_agent_start hook).
|
|
387
|
+
*
|
|
388
|
+
* @returns Absolute path to the pi-extensions directory under CLEO home
|
|
389
|
+
*
|
|
390
|
+
* @remarks
|
|
391
|
+
* Returns `{cleoHome}/pi-extensions`. Pi is configured to load extensions
|
|
392
|
+
* from this directory via settings.json or the PI extension path setting.
|
|
393
|
+
*
|
|
394
|
+
* @example
|
|
395
|
+
* ```typescript
|
|
396
|
+
* const dir = getCleoPiExtensionsDir();
|
|
397
|
+
* // Linux: "/home/user/.local/share/cleo/pi-extensions"
|
|
398
|
+
* ```
|
|
399
|
+
*/
|
|
400
|
+
export function getCleoPiExtensionsDir() {
|
|
401
|
+
return join(getCleoHome(), 'pi-extensions');
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Get the Global CANT Workflows Hub directory.
|
|
405
|
+
*
|
|
406
|
+
* Stores compiled and parsed `.cant` workflows that agents can invoke
|
|
407
|
+
* globally across projects. Project-local agents still live in `.cleo/agents/`.
|
|
408
|
+
*
|
|
409
|
+
* @returns Absolute path to the cant-workflows directory under CLEO home
|
|
410
|
+
*
|
|
411
|
+
* @remarks
|
|
412
|
+
* Returns `{cleoHome}/cant-workflows`. Used by the CANT runtime bridge
|
|
413
|
+
* to resolve globally-available workflow definitions.
|
|
414
|
+
*
|
|
415
|
+
* @example
|
|
416
|
+
* ```typescript
|
|
417
|
+
* const dir = getCleoCantWorkflowsDir();
|
|
418
|
+
* ```
|
|
419
|
+
*/
|
|
420
|
+
export function getCleoCantWorkflowsDir() {
|
|
421
|
+
return join(getCleoHome(), 'cant-workflows');
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Get the Global CLEO Agents directory.
|
|
425
|
+
*
|
|
426
|
+
* Holds globally-available CANT agent definitions (`.cant` files).
|
|
427
|
+
* Project-local agents still live in `{projectRoot}/.cleo/agents/`.
|
|
428
|
+
*
|
|
429
|
+
* @returns Absolute path to the agents directory under CLEO home
|
|
430
|
+
*
|
|
431
|
+
* @remarks
|
|
432
|
+
* Returns `{cleoHome}/agents`. Loaded when `cleo agent start <id>` resolves
|
|
433
|
+
* agent IDs that aren't found in the project-local registry.
|
|
434
|
+
*
|
|
435
|
+
* @example
|
|
436
|
+
* ```typescript
|
|
437
|
+
* const dir = getCleoGlobalAgentsDir();
|
|
438
|
+
* ```
|
|
439
|
+
*/
|
|
440
|
+
export function getCleoGlobalAgentsDir() {
|
|
441
|
+
return join(getCleoHome(), 'agents');
|
|
442
|
+
}
|
|
443
|
+
// ============================================================================
|
|
444
|
+
// Agent Outputs
|
|
445
|
+
// ============================================================================
|
|
446
|
+
const DEFAULT_AGENT_OUTPUTS_DIR = '.cleo/agent-outputs';
|
|
447
|
+
/**
|
|
448
|
+
* Get the agent outputs directory (relative path) from config or default.
|
|
449
|
+
*
|
|
450
|
+
* Config lookup priority:
|
|
451
|
+
* 1. config.agentOutputs.directory
|
|
452
|
+
* 2. config.research.outputDir (deprecated)
|
|
453
|
+
* 3. config.directories.agentOutputs (deprecated)
|
|
454
|
+
* 4. Default: '.cleo/agent-outputs'
|
|
455
|
+
*
|
|
456
|
+
* @param cwd - Optional working directory for path resolution
|
|
457
|
+
* @returns Relative or absolute path to the agent outputs directory
|
|
458
|
+
*
|
|
459
|
+
* @remarks
|
|
460
|
+
* Checks config fields in priority order: `agentOutputs.directory`, `research.outputDir`,
|
|
461
|
+
* `directories.agentOutputs`. Falls back to `.cleo/agent-outputs`.
|
|
462
|
+
*
|
|
463
|
+
* @example
|
|
464
|
+
* ```typescript
|
|
465
|
+
* const dir = getAgentOutputsDir('/project');
|
|
466
|
+
* ```
|
|
467
|
+
*
|
|
468
|
+
* @task T4700
|
|
469
|
+
*/
|
|
470
|
+
export function getAgentOutputsDir(cwd) {
|
|
471
|
+
const projectRoot = getProjectRoot(cwd);
|
|
472
|
+
const configPath = join(projectRoot, '.cleo', 'config.json');
|
|
473
|
+
if (existsSync(configPath)) {
|
|
474
|
+
try {
|
|
475
|
+
const config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
476
|
+
// Priority 1: agentOutputs.directory (canonical)
|
|
477
|
+
if (typeof config.agentOutputs === 'object' && config.agentOutputs?.directory) {
|
|
478
|
+
return config.agentOutputs.directory;
|
|
479
|
+
}
|
|
480
|
+
// Also support agentOutputs as a plain string
|
|
481
|
+
if (typeof config.agentOutputs === 'string' && config.agentOutputs) {
|
|
482
|
+
return config.agentOutputs;
|
|
483
|
+
}
|
|
484
|
+
// Priority 2: research.outputDir (deprecated)
|
|
485
|
+
if (config.research?.outputDir) {
|
|
486
|
+
return config.research.outputDir;
|
|
487
|
+
}
|
|
488
|
+
// Priority 3: directories.agentOutputs (deprecated)
|
|
489
|
+
if (config.directories?.agentOutputs) {
|
|
490
|
+
return config.directories.agentOutputs;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
catch {
|
|
494
|
+
// fallback to default
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
return DEFAULT_AGENT_OUTPUTS_DIR;
|
|
498
|
+
}
|
|
499
|
+
/**
|
|
500
|
+
* Get the absolute path to the agent outputs directory.
|
|
501
|
+
*
|
|
502
|
+
* @param cwd - Optional working directory for path resolution
|
|
503
|
+
* @returns Absolute path to the agent outputs directory
|
|
504
|
+
*
|
|
505
|
+
* @remarks
|
|
506
|
+
* Resolves the output of `getAgentOutputsDir()` against the project root
|
|
507
|
+
* if it is not already absolute.
|
|
508
|
+
*
|
|
509
|
+
* @example
|
|
510
|
+
* ```typescript
|
|
511
|
+
* const absDir = getAgentOutputsAbsolute('/project');
|
|
512
|
+
* ```
|
|
513
|
+
*
|
|
514
|
+
* @task T4700
|
|
515
|
+
*/
|
|
516
|
+
export function getAgentOutputsAbsolute(cwd) {
|
|
517
|
+
const dir = getAgentOutputsDir(cwd);
|
|
518
|
+
if (isAbsolutePath(dir)) {
|
|
519
|
+
return dir;
|
|
520
|
+
}
|
|
521
|
+
return resolve(getProjectRoot(cwd), dir);
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Get the absolute path to the MANIFEST.jsonl file.
|
|
525
|
+
*
|
|
526
|
+
* Checks config.agentOutputs.manifestFile for custom filename,
|
|
527
|
+
* defaults to 'MANIFEST.jsonl'.
|
|
528
|
+
*
|
|
529
|
+
* @param cwd - Optional working directory for path resolution
|
|
530
|
+
* @returns Absolute path to the MANIFEST.jsonl file
|
|
531
|
+
*
|
|
532
|
+
* @remarks
|
|
533
|
+
* Checks `config.agentOutputs.manifestFile` for a custom filename,
|
|
534
|
+
* defaults to `MANIFEST.jsonl` in the agent outputs directory.
|
|
535
|
+
*
|
|
536
|
+
* @example
|
|
537
|
+
* ```typescript
|
|
538
|
+
* const manifestPath = getManifestPath('/project');
|
|
539
|
+
* ```
|
|
540
|
+
*
|
|
541
|
+
* @task T4700
|
|
542
|
+
*/
|
|
543
|
+
export function getManifestPath(cwd) {
|
|
544
|
+
const outputDir = getAgentOutputsDir(cwd);
|
|
545
|
+
const projectRoot = getProjectRoot(cwd);
|
|
546
|
+
const configPath = join(projectRoot, '.cleo', 'config.json');
|
|
547
|
+
let manifestFile = 'MANIFEST.jsonl';
|
|
548
|
+
if (existsSync(configPath)) {
|
|
549
|
+
try {
|
|
550
|
+
const config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
551
|
+
const customFile = config.agentOutputs?.manifestFile ?? config.research?.manifestFile;
|
|
552
|
+
if (customFile) {
|
|
553
|
+
manifestFile = customFile;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
catch {
|
|
557
|
+
// fallback
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
return resolve(projectRoot, outputDir, manifestFile);
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Get the absolute path to the MANIFEST.archive.jsonl file.
|
|
564
|
+
*
|
|
565
|
+
* @param cwd - Optional working directory for path resolution
|
|
566
|
+
* @returns Absolute path to the MANIFEST.archive.jsonl file
|
|
567
|
+
*
|
|
568
|
+
* @remarks
|
|
569
|
+
* Returns the archive manifest path in the agent outputs directory.
|
|
570
|
+
*
|
|
571
|
+
* @example
|
|
572
|
+
* ```typescript
|
|
573
|
+
* const archivePath = getManifestArchivePath('/project');
|
|
574
|
+
* ```
|
|
575
|
+
*
|
|
576
|
+
* @task T4700
|
|
577
|
+
*/
|
|
578
|
+
export function getManifestArchivePath(cwd) {
|
|
579
|
+
const outputDir = getAgentOutputsDir(cwd);
|
|
580
|
+
const projectRoot = getProjectRoot(cwd);
|
|
581
|
+
return resolve(projectRoot, outputDir, 'MANIFEST.archive.jsonl');
|
|
582
|
+
}
|
|
583
|
+
// ============================================================================
|
|
584
|
+
// Path Utilities
|
|
585
|
+
// ============================================================================
|
|
586
|
+
/**
|
|
587
|
+
* Check if a path is absolute (POSIX or Windows).
|
|
588
|
+
*
|
|
589
|
+
* @param path - Filesystem path to check
|
|
590
|
+
* @returns True if the path is absolute on any supported OS
|
|
591
|
+
*
|
|
592
|
+
* @remarks
|
|
593
|
+
* Recognizes POSIX absolute paths (`/...`), Windows drive letters (`C:\...`),
|
|
594
|
+
* and UNC paths (`\\...`).
|
|
595
|
+
*
|
|
596
|
+
* @example
|
|
597
|
+
* ```typescript
|
|
598
|
+
* isAbsolutePath('/usr/bin'); // true
|
|
599
|
+
* isAbsolutePath('C:\\Users'); // true
|
|
600
|
+
* isAbsolutePath('./relative'); // false
|
|
601
|
+
* ```
|
|
602
|
+
*/
|
|
603
|
+
export function isAbsolutePath(path) {
|
|
604
|
+
// POSIX absolute
|
|
605
|
+
if (path.startsWith('/'))
|
|
606
|
+
return true;
|
|
607
|
+
// Windows drive letter (C:\, D:/)
|
|
608
|
+
if (/^[A-Za-z]:[\\/]/.test(path))
|
|
609
|
+
return true;
|
|
610
|
+
// UNC path
|
|
611
|
+
if (path.startsWith('\\\\'))
|
|
612
|
+
return true;
|
|
613
|
+
return false;
|
|
614
|
+
}
|
|
615
|
+
// ============================================================================
|
|
616
|
+
// OS-Aware Global Paths (via env-paths)
|
|
617
|
+
// ============================================================================
|
|
618
|
+
/**
|
|
619
|
+
* Get the OS log directory for CLEO global logs.
|
|
620
|
+
* Linux: ~/.local/state/cleo | macOS: ~/Library/Logs/cleo | Windows: %LOCALAPPDATA%\cleo\Log
|
|
621
|
+
*
|
|
622
|
+
* @returns Absolute path to the OS-appropriate log directory
|
|
623
|
+
*
|
|
624
|
+
* @remarks
|
|
625
|
+
* Delegates to `getPlatformPaths().log` for XDG-compliant resolution.
|
|
626
|
+
*
|
|
627
|
+
* @example
|
|
628
|
+
* ```typescript
|
|
629
|
+
* const logDir = getCleoLogDir();
|
|
630
|
+
* ```
|
|
631
|
+
*/
|
|
632
|
+
export function getCleoLogDir() {
|
|
633
|
+
return getPlatformPaths().log;
|
|
634
|
+
}
|
|
635
|
+
/**
|
|
636
|
+
* Get the OS cache directory for CLEO.
|
|
637
|
+
* Linux: ~/.cache/cleo | macOS: ~/Library/Caches/cleo | Windows: %LOCALAPPDATA%\cleo\Cache
|
|
638
|
+
*
|
|
639
|
+
* @returns Absolute path to the OS-appropriate cache directory
|
|
640
|
+
*
|
|
641
|
+
* @remarks
|
|
642
|
+
* Delegates to `getPlatformPaths().cache` for XDG-compliant resolution.
|
|
643
|
+
*
|
|
644
|
+
* @example
|
|
645
|
+
* ```typescript
|
|
646
|
+
* const cacheDir = getCleoCacheDir();
|
|
647
|
+
* ```
|
|
648
|
+
*/
|
|
649
|
+
export function getCleoCacheDir() {
|
|
650
|
+
return getPlatformPaths().cache;
|
|
651
|
+
}
|
|
652
|
+
/**
|
|
653
|
+
* Get the OS temp directory for CLEO ephemeral files.
|
|
654
|
+
*
|
|
655
|
+
* @returns Absolute path to the OS-appropriate temp directory
|
|
656
|
+
*
|
|
657
|
+
* @remarks
|
|
658
|
+
* Delegates to `getPlatformPaths().temp` for platform-specific resolution.
|
|
659
|
+
*
|
|
660
|
+
* @example
|
|
661
|
+
* ```typescript
|
|
662
|
+
* const tempDir = getCleoTempDir();
|
|
663
|
+
* ```
|
|
664
|
+
*/
|
|
665
|
+
export function getCleoTempDir() {
|
|
666
|
+
return getPlatformPaths().temp;
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Get the OS config directory for CLEO.
|
|
670
|
+
* Linux: ~/.config/cleo | macOS: ~/Library/Preferences/cleo | Windows: %APPDATA%\cleo\Config
|
|
671
|
+
*
|
|
672
|
+
* @returns Absolute path to the OS-appropriate config directory
|
|
673
|
+
*
|
|
674
|
+
* @remarks
|
|
675
|
+
* Delegates to `getPlatformPaths().config` for XDG-compliant resolution.
|
|
676
|
+
*
|
|
677
|
+
* @example
|
|
678
|
+
* ```typescript
|
|
679
|
+
* const configDir = getCleoConfigDir();
|
|
680
|
+
* ```
|
|
681
|
+
*/
|
|
682
|
+
export function getCleoConfigDir() {
|
|
683
|
+
return getPlatformPaths().config;
|
|
684
|
+
}
|
|
685
|
+
/**
|
|
686
|
+
* Get the CLEO templates directory as a tilde-prefixed path for use
|
|
687
|
+
* in `@` references (AGENTS.md, CLAUDE.md, etc.). Cross-platform:
|
|
688
|
+
* replaces the user's home directory with `~` so the reference works
|
|
689
|
+
* when loaded by LLM providers that resolve `~` at runtime.
|
|
690
|
+
*
|
|
691
|
+
* Linux: ~/.local/share/cleo/templates
|
|
692
|
+
* macOS: ~/Library/Application Support/cleo/templates
|
|
693
|
+
* Windows: ~/AppData/Local/cleo/Data/templates (approximate)
|
|
694
|
+
*
|
|
695
|
+
* @returns Tilde-prefixed path like "~/.local/share/cleo/templates"
|
|
696
|
+
*
|
|
697
|
+
* @remarks
|
|
698
|
+
* Returns the absolute path if the home directory is not a prefix
|
|
699
|
+
* (unlikely but handled). Always uses forward slashes after the tilde
|
|
700
|
+
* for cross-platform compatibility in `@`-reference resolution.
|
|
701
|
+
*
|
|
702
|
+
* @example
|
|
703
|
+
* ```typescript
|
|
704
|
+
* const tildePath = getCleoTemplatesTildePath();
|
|
705
|
+
* // "~/.local/share/cleo/templates"
|
|
706
|
+
* ```
|
|
707
|
+
*/
|
|
708
|
+
export function getCleoTemplatesTildePath() {
|
|
709
|
+
const absPath = getCleoTemplatesDir();
|
|
710
|
+
const home = homedir();
|
|
711
|
+
if (absPath.startsWith(home)) {
|
|
712
|
+
// Always use forward slash after tilde for cross-platform @-reference resolution
|
|
713
|
+
const relative = absPath.slice(home.length).replace(/\\/g, '/');
|
|
714
|
+
return `~${relative}`;
|
|
715
|
+
}
|
|
716
|
+
return absPath;
|
|
717
|
+
}
|
|
718
|
+
// ============================================================================
|
|
719
|
+
// Third-Party Tool Paths (OS-aware)
|
|
720
|
+
// ============================================================================
|
|
721
|
+
/**
|
|
722
|
+
* Get the global agents hub directory.
|
|
723
|
+
* Respects AGENTS_HOME env var, defaults to ~/.agents.
|
|
724
|
+
*
|
|
725
|
+
* @returns Absolute path to the agents hub directory
|
|
726
|
+
*
|
|
727
|
+
* @remarks
|
|
728
|
+
* Returns `AGENTS_HOME` env var if set, otherwise `~/.agents`.
|
|
729
|
+
*
|
|
730
|
+
* @example
|
|
731
|
+
* ```typescript
|
|
732
|
+
* const agentsHome = getAgentsHome(); // "/home/user/.agents"
|
|
733
|
+
* ```
|
|
734
|
+
*/
|
|
735
|
+
export function getAgentsHome() {
|
|
736
|
+
return process.env['AGENTS_HOME'] ?? join(homedir(), '.agents');
|
|
737
|
+
}
|
|
738
|
+
/**
|
|
739
|
+
* Get the Claude Code agents directory (~/.claude/agents by default).
|
|
740
|
+
*
|
|
741
|
+
* @returns Absolute path to the Claude agents directory
|
|
742
|
+
*
|
|
743
|
+
* @remarks
|
|
744
|
+
* Respects `CLAUDE_HOME` env var for the parent directory.
|
|
745
|
+
*
|
|
746
|
+
* @example
|
|
747
|
+
* ```typescript
|
|
748
|
+
* const dir = getClaudeAgentsDir();
|
|
749
|
+
* ```
|
|
750
|
+
*
|
|
751
|
+
* @deprecated Use AdapterPathProvider.getAgentInstallDir() from the active adapter instead.
|
|
752
|
+
*/
|
|
753
|
+
export function getClaudeAgentsDir() {
|
|
754
|
+
const claudeDir = process.env['CLAUDE_HOME'] ?? join(homedir(), '.claude');
|
|
755
|
+
return join(claudeDir, 'agents');
|
|
756
|
+
}
|
|
757
|
+
/**
|
|
758
|
+
* Get the claude-mem SQLite database path.
|
|
759
|
+
*
|
|
760
|
+
* @returns Absolute path to the claude-mem.db file
|
|
761
|
+
*
|
|
762
|
+
* @remarks
|
|
763
|
+
* Respects `CLAUDE_MEM_DB` env var, defaults to `~/.claude-mem/claude-mem.db`.
|
|
764
|
+
* This is a third-party tool path; homedir() is correct here (no env-paths standard).
|
|
765
|
+
*
|
|
766
|
+
* @example
|
|
767
|
+
* ```typescript
|
|
768
|
+
* const dbPath = getClaudeMemDbPath();
|
|
769
|
+
* ```
|
|
770
|
+
*
|
|
771
|
+
* @deprecated Use AdapterPathProvider.getMemoryDbPath() from the active adapter instead.
|
|
772
|
+
*/
|
|
773
|
+
export function getClaudeMemDbPath() {
|
|
774
|
+
return process.env['CLAUDE_MEM_DB'] ?? join(homedir(), '.claude-mem', 'claude-mem.db');
|
|
775
|
+
}
|
|
776
|
+
//# sourceMappingURL=paths.js.map
|