@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
package/README.md ADDED
@@ -0,0 +1,458 @@
1
+ # signstack
2
+
3
+ Modern Sign CLI — command-line tool for managing SignStack document workflows. Validate, preview, push, and run document blueprints from your terminal.
4
+
5
+ Built with [oclif](https://oclif.io).
6
+
7
+ [![Version](https://img.shields.io/npm/v/@signstack/cli.svg)](https://npmjs.org/package/@signstack/cli)
8
+
9
+ ## Requirements
10
+
11
+ - Node.js >= 18.0.0
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install -g @signstack/cli
17
+ ```
18
+
19
+ This installs the `signstack` command globally.
20
+
21
+ Or use with npx:
22
+
23
+ ```bash
24
+ npx @signstack/cli <command>
25
+ ```
26
+
27
+ ## Quick Start
28
+
29
+ ```bash
30
+ # 1. Authenticate
31
+ signstack auth login
32
+
33
+ # 2. Validate your YAML resources
34
+ signstack validate
35
+
36
+ # 3. Preview a blueprint
37
+ signstack preview my_blueprint@1.0.0
38
+
39
+ # 4. Push resources to the API
40
+ signstack push
41
+
42
+ # 5. Run a workflow
43
+ signstack run my_blueprint@1.0.0
44
+ ```
45
+
46
+ ## Shell Completions
47
+
48
+ Set up tab completions for your shell:
49
+
50
+ ```bash
51
+ signstack autocomplete
52
+ ```
53
+
54
+ Follow the printed instructions. Supports bash, zsh, and fish.
55
+
56
+ ---
57
+
58
+ ## Commands
59
+
60
+ | Command | Description | Auth Required |
61
+ |---------|-------------|:---:|
62
+ | [`generate`](#generate) | Browse public blueprints or bootstrap a new project with AI tools | No |
63
+ | [`init`](#init) | Show how to use AI tools to generate contracts | No |
64
+ | [`auth login`](#auth-login) | Authenticate with an API key | No |
65
+ | [`auth logout`](#auth-logout) | Remove stored credentials | No |
66
+ | [`auth whoami`](#auth-whoami) | Show current user and config | No |
67
+ | [`validate`](#validate) | Validate YAML files with dependency analysis | No |
68
+ | [`push`](#push) | Push resources to the API | Yes |
69
+ | [`preview`](#preview) | Preview a blueprint or template as PDF | Yes |
70
+ | [`run`](#run) | Create and start a workflow | Yes |
71
+ | `help [COMMAND]` | Display help for a command | No |
72
+ | `update` | Update the CLI | No |
73
+ | `autocomplete` | Set up shell completions | No |
74
+
75
+ ---
76
+
77
+ ### `generate`
78
+
79
+ Bootstrap a new SignStack project. Browses public blueprints in the SignStack Library one page at a time (5 per page) and downloads the selected listing + all its dependencies as local YAML files. Pick **+ New** to print AI-tool instructions instead (Claude Code, Cursor, ChatGPT, Gemini).
80
+
81
+ ```bash
82
+ # Browse the library interactively
83
+ signstack generate
84
+
85
+ # Download into a specific parent directory
86
+ signstack generate -o ./projects
87
+ ```
88
+
89
+ No authentication required — the command uses the public library endpoints and only shows listings with `scope: public`.
90
+
91
+ ---
92
+
93
+ ### `init`
94
+
95
+ Show how to use AI tools (Claude Code, Cursor, ChatGPT, Gemini) to generate SignStack contracts from natural language descriptions.
96
+
97
+ ```bash
98
+ signstack init
99
+ ```
100
+
101
+ Prints a guide with the exact invocation for each AI tool and an example prompt.
102
+
103
+ ---
104
+
105
+ ### `auth login`
106
+
107
+ Authenticate with the SignStack API using an API key. Credentials are stored locally in a config file.
108
+
109
+ ```bash
110
+ # Interactive (recommended)
111
+ signstack auth login
112
+
113
+ # Via environment variable
114
+ SIGNSTACK_API_KEY=sk_ns_live_xxx signstack auth login
115
+
116
+ # Pipe from stdin (CI/scripts)
117
+ echo "$SIGNSTACK_API_KEY" | signstack auth login --api-key-stdin
118
+
119
+ # Custom API endpoint
120
+ signstack auth login --api-url https://api.custom.io
121
+ ```
122
+
123
+ | Flag | Short | Description |
124
+ |------|-------|-------------|
125
+ | `--api-key` | `-k` | API key (insecure — prefer interactive or stdin). Also reads `SIGNSTACK_API_KEY` env var. |
126
+ | `--api-key-stdin` | | Read API key from stdin |
127
+ | `--api-url` | `-u` | API URL (default: production). Also reads `SIGNSTACK_API_URL` env var. |
128
+ | `--force` | `-f` | Force login even if already logged in |
129
+ | `--json` | | Output in JSON format |
130
+
131
+ **API key format:** `sk_{namespace}_{live|test}_{publicKey}_{secret}`
132
+
133
+ ---
134
+
135
+ ### `auth logout`
136
+
137
+ Remove stored credentials.
138
+
139
+ ```bash
140
+ signstack auth logout
141
+ signstack auth logout --force # Skip confirmation
142
+ ```
143
+
144
+ | Flag | Short | Description |
145
+ |------|-------|-------------|
146
+ | `--force` | `-f` | Skip confirmation prompt |
147
+ | `--json` | | Output in JSON format |
148
+
149
+ ---
150
+
151
+ ### `auth whoami`
152
+
153
+ Display the current authenticated user and configuration.
154
+
155
+ ```bash
156
+ signstack auth whoami
157
+ signstack auth whoami --json
158
+ ```
159
+
160
+ | Flag | Description |
161
+ |------|-------------|
162
+ | `--json` | Output in JSON format |
163
+
164
+ ---
165
+
166
+ ### `validate`
167
+
168
+ Validate YAML resource files against SignStack JSON schemas. When given a folder, builds a dependency graph and validates in topological order (leaf nodes first).
169
+
170
+ ```bash
171
+ # Validate all YAML files in current directory
172
+ signstack validate
173
+
174
+ # Validate a specific folder
175
+ signstack validate ./my-project
176
+
177
+ # Validate a single file
178
+ signstack validate template.yaml
179
+
180
+ # Validate with glob pattern
181
+ signstack validate "schemas/**/*.yaml"
182
+
183
+ # Force a specific schema type
184
+ signstack validate my-file.yaml --schema blueprint
185
+
186
+ # Skip dependency analysis (faster)
187
+ signstack validate --no-deps
188
+
189
+ # Verbose output with graph stats
190
+ signstack validate --verbose
191
+ ```
192
+
193
+ | Arg/Flag | Short | Description |
194
+ |----------|-------|-------------|
195
+ | `PATH` (arg) | | Folder, file, or glob pattern (default: `.`) |
196
+ | `--schema` | `-s` | Force schema type: `schema`, `template`, `asset`, `blueprint`, `jsonata-function` (auto-detected from `kind` field if omitted) |
197
+ | `--verbose` | `-v` | Detailed output including dependency graph stats |
198
+ | `--no-deps` | | Skip dependency ordering and validation |
199
+ | `--json` | | Output in JSON format |
200
+
201
+ **Auto-detection:** The `kind` field in your YAML file determines which schema is used. You only need `--schema` if auto-detection fails.
202
+
203
+ ---
204
+
205
+ ### `push`
206
+
207
+ Push resources to the API. Validates all files first, then creates resources in dependency order (leaf nodes first).
208
+
209
+ ```bash
210
+ # Push from current directory
211
+ signstack push
212
+
213
+ # Push from a specific folder
214
+ signstack push ./my-project
215
+
216
+ # Dry run — see what would be pushed
217
+ signstack push --dry-run
218
+
219
+ # Verbose output
220
+ signstack push --verbose
221
+ ```
222
+
223
+ | Arg/Flag | Short | Description |
224
+ |----------|-------|-------------|
225
+ | `PATH` (arg) | | Folder containing YAML files (default: `.`) |
226
+ | `--dry-run` | | Show what would be pushed without calling the API |
227
+ | `--verbose` | `-v` | Detailed output |
228
+ | `--json` | | Output in JSON format |
229
+
230
+ ---
231
+
232
+ ### `preview`
233
+
234
+ Preview a blueprint or template and get signed PDF URL(s). By default, resolves resources from local YAML files first, falling back to the API for anything not found locally.
235
+
236
+ ```bash
237
+ # Preview with version
238
+ signstack preview my_blueprint@1.0.0
239
+
240
+ # Preview latest local version (no version = highest version in local files)
241
+ signstack preview my_blueprint
242
+
243
+ # Preview a single template instead of a blueprint
244
+ signstack preview --template my_template@1.0.0
245
+
246
+ # Use a specific scenario
247
+ signstack preview my_blueprint@1.0.0 --scenario onboarding_scenario
248
+
249
+ # List available scenarios
250
+ signstack preview --list-scenarios
251
+
252
+ # Use files from a different folder
253
+ signstack preview my_blueprint@1.0.0 -p ./other-project
254
+
255
+ # Strict local — fail if any resource is missing locally
256
+ signstack preview my_blueprint@1.0.0 --resolve local
257
+
258
+ # Strict remote — skip local files entirely
259
+ signstack preview my_blueprint@1.0.0 --resolve remote
260
+ ```
261
+
262
+ | Arg/Flag | Short | Description |
263
+ |----------|-------|-------------|
264
+ | `BLUEPRINT` (arg) | | Blueprint reference as `key@version` or `key` |
265
+ | `--template` | `-t` | Template reference (instead of blueprint) |
266
+ | `--path` | `-p` | Folder with YAML resource files (default: `.`) |
267
+ | `--resolve` | `-r` | Resolution strategy: `local`, `remote`, `auto` (see below) |
268
+ | `--scenario` | `-s` | Scenario key for entity data |
269
+ | `--list-scenarios` | `-l` | List available scenarios |
270
+ | `--skip-signature-fields` | | Disable dummy signatures/initials/auto-dates |
271
+ | `--json` | | Output in JSON format |
272
+
273
+ ---
274
+
275
+ ### `run`
276
+
277
+ Create and start a workflow from a blueprint. Same resource resolution as `preview`.
278
+
279
+ ```bash
280
+ # Run with version
281
+ signstack run my_blueprint@1.0.0
282
+
283
+ # Run latest local version
284
+ signstack run my_blueprint
285
+
286
+ # Run in review mode
287
+ signstack run my_blueprint@1.0.0 --mode Review
288
+
289
+ # With a specific scenario
290
+ signstack run my_blueprint@1.0.0 --scenario onboarding_scenario
291
+
292
+ # Strict local
293
+ signstack run my_blueprint@1.0.0 --resolve local
294
+ ```
295
+
296
+ | Arg/Flag | Short | Description |
297
+ |----------|-------|-------------|
298
+ | `BLUEPRINT` (arg) | | Blueprint reference as `key@version` or `key` |
299
+ | `--path` | `-p` | Folder with YAML resource files (default: `.`) |
300
+ | `--resolve` | `-r` | Resolution strategy: `local`, `remote`, `auto` (see below) |
301
+ | `--scenario` | `-s` | Scenario key for entity data |
302
+ | `--mode` | `-m` | Workflow mode: `Run` (default) or `Review` |
303
+ | `--json` | | Output in JSON format |
304
+
305
+ ---
306
+
307
+ ## Resource Resolution (`--resolve`)
308
+
309
+ The `preview` and `run` commands resolve resources (templates, assets, schemas) using a configurable strategy:
310
+
311
+ | Mode | Behavior |
312
+ |------|----------|
313
+ | *(default)* | Hybrid — local files first, API fallback for missing resources |
314
+ | `local` | Strict local — all resources must exist in your YAML files. Fails if anything is missing. |
315
+ | `remote` | Strict remote — ignores local files, resolves everything from the API. |
316
+ | `auto` | Same as default (hybrid). Explicit alias. |
317
+
318
+ **Version resolution:** When you omit the version (e.g., `signstack preview my_blueprint`), the CLI finds the highest version in your local files. If no local files exist, it falls back to the API.
319
+
320
+ **Default path:** Both commands look for YAML files in the current directory (`.`) by default. Use `-p` to point elsewhere.
321
+
322
+ ---
323
+
324
+ ## Resource Types
325
+
326
+ SignStack YAML files use a `kind` field to declare their type:
327
+
328
+ | Kind | Description |
329
+ |------|-------------|
330
+ | `Schema` | JSON Schema definitions for validating entity data |
331
+ | `Template` | Document templates (HTML/Handlebars → PDF) with dependencies |
332
+ | `Asset` | Static files — CSS stylesheets, images, HTML partials, PDF forms |
333
+ | `Blueprint` | Workflow definitions that compose templates, schemas, and signing steps |
334
+ | `JsonataFunction` | Reusable JSONata transformation functions |
335
+
336
+ ### Reference Format
337
+
338
+ Resources reference each other using `key@version`:
339
+
340
+ ```yaml
341
+ # In a blueprint
342
+ templates:
343
+ - key: offer_letter
344
+ version: 1.0.0
345
+
346
+ # In a template
347
+ dependencies:
348
+ - kind: Asset
349
+ key: company_logo
350
+ version: 1.0.0
351
+ ```
352
+
353
+ ---
354
+
355
+ ## Project Structure
356
+
357
+ A typical project folder looks like this:
358
+
359
+ ```
360
+ my-project/
361
+ ├── blueprint.yaml # Blueprint definition
362
+ ├── schema.yaml # Data schema(s)
363
+ ├── template.yaml # Template definition(s)
364
+ ├── asset.yaml # Asset declaration(s)
365
+ ├── html/
366
+ │ └── offer_letter.hbs # Handlebars template file
367
+ ├── styles/
368
+ │ └── main.css # CSS stylesheet
369
+ ├── images/
370
+ │ └── logo.png # Image assets
371
+ ├── partials/
372
+ │ └── footer.hbs # Handlebars partials
373
+ └── scenarios/
374
+ └── test_data.json # Test entity data for preview/run
375
+ ```
376
+
377
+ Multi-document YAML files are supported — you can put multiple resources in a single `.yaml` file separated by `---`.
378
+
379
+ ---
380
+
381
+ ## Global Flags
382
+
383
+ These flags are available on every command:
384
+
385
+ | Flag | Description |
386
+ |------|-------------|
387
+ | `--json` | Output in JSON format (for scripting and CI) |
388
+ | `--help` | Show help for any command |
389
+
390
+ ---
391
+
392
+ ## Environment Variables
393
+
394
+ | Variable | Description |
395
+ |----------|-------------|
396
+ | `SIGNSTACK_API_KEY` | API key for `auth login` (avoids interactive prompt) |
397
+ | `SIGNSTACK_API_URL` | Override the API URL |
398
+
399
+ ---
400
+
401
+ ## CI/CD Usage
402
+
403
+ All commands support `--json` for machine-readable output. Combine with `--api-key-stdin` for secure authentication:
404
+
405
+ ```bash
406
+ # Login
407
+ echo "$SIGNSTACK_API_KEY" | signstack auth login --api-key-stdin
408
+
409
+ # Validate
410
+ signstack validate ./resources --json
411
+
412
+ # Push (with dry-run check first)
413
+ signstack push ./resources --dry-run --json
414
+ signstack push ./resources --json
415
+ ```
416
+
417
+ ---
418
+
419
+ ## Development
420
+
421
+ ### Building the CLI
422
+
423
+ ```bash
424
+ # From the monorepo root
425
+ npm run cli:build
426
+ ```
427
+
428
+ ### Running Validation on Examples
429
+
430
+ ```bash
431
+ npm run signstack:validate -- ./apps/signstack-cli/schemas/examples
432
+ ```
433
+
434
+ ### Running Locally (Without Installing)
435
+
436
+ ```bash
437
+ # From the monorepo root, after building
438
+ node apps/signstack-cli/bin/run.js <command>
439
+ ```
440
+
441
+ ---
442
+
443
+ ## Troubleshooting
444
+
445
+ | Problem | Solution |
446
+ |---------|----------|
447
+ | `Not logged in` | Run `signstack auth login` |
448
+ | `Configuration is corrupted` | Run `signstack auth logout` then `signstack auth login` |
449
+ | `Session expired` | Tokens auto-refresh. If persists, re-login. |
450
+ | `Invalid API key format` | Key must match `sk_{ns}_{live\|test}_{public}_{secret}` |
451
+ | `Permission denied (403)` | Your API key may lack required scopes |
452
+ | `Rate limit exceeded (429)` | Wait and retry |
453
+ | Validation fails on dependencies | Check `key@version` references match across files |
454
+ | Circular dependency detected | Remove circular references between resources |
455
+
456
+ ## License
457
+
458
+ MIT
package/bin/run.js ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+
3
+ // @common/base and @signstack/base are shipped inside this package's
4
+ // node_modules (see "bundledDependencies"), so they resolve via normal
5
+ // Node module resolution — no path-alias registration needed.
6
+
7
+ async function main() {
8
+ const { execute } = await import('@oclif/core');
9
+ await execute({ dir: import.meta.url });
10
+ }
11
+
12
+ await main();
@@ -0,0 +1,220 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://signstack.ai/schemas/asset/v1beta2",
4
+ "title": "SignStack Asset",
5
+ "description": "An Asset wraps a file (PDF, HTML, image, CSS) for use in templates. HTML Assets can reference other Assets for partials, styles, and images. All references are versioned (key@version). Each Asset version is immutable.",
6
+ "type": "object",
7
+ "required": ["apiVersion", "kind", "metadata", "spec"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "apiVersion": {
11
+ "type": "string",
12
+ "const": "signstack/v1beta2",
13
+ "description": "API version for the asset schema"
14
+ },
15
+ "kind": {
16
+ "type": "string",
17
+ "const": "Asset",
18
+ "description": "Resource type identifier"
19
+ },
20
+ "metadata": {
21
+ "type": "object",
22
+ "required": ["key", "version", "name"],
23
+ "additionalProperties": false,
24
+ "properties": {
25
+ "key": {
26
+ "type": "string",
27
+ "pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*$",
28
+ "description": "Unique identifier for the asset (snake_case)",
29
+ "examples": ["company_logo", "offer_letter", "corporate_theme"]
30
+ },
31
+ "version": {
32
+ "type": "string",
33
+ "pattern": "^(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$",
34
+ "description": "Semantic version (e.g., 1.0.0)"
35
+ },
36
+ "name": {
37
+ "type": "string",
38
+ "minLength": 1,
39
+ "maxLength": 200,
40
+ "description": "Human-readable name for the asset"
41
+ },
42
+ "description": {
43
+ "type": "string",
44
+ "minLength": 1,
45
+ "maxLength": 1000,
46
+ "description": "Description of the asset"
47
+ },
48
+ "labels": {
49
+ "type": "object",
50
+ "propertyNames": {
51
+ "pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*$"
52
+ },
53
+ "additionalProperties": { "type": "string" },
54
+ "description": "Key-value labels for categorization"
55
+ }
56
+ }
57
+ },
58
+ "spec": {
59
+ "type": "object",
60
+ "required": ["type"],
61
+ "additionalProperties": false,
62
+ "description": "Asset specification. HTML assets can reference other versioned assets for dependencies. Use 'file' for file-based assets or 'content' for inline HTML/CSS.",
63
+ "properties": {
64
+ "type": {
65
+ "type": "string",
66
+ "enum": ["pdf", "html", "image", "css"],
67
+ "description": "Asset type"
68
+ },
69
+ "file": {
70
+ "type": "string",
71
+ "description": "Relative path to the asset file",
72
+ "examples": [
73
+ "./offer_letter.html",
74
+ "./document.pdf",
75
+ "./logo.png",
76
+ "./theme.css"
77
+ ]
78
+ },
79
+ "fileId": {
80
+ "type": "string",
81
+ "pattern": "^f_[0-9a-z]{26}$",
82
+ "description": "Uploaded file identifier (used by API for PDF/image assets)"
83
+ },
84
+ "content": {
85
+ "type": "string",
86
+ "description": "Inline content for html or css assets. Use this instead of 'file' when providing content directly."
87
+ },
88
+ "partials": {
89
+ "type": "object",
90
+ "additionalProperties": {
91
+ "oneOf": [
92
+ {
93
+ "type": "string",
94
+ "pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$"
95
+ },
96
+ {
97
+ "type": "object",
98
+ "required": ["asset"],
99
+ "additionalProperties": false,
100
+ "properties": {
101
+ "asset": {
102
+ "type": "string",
103
+ "pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$",
104
+ "description": "Asset reference (key@version)"
105
+ },
106
+ "roleMap": {
107
+ "type": "object",
108
+ "additionalProperties": {
109
+ "type": "string"
110
+ },
111
+ "description": "Maps roles defined in the partial to roles in the parent context"
112
+ }
113
+ }
114
+ }
115
+ ]
116
+ },
117
+ "description": "Handlebars partials. Keys are partial names used in {{> name}}. Values can be a simple asset reference (key@version) or an object with asset and roleMap."
118
+ },
119
+ "styles": {
120
+ "type": "array",
121
+ "items": {
122
+ "type": "string",
123
+ "pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$"
124
+ },
125
+ "description": "CSS asset references (key@version). Order matters for cascading."
126
+ },
127
+ "images": {
128
+ "type": "object",
129
+ "additionalProperties": {
130
+ "type": "string",
131
+ "pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$"
132
+ },
133
+ "description": "Image asset references. Keys are names used in HTML, values are asset references (key@version)."
134
+ },
135
+ "data": {
136
+ "type": "object",
137
+ "additionalProperties": false,
138
+ "description": "Data configuration for HTML assets",
139
+ "properties": {
140
+ "schema": {
141
+ "type": "string",
142
+ "pattern": "^[a-z][a-z0-9]*(_[a-z0-9]+)*@(draft|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*))$",
143
+ "description": "Schema defining the data context this HTML expects (key@version). Required for HTML assets. Partials can use the same schema as parent for implicit inheritance."
144
+ }
145
+ },
146
+ "required": ["schema"]
147
+ },
148
+ "pdfSettings": {
149
+ "type": "object",
150
+ "additionalProperties": false,
151
+ "description": "PDF rendering settings for HTML assets",
152
+ "properties": {
153
+ "paperSize": {
154
+ "type": "string",
155
+ "enum": ["Letter", "Legal", "A4", "A3"],
156
+ "default": "Letter",
157
+ "description": "Paper size for PDF output"
158
+ }
159
+ }
160
+ }
161
+ },
162
+ "allOf": [
163
+ {
164
+ "if": { "properties": { "type": { "const": "pdf" } } },
165
+ "then": {
166
+ "anyOf": [
167
+ {
168
+ "required": ["file"],
169
+ "properties": {
170
+ "file": { "pattern": "\\.(pdf)$" }
171
+ }
172
+ },
173
+ { "required": ["fileId"] }
174
+ ]
175
+ }
176
+ },
177
+ {
178
+ "if": { "properties": { "type": { "const": "html" } } },
179
+ "then": {
180
+ "anyOf": [
181
+ {
182
+ "required": ["file"],
183
+ "properties": {
184
+ "file": { "pattern": "\\.(html|hbs|handlebars)$" }
185
+ }
186
+ },
187
+ { "required": ["content"] }
188
+ ]
189
+ }
190
+ },
191
+ {
192
+ "if": { "properties": { "type": { "const": "image" } } },
193
+ "then": {
194
+ "anyOf": [
195
+ {
196
+ "required": ["file"],
197
+ "properties": {
198
+ "file": { "pattern": "\\.(png|jpg|jpeg|gif|svg|webp)$" }
199
+ }
200
+ },
201
+ { "required": ["fileId"] }
202
+ ]
203
+ }
204
+ },
205
+ {
206
+ "if": { "properties": { "type": { "const": "css" } } },
207
+ "then": {
208
+ "anyOf": [
209
+ {
210
+ "required": ["file"],
211
+ "properties": { "file": { "pattern": "\\.(css)$" } }
212
+ },
213
+ { "required": ["content"] }
214
+ ]
215
+ }
216
+ }
217
+ ]
218
+ }
219
+ }
220
+ }