opensquid 0.5.432 → 0.5.447

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 (440) 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/event.d.ts.map +1 -1
  7. package/dist/functions/event.js +18 -2
  8. package/dist/functions/event.js.map +1 -1
  9. package/dist/functions/index.d.ts +4 -0
  10. package/dist/functions/index.d.ts.map +1 -1
  11. package/dist/functions/index.js +4 -0
  12. package/dist/functions/index.js.map +1 -1
  13. package/dist/functions/inject_context.d.ts +18 -0
  14. package/dist/functions/inject_context.d.ts.map +1 -0
  15. package/dist/functions/inject_context.js +16 -0
  16. package/dist/functions/inject_context.js.map +1 -0
  17. package/dist/functions/procedure_pre_inject.d.ts +23 -0
  18. package/dist/functions/procedure_pre_inject.d.ts.map +1 -0
  19. package/dist/functions/procedure_pre_inject.js +49 -0
  20. package/dist/functions/procedure_pre_inject.js.map +1 -0
  21. package/dist/functions/registry.d.ts +6 -0
  22. package/dist/functions/registry.d.ts.map +1 -1
  23. package/dist/functions/registry.js.map +1 -1
  24. package/dist/functions/rubric_pre_inject.d.ts.map +1 -1
  25. package/dist/functions/rubric_pre_inject.js +2 -1
  26. package/dist/functions/rubric_pre_inject.js.map +1 -1
  27. package/dist/functions/set_request_type.d.ts +11 -0
  28. package/dist/functions/set_request_type.d.ts.map +1 -0
  29. package/dist/functions/set_request_type.js +34 -0
  30. package/dist/functions/set_request_type.js.map +1 -0
  31. package/dist/functions/shell_parse.d.ts +1 -0
  32. package/dist/functions/shell_parse.d.ts.map +1 -1
  33. package/dist/functions/shell_parse.js +22 -4
  34. package/dist/functions/shell_parse.js.map +1 -1
  35. package/dist/packs/loader.d.ts.map +1 -1
  36. package/dist/packs/loader.js +26 -0
  37. package/dist/packs/loader.js.map +1 -1
  38. package/dist/runtime/bootstrap.d.ts.map +1 -1
  39. package/dist/runtime/bootstrap.js +6 -0
  40. package/dist/runtime/bootstrap.js.map +1 -1
  41. package/dist/runtime/fsm_state.d.ts +6 -0
  42. package/dist/runtime/fsm_state.d.ts.map +1 -1
  43. package/dist/runtime/fsm_state.js +14 -0
  44. package/dist/runtime/fsm_state.js.map +1 -1
  45. package/dist/runtime/handoff/render.d.ts +5 -4
  46. package/dist/runtime/handoff/render.d.ts.map +1 -1
  47. package/dist/runtime/handoff/render.js +7 -7
  48. package/dist/runtime/handoff/render.js.map +1 -1
  49. package/dist/runtime/handoff/stranded_scoping.d.ts +21 -0
  50. package/dist/runtime/handoff/stranded_scoping.d.ts.map +1 -0
  51. package/dist/runtime/handoff/stranded_scoping.js +39 -0
  52. package/dist/runtime/handoff/stranded_scoping.js.map +1 -0
  53. package/dist/runtime/hooks/active_task_mirror.js +0 -0
  54. package/dist/runtime/hooks/apply_patch.js +0 -0
  55. package/dist/runtime/hooks/dispatch.d.ts.map +1 -1
  56. package/dist/runtime/hooks/dispatch.js +3 -0
  57. package/dist/runtime/hooks/dispatch.js.map +1 -1
  58. package/dist/runtime/hooks/hook_output.js +0 -0
  59. package/dist/runtime/hooks/memory_reconcile.js +0 -0
  60. package/dist/runtime/hooks/new_project_detect.js +0 -0
  61. package/dist/runtime/hooks/profession_resolver.js +0 -0
  62. package/dist/runtime/hooks/scope_intent.js +0 -0
  63. package/dist/runtime/hooks/session-start.js +17 -0
  64. package/dist/runtime/hooks/session-start.js.map +1 -1
  65. package/dist/runtime/hooks/session_id.js +0 -0
  66. package/dist/runtime/hooks/session_liveness.js +0 -0
  67. package/dist/runtime/hooks/stop_drive.js +0 -0
  68. package/dist/runtime/hooks/stop_stream.js +0 -0
  69. package/dist/runtime/hooks/subagent_guard.js +0 -0
  70. package/dist/runtime/hooks/transcript.js +0 -0
  71. package/dist/runtime/hooks/transcript_tasks.js +0 -0
  72. package/dist/runtime/hooks/user-prompt-submit.d.ts.map +1 -1
  73. package/dist/runtime/hooks/user-prompt-submit.js +22 -1
  74. package/dist/runtime/hooks/user-prompt-submit.js.map +1 -1
  75. package/dist/runtime/ralph/orchestrator.d.ts.map +1 -1
  76. package/dist/runtime/ralph/orchestrator.js +2 -1
  77. package/dist/runtime/ralph/orchestrator.js.map +1 -1
  78. package/dist/runtime/request_type.d.ts +33 -0
  79. package/dist/runtime/request_type.d.ts.map +1 -0
  80. package/dist/runtime/request_type.js +38 -0
  81. package/dist/runtime/request_type.js.map +1 -0
  82. package/dist/runtime/session_state.d.ts +11 -0
  83. package/dist/runtime/session_state.d.ts.map +1 -1
  84. package/dist/runtime/session_state.js +30 -0
  85. package/dist/runtime/session_state.js.map +1 -1
  86. package/dist/runtime/types.d.ts +5 -0
  87. package/dist/runtime/types.d.ts.map +1 -1
  88. package/dist/runtime/types.js +3 -0
  89. package/dist/runtime/types.js.map +1 -1
  90. package/dist/setup/cli/limits_state.d.ts.map +1 -1
  91. package/dist/setup/cli/limits_state.js +6 -40
  92. package/dist/setup/cli/limits_state.js.map +1 -1
  93. package/dist/setup/cli/pack_walk.d.ts +32 -0
  94. package/dist/setup/cli/pack_walk.d.ts.map +1 -0
  95. package/dist/setup/cli/pack_walk.js +76 -0
  96. package/dist/setup/cli/pack_walk.js.map +1 -0
  97. package/dist/setup/cli/permissions_state.d.ts.map +1 -1
  98. package/dist/setup/cli/permissions_state.js +6 -37
  99. package/dist/setup/cli/permissions_state.js.map +1 -1
  100. package/dist/setup/cli/triggers_state.d.ts.map +1 -1
  101. package/dist/setup/cli/triggers_state.js +3 -29
  102. package/dist/setup/cli/triggers_state.js.map +1 -1
  103. package/dist/workgraph/events.d.ts.map +1 -1
  104. package/dist/workgraph/events.js +10 -0
  105. package/dist/workgraph/events.js.map +1 -1
  106. package/dist/workgraph/store.d.ts.map +1 -1
  107. package/dist/workgraph/store.js +5 -0
  108. package/dist/workgraph/store.js.map +1 -1
  109. package/dist/workgraph/types.d.ts +2 -1
  110. package/dist/workgraph/types.d.ts.map +1 -1
  111. package/docs/ARCHITECTURE.md +268 -0
  112. package/docs/pack-runtime.md +26 -10
  113. package/package.json +5 -3
  114. package/packs/builtin/coding-flow/procedure.md +43 -0
  115. package/packs/builtin/coding-flow/skills/entry-and-handoffs/skill.yaml +49 -6
  116. package/packs/builtin/coding-flow/skills/pause-stop-guard/skill.yaml +11 -1
  117. package/packs/builtin/default-discipline/manifest.yaml +15 -6
  118. package/packs/builtin/pack-architect/skills/skill-yaml-author-walkthrough/skill.yaml +8 -0
  119. package/dist/anti-drift/evaluator.d.ts +0 -88
  120. package/dist/anti-drift/evaluator.d.ts.map +0 -1
  121. package/dist/anti-drift/evaluator.js +0 -417
  122. package/dist/anti-drift/evaluator.js.map +0 -1
  123. package/dist/anti-drift/evaluator.test.js +0 -78
  124. package/dist/anti-drift/rules.d.ts +0 -80
  125. package/dist/anti-drift/rules.d.ts.map +0 -1
  126. package/dist/anti-drift/rules.js +0 -368
  127. package/dist/anti-drift/rules.js.map +0 -1
  128. package/dist/anti-drift/rules.test.js +0 -213
  129. package/dist/anti-drift/state.d.ts +0 -107
  130. package/dist/anti-drift/state.d.ts.map +0 -1
  131. package/dist/anti-drift/state.js +0 -177
  132. package/dist/anti-drift/state.js.map +0 -1
  133. package/dist/anti-drift/state.test.js +0 -120
  134. package/dist/chat/adapters/discord.d.ts +0 -41
  135. package/dist/chat/adapters/discord.d.ts.map +0 -1
  136. package/dist/chat/adapters/discord.js +0 -176
  137. package/dist/chat/adapters/discord.js.map +0 -1
  138. package/dist/chat/adapters/discord.test.js +0 -25
  139. package/dist/chat/adapters/slack.d.ts +0 -43
  140. package/dist/chat/adapters/slack.d.ts.map +0 -1
  141. package/dist/chat/adapters/slack.js +0 -172
  142. package/dist/chat/adapters/slack.js.map +0 -1
  143. package/dist/chat/adapters/slack.test.js +0 -30
  144. package/dist/chat/adapters/telegram.d.ts +0 -148
  145. package/dist/chat/adapters/telegram.d.ts.map +0 -1
  146. package/dist/chat/adapters/telegram.js +0 -498
  147. package/dist/chat/adapters/telegram.js.map +0 -1
  148. package/dist/chat/adapters/telegram.test.js +0 -94
  149. package/dist/chat/config.d.ts +0 -98
  150. package/dist/chat/config.d.ts.map +0 -1
  151. package/dist/chat/config.js +0 -185
  152. package/dist/chat/config.js.map +0 -1
  153. package/dist/chat/daemon/active-project.d.ts +0 -17
  154. package/dist/chat/daemon/active-project.d.ts.map +0 -1
  155. package/dist/chat/daemon/active-project.js +0 -23
  156. package/dist/chat/daemon/active-project.js.map +0 -1
  157. package/dist/chat/daemon/autospawn.d.ts +0 -40
  158. package/dist/chat/daemon/autospawn.d.ts.map +0 -1
  159. package/dist/chat/daemon/autospawn.js +0 -129
  160. package/dist/chat/daemon/autospawn.js.map +0 -1
  161. package/dist/chat/daemon/autospawn.test.js +0 -112
  162. package/dist/chat/daemon/cli.d.ts +0 -18
  163. package/dist/chat/daemon/cli.d.ts.map +0 -1
  164. package/dist/chat/daemon/cli.js +0 -71
  165. package/dist/chat/daemon/cli.js.map +0 -1
  166. package/dist/chat/daemon/collisions.js +0 -384
  167. package/dist/chat/daemon/health-check.d.ts +0 -69
  168. package/dist/chat/daemon/health-check.d.ts.map +0 -1
  169. package/dist/chat/daemon/health-check.js +0 -112
  170. package/dist/chat/daemon/health-check.js.map +0 -1
  171. package/dist/chat/daemon/inbox-read.d.ts +0 -35
  172. package/dist/chat/daemon/inbox-read.d.ts.map +0 -1
  173. package/dist/chat/daemon/inbox-read.js +0 -75
  174. package/dist/chat/daemon/inbox-read.js.map +0 -1
  175. package/dist/chat/daemon/inbox-read.test.js +0 -97
  176. package/dist/chat/daemon/inbox.d.ts +0 -63
  177. package/dist/chat/daemon/inbox.d.ts.map +0 -1
  178. package/dist/chat/daemon/inbox.js +0 -56
  179. package/dist/chat/daemon/inbox.js.map +0 -1
  180. package/dist/chat/daemon/inbox.test.js +0 -110
  181. package/dist/chat/daemon/lifecycle.d.ts +0 -71
  182. package/dist/chat/daemon/lifecycle.d.ts.map +0 -1
  183. package/dist/chat/daemon/lifecycle.js +0 -221
  184. package/dist/chat/daemon/lifecycle.js.map +0 -1
  185. package/dist/chat/daemon/lifecycle.test.js +0 -163
  186. package/dist/chat/daemon/protocol.d.ts +0 -107
  187. package/dist/chat/daemon/protocol.d.ts.map +0 -1
  188. package/dist/chat/daemon/protocol.js +0 -54
  189. package/dist/chat/daemon/protocol.js.map +0 -1
  190. package/dist/chat/daemon/routing.d.ts +0 -140
  191. package/dist/chat/daemon/routing.d.ts.map +0 -1
  192. package/dist/chat/daemon/routing.js +0 -198
  193. package/dist/chat/daemon/routing.js.map +0 -1
  194. package/dist/chat/daemon/routing.test.js +0 -259
  195. package/dist/chat/daemon/rpc-client.d.ts +0 -45
  196. package/dist/chat/daemon/rpc-client.d.ts.map +0 -1
  197. package/dist/chat/daemon/rpc-client.js +0 -133
  198. package/dist/chat/daemon/rpc-client.js.map +0 -1
  199. package/dist/chat/daemon/rpc-server.d.ts +0 -39
  200. package/dist/chat/daemon/rpc-server.d.ts.map +0 -1
  201. package/dist/chat/daemon/rpc-server.js +0 -385
  202. package/dist/chat/daemon/rpc-server.js.map +0 -1
  203. package/dist/chat/daemon/rpc.test.js +0 -177
  204. package/dist/chat/daemon/subscribers.js +0 -257
  205. package/dist/chat/daemon/worker.d.ts +0 -27
  206. package/dist/chat/daemon/worker.d.ts.map +0 -1
  207. package/dist/chat/daemon/worker.js +0 -313
  208. package/dist/chat/daemon/worker.js.map +0 -1
  209. package/dist/chat/daemon/workspace-topic.js +0 -324
  210. package/dist/chat/env-token.d.ts +0 -60
  211. package/dist/chat/env-token.d.ts.map +0 -1
  212. package/dist/chat/env-token.js +0 -137
  213. package/dist/chat/env-token.js.map +0 -1
  214. package/dist/chat/env-token.test.js +0 -160
  215. package/dist/chat/factory.d.ts +0 -30
  216. package/dist/chat/factory.d.ts.map +0 -1
  217. package/dist/chat/factory.js +0 -50
  218. package/dist/chat/factory.js.map +0 -1
  219. package/dist/chat/factory.test.js +0 -55
  220. package/dist/chat/gateway.d.ts +0 -176
  221. package/dist/chat/gateway.d.ts.map +0 -1
  222. package/dist/chat/gateway.js +0 -146
  223. package/dist/chat/gateway.js.map +0 -1
  224. package/dist/chat/gateway.test.js +0 -192
  225. package/dist/claude-md.d.ts +0 -39
  226. package/dist/claude-md.d.ts.map +0 -1
  227. package/dist/claude-md.js +0 -113
  228. package/dist/claude-md.js.map +0 -1
  229. package/dist/claude-md.test.js +0 -91
  230. package/dist/codex/activate.d.ts +0 -66
  231. package/dist/codex/activate.d.ts.map +0 -1
  232. package/dist/codex/activate.js +0 -329
  233. package/dist/codex/activate.js.map +0 -1
  234. package/dist/codex/activate.test.js +0 -229
  235. package/dist/codex/bundled-default/bundled-default.test.js +0 -161
  236. package/dist/codex/cli-publish.test.js +0 -133
  237. package/dist/codex/cli.d.ts +0 -35
  238. package/dist/codex/cli.d.ts.map +0 -1
  239. package/dist/codex/cli.js +0 -554
  240. package/dist/codex/cli.js.map +0 -1
  241. package/dist/codex/cli.test.js +0 -277
  242. package/dist/codex/import-skill-md.d.ts +0 -53
  243. package/dist/codex/import-skill-md.d.ts.map +0 -1
  244. package/dist/codex/import-skill-md.js +0 -236
  245. package/dist/codex/import-skill-md.js.map +0 -1
  246. package/dist/codex/import-skill-md.test.js +0 -225
  247. package/dist/codex/loader.d.ts +0 -27
  248. package/dist/codex/loader.d.ts.map +0 -1
  249. package/dist/codex/loader.js +0 -86
  250. package/dist/codex/loader.js.map +0 -1
  251. package/dist/codex/loader.test.js +0 -75
  252. package/dist/codex/parse.d.ts +0 -28
  253. package/dist/codex/parse.d.ts.map +0 -1
  254. package/dist/codex/parse.js +0 -309
  255. package/dist/codex/parse.js.map +0 -1
  256. package/dist/codex/parse.test.js +0 -241
  257. package/dist/codex/store.d.ts +0 -87
  258. package/dist/codex/store.d.ts.map +0 -1
  259. package/dist/codex/store.js +0 -205
  260. package/dist/codex/store.js.map +0 -1
  261. package/dist/codex/store.test.js +0 -242
  262. package/dist/codex/types.d.ts +0 -398
  263. package/dist/codex/types.d.ts.map +0 -1
  264. package/dist/codex/types.js +0 -21
  265. package/dist/codex/types.js.map +0 -1
  266. package/dist/config.d.ts +0 -53
  267. package/dist/config.d.ts.map +0 -1
  268. package/dist/config.js +0 -202
  269. package/dist/config.js.map +0 -1
  270. package/dist/config.test.js +0 -117
  271. package/dist/engine/cli.d.ts +0 -14
  272. package/dist/engine/cli.d.ts.map +0 -1
  273. package/dist/engine/cli.js +0 -171
  274. package/dist/engine/cli.js.map +0 -1
  275. package/dist/engine/client.d.ts +0 -219
  276. package/dist/engine/client.d.ts.map +0 -1
  277. package/dist/engine/client.js +0 -312
  278. package/dist/engine/client.js.map +0 -1
  279. package/dist/engine/config.d.ts +0 -62
  280. package/dist/engine/config.d.ts.map +0 -1
  281. package/dist/engine/config.js +0 -223
  282. package/dist/engine/config.js.map +0 -1
  283. package/dist/engine/index.d.ts +0 -17
  284. package/dist/engine/index.d.ts.map +0 -1
  285. package/dist/engine/index.js +0 -16
  286. package/dist/engine/index.js.map +0 -1
  287. package/dist/engine/resolver.d.ts +0 -62
  288. package/dist/engine/resolver.d.ts.map +0 -1
  289. package/dist/engine/resolver.js +0 -103
  290. package/dist/engine/resolver.js.map +0 -1
  291. package/dist/engine/singleton.d.ts +0 -95
  292. package/dist/engine/singleton.d.ts.map +0 -1
  293. package/dist/engine/singleton.js +0 -325
  294. package/dist/engine/singleton.js.map +0 -1
  295. package/dist/engine/types.d.ts +0 -402
  296. package/dist/engine/types.d.ts.map +0 -1
  297. package/dist/engine/types.js +0 -22
  298. package/dist/engine/types.js.map +0 -1
  299. package/dist/engine-binary-resolver.js +0 -110
  300. package/dist/engine-binary-resolver.test.js +0 -61
  301. package/dist/engine-cli.js +0 -60
  302. package/dist/engine-client.js +0 -301
  303. package/dist/engine-client.test.js +0 -118
  304. package/dist/functions/chain_state.d.ts +0 -51
  305. package/dist/functions/chain_state.d.ts.map +0 -1
  306. package/dist/functions/chain_state.js +0 -59
  307. package/dist/functions/chain_state.js.map +0 -1
  308. package/dist/hooks/drift-catalog.d.ts +0 -68
  309. package/dist/hooks/drift-catalog.d.ts.map +0 -1
  310. package/dist/hooks/drift-catalog.js +0 -184
  311. package/dist/hooks/drift-catalog.js.map +0 -1
  312. package/dist/hooks/drift-catalog.test.js +0 -154
  313. package/dist/hooks/drift-patterns.d.ts +0 -110
  314. package/dist/hooks/drift-patterns.d.ts.map +0 -1
  315. package/dist/hooks/drift-patterns.js +0 -289
  316. package/dist/hooks/drift-patterns.js.map +0 -1
  317. package/dist/hooks/drift-patterns.test.js +0 -325
  318. package/dist/hooks/engine-vocab-gate.d.ts +0 -108
  319. package/dist/hooks/engine-vocab-gate.d.ts.map +0 -1
  320. package/dist/hooks/engine-vocab-gate.js +0 -225
  321. package/dist/hooks/engine-vocab-gate.js.map +0 -1
  322. package/dist/hooks/engine-vocab-gate.test.js +0 -170
  323. package/dist/hooks/heartbeat.d.ts +0 -107
  324. package/dist/hooks/heartbeat.d.ts.map +0 -1
  325. package/dist/hooks/heartbeat.js +0 -316
  326. package/dist/hooks/heartbeat.js.map +0 -1
  327. package/dist/hooks/heartbeat.test.js +0 -393
  328. package/dist/hooks/honesty-ledger-session-scope.test.js +0 -100
  329. package/dist/hooks/honesty-ledger.d.ts +0 -123
  330. package/dist/hooks/honesty-ledger.d.ts.map +0 -1
  331. package/dist/hooks/honesty-ledger.js +0 -226
  332. package/dist/hooks/honesty-ledger.js.map +0 -1
  333. package/dist/hooks/honesty-ledger.test.js +0 -466
  334. package/dist/hooks/inline-report-check.d.ts +0 -63
  335. package/dist/hooks/inline-report-check.d.ts.map +0 -1
  336. package/dist/hooks/inline-report-check.js +0 -88
  337. package/dist/hooks/inline-report-check.js.map +0 -1
  338. package/dist/hooks/inline-report-check.test.js +0 -96
  339. package/dist/hooks/pre-tool-use.d.ts +0 -62
  340. package/dist/hooks/pre-tool-use.d.ts.map +0 -1
  341. package/dist/hooks/pre-tool-use.js +0 -342
  342. package/dist/hooks/pre-tool-use.js.map +0 -1
  343. package/dist/hooks/pre-tool-use.test.js +0 -134
  344. package/dist/hooks/session-end.d.ts +0 -15
  345. package/dist/hooks/session-end.d.ts.map +0 -1
  346. package/dist/hooks/session-end.js +0 -60
  347. package/dist/hooks/session-end.js.map +0 -1
  348. package/dist/hooks/session-end.test.js +0 -52
  349. package/dist/hooks/stop.d.ts +0 -35
  350. package/dist/hooks/stop.d.ts.map +0 -1
  351. package/dist/hooks/stop.js +0 -136
  352. package/dist/hooks/stop.js.map +0 -1
  353. package/dist/hooks/transcript-active-task.test.js +0 -342
  354. package/dist/hooks/transcript.d.ts +0 -26
  355. package/dist/hooks/transcript.d.ts.map +0 -1
  356. package/dist/hooks/transcript.js +0 -266
  357. package/dist/hooks/transcript.js.map +0 -1
  358. package/dist/hooks/transcript.test.js +0 -103
  359. package/dist/hooks/user-prompt-submit.d.ts +0 -74
  360. package/dist/hooks/user-prompt-submit.d.ts.map +0 -1
  361. package/dist/hooks/user-prompt-submit.js +0 -256
  362. package/dist/hooks/user-prompt-submit.js.map +0 -1
  363. package/dist/hooks/user-prompt-submit.test.js +0 -118
  364. package/dist/hooks/versioning-gate.d.ts +0 -101
  365. package/dist/hooks/versioning-gate.d.ts.map +0 -1
  366. package/dist/hooks/versioning-gate.js +0 -245
  367. package/dist/hooks/versioning-gate.js.map +0 -1
  368. package/dist/hooks/versioning-gate.test.js +0 -368
  369. package/dist/hooks/workflow-gate.d.ts +0 -64
  370. package/dist/hooks/workflow-gate.d.ts.map +0 -1
  371. package/dist/hooks/workflow-gate.js +0 -152
  372. package/dist/hooks/workflow-gate.js.map +0 -1
  373. package/dist/hooks/workflow-gate.test.js +0 -197
  374. package/dist/hooks-cli.d.ts +0 -25
  375. package/dist/hooks-cli.d.ts.map +0 -1
  376. package/dist/hooks-cli.js +0 -286
  377. package/dist/hooks-cli.js.map +0 -1
  378. package/dist/hooks-cli.test.js +0 -148
  379. package/dist/origin.d.ts +0 -16
  380. package/dist/origin.d.ts.map +0 -1
  381. package/dist/origin.js +0 -92
  382. package/dist/origin.js.map +0 -1
  383. package/dist/packs/seed_lessons_ingest.d.ts +0 -30
  384. package/dist/packs/seed_lessons_ingest.d.ts.map +0 -1
  385. package/dist/packs/seed_lessons_ingest.js +0 -107
  386. package/dist/packs/seed_lessons_ingest.js.map +0 -1
  387. package/dist/project-cli.d.ts +0 -7
  388. package/dist/project-cli.d.ts.map +0 -1
  389. package/dist/project-cli.js +0 -145
  390. package/dist/project-cli.js.map +0 -1
  391. package/dist/project.d.ts +0 -127
  392. package/dist/project.d.ts.map +0 -1
  393. package/dist/project.js +0 -281
  394. package/dist/project.js.map +0 -1
  395. package/dist/project.test.js +0 -287
  396. package/dist/rag/backends/loop_engine.d.ts +0 -61
  397. package/dist/rag/backends/loop_engine.d.ts.map +0 -1
  398. package/dist/rag/backends/loop_engine.js +0 -160
  399. package/dist/rag/backends/loop_engine.js.map +0 -1
  400. package/dist/recall.d.ts +0 -82
  401. package/dist/recall.d.ts.map +0 -1
  402. package/dist/recall.js +0 -81
  403. package/dist/recall.js.map +0 -1
  404. package/dist/runtime/agent_bridge/autospawn.d.ts +0 -131
  405. package/dist/runtime/agent_bridge/autospawn.d.ts.map +0 -1
  406. package/dist/runtime/agent_bridge/autospawn.js +0 -251
  407. package/dist/runtime/agent_bridge/autospawn.js.map +0 -1
  408. package/dist/runtime/chain_state.d.ts +0 -124
  409. package/dist/runtime/chain_state.d.ts.map +0 -1
  410. package/dist/runtime/chain_state.js +0 -189
  411. package/dist/runtime/chain_state.js.map +0 -1
  412. package/dist/runtime/hooks/permission_decision.d.ts +0 -34
  413. package/dist/runtime/hooks/permission_decision.d.ts.map +0 -1
  414. package/dist/runtime/hooks/permission_decision.js +0 -39
  415. package/dist/runtime/hooks/permission_decision.js.map +0 -1
  416. package/dist/runtime/workflow_fsm.d.ts +0 -21
  417. package/dist/runtime/workflow_fsm.d.ts.map +0 -1
  418. package/dist/runtime/workflow_fsm.js +0 -25
  419. package/dist/runtime/workflow_fsm.js.map +0 -1
  420. package/dist/runtime/workflow_map.d.ts +0 -26
  421. package/dist/runtime/workflow_map.d.ts.map +0 -1
  422. package/dist/runtime/workflow_map.js +0 -38
  423. package/dist/runtime/workflow_map.js.map +0 -1
  424. package/dist/scope.d.ts +0 -48
  425. package/dist/scope.d.ts.map +0 -1
  426. package/dist/scope.js +0 -111
  427. package/dist/scope.js.map +0 -1
  428. package/dist/setup/cli/topic_create_step.d.ts +0 -84
  429. package/dist/setup/cli/topic_create_step.d.ts.map +0 -1
  430. package/dist/setup/cli/topic_create_step.js +0 -213
  431. package/dist/setup/cli/topic_create_step.js.map +0 -1
  432. package/dist/system-export.d.ts +0 -65
  433. package/dist/system-export.d.ts.map +0 -1
  434. package/dist/system-export.js +0 -194
  435. package/dist/system-export.js.map +0 -1
  436. package/dist/utterance/classifier.d.ts +0 -53
  437. package/dist/utterance/classifier.d.ts.map +0 -1
  438. package/dist/utterance/classifier.js +0 -184
  439. package/dist/utterance/classifier.js.map +0 -1
  440. package/dist/utterance/classifier.test.js +0 -147
@@ -1,133 +0,0 @@
1
- /**
2
- * chat-daemon RPC client (v0.7.1 Phase B).
3
- *
4
- * Used by the MCP server when it wants to send a chat message but
5
- * doesn't want to start its own long-poll adapter (which would
6
- * collide with any other MCP server holding the same bot token).
7
- *
8
- * Behavior:
9
- * - One short-lived connection per request — keeps the implementation
10
- * trivial and avoids reconnect/backoff logic. Performance is fine
11
- * for v0.7.1's expected traffic (a handful of agent reports per
12
- * project session).
13
- * - Returns a typed result on success.
14
- * - Throws `DaemonUnreachableError` when the socket can't be reached
15
- * so callers can fall back to in-process send.
16
- * - Throws `DaemonRpcError` on JSON-RPC error responses.
17
- */
18
- import { connect } from "node:net";
19
- import { daemonSockAddress, } from "./protocol.js";
20
- export class DaemonUnreachableError extends Error {
21
- constructor(message) {
22
- super(message);
23
- this.name = "DaemonUnreachableError";
24
- }
25
- }
26
- export class DaemonRpcError extends Error {
27
- code;
28
- constructor(message, code) {
29
- super(message);
30
- this.code = code;
31
- this.name = "DaemonRpcError";
32
- }
33
- }
34
- let requestCounter = 0;
35
- export class DaemonClient {
36
- address;
37
- connectTimeoutMs;
38
- requestTimeoutMs;
39
- constructor(opts = {}) {
40
- this.address = daemonSockAddress(opts.dataRoot);
41
- this.connectTimeoutMs = opts.connectTimeoutMs ?? 1500;
42
- this.requestTimeoutMs = opts.requestTimeoutMs ?? 5000;
43
- }
44
- ping() {
45
- return this.call("ping", {});
46
- }
47
- listChannels() {
48
- return this.call("list_channels", {});
49
- }
50
- send(params) {
51
- return this.call("send", params);
52
- }
53
- createTopic(params) {
54
- return this.call("create_topic", params);
55
- }
56
- async call(method, params) {
57
- const sock = await this.openSocket();
58
- try {
59
- const id = ++requestCounter;
60
- const req = { jsonrpc: "2.0", id, method: method, params };
61
- sock.write(`${JSON.stringify(req)}\n`);
62
- const line = await readOneLine(sock, this.requestTimeoutMs);
63
- const res = JSON.parse(line);
64
- if ("error" in res) {
65
- throw new DaemonRpcError(res.error.message, res.error.code);
66
- }
67
- return res.result;
68
- }
69
- finally {
70
- sock.destroy();
71
- }
72
- }
73
- openSocket() {
74
- return new Promise((resolve, reject) => {
75
- const sock = connect({ path: this.address });
76
- const t = setTimeout(() => {
77
- sock.destroy();
78
- reject(new DaemonUnreachableError(`connect timeout (${this.connectTimeoutMs}ms)`));
79
- }, this.connectTimeoutMs);
80
- sock.once("connect", () => {
81
- clearTimeout(t);
82
- resolve(sock);
83
- });
84
- sock.once("error", (err) => {
85
- clearTimeout(t);
86
- // ENOENT (no socket file) / ECONNREFUSED (no listener) /
87
- // EACCES (permission) → daemon-unreachable. Other errors
88
- // propagate as the original error.
89
- if (err.code === "ENOENT" || err.code === "ECONNREFUSED" || err.code === "EACCES") {
90
- reject(new DaemonUnreachableError(`${err.code}: ${err.message}`));
91
- }
92
- else {
93
- reject(err);
94
- }
95
- });
96
- });
97
- }
98
- }
99
- function readOneLine(sock, timeoutMs) {
100
- return new Promise((resolve, reject) => {
101
- sock.setEncoding("utf8");
102
- let buf = "";
103
- const onData = (chunk) => {
104
- buf += chunk;
105
- const nl = buf.indexOf("\n");
106
- if (nl >= 0) {
107
- cleanup();
108
- resolve(buf.slice(0, nl));
109
- }
110
- };
111
- const onError = (err) => {
112
- cleanup();
113
- reject(err);
114
- };
115
- const onEnd = () => {
116
- cleanup();
117
- reject(new DaemonUnreachableError("daemon closed connection without response"));
118
- };
119
- const t = setTimeout(() => {
120
- cleanup();
121
- reject(new DaemonUnreachableError(`request timeout (${timeoutMs}ms)`));
122
- }, timeoutMs);
123
- const cleanup = () => {
124
- clearTimeout(t);
125
- sock.off("data", onData);
126
- sock.off("error", onError);
127
- sock.off("end", onEnd);
128
- };
129
- sock.on("data", onData);
130
- sock.on("error", onError);
131
- sock.on("end", onEnd);
132
- });
133
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../../src.legacy/chat/daemon/rpc-client.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- /**
2
- * chat-daemon RPC server (v0.7.1 Phase B).
3
- *
4
- * Runs INSIDE the daemon worker process. Listens on the platform-
5
- * correct socket address (Unix socket / named pipe) and dispatches
6
- * JSON-RPC method calls to the in-process ChatGateway.
7
- *
8
- * Connection model: stateless. Each line is one request; each response
9
- * goes back on the same connection. Connections may pipeline multiple
10
- * requests, and the server reads line-by-line (we keep a per-connection
11
- * buffer until \n).
12
- */
13
- import type { ChatGateway } from "../gateway.js";
14
- export interface RpcServerOptions {
15
- gateway: ChatGateway;
16
- dataRoot?: string;
17
- startedAt?: number;
18
- /** Daemon's process version string — surfaced by `ping`. */
19
- version?: string;
20
- /** Pid surfaced by `ping`. Defaults to process.pid. */
21
- pid?: number;
22
- /** Hook for tests: callback when a request is dispatched. */
23
- onRequest?: (method: string) => void;
24
- }
25
- export declare class RpcServer {
26
- private readonly opts;
27
- private server;
28
- private listening;
29
- private readonly address;
30
- private readonly startedAt;
31
- constructor(opts: RpcServerOptions);
32
- listen(): Promise<void>;
33
- close(): Promise<void>;
34
- private handleConnection;
35
- private dispatchLine;
36
- private respond;
37
- private handle;
38
- }
39
- //# sourceMappingURL=rpc-server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-server.d.ts","sourceRoot":"","sources":["../../../src.legacy/chat/daemon/rpc-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAmBjD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,qBAAa,SAAS;IAMR,OAAO,CAAC,QAAQ,CAAC,IAAI;IALjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEN,IAAI,EAAE,gBAAgB;IAW7C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,OAAO;YAQD,MAAM;CAiGrB"}
@@ -1,385 +0,0 @@
1
- /**
2
- * chat-daemon RPC server (v0.7.1 Phase B).
3
- *
4
- * Runs INSIDE the daemon worker process. Listens on the platform-
5
- * correct socket address (Unix socket / named pipe) and dispatches
6
- * JSON-RPC method calls to the in-process ChatGateway.
7
- *
8
- * Connection model: stateless. Each line is one request; each response
9
- * goes back on the same connection. Connections may pipeline multiple
10
- * requests, and the server reads line-by-line (we keep a per-connection
11
- * buffer until \n).
12
- */
13
- import { createServer } from "node:net";
14
- import { existsSync, unlinkSync } from "node:fs";
15
- import { TopicGoneError } from "../adapters/telegram.js";
16
- import { recordTopicGoneEvent } from "./collisions.js";
17
- import { JSON_RPC_INTERNAL_ERROR, JSON_RPC_INVALID_PARAMS, JSON_RPC_INVALID_REQUEST, JSON_RPC_METHOD_NOT_FOUND, JSON_RPC_PARSE_ERROR, daemonSockAddress, } from "./protocol.js";
18
- import { loadProjectChatRouting } from "./routing.js";
19
- import { SubscriberRegistry } from "./subscribers.js";
20
- import { clearBinding, findOwnerOfBinding, resolveOrCreateTopic } from "./workspace-topic.js";
21
- export class RpcServer {
22
- opts;
23
- server;
24
- listening = false;
25
- address;
26
- startedAt;
27
- /**
28
- * TPS.6 patch 1 (v0.5.125) — long-lived subscriber registry. The
29
- * gateway.onMessage wire-up that broadcasts to this registry lands
30
- * in patch 2 (v0.5.126). For patch 1, the daemon accepts
31
- * subscribe/unsubscribe RPCs but does not yet push notifications.
32
- */
33
- subscribers = new SubscriberRegistry();
34
- constructor(opts) {
35
- this.opts = opts;
36
- this.address = daemonSockAddress(opts.dataRoot);
37
- this.startedAt = opts.startedAt ?? Date.now();
38
- this.server = createServer((socket) => this.handleConnection(socket));
39
- // Treat client errors as informational; a misbehaving client must
40
- // not crash the daemon.
41
- this.server.on("error", () => {
42
- /* swallowed at server level; per-conn errors handled below */
43
- });
44
- }
45
- async listen() {
46
- if (this.listening)
47
- return;
48
- // Unix-socket clean-up: a previously-aborted daemon may have left a
49
- // stale socket file. Removing it is safe because the previous
50
- // daemon is gone (verified by the lifecycle layer before we got
51
- // here). Windows named pipes are kernel objects with no file
52
- // residue, so this is a no-op there.
53
- if (process.platform !== "win32" && existsSync(this.address)) {
54
- try {
55
- unlinkSync(this.address);
56
- }
57
- catch {
58
- /* race-tolerant */
59
- }
60
- }
61
- await new Promise((resolve, reject) => {
62
- this.server.once("error", reject);
63
- this.server.listen(this.address, () => {
64
- this.server.off("error", reject);
65
- this.listening = true;
66
- resolve();
67
- });
68
- });
69
- }
70
- async close() {
71
- if (!this.listening)
72
- return;
73
- await new Promise((resolve) => {
74
- this.server.close(() => resolve());
75
- });
76
- this.listening = false;
77
- if (process.platform !== "win32" && existsSync(this.address)) {
78
- try {
79
- unlinkSync(this.address);
80
- }
81
- catch {
82
- /* race-tolerant */
83
- }
84
- }
85
- }
86
- handleConnection(socket) {
87
- let buf = "";
88
- socket.setEncoding("utf8");
89
- socket.on("data", (chunk) => {
90
- buf += chunk;
91
- let nl;
92
- while ((nl = buf.indexOf("\n")) >= 0) {
93
- const line = buf.slice(0, nl);
94
- buf = buf.slice(nl + 1);
95
- if (line.trim().length === 0)
96
- continue;
97
- this.dispatchLine(line, socket);
98
- }
99
- });
100
- socket.on("error", () => {
101
- // Half-open connections are common; closing here keeps the daemon
102
- // tidy without surfacing an error to other clients. Subscriber
103
- // eviction is handled by the registry's own socket 'error'/'close'
104
- // listeners installed at register() time, so we don't need to
105
- // touch the registry here.
106
- try {
107
- socket.destroy();
108
- }
109
- catch {
110
- /* already gone */
111
- }
112
- });
113
- }
114
- dispatchLine(line, socket) {
115
- let req;
116
- try {
117
- req = JSON.parse(line);
118
- }
119
- catch {
120
- this.respond(socket, parseError());
121
- return;
122
- }
123
- if (!req || req.jsonrpc !== "2.0" || typeof req.id === "undefined" || !req.method) {
124
- this.respond(socket, invalidRequest(req?.id ?? null));
125
- return;
126
- }
127
- if (this.opts.onRequest)
128
- this.opts.onRequest(req.method);
129
- void this.handle(req, socket).then((res) => this.respond(socket, res));
130
- }
131
- respond(socket, response) {
132
- try {
133
- socket.write(`${JSON.stringify(response)}\n`);
134
- }
135
- catch {
136
- /* dropped — connection gone */
137
- }
138
- }
139
- /**
140
- * TPS.7 (v0.5.130) — async stale-topic recovery. Locates the
141
- * workspace that owned the now-stale binding, clears it via
142
- * `clearBinding`, and records a `TopicGoneEvent` in collisions.jsonl
143
- * (which fires a debounced Telegram notification through the same
144
- * surface TPS.5 collisions use).
145
- *
146
- * Fire-and-forget from the send-RPC catch block. NEVER throws — all
147
- * failures log to stderr. The original send already failed; the
148
- * caller doesn't care about recovery errors.
149
- *
150
- * Re-binding does NOT happen here — by design it defers to the next
151
- * MCP-bridge subscribe (TPS.6 auto-boot path), which is lockfile-
152
- * protected so two concurrent recoveries can't double-create topics.
153
- */
154
- async handleTopicGone(err) {
155
- try {
156
- const workspaceUuid = await findOwnerOfBinding({
157
- chatId: err.chatId,
158
- topicId: err.threadId,
159
- ...(this.opts.dataRoot !== undefined ? { dataRoot: this.opts.dataRoot } : {}),
160
- });
161
- if (workspaceUuid === null) {
162
- // No project claims this binding — either the user manually
163
- // cleared it, a concurrent recovery beat us to it, or the
164
- // binding was never tracked. Nothing to clean; nothing to
165
- // notify.
166
- return;
167
- }
168
- await clearBinding({
169
- workspaceUuid,
170
- ...(this.opts.dataRoot !== undefined ? { dataRoot: this.opts.dataRoot } : {}),
171
- });
172
- await recordTopicGoneEvent({
173
- workspaceUuid,
174
- chatId: err.chatId,
175
- topicId: err.threadId,
176
- underlyingDescription: err.message,
177
- gateway: this.opts.gateway,
178
- ...(this.opts.dataRoot !== undefined ? { dataRoot: this.opts.dataRoot } : {}),
179
- });
180
- }
181
- catch (recoveryErr) {
182
- process.stderr.write(`[rpc-server] topic-gone recovery failed for chatId=${err.chatId} topicId=${err.threadId}: ${recoveryErr instanceof Error ? recoveryErr.message : String(recoveryErr)}\n`);
183
- }
184
- }
185
- async handle(req, socket) {
186
- try {
187
- switch (req.method) {
188
- case "subscribe": {
189
- const p = req.params;
190
- if (!p ||
191
- typeof p.session_id !== "string" ||
192
- p.session_id.length === 0 ||
193
- typeof p.workspace_uuid !== "string" ||
194
- typeof p.workspace_path !== "string" ||
195
- !Array.isArray(p.chat_ids)) {
196
- return failure(req.id, JSON_RPC_INVALID_PARAMS, "subscribe: session_id, workspace_uuid, workspace_path, chat_ids[] required");
197
- }
198
- for (const id of p.chat_ids) {
199
- if (typeof id !== "string") {
200
- return failure(req.id, JSON_RPC_INVALID_PARAMS, "subscribe: chat_ids[] must be strings");
201
- }
202
- }
203
- this.subscribers.register({
204
- session_id: p.session_id,
205
- workspace_uuid: p.workspace_uuid,
206
- workspace_path: p.workspace_path,
207
- chat_ids: p.chat_ids,
208
- socket,
209
- });
210
- // TPS.6 patch 4 (v0.5.128) — daemon-side auto-boot. When the
211
- // workspace has a configured supergroup but no auto_bound
212
- // binding yet, resolve-or-create the forum topic now so the
213
- // MCP bridge starts seeing per-workspace-routed inbound
214
- // messages without requiring a separate `opensquid setup
215
- // chat` wizard run. resolveOrCreateTopic is idempotent —
216
- // existing bindings come back as {created:false} with the
217
- // existing topic_id/topic_name.
218
- //
219
- // Skipped conditions (all degrade silently to a wildcard-
220
- // routed subscription; subscribers see general topic only):
221
- // - workspace_uuid is the "no-project" sentinel
222
- // - chat-routing.json missing or has no
223
- // telegram.report_channel (no destination)
224
- // - resolveOrCreateTopic throws (logged to stderr, never
225
- // blocks subscribe ack)
226
- const autoBoot = await tryAutoBootTopic(p.workspace_uuid, p.workspace_path, this.opts.dataRoot);
227
- if (autoBoot) {
228
- return success(req.id, {
229
- ok: true,
230
- bound_topic_id: autoBoot.topicId,
231
- bound_topic_name: autoBoot.topicName,
232
- });
233
- }
234
- return success(req.id, { ok: true });
235
- }
236
- case "unsubscribe": {
237
- const p = req.params;
238
- if (!p || typeof p.session_id !== "string" || p.session_id.length === 0) {
239
- return failure(req.id, JSON_RPC_INVALID_PARAMS, "unsubscribe: session_id required");
240
- }
241
- this.subscribers.unregister(p.session_id);
242
- return success(req.id, { ok: true });
243
- }
244
- case "ping":
245
- return success(req.id, {
246
- pong: true,
247
- pid: this.opts.pid ?? process.pid,
248
- version: this.opts.version ?? "unknown",
249
- });
250
- case "list_channels": {
251
- // 0.7.4 (#147): walk active adapters and ask which are
252
- // outbound-only (degraded due to 409 collision with an
253
- // external poller). Only the telegram adapter currently
254
- // exposes isOutboundOnly(); duck-type test so other
255
- // platforms can opt in later without changing this code.
256
- const platforms = this.opts.gateway.activePlatforms();
257
- const outboundOnly = [];
258
- for (const p of platforms) {
259
- const adapter = this.opts.gateway.getAdapter(p);
260
- const maybe = adapter;
261
- if (typeof maybe?.isOutboundOnly === "function" && maybe.isOutboundOnly()) {
262
- outboundOnly.push(p);
263
- }
264
- }
265
- return success(req.id, {
266
- active_platforms: platforms,
267
- uptime_ms: Date.now() - this.startedAt,
268
- outbound_only_platforms: outboundOnly,
269
- });
270
- }
271
- case "send": {
272
- const p = req.params;
273
- if (!p || typeof p.channel !== "string" || typeof p.text !== "string") {
274
- return failure(req.id, JSON_RPC_INVALID_PARAMS, "send: channel + text required");
275
- }
276
- try {
277
- const result = await this.opts.gateway.send({
278
- channel: p.channel,
279
- text: p.text,
280
- replyTo: p.replyTo,
281
- threadId: p.threadId,
282
- });
283
- return success(req.id, {
284
- ok: true,
285
- platform: result.platform,
286
- message_id: result.messageId,
287
- delivered_at: result.deliveredAt.toISOString(),
288
- });
289
- }
290
- catch (err) {
291
- // TPS.7 (v0.5.130) — typed stale-topic detection. Fire the
292
- // recovery asynchronously so the caller gets the original
293
- // failure (the send still failed; the daemon cleans up the
294
- // stale binding in the background, and the next MCP-bridge
295
- // subscribe rebinds via TPS.6 auto-boot).
296
- if (err instanceof TopicGoneError) {
297
- void this.handleTopicGone(err);
298
- }
299
- // Re-throw to the outer catch which formats the JSON-RPC
300
- // failure (preserves the existing error contract).
301
- throw err;
302
- }
303
- }
304
- case "create_topic": {
305
- const p = req.params;
306
- if (!p ||
307
- p.platform !== "telegram" ||
308
- typeof p.chat_id !== "string" ||
309
- typeof p.name !== "string") {
310
- return failure(req.id, JSON_RPC_INVALID_PARAMS, "create_topic: platform='telegram', chat_id, name required");
311
- }
312
- const adapter = this.opts.gateway.getAdapter(p.platform);
313
- if (!adapter ||
314
- typeof adapter.createTopic !== "function") {
315
- return failure(req.id, JSON_RPC_INTERNAL_ERROR, `${p.platform} adapter does not support topic creation (or not active)`);
316
- }
317
- const adapterAny = adapter;
318
- const res = await adapterAny.createTopic(p.chat_id, p.name, {
319
- iconColor: p.icon_color,
320
- iconCustomEmojiId: p.icon_custom_emoji_id,
321
- });
322
- return success(req.id, res);
323
- }
324
- default:
325
- return failure(req.id, JSON_RPC_METHOD_NOT_FOUND, `unknown method: ${req.method}`);
326
- }
327
- }
328
- catch (err) {
329
- return failure(req.id, JSON_RPC_INTERNAL_ERROR, err instanceof Error ? err.message : String(err));
330
- }
331
- }
332
- }
333
- // ---------------------------------------------------------------------
334
- // JSON-RPC response helpers
335
- // ---------------------------------------------------------------------
336
- function success(id, result) {
337
- return { jsonrpc: "2.0", id, result };
338
- }
339
- function failure(id, code, message) {
340
- return { jsonrpc: "2.0", id, error: { code, message } };
341
- }
342
- function parseError() {
343
- return failure(null, JSON_RPC_PARSE_ERROR, "parse error");
344
- }
345
- function invalidRequest(id) {
346
- return failure(id, JSON_RPC_INVALID_REQUEST, "invalid jsonrpc request");
347
- }
348
- // ---------------------------------------------------------------------
349
- // TPS.6 patch 4 (v0.5.128) — auto-boot helper
350
- // ---------------------------------------------------------------------
351
- /**
352
- * Try to resolve-or-create a Telegram forum topic for a workspace at
353
- * subscribe time. Returns null when the workspace can't be auto-bound
354
- * (no project, no routing file, no report_channel, or resolve threw).
355
- * Never throws — failures only log to stderr.
356
- */
357
- async function tryAutoBootTopic(workspaceUuid, workspacePath, dataRoot) {
358
- if (!workspaceUuid || workspaceUuid === "no-project")
359
- return null;
360
- let chatId;
361
- try {
362
- const routing = await loadProjectChatRouting(workspaceUuid, dataRoot);
363
- chatId = routing?.telegram?.report_channel;
364
- }
365
- catch (err) {
366
- process.stderr.write(`[rpc-server] auto-boot: loadProjectChatRouting failed for ${workspaceUuid}: ${err instanceof Error ? err.message : String(err)}\n`);
367
- return null;
368
- }
369
- if (!chatId || chatId.length === 0)
370
- return null;
371
- try {
372
- const result = await resolveOrCreateTopic({
373
- workspaceUuid,
374
- workspacePath,
375
- chatId,
376
- mode: "auto-boot",
377
- ...(dataRoot !== undefined ? { dataRoot } : {}),
378
- });
379
- return { topicId: result.topicId, topicName: result.topicName };
380
- }
381
- catch (err) {
382
- process.stderr.write(`[rpc-server] auto-boot: resolveOrCreateTopic failed for ${workspaceUuid} (chatId=${chatId}): ${err instanceof Error ? err.message : String(err)}\n`);
383
- return null;
384
- }
385
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"rpc-server.js","sourceRoot":"","sources":["../../../src.legacy/chat/daemon/rpc-server.ts"],"names":[],"mappings":"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"}