@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
@@ -1,32 +1,23 @@
1
1
  /**
2
- * `synap mcp` — the MCP front door.
2
+ * `synap mcp` — the MCP front door. Two lanes:
3
3
  *
4
- * The Synap pod exposes an MCP server at `${podUrl}/mcp` (Bearer-authed). This
5
- * command group is the turnkey funnel for pointing ANY MCP client at it:
4
+ * 1. Web AI (Cloud MCP / OAuth) — control plane `${cp}/mcp` (managed:
5
+ * https://api.synap.live/mcp). claude.ai's connector UI is OAuth-only; use
6
+ * `synap mcp connect-claude` to print the URL (no key mint, no file write).
7
+ * 2. IDE / file-configurable — pod `${podUrl}/mcp` (Bearer). Needs a pod +
8
+ * key. `synap mcp connect <client>` writes client config; `synap mcp url`
9
+ * prints URL + key for header-based UIs (ChatGPT, Raycast, …).
6
10
  *
7
- * synap mcp url — print a ready-to-paste connection (URL + key + snippets)
8
- * for UI-only clients that accept a custom header (e.g.
9
- * Raycast) and for clients that need the raw values to
10
- * wire up by hand. claude.ai's connector UI does NOT
11
- * currently accept a bearer token here — see the note
12
- * printed by this command.
13
- * synap mcp verify — health-check: is /mcp reachable and is the key valid?
14
- * synap mcp connect — alias of `synap connect` for file-configurable clients
15
- * (Claude Code, Cursor, Desktop, …) — writes the config.
16
- * synap mcp connect-claude — print the claude.ai (web) OAuth connection
17
- * steps. claude.ai's connector UI is OAuth-only (no
18
- * header field), so this prints paste-ready values
19
- * instead of writing a file — claude.ai + the control
20
- * plane drive the actual OAuth handshake.
21
- *
22
- * For file-configurable clients, prefer `synap mcp connect <client>` (it mints a
23
- * dedicated agent key + writes the client's config). `synap mcp url` is the
24
- * escape hatch for clients you must configure by hand in a UI.
11
+ * synap mcp url — paste-ready pod MCP connection (URL + key)
12
+ * synap mcp verify — health-check pod /mcp + key
13
+ * synap mcp connect — write MCP config for IDE/desktop clients
14
+ * synap mcp connect-claude — print Cloud MCP OAuth URL for claude.ai (web)
25
15
  */
26
16
  import chalk from "chalk";
27
17
  import { resolveHubConfig } from "../lib/hub-client.js";
28
18
  import { buildMcpUrl, provisionAgentKey, enrollAgentIfNeeded, } from "../lib/targets.js";
29
19
  import { log } from "../utils/logger.js";
20
+ import { printMcpConnection, redactKey, writeMcpSnippetFiles, MCP_KEY_ENV } from "../lib/mcp-snippets.js";
30
21
  /** Resolve the scoped MCP URL + the lenses from flags.
31
22
  *
32
23
  * Default is POD-WIDE: a workspace is a lens, not a container, so we do NOT
@@ -93,35 +84,7 @@ export async function mcpUrl(opts) {
93
84
  }, null, 2));
94
85
  return;
95
86
  }
96
- const mcpServers = {
97
- mcpServers: {
98
- synap: { url, headers: { Authorization: `Bearer ${hubApiKey}` } },
99
- },
100
- };
101
- const mcpRemote = {
102
- mcpServers: {
103
- synap: {
104
- command: "npx",
105
- args: ["mcp-remote", url, "--header", `Authorization: Bearer ${hubApiKey}`],
106
- },
107
- },
108
- };
109
- log.heading("\nSynap MCP connection");
110
- console.log(` ${chalk.dim("URL")} ${url}`);
111
- console.log(` ${chalk.dim("Header")} Authorization: Bearer ${hubApiKey}`);
112
- console.log(` ${chalk.dim("Agent")} ${agentUserId}${workspaceId ? chalk.dim(` · workspace ${workspaceId}`) : chalk.dim(" · pod-wide")}${projectId ? chalk.dim(` · project ${projectId}`) : ""}`);
113
- console.log(chalk.bold("\nClaude Code"));
114
- console.log(chalk.cyan(` claude mcp add --transport http synap ${url} \\\n --header "Authorization: Bearer ${hubApiKey}" --scope user`));
115
- console.log(chalk.bold("\nCursor / VS Code / native-HTTP clients (mcp.json)"));
116
- console.log(chalk.dim(JSON.stringify(mcpServers, null, 2)));
117
- console.log(chalk.bold("\nClaude Desktop / stdio-only clients (mcp-remote bridge)"));
118
- console.log(chalk.dim(JSON.stringify(mcpRemote, null, 2)));
119
- console.log(chalk.bold("\nUI clients that accept an API key / custom header (ChatGPT, Raycast, …)"));
120
- console.log(` Paste the URL above and add the Authorization header.`);
121
- console.log(chalk.dim(" Raycast: run “Install MCP Server” → transport HTTP → paste the URL + a “Authorization: Bearer …” header."));
122
- console.log(chalk.dim(" ChatGPT: Settings → enable Developer mode → add a connector → paste the URL and choose API-key auth."));
123
- console.log(chalk.yellow("\nclaude.ai (web/desktop/mobile connectors) can't take a custom header yet — its connector UI has no field for one. OAuth support is planned; until then, use Claude Code, Cursor, or another file-configurable client above."));
124
- console.log(chalk.dim("\nTip: for file-configurable clients, `synap mcp connect <client>` writes the config for you."));
87
+ printMcpConnection({ url, hubApiKey, agentUserId, workspaceId, projectId });
125
88
  }
126
89
  catch (e) {
127
90
  log.error(`Could not build MCP connection: ${e.message}`);
@@ -200,7 +163,7 @@ export async function mcpVerify(opts) {
200
163
  * starts with `pod.` — anything else (localhost, a custom domain, …) can't be
201
164
  * derived confidently, so the caller falls back to a placeholder + `--cp-url`.
202
165
  */
203
- function deriveCpOrigin(podUrl) {
166
+ export function deriveCpOrigin(podUrl) {
204
167
  try {
205
168
  const host = new URL(podUrl).hostname;
206
169
  const labels = host.split(".");
@@ -223,43 +186,267 @@ function deriveCpOrigin(podUrl) {
223
186
  * claude.ai's "Add custom connector" UI is OAuth-only (Dynamic Client
224
187
  * Registration) — it has no field for a bearer header, so the file/header
225
188
  * based flows (`mcp connect`, `mcp url`) don't apply. The control plane's
226
- * `/mcp` endpoint now speaks OAuth, so connecting is: paste a URL, approve in
227
- * the browser. This command can't drive that click-through itself — claude.ai
228
- * and the control plane own the OAuth handshake — it only prints the exact
229
- * values so there's no guesswork.
189
+ * `/mcp` endpoint speaks OAuth: paste a URL, approve in the browser. This
190
+ * command does not mint keys or write client config — it only prints the URL.
191
+ *
192
+ * Stranger-safe: if no pod is configured, falls back to `--cp-url` or the
193
+ * managed control plane `https://api.synap.live`.
230
194
  */
231
195
  export async function mcpConnectClaudeWeb(opts) {
232
196
  try {
233
- const cfg = await resolveHubConfig(opts);
234
- const { cpOrigin, derived } = deriveCpOrigin(cfg.podUrl);
235
- const finalCpOrigin = (opts.cpUrl ?? cpOrigin).replace(/\/$/, "");
197
+ const MANAGED_CP = "https://api.synap.live";
198
+ /** How we chose the CP origin — for --json + user-facing notes. */
199
+ let source = "managed-fallback";
200
+ let cpOrigin = MANAGED_CP;
201
+ if (opts.cpUrl) {
202
+ cpOrigin = opts.cpUrl.replace(/\/$/, "");
203
+ source = "override";
204
+ }
205
+ else {
206
+ try {
207
+ const cfg = await resolveHubConfig(opts);
208
+ const fromPod = deriveCpOrigin(cfg.podUrl);
209
+ if (fromPod.derived) {
210
+ cpOrigin = fromPod.cpOrigin;
211
+ source = "derived";
212
+ }
213
+ else {
214
+ // Non-pod.* host — can't derive confidently; managed + tip to --cp-url.
215
+ cpOrigin = MANAGED_CP;
216
+ source = "managed-fallback";
217
+ }
218
+ }
219
+ catch {
220
+ // No pod config — stranger path: print managed Cloud MCP (no key mint).
221
+ cpOrigin = MANAGED_CP;
222
+ source = "managed-fallback";
223
+ }
224
+ }
225
+ const finalCpOrigin = cpOrigin.replace(/\/$/, "");
236
226
  const url = `${finalCpOrigin}/mcp`;
237
- const wasDerived = opts.cpUrl ? "override" : derived;
238
227
  const steps = [
239
228
  "Open claude.ai → Settings → Connectors → Add custom connector",
240
229
  "Name: Synap",
241
230
  `URL: ${url}`,
242
231
  "Leave Advanced settings (OAuth Client ID/Secret) blank",
243
232
  "Click Add → you'll be redirected to sign in to Synap Cloud and approve → done",
244
- 'Then ask Claude to "list my Synap pods" to confirm',
233
+ 'Then ask Claude to "list my Synap pods" (list_pods) and connect one (connect_pod)',
245
234
  ];
246
235
  if (opts.json) {
247
- console.log(JSON.stringify({ url, cpOrigin: finalCpOrigin, derived: wasDerived, steps }, null, 2));
236
+ console.log(JSON.stringify({ url, cpOrigin: finalCpOrigin, derived: source, steps }, null, 2));
248
237
  return;
249
238
  }
250
239
  log.heading("\nConnect claude.ai (web) to Synap");
251
- if (!derived && !opts.cpUrl) {
252
- log.warn("Could not derive the control-plane URL from your pod host — pass --cp-url <url> (e.g. https://api.yourdomain.com).");
240
+ if (source === "managed-fallback" && !opts.cpUrl) {
241
+ console.log(chalk.dim(" Using managed Cloud MCP (https://api.synap.live). Pass --cp-url for a self-hosted control plane. No key minted."));
253
242
  }
254
243
  console.log(` ${chalk.dim("URL")} ${url}`);
255
244
  console.log();
256
245
  steps.forEach((step, i) => console.log(` ${chalk.bold(`${i + 1}.`)} ${step}`));
257
246
  console.log();
258
- console.log(chalk.dim("This connects via the Synap control plane. A direct pod connection (no control plane) is coming."));
247
+ console.log(chalk.dim("Cloud MCP does not store your data. After OAuth, list_pods then connect_pod (you still need a pod for useful work)."));
259
248
  }
260
249
  catch (e) {
261
250
  log.error(`Could not build the claude.ai connection: ${e.message}`);
262
251
  process.exit(1);
263
252
  }
264
253
  }
254
+ /**
255
+ * `synap mcp ui-setup <client>` — print the exact form fields to fill in a
256
+ * client's MCP/Connector UI. Supports ChatGPT (API key), Codex, Cursor,
257
+ * VS Code, Claude Desktop, and generic clients.
258
+ */
259
+ export async function mcpUiSetup(client, opts) {
260
+ try {
261
+ const hubCfg = await resolveHubConfig({ podUrl: opts.podUrl, apiKey: opts.apiKey });
262
+ const { url, workspaceId, projectId } = resolveMcpTarget(hubCfg, { workspace: opts.workspace, project: opts.project });
263
+ const { hubApiKey, agentUserId } = await provisionAgentKey(hubCfg.podUrl, hubCfg.apiKey, "generic", { requireApproval: false });
264
+ const normalizedClient = client.toLowerCase().replace(/-/g, "");
265
+ let output = "";
266
+ // The key never reaches stdout or argv: fields show it redacted; the full
267
+ // material is written 0600 and clients reference it through an env var.
268
+ const keyShown = redactKey(hubApiKey);
269
+ const snippetFiles = writeMcpSnippetFiles(url, hubApiKey, agentUserId);
270
+ const clientConfigs = {
271
+ chatgpt: {
272
+ name: "ChatGPT (API key)",
273
+ format: "http",
274
+ fields: {
275
+ "Connector Name": "Synap",
276
+ "URL": url,
277
+ "Auth Type": "API Key",
278
+ "API Key": `${keyShown} (full key: ${snippetFiles.envFile})`,
279
+ },
280
+ notes: [
281
+ "ChatGPT → Settings → Connectors → Add custom connector",
282
+ "Paste the URL and API Key exactly as shown above",
283
+ `If your build shows a Header field instead: Authorization: Bearer <key> (full key in ${snippetFiles.envFile}, 0600)`,
284
+ ],
285
+ },
286
+ chatgptoauth: {
287
+ name: "ChatGPT (OAuth via Control Plane)",
288
+ format: "http",
289
+ fields: {
290
+ "Connector Name": "Synap (Control Plane)",
291
+ "URL": "https://api.synap.live/mcp",
292
+ "Auth Type": "OAuth",
293
+ "API Key": "(leave blank — OAuth flow)",
294
+ },
295
+ notes: [
296
+ "ChatGPT → Settings → Connectors → Add custom connector",
297
+ "Use the Control Plane OAuth URL (multi-pod support)",
298
+ "After connecting, ask ChatGPT: 'list my Synap pods' then 'connect pod <name>'",
299
+ ],
300
+ },
301
+ codex: {
302
+ name: "OpenAI Codex (config.toml)",
303
+ format: "file",
304
+ fields: {
305
+ "Config file": "~/.codex/config.toml",
306
+ "Section to add": `[mcp_servers.synap]`,
307
+ "url": url,
308
+ "http_headers": `{ Authorization = "Bearer ${keyShown}" }`,
309
+ "startup_timeout_sec": "30",
310
+ "enabled": "true",
311
+ },
312
+ notes: [
313
+ `Open ~/.codex/config.toml and add the [mcp_servers.synap] section (replace ${keyShown} with the full key from ${snippetFiles.envFile}, 0600)`,
314
+ "Restart Codex CLI to pick up the new MCP server",
315
+ "The synap tool set will appear in agent mode",
316
+ ],
317
+ },
318
+ cursor: {
319
+ name: "Cursor (mcp.json)",
320
+ format: "http",
321
+ fields: {
322
+ "Config file": "~/.cursor/mcp.json",
323
+ "mcpServers.synap.url": url,
324
+ "mcpServers.synap.headers.Authorization": `Bearer \${env:${MCP_KEY_ENV}}`,
325
+ },
326
+ notes: [
327
+ "Cursor reads native HTTP MCP format from ~/.cursor/mcp.json",
328
+ "Restart Cursor. The synap tool set will appear in agent mode.",
329
+ ],
330
+ },
331
+ vscode: {
332
+ name: "VS Code (Kilo Code / Cline / Continue / Copilot)",
333
+ format: "http",
334
+ fields: {
335
+ "Config file": "~/Library/Application Support/Code/User/mcp.json (macOS)",
336
+ "servers.synap.type": "http",
337
+ "servers.synap.url": url,
338
+ "servers.synap.headers.Authorization": `Bearer \${env:${MCP_KEY_ENV}}`,
339
+ },
340
+ notes: [
341
+ "VS Code 1.99+ uses 'servers' format (not mcpServers)",
342
+ "Picked up automatically by Kilo Code, Cline, Continue, and GitHub Copilot",
343
+ "Reload VS Code (or open the MCP panel) to activate",
344
+ ],
345
+ },
346
+ "claude-desktop": {
347
+ name: "Claude Desktop (stdio bridge)",
348
+ format: "stdio",
349
+ fields: {
350
+ "Config file": "~/Library/Application Support/Claude/claude_desktop_config.json (macOS)",
351
+ "mcpServers.synap.command": "npx",
352
+ "mcpServers.synap.args": `-y mcp-remote ${url} --header "Authorization:\${SYNAP_AUTH}"`,
353
+ "mcpServers.synap.env.SYNAP_AUTH": `Bearer ${keyShown} (real value: "mcpRemote" block in ${snippetFiles.jsonFile})`,
354
+ },
355
+ notes: [
356
+ "Claude Desktop only supports stdio MCP — uses mcp-remote bridge",
357
+ "Fully quit Claude Desktop (Cmd+Q), then relaunch",
358
+ "Look for the MCP tools icon under the input box — 'synap' should appear",
359
+ ],
360
+ },
361
+ "claude-code": {
362
+ name: "Claude Code (native HTTP MCP)",
363
+ format: "http",
364
+ fields: {
365
+ "Command": `source ${snippetFiles.envFile} && claude mcp add --transport http synap-${new URL(hubCfg.podUrl).hostname.split(".")[1] || "pod"} ${url} --header 'Authorization: Bearer \${${MCP_KEY_ENV}}' --scope user`,
366
+ },
367
+ notes: [
368
+ `The key stays out of the command: it is read from $${MCP_KEY_ENV} when Claude Code starts — launch it from a shell that sourced ${snippetFiles.envFile}`,
369
+ "Relaunch Claude Code to load the tools",
370
+ ],
371
+ },
372
+ generic: {
373
+ name: "Generic MCP Client (HTTP)",
374
+ format: "http",
375
+ fields: {
376
+ "URL": url,
377
+ "Headers": `Authorization: Bearer ${keyShown}`,
378
+ },
379
+ notes: [
380
+ "Paste URL and add Authorization header in your client's MCP config",
381
+ "Supports any MCP-compatible client with HTTP transport",
382
+ ],
383
+ },
384
+ };
385
+ const clientConfig = clientConfigs[normalizedClient] || clientConfigs.generic;
386
+ if (opts.json) {
387
+ console.log(JSON.stringify({ client: clientConfig.name, format: clientConfig.format, fields: clientConfig.fields, notes: clientConfig.notes }, null, 2));
388
+ return;
389
+ }
390
+ log.heading(`MCP UI Setup — ${clientConfig.name}`);
391
+ log.blank();
392
+ log.info("Form fields to fill in your client's MCP/Connector settings:");
393
+ log.blank();
394
+ for (const [key, value] of Object.entries(clientConfig.fields)) {
395
+ console.log(` ${chalk.bold(key)}: ${chalk.cyan(value)}`);
396
+ }
397
+ log.blank();
398
+ log.info("Notes:");
399
+ for (const note of clientConfig.notes) {
400
+ console.log(` • ${note}`);
401
+ }
402
+ log.blank();
403
+ log.dim("Agent key provisioned for this session. Re-run with --name to target another pod.");
404
+ }
405
+ catch (e) {
406
+ log.error(`Could not build UI setup: ${e.message}`);
407
+ process.exit(1);
408
+ }
409
+ }
410
+ /**
411
+ * `synap mcp bridge` — the stdio MCP server Claude Code spawns when it is
412
+ * connected through the bridge (`synap mcp use-bridge`). Forwards every
413
+ * message to the pod's /mcp and names the Claude Code conversation it runs in,
414
+ * so the work it does can be reopened there. See lib/mcp-bridge.ts.
415
+ *
416
+ * stdout IS the protocol — nothing but JSON-RPC may be written to it.
417
+ */
418
+ export async function mcpBridge(opts) {
419
+ const { runMcpBridge } = await import("../lib/mcp-bridge.js");
420
+ const { conversationHeaders } = await import("../lib/conversation-headers.js");
421
+ const fromEnv = process.env.SYNAP_MCP_API_KEY || process.env.SYNAP_HUB_API_KEY;
422
+ const cfg = fromEnv && opts.url ? null : await resolveHubConfig();
423
+ const apiKey = fromEnv || cfg?.apiKey;
424
+ const url = opts.url || (cfg ? buildMcpUrl(cfg.podUrl) : undefined);
425
+ if (!apiKey || !url) {
426
+ process.stderr.write("[synap mcp bridge] no pod key or URL — run `synap init`\n");
427
+ process.exit(1);
428
+ }
429
+ // The spawn-time id (a stdio server's env), never a lens fallback.
430
+ await runMcpBridge({
431
+ url,
432
+ apiKey,
433
+ headers: conversationHeaders(process.env.CLAUDE_CODE_SESSION_ID),
434
+ });
435
+ }
436
+ /**
437
+ * `synap mcp use-bridge [--off]` — switch Claude Code's MCP connection to the
438
+ * stdio bridge (or back to direct http), re-using the key `synap init` stored.
439
+ */
440
+ export async function mcpUseBridge(opts) {
441
+ const { setClaudeCodeMcpTransport } = await import("../lib/targets.js");
442
+ const name = setClaudeCodeMcpTransport(opts.off ? "http" : "bridge");
443
+ if (!name) {
444
+ log.error("Claude Code is not connected to a pod yet — run `synap init` first.");
445
+ process.exitCode = 1;
446
+ return;
447
+ }
448
+ log.dim(opts.off
449
+ ? "Claude Code talks to the pod directly again; conversations are no longer named on MCP calls."
450
+ : "Each Claude Code conversation is now named on its MCP calls, so its work can be reopened with `claude --resume <id>`.");
451
+ }
265
452
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAkB,MAAM,sBAAsB,CAAC;AACxE,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAU1G;;;;;;;mDAOmD;AACnD,SAAS,gBAAgB,CACvB,GAAc,EACd,IAAiB;IAEjB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,sCAAsC;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,oBAAoB;IACpD,OAAO;QACL,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC;QACpD,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,IAAuC;IAEvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEpE,yEAAyE;QACzE,yEAAyE;QACzE,mDAAmD;QACnD,sEAAsE;QACtE,2EAA2E;QAC3E,oCAAoC;QACpC,MAAM,aAAa,GAAG;YACpB,aAAa;YACb,gBAAgB;YAChB,QAAQ;YACR,SAAS;YACT,OAAO;YACP,WAAW;YACX,SAAS;SACV,CAAC;QACF,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,MAAM;YACb,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,CACxD,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,MAAM,EACV,SAAS,EACT,EAAE,eAAe,EAAE,KAAK,EAAE,CAC3B,CAAC;QAEF,wEAAwE;QACxE,wEAAwE;QACxE,2EAA2E;QAC3E,0EAA0E;QAC1E,gEAAgE;QAChE,MAAM,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE;YAC1E,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,+BAA+B;SAC3D,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;gBACE,GAAG;gBACH,MAAM,EAAE,SAAS;gBACjB,WAAW;gBACX,WAAW,EAAE,WAAW,IAAI,IAAI;gBAChC,SAAS,EAAE,SAAS,IAAI,IAAI;aAC7B,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,kBAAkB,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,mCAAoC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAiB;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE9C,uEAAuE;QACvE,2EAA2E;QAC3E,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,SAA6B,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,MAAM,EAAE;gBACxC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;gBACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YACH,SAAS,GAAG,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2B,CAAC;gBAC1D,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,iCAAiC;QACjC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,sBAAsB,EAAE;gBACxD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,EAAE;gBAClD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YACH,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CACjE,CAAC;YACF,OAAO;QACT,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,SAAS,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAChK,CAAC;QACF,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CACnG,CAAC;QACF,IAAI,WAAW;YACb,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC;QAE7D,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,GAAG,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CACP,4GAA4G,CAC7G,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,kBAAmB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;YAC3C,mEAAmE;YACnE,mEAAmE;YACnE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxE,OAAO,EAAE,QAAQ,EAAE,eAAe,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAsC;IAEtC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,wBAAwB,CAAC;QAC5C,mEAAmE;QACnE,IAAI,MAAM,GAAgD,kBAAkB,CAAC;QAC7E,IAAI,QAAQ,GAAG,UAAU,CAAC;QAE1B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzC,MAAM,GAAG,UAAU,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACpB,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;oBAC5B,MAAM,GAAG,SAAS,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,wEAAwE;oBACxE,QAAQ,GAAG,UAAU,CAAC;oBACtB,MAAM,GAAG,kBAAkB,CAAC;gBAC9B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,wEAAwE;gBACxE,QAAQ,GAAG,UAAU,CAAC;gBACtB,MAAM,GAAG,kBAAkB,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,GAAG,aAAa,MAAM,CAAC;QAEnC,MAAM,KAAK,GAAG;YACZ,+DAA+D;YAC/D,aAAa;YACb,QAAQ,GAAG,EAAE;YACb,wDAAwD;YACxD,+EAA+E;YAC/E,mFAAmF;SACpF,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EACxD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QAClD,IAAI,MAAM,KAAK,kBAAkB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACjD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,mHAAmH,CACpH,CACF,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,qHAAqH,CACtH,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,6CAA8C,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,IAA+G;IAE/G,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEvH,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,CACxD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,SAAS,EACT,EAAE,eAAe,EAAE,KAAK,EAAE,CAC3B,CAAC;QAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,0EAA0E;QAC1E,wEAAwE;QACxE,MAAM,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,YAAY,GAAG,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAEvE,MAAM,aAAa,GAAyH;YAC1I,OAAO,EAAE;gBACP,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE;oBACN,gBAAgB,EAAE,OAAO;oBACzB,KAAK,EAAE,GAAG;oBACV,WAAW,EAAE,SAAS;oBACtB,SAAS,EAAE,GAAG,QAAQ,eAAe,YAAY,CAAC,OAAO,GAAG;iBAC7D;gBACD,KAAK,EAAE;oBACL,wDAAwD;oBACxD,kDAAkD;oBAClD,wFAAwF,YAAY,CAAC,OAAO,SAAS;iBACtH;aACF;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,mCAAmC;gBACzC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE;oBACN,gBAAgB,EAAE,uBAAuB;oBACzC,KAAK,EAAE,4BAA4B;oBACnC,WAAW,EAAE,OAAO;oBACpB,SAAS,EAAE,4BAA4B;iBACxC;gBACD,KAAK,EAAE;oBACL,wDAAwD;oBACxD,qDAAqD;oBACrD,+EAA+E;iBAChF;aACF;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,4BAA4B;gBAClC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE;oBACN,aAAa,EAAE,sBAAsB;oBACrC,gBAAgB,EAAE,qBAAqB;oBACvC,KAAK,EAAE,GAAG;oBACV,cAAc,EAAE,6BAA6B,QAAQ,KAAK;oBAC1D,qBAAqB,EAAE,IAAI;oBAC3B,SAAS,EAAE,MAAM;iBAClB;gBACD,KAAK,EAAE;oBACL,8EAA8E,QAAQ,2BAA2B,YAAY,CAAC,OAAO,SAAS;oBAC9I,iDAAiD;oBACjD,8CAA8C;iBAC/C;aACF;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,mBAAmB;gBACzB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE;oBACN,aAAa,EAAE,oBAAoB;oBACnC,sBAAsB,EAAE,GAAG;oBAC3B,wCAAwC,EAAE,iBAAiB,WAAW,GAAG;iBAC1E;gBACD,KAAK,EAAE;oBACL,6DAA6D;oBAC7D,+DAA+D;iBAChE;aACF;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,kDAAkD;gBACxD,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE;oBACN,aAAa,EAAE,0DAA0D;oBACzE,oBAAoB,EAAE,MAAM;oBAC5B,mBAAmB,EAAE,GAAG;oBACxB,qCAAqC,EAAE,iBAAiB,WAAW,GAAG;iBACvE;gBACD,KAAK,EAAE;oBACL,sDAAsD;oBACtD,2EAA2E;oBAC3E,oDAAoD;iBACrD;aACF;YACD,gBAAgB,EAAE;gBAChB,IAAI,EAAE,+BAA+B;gBACrC,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE;oBACN,aAAa,EAAE,yEAAyE;oBACxF,0BAA0B,EAAE,KAAK;oBACjC,uBAAuB,EAAE,iBAAiB,GAAG,0CAA0C;oBACvF,iCAAiC,EAAE,UAAU,QAAQ,sCAAsC,YAAY,CAAC,QAAQ,GAAG;iBACpH;gBACD,KAAK,EAAE;oBACL,iEAAiE;oBACjE,kDAAkD;oBAClD,yEAAyE;iBAC1E;aACF;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,+BAA+B;gBACrC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE;oBACN,SAAS,EAAE,UAAU,YAAY,CAAC,OAAO,6CAA6C,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,uCAAuC,WAAW,iBAAiB;iBACvN;gBACD,KAAK,EAAE;oBACL,sDAAsD,WAAW,kEAAkE,YAAY,CAAC,OAAO,EAAE;oBACzJ,wCAAwC;iBACzC;aACF;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,2BAA2B;gBACjC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE;oBACN,KAAK,EAAE,GAAG;oBACV,SAAS,EAAE,yBAAyB,QAAQ,EAAE;iBAC/C;gBACD,KAAK,EAAE;oBACL,oEAAoE;oBACpE,wDAAwD;iBACzD;aACF;SACF,CAAC;QAEF,MAAM,YAAY,GAAG,aAAa,CAAC,gBAAgB,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC;QAE9E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACzJ,OAAO;QACT,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,kBAAkB,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QACzE,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;IAE/F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,6BAA8B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAsB;IACpD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC9D,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC/E,MAAM,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAC;IAClE,MAAM,MAAM,GAAG,OAAO,IAAI,GAAG,EAAE,MAAM,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,mEAAmE;IACnE,MAAM,YAAY,CAAC;QACjB,GAAG;QACH,MAAM;QACN,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;KACjE,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAuB;IACxD,MAAM,EAAE,yBAAyB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACjF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,GAAG;QACN,CAAC,CAAC,8FAA8F;QAChG,CAAC,CAAC,uHAAuH,CAC5H,CAAC;AACJ,CAAC"}
@@ -6,27 +6,57 @@
6
6
  * synap open document <id>
7
7
  * synap open <id> ← resolves type automatically
8
8
  *
9
- * Sends a synap:// deep link to the Electron browser app, which opens the
10
- * entity, view, proposal, cell, or document in the UI. The bare-ID form calls
11
- * GET /api/hub/resolve/:id to determine the type before dispatching.
12
- *
13
- * Works from any terminal — the OS routes the URL to the registered synap://
14
- * protocol handler. Requires the Synap desktop app to be running.
9
+ * Sends a synap:// deep link to the Electron browser app. The OS routes the
10
+ * URL to the registered handler. On macOS we target the installed Synap.app
11
+ * by bundle id / path so leftover electron-vite (`com.github.electron`)
12
+ * cannot steal the click.
13
+ */
14
+ /**
15
+ * Object kind, as a free string. The browser's `object-nav.ts` is the ONE
16
+ * route table for what's openable (21 kinds and growing) — the CLI does not
17
+ * duplicate it. An unroutable kind still opens the app; `objectNavTarget`
18
+ * decides there and returns `null` silently, so this command always prints
19
+ * the emitted link so the user can see what was sent.
15
20
  */
16
- export type OpenKind = "entity" | "view" | "cell" | "document" | "proposal";
21
+ export type OpenKind = string;
17
22
  export interface OpenOpts {
18
23
  kind: OpenKind;
19
24
  id: string;
25
+ /** Address parameters the kind needs to be resolvable (a run's flowType). */
26
+ params?: Record<string, string>;
20
27
  }
21
28
  export interface ResolveResult {
22
- type: "proposal" | "entity" | "view" | "document" | "unknown";
29
+ /**
30
+ * A browser-routable label, or "unknown". FREE STRING on purpose: the pod's
31
+ * `/resolve/:id` projects onto `object-nav.ts`'s route table (~21 kinds) and
32
+ * pins that with a tripwire. A hand-written union here was a second, smaller
33
+ * table — it listed four kinds, so every capability-substrate object the pod
34
+ * could resolve was still unopenable on this side.
35
+ */
36
+ type: string;
37
+ /** The id to OPEN — not always the id queried (a correlationId resolves to
38
+ * the proposal/skill row it belongs to, and THAT is what opens). */
23
39
  id: string;
24
40
  displayName: string | null;
25
41
  workspaceId: string | null;
26
42
  profileSlug?: string | null;
43
+ /** False when the thing resolved but has no browser surface at all. */
44
+ openable?: boolean;
45
+ /** Address params the deep link must carry (only runs use one today). */
46
+ params?: Record<string, string>;
27
47
  }
48
+ /** Lock-step with browser/electron-builder.yml `appId`. */
49
+ export declare const DESKTOP_BUNDLE_ID = "live.synap.browser";
50
+ export declare function desktopAppPaths(home?: string): string[];
51
+ export declare function buildDeepLink(kind: OpenKind, id: string, params?: Record<string, string>): string;
52
+ /**
53
+ * Ordered `open` argv lists for macOS. Prefer the installed .app so we do
54
+ * not depend on Launch Services still pointing at electron-vite.
55
+ */
56
+ export declare function darwinOpenArgvCandidates(url: string, exists?: (path: string) => boolean): string[][];
57
+ export declare function openUrl(url: string): void;
28
58
  export declare function openInBrowser(opts: OpenOpts): Promise<void>;
29
59
  /**
30
- * Resolve a bare ID then open in browser.
60
+ * Resolve a bare ID then open in the desktop app.
31
61
  */
32
62
  export declare function resolveAndOpen(id: string): Promise<void>;
@@ -6,33 +6,67 @@
6
6
  * synap open document <id>
7
7
  * synap open <id> ← resolves type automatically
8
8
  *
9
- * Sends a synap:// deep link to the Electron browser app, which opens the
10
- * entity, view, proposal, cell, or document in the UI. The bare-ID form calls
11
- * GET /api/hub/resolve/:id to determine the type before dispatching.
12
- *
13
- * Works from any terminal — the OS routes the URL to the registered synap://
14
- * protocol handler. Requires the Synap desktop app to be running.
9
+ * Sends a synap:// deep link to the Electron browser app. The OS routes the
10
+ * URL to the registered handler. On macOS we target the installed Synap.app
11
+ * by bundle id / path so leftover electron-vite (`com.github.electron`)
12
+ * cannot steal the click.
15
13
  */
16
- import { execSync } from "child_process";
14
+ import { execFileSync } from "child_process";
15
+ import { existsSync } from "fs";
16
+ import { homedir } from "os";
17
+ import { join } from "path";
18
+ import { openAppUrl } from "@synap-core/hub-rest-client";
17
19
  import { resolveHubConfig } from "../lib/hub-client.js";
18
20
  import { log } from "../utils/logger.js";
19
- function buildDeepLink(kind, id) {
20
- return `synap://open/${kind}/${encodeURIComponent(id)}`;
21
+ /** Lock-step with browser/electron-builder.yml `appId`. */
22
+ export const DESKTOP_BUNDLE_ID = "live.synap.browser";
23
+ export function desktopAppPaths(home = homedir()) {
24
+ return [
25
+ "/Applications/Synap.app",
26
+ join(home, "Applications", "Synap.app"),
27
+ ];
28
+ }
29
+ export function buildDeepLink(kind, id, params) {
30
+ return openAppUrl(kind, id, params);
31
+ }
32
+ /**
33
+ * Ordered `open` argv lists for macOS. Prefer the installed .app so we do
34
+ * not depend on Launch Services still pointing at electron-vite.
35
+ */
36
+ export function darwinOpenArgvCandidates(url, exists = existsSync) {
37
+ const candidates = [];
38
+ const installed = desktopAppPaths().find(exists);
39
+ if (installed)
40
+ candidates.push(["-a", installed, url]);
41
+ candidates.push(["-b", DESKTOP_BUNDLE_ID, url]);
42
+ candidates.push([url]);
43
+ return candidates;
21
44
  }
22
- function openUrl(url) {
45
+ export function openUrl(url) {
23
46
  const platform = process.platform;
24
47
  if (platform === "darwin") {
25
- execSync(`open "${url}"`);
26
- }
27
- else if (platform === "linux") {
28
- execSync(`xdg-open "${url}"`);
48
+ let lastErr;
49
+ for (const args of darwinOpenArgvCandidates(url)) {
50
+ try {
51
+ execFileSync("open", args, { stdio: "pipe" });
52
+ return;
53
+ }
54
+ catch (e) {
55
+ lastErr = e;
56
+ }
57
+ }
58
+ throw lastErr instanceof Error ? lastErr : new Error("open failed");
29
59
  }
30
- else if (platform === "win32") {
31
- execSync(`start "" "${url}"`);
60
+ if (platform === "linux") {
61
+ execFileSync("xdg-open", [url], { stdio: "pipe" });
62
+ return;
32
63
  }
33
- else {
34
- throw new Error(`Unsupported platform: ${platform}`);
64
+ if (platform === "win32") {
65
+ // argv only: `start "" "<url>"` went through cmd.exe, where `&` in a link runs a command.
66
+ execFileSync("rundll32", ["url.dll,FileProtocolHandler", url], { stdio: "pipe" });
67
+ return;
35
68
  }
69
+ throw new Error(`Unsupported platform: ${platform}`);
36
70
  }
37
71
  /**
38
72
  * Resolve a bare ID by calling the pod's /resolve endpoint.
@@ -51,22 +85,26 @@ async function resolveId(id) {
51
85
  return res.json();
52
86
  }
53
87
  export async function openInBrowser(opts) {
54
- const url = buildDeepLink(opts.kind, opts.id);
88
+ const url = buildDeepLink(opts.kind, opts.id, opts.params);
55
89
  try {
56
90
  openUrl(url);
57
- log.success(`Opened ${opts.kind} in browser: ${opts.id.slice(0, 8)}…`);
91
+ log.success(`Opened ${opts.kind} in the Synap app: ${opts.id.slice(0, 8)}…`);
58
92
  log.dim(` (${url})`);
59
93
  }
60
94
  catch (e) {
61
- log.error(`Could not open browser: ${e.message}\n` +
62
- ` Make sure the Synap desktop app is running.`);
95
+ log.error(`Could not open the Synap desktop app: ${e.message}\n` +
96
+ ` Install Synap.app (or run the desktop app once) so it can claim synap://.`);
63
97
  process.exit(1);
64
98
  }
65
99
  }
66
100
  /**
67
- * Resolve a bare ID then open in browser.
101
+ * Resolve a bare ID then open in the desktop app.
68
102
  */
69
103
  export async function resolveAndOpen(id) {
104
+ if (id.startsWith("generated:")) {
105
+ await openInBrowser({ kind: "cell", id });
106
+ return;
107
+ }
70
108
  try {
71
109
  const resolved = await resolveId(id);
72
110
  if (resolved.type === "unknown") {
@@ -74,11 +112,28 @@ export async function resolveAndOpen(id) {
74
112
  return;
75
113
  }
76
114
  log.info(`Resolved: ${resolved.type} — ${resolved.displayName ?? id.slice(0, 8)}`);
77
- await openInBrowser({ kind: resolved.type, id });
115
+ // RESOLVED BUT NOT OPENABLE. Some things the pod can identify have no
116
+ // browser surface at all (an external send is a correlationId-keyed audit
117
+ // event: no row, no page). Say what it is and stop — minting
118
+ // `synap://open/<kind>/<id>` for a kind the route table has no arm for
119
+ // opens the app onto nothing, which is worse than an honest refusal.
120
+ if (resolved.openable === false) {
121
+ log.warn(`A ${resolved.type} has no page in the Synap app — nothing to open.\n` +
122
+ ` Inspect it instead: synap diagnose ${id}`);
123
+ return;
124
+ }
125
+ // `resolved.id`, not `id`: a correlationId handed back by a capability run
126
+ // resolves to the proposal (or skill) row it belongs to, and that ROW id is
127
+ // what the deep link must carry. For every direct row-id hit they are equal.
128
+ await openInBrowser({
129
+ kind: resolved.type,
130
+ id: resolved.id ?? id,
131
+ ...(resolved.params ? { params: resolved.params } : {}),
132
+ });
78
133
  }
79
134
  catch (e) {
80
135
  log.error(`Could not resolve/open: ${e.message}\n` +
81
- ` Make sure the Synap desktop app is running and your pod is reachable.`);
136
+ ` Make sure the Synap desktop app is installed and your pod is reachable.`);
82
137
  process.exit(1);
83
138
  }
84
139
  }