@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,433 @@
1
+ /**
2
+ * Template lifecycle on the CLI side — two pod answers rendered in plain words.
3
+ *
4
+ * 1. DATA CHANGES that ride a template update (contract C). The pod's update
5
+ * preview lists conversion ops still owed to this pod's data
6
+ * (`dataChanges: [{ opKey, description, affected, destructive }]`); a real
7
+ * apply that does not consent to every one of them is refused with 409
8
+ * `DATA_CHANGES_NEED_CONSENT` and writes nothing. This module turns that
9
+ * wire into lines a person reads, and decides which opKeys the person has
10
+ * ACTUALLY agreed to — never more.
11
+ * 2. RETIRED TEMPLATES (contract A). The pod's template health says, per
12
+ * workspace, whether its template is `current`, `retired` (replaced by X),
13
+ * `unlisted` (gone from a COMPLETE catalog read) or `unknown` (the catalog
14
+ * read was not provably complete — never claimed gone).
15
+ *
16
+ * Every parser here distinguishes "the pod did not send this field" (an older
17
+ * pod: behave exactly as before) from "the pod sent it and it is empty"
18
+ * (nothing to agree to). The two are different facts and are never folded.
19
+ */
20
+ import chalk from "chalk";
21
+ import { HubError } from "./hub-client.js";
22
+ export const DATA_CHANGES_CONSENT_CODE = "DATA_CHANGES_NEED_CONSENT";
23
+ /**
24
+ * Read `dataChanges` off a pod response.
25
+ * - `undefined`: the pod sent no such field (an older pod) — behave as before.
26
+ * - `[]`: the pod checked and nothing is owed.
27
+ * Entries without an `opKey` are dropped: a change with no key cannot be
28
+ * consented to, so it cannot be sent back either.
29
+ */
30
+ export function parseDataChanges(raw) {
31
+ if (!raw || typeof raw !== "object")
32
+ return undefined;
33
+ const field = raw.dataChanges;
34
+ if (!Array.isArray(field))
35
+ return undefined;
36
+ const out = [];
37
+ for (const item of field) {
38
+ if (!item || typeof item !== "object")
39
+ continue;
40
+ const r = item;
41
+ const opKey = typeof r.opKey === "string" ? r.opKey.trim() : "";
42
+ if (!opKey)
43
+ continue;
44
+ const affected = typeof r.affected === "number" && Number.isFinite(r.affected) ? r.affected : null;
45
+ out.push({
46
+ opKey,
47
+ description: typeof r.description === "string" && r.description.trim()
48
+ ? r.description.trim()
49
+ : opKey,
50
+ affected,
51
+ destructive: r.destructive === true,
52
+ ...(typeof r.error === "string" && r.error.trim() ? { error: r.error.trim() } : {}),
53
+ ...(typeof r.operatorCommand === "string" && r.operatorCommand.trim()
54
+ ? { operatorCommand: r.operatorCommand.trim() }
55
+ : {}),
56
+ });
57
+ }
58
+ return out;
59
+ }
60
+ /**
61
+ * Read `pendingDataChanges` off a health row.
62
+ * - `undefined`: the pod sent no such field (an older pod) — draw nothing new.
63
+ * - `null`: the pod checked and nothing is held.
64
+ * A malformed value reads as `undefined` (unknown), never as "nothing held".
65
+ */
66
+ export function parsePendingDataChanges(row) {
67
+ if (!("pendingDataChanges" in row))
68
+ return undefined;
69
+ const raw = row.pendingDataChanges;
70
+ if (raw === null)
71
+ return null;
72
+ if (!raw || typeof raw !== "object")
73
+ return undefined;
74
+ const r = raw;
75
+ const sentences = Array.isArray(r.sentences)
76
+ ? r.sentences.filter((s) => typeof s === "string" && s.trim() !== "").map((s) => s.trim())
77
+ : [];
78
+ const count = typeof r.count === "number" && Number.isFinite(r.count) ? r.count : sentences.length;
79
+ return {
80
+ count,
81
+ sentences,
82
+ unreadable: r.unreadable === true,
83
+ // Unknown reads as "you may not be able to agree": the pod's own default.
84
+ needsPodAdmin: r.needsPodAdmin !== false,
85
+ };
86
+ }
87
+ /** An agent's pending "update this space" proposal (`updateProposal`), or null. */
88
+ export function parseUpdateProposal(row) {
89
+ const raw = row.updateProposal;
90
+ return raw && typeof raw.id === "string" && raw.id ? { id: raw.id } : null;
91
+ }
92
+ /** The data changes a 409 consent refusal carries, or null when the error is something else. */
93
+ export function dataChangesFromRefusal(err) {
94
+ if (!(err instanceof HubError))
95
+ return null;
96
+ const body = err.body;
97
+ const code = err.code ?? (typeof body?.code === "string" ? body.code : undefined);
98
+ if (err.status !== 409 || code !== DATA_CHANGES_CONSENT_CODE)
99
+ return null;
100
+ return parseDataChanges(body) ?? [];
101
+ }
102
+ /**
103
+ * True when a 409 consent refusal is about WHO asked, not what was agreed: the
104
+ * caller is an agent, and only a person can agree to a data change. The pod
105
+ * says so with `needsPerson`; an older pod is read from its shape — it refuses
106
+ * a person only for a missing agreement, so an empty `missing` beside an owed
107
+ * agreeable change can only be an agent's refusal.
108
+ */
109
+ export function consentNeedsPerson(err) {
110
+ if (dataChangesFromRefusal(err) === null)
111
+ return false;
112
+ const body = err.body;
113
+ if (typeof body?.needsPerson === "boolean")
114
+ return body.needsPerson;
115
+ const owed = parseDataChanges(body) ?? [];
116
+ return Array.isArray(body?.missing) && body.missing.length === 0 && owed.some((d) => !d.destructive);
117
+ }
118
+ /**
119
+ * The pod's two other data-change refusals, in plain words. `null` for any
120
+ * other error (the caller's generic failure path renders those).
121
+ * - 403 `DATA_CHANGES_NEED_POD_ADMIN`: you agreed, but a data change rewrites
122
+ * its kind pod-wide, so only a pod owner or admin may run it.
123
+ * - 409 `DATA_CHANGES_FAILED`: a change failed mid-run; the template was NOT
124
+ * applied. Changes that ran stay applied, so a re-run lists only the rest.
125
+ */
126
+ export function dataChangeRefusalMessage(err) {
127
+ if (!(err instanceof HubError))
128
+ return null;
129
+ const body = err.body;
130
+ const code = err.code ?? (typeof body?.code === "string" ? body.code : undefined);
131
+ if (err.status === 403 && code === "DATA_CHANGES_NEED_POD_ADMIN") {
132
+ return "Its data changes rewrite records across the whole pod, so only a pod owner or admin can run them. Nothing was written.";
133
+ }
134
+ if (err.status === 409 && code === "DATA_CHANGES_FAILED") {
135
+ const detail = typeof body?.error === "string" && body.error.trim() ? ` ${body.error.trim()}` : "";
136
+ return `A data change failed, so the template was not applied.${detail} The changes that ran stay done; run the update again to finish.`;
137
+ }
138
+ return null;
139
+ }
140
+ function countPhrase(n) {
141
+ if (n === null)
142
+ return "count not reported";
143
+ return `${n} ${n === 1 ? "record" : "records"}`;
144
+ }
145
+ /** One line per data change: the pod's own sentence, then its count. */
146
+ export function formatDataChange(dc) {
147
+ let line = `${dc.description} ${chalk.dim(`(${countPhrase(dc.affected)} · ${dc.opKey})`)}`;
148
+ if (dc.affected === null && dc.error) {
149
+ line += "\n " + chalk.yellow(`The pod couldn't count it: ${dc.error}`);
150
+ }
151
+ if (dc.destructive) {
152
+ line += "\n " + chalk.dim("It retires old data, so it never runs with an update. An operator runs it:");
153
+ if (dc.operatorCommand)
154
+ line += "\n " + chalk.dim(dc.operatorCommand);
155
+ }
156
+ return line;
157
+ }
158
+ /** Print the "Data changes" block for one template. Prints nothing for an empty list. */
159
+ export function printDataChanges(slug, changes) {
160
+ if (changes.length === 0)
161
+ return;
162
+ console.log(" " + chalk.bold(`Data changes for ${slug}`) + chalk.dim(" (they run with the update, once you agree)"));
163
+ for (const dc of changes.filter((d) => !d.destructive))
164
+ console.log(" • " + formatDataChange(dc));
165
+ const operator = changes.filter((d) => d.destructive);
166
+ if (operator.length > 0) {
167
+ console.log(" " + chalk.bold(`Operator steps for ${slug}`) + chalk.dim(" (never run by an update)"));
168
+ for (const dc of operator)
169
+ console.log(" • " + formatDataChange(dc));
170
+ }
171
+ }
172
+ /** `--accept-data-changes a,b c` → ["a","b","c"]. Commander hands a string (or undefined). */
173
+ export function parseAcceptList(raw) {
174
+ if (!raw)
175
+ return [];
176
+ const parts = Array.isArray(raw) ? raw : [raw];
177
+ return parts
178
+ .flatMap((p) => p.split(/[,\s]+/))
179
+ .map((s) => s.trim())
180
+ .filter(Boolean);
181
+ }
182
+ /**
183
+ * Decide consent WITHOUT prompting. Only NON-destructive changes can be agreed
184
+ * to here; a destructive one is an operator step, never sent (the pod refuses
185
+ * an accepted destructive key). `yes` agrees to every agreeable change (the
186
+ * person typed `--yes` on a command that has just printed them); otherwise only
187
+ * the opKeys named in `acceptList` count. A name that is not pending is simply
188
+ * not sent — agreeing to a change the pod did not list means nothing.
189
+ */
190
+ export function decideConsent(pending, input) {
191
+ const named = new Set(input.acceptList ?? []);
192
+ const accepted = [];
193
+ const missing = [];
194
+ const refusedOperatorSteps = [];
195
+ for (const d of pending) {
196
+ if (d.destructive) {
197
+ if (named.has(d.opKey))
198
+ refusedOperatorSteps.push(d.opKey);
199
+ continue;
200
+ }
201
+ if (input.yes || named.has(d.opKey))
202
+ accepted.push(d.opKey);
203
+ else
204
+ missing.push(d);
205
+ }
206
+ return { accepted, missing, refusedOperatorSteps };
207
+ }
208
+ /** The exact command that re-runs an update with consent to these changes. */
209
+ export function consentRerunCommand(slug, changes) {
210
+ const keys = changes.filter((d) => !d.destructive).map((d) => d.opKey);
211
+ return `synap templates update ${slug} --accept-data-changes ${keys.join(",")}`;
212
+ }
213
+ /**
214
+ * What the CLI says when the pod refuses an update for its data changes (409
215
+ * `DATA_CHANGES_NEED_CONSENT`). `person` = `consentNeedsPerson`: the refusal is
216
+ * about WHO ran it. The person may well be at this terminal with an agent key
217
+ * configured, so the hint says how to tell: `synap whoami` must say
218
+ * "Is agent: no" for the agreement to count.
219
+ */
220
+ export function consentRefusalLines(name, slug, owed, person) {
221
+ const warn = person
222
+ ? `${name} was not updated: only a person can agree to its data changes, and this ran with an agent's key. Nothing was written.`
223
+ : `${name} was not updated: it carries data changes you have not agreed to. Nothing was written.`;
224
+ if (!owed.some((d) => !d.destructive))
225
+ return { warn, hints: [] };
226
+ const rerun = consentRerunCommand(slug, owed);
227
+ return {
228
+ warn,
229
+ hints: person
230
+ ? [
231
+ `A person runs, in their own terminal: ${rerun}`,
232
+ "Check the key first: `synap whoami` must say Is agent: no.",
233
+ ]
234
+ : [`To agree and update: ${rerun}`],
235
+ };
236
+ }
237
+ const LIFECYCLES = new Set(["current", "retired", "unlisted", "unknown"]);
238
+ /**
239
+ * Read lifecycle off a Hub `/workspaces` row. `undefined` = the pod sent no
240
+ * lifecycle (older pod): the caller shows exactly what it showed before. A
241
+ * value this CLI does not know reads as `unknown` — never as `current`.
242
+ */
243
+ export function parseLifecycle(row) {
244
+ const raw = row.lifecycle;
245
+ if (raw === undefined || raw === null)
246
+ return undefined;
247
+ const lifecycle = typeof raw === "string" && LIFECYCLES.has(raw) ? raw : "unknown";
248
+ const str = (v) => (typeof v === "string" && v.trim() ? v.trim() : null);
249
+ return {
250
+ lifecycle,
251
+ replacedBy: str(row.replacedBy),
252
+ retiredReason: str(row.retiredReason),
253
+ warning: str(row.lifecycleWarning),
254
+ };
255
+ }
256
+ /**
257
+ * The plain sentence for a template that is not `current`, with the command
258
+ * that acts on it. Null for `current` (nothing to say).
259
+ */
260
+ export function lifecycleNotice(slug, info) {
261
+ switch (info.lifecycle) {
262
+ case "current":
263
+ return null;
264
+ case "retired":
265
+ return {
266
+ label: info.warning ??
267
+ (info.replacedBy
268
+ ? `Retired: ${slug} is replaced by ${info.replacedBy}`
269
+ : `Retired: ${slug} has no replacement`),
270
+ // Retire-into needs a target; with none there is nothing to move into.
271
+ action: info.replacedBy ? `synap templates retire ${slug}` : null,
272
+ };
273
+ case "unlisted":
274
+ return { label: info.warning ?? `No longer in the catalog: ${slug}`, action: null };
275
+ case "unknown":
276
+ return {
277
+ label: `Catalog not fully synced: the pod can't say yet whether ${slug} is still offered`,
278
+ action: null,
279
+ };
280
+ }
281
+ }
282
+ /**
283
+ * Read `overlays` off a Hub `/workspaces` row. `undefined` = the pod sent no
284
+ * such field (an older pod): show exactly what was shown before. `[]` = the
285
+ * space has no overlays. An entry with no lifecycle reads as `unknown`.
286
+ */
287
+ export function parseOverlays(row) {
288
+ const raw = row.overlays;
289
+ if (!Array.isArray(raw))
290
+ return undefined;
291
+ const out = [];
292
+ for (const item of raw) {
293
+ const o = asObj(item);
294
+ const slug = o ? asStr(o.slug) : null;
295
+ if (!o || !slug)
296
+ continue;
297
+ out.push({
298
+ slug,
299
+ info: parseLifecycle(o) ?? { lifecycle: "unknown", replacedBy: null, retiredReason: null, warning: null },
300
+ replacementHere: o.replacementHere === true,
301
+ });
302
+ }
303
+ return out;
304
+ }
305
+ /**
306
+ * The notice for an overlay: the SAME label `lifecycleNotice` gives a space
307
+ * (the pod's own sentence first), but never an action — an overlay is not a
308
+ * space, so `synap templates retire` has nothing to move for it.
309
+ */
310
+ export function overlayNotice(o) {
311
+ const n = lifecycleNotice(o.slug, o.info);
312
+ return n ? { label: n.label, action: null } : null;
313
+ }
314
+ /** An overlay that needs the person: retired, and its replacement is not on the space. */
315
+ export function overlayNeedsAttention(o) {
316
+ return o.info.lifecycle === "retired" && !o.replacementHere;
317
+ }
318
+ const pick = (o, ...keys) => {
319
+ if (!o)
320
+ return undefined;
321
+ for (const k of keys)
322
+ if (o[k] !== undefined)
323
+ return o[k];
324
+ return undefined;
325
+ };
326
+ const asObj = (v) => v && typeof v === "object" && !Array.isArray(v) ? v : undefined;
327
+ const asStr = (v) => (typeof v === "string" && v.trim() ? v.trim() : null);
328
+ const asNum = (v) => (typeof v === "number" && Number.isFinite(v) ? v : null);
329
+ function parseGroups(raw, map) {
330
+ if (!Array.isArray(raw))
331
+ return [];
332
+ return raw.map((r) => (asObj(r) ? map(asObj(r)) : null)).filter((x) => x !== null);
333
+ }
334
+ function kindOf(r) {
335
+ return asStr(pick(r, "kind", "profileSlug", "profile", "slug"));
336
+ }
337
+ /**
338
+ * Parse the retire-into response defensively. Returns null when the body has
339
+ * no recognisable plan AND no proposal — a caller must then say "the pod's
340
+ * answer couldn't be read", never "nothing to move".
341
+ */
342
+ export function parseRetireResponse(raw) {
343
+ const body = asObj(raw);
344
+ if (!body)
345
+ return null;
346
+ const planObj = asObj(body.plan) ?? (body.moves !== undefined ? body : undefined);
347
+ let plan = null;
348
+ if (planObj) {
349
+ const source = asObj(planObj.source);
350
+ const target = asObj(planObj.target);
351
+ plan = {
352
+ sourceName: asStr(pick(source, "name", "workspaceName")),
353
+ sourceSlug: asStr(pick(source, "slug", "packageSlug")),
354
+ targetSlug: asStr(pick(target, "slug", "replacedBy")) ?? asStr(planObj.replacedBy),
355
+ targetWorkspaceId: asStr(pick(target, "workspaceId", "id")),
356
+ targetName: asStr(pick(target, "name", "workspaceName")),
357
+ willInstall: pick(target, "willInstall", "install") === true,
358
+ moves: parseGroups(planObj.moves, (r) => {
359
+ const kind = kindOf(r);
360
+ return kind ? { kind, count: asNum(pick(r, "count", "affected")) } : null;
361
+ }),
362
+ stays: parseGroups(planObj.stays, (r) => {
363
+ const kind = kindOf(r);
364
+ return kind
365
+ ? { kind, count: asNum(pick(r, "count", "affected")), reason: asStr(r.reason) ?? "no reason given" }
366
+ : null;
367
+ }),
368
+ willArchive: typeof pick(planObj, "willArchive", "archiveSource") === "boolean"
369
+ ? pick(planObj, "willArchive", "archiveSource")
370
+ : null,
371
+ };
372
+ }
373
+ const status = asStr(body.status);
374
+ if (status === "proposed" || body.proposalId !== undefined) {
375
+ return {
376
+ kind: "proposed",
377
+ plan,
378
+ proposalId: asStr(body.proposalId),
379
+ reviewUrl: asStr(body.reviewUrl),
380
+ };
381
+ }
382
+ if (!plan)
383
+ return null;
384
+ if (status === "applied" || status === "done" || status === "completed") {
385
+ const archived = typeof body.archived === "boolean" ? body.archived : null;
386
+ const remaining = parseGroups(body.remaining, (r) => {
387
+ const kind = kindOf(r);
388
+ return kind
389
+ ? { kind, count: asNum(pick(r, "count", "affected")), reason: asStr(r.reason) ?? "no reason given" }
390
+ : null;
391
+ });
392
+ return { kind: "applied", plan, archived, remaining: remaining.length ? remaining : plan.stays };
393
+ }
394
+ return { kind: "plan", plan };
395
+ }
396
+ function countOf(n) {
397
+ return n === null ? "some" : String(n);
398
+ }
399
+ /** The plan in plain lines (no trailing hints). */
400
+ export function formatRetirePlan(plan) {
401
+ const lines = [];
402
+ const target = plan.targetSlug ?? "(no replacement named)";
403
+ if (plan.targetWorkspaceId) {
404
+ lines.push(`Target: ${target}, already installed${plan.targetName ? ` as "${plan.targetName}"` : ""} (${plan.targetWorkspaceId})`);
405
+ }
406
+ else if (plan.willInstall) {
407
+ lines.push(`Target: ${target}, not installed yet. It will be installed first.`);
408
+ }
409
+ else {
410
+ lines.push(`Target: ${target}`);
411
+ }
412
+ if (plan.moves.length === 0) {
413
+ lines.push("Moves: nothing to move.");
414
+ }
415
+ else {
416
+ lines.push("Moves:");
417
+ for (const m of plan.moves)
418
+ lines.push(` • ${countOf(m.count)} ${m.kind}`);
419
+ }
420
+ if (plan.stays.length > 0) {
421
+ lines.push("Stays in the old space:");
422
+ for (const s of plan.stays)
423
+ lines.push(` • ${countOf(s.count)} ${s.kind}: ${s.reason}`);
424
+ }
425
+ if (plan.willArchive === true)
426
+ lines.push("The old space will be archived once it is empty. Nothing is deleted.");
427
+ else if (plan.willArchive === false)
428
+ lines.push("The old space stays (something remains in it). Nothing is deleted.");
429
+ else
430
+ lines.push("Nothing is deleted.");
431
+ return lines;
432
+ }
433
+ //# sourceMappingURL=template-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-lifecycle.js","sourceRoot":"","sources":["../../src/lib/template-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Where a space stands with its template, in the words every surface uses.
3
+ *
4
+ * The product's ONE table for these words is `TEMPLATE_STEP_LABELS` in
5
+ * `@synap-core/types/vocabulary`, and the ONE rule that sorts a pod health row
6
+ * into a step is `classifyTemplateHealth` in `@synap-core/web/marketplace`.
7
+ * This package cannot import either (it links only `@synap-core/hub-rest-client`
8
+ * and `@synap-core/workspace-templates`), so both are MIRRORED here, and
9
+ * `test/template-step-vocabulary-parity.test.ts` reads the two sources across
10
+ * the repo boundary and fails when either side moves. Edit both sides.
11
+ */
12
+ /** Mirror of `TEMPLATE_STEP_LABELS` (synap-backend `packages/types/src/vocabulary/index.ts`). */
13
+ export declare const TEMPLATE_STEP_LABELS: {
14
+ readonly update: "Update available";
15
+ readonly unfinished: "Not finished";
16
+ readonly "awaiting-approval": "Waiting for approval";
17
+ readonly "needs-consent": "Needs your OK";
18
+ readonly "agent-asked": "Asked by an agent";
19
+ readonly current: "Up to date";
20
+ };
21
+ export type TemplateStep = keyof typeof TEMPLATE_STEP_LABELS;
22
+ /** A step a space can be on — every step but `current`. */
23
+ export type TemplateUpdateStep = Exclude<TemplateStep, "current">;
24
+ /**
25
+ * A step's words inside a CLI line, where the CLI writes them mid-sentence:
26
+ * the same words with the first letter lowered ("needs your OK", never
27
+ * "needs your ok" — an acronym keeps its case).
28
+ */
29
+ export declare function templateStepPhrase(step: TemplateStep): string;
30
+ /**
31
+ * Mirror of `TEMPLATE_STEP_PRECEDENCE` (synap-app `template-step.ts`): when
32
+ * several steps hold, the first one listed is the space's mark and door. A
33
+ * broken space outranks a decision; data changes outrank an agent's ask (it
34
+ * would be held on them too); an agent's ask outranks a second plain update.
35
+ */
36
+ export declare const TEMPLATE_STEP_PRECEDENCE: readonly ["unfinished", "needs-consent", "agent-asked", "awaiting-approval", "update"];
37
+ /**
38
+ * Mirror of `STEP_FOR_STATE` (synap-app `packages/web/src/marketplace/utils/template-step.ts`):
39
+ * every apply state the pod reports, sorted into a step. `null` = no step of
40
+ * its own (a build in flight, or a finished apply).
41
+ */
42
+ export declare const STEP_FOR_STATE: {
43
+ readonly building: null;
44
+ readonly active: null;
45
+ readonly "awaiting-approval": "awaiting-approval";
46
+ readonly partial: "unfinished";
47
+ readonly "layer-2-not-run": "unfinished";
48
+ readonly failed: "unfinished";
49
+ };
50
+ /**
51
+ * The step the pod's apply `state` puts a space on, by the same rule as
52
+ * `classifyTemplateHealth`: a state this CLI does not know reads as unfinished
53
+ * (never current), and waiting on nothing is not waiting — once every proposal
54
+ * is decided, the update finishes the apply (review2 UX-M4). `null` = the state
55
+ * says nothing (absent on an older pod, `active`, or `building`); the caller
56
+ * falls back to drift.
57
+ */
58
+ export declare function stepFromApplyState(state: string | null | undefined, awaitingApproval: readonly string[]): TemplateUpdateStep | null;
59
+ /** The health-row fields the step is decided from (Hub `GET /workspaces`). */
60
+ export interface TemplateStepFields {
61
+ drifted?: boolean;
62
+ state?: string | null;
63
+ awaitingApproval?: readonly string[];
64
+ pendingDataChanges?: unknown;
65
+ updateProposal?: {
66
+ id: string;
67
+ } | null;
68
+ }
69
+ /**
70
+ * The space's step by the shared rule (`classifyTemplateHealth`): each step
71
+ * that holds, then the first by `TEMPLATE_STEP_PRECEDENCE`. `null` = current.
72
+ * An older pod sends no `state` / `pendingDataChanges` / `updateProposal`, so
73
+ * only `update` (from `drifted`) can hold there.
74
+ */
75
+ export declare function classifyTemplateStep(row: TemplateStepFields): TemplateUpdateStep | null;
76
+ /**
77
+ * The glyph in front of a step. ⏳ says "wait", so it is kept for the one step
78
+ * where the space waits on decisions already filed; a step the reader acts on
79
+ * (not finished, data changes to agree to) is ⚠ (review2 UX §1 #6: ⏳ was
80
+ * printed on a failed apply); an agent's ask to decide is →, the CLI's mark
81
+ * for "proposed, awaiting review".
82
+ */
83
+ export declare function templateStepGlyph(step: TemplateStep): "⚠" | "⏳" | "→" | null;
84
+ /**
85
+ * The one door to the proposals a template apply waits on: the proposal itself
86
+ * when there is one, the review queue when there are several. `null` = none.
87
+ */
88
+ export declare function proposalsDoor(ids: readonly string[]): string | null;
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Where a space stands with its template, in the words every surface uses.
3
+ *
4
+ * The product's ONE table for these words is `TEMPLATE_STEP_LABELS` in
5
+ * `@synap-core/types/vocabulary`, and the ONE rule that sorts a pod health row
6
+ * into a step is `classifyTemplateHealth` in `@synap-core/web/marketplace`.
7
+ * This package cannot import either (it links only `@synap-core/hub-rest-client`
8
+ * and `@synap-core/workspace-templates`), so both are MIRRORED here, and
9
+ * `test/template-step-vocabulary-parity.test.ts` reads the two sources across
10
+ * the repo boundary and fails when either side moves. Edit both sides.
11
+ */
12
+ /** Mirror of `TEMPLATE_STEP_LABELS` (synap-backend `packages/types/src/vocabulary/index.ts`). */
13
+ export const TEMPLATE_STEP_LABELS = {
14
+ update: "Update available",
15
+ unfinished: "Not finished",
16
+ "awaiting-approval": "Waiting for approval",
17
+ "needs-consent": "Needs your OK",
18
+ "agent-asked": "Asked by an agent",
19
+ current: "Up to date",
20
+ };
21
+ /**
22
+ * A step's words inside a CLI line, where the CLI writes them mid-sentence:
23
+ * the same words with the first letter lowered ("needs your OK", never
24
+ * "needs your ok" — an acronym keeps its case).
25
+ */
26
+ export function templateStepPhrase(step) {
27
+ const label = TEMPLATE_STEP_LABELS[step];
28
+ return label.charAt(0).toLowerCase() + label.slice(1);
29
+ }
30
+ /**
31
+ * Mirror of `TEMPLATE_STEP_PRECEDENCE` (synap-app `template-step.ts`): when
32
+ * several steps hold, the first one listed is the space's mark and door. A
33
+ * broken space outranks a decision; data changes outrank an agent's ask (it
34
+ * would be held on them too); an agent's ask outranks a second plain update.
35
+ */
36
+ export const TEMPLATE_STEP_PRECEDENCE = [
37
+ "unfinished",
38
+ "needs-consent",
39
+ "agent-asked",
40
+ "awaiting-approval",
41
+ "update",
42
+ ];
43
+ const _everyStepRanked = true;
44
+ void _everyStepRanked;
45
+ /**
46
+ * Mirror of `STEP_FOR_STATE` (synap-app `packages/web/src/marketplace/utils/template-step.ts`):
47
+ * every apply state the pod reports, sorted into a step. `null` = no step of
48
+ * its own (a build in flight, or a finished apply).
49
+ */
50
+ export const STEP_FOR_STATE = {
51
+ building: null,
52
+ active: null,
53
+ "awaiting-approval": "awaiting-approval",
54
+ partial: "unfinished",
55
+ "layer-2-not-run": "unfinished",
56
+ failed: "unfinished",
57
+ };
58
+ /**
59
+ * The step the pod's apply `state` puts a space on, by the same rule as
60
+ * `classifyTemplateHealth`: a state this CLI does not know reads as unfinished
61
+ * (never current), and waiting on nothing is not waiting — once every proposal
62
+ * is decided, the update finishes the apply (review2 UX-M4). `null` = the state
63
+ * says nothing (absent on an older pod, `active`, or `building`); the caller
64
+ * falls back to drift.
65
+ */
66
+ export function stepFromApplyState(state, awaitingApproval) {
67
+ if (!state)
68
+ return null;
69
+ const step = state in STEP_FOR_STATE
70
+ ? STEP_FOR_STATE[state]
71
+ : "unfinished";
72
+ if (step === "awaiting-approval" && awaitingApproval.length === 0)
73
+ return "unfinished";
74
+ return step;
75
+ }
76
+ /**
77
+ * The space's step by the shared rule (`classifyTemplateHealth`): each step
78
+ * that holds, then the first by `TEMPLATE_STEP_PRECEDENCE`. `null` = current.
79
+ * An older pod sends no `state` / `pendingDataChanges` / `updateProposal`, so
80
+ * only `update` (from `drifted`) can hold there.
81
+ */
82
+ export function classifyTemplateStep(row) {
83
+ const fromState = stepFromApplyState(row.state, row.awaitingApproval ?? []);
84
+ const holds = {
85
+ unfinished: fromState === "unfinished",
86
+ "needs-consent": row.pendingDataChanges != null,
87
+ "agent-asked": row.updateProposal != null,
88
+ "awaiting-approval": fromState === "awaiting-approval",
89
+ update: row.drifted === true,
90
+ };
91
+ return TEMPLATE_STEP_PRECEDENCE.find((step) => holds[step]) ?? null;
92
+ }
93
+ /**
94
+ * The glyph in front of a step. ⏳ says "wait", so it is kept for the one step
95
+ * where the space waits on decisions already filed; a step the reader acts on
96
+ * (not finished, data changes to agree to) is ⚠ (review2 UX §1 #6: ⏳ was
97
+ * printed on a failed apply); an agent's ask to decide is →, the CLI's mark
98
+ * for "proposed, awaiting review".
99
+ */
100
+ export function templateStepGlyph(step) {
101
+ if (step === "awaiting-approval")
102
+ return "⏳";
103
+ if (step === "unfinished" || step === "needs-consent")
104
+ return "⚠";
105
+ if (step === "agent-asked")
106
+ return "→";
107
+ return null;
108
+ }
109
+ /**
110
+ * The one door to the proposals a template apply waits on: the proposal itself
111
+ * when there is one, the review queue when there are several. `null` = none.
112
+ */
113
+ export function proposalsDoor(ids) {
114
+ if (ids.length === 0)
115
+ return null;
116
+ return ids.length === 1 ? `synap open proposal ${ids[0]}` : "synap proposals";
117
+ }
118
+ //# sourceMappingURL=template-steps.js.map