@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,248 @@
1
+ /**
2
+ * `synap proposals await <id>` — block until a proposal is decided.
3
+ *
4
+ * The dev-loop primitive: an agent files a proposal, then WAITS for the human
5
+ * to answer it before continuing. Without this the only shapes available were
6
+ * "fire and forget" (the agent never learns the outcome) or a hand-rolled sleep
7
+ * loop in every caller.
8
+ *
9
+ * Reuses `pollForApproval` — the ONE poll loop already shared by CP login and
10
+ * agent-key provisioning. This command adds no second poller; it supplies the
11
+ * predicates and a first immediate check so an already-decided proposal returns
12
+ * without paying one interval of latency.
13
+ *
14
+ * Status vocabulary comes from `PROPOSAL_STATUS_FILTERS` (data-extra.ts), which
15
+ * itself mirrors the pod's SSOT. It is NOT hand-mirrored here: the terminal
16
+ * classification below is asserted exhaustive against that list by a test, so a
17
+ * new pod status cannot silently fall through.
18
+ */
19
+ import chalk from "chalk";
20
+ import { log } from "../utils/logger.js";
21
+ import { resolveHubConfig, hubGet, renderHubError, } from "../lib/hub-client.js";
22
+ import { requireFullId } from "../lib/id.js";
23
+ import { pollForApproval } from "../lib/approval-poll.js";
24
+ import { PROPOSAL_STATUS_FILTERS, proposalStatusLabel } from "./data-extra.js";
25
+ // ─── status classification ────────────────────────────────────────────────────
26
+ /**
27
+ * Every value a proposal ROW can hold — the shared `--status` vocabulary minus
28
+ * the `all` filter sentinel, which no row ever carries. Derived, never retyped.
29
+ */
30
+ export const PROPOSAL_ROW_STATUSES = PROPOSAL_STATUS_FILTERS.filter((s) => s !== "all");
31
+ /** Decided, and the decision was YES. Exit 0. */
32
+ const SUCCESS_STATUSES = new Set(["approved", "auto_approved"]);
33
+ /**
34
+ * Decided, and the decision was NOT yes. Exit 1.
35
+ *
36
+ * NOTE ON `cancelled`: the pod has no such status. The equivalent row state is
37
+ * `withdrawn` (proposer retracted it). `reverted` and `approval_failed` are
38
+ * likewise terminal-not-approved: the write did not stand.
39
+ */
40
+ const FAILURE_STATUSES = new Set([
41
+ "rejected",
42
+ "expired",
43
+ "withdrawn",
44
+ "reverted",
45
+ "approval_failed",
46
+ ]);
47
+ /**
48
+ * Classify a proposal's status.
49
+ *
50
+ * `unknown` is deliberately NON-terminal: a status this CLI has never heard of
51
+ * may well be transient on a newer pod, and calling it "rejected" would be the
52
+ * client inventing a decision the pod never made. An unknown status therefore
53
+ * keeps polling and, failing that, times out (exit 2) — an honest "I could not
54
+ * determine the outcome" rather than a fabricated one.
55
+ */
56
+ export function classifyProposalStatus(status) {
57
+ if (!status)
58
+ return "unknown";
59
+ const s = status.trim().toLowerCase();
60
+ if (SUCCESS_STATUSES.has(s))
61
+ return "approved";
62
+ if (FAILURE_STATUSES.has(s))
63
+ return "rejected";
64
+ if (s === "pending")
65
+ return "pending";
66
+ return "unknown";
67
+ }
68
+ /** Process exit code for a finished await. */
69
+ export function exitCodeForOutcome(outcome) {
70
+ if (outcome === "approved")
71
+ return 0;
72
+ if (outcome === "rejected")
73
+ return 1;
74
+ return 2; // pending at deadline, or an outcome we could not classify
75
+ }
76
+ /** Read `status` off a `GET /proposals/:id` body, tolerating an envelope. */
77
+ export function statusOf(data) {
78
+ if (!data || typeof data !== "object")
79
+ return undefined;
80
+ const row = data;
81
+ const nested = row.proposal;
82
+ const source = nested && typeof nested === "object" ? nested : row;
83
+ const status = source.status;
84
+ return typeof status === "string" ? status : undefined;
85
+ }
86
+ // ─── duration parsing ─────────────────────────────────────────────────────────
87
+ /**
88
+ * Parse `30m` / `10s` / `2h` / a bare number of seconds into milliseconds.
89
+ * Returns null for anything unparseable so the caller can name the accepted
90
+ * shapes instead of silently defaulting.
91
+ */
92
+ export function parseDuration(value, fallbackMs) {
93
+ if (value === undefined || value === null || String(value).trim() === "")
94
+ return fallbackMs;
95
+ const m = String(value).trim().toLowerCase().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h)?$/);
96
+ if (!m)
97
+ return null;
98
+ const n = Number(m[1]);
99
+ if (!Number.isFinite(n) || n <= 0)
100
+ return null;
101
+ const unit = m[2] ?? "s";
102
+ const factor = unit === "ms" ? 1 : unit === "s" ? 1000 : unit === "m" ? 60_000 : 3_600_000;
103
+ return Math.round(n * factor);
104
+ }
105
+ /**
106
+ * Poll until the proposal is terminal or the deadline elapses. Never throws for
107
+ * a decision — a rejection is a RESULT, not an error. Only a genuinely broken
108
+ * call (bad id, 403) propagates, via the first immediate check.
109
+ */
110
+ export async function awaitProposal(id, cfg, opts) {
111
+ const startedAt = Date.now();
112
+ // First check is IMMEDIATE — an already-decided proposal must not pay a full
113
+ // interval of latency, and a 404/403 must surface as an error now rather than
114
+ // being swallowed as a retryable blip by the poll loop.
115
+ const first = (await hubGet(`/proposals/${id}`, {}, cfg));
116
+ const firstStatus = statusOf(first);
117
+ const firstOutcome = classifyProposalStatus(firstStatus);
118
+ if (firstOutcome === "approved" || firstOutcome === "rejected") {
119
+ return {
120
+ id,
121
+ status: firstStatus,
122
+ outcome: firstOutcome,
123
+ elapsedMs: Date.now() - startedAt,
124
+ proposal: first,
125
+ };
126
+ }
127
+ let lastStatus = firstStatus;
128
+ let decided = null;
129
+ try {
130
+ const approved = await pollForApproval({
131
+ url: `${cfg.podUrl.replace(/\/+$/, "")}/api/hub/proposals/${id}`,
132
+ headers: { Authorization: `Bearer ${cfg.apiKey}` },
133
+ intervalMs: opts.intervalMs,
134
+ timeoutMs: opts.timeoutMs,
135
+ isApproved: (d) => classifyProposalStatus(statusOf(d)) === "approved",
136
+ isRejected: (d) => {
137
+ const status = statusOf(d);
138
+ if (status)
139
+ lastStatus = status;
140
+ if (classifyProposalStatus(status) !== "rejected")
141
+ return false;
142
+ decided = { data: d, outcome: "rejected" };
143
+ return true;
144
+ },
145
+ onApproved: (d) => {
146
+ const status = statusOf(d);
147
+ if (status)
148
+ lastStatus = status;
149
+ return d;
150
+ },
151
+ // Track the last status seen even on ticks that are neither terminal.
152
+ onTick: ({ data }) => {
153
+ const status = statusOf(data);
154
+ if (status)
155
+ lastStatus = status;
156
+ },
157
+ });
158
+ return {
159
+ id,
160
+ status: statusOf(approved) ?? lastStatus,
161
+ outcome: "approved",
162
+ elapsedMs: Date.now() - startedAt,
163
+ proposal: approved,
164
+ };
165
+ }
166
+ catch {
167
+ // `pollForApproval` throws for exactly two reasons: isRejected fired, or the
168
+ // deadline elapsed. `decided` disambiguates without string-matching a message.
169
+ if (decided) {
170
+ const settled = decided;
171
+ return {
172
+ id,
173
+ status: statusOf(settled.data) ?? lastStatus,
174
+ outcome: "rejected",
175
+ elapsedMs: Date.now() - startedAt,
176
+ proposal: settled.data,
177
+ };
178
+ }
179
+ return {
180
+ id,
181
+ status: lastStatus,
182
+ outcome: lastStatus && classifyProposalStatus(lastStatus) === "pending" ? "pending" : "unknown",
183
+ elapsedMs: Date.now() - startedAt,
184
+ };
185
+ }
186
+ }
187
+ /**
188
+ * Human wording for a status. Goes through the SAME helper the listing uses
189
+ * (`proposalStatusLabel`) so the two surfaces can never render one status two
190
+ * ways — the fork that put "Refused" in one governance surface and "Rejected"
191
+ * in another. An unrecognised value falls back to "undecided" rather than
192
+ * leaking a raw token.
193
+ */
194
+ function describeStatus(status) {
195
+ if (!status)
196
+ return "undecided";
197
+ const known = PROPOSAL_STATUS_FILTERS.includes(status);
198
+ return known
199
+ ? proposalStatusLabel(status)
200
+ : "undecided";
201
+ }
202
+ // ─── command ──────────────────────────────────────────────────────────────────
203
+ const DEFAULT_TIMEOUT_MS = 30 * 60_000;
204
+ const DEFAULT_INTERVAL_MS = 10_000;
205
+ export async function awaitProposalCommand(id, opts) {
206
+ requireFullId(id, "proposal", chalk, log);
207
+ const timeoutMs = parseDuration(opts.timeout, DEFAULT_TIMEOUT_MS);
208
+ const intervalMs = parseDuration(opts.interval, DEFAULT_INTERVAL_MS);
209
+ if (timeoutMs === null || intervalMs === null) {
210
+ console.error(chalk.red(`Unparseable duration. Use a number with a unit: 500ms, 30s, 15m, 2h (bare number = seconds).`));
211
+ process.exit(2);
212
+ return;
213
+ }
214
+ let cfg;
215
+ let result;
216
+ try {
217
+ cfg = await resolveHubConfig(opts);
218
+ if (!opts.json) {
219
+ log.dim(`Waiting for proposal ${id.slice(0, 8)} — checking every ${Math.round(intervalMs / 1000)}s, up to ${Math.round(timeoutMs / 60_000)}m.`);
220
+ }
221
+ result = await awaitProposal(id, cfg, { timeoutMs, intervalMs });
222
+ }
223
+ catch (e) {
224
+ renderHubError(e);
225
+ process.exit(2);
226
+ return;
227
+ }
228
+ if (opts.json) {
229
+ console.log(JSON.stringify({
230
+ id: result.id,
231
+ status: result.status ?? null,
232
+ outcome: result.outcome,
233
+ elapsedMs: result.elapsedMs,
234
+ }, null, 2));
235
+ }
236
+ else if (result.outcome === "approved") {
237
+ log.success(`Proposal ${describeStatus(result.status)} ${chalk.dim(id.slice(0, 8))}`);
238
+ }
239
+ else if (result.outcome === "rejected") {
240
+ log.error(`Proposal ${describeStatus(result.status)} ${chalk.dim(id.slice(0, 8))}`);
241
+ }
242
+ else {
243
+ log.error(`Timed out after ${Math.round(result.elapsedMs / 1000)}s — still ${describeStatus(result.status)}.`);
244
+ log.dim(` Review → synap open proposal ${id}`);
245
+ }
246
+ process.exit(exitCodeForOutcome(result.outcome));
247
+ }
248
+ //# sourceMappingURL=proposals-await.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposals-await.js","sourceRoot":"","sources":["../../src/commands/proposals-await.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
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 { type GovernancePreset } from "../lib/targets.js";
52
+ export interface ProtonSetupOpts {
53
+ /** Saved pod profile to connect the bridge to (separate from the global CLI pod). */
54
+ pod?: string;
55
+ /** Governance preset for the agent — skips the interactive prompt when set. */
56
+ governance?: GovernancePreset;
57
+ podUrl?: string;
58
+ apiKey?: string;
59
+ bridgeDir?: string;
60
+ /** Advanced/legacy escape hatch — pins the bridge to one workspace instead of pod-wide. */
61
+ workspaceId?: string;
62
+ /** Scopes the bridge to one project (peer lens to workspace). Skips the project prompt. */
63
+ projectId?: string;
64
+ /** Proton ACCOUNT email — the account the bridge auto-logs-in as. */
65
+ protonEmail?: string;
66
+ /** Proton ACCOUNT password (not a bridge-generated value) — provisioned into the pod vault. */
67
+ protonPassword?: string;
68
+ /** Proton ACCOUNT 2FA/TOTP seed (base32), optional — provisioned into the pod vault. */
69
+ protonTotpSeed?: string;
70
+ /** Proton mailbox password (two-password-mode accounts only), optional — provisioned into the pod vault. */
71
+ protonMailboxPassword?: string;
72
+ }
73
+ export declare function protonSetup(opts: ProtonSetupOpts): Promise<void>;