@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
@@ -1,145 +1,16 @@
1
1
  /**
2
2
  * synap update
3
3
  *
4
- * Update the synap skill and optionally trigger a server-side redeploy
5
- * via Dokploy when DOKPLOY_API_KEY is configured.
6
- *
7
- * synap update — update skill + show service status
8
- * synap update --server — also trigger Dokploy redeploy of control-plane
9
- * synap update --all — trigger redeploy of all registered Dokploy services
4
+ * Tells the user how to update the CLI itself. (It used to also update an
5
+ * agent's skill; Synap installs no agent now, so the hint is all that is left.)
10
6
  */
11
- import chalk from "chalk";
12
- import ora from "ora";
13
7
  import { log, banner } from "../utils/logger.js";
14
- import { detectOpenClaw } from "../lib/openclaw.js";
15
- import { installSynapSkill } from "../lib/pod.js";
16
- function getDokployBase() {
17
- const key = process.env.DOKPLOY_API_KEY ?? "";
18
- if (!key)
19
- return null;
20
- const domain = process.env.DEPLOY_DOMAIN ?? "deploy.synap.live";
21
- const url = process.env.DOKPLOY_URL ?? `https://${domain}`;
22
- return { url, key };
23
- }
24
- async function fetchApps() {
25
- const dok = getDokployBase();
26
- if (!dok)
27
- return [];
28
- try {
29
- const res = await fetch(`${dok.url}/api/application.all`, {
30
- headers: { "x-api-key": dok.key },
31
- signal: AbortSignal.timeout(8000),
32
- });
33
- if (!res.ok)
34
- return [];
35
- return (await res.json());
36
- }
37
- catch {
38
- return [];
39
- }
40
- }
41
- async function triggerDeploy(appId) {
42
- const dok = getDokployBase();
43
- if (!dok)
44
- return false;
45
- try {
46
- const res = await fetch(`${dok.url}/api/application.deploy`, {
47
- method: "POST",
48
- headers: { "Content-Type": "application/json", "x-api-key": dok.key },
49
- body: JSON.stringify({ applicationId: appId }),
50
- signal: AbortSignal.timeout(10000),
51
- });
52
- return res.ok;
53
- }
54
- catch {
55
- return false;
56
- }
57
- }
58
- // ─── Main ────────────────────────────────────────────────────────────────────
59
- export async function update(opts = {}) {
8
+ export async function update() {
60
9
  banner();
61
10
  log.heading("Update");
62
- // ── 1. Skill update (OpenClaw) ────────────────────────────────────────────
63
- const oc = detectOpenClaw();
64
- if (oc.found) {
65
- const spinner = ora("Updating synap skill...").start();
66
- try {
67
- installSynapSkill();
68
- spinner.succeed("Synap skill updated");
69
- }
70
- catch (err) {
71
- spinner.fail(err instanceof Error ? err.message : "Skill update failed");
72
- }
73
- }
74
- else {
75
- log.dim("OpenClaw not detected — skipping skill update");
76
- }
77
- // ── 2. Dokploy service status ─────────────────────────────────────────────
78
- log.blank();
79
- const dok = getDokployBase();
80
- if (!dok) {
81
- log.dim("Dokploy not configured (DOKPLOY_API_KEY not set)");
82
- log.dim("To enable server management: set DOKPLOY_API_KEY + DEPLOY_DOMAIN in your env");
83
- log.blank();
84
- log.info("To update the CLI itself:");
85
- log.dim(" npm update -g @synap/cli");
86
- log.blank();
87
- return;
88
- }
89
- const appsSpinner = ora("Fetching service status from Dokploy...").start();
90
- const apps = await fetchApps();
91
- appsSpinner.stop();
92
- if (apps.length === 0) {
93
- log.dim("No services found in Dokploy (or API unreachable)");
94
- }
95
- else {
96
- log.heading("Services");
97
- for (const app of apps) {
98
- const status = app.status === "running"
99
- ? chalk.green(app.status)
100
- : app.status === "error"
101
- ? chalk.red(app.status)
102
- : chalk.yellow(app.status);
103
- console.log(` ${chalk.bold(app.name.padEnd(24))} ${status} ${chalk.dim(app.env ?? "")}`);
104
- }
105
- }
106
- // ── 3. Trigger redeploys if requested ─────────────────────────────────────
107
- if (opts.server || opts.all) {
108
- log.blank();
109
- log.heading(opts.all ? "Redeploying all services" : "Redeploying control-plane");
110
- const targets = opts.all
111
- ? apps
112
- : apps.filter((a) => a.name.toLowerCase().includes("control-plane") ||
113
- a.appName?.toLowerCase().includes("control-plane"));
114
- if (targets.length === 0) {
115
- log.dim("No matching services found in Dokploy");
116
- log.dim("Register services first: synap infra status");
117
- }
118
- else {
119
- for (const app of targets) {
120
- const spinner = ora(`Deploying ${app.name}...`).start();
121
- const ok = await triggerDeploy(app.id);
122
- if (ok) {
123
- spinner.succeed(`${app.name}: deploy triggered`);
124
- }
125
- else {
126
- spinner.fail(`${app.name}: deploy failed`);
127
- }
128
- }
129
- }
130
- log.blank();
131
- log.dim(`Watch progress: ${chalk.cyan(`${dok.url}`)}`);
132
- log.dim("Or tail logs: synap infra logs <service-name>");
133
- }
134
- else if (apps.length > 0) {
135
- log.blank();
136
- log.dim(`To redeploy: ${chalk.cyan("synap update --server")} (control-plane only)`);
137
- log.dim(` ${chalk.cyan("synap update --all")} (all services)`);
138
- }
139
- // ── 4. CLI update reminder ────────────────────────────────────────────────
140
- log.blank();
141
11
  log.info("To update the CLI itself:");
142
- log.dim(" npm update -g @synap/cli");
12
+ log.dim(" npm update -g @synap-core/cli");
13
+ log.dim(" npx @synap-core/cli@latest (no global install)");
143
14
  log.blank();
144
15
  }
145
16
  //# sourceMappingURL=update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,EAAE,CAAC;IACT,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACtC,GAAG,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC3C,GAAG,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAC9D,GAAG,CAAC,KAAK,EAAE,CAAC;AACd,CAAC"}
@@ -9,17 +9,39 @@
9
9
  * Usage:
10
10
  * synap upload ./report.pdf
11
11
  * synap upload ./logo.png --title "Brand logo" --workspace <id>
12
+ * synap upload ./logo.svg --profile brand-asset --prop variant=dark
13
+ * synap upload ./launch.mp4 --workspace <id> # >10MB → presigned lane
12
14
  * synap upload ./spec.pdf --attach <entityId> # also link doc → entity
13
15
  *
14
16
  * API:
15
- * POST /api/hub/files (multipart) — field `file` (≤10MB) + REQUIRED
16
- * workspaceId (membership-gated) +
17
- * optional title → { fileEntityId, documentId }
17
+ * POST /api/hub/files (multipart) — ≤10MB (fonts ≤5MB): field `file` +
18
+ * workspaceId (membership-gated) + optional
19
+ * title / profileSlug / properties /
20
+ * targetWorkspaceId → { fileEntityId, documentId }
21
+ * POST /api/hub/files/uploads — >10MB: presigned PUT URL (caps per mime:
22
+ * PUT <uploadUrl> video 500MB · audio 100MB · zip 200MB);
23
+ * POST /api/hub/files/uploads/finalize the bytes go straight to storage, then
24
+ * finalize mints the entity (same shape).
18
25
  * POST /api/hub/relations — with --attach: `references` relation
19
26
  * from the target entity to the new doc.
27
+ *
28
+ * `--workspace` is an EXPLICIT placement pin (sent as `targetWorkspaceId`).
29
+ * Without it the configured workspace is only context, and a pod-scope kind
30
+ * such as `file` lands pod-wide — which is why `--workspace` used to look
31
+ * ignored (the entity came back with workspaceId null).
20
32
  */
33
+ import { type HubConfig } from "../lib/hub-client.js";
34
+ /** Mirror of the pod's per-mime caps (C4) — refuse before any round-trip. */
35
+ export declare function maxUploadBytesForMime(mime: string): number;
36
+ export declare function mimeFor(path: string): string;
37
+ /** `--prop key=value` (repeatable) → the entity `properties` object. */
38
+ export declare function parseProps(pairs: string[] | undefined): Record<string, string>;
21
39
  export interface UploadOpts {
22
40
  workspace?: string;
41
+ /** Entity kind to create (default `file`), e.g. `brand-asset`. */
42
+ profile?: string;
43
+ /** Repeatable `key=value` entity properties. */
44
+ prop?: string[];
23
45
  attach?: string;
24
46
  title?: string;
25
47
  open?: boolean;
@@ -27,4 +49,20 @@ export interface UploadOpts {
27
49
  podUrl?: string;
28
50
  apiKey?: string;
29
51
  }
52
+ export interface UploadRequest {
53
+ buf: Buffer<ArrayBuffer>;
54
+ filename: string;
55
+ mimeType: string;
56
+ workspaceId?: string;
57
+ targetWorkspaceId?: string;
58
+ title?: string;
59
+ profileSlug?: string;
60
+ properties: Record<string, string>;
61
+ }
62
+ /**
63
+ * Pick the lane by size: the buffered multipart door up to 10MB, the presigned
64
+ * lane above it (request → PUT straight to storage → finalize). Both answer
65
+ * `{ fileEntityId, documentId }` or a governed `proposed` handle.
66
+ */
67
+ export declare function sendUpload(req: UploadRequest, cfg: HubConfig): Promise<Record<string, unknown>>;
30
68
  export declare function uploadFile(path: string, opts: UploadOpts): Promise<void>;
@@ -9,24 +9,49 @@
9
9
  * Usage:
10
10
  * synap upload ./report.pdf
11
11
  * synap upload ./logo.png --title "Brand logo" --workspace <id>
12
+ * synap upload ./logo.svg --profile brand-asset --prop variant=dark
13
+ * synap upload ./launch.mp4 --workspace <id> # >10MB → presigned lane
12
14
  * synap upload ./spec.pdf --attach <entityId> # also link doc → entity
13
15
  *
14
16
  * API:
15
- * POST /api/hub/files (multipart) — field `file` (≤10MB) + REQUIRED
16
- * workspaceId (membership-gated) +
17
- * optional title → { fileEntityId, documentId }
17
+ * POST /api/hub/files (multipart) — ≤10MB (fonts ≤5MB): field `file` +
18
+ * workspaceId (membership-gated) + optional
19
+ * title / profileSlug / properties /
20
+ * targetWorkspaceId → { fileEntityId, documentId }
21
+ * POST /api/hub/files/uploads — >10MB: presigned PUT URL (caps per mime:
22
+ * PUT <uploadUrl> video 500MB · audio 100MB · zip 200MB);
23
+ * POST /api/hub/files/uploads/finalize the bytes go straight to storage, then
24
+ * finalize mints the entity (same shape).
18
25
  * POST /api/hub/relations — with --attach: `references` relation
19
26
  * from the target entity to the new doc.
27
+ *
28
+ * `--workspace` is an EXPLICIT placement pin (sent as `targetWorkspaceId`).
29
+ * Without it the configured workspace is only context, and a pod-scope kind
30
+ * such as `file` lands pod-wide — which is why `--workspace` used to look
31
+ * ignored (the entity came back with workspaceId null).
20
32
  */
21
33
  import { readFileSync } from "fs";
22
34
  import { basename, extname } from "path";
23
35
  import { log } from "../utils/logger.js";
24
- import { resolveHubConfig, resolveUserId, hubPostMultipart, renderHubError, } from "../lib/hub-client.js";
36
+ import { resolveHubConfig, resolveUserId, hubPost, hubPostMultipart, renderHubError, } from "../lib/hub-client.js";
25
37
  import { writeGovernance } from "../lib/capture-lane.js";
26
38
  import { createRelation } from "./data.js";
27
39
  import { openInBrowser } from "./open.js";
28
- /** Mirror of the pinned /api/hub/files contract: reject >10MB before the round-trip. */
29
- const MAX_UPLOAD_BYTES = 10 * 1024 * 1024;
40
+ const MB = 1024 * 1024;
41
+ /** The buffered multipart door's ceiling (the pod holds that body in memory). */
42
+ const MAX_BUFFERED_BYTES = 10 * MB;
43
+ /** Mirror of the pod's per-mime caps (C4) — refuse before any round-trip. */
44
+ export function maxUploadBytesForMime(mime) {
45
+ if (mime.startsWith("video/"))
46
+ return 500 * MB;
47
+ if (mime.startsWith("audio/"))
48
+ return 100 * MB;
49
+ if (mime === "application/zip")
50
+ return 200 * MB;
51
+ if (mime.startsWith("font/"))
52
+ return 5 * MB;
53
+ return MAX_BUFFERED_BYTES;
54
+ }
30
55
  /** Best-effort extension → mime. Backend accepts arbitrary mime; octet-stream is the safe default. */
31
56
  const MIME = {
32
57
  ".md": "text/markdown",
@@ -51,11 +76,75 @@ const MIME = {
51
76
  ".ogg": "audio/ogg",
52
77
  ".mp4": "video/mp4",
53
78
  ".mov": "video/quicktime",
79
+ ".webm": "video/webm",
54
80
  ".zip": "application/zip",
81
+ ".woff2": "font/woff2",
82
+ ".woff": "font/woff",
83
+ ".ttf": "font/ttf",
84
+ ".otf": "font/otf",
55
85
  };
56
- function mimeFor(path) {
86
+ export function mimeFor(path) {
57
87
  return MIME[extname(path).toLowerCase()] ?? "application/octet-stream";
58
88
  }
89
+ /** `--prop key=value` (repeatable) → the entity `properties` object. */
90
+ export function parseProps(pairs) {
91
+ const out = {};
92
+ for (const pair of pairs ?? []) {
93
+ const i = pair.indexOf("=");
94
+ if (i <= 0)
95
+ throw new Error(`--prop expects key=value, got "${pair}"`);
96
+ out[pair.slice(0, i)] = pair.slice(i + 1);
97
+ }
98
+ return out;
99
+ }
100
+ /**
101
+ * Pick the lane by size: the buffered multipart door up to 10MB, the presigned
102
+ * lane above it (request → PUT straight to storage → finalize). Both answer
103
+ * `{ fileEntityId, documentId }` or a governed `proposed` handle.
104
+ */
105
+ export async function sendUpload(req, cfg) {
106
+ const hasProps = Object.keys(req.properties).length > 0;
107
+ if (req.buf.byteLength <= MAX_BUFFERED_BYTES) {
108
+ const form = new FormData();
109
+ form.append("file", new File([req.buf], req.filename, { type: req.mimeType }));
110
+ if (req.workspaceId)
111
+ form.append("workspaceId", req.workspaceId);
112
+ if (req.targetWorkspaceId)
113
+ form.append("targetWorkspaceId", req.targetWorkspaceId);
114
+ if (req.title)
115
+ form.append("title", req.title);
116
+ if (req.profileSlug)
117
+ form.append("profileSlug", req.profileSlug);
118
+ if (hasProps)
119
+ form.append("properties", JSON.stringify(req.properties));
120
+ return (await hubPostMultipart("/files", form, cfg));
121
+ }
122
+ const ticket = (await hubPost("/files/uploads", {
123
+ workspaceId: req.workspaceId,
124
+ ...(req.targetWorkspaceId ? { targetWorkspaceId: req.targetWorkspaceId } : {}),
125
+ filename: req.filename,
126
+ mimeType: req.mimeType,
127
+ size: req.buf.byteLength,
128
+ }, cfg));
129
+ // Straight to object storage — signed for exactly this type and length.
130
+ const put = await fetch(ticket.uploadUrl, {
131
+ method: "PUT",
132
+ headers: { ...(ticket.headers ?? {}), "Content-Type": req.mimeType },
133
+ body: req.buf,
134
+ signal: AbortSignal.timeout(30 * 60_000),
135
+ });
136
+ if (!put.ok) {
137
+ const detail = await put.text().catch(() => "");
138
+ throw new Error(`Upload to storage failed (HTTP ${put.status})${detail ? `: ${detail.slice(0, 300)}` : ""}`);
139
+ }
140
+ return (await hubPost("/files/uploads/finalize", {
141
+ uploadToken: ticket.uploadToken,
142
+ ...(req.title ? { title: req.title } : {}),
143
+ ...(req.profileSlug ? { profileSlug: req.profileSlug } : {}),
144
+ ...(hasProps ? { properties: req.properties } : {}),
145
+ ...(req.targetWorkspaceId ? { targetWorkspaceId: req.targetWorkspaceId } : {}),
146
+ }, cfg, 60_000));
147
+ }
59
148
  export async function uploadFile(path, opts) {
60
149
  try {
61
150
  const cfg = await resolveHubConfig(opts);
@@ -78,19 +167,32 @@ export async function uploadFile(path, opts) {
78
167
  log.error(`File is empty: ${path}`);
79
168
  process.exit(1);
80
169
  }
81
- if (buf.byteLength > MAX_UPLOAD_BYTES) {
82
- log.error(`File too large: ${(buf.byteLength / 1024 / 1024).toFixed(1)}MB — the pod accepts up to 10MB.`);
170
+ const filename = basename(path);
171
+ const mimeType = mimeFor(path);
172
+ const cap = maxUploadBytesForMime(mimeType);
173
+ if (buf.byteLength > cap) {
174
+ log.error(`File too large: ${(buf.byteLength / MB).toFixed(1)}MB — the pod accepts up to ${cap / MB}MB for ${mimeType}.`);
83
175
  process.exit(1);
84
176
  }
85
- const filename = basename(path);
86
- const form = new FormData();
87
- // Field name + optional fields per the pinned /api/hub/files contract.
88
- form.append("file", new File([buf], filename, { type: mimeFor(path) }));
89
- if (workspaceId)
90
- form.append("workspaceId", workspaceId);
91
- if (opts.title)
92
- form.append("title", opts.title);
93
- const res = (await hubPostMultipart("/files", form, cfg));
177
+ let properties;
178
+ try {
179
+ properties = parseProps(opts.prop);
180
+ }
181
+ catch (e) {
182
+ log.error(e.message);
183
+ process.exit(1);
184
+ }
185
+ const res = await sendUpload({
186
+ buf,
187
+ filename,
188
+ mimeType,
189
+ workspaceId,
190
+ // Only an explicit --workspace pins; the configured default stays context.
191
+ targetWorkspaceId: opts.workspace,
192
+ title: opts.title,
193
+ profileSlug: opts.profile,
194
+ properties,
195
+ }, cfg);
94
196
  const governance = writeGovernance(res);
95
197
  const fileEntityId = String(res.fileEntityId ?? "");
96
198
  const documentId = String(res.documentId ?? "");
@@ -1 +1 @@
1
- {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `synap vendor` — the author's PUBLISHER PROFILE.
3
+ * ================================================
4
+ *
5
+ * A package is attributed to a vendor or to nobody. The CP's publish handler is
6
+ * `if (body.vendorId) { … }` with no else: it never auto-creates a vendor, never
7
+ * infers one from the session, and never back-fills attribution afterwards. So
8
+ * an author who publishes before creating a profile is orphaned permanently —
9
+ * their packages can never appear on `GET /api/vendors/:slug`, the page the
10
+ * landing site links as `/superpowers/by/<slug>`.
11
+ *
12
+ * The browser has always had this door (`PublishWizard`'s Publisher step, which
13
+ * blocks until a vendor exists). The CLI only ever READ one. This is the missing
14
+ * half — the same endpoint, the same field names.
15
+ *
16
+ * Transport lives in `lib/cp-packages.ts` (`createVendor` / `fetchMyVendorId`);
17
+ * this file is presentation + exit codes only.
18
+ */
19
+ export declare function vendorCreate(slug: string, opts: {
20
+ json?: boolean;
21
+ name?: string;
22
+ description?: string;
23
+ website?: string;
24
+ }): Promise<void>;
25
+ /** `synap vendor show` — do I have a publisher profile, and what is published under it? */
26
+ export declare function vendorShow(opts: {
27
+ json?: boolean;
28
+ }): Promise<void>;
@@ -0,0 +1,110 @@
1
+ /**
2
+ * `synap vendor` — the author's PUBLISHER PROFILE.
3
+ * ================================================
4
+ *
5
+ * A package is attributed to a vendor or to nobody. The CP's publish handler is
6
+ * `if (body.vendorId) { … }` with no else: it never auto-creates a vendor, never
7
+ * infers one from the session, and never back-fills attribution afterwards. So
8
+ * an author who publishes before creating a profile is orphaned permanently —
9
+ * their packages can never appear on `GET /api/vendors/:slug`, the page the
10
+ * landing site links as `/superpowers/by/<slug>`.
11
+ *
12
+ * The browser has always had this door (`PublishWizard`'s Publisher step, which
13
+ * blocks until a vendor exists). The CLI only ever READ one. This is the missing
14
+ * half — the same endpoint, the same field names.
15
+ *
16
+ * Transport lives in `lib/cp-packages.ts` (`createVendor` / `fetchMyVendorId`);
17
+ * this file is presentation + exit codes only.
18
+ */
19
+ import chalk from "chalk";
20
+ import { log } from "../utils/logger.js";
21
+ import { createVendor, fetchMyVendorId, CpWriteError, } from "../lib/cp-packages.js";
22
+ import { getCpUrl, getStoredToken } from "../lib/auth.js";
23
+ /** `my-studio` → `My Studio` — a default `--name` when the author gives none. */
24
+ function titleFromSlug(slug) {
25
+ return (slug
26
+ .split(/[-_]/)
27
+ .filter(Boolean)
28
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
29
+ .join(" ") || slug);
30
+ }
31
+ export async function vendorCreate(slug, opts) {
32
+ // Same rule as the CP's `createVendorSchema` — checked here so a typo costs a
33
+ // message rather than a round-trip and a raw zod error.
34
+ if (!/^[a-z][a-z0-9-]{1,63}$/.test(slug)) {
35
+ const message = "A publisher slug must be lowercase kebab-case, start with a letter, and be 2–64 characters.";
36
+ if (opts.json) {
37
+ console.log(JSON.stringify({ ok: false, error: message, slug }, null, 2));
38
+ }
39
+ else {
40
+ log.error(message);
41
+ log.hint(`e.g. synap vendor create my-studio --name "My Studio"`);
42
+ }
43
+ process.exit(1);
44
+ }
45
+ const displayName = opts.name?.trim() || titleFromSlug(slug);
46
+ try {
47
+ const vendor = await createVendor({
48
+ slug,
49
+ displayName,
50
+ description: opts.description,
51
+ website: opts.website,
52
+ });
53
+ if (opts.json) {
54
+ console.log(JSON.stringify({ ok: true, vendor }, null, 2));
55
+ return;
56
+ }
57
+ log.success(`Publisher profile ${chalk.bold(vendor.displayName)} created (@${vendor.slug}).`);
58
+ log.dim("Everything you publish from now on is attributed to it:");
59
+ log.dim(` ${getCpUrl()}/api/vendors/${vendor.slug}`);
60
+ log.dim("Already published something? Publish it again — the CP attributes");
61
+ log.dim("on write and never back-fills.");
62
+ }
63
+ catch (e) {
64
+ if (e instanceof CpWriteError) {
65
+ if (opts.json) {
66
+ console.log(JSON.stringify({ ok: false, status: e.status, error: e.serverMessage, slug }, null, 2));
67
+ }
68
+ else {
69
+ log.error(`Could not create the publisher profile${e.status ? ` (HTTP ${e.status})` : ""}: ${e.serverMessage}`);
70
+ // The CP returns 409 for BOTH "you already have one" and "slug taken" —
71
+ // its message distinguishes them, so only add the next action.
72
+ if (e.status === 409)
73
+ log.hint("Run: synap vendor show");
74
+ if (e.status === 401)
75
+ log.hint("Run: synap login");
76
+ }
77
+ process.exit(1);
78
+ }
79
+ log.error(`Could not create the publisher profile: ${e.message}`);
80
+ process.exit(1);
81
+ }
82
+ }
83
+ /** `synap vendor show` — do I have a publisher profile, and what is published under it? */
84
+ export async function vendorShow(opts) {
85
+ const token = getStoredToken()?.token;
86
+ if (!token) {
87
+ if (opts.json) {
88
+ console.log(JSON.stringify({ ok: false, error: "not-logged-in" }, null, 2));
89
+ }
90
+ else {
91
+ log.error("Not logged in.");
92
+ log.hint("Run: synap login");
93
+ }
94
+ process.exit(1);
95
+ }
96
+ const id = await fetchMyVendorId(getCpUrl(), token);
97
+ if (opts.json) {
98
+ console.log(JSON.stringify({ ok: true, vendorId: id }, null, 2));
99
+ return;
100
+ }
101
+ if (!id) {
102
+ // A refusal that names the consequence, not just the absence.
103
+ log.warn("You have no publisher profile.");
104
+ log.hint("Packages you publish will be attributed to nobody, and the CP never back-fills.");
105
+ log.hint(`Create one: synap vendor create <slug> --name "<name>"`);
106
+ return;
107
+ }
108
+ log.success(`You have a publisher profile (id ${id}).`);
109
+ }
110
+ //# sourceMappingURL=vendor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vendor.js","sourceRoot":"","sources":["../../src/commands/vendor.ts"],"names":[],"mappings":"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"}
@@ -143,6 +143,12 @@ function isNewer(from, to) {
143
143
  name: "cmp",
144
144
  tags: [],
145
145
  isPrivate: false,
146
+ // `items` became required on `CatalogEntryBase` when the type split into a
147
+ // bundled/remote union (`@synap-core/workspace-templates` 0.11.0). This is a
148
+ // SYNTHETIC entry that exists only to reuse the shared version comparator —
149
+ // it summarises no real package, so `[]` is the honest value, exactly as the
150
+ // field's own contract prescribes for an entry that carries no cells.
151
+ items: [],
146
152
  source: "remote",
147
153
  remote: { slug: "__cmp__", name: "cmp", definition: { sourcePackage: { version: to } } },
148
154
  };