@cleocode/core 2026.4.13 → 2026.4.15
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/hooks/payload-schemas.d.ts +1 -1
- package/dist/hooks/payload-schemas.d.ts.map +1 -1
- package/dist/index.js +71866 -175
- package/dist/index.js.map +7 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/internal.d.ts +16 -5
- package/dist/internal.d.ts.map +1 -1
- package/dist/memory/brain-embedding.d.ts +1 -1
- package/dist/memory/embedding-local.d.ts +8 -3
- package/dist/memory/embedding-local.d.ts.map +1 -1
- package/dist/memory/embedding-worker.d.ts +1 -1
- package/dist/memory/learnings.d.ts +2 -2
- package/dist/memory/patterns.d.ts +6 -6
- package/dist/store/agent-registry-accessor.d.ts +54 -1
- package/dist/store/agent-registry-accessor.d.ts.map +1 -1
- package/dist/store/backup-crypto.d.ts +89 -0
- package/dist/store/backup-crypto.d.ts.map +1 -0
- package/dist/store/backup-pack.d.ts +91 -0
- package/dist/store/backup-pack.d.ts.map +1 -0
- package/dist/store/backup-unpack.d.ts +140 -0
- package/dist/store/backup-unpack.d.ts.map +1 -0
- package/dist/store/migrate-signaldock-to-conduit.d.ts.map +1 -1
- package/dist/store/nexus-validation-schemas.d.ts +1 -1
- package/dist/store/nexus-validation-schemas.d.ts.map +1 -1
- package/dist/store/regenerators.d.ts +126 -0
- package/dist/store/regenerators.d.ts.map +1 -0
- package/dist/store/restore-conflict-report.d.ts +118 -0
- package/dist/store/restore-conflict-report.d.ts.map +1 -0
- package/dist/store/restore-json-merge.d.ts +187 -0
- package/dist/store/restore-json-merge.d.ts.map +1 -0
- package/dist/store/sqlite-backup.d.ts +60 -5
- package/dist/store/sqlite-backup.d.ts.map +1 -1
- package/dist/store/t310-readiness.d.ts +83 -0
- package/dist/store/t310-readiness.d.ts.map +1 -0
- package/dist/store/validation-schemas.d.ts +1 -1
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/__tests__/cli-parity.test.ts +19 -14
- package/src/__tests__/human-output.test.ts +13 -11
- package/src/hooks/payload-schemas.ts +1 -1
- package/src/init.ts +18 -8
- package/src/internal.ts +4 -1
- package/src/memory/__tests__/brain-automation.test.ts +2 -2
- package/src/memory/brain-embedding.ts +1 -1
- package/src/memory/embedding-local.ts +10 -5
- package/src/memory/embedding-worker.ts +1 -1
- package/src/skills/__tests__/discovery.test.ts +22 -7
- package/src/store/__tests__/performance-safety.test.ts +11 -5
- package/src/store/migrate-signaldock-to-conduit.ts +14 -7
- package/src/store/nexus-validation-schemas.ts +3 -3
- package/src/store/validation-schemas.ts +3 -3
- package/src/validation/protocols/_shared.ts +1 -1
- 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-registry.js +0 -288
- package/dist/agents/agent-registry.js.map +0 -1
- package/dist/agents/agent-schema.js +0 -82
- 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/execution-learning.js +0 -474
- package/dist/agents/execution-learning.js.map +0 -1
- package/dist/agents/health-monitor.js +0 -217
- package/dist/agents/health-monitor.js.map +0 -1
- package/dist/agents/index.js +0 -29
- 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 -215
- 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/backfill/index.js +0 -229
- package/dist/backfill/index.js.map +0 -1
- package/dist/bootstrap.js +0 -344
- package/dist/bootstrap.js.map +0 -1
- package/dist/caamp/adapter.js +0 -259
- 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 -21
- 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 -322
- package/dist/cleo.js.map +0 -1
- package/dist/code/index.js +0 -10
- package/dist/code/index.js.map +0 -1
- package/dist/code/outline.js +0 -165
- package/dist/code/outline.js.map +0 -1
- package/dist/code/parser.js +0 -295
- package/dist/code/parser.js.map +0 -1
- package/dist/code/search.js +0 -135
- package/dist/code/search.js.map +0 -1
- package/dist/code/unfold.js +0 -155
- package/dist/code/unfold.js.map +0 -1
- package/dist/codebase-map/analyzers/architecture.js +0 -129
- 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 -79
- 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/conduit/conduit-client.js +0 -107
- package/dist/conduit/conduit-client.js.map +0 -1
- package/dist/conduit/factory.js +0 -52
- package/dist/conduit/factory.js.map +0 -1
- package/dist/conduit/http-transport.js +0 -155
- package/dist/conduit/http-transport.js.map +0 -1
- package/dist/conduit/index.js +0 -15
- package/dist/conduit/index.js.map +0 -1
- package/dist/conduit/local-transport.js +0 -255
- package/dist/conduit/local-transport.js.map +0 -1
- package/dist/conduit/sse-transport.js +0 -299
- package/dist/conduit/sse-transport.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 -400
- 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/crypto/credentials.js +0 -191
- package/dist/crypto/credentials.js.map +0 -1
- package/dist/discovery.js +0 -182
- package/dist/discovery.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 -173
- package/dist/errors.js.map +0 -1
- package/dist/hooks/handlers/agent-hooks.js +0 -106
- package/dist/hooks/handlers/agent-hooks.js.map +0 -1
- package/dist/hooks/handlers/context-hooks.js +0 -111
- package/dist/hooks/handlers/context-hooks.js.map +0 -1
- package/dist/hooks/handlers/error-hooks.js +0 -52
- package/dist/hooks/handlers/error-hooks.js.map +0 -1
- package/dist/hooks/handlers/file-hooks.js +0 -104
- package/dist/hooks/handlers/file-hooks.js.map +0 -1
- package/dist/hooks/handlers/handler-helpers.js +0 -61
- package/dist/hooks/handlers/handler-helpers.js.map +0 -1
- package/dist/hooks/handlers/index.js +0 -28
- package/dist/hooks/handlers/index.js.map +0 -1
- package/dist/hooks/handlers/memory-bridge-refresh.js +0 -42
- package/dist/hooks/handlers/memory-bridge-refresh.js.map +0 -1
- package/dist/hooks/handlers/notification-hooks.js +0 -62
- package/dist/hooks/handlers/notification-hooks.js.map +0 -1
- package/dist/hooks/handlers/session-hooks.js +0 -142
- package/dist/hooks/handlers/session-hooks.js.map +0 -1
- package/dist/hooks/handlers/task-hooks.js +0 -65
- package/dist/hooks/handlers/task-hooks.js.map +0 -1
- package/dist/hooks/handlers/work-capture-hooks.js +0 -165
- package/dist/hooks/handlers/work-capture-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 -220
- package/dist/hooks/payload-schemas.js.map +0 -1
- package/dist/hooks/provider-hooks.js +0 -66
- package/dist/hooks/provider-hooks.js.map +0 -1
- package/dist/hooks/registry.js +0 -229
- package/dist/hooks/registry.js.map +0 -1
- package/dist/hooks/types.js +0 -66
- 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 -851
- 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/adaptive-validation.js +0 -497
- package/dist/intelligence/adaptive-validation.js.map +0 -1
- package/dist/intelligence/impact.js +0 -675
- package/dist/intelligence/impact.js.map +0 -1
- package/dist/intelligence/index.js +0 -22
- 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 -306
- 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/lib/index.js +0 -11
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/retry.js +0 -152
- package/dist/lib/retry.js.map +0 -1
- package/dist/lib/tree-sitter-languages.js +0 -71
- package/dist/lib/tree-sitter-languages.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 -176
- 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 -756
- 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/stage-guidance.js +0 -234
- package/dist/lifecycle/stage-guidance.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/memory/auto-extract.js +0 -177
- package/dist/memory/auto-extract.js.map +0 -1
- package/dist/memory/brain-embedding.js +0 -66
- 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 -161
- package/dist/memory/brain-links.js.map +0 -1
- package/dist/memory/brain-maintenance.js +0 -114
- package/dist/memory/brain-maintenance.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 -542
- 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 -162
- package/dist/memory/decisions.js.map +0 -1
- package/dist/memory/embedding-local.js +0 -97
- package/dist/memory/embedding-local.js.map +0 -1
- package/dist/memory/embedding-queue.js +0 -271
- package/dist/memory/embedding-queue.js.map +0 -1
- package/dist/memory/embedding-worker.js +0 -58
- package/dist/memory/embedding-worker.js.map +0 -1
- package/dist/memory/engine-compat.js +0 -1397
- package/dist/memory/engine-compat.js.map +0 -1
- package/dist/memory/index.js +0 -1140
- 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 -370
- 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 -331
- 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/mvi-helpers.js +0 -74
- package/dist/mvi-helpers.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 -40
- 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 -288
- 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/nexus/workspace.js +0 -355
- package/dist/nexus/workspace.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/hierarchy.js +0 -183
- package/dist/orchestration/hierarchy.js.map +0 -1
- package/dist/orchestration/index.js +0 -287
- 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 -815
- 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 -164
- package/dist/output.js.map +0 -1
- package/dist/pagination.js +0 -64
- package/dist/pagination.js.map +0 -1
- package/dist/paths.js +0 -842
- package/dist/paths.js.map +0 -1
- package/dist/phases/deps.js +0 -372
- 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 -130
- 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 -1556
- 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 -1759
- 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 -65
- 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 -327
- 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 -144
- 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/snapshot.js +0 -213
- package/dist/sessions/snapshot.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/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 -87
- 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 -217
- 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 -343
- package/dist/stats/index.js.map +0 -1
- package/dist/stats/workflow-telemetry.js +0 -400
- package/dist/stats/workflow-telemetry.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/agent-registry-accessor.js +0 -783
- package/dist/store/agent-registry-accessor.js.map +0 -1
- package/dist/store/api-key-kdf.js +0 -84
- package/dist/store/api-key-kdf.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 -215
- package/dist/store/brain-schema.js.map +0 -1
- package/dist/store/brain-sqlite.js +0 -222
- 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/cleanup-legacy.js +0 -171
- package/dist/store/cleanup-legacy.js.map +0 -1
- package/dist/store/conduit-sqlite.js +0 -570
- package/dist/store/conduit-sqlite.js.map +0 -1
- package/dist/store/converters.js +0 -124
- package/dist/store/converters.js.map +0 -1
- package/dist/store/cross-db-cleanup.js +0 -319
- package/dist/store/cross-db-cleanup.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 -224
- 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/global-salt.js +0 -147
- package/dist/store/global-salt.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 -29
- 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/migrate-signaldock-to-conduit.js +0 -555
- package/dist/store/migrate-signaldock-to-conduit.js.map +0 -1
- package/dist/store/migration-manager.js +0 -151
- package/dist/store/migration-manager.js.map +0 -1
- package/dist/store/migration-sqlite.js +0 -676
- 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 -242
- 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 -257
- 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/signaldock-sqlite.js +0 -550
- package/dist/store/signaldock-sqlite.js.map +0 -1
- package/dist/store/sqlite-backup.js +0 -359
- package/dist/store/sqlite-backup.js.map +0 -1
- package/dist/store/sqlite-data-accessor.js +0 -787
- package/dist/store/sqlite-data-accessor.js.map +0 -1
- package/dist/store/sqlite.js +0 -481
- 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 -358
- package/dist/store/task-store.js.map +0 -1
- package/dist/store/tasks-schema.js +0 -610
- 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 -280
- 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 -1100
- 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 -159
- package/dist/task-work/index.js.map +0 -1
- package/dist/tasks/add.js +0 -736
- 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 -214
- 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 -86
- package/dist/tasks/enforcement.js.map +0 -1
- package/dist/tasks/epic-enforcement.js +0 -294
- package/dist/tasks/epic-enforcement.js.map +0 -1
- package/dist/tasks/find.js +0 -157
- 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 -55
- package/dist/tasks/labels.js.map +0 -1
- package/dist/tasks/list.js +0 -75
- 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/pipeline-stage.js +0 -248
- package/dist/tasks/pipeline-stage.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 -101
- package/dist/tasks/relates.js.map +0 -1
- package/dist/tasks/show.js +0 -83
- 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 -1741
- package/dist/tasks/task-ops.js.map +0 -1
- package/dist/tasks/update.js +0 -303
- 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/upgrade.js +0 -1148
- 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 -914
- 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 -141
- 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/_shared.js +0 -82
- package/dist/validation/protocols/_shared.js.map +0 -1
- package/dist/validation/protocols/architecture-decision.js +0 -31
- package/dist/validation/protocols/architecture-decision.js.map +0 -1
- package/dist/validation/protocols/artifact-publish.js +0 -28
- package/dist/validation/protocols/artifact-publish.js.map +0 -1
- package/dist/validation/protocols/consensus.js +0 -41
- package/dist/validation/protocols/consensus.js.map +0 -1
- package/dist/validation/protocols/contribution.js +0 -27
- package/dist/validation/protocols/contribution.js.map +0 -1
- package/dist/validation/protocols/decomposition.js +0 -28
- package/dist/validation/protocols/decomposition.js.map +0 -1
- package/dist/validation/protocols/implementation.js +0 -24
- package/dist/validation/protocols/implementation.js.map +0 -1
- package/dist/validation/protocols/provenance.js +0 -29
- package/dist/validation/protocols/provenance.js.map +0 -1
- package/dist/validation/protocols/release.js +0 -29
- package/dist/validation/protocols/release.js.map +0 -1
- package/dist/validation/protocols/research.js +0 -24
- package/dist/validation/protocols/research.js.map +0 -1
- package/dist/validation/protocols/specification.js +0 -27
- package/dist/validation/protocols/specification.js.map +0 -1
- package/dist/validation/protocols/testing.js +0 -30
- package/dist/validation/protocols/testing.js.map +0 -1
- package/dist/validation/protocols/validation.js +0 -30
- package/dist/validation/protocols/validation.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/release/channel.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Release channel resolution and validation.
|
|
3
|
-
*
|
|
4
|
-
* Maps Git branches to npm dist-tags and validates that version strings
|
|
5
|
-
* conform to the expectations of their target channel.
|
|
6
|
-
*
|
|
7
|
-
* @task T5586
|
|
8
|
-
*/
|
|
9
|
-
/** Return the default branch-to-channel mapping. */
|
|
10
|
-
export function getDefaultChannelConfig() {
|
|
11
|
-
return {
|
|
12
|
-
main: 'main',
|
|
13
|
-
develop: 'develop',
|
|
14
|
-
feature: 'feature/',
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Resolve the release channel for a given Git branch name.
|
|
19
|
-
*
|
|
20
|
-
* Resolution order:
|
|
21
|
-
* 1. Exact match in `config.custom`
|
|
22
|
-
* 2. Prefix match in `config.custom`
|
|
23
|
-
* 3. Exact match against `config.main` → 'latest'
|
|
24
|
-
* 4. Exact match against `config.develop` → 'beta'
|
|
25
|
-
* 5. Starts with 'feature/', 'hotfix/', 'release/', or `config.feature` → 'alpha'
|
|
26
|
-
* 6. Fallback → 'alpha'
|
|
27
|
-
*/
|
|
28
|
-
export function resolveChannelFromBranch(branch, config) {
|
|
29
|
-
const cfg = config ?? getDefaultChannelConfig();
|
|
30
|
-
// 1. Exact match in custom map
|
|
31
|
-
if (cfg.custom) {
|
|
32
|
-
if (Object.hasOwn(cfg.custom, branch)) {
|
|
33
|
-
return cfg.custom[branch];
|
|
34
|
-
}
|
|
35
|
-
// 2. Prefix match in custom map (longest matching prefix wins)
|
|
36
|
-
let bestPrefix = '';
|
|
37
|
-
let bestChannel;
|
|
38
|
-
for (const [key, channel] of Object.entries(cfg.custom)) {
|
|
39
|
-
if (branch.startsWith(key) && key.length > bestPrefix.length) {
|
|
40
|
-
bestPrefix = key;
|
|
41
|
-
bestChannel = channel;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
if (bestChannel !== undefined) {
|
|
45
|
-
return bestChannel;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// 3. Exact match against main branch → stable
|
|
49
|
-
if (branch === cfg.main) {
|
|
50
|
-
return 'latest';
|
|
51
|
-
}
|
|
52
|
-
// 4. Exact match against develop branch → beta
|
|
53
|
-
if (branch === cfg.develop) {
|
|
54
|
-
return 'beta';
|
|
55
|
-
}
|
|
56
|
-
// 5. Well-known prefixes and configured feature prefix → alpha
|
|
57
|
-
const alphaPrefixes = ['feature/', 'hotfix/', 'release/'];
|
|
58
|
-
if (cfg.feature && !alphaPrefixes.includes(cfg.feature)) {
|
|
59
|
-
alphaPrefixes.push(cfg.feature);
|
|
60
|
-
}
|
|
61
|
-
for (const prefix of alphaPrefixes) {
|
|
62
|
-
if (branch.startsWith(prefix)) {
|
|
63
|
-
return 'alpha';
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// 6. Default fallback
|
|
67
|
-
return 'alpha';
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Map a release channel to its npm dist-tag string.
|
|
71
|
-
*
|
|
72
|
-
* Kept as an explicit function (rather than a direct cast) so that callers
|
|
73
|
-
* remain decoupled from the string values and the mapping can be extended
|
|
74
|
-
* without changing call sites.
|
|
75
|
-
*/
|
|
76
|
-
export function channelToDistTag(channel) {
|
|
77
|
-
const tags = {
|
|
78
|
-
latest: 'latest',
|
|
79
|
-
beta: 'beta',
|
|
80
|
-
alpha: 'alpha',
|
|
81
|
-
};
|
|
82
|
-
return tags[channel];
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Validate that a version string satisfies the pre-release conventions for
|
|
86
|
-
* the given channel.
|
|
87
|
-
*
|
|
88
|
-
* Rules:
|
|
89
|
-
* - 'latest': version must NOT contain '-' (no pre-release suffix)
|
|
90
|
-
* - 'beta': version must contain '-beta' or '-rc'
|
|
91
|
-
* - 'alpha': version must contain '-alpha', '-dev', '-rc', or '-beta'
|
|
92
|
-
*/
|
|
93
|
-
export function validateVersionChannel(version, channel) {
|
|
94
|
-
switch (channel) {
|
|
95
|
-
case 'latest': {
|
|
96
|
-
if (version.includes('-')) {
|
|
97
|
-
return {
|
|
98
|
-
valid: false,
|
|
99
|
-
expected: 'no pre-release suffix (e.g. 2026.3.16)',
|
|
100
|
-
actual: version,
|
|
101
|
-
message: `Version "${version}" has a pre-release suffix but channel is 'latest'. Stable releases must not include '-'.`,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
return { valid: true, message: 'ok' };
|
|
105
|
-
}
|
|
106
|
-
case 'beta': {
|
|
107
|
-
const hasBetaOrRc = version.includes('-beta') || version.includes('-rc');
|
|
108
|
-
if (!hasBetaOrRc) {
|
|
109
|
-
return {
|
|
110
|
-
valid: false,
|
|
111
|
-
expected: 'pre-release suffix containing -beta or -rc (e.g. 2026.3.16-beta.1)',
|
|
112
|
-
actual: version,
|
|
113
|
-
message: `Version "${version}" does not contain '-beta' or '-rc' required for the 'beta' channel.`,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
return { valid: true, message: 'ok' };
|
|
117
|
-
}
|
|
118
|
-
case 'alpha': {
|
|
119
|
-
const hasAlphaSuffix = version.includes('-alpha') ||
|
|
120
|
-
version.includes('-dev') ||
|
|
121
|
-
version.includes('-rc') ||
|
|
122
|
-
version.includes('-beta');
|
|
123
|
-
if (!hasAlphaSuffix) {
|
|
124
|
-
return {
|
|
125
|
-
valid: false,
|
|
126
|
-
expected: 'pre-release suffix containing -alpha, -dev, -rc, or -beta (e.g. 2026.3.16-alpha.1)',
|
|
127
|
-
actual: version,
|
|
128
|
-
message: `Version "${version}" does not contain a recognized pre-release suffix for the 'alpha' channel.`,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
return { valid: true, message: 'ok' };
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/** Return a human-readable description of the given release channel. */
|
|
136
|
-
export function describeChannel(channel) {
|
|
137
|
-
const descriptions = {
|
|
138
|
-
latest: 'stable release published to npm @latest',
|
|
139
|
-
beta: 'pre-release published to npm @beta (develop branch)',
|
|
140
|
-
alpha: 'early pre-release published to npm @alpha (feature/hotfix branches)',
|
|
141
|
-
};
|
|
142
|
-
return descriptions[channel];
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=channel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/release/channel.ts"],"names":[],"mappings":"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"}
|
package/dist/release/ci.js
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CI/CD template generation for release workflows.
|
|
3
|
-
*
|
|
4
|
-
* Generates platform-specific CI/CD configurations (GitHub Actions,
|
|
5
|
-
* GitLab CI, CircleCI) from templates and project configuration.
|
|
6
|
-
*
|
|
7
|
-
* @task T4454
|
|
8
|
-
* @epic T4454
|
|
9
|
-
*/
|
|
10
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
11
|
-
import { dirname, join } from 'node:path';
|
|
12
|
-
import { loadReleaseConfig } from './release-config.js';
|
|
13
|
-
/** All supported platforms. */
|
|
14
|
-
export const SUPPORTED_PLATFORMS = ['github-actions', 'gitlab-ci', 'circleci'];
|
|
15
|
-
/** Platform-specific output paths. */
|
|
16
|
-
const PLATFORM_PATHS = {
|
|
17
|
-
'github-actions': '.github/workflows/release.yml',
|
|
18
|
-
'gitlab-ci': '.gitlab-ci.yml',
|
|
19
|
-
circleci: '.circleci/config.yml',
|
|
20
|
-
};
|
|
21
|
-
/** Get the output path for a CI platform. */
|
|
22
|
-
export function getPlatformPath(platform) {
|
|
23
|
-
return PLATFORM_PATHS[platform];
|
|
24
|
-
}
|
|
25
|
-
/** Detect the CI platform from the project. */
|
|
26
|
-
export function detectCIPlatform(projectDir) {
|
|
27
|
-
const dir = projectDir ?? process.cwd();
|
|
28
|
-
if (existsSync(join(dir, '.github')))
|
|
29
|
-
return 'github-actions';
|
|
30
|
-
if (existsSync(join(dir, '.gitlab-ci.yml')))
|
|
31
|
-
return 'gitlab-ci';
|
|
32
|
-
if (existsSync(join(dir, '.circleci')))
|
|
33
|
-
return 'circleci';
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
/** Generate GitHub Actions workflow YAML. */
|
|
37
|
-
function generateGitHubActions(config) {
|
|
38
|
-
const gateSteps = config.gates
|
|
39
|
-
.map((g) => ` - name: ${g.name}\n run: ${g.command}`)
|
|
40
|
-
.join('\n');
|
|
41
|
-
return `name: Release
|
|
42
|
-
on:
|
|
43
|
-
push:
|
|
44
|
-
tags:
|
|
45
|
-
- 'v*'
|
|
46
|
-
|
|
47
|
-
jobs:
|
|
48
|
-
release:
|
|
49
|
-
runs-on: ubuntu-latest
|
|
50
|
-
steps:
|
|
51
|
-
- uses: actions/checkout@v4
|
|
52
|
-
- name: Setup Node.js
|
|
53
|
-
uses: actions/setup-node@v4
|
|
54
|
-
with:
|
|
55
|
-
node-version: '20'
|
|
56
|
-
- name: Install dependencies
|
|
57
|
-
run: npm ci
|
|
58
|
-
${gateSteps}
|
|
59
|
-
- name: Create Release
|
|
60
|
-
uses: softprops/action-gh-release@v1
|
|
61
|
-
with:
|
|
62
|
-
generate_release_notes: true
|
|
63
|
-
`;
|
|
64
|
-
}
|
|
65
|
-
/** Generate GitLab CI YAML. */
|
|
66
|
-
function generateGitLabCI(config) {
|
|
67
|
-
const stages = config.gates.map((g) => g.name.toLowerCase().replace(/\s+/g, '-'));
|
|
68
|
-
return `stages:
|
|
69
|
-
- test
|
|
70
|
-
- release
|
|
71
|
-
${stages.map((s) => ` - ${s}`).join('\n')}
|
|
72
|
-
|
|
73
|
-
${config.gates
|
|
74
|
-
.map((g) => `${g.name.toLowerCase().replace(/\s+/g, '-')}:
|
|
75
|
-
stage: ${g.name.toLowerCase().replace(/\s+/g, '-')}
|
|
76
|
-
script:
|
|
77
|
-
- ${g.command}`)
|
|
78
|
-
.join('\n\n')}
|
|
79
|
-
|
|
80
|
-
release:
|
|
81
|
-
stage: release
|
|
82
|
-
only:
|
|
83
|
-
- tags
|
|
84
|
-
script:
|
|
85
|
-
- echo "Creating release"
|
|
86
|
-
`;
|
|
87
|
-
}
|
|
88
|
-
/** Generate CircleCI config YAML. */
|
|
89
|
-
function generateCircleCI(config) {
|
|
90
|
-
return `version: 2.1
|
|
91
|
-
|
|
92
|
-
jobs:
|
|
93
|
-
test:
|
|
94
|
-
docker:
|
|
95
|
-
- image: cimg/node:20.0
|
|
96
|
-
steps:
|
|
97
|
-
- checkout
|
|
98
|
-
- run: npm ci
|
|
99
|
-
${config.gates.map((g) => ` - run:\n name: ${g.name}\n command: ${g.command}`).join('\n')}
|
|
100
|
-
|
|
101
|
-
release:
|
|
102
|
-
docker:
|
|
103
|
-
- image: cimg/node:20.0
|
|
104
|
-
steps:
|
|
105
|
-
- checkout
|
|
106
|
-
- run: echo "Creating release"
|
|
107
|
-
|
|
108
|
-
workflows:
|
|
109
|
-
release:
|
|
110
|
-
jobs:
|
|
111
|
-
- test:
|
|
112
|
-
filters:
|
|
113
|
-
tags:
|
|
114
|
-
only: /^v.*/
|
|
115
|
-
- release:
|
|
116
|
-
requires:
|
|
117
|
-
- test
|
|
118
|
-
filters:
|
|
119
|
-
tags:
|
|
120
|
-
only: /^v.*/
|
|
121
|
-
`;
|
|
122
|
-
}
|
|
123
|
-
/** Generate CI config for a platform. */
|
|
124
|
-
export function generateCIConfig(platform, cwd) {
|
|
125
|
-
const releaseConfig = loadReleaseConfig(cwd);
|
|
126
|
-
const gates = releaseConfig.gates.map((g) => ({ name: g.name, command: g.command }));
|
|
127
|
-
switch (platform) {
|
|
128
|
-
case 'github-actions':
|
|
129
|
-
return generateGitHubActions({ gates });
|
|
130
|
-
case 'gitlab-ci':
|
|
131
|
-
return generateGitLabCI({ gates });
|
|
132
|
-
case 'circleci':
|
|
133
|
-
return generateCircleCI({ gates });
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/** Write CI config to the appropriate path. */
|
|
137
|
-
export function writeCIConfig(platform, options = {}) {
|
|
138
|
-
const projectDir = options.projectDir ?? process.cwd();
|
|
139
|
-
const outputPath = join(projectDir, getPlatformPath(platform));
|
|
140
|
-
const content = generateCIConfig(platform, projectDir);
|
|
141
|
-
if (options.dryRun) {
|
|
142
|
-
return { action: 'would_write', path: outputPath, content };
|
|
143
|
-
}
|
|
144
|
-
mkdirSync(dirname(outputPath), { recursive: true });
|
|
145
|
-
writeFileSync(outputPath, content, 'utf-8');
|
|
146
|
-
return { action: 'wrote', path: outputPath, content };
|
|
147
|
-
}
|
|
148
|
-
/** Validate an existing CI config. */
|
|
149
|
-
export function validateCIConfig(platform, projectDir) {
|
|
150
|
-
const dir = projectDir ?? process.cwd();
|
|
151
|
-
const configPath = join(dir, getPlatformPath(platform));
|
|
152
|
-
if (!existsSync(configPath)) {
|
|
153
|
-
return { valid: false, exists: false, errors: ['Config file not found'] };
|
|
154
|
-
}
|
|
155
|
-
const errors = [];
|
|
156
|
-
try {
|
|
157
|
-
const content = readFileSync(configPath, 'utf-8');
|
|
158
|
-
if (!content.trim())
|
|
159
|
-
errors.push('Config file is empty');
|
|
160
|
-
}
|
|
161
|
-
catch (err) {
|
|
162
|
-
errors.push(`Cannot read config: ${String(err)}`);
|
|
163
|
-
}
|
|
164
|
-
return { valid: errors.length === 0, exists: true, errors };
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=ci.js.map
|
package/dist/release/ci.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/release/ci.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKxD,+BAA+B;AAC/B,MAAM,CAAC,MAAM,mBAAmB,GAAiB,CAAC,gBAAgB,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAE7F,sCAAsC;AACtC,MAAM,cAAc,GAA+B;IACjD,gBAAgB,EAAE,+BAA+B;IACjD,WAAW,EAAE,gBAAgB;IAC7B,QAAQ,EAAE,sBAAsB;CACjC,CAAC;AAEF,6CAA6C;AAC7C,MAAM,UAAU,eAAe,CAAC,QAAoB;IAClD,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,gBAAgB,CAAC,UAAmB;IAClD,MAAM,GAAG,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAExC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC9D,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAAE,OAAO,WAAW,CAAC;IAChE,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6CAA6C;AAC7C,SAAS,qBAAqB,CAAC,MAG9B;IACC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;;;;;;;;;;;;;;;;;EAiBP,SAAS;;;;;CAKV,CAAC;AACF,CAAC;AAED,+BAA+B;AAC/B,SAAS,gBAAgB,CAAC,MAA2D;IACnF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAElF,OAAO;;;EAGP,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;EAExC,MAAM,CAAC,KAAK;SACX,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;WAC5C,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;;QAE5C,CAAC,CAAC,OAAO,EAAE,CAChB;SACA,IAAI,CAAC,MAAM,CAAC;;;;;;;;CAQd,CAAC;AACF,CAAC;AAED,qCAAqC;AACrC,SAAS,gBAAgB,CAAC,MAA2D;IACnF,OAAO;;;;;;;;;EASP,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAAiC,CAAC,CAAC,IAAI,wBAAwB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;CAsB/G,CAAC;AACF,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,gBAAgB,CAAC,QAAoB,EAAE,GAAY;IACjE,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAErF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,gBAAgB;YACnB,OAAO,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1C,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,KAAK,UAAU;YACb,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,aAAa,CAC3B,QAAoB,EACpB,UAAqD,EAAE;IAEvD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IAC9D,CAAC;IAED,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,gBAAgB,CAC9B,QAAoB,EACpB,UAAmB;IAEnB,MAAM,GAAG,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAExD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import { execFileSync } from 'node:child_process';
|
|
2
|
-
// --- Functions (all exported) ---
|
|
3
|
-
/**
|
|
4
|
-
* Check if the `gh` CLI is available by attempting to run `gh --version`.
|
|
5
|
-
* Does NOT use `which` to remain cross-platform.
|
|
6
|
-
*/
|
|
7
|
-
export function isGhCliAvailable() {
|
|
8
|
-
try {
|
|
9
|
-
execFileSync('gh', ['--version'], { stdio: 'pipe' });
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Parse a GitHub remote URL (HTTPS or SSH) into owner and repo components.
|
|
18
|
-
* Returns null if the URL cannot be parsed.
|
|
19
|
-
*
|
|
20
|
-
* Supported formats:
|
|
21
|
-
* https://github.com/owner/repo.git
|
|
22
|
-
* https://github.com/owner/repo
|
|
23
|
-
* git@github.com:owner/repo.git
|
|
24
|
-
* git@github.com:owner/repo
|
|
25
|
-
*/
|
|
26
|
-
export function extractRepoOwnerAndName(remote) {
|
|
27
|
-
const trimmed = remote.trim();
|
|
28
|
-
// HTTPS pattern: https://github.com/owner/repo[.git]
|
|
29
|
-
const httpsMatch = trimmed.match(/^https?:\/\/github\.com\/([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
30
|
-
if (httpsMatch) {
|
|
31
|
-
return { owner: httpsMatch[1], repo: httpsMatch[2] };
|
|
32
|
-
}
|
|
33
|
-
// SSH pattern: git@github.com:owner/repo[.git]
|
|
34
|
-
const sshMatch = trimmed.match(/^git@github\.com:([^/]+)\/([^/]+?)(?:\.git)?$/);
|
|
35
|
-
if (sshMatch) {
|
|
36
|
-
return { owner: sshMatch[1], repo: sshMatch[2] };
|
|
37
|
-
}
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Detect whether a branch has protection rules enabled.
|
|
42
|
-
*
|
|
43
|
-
* Strategy 1 (preferred): use `gh api` to query GitHub branch protection.
|
|
44
|
-
* Strategy 2 (fallback): use `git push --dry-run` and inspect stderr.
|
|
45
|
-
*/
|
|
46
|
-
export async function detectBranchProtection(branch, remote, projectRoot) {
|
|
47
|
-
const cwdOpts = projectRoot ? { cwd: projectRoot } : {};
|
|
48
|
-
// Strategy 1: gh CLI via GitHub API
|
|
49
|
-
if (isGhCliAvailable()) {
|
|
50
|
-
try {
|
|
51
|
-
const remoteUrl = execFileSync('git', ['remote', 'get-url', remote], {
|
|
52
|
-
encoding: 'utf-8',
|
|
53
|
-
stdio: 'pipe',
|
|
54
|
-
...cwdOpts,
|
|
55
|
-
}).trim();
|
|
56
|
-
const identity = extractRepoOwnerAndName(remoteUrl);
|
|
57
|
-
if (identity) {
|
|
58
|
-
const { owner, repo } = identity;
|
|
59
|
-
try {
|
|
60
|
-
execFileSync('gh', ['api', `/repos/${owner}/${repo}/branches/${branch}/protection`], {
|
|
61
|
-
encoding: 'utf-8',
|
|
62
|
-
stdio: 'pipe',
|
|
63
|
-
...cwdOpts,
|
|
64
|
-
});
|
|
65
|
-
// Exit code 0 means protection rules exist
|
|
66
|
-
return { protected: true, detectionMethod: 'gh-api' };
|
|
67
|
-
}
|
|
68
|
-
catch (apiErr) {
|
|
69
|
-
const stderr = apiErr instanceof Error && 'stderr' in apiErr
|
|
70
|
-
? String(apiErr.stderr ?? '')
|
|
71
|
-
: '';
|
|
72
|
-
if (stderr.includes('404') || stderr.includes('Not Found')) {
|
|
73
|
-
// 404 means no protection configured
|
|
74
|
-
return { protected: false, detectionMethod: 'gh-api' };
|
|
75
|
-
}
|
|
76
|
-
// Any other API error — fall through to strategy 2
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// Parse failure — fall through to strategy 2
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// git remote get-url failed — fall through to strategy 2
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
// Strategy 2: git push --dry-run
|
|
86
|
-
try {
|
|
87
|
-
const result = execFileSync('git', ['push', '--dry-run', remote, `HEAD:${branch}`], {
|
|
88
|
-
encoding: 'utf-8',
|
|
89
|
-
stdio: 'pipe',
|
|
90
|
-
...cwdOpts,
|
|
91
|
-
});
|
|
92
|
-
// If stderr from a successful dry-run contains protection signals
|
|
93
|
-
const output = typeof result === 'string' ? result : '';
|
|
94
|
-
if (output.includes('protected branch') ||
|
|
95
|
-
output.includes('GH006') ||
|
|
96
|
-
output.includes('refusing to allow')) {
|
|
97
|
-
return { protected: true, detectionMethod: 'push-dry-run' };
|
|
98
|
-
}
|
|
99
|
-
return { protected: false, detectionMethod: 'push-dry-run' };
|
|
100
|
-
}
|
|
101
|
-
catch (pushErr) {
|
|
102
|
-
const stderr = pushErr instanceof Error && 'stderr' in pushErr
|
|
103
|
-
? String(pushErr.stderr ?? '')
|
|
104
|
-
: pushErr instanceof Error
|
|
105
|
-
? pushErr.message
|
|
106
|
-
: String(pushErr);
|
|
107
|
-
if (stderr.includes('protected branch') ||
|
|
108
|
-
stderr.includes('GH006') ||
|
|
109
|
-
stderr.includes('refusing to allow')) {
|
|
110
|
-
return { protected: true, detectionMethod: 'push-dry-run' };
|
|
111
|
-
}
|
|
112
|
-
return {
|
|
113
|
-
protected: false,
|
|
114
|
-
detectionMethod: 'unknown',
|
|
115
|
-
error: stderr,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Build the markdown body for a GitHub pull request.
|
|
121
|
-
*/
|
|
122
|
-
export function buildPRBody(opts) {
|
|
123
|
-
const epicLine = opts.epicId ? `**Epic**: ${opts.epicId}\n\n` : '';
|
|
124
|
-
return [
|
|
125
|
-
`## Release v${opts.version}`,
|
|
126
|
-
'',
|
|
127
|
-
`${epicLine}This PR merges the ${opts.head} branch into ${opts.base} to publish the release.`,
|
|
128
|
-
'',
|
|
129
|
-
'### Checklist',
|
|
130
|
-
'- [ ] CHANGELOG.md updated',
|
|
131
|
-
'- [ ] All release tasks complete',
|
|
132
|
-
'- [ ] Version bump committed',
|
|
133
|
-
'',
|
|
134
|
-
'---',
|
|
135
|
-
'*Created by CLEO release pipeline*',
|
|
136
|
-
].join('\n');
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Format human-readable instructions for creating a PR manually.
|
|
140
|
-
*/
|
|
141
|
-
export function formatManualPRInstructions(opts) {
|
|
142
|
-
const epicSuffix = opts.epicId ? ` (${opts.epicId})` : '';
|
|
143
|
-
return [
|
|
144
|
-
'Branch protection detected or gh CLI unavailable. Create the PR manually:',
|
|
145
|
-
'',
|
|
146
|
-
` gh pr create \\`,
|
|
147
|
-
` --base ${opts.base} \\`,
|
|
148
|
-
` --head ${opts.head} \\`,
|
|
149
|
-
` --title "${opts.title}" \\`,
|
|
150
|
-
` --body "Release v${opts.version}${epicSuffix}"`,
|
|
151
|
-
'',
|
|
152
|
-
`Or visit: https://github.com/[owner]/[repo]/compare/${opts.base}...${opts.head}`,
|
|
153
|
-
'',
|
|
154
|
-
'After merging, CI will automatically publish to npm.',
|
|
155
|
-
].join('\n');
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Create a GitHub pull request using the `gh` CLI, or return manual instructions
|
|
159
|
-
* if the CLI is unavailable or the operation fails.
|
|
160
|
-
*/
|
|
161
|
-
export async function createPullRequest(opts) {
|
|
162
|
-
if (!isGhCliAvailable()) {
|
|
163
|
-
return {
|
|
164
|
-
mode: 'manual',
|
|
165
|
-
instructions: formatManualPRInstructions(opts),
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
const body = buildPRBody(opts);
|
|
169
|
-
const args = [
|
|
170
|
-
'pr',
|
|
171
|
-
'create',
|
|
172
|
-
'--base',
|
|
173
|
-
opts.base,
|
|
174
|
-
'--head',
|
|
175
|
-
opts.head,
|
|
176
|
-
'--title',
|
|
177
|
-
opts.title,
|
|
178
|
-
'--body',
|
|
179
|
-
body,
|
|
180
|
-
];
|
|
181
|
-
if (opts.labels && opts.labels.length > 0) {
|
|
182
|
-
for (const label of opts.labels) {
|
|
183
|
-
args.push('--label', label);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
try {
|
|
187
|
-
const output = execFileSync('gh', args, {
|
|
188
|
-
encoding: 'utf-8',
|
|
189
|
-
stdio: 'pipe',
|
|
190
|
-
...(opts.projectRoot ? { cwd: opts.projectRoot } : {}),
|
|
191
|
-
});
|
|
192
|
-
const prUrl = output.trim();
|
|
193
|
-
const numberMatch = prUrl.match(/\/pull\/(\d+)$/);
|
|
194
|
-
const prNumber = numberMatch ? parseInt(numberMatch[1], 10) : undefined;
|
|
195
|
-
return {
|
|
196
|
-
mode: 'created',
|
|
197
|
-
prUrl,
|
|
198
|
-
prNumber,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
catch (err) {
|
|
202
|
-
const stderr = err instanceof Error && 'stderr' in err
|
|
203
|
-
? String(err.stderr ?? '')
|
|
204
|
-
: err instanceof Error
|
|
205
|
-
? err.message
|
|
206
|
-
: String(err);
|
|
207
|
-
// Handle case where PR already exists
|
|
208
|
-
if (stderr.includes('already exists')) {
|
|
209
|
-
// Attempt to extract existing PR URL from stderr
|
|
210
|
-
const urlMatch = stderr.match(/https:\/\/github\.com\/[^\s]+\/pull\/\d+/);
|
|
211
|
-
const existingUrl = urlMatch ? urlMatch[0] : undefined;
|
|
212
|
-
return {
|
|
213
|
-
mode: 'skipped',
|
|
214
|
-
prUrl: existingUrl,
|
|
215
|
-
instructions: 'PR already exists',
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
return {
|
|
219
|
-
mode: 'manual',
|
|
220
|
-
instructions: formatManualPRInstructions(opts),
|
|
221
|
-
error: stderr,
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
//# sourceMappingURL=github-pr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"github-pr.js","sourceRoot":"","sources":["../../src/release/github-pr.ts"],"names":[],"mappings":"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"}
|
package/dist/release/guards.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Release guards - epic-completeness and double-listing checks.
|
|
3
|
-
*
|
|
4
|
-
* Pre-release validation to ensure all tasks in an epic are accounted for
|
|
5
|
-
* and no task appears in multiple releases.
|
|
6
|
-
*
|
|
7
|
-
* @task T4454
|
|
8
|
-
* @epic T4454
|
|
9
|
-
*/
|
|
10
|
-
import { getAccessor } from '../store/data-accessor.js';
|
|
11
|
-
/**
|
|
12
|
-
* Walk parent chain to find the epic ancestor of a task.
|
|
13
|
-
*/
|
|
14
|
-
function findEpicAncestor(taskId, tasksById) {
|
|
15
|
-
const task = tasksById.get(taskId);
|
|
16
|
-
if (!task)
|
|
17
|
-
return null;
|
|
18
|
-
if (task.type === 'epic')
|
|
19
|
-
return taskId;
|
|
20
|
-
// Walk up parent chain (max 3 levels)
|
|
21
|
-
let current = task;
|
|
22
|
-
for (let depth = 0; depth < 3; depth++) {
|
|
23
|
-
if (!current.parentId)
|
|
24
|
-
return null;
|
|
25
|
-
const parent = tasksById.get(current.parentId);
|
|
26
|
-
if (!parent)
|
|
27
|
-
return null;
|
|
28
|
-
if (parent.type === 'epic')
|
|
29
|
-
return parent.id;
|
|
30
|
-
current = parent;
|
|
31
|
-
}
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Check epic completeness for a set of release task IDs.
|
|
36
|
-
* Verifies all children of each referenced epic are included.
|
|
37
|
-
*/
|
|
38
|
-
export async function checkEpicCompleteness(releaseTaskIds, cwd, accessor) {
|
|
39
|
-
const acc = accessor ?? (await getAccessor(cwd));
|
|
40
|
-
const { tasks: allTasks } = await acc.queryTasks({});
|
|
41
|
-
if (!allTasks?.length) {
|
|
42
|
-
return { hasIncomplete: false, epics: [], orphanTasks: [] };
|
|
43
|
-
}
|
|
44
|
-
const tasksById = new Map();
|
|
45
|
-
for (const task of allTasks) {
|
|
46
|
-
tasksById.set(task.id, task);
|
|
47
|
-
}
|
|
48
|
-
const releaseSet = new Set(releaseTaskIds);
|
|
49
|
-
// Map each release task to its epic
|
|
50
|
-
const taskToEpic = new Map();
|
|
51
|
-
for (const taskId of releaseTaskIds) {
|
|
52
|
-
taskToEpic.set(taskId, findEpicAncestor(taskId, tasksById));
|
|
53
|
-
}
|
|
54
|
-
// Find orphan tasks (no epic)
|
|
55
|
-
const orphanTasks = releaseTaskIds.filter((id) => !taskToEpic.get(id));
|
|
56
|
-
// Group by epic
|
|
57
|
-
const byEpic = new Map();
|
|
58
|
-
for (const [taskId, epicId] of taskToEpic) {
|
|
59
|
-
if (!epicId)
|
|
60
|
-
continue;
|
|
61
|
-
if (!byEpic.has(epicId))
|
|
62
|
-
byEpic.set(epicId, []);
|
|
63
|
-
byEpic.get(epicId).push(taskId);
|
|
64
|
-
}
|
|
65
|
-
// Check each epic for completeness
|
|
66
|
-
const epics = [];
|
|
67
|
-
let hasIncomplete = false;
|
|
68
|
-
for (const [epicId, includedTasks] of byEpic) {
|
|
69
|
-
const epic = tasksById.get(epicId);
|
|
70
|
-
if (!epic)
|
|
71
|
-
continue;
|
|
72
|
-
// Find all children of this epic
|
|
73
|
-
const allChildren = allTasks.filter((t) => t.parentId === epicId && t.id !== epicId);
|
|
74
|
-
const includedSet = new Set(includedTasks);
|
|
75
|
-
// Build set of parent task IDs (tasks with children) — these are filtered out
|
|
76
|
-
// by prepareRelease and should not be flagged as missing.
|
|
77
|
-
const parentIds = new Set(allTasks.filter((t) => t.parentId).map((t) => t.parentId));
|
|
78
|
-
// Only flag done leaf tasks not included in the release — pending/active/blocked
|
|
79
|
-
// tasks are future work, and parent tasks are structural (excluded by prepareRelease).
|
|
80
|
-
const missingChildren = allChildren
|
|
81
|
-
.filter((t) => t.status === 'done' &&
|
|
82
|
-
!parentIds.has(t.id) &&
|
|
83
|
-
!includedSet.has(t.id) &&
|
|
84
|
-
!releaseSet.has(t.id))
|
|
85
|
-
.map((t) => ({ id: t.id, title: t.title, status: t.status }));
|
|
86
|
-
if (missingChildren.length > 0)
|
|
87
|
-
hasIncomplete = true;
|
|
88
|
-
epics.push({
|
|
89
|
-
epicId,
|
|
90
|
-
epicTitle: epic.title,
|
|
91
|
-
totalChildren: allChildren.length,
|
|
92
|
-
includedChildren: includedTasks.length,
|
|
93
|
-
missingChildren,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
return { hasIncomplete, epics, orphanTasks };
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Check if any tasks are listed in multiple releases.
|
|
100
|
-
*/
|
|
101
|
-
export function checkDoubleListing(releaseTaskIds, existingReleases) {
|
|
102
|
-
const duplicates = [];
|
|
103
|
-
for (const taskId of releaseTaskIds) {
|
|
104
|
-
const inReleases = existingReleases
|
|
105
|
-
.filter((r) => r.tasks.includes(taskId))
|
|
106
|
-
.map((r) => r.version);
|
|
107
|
-
if (inReleases.length > 0) {
|
|
108
|
-
duplicates.push({ taskId, releases: inReleases });
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return {
|
|
112
|
-
hasDoubleListing: duplicates.length > 0,
|
|
113
|
-
duplicates,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=guards.js.map
|