@synap-core/cli 1.8.0 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/dist/commands/agent-chat.d.ts +47 -0
  2. package/dist/commands/agent-chat.js +250 -0
  3. package/dist/commands/agent-chat.js.map +1 -0
  4. package/dist/commands/agent-run.js +3 -4
  5. package/dist/commands/agent-run.js.map +1 -1
  6. package/dist/commands/agents.js +85 -46
  7. package/dist/commands/agents.js.map +1 -1
  8. package/dist/commands/automation.js +2 -1
  9. package/dist/commands/automation.js.map +1 -1
  10. package/dist/commands/bridge-setup.d.ts +66 -0
  11. package/dist/commands/bridge-setup.js +1112 -0
  12. package/dist/commands/bridge-setup.js.map +1 -0
  13. package/dist/commands/cap-connections.d.ts +28 -0
  14. package/dist/commands/cap-connections.js +224 -0
  15. package/dist/commands/cap-connections.js.map +1 -0
  16. package/dist/commands/capability.d.ts +89 -0
  17. package/dist/commands/capability.js +1594 -0
  18. package/dist/commands/capability.js.map +1 -0
  19. package/dist/commands/centrality.d.ts +20 -0
  20. package/dist/commands/centrality.js +95 -0
  21. package/dist/commands/centrality.js.map +1 -0
  22. package/dist/commands/connect.d.ts +2 -0
  23. package/dist/commands/connect.js +16 -35
  24. package/dist/commands/connect.js.map +1 -1
  25. package/dist/commands/context.js +6 -7
  26. package/dist/commands/context.js.map +1 -1
  27. package/dist/commands/data-extra.d.ts +1 -0
  28. package/dist/commands/data-extra.js +41 -14
  29. package/dist/commands/data-extra.js.map +1 -1
  30. package/dist/commands/data.d.ts +4 -4
  31. package/dist/commands/data.js +254 -187
  32. package/dist/commands/data.js.map +1 -1
  33. package/dist/commands/diagnose.d.ts +20 -0
  34. package/dist/commands/diagnose.js +186 -0
  35. package/dist/commands/diagnose.js.map +1 -0
  36. package/dist/commands/digest.d.ts +17 -0
  37. package/dist/commands/digest.js +122 -0
  38. package/dist/commands/digest.js.map +1 -0
  39. package/dist/commands/discover.d.ts +2 -0
  40. package/dist/commands/discover.js +25 -8
  41. package/dist/commands/discover.js.map +1 -1
  42. package/dist/commands/doc.d.ts +14 -0
  43. package/dist/commands/doc.js +61 -4
  44. package/dist/commands/doc.js.map +1 -1
  45. package/dist/commands/doctor.d.ts +21 -0
  46. package/dist/commands/doctor.js +189 -0
  47. package/dist/commands/doctor.js.map +1 -0
  48. package/dist/commands/events.js +5 -2
  49. package/dist/commands/events.js.map +1 -1
  50. package/dist/commands/explain.d.ts +1 -1
  51. package/dist/commands/explain.js +18 -15
  52. package/dist/commands/explain.js.map +1 -1
  53. package/dist/commands/facet.d.ts +29 -0
  54. package/dist/commands/facet.js +113 -0
  55. package/dist/commands/facet.js.map +1 -0
  56. package/dist/commands/graph.js +7 -4
  57. package/dist/commands/graph.js.map +1 -1
  58. package/dist/commands/import.d.ts +38 -0
  59. package/dist/commands/import.js +471 -0
  60. package/dist/commands/import.js.map +1 -0
  61. package/dist/commands/init.js +35 -16
  62. package/dist/commands/init.js.map +1 -1
  63. package/dist/commands/keys.js +3 -4
  64. package/dist/commands/keys.js.map +1 -1
  65. package/dist/commands/knowledge.d.ts +8 -0
  66. package/dist/commands/knowledge.js +308 -33
  67. package/dist/commands/knowledge.js.map +1 -1
  68. package/dist/commands/launch.d.ts +50 -0
  69. package/dist/commands/launch.js +790 -0
  70. package/dist/commands/launch.js.map +1 -0
  71. package/dist/commands/lens.d.ts +45 -0
  72. package/dist/commands/lens.js +386 -0
  73. package/dist/commands/lens.js.map +1 -0
  74. package/dist/commands/market-authoring.d.ts +45 -0
  75. package/dist/commands/market-authoring.js +225 -0
  76. package/dist/commands/market-authoring.js.map +1 -0
  77. package/dist/commands/market.d.ts +224 -0
  78. package/dist/commands/market.js +1643 -0
  79. package/dist/commands/market.js.map +1 -0
  80. package/dist/commands/mcp.d.ts +64 -0
  81. package/dist/commands/mcp.js +265 -0
  82. package/dist/commands/mcp.js.map +1 -0
  83. package/dist/commands/observe.js +14 -11
  84. package/dist/commands/observe.js.map +1 -1
  85. package/dist/commands/open.d.ts +21 -4
  86. package/dist/commands/open.js +45 -4
  87. package/dist/commands/open.js.map +1 -1
  88. package/dist/commands/pod.d.ts +100 -0
  89. package/dist/commands/pod.js +359 -0
  90. package/dist/commands/pod.js.map +1 -0
  91. package/dist/commands/pods.d.ts +15 -0
  92. package/dist/commands/pods.js +233 -17
  93. package/dist/commands/pods.js.map +1 -1
  94. package/dist/commands/proposals-actions.js +43 -3
  95. package/dist/commands/proposals-actions.js.map +1 -1
  96. package/dist/commands/purge.d.ts +23 -0
  97. package/dist/commands/purge.js +148 -0
  98. package/dist/commands/purge.js.map +1 -0
  99. package/dist/commands/raycast.d.ts +15 -0
  100. package/dist/commands/raycast.js +153 -0
  101. package/dist/commands/raycast.js.map +1 -0
  102. package/dist/commands/sessions.js +47 -22
  103. package/dist/commands/sessions.js.map +1 -1
  104. package/dist/commands/skill-manage.d.ts +21 -0
  105. package/dist/commands/skill-manage.js +195 -0
  106. package/dist/commands/skill-manage.js.map +1 -0
  107. package/dist/commands/skills-commands.js +2 -1
  108. package/dist/commands/skills-commands.js.map +1 -1
  109. package/dist/commands/skills.js +7 -4
  110. package/dist/commands/skills.js.map +1 -1
  111. package/dist/commands/status.d.ts +3 -1
  112. package/dist/commands/status.js +166 -14
  113. package/dist/commands/status.js.map +1 -1
  114. package/dist/commands/statusline.d.ts +24 -0
  115. package/dist/commands/statusline.js +450 -0
  116. package/dist/commands/statusline.js.map +1 -0
  117. package/dist/commands/subscribe.js +2 -2
  118. package/dist/commands/subscribe.js.map +1 -1
  119. package/dist/commands/template.d.ts +42 -0
  120. package/dist/commands/template.js +191 -0
  121. package/dist/commands/template.js.map +1 -0
  122. package/dist/commands/tools.d.ts +30 -0
  123. package/dist/commands/tools.js +315 -0
  124. package/dist/commands/tools.js.map +1 -0
  125. package/dist/commands/upload.d.ts +30 -0
  126. package/dist/commands/upload.js +155 -0
  127. package/dist/commands/upload.js.map +1 -0
  128. package/dist/commands/versions.d.ts +27 -0
  129. package/dist/commands/versions.js +277 -0
  130. package/dist/commands/versions.js.map +1 -0
  131. package/dist/commands/view.js +3 -2
  132. package/dist/commands/view.js.map +1 -1
  133. package/dist/commands/whoami.d.ts +21 -0
  134. package/dist/commands/whoami.js +129 -0
  135. package/dist/commands/whoami.js.map +1 -0
  136. package/dist/index.js +894 -60
  137. package/dist/index.js.map +1 -1
  138. package/dist/lib/approval-poll.d.ts +42 -0
  139. package/dist/lib/approval-poll.js +52 -0
  140. package/dist/lib/approval-poll.js.map +1 -0
  141. package/dist/lib/auth.d.ts +29 -6
  142. package/dist/lib/auth.js +105 -94
  143. package/dist/lib/auth.js.map +1 -1
  144. package/dist/lib/bundle-version.d.ts +11 -0
  145. package/dist/lib/bundle-version.js +33 -0
  146. package/dist/lib/bundle-version.js.map +1 -0
  147. package/dist/lib/capture-lane.d.ts +30 -12
  148. package/dist/lib/capture-lane.js +73 -14
  149. package/dist/lib/capture-lane.js.map +1 -1
  150. package/dist/lib/capture-structure.d.ts +123 -0
  151. package/dist/lib/capture-structure.js +57 -0
  152. package/dist/lib/capture-structure.js.map +1 -0
  153. package/dist/lib/cp-packages.d.ts +177 -0
  154. package/dist/lib/cp-packages.js +389 -0
  155. package/dist/lib/cp-packages.js.map +1 -0
  156. package/dist/lib/describe-lens.d.ts +46 -0
  157. package/dist/lib/describe-lens.js +33 -0
  158. package/dist/lib/describe-lens.js.map +1 -0
  159. package/dist/lib/hub-client.d.ts +91 -1
  160. package/dist/lib/hub-client.js +565 -22
  161. package/dist/lib/hub-client.js.map +1 -1
  162. package/dist/lib/id.d.ts +23 -0
  163. package/dist/lib/id.js +35 -0
  164. package/dist/lib/id.js.map +1 -0
  165. package/dist/lib/installed.d.ts +51 -0
  166. package/dist/lib/installed.js +70 -0
  167. package/dist/lib/installed.js.map +1 -0
  168. package/dist/lib/next-steps.d.ts +61 -0
  169. package/dist/lib/next-steps.js +146 -0
  170. package/dist/lib/next-steps.js.map +1 -0
  171. package/dist/lib/pod.d.ts +144 -22
  172. package/dist/lib/pod.js +302 -64
  173. package/dist/lib/pod.js.map +1 -1
  174. package/dist/lib/project-ref.d.ts +95 -0
  175. package/dist/lib/project-ref.js +144 -0
  176. package/dist/lib/project-ref.js.map +1 -0
  177. package/dist/lib/project.d.ts +35 -0
  178. package/dist/lib/project.js +39 -0
  179. package/dist/lib/project.js.map +1 -0
  180. package/dist/lib/session-lens.d.ts +33 -0
  181. package/dist/lib/session-lens.js +76 -0
  182. package/dist/lib/session-lens.js.map +1 -0
  183. package/dist/lib/skill-import.d.ts +40 -0
  184. package/dist/lib/skill-import.js +203 -0
  185. package/dist/lib/skill-import.js.map +1 -0
  186. package/dist/lib/skills-installer.d.ts +17 -6
  187. package/dist/lib/skills-installer.js +133 -19
  188. package/dist/lib/skills-installer.js.map +1 -1
  189. package/dist/lib/suite.d.ts +28 -0
  190. package/dist/lib/suite.js +29 -0
  191. package/dist/lib/suite.js.map +1 -0
  192. package/dist/lib/superwhisper-import.d.ts +40 -0
  193. package/dist/lib/superwhisper-import.js +389 -0
  194. package/dist/lib/superwhisper-import.js.map +1 -0
  195. package/dist/lib/targets.d.ts +49 -1
  196. package/dist/lib/targets.js +420 -288
  197. package/dist/lib/targets.js.map +1 -1
  198. package/dist/lib/template-file.d.ts +74 -0
  199. package/dist/lib/template-file.js +140 -0
  200. package/dist/lib/template-file.js.map +1 -0
  201. package/dist/lib/unwrapList.d.ts +1 -0
  202. package/dist/lib/unwrapList.js +20 -0
  203. package/dist/lib/unwrapList.js.map +1 -0
  204. package/dist/utils/logger.d.ts +2 -0
  205. package/dist/utils/logger.js +10 -2
  206. package/dist/utils/logger.js.map +1 -1
  207. package/node_modules/@synap/hub-rest-client/dist/index.cjs +414 -34
  208. package/node_modules/@synap/hub-rest-client/dist/index.d.cts +762 -22
  209. package/node_modules/@synap/hub-rest-client/dist/index.d.ts +762 -22
  210. package/node_modules/@synap/hub-rest-client/dist/index.js +414 -34
  211. package/node_modules/@synap/hub-rest-client/package.json +1 -1
  212. package/node_modules/@synap/hub-rest-client/src/client.ts +525 -37
  213. package/node_modules/@synap/hub-rest-client/src/index.ts +42 -0
  214. package/node_modules/@synap/hub-rest-client/src/setup.ts +57 -1
  215. package/node_modules/@synap/hub-rest-client/src/types.ts +697 -37
  216. package/package.json +11 -5
  217. package/skills/agent-os/SKILL.md +218 -0
  218. package/skills/manifest.json +5 -0
  219. package/skills/onboard/SKILL.md +193 -0
  220. package/skills/synap/SKILL.md +1284 -58
  221. package/skills/synap/_order.txt +37 -0
  222. package/skills/synap/_skill.yaml +24 -0
  223. package/skills/synap/authentication.md +10 -0
  224. package/skills/synap/automations.md +264 -0
  225. package/skills/synap/capabilities.md +107 -0
  226. package/skills/synap/capture.md +50 -142
  227. package/skills/synap/cli-operations.md +107 -0
  228. package/skills/synap/common-mistakes.md +13 -0
  229. package/skills/synap/content-os.md +83 -0
  230. package/skills/synap/creative-loop.md +43 -0
  231. package/skills/synap/crm.md +117 -0
  232. package/skills/synap/diagnostics.md +35 -0
  233. package/skills/synap/digesting-a-channel.md +63 -0
  234. package/skills/synap/document-embeds.md +123 -0
  235. package/skills/synap/escalation-ladder.md +71 -0
  236. package/skills/synap/focus-sessions.md +47 -0
  237. package/skills/synap/governance-rules.md +64 -0
  238. package/skills/synap/governance.md +6 -6
  239. package/skills/synap/graph-gardening.md +21 -0
  240. package/skills/synap/inline-patterns.md +38 -0
  241. package/skills/synap/lenses.md +38 -0
  242. package/skills/synap/linking-principle.md +39 -0
  243. package/skills/synap/linking.md +1 -0
  244. package/skills/synap/mental-model.md +45 -0
  245. package/skills/synap/more.md +7 -0
  246. package/skills/synap/multi-entity-capture.md +12 -0
  247. package/skills/synap/next-action.md +37 -0
  248. package/skills/synap/north-star.md +17 -0
  249. package/skills/synap/operating-mode-rules.md +45 -0
  250. package/skills/synap/operating-mode.md +9 -0
  251. package/skills/synap/quick-reference.md +67 -0
  252. package/skills/synap/reading.md +43 -0
  253. package/skills/synap/recap.md +21 -0
  254. package/skills/synap/reflexes.md +46 -0
  255. package/skills/synap/response-style.md +21 -0
  256. package/skills/synap/scope.md +13 -0
  257. package/skills/synap/showing.md +17 -0
  258. package/skills/synap/user-model.md +25 -0
  259. package/skills/synap/viewframe-cells.md +290 -0
  260. package/skills/synap/work-flow.md +113 -0
  261. package/skills/synap/worked-examples.md +74 -0
  262. package/skills/synap/workspace-design.md +45 -0
  263. package/skills/synap/workspace-edges.md +49 -0
  264. package/skills/synap/writes.md +213 -0
  265. package/skills/synap-app/SKILL.md +319 -0
  266. package/skills/synap-app/_order.txt +5 -0
  267. package/skills/synap-app/_skill.yaml +20 -0
  268. package/skills/synap-app/creating-the-base-app.md +64 -0
  269. package/skills/synap-app/governance.md +42 -0
  270. package/skills/synap-app/install-commands.md +55 -0
  271. package/skills/synap-app/overview.md +50 -0
  272. package/skills/synap-app/using-the-sdk.md +73 -0
  273. package/skills/synap-market/SKILL.md +335 -0
  274. package/skills/synap-market/_order.txt +5 -0
  275. package/skills/synap-market/_skill.yaml +24 -0
  276. package/skills/synap-market/author-and-publish.md +75 -0
  277. package/skills/synap-market/discover-and-fetch.md +59 -0
  278. package/skills/synap-market/governance-and-catalog.md +56 -0
  279. package/skills/synap-market/install.md +55 -0
  280. package/skills/synap-market/overview.md +51 -0
  281. package/skills/synap-schema/SKILL.md +97 -6
  282. package/skills/synap-schema/_order.txt +13 -0
  283. package/skills/synap-schema/_skill.yaml +22 -0
  284. package/skills/synap-schema/before-you-touch.md +14 -0
  285. package/skills/synap-schema/common-mistakes.md +9 -0
  286. package/skills/synap-schema/creating-profiles.md +17 -0
  287. package/skills/synap-schema/discover-profiles.md +24 -0
  288. package/skills/synap-schema/entity-scope.md +8 -0
  289. package/skills/synap-schema/extend-vs-create.md +31 -0
  290. package/skills/synap-schema/more.md +6 -0
  291. package/skills/synap-schema/overlay-properties.md +22 -0
  292. package/skills/synap-schema/profiles.md +3 -0
  293. package/skills/synap-schema/property-defs.md +29 -0
  294. package/skills/synap-schema/read-before-write.md +50 -0
  295. package/skills/synap-schema/relations.md +18 -0
  296. package/skills/synap-schema/worked-example.md +30 -0
  297. package/skills/synap-ui/SKILL.md +26 -2
  298. package/skills/synap-ui/_order.txt +13 -0
  299. package/skills/synap-ui/_skill.yaml +23 -0
  300. package/skills/synap-ui/ai-companion.md +27 -0
  301. package/skills/synap-ui/arranging-bento.md +8 -0
  302. package/skills/synap-ui/before-you-build.md +20 -0
  303. package/skills/synap-ui/bento-layouts.md +35 -0
  304. package/skills/synap-ui/common-mistakes.md +10 -0
  305. package/skills/synap-ui/creating-views.md +26 -0
  306. package/skills/synap-ui/four-builds.md +24 -0
  307. package/skills/synap-ui/more.md +7 -0
  308. package/skills/synap-ui/proposing-vs-extending.md +11 -0
  309. package/skills/synap-ui/view-list.md +24 -0
  310. package/skills/synap-ui/views.md +3 -0
  311. package/skills/synap-ui/worked-example.md +18 -0
  312. package/skills/synap-ui/workspaces.md +47 -0
  313. package/templates/automations/bookmark-enrichment.automation.json +44 -0
  314. package/templates/automations/mail-feed.automation.json +86 -0
  315. package/templates/automations/url-bookmark-capture.automation.json +70 -0
  316. package/templates/skills/README.md +21 -0
  317. package/templates/skills/authoring-automations/SKILL.md +95 -0
  318. package/templates/skills/authoring-automations/reference/node-matrix.md +49 -0
  319. package/templates/skills/authoring-capabilities/SKILL.md +93 -0
  320. package/templates/skills/authoring-capabilities/reference/template-anatomy.md +70 -0
  321. package/templates/skills/authoring-playbooks/SKILL.md +102 -0
  322. package/templates/skills/authoring-playbooks/reference/stages-contract.md +35 -0
  323. package/templates/skills/authoring-playbooks/reference/worked-example.md +64 -0
  324. package/templates/skills/bookmark-enrichment/SKILL.md +40 -0
  325. package/templates/skills/coordinating-agents/SKILL.md +32 -0
  326. package/templates/skills/coordinating-branches/SKILL.md +27 -0
  327. package/templates/skills/mapping-the-server/SKILL.md +54 -0
  328. package/templates/skills/reading-client-progress/SKILL.md +65 -0
  329. package/templates/skills/routing-to-channels/SKILL.md +54 -0
  330. package/templates/skills/stellar-scf-grants-advisor/ASSOCIATE-CHEATSHEET.md +133 -0
  331. package/templates/skills/stellar-scf-grants-advisor/ASSOCIATE-ONBOARDING-GUIDE.md +761 -0
  332. package/templates/skills/stellar-scf-grants-advisor/CLIENT-FAQ.md +181 -0
  333. package/templates/skills/stellar-scf-grants-advisor/PARTNER-HANDOVER.md +130 -0
  334. package/templates/skills/stellar-scf-grants-advisor/SKILL.md +102 -0
  335. package/templates/skills/stellar-scf-grants-advisor/examples/README.md +43 -0
  336. package/templates/skills/stellar-scf-grants-advisor/examples/chat-summary-templates.md +158 -0
  337. package/templates/skills/stellar-scf-grants-advisor/examples/corpus-comparable-rows.md +136 -0
  338. package/templates/skills/stellar-scf-grants-advisor/examples/q10-team-rewrites.md +109 -0
  339. package/templates/skills/stellar-scf-grants-advisor/examples/q2-description-rewrites.md +88 -0
  340. package/templates/skills/stellar-scf-grants-advisor/examples/q6-integration-rewrites.md +107 -0
  341. package/templates/skills/stellar-scf-grants-advisor/examples/tranche-structures.md +176 -0
  342. package/templates/skills/stellar-scf-grants-advisor/reference/01-methodology.md +96 -0
  343. package/templates/skills/stellar-scf-grants-advisor/reference/02-scoring-framework.md +199 -0
  344. package/templates/skills/stellar-scf-grants-advisor/reference/03-rejection-patterns.md +241 -0
  345. package/templates/skills/stellar-scf-grants-advisor/reference/04-winner-patterns.md +120 -0
  346. package/templates/skills/stellar-scf-grants-advisor/reference/05-comeback-patterns.md +92 -0
  347. package/templates/skills/stellar-scf-grants-advisor/reference/06-budget-benchmarks.md +125 -0
  348. package/templates/skills/stellar-scf-grants-advisor/reference/07-integration-list.md +147 -0
  349. package/templates/skills/stellar-scf-grants-advisor/reference/08-abstract-fields.md +258 -0
  350. package/templates/skills/stellar-scf-grants-advisor/reference/09-build-fields.md +259 -0
  351. package/templates/skills/stellar-scf-grants-advisor/reference/10-corpus-winners.md +135 -0
  352. package/templates/skills/stellar-scf-grants-advisor/reference/11-corpus-rejects.md +267 -0
  353. package/templates/skills/stellar-scf-grants-advisor/reference/12-client-communication.md +131 -0
  354. package/templates/skills/stellar-scf-grants-advisor/reference/13-excel-output-spec.md +199 -0
  355. package/templates/skills/stellar-scf-grants-advisor/reference/14-worked-examples.md +160 -0
  356. package/templates/skills/stellar-scf-grants-advisor/templates/abstract-review-builder.py +253 -0
  357. package/templates/skills/stellar-scf-grants-advisor/templates/build-review-builder.py +213 -0
  358. package/dist/commands/connectors.d.ts +0 -31
  359. package/dist/commands/connectors.js +0 -276
  360. package/dist/commands/connectors.js.map +0 -1
  361. package/dist/commands/finish.d.ts +0 -25
  362. package/dist/commands/finish.js +0 -274
  363. package/dist/commands/finish.js.map +0 -1
  364. package/dist/commands/openclaw.d.ts +0 -40
  365. package/dist/commands/openclaw.js +0 -1148
  366. package/dist/commands/openclaw.js.map +0 -1
  367. package/dist/commands/security-audit.d.ts +0 -12
  368. package/dist/commands/security-audit.js +0 -100
  369. package/dist/commands/security-audit.js.map +0 -1
  370. package/dist/lib/hardening.d.ts +0 -18
  371. package/dist/lib/hardening.js +0 -214
  372. package/dist/lib/hardening.js.map +0 -1
@@ -1,14 +1,20 @@
1
1
  /**
2
2
  * synap open entity <id>
3
3
  * synap open view <id>
4
+ * synap open proposal <id>
5
+ * synap open cell <typeKey>
6
+ * synap open document <id>
7
+ * synap open <id> ← resolves type automatically
4
8
  *
5
9
  * Sends a synap:// deep link to the Electron browser app, which opens the
6
- * entity or view in the UI. Works from any terminal — the OS routes the URL
7
- * to the registered synap:// protocol handler.
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.
8
12
  *
9
- * Requires the Synap desktop app to be running.
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.
10
15
  */
11
16
  import { execSync } from "child_process";
17
+ import { resolveHubConfig } from "../lib/hub-client.js";
12
18
  import { log } from "../utils/logger.js";
13
19
  function buildDeepLink(kind, id) {
14
20
  return `synap://open/${kind}/${encodeURIComponent(id)}`;
@@ -28,9 +34,25 @@ function openUrl(url) {
28
34
  throw new Error(`Unsupported platform: ${platform}`);
29
35
  }
30
36
  }
37
+ /**
38
+ * Resolve a bare ID by calling the pod's /resolve endpoint.
39
+ */
40
+ async function resolveId(id) {
41
+ const config = await resolveHubConfig();
42
+ const url = `${config.podUrl}/api/hub/resolve/${encodeURIComponent(id)}`;
43
+ const res = await fetch(url, {
44
+ headers: {
45
+ Authorization: `Bearer ${config.apiKey}`,
46
+ },
47
+ });
48
+ if (!res.ok) {
49
+ throw new Error(`Resolve failed: ${res.status} ${res.statusText}`);
50
+ }
51
+ return res.json();
52
+ }
31
53
  export async function openInBrowser(opts) {
54
+ const url = buildDeepLink(opts.kind, opts.id);
32
55
  try {
33
- const url = buildDeepLink(opts.kind, opts.id);
34
56
  openUrl(url);
35
57
  log.success(`Opened ${opts.kind} in browser: ${opts.id.slice(0, 8)}…`);
36
58
  log.dim(` (${url})`);
@@ -41,4 +63,23 @@ export async function openInBrowser(opts) {
41
63
  process.exit(1);
42
64
  }
43
65
  }
66
+ /**
67
+ * Resolve a bare ID then open in browser.
68
+ */
69
+ export async function resolveAndOpen(id) {
70
+ try {
71
+ const resolved = await resolveId(id);
72
+ if (resolved.type === "unknown") {
73
+ log.warn(`Unknown ID: "${id.slice(0, 8)}…". Nothing to open.`);
74
+ return;
75
+ }
76
+ log.info(`Resolved: ${resolved.type} — ${resolved.displayName ?? id.slice(0, 8)}`);
77
+ await openInBrowser({ kind: resolved.type, id });
78
+ }
79
+ catch (e) {
80
+ log.error(`Could not resolve/open: ${e.message}\n` +
81
+ ` Make sure the Synap desktop app is running and your pod is reachable.`);
82
+ process.exit(1);
83
+ }
84
+ }
44
85
  //# sourceMappingURL=open.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAOzC,SAAS,aAAa,CAAC,IAA6C,EAAE,EAAU;IAC9E,OAAO,gBAAgB,IAAI,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;IAC5B,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,QAAQ,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QAChC,QAAQ,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,CAAC;QACb,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACvE,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CACP,2BAA4B,CAAW,CAAC,OAAO,IAAI;YACjD,+CAA+C,CAClD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * `synap pod` — the unified pod-configuration view.
3
+ * ===================================================
4
+ *
5
+ * `market installed` shows what packages are installed; `synap pod` answers
6
+ * the bigger question — "what does my WHOLE pod look like right now?" — one
7
+ * scannable graph over workspaces (with provenance), pod-wide vs per-workspace
8
+ * capabilities/automations/playbooks, and the give/need feed links between
9
+ * workspaces. It is the read surface for `GET /api/hub/pod/config`
10
+ * (`hub-protocol/rest/pod.ts` on the backend side).
11
+ *
12
+ * `synap pod adopt <workspaceId> --template <slug>` links an orphan/ad-hoc
13
+ * workspace to a matching template so it becomes version-tracked, via
14
+ * `POST /api/hub/pod/adopt`.
15
+ *
16
+ * READ-first, ONE write door (`adopt`). Reuses rather than re-derives:
17
+ * - the composition-tree engine (`buildCompositionTrees`/`printCompositionTree`
18
+ * + `buildMarketCatalog`/`computeUpdates`) from `market.ts`, for the
19
+ * marketplace-provenance workspaces' package → template deps → workspaces
20
+ * overlay.
21
+ * - the honest-outcome verdict helpers (`classifyApplyResult`/
22
+ * `printApplyVerdict`) from `market.ts`, for `pod adopt`'s outcome.
23
+ */
24
+ export type WorkspaceProvenance = {
25
+ kind: "marketplace";
26
+ packageSlug: string;
27
+ packageVersion: string | null;
28
+ } | {
29
+ kind: "composed";
30
+ composedFrom: unknown[];
31
+ } | {
32
+ kind: "ad-hoc";
33
+ createdBy: string | null;
34
+ templateMatch?: {
35
+ slug: string;
36
+ name: string;
37
+ };
38
+ };
39
+ export interface PodConfigWorkspace {
40
+ id: string;
41
+ name: string;
42
+ subtype: string | null;
43
+ entityCount: number;
44
+ provenance: WorkspaceProvenance;
45
+ }
46
+ export type CapabilityProvenance = {
47
+ kind: "marketplace";
48
+ templateKey: string;
49
+ } | {
50
+ kind: "manual";
51
+ };
52
+ export interface PodConfigCapability {
53
+ id: string;
54
+ name: string;
55
+ workspaceId: string | null;
56
+ provenance: CapabilityProvenance;
57
+ }
58
+ export type AutomationProvenance = {
59
+ kind: "ai" | "manual" | "template";
60
+ };
61
+ export interface PodConfigAutomation {
62
+ id: string;
63
+ name: string;
64
+ workspaceId: string | null;
65
+ provenance: AutomationProvenance;
66
+ }
67
+ export type PlaybookProvenance = {
68
+ kind: "manual";
69
+ };
70
+ export interface PodConfigPlaybook {
71
+ id: string;
72
+ name: string;
73
+ workspaceId: string | null;
74
+ provenance: PlaybookProvenance;
75
+ }
76
+ export interface PodConfigFeedsLink {
77
+ from: string;
78
+ to: string;
79
+ domain: string | null;
80
+ profileSlug: string | null;
81
+ }
82
+ export interface PodConfig {
83
+ workspaces: PodConfigWorkspace[];
84
+ capabilities: PodConfigCapability[];
85
+ automations: PodConfigAutomation[];
86
+ playbooks: PodConfigPlaybook[];
87
+ feedsLinks: PodConfigFeedsLink[];
88
+ }
89
+ export declare function pod(opts: {
90
+ json?: boolean;
91
+ orphans?: boolean;
92
+ podUrl?: string;
93
+ apiKey?: string;
94
+ }): Promise<void>;
95
+ export declare function podAdopt(workspaceNameOrId: string, opts: {
96
+ template?: string;
97
+ json?: boolean;
98
+ podUrl?: string;
99
+ apiKey?: string;
100
+ }): Promise<void>;
@@ -0,0 +1,359 @@
1
+ /**
2
+ * `synap pod` — the unified pod-configuration view.
3
+ * ===================================================
4
+ *
5
+ * `market installed` shows what packages are installed; `synap pod` answers
6
+ * the bigger question — "what does my WHOLE pod look like right now?" — one
7
+ * scannable graph over workspaces (with provenance), pod-wide vs per-workspace
8
+ * capabilities/automations/playbooks, and the give/need feed links between
9
+ * workspaces. It is the read surface for `GET /api/hub/pod/config`
10
+ * (`hub-protocol/rest/pod.ts` on the backend side).
11
+ *
12
+ * `synap pod adopt <workspaceId> --template <slug>` links an orphan/ad-hoc
13
+ * workspace to a matching template so it becomes version-tracked, via
14
+ * `POST /api/hub/pod/adopt`.
15
+ *
16
+ * READ-first, ONE write door (`adopt`). Reuses rather than re-derives:
17
+ * - the composition-tree engine (`buildCompositionTrees`/`printCompositionTree`
18
+ * + `buildMarketCatalog`/`computeUpdates`) from `market.ts`, for the
19
+ * marketplace-provenance workspaces' package → template deps → workspaces
20
+ * overlay.
21
+ * - the honest-outcome verdict helpers (`classifyApplyResult`/
22
+ * `printApplyVerdict`) from `market.ts`, for `pod adopt`'s outcome.
23
+ */
24
+ import chalk from "chalk";
25
+ import { log } from "../utils/logger.js";
26
+ import { resolveHubConfig, hubGet, hubPost, renderHubError, HubError, } from "../lib/hub-client.js";
27
+ import { writeGovernance } from "../lib/capture-lane.js";
28
+ import { fetchInstalledTemplates } from "../lib/installed.js";
29
+ import { buildMarketCatalog, computeUpdates, buildCompositionTrees, printCompositionTree, } from "./market.js";
30
+ /** Coerce whatever shape a field arrives in into an array — tolerates minor DTO drift. */
31
+ function arr(v) {
32
+ return Array.isArray(v) ? v : [];
33
+ }
34
+ /** Defensive parse of the raw `/pod/config` JSON into `PodConfig` — never throws on a shifted field name, just degrades that section to empty. */
35
+ function parsePodConfig(raw) {
36
+ const r = (raw ?? {});
37
+ return {
38
+ workspaces: arr(r.workspaces),
39
+ capabilities: arr(r.capabilities),
40
+ automations: arr(r.automations),
41
+ playbooks: arr(r.playbooks),
42
+ feedsLinks: arr(r.feedsLinks),
43
+ };
44
+ }
45
+ /**
46
+ * `GET /pod/config`. Returns `null` (never throws) on a 404 — the endpoint
47
+ * not being deployed yet on this pod build is an expected, non-fatal state
48
+ * during parallel backend/CLI development; callers render an honest "not
49
+ * live on this pod yet" message instead of a stack trace.
50
+ */
51
+ async function fetchPodConfig(cfg) {
52
+ try {
53
+ const raw = await hubGet("/pod/config", {}, cfg);
54
+ return parsePodConfig(raw);
55
+ }
56
+ catch (e) {
57
+ if (e instanceof HubError && e.status === 404)
58
+ return null;
59
+ throw e;
60
+ }
61
+ }
62
+ /** An orphan is an ad-hoc workspace the backend matched to a known template. */
63
+ function isOrphan(ws) {
64
+ return ws.provenance.kind === "ad-hoc" && !!ws.provenance.templateMatch;
65
+ }
66
+ // ── Rendering helpers ────────────────────────────────────────────────────────
67
+ /** Tag for the small provenance shapes shared by capabilities/automations/playbooks. */
68
+ function provenanceTag(p) {
69
+ if (p.kind === "marketplace" && p.templateKey)
70
+ return chalk.green(`marketplace: ${p.templateKey}`);
71
+ switch (p.kind) {
72
+ case "marketplace":
73
+ return chalk.green("marketplace");
74
+ case "ai":
75
+ return chalk.magenta("ai");
76
+ case "template":
77
+ return chalk.cyan("template");
78
+ case "manual":
79
+ default:
80
+ return chalk.dim(p.kind);
81
+ }
82
+ }
83
+ /** One workspace row — `nameW` right-pads the name so provenance tags line up in a column. */
84
+ function workspaceLine(ws, nameW = 0) {
85
+ const name = chalk.bold(ws.name.padEnd(nameW));
86
+ const count = chalk.dim(`(${ws.entityCount} entities)`.padEnd(16));
87
+ const p = ws.provenance;
88
+ switch (p.kind) {
89
+ case "marketplace":
90
+ return `${name} ${count} ${chalk.green(`marketplace: ${p.packageSlug}${p.packageVersion ? "@" + p.packageVersion : ""}`)}`;
91
+ case "composed": {
92
+ const from = p.composedFrom.length ? p.composedFrom.map(String).join(", ") : "?";
93
+ return `${name} ${count} ${chalk.cyan(`composed from ${from}`)}`;
94
+ }
95
+ case "ad-hoc":
96
+ if (p.templateMatch) {
97
+ return (`${name} ${count} ` +
98
+ chalk.yellow(`⚠ orphan — matches template ${p.templateMatch.slug}`) +
99
+ "\n" +
100
+ " ".repeat(nameW + count.length + 4) +
101
+ chalk.dim(`run: synap pod adopt ${ws.id} --template ${p.templateMatch.slug}`));
102
+ }
103
+ return `${name} ${count} ${chalk.dim("ad-hoc")}`;
104
+ }
105
+ }
106
+ /** Group `{workspaceId|null}`-carrying rows into pod-wide vs per-workspace. */
107
+ function splitPodWide(rows) {
108
+ const podWide = [];
109
+ const perWorkspace = new Map();
110
+ for (const r of rows) {
111
+ if (r.workspaceId) {
112
+ (perWorkspace.get(r.workspaceId) ?? perWorkspace.set(r.workspaceId, []).get(r.workspaceId)).push(r);
113
+ }
114
+ else {
115
+ podWide.push(r);
116
+ }
117
+ }
118
+ return { podWide, perWorkspace };
119
+ }
120
+ function printGroupedSection(title, rows, nameById) {
121
+ log.heading(` ${title}`);
122
+ log.blank();
123
+ if (rows.length === 0) {
124
+ console.log(" " + chalk.dim("(none)"));
125
+ log.blank();
126
+ return;
127
+ }
128
+ const nameW = Math.max(4, ...rows.map((r) => r.name.length)) + 2;
129
+ const { podWide, perWorkspace } = splitPodWide(rows);
130
+ if (podWide.length > 0) {
131
+ console.log(" " + chalk.dim("Pod-wide"));
132
+ for (const r of podWide) {
133
+ console.log(" " + r.name.padEnd(nameW) + provenanceTag(r.provenance));
134
+ }
135
+ log.blank();
136
+ }
137
+ for (const [wsId, wsRows] of perWorkspace) {
138
+ console.log(" " + chalk.bold(nameById.get(wsId) ?? wsId));
139
+ for (const r of wsRows) {
140
+ console.log(" " + r.name.padEnd(nameW) + provenanceTag(r.provenance));
141
+ }
142
+ log.blank();
143
+ }
144
+ }
145
+ /** Render `feedsLinks` as `Foundation → provides → CRM` edges. */
146
+ function printFeedsLinks(links, nameById) {
147
+ log.heading(" Give / need links");
148
+ log.blank();
149
+ if (links.length === 0) {
150
+ console.log(" " + chalk.dim("(none)"));
151
+ log.blank();
152
+ return;
153
+ }
154
+ for (const l of links) {
155
+ const from = nameById.get(l.from) ?? l.from;
156
+ const to = nameById.get(l.to) ?? l.to;
157
+ const detail = l.domain ? ` (${l.domain})` : l.profileSlug ? ` (${l.profileSlug})` : "";
158
+ console.log(" " + chalk.bold(from) + chalk.dim(" → provides → ") + chalk.bold(to) + chalk.dim(detail));
159
+ }
160
+ log.blank();
161
+ }
162
+ // ── `synap pod` ──────────────────────────────────────────────────────────────
163
+ export async function pod(opts) {
164
+ let cfg;
165
+ try {
166
+ cfg = await resolveHubConfig(opts);
167
+ }
168
+ catch (e) {
169
+ renderHubError(e);
170
+ process.exit(1);
171
+ }
172
+ const config = await fetchPodConfig(cfg);
173
+ if (!config) {
174
+ if (opts.json) {
175
+ console.log(JSON.stringify({ error: "not-deployed", message: "GET /api/hub/pod/config returned 404" }, null, 2));
176
+ return;
177
+ }
178
+ log.warn("The unified pod-config endpoint isn't live on this pod yet (404).");
179
+ log.hint("The backend half of this feature hasn't been deployed — this command is wired and will work once it is.");
180
+ return;
181
+ }
182
+ const nameById = new Map(config.workspaces.map((w) => [w.id, w.name]));
183
+ const adHocWorkspaces = config.workspaces.filter((w) => w.provenance.kind === "ad-hoc");
184
+ if (opts.orphans) {
185
+ if (opts.json) {
186
+ console.log(JSON.stringify({ workspaces: adHocWorkspaces }, null, 2));
187
+ return;
188
+ }
189
+ if (adHocWorkspaces.length === 0) {
190
+ log.success("No orphan or ad-hoc workspaces — everything is either marketplace-linked or composed.");
191
+ return;
192
+ }
193
+ log.heading(" Orphan / ad-hoc workspaces");
194
+ log.blank();
195
+ const nameW = Math.max(4, ...adHocWorkspaces.map((w) => w.name.length)) + 2;
196
+ for (const ws of adHocWorkspaces) {
197
+ console.log(" " + workspaceLine(ws, nameW));
198
+ }
199
+ log.blank();
200
+ return;
201
+ }
202
+ if (opts.json) {
203
+ console.log(JSON.stringify(config, null, 2));
204
+ return;
205
+ }
206
+ // ── Workspaces ─────────────────────────────────────────────────────────
207
+ log.heading(" Workspaces");
208
+ log.blank();
209
+ if (config.workspaces.length === 0) {
210
+ console.log(" " + chalk.dim("(none)"));
211
+ log.blank();
212
+ }
213
+ const marketplaceWorkspaces = config.workspaces.filter((w) => w.provenance.kind === "marketplace");
214
+ const otherWorkspaces = config.workspaces.filter((w) => w.provenance.kind !== "marketplace");
215
+ // Composition-tree overlay for marketplace workspaces — reuses market.ts's
216
+ // `--tree` engine (buildMarketCatalog + computeUpdates + buildCompositionTrees)
217
+ // rather than re-deriving a second package→workspace walk.
218
+ if (marketplaceWorkspaces.length > 0) {
219
+ const nameW = Math.max(4, ...marketplaceWorkspaces.map((w) => w.name.length)) + 2;
220
+ const printFlat = () => {
221
+ marketplaceWorkspaces.forEach((ws) => console.log(" " + workspaceLine(ws, nameW)));
222
+ log.blank();
223
+ };
224
+ try {
225
+ const [installedTemplates, cat] = await Promise.all([fetchInstalledTemplates(), buildMarketCatalog()]);
226
+ if (installedTemplates.length > 0) {
227
+ const checks = computeUpdates(installedTemplates, cat);
228
+ const workspaceCountBySlug = new Map();
229
+ for (const t of installedTemplates) {
230
+ workspaceCountBySlug.set(t.slug, (workspaceCountBySlug.get(t.slug) ?? 0) + 1);
231
+ }
232
+ const seen = new Set();
233
+ const rows = checks.filter((c) => (seen.has(c.slug) ? false : (seen.add(c.slug), true)));
234
+ const { packages } = await buildCompositionTrees(rows, cat, installedTemplates, workspaceCountBySlug);
235
+ if (packages.length > 0)
236
+ packages.forEach(printCompositionTree);
237
+ else
238
+ printFlat();
239
+ }
240
+ else {
241
+ printFlat();
242
+ }
243
+ }
244
+ catch {
245
+ // Composition-tree overlay is best-effort — fall back to the flat list.
246
+ printFlat();
247
+ }
248
+ }
249
+ if (otherWorkspaces.length > 0) {
250
+ console.log(" " + chalk.dim("Composed / ad-hoc"));
251
+ const nameW = Math.max(4, ...otherWorkspaces.map((w) => w.name.length)) + 2;
252
+ for (const ws of otherWorkspaces) {
253
+ console.log(" " + workspaceLine(ws, nameW));
254
+ }
255
+ log.blank();
256
+ }
257
+ // ── Capabilities / Automations / Playbooks ────────────────────────────
258
+ printGroupedSection("Capabilities", config.capabilities, nameById);
259
+ printGroupedSection("Automations", config.automations, nameById);
260
+ printGroupedSection("Playbooks", config.playbooks, nameById);
261
+ // ── Give / need links ──────────────────────────────────────────────────
262
+ printFeedsLinks(config.feedsLinks, nameById);
263
+ const orphanCount = adHocWorkspaces.filter(isOrphan).length;
264
+ const adHocCount = adHocWorkspaces.length - orphanCount;
265
+ if (orphanCount > 0 || adHocCount > 0) {
266
+ log.dim(`${orphanCount} orphan, ${adHocCount} ad-hoc workspace${orphanCount + adHocCount === 1 ? "" : "s"} — run 'synap pod --orphans' to focus on them.`);
267
+ }
268
+ }
269
+ // ── `synap pod adopt <nameOrId> --template <slug>` ───────────────────────────
270
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
271
+ /**
272
+ * Resolve a user-supplied `<workspace>` arg to a workspace id.
273
+ *
274
+ * `adopt` is FOR orphans, so the source must include unstamped/ad-hoc
275
+ * workspaces — `fetchInstalledTemplates` (template-installed only) is the
276
+ * wrong list here. `GET /orient` already returns every workspace on the pod
277
+ * (incl. orphans) and is deployed today, so it's the resolution source; the
278
+ * newer `/pod/config` read (this file's `fetchPodConfig`) would also work
279
+ * once live but isn't guaranteed deployed yet.
280
+ *
281
+ * A UUID is passed straight through unchanged (fast path — no network call).
282
+ * Anything else is matched case-insensitively by exact name against `/orient`.
283
+ */
284
+ async function resolveWorkspaceRef(nameOrId, cfg) {
285
+ if (UUID_RE.test(nameOrId))
286
+ return nameOrId;
287
+ const res = (await hubGet("/orient", { detail: "full" }, cfg));
288
+ const workspaces = res.workspaces ?? [];
289
+ const needle = nameOrId.trim().toLowerCase();
290
+ const matches = workspaces.filter((w) => (w.name ?? "").trim().toLowerCase() === needle);
291
+ if (matches.length === 0) {
292
+ log.error(`No workspace named "${nameOrId}" on this pod. Run 'synap pod' to see them.`);
293
+ process.exit(1);
294
+ }
295
+ if (matches.length > 1) {
296
+ const candidates = matches.map((w) => `${w.id} (${w.name})`).join(", ");
297
+ log.error(`Multiple workspaces named "${nameOrId}" — use the id: ${candidates}`);
298
+ process.exit(1);
299
+ }
300
+ const match = matches[0];
301
+ log.dim(`Resolved "${nameOrId}" → ${match.id}`);
302
+ return match.id;
303
+ }
304
+ export async function podAdopt(workspaceNameOrId, opts) {
305
+ if (!opts.template) {
306
+ log.error("Missing --template <slug>.");
307
+ log.hint("List template matches: synap pod --orphans");
308
+ process.exit(1);
309
+ }
310
+ let cfg;
311
+ try {
312
+ cfg = await resolveHubConfig(opts);
313
+ }
314
+ catch (e) {
315
+ renderHubError(e);
316
+ process.exit(1);
317
+ }
318
+ const workspaceId = await resolveWorkspaceRef(workspaceNameOrId, cfg);
319
+ try {
320
+ const res = (await hubPost("/pod/adopt", { workspaceId, templateSlug: opts.template }, cfg));
321
+ if (writeGovernance(res) === "proposed") {
322
+ const proposalId = res.proposalId ? String(res.proposalId) : undefined;
323
+ if (opts.json) {
324
+ console.log(JSON.stringify({ outcome: "proposed", proposalId }, null, 2));
325
+ return;
326
+ }
327
+ log.info(`Adopting into ${opts.template} — proposed (under review, not live yet).`);
328
+ if (proposalId)
329
+ log.hint(`Approve: synap proposals approve ${proposalId}`);
330
+ return;
331
+ }
332
+ const result = res;
333
+ if (opts.json) {
334
+ console.log(JSON.stringify(result, null, 2));
335
+ return;
336
+ }
337
+ const wsName = result.workspace?.name ?? workspaceId;
338
+ if (result.outcome === "already-linked") {
339
+ log.info(`${wsName} is already linked to ${opts.template}.`);
340
+ return;
341
+ }
342
+ log.success(`Linked ${wsName} to ${opts.template} — now version-tracked.`);
343
+ if (result.workspace?.packageVersion) {
344
+ log.dim(`Stamped version ${result.workspace.packageVersion}.`);
345
+ }
346
+ log.hint(`Check for drift going forward: synap market update ${opts.template}`);
347
+ }
348
+ catch (e) {
349
+ if (e instanceof HubError && e.status === 404) {
350
+ log.warn("The pod-adopt endpoint isn't live on this pod yet (404).");
351
+ log.hint("The backend half of this feature hasn't been deployed — this command is wired and will work once it is.");
352
+ return;
353
+ }
354
+ log.error(`Adopting ${workspaceId} into ${opts.template} failed`);
355
+ renderHubError(e);
356
+ process.exit(1);
357
+ }
358
+ }
359
+ //# sourceMappingURL=pod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pod.js","sourceRoot":"","sources":["../../src/commands/pod.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare function podsAdd(name?: string, podUrlArg?: string): Promise<void
12
12
  export type { SurfaceName };
13
13
  export declare function podsUse(name: string, opts?: {
14
14
  surface?: SurfaceName;
15
+ json?: boolean;
15
16
  }): Promise<void>;
16
17
  export declare function podsSwitch(name?: string): Promise<void>;
17
18
  export declare function podsRemove(name: string): Promise<void>;
@@ -20,3 +21,17 @@ export declare function podsRemove(name: string): Promise<void>;
20
21
  * Lets users refresh a broken/expired API key without re-entering the pod URL.
21
22
  */
22
23
  export declare function podsReconnect(name?: string): Promise<void>;
24
+ /**
25
+ * synap pods update <name> [newUrl] — change a saved pod's URL in place.
26
+ *
27
+ * The safe path for a domain move (e.g. pod.team.thearchitech.xyz →
28
+ * pod.thearch.synap.live): checks the pod is reachable at the new URL, verifies
29
+ * whether the existing key still authenticates there, and ONLY offers to recreate
30
+ * the key if the pod genuinely rejects it (keys survive a domain change, so a
31
+ * re-auth is usually unnecessary). Nothing is written until both checks pass, so
32
+ * a typo or a not-yet-live domain leaves the working profile untouched.
33
+ */
34
+ export declare function podsUpdate(name: string, newUrlArg?: string, opts?: {
35
+ url?: string;
36
+ yes?: boolean;
37
+ }): Promise<void>;