@synap-core/cli 1.10.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 (461) 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 +297 -176
  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 +3 -14
  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 +9 -2
  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 +198 -25
  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 +307 -24
  50. package/dist/commands/data.js.map +1 -1
  51. package/dist/commands/diagnose.d.ts +66 -4
  52. package/dist/commands/diagnose.js +329 -29
  53. package/dist/commands/diagnose.js.map +1 -1
  54. package/dist/commands/digest.js +2 -1
  55. package/dist/commands/digest.js.map +1 -1
  56. package/dist/commands/doc.d.ts +25 -4
  57. package/dist/commands/doc.js +100 -18
  58. package/dist/commands/doc.js.map +1 -1
  59. package/dist/commands/doctor.d.ts +130 -0
  60. package/dist/commands/doctor.js +814 -0
  61. package/dist/commands/doctor.js.map +1 -0
  62. package/dist/commands/events.js +3 -1
  63. package/dist/commands/events.js.map +1 -1
  64. package/dist/commands/explain.js +5 -5
  65. package/dist/commands/explain.js.map +1 -1
  66. package/dist/commands/graph.js +5 -3
  67. package/dist/commands/graph.js.map +1 -1
  68. package/dist/commands/import.d.ts +368 -13
  69. package/dist/commands/import.js +1096 -55
  70. package/dist/commands/import.js.map +1 -1
  71. package/dist/commands/init.d.ts +20 -9
  72. package/dist/commands/init.js +433 -973
  73. package/dist/commands/init.js.map +1 -1
  74. package/dist/commands/keys.d.ts +1 -0
  75. package/dist/commands/keys.js +15 -2
  76. package/dist/commands/keys.js.map +1 -1
  77. package/dist/commands/knowledge.d.ts +28 -6
  78. package/dist/commands/knowledge.js +358 -73
  79. package/dist/commands/knowledge.js.map +1 -1
  80. package/dist/commands/launch.js +2 -2
  81. package/dist/commands/launch.js.map +1 -1
  82. package/dist/commands/lens.d.ts +37 -1
  83. package/dist/commands/lens.js +193 -72
  84. package/dist/commands/lens.js.map +1 -1
  85. package/dist/commands/market-authoring.d.ts +72 -0
  86. package/dist/commands/market-authoring.js +566 -0
  87. package/dist/commands/market-authoring.js.map +1 -0
  88. package/dist/commands/market-official.d.ts +58 -0
  89. package/dist/commands/market-official.js +84 -0
  90. package/dist/commands/market-official.js.map +1 -0
  91. package/dist/commands/market.d.ts +419 -20
  92. package/dist/commands/market.js +2124 -193
  93. package/dist/commands/market.js.map +1 -1
  94. package/dist/commands/mcp.d.ts +70 -13
  95. package/dist/commands/mcp.js +308 -40
  96. package/dist/commands/mcp.js.map +1 -1
  97. package/dist/commands/open.d.ts +39 -9
  98. package/dist/commands/open.js +80 -25
  99. package/dist/commands/open.js.map +1 -1
  100. package/dist/commands/playbook.d.ts +42 -0
  101. package/dist/commands/playbook.js +162 -0
  102. package/dist/commands/playbook.js.map +1 -0
  103. package/dist/commands/pod.js +1 -1
  104. package/dist/commands/pod.js.map +1 -1
  105. package/dist/commands/pods.d.ts +19 -0
  106. package/dist/commands/pods.js +220 -85
  107. package/dist/commands/pods.js.map +1 -1
  108. package/dist/commands/proposals-actions.d.ts +62 -0
  109. package/dist/commands/proposals-actions.js +146 -8
  110. package/dist/commands/proposals-actions.js.map +1 -1
  111. package/dist/commands/proposals-await.d.ts +68 -0
  112. package/dist/commands/proposals-await.js +248 -0
  113. package/dist/commands/proposals-await.js.map +1 -0
  114. package/dist/commands/proton-setup.d.ts +73 -0
  115. package/dist/commands/proton-setup.js +577 -0
  116. package/dist/commands/proton-setup.js.map +1 -0
  117. package/dist/commands/providers.d.ts +23 -0
  118. package/dist/commands/providers.js +126 -1
  119. package/dist/commands/providers.js.map +1 -1
  120. package/dist/commands/raycast.js +6 -2
  121. package/dist/commands/raycast.js.map +1 -1
  122. package/dist/commands/rule.d.ts +150 -0
  123. package/dist/commands/rule.js +447 -0
  124. package/dist/commands/rule.js.map +1 -0
  125. package/dist/commands/session-wait.d.ts +111 -0
  126. package/dist/commands/session-wait.js +209 -0
  127. package/dist/commands/session-wait.js.map +1 -0
  128. package/dist/commands/sessions.d.ts +52 -0
  129. package/dist/commands/sessions.js +479 -58
  130. package/dist/commands/sessions.js.map +1 -1
  131. package/dist/commands/skill-manage.d.ts +21 -0
  132. package/dist/commands/skill-manage.js +136 -19
  133. package/dist/commands/skill-manage.js.map +1 -1
  134. package/dist/commands/skills.js +19 -1
  135. package/dist/commands/skills.js.map +1 -1
  136. package/dist/commands/status.d.ts +1 -4
  137. package/dist/commands/status.js +5 -34
  138. package/dist/commands/status.js.map +1 -1
  139. package/dist/commands/statusline.backoff.test.d.ts +13 -0
  140. package/dist/commands/statusline.backoff.test.js +100 -0
  141. package/dist/commands/statusline.backoff.test.js.map +1 -0
  142. package/dist/commands/statusline.js +16 -9
  143. package/dist/commands/statusline.js.map +1 -1
  144. package/dist/commands/sync-status.d.ts +12 -0
  145. package/dist/commands/sync-status.js +125 -0
  146. package/dist/commands/sync-status.js.map +1 -0
  147. package/dist/commands/templates-retire.d.ts +34 -0
  148. package/dist/commands/templates-retire.js +192 -0
  149. package/dist/commands/templates-retire.js.map +1 -0
  150. package/dist/commands/tools.js +6 -21
  151. package/dist/commands/tools.js.map +1 -1
  152. package/dist/commands/tracks.d.ts +51 -0
  153. package/dist/commands/tracks.js +291 -0
  154. package/dist/commands/tracks.js.map +1 -0
  155. package/dist/commands/update.d.ts +3 -11
  156. package/dist/commands/update.js +5 -134
  157. package/dist/commands/update.js.map +1 -1
  158. package/dist/commands/upload.d.ts +68 -0
  159. package/dist/commands/upload.js +257 -0
  160. package/dist/commands/upload.js.map +1 -0
  161. package/dist/commands/vendor.d.ts +28 -0
  162. package/dist/commands/vendor.js +110 -0
  163. package/dist/commands/vendor.js.map +1 -0
  164. package/dist/commands/versions.js +6 -0
  165. package/dist/commands/versions.js.map +1 -1
  166. package/dist/commands/view.js +10 -5
  167. package/dist/commands/view.js.map +1 -1
  168. package/dist/commands/whoami.d.ts +23 -3
  169. package/dist/commands/whoami.js +169 -23
  170. package/dist/commands/whoami.js.map +1 -1
  171. package/dist/commands/worker.d.ts +122 -0
  172. package/dist/commands/worker.js +435 -0
  173. package/dist/commands/worker.js.map +1 -0
  174. package/dist/commands/worker.test.d.ts +1 -0
  175. package/dist/commands/worker.test.js +116 -0
  176. package/dist/commands/worker.test.js.map +1 -0
  177. package/dist/commands/workspace-ops.d.ts +35 -0
  178. package/dist/commands/workspace-ops.js +153 -0
  179. package/dist/commands/workspace-ops.js.map +1 -0
  180. package/dist/index.d.ts +6 -6
  181. package/dist/index.js +1009 -171
  182. package/dist/index.js.map +1 -1
  183. package/dist/lib/agent-connections.d.ts +31 -0
  184. package/dist/lib/agent-connections.js +33 -0
  185. package/dist/lib/agent-connections.js.map +1 -0
  186. package/dist/lib/agent-detect.d.ts +27 -0
  187. package/dist/lib/agent-detect.js +71 -0
  188. package/dist/lib/agent-detect.js.map +1 -0
  189. package/dist/lib/agent-door.d.ts +138 -0
  190. package/dist/lib/agent-door.js +426 -0
  191. package/dist/lib/agent-door.js.map +1 -0
  192. package/dist/lib/agents-config.d.ts +2 -0
  193. package/dist/lib/agents-config.js +4 -9
  194. package/dist/lib/agents-config.js.map +1 -1
  195. package/dist/lib/approval-poll.d.ts +31 -2
  196. package/dist/lib/approval-poll.js +20 -7
  197. package/dist/lib/approval-poll.js.map +1 -1
  198. package/dist/lib/atomic-file.d.ts +48 -0
  199. package/dist/lib/atomic-file.js +129 -0
  200. package/dist/lib/atomic-file.js.map +1 -0
  201. package/dist/lib/auth.d.ts +14 -9
  202. package/dist/lib/auth.js +44 -61
  203. package/dist/lib/auth.js.map +1 -1
  204. package/dist/lib/batch-approval.d.ts +85 -0
  205. package/dist/lib/batch-approval.js +170 -0
  206. package/dist/lib/batch-approval.js.map +1 -0
  207. package/dist/lib/capture-lane.d.ts +6 -5
  208. package/dist/lib/capture-lane.js +11 -8
  209. package/dist/lib/capture-lane.js.map +1 -1
  210. package/dist/lib/capture-structure.d.ts +342 -0
  211. package/dist/lib/capture-structure.js +295 -0
  212. package/dist/lib/capture-structure.js.map +1 -0
  213. package/dist/lib/catalog-templates.d.ts +59 -0
  214. package/dist/lib/catalog-templates.js +126 -0
  215. package/dist/lib/catalog-templates.js.map +1 -0
  216. package/dist/lib/cli-build.d.ts +19 -0
  217. package/dist/lib/cli-build.js +37 -0
  218. package/dist/lib/cli-build.js.map +1 -0
  219. package/dist/lib/conversation-headers.d.ts +18 -0
  220. package/dist/lib/conversation-headers.js +32 -0
  221. package/dist/lib/conversation-headers.js.map +1 -0
  222. package/dist/lib/cp-packages.d.ts +216 -4
  223. package/dist/lib/cp-packages.js +414 -11
  224. package/dist/lib/cp-packages.js.map +1 -1
  225. package/dist/lib/credential-class.d.ts +117 -0
  226. package/dist/lib/credential-class.js +116 -0
  227. package/dist/lib/credential-class.js.map +1 -0
  228. package/dist/lib/describe-lens.d.ts +35 -0
  229. package/dist/lib/describe-lens.js +40 -0
  230. package/dist/lib/describe-lens.js.map +1 -1
  231. package/dist/lib/device-connect.d.ts +125 -0
  232. package/dist/lib/device-connect.js +256 -0
  233. package/dist/lib/device-connect.js.map +1 -0
  234. package/dist/lib/directory-lens.d.ts +99 -0
  235. package/dist/lib/directory-lens.js +187 -0
  236. package/dist/lib/directory-lens.js.map +1 -0
  237. package/dist/lib/exporter-coverage.d.ts +71 -0
  238. package/dist/lib/exporter-coverage.js +97 -0
  239. package/dist/lib/exporter-coverage.js.map +1 -0
  240. package/dist/lib/hub-client.d.ts +43 -9
  241. package/dist/lib/hub-client.js +429 -65
  242. package/dist/lib/hub-client.js.map +1 -1
  243. package/dist/lib/id.d.ts +23 -0
  244. package/dist/lib/id.js +35 -0
  245. package/dist/lib/id.js.map +1 -0
  246. package/dist/lib/init-connect.d.ts +41 -0
  247. package/dist/lib/init-connect.js +75 -0
  248. package/dist/lib/init-connect.js.map +1 -0
  249. package/dist/lib/init-exit.d.ts +24 -0
  250. package/dist/lib/init-exit.js +41 -0
  251. package/dist/lib/init-exit.js.map +1 -0
  252. package/dist/lib/init-flow.d.ts +25 -0
  253. package/dist/lib/init-flow.js +40 -0
  254. package/dist/lib/init-flow.js.map +1 -0
  255. package/dist/lib/init-handoff.d.ts +16 -0
  256. package/dist/lib/init-handoff.js +19 -0
  257. package/dist/lib/init-handoff.js.map +1 -0
  258. package/dist/lib/init-output.d.ts +18 -0
  259. package/dist/lib/init-output.js +43 -0
  260. package/dist/lib/init-output.js.map +1 -0
  261. package/dist/lib/init-pod.d.ts +45 -0
  262. package/dist/lib/init-pod.js +36 -0
  263. package/dist/lib/init-pod.js.map +1 -0
  264. package/dist/lib/installed.d.ts +210 -11
  265. package/dist/lib/installed.js +234 -36
  266. package/dist/lib/installed.js.map +1 -1
  267. package/dist/lib/key-approval.d.ts +57 -0
  268. package/dist/lib/key-approval.js +117 -0
  269. package/dist/lib/key-approval.js.map +1 -0
  270. package/dist/lib/key-diagnosis.d.ts +56 -0
  271. package/dist/lib/key-diagnosis.js +227 -0
  272. package/dist/lib/key-diagnosis.js.map +1 -0
  273. package/dist/lib/key-doctor.d.ts +136 -0
  274. package/dist/lib/key-doctor.js +286 -0
  275. package/dist/lib/key-doctor.js.map +1 -0
  276. package/dist/lib/key-locations.d.ts +120 -0
  277. package/dist/lib/key-locations.js +326 -0
  278. package/dist/lib/key-locations.js.map +1 -0
  279. package/dist/lib/key-source.d.ts +66 -0
  280. package/dist/lib/key-source.js +106 -0
  281. package/dist/lib/key-source.js.map +1 -0
  282. package/dist/lib/key-state.d.ts +70 -0
  283. package/dist/lib/key-state.js +115 -0
  284. package/dist/lib/key-state.js.map +1 -0
  285. package/dist/lib/kind-package.d.ts +181 -0
  286. package/dist/lib/kind-package.js +679 -0
  287. package/dist/lib/kind-package.js.map +1 -0
  288. package/dist/lib/knowledge-title.d.ts +24 -0
  289. package/dist/lib/knowledge-title.js +46 -0
  290. package/dist/lib/knowledge-title.js.map +1 -0
  291. package/dist/lib/knowledge-title.test.d.ts +1 -0
  292. package/dist/lib/knowledge-title.test.js +34 -0
  293. package/dist/lib/knowledge-title.test.js.map +1 -0
  294. package/dist/lib/machine-instance.d.ts +64 -0
  295. package/dist/lib/machine-instance.js +142 -0
  296. package/dist/lib/machine-instance.js.map +1 -0
  297. package/dist/lib/mcp-bridge.d.ts +42 -0
  298. package/dist/lib/mcp-bridge.js +147 -0
  299. package/dist/lib/mcp-bridge.js.map +1 -0
  300. package/dist/lib/mcp-bridge.test.d.ts +1 -0
  301. package/dist/lib/mcp-bridge.test.js +90 -0
  302. package/dist/lib/mcp-bridge.test.js.map +1 -0
  303. package/dist/lib/mcp-call.d.ts +30 -0
  304. package/dist/lib/mcp-call.js +107 -0
  305. package/dist/lib/mcp-call.js.map +1 -0
  306. package/dist/lib/mcp-snippets.d.ts +53 -0
  307. package/dist/lib/mcp-snippets.js +82 -0
  308. package/dist/lib/mcp-snippets.js.map +1 -0
  309. package/dist/lib/next-steps.d.ts +8 -0
  310. package/dist/lib/next-steps.js +31 -1
  311. package/dist/lib/next-steps.js.map +1 -1
  312. package/dist/lib/package-wire.d.ts +179 -0
  313. package/dist/lib/package-wire.js +68 -0
  314. package/dist/lib/package-wire.js.map +1 -0
  315. package/dist/lib/pair-link.d.ts +38 -0
  316. package/dist/lib/pair-link.js +68 -0
  317. package/dist/lib/pair-link.js.map +1 -0
  318. package/dist/lib/pod-wide.d.ts +40 -0
  319. package/dist/lib/pod-wide.js +46 -0
  320. package/dist/lib/pod-wide.js.map +1 -0
  321. package/dist/lib/pod.d.ts +119 -115
  322. package/dist/lib/pod.js +206 -412
  323. package/dist/lib/pod.js.map +1 -1
  324. package/dist/lib/project-ref.d.ts +9 -3
  325. package/dist/lib/project-ref.js +10 -4
  326. package/dist/lib/project-ref.js.map +1 -1
  327. package/dist/lib/review-credential.d.ts +119 -0
  328. package/dist/lib/review-credential.js +147 -0
  329. package/dist/lib/review-credential.js.map +1 -0
  330. package/dist/lib/safe-open.d.ts +49 -0
  331. package/dist/lib/safe-open.js +119 -0
  332. package/dist/lib/safe-open.js.map +1 -0
  333. package/dist/lib/session-lens.d.ts +40 -1
  334. package/dist/lib/session-lens.js +54 -4
  335. package/dist/lib/session-lens.js.map +1 -1
  336. package/dist/lib/superwhisper-import.d.ts +8 -0
  337. package/dist/lib/superwhisper-import.js +14 -7
  338. package/dist/lib/superwhisper-import.js.map +1 -1
  339. package/dist/lib/superwhisper-title.test.d.ts +1 -0
  340. package/dist/lib/superwhisper-title.test.js +18 -0
  341. package/dist/lib/superwhisper-title.test.js.map +1 -0
  342. package/dist/lib/targets.d.ts +134 -10
  343. package/dist/lib/targets.js +962 -258
  344. package/dist/lib/targets.js.map +1 -1
  345. package/dist/lib/template-file.d.ts +78 -0
  346. package/dist/lib/template-file.js +140 -0
  347. package/dist/lib/template-file.js.map +1 -0
  348. package/dist/lib/template-lifecycle.d.ts +217 -0
  349. package/dist/lib/template-lifecycle.js +433 -0
  350. package/dist/lib/template-lifecycle.js.map +1 -0
  351. package/dist/lib/template-steps.d.ts +88 -0
  352. package/dist/lib/template-steps.js +118 -0
  353. package/dist/lib/template-steps.js.map +1 -0
  354. package/dist/lib/time-ago.d.ts +2 -0
  355. package/dist/lib/time-ago.js +15 -0
  356. package/dist/lib/time-ago.js.map +1 -0
  357. package/dist/utils/logger.js +5 -2
  358. package/dist/utils/logger.js.map +1 -1
  359. package/package.json +25 -18
  360. package/skills/README.md +12 -10
  361. package/skills/agent-os/SKILL.md +220 -99
  362. package/skills/manifest.json +2 -2
  363. package/skills/onboard/SKILL.md +61 -25
  364. package/skills/synap/README.md +5 -8
  365. package/skills/synap/SKILL.md +1185 -301
  366. package/skills/synap/_order.txt +7 -0
  367. package/skills/synap/_skill.yaml +1 -1
  368. package/skills/synap/automations.md +15 -0
  369. package/skills/synap/capture.md +54 -151
  370. package/skills/synap/cli-operations.md +24 -18
  371. package/skills/synap/common-mistakes.md +1 -0
  372. package/skills/synap/concepts.md +28 -0
  373. package/skills/synap/content-os.md +92 -0
  374. package/skills/synap/creative-loop.md +15 -10
  375. package/skills/synap/crm.md +21 -52
  376. package/skills/synap/digesting-a-channel.md +25 -0
  377. package/skills/synap/document-embeds.md +141 -47
  378. package/skills/synap/escalation-ladder.md +20 -10
  379. package/skills/synap/focus-sessions.md +47 -21
  380. package/skills/synap/from-intent.md +142 -0
  381. package/skills/synap/governance-rules.md +4 -4
  382. package/skills/synap/governance.md +10 -7
  383. package/skills/synap/hand-off.md +33 -0
  384. package/skills/synap/inline-patterns.md +15 -7
  385. package/skills/synap/lenses.md +33 -15
  386. package/skills/synap/linking.md +41 -40
  387. package/skills/synap/mcp-remote-servers.md +64 -0
  388. package/skills/synap/mental-model.md +24 -22
  389. package/skills/synap/multi-entity-capture.md +6 -4
  390. package/skills/synap/operating-mode-rules.md +1 -1
  391. package/skills/synap/processes.md +118 -0
  392. package/skills/synap/quick-reference.md +5 -1
  393. package/skills/synap/reading.md +3 -1
  394. package/skills/synap/reflexes.md +12 -42
  395. package/skills/synap/viewframe-cells.md +38 -5
  396. package/skills/synap/work-flow.md +1 -1
  397. package/skills/synap/work-model.md +96 -0
  398. package/skills/synap/worked-examples.md +21 -1
  399. package/skills/synap/workspace-design.md +14 -10
  400. package/skills/synap/writes.md +165 -35
  401. package/skills/synap/writing-titles.md +63 -0
  402. package/skills/synap-app/SKILL.md +319 -0
  403. package/skills/synap-app/_order.txt +5 -0
  404. package/skills/synap-app/_skill.yaml +20 -0
  405. package/skills/synap-app/creating-the-base-app.md +64 -0
  406. package/skills/synap-app/governance.md +42 -0
  407. package/skills/synap-app/install-commands.md +55 -0
  408. package/skills/synap-app/overview.md +50 -0
  409. package/skills/synap-app/using-the-sdk.md +73 -0
  410. package/skills/synap-design/SKILL.md +474 -0
  411. package/skills/synap-design/_order.txt +4 -0
  412. package/skills/synap-design/_skill.yaml +21 -0
  413. package/skills/synap-design/loop.md +134 -0
  414. package/skills/synap-design/overview.md +44 -0
  415. package/skills/synap-design/principles.md +130 -0
  416. package/skills/synap-design/system.md +133 -0
  417. package/skills/synap-market/SKILL.md +625 -0
  418. package/skills/synap-market/_order.txt +5 -0
  419. package/skills/synap-market/_skill.yaml +24 -0
  420. package/skills/synap-market/author-and-publish.md +212 -0
  421. package/skills/synap-market/discover-and-fetch.md +59 -0
  422. package/skills/synap-market/governance-and-catalog.md +63 -0
  423. package/skills/synap-market/install.md +133 -0
  424. package/skills/synap-market/overview.md +119 -0
  425. package/skills/synap-schema/SKILL.md +172 -10
  426. package/skills/synap-schema/_order.txt +2 -0
  427. package/skills/synap-schema/_skill.yaml +4 -2
  428. package/skills/synap-schema/common-mistakes.md +4 -2
  429. package/skills/synap-schema/discover-profiles.md +1 -1
  430. package/skills/synap-schema/entity-scope.md +15 -3
  431. package/skills/synap-schema/extend-first.md +29 -0
  432. package/skills/synap-schema/extend-vs-create.md +1 -1
  433. package/skills/synap-schema/intent-vocabulary-ssot.md +111 -0
  434. package/skills/synap-schema/property-types.md +1 -1
  435. package/skills/synap-schema/relations.md +1 -1
  436. package/skills/synap-ui/SKILL.md +19 -12
  437. package/skills/synap-ui/_skill.yaml +1 -1
  438. package/skills/synap-ui/ai-companion.md +1 -1
  439. package/skills/synap-ui/arranging-bento.md +2 -0
  440. package/skills/synap-ui/bento-layouts.md +10 -10
  441. package/skills/synap-ui/bento-recipes.md +313 -543
  442. package/skills/synap-ui/four-builds.md +5 -0
  443. package/skills/synap-ui/view-types.md +2 -2
  444. package/skills/synap-ui/widget-catalog.md +22 -278
  445. package/templates/automations/bookmark-enrichment.automation.json +290 -13
  446. package/templates/automations/url-bookmark-capture.automation.json +73 -11
  447. package/templates/skills/authoring-playbooks/SKILL.md +6 -3
  448. package/templates/skills/authoring-playbooks/reference/stages-contract.md +15 -0
  449. package/templates/skills/authoring-playbooks/reference/worked-example.md +3 -0
  450. package/dist/commands/infra.d.ts +0 -21
  451. package/dist/commands/infra.js +0 -262
  452. package/dist/commands/infra.js.map +0 -1
  453. package/dist/lib/browser-auth.d.ts +0 -35
  454. package/dist/lib/browser-auth.js +0 -170
  455. package/dist/lib/browser-auth.js.map +0 -1
  456. package/dist/lib/openclaw.d.ts +0 -32
  457. package/dist/lib/openclaw.js +0 -164
  458. package/dist/lib/openclaw.js.map +0 -1
  459. package/dist/lib/seed.d.ts +0 -13
  460. package/dist/lib/seed.js +0 -135
  461. package/dist/lib/seed.js.map +0 -1
@@ -1,8 +1,12 @@
1
1
  # Bento recipes — reference
2
2
 
3
- Ready-to-adapt layouts for the most common user asks. Each recipe is a starting point — verify widget kinds against `/widget-definitions` and swap in real IDs before committing.
3
+ Ready-to-adapt layouts for the most common user asks. Each recipe is the `widgets` array you send to `POST /api/hub/views/{bentoViewId}/arrange` (IS: `arrange_workspace`): `{ key, config, x, y, w, h }` on the 12-column grid. Arrange validates every key against the catalog and refuses a missing required config, so a recipe that arranges cleanly renders.
4
4
 
5
- All coordinates use the 12-column grid. `layout: { x, y, w, h }`.
5
+ Before using one:
6
+
7
+ 1. `synap_list_widgets` — confirm each key is listed for this workspace (and read its `requiredConfig`).
8
+ 2. `synap_list_profiles` — swap the example `profileSlug`s for ones that exist.
9
+ 3. A `view` block needs a saved view: `synap_list_views` for its `viewId`, or `synap_create_view` first.
6
10
 
7
11
  ---
8
12
 
@@ -10,589 +14,355 @@ All coordinates use the 12-column grid. `layout: { x, y, w, h }`.
10
14
 
11
15
  _User asks: "Give me a home dashboard."_
12
16
 
13
- The canonical landing page. What matters today + quick access + recent activity.
17
+ What matters today, quick access, recent activity.
14
18
 
15
19
  ```json
16
- {
17
- "name": "Home",
18
- "type": "bento",
19
- "config": {
20
- "blocks": [
21
- {
22
- "id": "h1",
23
- "kind": "widget",
24
- "widgetKind": "section-header",
25
- "layout": { "x": 0, "y": 0, "w": 12, "h": 1 },
26
- "config": { "title": "Today", "subtitle": "{{date}}" }
27
- },
28
-
29
- {
30
- "id": "h2",
31
- "kind": "widget",
32
- "widgetKind": "stat-card",
33
- "layout": { "x": 0, "y": 1, "w": 3, "h": 2 },
34
- "config": {
35
- "label": "Due today",
36
- "metric": "count",
37
- "filter": {
38
- "profileSlug": "task",
39
- "properties.dueDate": "today",
40
- "properties.status": ["todo", "in-progress"]
41
- },
42
- "icon": "calendar"
43
- }
44
- },
45
-
46
- {
47
- "id": "h3",
48
- "kind": "widget",
49
- "widgetKind": "stat-card",
50
- "layout": { "x": 3, "y": 1, "w": 3, "h": 2 },
51
- "config": {
52
- "label": "This week",
53
- "metric": "count",
54
- "filter": {
55
- "profileSlug": "event",
56
- "properties.startDate": "this-week"
57
- },
58
- "icon": "calendar-days"
59
- }
60
- },
61
-
62
- {
63
- "id": "h4",
64
- "kind": "widget",
65
- "widgetKind": "stat-card",
66
- "layout": { "x": 6, "y": 1, "w": 3, "h": 2 },
67
- "config": {
68
- "label": "Pending review",
69
- "metric": "count",
70
- "filter": { "type": "proposal", "status": "pending" },
71
- "icon": "inbox"
72
- }
73
- },
74
-
75
- {
76
- "id": "h5",
77
- "kind": "widget",
78
- "widgetKind": "stat-card",
79
- "layout": { "x": 9, "y": 1, "w": 3, "h": 2 },
80
- "config": {
81
- "label": "Captured this week",
82
- "metric": "count",
83
- "filter": { "createdAt": "this-week" },
84
- "icon": "zap"
85
- }
86
- },
87
-
88
- {
89
- "id": "h6",
90
- "kind": "widget",
91
- "widgetKind": "view-list",
92
- "layout": { "x": 0, "y": 3, "w": 6, "h": 5 },
93
- "config": {
94
- "profileSlug": "task",
95
- "primaryField": "title",
96
- "secondaryFields": ["priority", "dueDate", "projectId"],
97
- "filters": [
98
- {
99
- "property": "status",
100
- "op": "in",
101
- "value": ["todo", "in-progress"]
102
- }
103
- ],
104
- "sort": [{ "property": "priority", "direction": "desc" }],
105
- "limit": 10
106
- }
107
- },
108
-
109
- {
110
- "id": "h7",
111
- "kind": "widget",
112
- "widgetKind": "proactive-feed",
113
- "layout": { "x": 6, "y": 3, "w": 6, "h": 5 },
114
- "config": { "limit": 8 }
115
- },
116
-
117
- {
118
- "id": "h8",
119
- "kind": "widget",
120
- "widgetKind": "feed",
121
- "layout": { "x": 0, "y": 8, "w": 12, "h": 4 },
122
- "config": { "sources": ["entity.create", "entity.update"], "limit": 20 }
123
- }
124
- ]
125
- }
126
- }
20
+ [
21
+ {
22
+ "key": "greeting",
23
+ "config": { "showDate": true },
24
+ "x": 0,
25
+ "y": 0,
26
+ "w": 8,
27
+ "h": 2
28
+ },
29
+ { "key": "quick-access", "config": {}, "x": 8, "y": 0, "w": 4, "h": 2 },
30
+ {
31
+ "key": "stat-card",
32
+ "config": { "profileSlug": "task", "label": "Open tasks" },
33
+ "x": 0,
34
+ "y": 2,
35
+ "w": 3,
36
+ "h": 3
37
+ },
38
+ {
39
+ "key": "stat-card",
40
+ "config": {
41
+ "profileSlug": "note",
42
+ "label": "Notes this week",
43
+ "timePeriod": "week"
44
+ },
45
+ "x": 3,
46
+ "y": 2,
47
+ "w": 3,
48
+ "h": 3
49
+ },
50
+ { "key": "inbox", "config": { "limit": 8 }, "x": 6, "y": 2, "w": 6, "h": 6 },
51
+ {
52
+ "key": "entity-list",
53
+ "config": {
54
+ "profileSlug": "task",
55
+ "title": "Next up",
56
+ "sortField": "priority",
57
+ "sortDirection": "desc",
58
+ "limit": 10
59
+ },
60
+ "x": 0,
61
+ "y": 5,
62
+ "w": 6,
63
+ "h": 6
64
+ },
65
+ { "key": "feed", "config": { "limit": 20 }, "x": 0, "y": 11, "w": 12, "h": 4 }
66
+ ]
127
67
  ```
128
68
 
129
- ---
130
-
131
69
  ## Recipe: Project overview
132
70
 
133
- _User asks: "Make me a page for Project X."_
71
+ _User asks: "Make a page for project X."_
134
72
 
135
- Built around one entity. Shows context + child tasks + documents + activity.
73
+ Pair the bento with a kanban **view** of the project's tasks (create it first, then embed its id).
136
74
 
137
75
  ```json
138
- {
139
- "name": "{{projectName}}",
140
- "type": "bento",
141
- "config": {
142
- "blocks": [
143
- {
144
- "id": "p1",
145
- "kind": "entity",
146
- "entityId": "{{projectId}}",
147
- "layout": { "x": 0, "y": 0, "w": 12, "h": 3 }
148
- },
149
-
150
- {
151
- "id": "p2",
152
- "kind": "widget",
153
- "widgetKind": "view-kanban",
154
- "layout": { "x": 0, "y": 3, "w": 8, "h": 6 },
155
- "config": {
156
- "profileSlug": "task",
157
- "groupBy": { "property": "status" },
158
- "filters": [
159
- { "property": "projectId", "op": "eq", "value": "{{projectId}}" }
160
- ]
161
- }
162
- },
163
-
164
- {
165
- "id": "p3",
166
- "kind": "widget",
167
- "widgetKind": "entity-gallery",
168
- "layout": { "x": 8, "y": 3, "w": 4, "h": 3 },
169
- "config": {
170
- "profileSlug": "file",
171
- "filters": [
172
- { "property": "projectId", "op": "eq", "value": "{{projectId}}" }
173
- ],
174
- "limit": 6
175
- }
176
- },
177
-
178
- {
179
- "id": "p4",
180
- "kind": "widget",
181
- "widgetKind": "feed",
182
- "layout": { "x": 8, "y": 6, "w": 4, "h": 3 },
183
- "config": { "entityId": "{{projectId}}", "limit": 10 }
184
- }
185
- ]
76
+ [
77
+ {
78
+ "key": "section-header",
79
+ "config": { "title": "Project X" },
80
+ "x": 0,
81
+ "y": 0,
82
+ "w": 12,
83
+ "h": 2
84
+ },
85
+ {
86
+ "key": "view",
87
+ "config": { "viewId": "<tasks kanban viewId>", "layout": "kanban" },
88
+ "x": 0,
89
+ "y": 2,
90
+ "w": 8,
91
+ "h": 8
92
+ },
93
+ {
94
+ "key": "chart-pie",
95
+ "config": {
96
+ "profileSlug": "task",
97
+ "groupBy": "status",
98
+ "label": "Tasks by status"
99
+ },
100
+ "x": 8,
101
+ "y": 2,
102
+ "w": 4,
103
+ "h": 5
104
+ },
105
+ {
106
+ "key": "entity-gallery",
107
+ "config": { "profileSlug": "file", "title": "Files", "limit": 6 },
108
+ "x": 8,
109
+ "y": 7,
110
+ "w": 4,
111
+ "h": 4
186
112
  }
187
- }
113
+ ]
188
114
  ```
189
115
 
190
- ---
191
-
192
116
  ## Recipe: CRM home
193
117
 
194
- _User asks: "Make me a CRM."_
195
-
196
- Pipeline-forward. Deals, contacts, upcoming meetings.
118
+ _User asks: "Build me a CRM dashboard."_
197
119
 
198
120
  ```json
199
- {
200
- "name": "CRM",
201
- "type": "bento",
202
- "config": {
203
- "blocks": [
204
- {
205
- "id": "c1",
206
- "kind": "widget",
207
- "widgetKind": "section-header",
208
- "layout": { "x": 0, "y": 0, "w": 12, "h": 1 },
209
- "config": { "title": "Pipeline" }
210
- },
211
-
212
- {
213
- "id": "c2",
214
- "kind": "widget",
215
- "widgetKind": "view-kanban",
216
- "layout": { "x": 0, "y": 1, "w": 12, "h": 6 },
217
- "config": {
218
- "profileSlug": "deal",
219
- "groupBy": { "property": "stage" },
220
- "cardFields": ["title", "value", "closeDate", "contactId"]
221
- }
222
- },
223
-
224
- {
225
- "id": "c3",
226
- "kind": "widget",
227
- "widgetKind": "stat-card",
228
- "layout": { "x": 0, "y": 7, "w": 4, "h": 2 },
229
- "config": {
230
- "label": "Open pipeline",
231
- "metric": "sum",
232
- "metricField": "value",
233
- "filter": {
234
- "profileSlug": "deal",
235
- "properties.stage": ["lead", "qualified", "proposal"]
236
- },
237
- "format": "currency",
238
- "icon": "trending-up"
239
- }
240
- },
241
-
242
- {
243
- "id": "c4",
244
- "kind": "widget",
245
- "widgetKind": "stat-card",
246
- "layout": { "x": 4, "y": 7, "w": 4, "h": 2 },
247
- "config": {
248
- "label": "Closing this month",
249
- "metric": "count",
250
- "filter": {
251
- "profileSlug": "deal",
252
- "properties.closeDate": "this-month"
253
- },
254
- "icon": "clock"
255
- }
256
- },
257
-
258
- {
259
- "id": "c5",
260
- "kind": "widget",
261
- "widgetKind": "stat-card",
262
- "layout": { "x": 8, "y": 7, "w": 4, "h": 2 },
263
- "config": {
264
- "label": "New contacts (30d)",
265
- "metric": "count",
266
- "filter": { "profileSlug": "contact", "createdAt": "last-30-days" },
267
- "icon": "user-plus"
268
- }
269
- },
270
-
271
- {
272
- "id": "c6",
273
- "kind": "widget",
274
- "widgetKind": "view-calendar",
275
- "layout": { "x": 0, "y": 9, "w": 8, "h": 5 },
276
- "config": {
277
- "profileSlug": "event",
278
- "dateProperty": "startDate",
279
- "endDateProperty": "endDate",
280
- "view": "week",
281
- "filters": [{ "property": "relatedToContact", "op": "exists" }]
282
- }
283
- },
284
-
285
- {
286
- "id": "c7",
287
- "kind": "widget",
288
- "widgetKind": "view-list",
289
- "layout": { "x": 8, "y": 9, "w": 4, "h": 5 },
290
- "config": {
291
- "profileSlug": "contact",
292
- "primaryField": "title",
293
- "secondaryFields": ["role", "companyId"],
294
- "sort": [{ "property": "lastInteractionAt", "direction": "desc" }],
295
- "limit": 12
296
- }
297
- }
298
- ]
121
+ [
122
+ {
123
+ "key": "stat-card",
124
+ "config": {
125
+ "profileSlug": "deal",
126
+ "aggregation": "sum",
127
+ "field": "value",
128
+ "label": "Pipeline value"
129
+ },
130
+ "x": 0,
131
+ "y": 0,
132
+ "w": 3,
133
+ "h": 3
134
+ },
135
+ {
136
+ "key": "stat-card",
137
+ "config": { "profileSlug": "deal", "label": "Open deals" },
138
+ "x": 3,
139
+ "y": 0,
140
+ "w": 3,
141
+ "h": 3
142
+ },
143
+ {
144
+ "key": "stat-card",
145
+ "config": { "profileSlug": "contact", "label": "Contacts" },
146
+ "x": 6,
147
+ "y": 0,
148
+ "w": 3,
149
+ "h": 3
150
+ },
151
+ {
152
+ "key": "chart-bar",
153
+ "config": {
154
+ "profileSlug": "deal",
155
+ "groupBy": "stage",
156
+ "aggregation": "sum",
157
+ "valueField": "value",
158
+ "label": "Value by stage"
159
+ },
160
+ "x": 0,
161
+ "y": 3,
162
+ "w": 6,
163
+ "h": 5
164
+ },
165
+ {
166
+ "key": "view",
167
+ "config": { "viewId": "<deals kanban viewId>", "layout": "kanban" },
168
+ "x": 6,
169
+ "y": 3,
170
+ "w": 6,
171
+ "h": 8
172
+ },
173
+ {
174
+ "key": "calendar",
175
+ "config": {
176
+ "profileSlug": "event",
177
+ "dateField": "startDate",
178
+ "endDateField": "endDate",
179
+ "defaultView": "timeGridWeek"
180
+ },
181
+ "x": 0,
182
+ "y": 8,
183
+ "w": 6,
184
+ "h": 8
185
+ },
186
+ {
187
+ "key": "entity-list",
188
+ "config": {
189
+ "profileSlug": "contact",
190
+ "title": "Recently contacted",
191
+ "sortField": "lastInteractionAt",
192
+ "sortDirection": "desc",
193
+ "limit": 10
194
+ },
195
+ "x": 6,
196
+ "y": 11,
197
+ "w": 6,
198
+ "h": 5
299
199
  }
300
- }
200
+ ]
301
201
  ```
302
202
 
303
- ---
304
-
305
203
  ## Recipe: Content pipeline
306
204
 
307
- _User asks: "Make me a content creation workspace / dashboard."_
308
-
309
- Assumes a `draft` profile exists (extend `article` via `synap-schema`).
205
+ _User asks: "Help me manage my content."_
310
206
 
311
207
  ```json
312
- {
313
- "name": "Content Pipeline",
314
- "type": "bento",
315
- "config": {
316
- "blocks": [
317
- {
318
- "id": "ct1",
319
- "kind": "widget",
320
- "widgetKind": "view-kanban",
321
- "layout": { "x": 0, "y": 0, "w": 12, "h": 6 },
322
- "config": {
323
- "profileSlug": "draft",
324
- "groupBy": { "property": "status" },
325
- "columnOrder": ["idea", "writing", "review", "published"],
326
- "cardFields": ["title", "wordCount", "publishDate"]
327
- }
328
- },
329
-
330
- {
331
- "id": "ct2",
332
- "kind": "widget",
333
- "widgetKind": "stat-card",
334
- "layout": { "x": 0, "y": 6, "w": 4, "h": 2 },
335
- "config": {
336
- "label": "Published this month",
337
- "metric": "count",
338
- "filter": {
339
- "profileSlug": "draft",
340
- "properties.status": "published",
341
- "properties.publishDate": "this-month"
342
- }
343
- }
344
- },
345
-
346
- {
347
- "id": "ct3",
348
- "kind": "widget",
349
- "widgetKind": "stat-card",
350
- "layout": { "x": 4, "y": 6, "w": 4, "h": 2 },
351
- "config": {
352
- "label": "Words written this week",
353
- "metric": "sum",
354
- "metricField": "wordCount",
355
- "filter": { "updatedAt": "this-week" }
356
- }
357
- },
358
-
359
- {
360
- "id": "ct4",
361
- "kind": "widget",
362
- "widgetKind": "stat-card",
363
- "layout": { "x": 8, "y": 6, "w": 4, "h": 2 },
364
- "config": {
365
- "label": "In review",
366
- "metric": "count",
367
- "filter": { "profileSlug": "draft", "properties.status": "review" }
368
- }
369
- },
370
-
371
- {
372
- "id": "ct5",
373
- "kind": "widget",
374
- "widgetKind": "entity-gallery",
375
- "layout": { "x": 0, "y": 8, "w": 12, "h": 4 },
376
- "config": {
377
- "profileSlug": "article",
378
- "filters": [
379
- { "property": "source", "op": "eq", "value": "research" }
380
- ],
381
- "imageProperty": "thumbnail",
382
- "limit": 12
383
- }
384
- }
385
- ]
208
+ [
209
+ {
210
+ "key": "view",
211
+ "config": { "viewId": "<drafts kanban viewId>", "layout": "kanban" },
212
+ "x": 0,
213
+ "y": 0,
214
+ "w": 12,
215
+ "h": 8
216
+ },
217
+ {
218
+ "key": "stat-card",
219
+ "config": {
220
+ "profileSlug": "draft",
221
+ "label": "Published this month",
222
+ "timePeriod": "month"
223
+ },
224
+ "x": 0,
225
+ "y": 8,
226
+ "w": 4,
227
+ "h": 3
228
+ },
229
+ {
230
+ "key": "chart-line",
231
+ "config": {
232
+ "profileSlug": "draft",
233
+ "timePeriod": "week",
234
+ "label": "Drafts per week"
235
+ },
236
+ "x": 4,
237
+ "y": 8,
238
+ "w": 8,
239
+ "h": 5
386
240
  }
387
- }
241
+ ]
388
242
  ```
389
243
 
390
- ---
391
-
392
244
  ## Recipe: Reading list
393
245
 
394
246
  _User asks: "Show me my reading list."_
395
247
 
396
- Simple masonry/gallery + stats.
397
-
398
248
  ```json
399
- {
400
- "name": "Reading",
401
- "type": "bento",
402
- "config": {
403
- "blocks": [
404
- {
405
- "id": "r1",
406
- "kind": "widget",
407
- "widgetKind": "section-header",
408
- "layout": { "x": 0, "y": 0, "w": 12, "h": 1 },
409
- "config": { "title": "To read" }
410
- },
411
-
412
- {
413
- "id": "r2",
414
- "kind": "widget",
415
- "widgetKind": "entity-gallery",
416
- "layout": { "x": 0, "y": 1, "w": 8, "h": 8 },
417
- "config": {
418
- "profileSlug": "article",
419
- "filters": [{ "property": "status", "op": "neq", "value": "read" }],
420
- "sort": [{ "property": "createdAt", "direction": "desc" }],
421
- "imageProperty": "thumbnail",
422
- "captionProperty": "domain",
423
- "limit": 24
424
- }
425
- },
426
-
427
- {
428
- "id": "r3",
429
- "kind": "widget",
430
- "widgetKind": "stat-card",
431
- "layout": { "x": 8, "y": 1, "w": 4, "h": 2 },
432
- "config": {
433
- "label": "Saved this week",
434
- "metric": "count",
435
- "filter": { "profileSlug": "article", "createdAt": "this-week" }
436
- }
437
- },
438
-
439
- {
440
- "id": "r4",
441
- "kind": "widget",
442
- "widgetKind": "view-list",
443
- "layout": { "x": 8, "y": 3, "w": 4, "h": 6 },
444
- "config": {
445
- "profileSlug": "article",
446
- "primaryField": "title",
447
- "secondaryFields": ["readAt"],
448
- "filters": [{ "property": "status", "op": "eq", "value": "read" }],
449
- "sort": [{ "property": "readAt", "direction": "desc" }],
450
- "limit": 10
451
- }
452
- }
453
- ]
249
+ [
250
+ {
251
+ "key": "stat-card",
252
+ "config": { "profileSlug": "article", "label": "Unread" },
253
+ "x": 0,
254
+ "y": 0,
255
+ "w": 4,
256
+ "h": 3
257
+ },
258
+ {
259
+ "key": "entity-spotlight",
260
+ "config": { "profileSlug": "article", "seed": "daily" },
261
+ "x": 4,
262
+ "y": 0,
263
+ "w": 8,
264
+ "h": 3
265
+ },
266
+ {
267
+ "key": "entity-gallery",
268
+ "config": { "profileSlug": "article", "title": "To read", "limit": 12 },
269
+ "x": 0,
270
+ "y": 3,
271
+ "w": 8,
272
+ "h": 6
273
+ },
274
+ {
275
+ "key": "entity-list",
276
+ "config": {
277
+ "profileSlug": "article",
278
+ "title": "Recently read",
279
+ "sortField": "readAt",
280
+ "sortDirection": "desc",
281
+ "limit": 10
282
+ },
283
+ "x": 8,
284
+ "y": 3,
285
+ "w": 4,
286
+ "h": 6
454
287
  }
455
- }
288
+ ]
456
289
  ```
457
290
 
458
- ---
459
-
460
291
  ## Recipe: Daily briefing
461
292
 
462
- _User asks: "Every morning show me what matters."_
463
-
464
- Minimal. AI-driven. Designed to be scannable in 30 seconds.
293
+ _User asks: "What should I look at every morning?"_
465
294
 
466
295
  ```json
467
- {
468
- "name": "Morning Briefing",
469
- "type": "bento",
470
- "config": {
471
- "blocks": [
472
- {
473
- "id": "m1",
474
- "kind": "widget",
475
- "widgetKind": "morning-briefing",
476
- "layout": { "x": 0, "y": 0, "w": 12, "h": 4 }
477
- },
478
-
479
- {
480
- "id": "m2",
481
- "kind": "widget",
482
- "widgetKind": "view-list",
483
- "layout": { "x": 0, "y": 4, "w": 6, "h": 5 },
484
- "config": {
485
- "profileSlug": "task",
486
- "primaryField": "title",
487
- "secondaryFields": ["dueDate"],
488
- "filters": [
489
- { "property": "dueDate", "op": "lte", "value": "today" },
490
- {
491
- "property": "status",
492
- "op": "in",
493
- "value": ["todo", "in-progress"]
494
- }
495
- ],
496
- "limit": 8
497
- }
498
- },
499
-
500
- {
501
- "id": "m3",
502
- "kind": "widget",
503
- "widgetKind": "view-calendar",
504
- "layout": { "x": 6, "y": 4, "w": 6, "h": 5 },
505
- "config": {
506
- "profileSlug": "event",
507
- "dateProperty": "startDate",
508
- "view": "day"
509
- }
510
- }
511
- ]
512
- }
513
- }
296
+ [
297
+ {
298
+ "key": "greeting",
299
+ "config": { "showDate": true, "showCapturedToday": true },
300
+ "x": 0,
301
+ "y": 0,
302
+ "w": 12,
303
+ "h": 2
304
+ },
305
+ {
306
+ "key": "entity-list",
307
+ "config": {
308
+ "profileSlug": "task",
309
+ "title": "Due soon",
310
+ "sortField": "dueDate",
311
+ "sortDirection": "asc",
312
+ "limit": 8
313
+ },
314
+ "x": 0,
315
+ "y": 2,
316
+ "w": 6,
317
+ "h": 6
318
+ },
319
+ {
320
+ "key": "calendar",
321
+ "config": {
322
+ "profileSlug": "event",
323
+ "dateField": "startDate",
324
+ "defaultView": "timeGridDay"
325
+ },
326
+ "x": 6,
327
+ "y": 2,
328
+ "w": 6,
329
+ "h": 6
330
+ },
331
+ { "key": "inbox", "config": { "limit": 6 }, "x": 0, "y": 8, "w": 12, "h": 4 }
332
+ ]
514
333
  ```
515
334
 
516
- ---
517
-
518
335
  ## Recipe: Governance dashboard
519
336
 
520
- _User asks: "Show me what my AI has been doing."_
337
+ _User asks: "What are my agents doing?"_
521
338
 
522
339
  ```json
523
- {
524
- "name": "AI Activity",
525
- "type": "bento",
526
- "config": {
527
- "blocks": [
528
- {
529
- "id": "g1",
530
- "kind": "widget",
531
- "widgetKind": "stat-card",
532
- "layout": { "x": 0, "y": 0, "w": 3, "h": 2 },
533
- "config": {
534
- "label": "Pending proposals",
535
- "metric": "count",
536
- "filter": { "type": "proposal", "status": "pending" }
537
- }
538
- },
539
- {
540
- "id": "g2",
541
- "kind": "widget",
542
- "widgetKind": "stat-card",
543
- "layout": { "x": 3, "y": 0, "w": 3, "h": 2 },
544
- "config": {
545
- "label": "Auto-approved (24h)",
546
- "metric": "count",
547
- "filter": {
548
- "type": "action",
549
- "source": "agent",
550
- "status": "approved",
551
- "createdAt": "last-24h"
552
- }
553
- }
554
- },
555
- {
556
- "id": "g3",
557
- "kind": "widget",
558
- "widgetKind": "stat-card",
559
- "layout": { "x": 6, "y": 0, "w": 3, "h": 2 },
560
- "config": {
561
- "label": "Agents connected",
562
- "metric": "count",
563
- "filter": { "type": "agent", "status": "active" }
564
- }
565
- },
566
- {
567
- "id": "g4",
568
- "kind": "widget",
569
- "widgetKind": "stat-card",
570
- "layout": { "x": 9, "y": 0, "w": 3, "h": 2 },
571
- "config": {
572
- "label": "Entities created (7d)",
573
- "metric": "count",
574
- "filter": { "source": "agent", "createdAt": "this-week" }
575
- }
576
- },
577
-
578
- {
579
- "id": "g5",
580
- "kind": "widget",
581
- "widgetKind": "proposals-list",
582
- "layout": { "x": 0, "y": 2, "w": 6, "h": 6 },
583
- "config": { "status": "pending", "limit": 15 }
584
- },
585
-
586
- {
587
- "id": "g6",
588
- "kind": "widget",
589
- "widgetKind": "agent-activity",
590
- "layout": { "x": 6, "y": 2, "w": 6, "h": 6 },
591
- "config": { "limit": 20 }
592
- }
593
- ]
340
+ [
341
+ {
342
+ "key": "section-header",
343
+ "config": { "title": "Needs your review" },
344
+ "x": 0,
345
+ "y": 0,
346
+ "w": 12,
347
+ "h": 2
348
+ },
349
+ {
350
+ "key": "proposals-list",
351
+ "config": { "status": "pending", "limit": 10 },
352
+ "x": 0,
353
+ "y": 2,
354
+ "w": 6,
355
+ "h": 8
356
+ },
357
+ {
358
+ "key": "proposals-list",
359
+ "config": { "status": "approved", "layout": "timeline", "limit": 20 },
360
+ "x": 6,
361
+ "y": 2,
362
+ "w": 6,
363
+ "h": 8
594
364
  }
595
- }
365
+ ]
596
366
  ```
597
367
 
598
368
  ---
@@ -600,9 +370,9 @@ _User asks: "Show me what my AI has been doing."_
600
370
  ## Composition tips
601
371
 
602
372
  - **Row-by-row thinking.** Each row is one visual theme. Mixing themes in the same row confuses the eye.
603
- - **Start tall, shrink later.** It's easier to shrink an oversized block than to realize a tight block feels cramped.
373
+ - **Start from `defaultSize`.** Each entry in `synap_list_widgets` carries one; it's easier to shrink an oversized block than to realize a tight block feels cramped.
604
374
  - **Use `section-header` between themes.** Readers parse visual separators faster than mental ones.
605
- - **Keep stat-cards together in a strip.** Four stats at 3×2 each = one clean row. Four stats scattered = noise.
375
+ - **Keep stat-cards together in a strip.** Four stats at 3×3 each = one clean row. Four stats scattered = noise.
606
376
  - **End with the feed.** Activity feeds work best as the last row — they're where the eye lands for recency.
607
377
  - **One primary view per bento.** The user should know what the bento is "about" at a glance. If you have two headline views, split into two bentos.
608
- - **Show, don't hide.** Putting the most important info behind a widget that needs interaction is a trap. Top-left gets the most attention — put the answer there.
378
+ - **Show, don't hide.** Top-left gets the most attention — put the answer there.