@synap-core/cli 1.11.0 → 1.12.2

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 (452) hide show
  1. package/README.md +23 -198
  2. package/dist/build-info.json +6 -0
  3. package/dist/commands/agent-run.js +3 -2
  4. package/dist/commands/agent-run.js.map +1 -1
  5. package/dist/commands/agents.d.ts +33 -17
  6. package/dist/commands/agents.js +203 -237
  7. package/dist/commands/agents.js.map +1 -1
  8. package/dist/commands/app.d.ts +143 -0
  9. package/dist/commands/app.js +523 -0
  10. package/dist/commands/app.js.map +1 -0
  11. package/dist/commands/automate.d.ts +21 -0
  12. package/dist/commands/automate.js +42 -0
  13. package/dist/commands/automate.js.map +1 -0
  14. package/dist/commands/automation-schema.test.d.ts +16 -0
  15. package/dist/commands/automation-schema.test.js +77 -0
  16. package/dist/commands/automation-schema.test.js.map +1 -0
  17. package/dist/commands/automation.d.ts +12 -0
  18. package/dist/commands/automation.js +80 -35
  19. package/dist/commands/automation.js.map +1 -1
  20. package/dist/commands/bridge-setup.d.ts +14 -1
  21. package/dist/commands/bridge-setup.js +392 -128
  22. package/dist/commands/bridge-setup.js.map +1 -1
  23. package/dist/commands/cap-connections.d.ts +4 -4
  24. package/dist/commands/cap-connections.js +14 -14
  25. package/dist/commands/cap-connections.js.map +1 -1
  26. package/dist/commands/capability.d.ts +2 -0
  27. package/dist/commands/capability.js +218 -168
  28. package/dist/commands/capability.js.map +1 -1
  29. package/dist/commands/catalog.d.ts +275 -0
  30. package/dist/commands/catalog.js +481 -0
  31. package/dist/commands/catalog.js.map +1 -0
  32. package/dist/commands/cell.d.ts +155 -8
  33. package/dist/commands/cell.js +416 -40
  34. package/dist/commands/cell.js.map +1 -1
  35. package/dist/commands/centrality.js +1 -13
  36. package/dist/commands/centrality.js.map +1 -1
  37. package/dist/commands/connect.d.ts +38 -13
  38. package/dist/commands/connect.js +68 -167
  39. package/dist/commands/connect.js.map +1 -1
  40. package/dist/commands/connections.d.ts +3 -2
  41. package/dist/commands/connections.js +95 -25
  42. package/dist/commands/connections.js.map +1 -1
  43. package/dist/commands/context.js +7 -1
  44. package/dist/commands/context.js.map +1 -1
  45. package/dist/commands/data-extra.d.ts +34 -0
  46. package/dist/commands/data-extra.js +193 -23
  47. package/dist/commands/data-extra.js.map +1 -1
  48. package/dist/commands/data.d.ts +120 -2
  49. package/dist/commands/data.js +293 -20
  50. package/dist/commands/data.js.map +1 -1
  51. package/dist/commands/diagnose.d.ts +66 -4
  52. package/dist/commands/diagnose.js +285 -28
  53. package/dist/commands/diagnose.js.map +1 -1
  54. package/dist/commands/doc.d.ts +11 -4
  55. package/dist/commands/doc.js +39 -14
  56. package/dist/commands/doc.js.map +1 -1
  57. package/dist/commands/doctor.d.ts +112 -3
  58. package/dist/commands/doctor.js +657 -32
  59. package/dist/commands/doctor.js.map +1 -1
  60. package/dist/commands/explain.js +5 -5
  61. package/dist/commands/explain.js.map +1 -1
  62. package/dist/commands/import.d.ts +368 -13
  63. package/dist/commands/import.js +1064 -54
  64. package/dist/commands/import.js.map +1 -1
  65. package/dist/commands/init.d.ts +20 -9
  66. package/dist/commands/init.js +433 -973
  67. package/dist/commands/init.js.map +1 -1
  68. package/dist/commands/keys.d.ts +1 -0
  69. package/dist/commands/keys.js +15 -2
  70. package/dist/commands/keys.js.map +1 -1
  71. package/dist/commands/knowledge.d.ts +22 -6
  72. package/dist/commands/knowledge.js +117 -55
  73. package/dist/commands/knowledge.js.map +1 -1
  74. package/dist/commands/lens.d.ts +37 -1
  75. package/dist/commands/lens.js +192 -71
  76. package/dist/commands/lens.js.map +1 -1
  77. package/dist/commands/market-authoring.d.ts +29 -2
  78. package/dist/commands/market-authoring.js +348 -7
  79. package/dist/commands/market-authoring.js.map +1 -1
  80. package/dist/commands/market-official.d.ts +58 -0
  81. package/dist/commands/market-official.js +84 -0
  82. package/dist/commands/market-official.js.map +1 -0
  83. package/dist/commands/market.d.ts +400 -16
  84. package/dist/commands/market.js +1802 -146
  85. package/dist/commands/market.js.map +1 -1
  86. package/dist/commands/mcp.d.ts +60 -25
  87. package/dist/commands/mcp.js +251 -64
  88. package/dist/commands/mcp.js.map +1 -1
  89. package/dist/commands/open.d.ts +39 -9
  90. package/dist/commands/open.js +80 -25
  91. package/dist/commands/open.js.map +1 -1
  92. package/dist/commands/playbook.d.ts +42 -0
  93. package/dist/commands/playbook.js +162 -0
  94. package/dist/commands/playbook.js.map +1 -0
  95. package/dist/commands/pod.js +1 -1
  96. package/dist/commands/pod.js.map +1 -1
  97. package/dist/commands/pods.d.ts +5 -0
  98. package/dist/commands/pods.js +97 -116
  99. package/dist/commands/pods.js.map +1 -1
  100. package/dist/commands/proposals-actions.d.ts +62 -0
  101. package/dist/commands/proposals-actions.js +143 -8
  102. package/dist/commands/proposals-actions.js.map +1 -1
  103. package/dist/commands/proposals-await.d.ts +68 -0
  104. package/dist/commands/proposals-await.js +248 -0
  105. package/dist/commands/proposals-await.js.map +1 -0
  106. package/dist/commands/proton-setup.d.ts +73 -0
  107. package/dist/commands/proton-setup.js +577 -0
  108. package/dist/commands/proton-setup.js.map +1 -0
  109. package/dist/commands/providers.d.ts +23 -0
  110. package/dist/commands/providers.js +126 -1
  111. package/dist/commands/providers.js.map +1 -1
  112. package/dist/commands/raycast.js +6 -2
  113. package/dist/commands/raycast.js.map +1 -1
  114. package/dist/commands/rule.d.ts +150 -0
  115. package/dist/commands/rule.js +447 -0
  116. package/dist/commands/rule.js.map +1 -0
  117. package/dist/commands/session-wait.d.ts +111 -0
  118. package/dist/commands/session-wait.js +209 -0
  119. package/dist/commands/session-wait.js.map +1 -0
  120. package/dist/commands/sessions.d.ts +52 -0
  121. package/dist/commands/sessions.js +478 -58
  122. package/dist/commands/sessions.js.map +1 -1
  123. package/dist/commands/skill-manage.d.ts +21 -0
  124. package/dist/commands/skill-manage.js +136 -19
  125. package/dist/commands/skill-manage.js.map +1 -1
  126. package/dist/commands/skills.js +16 -0
  127. package/dist/commands/skills.js.map +1 -1
  128. package/dist/commands/status.d.ts +1 -4
  129. package/dist/commands/status.js +5 -34
  130. package/dist/commands/status.js.map +1 -1
  131. package/dist/commands/statusline.backoff.test.d.ts +13 -0
  132. package/dist/commands/statusline.backoff.test.js +100 -0
  133. package/dist/commands/statusline.backoff.test.js.map +1 -0
  134. package/dist/commands/statusline.js +16 -9
  135. package/dist/commands/statusline.js.map +1 -1
  136. package/dist/commands/sync-status.d.ts +12 -0
  137. package/dist/commands/sync-status.js +125 -0
  138. package/dist/commands/sync-status.js.map +1 -0
  139. package/dist/commands/templates-retire.d.ts +34 -0
  140. package/dist/commands/templates-retire.js +192 -0
  141. package/dist/commands/templates-retire.js.map +1 -0
  142. package/dist/commands/tools.js +6 -21
  143. package/dist/commands/tools.js.map +1 -1
  144. package/dist/commands/tracks.d.ts +51 -0
  145. package/dist/commands/tracks.js +291 -0
  146. package/dist/commands/tracks.js.map +1 -0
  147. package/dist/commands/update.d.ts +3 -11
  148. package/dist/commands/update.js +5 -134
  149. package/dist/commands/update.js.map +1 -1
  150. package/dist/commands/upload.d.ts +41 -3
  151. package/dist/commands/upload.js +120 -18
  152. package/dist/commands/upload.js.map +1 -1
  153. package/dist/commands/vendor.d.ts +28 -0
  154. package/dist/commands/vendor.js +110 -0
  155. package/dist/commands/vendor.js.map +1 -0
  156. package/dist/commands/versions.js +6 -0
  157. package/dist/commands/versions.js.map +1 -1
  158. package/dist/commands/view.js +10 -5
  159. package/dist/commands/view.js.map +1 -1
  160. package/dist/commands/whoami.d.ts +23 -3
  161. package/dist/commands/whoami.js +169 -23
  162. package/dist/commands/whoami.js.map +1 -1
  163. package/dist/commands/worker.d.ts +122 -0
  164. package/dist/commands/worker.js +435 -0
  165. package/dist/commands/worker.js.map +1 -0
  166. package/dist/commands/worker.test.d.ts +1 -0
  167. package/dist/commands/worker.test.js +116 -0
  168. package/dist/commands/worker.test.js.map +1 -0
  169. package/dist/commands/workspace-ops.d.ts +35 -0
  170. package/dist/commands/workspace-ops.js +153 -0
  171. package/dist/commands/workspace-ops.js.map +1 -0
  172. package/dist/index.d.ts +6 -6
  173. package/dist/index.js +900 -180
  174. package/dist/index.js.map +1 -1
  175. package/dist/lib/agent-connections.d.ts +31 -0
  176. package/dist/lib/agent-connections.js +33 -0
  177. package/dist/lib/agent-connections.js.map +1 -0
  178. package/dist/lib/agent-detect.d.ts +27 -0
  179. package/dist/lib/agent-detect.js +71 -0
  180. package/dist/lib/agent-detect.js.map +1 -0
  181. package/dist/lib/agent-door.d.ts +138 -0
  182. package/dist/lib/agent-door.js +426 -0
  183. package/dist/lib/agent-door.js.map +1 -0
  184. package/dist/lib/agents-config.d.ts +2 -0
  185. package/dist/lib/agents-config.js +4 -9
  186. package/dist/lib/agents-config.js.map +1 -1
  187. package/dist/lib/approval-poll.d.ts +31 -2
  188. package/dist/lib/approval-poll.js +20 -7
  189. package/dist/lib/approval-poll.js.map +1 -1
  190. package/dist/lib/atomic-file.d.ts +48 -0
  191. package/dist/lib/atomic-file.js +129 -0
  192. package/dist/lib/atomic-file.js.map +1 -0
  193. package/dist/lib/auth.d.ts +14 -9
  194. package/dist/lib/auth.js +44 -61
  195. package/dist/lib/auth.js.map +1 -1
  196. package/dist/lib/batch-approval.d.ts +85 -0
  197. package/dist/lib/batch-approval.js +170 -0
  198. package/dist/lib/batch-approval.js.map +1 -0
  199. package/dist/lib/capture-lane.d.ts +6 -5
  200. package/dist/lib/capture-lane.js +6 -5
  201. package/dist/lib/capture-lane.js.map +1 -1
  202. package/dist/lib/capture-structure.d.ts +230 -11
  203. package/dist/lib/capture-structure.js +251 -13
  204. package/dist/lib/capture-structure.js.map +1 -1
  205. package/dist/lib/catalog-templates.d.ts +59 -0
  206. package/dist/lib/catalog-templates.js +126 -0
  207. package/dist/lib/catalog-templates.js.map +1 -0
  208. package/dist/lib/cli-build.d.ts +19 -0
  209. package/dist/lib/cli-build.js +37 -0
  210. package/dist/lib/cli-build.js.map +1 -0
  211. package/dist/lib/conversation-headers.d.ts +18 -0
  212. package/dist/lib/conversation-headers.js +32 -0
  213. package/dist/lib/conversation-headers.js.map +1 -0
  214. package/dist/lib/cp-packages.d.ts +167 -11
  215. package/dist/lib/cp-packages.js +253 -21
  216. package/dist/lib/cp-packages.js.map +1 -1
  217. package/dist/lib/credential-class.d.ts +117 -0
  218. package/dist/lib/credential-class.js +116 -0
  219. package/dist/lib/credential-class.js.map +1 -0
  220. package/dist/lib/describe-lens.d.ts +35 -0
  221. package/dist/lib/describe-lens.js +40 -0
  222. package/dist/lib/describe-lens.js.map +1 -1
  223. package/dist/lib/device-connect.d.ts +125 -0
  224. package/dist/lib/device-connect.js +256 -0
  225. package/dist/lib/device-connect.js.map +1 -0
  226. package/dist/lib/directory-lens.d.ts +99 -0
  227. package/dist/lib/directory-lens.js +187 -0
  228. package/dist/lib/directory-lens.js.map +1 -0
  229. package/dist/lib/exporter-coverage.d.ts +71 -0
  230. package/dist/lib/exporter-coverage.js +97 -0
  231. package/dist/lib/exporter-coverage.js.map +1 -0
  232. package/dist/lib/hub-client.d.ts +29 -8
  233. package/dist/lib/hub-client.js +328 -55
  234. package/dist/lib/hub-client.js.map +1 -1
  235. package/dist/lib/init-connect.d.ts +41 -0
  236. package/dist/lib/init-connect.js +75 -0
  237. package/dist/lib/init-connect.js.map +1 -0
  238. package/dist/lib/init-exit.d.ts +24 -0
  239. package/dist/lib/init-exit.js +41 -0
  240. package/dist/lib/init-exit.js.map +1 -0
  241. package/dist/lib/init-flow.d.ts +25 -0
  242. package/dist/lib/init-flow.js +40 -0
  243. package/dist/lib/init-flow.js.map +1 -0
  244. package/dist/lib/init-handoff.d.ts +16 -0
  245. package/dist/lib/init-handoff.js +19 -0
  246. package/dist/lib/init-handoff.js.map +1 -0
  247. package/dist/lib/init-output.d.ts +18 -0
  248. package/dist/lib/init-output.js +43 -0
  249. package/dist/lib/init-output.js.map +1 -0
  250. package/dist/lib/init-pod.d.ts +45 -0
  251. package/dist/lib/init-pod.js +36 -0
  252. package/dist/lib/init-pod.js.map +1 -0
  253. package/dist/lib/installed.d.ts +210 -11
  254. package/dist/lib/installed.js +234 -36
  255. package/dist/lib/installed.js.map +1 -1
  256. package/dist/lib/key-approval.d.ts +57 -0
  257. package/dist/lib/key-approval.js +117 -0
  258. package/dist/lib/key-approval.js.map +1 -0
  259. package/dist/lib/key-diagnosis.d.ts +56 -0
  260. package/dist/lib/key-diagnosis.js +227 -0
  261. package/dist/lib/key-diagnosis.js.map +1 -0
  262. package/dist/lib/key-doctor.d.ts +136 -0
  263. package/dist/lib/key-doctor.js +286 -0
  264. package/dist/lib/key-doctor.js.map +1 -0
  265. package/dist/lib/key-locations.d.ts +120 -0
  266. package/dist/lib/key-locations.js +326 -0
  267. package/dist/lib/key-locations.js.map +1 -0
  268. package/dist/lib/key-source.d.ts +66 -0
  269. package/dist/lib/key-source.js +106 -0
  270. package/dist/lib/key-source.js.map +1 -0
  271. package/dist/lib/key-state.d.ts +70 -0
  272. package/dist/lib/key-state.js +115 -0
  273. package/dist/lib/key-state.js.map +1 -0
  274. package/dist/lib/kind-package.d.ts +181 -0
  275. package/dist/lib/kind-package.js +679 -0
  276. package/dist/lib/kind-package.js.map +1 -0
  277. package/dist/lib/knowledge-title.d.ts +24 -0
  278. package/dist/lib/knowledge-title.js +46 -0
  279. package/dist/lib/knowledge-title.js.map +1 -0
  280. package/dist/lib/knowledge-title.test.d.ts +1 -0
  281. package/dist/lib/knowledge-title.test.js +34 -0
  282. package/dist/lib/knowledge-title.test.js.map +1 -0
  283. package/dist/lib/machine-instance.d.ts +64 -0
  284. package/dist/lib/machine-instance.js +142 -0
  285. package/dist/lib/machine-instance.js.map +1 -0
  286. package/dist/lib/mcp-bridge.d.ts +42 -0
  287. package/dist/lib/mcp-bridge.js +147 -0
  288. package/dist/lib/mcp-bridge.js.map +1 -0
  289. package/dist/lib/mcp-bridge.test.d.ts +1 -0
  290. package/dist/lib/mcp-bridge.test.js +90 -0
  291. package/dist/lib/mcp-bridge.test.js.map +1 -0
  292. package/dist/lib/mcp-call.d.ts +30 -0
  293. package/dist/lib/mcp-call.js +107 -0
  294. package/dist/lib/mcp-call.js.map +1 -0
  295. package/dist/lib/mcp-snippets.d.ts +53 -0
  296. package/dist/lib/mcp-snippets.js +82 -0
  297. package/dist/lib/mcp-snippets.js.map +1 -0
  298. package/dist/lib/next-steps.d.ts +8 -0
  299. package/dist/lib/next-steps.js +31 -1
  300. package/dist/lib/next-steps.js.map +1 -1
  301. package/dist/lib/package-wire.d.ts +179 -0
  302. package/dist/lib/package-wire.js +68 -0
  303. package/dist/lib/package-wire.js.map +1 -0
  304. package/dist/lib/pair-link.d.ts +38 -0
  305. package/dist/lib/pair-link.js +68 -0
  306. package/dist/lib/pair-link.js.map +1 -0
  307. package/dist/lib/pod-wide.d.ts +40 -0
  308. package/dist/lib/pod-wide.js +46 -0
  309. package/dist/lib/pod-wide.js.map +1 -0
  310. package/dist/lib/pod.d.ts +66 -112
  311. package/dist/lib/pod.js +134 -412
  312. package/dist/lib/pod.js.map +1 -1
  313. package/dist/lib/project-ref.d.ts +9 -3
  314. package/dist/lib/project-ref.js +10 -4
  315. package/dist/lib/project-ref.js.map +1 -1
  316. package/dist/lib/review-credential.d.ts +119 -0
  317. package/dist/lib/review-credential.js +147 -0
  318. package/dist/lib/review-credential.js.map +1 -0
  319. package/dist/lib/safe-open.d.ts +49 -0
  320. package/dist/lib/safe-open.js +119 -0
  321. package/dist/lib/safe-open.js.map +1 -0
  322. package/dist/lib/session-lens.d.ts +40 -1
  323. package/dist/lib/session-lens.js +54 -4
  324. package/dist/lib/session-lens.js.map +1 -1
  325. package/dist/lib/superwhisper-import.d.ts +8 -0
  326. package/dist/lib/superwhisper-import.js +14 -7
  327. package/dist/lib/superwhisper-import.js.map +1 -1
  328. package/dist/lib/superwhisper-title.test.d.ts +1 -0
  329. package/dist/lib/superwhisper-title.test.js +18 -0
  330. package/dist/lib/superwhisper-title.test.js.map +1 -0
  331. package/dist/lib/targets.d.ts +134 -10
  332. package/dist/lib/targets.js +962 -258
  333. package/dist/lib/targets.js.map +1 -1
  334. package/dist/lib/template-file.d.ts +4 -0
  335. package/dist/lib/template-file.js.map +1 -1
  336. package/dist/lib/template-lifecycle.d.ts +217 -0
  337. package/dist/lib/template-lifecycle.js +433 -0
  338. package/dist/lib/template-lifecycle.js.map +1 -0
  339. package/dist/lib/template-steps.d.ts +88 -0
  340. package/dist/lib/template-steps.js +118 -0
  341. package/dist/lib/template-steps.js.map +1 -0
  342. package/dist/lib/time-ago.d.ts +2 -0
  343. package/dist/lib/time-ago.js +15 -0
  344. package/dist/lib/time-ago.js.map +1 -0
  345. package/dist/utils/logger.js +5 -2
  346. package/dist/utils/logger.js.map +1 -1
  347. package/package.json +23 -17
  348. package/skills/README.md +12 -10
  349. package/skills/agent-os/SKILL.md +214 -99
  350. package/skills/manifest.json +1 -1
  351. package/skills/onboard/SKILL.md +55 -26
  352. package/skills/synap/README.md +5 -8
  353. package/skills/synap/SKILL.md +1086 -283
  354. package/skills/synap/_order.txt +7 -0
  355. package/skills/synap/_skill.yaml +1 -1
  356. package/skills/synap/automations.md +15 -0
  357. package/skills/synap/capture.md +5 -0
  358. package/skills/synap/cli-operations.md +24 -18
  359. package/skills/synap/concepts.md +28 -0
  360. package/skills/synap/content-os.md +10 -1
  361. package/skills/synap/creative-loop.md +15 -10
  362. package/skills/synap/crm.md +21 -52
  363. package/skills/synap/document-embeds.md +141 -47
  364. package/skills/synap/escalation-ladder.md +20 -10
  365. package/skills/synap/focus-sessions.md +47 -21
  366. package/skills/synap/from-intent.md +142 -0
  367. package/skills/synap/governance-rules.md +4 -4
  368. package/skills/synap/governance.md +10 -7
  369. package/skills/synap/hand-off.md +33 -0
  370. package/skills/synap/inline-patterns.md +15 -7
  371. package/skills/synap/lenses.md +33 -15
  372. package/skills/synap/linking.md +41 -40
  373. package/skills/synap/mcp-remote-servers.md +64 -0
  374. package/skills/synap/mental-model.md +17 -15
  375. package/skills/synap/operating-mode-rules.md +1 -1
  376. package/skills/synap/processes.md +118 -0
  377. package/skills/synap/quick-reference.md +5 -1
  378. package/skills/synap/reading.md +3 -1
  379. package/skills/synap/reflexes.md +12 -42
  380. package/skills/synap/viewframe-cells.md +38 -5
  381. package/skills/synap/work-flow.md +1 -1
  382. package/skills/synap/work-model.md +96 -0
  383. package/skills/synap/worked-examples.md +4 -5
  384. package/skills/synap/workspace-design.md +14 -10
  385. package/skills/synap/writes.md +97 -24
  386. package/skills/synap/writing-titles.md +63 -0
  387. package/skills/synap-app/SKILL.md +2 -2
  388. package/skills/synap-app/_skill.yaml +1 -1
  389. package/skills/synap-app/install-commands.md +1 -1
  390. package/skills/synap-design/SKILL.md +474 -0
  391. package/skills/synap-design/_order.txt +4 -0
  392. package/skills/synap-design/_skill.yaml +21 -0
  393. package/skills/synap-design/loop.md +134 -0
  394. package/skills/synap-design/overview.md +44 -0
  395. package/skills/synap-design/principles.md +130 -0
  396. package/skills/synap-design/system.md +133 -0
  397. package/skills/synap-market/SKILL.md +306 -16
  398. package/skills/synap-market/_skill.yaml +1 -1
  399. package/skills/synap-market/author-and-publish.md +145 -8
  400. package/skills/synap-market/governance-and-catalog.md +7 -0
  401. package/skills/synap-market/install.md +79 -1
  402. package/skills/synap-market/overview.md +74 -6
  403. package/skills/synap-schema/SKILL.md +172 -10
  404. package/skills/synap-schema/_order.txt +2 -0
  405. package/skills/synap-schema/_skill.yaml +4 -2
  406. package/skills/synap-schema/common-mistakes.md +4 -2
  407. package/skills/synap-schema/discover-profiles.md +1 -1
  408. package/skills/synap-schema/entity-scope.md +15 -3
  409. package/skills/synap-schema/extend-first.md +29 -0
  410. package/skills/synap-schema/extend-vs-create.md +1 -1
  411. package/skills/synap-schema/intent-vocabulary-ssot.md +111 -0
  412. package/skills/synap-schema/property-types.md +1 -1
  413. package/skills/synap-schema/relations.md +1 -1
  414. package/skills/synap-ui/SKILL.md +19 -12
  415. package/skills/synap-ui/_skill.yaml +1 -1
  416. package/skills/synap-ui/ai-companion.md +1 -1
  417. package/skills/synap-ui/arranging-bento.md +2 -0
  418. package/skills/synap-ui/bento-layouts.md +10 -10
  419. package/skills/synap-ui/bento-recipes.md +313 -543
  420. package/skills/synap-ui/four-builds.md +5 -0
  421. package/skills/synap-ui/view-types.md +2 -2
  422. package/skills/synap-ui/widget-catalog.md +22 -278
  423. package/templates/automations/bookmark-enrichment.automation.json +290 -13
  424. package/templates/automations/url-bookmark-capture.automation.json +73 -11
  425. package/templates/skills/authoring-playbooks/SKILL.md +6 -3
  426. package/templates/skills/authoring-playbooks/reference/stages-contract.md +15 -0
  427. package/templates/skills/authoring-playbooks/reference/worked-example.md +3 -0
  428. package/dist/commands/infra.d.ts +0 -21
  429. package/dist/commands/infra.js +0 -262
  430. package/dist/commands/infra.js.map +0 -1
  431. package/dist/commands/template.d.ts +0 -42
  432. package/dist/commands/template.js +0 -191
  433. package/dist/commands/template.js.map +0 -1
  434. package/dist/lib/browser-auth.d.ts +0 -35
  435. package/dist/lib/browser-auth.js +0 -170
  436. package/dist/lib/browser-auth.js.map +0 -1
  437. package/dist/lib/openclaw.d.ts +0 -32
  438. package/dist/lib/openclaw.js +0 -164
  439. package/dist/lib/openclaw.js.map +0 -1
  440. package/dist/lib/seed.d.ts +0 -13
  441. package/dist/lib/seed.js +0 -135
  442. package/dist/lib/seed.js.map +0 -1
  443. package/node_modules/@synap/hub-rest-client/dist/index.cjs +0 -1261
  444. package/node_modules/@synap/hub-rest-client/dist/index.d.cts +0 -1647
  445. package/node_modules/@synap/hub-rest-client/dist/index.d.ts +0 -1647
  446. package/node_modules/@synap/hub-rest-client/dist/index.js +0 -1231
  447. package/node_modules/@synap/hub-rest-client/package.json +0 -45
  448. package/node_modules/@synap/hub-rest-client/src/client.ts +0 -1631
  449. package/node_modules/@synap/hub-rest-client/src/errors.ts +0 -30
  450. package/node_modules/@synap/hub-rest-client/src/index.ts +0 -153
  451. package/node_modules/@synap/hub-rest-client/src/setup.ts +0 -133
  452. package/node_modules/@synap/hub-rest-client/src/types.ts +0 -1299
@@ -0,0 +1,435 @@
1
+ /**
2
+ * `synap worker` — run Claude Code unattended on THIS machine for the sessions
3
+ * a person or an AI handed to an agent.
4
+ *
5
+ * The door it reuses: a session's roster. Putting an agent on a focus session
6
+ * (`synap_start_session` agentIds, `synap_update_session` addAgentId, capture
7
+ * "Give to agent") is how work is handed to it, and `synap_orient` lists those
8
+ * sessions as `handedToYou` for that agent. The worker is that agent: it polls
9
+ * orient with the agent's own key, claims each new session once, and launches
10
+ * the unmodified `claude` binary headless in the workspace with a protocol
11
+ * prompt. The launched Claude Code does the work and talks in the session room
12
+ * through the Synap MCP — so the AI that launched the session (the
13
+ * orchestrator) and the person read and answer it there, and relay shows it.
14
+ *
15
+ * Synap never spawns a coding agent: this process runs on the person's own
16
+ * machine, under their own Claude login, as an agent they connected.
17
+ *
18
+ * Which Claude subscription a run uses = which Claude config the process sees:
19
+ * `--claude-config-dir` sets CLAUDE_CONFIG_DIR for the launched runs (log that
20
+ * directory in once with `CLAUDE_CONFIG_DIR=<dir> claude login`). API-key
21
+ * variables are removed from the launched environment so a stray key can never
22
+ * silently switch billing away from the subscription.
23
+ *
24
+ * State (which sessions were launched, their Claude session ids and outcome)
25
+ * lives in ~/.synap/worker/<agent>/state.json; each run's stream-json goes to
26
+ * ~/.synap/worker/<agent>/runs/<sessionId>.jsonl.
27
+ */
28
+ import { spawn } from "node:child_process";
29
+ import fs from "node:fs";
30
+ import { writeSecretFile } from "../lib/atomic-file.js";
31
+ import os from "node:os";
32
+ import path from "node:path";
33
+ import { resolveHubConfig, resolveUserId } from "../lib/hub-client.js";
34
+ import { createMcpClient } from "../lib/mcp-call.js";
35
+ // ─── pure helpers (tested) ────────────────────────────────────────────────────
36
+ /** "30s" | "2m" | "1h" | "45" (seconds) → milliseconds. */
37
+ export function parseInterval(raw, fallbackMs = 30_000) {
38
+ if (!raw)
39
+ return fallbackMs;
40
+ const m = /^(\d+)(ms|s|m|h)?$/.exec(raw.trim());
41
+ if (!m)
42
+ throw new Error(`Invalid interval "${raw}" — use e.g. 30s, 2m`);
43
+ const n = Number(m[1]);
44
+ const unit = m[2] ?? "s";
45
+ return unit === "ms" ? n : unit === "s" ? n * 1000 : unit === "m" ? n * 60_000 : n * 3_600_000;
46
+ }
47
+ /**
48
+ * The pod hands this agent its work through a provider binding (reach
49
+ * `dispatch`), so it lists nothing to pull: a worker pulling for it would run
50
+ * the same work a second time. The worker stops on it.
51
+ */
52
+ export class AgentBoundForDispatchError extends Error {
53
+ constructor() {
54
+ super("this agent is bound to a provider: the pod hands it work directly, so there is nothing to pull. Stop this worker, or unbind the agent in Settings › Agents.");
55
+ this.name = "AgentBoundForDispatchError";
56
+ }
57
+ }
58
+ /**
59
+ * A person PAUSED this agent: it takes no new work until resumed. Not a failed
60
+ * read — the worker keeps polling and launches nothing.
61
+ */
62
+ export class AgentPausedError extends Error {
63
+ constructor() {
64
+ super("this agent is paused: it takes no new work until a person resumes it");
65
+ this.name = "AgentPausedError";
66
+ }
67
+ }
68
+ /**
69
+ * Read `handedToYou` out of `synap_orient`'s text. A missing or `unavailable`
70
+ * block is a FAILED read and throws — never "nothing handed to me". A `bound`
71
+ * block throws `AgentBoundForDispatchError`.
72
+ */
73
+ export function parseHandedToYou(orientText) {
74
+ let data;
75
+ try {
76
+ data = JSON.parse(orientText);
77
+ }
78
+ catch {
79
+ throw new Error(`orient did not return JSON: ${orientText.slice(0, 160)}`);
80
+ }
81
+ const block = findKey(data, "handedToYou");
82
+ if (!block || typeof block !== "object") {
83
+ throw new Error("orient carried no handedToYou block (pod too old, or not an agent key)");
84
+ }
85
+ if (block.status === "bound")
86
+ throw new AgentBoundForDispatchError();
87
+ if (block.status === "paused")
88
+ throw new AgentPausedError();
89
+ if (block.status === "unavailable" || !Array.isArray(block.items)) {
90
+ throw new Error("orient could not read handedToYou (status unavailable)");
91
+ }
92
+ return block.items
93
+ .filter((i) => typeof i?.id === "string")
94
+ .map((i) => ({ id: i.id, goal: typeof i.goal === "string" ? i.goal : null }));
95
+ }
96
+ function findKey(x, key) {
97
+ if (!x || typeof x !== "object")
98
+ return undefined;
99
+ if (Array.isArray(x)) {
100
+ for (const v of x) {
101
+ const r = findKey(v, key);
102
+ if (r !== undefined)
103
+ return r;
104
+ }
105
+ return undefined;
106
+ }
107
+ const obj = x;
108
+ if (key in obj)
109
+ return obj[key];
110
+ for (const v of Object.values(obj)) {
111
+ const r = findKey(v, key);
112
+ if (r !== undefined)
113
+ return r;
114
+ }
115
+ return undefined;
116
+ }
117
+ /** Sessions handed to the agent that this worker has not launched yet. */
118
+ export function pickNew(items, state, slots) {
119
+ if (slots <= 0)
120
+ return [];
121
+ return items.filter((i) => !state.runs[i.id]).slice(0, slots);
122
+ }
123
+ /**
124
+ * The MCP server name the local Claude Code uses for THIS pod: the entry in
125
+ * ~/.claude.json whose URL is `<podUrl>/mcp` (user or project scope).
126
+ */
127
+ export function findMcpServerName(claudeJson, podUrl) {
128
+ const want = `${podUrl.replace(/\/+$/, "")}/mcp`;
129
+ const scan = (servers) => {
130
+ if (!servers || typeof servers !== "object")
131
+ return null;
132
+ for (const [name, v] of Object.entries(servers)) {
133
+ if (typeof v?.url === "string" && v.url.replace(/\/+$/, "") === want)
134
+ return name;
135
+ }
136
+ return null;
137
+ };
138
+ const cj = claudeJson;
139
+ const top = scan(cj?.mcpServers);
140
+ if (top)
141
+ return top;
142
+ for (const p of Object.values(cj?.projects ?? {})) {
143
+ const hit = scan(p?.mcpServers);
144
+ if (hit)
145
+ return hit;
146
+ }
147
+ return null;
148
+ }
149
+ export const DEFAULT_ALLOWED_TOOLS = ["Read", "Edit", "Write", "Glob", "Grep", "Bash", "TodoWrite"];
150
+ /** The protocol the launched Claude Code follows for one handed session. */
151
+ export function buildWorkerPrompt(p) {
152
+ const short = p.sessionId.slice(0, 8);
153
+ return [
154
+ `You are the Synap agent "${p.agentName}", an unattended Claude Code worker on this machine.`,
155
+ `A person or an orchestrating AI handed you ONE Synap focus session. Work it end to end.`,
156
+ `Synap tools are on the MCP server "${p.mcpServer}" (mcp__${p.mcpServer}__synap_*).`,
157
+ ``,
158
+ `Session: ${p.sessionId}`,
159
+ `Goal as handed: ${p.goal ?? "(read it from the session)"}`,
160
+ ``,
161
+ `Protocol:`,
162
+ `1. Read: synap_get_session {sessionId} for the goal, outcomes and channelId (the room); then synap_get_thread_context {threadId: <channelId>} for what was said so far.`,
163
+ `2. Claim: synap_post_message to the room (kind "update"), one line: you picked it up and what you will do first.`,
164
+ `3. Work in ${p.cwd}. Shared-tree rules: never commit on a repo's main; for code changes use a git worktree on a branch named devbox/${short}-<slug>; never push to main, never deploy, never run git checkout --, restore, stash or reset --hard on a shared clone.`,
165
+ `4. Need help or a decision: post in the room starting with "QUESTION:" — kind "update" when the orchestrating AI can answer it, kind "question" only for a decision only the person can make. Then wait for the reply: read synap_get_thread_context about every 60 seconds (Bash "sleep 60" between reads), up to 30 minutes, and use the first reply posted after your question. No reply: state your assumption in the room and continue, or stop and say what is blocked.`,
166
+ `5. Report: post a concise result in the room (what changed, where — branch, commit, files). Record deliverables against the session's outcomes with synap_update_session (completeOutput = the outcome key, with a ref when an object exists). Do not close the session; the owner does.`,
167
+ `6. End your final message with one line: WORKER-RESULT: done | blocked | failed — <one sentence>.`,
168
+ ].join("\n");
169
+ }
170
+ /** The launched environment: the subscription, never a stray API key. */
171
+ export function workerEnv(base, claudeConfigDir) {
172
+ const env = { ...base };
173
+ delete env.ANTHROPIC_API_KEY;
174
+ delete env.ANTHROPIC_AUTH_TOKEN;
175
+ delete env.ANTHROPIC_BASE_URL;
176
+ if (claudeConfigDir)
177
+ env.CLAUDE_CONFIG_DIR = claudeConfigDir;
178
+ return env;
179
+ }
180
+ /** The final `WORKER-RESULT:` line of a run's result text, if present. */
181
+ export function workerVerdict(resultText) {
182
+ if (!resultText)
183
+ return undefined;
184
+ const lines = resultText.trim().split(/\r?\n/);
185
+ for (let i = lines.length - 1; i >= 0; i--) {
186
+ const m = /WORKER-RESULT:\s*(.+)$/.exec(lines[i]);
187
+ if (m)
188
+ return m[1].trim();
189
+ }
190
+ return undefined;
191
+ }
192
+ /** At most this many follow-up resumes per session (a runaway-loop guard). */
193
+ export const MAX_RESUMES = 20;
194
+ /**
195
+ * Room messages posted after `since` by anyone but this agent — the follow-ups
196
+ * (an orchestrator's ANSWER, the person's reply) that should resume a finished
197
+ * run. The worker's own posts carry its agent id and never resume it.
198
+ */
199
+ export function followUpsSince(messages, since, selfAgentId) {
200
+ const t0 = Date.parse(since);
201
+ return messages
202
+ .filter((m) => typeof m.timestamp === "string" && Date.parse(m.timestamp) > t0)
203
+ .filter((m) => m.routedTeammateId !== selfAgentId)
204
+ .filter((m) => typeof m.content === "string" && m.content.trim().length > 0)
205
+ .sort((a, b) => Date.parse(a.timestamp) - Date.parse(b.timestamp));
206
+ }
207
+ /** The prompt that resumes a finished run with the room's new messages. */
208
+ export function buildFollowUpPrompt(messages) {
209
+ const lines = messages.map((m) => {
210
+ const who = m.authorType === "human" ? "the person" : m.routedTeammateId ? `agent ${m.routedTeammateId}` : "someone";
211
+ const text = (m.content ?? "").trim();
212
+ return `- ${who} (${m.timestamp}): ${text.length > 2000 ? `${text.slice(0, 2000)}…` : text}`;
213
+ });
214
+ return [
215
+ `New messages arrived in this session's room after your last run:`,
216
+ ...lines,
217
+ ``,
218
+ `Continue under the same protocol: re-read the room if needed, act on these messages, report in the room, record outcomes, and end with one line: WORKER-RESULT: done | blocked | failed — <one sentence>.`,
219
+ ].join("\n");
220
+ }
221
+ // ─── state ────────────────────────────────────────────────────────────────────
222
+ function stateDir(agent) {
223
+ return path.join(os.homedir(), ".synap", "worker", agent);
224
+ }
225
+ function loadState(agent) {
226
+ const file = path.join(stateDir(agent), "state.json");
227
+ if (!fs.existsSync(file))
228
+ return { runs: {} };
229
+ return JSON.parse(fs.readFileSync(file, "utf8"));
230
+ }
231
+ function saveState(agent, state) {
232
+ const dir = stateDir(agent);
233
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
234
+ const tmp = path.join(dir, "state.json.tmp");
235
+ writeSecretFile(tmp, JSON.stringify(state, null, 2), { mode: 0o600 });
236
+ fs.renameSync(tmp, path.join(dir, "state.json"));
237
+ }
238
+ function say(line) {
239
+ process.stdout.write(`[synap worker ${new Date().toISOString()}] ${line}\n`);
240
+ }
241
+ // ─── the loop ─────────────────────────────────────────────────────────────────
242
+ export async function workerCommand(opts) {
243
+ const agent = opts.agent;
244
+ // The named agent's own key and pod (SYNAP_AGENT is the CLI's one door for it).
245
+ process.env.SYNAP_AGENT = agent;
246
+ const cfg = await resolveHubConfig();
247
+ const intervalMs = parseInterval(opts.interval);
248
+ const maxParallel = Math.max(1, Number(opts.maxParallel ?? "1"));
249
+ const cwd = path.resolve(opts.cwd ?? path.join(os.homedir(), "Documents", "Code", "synap"));
250
+ const claudeBin = opts.claudeBin ?? "claude";
251
+ const claudeJsonPath = path.join(opts.claudeConfigDir ?? os.homedir(), ".claude.json");
252
+ let mcpServer = opts.mcpServer ?? null;
253
+ if (!mcpServer && fs.existsSync(claudeJsonPath)) {
254
+ mcpServer = findMcpServerName(JSON.parse(fs.readFileSync(claudeJsonPath, "utf8")), cfg.podUrl);
255
+ }
256
+ if (!mcpServer) {
257
+ throw new Error(`No Claude Code MCP server points at ${cfg.podUrl}/mcp in ${claudeJsonPath}. ` +
258
+ `Connect Claude Code to the pod with this agent's key, or pass --mcp-server <name>.`);
259
+ }
260
+ const allowed = (opts.allowedTools ? opts.allowedTools.split(",") : DEFAULT_ALLOWED_TOOLS)
261
+ .map((t) => t.trim())
262
+ .filter(Boolean);
263
+ allowed.push(`mcp__${mcpServer}`);
264
+ const mcp = createMcpClient({
265
+ url: `${cfg.podUrl.replace(/\/+$/, "")}/mcp`,
266
+ apiKey: cfg.apiKey,
267
+ clientName: `synap-worker/${agent}`,
268
+ });
269
+ const state = loadState(agent);
270
+ // A run "running" at start is a run this process can no longer watch.
271
+ for (const r of Object.values(state.runs)) {
272
+ if (r.status === "running") {
273
+ r.status = "failed";
274
+ r.result = "worker restarted while this run was in flight";
275
+ r.finishedAt = new Date().toISOString();
276
+ }
277
+ }
278
+ saveState(agent, state);
279
+ const children = new Map();
280
+ let stopping = false;
281
+ const stop = () => {
282
+ stopping = true;
283
+ for (const c of children.values())
284
+ c.kill("SIGTERM");
285
+ };
286
+ process.on("SIGTERM", stop);
287
+ process.on("SIGINT", stop);
288
+ say(`agent ${agent} → ${cfg.podUrl} · MCP server "${mcpServer}" · cwd ${cwd} · every ${intervalMs / 1000}s · max ${maxParallel} parallel`);
289
+ const launch = (item, resume) => {
290
+ const prompt = resume?.prompt ??
291
+ buildWorkerPrompt({ sessionId: item.id, goal: item.goal, agentName: agent, cwd, mcpServer: mcpServer });
292
+ const args = ["-p", prompt, "--output-format", "stream-json", "--verbose"];
293
+ if (resume)
294
+ args.push("--resume", resume.claudeSessionId);
295
+ if (opts.skipPermissions)
296
+ args.push("--dangerously-skip-permissions");
297
+ else
298
+ args.push("--permission-mode", "acceptEdits", "--allowedTools", ...allowed);
299
+ const prior = state.runs[item.id];
300
+ const record = resume && prior
301
+ ? Object.assign(prior, { status: "running", resumes: (prior.resumes ?? 0) + 1, exitCode: undefined })
302
+ : { sessionId: item.id, status: "running", startedAt: new Date().toISOString() };
303
+ state.runs[item.id] = record;
304
+ if (opts.dryRun) {
305
+ record.status = "done";
306
+ record.result = `dry run: would launch ${claudeBin} in ${cwd}`;
307
+ saveState(agent, state);
308
+ say(`dry run — session ${item.id}: ${claudeBin} ${args.slice(0, 1).join(" ")} <prompt> ${args.slice(2).join(" ")}`);
309
+ return;
310
+ }
311
+ const runsDir = path.join(stateDir(agent), "runs");
312
+ fs.mkdirSync(runsDir, { recursive: true, mode: 0o700 });
313
+ const out = fs.createWriteStream(path.join(runsDir, `${item.id}.jsonl`), { flags: "a", mode: 0o600 });
314
+ const child = spawn(claudeBin, args, { cwd, env: workerEnv(process.env, opts.claudeConfigDir), stdio: ["ignore", "pipe", "pipe"] });
315
+ children.set(item.id, child);
316
+ record.pid = child.pid;
317
+ saveState(agent, state);
318
+ say(`${resume ? `resumed (follow-up #${record.resumes})` : "launched"} session ${item.id} (pid ${child.pid})`);
319
+ let buffered = "";
320
+ let lastResult;
321
+ child.stdout?.on("data", (chunk) => {
322
+ out.write(chunk);
323
+ buffered += chunk.toString("utf8");
324
+ const lines = buffered.split("\n");
325
+ buffered = lines.pop() ?? "";
326
+ for (const line of lines) {
327
+ try {
328
+ const ev = JSON.parse(line);
329
+ if (ev.type === "system" && ev.subtype === "init" && ev.session_id && !record.claudeSessionId) {
330
+ record.claudeSessionId = ev.session_id;
331
+ saveState(agent, state);
332
+ }
333
+ if (ev.type === "result" && typeof ev.result === "string")
334
+ lastResult = ev.result;
335
+ }
336
+ catch {
337
+ /* a partial or non-JSON line — kept in the run log, not parsed */
338
+ }
339
+ }
340
+ });
341
+ child.stderr?.on("data", (chunk) => out.write(chunk));
342
+ child.on("close", (code) => {
343
+ children.delete(item.id);
344
+ out.end();
345
+ record.exitCode = code;
346
+ record.finishedAt = new Date().toISOString();
347
+ record.result = workerVerdict(lastResult) ?? (lastResult ? lastResult.slice(-300) : undefined);
348
+ record.status = code === 0 ? "done" : "failed";
349
+ saveState(agent, state);
350
+ say(`session ${item.id} finished — exit ${code}${record.result ? ` · ${record.result}` : ""}`);
351
+ });
352
+ };
353
+ // Its own posts must never resume it: compare with the key's real agent id.
354
+ const selfAgentId = await resolveUserId(cfg);
355
+ const roomFollowUps = async (sessionId, since) => {
356
+ const s = await mcp.call("synap_get_session", { sessionId });
357
+ if (s.isError)
358
+ throw new Error(`get_session ${sessionId} refused: ${s.text.slice(0, 160)}`);
359
+ const channelId = findKey(JSON.parse(s.text), "channelId") ?? null;
360
+ if (!channelId)
361
+ return [];
362
+ const t = await mcp.call("synap_get_thread_context", { threadId: channelId });
363
+ if (t.isError)
364
+ throw new Error(`thread ${channelId} refused: ${t.text.slice(0, 160)}`);
365
+ const messages = JSON.parse(t.text).messages ?? [];
366
+ return followUpsSince(messages, since, selfAgentId);
367
+ };
368
+ const tick = async () => {
369
+ const res = await mcp.call("synap_orient", {});
370
+ if (res.isError)
371
+ throw new Error(`orient refused: ${res.text.slice(0, 200)}`);
372
+ const items = parseHandedToYou(res.text);
373
+ const fresh = pickNew(items, state, maxParallel - children.size);
374
+ for (const item of fresh)
375
+ launch(item);
376
+ let resumed = 0;
377
+ for (const item of items) {
378
+ if (children.size >= maxParallel)
379
+ break;
380
+ const rec = state.runs[item.id];
381
+ if (!rec || rec.status === "running" || !rec.claudeSessionId || !rec.finishedAt)
382
+ continue;
383
+ if ((rec.resumes ?? 0) >= MAX_RESUMES)
384
+ continue;
385
+ const follow = await roomFollowUps(item.id, rec.finishedAt);
386
+ if (!follow.length)
387
+ continue;
388
+ launch(item, { claudeSessionId: rec.claudeSessionId, prompt: buildFollowUpPrompt(follow) });
389
+ resumed++;
390
+ }
391
+ return { handed: items.length, launched: fresh.length + resumed };
392
+ };
393
+ let failures = 0;
394
+ let paused = false;
395
+ while (!stopping) {
396
+ try {
397
+ const r = await tick();
398
+ failures = 0;
399
+ if (paused)
400
+ say("resumed: picking up work again");
401
+ paused = false;
402
+ if (r.launched)
403
+ say(`${r.handed} handed · launched ${r.launched}`);
404
+ }
405
+ catch (err) {
406
+ if (err instanceof AgentBoundForDispatchError) {
407
+ // Not a failed read: retrying would never change the answer.
408
+ say(err.message);
409
+ break;
410
+ }
411
+ if (err instanceof AgentPausedError) {
412
+ // Not a failed read either: idle at the normal pace, say it once.
413
+ if (!paused)
414
+ say(err.message);
415
+ paused = true;
416
+ if (opts.once)
417
+ break;
418
+ await new Promise((r) => setTimeout(r, intervalMs));
419
+ continue;
420
+ }
421
+ failures++;
422
+ say(`read failed (${failures} in a row): ${err.message}`);
423
+ if (opts.once)
424
+ throw err;
425
+ }
426
+ if (opts.once)
427
+ break;
428
+ await new Promise((r) => setTimeout(r, Math.min(intervalMs * Math.max(1, failures), 10 * 60_000)));
429
+ }
430
+ if (opts.once && children.size) {
431
+ say(`--once: waiting for ${children.size} run(s) to finish`);
432
+ await Promise.all([...children.values()].map((c) => new Promise((r) => c.on("close", r))));
433
+ }
434
+ }
435
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/commands/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,116 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { buildWorkerPrompt, findMcpServerName, AgentBoundForDispatchError, AgentPausedError, parseHandedToYou, parseInterval, pickNew, workerEnv, workerVerdict, } from "./worker.js";
3
+ import { lastJsonPayload } from "../lib/mcp-call.js";
4
+ const orient = (handed) => JSON.stringify({ startHere: { pendingReview: { count: 0 }, handedToYou: handed } });
5
+ describe("parseHandedToYou", () => {
6
+ it("reads the handed sessions from orient", () => {
7
+ const items = parseHandedToYou(orient({ count: 2, items: [{ id: "a", goal: "fix x" }, { id: "b", goal: null }] }));
8
+ expect(items).toEqual([
9
+ { id: "a", goal: "fix x" },
10
+ { id: "b", goal: null },
11
+ ]);
12
+ });
13
+ it("an unavailable block is a FAILED read, not an empty list", () => {
14
+ expect(() => parseHandedToYou(orient({ status: "unavailable" }))).toThrow(/unavailable/);
15
+ });
16
+ it("a bound agent stops the worker — it is never 'nothing handed'", () => {
17
+ expect(() => parseHandedToYou(orient({ status: "bound" }))).toThrow(AgentBoundForDispatchError);
18
+ });
19
+ it("a paused agent is told apart from a failed read", () => {
20
+ expect(() => parseHandedToYou(orient({ status: "paused" }))).toThrow(AgentPausedError);
21
+ });
22
+ it("a missing block throws instead of reading as nothing handed", () => {
23
+ expect(() => parseHandedToYou(JSON.stringify({ startHere: {} }))).toThrow(/no handedToYou/);
24
+ });
25
+ it("non-JSON orient text throws", () => {
26
+ expect(() => parseHandedToYou("Error: pod down")).toThrow(/did not return JSON/);
27
+ });
28
+ });
29
+ describe("pickNew", () => {
30
+ const items = [{ id: "a", goal: null }, { id: "b", goal: null }, { id: "c", goal: null }];
31
+ it("skips sessions already launched and respects free slots", () => {
32
+ const state = { runs: { a: { sessionId: "a", status: "done", startedAt: "t" } } };
33
+ expect(pickNew(items, state, 1).map((i) => i.id)).toEqual(["b"]);
34
+ });
35
+ it("launches nothing when no slot is free", () => {
36
+ expect(pickNew(items, { runs: {} }, 0)).toEqual([]);
37
+ });
38
+ });
39
+ describe("findMcpServerName", () => {
40
+ it("finds the user-scope server pointing at the pod", () => {
41
+ const cj = { mcpServers: { other: { url: "https://x/mcp" }, "synap-pod": { url: "https://pod.example/mcp/" } } };
42
+ expect(findMcpServerName(cj, "https://pod.example")).toBe("synap-pod");
43
+ });
44
+ it("falls back to a project-scope server", () => {
45
+ const cj = { projects: { "/w": { mcpServers: { s: { url: "https://pod.example/mcp" } } } } };
46
+ expect(findMcpServerName(cj, "https://pod.example/")).toBe("s");
47
+ });
48
+ it("returns null when none matches", () => {
49
+ expect(findMcpServerName({ mcpServers: { s: { url: "https://other/mcp" } } }, "https://pod.example")).toBeNull();
50
+ });
51
+ });
52
+ describe("workerEnv", () => {
53
+ it("strips API-key billing and sets the chosen Claude config dir", () => {
54
+ const env = workerEnv({ PATH: "/bin", ANTHROPIC_API_KEY: "k", ANTHROPIC_AUTH_TOKEN: "t", ANTHROPIC_BASE_URL: "u" }, "/srv/cc/auto");
55
+ expect(env.ANTHROPIC_API_KEY).toBeUndefined();
56
+ expect(env.ANTHROPIC_AUTH_TOKEN).toBeUndefined();
57
+ expect(env.ANTHROPIC_BASE_URL).toBeUndefined();
58
+ expect(env.CLAUDE_CONFIG_DIR).toBe("/srv/cc/auto");
59
+ expect(env.PATH).toBe("/bin");
60
+ });
61
+ });
62
+ describe("prompt + verdict", () => {
63
+ it("the prompt names the session, the MCP server and the branch rule", () => {
64
+ const p = buildWorkerPrompt({ sessionId: "c5a34b78-0000", goal: "g", agentName: "cc-devbox", cwd: "/w", mcpServer: "synap-pod" });
65
+ expect(p).toContain("Session: c5a34b78-0000");
66
+ expect(p).toContain("mcp__synap-pod__synap_*");
67
+ expect(p).toContain("devbox/c5a34b78-");
68
+ expect(p).toContain("WORKER-RESULT:");
69
+ });
70
+ it("reads the last WORKER-RESULT line", () => {
71
+ expect(workerVerdict("work\nWORKER-RESULT: done — posted report")).toBe("done — posted report");
72
+ expect(workerVerdict("no verdict here")).toBeUndefined();
73
+ });
74
+ });
75
+ describe("parseInterval", () => {
76
+ it("parses units", () => {
77
+ expect(parseInterval("45")).toBe(45_000);
78
+ expect(parseInterval("2m")).toBe(120_000);
79
+ expect(parseInterval(undefined)).toBe(30_000);
80
+ expect(() => parseInterval("soon")).toThrow();
81
+ });
82
+ });
83
+ describe("lastJsonPayload", () => {
84
+ it("takes the last SSE data line, or the plain body", () => {
85
+ expect(lastJsonPayload('event: message\ndata: {"a":1}\n\ndata: {"b":2}\n')).toBe('{"b":2}');
86
+ expect(lastJsonPayload('{"plain":true}')).toBe('{"plain":true}');
87
+ });
88
+ });
89
+ import { buildFollowUpPrompt, followUpsSince, MAX_RESUMES } from "./worker.js";
90
+ describe("followUpsSince", () => {
91
+ const self = "agent-self";
92
+ const msgs = [
93
+ { id: "1", content: "my question", timestamp: "2026-10-12T10:00:00Z", routedTeammateId: self },
94
+ { id: "2", content: "ANSWER: yes", timestamp: "2026-10-12T10:05:00Z", routedTeammateId: "orchestrator" },
95
+ { id: "3", content: "old", timestamp: "2026-10-12T09:00:00Z", routedTeammateId: "orchestrator" },
96
+ { id: "4", content: "my report", timestamp: "2026-10-12T10:06:00Z", routedTeammateId: self },
97
+ { id: "5", content: "please also do X", timestamp: "2026-10-12T10:07:00Z", authorType: "human", routedTeammateId: null },
98
+ { id: "6", content: " ", timestamp: "2026-10-12T10:08:00Z", routedTeammateId: "orchestrator" },
99
+ ];
100
+ it("keeps only others' non-empty messages after the run ended, oldest first", () => {
101
+ expect(followUpsSince(msgs, "2026-10-12T10:01:00Z", self).map((m) => m.id)).toEqual(["2", "5"]);
102
+ });
103
+ it("the worker's own posts never resume it", () => {
104
+ expect(followUpsSince(msgs, "2026-10-12T10:05:30Z", self).map((m) => m.id)).toEqual(["5"]);
105
+ });
106
+ it("nothing new → no resume", () => {
107
+ expect(followUpsSince(msgs, "2026-10-12T11:00:00Z", self)).toEqual([]);
108
+ });
109
+ it("the follow-up prompt carries the messages and the verdict rule", () => {
110
+ const p = buildFollowUpPrompt([{ content: "ANSWER: yes", timestamp: "t", routedTeammateId: "orch" }]);
111
+ expect(p).toContain("agent orch (t): ANSWER: yes");
112
+ expect(p).toContain("WORKER-RESULT:");
113
+ expect(MAX_RESUMES).toBeGreaterThan(0);
114
+ });
115
+ });
116
+ //# sourceMappingURL=worker.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.test.js","sourceRoot":"","sources":["../../src/commands/worker.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Governed workspace operations (R8a):
3
+ *
4
+ * synap workspace archive <id|name> POST /api/hub/workspaces/:id/archive
5
+ * synap workspace restore <id> POST /api/hub/workspaces/:id/restore
6
+ * synap workspace rename <id|name> <new> PATCH /api/hub/workspaces/:id
7
+ * synap entity move <ids...> --to <ws> POST /api/hub/entities/move
8
+ *
9
+ * Every one of these is GOVERNED on the pod: with an agent key the answer is a
10
+ * proposal (`proposed` is success — approve it with `synap open proposal <id>`);
11
+ * with an owner key it applies. This file only resolves names and prints.
12
+ */
13
+ import { type HubConfig } from "../lib/hub-client.js";
14
+ export interface WorkspaceOpsOpts {
15
+ reason?: string;
16
+ json?: boolean;
17
+ podUrl?: string;
18
+ apiKey?: string;
19
+ }
20
+ interface Resolved {
21
+ id: string;
22
+ name: string;
23
+ }
24
+ /**
25
+ * Resolve <id|name> to { id, name }. An id is taken as-is (an ARCHIVED
26
+ * workspace is hidden from the list, so restore must be able to name it by id).
27
+ */
28
+ export declare function resolveWorkspaceRef(value: string, cfg: HubConfig): Promise<Resolved>;
29
+ export declare function workspaceArchive(target: string, opts: WorkspaceOpsOpts): Promise<void>;
30
+ export declare function workspaceRestore(target: string, opts: WorkspaceOpsOpts): Promise<void>;
31
+ export declare function workspaceRename(target: string, newName: string, opts: WorkspaceOpsOpts): Promise<void>;
32
+ export declare function entityMove(entityIds: string[], opts: WorkspaceOpsOpts & {
33
+ to: string;
34
+ }): Promise<void>;
35
+ export {};