forgeos 0.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. package/.npmignore +1 -0
  2. package/AGENTS.md +277 -0
  3. package/CHANGELOG.md +8 -0
  4. package/CONTRIBUTING.md +58 -0
  5. package/README.md +377 -0
  6. package/bin/forge-bun.mjs +110 -0
  7. package/bin/forge.mjs +19 -0
  8. package/package.json +96 -0
  9. package/packages/eslint-plugin-forge/index.ts +15 -0
  10. package/packages/eslint-plugin-forge/package.json +10 -0
  11. package/packages/eslint-plugin-forge/src/check-source.ts +95 -0
  12. package/packages/eslint-plugin-forge/src/load-artifacts.ts +24 -0
  13. package/packages/eslint-plugin-forge/src/rule-no-forge-guard-violation.ts +93 -0
  14. package/src/forge/_generated/actionSubscriptions.json +2 -0
  15. package/src/forge/_generated/actionSubscriptions.ts +10 -0
  16. package/src/forge/_generated/agentAdapterManifest.json +2 -0
  17. package/src/forge/_generated/agentAdapterManifest.ts +73 -0
  18. package/src/forge/_generated/agentContract.json +2 -0
  19. package/src/forge/_generated/agentContract.ts +912 -0
  20. package/src/forge/_generated/agentQuickstart.md +32 -0
  21. package/src/forge/_generated/aiContext.ts +59 -0
  22. package/src/forge/_generated/aiModels.json +2 -0
  23. package/src/forge/_generated/aiModels.ts +35 -0
  24. package/src/forge/_generated/aiProviders.json +2 -0
  25. package/src/forge/_generated/aiProviders.ts +23 -0
  26. package/src/forge/_generated/aiRegistry.json +2 -0
  27. package/src/forge/_generated/aiRegistry.ts +29 -0
  28. package/src/forge/_generated/api.json +2 -0
  29. package/src/forge/_generated/api.ts +8 -0
  30. package/src/forge/_generated/appGraph.json +2 -0
  31. package/src/forge/_generated/appGraph.ts +14511 -0
  32. package/src/forge/_generated/appMap.md +35 -0
  33. package/src/forge/_generated/artifactManifest.json +2 -0
  34. package/src/forge/_generated/artifactManifest.ts +7 -0
  35. package/src/forge/_generated/authClaims.json +2 -0
  36. package/src/forge/_generated/authClaims.ts +13 -0
  37. package/src/forge/_generated/authConfig.json +2 -0
  38. package/src/forge/_generated/authConfig.ts +17 -0
  39. package/src/forge/_generated/authContext.ts +23 -0
  40. package/src/forge/_generated/authRegistry.json +2 -0
  41. package/src/forge/_generated/authRegistry.ts +25 -0
  42. package/src/forge/_generated/buildInfo.json +2 -0
  43. package/src/forge/_generated/buildInfo.ts +9 -0
  44. package/src/forge/_generated/capabilityMap.json +2 -0
  45. package/src/forge/_generated/capabilityMap.md +15 -0
  46. package/src/forge/_generated/capabilityMap.ts +17 -0
  47. package/src/forge/_generated/client.ts +282 -0
  48. package/src/forge/_generated/clientApi.ts +9 -0
  49. package/src/forge/_generated/clientManifest.json +2 -0
  50. package/src/forge/_generated/clientManifest.ts +39 -0
  51. package/src/forge/_generated/clientTypes.ts +78 -0
  52. package/src/forge/_generated/configRegistry.json +2 -0
  53. package/src/forge/_generated/configRegistry.ts +4 -0
  54. package/src/forge/_generated/dataGraph.json +2 -0
  55. package/src/forge/_generated/dataGraph.ts +8 -0
  56. package/src/forge/_generated/db.json +2 -0
  57. package/src/forge/_generated/db.ts +2 -0
  58. package/src/forge/_generated/dbSecurityManifest.json +2 -0
  59. package/src/forge/_generated/dbSecurityManifest.ts +15 -0
  60. package/src/forge/_generated/dbSessionContext.json +2 -0
  61. package/src/forge/_generated/dbSessionContext.ts +39 -0
  62. package/src/forge/_generated/deployManifest.json +2 -0
  63. package/src/forge/_generated/deployManifest.ts +14 -0
  64. package/src/forge/_generated/devManifest.json +2 -0
  65. package/src/forge/_generated/devManifest.ts +47 -0
  66. package/src/forge/_generated/envSchema.json +2 -0
  67. package/src/forge/_generated/envSchema.ts +59 -0
  68. package/src/forge/_generated/frontendGraph.json +2 -0
  69. package/src/forge/_generated/frontendGraph.ts +27 -0
  70. package/src/forge/_generated/importGuards.json +2 -0
  71. package/src/forge/_generated/importGuards.ts +652 -0
  72. package/src/forge/_generated/index.ts +67 -0
  73. package/src/forge/_generated/liveProductionManifest.json +2 -0
  74. package/src/forge/_generated/liveProductionManifest.ts +23 -0
  75. package/src/forge/_generated/liveProtocol.json +2 -0
  76. package/src/forge/_generated/liveProtocol.ts +21 -0
  77. package/src/forge/_generated/liveQueryRegistry.json +2 -0
  78. package/src/forge/_generated/liveQueryRegistry.ts +9 -0
  79. package/src/forge/_generated/liveTransportConfig.json +2 -0
  80. package/src/forge/_generated/liveTransportConfig.ts +19 -0
  81. package/src/forge/_generated/makeRegistry.json +2 -0
  82. package/src/forge/_generated/makeRegistry.ts +163 -0
  83. package/src/forge/_generated/makeTemplates.json +2 -0
  84. package/src/forge/_generated/makeTemplates.ts +61 -0
  85. package/src/forge/_generated/mockMap.json +2 -0
  86. package/src/forge/_generated/mockMap.ts +7 -0
  87. package/src/forge/_generated/operationPlaybooks.md +145 -0
  88. package/src/forge/_generated/packageGraph.json +2 -0
  89. package/src/forge/_generated/packageGraph.ts +168569 -0
  90. package/src/forge/_generated/packageUpgradeRegistry.json +2 -0
  91. package/src/forge/_generated/packageUpgradeRegistry.ts +15 -0
  92. package/src/forge/_generated/permissionMatrix.json +2 -0
  93. package/src/forge/_generated/permissionMatrix.ts +7 -0
  94. package/src/forge/_generated/policyRegistry.json +2 -0
  95. package/src/forge/_generated/policyRegistry.ts +11 -0
  96. package/src/forge/_generated/queryRegistry.json +2 -0
  97. package/src/forge/_generated/queryRegistry.ts +9 -0
  98. package/src/forge/_generated/react.d.ts +22 -0
  99. package/src/forge/_generated/react.ts +29 -0
  100. package/src/forge/_generated/reactManifest.json +2 -0
  101. package/src/forge/_generated/reactManifest.ts +19 -0
  102. package/src/forge/_generated/releaseManifest.json +2 -0
  103. package/src/forge/_generated/releaseManifest.ts +25 -0
  104. package/src/forge/_generated/rlsPolicies.json +2 -0
  105. package/src/forge/_generated/rlsPolicies.sql +34 -0
  106. package/src/forge/_generated/rlsPolicies.ts +6 -0
  107. package/src/forge/_generated/runtimeGraph.json +2 -0
  108. package/src/forge/_generated/runtimeGraph.ts +8 -0
  109. package/src/forge/_generated/runtimeMatrix.json +2 -0
  110. package/src/forge/_generated/runtimeMatrix.ts +229125 -0
  111. package/src/forge/_generated/runtimeRegistry.ts +2 -0
  112. package/src/forge/_generated/runtimeRules.md +79 -0
  113. package/src/forge/_generated/secretRegistry.json +2 -0
  114. package/src/forge/_generated/secretRegistry.ts +50 -0
  115. package/src/forge/_generated/secretsContext.ts +11 -0
  116. package/src/forge/_generated/serverApi.ts +10 -0
  117. package/src/forge/_generated/sourceMapManifest.json +2 -0
  118. package/src/forge/_generated/sourceMapManifest.ts +7 -0
  119. package/src/forge/_generated/sqlPlan.json +2 -0
  120. package/src/forge/_generated/sqlPlan.ts +88 -0
  121. package/src/forge/_generated/subscriptionManifest.json +2 -0
  122. package/src/forge/_generated/subscriptionManifest.ts +7 -0
  123. package/src/forge/_generated/symbolicationManifest.json +2 -0
  124. package/src/forge/_generated/symbolicationManifest.ts +17 -0
  125. package/src/forge/_generated/telemetryRegistry.json +2 -0
  126. package/src/forge/_generated/telemetryRegistry.ts +9 -0
  127. package/src/forge/_generated/telemetrySinks.json +2 -0
  128. package/src/forge/_generated/telemetrySinks.ts +11 -0
  129. package/src/forge/_generated/tenantScope.json +2 -0
  130. package/src/forge/_generated/tenantScope.ts +8 -0
  131. package/src/forge/_generated/testGraph.json +2 -0
  132. package/src/forge/_generated/testGraph.ts +3054 -0
  133. package/src/forge/_generated/testPlanRegistry.json +2 -0
  134. package/src/forge/_generated/testPlanRegistry.ts +33 -0
  135. package/src/forge/_generated/uiRoutes.json +2 -0
  136. package/src/forge/_generated/uiRoutes.ts +16 -0
  137. package/src/forge/_generated/uiScenarios.json +2 -0
  138. package/src/forge/_generated/uiScenarios.ts +30 -0
  139. package/src/forge/_generated/uiTestManifest.json +2 -0
  140. package/src/forge/_generated/uiTestManifest.ts +27 -0
  141. package/src/forge/_generated/workflowRegistry.json +2 -0
  142. package/src/forge/_generated/workflowRegistry.ts +9 -0
  143. package/src/forge/_generated/workflowSubscriptions.json +2 -0
  144. package/src/forge/_generated/workflowSubscriptions.ts +10 -0
  145. package/src/forge/agent-adapters/index.ts +1002 -0
  146. package/src/forge/agent-adapters/types.ts +135 -0
  147. package/src/forge/cli/agent-contract.ts +50 -0
  148. package/src/forge/cli/ai.ts +148 -0
  149. package/src/forge/cli/auth.ts +198 -0
  150. package/src/forge/cli/build.ts +105 -0
  151. package/src/forge/cli/bun-exec.ts +4 -0
  152. package/src/forge/cli/commands.ts +1130 -0
  153. package/src/forge/cli/db.ts +316 -0
  154. package/src/forge/cli/deps.ts +277 -0
  155. package/src/forge/cli/dev.ts +529 -0
  156. package/src/forge/cli/doctor.ts +209 -0
  157. package/src/forge/cli/feature.ts +485 -0
  158. package/src/forge/cli/index.ts +25 -0
  159. package/src/forge/cli/lint-forge.ts +119 -0
  160. package/src/forge/cli/live.ts +179 -0
  161. package/src/forge/cli/main.ts +92 -0
  162. package/src/forge/cli/make.ts +133 -0
  163. package/src/forge/cli/new.ts +505 -0
  164. package/src/forge/cli/outbox.ts +297 -0
  165. package/src/forge/cli/output.ts +114 -0
  166. package/src/forge/cli/parse.ts +2211 -0
  167. package/src/forge/cli/policy.ts +204 -0
  168. package/src/forge/cli/query.ts +91 -0
  169. package/src/forge/cli/refactor.ts +221 -0
  170. package/src/forge/cli/release.ts +285 -0
  171. package/src/forge/cli/rls.ts +322 -0
  172. package/src/forge/cli/run.ts +76 -0
  173. package/src/forge/cli/secrets.ts +274 -0
  174. package/src/forge/cli/self-host.ts +468 -0
  175. package/src/forge/cli/serve.ts +93 -0
  176. package/src/forge/cli/telemetry.ts +219 -0
  177. package/src/forge/cli/verify.ts +587 -0
  178. package/src/forge/cli/version.ts +1 -0
  179. package/src/forge/cli/windows.ts +413 -0
  180. package/src/forge/cli/worker.ts +87 -0
  181. package/src/forge/cli/workflow.ts +424 -0
  182. package/src/forge/compiler/action-subscriptions/build.ts +116 -0
  183. package/src/forge/compiler/action-subscriptions/constants.ts +2 -0
  184. package/src/forge/compiler/action-subscriptions/index.ts +6 -0
  185. package/src/forge/compiler/action-subscriptions/parse.ts +6 -0
  186. package/src/forge/compiler/agent-contract/build.ts +1651 -0
  187. package/src/forge/compiler/agent-contract/types.ts +326 -0
  188. package/src/forge/compiler/ai-registry/build.ts +165 -0
  189. package/src/forge/compiler/ai-registry/constants.ts +2 -0
  190. package/src/forge/compiler/ai-registry/parse.ts +56 -0
  191. package/src/forge/compiler/api-surface/build.ts +107 -0
  192. package/src/forge/compiler/app-graph/build.ts +121 -0
  193. package/src/forge/compiler/app-graph/classify.ts +10 -0
  194. package/src/forge/compiler/app-graph/dup-symbol.ts +29 -0
  195. package/src/forge/compiler/app-graph/extract.ts +124 -0
  196. package/src/forge/compiler/app-graph/forge-apis.ts +29 -0
  197. package/src/forge/compiler/app-graph/index.ts +15 -0
  198. package/src/forge/compiler/app-graph/module-graph.ts +320 -0
  199. package/src/forge/compiler/app-graph/parser.ts +119 -0
  200. package/src/forge/compiler/app-graph/symbols.ts +48 -0
  201. package/src/forge/compiler/app-graph/tsconfig-hash.ts +62 -0
  202. package/src/forge/compiler/app-graph/types.ts +43 -0
  203. package/src/forge/compiler/app-graph/versions.ts +14 -0
  204. package/src/forge/compiler/cache/index.ts +17 -0
  205. package/src/forge/compiler/cache/key.ts +46 -0
  206. package/src/forge/compiler/cache/scheduler.ts +72 -0
  207. package/src/forge/compiler/cache/store.ts +78 -0
  208. package/src/forge/compiler/classifier/capabilities.ts +78 -0
  209. package/src/forge/compiler/classifier/classify.ts +113 -0
  210. package/src/forge/compiler/classifier/contexts.ts +188 -0
  211. package/src/forge/compiler/classifier/index.ts +18 -0
  212. package/src/forge/compiler/classifier/runtime-matrix.ts +45 -0
  213. package/src/forge/compiler/classifier/secrets.ts +41 -0
  214. package/src/forge/compiler/classifier/signals.ts +129 -0
  215. package/src/forge/compiler/client-sdk/build-manifest.ts +151 -0
  216. package/src/forge/compiler/client-sdk/render-client.ts +432 -0
  217. package/src/forge/compiler/data-graph/build.ts +131 -0
  218. package/src/forge/compiler/data-graph/constants.ts +5 -0
  219. package/src/forge/compiler/data-graph/index.ts +6 -0
  220. package/src/forge/compiler/data-graph/parse.ts +176 -0
  221. package/src/forge/compiler/data-graph/rls/build.ts +222 -0
  222. package/src/forge/compiler/data-graph/rls/types.ts +62 -0
  223. package/src/forge/compiler/data-graph/sql/ddl.ts +390 -0
  224. package/src/forge/compiler/data-graph/sql/naming.ts +10 -0
  225. package/src/forge/compiler/data-graph/sql/serialize.ts +85 -0
  226. package/src/forge/compiler/data-graph/sql/types.ts +37 -0
  227. package/src/forge/compiler/dev-manifest/build.ts +170 -0
  228. package/src/forge/compiler/dev-manifest/constants.ts +5 -0
  229. package/src/forge/compiler/diagnostics/codes.ts +611 -0
  230. package/src/forge/compiler/diagnostics/create.ts +245 -0
  231. package/src/forge/compiler/diagnostics/index.ts +55 -0
  232. package/src/forge/compiler/emitter/artifact-kind.ts +14 -0
  233. package/src/forge/compiler/emitter/barrel.ts +44 -0
  234. package/src/forge/compiler/emitter/constants.ts +7 -0
  235. package/src/forge/compiler/emitter/emit.ts +237 -0
  236. package/src/forge/compiler/emitter/index.ts +24 -0
  237. package/src/forge/compiler/emitter/lock.ts +62 -0
  238. package/src/forge/compiler/emitter/render.ts +73 -0
  239. package/src/forge/compiler/emitter/write.ts +35 -0
  240. package/src/forge/compiler/frontend-graph/build.ts +495 -0
  241. package/src/forge/compiler/fs/index.ts +23 -0
  242. package/src/forge/compiler/fs/memory.ts +233 -0
  243. package/src/forge/compiler/fs/node.ts +139 -0
  244. package/src/forge/compiler/fs/profile.ts +108 -0
  245. package/src/forge/compiler/fs/types.ts +52 -0
  246. package/src/forge/compiler/guards/artifacts.ts +96 -0
  247. package/src/forge/compiler/guards/check-ai-usage.ts +98 -0
  248. package/src/forge/compiler/guards/check-import-guards.ts +106 -0
  249. package/src/forge/compiler/guards/check-process-env.ts +98 -0
  250. package/src/forge/compiler/guards/check-query-usage.ts +76 -0
  251. package/src/forge/compiler/guards/index.ts +11 -0
  252. package/src/forge/compiler/guards/propagate-contexts.ts +57 -0
  253. package/src/forge/compiler/index.ts +17 -0
  254. package/src/forge/compiler/integration/add.ts +496 -0
  255. package/src/forge/compiler/integration/index.ts +17 -0
  256. package/src/forge/compiler/integration/plan.ts +283 -0
  257. package/src/forge/compiler/integration/render.ts +189 -0
  258. package/src/forge/compiler/integration/snapshot.ts +52 -0
  259. package/src/forge/compiler/integration/templates/ai.ts +131 -0
  260. package/src/forge/compiler/integration/templates/index.ts +8 -0
  261. package/src/forge/compiler/integration/templates/posthog.ts +145 -0
  262. package/src/forge/compiler/integration/templates/render.ts +113 -0
  263. package/src/forge/compiler/integration/templates/sentry.ts +151 -0
  264. package/src/forge/compiler/integration/templates/stripe.ts +109 -0
  265. package/src/forge/compiler/integration/templates/types.ts +14 -0
  266. package/src/forge/compiler/integration/templates/zod.ts +55 -0
  267. package/src/forge/compiler/live-production/types.ts +122 -0
  268. package/src/forge/compiler/live-query-registry/build.ts +150 -0
  269. package/src/forge/compiler/live-query-registry/constants.ts +2 -0
  270. package/src/forge/compiler/make-registry/build.ts +179 -0
  271. package/src/forge/compiler/orchestrator/discover.ts +214 -0
  272. package/src/forge/compiler/orchestrator/fast-check.ts +117 -0
  273. package/src/forge/compiler/orchestrator/generate-lock.ts +138 -0
  274. package/src/forge/compiler/orchestrator/guards.ts +5 -0
  275. package/src/forge/compiler/orchestrator/index.ts +27 -0
  276. package/src/forge/compiler/orchestrator/manifest-hashes.ts +21 -0
  277. package/src/forge/compiler/orchestrator/manifest.ts +92 -0
  278. package/src/forge/compiler/orchestrator/orphans.ts +51 -0
  279. package/src/forge/compiler/orchestrator/plan.ts +876 -0
  280. package/src/forge/compiler/orchestrator/profile.ts +36 -0
  281. package/src/forge/compiler/orchestrator/run.ts +277 -0
  282. package/src/forge/compiler/orchestrator/serialize.ts +886 -0
  283. package/src/forge/compiler/orchestrator/session.ts +96 -0
  284. package/src/forge/compiler/orchestrator/types.ts +31 -0
  285. package/src/forge/compiler/orchestrator/verify.ts +38 -0
  286. package/src/forge/compiler/orchestrator/workspace-index.ts +154 -0
  287. package/src/forge/compiler/package-graph/capabilities-stub.ts +33 -0
  288. package/src/forge/compiler/package-graph/checksum.ts +97 -0
  289. package/src/forge/compiler/package-graph/compiler.ts +392 -0
  290. package/src/forge/compiler/package-graph/constants.ts +4 -0
  291. package/src/forge/compiler/package-graph/dts-extractor.ts +142 -0
  292. package/src/forge/compiler/package-graph/exports-discovery.ts +84 -0
  293. package/src/forge/compiler/package-graph/extract-dts.ts +32 -0
  294. package/src/forge/compiler/package-graph/index.ts +33 -0
  295. package/src/forge/compiler/package-graph/jsdoc.ts +62 -0
  296. package/src/forge/compiler/package-graph/read-file.ts +21 -0
  297. package/src/forge/compiler/package-graph/resolve.ts +127 -0
  298. package/src/forge/compiler/package-manager/adapter.ts +237 -0
  299. package/src/forge/compiler/package-manager/bun-executable.ts +92 -0
  300. package/src/forge/compiler/package-manager/commands.ts +47 -0
  301. package/src/forge/compiler/package-manager/detect.ts +79 -0
  302. package/src/forge/compiler/package-manager/executor.ts +117 -0
  303. package/src/forge/compiler/package-manager/index.ts +22 -0
  304. package/src/forge/compiler/package-manager/parse-spec.ts +16 -0
  305. package/src/forge/compiler/package-manager/version.ts +27 -0
  306. package/src/forge/compiler/package-upgrades/apply.ts +195 -0
  307. package/src/forge/compiler/package-upgrades/comparator.ts +181 -0
  308. package/src/forge/compiler/package-upgrades/impact.ts +139 -0
  309. package/src/forge/compiler/package-upgrades/markdown.ts +97 -0
  310. package/src/forge/compiler/package-upgrades/planner.ts +532 -0
  311. package/src/forge/compiler/package-upgrades/risk.ts +208 -0
  312. package/src/forge/compiler/package-upgrades/types.ts +174 -0
  313. package/src/forge/compiler/policy-registry/build.ts +266 -0
  314. package/src/forge/compiler/policy-registry/constants.ts +2 -0
  315. package/src/forge/compiler/policy-registry/parse.ts +81 -0
  316. package/src/forge/compiler/primitives/compare.ts +26 -0
  317. package/src/forge/compiler/primitives/hash.ts +40 -0
  318. package/src/forge/compiler/primitives/header.ts +45 -0
  319. package/src/forge/compiler/primitives/index.ts +45 -0
  320. package/src/forge/compiler/primitives/paths.ts +24 -0
  321. package/src/forge/compiler/primitives/result.ts +164 -0
  322. package/src/forge/compiler/primitives/serialize.ts +66 -0
  323. package/src/forge/compiler/primitives/sort.ts +87 -0
  324. package/src/forge/compiler/query-registry/build.ts +114 -0
  325. package/src/forge/compiler/query-registry/constants.ts +2 -0
  326. package/src/forge/compiler/recipes/definitions.ts +289 -0
  327. package/src/forge/compiler/recipes/helpers.ts +37 -0
  328. package/src/forge/compiler/recipes/index.ts +21 -0
  329. package/src/forge/compiler/recipes/registry.ts +102 -0
  330. package/src/forge/compiler/release/build.ts +100 -0
  331. package/src/forge/compiler/release/types.ts +119 -0
  332. package/src/forge/compiler/runtime-graph/build.ts +137 -0
  333. package/src/forge/compiler/runtime-graph/constants.ts +5 -0
  334. package/src/forge/compiler/runtime-graph/index.ts +5 -0
  335. package/src/forge/compiler/sandbox/artifact-sanitize.ts +26 -0
  336. package/src/forge/compiler/sandbox/backends/child.ts +123 -0
  337. package/src/forge/compiler/sandbox/backends/docker.ts +173 -0
  338. package/src/forge/compiler/sandbox/index.ts +51 -0
  339. package/src/forge/compiler/sandbox/inspect.ts +143 -0
  340. package/src/forge/compiler/sandbox/inspector-entry.ts +115 -0
  341. package/src/forge/compiler/sandbox/limits.ts +31 -0
  342. package/src/forge/compiler/sandbox/scrub-env.ts +60 -0
  343. package/src/forge/compiler/sandbox/secret-scan.ts +54 -0
  344. package/src/forge/compiler/sandbox/serialize.ts +106 -0
  345. package/src/forge/compiler/sandbox/types.ts +7 -0
  346. package/src/forge/compiler/secret-registry/build.ts +123 -0
  347. package/src/forge/compiler/telemetry-registry/build.ts +89 -0
  348. package/src/forge/compiler/telemetry-registry/constants.ts +2 -0
  349. package/src/forge/compiler/telemetry-registry/parse.ts +13 -0
  350. package/src/forge/compiler/test-graph/build.ts +277 -0
  351. package/src/forge/compiler/types/action-subscriptions.ts +19 -0
  352. package/src/forge/compiler/types/ai-registry.ts +33 -0
  353. package/src/forge/compiler/types/app-graph.ts +80 -0
  354. package/src/forge/compiler/types/capability.ts +29 -0
  355. package/src/forge/compiler/types/classification.ts +9 -0
  356. package/src/forge/compiler/types/cli.ts +159 -0
  357. package/src/forge/compiler/types/data-graph.ts +24 -0
  358. package/src/forge/compiler/types/dev-manifest.ts +41 -0
  359. package/src/forge/compiler/types/diagnostic.ts +12 -0
  360. package/src/forge/compiler/types/emit.ts +25 -0
  361. package/src/forge/compiler/types/frontend-graph.ts +81 -0
  362. package/src/forge/compiler/types/import-guards.ts +19 -0
  363. package/src/forge/compiler/types/index.ts +98 -0
  364. package/src/forge/compiler/types/integration.ts +25 -0
  365. package/src/forge/compiler/types/json.ts +3 -0
  366. package/src/forge/compiler/types/live-query-registry.ts +32 -0
  367. package/src/forge/compiler/types/lock.ts +37 -0
  368. package/src/forge/compiler/types/package-graph.ts +84 -0
  369. package/src/forge/compiler/types/policy-registry.ts +69 -0
  370. package/src/forge/compiler/types/query-registry.ts +18 -0
  371. package/src/forge/compiler/types/runtime-graph.ts +30 -0
  372. package/src/forge/compiler/types/runtime-matrix.ts +16 -0
  373. package/src/forge/compiler/types/runtime.ts +30 -0
  374. package/src/forge/compiler/types/sandbox.ts +24 -0
  375. package/src/forge/compiler/types/secret-registry.ts +38 -0
  376. package/src/forge/compiler/types/telemetry-registry.ts +26 -0
  377. package/src/forge/compiler/types/test-graph.ts +45 -0
  378. package/src/forge/compiler/types/workflow-registry.ts +42 -0
  379. package/src/forge/compiler/workflow-registry/build.ts +180 -0
  380. package/src/forge/compiler/workflow-registry/constants.ts +2 -0
  381. package/src/forge/compiler/workflow-registry/index.ts +5 -0
  382. package/src/forge/compiler/workflow-registry/parse.ts +19 -0
  383. package/src/forge/dev/server.ts +1379 -0
  384. package/src/forge/dev/types.ts +49 -0
  385. package/src/forge/dev/watch.ts +109 -0
  386. package/src/forge/dev-console/cycle.ts +652 -0
  387. package/src/forge/dev-console/types.ts +99 -0
  388. package/src/forge/feature/compiler.ts +656 -0
  389. package/src/forge/feature/examples.ts +125 -0
  390. package/src/forge/feature/types.ts +177 -0
  391. package/src/forge/impact/index.ts +1160 -0
  392. package/src/forge/impact/types.ts +151 -0
  393. package/src/forge/intent/index.ts +490 -0
  394. package/src/forge/intent/types.ts +73 -0
  395. package/src/forge/make/fields.ts +146 -0
  396. package/src/forge/make/index.ts +1101 -0
  397. package/src/forge/make/naming.ts +42 -0
  398. package/src/forge/make/templates.ts +525 -0
  399. package/src/forge/make/types.ts +151 -0
  400. package/src/forge/platform/module.ts +20 -0
  401. package/src/forge/policy.ts +1 -0
  402. package/src/forge/react/index.ts +418 -0
  403. package/src/forge/refactor/index.ts +1936 -0
  404. package/src/forge/refactor/text-utils.ts +34 -0
  405. package/src/forge/refactor/types.ts +191 -0
  406. package/src/forge/refactor/workspace-fs.ts +171 -0
  407. package/src/forge/repair/index.ts +656 -0
  408. package/src/forge/repair/rules/index.ts +476 -0
  409. package/src/forge/repair/types.ts +175 -0
  410. package/src/forge/review/index.ts +992 -0
  411. package/src/forge/review/types.ts +196 -0
  412. package/src/forge/runtime/ai/check.ts +86 -0
  413. package/src/forge/runtime/ai/context.ts +394 -0
  414. package/src/forge/runtime/ai/cost-estimator.ts +41 -0
  415. package/src/forge/runtime/ai/mock.ts +49 -0
  416. package/src/forge/runtime/ai/providers.ts +78 -0
  417. package/src/forge/runtime/ai/state.ts +17 -0
  418. package/src/forge/runtime/ai/types.ts +67 -0
  419. package/src/forge/runtime/auth/authenticate.ts +58 -0
  420. package/src/forge/runtime/auth/claims.ts +119 -0
  421. package/src/forge/runtime/auth/config.ts +148 -0
  422. package/src/forge/runtime/auth/errors.ts +45 -0
  423. package/src/forge/runtime/auth/evaluate.ts +126 -0
  424. package/src/forge/runtime/auth/resolve.ts +74 -0
  425. package/src/forge/runtime/auth/types.ts +87 -0
  426. package/src/forge/runtime/auth/verifier.ts +138 -0
  427. package/src/forge/runtime/context/create-context.ts +204 -0
  428. package/src/forge/runtime/context/create-query-context.ts +34 -0
  429. package/src/forge/runtime/db/adapter.ts +31 -0
  430. package/src/forge/runtime/db/factory.ts +83 -0
  431. package/src/forge/runtime/db/generated-client.ts +294 -0
  432. package/src/forge/runtime/db/memory-adapter.ts +706 -0
  433. package/src/forge/runtime/db/migrate.ts +132 -0
  434. package/src/forge/runtime/db/outbox.ts +54 -0
  435. package/src/forge/runtime/db/pglite-adapter.ts +51 -0
  436. package/src/forge/runtime/db/postgres-adapter.ts +112 -0
  437. package/src/forge/runtime/db/read-only-client.ts +97 -0
  438. package/src/forge/runtime/db/session-context.ts +62 -0
  439. package/src/forge/runtime/executor.ts +446 -0
  440. package/src/forge/runtime/live/dependency-tracker.ts +57 -0
  441. package/src/forge/runtime/live/invalidation-log.ts +189 -0
  442. package/src/forge/runtime/live/live-query-runner.ts +267 -0
  443. package/src/forge/runtime/live/registry.ts +28 -0
  444. package/src/forge/runtime/live/sse.ts +75 -0
  445. package/src/forge/runtime/live/subscription-manager.ts +443 -0
  446. package/src/forge/runtime/live/types.ts +143 -0
  447. package/src/forge/runtime/outbox/claim.ts +153 -0
  448. package/src/forge/runtime/outbox/process.ts +298 -0
  449. package/src/forge/runtime/outbox/retry.ts +8 -0
  450. package/src/forge/runtime/outbox/subscriptions.ts +33 -0
  451. package/src/forge/runtime/outbox/types.ts +69 -0
  452. package/src/forge/runtime/policy/check.ts +157 -0
  453. package/src/forge/runtime/policy/load.ts +55 -0
  454. package/src/forge/runtime/query/registry.ts +19 -0
  455. package/src/forge/runtime/query/run-query.ts +347 -0
  456. package/src/forge/runtime/release/runtime.ts +322 -0
  457. package/src/forge/runtime/release/symbolicate.ts +175 -0
  458. package/src/forge/runtime/runner/command-transaction.ts +193 -0
  459. package/src/forge/runtime/runner/run-entry.ts +226 -0
  460. package/src/forge/runtime/secrets/check.ts +78 -0
  461. package/src/forge/runtime/secrets/create-context.ts +138 -0
  462. package/src/forge/runtime/secrets/env-loader.ts +94 -0
  463. package/src/forge/runtime/secrets/runtime-bundle.ts +47 -0
  464. package/src/forge/runtime/secrets/types.ts +31 -0
  465. package/src/forge/runtime/telemetry/buffer.ts +87 -0
  466. package/src/forge/runtime/telemetry/context.ts +192 -0
  467. package/src/forge/runtime/telemetry/correlation.ts +13 -0
  468. package/src/forge/runtime/telemetry/flush.ts +190 -0
  469. package/src/forge/runtime/telemetry/process.ts +20 -0
  470. package/src/forge/runtime/telemetry/scrubber.ts +115 -0
  471. package/src/forge/runtime/telemetry/sinks/local-jsonl.ts +39 -0
  472. package/src/forge/runtime/telemetry/sinks/posthog.ts +64 -0
  473. package/src/forge/runtime/telemetry/sinks/sentry.ts +60 -0
  474. package/src/forge/runtime/telemetry/spans.ts +58 -0
  475. package/src/forge/runtime/telemetry/types.ts +64 -0
  476. package/src/forge/runtime/workflows/cancel.ts +26 -0
  477. package/src/forge/runtime/workflows/create-run.ts +98 -0
  478. package/src/forge/runtime/workflows/process-run.ts +182 -0
  479. package/src/forge/runtime/workflows/process-step.ts +190 -0
  480. package/src/forge/runtime/workflows/process.ts +260 -0
  481. package/src/forge/runtime/workflows/registry.ts +51 -0
  482. package/src/forge/runtime/workflows/resolve-step.ts +46 -0
  483. package/src/forge/runtime/workflows/retry-run.ts +44 -0
  484. package/src/forge/runtime/workflows/retry.ts +8 -0
  485. package/src/forge/runtime/workflows/sanitize.ts +19 -0
  486. package/src/forge/runtime/workflows/start-from-outbox.ts +71 -0
  487. package/src/forge/runtime/workflows/types.ts +77 -0
  488. package/src/forge/server.ts +96 -0
  489. package/src/forge/ui/index.ts +770 -0
  490. package/src/forge/ui/types.ts +191 -0
  491. package/templates/b2b-support-web/.env.example +22 -0
  492. package/templates/b2b-support-web/.vscode/settings.json +14 -0
  493. package/templates/b2b-support-web/AGENTS.md +108 -0
  494. package/templates/b2b-support-web/README.md +48 -0
  495. package/templates/b2b-support-web/forge.config.ts +3 -0
  496. package/templates/b2b-support-web/package.json +34 -0
  497. package/templates/b2b-support-web/src/actions/captureTicketCreated.ts +14 -0
  498. package/templates/b2b-support-web/src/commands/closeTicket.ts +20 -0
  499. package/templates/b2b-support-web/src/commands/createTicket.ts +47 -0
  500. package/templates/b2b-support-web/src/commands/manageBilling.ts +9 -0
  501. package/templates/b2b-support-web/src/forge/schema.ts +35 -0
  502. package/templates/b2b-support-web/src/policies.ts +9 -0
  503. package/templates/b2b-support-web/src/queries/getTicket.ts +6 -0
  504. package/templates/b2b-support-web/src/queries/listTickets.ts +6 -0
  505. package/templates/b2b-support-web/src/queries/liveTickets.ts +9 -0
  506. package/templates/b2b-support-web/src/workflows/triageTicketWorkflow.ts +64 -0
  507. package/templates/b2b-support-web/tsconfig.json +14 -0
  508. package/templates/b2b-support-web/web/app/globals.css +77 -0
  509. package/templates/b2b-support-web/web/app/layout.tsx +13 -0
  510. package/templates/b2b-support-web/web/app/page.tsx +13 -0
  511. package/templates/b2b-support-web/web/app/providers.tsx +21 -0
  512. package/templates/b2b-support-web/web/app/tickets/page.tsx +21 -0
  513. package/templates/b2b-support-web/web/components/CreateTicketForm.tsx +43 -0
  514. package/templates/b2b-support-web/web/components/PolicyDeniedDemo.tsx +31 -0
  515. package/templates/b2b-support-web/web/components/TicketList.tsx +52 -0
  516. package/templates/b2b-support-web/web/components/TraceDetails.tsx +18 -0
  517. package/templates/b2b-support-web/web/components/TriageStatus.tsx +13 -0
  518. package/templates/b2b-support-web/web/lib/forge.ts +13 -0
  519. package/templates/b2b-support-web/web/next-env.d.ts +5 -0
  520. package/templates/b2b-support-web/web/next.config.ts +8 -0
  521. package/templates/b2b-support-web/web/package.json +21 -0
  522. package/templates/b2b-support-web/web/tsconfig.json +30 -0
  523. package/templates/minimal-web/.vscode/settings.json +14 -0
  524. package/templates/minimal-web/README.md +21 -0
  525. package/templates/minimal-web/forge.config.ts +3 -0
  526. package/templates/minimal-web/package.json +32 -0
  527. package/templates/minimal-web/src/actions/logNoteCreated.ts +11 -0
  528. package/templates/minimal-web/src/commands/createNote.ts +26 -0
  529. package/templates/minimal-web/src/forge/schema.ts +12 -0
  530. package/templates/minimal-web/src/policies.ts +6 -0
  531. package/templates/minimal-web/src/queries/listNotes.ts +8 -0
  532. package/templates/minimal-web/src/queries/liveNotes.ts +8 -0
  533. package/templates/minimal-web/tsconfig.json +15 -0
  534. package/templates/minimal-web/web/index.html +12 -0
  535. package/templates/minimal-web/web/package.json +21 -0
  536. package/templates/minimal-web/web/src/App.tsx +89 -0
  537. package/templates/minimal-web/web/src/lib/forge.ts +13 -0
  538. package/templates/minimal-web/web/src/main.tsx +13 -0
  539. package/templates/minimal-web/web/src/styles.css +156 -0
  540. package/templates/minimal-web/web/tsconfig.json +18 -0
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=e779323348ebe96e01970d5ccd51061af8f3fe3758e7d8cf72e6489ca2185914 content=2b75e18669312d27eb3d3b58558256dc495e10ac30c9ef72530948ef3b763fbd
2
+ export const runtimeRegistry = {} as const;
@@ -0,0 +1,79 @@
1
+ // @forge-generated generator=0.0.0 input=aa83a281b88ff3a9f4a31b32eac900a871c22a23247ea26b36b46bd6bd1fe9d4 content=7f09595afb7106f9024085f103c559078fd03bd0f2bb80554f0b57c6464354a2
2
+ # Runtime Rules
3
+
4
+ ## LiveQuery Production
5
+
6
+ Allowed:
7
+ - durable invalidation rows in _forge_live_invalidations
8
+ - polling fallback
9
+ - Postgres notify wakeups
10
+ - SSE heartbeats and Last-Event-ID resume
11
+
12
+ Forbidden:
13
+ - treating Pub/Sub or in-memory notification as the source of truth
14
+ - unbounded snapshot queues
15
+ - cross-tenant invalidation fanout
16
+
17
+ ## command
18
+
19
+ Allowed:
20
+ - ctx.db writes
21
+ - ctx.emit
22
+ - ctx.telemetry buffered events
23
+
24
+ Forbidden:
25
+ - network packages
26
+ - ctx.secrets
27
+ - ctx.ai
28
+ - process.env
29
+ - filesystem access
30
+
31
+ ## query
32
+
33
+ Allowed:
34
+ - ctx.db reads
35
+ - ctx.telemetry buffered events
36
+
37
+ Forbidden:
38
+ - insert/update/delete
39
+ - ctx.emit
40
+ - ctx.secrets
41
+ - ctx.ai
42
+ - network integrations
43
+
44
+ ## liveQuery
45
+
46
+ Allowed:
47
+ - ctx.db reads
48
+ - tenant-scoped subscriptions
49
+
50
+ Forbidden:
51
+ - insert/update/delete
52
+ - ctx.emit
53
+ - ctx.secrets
54
+ - ctx.ai
55
+ - network integrations
56
+
57
+ ## action
58
+
59
+ Allowed:
60
+ - ctx.secrets
61
+ - integrations
62
+ - ctx.ai
63
+ - ctx.db reads/writes
64
+ - network packages
65
+
66
+ Forbidden:
67
+ - uncommitted transactional side effects
68
+
69
+ ## workflow
70
+
71
+ Allowed:
72
+ - durable steps
73
+ - ctx.secrets
74
+ - integrations
75
+ - ctx.ai
76
+ - retries
77
+
78
+ Forbidden:
79
+ - non-idempotent step behavior without guards
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=a364a2ec435f1ad252c1d418c40d3d787ffd94db8ab078dc670d129e1ab2d4fd content=dc3749521bc270bf535866b7dc70acbd465cba91051e4730a0011d80e22bb1f7
2
+ {"secrets":[{"allowedContexts":["server","action","workflow","endpoint","test","build"],"integration":"ai-gateway","name":"AI_GATEWAY_API_KEY","public":false,"required":true,"source":"recipe"},{"allowedContexts":["server","action","workflow","endpoint","test","build"],"integration":"ai-provider-anthropic","name":"ANTHROPIC_API_KEY","public":false,"required":true,"source":"recipe"},{"allowedContexts":["server","action","workflow","endpoint","test","build"],"integration":"ai-provider-openai","name":"OPENAI_API_KEY","public":false,"required":true,"source":"recipe"}]}
@@ -0,0 +1,50 @@
1
+ // @forge-generated generator=0.0.0 input=a364a2ec435f1ad252c1d418c40d3d787ffd94db8ab078dc670d129e1ab2d4fd content=27a3fd362b85da0ebaf11345ce74bd252a9699ef453087fbf9ec48f7a7a7e11a
2
+ export const secretRegistry = {
3
+ "secrets": [
4
+ {
5
+ "allowedContexts": [
6
+ "server",
7
+ "action",
8
+ "workflow",
9
+ "endpoint",
10
+ "test",
11
+ "build"
12
+ ],
13
+ "integration": "ai-gateway",
14
+ "name": "AI_GATEWAY_API_KEY",
15
+ "public": false,
16
+ "required": true,
17
+ "source": "recipe"
18
+ },
19
+ {
20
+ "allowedContexts": [
21
+ "server",
22
+ "action",
23
+ "workflow",
24
+ "endpoint",
25
+ "test",
26
+ "build"
27
+ ],
28
+ "integration": "ai-provider-anthropic",
29
+ "name": "ANTHROPIC_API_KEY",
30
+ "public": false,
31
+ "required": true,
32
+ "source": "recipe"
33
+ },
34
+ {
35
+ "allowedContexts": [
36
+ "server",
37
+ "action",
38
+ "workflow",
39
+ "endpoint",
40
+ "test",
41
+ "build"
42
+ ],
43
+ "integration": "ai-provider-openai",
44
+ "name": "OPENAI_API_KEY",
45
+ "public": false,
46
+ "required": true,
47
+ "source": "recipe"
48
+ }
49
+ ]
50
+ } as const;
@@ -0,0 +1,11 @@
1
+ // @forge-generated generator=0.0.0 input=a364a2ec435f1ad252c1d418c40d3d787ffd94db8ab078dc670d129e1ab2d4fd content=f4fb41702a4aa53e0f1783707d82dd624e374d9f753ca2cd0092af42d050d4de
2
+ export interface SecretsContext {
3
+ get(name: string): string;
4
+ optional(name: string): string | undefined;
5
+ has(name: string): boolean;
6
+ }
7
+
8
+ export interface ConfigContext {
9
+ get(name: string): string;
10
+ optional(name: string): string | undefined;
11
+ }
@@ -0,0 +1,10 @@
1
+ // @forge-generated generator=0.0.0 input=2a69f73608c9994a8f39399567eecc24ebaaec48af7e2f818a41da7acbc1bfac content=ee2db579330ea2ab0b97114ee7ccc943251367a8b6997d75d8987fff521b92bd
2
+ import { api } from "./api.ts";
3
+
4
+ export const serverApi = {
5
+ queries: api.queries,
6
+ commands: api.commands,
7
+ liveQueries: api.liveQueries,
8
+ actions: api.actions,
9
+ workflows: api.workflows,
10
+ } as const;
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=6b855b87f2f57fce3e0939076b81cc0263cccfeae7bb969d2662613867b1c8ee content=aa285017fd3b19c0d0c24ad6cba86c686fbf97a5bb002ec05eca69bc9db27c85
2
+ {"diagnostics":[],"releaseId":"forgeos@0.1.0-alpha.0+unknown","schemaVersion":"0.1.0","sourceMaps":[]}
@@ -0,0 +1,7 @@
1
+ // @forge-generated generator=0.0.0 input=6b855b87f2f57fce3e0939076b81cc0263cccfeae7bb969d2662613867b1c8ee content=26c9701dce3e53e6e268328c3321aad789fff8e08a9ff1430e3253bb49a9b460
2
+ export const sourceMapManifest = {
3
+ "diagnostics": [],
4
+ "releaseId": "forgeos@0.1.0-alpha.0+unknown",
5
+ "schemaVersion": "0.1.0",
6
+ "sourceMaps": []
7
+ } as const;
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=b20eb68e1cea2bf422356daa854f8f1e6b9529fb789ab44800b13b83a169d0af content=1edd73682fcf31fb6419a31733cd4e2e54df9c385c5c950074b9a746dd47a4ae
2
+ {"checksum":"e00b135de6e380256e8116fb3ac28f4d925aef552528a58b4dc5285782737654","diagnostics":[],"indexes":[{"index":{"columns":["revision"],"name":"forge_live_invalidations_revision_idx","table":"_forge_live_invalidations"},"kind":"create_index","sql":"CREATE INDEX IF NOT EXISTS \"forge_live_invalidations_revision_idx\" ON \"_forge_live_invalidations\" (\"revision\")","table":"_forge_live_invalidations"},{"index":{"columns":["table_name","tenant_id","revision"],"name":"forge_live_invalidations_table_tenant_revision_idx","table":"_forge_live_invalidations"},"kind":"create_index","sql":"CREATE INDEX IF NOT EXISTS \"forge_live_invalidations_table_tenant_revision_idx\" ON \"_forge_live_invalidations\" (\"table_name\", \"tenant_id\", \"revision\")","table":"_forge_live_invalidations"}],"migrationId":"migration_e00b135de6e38025","schemaVersion":"1.0.0","systemTables":[{"kind":"create_table","sql":"CREATE TABLE IF NOT EXISTS _forge_migrations (id text PRIMARY KEY, checksum text NOT NULL, applied_at timestamptz NOT NULL DEFAULT now())","table":"_forge_migrations"},{"kind":"create_table","sql":"CREATE TABLE IF NOT EXISTS _forge_outbox (id bigserial PRIMARY KEY, event_type text NOT NULL, payload jsonb NOT NULL, auth_context jsonb, created_at timestamptz NOT NULL DEFAULT now())","table":"_forge_outbox"},{"kind":"create_table","sql":"CREATE TABLE IF NOT EXISTS _forge_outbox_deliveries (id bigserial PRIMARY KEY, outbox_id bigint NOT NULL REFERENCES _forge_outbox(id), action_name text NOT NULL, status text NOT NULL DEFAULT 'pending', attempts integer NOT NULL DEFAULT 0, max_attempts integer NOT NULL DEFAULT 5, next_attempt_at timestamptz NOT NULL DEFAULT now(), locked_at timestamptz, locked_by text, last_error text, processed_at timestamptz, created_at timestamptz NOT NULL DEFAULT now(), UNIQUE(outbox_id, action_name))","table":"_forge_outbox_deliveries"},{"kind":"create_table","sql":"CREATE TABLE IF NOT EXISTS _forge_workflow_runs (id bigserial PRIMARY KEY, workflow_name text NOT NULL, trigger_type text NOT NULL, trigger_outbox_id bigint, idempotency_key text NOT NULL UNIQUE, input jsonb NOT NULL, auth_context jsonb, status text NOT NULL DEFAULT 'pending', current_step text, last_error text, created_at timestamptz NOT NULL DEFAULT now(), updated_at timestamptz NOT NULL DEFAULT now(), started_at timestamptz, completed_at timestamptz, canceled_at timestamptz)","table":"_forge_workflow_runs"},{"kind":"create_table","sql":"CREATE TABLE IF NOT EXISTS _forge_workflow_steps (id bigserial PRIMARY KEY, run_id bigint NOT NULL REFERENCES _forge_workflow_runs(id), step_name text NOT NULL, step_index integer NOT NULL, status text NOT NULL DEFAULT 'pending', input jsonb, output jsonb, attempts integer NOT NULL DEFAULT 0, max_attempts integer NOT NULL DEFAULT 5, next_attempt_at timestamptz NOT NULL DEFAULT now(), locked_at timestamptz, locked_by text, last_error text, started_at timestamptz, completed_at timestamptz, created_at timestamptz NOT NULL DEFAULT now(), UNIQUE(run_id, step_name))","table":"_forge_workflow_steps"},{"kind":"create_table","sql":"CREATE TABLE IF NOT EXISTS _forge_telemetry_events (id bigserial PRIMARY KEY, trace_id text NOT NULL, event_type text NOT NULL, payload jsonb NOT NULL, status text NOT NULL DEFAULT 'pending', sink text, attempts integer NOT NULL DEFAULT 0, max_attempts integer NOT NULL DEFAULT 5, next_attempt_at timestamptz NOT NULL DEFAULT now(), last_error text, created_at timestamptz NOT NULL DEFAULT now(), processed_at timestamptz)","table":"_forge_telemetry_events"},{"kind":"create_table","sql":"CREATE TABLE IF NOT EXISTS _forge_trace_spans (id bigserial PRIMARY KEY, trace_id text NOT NULL, parent_span_id text, span_id text NOT NULL, name text NOT NULL, kind text NOT NULL, attributes jsonb NOT NULL DEFAULT '{}', status text NOT NULL DEFAULT 'ok', started_at timestamptz NOT NULL, ended_at timestamptz, error text)","table":"_forge_trace_spans"},{"kind":"create_sequence","sql":"CREATE SEQUENCE IF NOT EXISTS _forge_live_revision_seq START WITH 2","table":"_forge_live_revision_seq"},{"kind":"create_table","sql":"CREATE TABLE IF NOT EXISTS _forge_live_invalidations (id bigserial PRIMARY KEY, revision bigint NOT NULL, table_name text NOT NULL, tenant_id text, operation text NOT NULL, source_kind text NOT NULL, source_name text, trace_id text, release_id text, deploy_id text, payload jsonb NOT NULL DEFAULT '{}', created_at timestamptz NOT NULL DEFAULT now())","table":"_forge_live_invalidations"},{"kind":"create_table","sql":"CREATE TABLE IF NOT EXISTS _forge_live_subscription_debug (id text PRIMARY KEY, name text NOT NULL, tenant_id text, dependencies jsonb NOT NULL, last_revision bigint, runtime_id text, created_at timestamptz NOT NULL DEFAULT now(), updated_at timestamptz NOT NULL DEFAULT now())","table":"_forge_live_subscription_debug"}],"tables":[]}
@@ -0,0 +1,88 @@
1
+ // @forge-generated generator=0.0.0 input=b20eb68e1cea2bf422356daa854f8f1e6b9529fb789ab44800b13b83a169d0af content=d5967c203c4ecb427d0cf694931a3cc8dc6dd88726fcd4b71b79c2ab0c464e10
2
+ export const sqlPlan = {
3
+ "checksum": "e00b135de6e380256e8116fb3ac28f4d925aef552528a58b4dc5285782737654",
4
+ "diagnostics": [],
5
+ "indexes": [
6
+ {
7
+ "index": {
8
+ "columns": [
9
+ "revision"
10
+ ],
11
+ "name": "forge_live_invalidations_revision_idx",
12
+ "table": "_forge_live_invalidations"
13
+ },
14
+ "kind": "create_index",
15
+ "sql": "CREATE INDEX IF NOT EXISTS \"forge_live_invalidations_revision_idx\" ON \"_forge_live_invalidations\" (\"revision\")",
16
+ "table": "_forge_live_invalidations"
17
+ },
18
+ {
19
+ "index": {
20
+ "columns": [
21
+ "table_name",
22
+ "tenant_id",
23
+ "revision"
24
+ ],
25
+ "name": "forge_live_invalidations_table_tenant_revision_idx",
26
+ "table": "_forge_live_invalidations"
27
+ },
28
+ "kind": "create_index",
29
+ "sql": "CREATE INDEX IF NOT EXISTS \"forge_live_invalidations_table_tenant_revision_idx\" ON \"_forge_live_invalidations\" (\"table_name\", \"tenant_id\", \"revision\")",
30
+ "table": "_forge_live_invalidations"
31
+ }
32
+ ],
33
+ "migrationId": "migration_e00b135de6e38025",
34
+ "schemaVersion": "1.0.0",
35
+ "systemTables": [
36
+ {
37
+ "kind": "create_table",
38
+ "sql": "CREATE TABLE IF NOT EXISTS _forge_migrations (id text PRIMARY KEY, checksum text NOT NULL, applied_at timestamptz NOT NULL DEFAULT now())",
39
+ "table": "_forge_migrations"
40
+ },
41
+ {
42
+ "kind": "create_table",
43
+ "sql": "CREATE TABLE IF NOT EXISTS _forge_outbox (id bigserial PRIMARY KEY, event_type text NOT NULL, payload jsonb NOT NULL, auth_context jsonb, created_at timestamptz NOT NULL DEFAULT now())",
44
+ "table": "_forge_outbox"
45
+ },
46
+ {
47
+ "kind": "create_table",
48
+ "sql": "CREATE TABLE IF NOT EXISTS _forge_outbox_deliveries (id bigserial PRIMARY KEY, outbox_id bigint NOT NULL REFERENCES _forge_outbox(id), action_name text NOT NULL, status text NOT NULL DEFAULT 'pending', attempts integer NOT NULL DEFAULT 0, max_attempts integer NOT NULL DEFAULT 5, next_attempt_at timestamptz NOT NULL DEFAULT now(), locked_at timestamptz, locked_by text, last_error text, processed_at timestamptz, created_at timestamptz NOT NULL DEFAULT now(), UNIQUE(outbox_id, action_name))",
49
+ "table": "_forge_outbox_deliveries"
50
+ },
51
+ {
52
+ "kind": "create_table",
53
+ "sql": "CREATE TABLE IF NOT EXISTS _forge_workflow_runs (id bigserial PRIMARY KEY, workflow_name text NOT NULL, trigger_type text NOT NULL, trigger_outbox_id bigint, idempotency_key text NOT NULL UNIQUE, input jsonb NOT NULL, auth_context jsonb, status text NOT NULL DEFAULT 'pending', current_step text, last_error text, created_at timestamptz NOT NULL DEFAULT now(), updated_at timestamptz NOT NULL DEFAULT now(), started_at timestamptz, completed_at timestamptz, canceled_at timestamptz)",
54
+ "table": "_forge_workflow_runs"
55
+ },
56
+ {
57
+ "kind": "create_table",
58
+ "sql": "CREATE TABLE IF NOT EXISTS _forge_workflow_steps (id bigserial PRIMARY KEY, run_id bigint NOT NULL REFERENCES _forge_workflow_runs(id), step_name text NOT NULL, step_index integer NOT NULL, status text NOT NULL DEFAULT 'pending', input jsonb, output jsonb, attempts integer NOT NULL DEFAULT 0, max_attempts integer NOT NULL DEFAULT 5, next_attempt_at timestamptz NOT NULL DEFAULT now(), locked_at timestamptz, locked_by text, last_error text, started_at timestamptz, completed_at timestamptz, created_at timestamptz NOT NULL DEFAULT now(), UNIQUE(run_id, step_name))",
59
+ "table": "_forge_workflow_steps"
60
+ },
61
+ {
62
+ "kind": "create_table",
63
+ "sql": "CREATE TABLE IF NOT EXISTS _forge_telemetry_events (id bigserial PRIMARY KEY, trace_id text NOT NULL, event_type text NOT NULL, payload jsonb NOT NULL, status text NOT NULL DEFAULT 'pending', sink text, attempts integer NOT NULL DEFAULT 0, max_attempts integer NOT NULL DEFAULT 5, next_attempt_at timestamptz NOT NULL DEFAULT now(), last_error text, created_at timestamptz NOT NULL DEFAULT now(), processed_at timestamptz)",
64
+ "table": "_forge_telemetry_events"
65
+ },
66
+ {
67
+ "kind": "create_table",
68
+ "sql": "CREATE TABLE IF NOT EXISTS _forge_trace_spans (id bigserial PRIMARY KEY, trace_id text NOT NULL, parent_span_id text, span_id text NOT NULL, name text NOT NULL, kind text NOT NULL, attributes jsonb NOT NULL DEFAULT '{}', status text NOT NULL DEFAULT 'ok', started_at timestamptz NOT NULL, ended_at timestamptz, error text)",
69
+ "table": "_forge_trace_spans"
70
+ },
71
+ {
72
+ "kind": "create_sequence",
73
+ "sql": "CREATE SEQUENCE IF NOT EXISTS _forge_live_revision_seq START WITH 2",
74
+ "table": "_forge_live_revision_seq"
75
+ },
76
+ {
77
+ "kind": "create_table",
78
+ "sql": "CREATE TABLE IF NOT EXISTS _forge_live_invalidations (id bigserial PRIMARY KEY, revision bigint NOT NULL, table_name text NOT NULL, tenant_id text, operation text NOT NULL, source_kind text NOT NULL, source_name text, trace_id text, release_id text, deploy_id text, payload jsonb NOT NULL DEFAULT '{}', created_at timestamptz NOT NULL DEFAULT now())",
79
+ "table": "_forge_live_invalidations"
80
+ },
81
+ {
82
+ "kind": "create_table",
83
+ "sql": "CREATE TABLE IF NOT EXISTS _forge_live_subscription_debug (id text PRIMARY KEY, name text NOT NULL, tenant_id text, dependencies jsonb NOT NULL, last_revision bigint, runtime_id text, created_at timestamptz NOT NULL DEFAULT now(), updated_at timestamptz NOT NULL DEFAULT now())",
84
+ "table": "_forge_live_subscription_debug"
85
+ }
86
+ ],
87
+ "tables": []
88
+ } as const;
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=eb8d78e749f083957f69f7f316aa4efc3faf5ccd81ff63e3cf32bf7fb7f705ac content=24721b10d2035ff9c4cfd643b4608c7e2cb14f08a03ab6af6224ba3f133713a2
2
+ {"generatorVersion":"0.0.0","inputHash":"dd356f5b886d56bc39e3633c018d348746ab64c4d5e7778b0ba47687e421f568","liveQueries":[],"schemaVersion":"0.1.0"}
@@ -0,0 +1,7 @@
1
+ // @forge-generated generator=0.0.0 input=eb8d78e749f083957f69f7f316aa4efc3faf5ccd81ff63e3cf32bf7fb7f705ac content=febaeb98c2aac381f511d7c063612d328ac1c5698de18929a7309ea0e5d0d0ba
2
+ export const subscriptionManifest = {
3
+ "generatorVersion": "0.0.0",
4
+ "inputHash": "dd356f5b886d56bc39e3633c018d348746ab64c4d5e7778b0ba47687e421f568",
5
+ "liveQueries": [],
6
+ "schemaVersion": "0.1.0"
7
+ } as const;
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=6b855b87f2f57fce3e0939076b81cc0263cccfeae7bb969d2662613867b1c8ee content=d7a78e250dd7ca7fa0beeb400c5dcb1c83a484d4a6379a150e5231a144122d47
2
+ {"diagnostics":[],"localSymbolication":true,"providers":["local","sentry-compatible","sentry","glitchtip","bugsink","otel","custom"],"releaseId":"forgeos@0.1.0-alpha.0+unknown","schemaVersion":"0.1.0","sourceMapCount":0}
@@ -0,0 +1,17 @@
1
+ // @forge-generated generator=0.0.0 input=6b855b87f2f57fce3e0939076b81cc0263cccfeae7bb969d2662613867b1c8ee content=b4ef4cc370fddab2cc9b7c79776d6995b9d296ad2f595e094f4246752d44483e
2
+ export const symbolicationManifest = {
3
+ "diagnostics": [],
4
+ "localSymbolication": true,
5
+ "providers": [
6
+ "local",
7
+ "sentry-compatible",
8
+ "sentry",
9
+ "glitchtip",
10
+ "bugsink",
11
+ "otel",
12
+ "custom"
13
+ ],
14
+ "releaseId": "forgeos@0.1.0-alpha.0+unknown",
15
+ "schemaVersion": "0.1.0",
16
+ "sourceMapCount": 0
17
+ } as const;
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=eb8d78e749f083957f69f7f316aa4efc3faf5ccd81ff63e3cf32bf7fb7f705ac content=538c806a4ee0bbd3a2c954b04061237158e542e5990e5bf8956259fc8ae391a9
2
+ {"analyzerVersion":"1.0.0","diagnostics":[],"events":[],"generatorVersion":"0.0.0","inputHash":"b0bf6a280d60ef13fcf378fd45be3ae4ff435da2967062538a2e96c1b1f0a21a","schemaVersion":"1.0.0"}
@@ -0,0 +1,9 @@
1
+ // @forge-generated generator=0.0.0 input=eb8d78e749f083957f69f7f316aa4efc3faf5ccd81ff63e3cf32bf7fb7f705ac content=258ea3590db1dcab4d1022639a2ebe45054463025c154adc97d46b6c795ae5bf
2
+ export const telemetryRegistry = {
3
+ "analyzerVersion": "1.0.0",
4
+ "diagnostics": [],
5
+ "events": [],
6
+ "generatorVersion": "0.0.0",
7
+ "inputHash": "b0bf6a280d60ef13fcf378fd45be3ae4ff435da2967062538a2e96c1b1f0a21a",
8
+ "schemaVersion": "1.0.0"
9
+ } as const;
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=a364a2ec435f1ad252c1d418c40d3d787ffd94db8ab078dc670d129e1ab2d4fd content=6e4175142ee92895862ff37ca2c42ecb2d9b985a9f903408f74d49b5d868d9bc
2
+ {"generatorVersion":"0.0.0","schemaVersion":"1.0.0","sinks":[{"id":"local","kind":"local"}]}
@@ -0,0 +1,11 @@
1
+ // @forge-generated generator=0.0.0 input=a364a2ec435f1ad252c1d418c40d3d787ffd94db8ab078dc670d129e1ab2d4fd content=0ee44eb5a3fbbfcf2ff342474c9392200bf5df95ff6731da4f0ddd34193229bb
2
+ export const telemetrySinks = {
3
+ "generatorVersion": "0.0.0",
4
+ "schemaVersion": "1.0.0",
5
+ "sinks": [
6
+ {
7
+ "id": "local",
8
+ "kind": "local"
9
+ }
10
+ ]
11
+ } as const;
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=eb8d78e749f083957f69f7f316aa4efc3faf5ccd81ff63e3cf32bf7fb7f705ac content=8994530a2569cd27aa3069330161f7e7fe8203e5d795c54fe28318c9282a32ca
2
+ {"diagnostics":[],"generatorVersion":"0.0.0","inputHash":"6df72e081ae332c89a8a235adceb5572f09c5723da5e84f94682b5741b28bf8f","schemaVersion":"1.0.0","tables":[]}
@@ -0,0 +1,8 @@
1
+ // @forge-generated generator=0.0.0 input=eb8d78e749f083957f69f7f316aa4efc3faf5ccd81ff63e3cf32bf7fb7f705ac content=614e022f1cb1b7d7ec61f8cc7cdba8f32eb81caabe2777fa071749934c1e957a
2
+ export const tenantScope = {
3
+ "diagnostics": [],
4
+ "generatorVersion": "0.0.0",
5
+ "inputHash": "6df72e081ae332c89a8a235adceb5572f09c5723da5e84f94682b5741b28bf8f",
6
+ "schemaVersion": "1.0.0",
7
+ "tables": []
8
+ } as const;
@@ -0,0 +1,2 @@
1
+ // @forge-generated generator=0.0.0 input=045a6cb4b35ff84e44e490cddac563a732ab9b3c9d9e921ed9a1b1d279b62b2b content=8a6e60deb7334aa1d1575e681777f789f9696d27422de87641ade4694108cca5
2
+ {"analyzerVersion":"test-graph-0.1.0","diagnostics":[],"generatorVersion":"0.0.0","inputHash":"045a6cb4b35ff84e44e490cddac563a732ab9b3c9d9e921ed9a1b1d279b62b2b","schemaVersion":"0.1.0","tests":[{"confidence":"probable","cost":"docker","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","tsx","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/agent-adapters/h30-agent-adapters.test.ts","kind":"unknown","reasons":["probable: packages ai","probable: packages tsx","probable: packages zod"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/agent-contract/h19-agent-contract.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/agent-contract/h34-full-stack-contract.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["tsx"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/agent-contract/h35-capability-map.test.ts","kind":"unknown","reasons":["probable: packages tsx"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ai/ai-cli.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ai/ai-context.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ai/ai-dev-server.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ai/ai-forbidden-context.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ai/ai-mock-provider.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ai/ai-registry.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ai/ai-secrets.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ai/ai-telemetry.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ai/ai-workflow.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/app-graph/build.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/app-graph/classify.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/app-graph/incremental.test.ts","kind":"unknown","reasons":[]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["jose"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/auth/h20-auth.test.ts","kind":"unknown","reasons":["confirmed: packages jose"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check","typescript","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/cache/cache-soundness.property.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check","confirmed: packages typescript","probable: packages zod"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/cache/cache.test.ts","kind":"unknown","reasons":["probable: packages ai","probable: packages zod"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ci/ci-workflow.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ci/publish-workflow.test.ts","kind":"unknown","reasons":[]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","fast-check","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/classifier/classification.property.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check","probable: packages ai","probable: packages zod"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/classifier/classify.test.ts","kind":"unknown","reasons":["probable: packages zod"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/cli/cli.test.ts","kind":"unknown","reasons":["probable: packages zod"]},{"confidence":"probable","cost":"slow","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["tsx"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/cli/node-compat.test.ts","kind":"unknown","reasons":["probable: packages tsx"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/cli/windows.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["react"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/client/client-api-generation.test.ts","kind":"unknown","reasons":["probable: packages react"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/client/client-auth-headers.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/client/client-command.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/client/client-errors.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/client/client-query.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/client/client-surface-security.test.ts","kind":"unknown","reasons":["probable: packages ai"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/client/client-tenant-scope.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/data-graph/build.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/data-graph/parse.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/db/db-cli.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/db/generated-db-client.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/db/migrations.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/db/outbox.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/db/pglite-adapter.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/db/sql-compiler.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"docker","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["postgres"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/deploy/self-host.test.ts","kind":"unknown","reasons":["probable: packages postgres"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/deps/h22-deps.test.ts","kind":"unknown","reasons":["probable: packages zod"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/dev/dev-console.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/dev/dev-outbox-worker.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/dev/dev-server-db.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/dev/dev-workflow-worker.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/dev/routes.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/dev/server.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/dev/watch.test.ts","kind":"unknown","reasons":["probable: packages zod"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/diagnostics/codes.test.ts","kind":"unknown","reasons":["probable: packages ai"]},{"confidence":"probable","cost":"slow","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/e2e/pipeline.test.ts","kind":"e2e","reasons":["probable: packages zod"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/emitter/determinism.property.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/emitter/emitter.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/examples/basic-forge-app.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","tsx"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/examples/showcase-app.test.ts","kind":"unknown","reasons":["probable: packages ai","probable: packages tsx"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["react"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/feature/h26-feature.test.ts","kind":"unknown","reasons":["probable: packages react"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/fs/file-system.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/guards/eslint-plugin.test.ts","kind":"unknown","reasons":[]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/guards/guards.property.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check"]},{"confidence":"probable","cost":"slow","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/guards/guards.test.ts","kind":"unknown","reasons":["probable: packages zod"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["react","tsx","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/impact/h28-impact.test.ts","kind":"unknown","reasons":["probable: packages react","probable: packages tsx","probable: packages zod"]},{"confidence":"probable","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/integration/add.test.ts","kind":"integration","reasons":["probable: packages zod"]},{"confidence":"confirmed","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/integration/h2-quality.test.ts","kind":"integration","reasons":["confirmed: packages zod","probable: packages ai"]},{"confidence":"confirmed","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/integration/lock-integrity.property.test.ts","kind":"integration","reasons":["confirmed: packages fast-check","probable: packages zod"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/intent/h33-intent-router.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["postgres"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/live-production/h24-live-production.test.ts","kind":"unknown","reasons":["probable: packages postgres"]},{"confidence":"weak","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/live/live-query-invalidation.test.ts","kind":"integration","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["tsx"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/make/h25-make.test.ts","kind":"unknown","reasons":["probable: packages tsx"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/orchestrator/.tmp/cli-verify-changed-resolution-019ec6eb-ff1f-7000-83c1-5addbb10155c/tests/changed.test.ts","kind":"unit","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/orchestrator/.tmp/cli-verify-changed-resolution-019ec6ec-3ba7-7000-929c-8dce77d33e14/tests/changed.test.ts","kind":"unit","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/orchestrator/.tmp/cli-verify-changed-resolution-019ec73a-d85f-7000-b667-40f09f20d106/tests/changed.test.ts","kind":"unit","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/orchestrator/.tmp/cli-verify-changed-resolution-019ec73f-9a05-7000-8472-c2e003cbcd45/tests/changed.test.ts","kind":"unit","reasons":[]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/orchestrator/check-drift.property.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/orchestrator/fast-check.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/orchestrator/idempotency.property.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/orchestrator/orchestrator.test.ts","kind":"unknown","reasons":["probable: packages zod"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/outbox/action-subscriptions.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/outbox/outbox-dead-letter.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/outbox/outbox-process.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/outbox/outbox-retry.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/package-graph/extraction.test.ts","kind":"unknown","reasons":["probable: packages ai","probable: packages zod"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/package-graph/static-safety.property.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check","probable: packages zod"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/package-manager/adapter.test.ts","kind":"unknown","reasons":["probable: packages zod"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/package-manager/commands.test.ts","kind":"unknown","reasons":["probable: packages zod"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/package-manager/detect.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/policy/command-auth.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/policy/outbox-auth-propagation.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/policy/policy-denied.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/policy/policy-matrix.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/policy/policy-registry.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/policy/policy-simulate.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/policy/telemetry-policy-denied.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/policy/tenant-scoped-db.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/policy/workflow-auth-context.test.ts","kind":"integration","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/primitives/compare.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/primitives/hash.test.ts","kind":"unknown","reasons":[]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/primitives/result.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/primitives/serialize.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/primitives/sort.test.ts","kind":"unknown","reasons":["probable: packages ai","probable: packages zod"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/primitives/stable-ordering.property.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/queries/query-dev-server.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/queries/query-policy.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/queries/query-readonly.test.ts","kind":"unknown","reasons":["probable: packages ai"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/queries/query-registry.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/queries/query-run.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/queries/query-telemetry.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/queries/query-tenant-scope.test.ts","kind":"unknown","reasons":[]},{"confidence":"confirmed","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","react"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/react/generated-react.test.ts","kind":"frontend","reasons":["confirmed: packages react","probable: packages ai"]},{"confidence":"confirmed","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["react","react-test-renderer"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/react/hooks.test.ts","kind":"frontend","reasons":["confirmed: packages react","confirmed: packages react-test-renderer"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["@ai-sdk/anthropic","@ai-sdk/openai","ai","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/recipes/registry.test.ts","kind":"unknown","reasons":["probable: packages @ai-sdk/anthropic","probable: packages @ai-sdk/openai","probable: packages ai","probable: packages zod"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["tsx"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/refactor/h27-refactor.test.ts","kind":"unknown","reasons":["probable: packages tsx"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/release/h23-release.test.ts","kind":"unknown","reasons":[]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/repair/h29-repair.test.ts","kind":"unknown","reasons":["confirmed: packages ai"]},{"confidence":"probable","cost":"docker","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["tsx"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/review/h31-review.test.ts","kind":"unknown","reasons":["probable: packages tsx"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["postgres"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/rls/h21-rls.test.ts","kind":"unknown","reasons":["probable: packages postgres"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/runtime-graph/build.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/runtime/command-persistence.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/runtime/command-transaction.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/runtime/db-generated-client-alias.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/runtime/executor.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/runtime/guard-block.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/runtime/mock.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/sandbox/sandbox.test.ts","kind":"unknown","reasons":["probable: packages zod"]},{"confidence":"confirmed","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["fast-check"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/sandbox/secret-exclusion.property.test.ts","kind":"unknown","reasons":["confirmed: packages fast-check"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/secrets/ctx-secrets.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/secrets/dev-server-env.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/secrets/env-loader.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/secrets/forbidden-context.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/secrets/generated-adapters-secrets.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/secrets/process-env-check.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/secrets/secret-registry-generation.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/secrets/secrets-check.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/secrets/verify-strict.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","zod"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/smoke/real-packages.test.ts","kind":"unknown","reasons":["probable: packages ai","probable: packages zod"]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/telemetry/telemetry-cli.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/telemetry/telemetry-context.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/telemetry/telemetry-db.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/telemetry/telemetry-dev-server.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/telemetry/telemetry-jsonl-sink.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/telemetry/telemetry-posthog-sink.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/telemetry/telemetry-scrubber.test.ts","kind":"unknown","reasons":[]},{"confidence":"weak","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/telemetry/telemetry-sentry-sink.test.ts","kind":"unknown","reasons":[]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["ai","react","tsx"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/templates/new-b2b-support-web.test.ts","kind":"unknown","reasons":["probable: packages ai","probable: packages react","probable: packages tsx"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["tsx"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/templates/new-minimal-web.test.ts","kind":"unknown","reasons":["probable: packages tsx"]},{"confidence":"probable","cost":"fast","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":["tsx"],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/ui/h32-ui.test.ts","kind":"unknown","reasons":["probable: packages tsx"]},{"confidence":"weak","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/workflows/workflow-cancel.test.ts","kind":"integration","reasons":[]},{"confidence":"weak","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/workflows/workflow-idempotency.test.ts","kind":"integration","reasons":[]},{"confidence":"weak","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/workflows/workflow-process.test.ts","kind":"integration","reasons":[]},{"confidence":"weak","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/workflows/workflow-registry.test.ts","kind":"integration","reasons":[]},{"confidence":"weak","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/workflows/workflow-retry.test.ts","kind":"integration","reasons":[]},{"confidence":"weak","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/workflows/workflow-run-create.test.ts","kind":"integration","reasons":[]},{"confidence":"weak","cost":"standard","covers":{"actions":[],"commands":[],"components":[],"liveQueries":[],"packages":[],"policies":[],"queries":[],"tables":[],"workflows":[]},"file":"tests/workflows/workflow-subscriptions.test.ts","kind":"integration","reasons":[]}]}