@planu/cli 0.42.1 → 0.43.1
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/config/license-plans.json +2 -1
- package/dist/engine/actuals/consolidator.d.ts +3 -3
- package/dist/engine/actuals/consolidator.d.ts.map +1 -1
- package/dist/engine/actuals/consolidator.js +24 -2
- package/dist/engine/actuals/consolidator.js.map +1 -1
- package/dist/engine/actuals/index.d.ts +1 -0
- package/dist/engine/actuals/index.d.ts.map +1 -1
- package/dist/engine/actuals/index.js +1 -0
- package/dist/engine/actuals/index.js.map +1 -1
- package/dist/engine/actuals/progress-parser.d.ts +11 -0
- package/dist/engine/actuals/progress-parser.d.ts.map +1 -0
- package/dist/engine/actuals/progress-parser.js +84 -0
- package/dist/engine/actuals/progress-parser.js.map +1 -0
- package/dist/engine/actuals/wip-tracker.d.ts +2 -2
- package/dist/engine/actuals/wip-tracker.d.ts.map +1 -1
- package/dist/engine/actuals/wip-tracker.js +5 -6
- package/dist/engine/actuals/wip-tracker.js.map +1 -1
- package/dist/engine/analytics-detector/events.d.ts.map +1 -1
- package/dist/engine/analytics-detector/events.js +3 -4
- package/dist/engine/analytics-detector/events.js.map +1 -1
- package/dist/engine/ci-generator/planu-steps.js +1 -1
- package/dist/engine/ci-generator/planu-steps.js.map +1 -1
- package/dist/engine/docs-site-generator/spec-renderer.d.ts.map +1 -1
- package/dist/engine/docs-site-generator/spec-renderer.js +2 -1
- package/dist/engine/docs-site-generator/spec-renderer.js.map +1 -1
- package/dist/engine/execution-plan/agent-execution-plan.d.ts.map +1 -1
- package/dist/engine/execution-plan/agent-execution-plan.js +2 -0
- package/dist/engine/execution-plan/agent-execution-plan.js.map +1 -1
- package/dist/engine/living-spec-analyzer.d.ts +7 -0
- package/dist/engine/living-spec-analyzer.d.ts.map +1 -0
- package/dist/engine/living-spec-analyzer.js +362 -0
- package/dist/engine/living-spec-analyzer.js.map +1 -0
- package/dist/engine/llm-providers/cost-tracker.d.ts.map +1 -1
- package/dist/engine/llm-providers/cost-tracker.js +1 -0
- package/dist/engine/llm-providers/cost-tracker.js.map +1 -1
- package/dist/engine/llm-providers/load-balancer.d.ts.map +1 -1
- package/dist/engine/llm-providers/load-balancer.js +3 -0
- package/dist/engine/llm-providers/load-balancer.js.map +1 -1
- package/dist/engine/plugins/extensions/tool-extension.d.ts.map +1 -1
- package/dist/engine/plugins/extensions/tool-extension.js +1 -0
- package/dist/engine/plugins/extensions/tool-extension.js.map +1 -1
- package/dist/engine/plugins/lifecycle.d.ts.map +1 -1
- package/dist/engine/plugins/lifecycle.js +3 -4
- package/dist/engine/plugins/lifecycle.js.map +1 -1
- package/dist/engine/plugins/loader.d.ts.map +1 -1
- package/dist/engine/plugins/loader.js +3 -0
- package/dist/engine/plugins/loader.js.map +1 -1
- package/dist/engine/plugins/sandbox.d.ts.map +1 -1
- package/dist/engine/plugins/sandbox.js +3 -3
- package/dist/engine/plugins/sandbox.js.map +1 -1
- package/dist/engine/registry-updater.d.ts.map +1 -1
- package/dist/engine/registry-updater.js +3 -3
- package/dist/engine/registry-updater.js.map +1 -1
- package/dist/engine/safety/health-monitor.d.ts.map +1 -1
- package/dist/engine/safety/health-monitor.js +3 -0
- package/dist/engine/safety/health-monitor.js.map +1 -1
- package/dist/engine/safety/transaction.d.ts.map +1 -1
- package/dist/engine/safety/transaction.js +3 -0
- package/dist/engine/safety/transaction.js.map +1 -1
- package/dist/engine/source-resolver.d.ts +38 -0
- package/dist/engine/source-resolver.d.ts.map +1 -0
- package/dist/engine/source-resolver.js +179 -0
- package/dist/engine/source-resolver.js.map +1 -0
- package/dist/engine/spec-dependency-graph.d.ts +33 -0
- package/dist/engine/spec-dependency-graph.d.ts.map +1 -0
- package/dist/engine/spec-dependency-graph.js +243 -0
- package/dist/engine/spec-dependency-graph.js.map +1 -0
- package/dist/engine/spec-templates/custom-loader.d.ts.map +1 -1
- package/dist/engine/spec-templates/custom-loader.js +1 -0
- package/dist/engine/spec-templates/custom-loader.js.map +1 -1
- package/dist/i18n/index.d.ts +1 -1
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +1 -35
- package/dist/i18n/index.js.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts +6 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +121 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/specs.d.ts.map +1 -1
- package/dist/resources/specs.js +11 -6
- package/dist/resources/specs.js.map +1 -1
- package/dist/storage/checkpoint-store.d.ts.map +1 -1
- package/dist/storage/checkpoint-store.js +3 -2
- package/dist/storage/checkpoint-store.js.map +1 -1
- package/dist/storage/file-mutex.d.ts +14 -0
- package/dist/storage/file-mutex.d.ts.map +1 -0
- package/dist/storage/file-mutex.js +39 -0
- package/dist/storage/file-mutex.js.map +1 -0
- package/dist/storage/spec-store.d.ts.map +1 -1
- package/dist/storage/spec-store.js +48 -39
- package/dist/storage/spec-store.js.map +1 -1
- package/dist/tools/activate-license.d.ts.map +1 -1
- package/dist/tools/activate-license.js +27 -18
- package/dist/tools/activate-license.js.map +1 -1
- package/dist/tools/analyze-spec-dependencies.d.ts +6 -0
- package/dist/tools/analyze-spec-dependencies.d.ts.map +1 -0
- package/dist/tools/analyze-spec-dependencies.js +72 -0
- package/dist/tools/analyze-spec-dependencies.js.map +1 -0
- package/dist/tools/check-readiness.d.ts.map +1 -1
- package/dist/tools/check-readiness.js +8 -0
- package/dist/tools/check-readiness.js.map +1 -1
- package/dist/tools/configure-llm-providers-handler.d.ts.map +1 -1
- package/dist/tools/configure-llm-providers-handler.js +25 -18
- package/dist/tools/configure-llm-providers-handler.js.map +1 -1
- package/dist/tools/context-budget.d.ts.map +1 -1
- package/dist/tools/context-budget.js +41 -14
- package/dist/tools/context-budget.js.map +1 -1
- package/dist/tools/create-spec/spec-builder.d.ts.map +1 -1
- package/dist/tools/create-spec/spec-builder.js +3 -2
- package/dist/tools/create-spec/spec-builder.js.map +1 -1
- package/dist/tools/delete-project.d.ts.map +1 -1
- package/dist/tools/delete-project.js +4 -3
- package/dist/tools/delete-project.js.map +1 -1
- package/dist/tools/delete-spec.d.ts.map +1 -1
- package/dist/tools/delete-spec.js +4 -3
- package/dist/tools/delete-spec.js.map +1 -1
- package/dist/tools/estimate.d.ts.map +1 -1
- package/dist/tools/estimate.js +1 -0
- package/dist/tools/estimate.js.map +1 -1
- package/dist/tools/event-contracts/handlers.d.ts.map +1 -1
- package/dist/tools/event-contracts/handlers.js +5 -7
- package/dist/tools/event-contracts/handlers.js.map +1 -1
- package/dist/tools/export-spec.js +1 -1
- package/dist/tools/export-spec.js.map +1 -1
- package/dist/tools/license-status.d.ts.map +1 -1
- package/dist/tools/license-status.js +33 -1
- package/dist/tools/license-status.js.map +1 -1
- package/dist/tools/list-specs.d.ts.map +1 -1
- package/dist/tools/list-specs.js +1 -0
- package/dist/tools/list-specs.js.map +1 -1
- package/dist/tools/llm-provider-status-handler.d.ts.map +1 -1
- package/dist/tools/llm-provider-status-handler.js +13 -8
- package/dist/tools/llm-provider-status-handler.js.map +1 -1
- package/dist/tools/manage-context/store.d.ts.map +1 -1
- package/dist/tools/manage-context/store.js +4 -5
- package/dist/tools/manage-context/store.js.map +1 -1
- package/dist/tools/manage-plugins-handler.d.ts.map +1 -1
- package/dist/tools/manage-plugins-handler.js +38 -12
- package/dist/tools/manage-plugins-handler.js.map +1 -1
- package/dist/tools/manage-trash.d.ts.map +1 -1
- package/dist/tools/manage-trash.js +9 -5
- package/dist/tools/manage-trash.js.map +1 -1
- package/dist/tools/reconcile-spec.d.ts.map +1 -1
- package/dist/tools/reconcile-spec.js +11 -1
- package/dist/tools/reconcile-spec.js.map +1 -1
- package/dist/tools/register-context-tools.d.ts.map +1 -1
- package/dist/tools/register-context-tools.js +2 -0
- package/dist/tools/register-context-tools.js.map +1 -1
- package/dist/tools/register-event-tools.d.ts.map +1 -1
- package/dist/tools/register-event-tools.js +1 -0
- package/dist/tools/register-event-tools.js.map +1 -1
- package/dist/tools/register-export-tools.d.ts.map +1 -1
- package/dist/tools/register-export-tools.js +1 -0
- package/dist/tools/register-export-tools.js.map +1 -1
- package/dist/tools/register-governance-tools.d.ts.map +1 -1
- package/dist/tools/register-governance-tools.js +1 -0
- package/dist/tools/register-governance-tools.js.map +1 -1
- package/dist/tools/register-learning-tools.d.ts.map +1 -1
- package/dist/tools/register-learning-tools.js +1 -0
- package/dist/tools/register-learning-tools.js.map +1 -1
- package/dist/tools/register-license-tools.d.ts.map +1 -1
- package/dist/tools/register-license-tools.js +2 -0
- package/dist/tools/register-license-tools.js.map +1 -1
- package/dist/tools/register-memory-tools.d.ts.map +1 -1
- package/dist/tools/register-memory-tools.js +2 -0
- package/dist/tools/register-memory-tools.js.map +1 -1
- package/dist/tools/register-migration-tools.d.ts.map +1 -1
- package/dist/tools/register-migration-tools.js +1 -0
- package/dist/tools/register-migration-tools.js.map +1 -1
- package/dist/tools/register-platform-tools/design-stack-tools.d.ts.map +1 -1
- package/dist/tools/register-platform-tools/design-stack-tools.js +12 -0
- package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -1
- package/dist/tools/register-platform-tools/lifecycle-infra-tools.d.ts.map +1 -1
- package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +7 -0
- package/dist/tools/register-platform-tools/lifecycle-infra-tools.js.map +1 -1
- package/dist/tools/register-readiness-tools.d.ts.map +1 -1
- package/dist/tools/register-readiness-tools.js +2 -0
- package/dist/tools/register-readiness-tools.js.map +1 -1
- package/dist/tools/register-security-tools.d.ts.map +1 -1
- package/dist/tools/register-security-tools.js +1 -0
- package/dist/tools/register-security-tools.js.map +1 -1
- package/dist/tools/register-spec-tools/analysis-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-tools/analysis-tools.js +18 -0
- package/dist/tools/register-spec-tools/analysis-tools.js.map +1 -1
- package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-tools/core-spec-tools.js +4 -1
- package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
- package/dist/tools/register-stack-tools.d.ts.map +1 -1
- package/dist/tools/register-stack-tools.js +3 -0
- package/dist/tools/register-stack-tools.js.map +1 -1
- package/dist/tools/safe-handler.d.ts +2 -1
- package/dist/tools/safe-handler.d.ts.map +1 -1
- package/dist/tools/safe-handler.js +51 -3
- package/dist/tools/safe-handler.js.map +1 -1
- package/dist/tools/sanitize-path.d.ts +13 -0
- package/dist/tools/sanitize-path.d.ts.map +1 -0
- package/dist/tools/sanitize-path.js +60 -0
- package/dist/tools/sanitize-path.js.map +1 -0
- package/dist/tools/schemas/index.d.ts +1 -0
- package/dist/tools/schemas/index.d.ts.map +1 -1
- package/dist/tools/schemas/index.js +1 -0
- package/dist/tools/schemas/index.js.map +1 -1
- package/dist/tools/schemas/output-schemas.d.ts +168 -0
- package/dist/tools/schemas/output-schemas.d.ts.map +1 -0
- package/dist/tools/schemas/output-schemas.js +182 -0
- package/dist/tools/schemas/output-schemas.js.map +1 -0
- package/dist/tools/schemas/spec.d.ts.map +1 -1
- package/dist/tools/schemas/spec.js +9 -1
- package/dist/tools/schemas/spec.js.map +1 -1
- package/dist/tools/spec-templates.d.ts.map +1 -1
- package/dist/tools/spec-templates.js +36 -26
- package/dist/tools/spec-templates.js.map +1 -1
- package/dist/tools/suggest-tooling/catalog-loader.d.ts.map +1 -1
- package/dist/tools/suggest-tooling/catalog-loader.js +1 -0
- package/dist/tools/suggest-tooling/catalog-loader.js.map +1 -1
- package/dist/tools/tool-group-handler.d.ts.map +1 -1
- package/dist/tools/tool-group-handler.js +16 -13
- package/dist/tools/tool-group-handler.js.map +1 -1
- package/dist/tools/tool-registry.d.ts +14 -0
- package/dist/tools/tool-registry.d.ts.map +1 -0
- package/dist/tools/tool-registry.js +36 -0
- package/dist/tools/tool-registry.js.map +1 -0
- package/dist/tools/update-status-actions.d.ts +6 -0
- package/dist/tools/update-status-actions.d.ts.map +1 -1
- package/dist/tools/update-status-actions.js +19 -2
- package/dist/tools/update-status-actions.js.map +1 -1
- package/dist/tools/update-status.d.ts.map +1 -1
- package/dist/tools/update-status.js +6 -1
- package/dist/tools/update-status.js.map +1 -1
- package/dist/tools/validate.d.ts.map +1 -1
- package/dist/tools/validate.js +1 -0
- package/dist/tools/validate.js.map +1 -1
- package/dist/transports/http-rate-limiter.d.ts +22 -0
- package/dist/transports/http-rate-limiter.d.ts.map +1 -0
- package/dist/transports/http-rate-limiter.js +42 -0
- package/dist/transports/http-rate-limiter.js.map +1 -0
- package/dist/transports/http-transport.d.ts.map +1 -1
- package/dist/transports/http-transport.js +21 -1
- package/dist/transports/http-transport.js.map +1 -1
- package/dist/types/actuals-tracking.d.ts +9 -1
- package/dist/types/actuals-tracking.d.ts.map +1 -1
- package/dist/types/common/primitives.d.ts +1 -0
- package/dist/types/common/primitives.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/source-resolution.d.ts +49 -0
- package/dist/types/source-resolution.d.ts.map +1 -0
- package/dist/types/source-resolution.js +10 -0
- package/dist/types/source-resolution.js.map +1 -0
- package/dist/types/spec/core.d.ts +48 -0
- package/dist/types/spec/core.d.ts.map +1 -1
- package/dist/types/spec/inputs.d.ts +1 -0
- package/dist/types/spec/inputs.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/config/license-plans.json +2 -1
- package/src/i18n/messages/en.json +177 -4
- package/src/i18n/messages/es.json +177 -4
- package/src/i18n/messages/pt.json +177 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/engine/plugins/sandbox.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/engine/plugins/sandbox.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-updater.d.ts","sourceRoot":"","sources":["../../src/engine/registry-updater.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry-updater.d.ts","sourceRoot":"","sources":["../../src/engine/registry-updater.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIzF,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAO9E;AAED,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9F;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,YAAY,GAAG,WAAW,GAAG,UAAU,EACjD,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,iBAAiB,GACvB,YAAY,CAkBd;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CA0BrD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,cAAc,CAiCxE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,YAAY,CAmBzF"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Planu — Registry Auto-Updater
|
|
2
2
|
// Updates docs-registry.json with data from web.
|
|
3
3
|
// Respects userAdded entries — they are never overwritten.
|
|
4
|
-
import { readFile
|
|
4
|
+
import { readFile } from 'node:fs/promises';
|
|
5
|
+
import { writeJsonSafe } from './safety/atomic-writer.js';
|
|
5
6
|
// === Public API ===
|
|
6
7
|
export async function loadRegistry(registryPath) {
|
|
7
8
|
try {
|
|
@@ -13,8 +14,7 @@ export async function loadRegistry(registryPath) {
|
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
export async function saveRegistry(registryPath, registry) {
|
|
16
|
-
|
|
17
|
-
await writeFile(registryPath, content, 'utf-8');
|
|
17
|
+
await writeJsonSafe(registryPath, registry);
|
|
18
18
|
}
|
|
19
19
|
export function updateDocsRegistryEntry(registry, category, key, entry) {
|
|
20
20
|
const existing = registry[category][key];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-updater.js","sourceRoot":"","sources":["../../src/engine/registry-updater.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,iDAAiD;AACjD,2DAA2D;AAE3D,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"registry-updater.js","sourceRoot":"","sources":["../../src/engine/registry-updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-monitor.d.ts","sourceRoot":"","sources":["../../../src/engine/safety/health-monitor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"health-monitor.d.ts","sourceRoot":"","sources":["../../../src/engine/safety/health-monitor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAavE,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAiCnF;AAmBD,wBAAgB,kBAAkB,IAAI,YAAY,CAuCjD"}
|
|
@@ -5,6 +5,7 @@ function aggregateStatus(checks) {
|
|
|
5
5
|
if (checks.some((c) => c.status === 'fail')) {
|
|
6
6
|
return 'unhealthy';
|
|
7
7
|
}
|
|
8
|
+
/* v8 ignore next 3 -- 'warn' status only triggered by node <18 or heap >500MB */
|
|
8
9
|
if (checks.some((c) => c.status === 'warn')) {
|
|
9
10
|
return 'degraded';
|
|
10
11
|
}
|
|
@@ -65,6 +66,7 @@ export function checkServiceHealth() {
|
|
|
65
66
|
const major = versionMatch?.[1] ? parseInt(versionMatch[1], 10) : 0;
|
|
66
67
|
checks.push({
|
|
67
68
|
name: 'node-version',
|
|
69
|
+
/* v8 ignore next -- Node 18+ always in our CI/dev environment */
|
|
68
70
|
status: major >= 18 ? 'pass' : 'warn',
|
|
69
71
|
message: `Node.js ${process.version}`,
|
|
70
72
|
value: process.version,
|
|
@@ -74,6 +76,7 @@ export function checkServiceHealth() {
|
|
|
74
76
|
const heapMB = Math.round(heapUsed / 1024 / 1024);
|
|
75
77
|
checks.push({
|
|
76
78
|
name: 'memory-usage',
|
|
79
|
+
/* v8 ignore next -- heap >500MB unreachable in test environment */
|
|
77
80
|
status: heapMB > 500 ? 'warn' : 'pass',
|
|
78
81
|
message: `Heap usage: ${heapMB}MB`,
|
|
79
82
|
value: heapMB,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-monitor.js","sourceRoot":"","sources":["../../../src/engine/safety/health-monitor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"health-monitor.js","sourceRoot":"","sources":["../../../src/engine/safety/health-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/engine/safety/transaction.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;gBAGpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa;CAS/B;AAmBD,qBAAa,WAAW;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;;IAM/C,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAI9B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/engine/safety/transaction.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;gBAGpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa;CAS/B;AAmBD,qBAAa,WAAW;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;;IAM/C,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAI9B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAiBhC"}
|
|
@@ -42,6 +42,7 @@ export class Transaction {
|
|
|
42
42
|
this.completedSteps.push(step.name);
|
|
43
43
|
}
|
|
44
44
|
catch (err) {
|
|
45
|
+
/* v8 ignore next -- err is always Error in practice */
|
|
45
46
|
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
46
47
|
await this.rollback();
|
|
47
48
|
const rollbackEvent = createRollbackEvent(this.id, step.name, [...this.completedSteps], errorMessage);
|
|
@@ -54,6 +55,7 @@ export class Transaction {
|
|
|
54
55
|
const stepsToUndo = [...this.completedSteps].reverse();
|
|
55
56
|
for (const stepName of stepsToUndo) {
|
|
56
57
|
const step = this.steps.find((s) => s.name === stepName);
|
|
58
|
+
/* v8 ignore next 3 -- step always exists since completedSteps tracks added steps */
|
|
57
59
|
if (!step) {
|
|
58
60
|
continue;
|
|
59
61
|
}
|
|
@@ -61,6 +63,7 @@ export class Transaction {
|
|
|
61
63
|
await step.undoFn();
|
|
62
64
|
}
|
|
63
65
|
catch (undoErr) {
|
|
66
|
+
/* v8 ignore next -- undoErr is always Error in practice */
|
|
64
67
|
const msg = undoErr instanceof Error ? undoErr.message : String(undoErr);
|
|
65
68
|
console.warn(`[Transaction] Undo failed for step "${stepName}": ${msg}`);
|
|
66
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/engine/safety/transaction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/engine/safety/transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { DataSource, ResolvedData, BatchResolution } from '../types/source-resolution.js';
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a conflict among multiple data sources by selecting the
|
|
4
|
+
* highest-priority non-null value.
|
|
5
|
+
*
|
|
6
|
+
* @param sources - Array of data sources, each with a priority and value.
|
|
7
|
+
* @param fieldName - Human-readable name of the field being resolved (for the explanation).
|
|
8
|
+
* @returns The resolved data with full explanation of the decision.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* const result = resolveConflict([
|
|
13
|
+
* { priority: 'spec-baseline', value: 'draft', label: 'spec.md' },
|
|
14
|
+
* { priority: 'progress', value: 'implementing', label: 'progress.md' },
|
|
15
|
+
* ], 'status');
|
|
16
|
+
* // result.value === 'implementing' (progress > spec-baseline)
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveConflict<T>(sources: DataSource<T>[], fieldName: string): ResolvedData<T> | null;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve multiple fields at once, returning a batch result.
|
|
22
|
+
*
|
|
23
|
+
* @param fieldSources - Map of field name to its data sources.
|
|
24
|
+
* @returns Batch resolution with all fields resolved and a summary.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveConflictBatch(fieldSources: Record<string, DataSource[]>): BatchResolution;
|
|
27
|
+
/**
|
|
28
|
+
* Convenience: resolve a status conflict from common spec sources.
|
|
29
|
+
* This is the most common use case — status appearing in multiple files.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveStatusConflict(statusSources: {
|
|
32
|
+
specMd?: string | null;
|
|
33
|
+
progressMd?: string | null;
|
|
34
|
+
wipTracker?: string | null;
|
|
35
|
+
gitDerived?: string | null;
|
|
36
|
+
explicit?: string | null;
|
|
37
|
+
}): ResolvedData<string> | null;
|
|
38
|
+
//# sourceMappingURL=source-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-resolver.d.ts","sourceRoot":"","sources":["../../src/engine/source-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,eAAe,EAEhB,MAAM,+BAA+B,CAAC;AAsCvC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,EACxB,SAAS,EAAE,MAAM,GAChB,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CA2CxB;AAsCD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,eAAe,CAsBhG;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE;IACnD,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI,CAwC9B"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// eslint-disable-next-line no-duplicate-imports
|
|
2
|
+
import { SOURCE_PRIORITY_RANK } from '../types/source-resolution.js';
|
|
3
|
+
/**
|
|
4
|
+
* Map source priority to a confidence level.
|
|
5
|
+
*/
|
|
6
|
+
function priorityToConfidence(priority) {
|
|
7
|
+
const rank = SOURCE_PRIORITY_RANK[priority];
|
|
8
|
+
if (rank >= 40) {
|
|
9
|
+
return 'high';
|
|
10
|
+
}
|
|
11
|
+
if (rank >= 30) {
|
|
12
|
+
return 'medium';
|
|
13
|
+
}
|
|
14
|
+
return 'low';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check whether two values are meaningfully different.
|
|
18
|
+
* Handles primitives, dates, and JSON-serializable objects.
|
|
19
|
+
*/
|
|
20
|
+
function valuesAreDifferent(a, b) {
|
|
21
|
+
if (a === b) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
if (a === null || b === null) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (typeof a !== typeof b) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
if (typeof a === 'object') {
|
|
31
|
+
return JSON.stringify(a) !== JSON.stringify(b);
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve a conflict among multiple data sources by selecting the
|
|
37
|
+
* highest-priority non-null value.
|
|
38
|
+
*
|
|
39
|
+
* @param sources - Array of data sources, each with a priority and value.
|
|
40
|
+
* @param fieldName - Human-readable name of the field being resolved (for the explanation).
|
|
41
|
+
* @returns The resolved data with full explanation of the decision.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* const result = resolveConflict([
|
|
46
|
+
* { priority: 'spec-baseline', value: 'draft', label: 'spec.md' },
|
|
47
|
+
* { priority: 'progress', value: 'implementing', label: 'progress.md' },
|
|
48
|
+
* ], 'status');
|
|
49
|
+
* // result.value === 'implementing' (progress > spec-baseline)
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export function resolveConflict(sources, fieldName) {
|
|
53
|
+
// Filter to sources that have non-null values
|
|
54
|
+
const withValues = sources.filter((s) => s.value !== null && s.value !== undefined);
|
|
55
|
+
const consideredSources = sources.map((s) => ({
|
|
56
|
+
priority: s.priority,
|
|
57
|
+
label: s.label,
|
|
58
|
+
hadValue: s.value !== null && s.value !== undefined,
|
|
59
|
+
}));
|
|
60
|
+
if (withValues.length === 0) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
// Sort by priority rank (descending — highest priority first)
|
|
64
|
+
const sorted = [...withValues].sort((a, b) => SOURCE_PRIORITY_RANK[b.priority] - SOURCE_PRIORITY_RANK[a.priority]);
|
|
65
|
+
// Safe: sorted is non-empty because withValues is non-empty (checked above)
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
67
|
+
const winner = sorted[0];
|
|
68
|
+
// Determine if there was an actual conflict
|
|
69
|
+
const hadConflict = withValues.length > 1 && withValues.some((s) => valuesAreDifferent(s.value, winner.value));
|
|
70
|
+
// Build explanation
|
|
71
|
+
const resolution = hadConflict
|
|
72
|
+
? buildConflictExplanation(fieldName, winner, sorted.slice(1))
|
|
73
|
+
: `${fieldName}: used ${winner.label} (${winner.priority}), no conflict detected.`;
|
|
74
|
+
return {
|
|
75
|
+
value: winner.value,
|
|
76
|
+
source: winner.priority,
|
|
77
|
+
sourceLabel: winner.label,
|
|
78
|
+
confidence: priorityToConfidence(winner.priority),
|
|
79
|
+
resolution,
|
|
80
|
+
hadConflict,
|
|
81
|
+
consideredSources,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Build a human-readable explanation of how a conflict was resolved.
|
|
86
|
+
*/
|
|
87
|
+
function buildConflictExplanation(fieldName, winner, losers) {
|
|
88
|
+
const loserDescriptions = losers
|
|
89
|
+
.map((l) => `${l.label} (${l.priority}) = ${formatValue(l.value)}`)
|
|
90
|
+
.join(', ');
|
|
91
|
+
return (`${fieldName}: auto-resolved to ${formatValue(winner.value)} ` +
|
|
92
|
+
`from ${winner.label} (${winner.priority}). ` +
|
|
93
|
+
`Overrode: ${loserDescriptions}. ` +
|
|
94
|
+
`Hierarchy: explicit > progress > wip > git-derived > spec-baseline.`);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Format a value for display in resolution explanations.
|
|
98
|
+
*/
|
|
99
|
+
function formatValue(value) {
|
|
100
|
+
if (value === null || value === undefined) {
|
|
101
|
+
return 'null';
|
|
102
|
+
}
|
|
103
|
+
if (typeof value === 'string') {
|
|
104
|
+
return `"${value}"`;
|
|
105
|
+
}
|
|
106
|
+
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
107
|
+
return String(value);
|
|
108
|
+
}
|
|
109
|
+
return JSON.stringify(value);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Resolve multiple fields at once, returning a batch result.
|
|
113
|
+
*
|
|
114
|
+
* @param fieldSources - Map of field name to its data sources.
|
|
115
|
+
* @returns Batch resolution with all fields resolved and a summary.
|
|
116
|
+
*/
|
|
117
|
+
export function resolveConflictBatch(fieldSources) {
|
|
118
|
+
const fields = {};
|
|
119
|
+
let conflictCount = 0;
|
|
120
|
+
const resolutionLines = [];
|
|
121
|
+
for (const [fieldName, sources] of Object.entries(fieldSources)) {
|
|
122
|
+
const resolved = resolveConflict(sources, fieldName);
|
|
123
|
+
if (resolved) {
|
|
124
|
+
fields[fieldName] = resolved;
|
|
125
|
+
if (resolved.hadConflict) {
|
|
126
|
+
conflictCount++;
|
|
127
|
+
resolutionLines.push(resolved.resolution);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const summary = conflictCount === 0
|
|
132
|
+
? 'No data conflicts detected.'
|
|
133
|
+
: `Auto-resolved ${String(conflictCount)} conflict(s): ${resolutionLines.join(' | ')}`;
|
|
134
|
+
return { fields, conflictCount, summary };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Convenience: resolve a status conflict from common spec sources.
|
|
138
|
+
* This is the most common use case — status appearing in multiple files.
|
|
139
|
+
*/
|
|
140
|
+
export function resolveStatusConflict(statusSources) {
|
|
141
|
+
const sources = [];
|
|
142
|
+
if (statusSources.explicit !== undefined) {
|
|
143
|
+
sources.push({
|
|
144
|
+
priority: 'explicit',
|
|
145
|
+
value: statusSources.explicit,
|
|
146
|
+
label: 'update_status tool',
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (statusSources.progressMd !== undefined) {
|
|
150
|
+
sources.push({
|
|
151
|
+
priority: 'progress',
|
|
152
|
+
value: statusSources.progressMd,
|
|
153
|
+
label: 'progress.md',
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
if (statusSources.wipTracker !== undefined) {
|
|
157
|
+
sources.push({
|
|
158
|
+
priority: 'wip',
|
|
159
|
+
value: statusSources.wipTracker,
|
|
160
|
+
label: 'WIP tracker',
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
if (statusSources.gitDerived !== undefined) {
|
|
164
|
+
sources.push({
|
|
165
|
+
priority: 'git-derived',
|
|
166
|
+
value: statusSources.gitDerived,
|
|
167
|
+
label: 'git branch/commits',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
if (statusSources.specMd !== undefined) {
|
|
171
|
+
sources.push({
|
|
172
|
+
priority: 'spec-baseline',
|
|
173
|
+
value: statusSources.specMd,
|
|
174
|
+
label: 'spec.md',
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return resolveConflict(sources, 'status');
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=source-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-resolver.js","sourceRoot":"","sources":["../../src/engine/source-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Spec, SpecDependencyGraph, SpecDependencyAnalysis } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build a dependency graph from an array of specs.
|
|
4
|
+
* Each spec's `dependencies` field lists the IDs it depends on.
|
|
5
|
+
*/
|
|
6
|
+
export declare function buildSpecDependencyGraph(specs: Spec[]): SpecDependencyGraph;
|
|
7
|
+
/**
|
|
8
|
+
* Detect circular dependencies using DFS with a recursion stack.
|
|
9
|
+
* Returns an array of cycles, each cycle being an array of spec IDs.
|
|
10
|
+
*/
|
|
11
|
+
export declare function detectCycles(graph: SpecDependencyGraph): string[][];
|
|
12
|
+
/**
|
|
13
|
+
* Topological sort in waves (levels). Each wave contains specs that can
|
|
14
|
+
* execute in parallel once all previous waves are complete.
|
|
15
|
+
* Returns empty array if cycles exist.
|
|
16
|
+
*/
|
|
17
|
+
export declare function getExecutionOrder(graph: SpecDependencyGraph): string[][];
|
|
18
|
+
/**
|
|
19
|
+
* Find the critical path — the longest chain by sum of estimates.
|
|
20
|
+
* Uses dynamic programming on the DAG (assumes no cycles).
|
|
21
|
+
*/
|
|
22
|
+
export declare function findCriticalPath(graph: SpecDependencyGraph): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Generate a Mermaid flowchart diagram of the dependency graph.
|
|
25
|
+
* Highlights the critical path in red.
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateMermaidDiagram(graph: SpecDependencyGraph, criticalPath: string[]): string;
|
|
28
|
+
/**
|
|
29
|
+
* Full analysis: build graph, detect cycles, compute critical path,
|
|
30
|
+
* execution waves, and generate Mermaid diagram.
|
|
31
|
+
*/
|
|
32
|
+
export declare function analyzeSpecDependencies(specs: Spec[]): SpecDependencyAnalysis;
|
|
33
|
+
//# sourceMappingURL=spec-dependency-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-dependency-graph.d.ts","sourceRoot":"","sources":["../../src/engine/spec-dependency-graph.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,IAAI,EACJ,mBAAmB,EAEnB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAkB3E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,EAAE,EAAE,CAgCnE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,EAAE,EAAE,CAuDxE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,EAAE,CA0DrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAgDjG;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,sBAAsB,CA2B7E"}
|