@tappify/cli 1.3.2 → 1.5.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 (390) hide show
  1. package/README.md +106 -31
  2. package/dist/src/app.module.js +6 -2
  3. package/dist/src/app.module.js.map +1 -1
  4. package/dist/src/core/api/api.service.d.ts +28 -2
  5. package/dist/src/core/api/api.service.js +151 -27
  6. package/dist/src/core/api/api.service.js.map +1 -1
  7. package/dist/src/core/auth/auth.service.d.ts +2 -0
  8. package/dist/src/core/auth/auth.service.js +31 -3
  9. package/dist/src/core/auth/auth.service.js.map +1 -1
  10. package/dist/src/core/config/config.service.d.ts +11 -2
  11. package/dist/src/core/config/config.service.js +13 -3
  12. package/dist/src/core/config/config.service.js.map +1 -1
  13. package/dist/src/core/core.module.js +33 -2
  14. package/dist/src/core/core.module.js.map +1 -1
  15. package/dist/src/core/environment/environment.service.d.ts +24 -0
  16. package/dist/src/core/environment/environment.service.js +93 -0
  17. package/dist/src/core/environment/environment.service.js.map +1 -0
  18. package/dist/src/core/environment/index.d.ts +1 -0
  19. package/dist/src/core/environment/index.js +18 -0
  20. package/dist/src/core/environment/index.js.map +1 -0
  21. package/dist/src/core/image/image-size.d.ts +5 -0
  22. package/dist/src/core/image/image-size.js +37 -0
  23. package/dist/src/core/image/image-size.js.map +1 -0
  24. package/dist/src/core/image/index.d.ts +1 -0
  25. package/dist/src/{domains/init/runners → core/image}/index.js +1 -1
  26. package/dist/src/core/image/index.js.map +1 -0
  27. package/dist/src/core/index.d.ts +10 -0
  28. package/dist/src/core/index.js +10 -0
  29. package/dist/src/core/index.js.map +1 -1
  30. package/dist/src/core/link/project-link.service.d.ts +13 -0
  31. package/dist/src/{domains/init/runners/init.runner.js → core/link/project-link.service.js} +54 -44
  32. package/dist/src/core/link/project-link.service.js.map +1 -0
  33. package/dist/src/core/manifest/index.d.ts +2 -0
  34. package/dist/src/core/manifest/index.js +19 -0
  35. package/dist/src/core/manifest/index.js.map +1 -0
  36. package/dist/src/core/manifest/manifest.service.d.ts +14 -0
  37. package/dist/src/core/manifest/manifest.service.js +141 -0
  38. package/dist/src/core/manifest/manifest.service.js.map +1 -0
  39. package/dist/src/core/manifest/scope-rules.d.ts +8 -0
  40. package/dist/src/core/manifest/scope-rules.js +95 -0
  41. package/dist/src/core/manifest/scope-rules.js.map +1 -0
  42. package/dist/src/core/output/colors.d.ts +6 -0
  43. package/dist/src/core/output/colors.js +27 -0
  44. package/dist/src/core/output/colors.js.map +1 -0
  45. package/dist/src/core/output/index.d.ts +2 -0
  46. package/dist/src/core/output/index.js +19 -0
  47. package/dist/src/core/output/index.js.map +1 -0
  48. package/dist/src/core/output/output.service.d.ts +37 -0
  49. package/dist/src/core/output/output.service.js +119 -0
  50. package/dist/src/core/output/output.service.js.map +1 -0
  51. package/dist/src/core/project/index.d.ts +1 -0
  52. package/dist/src/core/project/index.js +18 -0
  53. package/dist/src/core/project/index.js.map +1 -0
  54. package/dist/src/core/project/package-manager.d.ts +6 -0
  55. package/dist/src/core/project/package-manager.js +47 -0
  56. package/dist/src/core/project/package-manager.js.map +1 -0
  57. package/dist/src/core/prompt/prompt.service.d.ts +17 -0
  58. package/dist/src/core/prompt/prompt.service.js +299 -0
  59. package/dist/src/core/prompt/prompt.service.js.map +1 -0
  60. package/dist/src/core/registry/index.d.ts +1 -0
  61. package/dist/src/core/registry/index.js +18 -0
  62. package/dist/src/core/registry/index.js.map +1 -0
  63. package/dist/src/core/registry/registry.service.d.ts +55 -0
  64. package/dist/src/core/registry/registry.service.js +119 -0
  65. package/dist/src/core/registry/registry.service.js.map +1 -0
  66. package/dist/src/core/shell/shell.service.d.ts +10 -5
  67. package/dist/src/core/shell/shell.service.js +109 -15
  68. package/dist/src/core/shell/shell.service.js.map +1 -1
  69. package/dist/src/core/shutdown/teardown.d.ts +3 -0
  70. package/dist/src/core/shutdown/teardown.js +22 -0
  71. package/dist/src/core/shutdown/teardown.js.map +1 -0
  72. package/dist/src/core/templates/index.d.ts +1 -0
  73. package/dist/src/core/templates/index.js +18 -0
  74. package/dist/src/core/templates/index.js.map +1 -0
  75. package/dist/src/core/templates/template.service.d.ts +10 -0
  76. package/dist/src/core/templates/template.service.js +91 -0
  77. package/dist/src/core/templates/template.service.js.map +1 -0
  78. package/dist/src/core/update/update-notifier.d.ts +6 -0
  79. package/dist/src/core/update/update-notifier.js +90 -28
  80. package/dist/src/core/update/update-notifier.js.map +1 -1
  81. package/dist/src/core/version.d.ts +5 -0
  82. package/dist/src/core/version.js +21 -0
  83. package/dist/src/core/version.js.map +1 -0
  84. package/dist/src/domains/auth/runners/login.runner.js +5 -1
  85. package/dist/src/domains/auth/runners/login.runner.js.map +1 -1
  86. package/dist/src/domains/auth/runners/logout.runner.js +1 -1
  87. package/dist/src/domains/auth/runners/logout.runner.js.map +1 -1
  88. package/dist/src/domains/deployments/runners/configure.runner.d.ts +6 -1
  89. package/dist/src/domains/deployments/runners/configure.runner.js +231 -200
  90. package/dist/src/domains/deployments/runners/configure.runner.js.map +1 -1
  91. package/dist/src/domains/environment/environment.module.d.ts +2 -0
  92. package/dist/src/domains/environment/environment.module.js +25 -0
  93. package/dist/src/domains/environment/environment.module.js.map +1 -0
  94. package/dist/src/domains/environment/index.d.ts +2 -0
  95. package/dist/src/domains/{deploy → environment}/index.js +1 -1
  96. package/dist/src/domains/environment/index.js.map +1 -0
  97. package/dist/src/domains/environment/runners/environment-current.runner.d.ts +7 -0
  98. package/dist/src/domains/environment/runners/environment-current.runner.js +35 -0
  99. package/dist/src/domains/environment/runners/environment-current.runner.js.map +1 -0
  100. package/dist/src/domains/environment/runners/environment-switcher.service.d.ts +11 -0
  101. package/dist/src/domains/environment/runners/environment-switcher.service.js +74 -0
  102. package/dist/src/domains/environment/runners/environment-switcher.service.js.map +1 -0
  103. package/dist/src/domains/environment/runners/environment-use.runner.d.ts +11 -0
  104. package/dist/src/domains/environment/runners/environment-use.runner.js +46 -0
  105. package/dist/src/domains/environment/runners/environment-use.runner.js.map +1 -0
  106. package/dist/src/domains/environment/runners/environment.command.d.ts +12 -0
  107. package/dist/src/domains/environment/runners/environment.command.js +53 -0
  108. package/dist/src/domains/environment/runners/environment.command.js.map +1 -0
  109. package/dist/src/domains/environment/runners/index.d.ts +4 -0
  110. package/dist/src/domains/environment/runners/index.js +21 -0
  111. package/dist/src/domains/environment/runners/index.js.map +1 -0
  112. package/dist/src/domains/extension/containers.d.ts +13 -0
  113. package/dist/src/domains/extension/containers.js +239 -0
  114. package/dist/src/domains/extension/containers.js.map +1 -0
  115. package/dist/src/domains/extension/extension.module.d.ts +2 -0
  116. package/dist/src/domains/extension/extension.module.js +66 -0
  117. package/dist/src/domains/extension/extension.module.js.map +1 -0
  118. package/dist/src/domains/extension/index.d.ts +1 -0
  119. package/dist/src/domains/extension/index.js +18 -0
  120. package/dist/src/domains/extension/index.js.map +1 -0
  121. package/dist/src/domains/extension/kinds.assistant.d.ts +2 -0
  122. package/dist/src/domains/extension/kinds.assistant.js +296 -0
  123. package/dist/src/domains/extension/kinds.assistant.js.map +1 -0
  124. package/dist/src/domains/extension/kinds.d.ts +8 -0
  125. package/dist/src/domains/extension/kinds.js +42 -0
  126. package/dist/src/domains/extension/kinds.js.map +1 -0
  127. package/dist/src/domains/extension/kinds.server.d.ts +3 -0
  128. package/dist/src/domains/extension/kinds.server.js +221 -0
  129. package/dist/src/domains/extension/kinds.server.js.map +1 -0
  130. package/dist/src/domains/extension/kinds.types.d.ts +65 -0
  131. package/dist/src/domains/extension/kinds.types.js +98 -0
  132. package/dist/src/domains/extension/kinds.types.js.map +1 -0
  133. package/dist/src/domains/extension/kinds.ui.d.ts +4 -0
  134. package/dist/src/domains/extension/kinds.ui.js +309 -0
  135. package/dist/src/domains/extension/kinds.ui.js.map +1 -0
  136. package/dist/src/domains/extension/labels.d.ts +27 -0
  137. package/dist/src/domains/extension/labels.js +143 -0
  138. package/dist/src/domains/extension/labels.js.map +1 -0
  139. package/dist/src/domains/extension/runners/add.runner.d.ts +69 -0
  140. package/dist/src/domains/extension/runners/add.runner.js +453 -0
  141. package/dist/src/domains/extension/runners/add.runner.js.map +1 -0
  142. package/dist/src/domains/extension/runners/dev.runner.d.ts +33 -0
  143. package/dist/src/domains/extension/runners/dev.runner.js +257 -0
  144. package/dist/src/domains/extension/runners/dev.runner.js.map +1 -0
  145. package/dist/src/domains/extension/runners/doctor.runner.d.ts +18 -0
  146. package/dist/src/domains/extension/runners/doctor.runner.js +107 -0
  147. package/dist/src/domains/extension/runners/doctor.runner.js.map +1 -0
  148. package/dist/src/domains/extension/runners/events-add.runner.d.ts +12 -0
  149. package/dist/src/domains/extension/runners/events-add.runner.js +97 -0
  150. package/dist/src/domains/extension/runners/events-add.runner.js.map +1 -0
  151. package/dist/src/domains/extension/runners/events-remove.runner.d.ts +10 -0
  152. package/dist/src/domains/extension/runners/events-remove.runner.js +75 -0
  153. package/dist/src/domains/extension/runners/events-remove.runner.js.map +1 -0
  154. package/dist/src/domains/extension/runners/events.runner.d.ts +6 -0
  155. package/dist/src/domains/extension/runners/events.runner.js +40 -0
  156. package/dist/src/domains/extension/runners/events.runner.js.map +1 -0
  157. package/dist/src/domains/extension/runners/extension.command.d.ts +10 -0
  158. package/dist/src/domains/extension/runners/extension.command.js +71 -0
  159. package/dist/src/domains/extension/runners/extension.command.js.map +1 -0
  160. package/dist/src/domains/extension/runners/extension.runner.d.ts +17 -0
  161. package/dist/src/domains/extension/runners/extension.runner.js +53 -0
  162. package/dist/src/domains/extension/runners/extension.runner.js.map +1 -0
  163. package/dist/src/domains/extension/runners/index.d.ts +20 -0
  164. package/dist/src/domains/extension/runners/index.js +37 -0
  165. package/dist/src/domains/extension/runners/index.js.map +1 -0
  166. package/dist/src/domains/extension/runners/init.runner.d.ts +31 -0
  167. package/dist/src/domains/extension/runners/init.runner.js +276 -0
  168. package/dist/src/domains/extension/runners/init.runner.js.map +1 -0
  169. package/dist/src/domains/extension/runners/list.runner.d.ts +10 -0
  170. package/dist/src/domains/extension/runners/list.runner.js +79 -0
  171. package/dist/src/domains/extension/runners/list.runner.js.map +1 -0
  172. package/dist/src/domains/extension/runners/publish.runner.d.ts +38 -0
  173. package/dist/src/domains/extension/runners/publish.runner.js +178 -0
  174. package/dist/src/domains/extension/runners/publish.runner.js.map +1 -0
  175. package/dist/src/domains/extension/runners/remove.runner.d.ts +20 -0
  176. package/dist/src/domains/extension/runners/remove.runner.js +105 -0
  177. package/dist/src/domains/extension/runners/remove.runner.js.map +1 -0
  178. package/dist/src/domains/extension/runners/retire.runner.d.ts +18 -0
  179. package/dist/src/domains/extension/runners/retire.runner.js +80 -0
  180. package/dist/src/domains/extension/runners/retire.runner.js.map +1 -0
  181. package/dist/src/domains/extension/runners/scopes-add.runner.d.ts +16 -0
  182. package/dist/src/domains/extension/runners/scopes-add.runner.js +122 -0
  183. package/dist/src/domains/extension/runners/scopes-add.runner.js.map +1 -0
  184. package/dist/src/domains/extension/runners/scopes-remove.runner.d.ts +12 -0
  185. package/dist/src/domains/extension/runners/scopes-remove.runner.js +73 -0
  186. package/dist/src/domains/extension/runners/scopes-remove.runner.js.map +1 -0
  187. package/dist/src/domains/extension/runners/scopes.runner.d.ts +6 -0
  188. package/dist/src/domains/extension/runners/scopes.runner.js +40 -0
  189. package/dist/src/domains/extension/runners/scopes.runner.js.map +1 -0
  190. package/dist/src/domains/extension/runners/set.runner.d.ts +17 -0
  191. package/dist/src/domains/extension/runners/set.runner.js +157 -0
  192. package/dist/src/domains/extension/runners/set.runner.js.map +1 -0
  193. package/dist/src/domains/extension/runners/status.runner.d.ts +12 -0
  194. package/dist/src/domains/extension/runners/status.runner.js +88 -0
  195. package/dist/src/domains/extension/runners/status.runner.js.map +1 -0
  196. package/dist/src/domains/extension/runners/types.runner.d.ts +10 -0
  197. package/dist/src/domains/extension/runners/types.runner.js +43 -0
  198. package/dist/src/domains/extension/runners/types.runner.js.map +1 -0
  199. package/dist/src/domains/extension/runners/whoami.runner.d.ts +10 -0
  200. package/dist/src/domains/extension/runners/whoami.runner.js +71 -0
  201. package/dist/src/domains/extension/runners/whoami.runner.js.map +1 -0
  202. package/dist/src/domains/extension/services/add.service.d.ts +26 -0
  203. package/dist/src/domains/extension/services/add.service.js +263 -0
  204. package/dist/src/domains/extension/services/add.service.js.map +1 -0
  205. package/dist/src/domains/extension/services/checks/a11y-check.d.ts +3 -0
  206. package/dist/src/domains/extension/services/checks/a11y-check.js +84 -0
  207. package/dist/src/domains/extension/services/checks/a11y-check.js.map +1 -0
  208. package/dist/src/domains/extension/services/checks/bundle-checks.d.ts +3 -0
  209. package/dist/src/domains/extension/services/checks/bundle-checks.js +234 -0
  210. package/dist/src/domains/extension/services/checks/bundle-checks.js.map +1 -0
  211. package/dist/src/domains/extension/services/checks/bundle-files.d.ts +14 -0
  212. package/dist/src/domains/extension/services/checks/bundle-files.js +139 -0
  213. package/dist/src/domains/extension/services/checks/bundle-files.js.map +1 -0
  214. package/dist/src/domains/extension/services/checks/file-checks.d.ts +6 -0
  215. package/dist/src/domains/extension/services/checks/file-checks.js +128 -0
  216. package/dist/src/domains/extension/services/checks/file-checks.js.map +1 -0
  217. package/dist/src/domains/extension/services/checks/index.d.ts +7 -0
  218. package/dist/src/domains/extension/services/checks/index.js +24 -0
  219. package/dist/src/domains/extension/services/checks/index.js.map +1 -0
  220. package/dist/src/domains/extension/services/checks/manifest-checks.d.ts +7 -0
  221. package/dist/src/domains/extension/services/checks/manifest-checks.js +95 -0
  222. package/dist/src/domains/extension/services/checks/manifest-checks.js.map +1 -0
  223. package/dist/src/domains/extension/services/checks/project-checks.d.ts +7 -0
  224. package/dist/src/domains/extension/services/checks/project-checks.js +86 -0
  225. package/dist/src/domains/extension/services/checks/project-checks.js.map +1 -0
  226. package/dist/src/domains/extension/services/checks/types.d.ts +23 -0
  227. package/dist/src/domains/extension/services/checks/types.js +50 -0
  228. package/dist/src/domains/extension/services/checks/types.js.map +1 -0
  229. package/dist/src/domains/extension/services/dev.service.d.ts +26 -0
  230. package/dist/src/domains/extension/services/dev.service.js +58 -0
  231. package/dist/src/domains/extension/services/dev.service.js.map +1 -0
  232. package/dist/src/domains/extension/services/doctor.service.d.ts +36 -0
  233. package/dist/src/domains/extension/services/doctor.service.js +213 -0
  234. package/dist/src/domains/extension/services/doctor.service.js.map +1 -0
  235. package/dist/src/domains/extension/services/failures.d.ts +8 -0
  236. package/dist/src/domains/extension/services/failures.js +112 -0
  237. package/dist/src/domains/extension/services/failures.js.map +1 -0
  238. package/dist/src/domains/extension/services/guided.service.d.ts +36 -0
  239. package/dist/src/domains/extension/services/guided.service.js +133 -0
  240. package/dist/src/domains/extension/services/guided.service.js.map +1 -0
  241. package/dist/src/domains/extension/services/publish.service.d.ts +14 -0
  242. package/dist/src/domains/extension/services/publish.service.js +93 -0
  243. package/dist/src/domains/extension/services/publish.service.js.map +1 -0
  244. package/dist/src/domains/extension/services/registration.service.d.ts +7 -0
  245. package/dist/src/domains/extension/services/registration.service.js +43 -0
  246. package/dist/src/domains/extension/services/registration.service.js.map +1 -0
  247. package/dist/src/domains/extension/services/remove.service.d.ts +22 -0
  248. package/dist/src/domains/extension/services/remove.service.js +137 -0
  249. package/dist/src/domains/extension/services/remove.service.js.map +1 -0
  250. package/dist/src/domains/extension/services/types.service.d.ts +21 -0
  251. package/dist/src/domains/extension/services/types.service.js +81 -0
  252. package/dist/src/domains/extension/services/types.service.js.map +1 -0
  253. package/dist/src/domains/index.d.ts +6 -2
  254. package/dist/src/domains/index.js +6 -2
  255. package/dist/src/domains/index.js.map +1 -1
  256. package/dist/src/domains/{init → link}/index.d.ts +1 -1
  257. package/dist/src/domains/{init → link}/index.js +1 -1
  258. package/dist/src/domains/link/index.js.map +1 -0
  259. package/dist/src/domains/link/link.module.d.ts +2 -0
  260. package/dist/src/domains/{init/init.module.js → link/link.module.js} +8 -8
  261. package/dist/src/domains/link/link.module.js.map +1 -0
  262. package/dist/src/domains/link/runners/index.d.ts +1 -0
  263. package/dist/src/domains/{deploy → link}/runners/index.js +1 -1
  264. package/dist/src/domains/link/runners/index.js.map +1 -0
  265. package/dist/src/domains/link/runners/link.runner.d.ts +20 -0
  266. package/dist/src/domains/link/runners/link.runner.js +129 -0
  267. package/dist/src/domains/link/runners/link.runner.js.map +1 -0
  268. package/dist/src/domains/mcp/index.d.ts +5 -0
  269. package/dist/src/domains/mcp/index.js +22 -0
  270. package/dist/src/domains/mcp/index.js.map +1 -0
  271. package/dist/src/domains/mcp/mcp.module.d.ts +2 -0
  272. package/dist/src/domains/mcp/mcp.module.js +25 -0
  273. package/dist/src/domains/mcp/mcp.module.js.map +1 -0
  274. package/dist/src/domains/mcp/runners/mcp.runner.d.ts +7 -0
  275. package/dist/src/domains/mcp/runners/mcp.runner.js +45 -0
  276. package/dist/src/domains/mcp/runners/mcp.runner.js.map +1 -0
  277. package/dist/src/domains/mcp/services/docs-search.service.d.ts +23 -0
  278. package/dist/src/domains/mcp/services/docs-search.service.js +164 -0
  279. package/dist/src/domains/mcp/services/docs-search.service.js.map +1 -0
  280. package/dist/src/domains/mcp/services/mcp-server.factory.d.ts +42 -0
  281. package/dist/src/domains/mcp/services/mcp-server.factory.js +438 -0
  282. package/dist/src/domains/mcp/services/mcp-server.factory.js.map +1 -0
  283. package/dist/src/domains/mcp/services/validate.service.d.ts +17 -0
  284. package/dist/src/domains/mcp/services/validate.service.js +57 -0
  285. package/dist/src/domains/mcp/services/validate.service.js.map +1 -0
  286. package/dist/src/domains/upgrade/index.d.ts +1 -0
  287. package/dist/src/domains/upgrade/index.js +18 -0
  288. package/dist/src/domains/upgrade/index.js.map +1 -0
  289. package/dist/src/domains/upgrade/runners/index.d.ts +1 -0
  290. package/dist/src/domains/upgrade/runners/index.js +18 -0
  291. package/dist/src/domains/upgrade/runners/index.js.map +1 -0
  292. package/dist/src/domains/upgrade/runners/upgrade.runner.d.ts +12 -0
  293. package/dist/src/domains/upgrade/runners/upgrade.runner.js +191 -0
  294. package/dist/src/domains/upgrade/runners/upgrade.runner.js.map +1 -0
  295. package/dist/src/domains/upgrade/upgrade.module.d.ts +2 -0
  296. package/dist/src/domains/{deploy/deploy.module.js → upgrade/upgrade.module.js} +8 -8
  297. package/dist/src/domains/upgrade/upgrade.module.js.map +1 -0
  298. package/dist/src/domains/vendor/index.d.ts +1 -0
  299. package/dist/src/domains/vendor/index.js +18 -0
  300. package/dist/src/domains/vendor/index.js.map +1 -0
  301. package/dist/src/domains/vendor/runners/index.d.ts +2 -0
  302. package/dist/src/domains/vendor/runners/index.js +19 -0
  303. package/dist/src/domains/vendor/runners/index.js.map +1 -0
  304. package/dist/src/domains/vendor/runners/vendor-create.runner.d.ts +20 -0
  305. package/dist/src/domains/vendor/runners/vendor-create.runner.js +121 -0
  306. package/dist/src/domains/vendor/runners/vendor-create.runner.js.map +1 -0
  307. package/dist/src/domains/vendor/runners/vendor.command.d.ts +10 -0
  308. package/dist/src/domains/vendor/runners/vendor.command.js +42 -0
  309. package/dist/src/domains/vendor/runners/vendor.command.js.map +1 -0
  310. package/dist/src/domains/vendor/vendor.module.d.ts +2 -0
  311. package/dist/src/domains/vendor/vendor.module.js +22 -0
  312. package/dist/src/domains/vendor/vendor.module.js.map +1 -0
  313. package/dist/src/main.js +16 -2
  314. package/dist/src/main.js.map +1 -1
  315. package/dist/tsconfig.build.tsbuildinfo +1 -1
  316. package/package.json +43 -7
  317. package/templates/contributions/action/schemas/__file__.input.json +14 -0
  318. package/templates/contributions/action/server/actions/__file__.ts +8 -0
  319. package/templates/contributions/connector/server/metrics.ts +19 -0
  320. package/templates/contributions/context/server/context/__file__.ts +10 -0
  321. package/templates/contributions/knowledge/knowledge/__file__.md +6 -0
  322. package/templates/contributions/mention/server/mentions/__file__.ts +10 -0
  323. package/templates/contributions/page/src/pages/__file__.tsx +21 -0
  324. package/templates/contributions/page/test/__file__.test.tsx +12 -0
  325. package/templates/contributions/procedure/schemas/__file__.input.json +13 -0
  326. package/templates/contributions/procedure/schemas/__file__.output.json +13 -0
  327. package/templates/contributions/procedure/server/procedures/__file__.ts +13 -0
  328. package/templates/contributions/prompt/schemas/__file__.input.json +14 -0
  329. package/templates/contributions/row-action/src/row-actions/__file__.tsx +20 -0
  330. package/templates/contributions/row-action/test/__file__.test.tsx +17 -0
  331. package/templates/contributions/settings/schemas/settings.json +14 -0
  332. package/templates/contributions/settings/src/settings.tsx +24 -0
  333. package/templates/contributions/settings/test/settings.test.tsx +12 -0
  334. package/templates/contributions/skill/skills/__file__.md +14 -0
  335. package/templates/contributions/storage/schemas/__file__.json +14 -0
  336. package/templates/contributions/tab/src/tabs/__file__.tsx +21 -0
  337. package/templates/contributions/tab/test/__file__.test.tsx +12 -0
  338. package/templates/contributions/tool/schemas/__file__.input.json +14 -0
  339. package/templates/contributions/tool/server/tools/__file__.ts +8 -0
  340. package/templates/contributions/webhook/schemas/__file__.payload.json +13 -0
  341. package/templates/contributions/widget/src/widgets/__file__.tsx +48 -0
  342. package/templates/contributions/widget/test/__file__.test.tsx +16 -0
  343. package/templates/contributions/work/server/work.ts +14 -0
  344. package/templates/starter/README.md +75 -0
  345. package/templates/starter/api/tappify/[...path].ts +6 -0
  346. package/templates/starter/gitignore +6 -0
  347. package/templates/starter/icon.svg +4 -0
  348. package/templates/starter/package.json +37 -0
  349. package/templates/starter/pnpm-workspace.yaml +3 -0
  350. package/templates/starter/schemas/get-summary.input.json +11 -0
  351. package/templates/starter/schemas/get-summary.output.json +12 -0
  352. package/templates/starter/schemas/preferences.json +18 -0
  353. package/templates/starter/schemas/settings.json +19 -0
  354. package/templates/starter/server/actions/index.ts +1 -0
  355. package/templates/starter/server/context/index.ts +1 -0
  356. package/templates/starter/server/handler.ts +25 -0
  357. package/templates/starter/server/mentions/index.ts +1 -0
  358. package/templates/starter/server/procedures/get-summary.ts +32 -0
  359. package/templates/starter/server/procedures/index.ts +5 -0
  360. package/templates/starter/server/tools/index.ts +1 -0
  361. package/templates/starter/server/worker.ts +5 -0
  362. package/templates/starter/src/settings.tsx +24 -0
  363. package/templates/starter/src/styles.css +16 -0
  364. package/templates/starter/src/tappify.d.ts +59 -0
  365. package/templates/starter/src/widgets/summary.tsx +122 -0
  366. package/templates/starter/tappify.extension.json +68 -0
  367. package/templates/starter/test/matchers.d.ts +2 -0
  368. package/templates/starter/test/server.test.ts +69 -0
  369. package/templates/starter/test/settings.test.tsx +46 -0
  370. package/templates/starter/test/summary.test.tsx +109 -0
  371. package/templates/starter/tsconfig.json +20 -0
  372. package/templates/starter/vite.config.ts +8 -0
  373. package/templates/starter/vitest.config.ts +29 -0
  374. package/templates/starter/wrangler.toml +7 -0
  375. package/dist/src/domains/deploy/deploy.module.d.ts +0 -2
  376. package/dist/src/domains/deploy/deploy.module.js.map +0 -1
  377. package/dist/src/domains/deploy/index.d.ts +0 -2
  378. package/dist/src/domains/deploy/index.js.map +0 -1
  379. package/dist/src/domains/deploy/runners/deploy.runner.d.ts +0 -10
  380. package/dist/src/domains/deploy/runners/deploy.runner.js +0 -132
  381. package/dist/src/domains/deploy/runners/deploy.runner.js.map +0 -1
  382. package/dist/src/domains/deploy/runners/index.d.ts +0 -1
  383. package/dist/src/domains/deploy/runners/index.js.map +0 -1
  384. package/dist/src/domains/init/index.js.map +0 -1
  385. package/dist/src/domains/init/init.module.d.ts +0 -2
  386. package/dist/src/domains/init/init.module.js.map +0 -1
  387. package/dist/src/domains/init/runners/index.d.ts +0 -1
  388. package/dist/src/domains/init/runners/index.js.map +0 -1
  389. package/dist/src/domains/init/runners/init.runner.d.ts +0 -4
  390. package/dist/src/domains/init/runners/init.runner.js.map +0 -1
package/README.md CHANGED
@@ -4,6 +4,20 @@ A command line interface for managing deployments and more.
4
4
 
5
5
  ## Installation
6
6
 
7
+ The CLI ships as a standalone binary (no Node.js required). npm remains available for Node users.
8
+
9
+ ### curl (macOS/Linux)
10
+
11
+ ```bash
12
+ curl -fsSL https://get.tappify.ai | sh
13
+ ```
14
+
15
+ ### winget (Windows)
16
+
17
+ ```powershell
18
+ winget install Tappify.CLI
19
+ ```
20
+
7
21
  ### NPM
8
22
 
9
23
  ```bash
@@ -33,60 +47,121 @@ choco install tappify
33
47
  ## Usage
34
48
 
35
49
  ```bash
36
- # Show available commands
37
50
  tappify --help
38
-
39
- # Authenticate with Tappify
40
51
  tappify login
52
+ tappify environment
53
+ tappify extension init
54
+ tappify extension dev
55
+ tappify extension publish
56
+ ```
57
+
58
+ ## Commands
59
+
60
+ ### `login`, `logout`
61
+
62
+ Authenticate with Tappify through the device authorization flow, and clear the stored session.
41
63
 
42
- # Initialize a new app project
43
- tappify init
64
+ ### `upgrade`
44
65
 
45
- # Publish your app
46
- tappify publish
66
+ Update the CLI to the latest version. Self-updates binary installs; otherwise prints the right command for your package manager.
47
67
 
48
- # Log out
49
- tappify logout
68
+ ### `environment`, `env`
50
69
 
51
- # Create a deployment
52
- tappify create-deployment <project-id> --environment production --branch main
70
+ Choose whether the CLI connects to Production or the internal Staging sandbox:
71
+
72
+ ```bash
73
+ tappify environment
74
+ tappify environment current
75
+ tappify environment use production
76
+ tappify environment use staging --yes
53
77
  ```
54
78
 
55
- ## Commands
79
+ Staging requires confirmation unless `--yes` is supplied:
56
80
 
57
- ### `login`
81
+ ```text
82
+ WARNING: INTERNAL TESTING ENVIRONMENT
58
83
 
59
- Authenticate with Tappify via device authorization flow. Opens a browser to complete authentication.
84
+ Staging uses https://staging.api.tappify.ai.
85
+ Data may be incomplete, changed, or deleted.
86
+ Do not use this environment unless you know what you are doing.
87
+ ```
60
88
 
61
- ### `logout`
89
+ Switching environments logs the CLI out and clears the selected sandbox project, so run `tappify login` again. `TAPPIFY_API_URL` is an internal and CI escape hatch; while set, it overrides the selected environment and emits a custom-API warning.
62
90
 
63
- Log out of Tappify and clear stored credentials.
91
+ ### `link`
64
92
 
65
- ### `init`
93
+ Link this directory to a Tappify project and its apps, writing `.tappify/project.json`.
66
94
 
67
- Initialize a new Tappify app project. Creates a `tap.config.json` in the current directory.
95
+ ### `deployments configure`
68
96
 
69
- ### `publish`
97
+ Configure CI code signing for an app.
70
98
 
71
- Publish your Tappify app. Bundles the `dist/` directory and `tap.config.json` into a zip and uploads it.
99
+ ### `vendor create`
72
100
 
73
- ### `create-deployment`
101
+ Create a vendor account, its workspace and its sandbox project. Every `extension` command that finds no vendor points you here.
74
102
 
75
- Create a new deployment for a project.
103
+ ### `extension`
76
104
 
77
- ```bash
78
- tappify create-deployment <project-id> [options]
79
- ```
105
+ Build, test and publish an extension. `tappify ext` is the same command.
106
+
107
+ | Command | Does |
108
+ | -------------------------------- | ------------------------------------------------------------------ |
109
+ | `extension init [dir]` | Scaffolds an extension from the starter |
110
+ | `extension add <kind> [name]` | Adds a contribution, scaffolds its files and regenerates the types |
111
+ | `extension remove <kind> <id>` | Removes a contribution and, with confirmation, its files |
112
+ | `extension list` | Lists the contributions and scopes this extension declares |
113
+ | `extension set <field> <value>` | Sets one field in the manifest |
114
+ | `extension scopes add <key>` | Grants this extension one more scope |
115
+ | `extension scopes remove <key>` | Takes one scope away |
116
+ | `extension events add <name>` | Receives one Tappify event on your server |
117
+ | `extension events remove <name>` | Stops receiving one Tappify event on your server |
118
+ | `extension types` | Regenerates `src/tappify.d.ts` |
119
+ | `extension dev` | Serves the extension and previews it while you edit |
120
+ | `extension doctor` | Runs every check the Tap Store runs, here |
121
+ | `extension publish` | Builds, checks and sends the release to the Tap Store |
122
+ | `extension retire` | Takes the extension out of the Tap Store and every install |
123
+ | `extension status` | Shows the live release, the release in review and the installs |
124
+ | `extension whoami` | Shows the vendor, your role and the sandbox project |
125
+
126
+ Run `tappify extension <command> --help` for the flags.
127
+
128
+ ### `mcp`
129
+
130
+ Serves the MCP server for agents over stdio.
131
+
132
+ Editors and agents run `tappify mcp` themselves. The Claude Code plugin at `tappify-dev/claude-plugin` declares it, so installing that plugin is all a Claude Code user does.
133
+
134
+ ### `--json`
135
+
136
+ Every `vendor` and `extension` command takes `--json` and prints one object on stdout: the same result its two human lines describe. A failure prints `{ "ok": false, "error": { "what": …, "why": …, "fix": … } }` and exits non-zero. `login`, `logout`, `link`, `upgrade` and `deployments configure` take no `--json`, and `mcp` has none either — its stdout carries the protocol.
137
+
138
+ Each payload below also carries `ok: true`.
80
139
 
81
- **Arguments:**
140
+ | Command | Keys |
141
+ | --------------------------------- | ---------------------------------------------------------- |
142
+ | `tappify vendor create` | `vendor`, `workspace`, `sandboxProject` |
143
+ | `tappify extension init` | `id`, `name`, `directory`, `files` |
144
+ | `tappify extension add` | `kind`, `id`, `files`, `scopesAdded` |
145
+ | `tappify extension remove` | `kind`, `id`, `files` |
146
+ | `tappify extension list` | `id`, `contributions`, `scopes` |
147
+ | `tappify extension set` | `field`, `value` |
148
+ | `tappify extension scopes add` | `key`, `justification`, `requiresSecurityReview` |
149
+ | `tappify extension scopes remove` | `key`, `stillNeeded` |
150
+ | `tappify extension events add` | `name`, `events` |
151
+ | `tappify extension events remove` | `name`, `events`, `usedBy` |
152
+ | `tappify extension types` | `file`, `schemas` |
153
+ | `tappify extension dev` | `id`, `remoteEntry`, `previewUrl`, `hostUrl`, `installId` |
154
+ | `tappify extension doctor` | `id`, `errors`, `warnings`, `passed`, `fixed`, `checks` |
155
+ | `tappify extension publish` | `id`, `status`, `releaseId`, `bytes`, `entries`, `pending` |
156
+ | `tappify extension retire` | `id`, `status` |
157
+ | `tappify extension status` | `id`, `live`, `pending`, `timeline`, `installCount` |
158
+ | `tappify extension whoami` | `user`, `vendor`, `role`, `sandboxProject` |
82
159
 
83
- - `project-id`: The ID of the project to deploy
160
+ `publish` carries `pending` only when the release goes to review with scopes or contribution kinds the live release does not have. `doctor` prints the same six keys whether or not a check failed; when one did, the object is the `ok: false` form and `errors` is above zero. `fixed` lists what `--fix` changed, and is empty without the flag. `scopes remove` carries `stillNeeded` on both forms: `null` when the scope went, and the reason it stayed when it did not. A failure carries whatever keys the command has beside `error`, so the shape a command prints does not change when it refuses.
84
161
 
85
- **Options:**
162
+ `events remove` carries `usedBy`: the markers and banners that draw the event, which keep working because they are inbound webhooks rather than this subscription.
86
163
 
87
- - `-e, --environment <environment>`: Target environment (e.g., production, staging)
88
- - `-b, --branch <branch>`: Git branch to deploy
89
- - `-d, --dry-run`: Run without making actual changes
164
+ `tappify vendor --json`, `tappify extension --json`, `tappify extension scopes --json` and `tappify extension events --json` print `{ commands }` — the verbs the group holds, not a result.
90
165
 
91
166
  ## License
92
167
 
@@ -18,9 +18,13 @@ exports.AppModule = AppModule = __decorate([
18
18
  imports: [
19
19
  core_1.CoreModule,
20
20
  domains_1.DeploymentsModule,
21
+ domains_1.EnvironmentModule,
22
+ domains_1.ExtensionModule,
21
23
  domains_1.AuthModule,
22
- domains_1.InitModule,
23
- domains_1.DeployModule,
24
+ domains_1.LinkModule,
25
+ domains_1.McpModule,
26
+ domains_1.UpgradeModule,
27
+ domains_1.VendorModule,
24
28
  ],
25
29
  controllers: [],
26
30
  providers: [],
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,iCAAoC;AACpC,uCAKmB;AACnB,2CAAwC;AAajC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAXrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,iBAAU;YACV,2BAAiB;YACjB,oBAAU;YACV,oBAAU;YACV,sBAAY;SACb;QACD,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,EAAE;KACd,CAAC;GACW,SAAS,CAAG"}
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,iCAAoC;AACpC,uCASmB;AACnB,2CAAwC;AAiBjC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAfrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,iBAAU;YACV,2BAAiB;YACjB,2BAAiB;YACjB,yBAAe;YACf,oBAAU;YACV,oBAAU;YACV,mBAAS;YACT,uBAAa;YACb,sBAAY;SACb;QACD,WAAW,EAAE,EAAE;QACf,SAAS,EAAE,EAAE;KACd,CAAC;GACW,SAAS,CAAG"}
@@ -1,11 +1,37 @@
1
+ import { AuthService } from '../../core/auth/auth.service.js';
1
2
  import { ConfigService } from '../../core/config/config.service.js';
3
+ import { EnvironmentService } from '../../core/environment/environment.service.js';
4
+ export declare class ApiError extends Error {
5
+ readonly status: number;
6
+ readonly errorCode: string | null;
7
+ readonly path: string;
8
+ readonly additionalData: Record<string, unknown> | null;
9
+ constructor(message: string, status: number, errorCode: string | null, path: string, additionalData?: Record<string, unknown> | null);
10
+ }
2
11
  export declare class ApiService {
3
12
  private readonly configService;
13
+ private readonly authService;
14
+ private readonly environment;
4
15
  private readonly logger;
5
- constructor(configService: ConfigService);
16
+ constructor(configService: ConfigService, authService: AuthService, environment: EnvironmentService);
6
17
  private get baseUrl();
7
- private get headers();
18
+ private authHeader;
19
+ private expiresInMs;
20
+ private isExpiring;
21
+ private ensureFreshToken;
22
+ private authedFetch;
23
+ private toError;
24
+ private parseBody;
8
25
  get<T = unknown>(path: string): Promise<T>;
9
26
  post<T = unknown>(path: string, body: unknown): Promise<T>;
27
+ getPublic<T = unknown>(path: string, options?: {
28
+ timeoutMs?: number;
29
+ }): Promise<T>;
30
+ del<T = unknown>(path: string): Promise<T>;
31
+ uploadMultipart<T = unknown>(path: string, files: {
32
+ field: string;
33
+ filePath: string;
34
+ filename: string;
35
+ }[], fields?: Record<string, string>): Promise<T>;
10
36
  upload<T = unknown>(path: string, filePath: string): Promise<T>;
11
37
  }
@@ -13,70 +13,194 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  var ApiService_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.ApiService = void 0;
16
+ exports.ApiService = exports.ApiError = void 0;
17
+ const auth_service_js_1 = require("../../core/auth/auth.service.js");
17
18
  const config_service_js_1 = require("../../core/config/config.service.js");
19
+ const environment_service_js_1 = require("../../core/environment/environment.service.js");
18
20
  const common_1 = require("@nestjs/common");
19
21
  const form_data_1 = __importDefault(require("form-data"));
20
22
  const node_fs_1 = require("node:fs");
23
+ class ApiError extends Error {
24
+ status;
25
+ errorCode;
26
+ path;
27
+ additionalData;
28
+ constructor(message, status, errorCode, path, additionalData = null) {
29
+ super(message);
30
+ this.status = status;
31
+ this.errorCode = errorCode;
32
+ this.path = path;
33
+ this.additionalData = additionalData;
34
+ this.name = 'ApiError';
35
+ }
36
+ }
37
+ exports.ApiError = ApiError;
38
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
39
+ const readErrorBody = (text) => {
40
+ try {
41
+ const parsed = JSON.parse(text);
42
+ return isRecord(parsed) ? parsed : {};
43
+ }
44
+ catch {
45
+ return {};
46
+ }
47
+ };
21
48
  let ApiService = ApiService_1 = class ApiService {
22
49
  configService;
50
+ authService;
51
+ environment;
23
52
  logger = new common_1.Logger(ApiService_1.name);
24
- constructor(configService) {
53
+ constructor(configService, authService, environment) {
25
54
  this.configService = configService;
55
+ this.authService = authService;
56
+ this.environment = environment;
26
57
  }
27
58
  get baseUrl() {
28
- return (this.configService.get('apiBaseUrl') ?? 'https://api.tappify.io/api/v1');
59
+ return this.environment.current().apiBaseUrl;
29
60
  }
30
- get headers() {
61
+ authHeader() {
31
62
  const token = this.configService.get('accessToken');
32
- return {
33
- ...(token ? { Authorization: `Bearer ${token}` } : {}),
34
- };
63
+ return token ? { Authorization: `Bearer ${token}` } : {};
64
+ }
65
+ expiresInMs(token) {
66
+ if (!token)
67
+ return null;
68
+ try {
69
+ const [, payload] = token.split('.');
70
+ const { exp } = JSON.parse(Buffer.from(payload, 'base64url').toString());
71
+ return typeof exp === 'number' ? exp * 1000 - Date.now() : null;
72
+ }
73
+ catch {
74
+ return null;
75
+ }
76
+ }
77
+ isExpiring(token) {
78
+ const left = this.expiresInMs(token);
79
+ return left !== null && left <= 30_000;
80
+ }
81
+ async ensureFreshToken() {
82
+ if (this.isExpiring(this.configService.get('accessToken'))) {
83
+ await this.authService.refresh();
84
+ }
85
+ }
86
+ async authedFetch(path, init) {
87
+ await this.ensureFreshToken();
88
+ const url = `${this.baseUrl}${path}`;
89
+ let res = await fetch(url, {
90
+ ...init,
91
+ headers: { ...init.headers, ...this.authHeader() },
92
+ });
93
+ if (res.status === 401 && (await this.authService.refresh())) {
94
+ res = await fetch(url, {
95
+ ...init,
96
+ headers: { ...init.headers, ...this.authHeader() },
97
+ });
98
+ }
99
+ return res;
100
+ }
101
+ async toError(method, path, res) {
102
+ const text = await res.text();
103
+ const body = readErrorBody(text);
104
+ const errorCode = typeof body.errorCode === 'string' ? body.errorCode : null;
105
+ const message = typeof body.message === 'string' ? body.message : text;
106
+ const additionalData = isRecord(body.additionalData)
107
+ ? body.additionalData
108
+ : null;
109
+ if (res.status === 401) {
110
+ const left = this.expiresInMs(this.configService.get('accessToken'));
111
+ if (left !== null && left > 0) {
112
+ return new ApiError(`The server at ${this.baseUrl} rejected your credentials even though your login is still valid. ` +
113
+ `That environment's API is likely misconfigured (wrong auth provider), not a login problem.`, 401, errorCode ?? 'INVALID_TOKEN', path, additionalData);
114
+ }
115
+ return new ApiError('Your session has expired. Run `tappify login`.', 401, 'SESSION_EXPIRED', path, additionalData);
116
+ }
117
+ return new ApiError(message === '' ? `${method} ${path} failed (${res.status}).` : message, res.status, errorCode, path, additionalData);
118
+ }
119
+ async parseBody(res) {
120
+ if (res.status === 204)
121
+ return undefined;
122
+ const text = await res.text();
123
+ return (text ? JSON.parse(text) : undefined);
35
124
  }
36
125
  async get(path) {
37
- const res = await fetch(`${this.baseUrl}${path}`, {
126
+ const res = await this.authedFetch(path, {
38
127
  method: 'GET',
39
- headers: { ...this.headers, 'Content-Type': 'application/json' },
128
+ headers: { 'Content-Type': 'application/json' },
40
129
  });
41
- if (!res.ok) {
42
- const text = await res.text();
43
- throw new Error(`GET ${path} failed (${res.status}): ${text}`);
44
- }
45
- return res.json();
130
+ if (!res.ok)
131
+ throw await this.toError('GET', path, res);
132
+ return this.parseBody(res);
46
133
  }
47
134
  async post(path, body) {
48
- const res = await fetch(`${this.baseUrl}${path}`, {
135
+ const res = await this.authedFetch(path, {
49
136
  method: 'POST',
50
- headers: { ...this.headers, 'Content-Type': 'application/json' },
137
+ headers: { 'Content-Type': 'application/json' },
51
138
  body: JSON.stringify(body),
52
139
  });
53
- if (!res.ok) {
54
- const text = await res.text();
55
- throw new Error(`POST ${path} failed (${res.status}): ${text}`);
140
+ if (!res.ok)
141
+ throw await this.toError('POST', path, res);
142
+ return this.parseBody(res);
143
+ }
144
+ async getPublic(path, options = {}) {
145
+ const res = await fetch(`${this.baseUrl}${path}`, {
146
+ method: 'GET',
147
+ headers: { 'Content-Type': 'application/json' },
148
+ ...(options.timeoutMs === undefined
149
+ ? {}
150
+ : { signal: AbortSignal.timeout(options.timeoutMs) }),
151
+ });
152
+ if (!res.ok)
153
+ throw await this.toError('GET', path, res);
154
+ return this.parseBody(res);
155
+ }
156
+ async del(path) {
157
+ const res = await this.authedFetch(path, { method: 'DELETE' });
158
+ if (!res.ok)
159
+ throw await this.toError('DELETE', path, res);
160
+ return this.parseBody(res);
161
+ }
162
+ async uploadMultipart(path, files, fields = {}) {
163
+ await this.ensureFreshToken();
164
+ const form = new form_data_1.default();
165
+ for (const [name, value] of Object.entries(fields)) {
166
+ form.append(name, value);
56
167
  }
57
- return (await res.json());
168
+ for (const file of files) {
169
+ form.append(file.field, (0, node_fs_1.readFileSync)(file.filePath), {
170
+ filename: file.filename,
171
+ });
172
+ }
173
+ const res = await fetch(`${this.baseUrl}${path}`, {
174
+ method: 'POST',
175
+ headers: { ...this.authHeader(), ...form.getHeaders() },
176
+ body: new Uint8Array(form.getBuffer()),
177
+ });
178
+ if (!res.ok)
179
+ throw await this.toError('POST', path, res);
180
+ return this.parseBody(res);
58
181
  }
59
182
  async upload(path, filePath) {
183
+ await this.ensureFreshToken();
60
184
  const form = new form_data_1.default();
61
185
  form.append('file', (0, node_fs_1.createReadStream)(filePath));
62
186
  const res = await fetch(`${this.baseUrl}${path}`, {
63
187
  method: 'POST',
64
188
  headers: {
65
- ...this.headers,
189
+ ...this.authHeader(),
66
190
  ...form.getHeaders(),
67
191
  },
68
192
  body: form,
69
193
  });
70
- if (!res.ok) {
71
- const text = await res.text();
72
- throw new Error(`Upload to ${path} failed (${res.status}): ${text}`);
73
- }
74
- return (await res.json());
194
+ if (!res.ok)
195
+ throw await this.toError('Upload to', path, res);
196
+ return this.parseBody(res);
75
197
  }
76
198
  };
77
199
  exports.ApiService = ApiService;
78
200
  exports.ApiService = ApiService = ApiService_1 = __decorate([
79
201
  (0, common_1.Injectable)(),
80
- __metadata("design:paramtypes", [config_service_js_1.ConfigService])
202
+ __metadata("design:paramtypes", [config_service_js_1.ConfigService,
203
+ auth_service_js_1.AuthService,
204
+ environment_service_js_1.EnvironmentService])
81
205
  ], ApiService);
82
206
  //# sourceMappingURL=api.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.service.js","sourceRoot":"","sources":["../../../../src/core/api/api.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.service.js","sourceRoot":"","sources":["../../../../src/core/api/api.service.ts"],"names":[],"mappings":"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"}
@@ -22,8 +22,10 @@ export declare class AuthService {
22
22
  private readonly configService;
23
23
  private readonly logger;
24
24
  constructor(configService: ConfigService);
25
+ private get clientId();
25
26
  startDeviceAuthorization(): Promise<DeviceAuthResponse>;
26
27
  pollForToken(deviceCode: string, interval: number, expiresIn: number): Promise<TokenResponse>;
28
+ refresh(): Promise<boolean>;
27
29
  private storeCredentials;
28
30
  private sleep;
29
31
  }
@@ -14,18 +14,23 @@ exports.AuthService = void 0;
14
14
  const config_service_js_1 = require("../../core/config/config.service.js");
15
15
  const common_1 = require("@nestjs/common");
16
16
  const WORKOS_BASE_URL = 'https://api.workos.com';
17
- const CLIENT_ID = process.env.WORKOS_CLIENT_ID ?? 'client_01JYN3YC15ECJVH7805KERWA1Y';
17
+ const DEFAULT_CLIENT_ID = 'client_01JYN3YC15ECJVH7805KERWA1Y';
18
18
  let AuthService = AuthService_1 = class AuthService {
19
19
  configService;
20
20
  logger = new common_1.Logger(AuthService_1.name);
21
21
  constructor(configService) {
22
22
  this.configService = configService;
23
23
  }
24
+ get clientId() {
25
+ return (process.env.WORKOS_CLIENT_ID ??
26
+ this.configService.get('workosClientId') ??
27
+ DEFAULT_CLIENT_ID);
28
+ }
24
29
  async startDeviceAuthorization() {
25
30
  const res = await fetch(`${WORKOS_BASE_URL}/user_management/authorize/device`, {
26
31
  method: 'POST',
27
32
  headers: { 'Content-Type': 'application/json' },
28
- body: JSON.stringify({ client_id: CLIENT_ID }),
33
+ body: JSON.stringify({ client_id: this.clientId }),
29
34
  });
30
35
  if (!res.ok) {
31
36
  const text = await res.text();
@@ -42,7 +47,7 @@ let AuthService = AuthService_1 = class AuthService {
42
47
  method: 'POST',
43
48
  headers: { 'Content-Type': 'application/json' },
44
49
  body: JSON.stringify({
45
- client_id: CLIENT_ID,
50
+ client_id: this.clientId,
46
51
  grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
47
52
  device_code: deviceCode,
48
53
  }),
@@ -64,6 +69,29 @@ let AuthService = AuthService_1 = class AuthService {
64
69
  }
65
70
  throw new Error('Device authorization timed out.');
66
71
  }
72
+ async refresh() {
73
+ const refreshToken = this.configService.get('refreshToken');
74
+ if (!refreshToken)
75
+ return false;
76
+ try {
77
+ const res = await fetch(`${WORKOS_BASE_URL}/user_management/authenticate`, {
78
+ method: 'POST',
79
+ headers: { 'Content-Type': 'application/json' },
80
+ body: JSON.stringify({
81
+ client_id: this.clientId,
82
+ grant_type: 'refresh_token',
83
+ refresh_token: refreshToken,
84
+ }),
85
+ });
86
+ if (!res.ok)
87
+ return false;
88
+ this.storeCredentials((await res.json()));
89
+ return true;
90
+ }
91
+ catch {
92
+ return false;
93
+ }
94
+ }
67
95
  storeCredentials(data) {
68
96
  this.configService.set('accessToken', data.access_token);
69
97
  this.configService.set('refreshToken', data.refresh_token);
@@ -1 +1 @@
1
- {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../src/core/auth/auth.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../src/core/auth/auth.service.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,15 @@ export interface TappifyConfig {
4
4
  userId?: string;
5
5
  organizationId?: string;
6
6
  apiBaseUrl?: string;
7
- updateCheckedAt?: number;
8
- latestVersion?: string;
7
+ environment?: 'production' | 'staging';
8
+ workosClientId?: string;
9
+ portalUrl?: string;
10
+ sandboxProjectId?: string;
11
+ sandboxProjectName?: string;
12
+ updateCheckedAtStable?: number;
13
+ updateCheckedAtCanary?: number;
14
+ latestVersionStable?: string;
15
+ latestVersionCanary?: string;
9
16
  }
10
17
  export declare class ConfigService {
11
18
  private readonly store;
@@ -14,5 +21,7 @@ export declare class ConfigService {
14
21
  set<K extends keyof TappifyConfig>(key: K, value: TappifyConfig[K]): void;
15
22
  delete<K extends keyof TappifyConfig>(key: K): void;
16
23
  clear(): void;
24
+ clearAuth(): void;
25
+ clearEnvironmentSession(): void;
17
26
  isAuthenticated(): boolean;
18
27
  }
@@ -20,9 +20,6 @@ let ConfigService = class ConfigService {
20
20
  constructor() {
21
21
  this.store = new conf_1.default({
22
22
  projectName: 'tappify',
23
- defaults: {
24
- apiBaseUrl: 'https://api.tappify.io/api/v1',
25
- },
26
23
  });
27
24
  }
28
25
  get(key) {
@@ -37,6 +34,19 @@ let ConfigService = class ConfigService {
37
34
  clear() {
38
35
  this.store.clear();
39
36
  }
37
+ clearAuth() {
38
+ ['accessToken', 'refreshToken', 'userId', 'organizationId'].forEach(key => this.store.delete(key));
39
+ }
40
+ clearEnvironmentSession() {
41
+ [
42
+ 'accessToken',
43
+ 'refreshToken',
44
+ 'userId',
45
+ 'organizationId',
46
+ 'sandboxProjectId',
47
+ 'sandboxProjectName',
48
+ ].forEach(key => this.store.delete(key));
49
+ }
40
50
  isAuthenticated() {
41
51
  return !!this.store.get('accessToken');
42
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../../src/core/config/config.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gDAAwB;AAcjB,IAAM,aAAa,GAAnB,MAAM,aAAa;IACP,KAAK,CAAsB;IAE5C;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,cAAI,CAAgB;YACnC,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE;gBACR,UAAU,EAAE,+BAA+B;aAC5C;SACF,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAgC,GAAM;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAgC,GAAM,EAAE,KAAuB;QAChE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAgC,GAAM;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,eAAe;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AA/BY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;;GACA,aAAa,CA+BzB"}
1
+ {"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../../src/core/config/config.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gDAAwB;AAqBjB,IAAM,aAAa,GAAnB,MAAM,aAAa;IACP,KAAK,CAAsB;IAE5C;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,cAAI,CAAgB;YACnC,WAAW,EAAE,SAAS;SACvB,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAgC,GAAM;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAgC,GAAM,EAAE,KAAuB;QAChE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAgC,GAAM;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAOD,SAAS;QAEL,CAAC,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,CAC3D,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,uBAAuB;QAEnB;YACE,aAAa;YACb,cAAc;YACd,QAAQ;YACR,gBAAgB;YAChB,kBAAkB;YAClB,oBAAoB;SAEvB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,eAAe;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AApDY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;;GACA,aAAa,CAoDzB"}