@planu/cli 5.3.67 → 5.3.69

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 (389) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/dist/.planu-build.json +1 -1
  3. package/dist/cli/commands/install.d.ts +2 -15
  4. package/dist/config/release-policy.json +2 -2
  5. package/dist/core/shared/fs.d.ts +11 -0
  6. package/dist/core/shared/fs.js +90 -0
  7. package/dist/core/shared/strings.d.ts +3 -0
  8. package/dist/core/shared/strings.js +13 -0
  9. package/dist/engine/actuals/git-analyzer.js +1 -1
  10. package/dist/engine/actuals/progress-parser.js +1 -3
  11. package/dist/engine/agent-handoff-store.js +1 -0
  12. package/dist/engine/agent-squad/dispatcher.js +1 -0
  13. package/dist/engine/agent-telemetry.js +1 -0
  14. package/dist/engine/auth/config.js +1 -0
  15. package/dist/engine/auto-updater/atomic-upgrade.js +1 -0
  16. package/dist/engine/auto-updater/index.js +1 -0
  17. package/dist/engine/autopilot/action-registry.js +20 -0
  18. package/dist/engine/autopilot/audit-logger.js +1 -0
  19. package/dist/engine/autopilot/bootstrap.js +9 -2
  20. package/dist/engine/autopilot/complete-loop.js +4 -0
  21. package/dist/engine/autopilot/crash-shield-rate-limiter.js +1 -0
  22. package/dist/engine/autopilot/event-bus.js +1 -0
  23. package/dist/engine/autopilot/state-updater.js +6 -0
  24. package/dist/engine/browser-validator.js +1 -3
  25. package/dist/engine/build-tool-detector.js +1 -8
  26. package/dist/engine/bundle-installer.js +2 -10
  27. package/dist/engine/cascade-hooks/core/append-releases.js +1 -0
  28. package/dist/engine/cascade-hooks/core/write-session-json.js +2 -2
  29. package/dist/engine/cascade-hooks/hooks/dispatch-hook-event.hook.d.ts +3 -1
  30. package/dist/engine/cascade-hooks/hooks/dispatch-hook-event.hook.js +12 -3
  31. package/dist/engine/cascade-hooks/hooks/estimate-calibration.hook.js +1 -0
  32. package/dist/engine/cascade-hooks/hooks/housekeeping-on-done.hook.js +2 -0
  33. package/dist/engine/cascade-hooks/hooks/implementing-kickoff.hook.js +5 -1
  34. package/dist/engine/cascade-hooks/hooks/lesson-drift.hook.js +1 -0
  35. package/dist/engine/cascade-hooks/hooks/orchestration-plan.hook.js +1 -0
  36. package/dist/engine/cascade-hooks/hooks/session-context.hook.js +4 -2
  37. package/dist/engine/cascade-hooks/hooks/slack-notify.hook.js +1 -0
  38. package/dist/engine/cascade-hooks/hooks/status-json.hook.js +2 -0
  39. package/dist/engine/cascade-hooks/hooks/velocity-profile.hook.js +2 -0
  40. package/dist/engine/cascade-hooks/runner.js +2 -0
  41. package/dist/engine/cascade-hooks/state-drift-detector.js +2 -0
  42. package/dist/engine/checkpoint/checkpoint-manager.js +2 -0
  43. package/dist/engine/checkpoint/policy-engine.js +1 -0
  44. package/dist/engine/ci-generator/stack-detector.js +2 -10
  45. package/dist/engine/clarification-gate/token-store.js +1 -0
  46. package/dist/engine/claude-config-auditor/claudemd-auditor.js +2 -10
  47. package/dist/engine/claude-config-auditor/settings-auditor.js +2 -10
  48. package/dist/engine/client-detection.js +2 -10
  49. package/dist/engine/compliance/auto-remediator.js +1 -0
  50. package/dist/engine/compliance/evidence-builder.d.ts +2 -2
  51. package/dist/engine/compliance/framework-catalog.d.ts +6 -6
  52. package/dist/engine/compliance/gap-analyzer.d.ts +2 -2
  53. package/dist/engine/config-health/build-tool-checker.js +1 -9
  54. package/dist/engine/config-health/ci-commands-collector.d.ts +2 -1
  55. package/dist/engine/config-health/ci-commands-collector.js +2 -9
  56. package/dist/engine/config-health/go-checker.js +1 -9
  57. package/dist/engine/config-health/mcp-config-checker.js +2 -10
  58. package/dist/engine/config-health/python-checker.js +1 -9
  59. package/dist/engine/config-health/rust-checker.js +1 -9
  60. package/dist/engine/config-health/ts-checker-scripts.js +1 -9
  61. package/dist/engine/config-health/ts-checker.js +1 -9
  62. package/dist/engine/context-artifacts/store.js +1 -0
  63. package/dist/engine/context-md-generator.js +1 -0
  64. package/dist/engine/context-orchestrator/index.js +2 -0
  65. package/dist/engine/convention-scanner/convention-parser.js +2 -9
  66. package/dist/engine/cost-guardrails.js +1 -0
  67. package/dist/engine/cost-tracking/ledger.js +1 -0
  68. package/dist/engine/criterion-identity.js +1 -1
  69. package/dist/engine/dashboard/data-loader.js +1 -0
  70. package/dist/engine/dashboard/drift-score.js +2 -0
  71. package/dist/engine/dashboard/spec-updater.d.ts +3 -1
  72. package/dist/engine/dashboard/spec-updater.js +9 -2
  73. package/dist/engine/dashboard/templates-layout.d.ts +2 -2
  74. package/dist/engine/dashboard/templates-layout.js +2 -9
  75. package/dist/engine/data-projects-gc/gc-runner.js +2 -4
  76. package/dist/engine/deleter/audit-logger.js +1 -0
  77. package/dist/engine/deleter/core.js +6 -0
  78. package/dist/engine/deleter/trash-manager.js +1 -0
  79. package/dist/engine/desktop-detector.js +1 -9
  80. package/dist/engine/detection-utils.d.ts +2 -1
  81. package/dist/engine/detection-utils.js +3 -10
  82. package/dist/engine/detectors/advanced-framework-detector/helpers.d.ts +3 -2
  83. package/dist/engine/detectors/advanced-framework-detector/helpers.js +3 -17
  84. package/dist/engine/detectors/cicd-detector.js +2 -10
  85. package/dist/engine/detectors/css-framework-detector.js +2 -10
  86. package/dist/engine/detectors/deployment-detector.js +3 -12
  87. package/dist/engine/detectors/frontend-perf-detector.js +2 -10
  88. package/dist/engine/detectors/gitops-detector.js +3 -11
  89. package/dist/engine/detectors/idp-detector.js +1 -3
  90. package/dist/engine/detectors/k3s-detector.js +3 -11
  91. package/dist/engine/detectors/llm-detector/file-readers.d.ts +2 -1
  92. package/dist/engine/detectors/llm-detector/file-readers.js +2 -9
  93. package/dist/engine/detectors/mfe-detector.js +5 -13
  94. package/dist/engine/detectors/monitoring-detector.js +2 -11
  95. package/dist/engine/detectors/monorepo-detector.d.ts +1 -0
  96. package/dist/engine/detectors/monorepo-detector.js +1 -10
  97. package/dist/engine/detectors/nomad-detector.js +3 -11
  98. package/dist/engine/detectors/otel-ecosystem-detectors.d.ts +2 -1
  99. package/dist/engine/detectors/otel-ecosystem-detectors.js +2 -10
  100. package/dist/engine/doc-generator/executive-summary/html-template.js +1 -7
  101. package/dist/engine/doc-generator/executive-summary/section-builders.js +1 -7
  102. package/dist/engine/doc-generator/per-spec-report/mermaid-renderer.js +1 -7
  103. package/dist/engine/doc-generator/per-spec-report/spec-section-builders.js +1 -7
  104. package/dist/engine/doc-generator/per-spec-report/technical-report.js +1 -7
  105. package/dist/engine/doc-generator/portal/analytics-page.js +1 -7
  106. package/dist/engine/doc-generator/portal/architecture-page.js +1 -7
  107. package/dist/engine/doc-generator/portal/changelog-page.js +1 -7
  108. package/dist/engine/doc-generator/portal/decision-page.js +1 -7
  109. package/dist/engine/doc-generator/portal/decision-timeline-builder.js +1 -7
  110. package/dist/engine/doc-generator/portal/kanban-view-builder.js +1 -7
  111. package/dist/engine/doc-generator/portal/portal-breadcrumbs.js +1 -7
  112. package/dist/engine/doc-generator/portal/portal-landing-cards.js +1 -7
  113. package/dist/engine/doc-generator/portal/portal-navbar.js +1 -7
  114. package/dist/engine/doc-generator/portal/portal-page-detector.d.ts +3 -0
  115. package/dist/engine/doc-generator/portal/portal-page-detector.js +1 -10
  116. package/dist/engine/doc-generator/portal/portal-regenerator.js +2 -0
  117. package/dist/engine/doc-generator/portal/risk-matrix-svg.js +1 -7
  118. package/dist/engine/doc-generator/portal/risk-page.js +1 -7
  119. package/dist/engine/doc-generator/portal/roadmap-page.js +1 -7
  120. package/dist/engine/doc-generator/proposal/proposal-gantt-builder.js +1 -7
  121. package/dist/engine/doc-generator/proposal/proposal-kpi-builder.js +1 -7
  122. package/dist/engine/doc-generator/proposal/proposal-section-builders-advanced.js +2 -8
  123. package/dist/engine/doc-generator/proposal/proposal-section-builders.js +1 -7
  124. package/dist/engine/docs-site-generator/html-templates.js +1 -7
  125. package/dist/engine/docs-site-generator/markdown-renderer.js +1 -7
  126. package/dist/engine/drift/violation-resolver.js +2 -0
  127. package/dist/engine/dynamic-knowledge/knowledge-cache.js +1 -0
  128. package/dist/engine/ecosystem-absorber/knowledge-cache.js +1 -0
  129. package/dist/engine/edge-db-detector.js +1 -10
  130. package/dist/engine/escalator/retry-counter.js +1 -0
  131. package/dist/engine/evidence-gates/artifact-reader.js +1 -0
  132. package/dist/engine/evidence-gates/evidence-autofill.js +1 -0
  133. package/dist/engine/evidence-gates/evidence-skeletons.js +1 -0
  134. package/dist/engine/evidence-gates/reconciliation-freshness.js +1 -0
  135. package/dist/engine/execution/durable-job-heartbeat-runtime.js +1 -0
  136. package/dist/engine/execution/job-runtime.js +2 -0
  137. package/dist/engine/execution/validate-job-executor.d.ts +1 -1
  138. package/dist/engine/execution/validate-job-executor.js +3 -0
  139. package/dist/engine/execution/validate-job-payload.js +1 -0
  140. package/dist/engine/execution/validate-worker-thread.js +1 -0
  141. package/dist/engine/facilitate/context-loader.js +1 -0
  142. package/dist/engine/figma/change-detector.d.ts +1 -8
  143. package/dist/engine/figma/code-connect-fetcher.d.ts +1 -7
  144. package/dist/engine/figma/design-enricher.d.ts +1 -17
  145. package/dist/engine/figma/design-enricher.js +0 -1
  146. package/dist/engine/figma/e2e-generator.d.ts +1 -23
  147. package/dist/engine/figma/flow-analyzer.d.ts +1 -11
  148. package/dist/engine/figma/frame-extractor.d.ts +1 -11
  149. package/dist/engine/figma/frame-extractor.js +3 -0
  150. package/dist/engine/figma/multi-file-manager.d.ts +1 -6
  151. package/dist/engine/figma/spec-generator.js +2 -0
  152. package/dist/engine/figma/thumbnail-fetcher.d.ts +1 -1
  153. package/dist/engine/figma/token-extractor.d.ts +1 -6
  154. package/dist/engine/figma/token-extractor.js +0 -1
  155. package/dist/engine/figma/version-tracker.d.ts +1 -7
  156. package/dist/engine/figma/version-tracker.js +0 -1
  157. package/dist/engine/figma/visual-qa.d.ts +5 -19
  158. package/dist/engine/figma/visual-qa.js +1 -2
  159. package/dist/engine/figma/webhook-manager.d.ts +1 -7
  160. package/dist/engine/frontmatter-sha/reseal.js +1 -0
  161. package/dist/engine/frontmatter-sha/verify-terminal.js +1 -0
  162. package/dist/engine/git-hook-injector.js +2 -10
  163. package/dist/engine/github/quality-dimensions.js +1 -3
  164. package/dist/engine/global-rules-manager.js +2 -3
  165. package/dist/engine/handoff-artifacts/implementation-review-reader.js +1 -0
  166. package/dist/engine/handoff-artifacts/io.js +2 -0
  167. package/dist/engine/handoff-packager.js +2 -1
  168. package/dist/engine/health/auto-fixer.js +1 -0
  169. package/dist/engine/hooks/context-injector.js +1 -0
  170. package/dist/engine/hooks-reconciler.js +1 -8
  171. package/dist/engine/impact-detector/index.js +2 -9
  172. package/dist/engine/implementation-contract/common.js +1 -3
  173. package/dist/engine/implementation-contract/evaluator.js +1 -3
  174. package/dist/engine/keyword-matcher/boundary.d.ts +2 -7
  175. package/dist/engine/keyword-matcher/boundary.js +2 -14
  176. package/dist/engine/lifecycle-reconciliation-io.js +1 -0
  177. package/dist/engine/lifecycle-reconciliation.js +3 -0
  178. package/dist/engine/local-first/detector.js +1 -9
  179. package/dist/engine/marketplace-fetcher/cache.js +2 -0
  180. package/dist/engine/marketplace-fetcher/index.js +1 -0
  181. package/dist/engine/mcp-config/mcp-config-writer.js +2 -10
  182. package/dist/engine/migrations/remove-commercial-state.js +2 -0
  183. package/dist/engine/mobile-detector-shared.d.ts +1 -1
  184. package/dist/engine/mobile-detector-shared.js +2 -9
  185. package/dist/engine/multi-channel-notifier.js +1 -0
  186. package/dist/engine/multi-teammate-review/disagreement-counter.js +1 -0
  187. package/dist/engine/multi-teammate-review/panel-orchestrator.js +1 -0
  188. package/dist/engine/onboarding-engine.js +1 -9
  189. package/dist/engine/permissions-merger/stack-detectors.js +2 -10
  190. package/dist/engine/pii-detector/core.js +1 -3
  191. package/dist/engine/platform-engineering/dx-analyzer.js +1 -10
  192. package/dist/engine/platform-engineering/idp-detector.js +2 -10
  193. package/dist/engine/project-dna/ai-tool-detector.js +2 -10
  194. package/dist/engine/project-dna/stack-detector.js +2 -10
  195. package/dist/engine/project-graph/builder.js +11 -2
  196. package/dist/engine/project-graph/cache.d.ts +5 -2
  197. package/dist/engine/project-graph/cache.js +174 -34
  198. package/dist/engine/project-graph/extractors/decision-store-extractor.js +1 -0
  199. package/dist/engine/project-graph/freshness-projection.js +3 -0
  200. package/dist/engine/project-graph/query.js +14 -11
  201. package/dist/engine/project-health-checker.js +2 -6
  202. package/dist/engine/provider-adapters/shared/spec-loader.js +1 -0
  203. package/dist/engine/quality-gates/gate-evaluator.js +1 -3
  204. package/dist/engine/react-detector.js +6 -14
  205. package/dist/engine/reconcile/apply-changes.js +1 -3
  206. package/dist/engine/registry/core.js +1 -0
  207. package/dist/engine/registry/loader.js +2 -0
  208. package/dist/engine/release/postmortem-generator.js +1 -0
  209. package/dist/engine/release/rollback-runner.d.ts +2 -2
  210. package/dist/engine/release/stuck-spec-detector.js +7 -0
  211. package/dist/engine/release-pipeline/release-spec-closer.js +3 -0
  212. package/dist/engine/rules-reconciler.d.ts +1 -1
  213. package/dist/engine/rules-reconciler.js +2 -9
  214. package/dist/engine/safety/atomic-writer.js +1 -0
  215. package/dist/engine/safety/cross-process-lock.js +2 -0
  216. package/dist/engine/safety/file-mutex.js +1 -0
  217. package/dist/engine/safety/lock-lease-store.js +1 -0
  218. package/dist/engine/safety/lock-scavenger.js +2 -0
  219. package/dist/engine/saga/transition-cascade.js +3 -0
  220. package/dist/engine/scan-project/index.js +1 -0
  221. package/dist/engine/scan-project/module-discoverer.js +1 -9
  222. package/dist/engine/schema-parity-auditor/handler-checker.js +1 -3
  223. package/dist/engine/schema-parity-auditor/index.js +1 -3
  224. package/dist/engine/schema-parity-auditor/type-checker.js +1 -3
  225. package/dist/engine/self-healing/strategies/coverage-fix.js +2 -10
  226. package/dist/engine/session-context-generator.d.ts +8 -0
  227. package/dist/engine/session-context-generator.js +33 -23
  228. package/dist/engine/session-state/session-artifact-refresher.d.ts +7 -0
  229. package/dist/engine/session-state/session-artifact-refresher.js +140 -0
  230. package/dist/engine/session-state/writer.d.ts +3 -0
  231. package/dist/engine/session-state/writer.js +35 -17
  232. package/dist/engine/shared-agent-memory.js +1 -0
  233. package/dist/engine/skill-adapter/index.js +3 -0
  234. package/dist/engine/skill-bootstrap/registry-fetcher.js +1 -0
  235. package/dist/engine/skill-bootstrap/skill-writer.js +2 -9
  236. package/dist/engine/skill-bootstrap/stack-matcher.js +1 -9
  237. package/dist/engine/skill-discovery/multi-agent-writer.d.ts +1 -0
  238. package/dist/engine/skill-discovery/multi-agent-writer.js +1 -9
  239. package/dist/engine/skill-generator/workflow-skill-generator.js +1 -0
  240. package/dist/engine/skill-registry/ttl-refresh.js +2 -0
  241. package/dist/engine/spec-audit/index.js +2 -0
  242. package/dist/engine/spec-audit/report-writer.js +1 -0
  243. package/dist/engine/spec-coverage/core.js +1 -0
  244. package/dist/engine/spec-decomposer/analyzer.js +1 -11
  245. package/dist/engine/spec-dependency-graph/dot-exporter.d.ts +1 -1
  246. package/dist/engine/spec-dependency-graph/graph-builder.d.ts +1 -20
  247. package/dist/engine/spec-dependency-graph/superseded-set.d.ts +1 -1
  248. package/dist/engine/spec-diff-engine.js +1 -7
  249. package/dist/engine/spec-format/read-technical-section.js +1 -3
  250. package/dist/engine/spec-format/replace-section.js +1 -3
  251. package/dist/engine/spec-format/spec-id.d.ts +9 -1
  252. package/dist/engine/spec-format/spec-id.js +24 -3
  253. package/dist/engine/spec-format/unified-spec-builder.js +1 -3
  254. package/dist/engine/spec-migrator/canonical-deduplicator.js +2 -0
  255. package/dist/engine/spec-observability/tracker.js +1 -0
  256. package/dist/engine/spec-registry/adapter.js +2 -10
  257. package/dist/engine/spec-registry/validator.d.ts +1 -0
  258. package/dist/engine/spec-registry/validator.js +1 -9
  259. package/dist/engine/spec-state-machine/transition-spec.js +1 -0
  260. package/dist/engine/spec-templates/custom-loader.js +1 -0
  261. package/dist/engine/stack-auditor/build-tool-auditor.js +1 -9
  262. package/dist/engine/staleness/stale-implementing.js +5 -14
  263. package/dist/engine/status-reconciler/index.js +4 -1
  264. package/dist/engine/structural-memory/helpers.js +1 -0
  265. package/dist/engine/supply-chain/slsa-checker.js +1 -9
  266. package/dist/engine/tdd-enforcer/stub-artifact-path.js +1 -0
  267. package/dist/engine/telemetry/health-checker.js +1 -0
  268. package/dist/engine/telemetry/telemetry-store.js +1 -0
  269. package/dist/engine/token-optimizer/response-cache.js +1 -3
  270. package/dist/engine/tool-groups/group-manager.js +2 -0
  271. package/dist/engine/update-notifier.js +1 -0
  272. package/dist/engine/validation/approved-spec-portability.js +1 -0
  273. package/dist/engine/validation/durable-validation.js +1 -0
  274. package/dist/engine/validation/validation-freshness.js +2 -0
  275. package/dist/engine/validation/validation-receipt.js +1 -0
  276. package/dist/engine/validation/validation-submission.d.ts +1 -1
  277. package/dist/engine/validation-evidence-ledger.js +1 -0
  278. package/dist/engine/validator/deep-code-checker.js +1 -3
  279. package/dist/engine/validator/executable-evidence.d.ts +1 -14
  280. package/dist/engine/validator/scope-resolver.d.ts +2 -2
  281. package/dist/engine/validator/spec-compliance-runner.d.ts +1 -31
  282. package/dist/engine/validator/validation-report-writer.js +1 -1
  283. package/dist/engine/validator.d.ts +1 -1
  284. package/dist/engine/validator.js +1 -0
  285. package/dist/engine/velocity/measure-velocity.js +2 -0
  286. package/dist/engine/version-resolver.js +1 -0
  287. package/dist/engine/workers/handlers/auto-drift.js +3 -0
  288. package/dist/engine/workspace-manager.js +4 -0
  289. package/dist/hosts/gemini/config-scaffold.js +2 -10
  290. package/dist/storage/approval-operation-lock.js +1 -0
  291. package/dist/storage/auto-promoter-config-store.js +1 -0
  292. package/dist/storage/autopilot-log-store.js +1 -0
  293. package/dist/storage/base-store.js +1 -0
  294. package/dist/storage/checkpoint-store.js +1 -0
  295. package/dist/storage/feedback-remote.js +1 -0
  296. package/dist/storage/gaps-log.js +1 -0
  297. package/dist/storage/global-projects-store.d.ts +17 -0
  298. package/dist/storage/global-projects-store.js +47 -0
  299. package/dist/storage/global-store.js +1 -0
  300. package/dist/storage/knowledge-store/sessions.js +2 -0
  301. package/dist/storage/migrations/canonical-storage.js +42 -18
  302. package/dist/storage/project-drift-store.js +1 -0
  303. package/dist/storage/project-identity.d.ts +27 -0
  304. package/dist/storage/project-identity.js +132 -2
  305. package/dist/storage/project-resolver.js +1 -17
  306. package/dist/storage/runtime-db.d.ts +2 -20
  307. package/dist/storage/runtime-db.js +2 -9
  308. package/dist/storage/semantic-index-store.js +1 -0
  309. package/dist/storage/sentry-store.js +1 -0
  310. package/dist/storage/session-state-store.js +1 -0
  311. package/dist/storage/spec-store.d.ts +31 -3
  312. package/dist/storage/spec-store.js +146 -5
  313. package/dist/storage/status-store/atomic-status-write.js +1 -0
  314. package/dist/storage/status-store/file-lock.js +1 -0
  315. package/dist/storage/status-store/self-healing.js +1 -0
  316. package/dist/storage/storage-bundle.d.ts +12 -2
  317. package/dist/storage/supabase-store.js +1 -0
  318. package/dist/storage/technology-selection-store.js +1 -0
  319. package/dist/storage/trash-store.d.ts +2 -4
  320. package/dist/storage/trash-store.js +2 -15
  321. package/dist/storage/vector-store/json-fallback.js +1 -0
  322. package/dist/storage/vector-store/migrator.js +1 -0
  323. package/dist/storage/vector-store/sqlite-adapter.js +1 -0
  324. package/dist/tools/audit-claude-config.js +1 -10
  325. package/dist/tools/challenge-spec-helpers.d.ts +1 -1
  326. package/dist/tools/challenge-spec-helpers.js +7 -2
  327. package/dist/tools/challenge-spec.js +11 -6
  328. package/dist/tools/check-readiness.js +121 -24
  329. package/dist/tools/clarify-requirements/multiple-choice.d.ts +3 -3
  330. package/dist/tools/configure-oauth-handler.js +1 -0
  331. package/dist/tools/create-spec-helpers.d.ts +1 -3
  332. package/dist/tools/create-spec-helpers.js +1 -8
  333. package/dist/tools/create-spec.js +1 -13
  334. package/dist/tools/dashboard.js +5 -0
  335. package/dist/tools/generate-execution-plan.js +10 -6
  336. package/dist/tools/github-pr-handler.js +1 -0
  337. package/dist/tools/github-release-handler.d.ts +1 -0
  338. package/dist/tools/github-release-handler.js +4 -3
  339. package/dist/tools/graph-specs.d.ts +1 -1
  340. package/dist/tools/heal-spec-docs.js +1 -3
  341. package/dist/tools/init-project/git-setup.d.ts +2 -2
  342. package/dist/tools/init-project/host-assets-writer.js +2 -10
  343. package/dist/tools/init-project/lifecycle-helpers.d.ts +2 -2
  344. package/dist/tools/init-project/lint-scaffolder.js +2 -10
  345. package/dist/tools/init-project/stack-detector.d.ts +2 -2
  346. package/dist/tools/reconcile-interactive-question-hooks.d.ts +2 -2
  347. package/dist/tools/register-sdd-tools.js +1 -0
  348. package/dist/tools/safe-handler.js +1 -0
  349. package/dist/tools/schemas/spec-id.d.ts +1 -6
  350. package/dist/tools/schemas/spec-id.js +1 -16
  351. package/dist/tools/tool-entry.d.ts +2 -2
  352. package/dist/tools/tool-entry.js +1 -1
  353. package/dist/tools/tool-registry/core-tools.d.ts +2 -2
  354. package/dist/tools/tool-registry/deprecated-stubs.d.ts +3 -3
  355. package/dist/tools/tool-registry/deprecated-stubs.js +1 -1
  356. package/dist/tools/triage-request.d.ts +2 -2
  357. package/dist/tools/update-status/approval-gates.d.ts +2 -2
  358. package/dist/tools/update-status/approval-gates.js +1 -0
  359. package/dist/tools/update-status/dod-gates.d.ts +1 -1
  360. package/dist/tools/update-status/done-receipt-verifier.d.ts +1 -1
  361. package/dist/tools/update-status/evidence-gate.js +5 -5
  362. package/dist/tools/update-status/file-sync.js +11 -39
  363. package/dist/tools/update-status/index.js +1 -1
  364. package/dist/tools/update-status/side-effects.js +5 -0
  365. package/dist/tools/update-status/transition-guard.d.ts +1 -1
  366. package/dist/tools/update-status/transition-guard.js +40 -8
  367. package/dist/tools/update-status-actions.js +28 -40
  368. package/dist/tools/validate-graph-coverage.js +14 -2
  369. package/dist/tools/validate.js +2 -0
  370. package/dist/transports/middleware/types.d.ts +3 -3
  371. package/dist/types/atomic-upgrade.d.ts +1 -1
  372. package/dist/types/cascade-hooks.d.ts +3 -0
  373. package/dist/types/cross-repo-search.d.ts +2 -0
  374. package/dist/types/dashboard.d.ts +4 -1
  375. package/dist/types/durable-job.d.ts +20 -0
  376. package/dist/types/durable-job.js +9 -1
  377. package/dist/types/index.d.ts +2 -0
  378. package/dist/types/index.js +2 -0
  379. package/dist/types/installation.d.ts +16 -0
  380. package/dist/types/installation.js +2 -0
  381. package/dist/types/project-knowledge-graph.d.ts +11 -0
  382. package/dist/types/session-checkpoint.d.ts +16 -0
  383. package/dist/types/spec-dependency-graph.d.ts +21 -0
  384. package/dist/types/spec-dependency-graph.js +2 -0
  385. package/dist/types/validation-evidence.d.ts +45 -0
  386. package/package.json +2 -2
  387. package/planu-plugin.json +1 -1
  388. package/dist/types/storage-bundle.d.ts +0 -13
  389. package/dist/types/storage-bundle.js +0 -2
@@ -1,12 +1,15 @@
1
1
  import { AsyncLocalStorage } from 'node:async_hooks';
2
2
  import { lstat, readFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
4
5
  import { projectDataDir } from '../storage/base-store.js';
6
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
5
7
  import { specStore } from '../storage/index.js';
6
8
  import { ValidationReportV1Schema } from './handoff-artifacts/schemas.js';
7
9
  import { AUTOMATED_VALIDATOR_AGENT } from './validator/validation-report-writer.js';
8
10
  import { rollbackTransitionSpec, transitionSpec, } from './spec-state-machine/transition-spec.js';
9
11
  import { acquireLock, releaseLock } from './safety/cross-process-lock.js';
12
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
10
13
  import { appendTransitionEvent, readTransitionLog } from '../storage/transition-log.js';
11
14
  import { collectSupersededReconciliationArtifacts, readCommittedReconciliationReceipts, readReconciliationReceipt, reconciliationDigest as digest, safeReceiptPath, writeReconciliationReceipt, } from './lifecycle-reconciliation-io.js';
12
15
  const REQUEST_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/u;
@@ -1,8 +1,8 @@
1
1
  // engine/local-first/detector.ts — SPEC-047
2
2
  // Detects CRDT libraries, sync backends, local storage, and offline signals.
3
- import { readFile } from 'node:fs/promises';
4
3
  import { join } from 'node:path';
5
4
  import { glob } from 'glob';
5
+ import { readFileOrNull } from '../../core/shared/fs.js';
6
6
  // === CRDT library package names ===
7
7
  const CRDT_PACKAGES = new Map([
8
8
  ['yjs', 'yjs'],
@@ -45,14 +45,6 @@ const OFFLINE_FILES = ['sw.js', 'service-worker.js', 'sw.ts', 'service-worker.ts
45
45
  const INDEXEDDB_PACKAGES = ['idb', 'idb-keyval', 'dexie', 'localforage', 'rxdb', 'pouchdb'];
46
46
  // === LevelDB additional packages ===
47
47
  const LEVELDB_PACKAGES = ['abstract-level', 'memory-level', 'classic-level'];
48
- async function readFileOrNull(filePath) {
49
- try {
50
- return await readFile(filePath, 'utf-8');
51
- }
52
- catch {
53
- return null;
54
- }
55
- }
56
48
  async function readPackageJson(projectPath) {
57
49
  const content = await readFileOrNull(join(projectPath, 'package.json'));
58
50
  if (!content) {
@@ -2,7 +2,9 @@
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
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
5
6
  import { hashProjectPath } from '../../storage/base-store.js';
7
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
6
8
  import { resolveStorageLayout } from '../../storage/storage-layout.js';
7
9
  // ---------------------------------------------------------------------------
8
10
  // Constants — single exported location (no per-call literals)
@@ -1,6 +1,7 @@
1
1
  // engine/marketplace-fetcher/index.ts — SPEC-681: Orchestrate skill fetching from all sources
2
2
  // Fetches skills from Superpowers, Anthropic, local ~/.claude/skills/, and community registry.
3
3
  // Per-source failures are isolated via Promise.allSettled — never throws.
4
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
4
5
  import { writeSkillRegistryEntry } from '../../storage/skill-registry-storage.js';
5
6
  import { DEFAULT_CACHE_TTL_MS } from './cache.js';
6
7
  import { appendToEvolutionLog } from './evolution-log.js';
@@ -5,6 +5,7 @@ import { readFile, writeFile } from 'node:fs/promises';
5
5
  import { join } from 'node:path';
6
6
  import { homedir } from 'node:os';
7
7
  import { buildPinnedEntry } from '../auto-updater/config-patcher.js';
8
+ import { fileExistsByRead } from '../../core/shared/fs.js';
8
9
  // ---------------------------------------------------------------------------
9
10
  // Constants
10
11
  // ---------------------------------------------------------------------------
@@ -26,15 +27,6 @@ async function readJsonFile(filePath) {
26
27
  return {};
27
28
  }
28
29
  }
29
- async function fileExists(filePath) {
30
- try {
31
- await readFile(filePath, 'utf-8');
32
- return true;
33
- }
34
- catch {
35
- return false;
36
- }
37
- }
38
30
  // ---------------------------------------------------------------------------
39
31
  // Public API
40
32
  // ---------------------------------------------------------------------------
@@ -53,7 +45,7 @@ export async function findMcpConfigPath(projectPath) {
53
45
  join(projectPath, '.claude.json'),
54
46
  ];
55
47
  for (const candidate of candidates) {
56
- if (await fileExists(candidate)) {
48
+ if (await fileExistsByRead(candidate)) {
57
49
  return candidate;
58
50
  }
59
51
  }
@@ -6,7 +6,9 @@ import { atomicWriteFile } from '../safety/atomic-write-file.js';
6
6
  import { withUpgradeLock } from '../auto-updater/upgrade-lock.js';
7
7
  import { deleteSecretField } from '../../security/secret-field.js';
8
8
  import { isSecretReference, parseSecretReference } from '../../security/secret-provider.js';
9
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
9
10
  import { globalDataDir } from '../../storage/base-store.js';
11
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
10
12
  import { resolveStorageLayout } from '../../storage/storage-layout.js';
11
13
  const TOP_LEVEL_USAGE_KEYS = [
12
14
  'trialState',
@@ -1,4 +1,4 @@
1
- export declare function safeReadFile(p: string): Promise<string | null>;
1
+ export { readFileOrNull as safeReadFile } from '../core/shared/fs.js';
2
2
  export declare function safeReaddir(p: string): Promise<string[]>;
3
3
  export declare function walkForExt(dir: string, ext: string, results: string[], limit: number, depth: number): Promise<void>;
4
4
  //# sourceMappingURL=mobile-detector-shared.d.ts.map
@@ -1,15 +1,8 @@
1
1
  // Planu — Shared helpers for mobile detection (SPEC-013)
2
- import { readFile, readdir } from 'node:fs/promises';
2
+ import { readdir } from 'node:fs/promises';
3
3
  import { join, extname } from 'node:path';
4
+ export { readFileOrNull as safeReadFile } from '../core/shared/fs.js';
4
5
  const SKIP_DIRS = new Set(['node_modules', '.git', 'Pods', 'build', 'DerivedData']);
5
- export async function safeReadFile(p) {
6
- try {
7
- return await readFile(p, 'utf-8');
8
- }
9
- catch {
10
- return null;
11
- }
12
- }
13
6
  export async function safeReaddir(p) {
14
7
  try {
15
8
  return await readdir(p);
@@ -26,6 +26,7 @@ async function notifySlackChannel(message, projectPath) {
26
26
  }
27
27
  try {
28
28
  const { buildManualPayload, dispatchToSlack } = await import('./slack-dispatcher.js');
29
+ // eslint-disable-next-line no-restricted-syntax -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
29
30
  const { getSlackConfig } = await import('../storage/slack-store.js');
30
31
  const config = await getSlackConfig(projectPath);
31
32
  if (!config?.webhookUrl || !config.enabled) {
@@ -3,6 +3,7 @@
3
3
  import { join } from 'node:path';
4
4
  import { readFile } from 'node:fs/promises';
5
5
  import { atomicWriteFile } from '../safety/atomic-write-file.js';
6
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
6
7
  import { projectDataDir } from '../../storage/base-store.js';
7
8
  // ---------------------------------------------------------------------------
8
9
  // Constants
@@ -12,6 +12,7 @@ import { checkHeterogeneity } from './heterogeneity-gate.js';
12
12
  import { markDisagreement } from './disagreement-counter.js';
13
13
  import { runArbitrator, ArbitratorOutputInvalid } from './arbitrator-runner.js';
14
14
  import { atomicWriteFile } from '../safety/atomic-write-file.js';
15
+ // eslint-disable-next-line no-restricted-imports -- grandfathered layer violation, remediation SPEC-1661 SPEC-1662 SPEC-1663
15
16
  import { appendTransitionEvent } from '../../storage/transition-log.js';
16
17
  import { withEscalation } from '../escalator/with-escalation.js';
17
18
  // ---------------------------------------------------------------------------
@@ -1,6 +1,7 @@
1
1
  // engine/onboarding-engine.ts — SPEC-360: Interactive Onboarding & Guided Tours
2
2
  import * as fs from 'node:fs/promises';
3
3
  import * as path from 'node:path';
4
+ import { fileExists } from '../core/shared/fs.js';
4
5
  // ---------------------------------------------------------------------------
5
6
  // Recommendations
6
7
  // ---------------------------------------------------------------------------
@@ -551,15 +552,6 @@ export async function buildProgressSummary(projectPath, config) {
551
552
  // ---------------------------------------------------------------------------
552
553
  // Helpers
553
554
  // ---------------------------------------------------------------------------
554
- async function fileExists(filePath) {
555
- try {
556
- await fs.access(filePath);
557
- return true;
558
- }
559
- catch {
560
- return false;
561
- }
562
- }
563
555
  async function dirHasContents(dirPath) {
564
556
  try {
565
557
  const entries = await fs.readdir(dirPath);
@@ -4,11 +4,12 @@
4
4
  // Registry-driven: reads deny rules plus the validated technology authority.
5
5
  // as the sources of truth. Zero hardcoded framework/deploy-target names in this file.
6
6
  // Adding a new stack = edit the JSON registries, never this file.
7
- import { access, readFile } from 'node:fs/promises';
7
+ import { readFile } from 'node:fs/promises';
8
8
  import { fileURLToPath } from 'node:url';
9
9
  import { dirname, join, resolve as pathResolve } from 'node:path';
10
10
  import { detectStack } from '../project-dna/stack-detector.js';
11
11
  import { loadTechnologyRegistry } from '../technology-registry.js';
12
+ import { fileExists } from '../../core/shared/fs.js';
12
13
  let denyRegistryCache = null;
13
14
  let signalsRegistryCache = null;
14
15
  function registryDir() {
@@ -37,15 +38,6 @@ export function resetStackDetectorCaches() {
37
38
  denyRegistryCache = null;
38
39
  signalsRegistryCache = null;
39
40
  }
40
- async function fileExists(filePath) {
41
- try {
42
- await access(filePath);
43
- return true;
44
- }
45
- catch {
46
- return false;
47
- }
48
- }
49
41
  /**
50
42
  * Detect deploy-target / database / container tokens from filesystem markers,
51
43
  * driven by the signals registry. Does NOT know framework names — only follows
@@ -1,6 +1,7 @@
1
1
  // pii-detector/core.ts — PII detection in spec text (SPEC-030)
2
2
  import { createRequire } from 'node:module';
3
3
  import { stripNonContractText } from '../text-signal-boundaries.js';
4
+ import { escapeRegex as escapeRegexLiteral } from '../../core/shared/strings.js';
4
5
  const require = createRequire(import.meta.url);
5
6
  export const patterns = require('../../config/pii-patterns.json');
6
7
  // ---------------------------------------------------------------------------
@@ -60,9 +61,6 @@ function hasFieldCue(contextWindow) {
60
61
  return /\b(field|fields|column|columns|property|properties|attribute|schema|model|entity|table|class|interface)\b/i.test(contextWindow);
61
62
  }
62
63
  const COLLECTION_CUE_SUFFIXES = '(?:e|es|ed|ing|ion|ies|ied|ying|y|s)?';
63
- function escapeRegexLiteral(value) {
64
- return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
65
- }
66
64
  function toCollectionCueBase(verb) {
67
65
  return verb.endsWith('e') ? verb.slice(0, -1) : verb;
68
66
  }
@@ -1,17 +1,8 @@
1
1
  // engine/platform-engineering/dx-analyzer.ts — SPEC-048
2
2
  // Analyzes Developer Experience gaps and generates audit findings for platform engineering.
3
3
  // Detects missing CODEOWNERS, SECURITY.md, and reproducible dev environments.
4
- import { access } from 'node:fs/promises';
5
4
  import { join } from 'node:path';
6
- async function fileExists(path) {
7
- try {
8
- await access(path);
9
- return true;
10
- }
11
- catch {
12
- return false;
13
- }
14
- }
5
+ import { fileExists } from '../../core/shared/fs.js';
15
6
  /**
16
7
  * Checks for CODEOWNERS file in standard locations.
17
8
  */
@@ -1,7 +1,8 @@
1
1
  import { technologyValue } from '../technology-registry.js';
2
+ import { fileExists } from '../../core/shared/fs.js';
2
3
  // engine/platform-engineering/idp-detector.ts — SPEC-048
3
4
  // Detects signals of Internal Developer Platform need and calculates DX score.
4
- import { access, readFile } from 'node:fs/promises';
5
+ import { readFile } from 'node:fs/promises';
5
6
  import { join } from 'node:path';
6
7
  // DX score weights (total = 10)
7
8
  const DX_WEIGHTS = {
@@ -22,15 +23,6 @@ const IAC_FILES = [
22
23
  'serverless.yml',
23
24
  'serverless.yaml',
24
25
  ];
25
- async function fileExists(path) {
26
- try {
27
- await access(path);
28
- return true;
29
- }
30
- catch {
31
- return false;
32
- }
33
- }
34
26
  /**
35
27
  * Counts monorepo subdirectories at the given project path.
36
28
  * Returns the count of matching top-level MONOREPO_DIRS that have subdirectories.
@@ -1,9 +1,10 @@
1
1
  // @crash-shield-ignore-file — config/cache reader for Planu-controlled JSON; writer is this codebase, shape guaranteed by build/seed.
2
2
  // Planu — project-dna/ai-tool-detector.ts
3
3
  // Detects which AI tool is active in a project by checking detection files.
4
- import { access, readFile } from 'node:fs/promises';
4
+ import { readFile } from 'node:fs/promises';
5
5
  import { join, dirname } from 'node:path';
6
6
  import { fileURLToPath } from 'node:url';
7
+ import { pathExists } from '../../core/shared/fs.js';
7
8
  const REGISTRY_PATH = join(dirname(fileURLToPath(import.meta.url)), '../../config/ai-tool-registry.json');
8
9
  let cachedRegistry = null;
9
10
  async function loadRegistry() {
@@ -30,15 +31,6 @@ const DETECTION_ORDER = [
30
31
  // ---------------------------------------------------------------------------
31
32
  // Helpers
32
33
  // ---------------------------------------------------------------------------
33
- async function pathExists(filePath) {
34
- try {
35
- await access(filePath);
36
- return true;
37
- }
38
- catch {
39
- return false;
40
- }
41
- }
42
34
  async function anyDetectionFileExists(projectPath, detectionFiles) {
43
35
  for (const f of detectionFiles) {
44
36
  if (await pathExists(join(projectPath, f))) {
@@ -1,9 +1,10 @@
1
1
  // @crash-shield-ignore-file — config/cache reader for Planu-controlled JSON; writer is this codebase, shape guaranteed by build/seed.
2
2
  // Planu — project-dna/stack-detector.ts
3
3
  // Detects project stack by reading manifest files.
4
- import { readFile, access } from 'node:fs/promises';
4
+ import { readFile } from 'node:fs/promises';
5
5
  import { join } from 'node:path';
6
6
  import { loadTechnologyRegistry, technologyValue } from '../technology-registry.js';
7
+ import { fileExists } from '../../core/shared/fs.js';
7
8
  // ---------------------------------------------------------------------------
8
9
  // Registry loader (readFileSync — not intercepted by test mocks of fs/promises)
9
10
  // ---------------------------------------------------------------------------
@@ -18,15 +19,6 @@ function loadSignals() {
18
19
  // ---------------------------------------------------------------------------
19
20
  // Helpers
20
21
  // ---------------------------------------------------------------------------
21
- async function fileExists(filePath) {
22
- try {
23
- await access(filePath);
24
- return true;
25
- }
26
- catch {
27
- return false;
28
- }
29
- }
30
22
  async function readFileIfExists(filePath) {
31
23
  try {
32
24
  return await readFile(filePath, 'utf-8');
@@ -179,13 +179,15 @@ async function buildProjectKnowledgeGraphUnlocked(args) {
179
179
  const cacheResult = await readProjectGraphCache(args.projectId, args.policy);
180
180
  const previousCache = cacheResult.cache;
181
181
  const previousRecords = previousCache?.records ?? {};
182
- let sources = await collectProjectGraphSources({
182
+ const collected = await collectProjectGraphSources({
183
183
  projectId: args.projectId,
184
184
  projectPath: args.projectPath,
185
185
  policy: args.policy,
186
186
  previous: previousRecords,
187
187
  nativeCoreVersion,
188
188
  });
189
+ let sources = collected.sources;
190
+ const oversizedSources = collected.oversizedSources;
189
191
  let diff = diffSourceHashes(sources, previousRecords, nativeCoreVersion, {
190
192
  fragments: previousCache?.fragments,
191
193
  knownSourceIds: cacheResult.knownSourceIds,
@@ -208,13 +210,17 @@ async function buildProjectKnowledgeGraphUnlocked(args) {
208
210
  Array.isArray(existingGraph.nodes) &&
209
211
  Array.isArray(existingGraph.edges);
210
212
  if (hasConsistentExistingGraph && diff.changed.length === 0 && diff.removed.length === 0) {
213
+ const graphWithCurrentOversizedSources = {
214
+ ...existingGraph,
215
+ oversizedSources,
216
+ };
211
217
  publishFreshProjectGraphProjection({
212
218
  projectId: args.projectId,
213
219
  generatedAt: existingGraph.generatedAt,
214
220
  generation: existingGraph.generation,
215
221
  });
216
222
  return {
217
- graph: existingGraph,
223
+ graph: graphWithCurrentOversizedSources,
218
224
  generation: existingGraph.generation,
219
225
  graphPath: projectGraphPath(args.projectId, args.policy),
220
226
  cachePath: projectGraphCachePath(args.projectId, args.policy),
@@ -222,6 +228,7 @@ async function buildProjectKnowledgeGraphUnlocked(args) {
222
228
  removedSources: [],
223
229
  skippedSources: diff.skipped,
224
230
  usedCache: true,
231
+ oversizedSources,
225
232
  };
226
233
  }
227
234
  const changedIds = new Set(diff.changed);
@@ -272,6 +279,7 @@ async function buildProjectKnowledgeGraphUnlocked(args) {
272
279
  },
273
280
  nodes,
274
281
  edges,
282
+ oversizedSources,
275
283
  };
276
284
  const cache = {
277
285
  version: 2,
@@ -299,6 +307,7 @@ async function buildProjectKnowledgeGraphUnlocked(args) {
299
307
  removedSources: diff.removed,
300
308
  skippedSources: diff.skipped,
301
309
  usedCache: false,
310
+ oversizedSources,
302
311
  };
303
312
  }
304
313
  export async function buildProjectKnowledgeGraph(args) {
@@ -1,4 +1,4 @@
1
- import type { ProjectGraphCacheEnvelope, ProjectGraphCacheReadResult, ProjectGraphFreshness, ProjectGraphPolicy, ProjectGraphSource, ProjectGraphSourceCacheRecord, ProjectGraphSourceFragment, ProjectKnowledgeGraph } from '../../types/project-knowledge-graph.js';
1
+ import type { OversizedSourceRecord, ProjectGraphCacheEnvelope, ProjectGraphCacheReadResult, ProjectGraphFreshness, ProjectGraphPolicy, ProjectGraphSource, ProjectGraphSourceCacheRecord, ProjectGraphSourceFragment, ProjectKnowledgeGraph } from '../../types/project-knowledge-graph.js';
2
2
  export declare function loadProjectGraphPolicy(): Promise<ProjectGraphPolicy>;
3
3
  export declare function hashText(text: string): string;
4
4
  export declare function projectGraphExtractorVersion(kind: string): string;
@@ -35,7 +35,10 @@ export declare function collectProjectGraphSources(args: {
35
35
  policy: ProjectGraphPolicy;
36
36
  previous?: Record<string, ProjectGraphSourceCacheRecord>;
37
37
  nativeCoreVersion?: string;
38
- }): Promise<ProjectGraphSource[]>;
38
+ }): Promise<{
39
+ sources: ProjectGraphSource[];
40
+ oversizedSources: OversizedSourceRecord[];
41
+ }>;
39
42
  export declare function getProjectGraphFreshness(args: {
40
43
  projectId: string;
41
44
  projectPath: string;