opensquid 0.5.441 → 0.5.449

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 (391) hide show
  1. package/README.md +1 -0
  2. package/dist/functions/arm_scope.d.ts +27 -0
  3. package/dist/functions/arm_scope.d.ts.map +1 -0
  4. package/dist/functions/arm_scope.js +52 -0
  5. package/dist/functions/arm_scope.js.map +1 -0
  6. package/dist/functions/index.d.ts +1 -0
  7. package/dist/functions/index.d.ts.map +1 -1
  8. package/dist/functions/index.js +1 -0
  9. package/dist/functions/index.js.map +1 -1
  10. package/dist/functions/recall_pre_inject.d.ts.map +1 -1
  11. package/dist/functions/recall_pre_inject.js +12 -0
  12. package/dist/functions/recall_pre_inject.js.map +1 -1
  13. package/dist/rag/store_git.d.ts +23 -0
  14. package/dist/rag/store_git.d.ts.map +1 -0
  15. package/dist/rag/store_git.js +57 -0
  16. package/dist/rag/store_git.js.map +1 -0
  17. package/dist/runtime/bootstrap.d.ts.map +1 -1
  18. package/dist/runtime/bootstrap.js +2 -0
  19. package/dist/runtime/bootstrap.js.map +1 -1
  20. package/dist/runtime/handoff/render.d.ts +5 -4
  21. package/dist/runtime/handoff/render.d.ts.map +1 -1
  22. package/dist/runtime/handoff/render.js +7 -7
  23. package/dist/runtime/handoff/render.js.map +1 -1
  24. package/dist/runtime/hooks/active_task_mirror.js +0 -0
  25. package/dist/runtime/hooks/apply_patch.js +0 -0
  26. package/dist/runtime/hooks/dispatch.js +0 -0
  27. package/dist/runtime/hooks/hook_output.js +0 -0
  28. package/dist/runtime/hooks/memory_reconcile.js +0 -0
  29. package/dist/runtime/hooks/new_project_detect.js +0 -0
  30. package/dist/runtime/hooks/profession_resolver.js +0 -0
  31. package/dist/runtime/hooks/scope_intent.js +0 -0
  32. package/dist/runtime/hooks/session-end.js +11 -0
  33. package/dist/runtime/hooks/session-end.js.map +1 -1
  34. package/dist/runtime/hooks/session_id.js +0 -0
  35. package/dist/runtime/hooks/session_liveness.js +0 -0
  36. package/dist/runtime/hooks/stop_drive.js +0 -0
  37. package/dist/runtime/hooks/stop_stream.js +0 -0
  38. package/dist/runtime/hooks/subagent_guard.js +0 -0
  39. package/dist/runtime/hooks/transcript.js +0 -0
  40. package/dist/runtime/hooks/transcript_tasks.js +0 -0
  41. package/dist/runtime/ralph/orchestrator.d.ts.map +1 -1
  42. package/dist/runtime/ralph/orchestrator.js +2 -1
  43. package/dist/runtime/ralph/orchestrator.js.map +1 -1
  44. package/dist/setup/cli/limits_state.d.ts.map +1 -1
  45. package/dist/setup/cli/limits_state.js +6 -40
  46. package/dist/setup/cli/limits_state.js.map +1 -1
  47. package/dist/setup/cli/pack_walk.d.ts +32 -0
  48. package/dist/setup/cli/pack_walk.d.ts.map +1 -0
  49. package/dist/setup/cli/pack_walk.js +76 -0
  50. package/dist/setup/cli/pack_walk.js.map +1 -0
  51. package/dist/setup/cli/permissions_state.d.ts.map +1 -1
  52. package/dist/setup/cli/permissions_state.js +6 -37
  53. package/dist/setup/cli/permissions_state.js.map +1 -1
  54. package/dist/setup/cli/triggers_state.d.ts.map +1 -1
  55. package/dist/setup/cli/triggers_state.js +3 -29
  56. package/dist/setup/cli/triggers_state.js.map +1 -1
  57. package/dist/workgraph/events.d.ts.map +1 -1
  58. package/dist/workgraph/events.js +10 -0
  59. package/dist/workgraph/events.js.map +1 -1
  60. package/dist/workgraph/store.d.ts.map +1 -1
  61. package/dist/workgraph/store.js +5 -0
  62. package/dist/workgraph/store.js.map +1 -1
  63. package/dist/workgraph/types.d.ts +2 -1
  64. package/dist/workgraph/types.d.ts.map +1 -1
  65. package/docs/ARCHITECTURE.md +268 -0
  66. package/docs/pack-runtime.md +15 -12
  67. package/docs/skill-grammar-guide.md +4 -4
  68. package/package.json +5 -3
  69. package/packs/builtin/coding-flow/skills/entry-and-handoffs/skill.yaml +13 -17
  70. package/dist/anti-drift/evaluator.d.ts +0 -88
  71. package/dist/anti-drift/evaluator.d.ts.map +0 -1
  72. package/dist/anti-drift/evaluator.js +0 -417
  73. package/dist/anti-drift/evaluator.js.map +0 -1
  74. package/dist/anti-drift/evaluator.test.js +0 -78
  75. package/dist/anti-drift/rules.d.ts +0 -80
  76. package/dist/anti-drift/rules.d.ts.map +0 -1
  77. package/dist/anti-drift/rules.js +0 -368
  78. package/dist/anti-drift/rules.js.map +0 -1
  79. package/dist/anti-drift/rules.test.js +0 -213
  80. package/dist/anti-drift/state.d.ts +0 -107
  81. package/dist/anti-drift/state.d.ts.map +0 -1
  82. package/dist/anti-drift/state.js +0 -177
  83. package/dist/anti-drift/state.js.map +0 -1
  84. package/dist/anti-drift/state.test.js +0 -120
  85. package/dist/chat/adapters/discord.d.ts +0 -41
  86. package/dist/chat/adapters/discord.d.ts.map +0 -1
  87. package/dist/chat/adapters/discord.js +0 -176
  88. package/dist/chat/adapters/discord.js.map +0 -1
  89. package/dist/chat/adapters/discord.test.js +0 -25
  90. package/dist/chat/adapters/slack.d.ts +0 -43
  91. package/dist/chat/adapters/slack.d.ts.map +0 -1
  92. package/dist/chat/adapters/slack.js +0 -172
  93. package/dist/chat/adapters/slack.js.map +0 -1
  94. package/dist/chat/adapters/slack.test.js +0 -30
  95. package/dist/chat/adapters/telegram.d.ts +0 -148
  96. package/dist/chat/adapters/telegram.d.ts.map +0 -1
  97. package/dist/chat/adapters/telegram.js +0 -498
  98. package/dist/chat/adapters/telegram.js.map +0 -1
  99. package/dist/chat/adapters/telegram.test.js +0 -94
  100. package/dist/chat/config.d.ts +0 -98
  101. package/dist/chat/config.d.ts.map +0 -1
  102. package/dist/chat/config.js +0 -185
  103. package/dist/chat/config.js.map +0 -1
  104. package/dist/chat/daemon/active-project.d.ts +0 -17
  105. package/dist/chat/daemon/active-project.d.ts.map +0 -1
  106. package/dist/chat/daemon/active-project.js +0 -23
  107. package/dist/chat/daemon/active-project.js.map +0 -1
  108. package/dist/chat/daemon/autospawn.d.ts +0 -40
  109. package/dist/chat/daemon/autospawn.d.ts.map +0 -1
  110. package/dist/chat/daemon/autospawn.js +0 -129
  111. package/dist/chat/daemon/autospawn.js.map +0 -1
  112. package/dist/chat/daemon/autospawn.test.js +0 -112
  113. package/dist/chat/daemon/cli.d.ts +0 -18
  114. package/dist/chat/daemon/cli.d.ts.map +0 -1
  115. package/dist/chat/daemon/cli.js +0 -71
  116. package/dist/chat/daemon/cli.js.map +0 -1
  117. package/dist/chat/daemon/collisions.js +0 -384
  118. package/dist/chat/daemon/health-check.d.ts +0 -69
  119. package/dist/chat/daemon/health-check.d.ts.map +0 -1
  120. package/dist/chat/daemon/health-check.js +0 -112
  121. package/dist/chat/daemon/health-check.js.map +0 -1
  122. package/dist/chat/daemon/inbox-read.d.ts +0 -35
  123. package/dist/chat/daemon/inbox-read.d.ts.map +0 -1
  124. package/dist/chat/daemon/inbox-read.js +0 -75
  125. package/dist/chat/daemon/inbox-read.js.map +0 -1
  126. package/dist/chat/daemon/inbox-read.test.js +0 -97
  127. package/dist/chat/daemon/inbox.d.ts +0 -63
  128. package/dist/chat/daemon/inbox.d.ts.map +0 -1
  129. package/dist/chat/daemon/inbox.js +0 -56
  130. package/dist/chat/daemon/inbox.js.map +0 -1
  131. package/dist/chat/daemon/inbox.test.js +0 -110
  132. package/dist/chat/daemon/lifecycle.d.ts +0 -71
  133. package/dist/chat/daemon/lifecycle.d.ts.map +0 -1
  134. package/dist/chat/daemon/lifecycle.js +0 -221
  135. package/dist/chat/daemon/lifecycle.js.map +0 -1
  136. package/dist/chat/daemon/lifecycle.test.js +0 -163
  137. package/dist/chat/daemon/protocol.d.ts +0 -107
  138. package/dist/chat/daemon/protocol.d.ts.map +0 -1
  139. package/dist/chat/daemon/protocol.js +0 -54
  140. package/dist/chat/daemon/protocol.js.map +0 -1
  141. package/dist/chat/daemon/routing.d.ts +0 -140
  142. package/dist/chat/daemon/routing.d.ts.map +0 -1
  143. package/dist/chat/daemon/routing.js +0 -198
  144. package/dist/chat/daemon/routing.js.map +0 -1
  145. package/dist/chat/daemon/routing.test.js +0 -259
  146. package/dist/chat/daemon/rpc-client.d.ts +0 -45
  147. package/dist/chat/daemon/rpc-client.d.ts.map +0 -1
  148. package/dist/chat/daemon/rpc-client.js +0 -133
  149. package/dist/chat/daemon/rpc-client.js.map +0 -1
  150. package/dist/chat/daemon/rpc-server.d.ts +0 -39
  151. package/dist/chat/daemon/rpc-server.d.ts.map +0 -1
  152. package/dist/chat/daemon/rpc-server.js +0 -385
  153. package/dist/chat/daemon/rpc-server.js.map +0 -1
  154. package/dist/chat/daemon/rpc.test.js +0 -177
  155. package/dist/chat/daemon/subscribers.js +0 -257
  156. package/dist/chat/daemon/worker.d.ts +0 -27
  157. package/dist/chat/daemon/worker.d.ts.map +0 -1
  158. package/dist/chat/daemon/worker.js +0 -313
  159. package/dist/chat/daemon/worker.js.map +0 -1
  160. package/dist/chat/daemon/workspace-topic.js +0 -324
  161. package/dist/chat/env-token.d.ts +0 -60
  162. package/dist/chat/env-token.d.ts.map +0 -1
  163. package/dist/chat/env-token.js +0 -137
  164. package/dist/chat/env-token.js.map +0 -1
  165. package/dist/chat/env-token.test.js +0 -160
  166. package/dist/chat/factory.d.ts +0 -30
  167. package/dist/chat/factory.d.ts.map +0 -1
  168. package/dist/chat/factory.js +0 -50
  169. package/dist/chat/factory.js.map +0 -1
  170. package/dist/chat/factory.test.js +0 -55
  171. package/dist/chat/gateway.d.ts +0 -176
  172. package/dist/chat/gateway.d.ts.map +0 -1
  173. package/dist/chat/gateway.js +0 -146
  174. package/dist/chat/gateway.js.map +0 -1
  175. package/dist/chat/gateway.test.js +0 -192
  176. package/dist/claude-md.d.ts +0 -39
  177. package/dist/claude-md.d.ts.map +0 -1
  178. package/dist/claude-md.js +0 -113
  179. package/dist/claude-md.js.map +0 -1
  180. package/dist/claude-md.test.js +0 -91
  181. package/dist/codex/activate.d.ts +0 -66
  182. package/dist/codex/activate.d.ts.map +0 -1
  183. package/dist/codex/activate.js +0 -329
  184. package/dist/codex/activate.js.map +0 -1
  185. package/dist/codex/activate.test.js +0 -229
  186. package/dist/codex/bundled-default/bundled-default.test.js +0 -161
  187. package/dist/codex/cli-publish.test.js +0 -133
  188. package/dist/codex/cli.d.ts +0 -35
  189. package/dist/codex/cli.d.ts.map +0 -1
  190. package/dist/codex/cli.js +0 -554
  191. package/dist/codex/cli.js.map +0 -1
  192. package/dist/codex/cli.test.js +0 -277
  193. package/dist/codex/import-skill-md.d.ts +0 -53
  194. package/dist/codex/import-skill-md.d.ts.map +0 -1
  195. package/dist/codex/import-skill-md.js +0 -236
  196. package/dist/codex/import-skill-md.js.map +0 -1
  197. package/dist/codex/import-skill-md.test.js +0 -225
  198. package/dist/codex/loader.d.ts +0 -27
  199. package/dist/codex/loader.d.ts.map +0 -1
  200. package/dist/codex/loader.js +0 -86
  201. package/dist/codex/loader.js.map +0 -1
  202. package/dist/codex/loader.test.js +0 -75
  203. package/dist/codex/parse.d.ts +0 -28
  204. package/dist/codex/parse.d.ts.map +0 -1
  205. package/dist/codex/parse.js +0 -309
  206. package/dist/codex/parse.js.map +0 -1
  207. package/dist/codex/parse.test.js +0 -241
  208. package/dist/codex/store.d.ts +0 -87
  209. package/dist/codex/store.d.ts.map +0 -1
  210. package/dist/codex/store.js +0 -205
  211. package/dist/codex/store.js.map +0 -1
  212. package/dist/codex/store.test.js +0 -242
  213. package/dist/codex/types.d.ts +0 -398
  214. package/dist/codex/types.d.ts.map +0 -1
  215. package/dist/codex/types.js +0 -21
  216. package/dist/codex/types.js.map +0 -1
  217. package/dist/config.d.ts +0 -53
  218. package/dist/config.d.ts.map +0 -1
  219. package/dist/config.js +0 -202
  220. package/dist/config.js.map +0 -1
  221. package/dist/config.test.js +0 -117
  222. package/dist/engine/cli.d.ts +0 -14
  223. package/dist/engine/cli.d.ts.map +0 -1
  224. package/dist/engine/cli.js +0 -171
  225. package/dist/engine/cli.js.map +0 -1
  226. package/dist/engine/client.d.ts +0 -219
  227. package/dist/engine/client.d.ts.map +0 -1
  228. package/dist/engine/client.js +0 -312
  229. package/dist/engine/client.js.map +0 -1
  230. package/dist/engine/config.d.ts +0 -62
  231. package/dist/engine/config.d.ts.map +0 -1
  232. package/dist/engine/config.js +0 -223
  233. package/dist/engine/config.js.map +0 -1
  234. package/dist/engine/index.d.ts +0 -17
  235. package/dist/engine/index.d.ts.map +0 -1
  236. package/dist/engine/index.js +0 -16
  237. package/dist/engine/index.js.map +0 -1
  238. package/dist/engine/resolver.d.ts +0 -62
  239. package/dist/engine/resolver.d.ts.map +0 -1
  240. package/dist/engine/resolver.js +0 -103
  241. package/dist/engine/resolver.js.map +0 -1
  242. package/dist/engine/singleton.d.ts +0 -95
  243. package/dist/engine/singleton.d.ts.map +0 -1
  244. package/dist/engine/singleton.js +0 -325
  245. package/dist/engine/singleton.js.map +0 -1
  246. package/dist/engine/types.d.ts +0 -402
  247. package/dist/engine/types.d.ts.map +0 -1
  248. package/dist/engine/types.js +0 -22
  249. package/dist/engine/types.js.map +0 -1
  250. package/dist/engine-binary-resolver.js +0 -110
  251. package/dist/engine-binary-resolver.test.js +0 -61
  252. package/dist/engine-cli.js +0 -60
  253. package/dist/engine-client.js +0 -301
  254. package/dist/engine-client.test.js +0 -118
  255. package/dist/functions/chain_state.d.ts +0 -51
  256. package/dist/functions/chain_state.d.ts.map +0 -1
  257. package/dist/functions/chain_state.js +0 -59
  258. package/dist/functions/chain_state.js.map +0 -1
  259. package/dist/hooks/drift-catalog.d.ts +0 -68
  260. package/dist/hooks/drift-catalog.d.ts.map +0 -1
  261. package/dist/hooks/drift-catalog.js +0 -184
  262. package/dist/hooks/drift-catalog.js.map +0 -1
  263. package/dist/hooks/drift-catalog.test.js +0 -154
  264. package/dist/hooks/drift-patterns.d.ts +0 -110
  265. package/dist/hooks/drift-patterns.d.ts.map +0 -1
  266. package/dist/hooks/drift-patterns.js +0 -289
  267. package/dist/hooks/drift-patterns.js.map +0 -1
  268. package/dist/hooks/drift-patterns.test.js +0 -325
  269. package/dist/hooks/engine-vocab-gate.d.ts +0 -108
  270. package/dist/hooks/engine-vocab-gate.d.ts.map +0 -1
  271. package/dist/hooks/engine-vocab-gate.js +0 -225
  272. package/dist/hooks/engine-vocab-gate.js.map +0 -1
  273. package/dist/hooks/engine-vocab-gate.test.js +0 -170
  274. package/dist/hooks/heartbeat.d.ts +0 -107
  275. package/dist/hooks/heartbeat.d.ts.map +0 -1
  276. package/dist/hooks/heartbeat.js +0 -316
  277. package/dist/hooks/heartbeat.js.map +0 -1
  278. package/dist/hooks/heartbeat.test.js +0 -393
  279. package/dist/hooks/honesty-ledger-session-scope.test.js +0 -100
  280. package/dist/hooks/honesty-ledger.d.ts +0 -123
  281. package/dist/hooks/honesty-ledger.d.ts.map +0 -1
  282. package/dist/hooks/honesty-ledger.js +0 -226
  283. package/dist/hooks/honesty-ledger.js.map +0 -1
  284. package/dist/hooks/honesty-ledger.test.js +0 -466
  285. package/dist/hooks/inline-report-check.d.ts +0 -63
  286. package/dist/hooks/inline-report-check.d.ts.map +0 -1
  287. package/dist/hooks/inline-report-check.js +0 -88
  288. package/dist/hooks/inline-report-check.js.map +0 -1
  289. package/dist/hooks/inline-report-check.test.js +0 -96
  290. package/dist/hooks/pre-tool-use.d.ts +0 -62
  291. package/dist/hooks/pre-tool-use.d.ts.map +0 -1
  292. package/dist/hooks/pre-tool-use.js +0 -342
  293. package/dist/hooks/pre-tool-use.js.map +0 -1
  294. package/dist/hooks/pre-tool-use.test.js +0 -134
  295. package/dist/hooks/session-end.d.ts +0 -15
  296. package/dist/hooks/session-end.d.ts.map +0 -1
  297. package/dist/hooks/session-end.js +0 -60
  298. package/dist/hooks/session-end.js.map +0 -1
  299. package/dist/hooks/session-end.test.js +0 -52
  300. package/dist/hooks/stop.d.ts +0 -35
  301. package/dist/hooks/stop.d.ts.map +0 -1
  302. package/dist/hooks/stop.js +0 -136
  303. package/dist/hooks/stop.js.map +0 -1
  304. package/dist/hooks/transcript-active-task.test.js +0 -342
  305. package/dist/hooks/transcript.d.ts +0 -26
  306. package/dist/hooks/transcript.d.ts.map +0 -1
  307. package/dist/hooks/transcript.js +0 -266
  308. package/dist/hooks/transcript.js.map +0 -1
  309. package/dist/hooks/transcript.test.js +0 -103
  310. package/dist/hooks/user-prompt-submit.d.ts +0 -74
  311. package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
  312. package/dist/hooks/user-prompt-submit.js +0 -256
  313. package/dist/hooks/user-prompt-submit.js.map +0 -1
  314. package/dist/hooks/user-prompt-submit.test.js +0 -118
  315. package/dist/hooks/versioning-gate.d.ts +0 -101
  316. package/dist/hooks/versioning-gate.d.ts.map +0 -1
  317. package/dist/hooks/versioning-gate.js +0 -245
  318. package/dist/hooks/versioning-gate.js.map +0 -1
  319. package/dist/hooks/versioning-gate.test.js +0 -368
  320. package/dist/hooks/workflow-gate.d.ts +0 -64
  321. package/dist/hooks/workflow-gate.d.ts.map +0 -1
  322. package/dist/hooks/workflow-gate.js +0 -152
  323. package/dist/hooks/workflow-gate.js.map +0 -1
  324. package/dist/hooks/workflow-gate.test.js +0 -197
  325. package/dist/hooks-cli.d.ts +0 -25
  326. package/dist/hooks-cli.d.ts.map +0 -1
  327. package/dist/hooks-cli.js +0 -286
  328. package/dist/hooks-cli.js.map +0 -1
  329. package/dist/hooks-cli.test.js +0 -148
  330. package/dist/origin.d.ts +0 -16
  331. package/dist/origin.d.ts.map +0 -1
  332. package/dist/origin.js +0 -92
  333. package/dist/origin.js.map +0 -1
  334. package/dist/packs/seed_lessons_ingest.d.ts +0 -30
  335. package/dist/packs/seed_lessons_ingest.d.ts.map +0 -1
  336. package/dist/packs/seed_lessons_ingest.js +0 -107
  337. package/dist/packs/seed_lessons_ingest.js.map +0 -1
  338. package/dist/project-cli.d.ts +0 -7
  339. package/dist/project-cli.d.ts.map +0 -1
  340. package/dist/project-cli.js +0 -145
  341. package/dist/project-cli.js.map +0 -1
  342. package/dist/project.d.ts +0 -127
  343. package/dist/project.d.ts.map +0 -1
  344. package/dist/project.js +0 -281
  345. package/dist/project.js.map +0 -1
  346. package/dist/project.test.js +0 -287
  347. package/dist/rag/backends/loop_engine.d.ts +0 -61
  348. package/dist/rag/backends/loop_engine.d.ts.map +0 -1
  349. package/dist/rag/backends/loop_engine.js +0 -160
  350. package/dist/rag/backends/loop_engine.js.map +0 -1
  351. package/dist/recall.d.ts +0 -82
  352. package/dist/recall.d.ts.map +0 -1
  353. package/dist/recall.js +0 -81
  354. package/dist/recall.js.map +0 -1
  355. package/dist/runtime/agent_bridge/autospawn.d.ts +0 -131
  356. package/dist/runtime/agent_bridge/autospawn.d.ts.map +0 -1
  357. package/dist/runtime/agent_bridge/autospawn.js +0 -251
  358. package/dist/runtime/agent_bridge/autospawn.js.map +0 -1
  359. package/dist/runtime/chain_state.d.ts +0 -124
  360. package/dist/runtime/chain_state.d.ts.map +0 -1
  361. package/dist/runtime/chain_state.js +0 -189
  362. package/dist/runtime/chain_state.js.map +0 -1
  363. package/dist/runtime/hooks/permission_decision.d.ts +0 -34
  364. package/dist/runtime/hooks/permission_decision.d.ts.map +0 -1
  365. package/dist/runtime/hooks/permission_decision.js +0 -39
  366. package/dist/runtime/hooks/permission_decision.js.map +0 -1
  367. package/dist/runtime/workflow_fsm.d.ts +0 -21
  368. package/dist/runtime/workflow_fsm.d.ts.map +0 -1
  369. package/dist/runtime/workflow_fsm.js +0 -25
  370. package/dist/runtime/workflow_fsm.js.map +0 -1
  371. package/dist/runtime/workflow_map.d.ts +0 -26
  372. package/dist/runtime/workflow_map.d.ts.map +0 -1
  373. package/dist/runtime/workflow_map.js +0 -38
  374. package/dist/runtime/workflow_map.js.map +0 -1
  375. package/dist/scope.d.ts +0 -48
  376. package/dist/scope.d.ts.map +0 -1
  377. package/dist/scope.js +0 -111
  378. package/dist/scope.js.map +0 -1
  379. package/dist/setup/cli/topic_create_step.d.ts +0 -84
  380. package/dist/setup/cli/topic_create_step.d.ts.map +0 -1
  381. package/dist/setup/cli/topic_create_step.js +0 -213
  382. package/dist/setup/cli/topic_create_step.js.map +0 -1
  383. package/dist/system-export.d.ts +0 -65
  384. package/dist/system-export.d.ts.map +0 -1
  385. package/dist/system-export.js +0 -194
  386. package/dist/system-export.js.map +0 -1
  387. package/dist/utterance/classifier.d.ts +0 -53
  388. package/dist/utterance/classifier.d.ts.map +0 -1
  389. package/dist/utterance/classifier.js +0 -184
  390. package/dist/utterance/classifier.js.map +0 -1
  391. package/dist/utterance/classifier.test.js +0 -147
@@ -1,223 +0,0 @@
1
- /**
2
- * Engine binary discovery + persisted-path management.
3
- *
4
- * Resolution chain (per T.1 audit §J + src.legacy precedent):
5
- * 1. `OPENSQUID_ENGINE_BIN` env var — explicit override, always wins
6
- * 2. `~/.opensquid/engine-config.json` `engine_bin` field — persisted choice
7
- * 3. Bundled npm optional dep (`opensquid-engine-<platform>-<arch>`)
8
- * — returns `null` until npm stubs ship (follow-up track)
9
- * 4. Auto-search dev paths under `~/projects/*` and `~/work/*`
10
- * 5. `loop-engine` on `$PATH`
11
- * 6. `null` — caller surfaces a helpful error
12
- *
13
- * First successful resolution from (4) or (5) is persisted to
14
- * `~/.opensquid/engine-config.json` so the next session skips the search.
15
- * Bundled-binary hits (3) are NOT persisted because the path is
16
- * deterministic from the npm install layout and persisting it would
17
- * point at a stale `node_modules/` path after upgrades.
18
- *
19
- * The persisted file is engine-specific so it doesn't collide with the
20
- * existing `~/.opensquid/config.json` written by the chat-daemon stack.
21
- *
22
- * Imports `OPENSQUID_HOME` from `runtime/paths.ts` so the data root
23
- * honors the `OPENSQUID_HOME` env override (tests + relocatable installs).
24
- */
25
- import { promises as fs } from 'node:fs';
26
- import * as os from 'node:os';
27
- import * as path from 'node:path';
28
- import { OPENSQUID_HOME } from '../runtime/paths.js';
29
- import { resolveBundledEngineBin } from './resolver.js';
30
- const ENGINE_BIN_NAME = 'loop-engine';
31
- const ENGINE_CONFIG_FILE = 'engine-config.json';
32
- const DEFAULT_CONFIG = { version: 1 };
33
- function engineConfigPath() {
34
- return path.join(OPENSQUID_HOME(), ENGINE_CONFIG_FILE);
35
- }
36
- export async function loadEngineConfig() {
37
- let raw;
38
- try {
39
- raw = await fs.readFile(engineConfigPath(), 'utf8');
40
- }
41
- catch (e) {
42
- // Missing file is the common-case (no persisted choice yet) —
43
- // silent. Other read errors (EACCES, EIO) are unusual — warn so
44
- // users know why their persisted engine_bin isn't being picked up.
45
- const code = e.code;
46
- if (code !== 'ENOENT') {
47
- process.stderr.write(`[opensquid] engine-config read failed at ${engineConfigPath()} (${String(e)}); ` +
48
- `using defaults.\n`);
49
- }
50
- return { ...DEFAULT_CONFIG };
51
- }
52
- try {
53
- const parsed = JSON.parse(raw);
54
- if (parsed.version === 1)
55
- return parsed;
56
- // Wrong version — treat as malformed for the warning path below.
57
- process.stderr.write(`[opensquid] engine-config at ${engineConfigPath()} has unexpected version=${String(parsed.version)} (want 1); using defaults.\n`);
58
- }
59
- catch (e) {
60
- // Parse-error path is loud — a typo silently dropping the persisted
61
- // engine_bin was the bug A.05 addresses. Return default to keep boot
62
- // resilient but surface the cause so users can fix the file.
63
- process.stderr.write(`[opensquid] engine-config parse failed at ${engineConfigPath()} (${String(e)}); ` +
64
- `using defaults — fix or delete the file to silence this warning.\n`);
65
- }
66
- return { ...DEFAULT_CONFIG };
67
- }
68
- export async function saveEngineConfig(config) {
69
- const p = engineConfigPath();
70
- await fs.mkdir(path.dirname(p), { recursive: true });
71
- await fs.writeFile(p, JSON.stringify(config, null, 2) + '\n', 'utf8');
72
- }
73
- /**
74
- * Resolve the engine binary path using the priority chain above. Writes
75
- * the resolved path back to config when discovered via search so the
76
- * next session is instant. Returns `null` if no working binary could be
77
- * located.
78
- *
79
- * **Re-resolution on every start** (T.7 / T.1.P): a persisted
80
- * `engine_bin` that no longer points at an executable file is cleared
81
- * from the config and the resolver falls through to bundled → dev →
82
- * `$PATH`. This adds ~10-100ms (one extra `fs.stat`) but means a
83
- * deleted / moved / freshly-rebuilt binary silently self-heals on the
84
- * next start instead of failing loudly with `ENOENT`. Bundled hits
85
- * are NOT persisted (deterministic from npm layout); dev-path + `$PATH`
86
- * hits ARE persisted so subsequent sessions skip the search.
87
- */
88
- export async function resolveEngineBin() {
89
- const fromEnv = process.env.OPENSQUID_ENGINE_BIN?.trim();
90
- if (fromEnv)
91
- return fromEnv;
92
- let config = await loadEngineConfig();
93
- if (config.engine_bin) {
94
- if (await isExecutable(config.engine_bin)) {
95
- return config.engine_bin;
96
- }
97
- // Stale persisted path (binary deleted / moved / chmod -x).
98
- // Clear + persist so subsequent calls don't repeat the stat.
99
- delete config.engine_bin;
100
- delete config.engine_bin_resolved_at;
101
- await saveEngineConfig(config);
102
- // Reload so the in-memory `config` matches what's on disk before
103
- // the success-branch writes below mutate + save again.
104
- config = await loadEngineConfig();
105
- }
106
- const bundled = resolveBundledEngineBin();
107
- if (bundled && (await isExecutable(bundled))) {
108
- // Do NOT persist — the npm layout determines this deterministically
109
- // and persisting a `node_modules/` path makes upgrades hostile.
110
- return bundled;
111
- }
112
- const found = await searchCommonPaths();
113
- if (found) {
114
- config.engine_bin = found;
115
- config.engine_bin_resolved_at = new Date().toISOString();
116
- await saveEngineConfig(config);
117
- return found;
118
- }
119
- const onPath = await whichBinary(ENGINE_BIN_NAME);
120
- if (onPath) {
121
- config.engine_bin = onPath;
122
- config.engine_bin_resolved_at = new Date().toISOString();
123
- await saveEngineConfig(config);
124
- return onPath;
125
- }
126
- return null;
127
- }
128
- /**
129
- * Set the engine binary path explicitly and persist. Validates that the
130
- * path points at an executable file before writing.
131
- */
132
- export async function setEngineBin(binPath) {
133
- const abs = path.resolve(binPath);
134
- if (!(await isExecutable(abs))) {
135
- throw new Error(`not an executable file: ${abs}`);
136
- }
137
- const config = await loadEngineConfig();
138
- config.engine_bin = abs;
139
- config.engine_bin_resolved_at = new Date().toISOString();
140
- await saveEngineConfig(config);
141
- return { resolved: abs };
142
- }
143
- /**
144
- * Forget the persisted engine binary path. Forces re-discovery on the
145
- * next `resolveEngineBin` call.
146
- */
147
- export async function forgetEngineBin() {
148
- const config = await loadEngineConfig();
149
- delete config.engine_bin;
150
- delete config.engine_bin_resolved_at;
151
- await saveEngineConfig(config);
152
- }
153
- async function isExecutable(p) {
154
- try {
155
- const stat = await fs.stat(p);
156
- if (!stat.isFile())
157
- return false;
158
- return (stat.mode & 0o111) !== 0;
159
- }
160
- catch {
161
- return false;
162
- }
163
- }
164
- /**
165
- * Walk common dev-machine layouts looking for a release binary.
166
- * Conservative — only checks paths that look like sibling projects of
167
- * the user's `$HOME`. Returns the first hit.
168
- *
169
- * Covered layouts:
170
- * ~/projects/<*>/engine/target/release/loop-engine (loop workspace)
171
- * ~/projects/<*>/target/release/loop-engine (standalone engine repo)
172
- * ~/work/<*>/{engine,}/target/release/loop-engine (alt convention)
173
- */
174
- async function searchCommonPaths() {
175
- const home = os.homedir();
176
- const candidates = [];
177
- const projectsRoot = path.join(home, 'projects');
178
- try {
179
- const dirs = await fs.readdir(projectsRoot, { withFileTypes: true });
180
- for (const entry of dirs) {
181
- if (!entry.isDirectory())
182
- continue;
183
- candidates.push(path.join(projectsRoot, entry.name, 'engine', 'target', 'release', ENGINE_BIN_NAME), path.join(projectsRoot, entry.name, 'target', 'release', ENGINE_BIN_NAME));
184
- }
185
- }
186
- catch {
187
- // ~/projects doesn't exist — skip.
188
- }
189
- const workRoot = path.join(home, 'work');
190
- try {
191
- const dirs = await fs.readdir(workRoot, { withFileTypes: true });
192
- for (const entry of dirs) {
193
- if (!entry.isDirectory())
194
- continue;
195
- candidates.push(path.join(workRoot, entry.name, 'engine', 'target', 'release', ENGINE_BIN_NAME), path.join(workRoot, entry.name, 'target', 'release', ENGINE_BIN_NAME));
196
- }
197
- }
198
- catch {
199
- // ~/work doesn't exist — skip.
200
- }
201
- for (const cand of candidates) {
202
- if (await isExecutable(cand))
203
- return cand;
204
- }
205
- return null;
206
- }
207
- /**
208
- * Cross-platform `which` — search $PATH for an executable named `bin`.
209
- * Returns absolute path or null.
210
- */
211
- async function whichBinary(bin) {
212
- const pathEnv = process.env.PATH ?? '';
213
- const sep = process.platform === 'win32' ? ';' : ':';
214
- for (const dir of pathEnv.split(sep)) {
215
- if (!dir)
216
- continue;
217
- const candidate = path.join(dir, bin);
218
- if (await isExecutable(candidate))
219
- return candidate;
220
- }
221
- return null;
222
- }
223
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/engine/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,eAAe,GAAG,aAAa,CAAC;AACtC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAUhD,MAAM,cAAc,GAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAEpD,SAAS,gBAAgB;IACvB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,8DAA8D;QAC9D,gEAAgE;QAChE,mEAAmE;QACnE,MAAM,IAAI,GAAI,CAA2B,CAAC,IAAI,CAAC;QAC/C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4CAA4C,gBAAgB,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK;gBAC/E,mBAAmB,CACtB,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;QAC/C,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACxC,iEAAiE;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gCAAgC,gBAAgB,EAAE,2BAA2B,MAAM,CACjF,MAAM,CAAC,OAAO,CACf,8BAA8B,CAChC,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,oEAAoE;QACpE,qEAAqE;QACrE,6DAA6D;QAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6CAA6C,gBAAgB,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK;YAChF,oEAAoE,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAoB;IACzD,MAAM,CAAC,GAAG,gBAAgB,EAAE,CAAC;IAC7B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC;IACzD,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,IAAI,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACtC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,MAAM,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1C,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,CAAC;QACD,4DAA4D;QAC5D,6DAA6D;QAC7D,OAAO,MAAM,CAAC,UAAU,CAAC;QACzB,OAAO,MAAM,CAAC,sBAAsB,CAAC;QACrC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/B,iEAAiE;QACjE,uDAAuD;QACvD,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,IAAI,OAAO,IAAI,CAAC,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC7C,oEAAoE;QACpE,gEAAgE;QAChE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACxC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,MAAM,CAAC,sBAAsB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzD,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC;QAC3B,MAAM,CAAC,sBAAsB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzD,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACxC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,MAAM,CAAC,sBAAsB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACzD,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACxC,OAAO,MAAM,CAAC,UAAU,CAAC;IACzB,OAAO,MAAM,CAAC,sBAAsB,CAAC;IACrC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,CAAS;IACnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,iBAAiB;IAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YACnC,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,EACnF,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,CAC1E,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YACnC,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,EAC/E,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,CAAC,CACtE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,MAAM,YAAY,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACrD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,MAAM,YAAY,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Barrel re-export for `opensquid` engine integration.
3
- *
4
- * Public surface:
5
- * - EngineClient + RpcError + ENGINE_ERROR (`./client.js`)
6
- * - resolveEngineBin / setEngineBin / forgetEngineBin / loadEngineConfig
7
- * (`./config.js`)
8
- * - resolveBundledEngineBin + platform probe helpers (`./resolver.js`)
9
- * - registerEngineCli + EngineCliError (`./cli.js`)
10
- * - All wire-shape types (`./types.js`)
11
- */
12
- export { EngineClient, ENGINE_ERROR, RpcError } from './client.js';
13
- export { forgetEngineBin, loadEngineConfig, resolveEngineBin, saveEngineConfig, setEngineBin, type EngineConfig, } from './config.js';
14
- export { binaryNameForPlatform, currentPlatform, packageForPlatform, resolveBundledEngineBin, type PlatformProbe, } from './resolver.js';
15
- export { EngineCliError, registerEngineCli } from './cli.js';
16
- export type { CreateMemoryResult, GetMemoryResult, LessonCaptureFeedbackResult, LessonCreateParams, LessonCreateResult, LessonDiscardResult, LessonListResult, LessonListRow, LessonPromoteResult, LessonRecallHit, LessonRecallResult, LessonSupersedeResult, ManifestActiveLesson, ManifestAssembleParams, ManifestAssembleResult, ManifestMemory, MemoryDeleteResult, MemoryListResult, MemoryListRow, MemoryOrigin, MemoryScope, MemorySearchHit, MemorySearchParams, MemorySearchResult, MemoryUpdateResult, ScopeFilterWire, TaskGetLedgerResult, TaskLogPhaseResult, } from './types.js';
17
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7D,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Barrel re-export for `opensquid` engine integration.
3
- *
4
- * Public surface:
5
- * - EngineClient + RpcError + ENGINE_ERROR (`./client.js`)
6
- * - resolveEngineBin / setEngineBin / forgetEngineBin / loadEngineConfig
7
- * (`./config.js`)
8
- * - resolveBundledEngineBin + platform probe helpers (`./resolver.js`)
9
- * - registerEngineCli + EngineCliError (`./cli.js`)
10
- * - All wire-shape types (`./types.js`)
11
- */
12
- export { EngineClient, ENGINE_ERROR, RpcError } from './client.js';
13
- export { forgetEngineBin, loadEngineConfig, resolveEngineBin, saveEngineConfig, setEngineBin, } from './config.js';
14
- export { binaryNameForPlatform, currentPlatform, packageForPlatform, resolveBundledEngineBin, } from './resolver.js';
15
- export { EngineCliError, registerEngineCli } from './cli.js';
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,GAEb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,GAExB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
@@ -1,62 +0,0 @@
1
- /**
2
- * Bundled-binary resolver for the loop-engine subprocess.
3
- *
4
- * Pattern: esbuild / biomejs / swc — main opensquid package would declare
5
- * 6 platform-specific packages as `optionalDependencies`; each one ships
6
- * a single binary at `bin/loop-engine` (or `.exe` on Windows). npm's
7
- * `os`/`cpu` fields cause wrong-platform packages to skip install, so on
8
- * any given host exactly one optional dep is present and provides the
9
- * right binary.
10
- *
11
- * NOTE: opensquid 0.5.108 ships LOCAL-BUILD ONLY (per T.1.J §10). The
12
- * `optionalDependencies` block is not yet declared in package.json — npm
13
- * stubs land in a follow-up track. This resolver returns `null` on every
14
- * call until then, and callers fall through to `config.ts` dev-path +
15
- * `$PATH` discovery. The mapping table is kept now so the wiring is
16
- * already correct when stubs land.
17
- *
18
- * Runtime path:
19
- * 1. Map `(process.platform, process.arch)` → optional-dep name.
20
- * 2. Try `createRequire(import.meta.url).resolve(...)` on that
21
- * package's package.json. Returns `<dir>/bin/<name>` if installed.
22
- * 3. If not installed (npm `--no-optional`, wrong-platform install,
23
- * local pre-publish dev), return `null`. Caller falls back to the
24
- * dev-path + $PATH chain in `config.ts`.
25
- *
26
- * Resolution is synchronous + side-effect-free.
27
- */
28
- export interface PlatformProbe {
29
- platform: NodeJS.Platform;
30
- arch: string;
31
- }
32
- /**
33
- * Compute the (platform, arch) tuple for the current process. Wrapped
34
- * for unit testability — tests inject a synthetic probe.
35
- */
36
- export declare function currentPlatform(): PlatformProbe;
37
- /**
38
- * Look up the optional-dep package name for a given platform. Returns
39
- * `null` when the (platform, arch) pair isn't in the supported matrix.
40
- */
41
- export declare function packageForPlatform(probe: PlatformProbe): string | null;
42
- /**
43
- * Look up the binary filename for a given platform (`.exe` on Windows).
44
- */
45
- export declare function binaryNameForPlatform(probe: PlatformProbe): string | null;
46
- /**
47
- * Resolve the bundled binary path via the optional-dep mechanism.
48
- *
49
- * Returns `null` when:
50
- * - the current (platform, arch) isn't in the supported matrix,
51
- * - the optional dep isn't installed (pre-publish dev, npm
52
- * `--no-optional`, wrong-platform install), or
53
- * - the dep is installed but the expected `bin/<name>` file is missing
54
- * (broken publish — diagnostic-only; caller falls through).
55
- *
56
- * v0.6c audit fix: use `path.dirname + path.join` not string slice — on
57
- * Windows `require.resolve` returns `\` separators; slicing on the
58
- * `"/package.json".length` suffix would silently mis-strip and the
59
- * concatenation would mix separators.
60
- */
61
- export declare function resolveBundledEngineBin(probe?: PlatformProbe): string | null;
62
- //# sourceMappingURL=resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/engine/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAoCH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,aAAa,CAE/C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAGtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAGzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,GAAE,aAAiC,GAAG,MAAM,GAAG,IAAI,CAa/F"}
@@ -1,103 +0,0 @@
1
- /**
2
- * Bundled-binary resolver for the loop-engine subprocess.
3
- *
4
- * Pattern: esbuild / biomejs / swc — main opensquid package would declare
5
- * 6 platform-specific packages as `optionalDependencies`; each one ships
6
- * a single binary at `bin/loop-engine` (or `.exe` on Windows). npm's
7
- * `os`/`cpu` fields cause wrong-platform packages to skip install, so on
8
- * any given host exactly one optional dep is present and provides the
9
- * right binary.
10
- *
11
- * NOTE: opensquid 0.5.108 ships LOCAL-BUILD ONLY (per T.1.J §10). The
12
- * `optionalDependencies` block is not yet declared in package.json — npm
13
- * stubs land in a follow-up track. This resolver returns `null` on every
14
- * call until then, and callers fall through to `config.ts` dev-path +
15
- * `$PATH` discovery. The mapping table is kept now so the wiring is
16
- * already correct when stubs land.
17
- *
18
- * Runtime path:
19
- * 1. Map `(process.platform, process.arch)` → optional-dep name.
20
- * 2. Try `createRequire(import.meta.url).resolve(...)` on that
21
- * package's package.json. Returns `<dir>/bin/<name>` if installed.
22
- * 3. If not installed (npm `--no-optional`, wrong-platform install,
23
- * local pre-publish dev), return `null`. Caller falls back to the
24
- * dev-path + $PATH chain in `config.ts`.
25
- *
26
- * Resolution is synchronous + side-effect-free.
27
- */
28
- import { createRequire } from 'node:module';
29
- import * as path from 'node:path';
30
- /**
31
- * Supported targets and their optional-dep package names. Stays in sync
32
- * with `optionalDependencies` in package.json (when added) and with the
33
- * loop-engine release matrix. If you change any of those, change all.
34
- */
35
- const PACKAGE_FOR_PLATFORM = {
36
- 'darwin-x64': 'opensquid-engine-darwin-x64',
37
- 'darwin-arm64': 'opensquid-engine-darwin-arm64',
38
- 'linux-x64': 'opensquid-engine-linux-x64',
39
- 'linux-arm64': 'opensquid-engine-linux-arm64',
40
- 'win32-x64': 'opensquid-engine-win32-x64',
41
- 'win32-arm64': 'opensquid-engine-win32-arm64',
42
- };
43
- const BIN_NAME_FOR_PLATFORM = {
44
- 'darwin-x64': 'loop-engine',
45
- 'darwin-arm64': 'loop-engine',
46
- 'linux-x64': 'loop-engine',
47
- 'linux-arm64': 'loop-engine',
48
- 'win32-x64': 'loop-engine.exe',
49
- 'win32-arm64': 'loop-engine.exe',
50
- };
51
- /**
52
- * Compute the (platform, arch) tuple for the current process. Wrapped
53
- * for unit testability — tests inject a synthetic probe.
54
- */
55
- export function currentPlatform() {
56
- return { platform: process.platform, arch: process.arch };
57
- }
58
- /**
59
- * Look up the optional-dep package name for a given platform. Returns
60
- * `null` when the (platform, arch) pair isn't in the supported matrix.
61
- */
62
- export function packageForPlatform(probe) {
63
- const key = `${probe.platform}-${probe.arch}`;
64
- return PACKAGE_FOR_PLATFORM[key] ?? null;
65
- }
66
- /**
67
- * Look up the binary filename for a given platform (`.exe` on Windows).
68
- */
69
- export function binaryNameForPlatform(probe) {
70
- const key = `${probe.platform}-${probe.arch}`;
71
- return BIN_NAME_FOR_PLATFORM[key] ?? null;
72
- }
73
- /**
74
- * Resolve the bundled binary path via the optional-dep mechanism.
75
- *
76
- * Returns `null` when:
77
- * - the current (platform, arch) isn't in the supported matrix,
78
- * - the optional dep isn't installed (pre-publish dev, npm
79
- * `--no-optional`, wrong-platform install), or
80
- * - the dep is installed but the expected `bin/<name>` file is missing
81
- * (broken publish — diagnostic-only; caller falls through).
82
- *
83
- * v0.6c audit fix: use `path.dirname + path.join` not string slice — on
84
- * Windows `require.resolve` returns `\` separators; slicing on the
85
- * `"/package.json".length` suffix would silently mis-strip and the
86
- * concatenation would mix separators.
87
- */
88
- export function resolveBundledEngineBin(probe = currentPlatform()) {
89
- const pkg = packageForPlatform(probe);
90
- const binName = binaryNameForPlatform(probe);
91
- if (!pkg || !binName)
92
- return null;
93
- const req = createRequire(import.meta.url);
94
- try {
95
- const pkgJson = req.resolve(`${pkg}/package.json`);
96
- return path.join(path.dirname(pkgJson), 'bin', binName);
97
- }
98
- catch {
99
- // MODULE_NOT_FOUND — optional dep not installed for this host.
100
- return null;
101
- }
102
- }
103
- //# sourceMappingURL=resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/engine/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAUlC;;;;GAIG;AACH,MAAM,oBAAoB,GAAgC;IACxD,YAAY,EAAE,6BAA6B;IAC3C,cAAc,EAAE,+BAA+B;IAC/C,WAAW,EAAE,4BAA4B;IACzC,aAAa,EAAE,8BAA8B;IAC7C,WAAW,EAAE,4BAA4B;IACzC,aAAa,EAAE,8BAA8B;CAC9C,CAAC;AAEF,MAAM,qBAAqB,GAAgC;IACzD,YAAY,EAAE,aAAa;IAC3B,cAAc,EAAE,aAAa;IAC7B,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,iBAAiB;IAC9B,aAAa,EAAE,iBAAiB;CACjC,CAAC;AAOF;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAoB;IACrD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAiB,CAAC;IAC7D,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAoB;IACxD,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAiB,CAAC;IAC7D,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAAC,QAAuB,eAAe,EAAE;IAC9E,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,95 +0,0 @@
1
- /**
2
- * Daemon-singleton acquire-or-spawn for the loop-engine UDS daemon.
3
- *
4
- * One engine process per host. All opensquid hooks + sessions share
5
- * the same engine over a Unix domain socket at
6
- * `~/.opensquid/loop-engine.sock`. This is the keystone for cross-
7
- * session memory recall — session A writes a memory, session B reads
8
- * it through the same engine without per-process spawn cost.
9
- *
10
- * Flow (per spec T.4 / audit T.1.Y + T.1.Z + T.1.BB + T.1.DD):
11
- *
12
- * 1. Windows guard — UDS is Unix-only; named-pipe support is a
13
- * follow-up. Windows callers fall back to per-process stdio spawn
14
- * by setting `OPENSQUID_ENGINE_SOCKET=disable` upstream.
15
- *
16
- * 2. Path-byte guard — macOS limits UDS paths to 104 bytes (Linux
17
- * 108). `~/.opensquid/loop-engine.sock` ≈ 30 chars on typical
18
- * homes, but exotic `$HOME` values can exceed it. Refuse at 100
19
- * to leave margin.
20
- *
21
- * 3. Fast path — if the socket file exists, try to connect. Success
22
- * means an engine is already running; return the socket with
23
- * `spawnedByUs: false`. ECONNREFUSED means the file is stale (a
24
- * previous engine crashed without unlinking); unlink and fall
25
- * through to the spawn path.
26
- *
27
- * 4. Slow path (lock + spawn):
28
- * a. Touch `~/.opensquid/loop-engine.lock` so `proper-lockfile`
29
- * has a stable inode to lock against.
30
- * b. Acquire the lock with retry — serializes concurrent spawn
31
- * attempts across multiple opensquid processes.
32
- * c. RECHECK after the lock: another process may have spawned
33
- * the engine while we waited. If yes, connect + return.
34
- * d. Resolve the engine binary via existing `resolveEngineBin()`.
35
- * e. Spawn detached + `stdio: 'ignore'` so the engine outlives
36
- * the parent (true daemon semantics). `'inherit'` would hold
37
- * the parent's stdout/stderr pipes open and block parent exit
38
- * (per subprocess-lifecycle audit). Engine logs route to
39
- * /dev/null in this mode; `RUST_LOG=...` + a redirect-to-file
40
- * is the workaround if diagnostics are needed.
41
- * f. Write `~/.opensquid/loop-engine.pid` with the spawned pid
42
- * BEFORE `proc.unref()` so T.7's `engine kill` command can
43
- * find it.
44
- * g. `proc.unref()` — let the parent event loop exit without
45
- * waiting on the engine.
46
- * h. Wait for the socket file to appear (engine binds before
47
- * accept; 10s budget covers cold-start HNSW rehydrate of
48
- * ~76 memories on typical hardware).
49
- * i. Connect; return with `spawnedByUs: true`.
50
- *
51
- * 5. Always release the lock in a `finally` block.
52
- *
53
- * NOT a singleton class — exported as a plain async function so
54
- * callers can compose / inject without instance state. Concurrency
55
- * safety lives in `proper-lockfile`, not in this module.
56
- */
57
- import { type Socket } from 'node:net';
58
- /** Engine socket path. Override `OPENSQUID_HOME` to relocate. */
59
- export declare function engineSocketPath(): string;
60
- /** Lock file used to serialize concurrent spawn attempts. */
61
- export declare function engineLockPath(): string;
62
- /**
63
- * Pidfile path used by `engine kill` (T.7). Written after spawn
64
- * returns, before `unref()`. Note: the engine process itself does
65
- * NOT manage this file — opensquid owns its lifecycle since opensquid
66
- * is the one that spawned the engine. T.7 will add a startup-time
67
- * cleanup hook for the spawned-by-us case.
68
- */
69
- export declare function enginePidPath(): string;
70
- export interface EngineConnection {
71
- /** Connected socket to the engine's UDS endpoint. */
72
- socket: Socket;
73
- /**
74
- * `true` when this caller's invocation was the one that spawned the
75
- * engine process (cold start path). `false` when an existing engine
76
- * was found and connected to (warm path). Useful for telemetry +
77
- * test assertions; production callers usually ignore it.
78
- */
79
- spawnedByUs: boolean;
80
- }
81
- /**
82
- * Acquire a connection to the shared loop-engine daemon, spawning
83
- * one if none is running. Safe to call concurrently from multiple
84
- * processes — `proper-lockfile` serializes spawn attempts so only
85
- * one engine starts per `~/.opensquid/loop-engine.sock` lifetime.
86
- *
87
- * Throws on:
88
- * - Windows (UDS unsupported; use stdio mode upstream)
89
- * - socket path exceeds platform byte limit
90
- * - engine binary not resolvable
91
- * - socket never appears within `SOCKET_WAIT_TIMEOUT_MS`
92
- * - underlying spawn / connect / lock errors
93
- */
94
- export declare function acquireOrSpawnEngine(): Promise<EngineConnection>;
95
- //# sourceMappingURL=singleton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../../src/engine/singleton.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAKH,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AAoChD,iEAAiE;AACjE,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,6DAA6D;AAC7D,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAcD,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAkJtE"}