@cleocode/core 2026.3.58 → 2026.3.59
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/agents/agent-registry.d.ts +206 -0
- package/dist/agents/agent-registry.d.ts.map +1 -0
- package/dist/agents/health-monitor.d.ts +161 -0
- package/dist/agents/health-monitor.d.ts.map +1 -0
- package/dist/agents/index.d.ts +3 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/retry.d.ts +57 -4
- package/dist/agents/retry.d.ts.map +1 -1
- package/dist/backfill/index.d.ts +27 -0
- package/dist/backfill/index.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +880 -506
- package/dist/index.js.map +4 -4
- package/dist/intelligence/impact.d.ts +34 -1
- package/dist/intelligence/impact.d.ts.map +1 -1
- package/dist/intelligence/index.d.ts +2 -2
- package/dist/intelligence/index.d.ts.map +1 -1
- package/dist/intelligence/types.d.ts +60 -0
- package/dist/intelligence/types.d.ts.map +1 -1
- package/dist/internal.d.ts +5 -4
- package/dist/internal.d.ts.map +1 -1
- package/dist/lib/index.d.ts +10 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/retry.d.ts +128 -0
- package/dist/lib/retry.d.ts.map +1 -0
- package/dist/nexus/sharing/index.d.ts +48 -2
- package/dist/nexus/sharing/index.d.ts.map +1 -1
- package/dist/stats/workflow-telemetry.d.ts +15 -0
- package/dist/stats/workflow-telemetry.d.ts.map +1 -1
- package/dist/store/cross-db-cleanup.d.ts +35 -0
- package/dist/store/cross-db-cleanup.d.ts.map +1 -1
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/enforcement.d.ts.map +1 -1
- package/dist/tasks/epic-enforcement.d.ts +61 -0
- package/dist/tasks/epic-enforcement.d.ts.map +1 -1
- package/dist/tasks/pipeline-stage.d.ts +70 -1
- package/dist/tasks/pipeline-stage.d.ts.map +1 -1
- package/package.json +5 -5
- package/schemas/config.schema.json +37 -1547
- package/src/__tests__/sharing.test.ts +24 -0
- package/src/agents/__tests__/agent-registry.test.ts +351 -0
- package/src/agents/__tests__/health-monitor.test.ts +332 -0
- package/src/agents/agent-registry.ts +394 -0
- package/src/agents/health-monitor.ts +279 -0
- package/src/agents/index.ts +24 -1
- package/src/agents/retry.ts +57 -4
- package/src/backfill/index.ts +27 -0
- package/src/config.ts +3 -3
- package/src/index.ts +1 -0
- package/src/intelligence/__tests__/impact.test.ts +165 -1
- package/src/intelligence/impact.ts +203 -0
- package/src/intelligence/index.ts +3 -0
- package/src/intelligence/types.ts +76 -0
- package/src/internal.ts +20 -0
- package/src/lib/__tests__/retry.test.ts +321 -0
- package/src/lib/index.ts +16 -0
- package/src/lib/retry.ts +224 -0
- package/src/nexus/sharing/index.ts +142 -2
- package/src/stats/workflow-telemetry.ts +15 -0
- package/src/store/__tests__/session-store.test.ts +43 -7
- package/src/store/__tests__/task-store.test.ts +1 -1
- package/src/store/__tests__/test-db-helper.ts +7 -3
- package/src/store/cross-db-cleanup.ts +35 -0
- package/src/tasks/__tests__/epic-enforcement.test.ts +9 -4
- package/src/tasks/__tests__/minimal-test.test.ts +2 -2
- package/src/tasks/__tests__/update.test.ts +25 -25
- package/src/tasks/complete.ts +11 -6
- package/src/tasks/enforcement.ts +6 -3
- package/src/tasks/epic-enforcement.ts +61 -0
- package/src/tasks/pipeline-stage.ts +70 -1
- package/templates/config.template.json +5 -116
- package/templates/global-config.template.json +2 -44
- package/dist/adapters/adapter-registry.js +0 -64
- package/dist/adapters/adapter-registry.js.map +0 -1
- package/dist/adapters/discovery.js +0 -83
- package/dist/adapters/discovery.js.map +0 -1
- package/dist/adapters/index.js +0 -9
- package/dist/adapters/index.js.map +0 -1
- package/dist/adapters/manager.js +0 -260
- package/dist/adapters/manager.js.map +0 -1
- package/dist/admin/export-tasks.js +0 -171
- package/dist/admin/export-tasks.js.map +0 -1
- package/dist/admin/export.js +0 -103
- package/dist/admin/export.js.map +0 -1
- package/dist/admin/help.js +0 -106
- package/dist/admin/help.js.map +0 -1
- package/dist/admin/import-tasks.js +0 -182
- package/dist/admin/import-tasks.js.map +0 -1
- package/dist/admin/import.js +0 -129
- package/dist/admin/import.js.map +0 -1
- package/dist/admin/index.js +0 -13
- package/dist/admin/index.js.map +0 -1
- package/dist/adrs/find.js +0 -134
- package/dist/adrs/find.js.map +0 -1
- package/dist/adrs/index.js +0 -15
- package/dist/adrs/index.js.map +0 -1
- package/dist/adrs/link-pipeline.js +0 -160
- package/dist/adrs/link-pipeline.js.map +0 -1
- package/dist/adrs/list.js +0 -43
- package/dist/adrs/list.js.map +0 -1
- package/dist/adrs/parse.js +0 -51
- package/dist/adrs/parse.js.map +0 -1
- package/dist/adrs/show.js +0 -22
- package/dist/adrs/show.js.map +0 -1
- package/dist/adrs/sync.js +0 -188
- package/dist/adrs/sync.js.map +0 -1
- package/dist/adrs/types.js +0 -9
- package/dist/adrs/types.js.map +0 -1
- package/dist/adrs/validate.js +0 -57
- package/dist/adrs/validate.js.map +0 -1
- package/dist/agents/agent-schema.js +0 -80
- package/dist/agents/agent-schema.js.map +0 -1
- package/dist/agents/capacity.js +0 -116
- package/dist/agents/capacity.js.map +0 -1
- package/dist/agents/index.js +0 -21
- package/dist/agents/index.js.map +0 -1
- package/dist/agents/registry.js +0 -314
- package/dist/agents/registry.js.map +0 -1
- package/dist/agents/retry.js +0 -176
- package/dist/agents/retry.js.map +0 -1
- package/dist/audit-prune.js +0 -94
- package/dist/audit-prune.js.map +0 -1
- package/dist/audit.js +0 -68
- package/dist/audit.js.map +0 -1
- package/dist/bootstrap.js +0 -260
- package/dist/bootstrap.js.map +0 -1
- package/dist/caamp/adapter.js +0 -434
- package/dist/caamp/adapter.js.map +0 -1
- package/dist/caamp/capability-check.js +0 -38
- package/dist/caamp/capability-check.js.map +0 -1
- package/dist/caamp/index.js +0 -23
- package/dist/caamp/index.js.map +0 -1
- package/dist/caamp-init.js +0 -16
- package/dist/caamp-init.js.map +0 -1
- package/dist/cleo.js +0 -267
- package/dist/cleo.js.map +0 -1
- package/dist/codebase-map/analyzers/architecture.js +0 -130
- package/dist/codebase-map/analyzers/architecture.js.map +0 -1
- package/dist/codebase-map/analyzers/concerns.js +0 -122
- package/dist/codebase-map/analyzers/concerns.js.map +0 -1
- package/dist/codebase-map/analyzers/conventions.js +0 -149
- package/dist/codebase-map/analyzers/conventions.js.map +0 -1
- package/dist/codebase-map/analyzers/integrations.js +0 -108
- package/dist/codebase-map/analyzers/integrations.js.map +0 -1
- package/dist/codebase-map/analyzers/stack.js +0 -117
- package/dist/codebase-map/analyzers/stack.js.map +0 -1
- package/dist/codebase-map/analyzers/structure.js +0 -137
- package/dist/codebase-map/analyzers/structure.js.map +0 -1
- package/dist/codebase-map/analyzers/testing.js +0 -118
- package/dist/codebase-map/analyzers/testing.js.map +0 -1
- package/dist/codebase-map/index.js +0 -57
- package/dist/codebase-map/index.js.map +0 -1
- package/dist/codebase-map/store.js +0 -122
- package/dist/codebase-map/store.js.map +0 -1
- package/dist/codebase-map/summary.js +0 -152
- package/dist/codebase-map/summary.js.map +0 -1
- package/dist/compliance/index.js +0 -288
- package/dist/compliance/index.js.map +0 -1
- package/dist/compliance/protocol-enforcement.js +0 -332
- package/dist/compliance/protocol-enforcement.js.map +0 -1
- package/dist/compliance/protocol-rules.js +0 -786
- package/dist/compliance/protocol-rules.js.map +0 -1
- package/dist/compliance/protocol-types.js +0 -80
- package/dist/compliance/protocol-types.js.map +0 -1
- package/dist/compliance/store.js +0 -53
- package/dist/compliance/store.js.map +0 -1
- package/dist/config/build-config.js +0 -29
- package/dist/config/build-config.js.map +0 -1
- package/dist/config.js +0 -287
- package/dist/config.js.map +0 -1
- package/dist/constants.js +0 -18
- package/dist/constants.js.map +0 -1
- package/dist/context/index.js +0 -137
- package/dist/context/index.js.map +0 -1
- package/dist/engine-result.js +0 -12
- package/dist/engine-result.js.map +0 -1
- package/dist/error-catalog.js +0 -404
- package/dist/error-catalog.js.map +0 -1
- package/dist/error-registry.js +0 -393
- package/dist/error-registry.js.map +0 -1
- package/dist/errors.js +0 -167
- package/dist/errors.js.map +0 -1
- package/dist/hooks/handlers/error-hooks.js +0 -43
- package/dist/hooks/handlers/error-hooks.js.map +0 -1
- package/dist/hooks/handlers/file-hooks.js +0 -80
- package/dist/hooks/handlers/file-hooks.js.map +0 -1
- package/dist/hooks/handlers/index.js +0 -19
- package/dist/hooks/handlers/index.js.map +0 -1
- package/dist/hooks/handlers/mcp-hooks.js +0 -80
- package/dist/hooks/handlers/mcp-hooks.js.map +0 -1
- package/dist/hooks/handlers/session-hooks.js +0 -73
- package/dist/hooks/handlers/session-hooks.js.map +0 -1
- package/dist/hooks/handlers/task-hooks.js +0 -63
- package/dist/hooks/handlers/task-hooks.js.map +0 -1
- package/dist/hooks/index.js +0 -13
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/payload-schemas.js +0 -163
- package/dist/hooks/payload-schemas.js.map +0 -1
- package/dist/hooks/provider-hooks.js +0 -34
- package/dist/hooks/provider-hooks.js.map +0 -1
- package/dist/hooks/registry.js +0 -176
- package/dist/hooks/registry.js.map +0 -1
- package/dist/hooks/types.js +0 -62
- package/dist/hooks/types.js.map +0 -1
- package/dist/hooks.js +0 -136
- package/dist/hooks.js.map +0 -1
- package/dist/init.js +0 -711
- package/dist/init.js.map +0 -1
- package/dist/inject/index.js +0 -82
- package/dist/inject/index.js.map +0 -1
- package/dist/injection.js +0 -343
- package/dist/injection.js.map +0 -1
- package/dist/intelligence/impact.js +0 -499
- package/dist/intelligence/impact.js.map +0 -1
- package/dist/intelligence/index.js +0 -17
- package/dist/intelligence/index.js.map +0 -1
- package/dist/intelligence/patterns.js +0 -492
- package/dist/intelligence/patterns.js.map +0 -1
- package/dist/intelligence/prediction.js +0 -499
- package/dist/intelligence/prediction.js.map +0 -1
- package/dist/intelligence/types.js +0 -13
- package/dist/intelligence/types.js.map +0 -1
- package/dist/internal.js +0 -258
- package/dist/internal.js.map +0 -1
- package/dist/issue/create.js +0 -121
- package/dist/issue/create.js.map +0 -1
- package/dist/issue/diagnostics.js +0 -59
- package/dist/issue/diagnostics.js.map +0 -1
- package/dist/issue/index.js +0 -10
- package/dist/issue/index.js.map +0 -1
- package/dist/issue/template-parser.js +0 -267
- package/dist/issue/template-parser.js.map +0 -1
- package/dist/json-schema-validator.js +0 -76
- package/dist/json-schema-validator.js.map +0 -1
- package/dist/lifecycle/chain-composition.js +0 -152
- package/dist/lifecycle/chain-composition.js.map +0 -1
- package/dist/lifecycle/chain-store.js +0 -246
- package/dist/lifecycle/chain-store.js.map +0 -1
- package/dist/lifecycle/consolidate-rcasd.js +0 -352
- package/dist/lifecycle/consolidate-rcasd.js.map +0 -1
- package/dist/lifecycle/default-chain.js +0 -167
- package/dist/lifecycle/default-chain.js.map +0 -1
- package/dist/lifecycle/evidence.js +0 -180
- package/dist/lifecycle/evidence.js.map +0 -1
- package/dist/lifecycle/frontmatter.js +0 -363
- package/dist/lifecycle/frontmatter.js.map +0 -1
- package/dist/lifecycle/index.js +0 -753
- package/dist/lifecycle/index.js.map +0 -1
- package/dist/lifecycle/pipeline.js +0 -656
- package/dist/lifecycle/pipeline.js.map +0 -1
- package/dist/lifecycle/rcasd-index.js +0 -326
- package/dist/lifecycle/rcasd-index.js.map +0 -1
- package/dist/lifecycle/rcasd-paths.js +0 -220
- package/dist/lifecycle/rcasd-paths.js.map +0 -1
- package/dist/lifecycle/resume.js +0 -864
- package/dist/lifecycle/resume.js.map +0 -1
- package/dist/lifecycle/stage-artifacts.js +0 -94
- package/dist/lifecycle/stage-artifacts.js.map +0 -1
- package/dist/lifecycle/stages.js +0 -534
- package/dist/lifecycle/stages.js.map +0 -1
- package/dist/lifecycle/state-machine.js +0 -516
- package/dist/lifecycle/state-machine.js.map +0 -1
- package/dist/lifecycle/tessera-engine.js +0 -249
- package/dist/lifecycle/tessera-engine.js.map +0 -1
- package/dist/logger.js +0 -140
- package/dist/logger.js.map +0 -1
- package/dist/mcp/index.js +0 -146
- package/dist/mcp/index.js.map +0 -1
- package/dist/memory/auto-extract.js +0 -143
- package/dist/memory/auto-extract.js.map +0 -1
- package/dist/memory/brain-embedding.js +0 -49
- package/dist/memory/brain-embedding.js.map +0 -1
- package/dist/memory/brain-lifecycle.js +0 -298
- package/dist/memory/brain-lifecycle.js.map +0 -1
- package/dist/memory/brain-links.js +0 -148
- package/dist/memory/brain-links.js.map +0 -1
- package/dist/memory/brain-migration.js +0 -149
- package/dist/memory/brain-migration.js.map +0 -1
- package/dist/memory/brain-reasoning.js +0 -215
- package/dist/memory/brain-reasoning.js.map +0 -1
- package/dist/memory/brain-retrieval.js +0 -474
- package/dist/memory/brain-retrieval.js.map +0 -1
- package/dist/memory/brain-row-types.js +0 -10
- package/dist/memory/brain-row-types.js.map +0 -1
- package/dist/memory/brain-search.js +0 -519
- package/dist/memory/brain-search.js.map +0 -1
- package/dist/memory/brain-similarity.js +0 -145
- package/dist/memory/brain-similarity.js.map +0 -1
- package/dist/memory/claude-mem-migration.js +0 -277
- package/dist/memory/claude-mem-migration.js.map +0 -1
- package/dist/memory/decisions.js +0 -148
- package/dist/memory/decisions.js.map +0 -1
- package/dist/memory/engine-compat.js +0 -1030
- package/dist/memory/engine-compat.js.map +0 -1
- package/dist/memory/index.js +0 -773
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/learnings.js +0 -121
- package/dist/memory/learnings.js.map +0 -1
- package/dist/memory/memory-bridge.js +0 -289
- package/dist/memory/memory-bridge.js.map +0 -1
- package/dist/memory/patterns.js +0 -122
- package/dist/memory/patterns.js.map +0 -1
- package/dist/memory/pipeline-manifest-sqlite.js +0 -975
- package/dist/memory/pipeline-manifest-sqlite.js.map +0 -1
- package/dist/memory/session-memory.js +0 -226
- package/dist/memory/session-memory.js.map +0 -1
- package/dist/metrics/ab-test.js +0 -260
- package/dist/metrics/ab-test.js.map +0 -1
- package/dist/metrics/aggregation.js +0 -363
- package/dist/metrics/aggregation.js.map +0 -1
- package/dist/metrics/common.js +0 -64
- package/dist/metrics/common.js.map +0 -1
- package/dist/metrics/enums.js +0 -78
- package/dist/metrics/enums.js.map +0 -1
- package/dist/metrics/index.js +0 -19
- package/dist/metrics/index.js.map +0 -1
- package/dist/metrics/model-provider-registry.js +0 -88
- package/dist/metrics/model-provider-registry.js.map +0 -1
- package/dist/metrics/otel-integration.js +0 -263
- package/dist/metrics/otel-integration.js.map +0 -1
- package/dist/metrics/provider-detection.js +0 -103
- package/dist/metrics/provider-detection.js.map +0 -1
- package/dist/metrics/token-estimation.js +0 -253
- package/dist/metrics/token-estimation.js.map +0 -1
- package/dist/metrics/token-service.js +0 -450
- package/dist/metrics/token-service.js.map +0 -1
- package/dist/migration/agent-outputs.js +0 -316
- package/dist/migration/agent-outputs.js.map +0 -1
- package/dist/migration/checksum.js +0 -92
- package/dist/migration/checksum.js.map +0 -1
- package/dist/migration/index.js +0 -282
- package/dist/migration/index.js.map +0 -1
- package/dist/migration/logger.js +0 -360
- package/dist/migration/logger.js.map +0 -1
- package/dist/migration/preflight.js +0 -9
- package/dist/migration/preflight.js.map +0 -1
- package/dist/migration/state.js +0 -421
- package/dist/migration/state.js.map +0 -1
- package/dist/migration/validate.js +0 -241
- package/dist/migration/validate.js.map +0 -1
- package/dist/nexus/deps.js +0 -375
- package/dist/nexus/deps.js.map +0 -1
- package/dist/nexus/discover.js +0 -288
- package/dist/nexus/discover.js.map +0 -1
- package/dist/nexus/hash.js +0 -10
- package/dist/nexus/hash.js.map +0 -1
- package/dist/nexus/index.js +0 -38
- package/dist/nexus/index.js.map +0 -1
- package/dist/nexus/migrate-json-to-sqlite.js +0 -115
- package/dist/nexus/migrate-json-to-sqlite.js.map +0 -1
- package/dist/nexus/permissions.js +0 -105
- package/dist/nexus/permissions.js.map +0 -1
- package/dist/nexus/query.js +0 -175
- package/dist/nexus/query.js.map +0 -1
- package/dist/nexus/registry.js +0 -584
- package/dist/nexus/registry.js.map +0 -1
- package/dist/nexus/sharing/index.js +0 -179
- package/dist/nexus/sharing/index.js.map +0 -1
- package/dist/nexus/transfer-types.js +0 -8
- package/dist/nexus/transfer-types.js.map +0 -1
- package/dist/nexus/transfer.js +0 -263
- package/dist/nexus/transfer.js.map +0 -1
- package/dist/observability/index.js +0 -103
- package/dist/observability/index.js.map +0 -1
- package/dist/observability/log-filter.js +0 -63
- package/dist/observability/log-filter.js.map +0 -1
- package/dist/observability/log-parser.js +0 -99
- package/dist/observability/log-parser.js.map +0 -1
- package/dist/observability/log-reader.js +0 -139
- package/dist/observability/log-reader.js.map +0 -1
- package/dist/observability/types.js +0 -19
- package/dist/observability/types.js.map +0 -1
- package/dist/orchestration/analyze.js +0 -107
- package/dist/orchestration/analyze.js.map +0 -1
- package/dist/orchestration/bootstrap.js +0 -132
- package/dist/orchestration/bootstrap.js.map +0 -1
- package/dist/orchestration/context.js +0 -56
- package/dist/orchestration/context.js.map +0 -1
- package/dist/orchestration/critical-path.js +0 -100
- package/dist/orchestration/critical-path.js.map +0 -1
- package/dist/orchestration/index.js +0 -286
- package/dist/orchestration/index.js.map +0 -1
- package/dist/orchestration/parallel.js +0 -89
- package/dist/orchestration/parallel.js.map +0 -1
- package/dist/orchestration/protocol-validators.js +0 -524
- package/dist/orchestration/protocol-validators.js.map +0 -1
- package/dist/orchestration/skill-ops.js +0 -98
- package/dist/orchestration/skill-ops.js.map +0 -1
- package/dist/orchestration/status.js +0 -107
- package/dist/orchestration/status.js.map +0 -1
- package/dist/orchestration/unblock.js +0 -103
- package/dist/orchestration/unblock.js.map +0 -1
- package/dist/orchestration/validate-spawn.js +0 -67
- package/dist/orchestration/validate-spawn.js.map +0 -1
- package/dist/orchestration/waves.js +0 -86
- package/dist/orchestration/waves.js.map +0 -1
- package/dist/otel/index.js +0 -163
- package/dist/otel/index.js.map +0 -1
- package/dist/output.js +0 -132
- package/dist/output.js.map +0 -1
- package/dist/pagination.js +0 -61
- package/dist/pagination.js.map +0 -1
- package/dist/paths.js +0 -337
- package/dist/paths.js.map +0 -1
- package/dist/phases/deps.js +0 -369
- package/dist/phases/deps.js.map +0 -1
- package/dist/phases/index.js +0 -349
- package/dist/phases/index.js.map +0 -1
- package/dist/pipeline/index.js +0 -10
- package/dist/pipeline/index.js.map +0 -1
- package/dist/pipeline/phase.js +0 -45
- package/dist/pipeline/phase.js.map +0 -1
- package/dist/platform.js +0 -211
- package/dist/platform.js.map +0 -1
- package/dist/project-info.js +0 -84
- package/dist/project-info.js.map +0 -1
- package/dist/reconciliation/index.js +0 -10
- package/dist/reconciliation/index.js.map +0 -1
- package/dist/reconciliation/link-store.js +0 -129
- package/dist/reconciliation/link-store.js.map +0 -1
- package/dist/reconciliation/reconciliation-engine.js +0 -298
- package/dist/reconciliation/reconciliation-engine.js.map +0 -1
- package/dist/release/artifacts.js +0 -427
- package/dist/release/artifacts.js.map +0 -1
- package/dist/release/changelog-writer.js +0 -151
- package/dist/release/changelog-writer.js.map +0 -1
- package/dist/release/channel.js +0 -144
- package/dist/release/channel.js.map +0 -1
- package/dist/release/ci.js +0 -166
- package/dist/release/ci.js.map +0 -1
- package/dist/release/github-pr.js +0 -225
- package/dist/release/github-pr.js.map +0 -1
- package/dist/release/guards.js +0 -116
- package/dist/release/guards.js.map +0 -1
- package/dist/release/index.js +0 -22
- package/dist/release/index.js.map +0 -1
- package/dist/release/release-config.js +0 -158
- package/dist/release/release-config.js.map +0 -1
- package/dist/release/release-manifest.js +0 -1019
- package/dist/release/release-manifest.js.map +0 -1
- package/dist/release/version-bump.js +0 -255
- package/dist/release/version-bump.js.map +0 -1
- package/dist/remote/index.js +0 -257
- package/dist/remote/index.js.map +0 -1
- package/dist/repair.js +0 -89
- package/dist/repair.js.map +0 -1
- package/dist/research/index.js +0 -2
- package/dist/research/index.js.map +0 -1
- package/dist/roadmap/index.js +0 -59
- package/dist/roadmap/index.js.map +0 -1
- package/dist/routing/capability-matrix.js +0 -1550
- package/dist/routing/capability-matrix.js.map +0 -1
- package/dist/routing/index.js +0 -9
- package/dist/routing/index.js.map +0 -1
- package/dist/scaffold.js +0 -1158
- package/dist/scaffold.js.map +0 -1
- package/dist/schema-management.js +0 -295
- package/dist/schema-management.js.map +0 -1
- package/dist/security/index.js +0 -9
- package/dist/security/index.js.map +0 -1
- package/dist/security/input-sanitization.js +0 -321
- package/dist/security/input-sanitization.js.map +0 -1
- package/dist/sequence/index.js +0 -295
- package/dist/sequence/index.js.map +0 -1
- package/dist/sessions/assumptions.js +0 -54
- package/dist/sessions/assumptions.js.map +0 -1
- package/dist/sessions/briefing.js +0 -377
- package/dist/sessions/briefing.js.map +0 -1
- package/dist/sessions/context-alert.js +0 -222
- package/dist/sessions/context-alert.js.map +0 -1
- package/dist/sessions/context-inject.js +0 -61
- package/dist/sessions/context-inject.js.map +0 -1
- package/dist/sessions/context-monitor.js +0 -98
- package/dist/sessions/context-monitor.js.map +0 -1
- package/dist/sessions/decisions.js +0 -65
- package/dist/sessions/decisions.js.map +0 -1
- package/dist/sessions/find.js +0 -63
- package/dist/sessions/find.js.map +0 -1
- package/dist/sessions/handoff.js +0 -328
- package/dist/sessions/handoff.js.map +0 -1
- package/dist/sessions/hitl-warnings.js +0 -254
- package/dist/sessions/hitl-warnings.js.map +0 -1
- package/dist/sessions/index.js +0 -318
- package/dist/sessions/index.js.map +0 -1
- package/dist/sessions/session-archive.js +0 -40
- package/dist/sessions/session-archive.js.map +0 -1
- package/dist/sessions/session-cleanup.js +0 -59
- package/dist/sessions/session-cleanup.js.map +0 -1
- package/dist/sessions/session-drift.js +0 -134
- package/dist/sessions/session-drift.js.map +0 -1
- package/dist/sessions/session-enforcement.js +0 -140
- package/dist/sessions/session-enforcement.js.map +0 -1
- package/dist/sessions/session-grade.js +0 -253
- package/dist/sessions/session-grade.js.map +0 -1
- package/dist/sessions/session-history.js +0 -42
- package/dist/sessions/session-history.js.map +0 -1
- package/dist/sessions/session-id.js +0 -81
- package/dist/sessions/session-id.js.map +0 -1
- package/dist/sessions/session-memory-bridge.js +0 -52
- package/dist/sessions/session-memory-bridge.js.map +0 -1
- package/dist/sessions/session-show.js +0 -24
- package/dist/sessions/session-show.js.map +0 -1
- package/dist/sessions/session-stats.js +0 -69
- package/dist/sessions/session-stats.js.map +0 -1
- package/dist/sessions/session-suspend.js +0 -39
- package/dist/sessions/session-suspend.js.map +0 -1
- package/dist/sessions/session-switch.js +0 -51
- package/dist/sessions/session-switch.js.map +0 -1
- package/dist/sessions/session-view.js +0 -76
- package/dist/sessions/session-view.js.map +0 -1
- package/dist/sessions/statusline-setup.js +0 -85
- package/dist/sessions/statusline-setup.js.map +0 -1
- package/dist/sessions/types.js +0 -8
- package/dist/sessions/types.js.map +0 -1
- package/dist/signaldock/claude-code-transport.js +0 -107
- package/dist/signaldock/claude-code-transport.js.map +0 -1
- package/dist/signaldock/factory.js +0 -25
- package/dist/signaldock/factory.js.map +0 -1
- package/dist/signaldock/index.js +0 -9
- package/dist/signaldock/index.js.map +0 -1
- package/dist/signaldock/signaldock-transport.js +0 -122
- package/dist/signaldock/signaldock-transport.js.map +0 -1
- package/dist/signaldock/transport.js +0 -11
- package/dist/signaldock/transport.js.map +0 -1
- package/dist/signaldock/types.js +0 -11
- package/dist/signaldock/types.js.map +0 -1
- package/dist/skills/agents/config.js +0 -94
- package/dist/skills/agents/config.js.map +0 -1
- package/dist/skills/agents/install.js +0 -116
- package/dist/skills/agents/install.js.map +0 -1
- package/dist/skills/agents/registry.js +0 -161
- package/dist/skills/agents/registry.js.map +0 -1
- package/dist/skills/discovery.js +0 -333
- package/dist/skills/discovery.js.map +0 -1
- package/dist/skills/dispatch.js +0 -347
- package/dist/skills/dispatch.js.map +0 -1
- package/dist/skills/dynamic-skill-generator.js +0 -100
- package/dist/skills/dynamic-skill-generator.js.map +0 -1
- package/dist/skills/index.js +0 -44
- package/dist/skills/index.js.map +0 -1
- package/dist/skills/injection/subagent.js +0 -195
- package/dist/skills/injection/subagent.js.map +0 -1
- package/dist/skills/injection/token.js +0 -260
- package/dist/skills/injection/token.js.map +0 -1
- package/dist/skills/install.js +0 -40
- package/dist/skills/install.js.map +0 -1
- package/dist/skills/manifests/contribution.js +0 -175
- package/dist/skills/manifests/contribution.js.map +0 -1
- package/dist/skills/manifests/research.js +0 -281
- package/dist/skills/manifests/research.js.map +0 -1
- package/dist/skills/manifests/resolver.js +0 -146
- package/dist/skills/manifests/resolver.js.map +0 -1
- package/dist/skills/marketplace.js +0 -90
- package/dist/skills/marketplace.js.map +0 -1
- package/dist/skills/orchestrator/spawn.js +0 -178
- package/dist/skills/orchestrator/spawn.js.map +0 -1
- package/dist/skills/orchestrator/startup.js +0 -451
- package/dist/skills/orchestrator/startup.js.map +0 -1
- package/dist/skills/orchestrator/validator.js +0 -301
- package/dist/skills/orchestrator/validator.js.map +0 -1
- package/dist/skills/precedence-integration.js +0 -73
- package/dist/skills/precedence-integration.js.map +0 -1
- package/dist/skills/precedence-types.js +0 -16
- package/dist/skills/precedence-types.js.map +0 -1
- package/dist/skills/routing-table.js +0 -63
- package/dist/skills/routing-table.js.map +0 -1
- package/dist/skills/skill-paths.js +0 -220
- package/dist/skills/skill-paths.js.map +0 -1
- package/dist/skills/test-utility.js +0 -55
- package/dist/skills/test-utility.js.map +0 -1
- package/dist/skills/types.js +0 -118
- package/dist/skills/types.js.map +0 -1
- package/dist/skills/validation.js +0 -183
- package/dist/skills/validation.js.map +0 -1
- package/dist/skills/version.js +0 -57
- package/dist/skills/version.js.map +0 -1
- package/dist/snapshot/index.js +0 -188
- package/dist/snapshot/index.js.map +0 -1
- package/dist/spawn/adapter-registry.js +0 -246
- package/dist/spawn/adapter-registry.js.map +0 -1
- package/dist/spawn/index.js +0 -10
- package/dist/spawn/index.js.map +0 -1
- package/dist/stats/index.js +0 -339
- package/dist/stats/index.js.map +0 -1
- package/dist/sticky/archive.js +0 -47
- package/dist/sticky/archive.js.map +0 -1
- package/dist/sticky/convert.js +0 -235
- package/dist/sticky/convert.js.map +0 -1
- package/dist/sticky/create.js +0 -48
- package/dist/sticky/create.js.map +0 -1
- package/dist/sticky/id.js +0 -35
- package/dist/sticky/id.js.map +0 -1
- package/dist/sticky/index.js +0 -16
- package/dist/sticky/index.js.map +0 -1
- package/dist/sticky/list.js +0 -44
- package/dist/sticky/list.js.map +0 -1
- package/dist/sticky/purge.js +0 -45
- package/dist/sticky/purge.js.map +0 -1
- package/dist/sticky/show.js +0 -42
- package/dist/sticky/show.js.map +0 -1
- package/dist/sticky/types.js +0 -10
- package/dist/sticky/types.js.map +0 -1
- package/dist/store/atomic.js +0 -167
- package/dist/store/atomic.js.map +0 -1
- package/dist/store/backup.js +0 -94
- package/dist/store/backup.js.map +0 -1
- package/dist/store/brain-accessor.js +0 -397
- package/dist/store/brain-accessor.js.map +0 -1
- package/dist/store/brain-schema.js +0 -212
- package/dist/store/brain-schema.js.map +0 -1
- package/dist/store/brain-sqlite.js +0 -271
- package/dist/store/brain-sqlite.js.map +0 -1
- package/dist/store/cache.js +0 -168
- package/dist/store/cache.js.map +0 -1
- package/dist/store/chain-schema.js +0 -51
- package/dist/store/chain-schema.js.map +0 -1
- package/dist/store/converters.js +0 -120
- package/dist/store/converters.js.map +0 -1
- package/dist/store/data-accessor.js +0 -26
- package/dist/store/data-accessor.js.map +0 -1
- package/dist/store/data-safety-central.js +0 -269
- package/dist/store/data-safety-central.js.map +0 -1
- package/dist/store/data-safety.js +0 -274
- package/dist/store/data-safety.js.map +0 -1
- package/dist/store/db-helpers.js +0 -221
- package/dist/store/db-helpers.js.map +0 -1
- package/dist/store/export.js +0 -155
- package/dist/store/export.js.map +0 -1
- package/dist/store/file-utils.js +0 -270
- package/dist/store/file-utils.js.map +0 -1
- package/dist/store/git-checkpoint.js +0 -365
- package/dist/store/git-checkpoint.js.map +0 -1
- package/dist/store/import-logging.js +0 -139
- package/dist/store/import-logging.js.map +0 -1
- package/dist/store/import-remap.js +0 -145
- package/dist/store/import-remap.js.map +0 -1
- package/dist/store/import-sort.js +0 -121
- package/dist/store/import-sort.js.map +0 -1
- package/dist/store/index.js +0 -28
- package/dist/store/index.js.map +0 -1
- package/dist/store/json.js +0 -208
- package/dist/store/json.js.map +0 -1
- package/dist/store/lifecycle-store.js +0 -249
- package/dist/store/lifecycle-store.js.map +0 -1
- package/dist/store/lock.js +0 -70
- package/dist/store/lock.js.map +0 -1
- package/dist/store/migration-sqlite.js +0 -671
- package/dist/store/migration-sqlite.js.map +0 -1
- package/dist/store/nexus-schema.js +0 -62
- package/dist/store/nexus-schema.js.map +0 -1
- package/dist/store/nexus-sqlite.js +0 -217
- package/dist/store/nexus-sqlite.js.map +0 -1
- package/dist/store/nexus-validation-schemas.js +0 -40
- package/dist/store/nexus-validation-schemas.js.map +0 -1
- package/dist/store/parsers.js +0 -37
- package/dist/store/parsers.js.map +0 -1
- package/dist/store/project-detect.js +0 -457
- package/dist/store/project-detect.js.map +0 -1
- package/dist/store/provider.js +0 -101
- package/dist/store/provider.js.map +0 -1
- package/dist/store/safety-data-accessor.js +0 -243
- package/dist/store/safety-data-accessor.js.map +0 -1
- package/dist/store/schema.js +0 -7
- package/dist/store/schema.js.map +0 -1
- package/dist/store/session-store.js +0 -219
- package/dist/store/session-store.js.map +0 -1
- package/dist/store/sqlite-backup.js +0 -105
- package/dist/store/sqlite-backup.js.map +0 -1
- package/dist/store/sqlite-data-accessor.js +0 -742
- package/dist/store/sqlite-data-accessor.js.map +0 -1
- package/dist/store/sqlite.js +0 -489
- package/dist/store/sqlite.js.map +0 -1
- package/dist/store/status-registry.js +0 -8
- package/dist/store/status-registry.js.map +0 -1
- package/dist/store/task-store.js +0 -344
- package/dist/store/task-store.js.map +0 -1
- package/dist/store/tasks-schema.js +0 -574
- package/dist/store/tasks-schema.js.map +0 -1
- package/dist/store/typed-query.js +0 -15
- package/dist/store/typed-query.js.map +0 -1
- package/dist/store/validation-schemas.js +0 -278
- package/dist/store/validation-schemas.js.map +0 -1
- package/dist/system/archive-analytics.js +0 -277
- package/dist/system/archive-analytics.js.map +0 -1
- package/dist/system/archive-stats.js +0 -64
- package/dist/system/archive-stats.js.map +0 -1
- package/dist/system/audit.js +0 -145
- package/dist/system/audit.js.map +0 -1
- package/dist/system/backup.js +0 -99
- package/dist/system/backup.js.map +0 -1
- package/dist/system/cleanup.js +0 -134
- package/dist/system/cleanup.js.map +0 -1
- package/dist/system/health.js +0 -1054
- package/dist/system/health.js.map +0 -1
- package/dist/system/index.js +0 -18
- package/dist/system/index.js.map +0 -1
- package/dist/system/inject-generate.js +0 -122
- package/dist/system/inject-generate.js.map +0 -1
- package/dist/system/labels.js +0 -38
- package/dist/system/labels.js.map +0 -1
- package/dist/system/metrics.js +0 -61
- package/dist/system/metrics.js.map +0 -1
- package/dist/system/migrate.js +0 -43
- package/dist/system/migrate.js.map +0 -1
- package/dist/system/platform-paths.js +0 -80
- package/dist/system/platform-paths.js.map +0 -1
- package/dist/system/runtime.js +0 -161
- package/dist/system/runtime.js.map +0 -1
- package/dist/system/safestop.js +0 -99
- package/dist/system/safestop.js.map +0 -1
- package/dist/system/storage-preflight.js +0 -123
- package/dist/system/storage-preflight.js.map +0 -1
- package/dist/task-work/index.js +0 -155
- package/dist/task-work/index.js.map +0 -1
- package/dist/tasks/add.js +0 -510
- package/dist/tasks/add.js.map +0 -1
- package/dist/tasks/analyze.js +0 -85
- package/dist/tasks/analyze.js.map +0 -1
- package/dist/tasks/archive.js +0 -90
- package/dist/tasks/archive.js.map +0 -1
- package/dist/tasks/atomicity.js +0 -83
- package/dist/tasks/atomicity.js.map +0 -1
- package/dist/tasks/cancel-ops.js +0 -83
- package/dist/tasks/cancel-ops.js.map +0 -1
- package/dist/tasks/complete.js +0 -224
- package/dist/tasks/complete.js.map +0 -1
- package/dist/tasks/crossref-extract.js +0 -73
- package/dist/tasks/crossref-extract.js.map +0 -1
- package/dist/tasks/delete-preview.js +0 -192
- package/dist/tasks/delete-preview.js.map +0 -1
- package/dist/tasks/delete.js +0 -120
- package/dist/tasks/delete.js.map +0 -1
- package/dist/tasks/deletion-strategy.js +0 -200
- package/dist/tasks/deletion-strategy.js.map +0 -1
- package/dist/tasks/dependency-check.js +0 -278
- package/dist/tasks/dependency-check.js.map +0 -1
- package/dist/tasks/deps-ready.js +0 -32
- package/dist/tasks/deps-ready.js.map +0 -1
- package/dist/tasks/enforcement.js +0 -82
- package/dist/tasks/enforcement.js.map +0 -1
- package/dist/tasks/find.js +0 -148
- package/dist/tasks/find.js.map +0 -1
- package/dist/tasks/graph-cache.js +0 -127
- package/dist/tasks/graph-cache.js.map +0 -1
- package/dist/tasks/graph-ops.js +0 -171
- package/dist/tasks/graph-ops.js.map +0 -1
- package/dist/tasks/graph-rag.js +0 -328
- package/dist/tasks/graph-rag.js.map +0 -1
- package/dist/tasks/hierarchy-policy.js +0 -149
- package/dist/tasks/hierarchy-policy.js.map +0 -1
- package/dist/tasks/hierarchy.js +0 -185
- package/dist/tasks/hierarchy.js.map +0 -1
- package/dist/tasks/id-generator.js +0 -65
- package/dist/tasks/id-generator.js.map +0 -1
- package/dist/tasks/index.js +0 -14
- package/dist/tasks/index.js.map +0 -1
- package/dist/tasks/labels.js +0 -52
- package/dist/tasks/labels.js.map +0 -1
- package/dist/tasks/list.js +0 -68
- package/dist/tasks/list.js.map +0 -1
- package/dist/tasks/phase-tracking.js +0 -133
- package/dist/tasks/phase-tracking.js.map +0 -1
- package/dist/tasks/plan.js +0 -268
- package/dist/tasks/plan.js.map +0 -1
- package/dist/tasks/relates.js +0 -89
- package/dist/tasks/relates.js.map +0 -1
- package/dist/tasks/reparent.d.ts +0 -38
- package/dist/tasks/reparent.d.ts.map +0 -1
- package/dist/tasks/show.js +0 -78
- package/dist/tasks/show.js.map +0 -1
- package/dist/tasks/size-weighting.js +0 -86
- package/dist/tasks/size-weighting.js.map +0 -1
- package/dist/tasks/staleness.js +0 -86
- package/dist/tasks/staleness.js.map +0 -1
- package/dist/tasks/task-ops.js +0 -1340
- package/dist/tasks/task-ops.js.map +0 -1
- package/dist/tasks/update.js +0 -243
- package/dist/tasks/update.js.map +0 -1
- package/dist/templates/index.js +0 -10
- package/dist/templates/index.js.map +0 -1
- package/dist/templates/parser.js +0 -254
- package/dist/templates/parser.js.map +0 -1
- package/dist/ui/aliases.js +0 -153
- package/dist/ui/aliases.js.map +0 -1
- package/dist/ui/changelog.js +0 -184
- package/dist/ui/changelog.js.map +0 -1
- package/dist/ui/command-registry.js +0 -168
- package/dist/ui/command-registry.js.map +0 -1
- package/dist/ui/flags.js +0 -94
- package/dist/ui/flags.js.map +0 -1
- package/dist/ui/index.js +0 -24
- package/dist/ui/index.js.map +0 -1
- package/dist/ui/injection-legacy.d.ts +0 -26
- package/dist/ui/injection-legacy.d.ts.map +0 -1
- package/dist/ui/injection-legacy.js +0 -42
- package/dist/ui/injection-legacy.js.map +0 -1
- package/dist/upgrade.js +0 -901
- package/dist/upgrade.js.map +0 -1
- package/dist/validation/chain-validation.js +0 -146
- package/dist/validation/chain-validation.js.map +0 -1
- package/dist/validation/compliance.js +0 -155
- package/dist/validation/compliance.js.map +0 -1
- package/dist/validation/docs-sync.js +0 -212
- package/dist/validation/docs-sync.js.map +0 -1
- package/dist/validation/doctor/checks.js +0 -1069
- package/dist/validation/doctor/checks.js.map +0 -1
- package/dist/validation/doctor/index.js +0 -9
- package/dist/validation/doctor/index.js.map +0 -1
- package/dist/validation/doctor/project-cache.js +0 -160
- package/dist/validation/doctor/project-cache.js.map +0 -1
- package/dist/validation/doctor/utils.js +0 -155
- package/dist/validation/doctor/utils.js.map +0 -1
- package/dist/validation/engine.js +0 -902
- package/dist/validation/engine.js.map +0 -1
- package/dist/validation/gap-check.js +0 -175
- package/dist/validation/gap-check.js.map +0 -1
- package/dist/validation/index.js +0 -40
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/manifest.js +0 -237
- package/dist/validation/manifest.js.map +0 -1
- package/dist/validation/operation-gate-validators.js +0 -724
- package/dist/validation/operation-gate-validators.js.map +0 -1
- package/dist/validation/operation-verification-gates.js +0 -532
- package/dist/validation/operation-verification-gates.js.map +0 -1
- package/dist/validation/param-utils.js +0 -139
- package/dist/validation/param-utils.js.map +0 -1
- package/dist/validation/protocol-common.js +0 -300
- package/dist/validation/protocol-common.js.map +0 -1
- package/dist/validation/protocols/consensus.js +0 -71
- package/dist/validation/protocols/consensus.js.map +0 -1
- package/dist/validation/protocols/contribution.js +0 -59
- package/dist/validation/protocols/contribution.js.map +0 -1
- package/dist/validation/protocols/decomposition.js +0 -59
- package/dist/validation/protocols/decomposition.js.map +0 -1
- package/dist/validation/protocols/implementation.js +0 -59
- package/dist/validation/protocols/implementation.js.map +0 -1
- package/dist/validation/protocols/release-protocol.js +0 -60
- package/dist/validation/protocols/release-protocol.js.map +0 -1
- package/dist/validation/protocols/research.js +0 -77
- package/dist/validation/protocols/research.js.map +0 -1
- package/dist/validation/protocols/specification.js +0 -84
- package/dist/validation/protocols/specification.js.map +0 -1
- package/dist/validation/protocols/testing-protocol.js +0 -70
- package/dist/validation/protocols/testing-protocol.js.map +0 -1
- package/dist/validation/protocols/validation-protocol.js +0 -70
- package/dist/validation/protocols/validation-protocol.js.map +0 -1
- package/dist/validation/schema-integrity.js +0 -170
- package/dist/validation/schema-integrity.js.map +0 -1
- package/dist/validation/schema-validator.js +0 -176
- package/dist/validation/schema-validator.js.map +0 -1
- package/dist/validation/validate-ops.js +0 -937
- package/dist/validation/validate-ops.js.map +0 -1
- package/dist/validation/validation-rules.js +0 -226
- package/dist/validation/validation-rules.js.map +0 -1
- package/dist/validation/verification.js +0 -321
- package/dist/validation/verification.js.map +0 -1
package/dist/agents/retry.js
DELETED
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Self-healing and retry logic for the Agent dimension.
|
|
3
|
-
*
|
|
4
|
-
* Provides configurable retry policies with exponential backoff + jitter,
|
|
5
|
-
* and recovery mechanisms for crashed agents. Error classification
|
|
6
|
-
* determines whether a retry is appropriate.
|
|
7
|
-
*
|
|
8
|
-
* @module agents/retry
|
|
9
|
-
*/
|
|
10
|
-
import { checkAgentHealth, classifyError, listAgentInstances, updateAgentStatus, } from './registry.js';
|
|
11
|
-
/** Default retry policy matching the BRAIN specification. */
|
|
12
|
-
export const DEFAULT_RETRY_POLICY = Object.freeze({
|
|
13
|
-
maxRetries: 3,
|
|
14
|
-
baseDelayMs: 1_000,
|
|
15
|
-
maxDelayMs: 30_000,
|
|
16
|
-
backoffMultiplier: 2,
|
|
17
|
-
jitter: true,
|
|
18
|
-
retryOnUnknown: true,
|
|
19
|
-
});
|
|
20
|
-
/**
|
|
21
|
-
* Create a retry policy by merging overrides with the default policy.
|
|
22
|
-
*/
|
|
23
|
-
export function createRetryPolicy(overrides) {
|
|
24
|
-
return { ...DEFAULT_RETRY_POLICY, ...overrides };
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Calculate the delay for a given retry attempt using exponential backoff.
|
|
28
|
-
*
|
|
29
|
-
* Formula: min(baseDelay * multiplier^attempt, maxDelay) + jitter
|
|
30
|
-
* Jitter adds 0-25% randomness to prevent thundering herd.
|
|
31
|
-
*/
|
|
32
|
-
export function calculateDelay(attempt, policy) {
|
|
33
|
-
const exponentialDelay = policy.baseDelayMs * policy.backoffMultiplier ** attempt;
|
|
34
|
-
const clampedDelay = Math.min(exponentialDelay, policy.maxDelayMs);
|
|
35
|
-
if (!policy.jitter)
|
|
36
|
-
return clampedDelay;
|
|
37
|
-
// Add 0-25% jitter
|
|
38
|
-
const jitterRange = clampedDelay * 0.25;
|
|
39
|
-
const jitterValue = Math.random() * jitterRange;
|
|
40
|
-
return Math.floor(clampedDelay + jitterValue);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Determine whether an error should be retried based on its classification
|
|
44
|
-
* and the retry policy.
|
|
45
|
-
*/
|
|
46
|
-
export function shouldRetry(error, attempt, policy) {
|
|
47
|
-
if (attempt >= policy.maxRetries)
|
|
48
|
-
return false;
|
|
49
|
-
const classification = classifyError(error);
|
|
50
|
-
if (classification === 'permanent')
|
|
51
|
-
return false;
|
|
52
|
-
if (classification === 'retriable')
|
|
53
|
-
return true;
|
|
54
|
-
// 'unknown' classification -- policy determines behavior
|
|
55
|
-
return policy.retryOnUnknown;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Wrap an async function with retry logic using configurable exponential backoff.
|
|
59
|
-
*
|
|
60
|
-
* The function will be retried according to the policy when retriable errors
|
|
61
|
-
* occur. Permanent errors cause immediate failure. Unknown errors respect
|
|
62
|
-
* the `retryOnUnknown` policy setting.
|
|
63
|
-
*
|
|
64
|
-
* @param fn - The async function to execute with retries
|
|
65
|
-
* @param policy - Retry policy (uses DEFAULT_RETRY_POLICY if not provided)
|
|
66
|
-
* @returns The result of the operation with retry metadata
|
|
67
|
-
*/
|
|
68
|
-
export async function withRetry(fn, policy) {
|
|
69
|
-
const effectivePolicy = createRetryPolicy(policy);
|
|
70
|
-
let lastError;
|
|
71
|
-
let totalDelayMs = 0;
|
|
72
|
-
for (let attempt = 0; attempt <= effectivePolicy.maxRetries; attempt++) {
|
|
73
|
-
try {
|
|
74
|
-
const value = await fn();
|
|
75
|
-
return {
|
|
76
|
-
success: true,
|
|
77
|
-
value,
|
|
78
|
-
attempts: attempt + 1,
|
|
79
|
-
totalDelayMs,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
catch (err) {
|
|
83
|
-
lastError = err instanceof Error ? err : new Error(String(err));
|
|
84
|
-
if (!shouldRetry(err, attempt, effectivePolicy)) {
|
|
85
|
-
return {
|
|
86
|
-
success: false,
|
|
87
|
-
error: lastError,
|
|
88
|
-
attempts: attempt + 1,
|
|
89
|
-
totalDelayMs,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
// Calculate and apply delay before next attempt
|
|
93
|
-
if (attempt < effectivePolicy.maxRetries) {
|
|
94
|
-
const delay = calculateDelay(attempt, effectivePolicy);
|
|
95
|
-
totalDelayMs += delay;
|
|
96
|
-
await sleep(delay);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return {
|
|
101
|
-
success: false,
|
|
102
|
-
error: lastError ?? new Error('Retry exhausted without error'),
|
|
103
|
-
attempts: effectivePolicy.maxRetries + 1,
|
|
104
|
-
totalDelayMs,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Attempt to recover crashed agents.
|
|
109
|
-
*
|
|
110
|
-
* Finds all agents with status 'crashed' and determines if they can be
|
|
111
|
-
* restarted based on their error history. Agents whose last error was
|
|
112
|
-
* classified as 'permanent' are abandoned. Agents with retriable errors
|
|
113
|
-
* are reset to 'starting' for the orchestration layer to re-assign.
|
|
114
|
-
*
|
|
115
|
-
* @param thresholdMs - Heartbeat threshold for crash detection (default: 30000)
|
|
116
|
-
* @param cwd - Working directory
|
|
117
|
-
* @returns Recovery results for each crashed agent
|
|
118
|
-
*/
|
|
119
|
-
export async function recoverCrashedAgents(thresholdMs = 30_000, cwd) {
|
|
120
|
-
const results = [];
|
|
121
|
-
// Step 1: detect stale agents and mark them crashed
|
|
122
|
-
const staleAgents = await checkAgentHealth(thresholdMs, cwd);
|
|
123
|
-
for (const agent of staleAgents) {
|
|
124
|
-
await updateAgentStatus(agent.id, { status: 'crashed', error: 'Heartbeat timeout detected during recovery sweep' }, cwd);
|
|
125
|
-
}
|
|
126
|
-
// Step 2: process all crashed agents
|
|
127
|
-
const crashedAgents = await listAgentInstances({ status: 'crashed' }, cwd);
|
|
128
|
-
for (const agent of crashedAgents) {
|
|
129
|
-
// Check error history to determine recovery action
|
|
130
|
-
const { getAgentErrorHistory } = await import('./registry.js');
|
|
131
|
-
const errors = await getAgentErrorHistory(agent.id, cwd);
|
|
132
|
-
const lastError = errors.length > 0 ? errors[errors.length - 1] : null;
|
|
133
|
-
// Too many errors -- abandon
|
|
134
|
-
if (agent.errorCount >= 5) {
|
|
135
|
-
await updateAgentStatus(agent.id, { status: 'stopped' }, cwd);
|
|
136
|
-
results.push({
|
|
137
|
-
agentId: agent.id,
|
|
138
|
-
recovered: false,
|
|
139
|
-
action: 'abandoned',
|
|
140
|
-
reason: `Error count (${agent.errorCount}) exceeds threshold (5)`,
|
|
141
|
-
});
|
|
142
|
-
continue;
|
|
143
|
-
}
|
|
144
|
-
// Last error was permanent -- abandon
|
|
145
|
-
if (lastError?.errorType === 'permanent') {
|
|
146
|
-
await updateAgentStatus(agent.id, { status: 'stopped' }, cwd);
|
|
147
|
-
results.push({
|
|
148
|
-
agentId: agent.id,
|
|
149
|
-
recovered: false,
|
|
150
|
-
action: 'abandoned',
|
|
151
|
-
reason: `Permanent error: ${lastError.message}`,
|
|
152
|
-
});
|
|
153
|
-
continue;
|
|
154
|
-
}
|
|
155
|
-
// Retriable or unknown -- attempt restart by resetting to 'starting'
|
|
156
|
-
await updateAgentStatus(agent.id, { status: 'starting' }, cwd);
|
|
157
|
-
results.push({
|
|
158
|
-
agentId: agent.id,
|
|
159
|
-
recovered: true,
|
|
160
|
-
action: 'restarted',
|
|
161
|
-
reason: 'Agent reset to starting for re-assignment',
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
return results;
|
|
165
|
-
}
|
|
166
|
-
// ============================================================================
|
|
167
|
-
// Utilities
|
|
168
|
-
// ============================================================================
|
|
169
|
-
/**
|
|
170
|
-
* Sleep for a given number of milliseconds.
|
|
171
|
-
* Extracted for testability.
|
|
172
|
-
*/
|
|
173
|
-
function sleep(ms) {
|
|
174
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=retry.js.map
|
package/dist/agents/retry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/agents/retry.ts"],"names":[],"mappings":"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"}
|
package/dist/audit-prune.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Audit log pruning with optional archive-before-delete.
|
|
3
|
-
*
|
|
4
|
-
* Prunes audit_log rows older than a configurable retention period.
|
|
5
|
-
* When archiveBeforePrune is enabled, exports prunable rows to
|
|
6
|
-
* a gzip-compressed JSONL file before deletion.
|
|
7
|
-
*
|
|
8
|
-
* Never throws — logs warnings on failure. Safe for fire-and-forget
|
|
9
|
-
* startup wiring.
|
|
10
|
-
*
|
|
11
|
-
* @task T5339
|
|
12
|
-
*/
|
|
13
|
-
import { createWriteStream, mkdirSync } from 'node:fs';
|
|
14
|
-
import { join } from 'node:path';
|
|
15
|
-
import { Readable } from 'node:stream';
|
|
16
|
-
import { pipeline } from 'node:stream/promises';
|
|
17
|
-
import { createGzip } from 'node:zlib';
|
|
18
|
-
import { getLogger } from './logger.js';
|
|
19
|
-
const log = getLogger('prune');
|
|
20
|
-
/**
|
|
21
|
-
* Prune old audit_log rows from tasks.db.
|
|
22
|
-
*
|
|
23
|
-
* 1. If auditRetentionDays is 0 or undefined, skip age-based pruning.
|
|
24
|
-
* 2. Compute cutoff timestamp from auditRetentionDays.
|
|
25
|
-
* 3. If archiveBeforePrune, select rows older than cutoff and write to
|
|
26
|
-
* .cleo/backups/logs/audit-YYYY-MM-DD.jsonl.gz.
|
|
27
|
-
* 4. Delete rows older than cutoff from audit_log.
|
|
28
|
-
*
|
|
29
|
-
* Idempotent — safe to call multiple times.
|
|
30
|
-
* Never throws — returns zero counts on any error.
|
|
31
|
-
*
|
|
32
|
-
* @param cleoDir - Absolute path to .cleo directory
|
|
33
|
-
* @param config - LoggingConfig with auditRetentionDays and archiveBeforePrune
|
|
34
|
-
*/
|
|
35
|
-
export async function pruneAuditLog(cleoDir, config) {
|
|
36
|
-
try {
|
|
37
|
-
if (!config.auditRetentionDays || config.auditRetentionDays <= 0) {
|
|
38
|
-
log.debug('auditRetentionDays is 0 or unset; skipping audit prune');
|
|
39
|
-
return { rowsArchived: 0, rowsDeleted: 0 };
|
|
40
|
-
}
|
|
41
|
-
const cutoff = new Date(Date.now() - config.auditRetentionDays * 86_400_000).toISOString();
|
|
42
|
-
// Derive projectRoot from cleoDir (cleoDir = /path/to/project/.cleo)
|
|
43
|
-
const projectRoot = join(cleoDir, '..');
|
|
44
|
-
const { getDb } = await import('./store/sqlite.js');
|
|
45
|
-
const { auditLog } = await import('./store/tasks-schema.js');
|
|
46
|
-
const { lt } = await import('drizzle-orm');
|
|
47
|
-
const db = await getDb(projectRoot);
|
|
48
|
-
// Select rows to prune
|
|
49
|
-
const oldRows = await db.select().from(auditLog).where(lt(auditLog.timestamp, cutoff));
|
|
50
|
-
if (oldRows.length === 0) {
|
|
51
|
-
log.debug('No audit_log rows older than cutoff; nothing to prune');
|
|
52
|
-
return { rowsArchived: 0, rowsDeleted: 0 };
|
|
53
|
-
}
|
|
54
|
-
let archivePath;
|
|
55
|
-
let rowsArchived = 0;
|
|
56
|
-
// Archive before pruning (if enabled)
|
|
57
|
-
if (config.archiveBeforePrune) {
|
|
58
|
-
try {
|
|
59
|
-
const archiveDir = join(cleoDir, 'backups', 'logs');
|
|
60
|
-
mkdirSync(archiveDir, { recursive: true });
|
|
61
|
-
const dateStamp = new Date().toISOString().slice(0, 10);
|
|
62
|
-
archivePath = join(archiveDir, `audit-${dateStamp}.jsonl.gz`);
|
|
63
|
-
// Build JSONL content: one JSON object per line
|
|
64
|
-
const lines = oldRows.map((row) => JSON.stringify(row));
|
|
65
|
-
const jsonlContent = lines.join('\n') + '\n';
|
|
66
|
-
// Gzip compress and write via streaming pipeline
|
|
67
|
-
const gzip = createGzip();
|
|
68
|
-
const outStream = createWriteStream(archivePath);
|
|
69
|
-
const inStream = Readable.from([jsonlContent]);
|
|
70
|
-
await pipeline(inStream, gzip, outStream);
|
|
71
|
-
rowsArchived = oldRows.length;
|
|
72
|
-
log.info({ archivePath, rowsArchived }, `Archived ${rowsArchived} audit rows to ${archivePath}`);
|
|
73
|
-
}
|
|
74
|
-
catch (archiveErr) {
|
|
75
|
-
// Archive failure must NOT prevent pruning — log and continue
|
|
76
|
-
log.warn({ err: archiveErr }, 'Failed to archive audit rows; continuing with deletion');
|
|
77
|
-
archivePath = undefined;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// Delete prunable rows
|
|
81
|
-
await db.delete(auditLog).where(lt(auditLog.timestamp, cutoff)).run();
|
|
82
|
-
log.info({ rowsDeleted: oldRows.length, cutoff }, `Pruned ${oldRows.length} audit_log rows older than ${cutoff}`);
|
|
83
|
-
return {
|
|
84
|
-
rowsArchived,
|
|
85
|
-
rowsDeleted: oldRows.length,
|
|
86
|
-
archivePath,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
catch (err) {
|
|
90
|
-
log.warn({ err }, 'audit log pruning failed');
|
|
91
|
-
return { rowsArchived: 0, rowsDeleted: 0 };
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=audit-prune.js.map
|
package/dist/audit-prune.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit-prune.js","sourceRoot":"","sources":["../src/audit-prune.ts"],"names":[],"mappings":"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"}
|
package/dist/audit.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core audit types and query functions.
|
|
3
|
-
*
|
|
4
|
-
* AuditEntry interface and queryAudit function moved here from
|
|
5
|
-
* src/dispatch/middleware/audit.ts so core modules (session-grade.ts)
|
|
6
|
-
* can use them without importing from the dispatch layer.
|
|
7
|
-
*
|
|
8
|
-
* @task T5715
|
|
9
|
-
* @epic T5701
|
|
10
|
-
*/
|
|
11
|
-
import { getLogger } from './logger.js';
|
|
12
|
-
const log = getLogger('audit');
|
|
13
|
-
/**
|
|
14
|
-
* Query audit entries from SQLite audit_log table.
|
|
15
|
-
* Used by session-grade.ts for behavioral analysis.
|
|
16
|
-
*
|
|
17
|
-
* Returns entries ordered chronologically (ASC) to preserve
|
|
18
|
-
* behavioral sequence for grading analysis.
|
|
19
|
-
*/
|
|
20
|
-
export async function queryAudit(options) {
|
|
21
|
-
try {
|
|
22
|
-
const { getDb } = await import('./store/sqlite.js');
|
|
23
|
-
const { auditLog } = await import('./store/tasks-schema.js');
|
|
24
|
-
const { and, eq, gte, or } = await import('drizzle-orm');
|
|
25
|
-
const db = await getDb(process.cwd());
|
|
26
|
-
const conditions = [];
|
|
27
|
-
if (options?.sessionId)
|
|
28
|
-
conditions.push(eq(auditLog.sessionId, options.sessionId));
|
|
29
|
-
if (options?.domain)
|
|
30
|
-
conditions.push(eq(auditLog.domain, options.domain));
|
|
31
|
-
if (options?.operation)
|
|
32
|
-
conditions.push(or(eq(auditLog.operation, options.operation), eq(auditLog.action, options.operation)));
|
|
33
|
-
if (options?.taskId)
|
|
34
|
-
conditions.push(eq(auditLog.taskId, options.taskId));
|
|
35
|
-
if (options?.since)
|
|
36
|
-
conditions.push(gte(auditLog.timestamp, options.since));
|
|
37
|
-
const limit = options?.limit ?? 1000;
|
|
38
|
-
const rows = await db
|
|
39
|
-
.select()
|
|
40
|
-
.from(auditLog)
|
|
41
|
-
.where(conditions.length > 0 ? and(...conditions) : undefined)
|
|
42
|
-
.orderBy(auditLog.timestamp)
|
|
43
|
-
.limit(limit);
|
|
44
|
-
return rows.map((row) => ({
|
|
45
|
-
timestamp: row.timestamp,
|
|
46
|
-
sessionId: row.sessionId,
|
|
47
|
-
domain: row.domain ?? 'unknown',
|
|
48
|
-
operation: row.operation ?? row.action,
|
|
49
|
-
params: row.detailsJson ? JSON.parse(row.detailsJson) : {},
|
|
50
|
-
result: {
|
|
51
|
-
success: row.success === 1,
|
|
52
|
-
exitCode: row.success === 1 ? 0 : 1,
|
|
53
|
-
duration: row.durationMs ?? 0,
|
|
54
|
-
},
|
|
55
|
-
metadata: {
|
|
56
|
-
taskId: row.taskId !== 'system' && row.taskId !== 'unknown' ? row.taskId : undefined,
|
|
57
|
-
source: row.source ?? 'mcp',
|
|
58
|
-
gateway: row.gateway,
|
|
59
|
-
},
|
|
60
|
-
error: row.errorMessage ?? undefined,
|
|
61
|
-
}));
|
|
62
|
-
}
|
|
63
|
-
catch (err) {
|
|
64
|
-
log.warn({ err }, 'Failed to query audit entries from SQLite');
|
|
65
|
-
return [];
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=audit.js.map
|
package/dist/audit.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../src/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;AA0B/B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAOhC;IACC,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC7D,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAEzD,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAEtC,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAI,OAAO,EAAE,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACnF,IAAI,OAAO,EAAE,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,OAAO,EAAE,SAAS;YACpB,UAAU,CAAC,IAAI,CACb,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAE,CACvF,CAAC;QACJ,IAAI,OAAO,EAAE,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,OAAO,EAAE,KAAK;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5E,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC;QAErC,MAAM,IAAI,GAAG,MAAM,EAAE;aAClB,MAAM,EAAE;aACR,IAAI,CAAC,QAAQ,CAAC;aACd,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;aAC3B,KAAK,CAAC,KAAK,CAAC,CAAC;QAEhB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;YAC/B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM;YACtC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;YAC1D,MAAM,EAAE;gBACN,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC;gBAC1B,QAAQ,EAAE,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,QAAQ,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;aAC9B;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACpF,MAAM,EAAG,GAAG,CAAC,MAAwB,IAAI,KAAK;gBAC9C,OAAO,EAAE,GAAG,CAAC,OAAyC;aACvD;YACD,KAAK,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;SACrC,CAAC,CAAC,CAAC;IACN,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,2CAA2C,CAAC,CAAC;QAC/D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/dist/bootstrap.js
DELETED
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared global bootstrap logic for CLEO.
|
|
3
|
-
*
|
|
4
|
-
* Contains the shared functions used by BOTH:
|
|
5
|
-
* - `bin/postinstall.js` (npm postinstall hook)
|
|
6
|
-
* - `cleo install-global` CLI command
|
|
7
|
-
*
|
|
8
|
-
* This is the single source of truth for global setup operations.
|
|
9
|
-
* This is the SSoT — postinstall and self-update both delegate here.
|
|
10
|
-
*
|
|
11
|
-
* @task T5267
|
|
12
|
-
*/
|
|
13
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
14
|
-
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
15
|
-
import { homedir } from 'node:os';
|
|
16
|
-
import { join } from 'node:path';
|
|
17
|
-
import { getAgentsHome, getCleoTemplatesDir, getCleoTemplatesTildePath } from './paths.js';
|
|
18
|
-
import { ensureGlobalHome, getPackageRoot } from './scaffold.js';
|
|
19
|
-
// ── Step 1: Create ~/.cleo/ and install templates ────────────────────
|
|
20
|
-
/**
|
|
21
|
-
* Bootstrap the global CLEO directory structure and install templates.
|
|
22
|
-
*
|
|
23
|
-
* Creates:
|
|
24
|
-
* - ~/.cleo/templates/CLEO-INJECTION.md (from bundled template or injection content)
|
|
25
|
-
* - ~/.agents/AGENTS.md with CAAMP injection block
|
|
26
|
-
*
|
|
27
|
-
* This is idempotent — safe to call multiple times.
|
|
28
|
-
*/
|
|
29
|
-
export async function bootstrapGlobalCleo(options) {
|
|
30
|
-
const ctx = {
|
|
31
|
-
created: [],
|
|
32
|
-
warnings: [],
|
|
33
|
-
isDryRun: options?.dryRun ?? false,
|
|
34
|
-
};
|
|
35
|
-
// Step 0: Ensure global home structure and clean stale artifacts
|
|
36
|
-
try {
|
|
37
|
-
await ensureGlobalHome();
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
// Best-effort — don't fail bootstrap if cleanup fails
|
|
41
|
-
}
|
|
42
|
-
// Step 1: Ensure global templates
|
|
43
|
-
await ensureGlobalTemplatesBootstrap(ctx, options?.packageRoot);
|
|
44
|
-
// Step 2: CAAMP injection into ~/.agents/AGENTS.md
|
|
45
|
-
await injectAgentsHub(ctx);
|
|
46
|
-
// Step 3: Install MCP server to detected providers
|
|
47
|
-
await installMcpToProviders(ctx);
|
|
48
|
-
// Step 4: Install core skills globally
|
|
49
|
-
await installSkillsGlobally(ctx);
|
|
50
|
-
// Step 5: Install agent definition (cleo-subagent symlink)
|
|
51
|
-
await installAgentDefinitionGlobally(ctx);
|
|
52
|
-
// Step 6: Install provider adapters
|
|
53
|
-
await installProviderAdapters(ctx, options?.packageRoot);
|
|
54
|
-
return ctx;
|
|
55
|
-
}
|
|
56
|
-
// ── Step 1: Global templates ─────────────────────────────────────────
|
|
57
|
-
async function ensureGlobalTemplatesBootstrap(ctx, packageRootOverride) {
|
|
58
|
-
const globalTemplatesDir = getCleoTemplatesDir();
|
|
59
|
-
if (!ctx.isDryRun) {
|
|
60
|
-
await mkdir(globalTemplatesDir, { recursive: true });
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
const pkgRoot = packageRootOverride ?? getPackageRoot();
|
|
64
|
-
const templatePath = join(pkgRoot, 'templates', 'CLEO-INJECTION.md');
|
|
65
|
-
if (existsSync(templatePath)) {
|
|
66
|
-
const content = readFileSync(templatePath, 'utf-8');
|
|
67
|
-
const destPath = join(globalTemplatesDir, 'CLEO-INJECTION.md');
|
|
68
|
-
if (!ctx.isDryRun) {
|
|
69
|
-
await writeFile(destPath, content);
|
|
70
|
-
}
|
|
71
|
-
ctx.created.push(`~/.cleo/templates/CLEO-INJECTION.md (${ctx.isDryRun ? 'would refresh' : 'refreshed'})`);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
// Fallback: try using the injection content generator
|
|
75
|
-
try {
|
|
76
|
-
const { getInjectionTemplateContent } = await import('./injection.js');
|
|
77
|
-
const content = getInjectionTemplateContent();
|
|
78
|
-
if (content) {
|
|
79
|
-
const destPath = join(globalTemplatesDir, 'CLEO-INJECTION.md');
|
|
80
|
-
if (!ctx.isDryRun) {
|
|
81
|
-
await writeFile(destPath, content);
|
|
82
|
-
}
|
|
83
|
-
ctx.created.push(`~/.cleo/templates/CLEO-INJECTION.md (${ctx.isDryRun ? 'would refresh' : 'refreshed'} from embedded)`);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
ctx.warnings.push('Could not refresh CLEO-INJECTION.md template');
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
ctx.warnings.push('Could not refresh CLEO-INJECTION.md template');
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// ── Step 2: CAAMP injection into ~/.agents/AGENTS.md ─────────────────
|
|
96
|
-
async function injectAgentsHub(ctx) {
|
|
97
|
-
const globalAgentsDir = getAgentsHome();
|
|
98
|
-
const globalAgentsMd = join(globalAgentsDir, 'AGENTS.md');
|
|
99
|
-
try {
|
|
100
|
-
const { inject, getInstalledProviders, injectAll, buildInjectionContent } = await import('@cleocode/caamp');
|
|
101
|
-
if (!ctx.isDryRun) {
|
|
102
|
-
await mkdir(globalAgentsDir, { recursive: true });
|
|
103
|
-
// Strip legacy CLEO blocks (versioned markers from pre-CAAMP era)
|
|
104
|
-
if (existsSync(globalAgentsMd)) {
|
|
105
|
-
const content = await readFile(globalAgentsMd, 'utf8');
|
|
106
|
-
const stripped = content.replace(/\n?<!-- CLEO:START[^>]*-->[\s\S]*?<!-- CLEO:END -->\n?/g, '');
|
|
107
|
-
if (stripped !== content) {
|
|
108
|
-
await writeFile(globalAgentsMd, stripped, 'utf8');
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// CAAMP 1.8.1: inject() is idempotent AND consolidates duplicates
|
|
112
|
-
const templateRef = `@${getCleoTemplatesTildePath()}/CLEO-INJECTION.md`;
|
|
113
|
-
const action = await inject(globalAgentsMd, templateRef);
|
|
114
|
-
ctx.created.push(`~/.agents/AGENTS.md (${action})`);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
ctx.created.push('~/.agents/AGENTS.md (would create/update CAAMP block)');
|
|
118
|
-
}
|
|
119
|
-
// Inject @~/.agents/AGENTS.md into detected global provider files
|
|
120
|
-
const providers = getInstalledProviders();
|
|
121
|
-
if (providers.length === 0) {
|
|
122
|
-
ctx.warnings.push('No AI provider installations detected');
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
const injectionContent = buildInjectionContent({
|
|
126
|
-
references: ['@~/.agents/AGENTS.md'],
|
|
127
|
-
});
|
|
128
|
-
if (!ctx.isDryRun) {
|
|
129
|
-
// Strip legacy CLEO blocks from global provider files first
|
|
130
|
-
// (handles bare and versioned markers, e.g. <!-- CLEO:START v0.53.4 -->)
|
|
131
|
-
for (const provider of providers) {
|
|
132
|
-
const instructFilePath = join(provider.pathGlobal, provider.instructFile);
|
|
133
|
-
if (existsSync(instructFilePath)) {
|
|
134
|
-
const fileContent = await readFile(instructFilePath, 'utf8');
|
|
135
|
-
const stripped = fileContent.replace(/\n?<!-- CLEO:START[^>]*-->[\s\S]*?<!-- CLEO:END -->\n?/g, '');
|
|
136
|
-
if (stripped !== fileContent) {
|
|
137
|
-
await writeFile(instructFilePath, stripped, 'utf8');
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
const results = await injectAll(providers, homedir(), 'global', injectionContent);
|
|
142
|
-
for (const [filePath, action] of results) {
|
|
143
|
-
const displayPath = filePath.replace(homedir(), '~');
|
|
144
|
-
ctx.created.push(`${displayPath} (${action})`);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
for (const p of providers) {
|
|
149
|
-
const displayPath = join(p.pathGlobal, p.instructFile).replace(homedir(), '~');
|
|
150
|
-
ctx.created.push(`${displayPath} (would update CAAMP block)`);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
catch (err) {
|
|
156
|
-
ctx.warnings.push(`CAAMP injection: ${err instanceof Error ? err.message : String(err)}`);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
// ── Step 3: MCP server installation ──────────────────────────────────
|
|
160
|
-
/**
|
|
161
|
-
* Install the CLEO MCP server config to all detected providers.
|
|
162
|
-
*/
|
|
163
|
-
export async function installMcpToProviders(ctx) {
|
|
164
|
-
try {
|
|
165
|
-
const { detectEnvMode, generateMcpServerEntry, getMcpServerName } = await import('./mcp/index.js');
|
|
166
|
-
const { getInstalledProviders, installMcpServerToAll } = await import('@cleocode/caamp');
|
|
167
|
-
const env = detectEnvMode();
|
|
168
|
-
const serverEntry = generateMcpServerEntry(env);
|
|
169
|
-
const serverName = getMcpServerName(env);
|
|
170
|
-
const providers = getInstalledProviders();
|
|
171
|
-
if (providers.length > 0) {
|
|
172
|
-
if (!ctx.isDryRun) {
|
|
173
|
-
const results = await installMcpServerToAll(providers, serverName, serverEntry, 'global', homedir());
|
|
174
|
-
const successes = results.filter((r) => r.success);
|
|
175
|
-
if (successes.length > 0) {
|
|
176
|
-
ctx.created.push(`MCP configs: ${successes.map((r) => r.provider.id).join(', ')}`);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
ctx.created.push('MCP configs (would update)');
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
catch {
|
|
185
|
-
ctx.warnings.push('MCP config update skipped (non-critical)');
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
// ── Step 4: Core skills installation ─────────────────────────────────
|
|
189
|
-
/**
|
|
190
|
-
* Install CLEO core skills globally via CAAMP.
|
|
191
|
-
*/
|
|
192
|
-
export async function installSkillsGlobally(ctx) {
|
|
193
|
-
try {
|
|
194
|
-
if (!ctx.isDryRun) {
|
|
195
|
-
const { initCoreSkills } = await import('./init.js');
|
|
196
|
-
await initCoreSkills(ctx.created, ctx.warnings);
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
ctx.created.push('core skills (would install/update)');
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
catch (err) {
|
|
203
|
-
ctx.warnings.push(`Core skills installation failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
// ── Step 5: Agent definition installation ────────────────────────────
|
|
207
|
-
/**
|
|
208
|
-
* Install the cleo-subagent agent definition to ~/.agents/agents/.
|
|
209
|
-
* Delegates to initAgentDefinition() in init.ts which handles require.resolve
|
|
210
|
-
* fallback and symlink/copy logic.
|
|
211
|
-
*/
|
|
212
|
-
async function installAgentDefinitionGlobally(ctx) {
|
|
213
|
-
try {
|
|
214
|
-
if (!ctx.isDryRun) {
|
|
215
|
-
const { initAgentDefinition } = await import('./init.js');
|
|
216
|
-
await initAgentDefinition(ctx.created, ctx.warnings);
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
ctx.created.push('agent: cleo-subagent (would symlink)');
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
catch (err) {
|
|
223
|
-
ctx.warnings.push(`Agent definition install: ${err instanceof Error ? err.message : String(err)}`);
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
// ── Step 6: Provider adapter installation ────────────────────────────
|
|
227
|
-
async function installProviderAdapters(ctx, packageRootOverride) {
|
|
228
|
-
try {
|
|
229
|
-
const { AdapterManager } = await import('./adapters/index.js');
|
|
230
|
-
const pkgRoot = packageRootOverride ?? getPackageRoot();
|
|
231
|
-
const manager = AdapterManager.getInstance(pkgRoot);
|
|
232
|
-
manager.discover();
|
|
233
|
-
const detected = manager.detectActive();
|
|
234
|
-
for (const adapterId of detected) {
|
|
235
|
-
try {
|
|
236
|
-
const adapter = await manager.activate(adapterId);
|
|
237
|
-
if (adapter.install) {
|
|
238
|
-
if (!ctx.isDryRun) {
|
|
239
|
-
const installResult = await adapter.install.install({
|
|
240
|
-
projectDir: process.cwd(),
|
|
241
|
-
});
|
|
242
|
-
if (installResult.success) {
|
|
243
|
-
ctx.created.push(`${adapterId} adapter (installed)`);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
ctx.created.push(`${adapterId} adapter (would install)`);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
catch (activateErr) {
|
|
252
|
-
ctx.warnings.push(`Adapter ${adapterId} skipped: ${activateErr instanceof Error ? activateErr.message : String(activateErr)}`);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
catch (err) {
|
|
257
|
-
ctx.warnings.push(`Adapter install skipped: ${err instanceof Error ? err.message : String(err)}`);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
//# sourceMappingURL=bootstrap.js.map
|
package/dist/bootstrap.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|