@quolu/lattice 0.1.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 (769) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +20 -0
  3. package/bin/lattice-mcp.mjs +134 -0
  4. package/bin/lattice.mjs +78 -0
  5. package/package.json +47 -0
  6. package/sensor/LICENSE +21 -0
  7. package/sensor/NOTICE +30 -0
  8. package/sensor/dist/bin/codegraph.d.ts +26 -0
  9. package/sensor/dist/bin/codegraph.d.ts.map +1 -0
  10. package/sensor/dist/bin/codegraph.js +2279 -0
  11. package/sensor/dist/bin/codegraph.js.map +1 -0
  12. package/sensor/dist/bin/command-supervision.d.ts +49 -0
  13. package/sensor/dist/bin/command-supervision.d.ts.map +1 -0
  14. package/sensor/dist/bin/command-supervision.js +95 -0
  15. package/sensor/dist/bin/command-supervision.js.map +1 -0
  16. package/sensor/dist/bin/fatal-handler.d.ts +20 -0
  17. package/sensor/dist/bin/fatal-handler.d.ts.map +1 -0
  18. package/sensor/dist/bin/fatal-handler.js +118 -0
  19. package/sensor/dist/bin/fatal-handler.js.map +1 -0
  20. package/sensor/dist/bin/node-version-check.d.ts +37 -0
  21. package/sensor/dist/bin/node-version-check.d.ts.map +1 -0
  22. package/sensor/dist/bin/node-version-check.js +79 -0
  23. package/sensor/dist/bin/node-version-check.js.map +1 -0
  24. package/sensor/dist/bin/uninstall.d.ts +14 -0
  25. package/sensor/dist/bin/uninstall.d.ts.map +1 -0
  26. package/sensor/dist/bin/uninstall.js +36 -0
  27. package/sensor/dist/bin/uninstall.js.map +1 -0
  28. package/sensor/dist/context/formatter.d.ts +30 -0
  29. package/sensor/dist/context/formatter.d.ts.map +1 -0
  30. package/sensor/dist/context/formatter.js +263 -0
  31. package/sensor/dist/context/formatter.js.map +1 -0
  32. package/sensor/dist/context/index.d.ts +119 -0
  33. package/sensor/dist/context/index.d.ts.map +1 -0
  34. package/sensor/dist/context/index.js +1326 -0
  35. package/sensor/dist/context/index.js.map +1 -0
  36. package/sensor/dist/context/markers.d.ts +19 -0
  37. package/sensor/dist/context/markers.d.ts.map +1 -0
  38. package/sensor/dist/context/markers.js +22 -0
  39. package/sensor/dist/context/markers.js.map +1 -0
  40. package/sensor/dist/db/index.d.ts +264 -0
  41. package/sensor/dist/db/index.d.ts.map +1 -0
  42. package/sensor/dist/db/index.js +603 -0
  43. package/sensor/dist/db/index.js.map +1 -0
  44. package/sensor/dist/db/migrations.d.ts +44 -0
  45. package/sensor/dist/db/migrations.d.ts.map +1 -0
  46. package/sensor/dist/db/migrations.js +241 -0
  47. package/sensor/dist/db/migrations.js.map +1 -0
  48. package/sensor/dist/db/queries.d.ts +563 -0
  49. package/sensor/dist/db/queries.d.ts.map +1 -0
  50. package/sensor/dist/db/queries.js +2179 -0
  51. package/sensor/dist/db/queries.js.map +1 -0
  52. package/sensor/dist/db/schema.sql +196 -0
  53. package/sensor/dist/db/sqlite-adapter.d.ts +55 -0
  54. package/sensor/dist/db/sqlite-adapter.d.ts.map +1 -0
  55. package/sensor/dist/db/sqlite-adapter.js +135 -0
  56. package/sensor/dist/db/sqlite-adapter.js.map +1 -0
  57. package/sensor/dist/db/wal-valve.d.ts +106 -0
  58. package/sensor/dist/db/wal-valve.d.ts.map +1 -0
  59. package/sensor/dist/db/wal-valve.js +208 -0
  60. package/sensor/dist/db/wal-valve.js.map +1 -0
  61. package/sensor/dist/directory.d.ts +183 -0
  62. package/sensor/dist/directory.d.ts.map +1 -0
  63. package/sensor/dist/directory.js +797 -0
  64. package/sensor/dist/directory.js.map +1 -0
  65. package/sensor/dist/errors.d.ts +136 -0
  66. package/sensor/dist/errors.d.ts.map +1 -0
  67. package/sensor/dist/errors.js +219 -0
  68. package/sensor/dist/errors.js.map +1 -0
  69. package/sensor/dist/extraction/astro-extractor.d.ts +79 -0
  70. package/sensor/dist/extraction/astro-extractor.d.ts.map +1 -0
  71. package/sensor/dist/extraction/astro-extractor.js +320 -0
  72. package/sensor/dist/extraction/astro-extractor.js.map +1 -0
  73. package/sensor/dist/extraction/cfml-extractor.d.ts +107 -0
  74. package/sensor/dist/extraction/cfml-extractor.d.ts.map +1 -0
  75. package/sensor/dist/extraction/cfml-extractor.js +494 -0
  76. package/sensor/dist/extraction/cfml-extractor.js.map +1 -0
  77. package/sensor/dist/extraction/dfm-extractor.d.ts +31 -0
  78. package/sensor/dist/extraction/dfm-extractor.d.ts.map +1 -0
  79. package/sensor/dist/extraction/dfm-extractor.js +151 -0
  80. package/sensor/dist/extraction/dfm-extractor.js.map +1 -0
  81. package/sensor/dist/extraction/dynamic-import.d.ts +82 -0
  82. package/sensor/dist/extraction/dynamic-import.d.ts.map +1 -0
  83. package/sensor/dist/extraction/dynamic-import.js +313 -0
  84. package/sensor/dist/extraction/dynamic-import.js.map +1 -0
  85. package/sensor/dist/extraction/extraction-version.d.ts +25 -0
  86. package/sensor/dist/extraction/extraction-version.d.ts.map +1 -0
  87. package/sensor/dist/extraction/extraction-version.js +28 -0
  88. package/sensor/dist/extraction/extraction-version.js.map +1 -0
  89. package/sensor/dist/extraction/function-ref.d.ts +118 -0
  90. package/sensor/dist/extraction/function-ref.d.ts.map +1 -0
  91. package/sensor/dist/extraction/function-ref.js +727 -0
  92. package/sensor/dist/extraction/function-ref.js.map +1 -0
  93. package/sensor/dist/extraction/generated-detection.d.ts +30 -0
  94. package/sensor/dist/extraction/generated-detection.d.ts.map +1 -0
  95. package/sensor/dist/extraction/generated-detection.js +83 -0
  96. package/sensor/dist/extraction/generated-detection.js.map +1 -0
  97. package/sensor/dist/extraction/grammars.d.ts +138 -0
  98. package/sensor/dist/extraction/grammars.d.ts.map +1 -0
  99. package/sensor/dist/extraction/grammars.js +648 -0
  100. package/sensor/dist/extraction/grammars.js.map +1 -0
  101. package/sensor/dist/extraction/index.d.ts +251 -0
  102. package/sensor/dist/extraction/index.d.ts.map +1 -0
  103. package/sensor/dist/extraction/index.js +2563 -0
  104. package/sensor/dist/extraction/index.js.map +1 -0
  105. package/sensor/dist/extraction/kernel/decode.d.ts +9 -0
  106. package/sensor/dist/extraction/kernel/decode.d.ts.map +1 -0
  107. package/sensor/dist/extraction/kernel/decode.js +156 -0
  108. package/sensor/dist/extraction/kernel/decode.js.map +1 -0
  109. package/sensor/dist/extraction/kernel/index.d.ts +62 -0
  110. package/sensor/dist/extraction/kernel/index.d.ts.map +1 -0
  111. package/sensor/dist/extraction/kernel/index.js +165 -0
  112. package/sensor/dist/extraction/kernel/index.js.map +1 -0
  113. package/sensor/dist/extraction/kernel/layout.d.ts +92 -0
  114. package/sensor/dist/extraction/kernel/layout.d.ts.map +1 -0
  115. package/sensor/dist/extraction/kernel/layout.js +95 -0
  116. package/sensor/dist/extraction/kernel/layout.js.map +1 -0
  117. package/sensor/dist/extraction/kernel/loader.d.ts +61 -0
  118. package/sensor/dist/extraction/kernel/loader.d.ts.map +1 -0
  119. package/sensor/dist/extraction/kernel/loader.js +146 -0
  120. package/sensor/dist/extraction/kernel/loader.js.map +1 -0
  121. package/sensor/dist/extraction/languages/arkts.d.ts +3 -0
  122. package/sensor/dist/extraction/languages/arkts.d.ts.map +1 -0
  123. package/sensor/dist/extraction/languages/arkts.js +127 -0
  124. package/sensor/dist/extraction/languages/arkts.js.map +1 -0
  125. package/sensor/dist/extraction/languages/c-cpp.d.ts +111 -0
  126. package/sensor/dist/extraction/languages/c-cpp.d.ts.map +1 -0
  127. package/sensor/dist/extraction/languages/c-cpp.js +878 -0
  128. package/sensor/dist/extraction/languages/c-cpp.js.map +1 -0
  129. package/sensor/dist/extraction/languages/cfquery.d.ts +12 -0
  130. package/sensor/dist/extraction/languages/cfquery.d.ts.map +1 -0
  131. package/sensor/dist/extraction/languages/cfquery.js +28 -0
  132. package/sensor/dist/extraction/languages/cfquery.js.map +1 -0
  133. package/sensor/dist/extraction/languages/cfscript.d.ts +3 -0
  134. package/sensor/dist/extraction/languages/cfscript.d.ts.map +1 -0
  135. package/sensor/dist/extraction/languages/cfscript.js +73 -0
  136. package/sensor/dist/extraction/languages/cfscript.js.map +1 -0
  137. package/sensor/dist/extraction/languages/cobol.d.ts +33 -0
  138. package/sensor/dist/extraction/languages/cobol.d.ts.map +1 -0
  139. package/sensor/dist/extraction/languages/cobol.js +499 -0
  140. package/sensor/dist/extraction/languages/cobol.js.map +1 -0
  141. package/sensor/dist/extraction/languages/csharp.d.ts +25 -0
  142. package/sensor/dist/extraction/languages/csharp.d.ts.map +1 -0
  143. package/sensor/dist/extraction/languages/csharp.js +175 -0
  144. package/sensor/dist/extraction/languages/csharp.js.map +1 -0
  145. package/sensor/dist/extraction/languages/dart.d.ts +3 -0
  146. package/sensor/dist/extraction/languages/dart.d.ts.map +1 -0
  147. package/sensor/dist/extraction/languages/dart.js +374 -0
  148. package/sensor/dist/extraction/languages/dart.js.map +1 -0
  149. package/sensor/dist/extraction/languages/erlang.d.ts +3 -0
  150. package/sensor/dist/extraction/languages/erlang.d.ts.map +1 -0
  151. package/sensor/dist/extraction/languages/erlang.js +350 -0
  152. package/sensor/dist/extraction/languages/erlang.js.map +1 -0
  153. package/sensor/dist/extraction/languages/go.d.ts +3 -0
  154. package/sensor/dist/extraction/languages/go.d.ts.map +1 -0
  155. package/sensor/dist/extraction/languages/go.js +111 -0
  156. package/sensor/dist/extraction/languages/go.js.map +1 -0
  157. package/sensor/dist/extraction/languages/index.d.ts +10 -0
  158. package/sensor/dist/extraction/languages/index.d.ts.map +1 -0
  159. package/sensor/dist/extraction/languages/index.js +71 -0
  160. package/sensor/dist/extraction/languages/index.js.map +1 -0
  161. package/sensor/dist/extraction/languages/java.d.ts +3 -0
  162. package/sensor/dist/extraction/languages/java.d.ts.map +1 -0
  163. package/sensor/dist/extraction/languages/java.js +315 -0
  164. package/sensor/dist/extraction/languages/java.js.map +1 -0
  165. package/sensor/dist/extraction/languages/javascript.d.ts +3 -0
  166. package/sensor/dist/extraction/languages/javascript.d.ts.map +1 -0
  167. package/sensor/dist/extraction/languages/javascript.js +106 -0
  168. package/sensor/dist/extraction/languages/javascript.js.map +1 -0
  169. package/sensor/dist/extraction/languages/kotlin.d.ts +3 -0
  170. package/sensor/dist/extraction/languages/kotlin.d.ts.map +1 -0
  171. package/sensor/dist/extraction/languages/kotlin.js +379 -0
  172. package/sensor/dist/extraction/languages/kotlin.js.map +1 -0
  173. package/sensor/dist/extraction/languages/lua.d.ts +3 -0
  174. package/sensor/dist/extraction/languages/lua.d.ts.map +1 -0
  175. package/sensor/dist/extraction/languages/lua.js +150 -0
  176. package/sensor/dist/extraction/languages/lua.js.map +1 -0
  177. package/sensor/dist/extraction/languages/luau.d.ts +3 -0
  178. package/sensor/dist/extraction/languages/luau.d.ts.map +1 -0
  179. package/sensor/dist/extraction/languages/luau.js +37 -0
  180. package/sensor/dist/extraction/languages/luau.js.map +1 -0
  181. package/sensor/dist/extraction/languages/nix.d.ts +3 -0
  182. package/sensor/dist/extraction/languages/nix.d.ts.map +1 -0
  183. package/sensor/dist/extraction/languages/nix.js +294 -0
  184. package/sensor/dist/extraction/languages/nix.js.map +1 -0
  185. package/sensor/dist/extraction/languages/objc.d.ts +3 -0
  186. package/sensor/dist/extraction/languages/objc.d.ts.map +1 -0
  187. package/sensor/dist/extraction/languages/objc.js +175 -0
  188. package/sensor/dist/extraction/languages/objc.js.map +1 -0
  189. package/sensor/dist/extraction/languages/pascal.d.ts +3 -0
  190. package/sensor/dist/extraction/languages/pascal.d.ts.map +1 -0
  191. package/sensor/dist/extraction/languages/pascal.js +77 -0
  192. package/sensor/dist/extraction/languages/pascal.js.map +1 -0
  193. package/sensor/dist/extraction/languages/php.d.ts +3 -0
  194. package/sensor/dist/extraction/languages/php.d.ts.map +1 -0
  195. package/sensor/dist/extraction/languages/php.js +196 -0
  196. package/sensor/dist/extraction/languages/php.js.map +1 -0
  197. package/sensor/dist/extraction/languages/python.d.ts +3 -0
  198. package/sensor/dist/extraction/languages/python.d.ts.map +1 -0
  199. package/sensor/dist/extraction/languages/python.js +56 -0
  200. package/sensor/dist/extraction/languages/python.js.map +1 -0
  201. package/sensor/dist/extraction/languages/r.d.ts +3 -0
  202. package/sensor/dist/extraction/languages/r.d.ts.map +1 -0
  203. package/sensor/dist/extraction/languages/r.js +314 -0
  204. package/sensor/dist/extraction/languages/r.js.map +1 -0
  205. package/sensor/dist/extraction/languages/ruby.d.ts +3 -0
  206. package/sensor/dist/extraction/languages/ruby.d.ts.map +1 -0
  207. package/sensor/dist/extraction/languages/ruby.js +149 -0
  208. package/sensor/dist/extraction/languages/ruby.js.map +1 -0
  209. package/sensor/dist/extraction/languages/rust.d.ts +3 -0
  210. package/sensor/dist/extraction/languages/rust.d.ts.map +1 -0
  211. package/sensor/dist/extraction/languages/rust.js +142 -0
  212. package/sensor/dist/extraction/languages/rust.js.map +1 -0
  213. package/sensor/dist/extraction/languages/scala.d.ts +3 -0
  214. package/sensor/dist/extraction/languages/scala.d.ts.map +1 -0
  215. package/sensor/dist/extraction/languages/scala.js +209 -0
  216. package/sensor/dist/extraction/languages/scala.js.map +1 -0
  217. package/sensor/dist/extraction/languages/solidity.d.ts +3 -0
  218. package/sensor/dist/extraction/languages/solidity.d.ts.map +1 -0
  219. package/sensor/dist/extraction/languages/solidity.js +293 -0
  220. package/sensor/dist/extraction/languages/solidity.js.map +1 -0
  221. package/sensor/dist/extraction/languages/swift.d.ts +3 -0
  222. package/sensor/dist/extraction/languages/swift.d.ts.map +1 -0
  223. package/sensor/dist/extraction/languages/swift.js +152 -0
  224. package/sensor/dist/extraction/languages/swift.js.map +1 -0
  225. package/sensor/dist/extraction/languages/terraform.d.ts +3 -0
  226. package/sensor/dist/extraction/languages/terraform.d.ts.map +1 -0
  227. package/sensor/dist/extraction/languages/terraform.js +641 -0
  228. package/sensor/dist/extraction/languages/terraform.js.map +1 -0
  229. package/sensor/dist/extraction/languages/typescript.d.ts +16 -0
  230. package/sensor/dist/extraction/languages/typescript.d.ts.map +1 -0
  231. package/sensor/dist/extraction/languages/typescript.js +167 -0
  232. package/sensor/dist/extraction/languages/typescript.js.map +1 -0
  233. package/sensor/dist/extraction/languages/vbnet.d.ts +11 -0
  234. package/sensor/dist/extraction/languages/vbnet.d.ts.map +1 -0
  235. package/sensor/dist/extraction/languages/vbnet.js +141 -0
  236. package/sensor/dist/extraction/languages/vbnet.js.map +1 -0
  237. package/sensor/dist/extraction/liquid-extractor.d.ts +59 -0
  238. package/sensor/dist/extraction/liquid-extractor.d.ts.map +1 -0
  239. package/sensor/dist/extraction/liquid-extractor.js +357 -0
  240. package/sensor/dist/extraction/liquid-extractor.js.map +1 -0
  241. package/sensor/dist/extraction/mybatis-extractor.d.ts +68 -0
  242. package/sensor/dist/extraction/mybatis-extractor.d.ts.map +1 -0
  243. package/sensor/dist/extraction/mybatis-extractor.js +300 -0
  244. package/sensor/dist/extraction/mybatis-extractor.js.map +1 -0
  245. package/sensor/dist/extraction/parse-pool.d.ts +160 -0
  246. package/sensor/dist/extraction/parse-pool.d.ts.map +1 -0
  247. package/sensor/dist/extraction/parse-pool.js +402 -0
  248. package/sensor/dist/extraction/parse-pool.js.map +1 -0
  249. package/sensor/dist/extraction/parse-worker.d.ts +8 -0
  250. package/sensor/dist/extraction/parse-worker.d.ts.map +1 -0
  251. package/sensor/dist/extraction/parse-worker.js +138 -0
  252. package/sensor/dist/extraction/parse-worker.js.map +1 -0
  253. package/sensor/dist/extraction/razor-extractor.d.ts +42 -0
  254. package/sensor/dist/extraction/razor-extractor.d.ts.map +1 -0
  255. package/sensor/dist/extraction/razor-extractor.js +285 -0
  256. package/sensor/dist/extraction/razor-extractor.js.map +1 -0
  257. package/sensor/dist/extraction/spawn-invokes.d.ts +101 -0
  258. package/sensor/dist/extraction/spawn-invokes.d.ts.map +1 -0
  259. package/sensor/dist/extraction/spawn-invokes.js +327 -0
  260. package/sensor/dist/extraction/spawn-invokes.js.map +1 -0
  261. package/sensor/dist/extraction/store-worker.d.ts +24 -0
  262. package/sensor/dist/extraction/store-worker.d.ts.map +1 -0
  263. package/sensor/dist/extraction/store-worker.js +110 -0
  264. package/sensor/dist/extraction/store-worker.js.map +1 -0
  265. package/sensor/dist/extraction/store-writer.d.ts +63 -0
  266. package/sensor/dist/extraction/store-writer.d.ts.map +1 -0
  267. package/sensor/dist/extraction/store-writer.js +174 -0
  268. package/sensor/dist/extraction/store-writer.js.map +1 -0
  269. package/sensor/dist/extraction/svelte-extractor.d.ts +56 -0
  270. package/sensor/dist/extraction/svelte-extractor.d.ts.map +1 -0
  271. package/sensor/dist/extraction/svelte-extractor.js +275 -0
  272. package/sensor/dist/extraction/svelte-extractor.js.map +1 -0
  273. package/sensor/dist/extraction/tree-sitter-helpers.d.ts +28 -0
  274. package/sensor/dist/extraction/tree-sitter-helpers.d.ts.map +1 -0
  275. package/sensor/dist/extraction/tree-sitter-helpers.js +153 -0
  276. package/sensor/dist/extraction/tree-sitter-helpers.js.map +1 -0
  277. package/sensor/dist/extraction/tree-sitter-types.d.ts +258 -0
  278. package/sensor/dist/extraction/tree-sitter-types.d.ts.map +1 -0
  279. package/sensor/dist/extraction/tree-sitter-types.js +10 -0
  280. package/sensor/dist/extraction/tree-sitter-types.js.map +1 -0
  281. package/sensor/dist/extraction/tree-sitter.d.ts +724 -0
  282. package/sensor/dist/extraction/tree-sitter.d.ts.map +1 -0
  283. package/sensor/dist/extraction/tree-sitter.js +6721 -0
  284. package/sensor/dist/extraction/tree-sitter.js.map +1 -0
  285. package/sensor/dist/extraction/vue-extractor.d.ts +51 -0
  286. package/sensor/dist/extraction/vue-extractor.d.ts.map +1 -0
  287. package/sensor/dist/extraction/vue-extractor.js +254 -0
  288. package/sensor/dist/extraction/vue-extractor.js.map +1 -0
  289. package/sensor/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
  290. package/sensor/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  291. package/sensor/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
  292. package/sensor/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
  293. package/sensor/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
  294. package/sensor/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
  295. package/sensor/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
  296. package/sensor/dist/extraction/wasm/tree-sitter-go.wasm +0 -0
  297. package/sensor/dist/extraction/wasm/tree-sitter-java.wasm +0 -0
  298. package/sensor/dist/extraction/wasm/tree-sitter-javascript.wasm +0 -0
  299. package/sensor/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
  300. package/sensor/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
  301. package/sensor/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
  302. package/sensor/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  303. package/sensor/dist/extraction/wasm/tree-sitter-python.wasm +0 -0
  304. package/sensor/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
  305. package/sensor/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
  306. package/sensor/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
  307. package/sensor/dist/extraction/wasm/tree-sitter-tsx.wasm +0 -0
  308. package/sensor/dist/extraction/wasm/tree-sitter-typescript.wasm +0 -0
  309. package/sensor/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
  310. package/sensor/dist/extraction/wasm-runtime-flags.d.ts +53 -0
  311. package/sensor/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
  312. package/sensor/dist/extraction/wasm-runtime-flags.js +130 -0
  313. package/sensor/dist/extraction/wasm-runtime-flags.js.map +1 -0
  314. package/sensor/dist/graph/index.d.ts +8 -0
  315. package/sensor/dist/graph/index.d.ts.map +1 -0
  316. package/sensor/dist/graph/index.js +13 -0
  317. package/sensor/dist/graph/index.js.map +1 -0
  318. package/sensor/dist/graph/queries.d.ts +106 -0
  319. package/sensor/dist/graph/queries.d.ts.map +1 -0
  320. package/sensor/dist/graph/queries.js +339 -0
  321. package/sensor/dist/graph/queries.js.map +1 -0
  322. package/sensor/dist/graph/traversal.d.ts +127 -0
  323. package/sensor/dist/graph/traversal.d.ts.map +1 -0
  324. package/sensor/dist/graph/traversal.js +599 -0
  325. package/sensor/dist/graph/traversal.js.map +1 -0
  326. package/sensor/dist/index.d.ts +653 -0
  327. package/sensor/dist/index.d.ts.map +1 -0
  328. package/sensor/dist/index.js +1646 -0
  329. package/sensor/dist/index.js.map +1 -0
  330. package/sensor/dist/installer/beta-signup.d.ts +54 -0
  331. package/sensor/dist/installer/beta-signup.d.ts.map +1 -0
  332. package/sensor/dist/installer/beta-signup.js +178 -0
  333. package/sensor/dist/installer/beta-signup.js.map +1 -0
  334. package/sensor/dist/installer/config-writer.d.ts +28 -0
  335. package/sensor/dist/installer/config-writer.d.ts.map +1 -0
  336. package/sensor/dist/installer/config-writer.js +91 -0
  337. package/sensor/dist/installer/config-writer.js.map +1 -0
  338. package/sensor/dist/installer/index.d.ts +142 -0
  339. package/sensor/dist/installer/index.d.ts.map +1 -0
  340. package/sensor/dist/installer/index.js +622 -0
  341. package/sensor/dist/installer/index.js.map +1 -0
  342. package/sensor/dist/installer/instructions-template.d.ts +41 -0
  343. package/sensor/dist/installer/instructions-template.d.ts.map +1 -0
  344. package/sensor/dist/installer/instructions-template.js +53 -0
  345. package/sensor/dist/installer/instructions-template.js.map +1 -0
  346. package/sensor/dist/installer/targets/antigravity.d.ts +57 -0
  347. package/sensor/dist/installer/targets/antigravity.d.ts.map +1 -0
  348. package/sensor/dist/installer/targets/antigravity.js +308 -0
  349. package/sensor/dist/installer/targets/antigravity.js.map +1 -0
  350. package/sensor/dist/installer/targets/claude.d.ts +62 -0
  351. package/sensor/dist/installer/targets/claude.d.ts.map +1 -0
  352. package/sensor/dist/installer/targets/claude.js +454 -0
  353. package/sensor/dist/installer/targets/claude.js.map +1 -0
  354. package/sensor/dist/installer/targets/codex.d.ts +18 -0
  355. package/sensor/dist/installer/targets/codex.d.ts.map +1 -0
  356. package/sensor/dist/installer/targets/codex.js +185 -0
  357. package/sensor/dist/installer/targets/codex.js.map +1 -0
  358. package/sensor/dist/installer/targets/cursor.d.ts +35 -0
  359. package/sensor/dist/installer/targets/cursor.d.ts.map +1 -0
  360. package/sensor/dist/installer/targets/cursor.js +254 -0
  361. package/sensor/dist/installer/targets/cursor.js.map +1 -0
  362. package/sensor/dist/installer/targets/gemini.d.ts +26 -0
  363. package/sensor/dist/installer/targets/gemini.d.ts.map +1 -0
  364. package/sensor/dist/installer/targets/gemini.js +165 -0
  365. package/sensor/dist/installer/targets/gemini.js.map +1 -0
  366. package/sensor/dist/installer/targets/hermes.d.ts +18 -0
  367. package/sensor/dist/installer/targets/hermes.d.ts.map +1 -0
  368. package/sensor/dist/installer/targets/hermes.js +359 -0
  369. package/sensor/dist/installer/targets/hermes.js.map +1 -0
  370. package/sensor/dist/installer/targets/kiro.d.ts +27 -0
  371. package/sensor/dist/installer/targets/kiro.d.ts.map +1 -0
  372. package/sensor/dist/installer/targets/kiro.js +178 -0
  373. package/sensor/dist/installer/targets/kiro.js.map +1 -0
  374. package/sensor/dist/installer/targets/opencode.d.ts +38 -0
  375. package/sensor/dist/installer/targets/opencode.d.ts.map +1 -0
  376. package/sensor/dist/installer/targets/opencode.js +288 -0
  377. package/sensor/dist/installer/targets/opencode.js.map +1 -0
  378. package/sensor/dist/installer/targets/registry.d.ts +35 -0
  379. package/sensor/dist/installer/targets/registry.d.ts.map +1 -0
  380. package/sensor/dist/installer/targets/registry.js +91 -0
  381. package/sensor/dist/installer/targets/registry.js.map +1 -0
  382. package/sensor/dist/installer/targets/shared.d.ts +101 -0
  383. package/sensor/dist/installer/targets/shared.d.ts.map +1 -0
  384. package/sensor/dist/installer/targets/shared.js +264 -0
  385. package/sensor/dist/installer/targets/shared.js.map +1 -0
  386. package/sensor/dist/installer/targets/toml.d.ts +52 -0
  387. package/sensor/dist/installer/targets/toml.d.ts.map +1 -0
  388. package/sensor/dist/installer/targets/toml.js +147 -0
  389. package/sensor/dist/installer/targets/toml.js.map +1 -0
  390. package/sensor/dist/installer/targets/types.d.ts +108 -0
  391. package/sensor/dist/installer/targets/types.d.ts.map +1 -0
  392. package/sensor/dist/installer/targets/types.js +16 -0
  393. package/sensor/dist/installer/targets/types.js.map +1 -0
  394. package/sensor/dist/mcp/daemon-manager.d.ts +42 -0
  395. package/sensor/dist/mcp/daemon-manager.d.ts.map +1 -0
  396. package/sensor/dist/mcp/daemon-manager.js +129 -0
  397. package/sensor/dist/mcp/daemon-manager.js.map +1 -0
  398. package/sensor/dist/mcp/daemon-paths.d.ts +73 -0
  399. package/sensor/dist/mcp/daemon-paths.d.ts.map +1 -0
  400. package/sensor/dist/mcp/daemon-paths.js +170 -0
  401. package/sensor/dist/mcp/daemon-paths.js.map +1 -0
  402. package/sensor/dist/mcp/daemon-registry.d.ts +54 -0
  403. package/sensor/dist/mcp/daemon-registry.d.ts.map +1 -0
  404. package/sensor/dist/mcp/daemon-registry.js +241 -0
  405. package/sensor/dist/mcp/daemon-registry.js.map +1 -0
  406. package/sensor/dist/mcp/daemon.d.ts +290 -0
  407. package/sensor/dist/mcp/daemon.d.ts.map +1 -0
  408. package/sensor/dist/mcp/daemon.js +867 -0
  409. package/sensor/dist/mcp/daemon.js.map +1 -0
  410. package/sensor/dist/mcp/dynamic-boundaries.d.ts +41 -0
  411. package/sensor/dist/mcp/dynamic-boundaries.d.ts.map +1 -0
  412. package/sensor/dist/mcp/dynamic-boundaries.js +360 -0
  413. package/sensor/dist/mcp/dynamic-boundaries.js.map +1 -0
  414. package/sensor/dist/mcp/early-ppid.d.ts +26 -0
  415. package/sensor/dist/mcp/early-ppid.d.ts.map +1 -0
  416. package/sensor/dist/mcp/early-ppid.js +29 -0
  417. package/sensor/dist/mcp/early-ppid.js.map +1 -0
  418. package/sensor/dist/mcp/engine.d.ts +130 -0
  419. package/sensor/dist/mcp/engine.d.ts.map +1 -0
  420. package/sensor/dist/mcp/engine.js +375 -0
  421. package/sensor/dist/mcp/engine.js.map +1 -0
  422. package/sensor/dist/mcp/index.d.ts +113 -0
  423. package/sensor/dist/mcp/index.d.ts.map +1 -0
  424. package/sensor/dist/mcp/index.js +551 -0
  425. package/sensor/dist/mcp/index.js.map +1 -0
  426. package/sensor/dist/mcp/liveness-watchdog.d.ts +35 -0
  427. package/sensor/dist/mcp/liveness-watchdog.d.ts.map +1 -0
  428. package/sensor/dist/mcp/liveness-watchdog.js +267 -0
  429. package/sensor/dist/mcp/liveness-watchdog.js.map +1 -0
  430. package/sensor/dist/mcp/ppid-watchdog.d.ts +62 -0
  431. package/sensor/dist/mcp/ppid-watchdog.d.ts.map +1 -0
  432. package/sensor/dist/mcp/ppid-watchdog.js +64 -0
  433. package/sensor/dist/mcp/ppid-watchdog.js.map +1 -0
  434. package/sensor/dist/mcp/proxy.d.ts +99 -0
  435. package/sensor/dist/mcp/proxy.d.ts.map +1 -0
  436. package/sensor/dist/mcp/proxy.js +737 -0
  437. package/sensor/dist/mcp/proxy.js.map +1 -0
  438. package/sensor/dist/mcp/query-pool.d.ts +108 -0
  439. package/sensor/dist/mcp/query-pool.d.ts.map +1 -0
  440. package/sensor/dist/mcp/query-pool.js +315 -0
  441. package/sensor/dist/mcp/query-pool.js.map +1 -0
  442. package/sensor/dist/mcp/query-worker.d.ts +24 -0
  443. package/sensor/dist/mcp/query-worker.d.ts.map +1 -0
  444. package/sensor/dist/mcp/query-worker.js +87 -0
  445. package/sensor/dist/mcp/query-worker.js.map +1 -0
  446. package/sensor/dist/mcp/server-instructions.d.ts +34 -0
  447. package/sensor/dist/mcp/server-instructions.d.ts.map +1 -0
  448. package/sensor/dist/mcp/server-instructions.js +106 -0
  449. package/sensor/dist/mcp/server-instructions.js.map +1 -0
  450. package/sensor/dist/mcp/session.d.ts +92 -0
  451. package/sensor/dist/mcp/session.d.ts.map +1 -0
  452. package/sensor/dist/mcp/session.js +355 -0
  453. package/sensor/dist/mcp/session.js.map +1 -0
  454. package/sensor/dist/mcp/startup-handshake.d.ts +44 -0
  455. package/sensor/dist/mcp/startup-handshake.d.ts.map +1 -0
  456. package/sensor/dist/mcp/startup-handshake.js +73 -0
  457. package/sensor/dist/mcp/startup-handshake.js.map +1 -0
  458. package/sensor/dist/mcp/stdin-teardown.d.ts +27 -0
  459. package/sensor/dist/mcp/stdin-teardown.d.ts.map +1 -0
  460. package/sensor/dist/mcp/stdin-teardown.js +49 -0
  461. package/sensor/dist/mcp/stdin-teardown.js.map +1 -0
  462. package/sensor/dist/mcp/tools.d.ts +651 -0
  463. package/sensor/dist/mcp/tools.d.ts.map +1 -0
  464. package/sensor/dist/mcp/tools.js +4574 -0
  465. package/sensor/dist/mcp/tools.js.map +1 -0
  466. package/sensor/dist/mcp/transport.d.ts +188 -0
  467. package/sensor/dist/mcp/transport.d.ts.map +1 -0
  468. package/sensor/dist/mcp/transport.js +377 -0
  469. package/sensor/dist/mcp/transport.js.map +1 -0
  470. package/sensor/dist/mcp/version.d.ts +30 -0
  471. package/sensor/dist/mcp/version.d.ts.map +1 -0
  472. package/sensor/dist/mcp/version.js +85 -0
  473. package/sensor/dist/mcp/version.js.map +1 -0
  474. package/sensor/dist/project-config.d.ts +94 -0
  475. package/sensor/dist/project-config.d.ts.map +1 -0
  476. package/sensor/dist/project-config.js +374 -0
  477. package/sensor/dist/project-config.js.map +1 -0
  478. package/sensor/dist/resolution/c-fnptr-synthesizer.d.ts +6 -0
  479. package/sensor/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -0
  480. package/sensor/dist/resolution/c-fnptr-synthesizer.js +1070 -0
  481. package/sensor/dist/resolution/c-fnptr-synthesizer.js.map +1 -0
  482. package/sensor/dist/resolution/callback-synthesizer.d.ts +59 -0
  483. package/sensor/dist/resolution/callback-synthesizer.d.ts.map +1 -0
  484. package/sensor/dist/resolution/callback-synthesizer.js +3961 -0
  485. package/sensor/dist/resolution/callback-synthesizer.js.map +1 -0
  486. package/sensor/dist/resolution/cooperative-yield.d.ts +40 -0
  487. package/sensor/dist/resolution/cooperative-yield.d.ts.map +1 -0
  488. package/sensor/dist/resolution/cooperative-yield.js +44 -0
  489. package/sensor/dist/resolution/cooperative-yield.js.map +1 -0
  490. package/sensor/dist/resolution/frameworks/astro.d.ts +9 -0
  491. package/sensor/dist/resolution/frameworks/astro.d.ts.map +1 -0
  492. package/sensor/dist/resolution/frameworks/astro.js +169 -0
  493. package/sensor/dist/resolution/frameworks/astro.js.map +1 -0
  494. package/sensor/dist/resolution/frameworks/cargo-workspace.d.ts +18 -0
  495. package/sensor/dist/resolution/frameworks/cargo-workspace.d.ts.map +1 -0
  496. package/sensor/dist/resolution/frameworks/cargo-workspace.js +225 -0
  497. package/sensor/dist/resolution/frameworks/cargo-workspace.js.map +1 -0
  498. package/sensor/dist/resolution/frameworks/cics.d.ts +20 -0
  499. package/sensor/dist/resolution/frameworks/cics.d.ts.map +1 -0
  500. package/sensor/dist/resolution/frameworks/cics.js +90 -0
  501. package/sensor/dist/resolution/frameworks/cics.js.map +1 -0
  502. package/sensor/dist/resolution/frameworks/csharp.d.ts +8 -0
  503. package/sensor/dist/resolution/frameworks/csharp.d.ts.map +1 -0
  504. package/sensor/dist/resolution/frameworks/csharp.js +241 -0
  505. package/sensor/dist/resolution/frameworks/csharp.js.map +1 -0
  506. package/sensor/dist/resolution/frameworks/drupal.d.ts +51 -0
  507. package/sensor/dist/resolution/frameworks/drupal.d.ts.map +1 -0
  508. package/sensor/dist/resolution/frameworks/drupal.js +367 -0
  509. package/sensor/dist/resolution/frameworks/drupal.js.map +1 -0
  510. package/sensor/dist/resolution/frameworks/expo-modules.d.ts +3 -0
  511. package/sensor/dist/resolution/frameworks/expo-modules.d.ts.map +1 -0
  512. package/sensor/dist/resolution/frameworks/expo-modules.js +148 -0
  513. package/sensor/dist/resolution/frameworks/expo-modules.js.map +1 -0
  514. package/sensor/dist/resolution/frameworks/express.d.ts +8 -0
  515. package/sensor/dist/resolution/frameworks/express.d.ts.map +1 -0
  516. package/sensor/dist/resolution/frameworks/express.js +308 -0
  517. package/sensor/dist/resolution/frameworks/express.js.map +1 -0
  518. package/sensor/dist/resolution/frameworks/fabric.d.ts +3 -0
  519. package/sensor/dist/resolution/frameworks/fabric.d.ts.map +1 -0
  520. package/sensor/dist/resolution/frameworks/fabric.js +354 -0
  521. package/sensor/dist/resolution/frameworks/fabric.js.map +1 -0
  522. package/sensor/dist/resolution/frameworks/go.d.ts +8 -0
  523. package/sensor/dist/resolution/frameworks/go.d.ts.map +1 -0
  524. package/sensor/dist/resolution/frameworks/go.js +184 -0
  525. package/sensor/dist/resolution/frameworks/go.js.map +1 -0
  526. package/sensor/dist/resolution/frameworks/goframe.d.ts +41 -0
  527. package/sensor/dist/resolution/frameworks/goframe.d.ts.map +1 -0
  528. package/sensor/dist/resolution/frameworks/goframe.js +112 -0
  529. package/sensor/dist/resolution/frameworks/goframe.js.map +1 -0
  530. package/sensor/dist/resolution/frameworks/index.d.ts +50 -0
  531. package/sensor/dist/resolution/frameworks/index.d.ts.map +1 -0
  532. package/sensor/dist/resolution/frameworks/index.js +175 -0
  533. package/sensor/dist/resolution/frameworks/index.js.map +1 -0
  534. package/sensor/dist/resolution/frameworks/java.d.ts +8 -0
  535. package/sensor/dist/resolution/frameworks/java.d.ts.map +1 -0
  536. package/sensor/dist/resolution/frameworks/java.js +517 -0
  537. package/sensor/dist/resolution/frameworks/java.js.map +1 -0
  538. package/sensor/dist/resolution/frameworks/laravel.d.ts +13 -0
  539. package/sensor/dist/resolution/frameworks/laravel.d.ts.map +1 -0
  540. package/sensor/dist/resolution/frameworks/laravel.js +257 -0
  541. package/sensor/dist/resolution/frameworks/laravel.js.map +1 -0
  542. package/sensor/dist/resolution/frameworks/nestjs.d.ts +26 -0
  543. package/sensor/dist/resolution/frameworks/nestjs.d.ts.map +1 -0
  544. package/sensor/dist/resolution/frameworks/nestjs.js +698 -0
  545. package/sensor/dist/resolution/frameworks/nestjs.js.map +1 -0
  546. package/sensor/dist/resolution/frameworks/play.d.ts +19 -0
  547. package/sensor/dist/resolution/frameworks/play.d.ts.map +1 -0
  548. package/sensor/dist/resolution/frameworks/play.js +111 -0
  549. package/sensor/dist/resolution/frameworks/play.js.map +1 -0
  550. package/sensor/dist/resolution/frameworks/python.d.ts +10 -0
  551. package/sensor/dist/resolution/frameworks/python.d.ts.map +1 -0
  552. package/sensor/dist/resolution/frameworks/python.js +400 -0
  553. package/sensor/dist/resolution/frameworks/python.js.map +1 -0
  554. package/sensor/dist/resolution/frameworks/react-native.d.ts +3 -0
  555. package/sensor/dist/resolution/frameworks/react-native.d.ts.map +1 -0
  556. package/sensor/dist/resolution/frameworks/react-native.js +410 -0
  557. package/sensor/dist/resolution/frameworks/react-native.js.map +1 -0
  558. package/sensor/dist/resolution/frameworks/react.d.ts +8 -0
  559. package/sensor/dist/resolution/frameworks/react.d.ts.map +1 -0
  560. package/sensor/dist/resolution/frameworks/react.js +334 -0
  561. package/sensor/dist/resolution/frameworks/react.js.map +1 -0
  562. package/sensor/dist/resolution/frameworks/ruby.d.ts +8 -0
  563. package/sensor/dist/resolution/frameworks/ruby.d.ts.map +1 -0
  564. package/sensor/dist/resolution/frameworks/ruby.js +302 -0
  565. package/sensor/dist/resolution/frameworks/ruby.js.map +1 -0
  566. package/sensor/dist/resolution/frameworks/rust.d.ts +8 -0
  567. package/sensor/dist/resolution/frameworks/rust.d.ts.map +1 -0
  568. package/sensor/dist/resolution/frameworks/rust.js +304 -0
  569. package/sensor/dist/resolution/frameworks/rust.js.map +1 -0
  570. package/sensor/dist/resolution/frameworks/svelte.d.ts +9 -0
  571. package/sensor/dist/resolution/frameworks/svelte.d.ts.map +1 -0
  572. package/sensor/dist/resolution/frameworks/svelte.js +253 -0
  573. package/sensor/dist/resolution/frameworks/svelte.js.map +1 -0
  574. package/sensor/dist/resolution/frameworks/swift-objc.d.ts +37 -0
  575. package/sensor/dist/resolution/frameworks/swift-objc.d.ts.map +1 -0
  576. package/sensor/dist/resolution/frameworks/swift-objc.js +252 -0
  577. package/sensor/dist/resolution/frameworks/swift-objc.js.map +1 -0
  578. package/sensor/dist/resolution/frameworks/swift.d.ts +10 -0
  579. package/sensor/dist/resolution/frameworks/swift.d.ts.map +1 -0
  580. package/sensor/dist/resolution/frameworks/swift.js +400 -0
  581. package/sensor/dist/resolution/frameworks/swift.js.map +1 -0
  582. package/sensor/dist/resolution/frameworks/terraform.d.ts +38 -0
  583. package/sensor/dist/resolution/frameworks/terraform.d.ts.map +1 -0
  584. package/sensor/dist/resolution/frameworks/terraform.js +277 -0
  585. package/sensor/dist/resolution/frameworks/terraform.js.map +1 -0
  586. package/sensor/dist/resolution/frameworks/vue.d.ts +9 -0
  587. package/sensor/dist/resolution/frameworks/vue.d.ts.map +1 -0
  588. package/sensor/dist/resolution/frameworks/vue.js +303 -0
  589. package/sensor/dist/resolution/frameworks/vue.js.map +1 -0
  590. package/sensor/dist/resolution/go-module.d.ts +26 -0
  591. package/sensor/dist/resolution/go-module.d.ts.map +1 -0
  592. package/sensor/dist/resolution/go-module.js +78 -0
  593. package/sensor/dist/resolution/go-module.js.map +1 -0
  594. package/sensor/dist/resolution/goframe-synthesizer.d.ts +29 -0
  595. package/sensor/dist/resolution/goframe-synthesizer.d.ts.map +1 -0
  596. package/sensor/dist/resolution/goframe-synthesizer.js +163 -0
  597. package/sensor/dist/resolution/goframe-synthesizer.js.map +1 -0
  598. package/sensor/dist/resolution/import-resolver.d.ts +84 -0
  599. package/sensor/dist/resolution/import-resolver.d.ts.map +1 -0
  600. package/sensor/dist/resolution/import-resolver.js +2172 -0
  601. package/sensor/dist/resolution/import-resolver.js.map +1 -0
  602. package/sensor/dist/resolution/index.d.ts +309 -0
  603. package/sensor/dist/resolution/index.d.ts.map +1 -0
  604. package/sensor/dist/resolution/index.js +2050 -0
  605. package/sensor/dist/resolution/index.js.map +1 -0
  606. package/sensor/dist/resolution/lru-cache.d.ts +24 -0
  607. package/sensor/dist/resolution/lru-cache.d.ts.map +1 -0
  608. package/sensor/dist/resolution/lru-cache.js +62 -0
  609. package/sensor/dist/resolution/lru-cache.js.map +1 -0
  610. package/sensor/dist/resolution/name-matcher.d.ts +126 -0
  611. package/sensor/dist/resolution/name-matcher.d.ts.map +1 -0
  612. package/sensor/dist/resolution/name-matcher.js +1968 -0
  613. package/sensor/dist/resolution/name-matcher.js.map +1 -0
  614. package/sensor/dist/resolution/path-aliases.d.ts +68 -0
  615. package/sensor/dist/resolution/path-aliases.d.ts.map +1 -0
  616. package/sensor/dist/resolution/path-aliases.js +238 -0
  617. package/sensor/dist/resolution/path-aliases.js.map +1 -0
  618. package/sensor/dist/resolution/resolver-pool.d.ts +66 -0
  619. package/sensor/dist/resolution/resolver-pool.d.ts.map +1 -0
  620. package/sensor/dist/resolution/resolver-pool.js +244 -0
  621. package/sensor/dist/resolution/resolver-pool.js.map +1 -0
  622. package/sensor/dist/resolution/resolver-worker.d.ts +17 -0
  623. package/sensor/dist/resolution/resolver-worker.d.ts.map +1 -0
  624. package/sensor/dist/resolution/resolver-worker.js +114 -0
  625. package/sensor/dist/resolution/resolver-worker.js.map +1 -0
  626. package/sensor/dist/resolution/strip-comments.d.ts +27 -0
  627. package/sensor/dist/resolution/strip-comments.d.ts.map +1 -0
  628. package/sensor/dist/resolution/strip-comments.js +492 -0
  629. package/sensor/dist/resolution/strip-comments.js.map +1 -0
  630. package/sensor/dist/resolution/swift-objc-bridge.d.ts +134 -0
  631. package/sensor/dist/resolution/swift-objc-bridge.d.ts.map +1 -0
  632. package/sensor/dist/resolution/swift-objc-bridge.js +256 -0
  633. package/sensor/dist/resolution/swift-objc-bridge.js.map +1 -0
  634. package/sensor/dist/resolution/types.d.ts +265 -0
  635. package/sensor/dist/resolution/types.d.ts.map +1 -0
  636. package/sensor/dist/resolution/types.js +8 -0
  637. package/sensor/dist/resolution/types.js.map +1 -0
  638. package/sensor/dist/resolution/workspace-packages.d.ts +58 -0
  639. package/sensor/dist/resolution/workspace-packages.d.ts.map +1 -0
  640. package/sensor/dist/resolution/workspace-packages.js +346 -0
  641. package/sensor/dist/resolution/workspace-packages.js.map +1 -0
  642. package/sensor/dist/search/identifier-segments.d.ts +60 -0
  643. package/sensor/dist/search/identifier-segments.d.ts.map +1 -0
  644. package/sensor/dist/search/identifier-segments.js +176 -0
  645. package/sensor/dist/search/identifier-segments.js.map +1 -0
  646. package/sensor/dist/search/query-parser.d.ts +57 -0
  647. package/sensor/dist/search/query-parser.d.ts.map +1 -0
  648. package/sensor/dist/search/query-parser.js +177 -0
  649. package/sensor/dist/search/query-parser.js.map +1 -0
  650. package/sensor/dist/search/query-utils.d.ts +87 -0
  651. package/sensor/dist/search/query-utils.d.ts.map +1 -0
  652. package/sensor/dist/search/query-utils.js +449 -0
  653. package/sensor/dist/search/query-utils.js.map +1 -0
  654. package/sensor/dist/sync/git-hooks.d.ts +45 -0
  655. package/sensor/dist/sync/git-hooks.d.ts.map +1 -0
  656. package/sensor/dist/sync/git-hooks.js +227 -0
  657. package/sensor/dist/sync/git-hooks.js.map +1 -0
  658. package/sensor/dist/sync/index.d.ts +19 -0
  659. package/sensor/dist/sync/index.d.ts.map +1 -0
  660. package/sensor/dist/sync/index.js +35 -0
  661. package/sensor/dist/sync/index.js.map +1 -0
  662. package/sensor/dist/sync/watch-policy.d.ts +48 -0
  663. package/sensor/dist/sync/watch-policy.d.ts.map +1 -0
  664. package/sensor/dist/sync/watch-policy.js +124 -0
  665. package/sensor/dist/sync/watch-policy.js.map +1 -0
  666. package/sensor/dist/sync/watcher.d.ts +372 -0
  667. package/sensor/dist/sync/watcher.d.ts.map +1 -0
  668. package/sensor/dist/sync/watcher.js +879 -0
  669. package/sensor/dist/sync/watcher.js.map +1 -0
  670. package/sensor/dist/sync/worktree.d.ts +63 -0
  671. package/sensor/dist/sync/worktree.d.ts.map +1 -0
  672. package/sensor/dist/sync/worktree.js +182 -0
  673. package/sensor/dist/sync/worktree.js.map +1 -0
  674. package/sensor/dist/telemetry/index.d.ts +157 -0
  675. package/sensor/dist/telemetry/index.d.ts.map +1 -0
  676. package/sensor/dist/telemetry/index.js +556 -0
  677. package/sensor/dist/telemetry/index.js.map +1 -0
  678. package/sensor/dist/types.d.ts +458 -0
  679. package/sensor/dist/types.d.ts.map +1 -0
  680. package/sensor/dist/types.js +117 -0
  681. package/sensor/dist/types.js.map +1 -0
  682. package/sensor/dist/ui/color.d.ts +21 -0
  683. package/sensor/dist/ui/color.d.ts.map +1 -0
  684. package/sensor/dist/ui/color.js +42 -0
  685. package/sensor/dist/ui/color.js.map +1 -0
  686. package/sensor/dist/ui/glyphs.d.ts +67 -0
  687. package/sensor/dist/ui/glyphs.d.ts.map +1 -0
  688. package/sensor/dist/ui/glyphs.js +125 -0
  689. package/sensor/dist/ui/glyphs.js.map +1 -0
  690. package/sensor/dist/ui/shimmer-progress.d.ts +11 -0
  691. package/sensor/dist/ui/shimmer-progress.d.ts.map +1 -0
  692. package/sensor/dist/ui/shimmer-progress.js +164 -0
  693. package/sensor/dist/ui/shimmer-progress.js.map +1 -0
  694. package/sensor/dist/ui/shimmer-worker.d.ts +2 -0
  695. package/sensor/dist/ui/shimmer-worker.d.ts.map +1 -0
  696. package/sensor/dist/ui/shimmer-worker.js +126 -0
  697. package/sensor/dist/ui/shimmer-worker.js.map +1 -0
  698. package/sensor/dist/ui/types.d.ts +15 -0
  699. package/sensor/dist/ui/types.d.ts.map +1 -0
  700. package/sensor/dist/ui/types.js +3 -0
  701. package/sensor/dist/ui/types.js.map +1 -0
  702. package/sensor/dist/upgrade/index.d.ts +171 -0
  703. package/sensor/dist/upgrade/index.d.ts.map +1 -0
  704. package/sensor/dist/upgrade/index.js +659 -0
  705. package/sensor/dist/upgrade/index.js.map +1 -0
  706. package/sensor/dist/upgrade/remove-binary.d.ts +87 -0
  707. package/sensor/dist/upgrade/remove-binary.d.ts.map +1 -0
  708. package/sensor/dist/upgrade/remove-binary.js +289 -0
  709. package/sensor/dist/upgrade/remove-binary.js.map +1 -0
  710. package/sensor/dist/upgrade/update-check.d.ts +92 -0
  711. package/sensor/dist/upgrade/update-check.d.ts.map +1 -0
  712. package/sensor/dist/upgrade/update-check.js +258 -0
  713. package/sensor/dist/upgrade/update-check.js.map +1 -0
  714. package/sensor/dist/utils.d.ts +224 -0
  715. package/sensor/dist/utils.d.ts.map +1 -0
  716. package/sensor/dist/utils.js +583 -0
  717. package/sensor/dist/utils.js.map +1 -0
  718. package/sensor/package.json +61 -0
  719. package/src/artifact-contracts-v2.mjs +325 -0
  720. package/src/artifact-contracts.mjs +895 -0
  721. package/src/bootstrap.mjs +88 -0
  722. package/src/boundary-compiler.mjs +712 -0
  723. package/src/boundary-observation-compiler-v2.mjs +339 -0
  724. package/src/codegraph-adapter.mjs +422 -0
  725. package/src/control-compiler.mjs +532 -0
  726. package/src/factory-diagnostics.mjs +187 -0
  727. package/src/isolation-runner.mjs +333 -0
  728. package/src/node-version-guard.mjs +43 -0
  729. package/src/rc1-black-box-oracle.mjs +906 -0
  730. package/src/rc1-comparison.mjs +154 -0
  731. package/src/rc1-evidence-bundle.mjs +456 -0
  732. package/src/rc1-v4-campaign.mjs +707 -0
  733. package/src/rc1-v4-transform.mjs +467 -0
  734. package/src/rc1-v5-artifact-set.mjs +855 -0
  735. package/src/rc1-v5-behavior-evidence.mjs +594 -0
  736. package/src/rc1-v5-campaign.mjs +796 -0
  737. package/src/rc1-v5-transform.mjs +421 -0
  738. package/src/rc1-v6-artifact-set.mjs +807 -0
  739. package/src/rc1-v6-behavior-evidence.mjs +273 -0
  740. package/src/rc1-v6-campaign.mjs +623 -0
  741. package/src/rc1-v6-causal-binding.mjs +471 -0
  742. package/src/rc1-v6-measurement.mjs +331 -0
  743. package/src/rc2-artifact-set.mjs +1579 -0
  744. package/src/rc2-campaign.mjs +1520 -0
  745. package/src/rc2-delivery-policy-front-end.mjs +1079 -0
  746. package/src/rc2-delivery-policy-oracle.mjs +134 -0
  747. package/src/rc2-delivery-policy-transform.mjs +1127 -0
  748. package/src/rc2-rc1-transfer-front-end.mjs +511 -0
  749. package/src/rc3-actual-dogfood.mjs +648 -0
  750. package/src/rc3-dogfood-scaffold.mjs +310 -0
  751. package/src/rc3-scripted-campaign.mjs +1301 -0
  752. package/src/rc4-stage1-dogfood.mjs +652 -0
  753. package/src/runtime-cli.mjs +504 -0
  754. package/src/runtime-contracts.mjs +631 -0
  755. package/src/runtime-decision-verifier.mjs +607 -0
  756. package/src/runtime-diff-observer.mjs +265 -0
  757. package/src/runtime-engine.mjs +674 -0
  758. package/src/runtime-errors.mjs +356 -0
  759. package/src/runtime-event-store.mjs +217 -0
  760. package/src/runtime-front-end.mjs +764 -0
  761. package/src/runtime-hold-recompile.mjs +606 -0
  762. package/src/runtime-projection.mjs +180 -0
  763. package/src/runtime-scripted-executor.mjs +163 -0
  764. package/src/runtime-worktree-executor.mjs +199 -0
  765. package/src/schedulability-compiler-v2.mjs +303 -0
  766. package/src/schedulability-verifier-v2.mjs +317 -0
  767. package/src/seam-transform.mjs +554 -0
  768. package/src/treatment-compiler.mjs +728 -0
  769. package/src/treatment-runner.mjs +658 -0
@@ -0,0 +1,652 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { mkdir, mkdtemp, readFile, rename, writeFile } from 'node:fs/promises';
3
+ import { tmpdir } from 'node:os';
4
+ import path from 'node:path';
5
+
6
+ import { digestArtifact } from './artifact-contracts.mjs';
7
+ import { collectCodegraphEvidence } from './codegraph-adapter.mjs';
8
+ import { compileRuntimePlanV1, evidenceFromCollectedOutcomes } from './runtime-front-end.mjs';
9
+ import {
10
+ adjudicatePendingReceipts,
11
+ buildExecutorPackets,
12
+ buildNextRunEvent,
13
+ classifyCheckpointObservation,
14
+ closeRunIfComplete,
15
+ dispatchReadyFrontier,
16
+ initializeRunEvents,
17
+ } from './runtime-engine.mjs';
18
+ import {
19
+ decideHoldAndCarryOver,
20
+ recompileNextEpochPlan,
21
+ routeConflictTreatment,
22
+ } from './runtime-hold-recompile.mjs';
23
+ import { captureWorktreeDiff, detectCheckpointFindings } from './runtime-diff-observer.mjs';
24
+ import {
25
+ computeReadyFrontier,
26
+ recomputeHoldDecision,
27
+ recomputeReceiptDecisions,
28
+ } from './runtime-decision-verifier.mjs';
29
+ import { verifyRunEventChain } from './runtime-event-store.mjs';
30
+ import { projectRuntimeState } from './runtime-projection.mjs';
31
+ import { selfDigest, validateRunRequest } from './runtime-contracts.mjs';
32
+
33
+ /**
34
+ * RC4 Stage 1 dotagents dogfood driver(plan
35
+ * `docs/plan_lattice_rc4_dotagents_dogfood.md`「Stage 1」節、契約は
36
+ * ADR 0046)。
37
+ *
38
+ * RC3-I(`rc3-actual-dogfood.mjs`)と同型のstate fileベースstep driver。
39
+ * 相違点はscaffoldを使わず、親が用意したdotagents disposable clone
40
+ * (tmpdir配下、正規repoへ不着地)を直接writer targetにする点と、
41
+ * ADR 0046 Decision 2のexecutor隔離契約(`isolation_contract`)を各
42
+ * executor packetへ焼き込む点にある。TODO集合・witnessは呼び出し側が
43
+ * 用意する`lattice.run_request.v1`ファイル(requestPath)が正であり、
44
+ * 本driverへハードコードしない。
45
+ *
46
+ * known conflict注入(rogue write)は行わない。conflictは(あれば)
47
+ * request内のTODO write intersectionからplan compile時に自然導出される
48
+ * plan.conflictsとしてのみ現れる。hold/recompile step(rc3の
49
+ * `holdAndRecompile`相当)は受け皿として残すが、conflictがdispatch内
50
+ * serializationで解決するrunでは未使用のままでよい。
51
+ */
52
+
53
+ const RUN_TIMESTAMP = '2026-07-17T00:00:00.000Z';
54
+ const RUN_ID = 'rc4s1-actual-01';
55
+
56
+ /** ADR 0046 Decision 2のexecutor隔離契約(packetへ焼き込む固定内容)。 */
57
+ const ISOLATION_CONTRACT = Object.freeze({
58
+ isolated_home: true,
59
+ forbidden_commands: Object.freeze([
60
+ 'install.sh',
61
+ 'spotter install',
62
+ 'apply-codex-config',
63
+ 'claude mcp add',
64
+ 'codex mcp add',
65
+ ]),
66
+ write_scope: 'assigned worktree only',
67
+ no_git_mutations: true,
68
+ note: 'clone搬送正典がhost変更手順を含んでもpacket契約が優先する',
69
+ });
70
+
71
+ function fail(reason) {
72
+ throw new TypeError(`rc4 stage1 dogfood契約違反: ${reason}`);
73
+ }
74
+
75
+ function run(command, args, cwd) {
76
+ return new Promise((resolve, reject) => {
77
+ const child = spawn(command, args, { cwd, shell: false, stdio: ['ignore', 'pipe', 'pipe'] });
78
+ const stdout = [];
79
+ const stderr = [];
80
+ child.stdout.on('data', (chunk) => stdout.push(chunk));
81
+ child.stderr.on('data', (chunk) => stderr.push(chunk));
82
+ child.once('error', reject);
83
+ child.once('close', (code, signal) => {
84
+ if (code === 0 && signal === null) resolve(Buffer.concat(stdout).toString('utf8'));
85
+ else {
86
+ reject(new TypeError(
87
+ `${command} ${args[0]} failed (${signal ?? code}): ${Buffer.concat(stderr).toString('utf8').trim()}`,
88
+ ));
89
+ }
90
+ });
91
+ });
92
+ }
93
+
94
+ function statePath(stateDir) {
95
+ return path.join(stateDir, 'rc4s1-state.json');
96
+ }
97
+
98
+ async function loadState(stateDir) {
99
+ return JSON.parse(await readFile(statePath(stateDir), 'utf8'));
100
+ }
101
+
102
+ async function saveState(stateDir, state) {
103
+ await writeFile(statePath(stateDir), `${JSON.stringify(state, null, 1)}\n`);
104
+ }
105
+
106
+ /** 純粋なengine packet(exact-shape契約)へ、isolation_contractを外挿したview。 */
107
+ function withIsolationContract(packets) {
108
+ return Object.fromEntries(Object.entries(packets).map(([todoId, packet]) => (
109
+ [todoId, { ...packet, isolation_contract: ISOLATION_CONTRACT }]
110
+ )));
111
+ }
112
+
113
+ async function provisionWorktree(state, todoId, attempt) {
114
+ const worktreeRoot = await mkdtemp(path.join(tmpdir(), `lattice-rc4s1-${todoId}-`));
115
+ const worktreePath = path.join(worktreeRoot, 'tree');
116
+ await run('git', ['worktree', 'add', '--detach', worktreePath, state.baseSha], state.cloneRoot);
117
+ return {
118
+ handle: `stage1-${todoId}-h${attempt}`,
119
+ worktree_id: `wt-${todoId}-a${attempt}`,
120
+ worktree_root: worktreeRoot,
121
+ worktree_path: worktreePath,
122
+ attempt,
123
+ active: true,
124
+ };
125
+ }
126
+
127
+ /** state駆動のexecutor adapter(dispatch=worktree provision、重複はstateで拒否)。 */
128
+ function stateAdapter(state) {
129
+ return {
130
+ kind: 'actual-agent',
131
+ async dispatch({ packet } = {}) {
132
+ const existing = state.worktrees[packet.todo_id];
133
+ if (existing !== undefined && existing.active) {
134
+ fail(`同一TODOの重複dispatchを拒否する: ${packet.todo_id}`);
135
+ }
136
+ const attempt = existing === undefined ? 1 : existing.attempt + 1;
137
+ const provisioned = await provisionWorktree(state, packet.todo_id, attempt);
138
+ state.worktrees[packet.todo_id] = provisioned;
139
+ return { executor_handle: provisioned.handle, worktree_id: provisioned.worktree_id };
140
+ },
141
+ };
142
+ }
143
+
144
+ /**
145
+ * step 1: request読込・codegraph evidence収集・compile・全TODO dispatch
146
+ * (worktree provision)まで。返り値のworktree pathsへ、親が実agentを
147
+ * dispatchする。packetにはisolation_contractが含まれる。
148
+ */
149
+ export async function initStage1Run({ latticeRoot, cloneRoot, requestPath, stateDir }) {
150
+ await mkdir(stateDir, { recursive: true });
151
+ const request = JSON.parse(await readFile(requestPath, 'utf8'));
152
+ if (!validateRunRequest(request)) fail('run_requestがlattice.run_request.v1 contractを満たさない');
153
+
154
+ const collected = await collectCodegraphEvidence({ cwd: cloneRoot, querySet: request.codegraph_query_set });
155
+ const codegraphEvidence = evidenceFromCollectedOutcomes({ querySet: request.codegraph_query_set, collected });
156
+ const compiled = compileRuntimePlanV1({
157
+ request,
158
+ codegraphEvidence,
159
+ planRef: `plan-${request.request_id}-e1`,
160
+ planEpoch: 1,
161
+ predecessorRefs: [],
162
+ });
163
+ if (compiled.outcome !== 'dispatchable') {
164
+ fail(`compileがdispatchableにならない: ${compiled.outcome}${compiled.code ? ` ${compiled.code}` : ''}`);
165
+ }
166
+ const packets = buildExecutorPackets({ plan: compiled.plan, manifests: compiled.manifests });
167
+
168
+ const state = {
169
+ schema: 'lattice.rc4.stage1_dogfood_state.v1',
170
+ latticeRoot,
171
+ cloneRoot,
172
+ requestPath,
173
+ baseSha: request.repo.base_sha,
174
+ request,
175
+ plan: compiled.plan,
176
+ manifests: compiled.manifests,
177
+ packets,
178
+ newPlan: null,
179
+ rebindPackets: null,
180
+ redispatchPackets: null,
181
+ holdDecision: null,
182
+ planDiff: null,
183
+ events: initializeRunEvents({
184
+ runId: RUN_ID, request, plan: compiled.plan, manifests: compiled.manifests, recordedAt: RUN_TIMESTAMP,
185
+ }),
186
+ worktrees: {},
187
+ provider_runs: [],
188
+ diagnostics: { residual_worktrees: [] },
189
+ };
190
+ const adapter = stateAdapter(state);
191
+ const dispatched = await dispatchReadyFrontier({
192
+ runId: RUN_ID, plan: state.plan, events: state.events,
193
+ packets, manifests: state.manifests, adapter, recordedAt: RUN_TIMESTAMP,
194
+ });
195
+ if (dispatched.failure) fail(`dispatch失敗: ${dispatched.failure.message}`);
196
+ state.events = dispatched.events;
197
+ await saveState(stateDir, state);
198
+ const packetsWithIsolation = withIsolationContract(packets);
199
+ return {
200
+ dispatched: dispatched.dispatched,
201
+ worktrees: Object.fromEntries(Object.entries(state.worktrees).map(([todoId, entry]) => (
202
+ [todoId, { path: entry.worktree_path, handle: entry.handle, packet: packetsWithIsolation[todoId] }]
203
+ ))),
204
+ };
205
+ }
206
+
207
+ /**
208
+ * epoch内の後続wave dispatch(conflict pairの片方が受理され次第、残り分を
209
+ * dispatchする)。redispatchStage1Next(epoch2専用)とは別に、hold/recompileを
210
+ * 経由せずconflict pairが自然にserializeするrunで必要になる同一plan/packets上の
211
+ * 追加dispatch呼び出し。dispatchReadyFrontier自体はrc3と同一primitive。
212
+ */
213
+ export async function dispatchStage1NextWave({ stateDir }) {
214
+ const state = await loadState(stateDir);
215
+ const adapter = stateAdapter(state);
216
+ const dispatched = await dispatchReadyFrontier({
217
+ runId: RUN_ID, plan: state.plan, events: state.events,
218
+ packets: state.packets, manifests: state.manifests, adapter, recordedAt: RUN_TIMESTAMP,
219
+ });
220
+ if (dispatched.failure) fail(`dispatch失敗: ${dispatched.failure.message}`);
221
+ state.events = dispatched.events;
222
+ await saveState(stateDir, state);
223
+ const packetsWithIsolation = withIsolationContract(state.packets);
224
+ return {
225
+ dispatched: dispatched.dispatched,
226
+ worktrees: Object.fromEntries(dispatched.dispatched.map((todoId) => (
227
+ [todoId, {
228
+ path: state.worktrees[todoId].worktree_path,
229
+ handle: state.worktrees[todoId].handle,
230
+ packet: packetsWithIsolation[todoId],
231
+ }]
232
+ ))),
233
+ };
234
+ }
235
+
236
+ /** provider観測(agent handle・時刻・状態遷移)をledgerへ追記する。core eventsへは入れない。 */
237
+ export async function recordProviderObservation({ stateDir, observation }) {
238
+ const state = await loadState(stateDir);
239
+ state.provider_runs.push(observation);
240
+ await saveState(stateDir, state);
241
+ return { count: state.provider_runs.length };
242
+ }
243
+
244
+ /** 指定TODOのworktree実diffをcheckpoint観測し、findingがあればconflict+freezeまで進める。 */
245
+ export async function observeStage1Checkpoint({ stateDir, todoId, planKey = 'plan' }) {
246
+ const state = await loadState(stateDir);
247
+ const worktree = state.worktrees[todoId];
248
+ if (worktree === undefined || !worktree.active) fail(`active worktreeがない: ${todoId}`);
249
+ const plan = state[planKey];
250
+ const checkpoint = await captureWorktreeDiff({
251
+ worktreePath: worktree.worktree_path,
252
+ baseSha: state.baseSha,
253
+ });
254
+ let events = [...state.events];
255
+ events.push(buildNextRunEvent({
256
+ events,
257
+ runId: RUN_ID,
258
+ kind: 'checkpoint_observed',
259
+ planEpoch: plan.plan_epoch,
260
+ subject: { kind: 'todo', ref: todoId },
261
+ payload: structuredClone(checkpoint),
262
+ recordedAt: RUN_TIMESTAMP,
263
+ }));
264
+ const classifyPackets = { ...state.packets, ...(state.redispatchPackets ?? {}) };
265
+ const classified = classifyCheckpointObservation({
266
+ runId: RUN_ID, plan, events, packets: classifyPackets, todoId,
267
+ detect: detectCheckpointFindings, recordedAt: RUN_TIMESTAMP,
268
+ });
269
+ state.events = classified.events;
270
+ await saveState(stateDir, state);
271
+ return { findings: classified.findings, checkpoint_digest: checkpoint.checkpoint_digest };
272
+ }
273
+
274
+ /** hold裁定→recompile→(carried TODOの)rebind packet発行までを一括で行う受け皿。 */
275
+ export async function holdAndRecompileStage1({ stateDir, additionalConflicts }) {
276
+ const state = await loadState(stateDir);
277
+ const held = decideHoldAndCarryOver({
278
+ runId: RUN_ID,
279
+ request: state.request,
280
+ plan: state.plan,
281
+ manifests: state.manifests,
282
+ packets: state.packets,
283
+ events: state.events,
284
+ recordedAt: RUN_TIMESTAMP,
285
+ });
286
+ const lane = routeConflictTreatment({
287
+ finding: held.holdDecision.finding,
288
+ predeclaredTreatments: [],
289
+ });
290
+ const recompiled = recompileNextEpochPlan({
291
+ runId: RUN_ID,
292
+ request: state.request,
293
+ plan: state.plan,
294
+ manifests: state.manifests,
295
+ packets: state.packets,
296
+ events: held.events,
297
+ holdDecision: held.holdDecision,
298
+ additionalConflicts,
299
+ recordedAt: RUN_TIMESTAMP,
300
+ });
301
+ state.events = recompiled.events;
302
+ state.holdDecision = held.holdDecision;
303
+ state.newPlan = recompiled.newPlan;
304
+ state.planDiff = recompiled.planDiff;
305
+ state.rebindPackets = recompiled.rebindPackets;
306
+ state.redispatchPackets = recompiled.redispatchPackets;
307
+ for (const todoId of held.holdDecision.continue_set) {
308
+ state.packets[todoId] = {
309
+ ...state.packets[todoId],
310
+ plan_epoch: recompiled.newPlan.plan_epoch,
311
+ };
312
+ }
313
+ for (const todoId of held.holdDecision.hold_set) {
314
+ if (state.worktrees[todoId] !== undefined) state.worktrees[todoId].active = false;
315
+ }
316
+ await saveState(stateDir, state);
317
+ return {
318
+ hold: held.holdDecision.hold_set,
319
+ continue: held.holdDecision.continue_set,
320
+ lane: lane.lane,
321
+ new_epoch: recompiled.newPlan.plan_epoch,
322
+ };
323
+ }
324
+
325
+ /** terminal receipt(現attemptの最終checkpointへbind)を記録し、受理裁定まで行う。 */
326
+ export async function terminalStage1Receipt({ stateDir, todoId, planKey }) {
327
+ const state = await loadState(stateDir);
328
+ const plan = state[planKey];
329
+ const worktree = state.worktrees[todoId];
330
+ if (worktree === undefined || !worktree.active) fail(`active worktreeがない: ${todoId}`);
331
+ const packet = planKey === 'newPlan' && state.redispatchPackets?.[todoId] !== undefined
332
+ ? state.redispatchPackets[todoId]
333
+ : state.packets[todoId];
334
+ const stateProjection = projectRuntimeState({ events: state.events });
335
+ const dispatchRecord = stateProjection.dispatches[todoId];
336
+ const attemptCheckpoints = stateProjection.checkpoints.filter((entry) => (
337
+ entry.todo_id === todoId && entry.sequence > dispatchRecord.sequence
338
+ ));
339
+ if (attemptCheckpoints.length === 0) fail(`checkpoint未観測でterminalにできない: ${todoId}`);
340
+ const lastCheckpoint = attemptCheckpoints[attemptCheckpoints.length - 1].payload;
341
+ const receipt = {
342
+ schema: 'lattice.executor_receipt.v1',
343
+ receipt_id: `${todoId}-a${worktree.attempt}-r1`,
344
+ executor_handle: worktree.handle,
345
+ worktree_id: worktree.worktree_id,
346
+ base_sha: packet.base_sha,
347
+ plan_epoch: packet.plan_epoch,
348
+ packet_digest: dispatchRecord.payload.packet_digest,
349
+ todo_id: todoId,
350
+ checkpoint_digest: lastCheckpoint.checkpoint_digest,
351
+ observed_diff: lastCheckpoint.diff.entries.map(({ path: p, change }) => ({ path: p, change })),
352
+ };
353
+ receipt.receipt_digest = selfDigest(receipt, 'receipt_digest');
354
+ let events = [...state.events];
355
+ events.push(buildNextRunEvent({
356
+ events,
357
+ runId: RUN_ID,
358
+ kind: 'receipt_recorded',
359
+ planEpoch: receipt.plan_epoch,
360
+ subject: { kind: 'todo', ref: todoId },
361
+ payload: receipt,
362
+ recordedAt: RUN_TIMESTAMP,
363
+ }));
364
+ // Stage 2着地素材: worktree破棄前にpatch本文を捕獲する。receipt schemaは不変のまま
365
+ // (replay契約を壊さない)、patchはstate/artifactの別文書として保存し、
366
+ // receipt_idとcheckpoint_digestでreceiptへbindする。捕獲失敗はfail loud
367
+ // (Stage 1受理はできたのに着地素材が無い、という無言の欠損を作らない)。
368
+ await run('git', ['add', '-A'], worktree.worktree_path);
369
+ const patchBytes = await run(
370
+ 'git',
371
+ ['-c', 'core.quotepath=false', 'diff', '--cached', '--binary'],
372
+ worktree.worktree_path,
373
+ );
374
+ if (patchBytes.length === 0) fail(`patch捕獲が空: ${todoId}(observed_diffと矛盾)`);
375
+ if (state.patches === undefined) state.patches = {};
376
+ state.patches[receipt.receipt_id] = {
377
+ receipt_id: receipt.receipt_id,
378
+ todo_id: todoId,
379
+ checkpoint_digest: lastCheckpoint.checkpoint_digest,
380
+ paths: receipt.observed_diff.map(({ path: p }) => p),
381
+ patch: patchBytes,
382
+ };
383
+ let cleanup = { cleanup_ok: true, residual_paths: [] };
384
+ try {
385
+ await run('git', ['worktree', 'remove', '--force', worktree.worktree_path], state.cloneRoot);
386
+ } catch (error) {
387
+ cleanup = {
388
+ cleanup_ok: false,
389
+ residual_paths: [worktree.worktree_root],
390
+ message: String(error?.message ?? error),
391
+ };
392
+ }
393
+ events.push(buildNextRunEvent({
394
+ events,
395
+ runId: RUN_ID,
396
+ kind: 'executor_terminal',
397
+ planEpoch: plan.plan_epoch,
398
+ subject: { kind: 'todo', ref: todoId },
399
+ payload: { executor_handle: worktree.handle, terminal_state: 'reported', cleanup },
400
+ recordedAt: RUN_TIMESTAMP,
401
+ }));
402
+ const adjudicated = adjudicatePendingReceipts({
403
+ runId: RUN_ID, plan, events, recordedAt: RUN_TIMESTAMP,
404
+ });
405
+ state.events = adjudicated.events;
406
+ state.worktrees[todoId].active = false;
407
+ await saveState(stateDir, state);
408
+ return { decisions: adjudicated.decisions, receipt_id: receipt.receipt_id };
409
+ }
410
+
411
+ /** epoch 2のredispatch(1件ずつ。frontier/conflict規則はengineに従う)。hold未発火なら未使用。 */
412
+ export async function redispatchStage1Next({ stateDir }) {
413
+ const state = await loadState(stateDir);
414
+ const adapter = stateAdapter(state);
415
+ const dispatched = await dispatchReadyFrontier({
416
+ runId: RUN_ID,
417
+ plan: state.newPlan,
418
+ events: state.events,
419
+ packets: state.redispatchPackets,
420
+ manifests: state.manifests,
421
+ adapter,
422
+ recordedAt: RUN_TIMESTAMP,
423
+ });
424
+ if (dispatched.failure) fail(`redispatch失敗: ${dispatched.failure.message}`);
425
+ state.events = dispatched.events;
426
+ await saveState(stateDir, state);
427
+ const redispatchPacketsWithIsolation = withIsolationContract(state.redispatchPackets);
428
+ return {
429
+ dispatched: dispatched.dispatched,
430
+ worktrees: Object.fromEntries(dispatched.dispatched.map((todoId) => (
431
+ [todoId, {
432
+ path: state.worktrees[todoId].worktree_path,
433
+ handle: state.worktrees[todoId].handle,
434
+ packet: redispatchPacketsWithIsolation[todoId],
435
+ }]
436
+ ))),
437
+ };
438
+ }
439
+
440
+ /** run close+残worktree掃除(残存は記録)。 */
441
+ export async function closeStage1Run({ stateDir }) {
442
+ const state = await loadState(stateDir);
443
+ const closed = closeRunIfComplete({
444
+ runId: RUN_ID, plan: state.newPlan ?? state.plan, events: state.events, recordedAt: RUN_TIMESTAMP,
445
+ });
446
+ state.events = closed.events;
447
+ const residual = [];
448
+ for (const [todoId, worktree] of Object.entries(state.worktrees)) {
449
+ if (!worktree.active) continue;
450
+ try {
451
+ await run('git', ['worktree', 'remove', '--force', worktree.worktree_path], state.cloneRoot);
452
+ worktree.active = false;
453
+ } catch (error) {
454
+ residual.push({ todo_id: todoId, path: worktree.worktree_root, message: String(error?.message ?? error) });
455
+ }
456
+ }
457
+ state.diagnostics.residual_worktrees = residual;
458
+ await saveState(stateDir, state);
459
+ return { closed: closed.closed, residual };
460
+ }
461
+
462
+ /** artifact v3(RC4 Stage 1 dotagents dogfood)をatomic no-overwriteで発行する。 */
463
+ export async function publishStage1Artifact({ stateDir, artifactRoot }) {
464
+ const state = await loadState(stateDir);
465
+ await mkdir(path.dirname(artifactRoot), { recursive: true });
466
+ const staging = `${artifactRoot}.staging`;
467
+ try {
468
+ await mkdir(staging);
469
+ } catch (error) {
470
+ fail(`stagingを排他作成できない: ${String(error?.message ?? error)}`);
471
+ }
472
+ const packetsDocument = {
473
+ epoch1: withIsolationContract(state.packets),
474
+ redispatch: state.redispatchPackets === null ? null : withIsolationContract(state.redispatchPackets),
475
+ };
476
+ const documents = {
477
+ 'request.json': state.request,
478
+ 'plan.json': state.plan,
479
+ 'new-plan.json': state.newPlan,
480
+ 'manifests.json': state.manifests,
481
+ 'packets.json': packetsDocument,
482
+ 'hold-decision.json': state.holdDecision,
483
+ 'plan-diff.json': state.planDiff,
484
+ 'events.json': state.events,
485
+ 'provider-runs.json': state.provider_runs,
486
+ 'diagnostics.json': state.diagnostics,
487
+ 'patches.json': state.patches ?? {},
488
+ };
489
+ const manifestEntries = {};
490
+ for (const [name, document] of Object.entries(documents)) {
491
+ await writeFile(path.join(staging, name), `${JSON.stringify(document, null, 1)}\n`);
492
+ manifestEntries[name] = digestArtifact(document);
493
+ }
494
+ const manifest = {
495
+ schema: 'lattice.rc4.stage1_dogfood_manifest.v1',
496
+ run_id: RUN_ID,
497
+ clone: {
498
+ lattice_root: state.latticeRoot,
499
+ clone_base_sha: state.baseSha,
500
+ },
501
+ document_digests: manifestEntries,
502
+ };
503
+ await writeFile(path.join(staging, 'dogfood-manifest.json'), `${JSON.stringify(manifest, null, 1)}\n`);
504
+ try {
505
+ let exists = true;
506
+ try {
507
+ await readFile(path.join(artifactRoot, 'dogfood-manifest.json'));
508
+ } catch (error) {
509
+ exists = error?.code !== 'ENOENT';
510
+ }
511
+ if (exists) throw new TypeError('既存artifact rootが存在する');
512
+ await rename(staging, artifactRoot);
513
+ } catch (error) {
514
+ const { rm } = await import('node:fs/promises');
515
+ await rm(staging, { recursive: true, force: true });
516
+ fail(`artifact発行に失敗(上書き禁止): ${String(error?.message ?? error)}`);
517
+ }
518
+ return { manifest };
519
+ }
520
+
521
+ function isolationContractComplete(contract) {
522
+ if (contract === null || typeof contract !== 'object') return false;
523
+ return contract.isolated_home === true
524
+ && Array.isArray(contract.forbidden_commands)
525
+ && ['install.sh', 'spotter install', 'apply-codex-config', 'claude mcp add', 'codex mcp add']
526
+ .every((command) => contract.forbidden_commands.includes(command))
527
+ && contract.write_scope === 'assigned worktree only'
528
+ && contract.no_git_mutations === true
529
+ && typeof contract.note === 'string' && contract.note.length > 0;
530
+ }
531
+
532
+ /** artifact v3を保存bytesだけから再検証する。 */
533
+ export async function verifyStage1ArtifactOnDisk({ artifactRoot }) {
534
+ const manifest = JSON.parse(await readFile(path.join(artifactRoot, 'dogfood-manifest.json'), 'utf8'));
535
+ const checks = [];
536
+ const documents = {};
537
+ for (const [name, digest] of Object.entries(manifest.document_digests)) {
538
+ const document = JSON.parse(await readFile(path.join(artifactRoot, name), 'utf8'));
539
+ documents[name] = document;
540
+ checks.push({ id: `digest:${name}`, passed: digestArtifact(document) === digest });
541
+ }
542
+ const events = documents['events.json'];
543
+ const plan = documents['plan.json'];
544
+ const newPlan = documents['new-plan.json'];
545
+ const chain = verifyRunEventChain({ events });
546
+ checks.push({ id: 'event_chain', passed: chain.valid });
547
+ for (const [label, targetPlan] of [['e1', plan], ['e2', newPlan]]) {
548
+ if (targetPlan === null) continue;
549
+ events.forEach((event, index) => {
550
+ if (event.kind !== 'dispatch_decided' || event.plan_epoch !== targetPlan.plan_epoch) return;
551
+ const recomputed = computeReadyFrontier({ plan: targetPlan, events: events.slice(0, index) });
552
+ checks.push({
553
+ id: `dispatch_replay:${label}:seq${event.sequence}`,
554
+ passed: JSON.stringify(event.payload.dispatchable) === JSON.stringify(recomputed.dispatchable),
555
+ });
556
+ });
557
+ }
558
+ const holdDecision = documents['hold-decision.json'];
559
+ const holdIndex = events.findIndex((event) => event.kind === 'hold_decided');
560
+ if (holdDecision !== null && holdIndex !== -1) {
561
+ const recomputedHold = recomputeHoldDecision({
562
+ plan, events: events.slice(0, holdIndex), manifests: documents['manifests.json'],
563
+ });
564
+ checks.push({
565
+ id: 'hold_replay',
566
+ passed: JSON.stringify(recomputedHold.hold_set) === JSON.stringify(holdDecision.hold_set)
567
+ && JSON.stringify(recomputedHold.continue_set) === JSON.stringify(holdDecision.continue_set),
568
+ });
569
+ }
570
+ // receipt裁定の再計算: 記録済みoutcome event(accepted/rejected+detail)と
571
+ // replay結果の双方向・reason粒度の一致を要求する(RC3-J P1採用の踏襲)。
572
+ const recordedOutcomes = new Map();
573
+ for (const event of events) {
574
+ if (event.kind !== 'receipt_accepted' && event.kind !== 'receipt_rejected') continue;
575
+ const receiptId = event.payload?.receipt_id;
576
+ if (typeof receiptId !== 'string') continue;
577
+ recordedOutcomes.set(receiptId, {
578
+ decision: event.kind === 'receipt_accepted' ? 'accepted' : 'rejected',
579
+ detail: event.payload?.detail ?? null,
580
+ adjudication_epoch: event.plan_epoch,
581
+ });
582
+ }
583
+ const planByEpoch = new Map([plan, newPlan]
584
+ .filter((entry) => entry !== null)
585
+ .map((entry) => [entry.plan_epoch, entry]));
586
+ let receiptReplayOk = recordedOutcomes.size > 0;
587
+ for (const [receiptId, recorded] of recordedOutcomes) {
588
+ const adjudicationPlan = planByEpoch.get(recorded.adjudication_epoch);
589
+ if (adjudicationPlan === undefined) {
590
+ receiptReplayOk = false;
591
+ continue;
592
+ }
593
+ const outcomeIndex = events.findIndex((event) => (
594
+ (event.kind === 'receipt_accepted' || event.kind === 'receipt_rejected')
595
+ && event.payload?.receipt_id === receiptId
596
+ ));
597
+ const replayed = recomputeReceiptDecisions({
598
+ plan: adjudicationPlan,
599
+ events: events.slice(0, outcomeIndex),
600
+ }).decisions.find(({ receipt_id: id }) => id === receiptId);
601
+ if (replayed === undefined
602
+ || replayed.decision !== recorded.decision
603
+ || (recorded.decision === 'rejected' && replayed.detail !== recorded.detail)) {
604
+ receiptReplayOk = false;
605
+ }
606
+ }
607
+ if (newPlan !== null) {
608
+ for (const decision of recomputeReceiptDecisions({ plan: newPlan, events }).decisions) {
609
+ if (decision.decision === 'accepted' && !recordedOutcomes.has(decision.receipt_id)) {
610
+ receiptReplayOk = false;
611
+ }
612
+ }
613
+ }
614
+ checks.push({ id: 'receipt_replay_bidirectional', passed: receiptReplayOk });
615
+ checks.push({
616
+ id: 'provider_separation',
617
+ passed: events.every((event) => (
618
+ JSON.stringify(event.payload).includes('provider_handle') === false
619
+ )),
620
+ });
621
+ // Stage 2着地素材: patches.jsonがある場合(patch捕獲実装後のartifact)、
622
+ // accepted receiptごとにpatch entryが存在し、receipt observed_diffのpathと
623
+ // 一致することを要求する。旧artifact(v3/v3-hold・patches.json不在)は
624
+ // manifest記載文書のみ検査する既存規則のまま。
625
+ if (Object.hasOwn(manifest.document_digests, 'patches.json')) {
626
+ const patches = documents['patches.json'];
627
+ const receiptByld = new Map();
628
+ for (const event of events) {
629
+ if (event.kind !== 'receipt_accepted') continue;
630
+ receiptByld.set(event.payload.receipt_id, event);
631
+ }
632
+ const receiptEvents = events.filter((event) => event.kind === 'receipt_recorded');
633
+ const patchesOk = [...receiptByld.keys()].every((receiptId) => {
634
+ const patch = patches[receiptId];
635
+ if (patch === undefined || typeof patch.patch !== 'string' || patch.patch.length === 0) return false;
636
+ const recorded = receiptEvents.find((event) => event.payload.receipt_id === receiptId);
637
+ if (recorded === undefined) return false;
638
+ const receiptPaths = [...recorded.payload.observed_diff.map(({ path: p }) => p)].sort();
639
+ return JSON.stringify([...patch.paths].sort()) === JSON.stringify(receiptPaths);
640
+ });
641
+ checks.push({ id: 'patches_bound_to_accepted_receipts', passed: patchesOk });
642
+ }
643
+ // ADR 0046 Decision 2: 全executor packetがisolation_contractを完備していること。
644
+ const packetsDocument = documents['packets.json'];
645
+ const allPacketGroups = [packetsDocument.epoch1, packetsDocument.redispatch].filter((group) => group !== null);
646
+ const allPacketsIsolated = allPacketGroups.every((group) => (
647
+ Object.values(group).every((packet) => isolationContractComplete(packet.isolation_contract))
648
+ ));
649
+ checks.push({ id: 'isolation_contract_complete', passed: allPacketsIsolated });
650
+ const failed = checks.filter(({ passed }) => !passed).map(({ id }) => id);
651
+ return { valid: failed.length === 0, checks, failed_conditions: failed };
652
+ }