@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
@@ -6,31 +6,112 @@
6
6
  *
7
7
  * Usage:
8
8
  * synap cell define --name "My Chart" --file ./chart.js [--type-key my-chart] [--deps '{"recharts":"2.12.0"}'] [--workspace <id>] [--open]
9
+ * synap cell define --name "Deal board" --file ./board.js --view-types kanban,table --content-kind collection
9
10
  * cat chart.js | synap cell define --name "My Chart"
10
11
  *
11
12
  * synap cell build ./src/chart.tsx --out ./dist/chart.js
12
13
  * synap cell build ./src/chart.tsx --out ./dist/chart.js --define # bundle then define
14
+ * synap cell build ./src/chart.tsx --out ./dist/chart.js --bundle-deps # no esm.sh at runtime
15
+ * synap cell build ./src/card.tsx --out ./dist/card.html --self-contained # one HTML doc (mcp-app)
13
16
  *
14
17
  * API:
15
- * POST /api/hub/cells/define — { name, rendererSource, workspaceId?, typeKey?, description?, defaultSize? }
18
+ * POST /api/hub/cells/define — { name, rendererSource, workspaceId?, typeKey?,
19
+ * description?, defaultSize?, deps?, viewTypes?, contentKind? }
16
20
  *
17
- * NOTE on deps: The /cells/define endpoint currently ignores the `deps` field in
18
- * the Zod schema (parsed but not persisted — the INSERT always uses `deps: {}`).
19
- * We send it anyway so the payload is ready when the backend adds support.
20
- * Track: cells.ts upsert sets `deps: {} as Record<string, string>` unconditionally.
21
+ * DEPS: persisted. (A prior note here claimed `/cells/define` parsed but dropped
22
+ * `deps` — that is STALE as of HEAD: the route forwards `deps` to `defineCell`,
23
+ * which writes `deps: input.deps ?? {}` on both the INSERT and the UPDATE branch,
24
+ * after `validateDeps` runs inside the door.)
25
+ *
26
+ * SELECTABILITY: a cell that declares neither `viewTypes` nor `contentKind`
27
+ * installs cleanly and is then UNPICKABLE — no error, no signal. `viewTypes`
28
+ * lands in `widget_definitions.view_renderer_view_types` (migration 0221) and is
29
+ * what the browser copies onto `viewRenderer.viewTypes`; without it the cell can
30
+ * never be chosen as a view renderer. `contentKind` decides which profile-renderer
31
+ * slot the cell can fill; omitted, the column defaults to `widget`, which is
32
+ * placeable but never offered as an entity-detail/card/profile/collection renderer.
33
+ * Both follow an omit-is-silence rule on an upsert of an EXISTING row: not passing
34
+ * the flag leaves the stored value untouched (so a source-only re-push can't erase
35
+ * a declared affinity). Pass `--view-types ""` to clear the affinity.
21
36
  *
22
37
  * cell build runtime contract:
23
38
  * - esbuild bundles to a single ESM file (format: esm, bundle: true)
24
- * - bare imports (react, react-dom, any non-relative) are externalized
25
- * - externalized modules become the deps map (version from package.json if present, else "latest")
39
+ * - default mode: every bare import (react, react-dom, any non-relative) is
40
+ * externalized; externalized modules become the deps map (version from
41
+ * package.json if present, else "latest"); at runtime Synap resolves
42
+ * them via esm.sh importmap
43
+ * - `--bundle-deps` mode: only react/react-dom are externalized (they are
44
+ * host-inlined at runtime, never via esm.sh — see
45
+ * `synap-app/packages/core/cell-runtime/src/frame-react-modules.ts`);
46
+ * every other bare import is bundled into the output, so the deps map is
47
+ * `{}` and the frame's runtime CSP drops esm.sh entirely (see
48
+ * `ViewFrame.buildFrameCsp`'s `fullyBundled` branch) — this mode is
49
+ * opt-in; the default build is byte-identical to before this flag existed
26
50
  * - the output module default-exports a React component (or plain module)
27
- * - at runtime Synap resolves bare imports via esm.sh importmap
51
+ * - default and `--bundle-deps` modes REFUSE an imported `.css` file (a
52
+ * `CellBundleError` naming it): the output is one JS module with nowhere to
53
+ * put a stylesheet, so the CSS could only be lost. `--self-contained` is the
54
+ * mode that keeps it.
55
+ * - `--self-contained` mode (an `rendererType: "mcp-app"` cell — a foreign
56
+ * MCP-Apps host loads ONE sandboxed HTML document whose CSP admits no
57
+ * esm.sh, no Google Fonts, no host-supplied React): NOTHING is external —
58
+ * React included. Imported CSS is collected and inlined in `<style>`, the
59
+ * brand faces (`@synap-core/design-tokens/fonts`, base64 woff2) are
60
+ * prepended when they resolve from the entry's package, and the result is
61
+ * wrapped into a complete HTML document whose inline `<script
62
+ * type="module">` is the bundle. The output (the cell `code`) IS that
63
+ * document; `deps` is always `{}`. The entry is the document's only script,
64
+ * so it must mount itself (a `#root` element is provided).
28
65
  */
29
66
  import { readFileSync, writeFileSync, existsSync } from "fs";
30
67
  import { dirname, resolve, basename } from "path";
68
+ import { runInNewContext } from "vm";
31
69
  import { log } from "../utils/logger.js";
32
70
  import { resolveHubConfig, resolveUserId, hubPost, } from "../lib/hub-client.js";
33
71
  import { openInBrowser } from "./open.js";
72
+ // ─── Types ────────────────────────────────────────────────────────────────────
73
+ /**
74
+ * The `contentKind` vocabulary — WHAT a cell renders, which decides the
75
+ * profile-renderer slots it can fill.
76
+ *
77
+ * SSOT: `ContentKind` in
78
+ * `synap-backend/packages/database/src/schema/widget-definitions.ts`
79
+ * (canonically mirrored from `@synap-core/capabilities`). This list is a
80
+ * hand-maintained copy because the CLI does not depend on either package; if
81
+ * the union there grows, `test/cell-define-content-kind.test.ts` is the only
82
+ * thing that will catch the drift — keep them together.
83
+ */
84
+ export const CONTENT_KINDS = [
85
+ "entity-detail",
86
+ "entity-card",
87
+ "entity-profile",
88
+ "collection",
89
+ "widget",
90
+ ];
91
+ /** Narrow a raw `--content-kind` value against {@link CONTENT_KINDS}. */
92
+ export function parseContentKind(raw) {
93
+ const v = raw.trim();
94
+ return CONTENT_KINDS.includes(v)
95
+ ? v
96
+ : null;
97
+ }
98
+ /**
99
+ * Parse a `--view-types` list. Comma-separated, trimmed, deduped.
100
+ *
101
+ * `undefined` (flag absent) ⇒ omit the field entirely, so an upsert of an
102
+ * existing row leaves the stored affinity untouched. An EMPTY string ⇒ `[]`,
103
+ * the explicit "clear it" signal the define door documents.
104
+ */
105
+ export function parseViewTypes(raw) {
106
+ if (raw === undefined)
107
+ return undefined;
108
+ return [
109
+ ...new Set(raw
110
+ .split(",")
111
+ .map((t) => t.trim())
112
+ .filter((t) => t !== "")),
113
+ ];
114
+ }
34
115
  // ─── Helpers ──────────────────────────────────────────────────────────────────
35
116
  /** Read source from --file flag or stdin (when piped). */
36
117
  async function resolveSource(file) {
@@ -90,23 +171,156 @@ function lookupVersion(pkg, name) {
90
171
  // Strip semver range prefixes (^, ~, >=, etc.)
91
172
  return raw.replace(/^[^0-9]*/, "") || "latest";
92
173
  }
93
- /** Call esbuild programmatically. Returns { code, externals }. */
94
- async function bundleWithEsbuild(entry) {
174
+ /**
175
+ * Thrown by `bundleWithEsbuild`/`buildCellFromSource` instead of exiting the
176
+ * process, so a caller that is NOT the direct `cell build` CLI entry point
177
+ * (namely `resolveCellCodeFiles` on the `market publish` path) can turn a
178
+ * bundle failure into its own structured `{ ok: false, ... }` envelope rather
179
+ * than have the process die out from under it before that envelope is ever
180
+ * built. `cellBuild` (the direct entry point) catches this like any other
181
+ * error and still exits 1 — interactive behaviour is unchanged.
182
+ */
183
+ export class CellBundleError extends Error {
184
+ }
185
+ /**
186
+ * Package names that stay external even under `--bundle-deps` — the modules
187
+ * the FRAME HOST provides at runtime, which must never be pulled from
188
+ * node_modules: react/react-dom are host-inlined (`synap-app/packages/core/
189
+ * cell-runtime/src/frame-react-modules.ts`), and `@synap/view-sdk` is
190
+ * host-supplied via the iframe import map (`.../frame-import-map.ts`,
191
+ * `imports['@synap/view-sdk'] = blobs.viewSdk`). Externalizing all three
192
+ * costs nothing and keeps the bundle small; failing to list one here means
193
+ * `--bundle-deps` (now the DEFAULT for `market publish` cells) can never
194
+ * build a cell that imports it — esbuild tries to resolve it from
195
+ * node_modules and fails, dead on arrival.
196
+ *
197
+ * This set is a hand-maintained mirror of `frame-import-map.ts` — exactly the
198
+ * drift class this repo keeps losing to — so `frame-import-map-parity.test.ts`
199
+ * reads that file's own source across the repo boundary and fails the moment
200
+ * the host starts supplying a module this set doesn't know about.
201
+ */
202
+ export const BUNDLE_DEPS_KEEP_EXTERNAL = new Set([
203
+ "react",
204
+ "react-dom",
205
+ "@synap/view-sdk",
206
+ ]);
207
+ /** Load esbuild from the CLI's own install. */
208
+ async function loadEsbuild() {
95
209
  // Dynamic import so the CLI only requires esbuild when `cell build` is used.
96
- let esbuild;
210
+ // esbuild is a real `dependency` of this package (not a devDependency) —
211
+ // Node resolves it from the CLI's OWN install location, not the caller's
212
+ // project, so it is present under `npx @synap-core/cli` too. This catch is
213
+ // therefore a last-resort guard against a corrupted install, not the
214
+ // expected path; the fix is reinstalling the CLI, not the user's project.
97
215
  try {
98
- esbuild = await import("esbuild");
216
+ return await import("esbuild");
99
217
  }
100
218
  catch {
101
- log.error("esbuild is not installed. Run: npm install -D esbuild (or pnpm add -D esbuild)");
102
- process.exit(1);
219
+ throw new CellBundleError("esbuild failed to load from the CLI's own install. Reinstall the CLI (npm install -g @synap-core/cli) or re-run via npx.");
220
+ }
221
+ }
222
+ /**
223
+ * Asset types a self-contained build inlines as `data:` URIs — a stylesheet's
224
+ * `url(./icon.svg)` or `@font-face` src has no origin to load from inside the
225
+ * host's sandbox.
226
+ */
227
+ const SELF_CONTAINED_ASSET_LOADERS = {
228
+ ".woff2": "dataurl",
229
+ ".woff": "dataurl",
230
+ ".ttf": "dataurl",
231
+ ".otf": "dataurl",
232
+ ".png": "dataurl",
233
+ ".jpg": "dataurl",
234
+ ".jpeg": "dataurl",
235
+ ".gif": "dataurl",
236
+ ".webp": "dataurl",
237
+ ".svg": "dataurl",
238
+ };
239
+ /** `react`, `react-dom`, and any subpath of either (`react/jsx-runtime`, `react-dom/client`, …). */
240
+ const REACT_IMPORT = /^react(?:-dom)?(?:\/.*)?$/;
241
+ /**
242
+ * Resolve every React import ONCE, from the entry's directory — esbuild's
243
+ * equivalent of Vite's `resolve.dedupe`. Without it, a dependency that imports
244
+ * react without declaring it (in synap-app: spatial-ui → react-dom,
245
+ * proposal-types → react) resolves UPWARD to whatever copy sits nearest to it,
246
+ * and the document ships two Reacts — two dispatchers, so hooks throw. A
247
+ * nested copy is never the one the cell's own tree renders with, so the
248
+ * entry's copy wins; if the entry cannot reach react at all, that is an error
249
+ * here, not a silent fallback to some dependency's copy.
250
+ */
251
+ function dedupeReactPlugin(entryDir) {
252
+ return {
253
+ name: "dedupe-react",
254
+ setup(build) {
255
+ build.onResolve({ filter: REACT_IMPORT }, async (args) => {
256
+ if (args.pluginData?.dedupeReact)
257
+ return undefined;
258
+ const r = await build.resolve(args.path, {
259
+ kind: args.kind,
260
+ resolveDir: entryDir,
261
+ pluginData: { dedupeReact: true },
262
+ });
263
+ if (r.errors.length > 0) {
264
+ throw new CellBundleError(`"${args.path}" (imported by ${args.importer}) does not resolve from the cell entry's directory ${entryDir} — add react/react-dom to the cell's own package so every import shares ONE copy.`);
265
+ }
266
+ return { path: r.path, sideEffects: r.sideEffects };
267
+ });
268
+ },
269
+ };
270
+ }
271
+ /** Call esbuild programmatically. Returns { code, externals, css }. Exported for tests. */
272
+ export async function bundleWithEsbuild(entry, opts = {}) {
273
+ const esbuild = await loadEsbuild();
274
+ if (opts.selfContained) {
275
+ // No externals: every import — React included — is resolved from the
276
+ // entry's own node_modules and bundled (React deduped to ONE copy, see
277
+ // `dedupeReactPlugin`). An import esbuild cannot
278
+ // resolve (a URL, a missing package) is a build error, never a runtime
279
+ // fetch. `outdir` is virtual (write: false); it only gives esbuild a place
280
+ // to emit the CSS bundle beside the JS one.
281
+ let result;
282
+ try {
283
+ result = await esbuild.build({
284
+ entryPoints: [entry],
285
+ bundle: true,
286
+ format: "esm",
287
+ platform: "browser",
288
+ write: false,
289
+ outdir: "/__synap_cell_out__",
290
+ minify: true,
291
+ // React (and most libs) branch on this; unset, the bundle reads
292
+ // `process` — which does not exist in the host's iframe.
293
+ define: { "process.env.NODE_ENV": '"production"' },
294
+ loader: SELF_CONTAINED_ASSET_LOADERS,
295
+ plugins: [dedupeReactPlugin(dirname(entry))],
296
+ logLevel: "silent",
297
+ });
298
+ }
299
+ catch (e) {
300
+ throw new CellBundleError(`esbuild failed:\n${e.message}`);
301
+ }
302
+ const js = result.outputFiles.find((f) => f.path.endsWith(".js"))?.text ?? "";
303
+ const css = result.outputFiles
304
+ .filter((f) => f.path.endsWith(".css"))
305
+ .map((f) => f.text)
306
+ .join("\n");
307
+ return { code: js, externals: [], css };
103
308
  }
104
309
  // First pass: bundle without any externals to discover all bare imports.
105
310
  // We use a custom plugin to collect them instead of failing.
106
311
  const externalSet = new Set();
312
+ const cssImports = [];
107
313
  const collectPlugin = {
108
314
  name: "collect-externals",
109
315
  setup(build) {
316
+ // A stylesheet has nowhere to go in a single-JS-module output: a
317
+ // relative one used to die on esbuild's opaque "without an output path
318
+ // configured", a bare one (`pkg/style.css`) was externalized as an
319
+ // import the runtime cannot load. Collect them and refuse by name below.
320
+ build.onResolve({ filter: /\.css$/ }, (args) => {
321
+ cssImports.push(args.path);
322
+ return { path: args.path, external: true };
323
+ });
110
324
  // Intercept every non-relative, non-absolute import
111
325
  build.onResolve({ filter: /^[^./]/ }, (args) => {
112
326
  // Extract the package name (handle scoped packages like @org/pkg)
@@ -114,7 +328,14 @@ async function bundleWithEsbuild(entry) {
114
328
  const pkgName = args.path.startsWith("@") && parts.length >= 2
115
329
  ? `${parts[0]}/${parts[1]}`
116
330
  : parts[0];
117
- externalSet.add(pkgName ?? args.path);
331
+ const name = pkgName ?? args.path;
332
+ // --bundle-deps: only react/react-dom stay external — every other
333
+ // bare import is left unhandled so esbuild resolves + bundles it
334
+ // from node_modules, producing an empty deps map.
335
+ if (opts.bundleDeps && !BUNDLE_DEPS_KEEP_EXTERNAL.has(name)) {
336
+ return undefined;
337
+ }
338
+ externalSet.add(name);
118
339
  return { path: args.path, external: true };
119
340
  });
120
341
  },
@@ -129,11 +350,143 @@ async function bundleWithEsbuild(entry) {
129
350
  });
130
351
  if (result.errors.length > 0) {
131
352
  const msgs = result.errors.map((e) => e.text).join("\n");
132
- log.error(`esbuild failed:\n${msgs}`);
133
- process.exit(1);
353
+ throw new CellBundleError(`esbuild failed:\n${msgs}`);
354
+ }
355
+ if (cssImports.length > 0) {
356
+ throw new CellBundleError(`this cell imports CSS, which a single-module build would drop: ${[
357
+ ...new Set(cssImports),
358
+ ].join(", ")}. Build it with --self-contained (CSS inlined into one HTML document), or move the styles into the component.`);
134
359
  }
135
360
  const code = result.outputFiles[0]?.text ?? "";
136
- return { code, externals: Array.from(externalSet).sort() };
361
+ return { code, externals: Array.from(externalSet).sort(), css: "" };
362
+ }
363
+ /** The `@synap-core/design-tokens` export that carries the inlined brand faces. */
364
+ export const FONTS_MODULE = "@synap-core/design-tokens/fonts";
365
+ /**
366
+ * `SYNAP_FONT_FACE_CSS`, resolved from `fromDir` the way the entry's own
367
+ * imports resolve — or `null` when the package is not reachable from there.
368
+ * The module is TypeScript source (the package ships `src/`), so it is run
369
+ * through esbuild and evaluated in an empty VM context rather than imported.
370
+ */
371
+ export async function resolveFontFaceCss(fromDir) {
372
+ const esbuild = await loadEsbuild();
373
+ let text;
374
+ try {
375
+ const r = await esbuild.build({
376
+ stdin: {
377
+ contents: `export { SYNAP_FONT_FACE_CSS } from ${JSON.stringify(FONTS_MODULE)};`,
378
+ resolveDir: fromDir,
379
+ loader: "ts",
380
+ },
381
+ bundle: true,
382
+ format: "cjs",
383
+ platform: "neutral",
384
+ write: false,
385
+ logLevel: "silent",
386
+ });
387
+ text = r.outputFiles[0]?.text ?? "";
388
+ }
389
+ catch {
390
+ return null;
391
+ }
392
+ const mod = { exports: {} };
393
+ runInNewContext(text, { module: mod, exports: mod.exports });
394
+ const css = mod.exports.SYNAP_FONT_FACE_CSS;
395
+ return typeof css === "string" && css.length > 0 ? css : null;
396
+ }
397
+ /**
398
+ * Wrap a self-contained bundle into the complete HTML document an MCP-Apps
399
+ * host loads verbatim. `</style` / `</script` are escaped so inlined text can
400
+ * never close its own element early (`<\/` is the same character sequence to
401
+ * the CSS and JS parsers, but not to the HTML tokenizer).
402
+ */
403
+ export function wrapSelfContainedHtml(parts) {
404
+ const css = parts.css.replace(/<\/(style)/gi, "<\\/$1");
405
+ const js = parts.js.replace(/<\/(script)/gi, "<\\/$1");
406
+ return [
407
+ "<!doctype html>",
408
+ '<html lang="en">',
409
+ "<head>",
410
+ '<meta charset="utf-8">',
411
+ '<meta name="viewport" content="width=device-width, initial-scale=1">',
412
+ `<style>\n${css}\n</style>`,
413
+ "</head>",
414
+ "<body>",
415
+ '<div id="root"></div>',
416
+ `<script type="module">\n${js}\n</script>`,
417
+ "</body>",
418
+ "</html>",
419
+ "",
420
+ ].join("\n");
421
+ }
422
+ /**
423
+ * Bundle `entry` and derive its `deps` map — the shared guts behind `cell
424
+ * build` (which additionally writes the result to disk) and `market
425
+ * publish`'s `codeFile` resolution (`lib/kind-package.ts`, which inlines the
426
+ * result straight into a package's `code` field instead). Kept in ONE place
427
+ * because the bundle-deps/react-exclusion derivation below is exactly the
428
+ * seam `cell-build-bundle-deps.test.ts` exists to protect (see its top-of-file
429
+ * comment) — a second copy of this logic is how that bug would come back.
430
+ */
431
+ export async function buildCellFromSource(entry, opts = {}) {
432
+ if (opts.selfContained) {
433
+ // A self-contained document reaches no module origin, so a deps map —
434
+ // "modules the runtime resolves via esm.sh" — can only be a lie here.
435
+ if (opts.deps) {
436
+ throw new CellBundleError("--deps does not apply to --self-contained: every import is bundled into the document, nothing resolves via esm.sh.");
437
+ }
438
+ const { code: js, css } = await bundleWithEsbuild(entry, { selfContained: true });
439
+ let fontCss = "";
440
+ if (opts.fonts !== false) {
441
+ const resolved = await resolveFontFaceCss(dirname(entry));
442
+ if (resolved)
443
+ fontCss = resolved;
444
+ else if (opts.fonts === true) {
445
+ throw new CellBundleError(`--fonts: ${FONTS_MODULE} does not resolve from ${dirname(entry)} — add @synap-core/design-tokens to the cell's package.`);
446
+ }
447
+ }
448
+ const code = wrapSelfContainedHtml({
449
+ js,
450
+ css: [fontCss, css].filter(Boolean).join("\n"),
451
+ });
452
+ return { code, deps: {}, externals: [] };
453
+ }
454
+ const { code, externals } = await bundleWithEsbuild(entry, {
455
+ bundleDeps: opts.bundleDeps,
456
+ });
457
+ // Build deps map: externals → version from nearest package.json.
458
+ //
459
+ // Under `--bundle-deps` the react/react-dom externals are DELIBERATELY
460
+ // omitted from this map. They stay external to esbuild (the host supplies
461
+ // them), but the `deps` map means one thing only: "modules the runtime must
462
+ // resolve via the esm.sh import map". React is never one of those — the
463
+ // host inlines it (`frame-react-modules.ts`), and `ViewFrame` will not even
464
+ // build a react-language srcdoc until `reactSources` has loaded.
465
+ //
466
+ // This is the seam that makes the flag WORK: `buildFrameCsp`'s
467
+ // `fullyBundled` branch keys off `Object.keys(deps).length === 0`, so
468
+ // leaving react in the map here would leave `deps = { react: "19" }` and
469
+ // esm.sh would stay in the CSP for every React cell — i.e. the whole
470
+ // feature would be inert on its main use case.
471
+ const pkgJson = findPackageJson(dirname(entry));
472
+ const depsMap = {};
473
+ for (const ext of externals) {
474
+ if (opts.bundleDeps && BUNDLE_DEPS_KEEP_EXTERNAL.has(ext))
475
+ continue;
476
+ depsMap[ext] = pkgJson ? lookupVersion(pkgJson, ext) : "latest";
477
+ }
478
+ // Honour explicit --deps overrides
479
+ if (opts.deps) {
480
+ let override;
481
+ try {
482
+ override = JSON.parse(opts.deps);
483
+ }
484
+ catch {
485
+ throw new Error(`--deps must be valid JSON, e.g. '{"recharts":"2.12.0"}'`);
486
+ }
487
+ Object.assign(depsMap, override);
488
+ }
489
+ return { code, deps: depsMap, externals };
137
490
  }
138
491
  // ─── cell define ──────────────────────────────────────────────────────────────
139
492
  export async function cellDefine(opts) {
@@ -153,11 +506,23 @@ export async function cellDefine(opts) {
153
506
  process.exit(1);
154
507
  }
155
508
  }
509
+ // Validate --content-kind against the real union BEFORE the round trip: the
510
+ // define door's zod would otherwise strip an unknown value silently and the
511
+ // cell would install unpickable — the exact failure this flag exists to stop.
512
+ let contentKind;
513
+ if (opts.contentKind !== undefined) {
514
+ const parsed = parseContentKind(opts.contentKind);
515
+ if (!parsed) {
516
+ log.error(`--content-kind must be one of: ${CONTENT_KINDS.join(", ")} (got "${opts.contentKind}")`);
517
+ process.exit(1);
518
+ }
519
+ contentKind = parsed;
520
+ }
521
+ const viewTypes = parseViewTypes(opts.viewTypes);
156
522
  const body = {
157
523
  userId,
158
524
  name: opts.name,
159
525
  rendererSource,
160
- // deps is sent even though the current backend ignores it (see file-level note).
161
526
  deps: parsedDeps,
162
527
  };
163
528
  if (workspaceId)
@@ -166,6 +531,12 @@ export async function cellDefine(opts) {
166
531
  body.typeKey = opts.typeKey;
167
532
  if (opts.description)
168
533
  body.description = opts.description;
534
+ // Omit-is-silence: only send these when the caller actually spoke about
535
+ // them, so a plain source re-push never erases a declared affinity/slot.
536
+ if (viewTypes !== undefined)
537
+ body.viewTypes = viewTypes;
538
+ if (contentKind !== undefined)
539
+ body.contentKind = contentKind;
169
540
  const res = (await hubPost("/cells/define", body, cfg));
170
541
  const isProposed = res.status === "proposed" || Boolean(res.proposalId);
171
542
  if (isProposed) {
@@ -176,7 +547,13 @@ export async function cellDefine(opts) {
176
547
  }
177
548
  const typeKey = String(res.typeKey ?? "");
178
549
  if (opts.json) {
179
- console.log(JSON.stringify({ typeKey, name: opts.name, deps: parsedDeps }, null, 2));
550
+ console.log(JSON.stringify({
551
+ typeKey,
552
+ name: opts.name,
553
+ deps: parsedDeps,
554
+ ...(viewTypes !== undefined ? { viewTypes } : {}),
555
+ ...(contentKind !== undefined ? { contentKind } : {}),
556
+ }, null, 2));
180
557
  return;
181
558
  }
182
559
  if (!typeKey) {
@@ -187,6 +564,16 @@ export async function cellDefine(opts) {
187
564
  log.dim(` typeKey: ${typeKey}`);
188
565
  if (Object.keys(parsedDeps).length > 0)
189
566
  log.dim(` deps: ${JSON.stringify(parsedDeps)}`);
567
+ if (viewTypes !== undefined)
568
+ log.dim(` view types: ${viewTypes.length > 0 ? viewTypes.join(", ") : "(cleared)"}`);
569
+ if (contentKind !== undefined)
570
+ log.dim(` content kind: ${contentKind}`);
571
+ // Say it once, at define time, when the author can still act on it — a cell
572
+ // with neither is placeable on a bento but can never be PICKED as a view or
573
+ // profile renderer, and nothing downstream ever reports that.
574
+ if (viewTypes === undefined && contentKind === undefined) {
575
+ log.dim(` note: no --view-types / --content-kind — this cell is placeable but not selectable as a renderer`);
576
+ }
190
577
  log.dim(` bento block: { kind: "${typeKey}", config: {} }`);
191
578
  log.dim(` open in browser: synap open cell ${typeKey}`);
192
579
  if (opts.open && typeKey) {
@@ -207,29 +594,16 @@ export async function cellBuild(entry, opts) {
207
594
  process.exit(1);
208
595
  }
209
596
  log.dim(`Bundling ${entry}…`);
210
- const { code, externals } = await bundleWithEsbuild(absEntry);
211
- // Build deps map: externals → version from nearest package.json
212
- const pkgJson = findPackageJson(dirname(absEntry));
213
- const depsMap = {};
214
- for (const ext of externals) {
215
- depsMap[ext] = pkgJson ? lookupVersion(pkgJson, ext) : "latest";
216
- }
217
- // Honour explicit --deps overrides
218
- if (opts.deps) {
219
- let override;
220
- try {
221
- override = JSON.parse(opts.deps);
222
- }
223
- catch {
224
- log.error(`--deps must be valid JSON, e.g. '{"recharts":"2.12.0"}'`);
225
- process.exit(1);
226
- }
227
- Object.assign(depsMap, override);
228
- }
597
+ const { code, deps: depsMap, externals } = await buildCellFromSource(absEntry, {
598
+ bundleDeps: opts.bundleDeps,
599
+ deps: opts.deps,
600
+ selfContained: opts.selfContained,
601
+ fonts: opts.fonts,
602
+ });
229
603
  // Write output file
230
604
  const outPath = opts.out
231
605
  ? resolve(process.cwd(), opts.out)
232
- : resolve(dirname(absEntry), basename(absEntry).replace(/\.[^.]+$/, ".bundle.js"));
606
+ : resolve(dirname(absEntry), basename(absEntry).replace(/\.[^.]+$/, opts.selfContained ? ".html" : ".bundle.js"));
233
607
  writeFileSync(outPath, code, "utf-8");
234
608
  if (opts.json) {
235
609
  console.log(JSON.stringify({ out: outPath, deps: depsMap }, null, 2));
@@ -260,6 +634,8 @@ export async function cellBuild(entry, opts) {
260
634
  file: outPath,
261
635
  typeKey: opts.typeKey,
262
636
  deps: JSON.stringify(depsMap),
637
+ viewTypes: opts.viewTypes,
638
+ contentKind: opts.contentKind,
263
639
  workspace: opts.workspace,
264
640
  description: opts.description,
265
641
  open: opts.open,
@@ -1 +1 @@
1
- {"version":3,"file":"cell.js","sourceRoot":"","sources":["../../src/commands/cell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cell.js","sourceRoot":"","sources":["../../src/commands/cell.ts"],"names":[],"mappings":"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"}
@@ -11,22 +11,10 @@
11
11
  * synap centrality status --json
12
12
  * synap centrality recompute
13
13
  */
14
+ import { timeAgo } from "../lib/time-ago.js";
14
15
  import chalk from "chalk";
15
16
  import { log } from "../utils/logger.js";
16
17
  import { resolveHubConfig, hubGet, hubPost } from "../lib/hub-client.js";
17
- function timeAgo(isoDate) {
18
- const diff = Date.now() - new Date(isoDate).getTime();
19
- const minutes = Math.floor(diff / 60_000);
20
- if (minutes < 1)
21
- return "just now";
22
- if (minutes < 60)
23
- return `${minutes} minute${minutes === 1 ? "" : "s"} ago`;
24
- const hours = Math.floor(minutes / 60);
25
- if (hours < 24)
26
- return `${hours} hour${hours === 1 ? "" : "s"} ago`;
27
- const days = Math.floor(hours / 24);
28
- return `${days} day${days === 1 ? "" : "s"} ago`;
29
- }
30
18
  export async function centralityStatus(opts) {
31
19
  try {
32
20
  const cfg = await resolveHubConfig(opts);