@signstack/cli 0.1.1

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 (269) hide show
  1. package/README.md +458 -0
  2. package/bin/run.js +12 -0
  3. package/dist/apps/signstack-cli/schemas/asset.schema.json +220 -0
  4. package/dist/apps/signstack-cli/schemas/blueprint.schema.json +485 -0
  5. package/dist/apps/signstack-cli/schemas/jsonata-function.schema.json +185 -0
  6. package/dist/apps/signstack-cli/schemas/schema.schema.json +97 -0
  7. package/dist/apps/signstack-cli/schemas/template.schema.json +295 -0
  8. package/dist/apps/signstack-cli/src/commands/auth/login.d.ts +25 -0
  9. package/dist/apps/signstack-cli/src/commands/auth/login.js +229 -0
  10. package/dist/apps/signstack-cli/src/commands/auth/login.js.map +1 -0
  11. package/dist/apps/signstack-cli/src/commands/auth/logout.d.ts +10 -0
  12. package/dist/apps/signstack-cli/src/commands/auth/logout.js +59 -0
  13. package/dist/apps/signstack-cli/src/commands/auth/logout.js.map +1 -0
  14. package/dist/apps/signstack-cli/src/commands/auth/whoami.d.ts +9 -0
  15. package/dist/apps/signstack-cli/src/commands/auth/whoami.js +85 -0
  16. package/dist/apps/signstack-cli/src/commands/auth/whoami.js.map +1 -0
  17. package/dist/apps/signstack-cli/src/commands/generate.d.ts +51 -0
  18. package/dist/apps/signstack-cli/src/commands/generate.js +479 -0
  19. package/dist/apps/signstack-cli/src/commands/generate.js.map +1 -0
  20. package/dist/apps/signstack-cli/src/commands/preview.d.ts +24 -0
  21. package/dist/apps/signstack-cli/src/commands/preview.js +162 -0
  22. package/dist/apps/signstack-cli/src/commands/preview.js.map +1 -0
  23. package/dist/apps/signstack-cli/src/commands/pull.d.ts +28 -0
  24. package/dist/apps/signstack-cli/src/commands/pull.js +244 -0
  25. package/dist/apps/signstack-cli/src/commands/pull.js.map +1 -0
  26. package/dist/apps/signstack-cli/src/commands/push.d.ts +46 -0
  27. package/dist/apps/signstack-cli/src/commands/push.js +460 -0
  28. package/dist/apps/signstack-cli/src/commands/push.js.map +1 -0
  29. package/dist/apps/signstack-cli/src/commands/run.d.ts +22 -0
  30. package/dist/apps/signstack-cli/src/commands/run.js +126 -0
  31. package/dist/apps/signstack-cli/src/commands/run.js.map +1 -0
  32. package/dist/apps/signstack-cli/src/commands/test.d.ts +6 -0
  33. package/dist/apps/signstack-cli/src/commands/test.js +25 -0
  34. package/dist/apps/signstack-cli/src/commands/test.js.map +1 -0
  35. package/dist/apps/signstack-cli/src/commands/validate.d.ts +59 -0
  36. package/dist/apps/signstack-cli/src/commands/validate.js +558 -0
  37. package/dist/apps/signstack-cli/src/commands/validate.js.map +1 -0
  38. package/dist/apps/signstack-cli/src/index.d.ts +1 -0
  39. package/dist/apps/signstack-cli/src/index.js +2 -0
  40. package/dist/apps/signstack-cli/src/index.js.map +1 -0
  41. package/dist/apps/signstack-cli/src/lib/api-client.d.ts +77 -0
  42. package/dist/apps/signstack-cli/src/lib/api-client.js +269 -0
  43. package/dist/apps/signstack-cli/src/lib/api-client.js.map +1 -0
  44. package/dist/apps/signstack-cli/src/lib/base-command.d.ts +38 -0
  45. package/dist/apps/signstack-cli/src/lib/base-command.js +135 -0
  46. package/dist/apps/signstack-cli/src/lib/base-command.js.map +1 -0
  47. package/dist/apps/signstack-cli/src/lib/config.d.ts +47 -0
  48. package/dist/apps/signstack-cli/src/lib/config.js +106 -0
  49. package/dist/apps/signstack-cli/src/lib/config.js.map +1 -0
  50. package/dist/apps/signstack-cli/src/lib/entity-data-resolver.d.ts +31 -0
  51. package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js +107 -0
  52. package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js.map +1 -0
  53. package/dist/apps/signstack-cli/src/lib/local-resource-loader.d.ts +72 -0
  54. package/dist/apps/signstack-cli/src/lib/local-resource-loader.js +238 -0
  55. package/dist/apps/signstack-cli/src/lib/local-resource-loader.js.map +1 -0
  56. package/dist/apps/signstack-cli/src/lib/path-utils.d.ts +4 -0
  57. package/dist/apps/signstack-cli/src/lib/path-utils.js +7 -0
  58. package/dist/apps/signstack-cli/src/lib/path-utils.js.map +1 -0
  59. package/dist/apps/signstack-cli/src/lib/payload-builder.d.ts +127 -0
  60. package/dist/apps/signstack-cli/src/lib/payload-builder.js +545 -0
  61. package/dist/apps/signstack-cli/src/lib/payload-builder.js.map +1 -0
  62. package/dist/apps/signstack-cli/src/lib/preview-handler.d.ts +95 -0
  63. package/dist/apps/signstack-cli/src/lib/preview-handler.js +611 -0
  64. package/dist/apps/signstack-cli/src/lib/preview-handler.js.map +1 -0
  65. package/dist/apps/signstack-cli/src/lib/preview-output-formatter.d.ts +63 -0
  66. package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js +198 -0
  67. package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js.map +1 -0
  68. package/dist/apps/signstack-cli/src/lib/public-api-client.d.ts +13 -0
  69. package/dist/apps/signstack-cli/src/lib/public-api-client.js +39 -0
  70. package/dist/apps/signstack-cli/src/lib/public-api-client.js.map +1 -0
  71. package/dist/apps/signstack-cli/src/lib/resource-puller.d.ts +131 -0
  72. package/dist/apps/signstack-cli/src/lib/resource-puller.js +800 -0
  73. package/dist/apps/signstack-cli/src/lib/resource-puller.js.map +1 -0
  74. package/dist/apps/signstack-cli/src/lib/resource-pusher.d.ts +87 -0
  75. package/dist/apps/signstack-cli/src/lib/resource-pusher.js +361 -0
  76. package/dist/apps/signstack-cli/src/lib/resource-pusher.js.map +1 -0
  77. package/dist/apps/signstack-cli/src/lib/resource-scanner.d.ts +29 -0
  78. package/dist/apps/signstack-cli/src/lib/resource-scanner.js +101 -0
  79. package/dist/apps/signstack-cli/src/lib/resource-scanner.js.map +1 -0
  80. package/dist/apps/signstack-cli/src/lib/resource-validator.d.ts +44 -0
  81. package/dist/apps/signstack-cli/src/lib/resource-validator.js +158 -0
  82. package/dist/apps/signstack-cli/src/lib/resource-validator.js.map +1 -0
  83. package/dist/apps/signstack-cli/src/lib/run-handler.d.ts +47 -0
  84. package/dist/apps/signstack-cli/src/lib/run-handler.js +266 -0
  85. package/dist/apps/signstack-cli/src/lib/run-handler.js.map +1 -0
  86. package/dist/apps/signstack-cli/src/lib/safe-path.d.ts +28 -0
  87. package/dist/apps/signstack-cli/src/lib/safe-path.js +44 -0
  88. package/dist/apps/signstack-cli/src/lib/safe-path.js.map +1 -0
  89. package/dist/apps/signstack-cli/src/lib/scenario-file.d.ts +35 -0
  90. package/dist/apps/signstack-cli/src/lib/scenario-file.js +80 -0
  91. package/dist/apps/signstack-cli/src/lib/scenario-file.js.map +1 -0
  92. package/dist/apps/signstack-cli/src/lib/schema-validator.d.ts +8 -0
  93. package/dist/apps/signstack-cli/src/lib/schema-validator.js +39 -0
  94. package/dist/apps/signstack-cli/src/lib/schema-validator.js.map +1 -0
  95. package/dist/apps/signstack-cli/src/lib/url-validator.d.ts +17 -0
  96. package/dist/apps/signstack-cli/src/lib/url-validator.js +61 -0
  97. package/dist/apps/signstack-cli/src/lib/url-validator.js.map +1 -0
  98. package/dist/apps/signstack-cli/src/lib/yaml-document-parser.d.ts +25 -0
  99. package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js +133 -0
  100. package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js.map +1 -0
  101. package/dist/apps/signstack-cli/src/lib/yaml-transforms.d.ts +3 -0
  102. package/dist/apps/signstack-cli/src/lib/yaml-transforms.js +32 -0
  103. package/dist/apps/signstack-cli/src/lib/yaml-transforms.js.map +1 -0
  104. package/dist/apps/signstack-cli/src/lib/yaml-writer.d.ts +47 -0
  105. package/dist/apps/signstack-cli/src/lib/yaml-writer.js +160 -0
  106. package/dist/apps/signstack-cli/src/lib/yaml-writer.js.map +1 -0
  107. package/dist/apps/signstack-cli/src/types/auth.types.d.ts +48 -0
  108. package/dist/apps/signstack-cli/src/types/auth.types.js +31 -0
  109. package/dist/apps/signstack-cli/src/types/auth.types.js.map +1 -0
  110. package/dist/apps/signstack-cli/src/types/schema.types.d.ts +14 -0
  111. package/dist/apps/signstack-cli/src/types/schema.types.js +16 -0
  112. package/dist/apps/signstack-cli/src/types/schema.types.js.map +1 -0
  113. package/dist/apps/signstack-cli/src/types/yaml.types.d.ts +144 -0
  114. package/dist/apps/signstack-cli/src/types/yaml.types.js +2 -0
  115. package/dist/apps/signstack-cli/src/types/yaml.types.js.map +1 -0
  116. package/dist/libs/common/base/src/index.d.ts +14 -0
  117. package/dist/libs/common/base/src/index.js +44 -0
  118. package/dist/libs/common/base/src/index.js.map +1 -0
  119. package/dist/libs/common/base/src/lib/address.util.d.ts +12 -0
  120. package/dist/libs/common/base/src/lib/address.util.js +55 -0
  121. package/dist/libs/common/base/src/lib/address.util.js.map +1 -0
  122. package/dist/libs/common/base/src/lib/country-code-data.d.ts +5 -0
  123. package/dist/libs/common/base/src/lib/country-code-data.js +1256 -0
  124. package/dist/libs/common/base/src/lib/country-code-data.js.map +1 -0
  125. package/dist/libs/common/base/src/lib/date.util.d.ts +13 -0
  126. package/dist/libs/common/base/src/lib/date.util.js +135 -0
  127. package/dist/libs/common/base/src/lib/date.util.js.map +1 -0
  128. package/dist/libs/common/base/src/lib/headers.d.ts +1 -0
  129. package/dist/libs/common/base/src/lib/headers.js +5 -0
  130. package/dist/libs/common/base/src/lib/headers.js.map +1 -0
  131. package/dist/libs/common/base/src/lib/jsonata.service.d.ts +32 -0
  132. package/dist/libs/common/base/src/lib/jsonata.service.js +207 -0
  133. package/dist/libs/common/base/src/lib/jsonata.service.js.map +1 -0
  134. package/dist/libs/common/base/src/lib/key-validation.constants.d.ts +37 -0
  135. package/dist/libs/common/base/src/lib/key-validation.constants.js +144 -0
  136. package/dist/libs/common/base/src/lib/key-validation.constants.js.map +1 -0
  137. package/dist/libs/common/base/src/lib/phone-util.d.ts +16 -0
  138. package/dist/libs/common/base/src/lib/phone-util.js +61 -0
  139. package/dist/libs/common/base/src/lib/phone-util.js.map +1 -0
  140. package/dist/libs/common/base/src/lib/schema-validation.util.d.ts +24 -0
  141. package/dist/libs/common/base/src/lib/schema-validation.util.js +155 -0
  142. package/dist/libs/common/base/src/lib/schema-validation.util.js.map +1 -0
  143. package/dist/libs/common/base/src/lib/string-builder.d.ts +48 -0
  144. package/dist/libs/common/base/src/lib/string-builder.js +90 -0
  145. package/dist/libs/common/base/src/lib/string-builder.js.map +1 -0
  146. package/dist/libs/common/base/src/lib/util.d.ts +20 -0
  147. package/dist/libs/common/base/src/lib/util.js +110 -0
  148. package/dist/libs/common/base/src/lib/util.js.map +1 -0
  149. package/dist/libs/signstack/base/schemas/asset.schema.json +220 -0
  150. package/dist/libs/signstack/base/schemas/blueprint.schema.json +485 -0
  151. package/dist/libs/signstack/base/schemas/jsonata-function.schema.json +185 -0
  152. package/dist/libs/signstack/base/schemas/schema.schema.json +97 -0
  153. package/dist/libs/signstack/base/schemas/template.schema.json +295 -0
  154. package/dist/libs/signstack/base/src/index.d.ts +28 -0
  155. package/dist/libs/signstack/base/src/index.js +32 -0
  156. package/dist/libs/signstack/base/src/index.js.map +1 -0
  157. package/dist/libs/signstack/base/src/lib/constants.d.ts +123 -0
  158. package/dist/libs/signstack/base/src/lib/constants.js +131 -0
  159. package/dist/libs/signstack/base/src/lib/constants.js.map +1 -0
  160. package/dist/libs/signstack/base/src/lib/hash.util.d.ts +58 -0
  161. package/dist/libs/signstack/base/src/lib/hash.util.js +90 -0
  162. package/dist/libs/signstack/base/src/lib/hash.util.js.map +1 -0
  163. package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.d.ts +29 -0
  164. package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js +93 -0
  165. package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js.map +1 -0
  166. package/dist/libs/signstack/base/src/lib/models/ai-chat.d.ts +41 -0
  167. package/dist/libs/signstack/base/src/lib/models/ai-chat.js +3 -0
  168. package/dist/libs/signstack/base/src/lib/models/ai-chat.js.map +1 -0
  169. package/dist/libs/signstack/base/src/lib/models/api-key.d.ts +54 -0
  170. package/dist/libs/signstack/base/src/lib/models/api-key.js +18 -0
  171. package/dist/libs/signstack/base/src/lib/models/api-key.js.map +1 -0
  172. package/dist/libs/signstack/base/src/lib/models/asset.d.ts +101 -0
  173. package/dist/libs/signstack/base/src/lib/models/asset.js +11 -0
  174. package/dist/libs/signstack/base/src/lib/models/asset.js.map +1 -0
  175. package/dist/libs/signstack/base/src/lib/models/auth.d.ts +142 -0
  176. package/dist/libs/signstack/base/src/lib/models/auth.js +35 -0
  177. package/dist/libs/signstack/base/src/lib/models/auth.js.map +1 -0
  178. package/dist/libs/signstack/base/src/lib/models/base.d.ts +134 -0
  179. package/dist/libs/signstack/base/src/lib/models/base.js +71 -0
  180. package/dist/libs/signstack/base/src/lib/models/base.js.map +1 -0
  181. package/dist/libs/signstack/base/src/lib/models/blueprint.d.ts +311 -0
  182. package/dist/libs/signstack/base/src/lib/models/blueprint.js +9 -0
  183. package/dist/libs/signstack/base/src/lib/models/blueprint.js.map +1 -0
  184. package/dist/libs/signstack/base/src/lib/models/file.d.ts +75 -0
  185. package/dist/libs/signstack/base/src/lib/models/file.js +9 -0
  186. package/dist/libs/signstack/base/src/lib/models/file.js.map +1 -0
  187. package/dist/libs/signstack/base/src/lib/models/jsonata-function.d.ts +111 -0
  188. package/dist/libs/signstack/base/src/lib/models/jsonata-function.js +19 -0
  189. package/dist/libs/signstack/base/src/lib/models/jsonata-function.js.map +1 -0
  190. package/dist/libs/signstack/base/src/lib/models/marketplace-listing.d.ts +132 -0
  191. package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js +22 -0
  192. package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js.map +1 -0
  193. package/dist/libs/signstack/base/src/lib/models/membership.d.ts +127 -0
  194. package/dist/libs/signstack/base/src/lib/models/membership.js +22 -0
  195. package/dist/libs/signstack/base/src/lib/models/membership.js.map +1 -0
  196. package/dist/libs/signstack/base/src/lib/models/namespace.d.ts +87 -0
  197. package/dist/libs/signstack/base/src/lib/models/namespace.js +57 -0
  198. package/dist/libs/signstack/base/src/lib/models/namespace.js.map +1 -0
  199. package/dist/libs/signstack/base/src/lib/models/organization.d.ts +79 -0
  200. package/dist/libs/signstack/base/src/lib/models/organization.js +41 -0
  201. package/dist/libs/signstack/base/src/lib/models/organization.js.map +1 -0
  202. package/dist/libs/signstack/base/src/lib/models/render-job.d.ts +88 -0
  203. package/dist/libs/signstack/base/src/lib/models/render-job.js +3 -0
  204. package/dist/libs/signstack/base/src/lib/models/render-job.js.map +1 -0
  205. package/dist/libs/signstack/base/src/lib/models/resource-edge.d.ts +60 -0
  206. package/dist/libs/signstack/base/src/lib/models/resource-edge.js +202 -0
  207. package/dist/libs/signstack/base/src/lib/models/resource-edge.js.map +1 -0
  208. package/dist/libs/signstack/base/src/lib/models/scenario.d.ts +138 -0
  209. package/dist/libs/signstack/base/src/lib/models/scenario.js +14 -0
  210. package/dist/libs/signstack/base/src/lib/models/scenario.js.map +1 -0
  211. package/dist/libs/signstack/base/src/lib/models/schema.d.ts +131 -0
  212. package/dist/libs/signstack/base/src/lib/models/schema.js +44 -0
  213. package/dist/libs/signstack/base/src/lib/models/schema.js.map +1 -0
  214. package/dist/libs/signstack/base/src/lib/models/shareable-link.d.ts +215 -0
  215. package/dist/libs/signstack/base/src/lib/models/shareable-link.js +27 -0
  216. package/dist/libs/signstack/base/src/lib/models/shareable-link.js.map +1 -0
  217. package/dist/libs/signstack/base/src/lib/models/subscription.d.ts +279 -0
  218. package/dist/libs/signstack/base/src/lib/models/subscription.js +105 -0
  219. package/dist/libs/signstack/base/src/lib/models/subscription.js.map +1 -0
  220. package/dist/libs/signstack/base/src/lib/models/template.d.ts +248 -0
  221. package/dist/libs/signstack/base/src/lib/models/template.js +32 -0
  222. package/dist/libs/signstack/base/src/lib/models/template.js.map +1 -0
  223. package/dist/libs/signstack/base/src/lib/models/user.d.ts +30 -0
  224. package/dist/libs/signstack/base/src/lib/models/user.js +3 -0
  225. package/dist/libs/signstack/base/src/lib/models/user.js.map +1 -0
  226. package/dist/libs/signstack/base/src/lib/models/webhook.d.ts +223 -0
  227. package/dist/libs/signstack/base/src/lib/models/webhook.js +62 -0
  228. package/dist/libs/signstack/base/src/lib/models/webhook.js.map +1 -0
  229. package/dist/libs/signstack/base/src/lib/models/workflow.d.ts +917 -0
  230. package/dist/libs/signstack/base/src/lib/models/workflow.js +152 -0
  231. package/dist/libs/signstack/base/src/lib/models/workflow.js.map +1 -0
  232. package/dist/libs/signstack/base/src/lib/util.d.ts +92 -0
  233. package/dist/libs/signstack/base/src/lib/util.js +406 -0
  234. package/dist/libs/signstack/base/src/lib/util.js.map +1 -0
  235. package/dist/libs/signstack/base/src/lib/validation/dependency-graph.d.ts +94 -0
  236. package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js +446 -0
  237. package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js.map +1 -0
  238. package/dist/libs/signstack/base/src/lib/validation/graph.types.d.ts +57 -0
  239. package/dist/libs/signstack/base/src/lib/validation/graph.types.js +8 -0
  240. package/dist/libs/signstack/base/src/lib/validation/graph.types.js.map +1 -0
  241. package/dist/libs/signstack/base/src/lib/validation/index.d.ts +9 -0
  242. package/dist/libs/signstack/base/src/lib/validation/index.js +23 -0
  243. package/dist/libs/signstack/base/src/lib/validation/index.js.map +1 -0
  244. package/dist/libs/signstack/base/src/lib/validation/resource-schemas.d.ts +3 -0
  245. package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js +27 -0
  246. package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js.map +1 -0
  247. package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.d.ts +57 -0
  248. package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js +57 -0
  249. package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js.map +1 -0
  250. package/dist/libs/signstack/base/src/lib/validation/schema-validator.d.ts +38 -0
  251. package/dist/libs/signstack/base/src/lib/validation/schema-validator.js +146 -0
  252. package/dist/libs/signstack/base/src/lib/validation/schema-validator.js.map +1 -0
  253. package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.d.ts +22 -0
  254. package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js +69 -0
  255. package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js.map +1 -0
  256. package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.d.ts +37 -0
  257. package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js +250 -0
  258. package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js.map +1 -0
  259. package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.d.ts +24 -0
  260. package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js +98 -0
  261. package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js.map +1 -0
  262. package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.d.ts +12 -0
  263. package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js +50 -0
  264. package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js.map +1 -0
  265. package/dist/libs/signstack/base/src/lib/yaml-spec-converter.d.ts +101 -0
  266. package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js +998 -0
  267. package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js.map +1 -0
  268. package/oclif.manifest.json +822 -0
  269. package/package.json +101 -0
@@ -0,0 +1,460 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { existsSync, realpathSync, statSync } from 'node:fs';
3
+ import { dirname, resolve, sep } from 'node:path';
4
+ import { safeResolvePath } from '../lib/safe-path.js';
5
+ import pc from 'picocolors';
6
+ import { DRAFT_VERSION, DependencyGraph, } from '@signstack/base';
7
+ import { AuthenticatedCommand } from '../lib/base-command.js';
8
+ import { promptResourceSelection } from '../lib/resource-scanner.js';
9
+ import { ResourcePusher, } from '../lib/resource-pusher.js';
10
+ import { getSchemaValidator } from '../lib/schema-validator.js';
11
+ import { CLI_FLAG_TO_SCHEMA_KIND, getAvailableSchemaKinds, SCHEMA_FLAG_OPTIONS, SchemaKind, } from '../types/schema.types.js';
12
+ import { discoverYamlFiles, parseAllYamlFiles, SEPARATOR_LENGTH, } from '../lib/yaml-document-parser.js';
13
+ export default class Push extends AuthenticatedCommand {
14
+ static description = 'Push a resource and its dependencies to the API. Discovers resources from a local directory, validates, then pushes in dependency order.';
15
+ static examples = [
16
+ {
17
+ command: '<%= config.bin %> push my_blueprint@1.0.0 --kind blueprint',
18
+ description: 'Push a blueprint and its dependencies from the current directory',
19
+ },
20
+ {
21
+ command: '<%= config.bin %> push my_template@1.0.0 -d ./my-project',
22
+ description: 'Push a template (kind inferred from YAML) from a specific directory',
23
+ },
24
+ {
25
+ command: '<%= config.bin %> push my_blueprint@1.0.0 --kind blueprint --dry-run',
26
+ description: 'Validate and show what would be pushed without calling the API',
27
+ },
28
+ ];
29
+ static args = {
30
+ resource: Args.string({
31
+ description: 'Resource reference as key@version (e.g., my_blueprint@1.0.0)',
32
+ required: false,
33
+ }),
34
+ };
35
+ static flags = {
36
+ ...AuthenticatedCommand.baseFlags,
37
+ kind: Flags.string({
38
+ char: 'k',
39
+ description: 'Resource kind (optional — inferred from YAML files if omitted)',
40
+ required: false,
41
+ options: SCHEMA_FLAG_OPTIONS,
42
+ }),
43
+ dir: Flags.string({
44
+ char: 'd',
45
+ description: 'Directory containing YAML resource files. The specified resource and all its dependencies must be present in this directory.',
46
+ default: '.',
47
+ }),
48
+ verbose: Flags.boolean({
49
+ char: 'v',
50
+ description: 'Show detailed output',
51
+ default: false,
52
+ }),
53
+ 'dry-run': Flags.boolean({
54
+ description: 'Validate and show what would be pushed without calling the API',
55
+ default: false,
56
+ }),
57
+ json: Flags.boolean({
58
+ description: 'Output in JSON format',
59
+ default: false,
60
+ }),
61
+ };
62
+ async run() {
63
+ const { args, flags } = await this.parse(Push);
64
+ // Step 1: Resolve directory (needed for both arg and interactive paths)
65
+ const folderPath = resolve(flags.dir);
66
+ if (!existsSync(folderPath) || !statSync(folderPath).isDirectory()) {
67
+ this.error(`Path is not a directory: ${folderPath}`, {
68
+ exit: 1,
69
+ suggestions: [
70
+ 'Provide a directory containing YAML resource files',
71
+ `${this.config.bin} push my_resource@1.0.0 -d ./my-project`,
72
+ ],
73
+ });
74
+ }
75
+ // Security: ensure the resolved path stays within the current working directory
76
+ const cwd = resolve('.') + sep;
77
+ const realFolderPath = realpathSync(folderPath) + sep;
78
+ if (!realFolderPath.startsWith(cwd)) {
79
+ this.error(`Path must be within the current working directory. Resolved path '${folderPath}' is outside '${resolve('.')}'.`, { exit: 1 });
80
+ }
81
+ // Step 2: Parse resource reference or prompt for selection
82
+ let ref;
83
+ let selectedKind;
84
+ if (args.resource) {
85
+ ref = this.sanitizeInput(args.resource);
86
+ }
87
+ else {
88
+ if (flags.json) {
89
+ this.error('Provide a resource reference when using --json.', {
90
+ exit: 1,
91
+ suggestions: ['signstack push my_blueprint@1.0.0 --json'],
92
+ });
93
+ }
94
+ const selected = await promptResourceSelection(folderPath, getAvailableSchemaKinds(), 'Select a resource to push');
95
+ if (!selected) {
96
+ this.error('No resources found in the specified directory.', {
97
+ exit: 1,
98
+ suggestions: [
99
+ 'Ensure the directory contains valid SignStack YAML files',
100
+ 'Use -d to specify a different directory',
101
+ ],
102
+ });
103
+ }
104
+ ref = selected.ref;
105
+ selectedKind = selected.kind;
106
+ }
107
+ const { key, version } = this.parseResourceRef(ref, 'resource', true);
108
+ // ── Step 3: Discover and parse YAML files ────────────────────
109
+ const filePaths = await discoverYamlFiles(folderPath);
110
+ if (filePaths.length === 0) {
111
+ this.error('No YAML files found in the specified directory', {
112
+ exit: 1,
113
+ suggestions: ['Ensure the directory contains .yaml or .yml files'],
114
+ });
115
+ }
116
+ this.log(pc.cyan(`\nFound ${filePaths.length} YAML file(s) in ${folderPath}\n`));
117
+ const { documents, parseErrors } = parseAllYamlFiles(filePaths);
118
+ if (parseErrors.length > 0) {
119
+ this.log(pc.red(`\n${parseErrors.length} parse error(s) found:\n`));
120
+ for (const err of parseErrors) {
121
+ this.log(pc.red(` • ${err.filePath}: ${err.errors[0]?.message}`));
122
+ }
123
+ this.log('');
124
+ this.error('Fix parse errors before pushing.', {
125
+ exit: 1,
126
+ suggestions: ['Check YAML syntax in the files listed above'],
127
+ });
128
+ }
129
+ if (documents.length === 0) {
130
+ this.error('No valid SignStack documents found in the directory.', {
131
+ exit: 1,
132
+ suggestions: [
133
+ 'Ensure YAML files have a valid `kind` field (Blueprint, Template, Schema, Asset, or JsonataFunction)',
134
+ 'Ensure YAML files have `metadata.key` and `metadata.version`',
135
+ ],
136
+ });
137
+ }
138
+ this.log(pc.dim(`Parsed ${documents.length} resource(s)\n`));
139
+ // ── Step 4: Resolve resource kind ────────────────────────────
140
+ const schemaKind = selectedKind ??
141
+ this.resolveResourceKind(flags.kind, key, version, documents);
142
+ // ── Step 5: Build dependency graph and extract subtree ────────
143
+ const graph = DependencyGraph.fromDocuments(documents);
144
+ const rootId = DependencyGraph.createId(schemaKind, key, version);
145
+ if (!graph.nodes.has(rootId)) {
146
+ this.error(`Resource ${schemaKind}:${key}@${version} not found in ${folderPath}.`, {
147
+ exit: 1,
148
+ suggestions: [
149
+ 'Ensure the YAML file for this resource is present in the directory',
150
+ `Check that metadata.key is "${key}" and metadata.version is "${version}"`,
151
+ ],
152
+ });
153
+ }
154
+ const rootIsDraft = version === DRAFT_VERSION;
155
+ const subtreeIds = graph.getTransitiveDependencies(rootId);
156
+ this.log(pc.dim(`Resource ${schemaKind}:${key}@${version} has ${subtreeIds.size - 1} dependenc${subtreeIds.size - 1 === 1 ? 'y' : 'ies'}\n`));
157
+ // ── Step 6: Detect cycles ────────────────────────────────────
158
+ const sortResult = graph.topologicalSort();
159
+ if (!sortResult.isAcyclic) {
160
+ this.log(pc.red('\nCircular dependencies detected:\n'));
161
+ for (const cycle of sortResult.cycles) {
162
+ const cycleStr = cycle
163
+ .map((id) => {
164
+ const { kind: k, key: ck, version: cv, } = DependencyGraph.parseId(id);
165
+ return `${k}:${ck}@${cv}`;
166
+ })
167
+ .join(' → ');
168
+ this.log(pc.red(` • ${cycleStr}`));
169
+ }
170
+ this.log('');
171
+ this.error('Cannot push resources with circular dependencies. Fix cycles first.', {
172
+ exit: 1,
173
+ suggestions: [
174
+ 'Review the cycles listed above and remove circular references',
175
+ ],
176
+ });
177
+ }
178
+ const filteredOrder = sortResult.order.filter((id) => subtreeIds.has(id));
179
+ // ── Step 7: Draft dependency rule (UPDATED LOGIC) ─────────────
180
+ if (!rootIsDraft) {
181
+ // Only enforce draft-dependency rule when root is ACTIVE
182
+ const draftErrors = graph.validateDraftDependencies();
183
+ const relevantDraftErrors = draftErrors.filter((err) => subtreeIds.has(err.sourceId));
184
+ if (relevantDraftErrors.length > 0) {
185
+ this.log(pc.red('\nDraft dependency violations:\n'));
186
+ for (const err of relevantDraftErrors) {
187
+ this.log(pc.red(` • ${err.message}`));
188
+ }
189
+ this.log('');
190
+ this.error('Versioned resources cannot depend on draft resources. Publish them before pushing.', {
191
+ exit: 1,
192
+ suggestions: [
193
+ 'Set dependent resources to semantic versions (1.0.0, 2.1.0, etc.), or set the root resource to version: draft',
194
+ ],
195
+ });
196
+ }
197
+ }
198
+ // ── Step 8: Validate (schema + deps + file refs) ─────────────
199
+ const validationPassed = this.runValidation(graph, filteredOrder, flags.verbose);
200
+ if (!validationPassed) {
201
+ this.error('Validation failed. Fix all errors before pushing.', {
202
+ exit: 1,
203
+ suggestions: ['Fix the validation errors listed above'],
204
+ });
205
+ }
206
+ this.log(pc.green('Validation passed ✓\n'));
207
+ // ── Step 9: Print push plan ──────────────────────────────────
208
+ this.printPushPlan(graph, filteredOrder, flags.verbose);
209
+ // ── Step 10: Push resources (or dry-run) ─────────────────────
210
+ if (flags['dry-run']) {
211
+ if (flags.json) {
212
+ const resources = filteredOrder.map((id) => {
213
+ const { kind: k, key: rk, version: rv } = DependencyGraph.parseId(id);
214
+ return { kind: k, key: rk, version: rv };
215
+ });
216
+ this.log(JSON.stringify({ dryRun: true, resources }));
217
+ }
218
+ else {
219
+ this.log(pc.yellow('\n--dry-run: No resources were pushed.\n'));
220
+ }
221
+ return;
222
+ }
223
+ const summary = await this.pushResources(graph, filteredOrder, flags.verbose);
224
+ // ── Step 11: Print summary ───────────────────────────────────
225
+ if (flags.json) {
226
+ this.log(JSON.stringify({
227
+ total: summary.total,
228
+ created: summary.created,
229
+ alreadyExisted: summary.alreadyExisted,
230
+ failed: summary.failed,
231
+ results: summary.results.map((r) => ({
232
+ resourceId: r.resourceId,
233
+ success: r.success,
234
+ alreadyExists: r.alreadyExists,
235
+ error: r.error,
236
+ })),
237
+ }));
238
+ }
239
+ else {
240
+ this.printPushSummary(summary);
241
+ }
242
+ if (summary.failed > 0) {
243
+ this.exit(1);
244
+ }
245
+ }
246
+ /**
247
+ * Resolve the resource kind — from --kind flag or inferred from YAML files.
248
+ */
249
+ resolveResourceKind(kindFlag, key, version, documents) {
250
+ if (kindFlag) {
251
+ return CLI_FLAG_TO_SCHEMA_KIND[kindFlag];
252
+ }
253
+ // Find documents matching key@version
254
+ const matches = documents.filter((doc) => doc.key === key && doc.version === version);
255
+ if (matches.length === 0) {
256
+ this.error(`No resource with key "${key}" and version "${version}" found in the directory.`, {
257
+ exit: 1,
258
+ suggestions: [
259
+ 'Check that your YAML files contain a resource with the specified key and version',
260
+ 'Use --kind to specify the resource kind explicitly',
261
+ ],
262
+ });
263
+ }
264
+ if (matches.length === 1) {
265
+ this.log(pc.dim(`Inferred kind: ${matches[0].kind} (from ${matches[0].filePath})\n`));
266
+ return matches[0].kind;
267
+ }
268
+ // Multiple matches — list them and ask user to disambiguate with --kind
269
+ const kindList = matches.map((m) => m.kind).join(', ');
270
+ this.error(`Multiple resources found for ${key}@${version}: ${kindList}. Use --kind to disambiguate.`, {
271
+ exit: 1,
272
+ suggestions: matches.map((m) => `${this.config.bin} push ${key}@${version} --kind ${Object.entries(CLI_FLAG_TO_SCHEMA_KIND).find(([, v]) => v === m.kind)?.[0] ?? m.kind.toLowerCase()}`),
273
+ });
274
+ }
275
+ /**
276
+ * Run schema validation on all documents in topological order.
277
+ * Also validates dependencies and file references.
278
+ * Returns true if all validations pass.
279
+ */
280
+ runValidation(graph, order, verbose) {
281
+ const validator = getSchemaValidator();
282
+ let hasErrors = false;
283
+ if (verbose) {
284
+ this.log(pc.dim('Running schema validation...\n'));
285
+ }
286
+ // Schema validation in topological order
287
+ for (const resourceId of order) {
288
+ const doc = graph.nodes.get(resourceId);
289
+ if (!doc)
290
+ continue;
291
+ const result = validator.validate(doc.content, doc.filePath, doc.kind);
292
+ if (!result.valid) {
293
+ hasErrors = true;
294
+ this.printValidationError(result, verbose);
295
+ }
296
+ else if (verbose) {
297
+ this.log(`${pc.green('✓')} ${doc.kind}:${doc.key}@${doc.version}`);
298
+ }
299
+ }
300
+ // Dependency existence validation — scoped to the subtree
301
+ const orderSet = new Set(order);
302
+ const missing = graph.getMissingDependencies();
303
+ if (missing.size > 0) {
304
+ for (const [sourceId, missingDeps] of missing) {
305
+ if (!orderSet.has(sourceId))
306
+ continue; // Skip resources outside subtree
307
+ hasErrors = true;
308
+ const source = DependencyGraph.parseId(sourceId);
309
+ for (const depId of missingDeps) {
310
+ const dep = DependencyGraph.parseId(depId);
311
+ this.log(pc.red(` • ${source.kind}:${source.key}@${source.version} → missing ${dep.kind}:${dep.key}@${dep.version}`));
312
+ }
313
+ }
314
+ if (hasErrors)
315
+ this.log('');
316
+ }
317
+ // File reference validation
318
+ for (const resourceId of order) {
319
+ const doc = graph.nodes.get(resourceId);
320
+ if (!doc)
321
+ continue;
322
+ if (doc.kind !== SchemaKind.Schema && doc.kind !== SchemaKind.Asset) {
323
+ continue;
324
+ }
325
+ const spec = doc.content['spec'];
326
+ const filePath = spec?.['file'];
327
+ if (!filePath)
328
+ continue;
329
+ const baseDir = resolve(dirname(doc.filePath)) + sep;
330
+ const pathResult = safeResolvePath(baseDir, filePath);
331
+ if (!pathResult.valid) {
332
+ hasErrors = true;
333
+ const label = `${doc.kind}:${doc.key}@${doc.version}`;
334
+ const errorSuffix = pathResult.error ? ` (${pathResult.error})` : '';
335
+ const messages = {
336
+ traversal: `file path '${filePath}' escapes the resource directory`,
337
+ not_found: `file not found: ${filePath}`,
338
+ symlink_escape: `file path '${filePath}' resolves to a symlink outside the resource directory`,
339
+ resolve_error: `unable to resolve file path: ${filePath}${errorSuffix}`,
340
+ };
341
+ this.log(pc.red(` • ${label} → ${messages[pathResult.reason]}`));
342
+ }
343
+ }
344
+ if (verbose && !hasErrors) {
345
+ this.log('');
346
+ }
347
+ return !hasErrors;
348
+ }
349
+ /**
350
+ * Print a validation error
351
+ */
352
+ printValidationError(result, verbose) {
353
+ const label = result.resourceKey
354
+ ? `${result.schemaKind}:${result.resourceKey}@${result.resourceVersion}`
355
+ : result.filePath;
356
+ this.log(`${pc.red('✗')} ${label}`);
357
+ for (const error of result.errors) {
358
+ this.log(` ${pc.red('•')} ${error.message}`);
359
+ if (verbose) {
360
+ this.log(pc.dim(` Path: ${error.path}`));
361
+ }
362
+ }
363
+ this.log('');
364
+ }
365
+ /**
366
+ * Print the push plan showing what will be created in what order
367
+ */
368
+ printPushPlan(graph, order, verbose) {
369
+ this.log(pc.cyan('Push plan:'));
370
+ this.log(pc.dim(` ${order.length} resource(s) will be pushed in dependency order\n`));
371
+ // Group by kind for summary
372
+ const kindCounts = new Map();
373
+ for (const id of order) {
374
+ const { kind } = DependencyGraph.parseId(id);
375
+ kindCounts.set(kind, (kindCounts.get(kind) || 0) + 1);
376
+ }
377
+ for (const [kind, count] of kindCounts) {
378
+ this.log(pc.dim(` ${kind}: ${count}`));
379
+ }
380
+ this.log('');
381
+ if (verbose) {
382
+ this.log(pc.dim(' Order:'));
383
+ for (let i = 0; i < order.length; i++) {
384
+ const id = order[i];
385
+ const { kind, key: rk, version: rv } = DependencyGraph.parseId(id);
386
+ const doc = graph.nodes.get(id);
387
+ this.log(pc.dim(` ${i + 1}. ${kind}:${rk}@${rv}`));
388
+ }
389
+ this.log('');
390
+ }
391
+ }
392
+ /**
393
+ * Push all resources in topological order
394
+ */
395
+ async pushResources(graph, order, verbose) {
396
+ const pusher = new ResourcePusher(this.apiClient, this.cliConfig.orgId, this.cliConfig.namespaceKey, (msg) => this.log(msg));
397
+ const results = [];
398
+ let created = 0;
399
+ let alreadyExisted = 0;
400
+ let failed = 0;
401
+ this.log(pc.cyan('Pushing resources...\n'));
402
+ for (const resourceId of order) {
403
+ const doc = graph.nodes.get(resourceId);
404
+ if (!doc)
405
+ continue;
406
+ const label = `${doc.kind}:${doc.key}@${doc.version}`;
407
+ const result = await pusher.pushResource(doc);
408
+ results.push(result);
409
+ if (result.success && result.alreadyExists) {
410
+ alreadyExisted++;
411
+ this.log(`${pc.yellow('○')} ${label} ${pc.dim('(already exists, skipped)')}`);
412
+ }
413
+ else if (result.success) {
414
+ created++;
415
+ this.log(`${pc.green('✓')} ${label} ${pc.dim('created')}`);
416
+ }
417
+ else {
418
+ failed++;
419
+ this.log(`${pc.red('✗')} ${label}`);
420
+ this.log(pc.red(` ${result.error}`));
421
+ if (verbose) {
422
+ const dependents = graph.reverseDeps.get(resourceId);
423
+ if (dependents && dependents.size > 0) {
424
+ this.log(pc.dim(` Dependents that may be affected: ${Array.from(dependents)
425
+ .map((d) => {
426
+ const { key: dk, version: dv } = DependencyGraph.parseId(d);
427
+ return `${dk}@${dv}`;
428
+ })
429
+ .join(', ')}`));
430
+ }
431
+ }
432
+ }
433
+ }
434
+ return {
435
+ total: results.length,
436
+ created,
437
+ alreadyExisted,
438
+ failed,
439
+ results,
440
+ };
441
+ }
442
+ /**
443
+ * Print push summary
444
+ */
445
+ printPushSummary(summary) {
446
+ this.log(pc.dim('\n' + '─'.repeat(SEPARATOR_LENGTH)));
447
+ const parts = [`\nPush complete: ${summary.total} resource(s)`];
448
+ if (summary.created > 0) {
449
+ parts.push(pc.green(`${summary.created} created`));
450
+ }
451
+ if (summary.alreadyExisted > 0) {
452
+ parts.push(pc.yellow(`${summary.alreadyExisted} already existed`));
453
+ }
454
+ if (summary.failed > 0) {
455
+ parts.push(pc.red(`${summary.failed} failed`));
456
+ }
457
+ this.log(parts.join(', ') + '\n');
458
+ }
459
+ }
460
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../../../src/commands/push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { AuthenticatedCommand } from '../lib/base-command.js';
2
+ export default class Run extends AuthenticatedCommand {
3
+ static description: string;
4
+ static examples: {
5
+ command: string;
6
+ description: string;
7
+ }[];
8
+ static args: {
9
+ blueprint: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
10
+ };
11
+ static flags: {
12
+ blueprint: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ path: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
+ resolve: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
+ scenario: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
+ mode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
+ 'api-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
19
+ };
20
+ run(): Promise<void>;
21
+ private createRunHandler;
22
+ }
@@ -0,0 +1,126 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { CreateWorkflowMode } from '@signstack/base';
3
+ import { AuthenticatedCommand } from '../lib/base-command.js';
4
+ import { promptResourceSelection } from '../lib/resource-scanner.js';
5
+ import { RunHandler } from '../lib/run-handler.js';
6
+ import { SchemaKind } from '../types/schema.types.js';
7
+ export default class Run extends AuthenticatedCommand {
8
+ static description = 'Create and start a workflow from a blueprint';
9
+ static examples = [
10
+ {
11
+ command: '<%= config.bin %> run my_blueprint@1.0.0',
12
+ description: 'Run using local files + API fallback (default)',
13
+ },
14
+ {
15
+ command: '<%= config.bin %> run my_blueprint',
16
+ description: 'Run latest version (resolved from API)',
17
+ },
18
+ {
19
+ command: '<%= config.bin %> run my_blueprint@1.0.0 --scenario my-scenario',
20
+ description: 'Run with a specific scenario',
21
+ },
22
+ {
23
+ command: '<%= config.bin %> run my_blueprint@1.0.0 --mode Review',
24
+ description: 'Run in review mode',
25
+ },
26
+ {
27
+ command: '<%= config.bin %> run my_blueprint@1.0.0 -p ./other-project',
28
+ description: 'Use a different folder for local files',
29
+ },
30
+ {
31
+ command: '<%= config.bin %> run my_blueprint@1.0.0 --resolve local',
32
+ description: 'Strict local mode — all resources must exist in files',
33
+ },
34
+ {
35
+ command: '<%= config.bin %> run my_blueprint@1.0.0 --resolve remote',
36
+ description: 'Skip local files — resolve everything from API',
37
+ },
38
+ {
39
+ command: '<%= config.bin %> run my_blueprint@1.0.0 --json',
40
+ description: 'Output in JSON format',
41
+ },
42
+ ];
43
+ static args = {
44
+ blueprint: Args.string({
45
+ description: 'Blueprint reference as key@version (e.g., my_blueprint@1.0.0) or key (uses latest version)',
46
+ required: false,
47
+ }),
48
+ };
49
+ static flags = {
50
+ ...AuthenticatedCommand.baseFlags,
51
+ blueprint: Flags.string({
52
+ char: 'b',
53
+ description: 'Blueprint reference (alternative to positional argument)',
54
+ hidden: true,
55
+ }),
56
+ path: Flags.string({
57
+ char: 'p',
58
+ description: 'Folder path containing YAML resource files (default: current directory)',
59
+ default: '.',
60
+ }),
61
+ resolve: Flags.string({
62
+ char: 'r',
63
+ description: 'Resource resolution strategy: local (files only), remote (API only), auto (files first, API fallback)',
64
+ options: ['local', 'remote', 'auto'],
65
+ }),
66
+ scenario: Flags.string({
67
+ char: 's',
68
+ description: 'Scenario key for entity data (optional — auto-generates if not provided)',
69
+ }),
70
+ mode: Flags.string({
71
+ char: 'm',
72
+ description: 'Workflow creation mode',
73
+ options: [CreateWorkflowMode.Run, CreateWorkflowMode.Review],
74
+ }),
75
+ json: Flags.boolean({
76
+ description: 'Output in JSON format',
77
+ default: false,
78
+ }),
79
+ };
80
+ async run() {
81
+ const { args, flags } = await this.parse(Run);
82
+ const handler = this.createRunHandler();
83
+ // Resolve blueprint from positional arg or --blueprint flag
84
+ const blueprintRef = args.blueprint ?? flags.blueprint;
85
+ let resolvedRef = blueprintRef;
86
+ if (!resolvedRef) {
87
+ if (flags.json) {
88
+ this.error('Provide a blueprint reference.', {
89
+ exit: 1,
90
+ suggestions: [
91
+ 'signstack run my_blueprint@1.0.0 --json',
92
+ 'Use -p to specify a folder with blueprint YAML files',
93
+ ],
94
+ });
95
+ }
96
+ const selected = await promptResourceSelection(flags.path, [SchemaKind.Blueprint], 'Select a blueprint');
97
+ if (!selected) {
98
+ this.error('No blueprints found in the current directory.', {
99
+ exit: 1,
100
+ suggestions: [
101
+ 'signstack run my_blueprint@1.0.0',
102
+ 'Use -p to specify a different folder',
103
+ ],
104
+ });
105
+ }
106
+ resolvedRef = selected.ref;
107
+ flags.path = selected.resourceDir;
108
+ }
109
+ const resolveMode = flags.resolve;
110
+ if (resolveMode === 'remote') {
111
+ // Explicit remote — API resolves everything
112
+ const { key, version } = this.parseResourceRef(this.sanitizeInput(resolvedRef), 'blueprint');
113
+ await handler.runRemote(key, version, flags.scenario ? this.sanitizeInput(flags.scenario) : undefined, flags.mode, flags.json);
114
+ }
115
+ else {
116
+ // Default: hybrid (local files + API fallback)
117
+ // key-only refs resolve to the highest local version
118
+ const inlineOnly = resolveMode === 'local';
119
+ await handler.runLocal(flags.path, this.sanitizeInput(resolvedRef), flags.scenario ? this.sanitizeInput(flags.scenario) : undefined, flags.mode, flags.json, inlineOnly);
120
+ }
121
+ }
122
+ createRunHandler() {
123
+ return new RunHandler(this.apiClient, { orgId: this.cliConfig.orgId, namespaceKey: this.cliConfig.namespaceKey }, this.log.bind(this), this.error.bind(this));
124
+ }
125
+ }
126
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class Test extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ run(): Promise<void>;
6
+ }