@synap-core/cli 1.11.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +40 -198
  3. package/dist/build-info.json +6 -0
  4. package/dist/commands/agent-run.js +3 -2
  5. package/dist/commands/agent-run.js.map +1 -1
  6. package/dist/commands/agents.d.ts +32 -17
  7. package/dist/commands/agents.js +203 -237
  8. package/dist/commands/agents.js.map +1 -1
  9. package/dist/commands/app.d.ts +143 -0
  10. package/dist/commands/app.js +524 -0
  11. package/dist/commands/app.js.map +1 -0
  12. package/dist/commands/automate.d.ts +21 -0
  13. package/dist/commands/automate.js +42 -0
  14. package/dist/commands/automate.js.map +1 -0
  15. package/dist/commands/automation-schema.test.d.ts +16 -0
  16. package/dist/commands/automation-schema.test.js +77 -0
  17. package/dist/commands/automation-schema.test.js.map +1 -0
  18. package/dist/commands/automation.d.ts +12 -0
  19. package/dist/commands/automation.js +116 -66
  20. package/dist/commands/automation.js.map +1 -1
  21. package/dist/commands/box.d.ts +42 -0
  22. package/dist/commands/box.js +89 -0
  23. package/dist/commands/box.js.map +1 -0
  24. package/dist/commands/bridge-setup.d.ts +14 -1
  25. package/dist/commands/bridge-setup.js +395 -129
  26. package/dist/commands/bridge-setup.js.map +1 -1
  27. package/dist/commands/cap-connections.d.ts +4 -4
  28. package/dist/commands/cap-connections.js +14 -14
  29. package/dist/commands/cap-connections.js.map +1 -1
  30. package/dist/commands/capability.d.ts +3 -1
  31. package/dist/commands/capability.js +249 -176
  32. package/dist/commands/capability.js.map +1 -1
  33. package/dist/commands/catalog.d.ts +275 -0
  34. package/dist/commands/catalog.js +481 -0
  35. package/dist/commands/catalog.js.map +1 -0
  36. package/dist/commands/cell.d.ts +155 -8
  37. package/dist/commands/cell.js +416 -40
  38. package/dist/commands/cell.js.map +1 -1
  39. package/dist/commands/centrality.js +1 -13
  40. package/dist/commands/centrality.js.map +1 -1
  41. package/dist/commands/close-questions.d.ts +27 -0
  42. package/dist/commands/close-questions.js +49 -0
  43. package/dist/commands/close-questions.js.map +1 -0
  44. package/dist/commands/close-questions.test.d.ts +1 -0
  45. package/dist/commands/close-questions.test.js +52 -0
  46. package/dist/commands/close-questions.test.js.map +1 -0
  47. package/dist/commands/connect.d.ts +36 -13
  48. package/dist/commands/connect.js +68 -167
  49. package/dist/commands/connect.js.map +1 -1
  50. package/dist/commands/connections.d.ts +3 -2
  51. package/dist/commands/connections.js +95 -25
  52. package/dist/commands/connections.js.map +1 -1
  53. package/dist/commands/context.js +79 -44
  54. package/dist/commands/context.js.map +1 -1
  55. package/dist/commands/data-extra.d.ts +34 -0
  56. package/dist/commands/data-extra.js +203 -25
  57. package/dist/commands/data-extra.js.map +1 -1
  58. package/dist/commands/data.d.ts +120 -2
  59. package/dist/commands/data.js +295 -21
  60. package/dist/commands/data.js.map +1 -1
  61. package/dist/commands/diagnose.d.ts +66 -4
  62. package/dist/commands/diagnose.js +285 -28
  63. package/dist/commands/diagnose.js.map +1 -1
  64. package/dist/commands/doc.d.ts +11 -4
  65. package/dist/commands/doc.js +39 -14
  66. package/dist/commands/doc.js.map +1 -1
  67. package/dist/commands/doctor.d.ts +133 -3
  68. package/dist/commands/doctor.js +761 -41
  69. package/dist/commands/doctor.js.map +1 -1
  70. package/dist/commands/explain.js +5 -5
  71. package/dist/commands/explain.js.map +1 -1
  72. package/dist/commands/hooks.d.ts +19 -0
  73. package/dist/commands/hooks.js +70 -0
  74. package/dist/commands/hooks.js.map +1 -0
  75. package/dist/commands/import.d.ts +393 -13
  76. package/dist/commands/import.js +1150 -54
  77. package/dist/commands/import.js.map +1 -1
  78. package/dist/commands/init.d.ts +34 -9
  79. package/dist/commands/init.js +481 -981
  80. package/dist/commands/init.js.map +1 -1
  81. package/dist/commands/keys.d.ts +1 -0
  82. package/dist/commands/keys.js +15 -2
  83. package/dist/commands/keys.js.map +1 -1
  84. package/dist/commands/knowledge.d.ts +22 -6
  85. package/dist/commands/knowledge.js +121 -57
  86. package/dist/commands/knowledge.js.map +1 -1
  87. package/dist/commands/lens.d.ts +37 -1
  88. package/dist/commands/lens.js +194 -72
  89. package/dist/commands/lens.js.map +1 -1
  90. package/dist/commands/market-authoring.d.ts +29 -2
  91. package/dist/commands/market-authoring.js +348 -7
  92. package/dist/commands/market-authoring.js.map +1 -1
  93. package/dist/commands/market-official.d.ts +58 -0
  94. package/dist/commands/market-official.js +84 -0
  95. package/dist/commands/market-official.js.map +1 -0
  96. package/dist/commands/market.d.ts +400 -16
  97. package/dist/commands/market.js +1802 -146
  98. package/dist/commands/market.js.map +1 -1
  99. package/dist/commands/mcp.d.ts +60 -25
  100. package/dist/commands/mcp.js +251 -64
  101. package/dist/commands/mcp.js.map +1 -1
  102. package/dist/commands/observe.category.test.d.ts +1 -0
  103. package/dist/commands/observe.category.test.js +59 -0
  104. package/dist/commands/observe.category.test.js.map +1 -0
  105. package/dist/commands/observe.d.ts +3 -0
  106. package/dist/commands/observe.js +7 -5
  107. package/dist/commands/observe.js.map +1 -1
  108. package/dist/commands/observe.title.test.d.ts +1 -0
  109. package/dist/commands/observe.title.test.js +37 -0
  110. package/dist/commands/observe.title.test.js.map +1 -0
  111. package/dist/commands/open.d.ts +39 -9
  112. package/dist/commands/open.js +80 -25
  113. package/dist/commands/open.js.map +1 -1
  114. package/dist/commands/playbook.d.ts +42 -0
  115. package/dist/commands/playbook.js +171 -0
  116. package/dist/commands/playbook.js.map +1 -0
  117. package/dist/commands/pod.js +1 -1
  118. package/dist/commands/pod.js.map +1 -1
  119. package/dist/commands/pods.d.ts +11 -1
  120. package/dist/commands/pods.js +129 -131
  121. package/dist/commands/pods.js.map +1 -1
  122. package/dist/commands/proposals-actions.d.ts +62 -0
  123. package/dist/commands/proposals-actions.js +143 -8
  124. package/dist/commands/proposals-actions.js.map +1 -1
  125. package/dist/commands/proposals-await.d.ts +68 -0
  126. package/dist/commands/proposals-await.js +248 -0
  127. package/dist/commands/proposals-await.js.map +1 -0
  128. package/dist/commands/proton-setup.d.ts +73 -0
  129. package/dist/commands/proton-setup.js +579 -0
  130. package/dist/commands/proton-setup.js.map +1 -0
  131. package/dist/commands/providers.d.ts +23 -0
  132. package/dist/commands/providers.js +126 -1
  133. package/dist/commands/providers.js.map +1 -1
  134. package/dist/commands/raycast.js +6 -2
  135. package/dist/commands/raycast.js.map +1 -1
  136. package/dist/commands/rule.d.ts +150 -0
  137. package/dist/commands/rule.js +447 -0
  138. package/dist/commands/rule.js.map +1 -0
  139. package/dist/commands/session-feed-wait.d.ts +48 -0
  140. package/dist/commands/session-feed-wait.js +261 -0
  141. package/dist/commands/session-feed-wait.js.map +1 -0
  142. package/dist/commands/session-post.d.ts +40 -0
  143. package/dist/commands/session-post.js +96 -0
  144. package/dist/commands/session-post.js.map +1 -0
  145. package/dist/commands/session-wait.d.ts +116 -0
  146. package/dist/commands/session-wait.js +224 -0
  147. package/dist/commands/session-wait.js.map +1 -0
  148. package/dist/commands/sessions.d.ts +54 -0
  149. package/dist/commands/sessions.js +501 -58
  150. package/dist/commands/sessions.js.map +1 -1
  151. package/dist/commands/skill-manage.d.ts +21 -0
  152. package/dist/commands/skill-manage.js +136 -19
  153. package/dist/commands/skill-manage.js.map +1 -1
  154. package/dist/commands/skills-commands.d.ts +2 -0
  155. package/dist/commands/skills-commands.js +9 -1
  156. package/dist/commands/skills-commands.js.map +1 -1
  157. package/dist/commands/skills-commands.test.d.ts +1 -0
  158. package/dist/commands/skills-commands.test.js +57 -0
  159. package/dist/commands/skills-commands.test.js.map +1 -0
  160. package/dist/commands/skills.js +16 -0
  161. package/dist/commands/skills.js.map +1 -1
  162. package/dist/commands/status.d.ts +1 -4
  163. package/dist/commands/status.js +6 -35
  164. package/dist/commands/status.js.map +1 -1
  165. package/dist/commands/statusline.backoff.test.d.ts +13 -0
  166. package/dist/commands/statusline.backoff.test.js +100 -0
  167. package/dist/commands/statusline.backoff.test.js.map +1 -0
  168. package/dist/commands/statusline.js +16 -9
  169. package/dist/commands/statusline.js.map +1 -1
  170. package/dist/commands/sync-status.d.ts +12 -0
  171. package/dist/commands/sync-status.js +125 -0
  172. package/dist/commands/sync-status.js.map +1 -0
  173. package/dist/commands/templates-retire.d.ts +34 -0
  174. package/dist/commands/templates-retire.js +192 -0
  175. package/dist/commands/templates-retire.js.map +1 -0
  176. package/dist/commands/tools.js +6 -21
  177. package/dist/commands/tools.js.map +1 -1
  178. package/dist/commands/tracks.d.ts +112 -0
  179. package/dist/commands/tracks.js +543 -0
  180. package/dist/commands/tracks.js.map +1 -0
  181. package/dist/commands/update.d.ts +3 -11
  182. package/dist/commands/update.js +5 -134
  183. package/dist/commands/update.js.map +1 -1
  184. package/dist/commands/upload.d.ts +41 -3
  185. package/dist/commands/upload.js +120 -18
  186. package/dist/commands/upload.js.map +1 -1
  187. package/dist/commands/vendor.d.ts +28 -0
  188. package/dist/commands/vendor.js +110 -0
  189. package/dist/commands/vendor.js.map +1 -0
  190. package/dist/commands/versions.js +6 -0
  191. package/dist/commands/versions.js.map +1 -1
  192. package/dist/commands/view.js +10 -5
  193. package/dist/commands/view.js.map +1 -1
  194. package/dist/commands/whoami.d.ts +30 -3
  195. package/dist/commands/whoami.js +186 -23
  196. package/dist/commands/whoami.js.map +1 -1
  197. package/dist/commands/worker-accounts.d.ts +149 -0
  198. package/dist/commands/worker-accounts.js +339 -0
  199. package/dist/commands/worker-accounts.js.map +1 -0
  200. package/dist/commands/worker-accounts.test.d.ts +1 -0
  201. package/dist/commands/worker-accounts.test.js +224 -0
  202. package/dist/commands/worker-accounts.test.js.map +1 -0
  203. package/dist/commands/worker.d.ts +331 -0
  204. package/dist/commands/worker.js +1067 -0
  205. package/dist/commands/worker.js.map +1 -0
  206. package/dist/commands/worker.test.d.ts +1 -0
  207. package/dist/commands/worker.test.js +427 -0
  208. package/dist/commands/worker.test.js.map +1 -0
  209. package/dist/commands/workspace-ops.d.ts +35 -0
  210. package/dist/commands/workspace-ops.js +153 -0
  211. package/dist/commands/workspace-ops.js.map +1 -0
  212. package/dist/index.d.ts +6 -6
  213. package/dist/index.js +1043 -186
  214. package/dist/index.js.map +1 -1
  215. package/dist/lib/agent-connections.d.ts +31 -0
  216. package/dist/lib/agent-connections.js +33 -0
  217. package/dist/lib/agent-connections.js.map +1 -0
  218. package/dist/lib/agent-detect.d.ts +27 -0
  219. package/dist/lib/agent-detect.js +71 -0
  220. package/dist/lib/agent-detect.js.map +1 -0
  221. package/dist/lib/agent-door.d.ts +136 -0
  222. package/dist/lib/agent-door.js +429 -0
  223. package/dist/lib/agent-door.js.map +1 -0
  224. package/dist/lib/agents-config.d.ts +2 -0
  225. package/dist/lib/agents-config.js +4 -9
  226. package/dist/lib/agents-config.js.map +1 -1
  227. package/dist/lib/approval-poll.d.ts +31 -2
  228. package/dist/lib/approval-poll.js +20 -7
  229. package/dist/lib/approval-poll.js.map +1 -1
  230. package/dist/lib/atomic-file.d.ts +48 -0
  231. package/dist/lib/atomic-file.js +129 -0
  232. package/dist/lib/atomic-file.js.map +1 -0
  233. package/dist/lib/auth.d.ts +17 -11
  234. package/dist/lib/auth.js +47 -64
  235. package/dist/lib/auth.js.map +1 -1
  236. package/dist/lib/batch-approval.d.ts +85 -0
  237. package/dist/lib/batch-approval.js +170 -0
  238. package/dist/lib/batch-approval.js.map +1 -0
  239. package/dist/lib/box/egress.d.ts +82 -0
  240. package/dist/lib/box/egress.js +264 -0
  241. package/dist/lib/box/egress.js.map +1 -0
  242. package/dist/lib/box/evidence.d.ts +86 -0
  243. package/dist/lib/box/evidence.js +121 -0
  244. package/dist/lib/box/evidence.js.map +1 -0
  245. package/dist/lib/box/job-server.d.ts +72 -0
  246. package/dist/lib/box/job-server.js +246 -0
  247. package/dist/lib/box/job-server.js.map +1 -0
  248. package/dist/lib/box/provisioner.d.ts +83 -0
  249. package/dist/lib/box/provisioner.js +312 -0
  250. package/dist/lib/box/provisioner.js.map +1 -0
  251. package/dist/lib/box/proxmox.d.ts +112 -0
  252. package/dist/lib/box/proxmox.js +211 -0
  253. package/dist/lib/box/proxmox.js.map +1 -0
  254. package/dist/lib/box/wire.d.ts +98 -0
  255. package/dist/lib/box/wire.js +70 -0
  256. package/dist/lib/box/wire.js.map +1 -0
  257. package/dist/lib/capture-lane.d.ts +6 -5
  258. package/dist/lib/capture-lane.js +6 -5
  259. package/dist/lib/capture-lane.js.map +1 -1
  260. package/dist/lib/capture-structure.d.ts +230 -11
  261. package/dist/lib/capture-structure.js +251 -13
  262. package/dist/lib/capture-structure.js.map +1 -1
  263. package/dist/lib/catalog-templates.d.ts +59 -0
  264. package/dist/lib/catalog-templates.js +126 -0
  265. package/dist/lib/catalog-templates.js.map +1 -0
  266. package/dist/lib/cli-build.d.ts +19 -0
  267. package/dist/lib/cli-build.js +37 -0
  268. package/dist/lib/cli-build.js.map +1 -0
  269. package/dist/lib/client-header.test.d.ts +1 -0
  270. package/dist/lib/client-header.test.js +85 -0
  271. package/dist/lib/client-header.test.js.map +1 -0
  272. package/dist/lib/conversation-headers.d.ts +33 -0
  273. package/dist/lib/conversation-headers.js +69 -0
  274. package/dist/lib/conversation-headers.js.map +1 -0
  275. package/dist/lib/cp-packages.d.ts +167 -11
  276. package/dist/lib/cp-packages.js +253 -21
  277. package/dist/lib/cp-packages.js.map +1 -1
  278. package/dist/lib/credential-class.d.ts +144 -0
  279. package/dist/lib/credential-class.js +138 -0
  280. package/dist/lib/credential-class.js.map +1 -0
  281. package/dist/lib/describe-lens.d.ts +35 -0
  282. package/dist/lib/describe-lens.js +40 -0
  283. package/dist/lib/describe-lens.js.map +1 -1
  284. package/dist/lib/device-connect.d.ts +125 -0
  285. package/dist/lib/device-connect.js +256 -0
  286. package/dist/lib/device-connect.js.map +1 -0
  287. package/dist/lib/directory-lens.d.ts +99 -0
  288. package/dist/lib/directory-lens.js +187 -0
  289. package/dist/lib/directory-lens.js.map +1 -0
  290. package/dist/lib/exporter-coverage.d.ts +71 -0
  291. package/dist/lib/exporter-coverage.js +97 -0
  292. package/dist/lib/exporter-coverage.js.map +1 -0
  293. package/dist/lib/goal-words.d.ts +38 -0
  294. package/dist/lib/goal-words.js +112 -0
  295. package/dist/lib/goal-words.js.map +1 -0
  296. package/dist/lib/hub-client.d.ts +57 -15
  297. package/dist/lib/hub-client.js +396 -82
  298. package/dist/lib/hub-client.js.map +1 -1
  299. package/dist/lib/init-connect.d.ts +41 -0
  300. package/dist/lib/init-connect.js +75 -0
  301. package/dist/lib/init-connect.js.map +1 -0
  302. package/dist/lib/init-exit.d.ts +24 -0
  303. package/dist/lib/init-exit.js +41 -0
  304. package/dist/lib/init-exit.js.map +1 -0
  305. package/dist/lib/init-flow.d.ts +25 -0
  306. package/dist/lib/init-flow.js +40 -0
  307. package/dist/lib/init-flow.js.map +1 -0
  308. package/dist/lib/init-handoff.d.ts +24 -0
  309. package/dist/lib/init-handoff.js +26 -0
  310. package/dist/lib/init-handoff.js.map +1 -0
  311. package/dist/lib/init-output.d.ts +18 -0
  312. package/dist/lib/init-output.js +43 -0
  313. package/dist/lib/init-output.js.map +1 -0
  314. package/dist/lib/init-pod.d.ts +45 -0
  315. package/dist/lib/init-pod.js +36 -0
  316. package/dist/lib/init-pod.js.map +1 -0
  317. package/dist/lib/installed.d.ts +210 -11
  318. package/dist/lib/installed.js +234 -36
  319. package/dist/lib/installed.js.map +1 -1
  320. package/dist/lib/key-approval.d.ts +57 -0
  321. package/dist/lib/key-approval.js +117 -0
  322. package/dist/lib/key-approval.js.map +1 -0
  323. package/dist/lib/key-diagnosis.d.ts +56 -0
  324. package/dist/lib/key-diagnosis.js +227 -0
  325. package/dist/lib/key-diagnosis.js.map +1 -0
  326. package/dist/lib/key-doctor.d.ts +136 -0
  327. package/dist/lib/key-doctor.js +286 -0
  328. package/dist/lib/key-doctor.js.map +1 -0
  329. package/dist/lib/key-locations.d.ts +120 -0
  330. package/dist/lib/key-locations.js +326 -0
  331. package/dist/lib/key-locations.js.map +1 -0
  332. package/dist/lib/key-source.d.ts +68 -0
  333. package/dist/lib/key-source.js +109 -0
  334. package/dist/lib/key-source.js.map +1 -0
  335. package/dist/lib/key-state.d.ts +70 -0
  336. package/dist/lib/key-state.js +115 -0
  337. package/dist/lib/key-state.js.map +1 -0
  338. package/dist/lib/kind-package.d.ts +181 -0
  339. package/dist/lib/kind-package.js +679 -0
  340. package/dist/lib/kind-package.js.map +1 -0
  341. package/dist/lib/knowledge-title.d.ts +25 -0
  342. package/dist/lib/knowledge-title.js +47 -0
  343. package/dist/lib/knowledge-title.js.map +1 -0
  344. package/dist/lib/knowledge-title.test.d.ts +1 -0
  345. package/dist/lib/knowledge-title.test.js +34 -0
  346. package/dist/lib/knowledge-title.test.js.map +1 -0
  347. package/dist/lib/machine-instance.d.ts +64 -0
  348. package/dist/lib/machine-instance.js +142 -0
  349. package/dist/lib/machine-instance.js.map +1 -0
  350. package/dist/lib/mcp-bridge.d.ts +49 -0
  351. package/dist/lib/mcp-bridge.js +180 -0
  352. package/dist/lib/mcp-bridge.js.map +1 -0
  353. package/dist/lib/mcp-bridge.test.d.ts +1 -0
  354. package/dist/lib/mcp-bridge.test.js +118 -0
  355. package/dist/lib/mcp-bridge.test.js.map +1 -0
  356. package/dist/lib/mcp-call.d.ts +30 -0
  357. package/dist/lib/mcp-call.js +107 -0
  358. package/dist/lib/mcp-call.js.map +1 -0
  359. package/dist/lib/mcp-snippets.d.ts +53 -0
  360. package/dist/lib/mcp-snippets.js +82 -0
  361. package/dist/lib/mcp-snippets.js.map +1 -0
  362. package/dist/lib/next-steps.d.ts +8 -0
  363. package/dist/lib/next-steps.js +31 -1
  364. package/dist/lib/next-steps.js.map +1 -1
  365. package/dist/lib/openclaw.js +3 -2
  366. package/dist/lib/openclaw.js.map +1 -1
  367. package/dist/lib/package-wire.d.ts +179 -0
  368. package/dist/lib/package-wire.js +68 -0
  369. package/dist/lib/package-wire.js.map +1 -0
  370. package/dist/lib/pair-link.d.ts +38 -0
  371. package/dist/lib/pair-link.js +68 -0
  372. package/dist/lib/pair-link.js.map +1 -0
  373. package/dist/lib/pod-moved.d.ts +70 -0
  374. package/dist/lib/pod-moved.js +146 -0
  375. package/dist/lib/pod-moved.js.map +1 -0
  376. package/dist/lib/pod-reach.d.ts +39 -0
  377. package/dist/lib/pod-reach.js +117 -0
  378. package/dist/lib/pod-reach.js.map +1 -0
  379. package/dist/lib/pod-reach.test.d.ts +1 -0
  380. package/dist/lib/pod-reach.test.js +67 -0
  381. package/dist/lib/pod-reach.test.js.map +1 -0
  382. package/dist/lib/pod-wide.d.ts +40 -0
  383. package/dist/lib/pod-wide.js +46 -0
  384. package/dist/lib/pod-wide.js.map +1 -0
  385. package/dist/lib/pod.d.ts +74 -112
  386. package/dist/lib/pod.js +146 -415
  387. package/dist/lib/pod.js.map +1 -1
  388. package/dist/lib/project-ref.d.ts +9 -3
  389. package/dist/lib/project-ref.js +10 -4
  390. package/dist/lib/project-ref.js.map +1 -1
  391. package/dist/lib/register-claude-code-mcp.test.d.ts +1 -0
  392. package/dist/lib/register-claude-code-mcp.test.js +78 -0
  393. package/dist/lib/register-claude-code-mcp.test.js.map +1 -0
  394. package/dist/lib/review-credential.d.ts +119 -0
  395. package/dist/lib/review-credential.js +149 -0
  396. package/dist/lib/review-credential.js.map +1 -0
  397. package/dist/lib/safe-open.d.ts +49 -0
  398. package/dist/lib/safe-open.js +119 -0
  399. package/dist/lib/safe-open.js.map +1 -0
  400. package/dist/lib/session-feed.d.ts +185 -0
  401. package/dist/lib/session-feed.js +257 -0
  402. package/dist/lib/session-feed.js.map +1 -0
  403. package/dist/lib/session-lens.d.ts +40 -1
  404. package/dist/lib/session-lens.js +54 -4
  405. package/dist/lib/session-lens.js.map +1 -1
  406. package/dist/lib/superwhisper-import.d.ts +8 -0
  407. package/dist/lib/superwhisper-import.js +14 -7
  408. package/dist/lib/superwhisper-import.js.map +1 -1
  409. package/dist/lib/superwhisper-title.test.d.ts +1 -0
  410. package/dist/lib/superwhisper-title.test.js +18 -0
  411. package/dist/lib/superwhisper-title.test.js.map +1 -0
  412. package/dist/lib/targets.d.ts +152 -10
  413. package/dist/lib/targets.js +974 -325
  414. package/dist/lib/targets.js.map +1 -1
  415. package/dist/lib/template-file.d.ts +4 -0
  416. package/dist/lib/template-file.js.map +1 -1
  417. package/dist/lib/template-lifecycle.d.ts +217 -0
  418. package/dist/lib/template-lifecycle.js +433 -0
  419. package/dist/lib/template-lifecycle.js.map +1 -0
  420. package/dist/lib/template-steps.d.ts +88 -0
  421. package/dist/lib/template-steps.js +118 -0
  422. package/dist/lib/template-steps.js.map +1 -0
  423. package/dist/lib/time-ago.d.ts +2 -0
  424. package/dist/lib/time-ago.js +15 -0
  425. package/dist/lib/time-ago.js.map +1 -0
  426. package/dist/lib/wake-hook-settings.d.ts +57 -0
  427. package/dist/lib/wake-hook-settings.js +153 -0
  428. package/dist/lib/wake-hook-settings.js.map +1 -0
  429. package/dist/lib/wake-state.d.ts +65 -0
  430. package/dist/lib/wake-state.js +122 -0
  431. package/dist/lib/wake-state.js.map +1 -0
  432. package/dist/utils/logger.js +5 -2
  433. package/dist/utils/logger.js.map +1 -1
  434. package/package.json +26 -17
  435. package/skills/README.md +13 -11
  436. package/skills/agent-os/SKILL.md +214 -99
  437. package/skills/manifest.json +1 -1
  438. package/skills/onboard/SKILL.md +55 -26
  439. package/skills/synap/README.md +5 -8
  440. package/skills/synap/SKILL.md +1149 -289
  441. package/skills/synap/_order.txt +7 -0
  442. package/skills/synap/_skill.yaml +1 -1
  443. package/skills/synap/automations.md +15 -0
  444. package/skills/synap/capture.md +5 -0
  445. package/skills/synap/cli-operations.md +24 -18
  446. package/skills/synap/code-skills.md +70 -0
  447. package/skills/synap/concepts.md +36 -0
  448. package/skills/synap/content-os.md +10 -1
  449. package/skills/synap/creative-loop.md +15 -10
  450. package/skills/synap/crm.md +21 -52
  451. package/skills/synap/document-embeds.md +143 -47
  452. package/skills/synap/escalation-ladder.md +20 -10
  453. package/skills/synap/focus-sessions.md +56 -21
  454. package/skills/synap/from-intent.md +158 -0
  455. package/skills/synap/governance-rules.md +5 -5
  456. package/skills/synap/governance.md +10 -7
  457. package/skills/synap/hand-off.md +33 -0
  458. package/skills/synap/inline-patterns.md +15 -7
  459. package/skills/synap/lenses.md +34 -16
  460. package/skills/synap/linking.md +42 -41
  461. package/skills/synap/mcp-remote-servers.md +64 -0
  462. package/skills/synap/mental-model.md +17 -15
  463. package/skills/synap/operating-mode-rules.md +2 -2
  464. package/skills/synap/processes.md +118 -0
  465. package/skills/synap/quick-reference.md +7 -2
  466. package/skills/synap/reading.md +3 -1
  467. package/skills/synap/reflexes.md +12 -42
  468. package/skills/synap/viewframe-cells.md +38 -5
  469. package/skills/synap/work-flow.md +1 -1
  470. package/skills/synap/work-model.md +110 -0
  471. package/skills/synap/worked-examples.md +4 -5
  472. package/skills/synap/workspace-design.md +15 -11
  473. package/skills/synap/writes.md +105 -25
  474. package/skills/synap/writing-titles.md +63 -0
  475. package/skills/synap-app/SKILL.md +149 -67
  476. package/skills/synap-app/_skill.yaml +1 -1
  477. package/skills/synap-app/creating-the-base-app.md +12 -7
  478. package/skills/synap-app/governance.md +27 -16
  479. package/skills/synap-app/install-commands.md +18 -9
  480. package/skills/synap-app/overview.md +16 -9
  481. package/skills/synap-app/using-the-sdk.md +75 -25
  482. package/skills/synap-design/SKILL.md +474 -0
  483. package/skills/synap-design/_order.txt +4 -0
  484. package/skills/synap-design/_skill.yaml +21 -0
  485. package/skills/synap-design/loop.md +134 -0
  486. package/skills/synap-design/overview.md +44 -0
  487. package/skills/synap-design/principles.md +130 -0
  488. package/skills/synap-design/system.md +133 -0
  489. package/skills/synap-market/SKILL.md +306 -16
  490. package/skills/synap-market/_skill.yaml +1 -1
  491. package/skills/synap-market/author-and-publish.md +145 -8
  492. package/skills/synap-market/governance-and-catalog.md +7 -0
  493. package/skills/synap-market/install.md +79 -1
  494. package/skills/synap-market/overview.md +74 -6
  495. package/skills/synap-schema/SKILL.md +172 -10
  496. package/skills/synap-schema/_order.txt +2 -0
  497. package/skills/synap-schema/_skill.yaml +4 -2
  498. package/skills/synap-schema/common-mistakes.md +4 -2
  499. package/skills/synap-schema/discover-profiles.md +1 -1
  500. package/skills/synap-schema/entity-scope.md +15 -3
  501. package/skills/synap-schema/extend-first.md +29 -0
  502. package/skills/synap-schema/extend-vs-create.md +1 -1
  503. package/skills/synap-schema/intent-vocabulary-ssot.md +111 -0
  504. package/skills/synap-schema/property-types.md +1 -1
  505. package/skills/synap-schema/relations.md +1 -1
  506. package/skills/synap-ui/SKILL.md +19 -12
  507. package/skills/synap-ui/_skill.yaml +1 -1
  508. package/skills/synap-ui/ai-companion.md +1 -1
  509. package/skills/synap-ui/arranging-bento.md +2 -0
  510. package/skills/synap-ui/bento-layouts.md +10 -10
  511. package/skills/synap-ui/bento-recipes.md +313 -543
  512. package/skills/synap-ui/four-builds.md +5 -0
  513. package/skills/synap-ui/view-types.md +2 -2
  514. package/skills/synap-ui/widget-catalog.md +22 -278
  515. package/templates/automations/bookmark-enrichment.automation.json +290 -13
  516. package/templates/automations/url-bookmark-capture.automation.json +73 -11
  517. package/templates/box/runner.py +206 -0
  518. package/templates/skills/authoring-playbooks/SKILL.md +6 -3
  519. package/templates/skills/authoring-playbooks/reference/stages-contract.md +15 -0
  520. package/templates/skills/authoring-playbooks/reference/worked-example.md +3 -0
  521. package/dist/commands/infra.d.ts +0 -21
  522. package/dist/commands/infra.js +0 -262
  523. package/dist/commands/infra.js.map +0 -1
  524. package/node_modules/@synap/hub-rest-client/dist/index.cjs +0 -1261
  525. package/node_modules/@synap/hub-rest-client/dist/index.d.cts +0 -1647
  526. package/node_modules/@synap/hub-rest-client/dist/index.d.ts +0 -1647
  527. package/node_modules/@synap/hub-rest-client/dist/index.js +0 -1231
  528. package/node_modules/@synap/hub-rest-client/package.json +0 -45
  529. package/node_modules/@synap/hub-rest-client/src/client.ts +0 -1631
  530. package/node_modules/@synap/hub-rest-client/src/errors.ts +0 -30
  531. package/node_modules/@synap/hub-rest-client/src/index.ts +0 -153
  532. package/node_modules/@synap/hub-rest-client/src/setup.ts +0 -133
  533. package/node_modules/@synap/hub-rest-client/src/types.ts +0 -1299
@@ -0,0 +1,579 @@
1
+ /**
2
+ * synap proton-setup (HIDDEN)
3
+ *
4
+ * One-shot provisioning for the Proton Mail ↔ Synap bridge — a fork of
5
+ * `bridge-setup` (the Discord bridge) for the SOVEREIGN self-host Proton path:
6
+ * a locally-run, headless Proton Bridge decrypts Proton's end-to-end-encrypted
7
+ * mail and exposes it as plain IMAP/SMTP on localhost; this command wires that
8
+ * bridge up to a Synap pod. See the catalog's `synap-app/packages/
9
+ * workspace-templates/capabilities/proton.capability.json` for the template
10
+ * (vault ref `proton-account`, tool `proton`) and its documented
11
+ * MUTUAL-EXCLUSIVITY rule against the `mailgun` template's Proton-forward path
12
+ * — do not run both for the same mailbox (double-ingest).
13
+ *
14
+ * CREDENTIAL MODEL: the operator enters their Proton ACCOUNT credentials
15
+ * (email + password + optional TOTP seed + optional mailbox password for
16
+ * two-password-mode accounts) ONCE, here — NOT a Bridge-generated password.
17
+ * They are assembled into one JSON secret
18
+ * (`{"email","password","totpSeed","mailboxPassword"}`, last two optional) and
19
+ * stored in the pod vault under ref `proton-account`. The headless bridge redeems
20
+ * that secret and auto-logs-in with it on boot (implemented in the
21
+ * synap-proton-bridge repo); no manual `protonmail-bridge login` step remains. If
22
+ * Proton throws a one-time human-verification challenge (more likely on
23
+ * datacenter/VPS IPs), a URL appears in the bridge logs to click once — see
24
+ * `printNextSteps`.
25
+ *
26
+ * Automates everything that CAN be automated:
27
+ *
28
+ * 1. lets you CHOOSE which saved pod the bridge connects to (kept separate
29
+ * from your global CLI pod via the "proton" surface override), then
30
+ * resolves a durable hub key + workspace from it
31
+ * 2. sanity-checks pod reachability + key scope (GET /capabilities)
32
+ * 3. applies the bridge's OWN capability definition (POST /capabilities/apply)
33
+ * — read from the bridge repo so there is ONE source of truth
34
+ * 4. writes the bridge .env (pod creds + vault ref), preserving any other
35
+ * existing keys, and purges any raw Proton env credentials once vaulted
36
+ * 5. prints the one-time human-verification note (only a human can click it)
37
+ *
38
+ * Hidden on purpose: this is a dogfood/dev convenience, not a first-class
39
+ * surface. Not shown in `synap --help`.
40
+ *
41
+ * The bridge lands data POD-WIDE by default. An OPTIONAL project scope can be
42
+ * picked interactively (or via --project-id); --workspace-id remains an
43
+ * advanced/legacy escape hatch to pin a single workspace, never prompted.
44
+ *
45
+ * Usage:
46
+ * synap proton-setup [--bridge-dir <path>] [--pod <profile-name>]
47
+ * [--workspace-id <uuid>] [--project-id <uuid>] [--pod-url <url>] [--api-key <key>]
48
+ * [--proton-email <email>] [--proton-password <password>]
49
+ * [--proton-totp-seed <seed>] [--proton-mailbox-password <password>]
50
+ */
51
+ import path from "node:path";
52
+ import os from "node:os";
53
+ import fs from "node:fs";
54
+ import { writeSecretFile } from "../lib/atomic-file.js";
55
+ import { createRequire } from "node:module";
56
+ import chalk from "chalk";
57
+ import ora from "ora";
58
+ import prompts from "prompts";
59
+ import { hubGet, hubPost, resolveUserId, renderHubError } from "../lib/hub-client.js";
60
+ import { fetchProjects } from "../lib/project.js";
61
+ import { checkPodHealth, getSurfaceAgentKey, setSurfaceAgentKey, listPodProfiles, getSurfacePodName, setSurfacePod, podNotFoundError, } from "../lib/pod.js";
62
+ import { enrollAgentIfNeeded, ensureAgentGovernance, provisionAgentKey, configureAgentContext, } from "../lib/targets.js";
63
+ import { log, banner } from "../utils/logger.js";
64
+ const DEFAULT_BRIDGE_DIR = path.join(os.homedir(), "Documents", "Code", "synap-proton-bridge");
65
+ /**
66
+ * Pick the pod the BRIDGE connects to — independent of the global CLI pod.
67
+ *
68
+ * The bridge is the "proton" surface, so we resolve/persist its pod via the
69
+ * per-surface override (setSurfacePod) and NEVER touch the global activePod.
70
+ * That lets the operator keep a personal pod as their CLI default while the
71
+ * Proton bridge points at a different (e.g. team / client) pod.
72
+ *
73
+ * Order: explicit --pod-url/--api-key escape hatch → --pod <name> →
74
+ * single saved profile (auto) → interactive picker (default = the pod already
75
+ * assigned to the proton surface, else the CLI-active one).
76
+ */
77
+ async function resolveBridgePod(opts) {
78
+ // 1. Raw URL+key escape hatch — bypasses profiles entirely.
79
+ if (opts.podUrl && opts.apiKey) {
80
+ return {
81
+ cfg: { podUrl: opts.podUrl, apiKey: opts.apiKey, userId: process.env.SYNAP_USER_ID ?? "cli" },
82
+ podName: null,
83
+ };
84
+ }
85
+ const profiles = listPodProfiles();
86
+ if (profiles.length === 0) {
87
+ throw new Error("No pod profiles saved. Run `synap pods add` first, or pass --pod-url and --api-key.");
88
+ }
89
+ // 2. Resolve which profile to use.
90
+ let chosen;
91
+ if (opts.pod) {
92
+ chosen = profiles.find((p) => p.name === opts.pod);
93
+ if (!chosen)
94
+ throw podNotFoundError(opts.pod);
95
+ }
96
+ else if (profiles.length === 1) {
97
+ chosen = profiles[0];
98
+ log.dim(`Using your only saved pod profile: ${chosen.name}`);
99
+ }
100
+ else {
101
+ const defaultName = getSurfacePodName("proton") ?? profiles.find((p) => p.active)?.name ?? profiles[0].name;
102
+ const initial = Math.max(0, profiles.findIndex((p) => p.name === defaultName));
103
+ const { picked } = await prompts({
104
+ type: "select",
105
+ name: "picked",
106
+ message: "Which data pod should the Proton bridge connect to?",
107
+ initial,
108
+ choices: profiles.map((p) => ({
109
+ title: `${p.name}${p.active ? " (CLI default)" : ""}`,
110
+ description: p.config.podUrl,
111
+ value: p.name,
112
+ })),
113
+ });
114
+ if (!picked)
115
+ throw new Error("No pod selected — aborting.");
116
+ chosen = profiles.find((p) => p.name === picked);
117
+ }
118
+ // Remember the choice for the proton surface — without changing the CLI default.
119
+ setSurfacePod("proton", chosen.name);
120
+ const c = chosen.config;
121
+ return {
122
+ cfg: {
123
+ podUrl: c.podUrl,
124
+ apiKey: c.hubApiKey,
125
+ // Acting user asked of the pod; the key's agent id rides apart (HubConfig.userId).
126
+ userId: "cli",
127
+ agentUserId: c.agentUserId || undefined,
128
+ workspaceId: c.workspaceId || undefined,
129
+ },
130
+ podName: chosen.name,
131
+ };
132
+ }
133
+ export async function protonSetup(opts) {
134
+ banner();
135
+ log.heading("Proton Mail bridge — one-shot setup");
136
+ // ── 1. Choose the pod the BRIDGE connects to (independent of the CLI pod) ──
137
+ let cfg;
138
+ let bridgePodName = null;
139
+ try {
140
+ const resolved = await resolveBridgePod(opts);
141
+ cfg = resolved.cfg;
142
+ bridgePodName = resolved.podName;
143
+ }
144
+ catch (err) {
145
+ log.error(err.message);
146
+ log.dim("Run `synap init` or `synap pods add` first to save a pod + key.");
147
+ process.exit(1);
148
+ }
149
+ if (!cfg.podUrl || !cfg.apiKey) {
150
+ log.error("No pod URL / API key resolved. Run `synap init` first.");
151
+ process.exit(1);
152
+ }
153
+ // ── 2. Pod health ────────────────────────────────────────────────────────
154
+ const health = await checkPodHealth(cfg.podUrl);
155
+ if (!health.healthy) {
156
+ log.error(`Pod not reachable at ${cfg.podUrl}`);
157
+ process.exit(1);
158
+ }
159
+ log.success(`Pod healthy: ${cfg.podUrl}${bridgePodName ? ` (profile: ${bridgePodName})` : ""}`);
160
+ // ── 3. Resolve scope — pod-wide by default, workspace/project optional ───
161
+ const { workspaceId, projectId } = await resolveScope(opts, cfg);
162
+ log.dim(workspaceId ? `Workspace: ${workspaceId} (explicit pin)` : "Workspace: pod-wide (no pin)");
163
+ if (projectId)
164
+ log.dim(`Project: ${projectId}`);
165
+ // ── 3b. Key + scope sanity check (GET /capabilities needs hub-protocol.read) ─
166
+ const probe = ora("Checking key scope…").start();
167
+ try {
168
+ await hubGet("/capabilities", { workspaceId }, cfg);
169
+ probe.succeed("Key valid (hub-protocol scope OK)");
170
+ }
171
+ catch (err) {
172
+ probe.fail("Key/scope check failed");
173
+ renderHubError(err);
174
+ log.dim("The key may be expired or missing scope. Run `synap keys rotate` or `synap init`.");
175
+ process.exit(1);
176
+ }
177
+ // ── 3c. Provision a Proton AGENT key linked to the operator ──────────────
178
+ // The bridge must run as a real backend agent — NOT with the operator's raw
179
+ // key. An agent key carries linkedUserId=<operator>; the backend remaps its
180
+ // reads to the operator's data floor (hub-protocol-rest.ts auth middleware)
181
+ // while attributing writes to the agent for governed proposals. All the
182
+ // operator-key work below (capability apply, vault grant) keeps using `cfg`.
183
+ const agentKey = await provisionProtonAgentKey(cfg.podUrl, cfg.apiKey, cfg.workspaceId);
184
+ // ── 4. Provision the capability (vault credential + tool) ────────────────
185
+ const bridgeDir = opts.bridgeDir ?? DEFAULT_BRIDGE_DIR;
186
+ const protonCredentials = await resolveProtonCredentials(opts);
187
+ const protonCredentialsJson = protonCredentials
188
+ ? JSON.stringify(protonCredentials)
189
+ : undefined;
190
+ const { vaultRef, secretId } = await applyBridgeCapability(bridgeDir, workspaceId, cfg, protonCredentialsJson);
191
+ // ── 5. Choose agent governance mode ──────────────────────────────────
192
+ const protonAgentUserId = getSurfaceAgentKey("proton")?.agentUserId;
193
+ if (protonAgentUserId) {
194
+ await ensureAgentGovernance(cfg, protonAgentUserId, opts.governance);
195
+ }
196
+ // ── 6. Grant the bridge redeem access — credentials live ONLY in the vault ─
197
+ let granted = false;
198
+ if (secretId && protonCredentialsJson) {
199
+ // Grant to the AGENT (the bridge's redeem identity), not the operator.
200
+ const agentUserId = getSurfaceAgentKey("proton")?.agentUserId;
201
+ granted = await grantRedeemAccess(secretId, cfg, agentUserId);
202
+ }
203
+ // ── 7. Write the bridge .env ─────────────────────────────────────────────
204
+ const envPath = path.join(bridgeDir, ".env");
205
+ const managed = {
206
+ SYNAP_POD_URL: cfg.podUrl,
207
+ // The bridge runs as the Proton AGENT (linked to the operator), not with
208
+ // the operator's raw key. Reads remap to the operator floor; writes are
209
+ // governed as the agent.
210
+ SYNAP_HUB_API_KEY: agentKey,
211
+ };
212
+ // Pod-wide by default: SYNAP_WORKSPACE_ID/SYNAP_PROJECT_ID are only written
213
+ // when the operator explicitly pinned a workspace (--workspace-id) or chose
214
+ // a project in the picker. Neither is required.
215
+ if (workspaceId)
216
+ managed.SYNAP_WORKSPACE_ID = workspaceId;
217
+ if (projectId)
218
+ managed.SYNAP_PROJECT_ID = projectId;
219
+ // The account credentials are NEVER written to .env — they live in the pod
220
+ // vault (one JSON secret: email/password/totpSeed) and the bridge redeems
221
+ // them on boot via this ref to auto-log-in. (Requires the grant below to
222
+ // land; if it didn't, we warn loudly rather than leaking creds to env.)
223
+ // The bridge reads SYNAP_PROTON_CREDENTIALS_REF (see
224
+ // synap-proton-bridge/src/synapCapabilities.js).
225
+ if (vaultRef)
226
+ managed.SYNAP_PROTON_CREDENTIALS_REF = vaultRef;
227
+ try {
228
+ // Once the credentials are in the vault, purge any stale raw env copies.
229
+ // Also purge a stale scope pin from a prior run — re-running pod-wide (no
230
+ // --workspace-id / no project picked) must actually clear an old pin, not
231
+ // leave it dangling since managed only WRITES the keys it resolves.
232
+ const removeKeys = [
233
+ ...(vaultRef
234
+ ? [
235
+ "PROTON_BRIDGE_PASSWORD",
236
+ "SYNAP_PROTON_PASSWORD_REF",
237
+ "PROTON_EMAIL",
238
+ "PROTON_PASSWORD",
239
+ "PROTON_TOTP_SEED",
240
+ ]
241
+ : []),
242
+ ...(workspaceId ? [] : ["SYNAP_WORKSPACE_ID"]),
243
+ ...(projectId ? [] : ["SYNAP_PROJECT_ID"]),
244
+ ];
245
+ upsertEnv(envPath, managed, removeKeys);
246
+ log.success(`Wrote pod credentials → ${envPath}`);
247
+ }
248
+ catch (err) {
249
+ log.warn(`Could not write ${envPath}: ${err.message}`);
250
+ log.dim("Set these manually in the bridge .env:");
251
+ for (const [k, v] of Object.entries(managed)) {
252
+ log.dim(` ${k}=${k === "SYNAP_HUB_API_KEY" ? "<key>" : v}`);
253
+ }
254
+ }
255
+ // ── 8. Next steps (the human-only remainder) ─────────────────────────────
256
+ printNextSteps(bridgeDir, {
257
+ hasCredentials: Boolean(protonCredentialsJson),
258
+ vaultRef,
259
+ granted,
260
+ });
261
+ }
262
+ // ── Helpers ─────────────────────────────────────────────────────────────────
263
+ /**
264
+ * Provision a Proton AGENT key linked to the operator, via the shared
265
+ * `provisionAgentKey()` wrapper (same door every target in `lib/targets.ts`
266
+ * uses). The resulting key carries linkedUserId=<operator>, so the backend
267
+ * remaps its reads/redeems to the operator's data floor.
268
+ *
269
+ * idempotent: true — REUSE the existing valid key rather than rotate it. A
270
+ * live bridge holds this key in its .env; minting fresh would revoke it and
271
+ * 401 the bridge until it's redeployed. `requireApproval: false` keeps this a
272
+ * one-shot, non-interactive mint rather than opening a browser approval wait.
273
+ *
274
+ * @param podUrl Pod base URL.
275
+ * @param operatorKey The operator's raw hub key (authorizes the provisioning).
276
+ * @param workspaceId Workspace to enroll the agent into (omit for all).
277
+ * @returns the Proton agent key to write as SYNAP_HUB_API_KEY.
278
+ */
279
+ async function provisionProtonAgentKey(podUrl, operatorKey, workspaceId) {
280
+ const spinner = ora("Provisioning Proton agent key…").start();
281
+ let hubApiKey;
282
+ let agentUserId;
283
+ try {
284
+ const result = await provisionAgentKey(podUrl, operatorKey, "proton", {
285
+ requireApproval: false,
286
+ idempotent: true,
287
+ });
288
+ hubApiKey = result.hubApiKey;
289
+ agentUserId = result.agentUserId;
290
+ spinner.succeed(result.reused
291
+ ? "Proton agent key reused (same key — no rotation, no bridge restart needed)"
292
+ : "Proton agent key minted (new key — redeploy the bridge to pick it up)");
293
+ }
294
+ catch (err) {
295
+ spinner.fail("Could not provision the Proton agent key");
296
+ log.error(err instanceof Error ? err.message : String(err));
297
+ process.exit(1);
298
+ }
299
+ // Persist so downstream steps (governance lookup, .env write) can read it back.
300
+ setSurfaceAgentKey("proton", { hubApiKey, agentUserId });
301
+ // Enroll the agent user into the operator's workspace(s) using the OPERATOR
302
+ // key (before the bridge ever uses the agent key).
303
+ await enrollAgentIfNeeded(podUrl, operatorKey, agentUserId, workspaceId);
304
+ // Same CONTEXT.md routing file every other provisioned agent gets.
305
+ try {
306
+ await configureAgentContext(podUrl, operatorKey, "proton", agentUserId);
307
+ }
308
+ catch (err) {
309
+ log.warn(`Agent context wizard failed: ${err instanceof Error ? err.message : String(err)}`);
310
+ }
311
+ return hubApiKey;
312
+ }
313
+ /**
314
+ * Resolve the OPTIONAL scope the bridge writes into — pod-wide by default.
315
+ *
316
+ * Workspace: an explicit --workspace-id is the only way to pin one (advanced/
317
+ * legacy escape hatch) — never prompted, never required.
318
+ *
319
+ * Project: a peer, independent lens. --project-id skips the prompt; otherwise
320
+ * offer a picker with "Pod-wide (no project)" as the default alongside the
321
+ * operator's existing projects. No projects on the pod → skip the prompt.
322
+ */
323
+ async function resolveScope(opts, cfg) {
324
+ const workspaceId = opts.workspaceId;
325
+ let projectId = opts.projectId;
326
+ if (!projectId) {
327
+ const projects = await fetchProjects(cfg);
328
+ if (projects.length > 0) {
329
+ const { picked } = await prompts({
330
+ type: "select",
331
+ name: "picked",
332
+ message: "Which project should the bridge write into? (optional — pod-wide by default)",
333
+ initial: 0,
334
+ choices: [
335
+ { title: "Pod-wide (no project)", value: "" },
336
+ ...projects.map((p) => ({ title: p.name, description: p.id, value: p.id })),
337
+ ],
338
+ });
339
+ projectId = picked || undefined;
340
+ }
341
+ }
342
+ return { workspaceId, projectId };
343
+ }
344
+ /**
345
+ * Prompt for the Proton ACCOUNT credentials (email/password/optional TOTP
346
+ * seed/optional mailbox password) — the same credentials you sign in to
347
+ * proton.me with. These are NOT a Bridge-generated password: the headless
348
+ * bridge uses them to auto-log-in on boot (implemented in the synap-proton-bridge
349
+ * repo). The password, TOTP seed, and mailbox password are secrets —
350
+ * prompted with `type: "password"` (never echoed) and stored ONLY in the pod
351
+ * vault; the email may be shown/passed as a flag.
352
+ */
353
+ async function resolveProtonCredentials(opts) {
354
+ let email = opts.protonEmail;
355
+ if (!email) {
356
+ const { value } = await prompts({
357
+ type: "text",
358
+ name: "value",
359
+ message: "Proton account email — Settings → Account and password (proton.me sign-in):",
360
+ });
361
+ email = value || undefined;
362
+ }
363
+ let password = opts.protonPassword;
364
+ if (!password) {
365
+ const { value } = await prompts({
366
+ type: "password",
367
+ name: "value",
368
+ message: "Proton account password — this is your normal proton.me sign-in password, NOT the Organization key/password (leave blank to skip):",
369
+ });
370
+ password = value || undefined;
371
+ }
372
+ if (!email || !password)
373
+ return undefined;
374
+ let totpSeed = opts.protonTotpSeed;
375
+ if (totpSeed === undefined) {
376
+ const { value } = await prompts({
377
+ type: "password",
378
+ name: "value",
379
+ message: "(optional) Proton 2FA/TOTP seed — Settings → Account and password → Two-factor authentication, base32 (leave blank if 2FA is off):",
380
+ });
381
+ totpSeed = value || "";
382
+ }
383
+ let mailboxPassword = opts.protonMailboxPassword;
384
+ if (mailboxPassword === undefined) {
385
+ const { value } = await prompts({
386
+ type: "password",
387
+ name: "value",
388
+ message: "(optional) Proton mailbox password — ONLY if two-password mode is on (Settings → Account and password); leave blank otherwise:",
389
+ });
390
+ mailboxPassword = value || "";
391
+ }
392
+ return { email, password, totpSeed: totpSeed || "", mailboxPassword: mailboxPassword || "" };
393
+ }
394
+ async function applyBridgeCapability(bridgeDir, workspaceId, cfg, protonCredentialsJson) {
395
+ const spinner = ora("Provisioning capability…").start();
396
+ // Read the capability definition from the bridge repo — ONE source of truth.
397
+ // Documented shape (see proton.capability.json): vault ref "proton-account"
398
+ // (JSON-encoded Proton account credentials), tool "proton". Mirrors
399
+ // bridge-setup.ts's discord-bot read from synapCapabilities.js's
400
+ // CAPABILITY_DEFINITION export.
401
+ const capPath = path.join(bridgeDir, "src", "synapCapabilities.js");
402
+ let rawDef;
403
+ try {
404
+ const require = createRequire(import.meta.url);
405
+ const resolved = require.resolve(capPath);
406
+ if (require.cache && require.cache[resolved])
407
+ delete require.cache[resolved];
408
+ const mod = require(capPath);
409
+ rawDef = mod.CAPABILITY_DEFINITION;
410
+ }
411
+ catch (err) {
412
+ spinner.fail("Capability definition not found");
413
+ log.dim(` Looked in: ${capPath}`);
414
+ log.dim(` ${err.message}`);
415
+ log.dim(" NOTE: this reads the fork's own synapCapabilities.js (Wave C, built in " +
416
+ "parallel) — if it doesn't exist yet, the bridge repo isn't ready.");
417
+ return {};
418
+ }
419
+ if (!rawDef) {
420
+ spinner.fail("No CAPABILITY_DEFINITION export in the bridge");
421
+ return {};
422
+ }
423
+ // Deep-clone + inject the Proton account credentials JSON into the vault
424
+ // credential. With none provided, drop the vault + credentialRef so we
425
+ // never store an empty/placeholder secret.
426
+ const def = JSON.parse(JSON.stringify(rawDef));
427
+ if (protonCredentialsJson) {
428
+ for (const v of def.vault ?? []) {
429
+ if (typeof v.value === "string") {
430
+ v.value = v.value.replace("{{protonCredentialsJson}}", protonCredentialsJson);
431
+ }
432
+ }
433
+ }
434
+ else {
435
+ // No credentials → drop the vault and any tool credentialRef that
436
+ // referenced it (a bare template-local ref or a vault:// string), so we
437
+ // never store a placeholder secret or leave a dangling reference.
438
+ const vaultRefs = new Set((def.vault ?? []).map((v) => v.ref).filter((r) => Boolean(r)));
439
+ delete def.vault;
440
+ for (const t of def.tools ?? []) {
441
+ if (t.credentialRef &&
442
+ (vaultRefs.has(t.credentialRef) || t.credentialRef.startsWith("vault://"))) {
443
+ delete t.credentialRef;
444
+ }
445
+ }
446
+ spinner.text = "Provisioning capability (no credentials → structure only)…";
447
+ }
448
+ try {
449
+ const res = (await hubPost("/capabilities/apply", { definition: def, workspaceId }, cfg));
450
+ const tools = res.created?.tools?.length ?? 0;
451
+ const skills = res.created?.skills?.length ?? 0;
452
+ const vaultRef = res.created?.vault?.[0]?.vaultRef;
453
+ const secretId = res.created?.vault?.[0]?.secretId;
454
+ spinner.succeed(`Capability provisioned: ${res.capabilityKey ?? "?"} (${vaultRef ? "vault + " : ""}${tools} tool, ${skills} skill)`);
455
+ return { vaultRef, secretId };
456
+ }
457
+ catch (err) {
458
+ const msg = err.message;
459
+ spinner.fail("Capability apply failed");
460
+ log.error(` ${msg}`);
461
+ if (protonCredentialsJson) {
462
+ // The Proton account credentials MUST be vaulted for the bridge to run
463
+ // — continuing to write a .env and printing "Done" would leave a
464
+ // crash-looping bridge (redeem 404). A frequent cause is a missing/
465
+ // empty VAULT_SERVER_KEY on the target pod's backend (the vault can't
466
+ // encrypt). Fail loud here.
467
+ if (/VAULT_SERVER_KEY/i.test(msg)) {
468
+ log.dim(" The target pod's secret vault is not configured.");
469
+ log.dim(" Set a durable VAULT_SERVER_KEY (openssl rand -hex 32) in the pod's");
470
+ log.dim(" deploy/.env, redeploy the backend, then re-run proton-setup.");
471
+ }
472
+ process.exit(1);
473
+ }
474
+ return {};
475
+ }
476
+ }
477
+ /**
478
+ * Grant the bridge principal redeem access to the Proton account credentials
479
+ * secret — the headless equivalent of the UI "grant access" flow, using the
480
+ * user's own credentials. After this, the credentials live ONLY in the
481
+ * vault; the bridge redeems them on boot to auto-log-in.
482
+ */
483
+ async function grantRedeemAccess(secretId, cfg, agentUserId) {
484
+ const spinner = ora("Granting the bridge redeem access…").start();
485
+ try {
486
+ // The bridge redeems AS the agent: the backend binds redemption to the
487
+ // agent key's userId (linkedUserId remap → vault_grants.granted_to must be
488
+ // the AGENT, not the operator). Granting to the operator leaves the bridge
489
+ // with no_grant. Fall back to the operator only if the agent id is unknown.
490
+ const principal = agentUserId || (await resolveUserId(cfg));
491
+ const res = (await hubPost(`/vault/secrets/${secretId}/grant`, { grantedTo: principal, scope: "permanent" }, cfg));
492
+ if (res.status === "proposed") {
493
+ // An agent key cannot grant vault access by itself: the pod filed it for
494
+ // the secret owner's approval. Nothing is granted until it is approved.
495
+ spinner.warn("Redeem access is waiting for your approval");
496
+ if (res.reviewUrl)
497
+ log.dim(` Approve it: ${res.reviewUrl}`);
498
+ return false;
499
+ }
500
+ spinner.succeed(`Redeem access granted${res.reused ? " (existing)" : ""} — password stays in the vault`);
501
+ return Boolean(res.grantId);
502
+ }
503
+ catch (err) {
504
+ const msg = err.message;
505
+ if (msg.includes("404")) {
506
+ spinner.warn("Grant door not deployed yet — deploy the backend, then re-run this command");
507
+ }
508
+ else {
509
+ spinner.warn(`Grant skipped: ${msg}`);
510
+ }
511
+ return false;
512
+ }
513
+ }
514
+ /**
515
+ * Upsert KEY=value lines into a dotenv file, preserving comments and any other
516
+ * keys. Existing managed keys are replaced in place; new ones are appended.
517
+ */
518
+ function upsertEnv(filePath, kv, remove = []) {
519
+ const dir = path.dirname(filePath);
520
+ if (!fs.existsSync(dir)) {
521
+ throw new Error(`bridge dir not found: ${dir}`);
522
+ }
523
+ const existing = fs.existsSync(filePath)
524
+ ? fs.readFileSync(filePath, "utf-8")
525
+ : "";
526
+ const lines = existing.length ? existing.split("\n") : [];
527
+ const remaining = new Map(Object.entries(kv));
528
+ const removeSet = new Set(remove);
529
+ const out = [];
530
+ for (const line of lines) {
531
+ const m = line.match(/^([A-Z0-9_]+)=/);
532
+ if (m && removeSet.has(m[1]))
533
+ continue; // drop purged keys entirely
534
+ if (m && remaining.has(m[1])) {
535
+ const key = m[1];
536
+ out.push(`${key}=${remaining.get(key)}`);
537
+ remaining.delete(key);
538
+ }
539
+ else {
540
+ out.push(line);
541
+ }
542
+ }
543
+ if (remaining.size) {
544
+ if (out.length && out[out.length - 1] !== "")
545
+ out.push("");
546
+ out.push("# --- Synap pod (written by `synap proton-setup`) ---");
547
+ for (const [k, v] of remaining)
548
+ out.push(`${k}=${v}`);
549
+ }
550
+ writeSecretFile(filePath, out.join("\n"), { mode: 0o600 });
551
+ }
552
+ function printNextSteps(bridgeDir, state) {
553
+ log.blank();
554
+ log.heading("Done");
555
+ log.blank();
556
+ if (state.vaultRef && state.granted) {
557
+ console.log(` ${chalk.green("✓")} Proton account credentials in the pod vault, bridge granted redeem access — no env password ${chalk.dim(state.vaultRef)}`);
558
+ }
559
+ else if (state.vaultRef && state.hasCredentials) {
560
+ console.log(` ${chalk.yellow("⚠")} Credentials stored in the vault (${chalk.dim(state.vaultRef)}) but the redeem GRANT did not land.`);
561
+ console.log(` Deploy the backend (grant door) and re-run — the bridge can't log in until the grant exists.`);
562
+ }
563
+ console.log(` ${chalk.green("✓")} Bridge .env written (pod creds; account credentials stay in the vault)`);
564
+ log.blank();
565
+ log.heading("Remaining (Proton Bridge — human only, one-time)");
566
+ log.blank();
567
+ console.log(` ${chalk.bold("•")} The bridge auto-logs-in from the vault-stored Proton account credentials on next deploy —`);
568
+ console.log(` no manual ${chalk.bold("protonmail-bridge login")} step needed.`);
569
+ console.log(` ${chalk.bold("•")} If Proton demands a one-time human-verification challenge (more likely on datacenter/VPS IPs),`);
570
+ console.log(` its URL appears in ${chalk.cyan("pm2 logs proton-bridge")} — click it once in a browser; it typically won't ask again.`);
571
+ console.log(` ${chalk.bold("•")} IMAP: ${chalk.dim("127.0.0.1:1143")} · SMTP: ${chalk.dim("127.0.0.1:1025")} (StartTLS, self-signed cert)`);
572
+ if (!state.hasCredentials) {
573
+ console.log(` ${chalk.bold("•")} Proton account credentials not provisioned — re-run with ${chalk.cyan("--proton-email/--proton-password")} (stores them in the vault)`);
574
+ }
575
+ log.blank();
576
+ console.log(` Then: ${chalk.green(`cd ${bridgeDir} && npm start`)}`);
577
+ log.blank();
578
+ }
579
+ //# sourceMappingURL=proton-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proton-setup.js","sourceRoot":"","sources":["../../src/commands/proton-setup.ts"],"names":[],"mappings":"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"}
@@ -35,4 +35,27 @@ export declare function providersPull(opts: {
35
35
  target?: string;
36
36
  podUrl?: string;
37
37
  apiKey?: string;
38
+ showKey?: boolean;
39
+ }): Promise<void>;
40
+ /**
41
+ * Store a per-user API key override for a provider.
42
+ *
43
+ * synap providers set-key <providerId> [--workspace <id>]
44
+ */
45
+ export declare function providersSetKey(opts: {
46
+ providerId: string;
47
+ workspaceId?: string;
48
+ apiKey?: string;
49
+ podUrl?: string;
50
+ hubApiKey?: string;
51
+ }): Promise<void>;
52
+ /**
53
+ * List user/workspace-level key overrides.
54
+ *
55
+ * synap providers list-keys [--workspace <id>]
56
+ */
57
+ export declare function providersListKeys(opts: {
58
+ workspaceId?: string;
59
+ podUrl?: string;
60
+ hubApiKey?: string;
38
61
  }): Promise<void>;