@synap-core/cli 1.7.0 → 1.10.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 (371) 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.d.ts +47 -0
  5. package/dist/commands/agent-run.js +301 -0
  6. package/dist/commands/agent-run.js.map +1 -0
  7. package/dist/commands/agents.js +85 -46
  8. package/dist/commands/agents.js.map +1 -1
  9. package/dist/commands/artifact.d.ts +26 -0
  10. package/dist/commands/artifact.js +76 -0
  11. package/dist/commands/artifact.js.map +1 -0
  12. package/dist/commands/automation.d.ts +47 -0
  13. package/dist/commands/automation.js +601 -0
  14. package/dist/commands/automation.js.map +1 -0
  15. package/dist/commands/bridge-setup.d.ts +66 -0
  16. package/dist/commands/bridge-setup.js +1112 -0
  17. package/dist/commands/bridge-setup.js.map +1 -0
  18. package/dist/commands/cap-connections.d.ts +28 -0
  19. package/dist/commands/cap-connections.js +224 -0
  20. package/dist/commands/cap-connections.js.map +1 -0
  21. package/dist/commands/capability.d.ts +89 -0
  22. package/dist/commands/capability.js +1523 -0
  23. package/dist/commands/capability.js.map +1 -0
  24. package/dist/commands/cell.d.ts +55 -0
  25. package/dist/commands/cell.js +277 -0
  26. package/dist/commands/cell.js.map +1 -0
  27. package/dist/commands/centrality.d.ts +20 -0
  28. package/dist/commands/centrality.js +94 -0
  29. package/dist/commands/centrality.js.map +1 -0
  30. package/dist/commands/connect.d.ts +2 -0
  31. package/dist/commands/connect.js +25 -10
  32. package/dist/commands/connect.js.map +1 -1
  33. package/dist/commands/connections.js +0 -16
  34. package/dist/commands/connections.js.map +1 -1
  35. package/dist/commands/context.d.ts +22 -0
  36. package/dist/commands/context.js +149 -0
  37. package/dist/commands/context.js.map +1 -0
  38. package/dist/commands/data-extra.d.ts +14 -0
  39. package/dist/commands/data-extra.js +185 -0
  40. package/dist/commands/data-extra.js.map +1 -0
  41. package/dist/commands/data.d.ts +14 -10
  42. package/dist/commands/data.js +353 -192
  43. package/dist/commands/data.js.map +1 -1
  44. package/dist/commands/diagnose.d.ts +20 -0
  45. package/dist/commands/diagnose.js +143 -0
  46. package/dist/commands/diagnose.js.map +1 -0
  47. package/dist/commands/digest.d.ts +17 -0
  48. package/dist/commands/digest.js +121 -0
  49. package/dist/commands/digest.js.map +1 -0
  50. package/dist/commands/discover.d.ts +2 -0
  51. package/dist/commands/discover.js +25 -8
  52. package/dist/commands/discover.js.map +1 -1
  53. package/dist/commands/doc.d.ts +39 -0
  54. package/dist/commands/doc.js +130 -0
  55. package/dist/commands/doc.js.map +1 -0
  56. package/dist/commands/events.d.ts +26 -0
  57. package/dist/commands/events.js +69 -0
  58. package/dist/commands/events.js.map +1 -0
  59. package/dist/commands/explain.d.ts +21 -0
  60. package/dist/commands/explain.js +251 -0
  61. package/dist/commands/explain.js.map +1 -0
  62. package/dist/commands/facet.d.ts +29 -0
  63. package/dist/commands/facet.js +113 -0
  64. package/dist/commands/facet.js.map +1 -0
  65. package/dist/commands/graph.d.ts +18 -0
  66. package/dist/commands/graph.js +74 -0
  67. package/dist/commands/graph.js.map +1 -0
  68. package/dist/commands/home.d.ts +12 -0
  69. package/dist/commands/home.js +54 -0
  70. package/dist/commands/home.js.map +1 -0
  71. package/dist/commands/import.d.ts +38 -0
  72. package/dist/commands/import.js +440 -0
  73. package/dist/commands/import.js.map +1 -0
  74. package/dist/commands/init.d.ts +0 -2
  75. package/dist/commands/init.js +97 -118
  76. package/dist/commands/init.js.map +1 -1
  77. package/dist/commands/keys.d.ts +9 -0
  78. package/dist/commands/keys.js +78 -0
  79. package/dist/commands/keys.js.map +1 -0
  80. package/dist/commands/knowledge.d.ts +34 -18
  81. package/dist/commands/knowledge.js +355 -57
  82. package/dist/commands/knowledge.js.map +1 -1
  83. package/dist/commands/launch.d.ts +50 -0
  84. package/dist/commands/launch.js +790 -0
  85. package/dist/commands/launch.js.map +1 -0
  86. package/dist/commands/lens.d.ts +45 -0
  87. package/dist/commands/lens.js +386 -0
  88. package/dist/commands/lens.js.map +1 -0
  89. package/dist/commands/market.d.ts +209 -0
  90. package/dist/commands/market.js +1368 -0
  91. package/dist/commands/market.js.map +1 -0
  92. package/dist/commands/mcp.d.ts +42 -0
  93. package/dist/commands/mcp.js +184 -0
  94. package/dist/commands/mcp.js.map +1 -0
  95. package/dist/commands/observe.d.ts +9 -0
  96. package/dist/commands/observe.js +93 -0
  97. package/dist/commands/observe.js.map +1 -0
  98. package/dist/commands/open.d.ts +32 -0
  99. package/dist/commands/open.js +85 -0
  100. package/dist/commands/open.js.map +1 -0
  101. package/dist/commands/pod.d.ts +100 -0
  102. package/dist/commands/pod.js +359 -0
  103. package/dist/commands/pod.js.map +1 -0
  104. package/dist/commands/pods.d.ts +6 -0
  105. package/dist/commands/pods.js +160 -50
  106. package/dist/commands/pods.js.map +1 -1
  107. package/dist/commands/proposals-actions.d.ts +7 -0
  108. package/dist/commands/proposals-actions.js +77 -0
  109. package/dist/commands/proposals-actions.js.map +1 -0
  110. package/dist/commands/providers.d.ts +38 -0
  111. package/dist/commands/providers.js +170 -0
  112. package/dist/commands/providers.js.map +1 -0
  113. package/dist/commands/purge.d.ts +23 -0
  114. package/dist/commands/purge.js +148 -0
  115. package/dist/commands/purge.js.map +1 -0
  116. package/dist/commands/raycast.d.ts +15 -0
  117. package/dist/commands/raycast.js +153 -0
  118. package/dist/commands/raycast.js.map +1 -0
  119. package/dist/commands/sessions.d.ts +31 -0
  120. package/dist/commands/sessions.js +248 -0
  121. package/dist/commands/sessions.js.map +1 -0
  122. package/dist/commands/skill-manage.d.ts +21 -0
  123. package/dist/commands/skill-manage.js +195 -0
  124. package/dist/commands/skill-manage.js.map +1 -0
  125. package/dist/commands/skills-commands.d.ts +26 -0
  126. package/dist/commands/skills-commands.js +187 -0
  127. package/dist/commands/skills-commands.js.map +1 -0
  128. package/dist/commands/skills.d.ts +26 -0
  129. package/dist/commands/skills.js +196 -0
  130. package/dist/commands/skills.js.map +1 -0
  131. package/dist/commands/status.d.ts +3 -1
  132. package/dist/commands/status.js +231 -41
  133. package/dist/commands/status.js.map +1 -1
  134. package/dist/commands/statusline.d.ts +24 -0
  135. package/dist/commands/statusline.js +450 -0
  136. package/dist/commands/statusline.js.map +1 -0
  137. package/dist/commands/subscribe.d.ts +19 -0
  138. package/dist/commands/subscribe.js +91 -0
  139. package/dist/commands/subscribe.js.map +1 -0
  140. package/dist/commands/tools.d.ts +30 -0
  141. package/dist/commands/tools.js +315 -0
  142. package/dist/commands/tools.js.map +1 -0
  143. package/dist/commands/versions.d.ts +27 -0
  144. package/dist/commands/versions.js +277 -0
  145. package/dist/commands/versions.js.map +1 -0
  146. package/dist/commands/view.d.ts +57 -0
  147. package/dist/commands/view.js +195 -0
  148. package/dist/commands/view.js.map +1 -0
  149. package/dist/commands/whoami.d.ts +21 -0
  150. package/dist/commands/whoami.js +129 -0
  151. package/dist/commands/whoami.js.map +1 -0
  152. package/dist/index.d.ts +3 -4
  153. package/dist/index.js +1524 -202
  154. package/dist/index.js.map +1 -1
  155. package/dist/lib/agent-templates.d.ts +25 -0
  156. package/dist/lib/agent-templates.js +148 -0
  157. package/dist/lib/agent-templates.js.map +1 -0
  158. package/dist/lib/agents-config.d.ts +4 -1
  159. package/dist/lib/agents-config.js +19 -2
  160. package/dist/lib/agents-config.js.map +1 -1
  161. package/dist/lib/approval-poll.d.ts +42 -0
  162. package/dist/lib/approval-poll.js +52 -0
  163. package/dist/lib/approval-poll.js.map +1 -0
  164. package/dist/lib/auth.d.ts +29 -6
  165. package/dist/lib/auth.js +105 -94
  166. package/dist/lib/auth.js.map +1 -1
  167. package/dist/lib/bundle-version.d.ts +11 -0
  168. package/dist/lib/bundle-version.js +33 -0
  169. package/dist/lib/bundle-version.js.map +1 -0
  170. package/dist/lib/capture-lane.d.ts +67 -0
  171. package/dist/lib/capture-lane.js +136 -0
  172. package/dist/lib/capture-lane.js.map +1 -0
  173. package/dist/lib/cp-packages.d.ts +121 -0
  174. package/dist/lib/cp-packages.js +218 -0
  175. package/dist/lib/cp-packages.js.map +1 -0
  176. package/dist/lib/describe-lens.d.ts +46 -0
  177. package/dist/lib/describe-lens.js +33 -0
  178. package/dist/lib/describe-lens.js.map +1 -0
  179. package/dist/lib/hub-client.d.ts +84 -1
  180. package/dist/lib/hub-client.js +502 -22
  181. package/dist/lib/hub-client.js.map +1 -1
  182. package/dist/lib/installed.d.ts +51 -0
  183. package/dist/lib/installed.js +70 -0
  184. package/dist/lib/installed.js.map +1 -0
  185. package/dist/lib/next-steps.d.ts +61 -0
  186. package/dist/lib/next-steps.js +146 -0
  187. package/dist/lib/next-steps.js.map +1 -0
  188. package/dist/lib/pod.d.ts +104 -19
  189. package/dist/lib/pod.js +245 -57
  190. package/dist/lib/pod.js.map +1 -1
  191. package/dist/lib/project-ref.d.ts +95 -0
  192. package/dist/lib/project-ref.js +144 -0
  193. package/dist/lib/project-ref.js.map +1 -0
  194. package/dist/lib/project.d.ts +35 -0
  195. package/dist/lib/project.js +39 -0
  196. package/dist/lib/project.js.map +1 -0
  197. package/dist/lib/session-lens.d.ts +33 -0
  198. package/dist/lib/session-lens.js +76 -0
  199. package/dist/lib/session-lens.js.map +1 -0
  200. package/dist/lib/skill-import.d.ts +40 -0
  201. package/dist/lib/skill-import.js +203 -0
  202. package/dist/lib/skill-import.js.map +1 -0
  203. package/dist/lib/skills-installer.d.ts +16 -5
  204. package/dist/lib/skills-installer.js +132 -18
  205. package/dist/lib/skills-installer.js.map +1 -1
  206. package/dist/lib/suite.d.ts +28 -0
  207. package/dist/lib/suite.js +29 -0
  208. package/dist/lib/suite.js.map +1 -0
  209. package/dist/lib/superwhisper-import.d.ts +40 -0
  210. package/dist/lib/superwhisper-import.js +389 -0
  211. package/dist/lib/superwhisper-import.js.map +1 -0
  212. package/dist/lib/targets.d.ts +66 -2
  213. package/dist/lib/targets.js +914 -132
  214. package/dist/lib/targets.js.map +1 -1
  215. package/dist/lib/unwrapList.d.ts +1 -0
  216. package/dist/lib/unwrapList.js +20 -0
  217. package/dist/lib/unwrapList.js.map +1 -0
  218. package/dist/utils/logger.d.ts +2 -0
  219. package/dist/utils/logger.js +10 -2
  220. package/dist/utils/logger.js.map +1 -1
  221. package/package.json +10 -4
  222. package/skills/agent-os/SKILL.md +212 -0
  223. package/skills/manifest.json +5 -0
  224. package/skills/onboard/SKILL.md +186 -0
  225. package/skills/synap/SKILL.md +1524 -104
  226. package/skills/synap/_order.txt +37 -0
  227. package/skills/synap/_skill.yaml +24 -0
  228. package/skills/synap/authentication.md +10 -0
  229. package/skills/synap/automations.md +264 -0
  230. package/skills/synap/capabilities.md +107 -0
  231. package/skills/synap/capture.md +10 -0
  232. package/skills/synap/cli-operations.md +107 -0
  233. package/skills/synap/common-mistakes.md +12 -0
  234. package/skills/synap/creative-loop.md +43 -0
  235. package/skills/synap/crm.md +117 -0
  236. package/skills/synap/diagnostics.md +35 -0
  237. package/skills/synap/digesting-a-channel.md +38 -0
  238. package/skills/synap/document-embeds.md +123 -0
  239. package/skills/synap/escalation-ladder.md +71 -0
  240. package/skills/synap/focus-sessions.md +47 -0
  241. package/skills/synap/governance-rules.md +64 -0
  242. package/skills/synap/governance.md +6 -6
  243. package/skills/synap/graph-gardening.md +21 -0
  244. package/skills/synap/inline-patterns.md +38 -0
  245. package/skills/synap/lenses.md +38 -0
  246. package/skills/synap/linking-principle.md +39 -0
  247. package/skills/synap/linking.md +1 -0
  248. package/skills/synap/mental-model.md +45 -0
  249. package/skills/synap/more.md +7 -0
  250. package/skills/synap/multi-entity-capture.md +10 -0
  251. package/skills/synap/next-action.md +37 -0
  252. package/skills/synap/north-star.md +17 -0
  253. package/skills/synap/operating-mode-rules.md +45 -0
  254. package/skills/synap/operating-mode.md +9 -0
  255. package/skills/synap/quick-reference.md +67 -0
  256. package/skills/synap/reading.md +43 -0
  257. package/skills/synap/recap.md +21 -0
  258. package/skills/synap/reflexes.md +46 -0
  259. package/skills/synap/response-style.md +21 -0
  260. package/skills/synap/scope.md +13 -0
  261. package/skills/synap/showing.md +17 -0
  262. package/skills/synap/user-model.md +25 -0
  263. package/skills/synap/viewframe-cells.md +290 -0
  264. package/skills/synap/work-flow.md +113 -0
  265. package/skills/synap/worked-examples.md +53 -0
  266. package/skills/synap/workspace-design.md +45 -0
  267. package/skills/synap/workspace-edges.md +49 -0
  268. package/skills/synap/writes.md +156 -0
  269. package/skills/synap-schema/SKILL.md +97 -6
  270. package/skills/synap-schema/_order.txt +13 -0
  271. package/skills/synap-schema/_skill.yaml +22 -0
  272. package/skills/synap-schema/before-you-touch.md +14 -0
  273. package/skills/synap-schema/common-mistakes.md +9 -0
  274. package/skills/synap-schema/creating-profiles.md +17 -0
  275. package/skills/synap-schema/discover-profiles.md +24 -0
  276. package/skills/synap-schema/entity-scope.md +8 -0
  277. package/skills/synap-schema/extend-vs-create.md +31 -0
  278. package/skills/synap-schema/more.md +6 -0
  279. package/skills/synap-schema/overlay-properties.md +22 -0
  280. package/skills/synap-schema/profiles.md +3 -0
  281. package/skills/synap-schema/property-defs.md +29 -0
  282. package/skills/synap-schema/read-before-write.md +50 -0
  283. package/skills/synap-schema/relations.md +18 -0
  284. package/skills/synap-schema/worked-example.md +30 -0
  285. package/skills/synap-ui/SKILL.md +38 -11
  286. package/skills/synap-ui/_order.txt +13 -0
  287. package/skills/synap-ui/_skill.yaml +23 -0
  288. package/skills/synap-ui/ai-companion.md +27 -0
  289. package/skills/synap-ui/arranging-bento.md +8 -0
  290. package/skills/synap-ui/before-you-build.md +20 -0
  291. package/skills/synap-ui/bento-layouts.md +35 -0
  292. package/skills/synap-ui/common-mistakes.md +10 -0
  293. package/skills/synap-ui/creating-views.md +26 -0
  294. package/skills/synap-ui/four-builds.md +24 -0
  295. package/skills/synap-ui/more.md +7 -0
  296. package/skills/synap-ui/proposing-vs-extending.md +11 -0
  297. package/skills/synap-ui/view-list.md +24 -0
  298. package/skills/synap-ui/views.md +3 -0
  299. package/skills/synap-ui/worked-example.md +18 -0
  300. package/skills/synap-ui/workspaces.md +47 -0
  301. package/templates/automations/bookmark-enrichment.automation.json +44 -0
  302. package/templates/automations/mail-feed.automation.json +86 -0
  303. package/templates/automations/url-bookmark-capture.automation.json +70 -0
  304. package/templates/skills/README.md +21 -0
  305. package/templates/skills/authoring-automations/SKILL.md +95 -0
  306. package/templates/skills/authoring-automations/reference/node-matrix.md +49 -0
  307. package/templates/skills/authoring-capabilities/SKILL.md +93 -0
  308. package/templates/skills/authoring-capabilities/reference/template-anatomy.md +70 -0
  309. package/templates/skills/authoring-playbooks/SKILL.md +102 -0
  310. package/templates/skills/authoring-playbooks/reference/stages-contract.md +35 -0
  311. package/templates/skills/authoring-playbooks/reference/worked-example.md +64 -0
  312. package/templates/skills/bookmark-enrichment/SKILL.md +40 -0
  313. package/templates/skills/coordinating-agents/SKILL.md +32 -0
  314. package/templates/skills/coordinating-branches/SKILL.md +27 -0
  315. package/templates/skills/mapping-the-server/SKILL.md +54 -0
  316. package/templates/skills/reading-client-progress/SKILL.md +65 -0
  317. package/templates/skills/routing-to-channels/SKILL.md +54 -0
  318. package/templates/skills/stellar-scf-grants-advisor/ASSOCIATE-CHEATSHEET.md +133 -0
  319. package/templates/skills/stellar-scf-grants-advisor/ASSOCIATE-ONBOARDING-GUIDE.md +761 -0
  320. package/templates/skills/stellar-scf-grants-advisor/CLIENT-FAQ.md +181 -0
  321. package/templates/skills/stellar-scf-grants-advisor/PARTNER-HANDOVER.md +130 -0
  322. package/templates/skills/stellar-scf-grants-advisor/SKILL.md +102 -0
  323. package/templates/skills/stellar-scf-grants-advisor/examples/README.md +43 -0
  324. package/templates/skills/stellar-scf-grants-advisor/examples/chat-summary-templates.md +158 -0
  325. package/templates/skills/stellar-scf-grants-advisor/examples/corpus-comparable-rows.md +136 -0
  326. package/templates/skills/stellar-scf-grants-advisor/examples/q10-team-rewrites.md +109 -0
  327. package/templates/skills/stellar-scf-grants-advisor/examples/q2-description-rewrites.md +88 -0
  328. package/templates/skills/stellar-scf-grants-advisor/examples/q6-integration-rewrites.md +107 -0
  329. package/templates/skills/stellar-scf-grants-advisor/examples/tranche-structures.md +176 -0
  330. package/templates/skills/stellar-scf-grants-advisor/reference/01-methodology.md +96 -0
  331. package/templates/skills/stellar-scf-grants-advisor/reference/02-scoring-framework.md +199 -0
  332. package/templates/skills/stellar-scf-grants-advisor/reference/03-rejection-patterns.md +241 -0
  333. package/templates/skills/stellar-scf-grants-advisor/reference/04-winner-patterns.md +120 -0
  334. package/templates/skills/stellar-scf-grants-advisor/reference/05-comeback-patterns.md +92 -0
  335. package/templates/skills/stellar-scf-grants-advisor/reference/06-budget-benchmarks.md +125 -0
  336. package/templates/skills/stellar-scf-grants-advisor/reference/07-integration-list.md +147 -0
  337. package/templates/skills/stellar-scf-grants-advisor/reference/08-abstract-fields.md +258 -0
  338. package/templates/skills/stellar-scf-grants-advisor/reference/09-build-fields.md +259 -0
  339. package/templates/skills/stellar-scf-grants-advisor/reference/10-corpus-winners.md +135 -0
  340. package/templates/skills/stellar-scf-grants-advisor/reference/11-corpus-rejects.md +267 -0
  341. package/templates/skills/stellar-scf-grants-advisor/reference/12-client-communication.md +131 -0
  342. package/templates/skills/stellar-scf-grants-advisor/reference/13-excel-output-spec.md +199 -0
  343. package/templates/skills/stellar-scf-grants-advisor/reference/14-worked-examples.md +160 -0
  344. package/templates/skills/stellar-scf-grants-advisor/templates/abstract-review-builder.py +253 -0
  345. package/templates/skills/stellar-scf-grants-advisor/templates/build-review-builder.py +213 -0
  346. package/dist/commands/finish.d.ts +0 -25
  347. package/dist/commands/finish.js +0 -274
  348. package/dist/commands/finish.js.map +0 -1
  349. package/dist/commands/openclaw.d.ts +0 -40
  350. package/dist/commands/openclaw.js +0 -1148
  351. package/dist/commands/openclaw.js.map +0 -1
  352. package/dist/commands/security-audit.d.ts +0 -12
  353. package/dist/commands/security-audit.js +0 -100
  354. package/dist/commands/security-audit.js.map +0 -1
  355. package/dist/lib/hardening.d.ts +0 -18
  356. package/dist/lib/hardening.js +0 -214
  357. package/dist/lib/hardening.js.map +0 -1
  358. package/dist/lib/templates.d.ts +0 -11
  359. package/dist/lib/templates.js +0 -13
  360. package/dist/lib/templates.js.map +0 -1
  361. package/dist/templates/agent-os.json +0 -3090
  362. package/node_modules/@synap/hub-rest-client/dist/index.cjs +0 -881
  363. package/node_modules/@synap/hub-rest-client/dist/index.d.cts +0 -907
  364. package/node_modules/@synap/hub-rest-client/dist/index.d.ts +0 -907
  365. package/node_modules/@synap/hub-rest-client/dist/index.js +0 -851
  366. package/node_modules/@synap/hub-rest-client/package.json +0 -45
  367. package/node_modules/@synap/hub-rest-client/src/client.ts +0 -1143
  368. package/node_modules/@synap/hub-rest-client/src/errors.ts +0 -30
  369. package/node_modules/@synap/hub-rest-client/src/index.ts +0 -111
  370. package/node_modules/@synap/hub-rest-client/src/setup.ts +0 -77
  371. package/node_modules/@synap/hub-rest-client/src/types.ts +0 -639
@@ -0,0 +1,601 @@
1
+ /**
2
+ * synap automation — Create, manage, and inspect pod automations
3
+ *
4
+ * Subcommands: list, describe, create, enable, disable, delete, schema
5
+ */
6
+ import chalk from "chalk";
7
+ import ora from "ora";
8
+ import prompts from "prompts";
9
+ import { readFileSync, mkdirSync, writeFileSync, existsSync } from "fs";
10
+ import { resolveHubConfig, resolveUserId, hubGet, hubPost } from "../lib/hub-client.js";
11
+ import { unwrapList } from "../lib/unwrapList.js";
12
+ import { log } from "../utils/logger.js";
13
+ // ── Helpers ───────────────────────────────────────────────────────────────────
14
+ function statusBadge(status) {
15
+ switch (status) {
16
+ case "active":
17
+ return chalk.green("●");
18
+ case "draft":
19
+ return chalk.yellow("○");
20
+ case "paused":
21
+ return chalk.red("⊘");
22
+ case "error":
23
+ return chalk.red("✗");
24
+ default:
25
+ return chalk.dim("?");
26
+ }
27
+ }
28
+ function extractResult(res) {
29
+ // tRPC wraps responses in { result: { data: { json: ... } } }
30
+ const r = res;
31
+ if (r.result !== undefined) {
32
+ const result = r.result;
33
+ if (result.data !== undefined) {
34
+ const data = result.data;
35
+ if (data.json !== undefined)
36
+ return data.json;
37
+ return data;
38
+ }
39
+ return result;
40
+ }
41
+ return res;
42
+ }
43
+ async function trpcQuery(procedure, input, cfg) {
44
+ // Hub-protocol procedures require the acting userId in their input.
45
+ if (input.userId === undefined)
46
+ input.userId = await resolveUserId(cfg);
47
+ // Backend tRPC uses the superjson transformer: GET input must be wrapped
48
+ // in the { json: ... } envelope (mirrors the POST body shape below).
49
+ const res = await hubGet(`/trpc/${procedure}`, { input: JSON.stringify({ json: input }) }, cfg);
50
+ return extractResult(res);
51
+ }
52
+ async function trpcMutation(procedure, input, cfg) {
53
+ if (input.userId === undefined)
54
+ input.userId = await resolveUserId(cfg);
55
+ const res = await hubPost(`/trpc/${procedure}`, { json: input }, cfg);
56
+ return extractResult(res);
57
+ }
58
+ function parseYamlOrJson(filePath) {
59
+ const content = readFileSync(filePath, "utf-8").trim();
60
+ // JSON path
61
+ if (filePath.endsWith(".json") || content.startsWith("{")) {
62
+ return JSON.parse(content);
63
+ }
64
+ // YAML path — require js-yaml if available, otherwise throw a helpful error
65
+ try {
66
+ // Dynamic require-style import for optional dependency
67
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
68
+ const yaml = require("js-yaml");
69
+ return yaml.load(content);
70
+ }
71
+ catch {
72
+ throw new Error("YAML parsing requires js-yaml. Install it: pnpm add js-yaml\n" +
73
+ "Alternatively, convert your file to JSON and pass a .json file.");
74
+ }
75
+ }
76
+ function interpolateEnv(obj) {
77
+ if (typeof obj === "string") {
78
+ return obj.replace(/\{\{env\.([^}]+)\}\}/g, (_, varName) => {
79
+ const val = process.env[varName];
80
+ if (val === undefined) {
81
+ log.warn(`Environment variable not set: ${varName}`);
82
+ return `{{env.${varName}}}`;
83
+ }
84
+ return val;
85
+ });
86
+ }
87
+ if (Array.isArray(obj)) {
88
+ return obj.map(interpolateEnv);
89
+ }
90
+ if (obj !== null && typeof obj === "object") {
91
+ const result = {};
92
+ for (const [k, v] of Object.entries(obj)) {
93
+ result[k] = interpolateEnv(v);
94
+ }
95
+ return result;
96
+ }
97
+ return obj;
98
+ }
99
+ function parseTriggerSpec(spec) {
100
+ if (spec.startsWith("event:")) {
101
+ return {
102
+ triggerType: "event",
103
+ triggerConfig: { eventPattern: spec.slice("event:".length) },
104
+ };
105
+ }
106
+ if (spec.startsWith("cron:")) {
107
+ return {
108
+ triggerType: "cron",
109
+ triggerConfig: { expression: spec.slice("cron:".length) },
110
+ };
111
+ }
112
+ if (spec === "webhook") {
113
+ return { triggerType: "webhook", triggerConfig: {} };
114
+ }
115
+ if (spec === "manual") {
116
+ return { triggerType: "manual", triggerConfig: {} };
117
+ }
118
+ throw new Error(`Invalid --trigger spec: "${spec}"\n` +
119
+ `Valid formats: event:<pattern> | cron:<expression> | webhook | manual`);
120
+ }
121
+ function parseFilters(filterArgs) {
122
+ const result = {};
123
+ for (const kv of filterArgs) {
124
+ const eqIdx = kv.indexOf("=");
125
+ if (eqIdx === -1) {
126
+ throw new Error(`Invalid --filter value: "${kv}" — expected key=value format`);
127
+ }
128
+ result[kv.slice(0, eqIdx)] = kv.slice(eqIdx + 1);
129
+ }
130
+ return result;
131
+ }
132
+ function buildFlowDefinition(triggerType, triggerConfig, action, message, channel) {
133
+ const triggerNode = {
134
+ id: "trigger-1",
135
+ type: "trigger",
136
+ position: { x: 0, y: 0 },
137
+ data: {
138
+ triggerType,
139
+ label: "Trigger",
140
+ config: triggerConfig,
141
+ },
142
+ };
143
+ if (action === "none") {
144
+ return { nodes: [triggerNode], edges: [] };
145
+ }
146
+ let outputType;
147
+ let actionConfig;
148
+ let actionLabel;
149
+ if (action === "notify") {
150
+ outputType = "notification";
151
+ actionLabel = "Notify";
152
+ actionConfig = { title: "Automation alert", body: message ?? "" };
153
+ }
154
+ else {
155
+ // channel-message
156
+ outputType = "channel_message";
157
+ actionLabel = "Channel Message";
158
+ actionConfig = { channelId: channel ?? "", content: message ?? "" };
159
+ }
160
+ const outputNode = {
161
+ id: "output-1",
162
+ type: "output",
163
+ position: { x: 0, y: 200 },
164
+ data: {
165
+ label: actionLabel,
166
+ outputType,
167
+ config: actionConfig,
168
+ },
169
+ };
170
+ return {
171
+ nodes: [triggerNode, outputNode],
172
+ edges: [{ id: "e1", source: "trigger-1", target: "output-1" }],
173
+ };
174
+ }
175
+ export async function automationList(opts) {
176
+ let cfg;
177
+ try {
178
+ cfg = await resolveHubConfig();
179
+ }
180
+ catch (err) {
181
+ log.error(err.message);
182
+ process.exit(1);
183
+ }
184
+ const workspaceId = opts.workspace ?? cfg.workspaceId;
185
+ if (opts.json) {
186
+ const input = {};
187
+ if (workspaceId)
188
+ input.workspaceId = workspaceId;
189
+ if (opts.status)
190
+ input.status = opts.status;
191
+ const data = await trpcQuery("automations.listAutomations", input, cfg);
192
+ console.log(JSON.stringify(data, null, 2));
193
+ return;
194
+ }
195
+ const spinner = ora({ text: "Fetching automations…", color: "cyan" }).start();
196
+ let automations;
197
+ try {
198
+ const input = {};
199
+ if (workspaceId)
200
+ input.workspaceId = workspaceId;
201
+ if (opts.status)
202
+ input.status = opts.status;
203
+ const data = await trpcQuery("automations.listAutomations", input, cfg);
204
+ automations = unwrapList(data, ["automations"]);
205
+ spinner.stop();
206
+ }
207
+ catch (err) {
208
+ spinner.fail(chalk.red("Failed to fetch automations"));
209
+ log.error(err.message);
210
+ process.exit(1);
211
+ }
212
+ if (automations.length === 0) {
213
+ log.warn("No automations found.");
214
+ log.dim('Create one: synap automation create --name "My automation" --trigger event:entity.create.completed');
215
+ return;
216
+ }
217
+ log.heading(`Automations (${automations.length})`);
218
+ console.log();
219
+ for (const a of automations) {
220
+ const badge = statusBadge(a.status);
221
+ const triggerLabel = chalk.cyan(a.triggerType.padEnd(8));
222
+ console.log(` ${badge} ${chalk.bold(a.name.padEnd(32))} ${triggerLabel} ${chalk.dim(a.id)}`);
223
+ }
224
+ console.log();
225
+ }
226
+ export async function automationDescribe(id, opts) {
227
+ let cfg;
228
+ try {
229
+ cfg = await resolveHubConfig();
230
+ }
231
+ catch (err) {
232
+ log.error(err.message);
233
+ process.exit(1);
234
+ }
235
+ const workspaceId = opts.workspace ?? cfg.workspaceId;
236
+ const input = { id };
237
+ if (workspaceId)
238
+ input.workspaceId = workspaceId;
239
+ if (opts.json) {
240
+ const data = await trpcQuery("automations.getAutomation", input, cfg);
241
+ console.log(JSON.stringify(data, null, 2));
242
+ return;
243
+ }
244
+ const spinner = ora({ text: "Fetching automation…", color: "cyan" }).start();
245
+ let automation;
246
+ try {
247
+ const data = await trpcQuery("automations.getAutomation", input, cfg);
248
+ automation = data;
249
+ spinner.stop();
250
+ }
251
+ catch (err) {
252
+ spinner.fail(chalk.red("Failed to fetch automation"));
253
+ log.error(err.message);
254
+ process.exit(1);
255
+ }
256
+ log.heading(`Automation: ${chalk.bold(automation.name)}`);
257
+ console.log();
258
+ console.log(` ${chalk.dim("id")} ${chalk.dim(automation.id)}`);
259
+ console.log(` ${chalk.dim("status")} ${statusBadge(automation.status)} ${automation.status}`);
260
+ console.log(` ${chalk.dim("trigger type")} ${chalk.cyan(automation.triggerType)}`);
261
+ if (automation.triggerConfig && Object.keys(automation.triggerConfig).length > 0) {
262
+ console.log(` ${chalk.dim("trigger config")}`);
263
+ for (const [k, v] of Object.entries(automation.triggerConfig)) {
264
+ if (v !== undefined) {
265
+ const val = typeof v === "object" ? JSON.stringify(v) : String(v);
266
+ console.log(` ${chalk.dim(k.padEnd(16))} ${val}`);
267
+ }
268
+ }
269
+ }
270
+ const nodeCount = automation.flowDefinition?.nodes?.length ?? 0;
271
+ console.log(` ${chalk.dim("nodes")} ${nodeCount}`);
272
+ if (automation.description) {
273
+ console.log(` ${chalk.dim("description")} ${automation.description}`);
274
+ }
275
+ if (automation.createdAt) {
276
+ console.log(` ${chalk.dim("created")} ${new Date(automation.createdAt).toLocaleString()}`);
277
+ }
278
+ if (automation.updatedAt) {
279
+ console.log(` ${chalk.dim("updated")} ${new Date(automation.updatedAt).toLocaleString()}`);
280
+ }
281
+ console.log();
282
+ }
283
+ export async function automationCreate(opts) {
284
+ let cfg;
285
+ try {
286
+ cfg = await resolveHubConfig();
287
+ }
288
+ catch (err) {
289
+ log.error(err.message);
290
+ process.exit(1);
291
+ }
292
+ const workspaceId = opts.workspace ?? cfg.workspaceId;
293
+ const spinner = ora({ text: "Creating automation…", color: "cyan" }).start();
294
+ let payload;
295
+ if (opts.from) {
296
+ // File mode
297
+ let fileData;
298
+ try {
299
+ fileData = parseYamlOrJson(opts.from);
300
+ }
301
+ catch (err) {
302
+ spinner.fail(chalk.red("Failed to read file"));
303
+ log.error(err.message);
304
+ process.exit(1);
305
+ }
306
+ // Apply {{env.VAR}} substitution
307
+ fileData = interpolateEnv(fileData);
308
+ // Map YAML structure to API payload
309
+ const flowDef = (fileData.flow ?? fileData.flowDefinition);
310
+ const triggerCfg = fileData.triggerConfig;
311
+ payload = {
312
+ name: fileData.name,
313
+ description: fileData.description,
314
+ triggerType: fileData.trigger,
315
+ triggerConfig: triggerCfg ?? {},
316
+ flowDefinition: flowDef ?? { nodes: [], edges: [] },
317
+ status: (opts.status ?? fileData.status ?? "draft"),
318
+ };
319
+ if (workspaceId)
320
+ payload.workspaceId = workspaceId;
321
+ if (!payload.name || !payload.triggerType) {
322
+ spinner.fail(chalk.red("File must contain 'name' and 'trigger' fields"));
323
+ process.exit(1);
324
+ }
325
+ }
326
+ else {
327
+ // Quick mode
328
+ if (!opts.name) {
329
+ spinner.fail(chalk.red("--name is required in quick mode"));
330
+ log.dim("Use --from <file.yaml> for file-based creation, or --name + --trigger for quick mode.");
331
+ process.exit(1);
332
+ }
333
+ if (!opts.trigger) {
334
+ spinner.fail(chalk.red("--trigger is required in quick mode"));
335
+ log.dim("Example: --trigger event:entity.create.completed or --trigger cron:0 9 * * MON");
336
+ process.exit(1);
337
+ }
338
+ let triggerType;
339
+ let triggerConfig;
340
+ try {
341
+ ({ triggerType, triggerConfig } = parseTriggerSpec(opts.trigger));
342
+ }
343
+ catch (err) {
344
+ spinner.fail(chalk.red("Invalid --trigger spec"));
345
+ log.error(err.message);
346
+ process.exit(1);
347
+ }
348
+ // Apply --filter for event triggers
349
+ if (opts.filter && opts.filter.length > 0) {
350
+ if (triggerType !== "event") {
351
+ spinner.fail(chalk.red("--filter is only valid for event triggers"));
352
+ process.exit(1);
353
+ }
354
+ try {
355
+ triggerConfig.filters = parseFilters(opts.filter);
356
+ }
357
+ catch (err) {
358
+ spinner.fail(chalk.red("Invalid --filter value"));
359
+ log.error(err.message);
360
+ process.exit(1);
361
+ }
362
+ }
363
+ const action = (opts.action ?? "none");
364
+ if (action === "channel-message" && !opts.channel) {
365
+ spinner.fail(chalk.red("--channel is required for channel-message action"));
366
+ process.exit(1);
367
+ }
368
+ const flowDefinition = buildFlowDefinition(triggerType, triggerConfig, action, opts.message, opts.channel);
369
+ payload = {
370
+ name: opts.name,
371
+ triggerType,
372
+ triggerConfig,
373
+ flowDefinition,
374
+ status: (opts.status ?? "draft"),
375
+ };
376
+ if (opts.description)
377
+ payload.description = opts.description;
378
+ if (workspaceId)
379
+ payload.workspaceId = workspaceId;
380
+ }
381
+ let result;
382
+ try {
383
+ const data = await trpcMutation("automations.createAutomation", payload, cfg);
384
+ // Response shape may be: { automation: {...} } | { id, name, ... } | raw Automation
385
+ const raw = data;
386
+ const inner = (raw.automation ?? raw);
387
+ result = inner;
388
+ }
389
+ catch (err) {
390
+ spinner.fail(chalk.red("Failed to create automation"));
391
+ log.error(err.message);
392
+ process.exit(1);
393
+ }
394
+ spinner.succeed(chalk.green(`Automation created`));
395
+ console.log();
396
+ console.log(` ${chalk.dim("id")} ${chalk.dim(result.id ?? "—")}`);
397
+ console.log(` ${chalk.dim("name")} ${chalk.bold(result.name ?? "—")}`);
398
+ console.log(` ${chalk.dim("status")} ${statusBadge((result.status ?? "draft"))} ${result.status ?? "draft"}`);
399
+ console.log();
400
+ log.dim(`Enable it: synap automation enable ${result.id ?? "<id>"}`);
401
+ }
402
+ export async function automationEnable(id, opts) {
403
+ let cfg;
404
+ try {
405
+ cfg = await resolveHubConfig();
406
+ }
407
+ catch (err) {
408
+ log.error(err.message);
409
+ process.exit(1);
410
+ }
411
+ const workspaceId = opts.workspace ?? cfg.workspaceId;
412
+ const spinner = ora({ text: "Activating automation…", color: "cyan" }).start();
413
+ const input = { id };
414
+ if (workspaceId)
415
+ input.workspaceId = workspaceId;
416
+ let result;
417
+ try {
418
+ const data = await trpcMutation("automations.activateAutomation", input, cfg);
419
+ result = data;
420
+ }
421
+ catch (err) {
422
+ spinner.fail(chalk.red("Failed to activate automation"));
423
+ log.error(err.message);
424
+ process.exit(1);
425
+ }
426
+ spinner.stop();
427
+ log.success(`Automation ${chalk.bold(result.name ?? id)} is now active`);
428
+ }
429
+ export async function automationDisable(id, opts) {
430
+ let cfg;
431
+ try {
432
+ cfg = await resolveHubConfig();
433
+ }
434
+ catch (err) {
435
+ log.error(err.message);
436
+ process.exit(1);
437
+ }
438
+ const workspaceId = opts.workspace ?? cfg.workspaceId;
439
+ const spinner = ora({ text: "Pausing automation…", color: "cyan" }).start();
440
+ const input = { id };
441
+ if (workspaceId)
442
+ input.workspaceId = workspaceId;
443
+ let result;
444
+ try {
445
+ const data = await trpcMutation("automations.pauseAutomation", input, cfg);
446
+ result = data;
447
+ }
448
+ catch (err) {
449
+ spinner.fail(chalk.red("Failed to pause automation"));
450
+ log.error(err.message);
451
+ process.exit(1);
452
+ }
453
+ spinner.stop();
454
+ console.log(` ${chalk.red("⊘")} Automation ${chalk.bold(result.name ?? id)} paused`);
455
+ }
456
+ export async function automationDelete(id, opts) {
457
+ let cfg;
458
+ try {
459
+ cfg = await resolveHubConfig();
460
+ }
461
+ catch (err) {
462
+ log.error(err.message);
463
+ process.exit(1);
464
+ }
465
+ const workspaceId = opts.workspace ?? cfg.workspaceId;
466
+ // Fetch name for confirmation prompt
467
+ let automationName = id;
468
+ if (!opts.force) {
469
+ try {
470
+ const input = { id };
471
+ if (workspaceId)
472
+ input.workspaceId = workspaceId;
473
+ const data = await trpcQuery("automations.getAutomation", input, cfg);
474
+ automationName = data.name ?? id;
475
+ }
476
+ catch {
477
+ // Fall back to ID in prompt
478
+ }
479
+ const response = await prompts({
480
+ type: "confirm",
481
+ name: "confirmed",
482
+ message: `Delete automation '${automationName}'?`,
483
+ initial: false,
484
+ });
485
+ if (!response.confirmed) {
486
+ log.dim("Cancelled.");
487
+ return;
488
+ }
489
+ }
490
+ const spinner = ora({ text: "Deleting automation…", color: "cyan" }).start();
491
+ const input = { id };
492
+ if (workspaceId)
493
+ input.workspaceId = workspaceId;
494
+ try {
495
+ await trpcMutation("automations.deleteAutomation", input, cfg);
496
+ }
497
+ catch (err) {
498
+ spinner.fail(chalk.red("Failed to delete automation"));
499
+ log.error(err.message);
500
+ process.exit(1);
501
+ }
502
+ spinner.succeed(chalk.green(`Automation '${automationName}' deleted`));
503
+ }
504
+ export async function automationSchema(opts) {
505
+ let cfg;
506
+ try {
507
+ cfg = await resolveHubConfig();
508
+ }
509
+ catch (err) {
510
+ log.error(err.message);
511
+ process.exit(1);
512
+ }
513
+ const spinner = opts.json ? null : ora({ text: "Fetching schema…", color: "cyan" }).start();
514
+ let schema;
515
+ try {
516
+ // hubGet already prefixes ${podUrl}/api/hub — pass only the sub-path.
517
+ schema = await hubGet("/automations/schema", {}, cfg);
518
+ spinner?.stop();
519
+ }
520
+ catch (err) {
521
+ spinner?.fail(chalk.red("Failed to fetch schema"));
522
+ log.error(err.message);
523
+ process.exit(1);
524
+ }
525
+ if (opts.json) {
526
+ console.log(JSON.stringify(schema, null, 2));
527
+ return;
528
+ }
529
+ const s = schema;
530
+ const podUrl = cfg.podUrl;
531
+ const md = buildSchemaMarkdown(s, podUrl);
532
+ if (opts.writeContext !== undefined && opts.writeContext !== false) {
533
+ const outputPath = typeof opts.writeContext === "string" && opts.writeContext.length > 0
534
+ ? opts.writeContext
535
+ : ".claude/AUTOMATION_CONTEXT.md";
536
+ const dir = outputPath.includes("/") ? outputPath.split("/").slice(0, -1).join("/") : ".";
537
+ if (dir && dir !== "." && !existsSync(dir)) {
538
+ mkdirSync(dir, { recursive: true });
539
+ }
540
+ writeFileSync(outputPath, md, "utf-8");
541
+ log.success(`Context written to ${chalk.underline(outputPath)} — Claude Code will auto-load this in all sessions from this directory`);
542
+ }
543
+ else {
544
+ console.log(md);
545
+ }
546
+ }
547
+ function buildSchemaMarkdown(schema, podUrl) {
548
+ const lines = [
549
+ `# Synap Automation DSL Reference`,
550
+ ``,
551
+ `> Fetched from pod: ${podUrl} — use this context to create, understand, and debug automations.`,
552
+ ``,
553
+ `## Trigger Types`,
554
+ ];
555
+ const triggerTypes = (schema.triggerTypes ?? schema.triggers ?? {});
556
+ if (Object.keys(triggerTypes).length > 0) {
557
+ for (const [name, def] of Object.entries(triggerTypes)) {
558
+ const d = def;
559
+ lines.push(``, `### ${name}`);
560
+ if (d.description)
561
+ lines.push(``, String(d.description));
562
+ if (d.fields) {
563
+ lines.push(``, `**Fields:**`);
564
+ for (const [field, fdesc] of Object.entries(d.fields)) {
565
+ lines.push(`- \`${field}\` — ${fdesc}`);
566
+ }
567
+ }
568
+ if (d.examples) {
569
+ lines.push(``, `**Examples:**`);
570
+ for (const ex of d.examples) {
571
+ lines.push(`- \`${ex}\``);
572
+ }
573
+ }
574
+ }
575
+ }
576
+ else {
577
+ lines.push(``, `### event`, ``, `Fires when a pod event matches the pattern.`, ``, `**Fields:**`, `- \`eventPattern\` — event path with optional trailing wildcard`, `- \`filters\` — dot-notation key-value equality checks on event.data`, ``, `**Common patterns:**`, `- \`entity.create.completed\` — new entity created (use this; .validated only fires on proposal-approval path)`, `- \`entity.update.completed\` — entity updated`, `- \`entity.update.*\` — any entity update event`, `- \`import.complete\` — import finished`, ``, `### cron`, ``, `Fires on a cron schedule.`, ``, `**Fields:**`, `- \`expression\` — standard 5-part cron expression (minute hour day month weekday)`, ``, `### webhook`, ``, `Fires when the automation's webhook URL receives a POST request.`, ``, `### manual`, ``, `Only fires when explicitly triggered via the API or CLI.`);
578
+ }
579
+ lines.push(``, `## Node Types`);
580
+ const nodeTypes = (schema.nodeTypes ?? schema.nodes ?? {});
581
+ if (Object.keys(nodeTypes).length > 0) {
582
+ for (const [name, def] of Object.entries(nodeTypes)) {
583
+ const d = def;
584
+ lines.push(``, `### ${name}`);
585
+ if (d.description)
586
+ lines.push(``, String(d.description));
587
+ if (d.fields) {
588
+ lines.push(``, `**Fields:**`);
589
+ for (const [field, fdesc] of Object.entries(d.fields)) {
590
+ lines.push(`- \`${field}\` — ${fdesc}`);
591
+ }
592
+ }
593
+ }
594
+ }
595
+ else {
596
+ lines.push(``, `### trigger`, ``, `Entry point for the flow. Exactly one per automation.`, ``, `**data fields:**`, `- \`triggerType\` — event | cron | webhook | manual`, `- \`label\` — display name`, `- \`config\` — trigger-specific config object (eventPattern, filters, expression)`, ``, `### output`, ``, `Sends a notification or message when reached.`, ``, `**data fields:**`, `- \`outputType\` — notification | channel_message`, `- \`label\` — display name`, `- \`config\` — output-specific config (title, body for notification; channelId, content for channel_message)`);
597
+ }
598
+ lines.push(``, `## Template Syntax`, ``, `String values support \`{{...}}\` template expressions:`, ``, `- \`{{trigger.payload.entity.title}}\` — field from the triggering event`, `- \`{{trigger.payload.entity.id}}\` — entity ID from trigger`, `- \`{{env.MY_VAR}}\` — environment variable (resolved at CLI create-time when using \`--from\`)`, ``, `## Quick-Create Examples`, ``, `\`\`\`bash`, `# Notify when a note is created`, `synap automation create --name "Note alert" --trigger "event:entity.create.completed" --filter "profileSlug=note" --action notify --message "New note: {{trigger.payload.entity.title}}"`, ``, `# Weekly digest every Monday at 9am`, `synap automation create --name "Weekly digest" --trigger "cron:0 9 * * MON" --action channel-message --channel "#general" --message "Weekly digest ready."`, ``, `# Manual-only automation (draft, no action)`, `synap automation create --name "Manual trigger" --trigger manual`, `\`\`\``, ``, `## YAML File Format`, ``, `\`\`\`yaml`, `name: string`, `description: string # optional`, `trigger: event | cron | webhook | manual`, `triggerConfig:`, ` eventPattern: string # for event triggers`, ` filters: # for event triggers`, ` key: value`, ` expression: string # for cron triggers`, `status: draft | active`, `flow:`, ` nodes:`, ` - id: trigger-1`, ` type: trigger`, ` position: { x: 0, y: 0 }`, ` data:`, ` triggerType: event`, ` label: Trigger`, ` config:`, ` eventPattern: entity.create.completed`, ` edges: []`, `\`\`\``, ``, `> **Env substitution**: \`{{env.MY_VAR}}\` in any string value is replaced with \`process.env.MY_VAR\` at create-time.`);
599
+ return lines.join("\n");
600
+ }
601
+ //# sourceMappingURL=automation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automation.js","sourceRoot":"","sources":["../../src/commands/automation.ts"],"names":[],"mappings":"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"}