@planu/cli 4.12.3 → 4.14.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.
Files changed (787) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +29 -25
  3. package/dist/cli/commands/inspect.d.ts +4 -0
  4. package/dist/cli/commands/inspect.js +144 -0
  5. package/dist/cli/commands/install.d.ts +19 -1
  6. package/dist/cli/commands/install.js +145 -43
  7. package/dist/cli/commands/job.d.ts +3 -0
  8. package/dist/cli/commands/job.js +119 -0
  9. package/dist/cli/commands/offline.d.ts +15 -0
  10. package/dist/cli/commands/offline.js +132 -0
  11. package/dist/cli/commands/serve.js +4 -0
  12. package/dist/cli/commands/spec.js +1 -1
  13. package/dist/cli/commands/storage.d.ts +3 -0
  14. package/dist/cli/commands/storage.js +102 -0
  15. package/dist/cli/commands/uninstall.d.ts +10 -0
  16. package/dist/cli/commands/uninstall.js +93 -7
  17. package/dist/cli/commands/validate.js +1 -1
  18. package/dist/cli/index.js +2 -0
  19. package/dist/cli/router.js +9 -1
  20. package/dist/config/crash-shield-framework-rules.json +93 -0
  21. package/dist/config/environment-schema.json +149 -0
  22. package/dist/config/hardcode-exceptions.json +4 -0
  23. package/dist/config/license-plans.json +7 -0
  24. package/dist/config/native-release-public-key.pem +3 -0
  25. package/dist/config/native-targets.json +87 -0
  26. package/dist/config/product-public.d.ts +89 -0
  27. package/dist/config/product-public.js +140 -0
  28. package/dist/config/product-public.json +312 -0
  29. package/dist/config/product-public.ts +148 -0
  30. package/dist/config/release-compatibility.json +13 -0
  31. package/dist/config/release-policy.json +26 -0
  32. package/dist/config/runtime-policy.json +44 -0
  33. package/dist/config/skill-templates/planu-validate.md +7 -4
  34. package/dist/config/subagent-templates/planu-spec-implementer.md +7 -3
  35. package/dist/config/subagent-templates/planu-validator.md +10 -5
  36. package/dist/config/technology-registry.json +120 -0
  37. package/dist/config/version.js +7 -8
  38. package/dist/config/version.ts +10 -7
  39. package/dist/engine/abortable-process-runner.js +40 -9
  40. package/dist/engine/advanced-testing/accessibility-checker.js +12 -14
  41. package/dist/engine/advanced-testing/mutation-advisor.js +3 -4
  42. package/dist/engine/advanced-testing/property-based.js +2 -3
  43. package/dist/engine/advanced-testing/test-data-advisor.js +2 -3
  44. package/dist/engine/agent-generator.js +2 -1
  45. package/dist/engine/agent-handoff-store.js +2 -1
  46. package/dist/engine/agent-prompt-generator.js +7 -5
  47. package/dist/engine/agent-telemetry.js +2 -1
  48. package/dist/engine/ai-integration/gemini/extensions-advisor.js +41 -9
  49. package/dist/engine/ambiguity-detector.js +12 -11
  50. package/dist/engine/analyzer/db-engine.js +2 -3
  51. package/dist/engine/analyzer/detectors.js +13 -14
  52. package/dist/engine/analyzer/env-setup.js +9 -10
  53. package/dist/engine/analyzer-env-scanner/env-example.js +7 -8
  54. package/dist/engine/api-spec-generator/graphql-parser.js +2 -2
  55. package/dist/engine/api-validation/graphql-schema-validator.js +2 -1
  56. package/dist/engine/api-validation/openapi-impl-validator.js +6 -7
  57. package/dist/engine/architecture-detector.js +10 -8
  58. package/dist/engine/auth/config.d.ts +1 -1
  59. package/dist/engine/auth/config.js +4 -3
  60. package/dist/engine/auto-updater/atomic-upgrade.d.ts +8 -0
  61. package/dist/engine/auto-updater/atomic-upgrade.js +381 -0
  62. package/dist/engine/auto-updater/config-detector.js +9 -3
  63. package/dist/engine/auto-updater/config-patcher.d.ts +0 -4
  64. package/dist/engine/auto-updater/config-patcher.js +10 -15
  65. package/dist/engine/auto-updater/index.d.ts +3 -1
  66. package/dist/engine/auto-updater/index.js +44 -30
  67. package/dist/engine/auto-updater/npm-registry.js +10 -2
  68. package/dist/engine/auto-updater/release-verifier.d.ts +3 -0
  69. package/dist/engine/auto-updater/release-verifier.js +112 -0
  70. package/dist/engine/auto-updater/upgrade-lock.d.ts +6 -0
  71. package/dist/engine/auto-updater/upgrade-lock.js +28 -0
  72. package/dist/engine/auto-updater/upgrade-trust-state.d.ts +7 -0
  73. package/dist/engine/auto-updater/upgrade-trust-state.js +59 -0
  74. package/dist/engine/autopilot/audit-logger.js +2 -5
  75. package/dist/engine/best-practices-library.js +2 -1
  76. package/dist/engine/browser-validator.js +2 -1
  77. package/dist/engine/build-tool-detector.js +3 -2
  78. package/dist/engine/ci-generator/context-builders.js +7 -5
  79. package/dist/engine/ci-generator/stack-detector.js +0 -2
  80. package/dist/engine/ci-generator/yaml-builder.js +0 -2
  81. package/dist/engine/claude-config-auditor/rules-auditor.js +4 -3
  82. package/dist/engine/code-transforms/typescript/ast-utils.js +2 -3
  83. package/dist/engine/complexity-budget/trivial-detector.js +2 -1
  84. package/dist/engine/compliance-test-generator/index.js +7 -2
  85. package/dist/engine/compliance-test-generator/test-formatter.js +2 -2
  86. package/dist/engine/config-health/mcp-config-checker.js +2 -1
  87. package/dist/engine/config-health/ts-checker-scripts.js +4 -3
  88. package/dist/engine/config-health/ts-checker.js +3 -2
  89. package/dist/engine/convention-injector.js +5 -7
  90. package/dist/engine/convention-scanner/convention-parser.js +3 -2
  91. package/dist/engine/core-bridge-duplicate-blocks.d.ts +3 -0
  92. package/dist/engine/core-bridge-duplicate-blocks.js +57 -0
  93. package/dist/engine/core-bridge-gaps.d.ts +4 -0
  94. package/dist/engine/core-bridge-gaps.js +75 -0
  95. package/dist/engine/core-bridge.d.ts +9 -9
  96. package/dist/engine/core-bridge.js +196 -283
  97. package/dist/engine/cost-tracking/ledger.js +2 -5
  98. package/dist/engine/coverage-gap-analyzer.js +10 -1
  99. package/dist/engine/crash-shield/detectors/framework-detector.d.ts +2 -0
  100. package/dist/engine/crash-shield/detectors/framework-detector.js +110 -192
  101. package/dist/engine/crash-shield/detectors/typescript-detector.js +2 -1
  102. package/dist/engine/dashboard/data-loader.js +2 -1
  103. package/dist/engine/data-projects-gc/gc-runner.d.ts +7 -0
  104. package/dist/engine/data-projects-gc/gc-runner.js +113 -3
  105. package/dist/engine/data-projects-gc/scanner.js +5 -1
  106. package/dist/engine/decision-store.js +11 -14
  107. package/dist/engine/deleter/core.js +5 -5
  108. package/dist/engine/dep-auditor/abandonment-data.js +2 -1
  109. package/dist/engine/dep-auditor/abandonment-registry.js +3 -1
  110. package/dist/engine/dep-auditor/cve-fetcher.js +3 -0
  111. package/dist/engine/dep-auditor/dep-duplicates-detector.js +36 -4
  112. package/dist/engine/dep-auditor/license-registry.js +2 -0
  113. package/dist/engine/dependency-evaluator.d.ts +14 -0
  114. package/dist/engine/dependency-evaluator.js +81 -0
  115. package/dist/engine/deploy/providers/fly.js +7 -7
  116. package/dist/engine/deploy/providers/netlify.js +7 -7
  117. package/dist/engine/deploy/providers/railway.js +10 -12
  118. package/dist/engine/deploy/providers/vercel.js +7 -9
  119. package/dist/engine/deprecation-scanner/pattern-loader.js +0 -2
  120. package/dist/engine/desktop-detector.js +2 -3
  121. package/dist/engine/detect-duplication.js +2 -1
  122. package/dist/engine/detectors/advanced-framework-detector/css-state-detector.js +2 -1
  123. package/dist/engine/detectors/advanced-framework-detector/legacy-detector.js +2 -3
  124. package/dist/engine/detectors/advanced-framework-detector/modern-detector.js +3 -4
  125. package/dist/engine/detectors/agent-framework-detector.js +3 -2
  126. package/dist/engine/detectors/ai-native-detector.js +4 -6
  127. package/dist/engine/detectors/cache-db-detector.js +4 -3
  128. package/dist/engine/detectors/cicd-detector.js +4 -3
  129. package/dist/engine/detectors/deployment-detector.js +11 -12
  130. package/dist/engine/detectors/frontend-perf-detector.js +14 -9
  131. package/dist/engine/detectors/library-detector-multilang-a.js +16 -3
  132. package/dist/engine/detectors/library-detector-node.js +14 -4
  133. package/dist/engine/detectors/library-detector-python.js +7 -1
  134. package/dist/engine/detectors/library-detector.js +0 -2
  135. package/dist/engine/detectors/llm-detector/provider-maps.js +3 -2
  136. package/dist/engine/detectors/mcp-candidate-detector.js +12 -16
  137. package/dist/engine/detectors/mfe-detector.js +6 -7
  138. package/dist/engine/detectors/monitoring-detector.js +4 -3
  139. package/dist/engine/detectors/otel-detector.js +3 -2
  140. package/dist/engine/detectors/otel-ecosystem-detectors.d.ts +2 -2
  141. package/dist/engine/detectors/otel-ecosystem-detectors.js +4 -3
  142. package/dist/engine/detectors/platform-specialty-detector.js +3 -5
  143. package/dist/engine/detectors/template-engine-detector.js +3 -4
  144. package/dist/engine/doc-generator/builders.js +2 -3
  145. package/dist/engine/doc-generator/mobile-distribution-guide.js +13 -17
  146. package/dist/engine/doc-generator/portal/dirty-flag-map.d.ts +2 -2
  147. package/dist/engine/doc-generator/portal/portal-regenerator.js +3 -47
  148. package/dist/engine/domain-detector.js +3 -6
  149. package/dist/engine/dynamic-knowledge/knowledge-cache.js +3 -4
  150. package/dist/engine/dynamic-knowledge/knowledge-merger.js +17 -2
  151. package/dist/engine/dynamic-knowledge/web-researcher.js +15 -14
  152. package/dist/engine/dynamic-migration-detector/manifest-readers-extended.js +0 -2
  153. package/dist/engine/e2e-test-generator.js +4 -3
  154. package/dist/engine/ecosystem-absorber/knowledge-cache.js +2 -1
  155. package/dist/engine/ecosystem-absorber/platform-crawler.js +2 -2
  156. package/dist/engine/escalator/retry-counter.js +2 -1
  157. package/dist/engine/evidence-gates/artifact-reader.d.ts +6 -0
  158. package/dist/engine/evidence-gates/artifact-reader.js +105 -21
  159. package/dist/engine/evidence-gates/lifecycle-gate.d.ts +2 -1
  160. package/dist/engine/evidence-gates/lifecycle-gate.js +54 -0
  161. package/dist/engine/execution/context.d.ts +19 -0
  162. package/dist/engine/execution/context.js +127 -0
  163. package/dist/engine/execution/deadline-io.d.ts +21 -0
  164. package/dist/engine/execution/deadline-io.js +45 -0
  165. package/dist/engine/execution/job-executor.d.ts +16 -0
  166. package/dist/engine/execution/job-executor.js +140 -0
  167. package/dist/engine/execution/job-runtime.d.ts +78 -0
  168. package/dist/engine/execution/job-runtime.js +220 -0
  169. package/dist/engine/execution/native-relevance-scorer.d.ts +6 -0
  170. package/dist/engine/execution/native-relevance-scorer.js +64 -0
  171. package/dist/engine/execution/native-worker-dispatch.d.ts +3 -0
  172. package/dist/engine/execution/native-worker-dispatch.js +46 -0
  173. package/dist/engine/execution/native-worker-protocol.d.ts +6 -0
  174. package/dist/engine/execution/native-worker-protocol.js +33 -0
  175. package/dist/engine/execution/native-worker-runtime.d.ts +4 -0
  176. package/dist/engine/execution/native-worker-runtime.js +177 -0
  177. package/dist/engine/execution/native-worker-thread.d.ts +2 -0
  178. package/dist/engine/execution/native-worker-thread.js +66 -0
  179. package/dist/engine/execution/operation-journal.d.ts +66 -0
  180. package/dist/engine/execution/operation-journal.js +260 -0
  181. package/dist/engine/execution/outbox-worker.d.ts +31 -0
  182. package/dist/engine/execution/outbox-worker.js +192 -0
  183. package/dist/engine/execution/validate-job-executor.d.ts +24 -0
  184. package/dist/engine/execution/validate-job-executor.js +342 -0
  185. package/dist/engine/execution/validate-job-payload.d.ts +5 -0
  186. package/dist/engine/execution/validate-job-payload.js +87 -0
  187. package/dist/engine/execution/validate-job-recovery.d.ts +4 -0
  188. package/dist/engine/execution/validate-job-recovery.js +47 -0
  189. package/dist/engine/execution/validate-worker-runtime.d.ts +5 -0
  190. package/dist/engine/execution/validate-worker-runtime.js +100 -0
  191. package/dist/engine/execution/validate-worker-thread.d.ts +2 -0
  192. package/dist/engine/execution/validate-worker-thread.js +71 -0
  193. package/dist/engine/execution-plan/desktop-distribution.js +3 -7
  194. package/dist/engine/execution-plan/mobile-distribution.js +4 -9
  195. package/dist/engine/execution-plan/phases.js +4 -5
  196. package/dist/engine/execution-plan/plan-utils.js +8 -5
  197. package/dist/engine/facilitate/context-loader.js +3 -9
  198. package/dist/engine/figma/code-connect-fetcher.js +9 -8
  199. package/dist/engine/filesystem-watcher/index.d.ts +3 -3
  200. package/dist/engine/filesystem-watcher/index.js +5 -5
  201. package/dist/engine/framework-detector.js +14 -15
  202. package/dist/engine/git/planu-autocommit.js +8 -7
  203. package/dist/engine/git/repository-probe.d.ts +3 -0
  204. package/dist/engine/git/repository-probe.js +13 -0
  205. package/dist/engine/global-rules-manager.js +2 -2
  206. package/dist/engine/handoff-artifacts/io.js +2 -3
  207. package/dist/engine/handoff-artifacts/schemas/red-tests-handoff.js +8 -1
  208. package/dist/engine/handoff-artifacts/schemas.d.ts +4 -0
  209. package/dist/engine/handoff-artifacts/schemas.js +5 -0
  210. package/dist/engine/hook-generator/stack-hook-templates.js +4 -4
  211. package/dist/engine/hooks/config-loader.js +1 -1
  212. package/dist/engine/hooks/context-injector.js +4 -7
  213. package/dist/engine/hooks/file-watcher.js +1 -14
  214. package/dist/engine/hooks-reconciler.js +6 -4
  215. package/dist/engine/infrastructure/component-mapper.js +5 -7
  216. package/dist/engine/infrastructure/docker-compose-generator.js +8 -10
  217. package/dist/engine/infrastructure/index.js +6 -3
  218. package/dist/engine/infrastructure/kubernetes-generator.js +2 -2
  219. package/dist/engine/infrastructure/railway-generator.js +10 -8
  220. package/dist/engine/infrastructure/signal-detector.js +6 -8
  221. package/dist/engine/infrastructure/terraform-generator.js +6 -8
  222. package/dist/engine/legal-compliance/detector.js +3 -2
  223. package/dist/engine/local-first/storage-advisor.js +5 -6
  224. package/dist/engine/macos-keychain-native-port.d.ts +5 -0
  225. package/dist/engine/macos-keychain-native-port.js +26 -0
  226. package/dist/engine/marketplace-fetcher/cache.js +3 -1
  227. package/dist/engine/mcp-config/mcp-config-writer.d.ts +2 -2
  228. package/dist/engine/mcp-config/mcp-config-writer.js +10 -8
  229. package/dist/engine/migration/db-migrator.js +2 -5
  230. package/dist/engine/migration/equivalence-mapper.js +12 -13
  231. package/dist/engine/migration/service-catalogs.js +6 -7
  232. package/dist/engine/migration/service-migrator-catalogs.js +6 -7
  233. package/dist/engine/mobile-detector-ios.js +2 -3
  234. package/dist/engine/mobile-detector.js +16 -4
  235. package/dist/engine/model-router/complexity-analyzer.js +4 -7
  236. package/dist/engine/multi-agent-review/security-analyzer.js +3 -1
  237. package/dist/engine/multi-app-detector/app-type.js +26 -21
  238. package/dist/engine/multi-app-detector/core.js +3 -2
  239. package/dist/engine/multi-teammate-review/disagreement-counter.js +2 -1
  240. package/dist/engine/multi-teammate-review/panel-orchestrator.js +0 -2
  241. package/dist/engine/mutation-config-generator.js +10 -7
  242. package/dist/engine/native-capability-policy.d.ts +4 -0
  243. package/dist/engine/native-capability-policy.js +24 -0
  244. package/dist/engine/native-platform.d.ts +3 -0
  245. package/dist/engine/native-platform.js +44 -0
  246. package/dist/engine/native-runtime-handshake.d.ts +20 -0
  247. package/dist/engine/native-runtime-handshake.js +230 -0
  248. package/dist/engine/network-policy.d.ts +27 -0
  249. package/dist/engine/network-policy.js +174 -0
  250. package/dist/engine/next-spec-resolver/dependency-filter.js +2 -22
  251. package/dist/engine/nfr-profile-detector.js +12 -16
  252. package/dist/engine/nli-keywords.js +8 -9
  253. package/dist/engine/oauth/config-guard.js +4 -5
  254. package/dist/engine/observability/local-execution-spans.d.ts +15 -0
  255. package/dist/engine/observability/local-execution-spans.js +63 -0
  256. package/dist/engine/orchestrator/runtime.js +0 -1
  257. package/dist/engine/package-registry.js +2 -6
  258. package/dist/engine/performance-analyzer.js +2 -5
  259. package/dist/engine/permissions-merger/stack-detectors.js +5 -5
  260. package/dist/engine/planu-core.darwin-arm64.node.manifest.json +39 -0
  261. package/dist/engine/planu-core.darwin-arm64.node.sbom.json +1310 -0
  262. package/dist/engine/planu-core.darwin-x64.node.manifest.json +39 -0
  263. package/dist/engine/planu-core.darwin-x64.node.sbom.json +1310 -0
  264. package/dist/engine/planu-core.linux-arm64-gnu.node.manifest.json +38 -0
  265. package/dist/engine/planu-core.linux-arm64-gnu.node.sbom.json +1310 -0
  266. package/dist/engine/planu-core.linux-arm64-musl.node.manifest.json +38 -0
  267. package/dist/engine/planu-core.linux-arm64-musl.node.sbom.json +1310 -0
  268. package/dist/engine/planu-core.linux-x64-gnu.node.manifest.json +38 -0
  269. package/dist/engine/planu-core.linux-x64-gnu.node.sbom.json +1310 -0
  270. package/dist/engine/planu-core.linux-x64-musl.node.manifest.json +38 -0
  271. package/dist/engine/planu-core.linux-x64-musl.node.sbom.json +1310 -0
  272. package/dist/engine/planu-core.win32-arm64-msvc.node.manifest.json +38 -0
  273. package/dist/engine/planu-core.win32-arm64-msvc.node.sbom.json +1310 -0
  274. package/dist/engine/planu-core.win32-x64-msvc.node.manifest.json +38 -0
  275. package/dist/engine/planu-core.win32-x64-msvc.node.sbom.json +1310 -0
  276. package/dist/engine/platform-detector/desktop.js +15 -2
  277. package/dist/engine/platform-detector/extensions.js +2 -1
  278. package/dist/engine/platform-detector/games.js +2 -1
  279. package/dist/engine/platform-detector.js +3 -2
  280. package/dist/engine/platform-engineering/idp-detector.js +2 -1
  281. package/dist/engine/plugin-installer/stack-matcher.js +9 -17
  282. package/dist/engine/plugins/lifecycle.js +6 -2
  283. package/dist/engine/prior-decisions/contradiction-detector.js +60 -30
  284. package/dist/engine/project-dna/stack-detector.js +15 -17
  285. package/dist/engine/project-graph/builder.js +11 -0
  286. package/dist/engine/project-graph/cache.js +1 -1
  287. package/dist/engine/project-graph/freshness-projection.d.ts +16 -0
  288. package/dist/engine/project-graph/freshness-projection.js +95 -0
  289. package/dist/engine/project-graph/index.d.ts +1 -0
  290. package/dist/engine/project-graph/index.js +1 -0
  291. package/dist/engine/project-graph/query.js +15 -25
  292. package/dist/engine/project-health-checker.js +3 -4
  293. package/dist/engine/project-scanner/stack-detector.js +17 -17
  294. package/dist/engine/property-test-generator.js +2 -3
  295. package/dist/engine/qa-gate.d.ts +1 -0
  296. package/dist/engine/qa-gate.js +6 -4
  297. package/dist/engine/quality-gates/gate-catalog.js +47 -46
  298. package/dist/engine/quality-gates/gate-injector.js +9 -4
  299. package/dist/engine/registry/core.js +0 -2
  300. package/dist/engine/registry/loader.js +9 -12
  301. package/dist/engine/registry/matcher.js +129 -24
  302. package/dist/engine/resilience-detector/concurrency-detector.js +4 -4
  303. package/dist/engine/resilience-detector/middleware-detector.js +11 -13
  304. package/dist/engine/resilience-detector/validation-detector.js +17 -4
  305. package/dist/engine/reverse-engineer/config-analyzer.js +9 -8
  306. package/dist/engine/reverse-engineer/orchestrator.js +5 -9
  307. package/dist/engine/reverse-engineer/test-file-parser.js +6 -3
  308. package/dist/engine/rules-generator/index.js +6 -5
  309. package/dist/engine/runtime-policy.d.ts +7 -0
  310. package/dist/engine/runtime-policy.js +101 -0
  311. package/dist/engine/runtime-security/checkers/content-security.js +21 -6
  312. package/dist/engine/runtime-security/checkers/file-permissions.js +0 -2
  313. package/dist/engine/safety/atomic-write-file.js +20 -9
  314. package/dist/engine/safety/atomic-writer.js +10 -3
  315. package/dist/engine/safety/cross-process-lock.d.ts +3 -40
  316. package/dist/engine/safety/cross-process-lock.js +268 -272
  317. package/dist/engine/safety/file-mutex.d.ts +2 -9
  318. package/dist/engine/safety/file-mutex.js +155 -87
  319. package/dist/engine/safety/health-monitor.js +15 -6
  320. package/dist/engine/safety/lock-lease-store.d.ts +79 -0
  321. package/dist/engine/safety/lock-lease-store.js +372 -0
  322. package/dist/engine/safety/lock-scavenger.d.ts +2 -5
  323. package/dist/engine/safety/lock-scavenger.js +158 -76
  324. package/dist/engine/safety/lock-staleness.js +4 -1
  325. package/dist/engine/safety/obsolete-lock-guard.d.ts +8 -0
  326. package/dist/engine/safety/obsolete-lock-guard.js +31 -0
  327. package/dist/engine/safety/transaction.js +3 -3
  328. package/dist/engine/sandbox/index.js +2 -1
  329. package/dist/engine/sandbox/runner-detect.js +3 -2
  330. package/dist/engine/sandbox/runner-docker.js +4 -3
  331. package/dist/engine/scan-project/module-discoverer.js +3 -2
  332. package/dist/engine/schema-generator.js +16 -9
  333. package/dist/engine/security-analyzer/criteria-generator.js +2 -3
  334. package/dist/engine/self-healing/healer.js +4 -4
  335. package/dist/engine/session-safeguard/learnings-buffer.d.ts +1 -2
  336. package/dist/engine/session-safeguard/learnings-buffer.js +42 -65
  337. package/dist/engine/shared-agent-memory.js +66 -74
  338. package/dist/engine/skill-adapter/command-rewriter.js +3 -2
  339. package/dist/engine/skill-adapter/index.js +3 -3
  340. package/dist/engine/skill-adapter/placeholder-map.js +3 -2
  341. package/dist/engine/skill-bootstrap/stack-matcher.js +47 -48
  342. package/dist/engine/skill-generation/stack-content-generator.js +0 -2
  343. package/dist/engine/skill-generator/workflow-skill-generator.js +2 -1
  344. package/dist/engine/skill-registry/ttl-refresh.js +3 -1
  345. package/dist/engine/skills/skills-fetcher.js +3 -6
  346. package/dist/engine/skills-reconciler.js +19 -39
  347. package/dist/engine/spec-coverage/test-finder.js +7 -6
  348. package/dist/engine/spec-diff-engine.js +3 -3
  349. package/dist/engine/spec-generator/api-key-resolver.d.ts +1 -1
  350. package/dist/engine/spec-generator/api-key-resolver.js +3 -24
  351. package/dist/engine/spec-generators/issue-extractor.js +9 -3
  352. package/dist/engine/spec-migrator/drift-detector.js +5 -13
  353. package/dist/engine/spec-migrator/filesystem-import.js +14 -10
  354. package/dist/engine/spec-migrator/planu-canonical-policy.js +10 -1
  355. package/dist/engine/spec-migrator/strict-planu-cleanup.js +24 -25
  356. package/dist/engine/spec-registry/adapter.d.ts +0 -5
  357. package/dist/engine/spec-registry/adapter.js +45 -46
  358. package/dist/engine/spec-registry/client.js +2 -0
  359. package/dist/engine/spec-source-sync.js +3 -2
  360. package/dist/engine/spec-templates/custom-loader.js +2 -3
  361. package/dist/engine/spec-templates/templates-domain-specific.js +8 -5
  362. package/dist/engine/spec-templates/templates-perf-integration.js +2 -3
  363. package/dist/engine/stack-auditor/manifest-reader.js +0 -2
  364. package/dist/engine/staleness/stale-implementing.js +7 -7
  365. package/dist/engine/tdd-scaffold-generator.js +24 -11
  366. package/dist/engine/teammate-router/green-phase-verifier.js +2 -1
  367. package/dist/engine/teammate-router/red-phase-verifier.js +2 -1
  368. package/dist/engine/technology-registry.d.ts +11 -0
  369. package/dist/engine/technology-registry.js +142 -0
  370. package/dist/engine/telemetry/error-reporter.d.ts +1 -2
  371. package/dist/engine/telemetry/error-reporter.js +11 -18
  372. package/dist/engine/telemetry/health-checker.js +5 -14
  373. package/dist/engine/telemetry/index.d.ts +0 -1
  374. package/dist/engine/telemetry/index.js +0 -1
  375. package/dist/engine/telemetry/stance.js +3 -2
  376. package/dist/engine/telemetry/telemetry-client.d.ts +1 -5
  377. package/dist/engine/telemetry/telemetry-client.js +45 -29
  378. package/dist/engine/telemetry/telemetry-store.d.ts +3 -3
  379. package/dist/engine/telemetry/telemetry-store.js +30 -23
  380. package/dist/engine/test-framework-detector/detectors.js +8 -8
  381. package/dist/engine/test-framework-detector/strategy.js +8 -9
  382. package/dist/engine/test-generators/agent-test-templates.js +2 -3
  383. package/dist/engine/test-generators/contract-test-generator.d.ts +1 -1
  384. package/dist/engine/test-generators/contract-test-generator.js +9 -202
  385. package/dist/engine/test-generators/platform-test-templates-b.js +2 -3
  386. package/dist/engine/test-generators/platform-test-templates.js +2 -5
  387. package/dist/engine/test-mocks-generator.js +4 -3
  388. package/dist/engine/test-plan-generator.js +30 -12
  389. package/dist/engine/test-scaffold-generator/advanced-scaffold.js +4 -5
  390. package/dist/engine/test-scaffold-generator/unit-scaffold.js +5 -6
  391. package/dist/engine/timing/budget.d.ts +6 -17
  392. package/dist/engine/timing/budget.js +80 -64
  393. package/dist/engine/tool-groups/group-manager.js +3 -3
  394. package/dist/engine/universal-rules/installer.js +1 -1
  395. package/dist/engine/universal-rules/rules/planu-modes.js +2 -0
  396. package/dist/engine/universal-rules/rules/planu-release-policy.js +1 -0
  397. package/dist/engine/update-notifier.js +8 -5
  398. package/dist/engine/validation/approved-spec-portability.d.ts +12 -0
  399. package/dist/engine/validation/approved-spec-portability.js +107 -0
  400. package/dist/engine/validation/durable-validation.d.ts +36 -0
  401. package/dist/engine/validation/durable-validation.js +335 -0
  402. package/dist/engine/validation/validation-freshness.d.ts +36 -0
  403. package/dist/engine/validation/validation-freshness.js +427 -0
  404. package/dist/engine/validation/validation-receipt-codec.d.ts +13 -0
  405. package/dist/engine/validation/validation-receipt-codec.js +182 -0
  406. package/dist/engine/validation/validation-receipt.d.ts +59 -0
  407. package/dist/engine/validation/validation-receipt.js +282 -0
  408. package/dist/engine/validation/validation-source-policy.d.ts +4 -0
  409. package/dist/engine/validation/validation-source-policy.js +16 -0
  410. package/dist/engine/validation/validation-submission.d.ts +36 -0
  411. package/dist/engine/validation/validation-submission.js +128 -0
  412. package/dist/engine/validation-evidence-ledger.js +41 -0
  413. package/dist/engine/validation-impact-planner.js +25 -9
  414. package/dist/engine/validator/spec-compliance-runner.d.ts +1 -1
  415. package/dist/engine/validator/spec-compliance-runner.js +17 -8
  416. package/dist/engine/validator/validation-report-writer.js +1 -1
  417. package/dist/engine/validator.js +2 -1
  418. package/dist/engine/verify-integrations/index.js +1 -1
  419. package/dist/engine/version-resolver.js +5 -6
  420. package/dist/engine/web-fetcher/stack-advisor.js +156 -92
  421. package/dist/engine/web-fetcher/stack-detector.js +114 -54
  422. package/dist/engine/workspace-manager.js +3 -2
  423. package/dist/errors/classified-degradation.d.ts +3 -0
  424. package/dist/errors/classified-degradation.js +10 -0
  425. package/dist/errors/degradation-sink.d.ts +3 -0
  426. package/dist/errors/degradation-sink.js +5 -0
  427. package/dist/errors/error-taxonomy.d.ts +12 -0
  428. package/dist/errors/error-taxonomy.js +62 -0
  429. package/dist/hosts/claude-code/ux/mcp-prompts.js +10 -4
  430. package/dist/hosts/claude-code/ux/mcp-resources.js +4 -2
  431. package/dist/hosts/codex/config-scaffold.js +4 -3
  432. package/dist/hosts/gemini/config-scaffold.js +2 -1
  433. package/dist/hosts/gemini/multimodal-spec-flow.js +7 -4
  434. package/dist/index.js +21 -6
  435. package/dist/resources/patterns.js +3 -1
  436. package/dist/resources/specs.js +3 -1
  437. package/dist/resources/templates.js +3 -1
  438. package/dist/security/adapters/environment.d.ts +12 -0
  439. package/dist/security/adapters/environment.js +25 -0
  440. package/dist/security/adapters/linux-secret-service.d.ts +8 -0
  441. package/dist/security/adapters/linux-secret-service.js +60 -0
  442. package/dist/security/adapters/macos-keychain.d.ts +18 -0
  443. package/dist/security/adapters/macos-keychain.js +90 -0
  444. package/dist/security/adapters/windows-credential-manager.d.ts +8 -0
  445. package/dist/security/adapters/windows-credential-manager.js +58 -0
  446. package/dist/security/redactor.d.ts +5 -0
  447. package/dist/security/redactor.js +58 -0
  448. package/dist/security/secret-field.d.ts +5 -0
  449. package/dist/security/secret-field.js +17 -0
  450. package/dist/security/secret-migration.d.ts +3 -0
  451. package/dist/security/secret-migration.js +123 -0
  452. package/dist/security/secret-provider.d.ts +23 -0
  453. package/dist/security/secret-provider.js +145 -0
  454. package/dist/security/secure-json.d.ts +3 -0
  455. package/dist/security/secure-json.js +29 -0
  456. package/dist/storage/api-surfaces-store.js +2 -2
  457. package/dist/storage/approval-operation-lock.d.ts +1 -1
  458. package/dist/storage/approval-operation-lock.js +5 -3
  459. package/dist/storage/audit-trail-store.d.ts +1 -1
  460. package/dist/storage/audit-trail-store.js +48 -62
  461. package/dist/storage/autopilot-log-store.js +12 -5
  462. package/dist/storage/base-store.d.ts +8 -8
  463. package/dist/storage/base-store.js +57 -20
  464. package/dist/storage/checkpoint-store.js +5 -2
  465. package/dist/storage/comments-store.js +2 -2
  466. package/dist/storage/compliance-audit-store.js +5 -2
  467. package/dist/storage/compliance-gate-config-store.js +7 -4
  468. package/dist/storage/compliance-store.js +2 -2
  469. package/dist/storage/context-profile-store.js +2 -2
  470. package/dist/storage/crash-shield-store.js +8 -4
  471. package/dist/storage/feedback-store.js +10 -6
  472. package/dist/storage/figma-store.js +8 -4
  473. package/dist/storage/file-mutex.js +9 -1
  474. package/dist/storage/gaps-log.js +7 -4
  475. package/dist/storage/global-projects-store.js +4 -2
  476. package/dist/storage/ideas-store.js +2 -2
  477. package/dist/storage/index.d.ts +5 -0
  478. package/dist/storage/index.js +5 -0
  479. package/dist/storage/knowledge-store/knowledge.js +27 -33
  480. package/dist/storage/lessons-store.js +2 -2
  481. package/dist/storage/license-store.js +13 -41
  482. package/dist/storage/migrations/canonical-storage.d.ts +15 -0
  483. package/dist/storage/migrations/canonical-storage.js +599 -0
  484. package/dist/storage/oauth-store.js +36 -8
  485. package/dist/storage/path-resolver.js +16 -3
  486. package/dist/storage/pr-store.js +2 -2
  487. package/dist/storage/project-drift-store.js +20 -8
  488. package/dist/storage/project-identity.d.ts +32 -0
  489. package/dist/storage/project-identity.js +194 -0
  490. package/dist/storage/project-resolver.js +14 -7
  491. package/dist/storage/release-notes-store.js +2 -6
  492. package/dist/storage/runtime-db.d.ts +186 -0
  493. package/dist/storage/runtime-db.js +1054 -0
  494. package/dist/storage/schema-registry.d.ts +5 -0
  495. package/dist/storage/schema-registry.js +74 -0
  496. package/dist/storage/sentry-store.js +20 -9
  497. package/dist/storage/session-state-store.js +12 -5
  498. package/dist/storage/session-store.js +12 -4
  499. package/dist/storage/skill-registry-storage.d.ts +1 -1
  500. package/dist/storage/skill-registry-storage.js +13 -11
  501. package/dist/storage/slack-store.js +10 -5
  502. package/dist/storage/spec-store.js +31 -24
  503. package/dist/storage/status-store/file-lock.js +31 -9
  504. package/dist/storage/status-store/self-healing.js +10 -5
  505. package/dist/storage/status-store/version-sync.js +8 -6
  506. package/dist/storage/steering-store.js +2 -2
  507. package/dist/storage/storage-bundle.d.ts +5 -0
  508. package/dist/storage/storage-bundle.js +117 -0
  509. package/dist/storage/storage-catalog-validation.d.ts +3 -0
  510. package/dist/storage/storage-catalog-validation.js +20 -0
  511. package/dist/storage/storage-catalog.d.ts +25 -0
  512. package/dist/storage/storage-catalog.js +390 -0
  513. package/dist/storage/storage-layout.d.ts +24 -0
  514. package/dist/storage/storage-layout.js +101 -0
  515. package/dist/storage/storybook-store.js +2 -2
  516. package/dist/storage/supabase-store.js +24 -6
  517. package/dist/storage/tdd-policy-store.js +8 -6
  518. package/dist/storage/tech-debt-store.js +3 -3
  519. package/dist/storage/technology-selection-store.d.ts +1 -1
  520. package/dist/storage/technology-selection-store.js +6 -3
  521. package/dist/storage/token-cache-store.js +3 -3
  522. package/dist/storage/token-ledger-store.js +13 -8
  523. package/dist/storage/transition-log.js +7 -4
  524. package/dist/storage/trash-store.js +15 -6
  525. package/dist/storage/vector-store/migrator.js +7 -2
  526. package/dist/storage/vector-store/sqlite-adapter.js +4 -1
  527. package/dist/storage/webhook-server-store.js +2 -2
  528. package/dist/tools/api-spec-generator-handler.js +3 -2
  529. package/dist/tools/auto-update-handler.d.ts +1 -1
  530. package/dist/tools/auto-update-handler.js +1 -1
  531. package/dist/tools/browser-validate-handler.js +2 -1
  532. package/dist/tools/challenge-spec/platform-challenge-scenarios-b.js +8 -5
  533. package/dist/tools/challenge-spec/scenarios-desktop.js +8 -3
  534. package/dist/tools/challenge-spec/scenarios-failure.js +7 -2
  535. package/dist/tools/challenge-spec/security-challenge-scenarios.js +3 -3
  536. package/dist/tools/clarify-requirements/multiple-choice.js +53 -41
  537. package/dist/tools/comments-handler.js +2 -3
  538. package/dist/tools/compliance-test-handler.js +2 -2
  539. package/dist/tools/configure-telemetry.js +11 -11
  540. package/dist/tools/create-spec/auto-pipeline.js +13 -1
  541. package/dist/tools/create-spec/autopilot-analyzer.d.ts +1 -1
  542. package/dist/tools/create-spec/autopilot-analyzer.js +2 -4
  543. package/dist/tools/create-spec/mcp-tool-contract.d.ts +10 -4
  544. package/dist/tools/create-spec/mcp-tool-contract.js +7 -36
  545. package/dist/tools/create-spec/post-creation.d.ts +2 -1
  546. package/dist/tools/create-spec/post-creation.js +56 -54
  547. package/dist/tools/create-spec/relevance-scorer.d.ts +1 -1
  548. package/dist/tools/create-spec/relevance-scorer.js +17 -1
  549. package/dist/tools/create-spec/spec-builder.js +2 -12
  550. package/dist/tools/create-spec/spec-created-outbox-consumer.d.ts +14 -0
  551. package/dist/tools/create-spec/spec-created-outbox-consumer.js +176 -0
  552. package/dist/tools/create-spec.js +385 -520
  553. package/dist/tools/define-ui-contract/agent-interaction-contract.js +2 -4
  554. package/dist/tools/define-ui-contract-desktop/desktop-contract.js +12 -4
  555. package/dist/tools/define-ui-contract-desktop/native-contract.js +7 -3
  556. package/dist/tools/define-ui-contract-extensions.js +2 -3
  557. package/dist/tools/define-ui-contract-mobile.js +5 -9
  558. package/dist/tools/define-ui-contract-web/component-tree.js +4 -3
  559. package/dist/tools/define-ui-contract.js +7 -4
  560. package/dist/tools/deploy/deploy-spec.js +2 -4
  561. package/dist/tools/deploy/deploy-status.js +2 -4
  562. package/dist/tools/design-schema/nosql-category-schemas.js +2 -3
  563. package/dist/tools/design-schema-sql/migrations.js +3 -2
  564. package/dist/tools/design-schema-sql/tables.js +4 -1
  565. package/dist/tools/design-schema.js +4 -3
  566. package/dist/tools/feedback-handler.js +2 -4
  567. package/dist/tools/gc-data-projects.js +5 -5
  568. package/dist/tools/generate-execution-plan.js +3 -4
  569. package/dist/tools/generate-sub-agent.js +2 -1
  570. package/dist/tools/generate-tests/generators/a11y-tests-generator.js +5 -4
  571. package/dist/tools/generate-tests/generators/advanced-testing-generator.js +5 -4
  572. package/dist/tools/generate-tests/generators/concurrency-test-generator/js-templates.js +9 -4
  573. package/dist/tools/generate-tests/generators/concurrency-test-generator.js +8 -4
  574. package/dist/tools/generate-tests/generators/database/detectors.js +9 -3
  575. package/dist/tools/generate-tests/generators/database/index.js +2 -4
  576. package/dist/tools/generate-tests/generators/event-test-generator.js +5 -4
  577. package/dist/tools/generate-tests/generators/game-tests-generator.js +2 -1
  578. package/dist/tools/generate-tests/generators/graphql-test-generator.js +11 -5
  579. package/dist/tools/generate-tests/generators/grpc-test-generator.js +2 -3
  580. package/dist/tools/generate-tests/generators/llm-security-test-generator.js +4 -3
  581. package/dist/tools/generate-tests/generators/local-first-test-generator.js +4 -3
  582. package/dist/tools/generate-tests/generators/mcp-tests-generator.js +11 -9
  583. package/dist/tools/generate-tests/generators/microservices/index.js +2 -3
  584. package/dist/tools/generate-tests/generators/otel-test-generator.js +6 -3
  585. package/dist/tools/generate-tests/generators/security/detectors.js +2 -5
  586. package/dist/tools/generate-tests/generators/security/index.js +2 -4
  587. package/dist/tools/generate-tests/generators/supply-chain-test-generator.js +2 -3
  588. package/dist/tools/generate-tests/generators/visual-regression-generator.js +14 -17
  589. package/dist/tools/generate-tests/generators/websocket-test-generator.js +2 -3
  590. package/dist/tools/generate-tests/test-helpers.js +11 -12
  591. package/dist/tools/generate-tests-content.js +4 -3
  592. package/dist/tools/generate-tests.js +7 -4
  593. package/dist/tools/git/git-helpers.d.ts +0 -2
  594. package/dist/tools/git/git-helpers.js +7 -7
  595. package/dist/tools/github-pr-handler.js +10 -3
  596. package/dist/tools/heal-spec-docs.js +6 -53
  597. package/dist/tools/hook-generator-handler.js +6 -6
  598. package/dist/tools/init-constitution/platform-principles.js +4 -2
  599. package/dist/tools/init-project/agents-md-writer.js +14 -5
  600. package/dist/tools/init-project/claude-md-generator.js +19 -12
  601. package/dist/tools/init-project/handler.js +165 -73
  602. package/dist/tools/init-project/host-assets-writer.d.ts +1 -1
  603. package/dist/tools/init-project/host-assets-writer.js +4 -2
  604. package/dist/tools/init-project/lifecycle-helpers.js +3 -5
  605. package/dist/tools/init-project/lint-scaffolder.js +6 -2
  606. package/dist/tools/init-project/migration-runner.d.ts +10 -1
  607. package/dist/tools/init-project/migration-runner.js +68 -3
  608. package/dist/tools/init-project/per-client-files-writer.js +14 -4
  609. package/dist/tools/init-project/rules-generator.js +10 -2
  610. package/dist/tools/init-project/scaffold-writer.d.ts +1 -1
  611. package/dist/tools/init-project/scaffold-writer.js +17 -15
  612. package/dist/tools/jobs/handlers.d.ts +15 -0
  613. package/dist/tools/jobs/handlers.js +126 -0
  614. package/dist/tools/list-specs.js +35 -34
  615. package/dist/tools/manage-plugins-handler.js +17 -9
  616. package/dist/tools/migrate-tech/advanced-handlers.js +3 -2
  617. package/dist/tools/migrate-tech/build-tool-handlers.js +3 -2
  618. package/dist/tools/migrate-tech/core-handlers.js +5 -2
  619. package/dist/tools/migrate-tech/data-handlers.js +6 -3
  620. package/dist/tools/migrate-tech-advanced/rollback-handlers.js +3 -2
  621. package/dist/tools/migrate-tech-advanced/service-handlers.js +5 -2
  622. package/dist/tools/oauth-handler.js +7 -1
  623. package/dist/tools/register-sdd-tools.d.ts +1 -1
  624. package/dist/tools/register-sdd-tools.js +5 -0
  625. package/dist/tools/register-spec-tools/core-spec-tools.js +31 -0
  626. package/dist/tools/registry/auth.js +13 -5
  627. package/dist/tools/registry/publish.js +7 -4
  628. package/dist/tools/resolve-project-path.d.ts +2 -2
  629. package/dist/tools/resolve-project-path.js +7 -7
  630. package/dist/tools/reverse-engineer/analyzer.js +14 -14
  631. package/dist/tools/rollback-release.js +3 -2
  632. package/dist/tools/safe-handler.js +295 -171
  633. package/dist/tools/schema-generator-handler.js +2 -1
  634. package/dist/tools/schemas/output-schemas.d.ts +88 -82
  635. package/dist/tools/schemas/output-schemas.js +12 -94
  636. package/dist/tools/schemas/plugins-schemas.js +0 -2
  637. package/dist/tools/schemas/registry.js +0 -2
  638. package/dist/tools/schemas/skill-registry-schemas.js +0 -2
  639. package/dist/tools/schemas/validate-output-schema.d.ts +256 -0
  640. package/dist/tools/schemas/validate-output-schema.js +212 -0
  641. package/dist/tools/sentry-handler.js +6 -1
  642. package/dist/tools/skill-bootstrap-handler.js +7 -4
  643. package/dist/tools/status-handler.js +4 -0
  644. package/dist/tools/storage-bundle-handler.d.ts +9 -0
  645. package/dist/tools/storage-bundle-handler.js +29 -0
  646. package/dist/tools/storage-paths-handler.d.ts +9 -0
  647. package/dist/tools/storage-paths-handler.js +17 -0
  648. package/dist/tools/suggest-mcp-server.js +11 -5
  649. package/dist/tools/suggest-mcps.js +29 -9
  650. package/dist/tools/suggest-tooling/advanced-testing-catalog.js +4 -5
  651. package/dist/tools/suggest-tooling/build-tool-catalog.js +2 -1
  652. package/dist/tools/suggest-tooling/css-framework-catalog.js +13 -7
  653. package/dist/tools/suggest-tooling/framework-catalog.js +3 -5
  654. package/dist/tools/suggest-tooling/frontend-perf-catalog.js +2 -6
  655. package/dist/tools/suggest-tooling/handler.js +10 -4
  656. package/dist/tools/suggest-tooling/hypermedia-catalog.js +11 -3
  657. package/dist/tools/suggest-tooling/linting-catalog.js +4 -7
  658. package/dist/tools/suggest-tooling/llm-security-catalog.js +2 -1
  659. package/dist/tools/suggest-tooling/local-first-catalog.js +7 -5
  660. package/dist/tools/suggest-tooling/observability-catalog.js +3 -4
  661. package/dist/tools/suggest-tooling/otel-catalog.js +4 -1
  662. package/dist/tools/suggest-tooling/resilience-catalog.js +16 -5
  663. package/dist/tools/suggest-tooling/skills-catalog.js +10 -9
  664. package/dist/tools/suggest-tooling/supply-chain-catalog.js +2 -3
  665. package/dist/tools/supabase-handler.js +2 -1
  666. package/dist/tools/token-intelligence-handler.js +2 -2
  667. package/dist/tools/token-recording.js +2 -2
  668. package/dist/tools/token-savings-handler.js +2 -2
  669. package/dist/tools/tool-registry/core-tools.js +131 -0
  670. package/dist/tools/tool-registry/group-infra.js +10 -12
  671. package/dist/tools/tool-registry/group-quality-compliance.js +5 -12
  672. package/dist/tools/update-status/approval-gates.d.ts +13 -0
  673. package/dist/tools/update-status/approval-gates.js +81 -0
  674. package/dist/tools/update-status/batch.js +4 -2
  675. package/dist/tools/update-status/dod-gates.d.ts +6 -24
  676. package/dist/tools/update-status/dod-gates.js +60 -135
  677. package/dist/tools/update-status/done-receipt-verifier.d.ts +15 -0
  678. package/dist/tools/update-status/done-receipt-verifier.js +145 -0
  679. package/dist/tools/update-status/evidence-gate.js +154 -2
  680. package/dist/tools/update-status/file-sync.js +23 -12
  681. package/dist/tools/update-status/gate-harness.d.ts +7 -0
  682. package/dist/tools/update-status/gate-harness.js +8 -0
  683. package/dist/tools/update-status/index.js +228 -325
  684. package/dist/tools/update-status/qa-gate.d.ts +1 -1
  685. package/dist/tools/update-status/qa-gate.js +2 -2
  686. package/dist/tools/update-status/side-effects.js +30 -37
  687. package/dist/tools/update-status/transition-guard.d.ts +4 -2
  688. package/dist/tools/update-status/transition-guard.js +57 -10
  689. package/dist/tools/update-status-convention-gate.js +24 -23
  690. package/dist/tools/update-status-reconcile.js +2 -2
  691. package/dist/tools/validate-api-contract-handler.js +3 -3
  692. package/dist/tools/validate-lint.js +20 -13
  693. package/dist/tools/validate.d.ts +3 -1
  694. package/dist/tools/validate.js +213 -5
  695. package/dist/transports/http-transport.js +84 -61
  696. package/dist/transports/middleware/with-telemetry.js +3 -2
  697. package/dist/types/abortable-process.d.ts +2 -0
  698. package/dist/types/advanced-framework.js +0 -2
  699. package/dist/types/atomic-upgrade.d.ts +71 -0
  700. package/dist/types/atomic-upgrade.js +2 -0
  701. package/dist/types/ci.js +0 -2
  702. package/dist/types/core-bridge.d.ts +78 -1
  703. package/dist/types/crash-shield-framework-rules.d.ts +24 -0
  704. package/dist/types/crash-shield-framework-rules.js +2 -0
  705. package/dist/types/data-gc.d.ts +16 -0
  706. package/dist/types/deploy.js +0 -2
  707. package/dist/types/durable-job.d.ts +78 -0
  708. package/dist/types/durable-job.js +2 -0
  709. package/dist/types/durable-validation.d.ts +60 -0
  710. package/dist/types/durable-validation.js +2 -0
  711. package/dist/types/estimation.d.ts +2 -0
  712. package/dist/types/evidence-gates.d.ts +9 -1
  713. package/dist/types/execution.d.ts +43 -0
  714. package/dist/types/handoff-artifacts.d.ts +2 -0
  715. package/dist/types/index.d.ts +2 -0
  716. package/dist/types/index.js +2 -0
  717. package/dist/types/infrastructure.js +0 -2
  718. package/dist/types/lifecycle.js +0 -2
  719. package/dist/types/migration/canonical-storage.d.ts +37 -0
  720. package/dist/types/migration/canonical-storage.js +2 -0
  721. package/dist/types/migration/index.d.ts +1 -1
  722. package/dist/types/native-worker.d.ts +48 -0
  723. package/dist/types/native-worker.js +2 -0
  724. package/dist/types/network-policy.d.ts +12 -0
  725. package/dist/types/network-policy.js +2 -0
  726. package/dist/types/oauth.js +0 -2
  727. package/dist/types/observability.d.ts +32 -0
  728. package/dist/types/outbox-worker.d.ts +35 -0
  729. package/dist/types/outbox-worker.js +11 -0
  730. package/dist/types/permissions-config.d.ts +0 -27
  731. package/dist/types/permissions-config.js +0 -2
  732. package/dist/types/plugin-install.d.ts +0 -11
  733. package/dist/types/plugin-install.js +0 -2
  734. package/dist/types/portal.d.ts +1 -0
  735. package/dist/types/product-public.d.ts +75 -0
  736. package/dist/types/product-public.js +2 -0
  737. package/dist/types/project/inputs.d.ts +2 -0
  738. package/dist/types/project/mfe-detection.js +0 -2
  739. package/dist/types/project/platform-mobile.js +0 -2
  740. package/dist/types/project/platform-specialty.js +0 -2
  741. package/dist/types/project-knowledge-graph.d.ts +7 -0
  742. package/dist/types/runtime-database.d.ts +10 -0
  743. package/dist/types/runtime-database.js +2 -0
  744. package/dist/types/runtime-policy.d.ts +40 -0
  745. package/dist/types/runtime-policy.js +2 -0
  746. package/dist/types/safety.d.ts +4 -5
  747. package/dist/types/schema-registry.d.ts +12 -0
  748. package/dist/types/schema-registry.js +2 -0
  749. package/dist/types/security.d.ts +52 -0
  750. package/dist/types/skill-registry.js +0 -2
  751. package/dist/types/spec/inputs.d.ts +2 -0
  752. package/dist/types/spec-lock-v2.d.ts +13 -7
  753. package/dist/types/spec-lock-v2.js +1 -1
  754. package/dist/types/spec-registry.js +0 -2
  755. package/dist/types/storage-bundle.d.ts +13 -0
  756. package/dist/types/storage-bundle.js +2 -0
  757. package/dist/types/storage-catalog.d.ts +18 -0
  758. package/dist/types/storage-catalog.js +2 -0
  759. package/dist/types/team-planner.js +0 -2
  760. package/dist/types/technology-registry.d.ts +35 -0
  761. package/dist/types/technology-registry.js +2 -0
  762. package/dist/types/technology-symbols.generated.d.ts +117 -0
  763. package/dist/types/technology-symbols.generated.js +2 -0
  764. package/dist/types/telemetry.d.ts +3 -3
  765. package/dist/types/transport.d.ts +2 -0
  766. package/dist/types/validate-worker.d.ts +44 -0
  767. package/dist/types/validate-worker.js +2 -0
  768. package/dist/types/validation-evidence.d.ts +1 -1
  769. package/dist/types/validation-receipt.d.ts +104 -0
  770. package/dist/types/validation-receipt.js +2 -0
  771. package/package.json +31 -20
  772. package/planu-native.json +1 -1
  773. package/planu-plugin.json +1 -1
  774. package/dist/engine/telemetry/geo-resolver.d.ts +0 -9
  775. package/dist/engine/telemetry/geo-resolver.js +0 -43
  776. package/dist/storage/data-dir-discovery.d.ts +0 -31
  777. package/dist/storage/data-dir-discovery.js +0 -140
  778. package/dist/storage/migrations/cwd-to-absolute.d.ts +0 -25
  779. package/dist/storage/migrations/cwd-to-absolute.js +0 -281
  780. package/dist/tools/create-spec/adapters/prior-decisions-hint.d.ts +0 -14
  781. package/dist/tools/create-spec/adapters/prior-decisions-hint.js +0 -30
  782. package/dist/tools/init-project/ancestor-data-detector.d.ts +0 -22
  783. package/dist/tools/init-project/ancestor-data-detector.js +0 -81
  784. package/dist/tools/update-status/force-done-audit.d.ts +0 -2
  785. package/dist/tools/update-status/force-done-audit.js +0 -23
  786. package/dist/types/migration/cwd-to-absolute.d.ts +0 -8
  787. package/dist/types/migration/cwd-to-absolute.js +0 -3
@@ -1,6 +1,4 @@
1
- // SPEC-597-EXEMPT: canonical mapping (npm-package↔framework, keyword catalogue)
2
- // — must enumerate framework names by design; no detection logic to migrate.
3
- // engine/infrastructure/docker-compose-generator.ts — Docker Compose generator (SPEC-171)
1
+ import { technologyValue } from '../technology-registry.js';
4
2
  import { getDockerTag } from '../../config/version-defaults.js';
5
3
  function renderHeader() {
6
4
  return `# docker-compose.yml — Generated by Planu generate_infrastructure (SPEC-171)
@@ -78,7 +76,7 @@ function renderDatabase(component) {
78
76
  }
79
77
  function renderRedis(component) {
80
78
  return ` ${component.name}:
81
- image: redis:${getDockerTag('redis')}
79
+ image: redis:${getDockerTag(technologyValue('technology-redis-34fb46'))}
82
80
  restart: unless-stopped
83
81
  ports:
84
82
  - "6379:6379"
@@ -138,7 +136,7 @@ function renderVolumes(components) {
138
136
  const volumeKinds = [
139
137
  'rds',
140
138
  'generic-database',
141
- 'redis',
139
+ technologyValue('technology-redis-34fb46'),
142
140
  'generic-cache',
143
141
  'sqs',
144
142
  'generic-queue',
@@ -156,9 +154,9 @@ function renderService(component) {
156
154
  switch (component.kind) {
157
155
  case 'rds':
158
156
  case 'generic-database':
159
- case 'supabase':
157
+ case technologyValue('technology-supabase-4d7594'):
160
158
  return renderDatabase(component);
161
- case 'redis':
159
+ case technologyValue('technology-redis-34fb46'):
162
160
  case 'generic-cache':
163
161
  return renderRedis(component);
164
162
  case 'generic-queue':
@@ -183,8 +181,8 @@ function renderService(component) {
183
181
  export function generateDockerCompose(components) {
184
182
  const localComponents = components.filter((c) => [
185
183
  'rds',
186
- 'supabase',
187
- 'redis',
184
+ technologyValue('technology-supabase-4d7594'),
185
+ technologyValue('technology-redis-34fb46'),
188
186
  'sqs',
189
187
  's3',
190
188
  'generic-database',
@@ -196,7 +194,7 @@ export function generateDockerCompose(components) {
196
194
  const volumes = renderVolumes(localComponents);
197
195
  const content = renderHeader() + services + volumes;
198
196
  return {
199
- format: 'docker-compose',
197
+ format: technologyValue('technology-docker-compose-b0a828'),
200
198
  filename: 'docker-compose.yml',
201
199
  content,
202
200
  };
@@ -1,4 +1,4 @@
1
- // engine/infrastructure/index.ts Main orchestrator for generate_infrastructure (SPEC-171)
1
+ import { technologyValue } from '../technology-registry.js';
2
2
  import { detectInfraSignals } from './signal-detector.js';
3
3
  import { mapSignalsToComponents } from './component-mapper.js';
4
4
  import { estimateCosts } from './cost-estimator.js';
@@ -14,10 +14,13 @@ export { generateTerraform } from './terraform-generator.js';
14
14
  export { generateDockerCompose } from './docker-compose-generator.js';
15
15
  export { generateKubernetes } from './kubernetes-generator.js';
16
16
  export { generateRailway } from './railway-generator.js';
17
- const DEFAULT_FORMATS = ['terraform', 'docker-compose'];
17
+ const DEFAULT_FORMATS = [
18
+ technologyValue('technology-terraform-94dc3e'),
19
+ technologyValue('technology-docker-compose-b0a828'),
20
+ ];
18
21
  const FORMAT_GENERATORS = {
19
22
  terraform: generateTerraform,
20
- 'docker-compose': generateDockerCompose,
23
+ [technologyValue('technology-docker-compose-b0a828')]: generateDockerCompose,
21
24
  kubernetes: generateKubernetes,
22
25
  railway: generateRailway,
23
26
  };
@@ -1,4 +1,4 @@
1
- // engine/infrastructure/kubernetes-generator.ts Kubernetes manifest generator (SPEC-171)
1
+ import { technologyValue } from '../technology-registry.js';
2
2
  function renderDeployment(component, env) {
3
3
  const replicas = env === 'prod' ? 3 : 1;
4
4
  return `apiVersion: apps/v1
@@ -133,7 +133,7 @@ export function generateKubernetes(components, env) {
133
133
  manifests.push(renderIngress(component, env));
134
134
  }
135
135
  return {
136
- format: 'kubernetes',
136
+ format: technologyValue('technology-kubernetes-94abcb'),
137
137
  filename: `k8s-${env}.yaml`,
138
138
  content: manifests.join('\n'),
139
139
  };
@@ -1,9 +1,11 @@
1
- // SPEC-597-EXEMPT: canonical mapping (npm-package↔framework, keyword catalogue)
2
- // — must enumerate framework names by design; no detection logic to migrate.
3
- // engine/infrastructure/railway-generator.ts — railway.toml generator (SPEC-171)
1
+ import { technologyValue } from '../technology-registry.js';
4
2
  function renderRailwayService(component, env) {
5
- const isDatabase = ['rds', 'supabase', 'generic-database'].includes(component.kind);
6
- const isCache = ['redis', 'generic-cache'].includes(component.kind);
3
+ const isDatabase = [
4
+ 'rds',
5
+ technologyValue('technology-supabase-4d7594'),
6
+ 'generic-database',
7
+ ].includes(component.kind);
8
+ const isCache = [technologyValue('technology-redis-34fb46'), 'generic-cache'].includes(component.kind);
7
9
  if (isDatabase) {
8
10
  return `
9
11
  [services.${component.name.replace(/-/g, '_')}]
@@ -65,8 +67,8 @@ export function generateRailway(components, env) {
65
67
  .filter((c) => [
66
68
  'railway-service',
67
69
  'rds',
68
- 'supabase',
69
- 'redis',
70
+ technologyValue('technology-supabase-4d7594'),
71
+ technologyValue('technology-redis-34fb46'),
70
72
  'generic-database',
71
73
  'generic-cache',
72
74
  'api',
@@ -81,7 +83,7 @@ export function generateRailway(components, env) {
81
83
  renderEnvironments(env) +
82
84
  (serviceBlocks || '# No additional services detected\n');
83
85
  return {
84
- format: 'railway',
86
+ format: technologyValue('technology-railway-e34d1c'),
85
87
  filename: 'railway.toml',
86
88
  content,
87
89
  };
@@ -1,11 +1,9 @@
1
- // SPEC-597-EXEMPT: canonical mapping (npm-package↔framework, keyword catalogue)
2
- // — must enumerate framework names by design; no detection logic to migrate.
3
- // engine/infrastructure/signal-detector.ts — Detect IaC signals in spec text (SPEC-171)
1
+ import { technologyValue } from '../technology-registry.js';
4
2
  const SIGNAL_PATTERNS = [
5
3
  // Databases — specific technologies first to avoid false positives from generic patterns
6
4
  {
7
5
  type: 'database',
8
- technology: 'supabase',
6
+ technology: technologyValue('technology-supabase-4d7594'),
9
7
  // supabase is its own BaaS platform, not just postgres — must be listed before postgres
10
8
  patterns: [/supabase/i],
11
9
  confidence: 'high',
@@ -44,7 +42,7 @@ const SIGNAL_PATTERNS = [
44
42
  // Cache — 'redis' and 'memcached' are specific; \bcache\b alone is generic
45
43
  {
46
44
  type: 'cache',
47
- technology: 'redis',
45
+ technology: technologyValue('technology-redis-34fb46'),
48
46
  patterns: [/redis/i, /memcached/i],
49
47
  confidence: 'high',
50
48
  },
@@ -115,15 +113,15 @@ const SIGNAL_PATTERNS = [
115
113
  },
116
114
  // Kubernetes
117
115
  {
118
- type: 'kubernetes',
116
+ type: technologyValue('technology-kubernetes-94abcb'),
119
117
  technology: 'k8s',
120
118
  patterns: [/kubernetes/i, /\bk8s\b/i, /kubectl/i, /helm\b/i, /\bpod\b/i],
121
119
  confidence: 'high',
122
120
  },
123
121
  // Railway
124
122
  {
125
- type: 'railway',
126
- technology: 'railway',
123
+ type: technologyValue('technology-railway-e34d1c'),
124
+ technology: technologyValue('technology-railway-e34d1c'),
127
125
  patterns: [/railway\.app/i, /railway\s+deploy/i, /railway\.toml/i],
128
126
  confidence: 'high',
129
127
  },
@@ -1,6 +1,4 @@
1
- // SPEC-597-EXEMPT: canonical mapping (npm-package↔framework, keyword catalogue)
2
- // — must enumerate framework names by design; no detection logic to migrate.
3
- // engine/infrastructure/terraform-generator.ts — Terraform HCL generator (SPEC-171)
1
+ import { technologyValue } from '../technology-registry.js';
4
2
  import { getTerraformVersion } from '../../config/version-defaults.js';
5
3
  function renderProvider(env) {
6
4
  return `terraform {
@@ -183,9 +181,9 @@ function renderComponent(component, env, emitCallerIdentity) {
183
181
  case 'rds':
184
182
  case 'generic-database':
185
183
  return renderRds(component, env);
186
- case 'supabase':
184
+ case technologyValue('technology-supabase-4d7594'):
187
185
  return `\n# Supabase is a managed service — provision via Supabase dashboard or Terraform provider.\n# See: https://registry.terraform.io/providers/supabase/supabase/latest\n`;
188
- case 'redis':
186
+ case technologyValue('technology-redis-34fb46'):
189
187
  case 'generic-cache':
190
188
  return renderRedis(component, env);
191
189
  case 'sqs':
@@ -212,8 +210,8 @@ function renderComponent(component, env, emitCallerIdentity) {
212
210
  export function generateTerraform(components, env) {
213
211
  const terraformComponents = components.filter((c) => [
214
212
  'rds',
215
- 'supabase',
216
- 'redis',
213
+ technologyValue('technology-supabase-4d7594'),
214
+ technologyValue('technology-redis-34fb46'),
217
215
  'sqs',
218
216
  's3',
219
217
  'ecs',
@@ -236,7 +234,7 @@ export function generateTerraform(components, env) {
236
234
  .join('\n');
237
235
  const content = renderProvider(env) + blocks;
238
236
  return {
239
- format: 'terraform',
237
+ format: technologyValue('technology-terraform-94dc3e'),
240
238
  filename: 'main.tf',
241
239
  content,
242
240
  };
@@ -1,9 +1,10 @@
1
+ import { technologyValue } from '../technology-registry.js';
1
2
  // ---------------------------------------------------------------------------
2
3
  // Keyword dictionaries
3
4
  // ---------------------------------------------------------------------------
4
5
  const DOMAIN_KEYWORDS = {
5
6
  fintech: [
6
- 'stripe',
7
+ technologyValue('technology-stripe-2bed20'),
7
8
  'paypal',
8
9
  'braintree',
9
10
  'square',
@@ -293,7 +294,7 @@ const AUTH_KEYWORDS = [
293
294
  'passport',
294
295
  'next-auth',
295
296
  'clerk',
296
- 'supabase',
297
+ technologyValue('technology-supabase-4d7594'),
297
298
  'firebase',
298
299
  ];
299
300
  // ---------------------------------------------------------------------------
@@ -1,7 +1,4 @@
1
- // SPEC-597-EXEMPT: canonical mapping (npm-package↔framework, keyword catalogue)
2
- // — must enumerate framework names by design; no detection logic to migrate.
3
- // engine/local-first/storage-advisor.ts — SPEC-047
4
- // Generates offline storage recommendations and schema evolution criteria.
1
+ import { technologyValue } from '../technology-registry.js';
5
2
  /** Detect the target platform from framework and stack information. */
6
3
  export function detectTargetPlatform(framework, stack) {
7
4
  const stackLower = stack.map((s) => s.toLowerCase()).join(' ');
@@ -9,13 +6,15 @@ export function detectTargetPlatform(framework, stack) {
9
6
  if (fw.includes('react-native') || fw.includes('expo') || stackLower.includes('react-native')) {
10
7
  return 'mobile-rn';
11
8
  }
12
- if (fw.includes('flutter') || stackLower.includes('flutter')) {
9
+ if (fw.includes(technologyValue('technology-flutter-be1396')) ||
10
+ stackLower.includes(technologyValue('technology-flutter-be1396'))) {
13
11
  return 'mobile-flutter';
14
12
  }
15
13
  if (fw.includes('tauri') || stackLower.includes('tauri')) {
16
14
  return 'desktop-tauri';
17
15
  }
18
- if (fw.includes('electron') || stackLower.includes('electron')) {
16
+ if (fw.includes(technologyValue('technology-electron-88b1de')) ||
17
+ stackLower.includes(technologyValue('technology-electron-88b1de'))) {
19
18
  return 'desktop-electron';
20
19
  }
21
20
  return 'web';
@@ -0,0 +1,5 @@
1
+ import type { PlanuCore } from '../types/core-bridge.js';
2
+ import type { MacOSKeychainNativePort } from '../types/security.js';
3
+ /** Build the privileged main-thread port only from a canonical, verified native module. */
4
+ export declare function createMacOSKeychainNativePort(platform: NodeJS.Platform, overrideDefined: boolean, disabled: boolean, nativeModule: PlanuCore | null, origin: 'override' | 'local' | 'package' | undefined, capabilities: readonly string[] | undefined): MacOSKeychainNativePort;
5
+ //# sourceMappingURL=macos-keychain-native-port.d.ts.map
@@ -0,0 +1,26 @@
1
+ /** Build the privileged main-thread port only from a canonical, verified native module. */
2
+ export function createMacOSKeychainNativePort(platform, overrideDefined, disabled, nativeModule, origin, capabilities) {
3
+ if (platform !== 'darwin') {
4
+ throw new Error('[Planu] macOS Keychain is unavailable on this platform');
5
+ }
6
+ if (overrideDefined || origin === 'override') {
7
+ throw new Error('[Planu] macOS Keychain rejects native path overrides');
8
+ }
9
+ if (disabled || !nativeModule) {
10
+ throw new Error('[Planu] Verified macOS Keychain native capability is unavailable');
11
+ }
12
+ if (origin !== 'local' && origin !== 'package') {
13
+ throw new Error('[Planu] macOS Keychain requires a canonical native artifact origin');
14
+ }
15
+ if (!capabilities?.includes('macos-keychain-v1')) {
16
+ throw new Error('[Planu] Verified native runtime lacks macos-keychain-v1');
17
+ }
18
+ const set = nativeModule.macosKeychainSet?.bind(nativeModule);
19
+ const get = nativeModule.macosKeychainGet?.bind(nativeModule);
20
+ const remove = nativeModule.macosKeychainDelete?.bind(nativeModule);
21
+ if (!set || !get || !remove) {
22
+ throw new Error('[Planu] Verified native runtime has an incomplete macOS Keychain port');
23
+ }
24
+ return { set, get, delete: remove };
25
+ }
26
+ //# sourceMappingURL=macos-keychain-native-port.js.map
@@ -2,6 +2,8 @@
2
2
  // Reads/writes to .planu/skill-cache/{source}/{skillName}.md (NOT planu/ — internal cache).
3
3
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
4
4
  import { dirname, join } from 'node:path';
5
+ import { hashProjectPath } from '../../storage/base-store.js';
6
+ import { resolveStorageLayout } from '../../storage/storage-layout.js';
5
7
  // ---------------------------------------------------------------------------
6
8
  // Constants — single exported location (no per-call literals)
7
9
  // ---------------------------------------------------------------------------
@@ -11,7 +13,7 @@ export const FETCHED_HEADER_PREFIX = '<!-- fetched:';
11
13
  // Helpers
12
14
  // ---------------------------------------------------------------------------
13
15
  function cachePath(projectPath, source, skillName) {
14
- return join(projectPath, '.planu', 'skill-cache', source, `${skillName}.md`);
16
+ return join(resolveStorageLayout().cache, 'skills', hashProjectPath(projectPath), source, `${skillName}.md`);
15
17
  }
16
18
  /** Parse the fetchedAt ISO timestamp from the header comment in a cached file. */
17
19
  function parseFetchedAt(content) {
@@ -9,9 +9,9 @@ import type { CheckAndFixResult } from '../../types/mcp-config.js';
9
9
  */
10
10
  export declare function findMcpConfigPath(projectPath: string): Promise<string>;
11
11
  /**
12
- * Returns true if the config already has a safe `planu` entry pointing to @planu/cli@latest.
12
+ * Returns true if the config already has a safe, exact-version `planu` entry.
13
13
  */
14
- export declare function isPlanuDirectlyConfigured(configPath: string): Promise<boolean>;
14
+ export declare function isPlanuDirectlyConfigured(configPath: string, expectedVersion?: string): Promise<boolean>;
15
15
  /**
16
16
  * Merges the direct Planu entry into the config file.
17
17
  * Does not overwrite unrelated keys.
@@ -4,12 +4,11 @@
4
4
  import { readFile, writeFile } from 'node:fs/promises';
5
5
  import { join } from 'node:path';
6
6
  import { homedir } from 'node:os';
7
- import { buildNpxLatestEntry } from '../auto-updater/config-patcher.js';
7
+ import { buildPinnedEntry } from '../auto-updater/config-patcher.js';
8
8
  // ---------------------------------------------------------------------------
9
9
  // Constants
10
10
  // ---------------------------------------------------------------------------
11
11
  const PLANU_KEY = 'planu';
12
- const PLANU_LATEST_ARG = '@planu/cli@latest';
13
12
  const MIN_STARTUP_TIMEOUT_SEC = 60;
14
13
  // ---------------------------------------------------------------------------
15
14
  // Helpers
@@ -62,9 +61,9 @@ export async function findMcpConfigPath(projectPath) {
62
61
  return join(projectPath, '.mcp.json');
63
62
  }
64
63
  /**
65
- * Returns true if the config already has a safe `planu` entry pointing to @planu/cli@latest.
64
+ * Returns true if the config already has a safe, exact-version `planu` entry.
66
65
  */
67
- export async function isPlanuDirectlyConfigured(configPath) {
66
+ export async function isPlanuDirectlyConfigured(configPath, expectedVersion) {
68
67
  const config = await readJsonFile(configPath);
69
68
  const servers = config.mcpServers;
70
69
  if (servers === undefined) {
@@ -78,7 +77,10 @@ export async function isPlanuDirectlyConfigured(configPath) {
78
77
  if (!Array.isArray(args)) {
79
78
  return false;
80
79
  }
81
- return (args.includes(PLANU_LATEST_ARG) &&
80
+ const expected = expectedVersion ? `@planu/cli@${expectedVersion}` : undefined;
81
+ const pinned = args.find((value) => /^@planu\/cli@\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/.test(value));
82
+ return Boolean(pinned &&
83
+ (expected === undefined || pinned === expected) &&
82
84
  (planuEntry.startup_timeout_sec ?? 0) >= MIN_STARTUP_TIMEOUT_SEC);
83
85
  }
84
86
  /**
@@ -88,7 +90,7 @@ export async function isPlanuDirectlyConfigured(configPath) {
88
90
  export async function injectDirectPlanuEntry(configPath, currentVersion, latestVersion) {
89
91
  const existing = await readJsonFile(configPath);
90
92
  const mcpServers = existing.mcpServers !== undefined ? { ...existing.mcpServers } : {};
91
- mcpServers[PLANU_KEY] = buildNpxLatestEntry();
93
+ mcpServers[PLANU_KEY] = buildPinnedEntry(latestVersion);
92
94
  const updated = {
93
95
  ...existing,
94
96
  mcpServers,
@@ -110,9 +112,9 @@ export async function injectDirectPlanuEntry(configPath, currentVersion, latestV
110
112
  */
111
113
  export async function checkAndFixBundledVersion(projectPath, currentVersion, latestVersion) {
112
114
  const configPath = await findMcpConfigPath(projectPath);
113
- const alreadyConfigured = await isPlanuDirectlyConfigured(configPath);
115
+ const alreadyConfigured = await isPlanuDirectlyConfigured(configPath, latestVersion);
114
116
  if (alreadyConfigured) {
115
- return { configured: false, reason: 'already configured with @planu/cli@latest' };
117
+ return { configured: false, reason: `already configured with @planu/cli@${latestVersion}` };
116
118
  }
117
119
  await injectDirectPlanuEntry(configPath, currentVersion, latestVersion);
118
120
  /* c8 ignore next — `?? configPath` fallback is unreachable (split always produces at least one element) */
@@ -1,7 +1,4 @@
1
- // SPEC-597-EXEMPT: canonical mapping (npm-package↔framework, keyword catalogue)
2
- // — must enumerate framework names by design; no detection logic to migrate.
3
- // engine/migration/db-migrator.ts — Database migration planning (SPEC-028a)
4
- // analyze-db, map-db, plan-db actions
1
+ import { technologyValue } from '../technology-registry.js';
5
2
  // --- Type mapping knowledge base ---
6
3
  const POSTGRES_TO_MONGO = [
7
4
  { sourceType: 'TEXT', targetType: 'String', dataLossRisk: false },
@@ -93,7 +90,7 @@ function detectMigrationType(source, target) {
93
90
  ]);
94
91
  const newSqlEngines = new Set(['cockroachdb', 'spanner', 'tidb', 'alloydb']);
95
92
  const cloudManaged = new Set([
96
- 'supabase',
93
+ technologyValue('technology-supabase-4d7594'),
97
94
  'aurora',
98
95
  'neon',
99
96
  'planetscale',
@@ -1,5 +1,4 @@
1
- // engine/migration/equivalence-mapper.ts Tech equivalence mapping (SPEC-028a)
2
- // Maps source stack libs to target stack equivalents
1
+ import { technologyValue } from '../technology-registry.js';
3
2
  // --- Known equivalence knowledge base ---
4
3
  const JAVA_TO_GO = [
5
4
  {
@@ -15,7 +14,7 @@ const JAVA_TO_GO = [
15
14
  },
16
15
  {
17
16
  sourceLib: 'JPA / Hibernate',
18
- targetLib: 'GORM',
17
+ targetLib: technologyValue('technology-gorm-9c68e4'),
19
18
  category: 'database',
20
19
  status: 'partial',
21
20
  differences: [
@@ -50,8 +49,8 @@ const JAVA_TO_GO = [
50
49
  ];
51
50
  const PHP_TO_NODE = [
52
51
  {
53
- sourceLib: 'Laravel',
54
- targetLib: 'NestJS',
52
+ sourceLib: technologyValue('technology-laravel-ab5d68'),
53
+ targetLib: technologyValue('technology-nestjs-58b822'),
55
54
  category: 'framework',
56
55
  status: 'partial',
57
56
  differences: [
@@ -62,7 +61,7 @@ const PHP_TO_NODE = [
62
61
  },
63
62
  {
64
63
  sourceLib: 'Eloquent ORM',
65
- targetLib: 'Prisma',
64
+ targetLib: technologyValue('technology-prisma-e4b88d'),
66
65
  category: 'database',
67
66
  status: 'exact',
68
67
  differences: ['API syntax differs significantly'],
@@ -85,8 +84,8 @@ const PHP_TO_NODE = [
85
84
  ];
86
85
  const PYTHON_DJANGO_TO_FASTAPI = [
87
86
  {
88
- sourceLib: 'Django',
89
- targetLib: 'FastAPI',
87
+ sourceLib: technologyValue('technology-django-4445d9'),
88
+ targetLib: technologyValue('technology-fastapi-2dd9eb'),
90
89
  category: 'framework',
91
90
  status: 'partial',
92
91
  differences: [
@@ -103,14 +102,14 @@ const PYTHON_DJANGO_TO_FASTAPI = [
103
102
  differences: ['Django QuerySet API differs from SQLAlchemy session'],
104
103
  },
105
104
  {
106
- sourceLib: 'pytest',
107
- targetLib: 'pytest',
105
+ sourceLib: technologyValue('technology-pytest-2b0121'),
106
+ targetLib: technologyValue('technology-pytest-2b0121'),
108
107
  category: 'testing',
109
108
  status: 'exact',
110
109
  differences: [],
111
110
  },
112
111
  {
113
- sourceLib: 'Celery',
112
+ sourceLib: technologyValue('technology-celery-17d78b'),
114
113
  targetLib: 'arq / dramatiq',
115
114
  category: 'queue',
116
115
  status: 'partial',
@@ -119,8 +118,8 @@ const PYTHON_DJANGO_TO_FASTAPI = [
119
118
  ];
120
119
  const EXPRESS_TO_FASTIFY = [
121
120
  {
122
- sourceLib: 'Express',
123
- targetLib: 'Fastify',
121
+ sourceLib: technologyValue('technology-express-572a14'),
122
+ targetLib: technologyValue('technology-fastify-ed8050'),
124
123
  category: 'framework',
125
124
  status: 'partial',
126
125
  differences: [
@@ -1,5 +1,4 @@
1
- // engine/migration/service-catalogs.ts Static catalogs for service migration (SPEC-028b)
2
- // Provider catalog, service equivalences, and validation check templates
1
+ import { technologyValue } from '../technology-registry.js';
3
2
  // --- Provider detection catalog ---
4
3
  export const PROVIDER_CATALOG = [
5
4
  // Message queues
@@ -26,9 +25,9 @@ export const PROVIDER_CATALOG = [
26
25
  },
27
26
  // Caches
28
27
  {
29
- provider: 'redis',
28
+ provider: technologyValue('technology-redis-34fb46'),
30
29
  type: 'cache',
31
- keywords: ['redis', 'ioredis', 'upstash'],
30
+ keywords: [technologyValue('technology-redis-34fb46'), 'ioredis', 'upstash'],
32
31
  stateless: true,
33
32
  riskLevel: 'stateless',
34
33
  },
@@ -85,9 +84,9 @@ export const PROVIDER_CATALOG = [
85
84
  },
86
85
  // Observability
87
86
  {
88
- provider: 'datadog',
87
+ provider: technologyValue('technology-datadog-4d8bd9'),
89
88
  type: 'observability',
90
- keywords: ['datadog', 'dd-trace'],
89
+ keywords: [technologyValue('technology-datadog-4d8bd9'), 'dd-trace'],
91
90
  stateless: true,
92
91
  riskLevel: 'stateless',
93
92
  },
@@ -133,7 +132,7 @@ export const SERVICE_EQUIVALENCES = [
133
132
  complexity: 'high',
134
133
  },
135
134
  {
136
- source: 'redis',
135
+ source: technologyValue('technology-redis-34fb46'),
137
136
  target: 'dynamodb',
138
137
  type: 'cache',
139
138
  differences: [
@@ -1,5 +1,4 @@
1
- // engine/migration/service-migrator-catalogs.ts Static provider/equivalence/validation catalogs
2
- // Used internally by service-migrator.ts — not part of public API
1
+ import { technologyValue } from '../technology-registry.js';
3
2
  // --- Provider catalog ---
4
3
  export const PROVIDER_CATALOG = [
5
4
  // Message queues
@@ -26,9 +25,9 @@ export const PROVIDER_CATALOG = [
26
25
  },
27
26
  // Caches
28
27
  {
29
- provider: 'redis',
28
+ provider: technologyValue('technology-redis-34fb46'),
30
29
  type: 'cache',
31
- keywords: ['redis', 'ioredis', 'upstash'],
30
+ keywords: [technologyValue('technology-redis-34fb46'), 'ioredis', 'upstash'],
32
31
  stateless: true,
33
32
  riskLevel: 'stateless',
34
33
  },
@@ -85,9 +84,9 @@ export const PROVIDER_CATALOG = [
85
84
  },
86
85
  // Observability
87
86
  {
88
- provider: 'datadog',
87
+ provider: technologyValue('technology-datadog-4d8bd9'),
89
88
  type: 'observability',
90
- keywords: ['datadog', 'dd-trace'],
89
+ keywords: [technologyValue('technology-datadog-4d8bd9'), 'dd-trace'],
91
90
  stateless: true,
92
91
  riskLevel: 'stateless',
93
92
  },
@@ -133,7 +132,7 @@ export const SERVICE_EQUIVALENCES = [
133
132
  complexity: 'high',
134
133
  },
135
134
  {
136
- source: 'redis',
135
+ source: technologyValue('technology-redis-34fb46'),
137
136
  target: 'dynamodb',
138
137
  type: 'cache',
139
138
  differences: [
@@ -1,5 +1,4 @@
1
- // SPEC-597-EXEMPT: canonical mapping (npm-package↔framework, keyword catalogue)
2
- // — must enumerate framework names by design; no detection logic to migrate.
1
+ import { technologyValue } from './technology-registry.js';
3
2
  // Planu — Deep iOS project detection (SPEC-013)
4
3
  import { join, basename } from 'node:path';
5
4
  import { fileExists } from './detection-utils.js';
@@ -23,7 +22,7 @@ const IOS_CAP_KEYS = {
23
22
  'com.apple.security.application-groups': 'App Groups',
24
23
  };
25
24
  const IOS_FW_SIGNALS = [
26
- ['import SwiftUI', 'swiftui'],
25
+ ['import SwiftUI', technologyValue('technology-swiftui-b63400')],
27
26
  ['import UIKit', 'uikit'],
28
27
  ['import Combine', 'combine'],
29
28
  ['import CoreData', 'coredata'],
@@ -1,9 +1,21 @@
1
+ import { technologyValue } from './technology-registry.js';
1
2
  export { detectDeepIOS, detectIOSArchPattern } from './mobile-detector-ios.js';
2
3
  export { detectDeepAndroid, detectAndroidArchPattern } from './mobile-detector-android.js';
3
4
  // -- Framework mapping utilities ----------------------------------------------
4
- const IOS_FW_SET = new Set(['swiftui', 'uikit', 'combine', 'coredata', 'vapor']);
5
+ const IOS_FW_SET = new Set([
6
+ technologyValue('technology-swiftui-b63400'),
7
+ 'uikit',
8
+ 'combine',
9
+ 'coredata',
10
+ 'vapor',
11
+ ]);
5
12
  const ANDROID_FW_SET = new Set(['jetpack-compose', 'android-views', 'kotlin-multiplatform']);
6
- const CROSS_FW_SET = new Set(['flutter', 'react-native', 'expo', 'kmp']);
13
+ const CROSS_FW_SET = new Set([
14
+ technologyValue('technology-flutter-be1396'),
15
+ 'react-native',
16
+ 'expo',
17
+ 'kmp',
18
+ ]);
7
19
  export function getMobilePlatformFromFramework(framework) {
8
20
  const lower = framework.toLowerCase();
9
21
  if (IOS_FW_SET.has(lower)) {
@@ -18,7 +30,7 @@ export function getMobilePlatformFromFramework(framework) {
18
30
  return null;
19
31
  }
20
32
  const FW_NAME_MAP = {
21
- swiftui: 'swiftui',
33
+ swiftui: technologyValue('technology-swiftui-b63400'),
22
34
  uikit: 'uikit',
23
35
  combine: 'combine',
24
36
  coredata: 'coredata',
@@ -29,7 +41,7 @@ const FW_NAME_MAP = {
29
41
  'xml-views': 'xml-views',
30
42
  room: 'room',
31
43
  hilt: 'hilt',
32
- flutter: 'flutter',
44
+ flutter: technologyValue('technology-flutter-be1396'),
33
45
  'react-native': 'react-native',
34
46
  reactnative: 'react-native',
35
47
  'kotlin-multiplatform': 'kmp',
@@ -1,7 +1,4 @@
1
- // SPEC-597-EXEMPT: canonical mapping (npm-package↔framework, keyword catalogue)
2
- // — must enumerate framework names by design; no detection logic to migrate.
3
- // engine/model-router/complexity-analyzer.ts — Extract and normalise complexity signals.
4
- // SPEC-076 AC-01
1
+ import { technologyValue } from '../technology-registry.js';
5
2
  // ---------------------------------------------------------------------------
6
3
  // Normalisation ceilings (signals are clamped to 0-1 using these maximums)
7
4
  // ---------------------------------------------------------------------------
@@ -55,9 +52,9 @@ const DB_KEYWORDS = [
55
52
  'postgres',
56
53
  'mysql',
57
54
  'mongo',
58
- 'redis',
59
- 'prisma',
60
- 'drizzle',
55
+ technologyValue('technology-redis-34fb46'),
56
+ technologyValue('technology-prisma-99497c'),
57
+ technologyValue('technology-drizzle-424f22'),
61
58
  ];
62
59
  /** Keywords that indicate ultra-deep reasoning is required (SPEC-259). */
63
60
  const ULTRATHINK_KEYWORDS = [