@planu/cli 4.13.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +64 -1
- package/LICENSE +55 -12
- package/README.md +33 -25
- package/dist/cli/commands/inspect.d.ts +4 -0
- package/dist/cli/commands/inspect.js +144 -0
- package/dist/cli/commands/install.d.ts +19 -12
- package/dist/cli/commands/install.js +148 -102
- package/dist/cli/commands/job.d.ts +3 -0
- package/dist/cli/commands/job.js +120 -0
- package/dist/cli/commands/offline.d.ts +15 -0
- package/dist/cli/commands/offline.js +132 -0
- package/dist/cli/commands/serve.js +4 -0
- package/dist/cli/commands/spec.js +1 -1
- package/dist/cli/commands/storage.d.ts +3 -0
- package/dist/cli/commands/storage.js +102 -0
- package/dist/cli/commands/uninstall.d.ts +10 -0
- package/dist/cli/commands/uninstall.js +93 -7
- package/dist/cli/commands/validate.js +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/router.js +9 -3
- package/dist/config/crash-shield-framework-rules.json +93 -0
- package/dist/config/environment-schema.json +147 -0
- package/dist/config/hardcode-exceptions.json +4 -0
- package/dist/config/native-release-public-key.pem +3 -0
- package/dist/config/native-targets.json +87 -0
- package/dist/config/official-sdd-tools.d.ts +4 -0
- package/dist/config/official-sdd-tools.js +35 -0
- package/dist/config/product-public.d.ts +225 -0
- package/dist/config/product-public.js +147 -0
- package/dist/config/product-public.json +283 -0
- package/dist/config/registries/hosts/codex.json +20 -363
- package/dist/config/release-compatibility.json +13 -0
- package/dist/config/release-policy.json +108 -0
- package/dist/config/runtime-policy.json +55 -0
- package/dist/config/skill-templates/planu-resume-work.md +2 -2
- package/dist/config/skill-templates/planu-validate.md +7 -4
- package/dist/config/subagent-templates/planu-spec-implementer.md +7 -3
- package/dist/config/subagent-templates/planu-validator.md +10 -5
- package/dist/config/technology-registry.json +120 -0
- package/dist/config/version.js +7 -8
- package/dist/core/index.d.ts +1 -1
- package/dist/core/spec-validator.d.ts +4 -4
- package/dist/core/spec-validator.js +1 -1
- package/dist/engine/abortable-process-runner.d.ts +20 -2
- package/dist/engine/abortable-process-runner.js +267 -67
- package/dist/engine/advanced-testing/accessibility-checker.js +12 -14
- package/dist/engine/advanced-testing/mutation-advisor.js +3 -4
- package/dist/engine/advanced-testing/property-based.js +2 -3
- package/dist/engine/advanced-testing/test-data-advisor.js +2 -3
- package/dist/engine/agent-generator.js +2 -1
- package/dist/engine/agent-handoff-store.js +2 -1
- package/dist/engine/agent-prompt-generator.js +7 -5
- package/dist/engine/agent-telemetry.js +2 -1
- package/dist/engine/ai-integration/gemini/extensions-advisor.js +41 -9
- package/dist/engine/ambiguity-detector.js +12 -11
- package/dist/engine/ambiguity-scorer.js +4 -26
- package/dist/engine/analyzer/db-engine.js +2 -3
- package/dist/engine/analyzer/detectors.js +13 -14
- package/dist/engine/analyzer/env-setup.js +9 -10
- package/dist/engine/analyzer-env-scanner/env-example.js +7 -8
- package/dist/engine/api-spec-generator/graphql-parser.js +2 -2
- package/dist/engine/api-validation/graphql-schema-validator.js +2 -1
- package/dist/engine/api-validation/openapi-impl-validator.js +6 -7
- package/dist/engine/architecture-detector.js +10 -8
- package/dist/engine/auth/config.d.ts +1 -1
- package/dist/engine/auth/config.js +4 -3
- package/dist/engine/auth/scope-mapper.js +1 -7
- package/dist/engine/auto-updater/atomic-upgrade.d.ts +8 -0
- package/dist/engine/auto-updater/atomic-upgrade.js +381 -0
- package/dist/engine/auto-updater/config-detector.js +9 -3
- package/dist/engine/auto-updater/config-patcher.d.ts +0 -4
- package/dist/engine/auto-updater/config-patcher.js +10 -15
- package/dist/engine/auto-updater/index.d.ts +3 -1
- package/dist/engine/auto-updater/index.js +44 -30
- package/dist/engine/auto-updater/npm-registry.js +10 -2
- package/dist/engine/auto-updater/release-verifier.d.ts +3 -0
- package/dist/engine/auto-updater/release-verifier.js +112 -0
- package/dist/engine/auto-updater/upgrade-lock.d.ts +6 -0
- package/dist/engine/auto-updater/upgrade-lock.js +28 -0
- package/dist/engine/auto-updater/upgrade-trust-state.d.ts +7 -0
- package/dist/engine/auto-updater/upgrade-trust-state.js +59 -0
- package/dist/engine/autopilot/audit-logger.js +2 -5
- package/dist/engine/autopilot/state-updater.js +4 -4
- package/dist/engine/best-practices-library.js +2 -1
- package/dist/engine/browser-validator.js +2 -1
- package/dist/engine/build-tool-detector.js +3 -2
- package/dist/engine/cascade-hooks/hooks/review-enricher.hook.js +9 -6
- package/dist/engine/cascade-hooks/state-drift-detector.d.ts +3 -3
- package/dist/engine/cascade-hooks/state-drift-detector.js +1 -1
- package/dist/engine/ci-generator/context-builders.js +7 -5
- package/dist/engine/ci-generator/planu-config.js +1 -7
- package/dist/engine/ci-generator/stack-detector.js +0 -2
- package/dist/engine/ci-generator/yaml-builder.js +0 -2
- package/dist/engine/clarification-gate/gate.d.ts +3 -3
- package/dist/engine/claude-config-auditor/rules-auditor.js +4 -3
- package/dist/engine/code-scanner/layer-scanner.js +6 -22
- package/dist/engine/code-transforms/typescript/ast-utils.js +2 -3
- package/dist/engine/complexity-budget/trivial-detector.js +2 -1
- package/dist/engine/compliance-test-generator/index.js +7 -2
- package/dist/engine/compliance-test-generator/test-formatter.js +2 -2
- package/dist/engine/config-health/mcp-config-checker.js +2 -1
- package/dist/engine/config-health/ts-checker-scripts.js +4 -3
- package/dist/engine/config-health/ts-checker.js +3 -2
- package/dist/engine/convention-injector.js +5 -7
- package/dist/engine/convention-scanner/convention-parser.js +3 -2
- package/dist/engine/core-bridge-duplicate-blocks.d.ts +3 -0
- package/dist/engine/core-bridge-duplicate-blocks.js +57 -0
- package/dist/engine/core-bridge-gaps.d.ts +4 -0
- package/dist/engine/core-bridge-gaps.js +75 -0
- package/dist/engine/core-bridge.d.ts +10 -10
- package/dist/engine/core-bridge.js +196 -283
- package/dist/engine/cost-guardrails.d.ts +1 -1
- package/dist/engine/cost-guardrails.js +1 -1
- package/dist/engine/cost-tracking/ledger.js +2 -5
- package/dist/engine/coverage-gap-analyzer.js +10 -1
- package/dist/engine/crash-shield/detectors/framework-detector.d.ts +2 -0
- package/dist/engine/crash-shield/detectors/framework-detector.js +110 -192
- package/dist/engine/crash-shield/detectors/typescript-detector.js +2 -1
- package/dist/engine/criterion-identity.d.ts +1 -0
- package/dist/engine/criterion-identity.js +7 -0
- package/dist/engine/dashboard/data-loader.js +4 -8
- package/dist/engine/dashboard/templates-layout.js +0 -3
- package/dist/engine/dashboard/templates-project.js +1 -13
- package/dist/engine/data-projects-gc/gc-runner.d.ts +7 -0
- package/dist/engine/data-projects-gc/gc-runner.js +113 -3
- package/dist/engine/data-projects-gc/scanner.js +5 -1
- package/dist/engine/decision-store.js +11 -14
- package/dist/engine/deleter/core.js +5 -5
- package/dist/engine/dep-auditor/abandonment-data.js +2 -1
- package/dist/engine/dep-auditor/abandonment-registry.js +3 -1
- package/dist/engine/dep-auditor/cve-fetcher.js +3 -0
- package/dist/engine/dep-auditor/dep-duplicates-detector.js +36 -4
- package/dist/engine/dep-auditor/license-registry.js +2 -0
- package/dist/engine/dependency-evaluator.d.ts +14 -0
- package/dist/engine/dependency-evaluator.js +81 -0
- package/dist/engine/deploy/providers/fly.js +7 -7
- package/dist/engine/deploy/providers/netlify.js +7 -7
- package/dist/engine/deploy/providers/railway.js +10 -12
- package/dist/engine/deploy/providers/vercel.js +7 -9
- package/dist/engine/deprecation-scanner/pattern-loader.js +0 -2
- package/dist/engine/desktop-detector.js +2 -3
- package/dist/engine/detect-duplication.js +2 -1
- package/dist/engine/detectors/advanced-framework-detector/css-state-detector.js +2 -1
- package/dist/engine/detectors/advanced-framework-detector/legacy-detector.js +2 -3
- package/dist/engine/detectors/advanced-framework-detector/modern-detector.js +3 -4
- package/dist/engine/detectors/agent-framework-detector.js +3 -2
- package/dist/engine/detectors/ai-native-detector.js +4 -6
- package/dist/engine/detectors/cache-db-detector.js +4 -3
- package/dist/engine/detectors/cicd-detector.js +4 -3
- package/dist/engine/detectors/deployment-detector.js +11 -12
- package/dist/engine/detectors/frontend-perf-detector.js +14 -9
- package/dist/engine/detectors/library-detector-multilang-a.js +16 -3
- package/dist/engine/detectors/library-detector-node.js +14 -4
- package/dist/engine/detectors/library-detector-python.js +7 -1
- package/dist/engine/detectors/library-detector.js +0 -2
- package/dist/engine/detectors/llm-detector/provider-maps.js +3 -2
- package/dist/engine/detectors/mcp-candidate-detector.js +12 -16
- package/dist/engine/detectors/mfe-detector.js +6 -7
- package/dist/engine/detectors/monitoring-detector.js +4 -3
- package/dist/engine/detectors/otel-detector.js +3 -2
- package/dist/engine/detectors/otel-ecosystem-detectors.d.ts +2 -2
- package/dist/engine/detectors/otel-ecosystem-detectors.js +4 -3
- package/dist/engine/detectors/platform-specialty-detector.js +3 -5
- package/dist/engine/detectors/template-engine-detector.js +3 -4
- package/dist/engine/doc-generator/builders.js +2 -3
- package/dist/engine/doc-generator/mobile-distribution-guide.js +13 -17
- package/dist/engine/doc-generator/portal/dirty-flag-map.d.ts +2 -2
- package/dist/engine/doc-generator/portal/portal-regenerator.js +3 -47
- package/dist/engine/docs-site-generator/data-collector.d.ts +1 -1
- package/dist/engine/docs-site-generator/data-collector.js +7 -28
- package/dist/engine/docs-site-generator/tools-renderer.js +3 -10
- package/dist/engine/domain-detector.js +3 -6
- package/dist/engine/dynamic-knowledge/knowledge-cache.js +3 -4
- package/dist/engine/dynamic-knowledge/knowledge-merger.js +17 -2
- package/dist/engine/dynamic-knowledge/web-researcher.js +15 -14
- package/dist/engine/dynamic-migration-detector/manifest-readers-extended.js +0 -2
- package/dist/engine/e2e-test-generator.js +4 -3
- package/dist/engine/ecosystem-absorber/knowledge-cache.js +2 -1
- package/dist/engine/ecosystem-absorber/platform-crawler.js +2 -2
- package/dist/engine/escalator/retry-counter.js +2 -1
- package/dist/engine/evidence-gates/artifact-reader.d.ts +16 -1
- package/dist/engine/evidence-gates/artifact-reader.js +220 -23
- package/dist/engine/evidence-gates/lifecycle-gate.d.ts +2 -1
- package/dist/engine/evidence-gates/lifecycle-gate.js +58 -3
- package/dist/engine/evidence-gates/reconciliation-freshness.d.ts +11 -0
- package/dist/engine/evidence-gates/reconciliation-freshness.js +72 -0
- package/dist/engine/evidence-index/done-drift.d.ts +1 -1
- package/dist/engine/evidence-index/done-drift.js +40 -18
- package/dist/engine/execution/context.d.ts +19 -0
- package/dist/engine/execution/context.js +130 -0
- package/dist/engine/execution/deadline-io.d.ts +21 -0
- package/dist/engine/execution/deadline-io.js +45 -0
- package/dist/engine/execution/durable-job-heartbeat-runtime.d.ts +4 -0
- package/dist/engine/execution/durable-job-heartbeat-runtime.js +400 -0
- package/dist/engine/execution/job-executor.d.ts +16 -0
- package/dist/engine/execution/job-executor.js +140 -0
- package/dist/engine/execution/job-runtime.d.ts +108 -0
- package/dist/engine/execution/job-runtime.js +328 -0
- package/dist/engine/execution/native-relevance-scorer.d.ts +6 -0
- package/dist/engine/execution/native-relevance-scorer.js +64 -0
- package/dist/engine/execution/native-worker-dispatch.d.ts +3 -0
- package/dist/engine/execution/native-worker-dispatch.js +46 -0
- package/dist/engine/execution/native-worker-protocol.d.ts +6 -0
- package/dist/engine/execution/native-worker-protocol.js +33 -0
- package/dist/engine/execution/native-worker-runtime.d.ts +4 -0
- package/dist/engine/execution/native-worker-runtime.js +177 -0
- package/dist/engine/execution/native-worker-thread.d.ts +2 -0
- package/dist/engine/execution/native-worker-thread.js +66 -0
- package/dist/engine/execution/operation-journal.d.ts +66 -0
- package/dist/engine/execution/operation-journal.js +260 -0
- package/dist/engine/execution/outbox-worker.d.ts +31 -0
- package/dist/engine/execution/outbox-worker.js +192 -0
- package/dist/engine/execution/public-job-sanitizer.d.ts +4 -0
- package/dist/engine/execution/public-job-sanitizer.js +31 -0
- package/dist/engine/execution/validate-job-executor.d.ts +35 -0
- package/dist/engine/execution/validate-job-executor.js +805 -0
- package/dist/engine/execution/validate-job-payload.d.ts +5 -0
- package/dist/engine/execution/validate-job-payload.js +144 -0
- package/dist/engine/execution/validate-job-recovery.d.ts +4 -0
- package/dist/engine/execution/validate-job-recovery.js +47 -0
- package/dist/engine/execution/validate-worker-runtime.d.ts +10 -0
- package/dist/engine/execution/validate-worker-runtime.js +188 -0
- package/dist/engine/execution/validate-worker-thread.d.ts +2 -0
- package/dist/engine/execution/validate-worker-thread.js +64 -0
- package/dist/engine/execution-plan/desktop-distribution.js +3 -7
- package/dist/engine/execution-plan/mobile-distribution.js +4 -9
- package/dist/engine/execution-plan/phases.js +4 -5
- package/dist/engine/execution-plan/plan-utils.js +8 -5
- package/dist/engine/facilitate/context-loader.js +3 -9
- package/dist/engine/figma/code-connect-fetcher.js +9 -8
- package/dist/engine/filesystem-watcher/index.d.ts +3 -3
- package/dist/engine/filesystem-watcher/index.js +5 -5
- package/dist/engine/framework-detector.js +14 -15
- package/dist/engine/git/planu-autocommit.js +8 -7
- package/dist/engine/git/repository-probe.d.ts +3 -0
- package/dist/engine/git/repository-probe.js +13 -0
- package/dist/engine/global-rules-manager.js +2 -2
- package/dist/engine/handoff-artifacts/io.js +2 -3
- package/dist/engine/handoff-artifacts/schemas/red-tests-handoff.js +8 -1
- package/dist/engine/handoff-artifacts/schemas.d.ts +6 -1
- package/dist/engine/handoff-artifacts/schemas.js +38 -0
- package/dist/engine/handoff-packager.d.ts +19 -0
- package/dist/engine/handoff-packager.js +415 -13
- package/dist/engine/hook-generator/stack-hook-templates.js +4 -4
- package/dist/engine/hooks/config-loader.js +1 -1
- package/dist/engine/hooks/context-injector.js +4 -7
- package/dist/engine/hooks/effort-configurator.js +1 -1
- package/dist/engine/hooks/file-watcher.js +1 -14
- package/dist/engine/hooks-reconciler.js +6 -4
- package/dist/engine/impact-detector/test-break-predictor.js +3 -3
- package/dist/engine/impact-detector/tool-registration.js +1 -1
- package/dist/engine/implementation-contract/renderer.js +23 -8
- package/dist/engine/infrastructure/component-mapper.js +5 -7
- package/dist/engine/infrastructure/docker-compose-generator.js +8 -10
- package/dist/engine/infrastructure/index.js +6 -3
- package/dist/engine/infrastructure/kubernetes-generator.js +2 -2
- package/dist/engine/infrastructure/railway-generator.js +10 -8
- package/dist/engine/infrastructure/signal-detector.js +6 -8
- package/dist/engine/infrastructure/terraform-generator.js +6 -8
- package/dist/engine/legal-compliance/detector.js +3 -2
- package/dist/engine/lifecycle-reconciliation-io.d.ts +11 -0
- package/dist/engine/lifecycle-reconciliation-io.js +180 -0
- package/dist/engine/lifecycle-reconciliation.d.ts +16 -0
- package/dist/engine/lifecycle-reconciliation.js +406 -0
- package/dist/engine/local-first/storage-advisor.js +5 -6
- package/dist/engine/local-first/tool-classification.js +2 -0
- package/dist/engine/macos-keychain-native-port.d.ts +10 -0
- package/dist/engine/macos-keychain-native-port.js +38 -0
- package/dist/engine/marketplace-fetcher/cache.js +3 -1
- package/dist/engine/mcp-config/mcp-config-writer.d.ts +2 -2
- package/dist/engine/mcp-config/mcp-config-writer.js +10 -8
- package/dist/engine/migration/db-migrator.js +2 -5
- package/dist/engine/migration/equivalence-mapper.js +12 -13
- package/dist/engine/migration/service-catalogs.js +6 -7
- package/dist/engine/migration/service-migrator-catalogs.js +6 -7
- package/dist/engine/migrations/remove-commercial-state.d.ts +3 -0
- package/dist/engine/migrations/remove-commercial-state.js +343 -0
- package/dist/engine/mobile-detector-ios.js +2 -3
- package/dist/engine/mobile-detector.js +16 -4
- package/dist/engine/model-router/complexity-analyzer.js +4 -7
- package/dist/engine/multi-agent-review/security-analyzer.js +3 -1
- package/dist/engine/multi-app-detector/app-type.js +26 -21
- package/dist/engine/multi-app-detector/core.js +3 -2
- package/dist/engine/multi-teammate-review/disagreement-counter.js +2 -1
- package/dist/engine/multi-teammate-review/panel-orchestrator.js +0 -2
- package/dist/engine/mutation-config-generator.js +10 -7
- package/dist/engine/native-capability-policy.d.ts +4 -0
- package/dist/engine/native-capability-policy.js +24 -0
- package/dist/engine/native-platform.d.ts +3 -0
- package/dist/engine/native-platform.js +44 -0
- package/dist/engine/native-runtime-handshake.d.ts +20 -0
- package/dist/engine/native-runtime-handshake.js +230 -0
- package/dist/engine/network-policy.d.ts +27 -0
- package/dist/engine/network-policy.js +175 -0
- package/dist/engine/next-spec-resolver/dependency-filter.js +2 -22
- package/dist/engine/nfr-profile-detector.js +12 -16
- package/dist/engine/nli-keywords.js +8 -9
- package/dist/engine/oauth/config-guard.js +4 -5
- package/dist/engine/observability/local-execution-spans.d.ts +15 -0
- package/dist/engine/observability/local-execution-spans.js +63 -0
- package/dist/engine/orchestrator/runtime.js +0 -1
- package/dist/engine/package-registry.js +2 -6
- package/dist/engine/performance-analyzer.js +2 -5
- package/dist/engine/permissions-merger/stack-detectors.js +5 -5
- package/dist/engine/planu-core.darwin-arm64.node.manifest.json +39 -0
- package/dist/engine/planu-core.darwin-arm64.node.sbom.json +1310 -0
- package/dist/engine/planu-core.darwin-x64.node.manifest.json +39 -0
- package/dist/engine/planu-core.darwin-x64.node.sbom.json +1310 -0
- package/dist/engine/planu-core.linux-arm64-gnu.node.manifest.json +38 -0
- package/dist/engine/planu-core.linux-arm64-gnu.node.sbom.json +1310 -0
- package/dist/engine/planu-core.linux-arm64-musl.node.manifest.json +38 -0
- package/dist/engine/planu-core.linux-arm64-musl.node.sbom.json +1310 -0
- package/dist/engine/planu-core.linux-x64-gnu.node.manifest.json +38 -0
- package/dist/engine/planu-core.linux-x64-gnu.node.sbom.json +1310 -0
- package/dist/engine/planu-core.linux-x64-musl.node.manifest.json +38 -0
- package/dist/engine/planu-core.linux-x64-musl.node.sbom.json +1310 -0
- package/dist/engine/planu-core.win32-arm64-msvc.node.manifest.json +38 -0
- package/dist/engine/planu-core.win32-arm64-msvc.node.sbom.json +1310 -0
- package/dist/engine/planu-core.win32-x64-msvc.node.manifest.json +38 -0
- package/dist/engine/planu-core.win32-x64-msvc.node.sbom.json +1310 -0
- package/dist/engine/platform-detector/desktop.js +15 -2
- package/dist/engine/platform-detector/extensions.js +2 -1
- package/dist/engine/platform-detector/games.js +2 -1
- package/dist/engine/platform-detector.js +3 -2
- package/dist/engine/platform-engineering/idp-detector.js +2 -1
- package/dist/engine/plugin-installer/stack-matcher.js +9 -17
- package/dist/engine/plugins/lifecycle.js +6 -2
- package/dist/engine/prior-decisions/contradiction-detector.js +60 -30
- package/dist/engine/project-dna/stack-detector.js +15 -17
- package/dist/engine/project-graph/builder.js +11 -0
- package/dist/engine/project-graph/cache.js +1 -1
- package/dist/engine/project-graph/freshness-projection.d.ts +16 -0
- package/dist/engine/project-graph/freshness-projection.js +95 -0
- package/dist/engine/project-graph/index.d.ts +1 -0
- package/dist/engine/project-graph/index.js +1 -0
- package/dist/engine/project-graph/query.js +15 -25
- package/dist/engine/project-health-checker.js +3 -4
- package/dist/engine/project-scanner/stack-detector.js +17 -17
- package/dist/engine/property-test-generator.js +2 -3
- package/dist/engine/qa-gate.d.ts +1 -0
- package/dist/engine/qa-gate.js +6 -4
- package/dist/engine/quality-gates/gate-catalog.js +47 -46
- package/dist/engine/quality-gates/gate-injector.js +9 -4
- package/dist/engine/readiness-checker.d.ts +1 -16
- package/dist/engine/readiness-checker.js +27 -88
- package/dist/engine/registry/core.js +0 -2
- package/dist/engine/registry/loader.js +9 -12
- package/dist/engine/registry/matcher.js +129 -24
- package/dist/engine/resilience-detector/concurrency-detector.js +4 -4
- package/dist/engine/resilience-detector/middleware-detector.js +11 -13
- package/dist/engine/resilience-detector/validation-detector.js +17 -4
- package/dist/engine/reverse-engineer/config-analyzer.js +9 -8
- package/dist/engine/reverse-engineer/orchestrator.js +5 -9
- package/dist/engine/reverse-engineer/test-file-parser.js +6 -3
- package/dist/engine/rules-generator/index.js +6 -5
- package/dist/engine/runtime-policy.d.ts +9 -0
- package/dist/engine/runtime-policy.js +138 -0
- package/dist/engine/runtime-security/checkers/content-security.js +21 -6
- package/dist/engine/runtime-security/checkers/file-permissions.js +0 -2
- package/dist/engine/runtime-security/rate-limiter.js +0 -1
- package/dist/engine/safety/atomic-write-file.js +20 -9
- package/dist/engine/safety/atomic-writer.js +10 -3
- package/dist/engine/safety/contained-project-file.d.ts +3 -0
- package/dist/engine/safety/contained-project-file.js +23 -0
- package/dist/engine/safety/cross-process-lock.d.ts +3 -40
- package/dist/engine/safety/cross-process-lock.js +268 -272
- package/dist/engine/safety/file-mutex.d.ts +2 -9
- package/dist/engine/safety/file-mutex.js +155 -87
- package/dist/engine/safety/health-monitor.js +15 -6
- package/dist/engine/safety/lock-lease-store.d.ts +79 -0
- package/dist/engine/safety/lock-lease-store.js +372 -0
- package/dist/engine/safety/lock-scavenger.d.ts +2 -5
- package/dist/engine/safety/lock-scavenger.js +158 -76
- package/dist/engine/safety/lock-staleness.js +4 -1
- package/dist/engine/safety/obsolete-lock-guard.d.ts +8 -0
- package/dist/engine/safety/obsolete-lock-guard.js +31 -0
- package/dist/engine/safety/transaction.js +3 -3
- package/dist/engine/sandbox/index.js +2 -1
- package/dist/engine/sandbox/runner-detect.js +3 -2
- package/dist/engine/sandbox/runner-docker.js +4 -3
- package/dist/engine/scan-project/module-discoverer.js +3 -2
- package/dist/engine/schema-generator.js +16 -9
- package/dist/engine/scope-boundaries/contradiction-checker.js +63 -1
- package/dist/engine/scope-boundaries/scope-validator.js +45 -7
- package/dist/engine/security-analyzer/criteria-generator.js +2 -3
- package/dist/engine/self-healing/healer.js +4 -4
- package/dist/engine/session/checkpoint-writer.js +0 -9
- package/dist/engine/shared-agent-memory.js +66 -74
- package/dist/engine/skill-adapter/command-rewriter.js +3 -2
- package/dist/engine/skill-adapter/index.js +3 -3
- package/dist/engine/skill-adapter/placeholder-map.js +3 -2
- package/dist/engine/skill-bootstrap/stack-matcher.js +47 -48
- package/dist/engine/skill-generation/stack-content-generator.js +0 -2
- package/dist/engine/skill-generator/workflow-skill-generator.js +2 -1
- package/dist/engine/skill-registry/ttl-refresh.js +3 -1
- package/dist/engine/skills/skills-fetcher.js +3 -6
- package/dist/engine/skills-reconciler.js +19 -39
- package/dist/engine/spec-coverage/test-finder.js +7 -6
- package/dist/engine/spec-diff-engine.js +3 -3
- package/dist/engine/spec-format/acceptance-criteria.d.ts +6 -2
- package/dist/engine/spec-format/acceptance-criteria.js +77 -18
- package/dist/engine/spec-format/markdown-sections.d.ts +14 -0
- package/dist/engine/spec-format/markdown-sections.js +105 -0
- package/dist/engine/spec-format/read-technical-section.js +33 -5
- package/dist/engine/spec-format/technical-md-populator.js +3 -2
- package/dist/engine/spec-format/unified-spec-builder.d.ts +7 -0
- package/dist/engine/spec-format/unified-spec-builder.js +202 -0
- package/dist/engine/spec-generator/api-key-resolver.d.ts +1 -1
- package/dist/engine/spec-generator/api-key-resolver.js +3 -24
- package/dist/engine/spec-generators/issue-extractor.js +9 -3
- package/dist/engine/spec-migrator/canonical-deduplicator.d.ts +18 -0
- package/dist/engine/spec-migrator/canonical-deduplicator.js +479 -0
- package/dist/engine/spec-migrator/drift-detector.js +5 -13
- package/dist/engine/spec-migrator/filesystem-import.d.ts +4 -8
- package/dist/engine/spec-migrator/filesystem-import.js +134 -23
- package/dist/engine/spec-migrator/frontmatter-parser.js +32 -15
- package/dist/engine/spec-migrator/index.d.ts +1 -0
- package/dist/engine/spec-migrator/index.js +1 -0
- package/dist/engine/spec-migrator/planu-canonical-policy.js +10 -1
- package/dist/engine/spec-migrator/strict-planu-cleanup.js +24 -25
- package/dist/engine/spec-registry/adapter.d.ts +0 -5
- package/dist/engine/spec-registry/adapter.js +45 -46
- package/dist/engine/spec-registry/client.js +2 -0
- package/dist/engine/spec-source-sync.js +3 -2
- package/dist/engine/spec-state-machine/transition-spec.d.ts +6 -1
- package/dist/engine/spec-state-machine/transition-spec.js +10 -1
- package/dist/engine/spec-templates/custom-loader.js +2 -3
- package/dist/engine/spec-templates/templates-domain-specific.js +8 -5
- package/dist/engine/spec-templates/templates-perf-integration.js +2 -3
- package/dist/engine/stack-auditor/manifest-reader.js +0 -2
- package/dist/engine/staleness/stale-implementing.js +7 -7
- package/dist/engine/tdd-scaffold-generator.js +24 -11
- package/dist/engine/teammate-router/green-phase-verifier.js +2 -1
- package/dist/engine/teammate-router/red-phase-verifier.js +2 -1
- package/dist/engine/technical-enricher/index.js +16 -8
- package/dist/engine/technical-enricher/render-enriched.d.ts +1 -0
- package/dist/engine/technical-enricher/render-enriched.js +42 -14
- package/dist/engine/technology-registry.d.ts +11 -0
- package/dist/engine/technology-registry.js +142 -0
- package/dist/engine/telemetry/error-reporter.d.ts +1 -2
- package/dist/engine/telemetry/error-reporter.js +11 -18
- package/dist/engine/telemetry/health-checker.js +58 -31
- package/dist/engine/telemetry/index.d.ts +0 -1
- package/dist/engine/telemetry/index.js +0 -1
- package/dist/engine/telemetry/stance.js +3 -2
- package/dist/engine/telemetry/telemetry-client.d.ts +1 -5
- package/dist/engine/telemetry/telemetry-client.js +69 -35
- package/dist/engine/telemetry/telemetry-store.d.ts +3 -3
- package/dist/engine/telemetry/telemetry-store.js +30 -23
- package/dist/engine/test-framework-detector/detectors.js +8 -8
- package/dist/engine/test-framework-detector/strategy.js +8 -9
- package/dist/engine/test-generators/agent-test-templates.js +2 -3
- package/dist/engine/test-generators/contract-test-generator.d.ts +1 -1
- package/dist/engine/test-generators/contract-test-generator.js +9 -202
- package/dist/engine/test-generators/platform-test-templates-b.js +2 -3
- package/dist/engine/test-generators/platform-test-templates.js +2 -5
- package/dist/engine/test-mocks-generator.js +4 -3
- package/dist/engine/test-plan-generator.js +30 -12
- package/dist/engine/test-scaffold-generator/advanced-scaffold.js +4 -5
- package/dist/engine/test-scaffold-generator/unit-scaffold.js +5 -6
- package/dist/engine/text-signal-boundaries.d.ts +2 -0
- package/dist/engine/text-signal-boundaries.js +25 -2
- package/dist/engine/time/relative-date.d.ts +3 -0
- package/dist/engine/time/relative-date.js +16 -0
- package/dist/engine/timing/budget.d.ts +17 -17
- package/dist/engine/timing/budget.js +98 -64
- package/dist/engine/token-optimizer/analytics.d.ts +1 -1
- package/dist/engine/token-optimizer/analytics.js +5 -6
- package/dist/engine/tool-groups/group-manager.js +3 -3
- package/dist/engine/universal-rules/installer.js +1 -1
- package/dist/engine/universal-rules/rules/planu-modes.js +2 -0
- package/dist/engine/universal-rules/rules/planu-release-policy.js +1 -0
- package/dist/engine/update-notifier.js +8 -5
- package/dist/engine/usage-tracker/core.d.ts +2 -2
- package/dist/engine/usage-tracker/core.js +1 -2
- package/dist/engine/usage-tracker/index.d.ts +0 -3
- package/dist/engine/usage-tracker/index.js +0 -3
- package/dist/engine/usage-tracker/stats.d.ts +2 -2
- package/dist/engine/usage-tracker/stats.js +1 -28
- package/dist/engine/validation/approved-spec-portability.d.ts +12 -0
- package/dist/engine/validation/approved-spec-portability.js +107 -0
- package/dist/engine/validation/durable-validation.d.ts +36 -0
- package/dist/engine/validation/durable-validation.js +256 -0
- package/dist/engine/validation/validation-freshness.d.ts +46 -0
- package/dist/engine/validation/validation-freshness.js +567 -0
- package/dist/engine/validation/validation-receipt-codec.d.ts +13 -0
- package/dist/engine/validation/validation-receipt-codec.js +182 -0
- package/dist/engine/validation/validation-receipt.d.ts +62 -0
- package/dist/engine/validation/validation-receipt.js +342 -0
- package/dist/engine/validation/validation-source-digest.d.ts +2 -0
- package/dist/engine/validation/validation-source-digest.js +86 -0
- package/dist/engine/validation/validation-source-policy.d.ts +4 -0
- package/dist/engine/validation/validation-source-policy.js +16 -0
- package/dist/engine/validation/validation-submission.d.ts +37 -0
- package/dist/engine/validation/validation-submission.js +142 -0
- package/dist/engine/validation/validation-worktree.d.ts +21 -0
- package/dist/engine/validation/validation-worktree.js +260 -0
- package/dist/engine/validation-evidence-ledger.js +41 -0
- package/dist/engine/validation-impact-planner.d.ts +14 -2
- package/dist/engine/validation-impact-planner.js +23 -10
- package/dist/engine/validator/dor-dod.d.ts +1 -0
- package/dist/engine/validator/dor-dod.js +5 -3
- package/dist/engine/validator/extractors.d.ts +1 -5
- package/dist/engine/validator/extractors.js +24 -69
- package/dist/engine/validator/spec-compliance-runner.d.ts +13 -25
- package/dist/engine/validator/spec-compliance-runner.js +442 -215
- package/dist/engine/validator/validation-report-writer.js +1 -1
- package/dist/engine/validator.js +37 -23
- package/dist/engine/verify-integrations/index.js +1 -1
- package/dist/engine/version-resolver.js +5 -6
- package/dist/engine/web-fetcher/stack-advisor.js +156 -92
- package/dist/engine/web-fetcher/stack-detector.js +114 -54
- package/dist/engine/workspace-manager.js +3 -2
- package/dist/errors/classified-degradation.d.ts +3 -0
- package/dist/errors/classified-degradation.js +10 -0
- package/dist/errors/degradation-sink.d.ts +3 -0
- package/dist/errors/degradation-sink.js +5 -0
- package/dist/errors/error-taxonomy.d.ts +12 -0
- package/dist/errors/error-taxonomy.js +62 -0
- package/dist/hosts/claude-code/ux/mcp-prompts.js +10 -4
- package/dist/hosts/claude-code/ux/mcp-resources.js +4 -2
- package/dist/hosts/codex/config-scaffold.js +4 -3
- package/dist/hosts/gemini/config-scaffold.js +2 -1
- package/dist/hosts/gemini/multimodal-spec-flow.js +7 -4
- package/dist/index.js +23 -20
- package/dist/resources/patterns.js +3 -1
- package/dist/resources/specs.js +3 -1
- package/dist/resources/templates.js +3 -1
- package/dist/resources/usage-stats-resource.js +2 -18
- package/dist/security/adapters/environment.d.ts +12 -0
- package/dist/security/adapters/environment.js +25 -0
- package/dist/security/adapters/linux-secret-service.d.ts +8 -0
- package/dist/security/adapters/linux-secret-service.js +64 -0
- package/dist/security/adapters/macos-keychain.d.ts +18 -0
- package/dist/security/adapters/macos-keychain.js +90 -0
- package/dist/security/adapters/windows-credential-manager.d.ts +8 -0
- package/dist/security/adapters/windows-credential-manager.js +60 -0
- package/dist/security/redactor.d.ts +5 -0
- package/dist/security/redactor.js +58 -0
- package/dist/security/secret-field.d.ts +5 -0
- package/dist/security/secret-field.js +17 -0
- package/dist/security/secret-migration.d.ts +3 -0
- package/dist/security/secret-migration.js +123 -0
- package/dist/security/secret-provider.d.ts +23 -0
- package/dist/security/secret-provider.js +145 -0
- package/dist/security/secure-json.d.ts +3 -0
- package/dist/security/secure-json.js +29 -0
- package/dist/server/routes/specs.js +10 -0
- package/dist/storage/api-surfaces-store.js +2 -2
- package/dist/storage/approval-operation-lock.d.ts +1 -1
- package/dist/storage/approval-operation-lock.js +5 -3
- package/dist/storage/audit-trail-store.d.ts +1 -1
- package/dist/storage/audit-trail-store.js +48 -62
- package/dist/storage/autopilot-log-store.js +12 -5
- package/dist/storage/base-store.d.ts +9 -9
- package/dist/storage/base-store.js +58 -21
- package/dist/storage/checkpoint-store.js +5 -2
- package/dist/storage/comments-store.js +2 -2
- package/dist/storage/compliance-audit-store.js +5 -2
- package/dist/storage/compliance-gate-config-store.js +7 -4
- package/dist/storage/compliance-store.js +2 -2
- package/dist/storage/context-profile-store.js +2 -2
- package/dist/storage/crash-shield-store.js +8 -4
- package/dist/storage/feedback-remote.d.ts +2 -3
- package/dist/storage/feedback-remote.js +45 -31
- package/dist/storage/feedback-store.js +10 -6
- package/dist/storage/figma-store.js +8 -4
- package/dist/storage/file-mutex.js +9 -1
- package/dist/storage/gaps-log.js +7 -4
- package/dist/storage/global-projects-store.js +4 -2
- package/dist/storage/global-store.d.ts +1 -17
- package/dist/storage/global-store.js +1 -42
- package/dist/storage/ideas-store.js +2 -2
- package/dist/storage/index.d.ts +5 -2
- package/dist/storage/index.js +5 -2
- package/dist/storage/knowledge-store/knowledge.js +27 -33
- package/dist/storage/lessons-store.js +2 -2
- package/dist/storage/migrations/canonical-storage.d.ts +15 -0
- package/dist/storage/migrations/canonical-storage.js +712 -0
- package/dist/storage/oauth-store.js +36 -8
- package/dist/storage/path-resolver.js +16 -3
- package/dist/storage/pr-store.js +2 -2
- package/dist/storage/project-drift-store.js +20 -8
- package/dist/storage/project-identity.d.ts +32 -0
- package/dist/storage/project-identity.js +194 -0
- package/dist/storage/project-resolver.js +14 -7
- package/dist/storage/release-notes-store.js +2 -6
- package/dist/storage/runtime-db.d.ts +195 -0
- package/dist/storage/runtime-db.js +1110 -0
- package/dist/storage/schema-registry.d.ts +5 -0
- package/dist/storage/schema-registry.js +74 -0
- package/dist/storage/sentry-store.js +20 -9
- package/dist/storage/session-state-store.js +12 -5
- package/dist/storage/skill-registry-storage.d.ts +1 -1
- package/dist/storage/skill-registry-storage.js +13 -11
- package/dist/storage/slack-store.js +10 -5
- package/dist/storage/spec-store.d.ts +14 -2
- package/dist/storage/spec-store.js +134 -37
- package/dist/storage/status-store/atomic-status-write.d.ts +5 -0
- package/dist/storage/status-store/atomic-status-write.js +57 -0
- package/dist/storage/status-store/file-lock.js +61 -20
- package/dist/storage/status-store/self-healing.js +13 -8
- package/dist/storage/status-store/version-sync.d.ts +2 -1
- package/dist/storage/status-store/version-sync.js +36 -39
- package/dist/storage/steering-store.js +2 -2
- package/dist/storage/storage-bundle.d.ts +5 -0
- package/dist/storage/storage-bundle.js +117 -0
- package/dist/storage/storage-catalog-validation.d.ts +3 -0
- package/dist/storage/storage-catalog-validation.js +20 -0
- package/dist/storage/storage-catalog.d.ts +25 -0
- package/dist/storage/storage-catalog.js +390 -0
- package/dist/storage/storage-layout.d.ts +24 -0
- package/dist/storage/storage-layout.js +101 -0
- package/dist/storage/storybook-store.js +2 -2
- package/dist/storage/supabase-store.js +24 -6
- package/dist/storage/tdd-policy-store.js +8 -6
- package/dist/storage/tech-debt-store.js +3 -3
- package/dist/storage/technology-selection-store.d.ts +1 -1
- package/dist/storage/technology-selection-store.js +6 -3
- package/dist/storage/token-cache-store.js +3 -3
- package/dist/storage/token-ledger-store.js +13 -8
- package/dist/storage/transition-log.js +7 -4
- package/dist/storage/trash-store.js +15 -6
- package/dist/storage/usage-store.d.ts +1 -5
- package/dist/storage/usage-store.js +0 -35
- package/dist/storage/vector-store/migrator.js +7 -2
- package/dist/storage/vector-store/sqlite-adapter.js +4 -1
- package/dist/storage/webhook-server-store.js +2 -2
- package/dist/tools/api-spec-generator-handler.js +3 -2
- package/dist/tools/auto-update-handler.d.ts +4 -4
- package/dist/tools/auto-update-handler.js +4 -4
- package/dist/tools/browser-validate-handler.js +2 -1
- package/dist/tools/challenge-spec/platform-challenge-scenarios-b.js +8 -5
- package/dist/tools/challenge-spec/resilience-challenge-scenarios.d.ts +2 -1
- package/dist/tools/challenge-spec/resilience-challenge-scenarios.js +10 -7
- package/dist/tools/challenge-spec/scenario-collector.js +1 -1
- package/dist/tools/challenge-spec/scenarios-data.js +1 -1
- package/dist/tools/challenge-spec/scenarios-desktop.js +8 -3
- package/dist/tools/challenge-spec/scenarios-failure.js +7 -2
- package/dist/tools/challenge-spec/scenarios-utils.d.ts +1 -1
- package/dist/tools/challenge-spec/scenarios-utils.js +35 -11
- package/dist/tools/challenge-spec/security-challenge-scenarios.js +3 -3
- package/dist/tools/challenge-spec.js +5 -5
- package/dist/tools/check-readiness.js +1 -1
- package/dist/tools/clarify-requirements/multiple-choice.js +53 -41
- package/dist/tools/comments-handler.js +2 -3
- package/dist/tools/compliance-test-handler.js +2 -2
- package/dist/tools/configure-telemetry.js +41 -13
- package/dist/tools/create-spec/auto-pipeline.js +13 -1
- package/dist/tools/create-spec/autopilot-analyzer.d.ts +1 -1
- package/dist/tools/create-spec/autopilot-analyzer.js +2 -4
- package/dist/tools/create-spec/mcp-tool-contract.d.ts +10 -4
- package/dist/tools/create-spec/mcp-tool-contract.js +7 -36
- package/dist/tools/create-spec/post-creation.d.ts +2 -1
- package/dist/tools/create-spec/post-creation.js +56 -54
- package/dist/tools/create-spec/relevance-scorer.d.ts +1 -1
- package/dist/tools/create-spec/relevance-scorer.js +17 -1
- package/dist/tools/create-spec/spec-builder.js +2 -23
- package/dist/tools/create-spec/spec-created-outbox-consumer.d.ts +14 -0
- package/dist/tools/create-spec/spec-created-outbox-consumer.js +176 -0
- package/dist/tools/create-spec.d.ts +1 -0
- package/dist/tools/create-spec.js +802 -732
- package/dist/tools/define-ui-contract/agent-interaction-contract.js +2 -4
- package/dist/tools/define-ui-contract-desktop/desktop-contract.js +12 -4
- package/dist/tools/define-ui-contract-desktop/native-contract.js +7 -3
- package/dist/tools/define-ui-contract-extensions.js +2 -3
- package/dist/tools/define-ui-contract-mobile.js +5 -9
- package/dist/tools/define-ui-contract-web/component-tree.js +4 -3
- package/dist/tools/define-ui-contract.js +7 -4
- package/dist/tools/deploy/deploy-spec.js +2 -4
- package/dist/tools/deploy/deploy-status.js +2 -4
- package/dist/tools/design-schema/nosql-category-schemas.js +2 -3
- package/dist/tools/design-schema-sql/migrations.js +3 -2
- package/dist/tools/design-schema-sql/tables.js +4 -1
- package/dist/tools/design-schema.js +4 -3
- package/dist/tools/feedback-handler.js +2 -4
- package/dist/tools/gc-data-projects.js +5 -5
- package/dist/tools/generate-execution-plan.js +3 -4
- package/dist/tools/generate-sub-agent.js +2 -1
- package/dist/tools/generate-tests/generators/a11y-tests-generator.js +5 -4
- package/dist/tools/generate-tests/generators/advanced-testing-generator.js +5 -4
- package/dist/tools/generate-tests/generators/concurrency-test-generator/js-templates.js +9 -4
- package/dist/tools/generate-tests/generators/concurrency-test-generator.js +8 -4
- package/dist/tools/generate-tests/generators/database/detectors.js +9 -3
- package/dist/tools/generate-tests/generators/database/index.js +2 -4
- package/dist/tools/generate-tests/generators/event-test-generator.js +5 -4
- package/dist/tools/generate-tests/generators/game-tests-generator.js +2 -1
- package/dist/tools/generate-tests/generators/graphql-test-generator.js +11 -5
- package/dist/tools/generate-tests/generators/grpc-test-generator.js +2 -3
- package/dist/tools/generate-tests/generators/llm-security-test-generator.js +4 -3
- package/dist/tools/generate-tests/generators/local-first-test-generator.js +4 -3
- package/dist/tools/generate-tests/generators/mcp-tests-generator.js +11 -9
- package/dist/tools/generate-tests/generators/microservices/index.js +2 -3
- package/dist/tools/generate-tests/generators/otel-test-generator.js +6 -3
- package/dist/tools/generate-tests/generators/security/detectors.js +2 -5
- package/dist/tools/generate-tests/generators/security/index.js +2 -4
- package/dist/tools/generate-tests/generators/supply-chain-test-generator.js +2 -3
- package/dist/tools/generate-tests/generators/visual-regression-generator.js +14 -17
- package/dist/tools/generate-tests/generators/websocket-test-generator.js +2 -3
- package/dist/tools/generate-tests/test-helpers.js +11 -12
- package/dist/tools/generate-tests-content.js +4 -3
- package/dist/tools/generate-tests.js +7 -4
- package/dist/tools/git/branch-ops.d.ts +1 -1
- package/dist/tools/git/branch-ops.js +3 -2
- package/dist/tools/git/git-helpers.d.ts +0 -2
- package/dist/tools/git/git-helpers.js +7 -7
- package/dist/tools/github-pr-handler.js +10 -3
- package/dist/tools/heal-spec-docs.js +6 -53
- package/dist/tools/hook-generator-handler.js +6 -6
- package/dist/tools/init-constitution/platform-principles.js +4 -2
- package/dist/tools/init-project/agents-md-writer.js +14 -5
- package/dist/tools/init-project/claude-md-generator.js +19 -12
- package/dist/tools/init-project/handler.js +165 -75
- package/dist/tools/init-project/host-assets-writer.d.ts +1 -1
- package/dist/tools/init-project/host-assets-writer.js +30 -3
- package/dist/tools/init-project/lifecycle-helpers.js +3 -5
- package/dist/tools/init-project/lint-scaffolder.d.ts +3 -3
- package/dist/tools/init-project/lint-scaffolder.js +6 -2
- package/dist/tools/init-project/migration-runner.d.ts +8 -1
- package/dist/tools/init-project/migration-runner.js +68 -2
- package/dist/tools/init-project/per-client-files-writer.js +14 -4
- package/dist/tools/init-project/portable-index-reconciler.d.ts +4 -0
- package/dist/tools/init-project/portable-index-reconciler.js +14 -0
- package/dist/tools/init-project/result-builder.js +1 -3
- package/dist/tools/init-project/rules-generator.js +10 -2
- package/dist/tools/init-project/scaffold-writer.d.ts +1 -1
- package/dist/tools/init-project/scaffold-writer.js +17 -15
- package/dist/tools/jobs/handlers.d.ts +15 -0
- package/dist/tools/jobs/handlers.js +158 -0
- package/dist/tools/list-specs.js +39 -59
- package/dist/tools/manage-plugins-handler.js +17 -9
- package/dist/tools/merge-risk-handler.js +2 -2
- package/dist/tools/migrate-tech/advanced-handlers.js +3 -2
- package/dist/tools/migrate-tech/build-tool-handlers.js +3 -2
- package/dist/tools/migrate-tech/core-handlers.js +5 -2
- package/dist/tools/migrate-tech/data-handlers.js +6 -3
- package/dist/tools/migrate-tech-advanced/rollback-handlers.js +3 -2
- package/dist/tools/migrate-tech-advanced/service-handlers.js +5 -2
- package/dist/tools/oauth-handler.js +7 -1
- package/dist/tools/package-handoff.js +2 -0
- package/dist/tools/reconcile-spec.js +0 -27
- package/dist/tools/register-agent-squad-tools.js +2 -2
- package/dist/tools/register-platform-tools/design-stack-tools.js +11 -11
- package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +7 -7
- package/dist/tools/register-sdd-tools.d.ts +1 -1
- package/dist/tools/register-sdd-tools.js +2 -24
- package/dist/tools/register-spec-tools/analysis-tools.js +8 -8
- package/dist/tools/register-spec-tools/core-spec-tools.js +48 -8
- package/dist/tools/registry/auth.js +13 -5
- package/dist/tools/registry/publish.js +7 -4
- package/dist/tools/resolve-project-path.d.ts +2 -2
- package/dist/tools/resolve-project-path.js +7 -7
- package/dist/tools/reverse-engineer/analyzer.js +14 -14
- package/dist/tools/rollback-release.js +3 -2
- package/dist/tools/safe-handler.d.ts +5 -13
- package/dist/tools/safe-handler.js +302 -194
- package/dist/tools/schema-generator-handler.js +2 -1
- package/dist/tools/schemas/index.d.ts +1 -1
- package/dist/tools/schemas/index.js +1 -1
- package/dist/tools/schemas/output-schemas.d.ts +88 -105
- package/dist/tools/schemas/output-schemas.js +12 -122
- package/dist/tools/schemas/plugins-schemas.js +0 -2
- package/dist/tools/schemas/registry.js +0 -2
- package/dist/tools/schemas/skill-registry-schemas.js +0 -2
- package/dist/tools/schemas/spec.d.ts +4 -0
- package/dist/tools/schemas/spec.js +3 -0
- package/dist/tools/schemas/validate-output-schema.d.ts +267 -0
- package/dist/tools/schemas/validate-output-schema.js +219 -0
- package/dist/tools/sentry-handler.js +6 -1
- package/dist/tools/skill-bootstrap-handler.js +7 -4
- package/dist/tools/spec-prompt-handler.js +3 -3
- package/dist/tools/status-handler.js +4 -0
- package/dist/tools/storage-bundle-handler.d.ts +9 -0
- package/dist/tools/storage-bundle-handler.js +29 -0
- package/dist/tools/storage-paths-handler.d.ts +9 -0
- package/dist/tools/storage-paths-handler.js +17 -0
- package/dist/tools/suggest-mcp-server.js +11 -5
- package/dist/tools/suggest-mcps.js +29 -9
- package/dist/tools/suggest-tooling/advanced-testing-catalog.js +4 -5
- package/dist/tools/suggest-tooling/build-tool-catalog.js +2 -1
- package/dist/tools/suggest-tooling/css-framework-catalog.js +13 -7
- package/dist/tools/suggest-tooling/framework-catalog.js +3 -5
- package/dist/tools/suggest-tooling/frontend-perf-catalog.js +2 -6
- package/dist/tools/suggest-tooling/handler.js +10 -4
- package/dist/tools/suggest-tooling/hypermedia-catalog.js +11 -3
- package/dist/tools/suggest-tooling/linting-catalog.js +4 -7
- package/dist/tools/suggest-tooling/llm-security-catalog.js +2 -1
- package/dist/tools/suggest-tooling/local-first-catalog.js +7 -5
- package/dist/tools/suggest-tooling/observability-catalog.js +3 -4
- package/dist/tools/suggest-tooling/otel-catalog.js +4 -1
- package/dist/tools/suggest-tooling/resilience-catalog.js +16 -5
- package/dist/tools/suggest-tooling/skills-catalog.js +10 -9
- package/dist/tools/suggest-tooling/supply-chain-catalog.js +2 -3
- package/dist/tools/supabase-handler.js +2 -1
- package/dist/tools/sync-spec-state-handler.d.ts +1 -1
- package/dist/tools/sync-spec-state-handler.js +1 -1
- package/dist/tools/token-intelligence-handler.js +2 -2
- package/dist/tools/token-recording.js +2 -2
- package/dist/tools/token-savings-handler.js +2 -2
- package/dist/tools/tool-entry.d.ts +4 -4
- package/dist/tools/tool-entry.js +3 -3
- package/dist/tools/tool-registry/core-tools.js +162 -15
- package/dist/tools/tool-registry/group-infra.js +37 -122
- package/dist/tools/tool-registry/group-quality-compliance.js +31 -38
- package/dist/tools/tool-registry/inventory.d.ts +2 -0
- package/dist/tools/tool-registry/inventory.js +2 -0
- package/dist/tools/tool-registry-helpers.d.ts +3 -3
- package/dist/tools/tool-registry-helpers.js +3 -3
- package/dist/tools/tool-usage-report/registered-tools.d.ts +1 -1
- package/dist/tools/tool-usage-report/registered-tools.js +3 -15
- package/dist/tools/update-status/approval-gates.d.ts +13 -0
- package/dist/tools/update-status/approval-gates.js +84 -0
- package/dist/tools/update-status/batch.js +4 -2
- package/dist/tools/update-status/dod-gates.d.ts +6 -24
- package/dist/tools/update-status/dod-gates.js +60 -135
- package/dist/tools/update-status/done-receipt-verifier.d.ts +15 -0
- package/dist/tools/update-status/done-receipt-verifier.js +158 -0
- package/dist/tools/update-status/evidence-gate.js +190 -3
- package/dist/tools/update-status/file-sync.d.ts +2 -1
- package/dist/tools/update-status/file-sync.js +80 -18
- package/dist/tools/update-status/gate-harness.d.ts +7 -0
- package/dist/tools/update-status/gate-harness.js +8 -0
- package/dist/tools/update-status/index.d.ts +2 -0
- package/dist/tools/update-status/index.js +307 -367
- package/dist/tools/update-status/qa-gate.d.ts +1 -1
- package/dist/tools/update-status/qa-gate.js +2 -2
- package/dist/tools/update-status/response-builder.js +3 -3
- package/dist/tools/update-status/side-effects.d.ts +2 -0
- package/dist/tools/update-status/side-effects.js +32 -39
- package/dist/tools/update-status/transition-guard.d.ts +4 -2
- package/dist/tools/update-status/transition-guard.js +89 -25
- package/dist/tools/update-status-actions.d.ts +4 -2
- package/dist/tools/update-status-actions.js +16 -14
- package/dist/tools/update-status-convention-gate.js +24 -23
- package/dist/tools/update-status-reconcile.js +2 -2
- package/dist/tools/usage-report.js +1 -16
- package/dist/tools/usage-stats.js +1 -18
- package/dist/tools/usage-tracking.d.ts +4 -0
- package/dist/tools/usage-tracking.js +20 -0
- package/dist/tools/validate-api-contract-handler.js +3 -3
- package/dist/tools/validate-lint.d.ts +1 -0
- package/dist/tools/validate-lint.js +21 -14
- package/dist/tools/validate.d.ts +4 -1
- package/dist/tools/validate.js +319 -31
- package/dist/transports/http-transport.js +87 -66
- package/dist/transports/mcp-types.d.ts +0 -2
- package/dist/transports/middleware/with-telemetry.js +3 -2
- package/dist/transports/session-context.js +1 -1
- package/dist/types/abortable-process.d.ts +2 -0
- package/dist/types/advanced-framework.js +0 -2
- package/dist/types/atomic-upgrade.d.ts +71 -0
- package/dist/types/atomic-upgrade.js +2 -0
- package/dist/types/cascade-hooks.d.ts +1 -1
- package/dist/types/ci.d.ts +0 -4
- package/dist/types/ci.js +0 -2
- package/dist/types/clarification-token.d.ts +1 -1
- package/dist/types/claude-code-runtime.d.ts +0 -27
- package/dist/types/commercial-migration.d.ts +17 -0
- package/dist/types/commercial-migration.js +2 -0
- package/dist/types/common/primitives.d.ts +0 -2
- package/dist/types/core-bridge.d.ts +81 -10
- package/dist/types/crash-shield-framework-rules.d.ts +24 -0
- package/dist/types/crash-shield-framework-rules.js +2 -0
- package/dist/types/dashboard.d.ts +3 -7
- package/dist/types/data-gc.d.ts +16 -0
- package/dist/types/deploy.js +0 -2
- package/dist/types/docs.d.ts +0 -1
- package/dist/types/durable-job.d.ts +78 -0
- package/dist/types/durable-job.js +2 -0
- package/dist/types/durable-validation.d.ts +158 -0
- package/dist/types/durable-validation.js +166 -0
- package/dist/types/errors/structured-error.d.ts +3 -3
- package/dist/types/estimation.d.ts +4 -0
- package/dist/types/evidence-gates.d.ts +17 -1
- package/dist/types/execution.d.ts +45 -0
- package/dist/types/gemini-integration.d.ts +0 -11
- package/dist/types/handoff-artifacts.d.ts +43 -0
- package/dist/types/hooks-advanced.d.ts +0 -13
- package/dist/types/impact-detection.d.ts +2 -2
- package/dist/types/index.d.ts +4 -6
- package/dist/types/index.js +3 -5
- package/dist/types/infrastructure.js +0 -2
- package/dist/types/kiro-integration.d.ts +0 -6
- package/dist/types/lifecycle.js +0 -2
- package/dist/types/migration/canonical-storage.d.ts +37 -0
- package/dist/types/migration/canonical-storage.js +2 -0
- package/dist/types/migration/index.d.ts +1 -1
- package/dist/types/native-worker.d.ts +48 -0
- package/dist/types/native-worker.js +2 -0
- package/dist/types/network-policy.d.ts +12 -0
- package/dist/types/network-policy.js +2 -0
- package/dist/types/oauth.js +0 -2
- package/dist/types/observability.d.ts +32 -0
- package/dist/types/outbox-worker.d.ts +35 -0
- package/dist/types/outbox-worker.js +11 -0
- package/dist/types/permissions-config.d.ts +0 -27
- package/dist/types/permissions-config.js +0 -2
- package/dist/types/plugin-install.d.ts +0 -11
- package/dist/types/plugin-install.js +0 -2
- package/dist/types/portal.d.ts +1 -0
- package/dist/types/product-public.d.ts +75 -0
- package/dist/types/product-public.js +2 -0
- package/dist/types/project/inputs.d.ts +2 -0
- package/dist/types/project/lint-scaffolder.d.ts +1 -1
- package/dist/types/project/mfe-detection.js +0 -2
- package/dist/types/project/platform-mobile.js +0 -2
- package/dist/types/project/platform-specialty.js +0 -2
- package/dist/types/project-knowledge-graph.d.ts +7 -0
- package/dist/types/runtime-database.d.ts +10 -0
- package/dist/types/runtime-database.js +2 -0
- package/dist/types/runtime-policy.d.ts +51 -0
- package/dist/types/runtime-policy.js +2 -0
- package/dist/types/safety.d.ts +4 -5
- package/dist/types/schema-registry.d.ts +12 -0
- package/dist/types/schema-registry.js +2 -0
- package/dist/types/security.d.ts +52 -0
- package/dist/types/session-safeguard.d.ts +0 -31
- package/dist/types/skill-registry.js +0 -2
- package/dist/types/spec/canonical-repair.d.ts +81 -0
- package/dist/types/spec/canonical-repair.js +2 -0
- package/dist/types/spec/core.d.ts +14 -0
- package/dist/types/spec/index.d.ts +1 -0
- package/dist/types/spec/index.js +1 -0
- package/dist/types/spec/inputs.d.ts +31 -0
- package/dist/types/spec-format.d.ts +24 -0
- package/dist/types/spec-lock-v2.d.ts +13 -7
- package/dist/types/spec-lock-v2.js +1 -1
- package/dist/types/spec-registry.js +0 -2
- package/dist/types/storage-bundle.d.ts +13 -0
- package/dist/types/storage-bundle.js +2 -0
- package/dist/types/storage-catalog.d.ts +18 -0
- package/dist/types/storage-catalog.js +2 -0
- package/dist/types/team-planner.js +0 -2
- package/dist/types/technology-registry.d.ts +35 -0
- package/dist/types/technology-registry.js +2 -0
- package/dist/types/technology-symbols.generated.d.ts +117 -0
- package/dist/types/technology-symbols.generated.js +2 -0
- package/dist/types/telemetry.d.ts +7 -4
- package/dist/types/transport.d.ts +2 -2
- package/dist/types/usage.d.ts +1 -36
- package/dist/types/usage.js +1 -1
- package/dist/types/validate-worker.d.ts +50 -0
- package/dist/types/validate-worker.js +2 -0
- package/dist/types/validation-evidence.d.ts +1 -1
- package/dist/types/validation-receipt.d.ts +104 -0
- package/dist/types/validation-receipt.js +2 -0
- package/dist/types/validation.d.ts +2 -2
- package/package.json +36 -21
- package/planu-native.json +1 -1
- package/planu-plugin.json +23 -40
- package/scripts/lib/pending-release-file.mjs +93 -0
- package/src/i18n/messages/en.json +0 -41
- package/src/i18n/messages/es.json +0 -41
- package/src/i18n/messages/pt.json +0 -41
- package/dist/cli/commands/activate.d.ts +0 -14
- package/dist/cli/commands/activate.js +0 -174
- package/dist/config/license-plans.json +0 -244
- package/dist/config/server-instructions.ts +0 -121
- package/dist/config/version-defaults.ts +0 -76
- package/dist/config/version.ts +0 -18
- package/dist/engine/ai-integration/gemini/settings-generator.d.ts +0 -4
- package/dist/engine/ai-integration/gemini/settings-generator.js +0 -195
- package/dist/engine/ai-integration/kiro/hooks-generator.d.ts +0 -6
- package/dist/engine/ai-integration/kiro/hooks-generator.js +0 -75
- package/dist/engine/hooks/full-spectrum-generator.d.ts +0 -32
- package/dist/engine/hooks/full-spectrum-generator.js +0 -117
- package/dist/engine/license-validator/config-loader.d.ts +0 -5
- package/dist/engine/license-validator/config-loader.js +0 -16
- package/dist/engine/license-validator/core.d.ts +0 -15
- package/dist/engine/license-validator/core.js +0 -151
- package/dist/engine/license-validator/fingerprint.d.ts +0 -3
- package/dist/engine/license-validator/fingerprint.js +0 -17
- package/dist/engine/license-validator/lemon-squeezy.d.ts +0 -5
- package/dist/engine/license-validator/lemon-squeezy.js +0 -55
- package/dist/engine/license-validator.d.ts +0 -5
- package/dist/engine/license-validator.js +0 -6
- package/dist/engine/product-intelligence/index.d.ts +0 -7
- package/dist/engine/product-intelligence/index.js +0 -211
- package/dist/engine/session/auto-save.d.ts +0 -18
- package/dist/engine/session/auto-save.js +0 -98
- package/dist/engine/session/context-snapshot.d.ts +0 -8
- package/dist/engine/session/context-snapshot.js +0 -49
- package/dist/engine/session/memory-sync.d.ts +0 -12
- package/dist/engine/session/memory-sync.js +0 -34
- package/dist/engine/session/session-diff.d.ts +0 -11
- package/dist/engine/session/session-diff.js +0 -42
- package/dist/engine/session/session-merge.d.ts +0 -12
- package/dist/engine/session/session-merge.js +0 -55
- package/dist/engine/session-safeguard/checkpoint-runner.d.ts +0 -4
- package/dist/engine/session-safeguard/checkpoint-runner.js +0 -70
- package/dist/engine/session-safeguard/learnings-buffer.d.ts +0 -16
- package/dist/engine/session-safeguard/learnings-buffer.js +0 -114
- package/dist/engine/session-safeguard/precompaction-drain.d.ts +0 -10
- package/dist/engine/session-safeguard/precompaction-drain.js +0 -82
- package/dist/engine/session-safeguard/unpushed-detector.d.ts +0 -7
- package/dist/engine/session-safeguard/unpushed-detector.js +0 -59
- package/dist/engine/spec-changelog/core.d.ts +0 -16
- package/dist/engine/spec-changelog/core.js +0 -176
- package/dist/engine/spec-changelog/diff.d.ts +0 -18
- package/dist/engine/spec-changelog/diff.js +0 -121
- package/dist/engine/spec-changelog/index.d.ts +0 -3
- package/dist/engine/spec-changelog/index.js +0 -4
- package/dist/engine/telemetry/geo-resolver.d.ts +0 -9
- package/dist/engine/telemetry/geo-resolver.js +0 -43
- package/dist/engine/trial-engine.d.ts +0 -5
- package/dist/engine/trial-engine.js +0 -14
- package/dist/engine/usage-tracker/rate-check.d.ts +0 -7
- package/dist/engine/usage-tracker/rate-check.js +0 -18
- package/dist/engine/usage-tracker/rate-limiter.d.ts +0 -14
- package/dist/engine/usage-tracker/rate-limiter.js +0 -73
- package/dist/engine/usage-tracker/trial.d.ts +0 -27
- package/dist/engine/usage-tracker/trial.js +0 -49
- package/dist/engine/webhook/event-handlers.d.ts +0 -25
- package/dist/engine/webhook/event-handlers.js +0 -89
- package/dist/engine/webhook/index.d.ts +0 -4
- package/dist/engine/webhook/index.js +0 -5
- package/dist/engine/webhook/server.d.ts +0 -12
- package/dist/engine/webhook/server.js +0 -249
- package/dist/engine/webhook/signature.d.ts +0 -16
- package/dist/engine/webhook/signature.js +0 -49
- package/dist/storage/data-dir-discovery.d.ts +0 -31
- package/dist/storage/data-dir-discovery.js +0 -140
- package/dist/storage/license-store.d.ts +0 -6
- package/dist/storage/license-store.js +0 -91
- package/dist/storage/migrations/cwd-to-absolute.d.ts +0 -25
- package/dist/storage/migrations/cwd-to-absolute.js +0 -281
- package/dist/storage/session-store.d.ts +0 -20
- package/dist/storage/session-store.js +0 -128
- package/dist/tools/activate-license.d.ts +0 -6
- package/dist/tools/activate-license.js +0 -132
- package/dist/tools/checkpoint-handler.d.ts +0 -3
- package/dist/tools/checkpoint-handler.js +0 -130
- package/dist/tools/create-spec/adapters/prior-decisions-hint.d.ts +0 -14
- package/dist/tools/create-spec/adapters/prior-decisions-hint.js +0 -30
- package/dist/tools/export-session.d.ts +0 -3
- package/dist/tools/export-session.js +0 -90
- package/dist/tools/init-project/ancestor-data-detector.d.ts +0 -22
- package/dist/tools/init-project/ancestor-data-detector.js +0 -81
- package/dist/tools/license-gate.d.ts +0 -18
- package/dist/tools/license-gate.js +0 -222
- package/dist/tools/license-status.d.ts +0 -3
- package/dist/tools/license-status.js +0 -93
- package/dist/tools/list-sessions.d.ts +0 -3
- package/dist/tools/list-sessions.js +0 -46
- package/dist/tools/planu-session-checkpoint.d.ts +0 -6
- package/dist/tools/planu-session-checkpoint.js +0 -42
- package/dist/tools/restore-session.d.ts +0 -3
- package/dist/tools/restore-session.js +0 -71
- package/dist/tools/spec-history.d.ts +0 -3
- package/dist/tools/spec-history.js +0 -59
- package/dist/tools/update-status/force-done-audit.d.ts +0 -2
- package/dist/tools/update-status/force-done-audit.js +0 -23
- package/dist/tools/webhook.d.ts +0 -6
- package/dist/tools/webhook.js +0 -150
- package/dist/types/changelog.d.ts +0 -49
- package/dist/types/changelog.js +0 -3
- package/dist/types/licensing.d.ts +0 -109
- package/dist/types/licensing.js +0 -4
- package/dist/types/migration/cwd-to-absolute.d.ts +0 -8
- package/dist/types/migration/cwd-to-absolute.js +0 -3
- package/dist/types/product-intelligence.d.ts +0 -60
- package/dist/types/product-intelligence.js +0 -3
- package/dist/types/session.d.ts +0 -84
- package/dist/types/session.js +0 -3
- package/dist/types/webhook.d.ts +0 -62
- package/dist/types/webhook.js +0 -4
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
// engine/spec-changelog/core.ts — Changelog entry creation and persistence
|
|
2
|
-
import { readFile, writeFile } from 'node:fs/promises';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
const CHANGELOG_FILENAME = 'CHANGELOG.md';
|
|
5
|
-
const CHANGELOG_VERSION_COMMENT = '<!-- changelog-version: 1 -->';
|
|
6
|
-
/** Format a single changelog entry as Markdown. */
|
|
7
|
-
export function formatEntry(entry, specId) {
|
|
8
|
-
const lines = [];
|
|
9
|
-
lines.push(`## ${entry.timestamp} — ${entry.type}`);
|
|
10
|
-
lines.push('');
|
|
11
|
-
lines.push(`**Tool**: ${entry.triggeredBy}`);
|
|
12
|
-
lines.push(`**Descripcion**: ${entry.description}`);
|
|
13
|
-
lines.push('');
|
|
14
|
-
if (entry.before !== undefined && entry.after !== undefined) {
|
|
15
|
-
if (entry.type === 'status_changed') {
|
|
16
|
-
lines.push(`**Antes**: ${entry.before.status} | **Despues**: ${entry.after.status}`);
|
|
17
|
-
lines.push(`**Progreso**: ${entry.before.completedCount}/${entry.before.criteriaCount} → ${entry.after.completedCount}/${entry.after.criteriaCount}`);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
lines.push(`**Criterios antes**: ${entry.before.criteriaCount} | **Criterios despues**: ${entry.after.criteriaCount}`);
|
|
21
|
-
if (entry.type === 'progress_updated') {
|
|
22
|
-
lines.push(`**Progreso**: ${entry.before.completedCount}/${entry.before.criteriaCount} → ${entry.after.completedCount}/${entry.after.criteriaCount}`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
lines.push('');
|
|
26
|
-
}
|
|
27
|
-
if (entry.diff !== undefined) {
|
|
28
|
-
const { added, removed, modified } = entry.diff;
|
|
29
|
-
const hasCriteriaChanges = added.length > 0 || removed.length > 0 || modified.length > 0;
|
|
30
|
-
if (hasCriteriaChanges) {
|
|
31
|
-
lines.push('### Criterios modificados');
|
|
32
|
-
for (const item of added) {
|
|
33
|
-
lines.push(`\u2795 ${item}`);
|
|
34
|
-
}
|
|
35
|
-
for (const item of removed) {
|
|
36
|
-
lines.push(`\u2796 ${item}`);
|
|
37
|
-
}
|
|
38
|
-
for (const item of modified) {
|
|
39
|
-
lines.push(`\u270f\ufe0f ${item.after} (antes: ${item.before})`);
|
|
40
|
-
}
|
|
41
|
-
lines.push('');
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
lines.push('---');
|
|
45
|
-
lines.push('');
|
|
46
|
-
void specId; // referenced in header externally
|
|
47
|
-
return lines.join('\n');
|
|
48
|
-
}
|
|
49
|
-
/** Build the full CHANGELOG.md header for a spec. */
|
|
50
|
-
function buildHeader(specId, specTitle) {
|
|
51
|
-
const title = specTitle ? `${specId}: ${specTitle}` : specId;
|
|
52
|
-
return [CHANGELOG_VERSION_COMMENT, '', `# Changelog — ${title}`, '', ''].join('\n');
|
|
53
|
-
}
|
|
54
|
-
/** Parse the timestamp from the first entry in a CHANGELOG.md content. */
|
|
55
|
-
export function parseFirstEntryTimestamp(content) {
|
|
56
|
-
// Matches lines like: ## 2026-03-04T14:23:00Z — reconciled
|
|
57
|
-
const match = /^## (\d{4}-\d{2}-\d{2}T[\d:.]+Z) —/m.exec(content);
|
|
58
|
-
return match?.[1] ?? null;
|
|
59
|
-
}
|
|
60
|
-
/** Parse changelog entries from a CHANGELOG.md content string. */
|
|
61
|
-
export function parseChangelogEntries(content, specId) {
|
|
62
|
-
const entries = [];
|
|
63
|
-
// Split on section headers: ## <timestamp> — <type>
|
|
64
|
-
const sectionRegex = /^## (\d{4}-\d{2}-\d{2}T[\d:.]+Z) — (\w+)/gm;
|
|
65
|
-
const matches = [...content.matchAll(sectionRegex)];
|
|
66
|
-
for (const match of matches) {
|
|
67
|
-
const timestamp = match[1];
|
|
68
|
-
const type = match[2];
|
|
69
|
-
if (timestamp === undefined || type === undefined) {
|
|
70
|
-
continue;
|
|
71
|
-
}
|
|
72
|
-
const sectionStart = match.index;
|
|
73
|
-
const nextIdx = matches.indexOf(match) + 1;
|
|
74
|
-
const nextMatch = nextIdx < matches.length ? matches[nextIdx] : undefined;
|
|
75
|
-
const sectionEnd = nextMatch?.index ?? content.length;
|
|
76
|
-
const sectionContent = content.slice(sectionStart, sectionEnd);
|
|
77
|
-
// Extract tool name
|
|
78
|
-
const toolMatch = /\*\*Tool\*\*: (.+)/.exec(sectionContent);
|
|
79
|
-
const triggeredBy = toolMatch?.[1]?.trim() ?? 'unknown';
|
|
80
|
-
// Extract description
|
|
81
|
-
const descMatch = /\*\*Descripcion\*\*: (.+)/.exec(sectionContent);
|
|
82
|
-
const description = descMatch?.[1]?.trim() ?? '';
|
|
83
|
-
entries.push({
|
|
84
|
-
timestamp,
|
|
85
|
-
type: type,
|
|
86
|
-
description,
|
|
87
|
-
triggeredBy,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
void specId;
|
|
91
|
-
return entries;
|
|
92
|
-
}
|
|
93
|
-
/** Read the CHANGELOG.md for a spec directory. Returns null if not found. */
|
|
94
|
-
export async function readChangelog(options) {
|
|
95
|
-
const { specDir, specId } = options;
|
|
96
|
-
const filePath = join(specDir, CHANGELOG_FILENAME);
|
|
97
|
-
try {
|
|
98
|
-
const content = await readFile(filePath, 'utf-8');
|
|
99
|
-
const entries = parseChangelogEntries(content, specId);
|
|
100
|
-
return { specId, entries };
|
|
101
|
-
}
|
|
102
|
-
catch {
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/** Read only the timestamp of the last (most recent) changelog entry. Optimized for list_specs. */
|
|
107
|
-
export async function readLastModifiedTimestamp(specDir) {
|
|
108
|
-
const filePath = join(specDir, CHANGELOG_FILENAME);
|
|
109
|
-
try {
|
|
110
|
-
const content = await readFile(filePath, 'utf-8');
|
|
111
|
-
return parseFirstEntryTimestamp(content);
|
|
112
|
-
}
|
|
113
|
-
catch {
|
|
114
|
-
return null;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/** Append a new entry to the CHANGELOG.md for a spec. Creates the file if it doesn't exist. */
|
|
118
|
-
export async function appendChangelogEntry(options) {
|
|
119
|
-
const { specDir, specId, entry } = options;
|
|
120
|
-
const filePath = join(specDir, CHANGELOG_FILENAME);
|
|
121
|
-
try {
|
|
122
|
-
let existingContent = '';
|
|
123
|
-
let hasHeader = false;
|
|
124
|
-
try {
|
|
125
|
-
existingContent = await readFile(filePath, 'utf-8');
|
|
126
|
-
hasHeader = existingContent.includes(CHANGELOG_VERSION_COMMENT);
|
|
127
|
-
}
|
|
128
|
-
catch {
|
|
129
|
-
// File doesn't exist yet — will create fresh
|
|
130
|
-
}
|
|
131
|
-
const entryMarkdown = formatEntry(entry, specId);
|
|
132
|
-
let newContent;
|
|
133
|
-
if (!hasHeader) {
|
|
134
|
-
newContent = buildHeader(specId) + entryMarkdown + existingContent;
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
// Insert after the header block (after the # Changelog line)
|
|
138
|
-
const insertAfterPattern = /^# Changelog[^\n]*\n\n/m;
|
|
139
|
-
const match = insertAfterPattern.exec(existingContent);
|
|
140
|
-
if (match) {
|
|
141
|
-
const insertAt = match.index + match[0].length;
|
|
142
|
-
newContent =
|
|
143
|
-
existingContent.slice(0, insertAt) + entryMarkdown + existingContent.slice(insertAt);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
// Fallback: append after existing content
|
|
147
|
-
newContent = existingContent + entryMarkdown;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
await writeFile(filePath, newContent, 'utf-8');
|
|
151
|
-
return true;
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
console.error(`[spec-changelog] Failed to write CHANGELOG.md for ${specId}:`, error);
|
|
155
|
-
return false;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
/** Format a relative date string (e.g. "hace 2 dias") for a timestamp. */
|
|
159
|
-
export function formatRelativeDate(timestamp) {
|
|
160
|
-
const date = new Date(timestamp);
|
|
161
|
-
const now = new Date();
|
|
162
|
-
const diffMs = now.getTime() - date.getTime();
|
|
163
|
-
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
164
|
-
if (diffDays === 0) {
|
|
165
|
-
return 'hoy';
|
|
166
|
-
}
|
|
167
|
-
if (diffDays === 1) {
|
|
168
|
-
return 'hace 1 dia';
|
|
169
|
-
}
|
|
170
|
-
if (diffDays <= 30) {
|
|
171
|
-
return `hace ${diffDays} dias`;
|
|
172
|
-
}
|
|
173
|
-
// Older than 30 days: return ISO date portion
|
|
174
|
-
return timestamp.slice(0, 10);
|
|
175
|
-
}
|
|
176
|
-
//# sourceMappingURL=core.js.map
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { CriteriaDiff } from '../../types/index.js';
|
|
2
|
-
/** Normalize a criteria text for comparison (trim, collapse whitespace). */
|
|
3
|
-
export declare function normalizeCriteriaText(text: string): string;
|
|
4
|
-
/**
|
|
5
|
-
* Compute a simple similarity score (0–1) between two strings.
|
|
6
|
-
* Uses character bigram overlap.
|
|
7
|
-
*/
|
|
8
|
-
export declare function similarityScore(a: string, b: string): number;
|
|
9
|
-
/**
|
|
10
|
-
* Compute semantic diff between two sets of criteria texts.
|
|
11
|
-
* Returns added, removed, and modified criteria.
|
|
12
|
-
*/
|
|
13
|
-
export declare function computeCriteriaDiff(before: string[], after: string[]): CriteriaDiff;
|
|
14
|
-
/**
|
|
15
|
-
* Returns true if the diff contains any actual changes.
|
|
16
|
-
*/
|
|
17
|
-
export declare function hasDiffChanges(diff: CriteriaDiff): boolean;
|
|
18
|
-
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
// engine/spec-changelog/diff.ts — Semantic diff calculation for spec criteria
|
|
2
|
-
/** Normalize a criteria text for comparison (trim, collapse whitespace). */
|
|
3
|
-
export function normalizeCriteriaText(text) {
|
|
4
|
-
return text
|
|
5
|
-
.replace(/^#+\s+/, '') // remove markdown headers
|
|
6
|
-
.replace(/\*\*/g, '') // remove bold markers
|
|
7
|
-
.replace(/\s+/g, ' ') // collapse whitespace
|
|
8
|
-
.trim()
|
|
9
|
-
.toLowerCase();
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Compute a simple similarity score (0–1) between two strings.
|
|
13
|
-
* Uses character bigram overlap.
|
|
14
|
-
*/
|
|
15
|
-
export function similarityScore(a, b) {
|
|
16
|
-
if (a.length === 0 && b.length === 0) {
|
|
17
|
-
return 0;
|
|
18
|
-
}
|
|
19
|
-
if (a === b) {
|
|
20
|
-
return 1;
|
|
21
|
-
}
|
|
22
|
-
if (a.length === 0 || b.length === 0) {
|
|
23
|
-
return 0;
|
|
24
|
-
}
|
|
25
|
-
const buildBigrams = (str) => {
|
|
26
|
-
const bigrams = new Set();
|
|
27
|
-
for (let i = 0; i < str.length - 1; i++) {
|
|
28
|
-
bigrams.add(str.slice(i, i + 2));
|
|
29
|
-
}
|
|
30
|
-
return bigrams;
|
|
31
|
-
};
|
|
32
|
-
const bigramsA = buildBigrams(a);
|
|
33
|
-
const bigramsB = buildBigrams(b);
|
|
34
|
-
let intersection = 0;
|
|
35
|
-
for (const bigram of bigramsA) {
|
|
36
|
-
if (bigramsB.has(bigram)) {
|
|
37
|
-
intersection++;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const total = bigramsA.size + bigramsB.size;
|
|
41
|
-
// Single-char strings produce no bigrams — fall back to exact match
|
|
42
|
-
if (total === 0) {
|
|
43
|
-
return a === b ? 1 : 0;
|
|
44
|
-
}
|
|
45
|
-
return (2 * intersection) / total;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Compute semantic diff between two sets of criteria texts.
|
|
49
|
-
* Returns added, removed, and modified criteria.
|
|
50
|
-
*/
|
|
51
|
-
export function computeCriteriaDiff(before, after) {
|
|
52
|
-
const normalizedBefore = before.map(normalizeCriteriaText);
|
|
53
|
-
const normalizedAfter = after.map(normalizeCriteriaText);
|
|
54
|
-
const SIMILARITY_THRESHOLD = 0.6;
|
|
55
|
-
const matchedBeforeIndices = new Set();
|
|
56
|
-
const matchedAfterIndices = new Set();
|
|
57
|
-
const modified = [];
|
|
58
|
-
// Find modifications: pairs with high similarity but not identical
|
|
59
|
-
for (let i = 0; i < normalizedBefore.length; i++) {
|
|
60
|
-
const nb = normalizedBefore[i];
|
|
61
|
-
/* v8 ignore next 2 — noUncheckedIndexedAccess guard; array built with .map() so never undefined */
|
|
62
|
-
if (nb === undefined) {
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
let bestScore = 0;
|
|
66
|
-
let bestJ = -1;
|
|
67
|
-
for (let j = 0; j < normalizedAfter.length; j++) {
|
|
68
|
-
if (matchedAfterIndices.has(j)) {
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
const na = normalizedAfter[j];
|
|
72
|
-
/* v8 ignore next 2 — noUncheckedIndexedAccess guard; array built with .map() so never undefined */
|
|
73
|
-
if (na === undefined) {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
const score = similarityScore(nb, na);
|
|
77
|
-
if (score > bestScore) {
|
|
78
|
-
bestScore = score;
|
|
79
|
-
bestJ = j;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
if (bestScore >= SIMILARITY_THRESHOLD && bestJ !== -1) {
|
|
83
|
-
matchedBeforeIndices.add(i);
|
|
84
|
-
matchedAfterIndices.add(bestJ);
|
|
85
|
-
const beforeText = before[i];
|
|
86
|
-
const afterText = after[bestJ];
|
|
87
|
-
// Only report as modified if texts actually differ
|
|
88
|
-
if (beforeText !== undefined && afterText !== undefined && beforeText !== afterText) {
|
|
89
|
-
modified.push({ before: beforeText, after: afterText });
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
// Removed: unmatched before items
|
|
94
|
-
const removed = [];
|
|
95
|
-
for (let i = 0; i < before.length; i++) {
|
|
96
|
-
if (!matchedBeforeIndices.has(i)) {
|
|
97
|
-
const text = before[i];
|
|
98
|
-
if (text !== undefined) {
|
|
99
|
-
removed.push(text);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// Added: unmatched after items
|
|
104
|
-
const added = [];
|
|
105
|
-
for (let j = 0; j < after.length; j++) {
|
|
106
|
-
if (!matchedAfterIndices.has(j)) {
|
|
107
|
-
const text = after[j];
|
|
108
|
-
if (text !== undefined) {
|
|
109
|
-
added.push(text);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
return { added, removed, modified };
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Returns true if the diff contains any actual changes.
|
|
117
|
-
*/
|
|
118
|
-
export function hasDiffChanges(diff) {
|
|
119
|
-
return diff.added.length > 0 || diff.removed.length > 0 || diff.modified.length > 0;
|
|
120
|
-
}
|
|
121
|
-
//# sourceMappingURL=diff.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { GeoData } from '../../types/index.js';
|
|
2
|
-
/**
|
|
3
|
-
* Returns geo data for the current machine IP.
|
|
4
|
-
* Cached after the first successful call; null if the lookup fails or times out.
|
|
5
|
-
*/
|
|
6
|
-
export declare function resolveGeo(): Promise<GeoData | null>;
|
|
7
|
-
/** Reset cache — used in tests. */
|
|
8
|
-
export declare function resetGeoCache(): void;
|
|
9
|
-
//# sourceMappingURL=geo-resolver.d.ts.map
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// engine/telemetry/geo-resolver.ts — Cached geo-IP lookup for telemetry enrichment.
|
|
2
|
-
// Uses ip-api.com (free, no API key, 45 req/min). Called once per process lifecycle.
|
|
3
|
-
// Never throws — geo enrichment is purely best-effort.
|
|
4
|
-
let cachedGeo = null;
|
|
5
|
-
let lookupAttempted = false;
|
|
6
|
-
/**
|
|
7
|
-
* Returns geo data for the current machine IP.
|
|
8
|
-
* Cached after the first successful call; null if the lookup fails or times out.
|
|
9
|
-
*/
|
|
10
|
-
export async function resolveGeo() {
|
|
11
|
-
if (lookupAttempted) {
|
|
12
|
-
return cachedGeo;
|
|
13
|
-
}
|
|
14
|
-
lookupAttempted = true;
|
|
15
|
-
try {
|
|
16
|
-
const res = await fetch('http://ip-api.com/json/?fields=country,countryCode,city,timezone', {
|
|
17
|
-
signal: AbortSignal.timeout(2_000),
|
|
18
|
-
});
|
|
19
|
-
if (!res.ok) {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
const data = (await res.json());
|
|
23
|
-
if (typeof data.countryCode !== 'string') {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
cachedGeo = {
|
|
27
|
-
country: typeof data.country === 'string' ? data.country : '',
|
|
28
|
-
countryCode: data.countryCode,
|
|
29
|
-
city: typeof data.city === 'string' ? data.city : '',
|
|
30
|
-
timezone: typeof data.timezone === 'string' ? data.timezone : '',
|
|
31
|
-
};
|
|
32
|
-
return cachedGeo;
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/** Reset cache — used in tests. */
|
|
39
|
-
export function resetGeoCache() {
|
|
40
|
-
cachedGeo = null;
|
|
41
|
-
lookupAttempted = false;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=geo-resolver.js.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare function getInstallationId(): string;
|
|
2
|
-
export declare function getTrialStatus(_projectId?: string): null;
|
|
3
|
-
export declare function isTrialActive(_projectId?: string): boolean;
|
|
4
|
-
export declare function requestTrial(_projectId?: string): Promise<void>;
|
|
5
|
-
//# sourceMappingURL=trial-engine.d.ts.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// engine/trial-engine.ts — Trial stub (trial tools removed in SPEC-533)
|
|
2
|
-
export function getInstallationId() {
|
|
3
|
-
return 'n/a';
|
|
4
|
-
}
|
|
5
|
-
export function getTrialStatus(_projectId) {
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
export function isTrialActive(_projectId) {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
export async function requestTrial(_projectId) {
|
|
12
|
-
// No-op: trial tools removed
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=trial-engine.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { RateLimitResult } from '../../types/index.js';
|
|
2
|
-
/**
|
|
3
|
-
* Evaluates both daily limit and cooldown in a single call.
|
|
4
|
-
* Returns the first failing check, or an allowed result if both pass.
|
|
5
|
-
*/
|
|
6
|
-
export declare function evaluateRateLimit(callCount: number, maxCalls: number, lastCallAt: string | null, now: Date): RateLimitResult;
|
|
7
|
-
//# sourceMappingURL=rate-check.d.ts.map
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
// engine/usage-tracker/rate-check.ts — Composed rate-limit evaluation (pure, no I/O).
|
|
2
|
-
import { checkDailyLimit, checkCooldown } from './rate-limiter.js';
|
|
3
|
-
/**
|
|
4
|
-
* Evaluates both daily limit and cooldown in a single call.
|
|
5
|
-
* Returns the first failing check, or an allowed result if both pass.
|
|
6
|
-
*/
|
|
7
|
-
export function evaluateRateLimit(callCount, maxCalls, lastCallAt, now) {
|
|
8
|
-
const daily = checkDailyLimit(callCount, maxCalls);
|
|
9
|
-
if (!daily.allowed) {
|
|
10
|
-
return daily;
|
|
11
|
-
}
|
|
12
|
-
const cooldown = checkCooldown(lastCallAt, now);
|
|
13
|
-
if (!cooldown.allowed) {
|
|
14
|
-
return cooldown;
|
|
15
|
-
}
|
|
16
|
-
return daily;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=rate-check.js.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { RateLimitResult } from '../../types/index.js';
|
|
2
|
-
/** Minimum milliseconds required between consecutive tool calls. */
|
|
3
|
-
export declare const COOLDOWN_MS = 2000;
|
|
4
|
-
/**
|
|
5
|
-
* Checks whether the caller has exceeded the daily call limit.
|
|
6
|
-
* Returns an allowed result when maxCalls is -1 (unlimited).
|
|
7
|
-
*/
|
|
8
|
-
export declare function checkDailyLimit(callCount: number, maxCalls: number): RateLimitResult;
|
|
9
|
-
/**
|
|
10
|
-
* Checks whether enough time has passed since the last tool call.
|
|
11
|
-
* Passes when lastCallAt is null (no previous call recorded).
|
|
12
|
-
*/
|
|
13
|
-
export declare function checkCooldown(lastCallAt: string | null, now: Date): RateLimitResult;
|
|
14
|
-
//# sourceMappingURL=rate-limiter.d.ts.map
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
// engine/usage-tracker/rate-limiter.ts — Rate limiting logic (pure functions, no I/O).
|
|
2
|
-
// ---------------------------------------------------------------------------
|
|
3
|
-
// Constants
|
|
4
|
-
// ---------------------------------------------------------------------------
|
|
5
|
-
/** Minimum milliseconds required between consecutive tool calls. */
|
|
6
|
-
export const COOLDOWN_MS = 2000;
|
|
7
|
-
// ---------------------------------------------------------------------------
|
|
8
|
-
// Daily limit check
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
/**
|
|
11
|
-
* Checks whether the caller has exceeded the daily call limit.
|
|
12
|
-
* Returns an allowed result when maxCalls is -1 (unlimited).
|
|
13
|
-
*/
|
|
14
|
-
export function checkDailyLimit(callCount, maxCalls) {
|
|
15
|
-
if (maxCalls === -1) {
|
|
16
|
-
return {
|
|
17
|
-
allowed: true,
|
|
18
|
-
reason: null,
|
|
19
|
-
message: 'Unlimited calls available.',
|
|
20
|
-
remainingCalls: -1,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
const remaining = maxCalls - callCount;
|
|
24
|
-
if (remaining <= 0) {
|
|
25
|
-
return {
|
|
26
|
-
allowed: false,
|
|
27
|
-
reason: 'daily_limit',
|
|
28
|
-
message: `Daily call limit of ${String(maxCalls)} reached. Limit resets at midnight UTC.`,
|
|
29
|
-
remainingCalls: 0,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
return {
|
|
33
|
-
allowed: true,
|
|
34
|
-
reason: null,
|
|
35
|
-
message: `${String(remaining)} of ${String(maxCalls)} daily calls remaining.`,
|
|
36
|
-
remainingCalls: remaining,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
// Cooldown check
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
/**
|
|
43
|
-
* Checks whether enough time has passed since the last tool call.
|
|
44
|
-
* Passes when lastCallAt is null (no previous call recorded).
|
|
45
|
-
*/
|
|
46
|
-
export function checkCooldown(lastCallAt, now) {
|
|
47
|
-
if (lastCallAt === null) {
|
|
48
|
-
return {
|
|
49
|
-
allowed: true,
|
|
50
|
-
reason: null,
|
|
51
|
-
message: 'No previous call recorded.',
|
|
52
|
-
remainingCalls: -1,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
const lastCallMs = new Date(lastCallAt).getTime();
|
|
56
|
-
const elapsedMs = now.getTime() - lastCallMs;
|
|
57
|
-
if (elapsedMs < COOLDOWN_MS) {
|
|
58
|
-
const waitMs = COOLDOWN_MS - elapsedMs;
|
|
59
|
-
return {
|
|
60
|
-
allowed: false,
|
|
61
|
-
reason: 'cooldown',
|
|
62
|
-
message: `Rate limit: please wait ${String(waitMs)}ms before the next call.`,
|
|
63
|
-
remainingCalls: -1,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
return {
|
|
67
|
-
allowed: true,
|
|
68
|
-
reason: null,
|
|
69
|
-
message: 'Cooldown period elapsed.',
|
|
70
|
-
remainingCalls: -1,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=rate-limiter.js.map
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/** Number of days in the full trial period. */
|
|
2
|
-
export declare const TRIAL_DAYS = 30;
|
|
3
|
-
/**
|
|
4
|
-
* Returns the number of whole days elapsed since the given ISO 8601 timestamp.
|
|
5
|
-
*/
|
|
6
|
-
export declare function calculateDaysSinceFirstRun(firstRunAt: string): number;
|
|
7
|
-
/**
|
|
8
|
-
* Returns true if the installation is still within the 30-day trial period.
|
|
9
|
-
*/
|
|
10
|
-
export declare function isTrialActive(firstRunAt: string): boolean;
|
|
11
|
-
/**
|
|
12
|
-
* Returns the number of days remaining in the trial period.
|
|
13
|
-
* Returns 0 if the trial has already expired.
|
|
14
|
-
*/
|
|
15
|
-
export declare function trialDaysRemaining(firstRunAt: string): number;
|
|
16
|
-
/**
|
|
17
|
-
* Returns tool/spec/daily-call limits based on the current trial status.
|
|
18
|
-
*
|
|
19
|
-
* - Day 1–30 (trial active): { tools: 20, specs: 5, dailyCalls: 50 }
|
|
20
|
-
* - Day 31+ (trial expired): { tools: 10, specs: 3, dailyCalls: 30 }
|
|
21
|
-
*/
|
|
22
|
-
export declare function getTrialLimits(firstRunAt: string): {
|
|
23
|
-
tools: number;
|
|
24
|
-
specs: number;
|
|
25
|
-
dailyCalls: number;
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=trial.d.ts.map
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
// engine/usage-tracker/trial.ts — Trial period logic (pure functions, no I/O).
|
|
2
|
-
// ---------------------------------------------------------------------------
|
|
3
|
-
// Constants
|
|
4
|
-
// ---------------------------------------------------------------------------
|
|
5
|
-
/** Number of days in the full trial period. */
|
|
6
|
-
export const TRIAL_DAYS = 30;
|
|
7
|
-
const MS_PER_DAY = 24 * 60 * 60 * 1000;
|
|
8
|
-
// ---------------------------------------------------------------------------
|
|
9
|
-
// Trial calculations
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
/**
|
|
12
|
-
* Returns the number of whole days elapsed since the given ISO 8601 timestamp.
|
|
13
|
-
*/
|
|
14
|
-
export function calculateDaysSinceFirstRun(firstRunAt) {
|
|
15
|
-
const firstRunMs = new Date(firstRunAt).getTime();
|
|
16
|
-
const nowMs = Date.now();
|
|
17
|
-
const elapsedMs = nowMs - firstRunMs;
|
|
18
|
-
return Math.floor(elapsedMs / MS_PER_DAY);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Returns true if the installation is still within the 30-day trial period.
|
|
22
|
-
*/
|
|
23
|
-
export function isTrialActive(firstRunAt) {
|
|
24
|
-
return calculateDaysSinceFirstRun(firstRunAt) < TRIAL_DAYS;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns the number of days remaining in the trial period.
|
|
28
|
-
* Returns 0 if the trial has already expired.
|
|
29
|
-
*/
|
|
30
|
-
export function trialDaysRemaining(firstRunAt) {
|
|
31
|
-
const elapsed = calculateDaysSinceFirstRun(firstRunAt);
|
|
32
|
-
return Math.max(0, TRIAL_DAYS - elapsed);
|
|
33
|
-
}
|
|
34
|
-
// ---------------------------------------------------------------------------
|
|
35
|
-
// Limit resolution
|
|
36
|
-
// ---------------------------------------------------------------------------
|
|
37
|
-
/**
|
|
38
|
-
* Returns tool/spec/daily-call limits based on the current trial status.
|
|
39
|
-
*
|
|
40
|
-
* - Day 1–30 (trial active): { tools: 20, specs: 5, dailyCalls: 50 }
|
|
41
|
-
* - Day 31+ (trial expired): { tools: 10, specs: 3, dailyCalls: 30 }
|
|
42
|
-
*/
|
|
43
|
-
export function getTrialLimits(firstRunAt) {
|
|
44
|
-
if (isTrialActive(firstRunAt)) {
|
|
45
|
-
return { tools: 20, specs: 5, dailyCalls: 50 };
|
|
46
|
-
}
|
|
47
|
-
return { tools: 10, specs: 3, dailyCalls: 30 };
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=trial.js.map
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { LemonSqueezyWebhookPayload, WebhookProcessResult } from '../../types/index.js';
|
|
2
|
-
/**
|
|
3
|
-
* Handles subscription_cancelled: the customer cancelled their subscription.
|
|
4
|
-
* The tier should be reverted to free when the subscription period ends.
|
|
5
|
-
*/
|
|
6
|
-
export declare function handleSubscriptionCancelled(payload: LemonSqueezyWebhookPayload): WebhookProcessResult;
|
|
7
|
-
/**
|
|
8
|
-
* Handles subscription_updated: plan tier may have changed (upgrade/downgrade).
|
|
9
|
-
*/
|
|
10
|
-
export declare function handleSubscriptionUpdated(payload: LemonSqueezyWebhookPayload): WebhookProcessResult;
|
|
11
|
-
/**
|
|
12
|
-
* Handles license_key_created: a new license key was issued (after purchase).
|
|
13
|
-
* This is informational — the user will activate the key via activate_license tool.
|
|
14
|
-
*/
|
|
15
|
-
export declare function handleLicenseKeyCreated(payload: LemonSqueezyWebhookPayload): WebhookProcessResult;
|
|
16
|
-
/**
|
|
17
|
-
* Returns a generic "acknowledged" result for unhandled but recognised events.
|
|
18
|
-
*/
|
|
19
|
-
export declare function handleUnknownEvent(eventType: string): WebhookProcessResult;
|
|
20
|
-
/**
|
|
21
|
-
* Dispatches a parsed webhook payload to the appropriate event handler.
|
|
22
|
-
* Unhandled but valid events are acknowledged with a 200 response.
|
|
23
|
-
*/
|
|
24
|
-
export declare function dispatchWebhookEvent(payload: LemonSqueezyWebhookPayload): WebhookProcessResult;
|
|
25
|
-
//# sourceMappingURL=event-handlers.d.ts.map
|