tawa 0.7.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 (459) hide show
  1. package/README.md +159 -0
  2. package/dist/commands/backup.d.ts +11 -0
  3. package/dist/commands/backup.d.ts.map +1 -0
  4. package/dist/commands/backup.js +112 -0
  5. package/dist/commands/backup.js.map +1 -0
  6. package/dist/commands/config.d.ts +36 -0
  7. package/dist/commands/config.d.ts.map +1 -0
  8. package/dist/commands/config.js +297 -0
  9. package/dist/commands/config.js.map +1 -0
  10. package/dist/commands/deploy.d.ts +18 -0
  11. package/dist/commands/deploy.d.ts.map +1 -0
  12. package/dist/commands/deploy.js +219 -0
  13. package/dist/commands/deploy.js.map +1 -0
  14. package/dist/commands/destroy.d.ts +12 -0
  15. package/dist/commands/destroy.d.ts.map +1 -0
  16. package/dist/commands/destroy.js +62 -0
  17. package/dist/commands/destroy.js.map +1 -0
  18. package/dist/commands/domains.d.ts +36 -0
  19. package/dist/commands/domains.d.ts.map +1 -0
  20. package/dist/commands/domains.js +323 -0
  21. package/dist/commands/domains.js.map +1 -0
  22. package/dist/commands/env.d.ts +7 -0
  23. package/dist/commands/env.d.ts.map +1 -0
  24. package/dist/commands/env.js +42 -0
  25. package/dist/commands/env.js.map +1 -0
  26. package/dist/commands/git.d.ts +32 -0
  27. package/dist/commands/git.d.ts.map +1 -0
  28. package/dist/commands/git.js +340 -0
  29. package/dist/commands/git.js.map +1 -0
  30. package/dist/commands/init-ai.d.ts +7 -0
  31. package/dist/commands/init-ai.d.ts.map +1 -0
  32. package/dist/commands/init-ai.js +257 -0
  33. package/dist/commands/init-ai.js.map +1 -0
  34. package/dist/commands/init.d.ts +8 -0
  35. package/dist/commands/init.d.ts.map +1 -0
  36. package/dist/commands/init.js +228 -0
  37. package/dist/commands/init.js.map +1 -0
  38. package/dist/commands/link.d.ts +10 -0
  39. package/dist/commands/link.d.ts.map +1 -0
  40. package/dist/commands/link.js +193 -0
  41. package/dist/commands/link.js.map +1 -0
  42. package/dist/commands/login.d.ts +17 -0
  43. package/dist/commands/login.d.ts.map +1 -0
  44. package/dist/commands/login.js +490 -0
  45. package/dist/commands/login.js.map +1 -0
  46. package/dist/commands/logs.d.ts +16 -0
  47. package/dist/commands/logs.d.ts.map +1 -0
  48. package/dist/commands/logs.js +362 -0
  49. package/dist/commands/logs.js.map +1 -0
  50. package/dist/commands/oauth.d.ts +33 -0
  51. package/dist/commands/oauth.d.ts.map +1 -0
  52. package/dist/commands/oauth.js +181 -0
  53. package/dist/commands/oauth.js.map +1 -0
  54. package/dist/commands/preflight.d.ts +20 -0
  55. package/dist/commands/preflight.d.ts.map +1 -0
  56. package/dist/commands/preflight.js +203 -0
  57. package/dist/commands/preflight.js.map +1 -0
  58. package/dist/commands/program.d.ts +7 -0
  59. package/dist/commands/program.d.ts.map +1 -0
  60. package/dist/commands/program.js +59 -0
  61. package/dist/commands/program.js.map +1 -0
  62. package/dist/commands/programs.d.ts +7 -0
  63. package/dist/commands/programs.d.ts.map +1 -0
  64. package/dist/commands/programs.js +42 -0
  65. package/dist/commands/programs.js.map +1 -0
  66. package/dist/commands/push.d.ts +12 -0
  67. package/dist/commands/push.d.ts.map +1 -0
  68. package/dist/commands/push.js +166 -0
  69. package/dist/commands/push.js.map +1 -0
  70. package/dist/commands/register-scaffold.test.d.ts +2 -0
  71. package/dist/commands/register-scaffold.test.d.ts.map +1 -0
  72. package/dist/commands/register-scaffold.test.js +291 -0
  73. package/dist/commands/register-scaffold.test.js.map +1 -0
  74. package/dist/commands/register.d.ts +7 -0
  75. package/dist/commands/register.d.ts.map +1 -0
  76. package/dist/commands/register.js +304 -0
  77. package/dist/commands/register.js.map +1 -0
  78. package/dist/commands/rollback.d.ts +11 -0
  79. package/dist/commands/rollback.d.ts.map +1 -0
  80. package/dist/commands/rollback.js +147 -0
  81. package/dist/commands/rollback.js.map +1 -0
  82. package/dist/commands/sample.d.ts +15 -0
  83. package/dist/commands/sample.d.ts.map +1 -0
  84. package/dist/commands/sample.js +312 -0
  85. package/dist/commands/sample.js.map +1 -0
  86. package/dist/commands/scopes.d.ts +29 -0
  87. package/dist/commands/scopes.d.ts.map +1 -0
  88. package/dist/commands/scopes.js +203 -0
  89. package/dist/commands/scopes.js.map +1 -0
  90. package/dist/commands/services.d.ts +13 -0
  91. package/dist/commands/services.d.ts.map +1 -0
  92. package/dist/commands/services.js +95 -0
  93. package/dist/commands/services.js.map +1 -0
  94. package/dist/commands/settings.d.ts +10 -0
  95. package/dist/commands/settings.d.ts.map +1 -0
  96. package/dist/commands/settings.js +41 -0
  97. package/dist/commands/settings.js.map +1 -0
  98. package/dist/commands/signup.d.ts +9 -0
  99. package/dist/commands/signup.d.ts.map +1 -0
  100. package/dist/commands/signup.js +192 -0
  101. package/dist/commands/signup.js.map +1 -0
  102. package/dist/commands/status.d.ts +9 -0
  103. package/dist/commands/status.d.ts.map +1 -0
  104. package/dist/commands/status.js +170 -0
  105. package/dist/commands/status.js.map +1 -0
  106. package/dist/commands/troubleshoot.d.ts +19 -0
  107. package/dist/commands/troubleshoot.d.ts.map +1 -0
  108. package/dist/commands/troubleshoot.js +465 -0
  109. package/dist/commands/troubleshoot.js.map +1 -0
  110. package/dist/commands/update.d.ts +6 -0
  111. package/dist/commands/update.d.ts.map +1 -0
  112. package/dist/commands/update.js +64 -0
  113. package/dist/commands/update.js.map +1 -0
  114. package/dist/commands/user.d.ts +17 -0
  115. package/dist/commands/user.d.ts.map +1 -0
  116. package/dist/commands/user.js +126 -0
  117. package/dist/commands/user.js.map +1 -0
  118. package/dist/commands/validate.d.ts +13 -0
  119. package/dist/commands/validate.d.ts.map +1 -0
  120. package/dist/commands/validate.js +10 -0
  121. package/dist/commands/validate.js.map +1 -0
  122. package/dist/commands/versions.d.ts +16 -0
  123. package/dist/commands/versions.d.ts.map +1 -0
  124. package/dist/commands/versions.js +116 -0
  125. package/dist/commands/versions.js.map +1 -0
  126. package/dist/index.d.ts +3 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +573 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/lib/__tests__/scaffold-integration.test.d.ts +2 -0
  131. package/dist/lib/__tests__/scaffold-integration.test.d.ts.map +1 -0
  132. package/dist/lib/__tests__/scaffold-integration.test.js +321 -0
  133. package/dist/lib/__tests__/scaffold-integration.test.js.map +1 -0
  134. package/dist/lib/ai/client.d.ts +39 -0
  135. package/dist/lib/ai/client.d.ts.map +1 -0
  136. package/dist/lib/ai/client.js +236 -0
  137. package/dist/lib/ai/client.js.map +1 -0
  138. package/dist/lib/ai/generator.d.ts +17 -0
  139. package/dist/lib/ai/generator.d.ts.map +1 -0
  140. package/dist/lib/ai/generator.js +338 -0
  141. package/dist/lib/ai/generator.js.map +1 -0
  142. package/dist/lib/ai/prompts.d.ts +47 -0
  143. package/dist/lib/ai/prompts.d.ts.map +1 -0
  144. package/dist/lib/ai/prompts.js +247 -0
  145. package/dist/lib/ai/prompts.js.map +1 -0
  146. package/dist/lib/ai/scanner.d.ts +50 -0
  147. package/dist/lib/ai/scanner.d.ts.map +1 -0
  148. package/dist/lib/ai/scanner.js +237 -0
  149. package/dist/lib/ai/scanner.js.map +1 -0
  150. package/dist/lib/api.d.ts +18 -0
  151. package/dist/lib/api.d.ts.map +1 -0
  152. package/dist/lib/api.js +67 -0
  153. package/dist/lib/api.js.map +1 -0
  154. package/dist/lib/auto-register.d.ts +12 -0
  155. package/dist/lib/auto-register.d.ts.map +1 -0
  156. package/dist/lib/auto-register.js +42 -0
  157. package/dist/lib/auto-register.js.map +1 -0
  158. package/dist/lib/bio.d.ts +91 -0
  159. package/dist/lib/bio.d.ts.map +1 -0
  160. package/dist/lib/bio.js +274 -0
  161. package/dist/lib/bio.js.map +1 -0
  162. package/dist/lib/builder.d.ts +67 -0
  163. package/dist/lib/builder.d.ts.map +1 -0
  164. package/dist/lib/builder.js +198 -0
  165. package/dist/lib/builder.js.map +1 -0
  166. package/dist/lib/catalog.d.ts +3 -0
  167. package/dist/lib/catalog.d.ts.map +1 -0
  168. package/dist/lib/catalog.js +17 -0
  169. package/dist/lib/catalog.js.map +1 -0
  170. package/dist/lib/config.d.ts +25 -0
  171. package/dist/lib/config.d.ts.map +1 -0
  172. package/dist/lib/config.js +212 -0
  173. package/dist/lib/config.js.map +1 -0
  174. package/dist/lib/forgejo.d.ts +188 -0
  175. package/dist/lib/forgejo.d.ts.map +1 -0
  176. package/dist/lib/forgejo.js +305 -0
  177. package/dist/lib/forgejo.js.map +1 -0
  178. package/dist/lib/output.d.ts +12 -0
  179. package/dist/lib/output.d.ts.map +1 -0
  180. package/dist/lib/output.js +39 -0
  181. package/dist/lib/output.js.map +1 -0
  182. package/dist/lib/scaffold.d.ts +30 -0
  183. package/dist/lib/scaffold.d.ts.map +1 -0
  184. package/dist/lib/scaffold.js +180 -0
  185. package/dist/lib/scaffold.js.map +1 -0
  186. package/dist/lib/scope-requests.d.ts +17 -0
  187. package/dist/lib/scope-requests.d.ts.map +1 -0
  188. package/dist/lib/scope-requests.js +78 -0
  189. package/dist/lib/scope-requests.js.map +1 -0
  190. package/dist/lib/scope-requests.test.d.ts +2 -0
  191. package/dist/lib/scope-requests.test.d.ts.map +1 -0
  192. package/dist/lib/scope-requests.test.js +239 -0
  193. package/dist/lib/scope-requests.test.js.map +1 -0
  194. package/dist/lib/troubleshoot/analyzer.d.ts +14 -0
  195. package/dist/lib/troubleshoot/analyzer.d.ts.map +1 -0
  196. package/dist/lib/troubleshoot/analyzer.js +541 -0
  197. package/dist/lib/troubleshoot/analyzer.js.map +1 -0
  198. package/dist/lib/troubleshoot/auto-fix.d.ts +29 -0
  199. package/dist/lib/troubleshoot/auto-fix.d.ts.map +1 -0
  200. package/dist/lib/troubleshoot/auto-fix.js +373 -0
  201. package/dist/lib/troubleshoot/auto-fix.js.map +1 -0
  202. package/dist/lib/troubleshoot/index.d.ts +5 -0
  203. package/dist/lib/troubleshoot/index.d.ts.map +1 -0
  204. package/dist/lib/troubleshoot/index.js +6 -0
  205. package/dist/lib/troubleshoot/index.js.map +1 -0
  206. package/dist/lib/troubleshoot/log-fetcher.d.ts +43 -0
  207. package/dist/lib/troubleshoot/log-fetcher.d.ts.map +1 -0
  208. package/dist/lib/troubleshoot/log-fetcher.js +431 -0
  209. package/dist/lib/troubleshoot/log-fetcher.js.map +1 -0
  210. package/dist/lib/troubleshoot/redactor.d.ts +35 -0
  211. package/dist/lib/troubleshoot/redactor.d.ts.map +1 -0
  212. package/dist/lib/troubleshoot/redactor.js +208 -0
  213. package/dist/lib/troubleshoot/redactor.js.map +1 -0
  214. package/dist/lib/validators/catalog-schemas.d.ts +75 -0
  215. package/dist/lib/validators/catalog-schemas.d.ts.map +1 -0
  216. package/dist/lib/validators/catalog-schemas.js +40 -0
  217. package/dist/lib/validators/catalog-schemas.js.map +1 -0
  218. package/dist/lib/validators/catalog-validator.d.ts +3 -0
  219. package/dist/lib/validators/catalog-validator.d.ts.map +1 -0
  220. package/dist/lib/validators/catalog-validator.js +266 -0
  221. package/dist/lib/validators/catalog-validator.js.map +1 -0
  222. package/dist/lib/validators/catalog-validator.test.d.ts +2 -0
  223. package/dist/lib/validators/catalog-validator.test.d.ts.map +1 -0
  224. package/dist/lib/validators/catalog-validator.test.js +480 -0
  225. package/dist/lib/validators/catalog-validator.test.js.map +1 -0
  226. package/dist/lib/validators/config-preflight-validator.d.ts +12 -0
  227. package/dist/lib/validators/config-preflight-validator.d.ts.map +1 -0
  228. package/dist/lib/validators/config-preflight-validator.js +123 -0
  229. package/dist/lib/validators/config-preflight-validator.js.map +1 -0
  230. package/dist/lib/validators/dockerfile-validator.d.ts +5 -0
  231. package/dist/lib/validators/dockerfile-validator.d.ts.map +1 -0
  232. package/dist/lib/validators/dockerfile-validator.js +295 -0
  233. package/dist/lib/validators/dockerfile-validator.js.map +1 -0
  234. package/dist/lib/validators/dockerfile-validator.test.d.ts +2 -0
  235. package/dist/lib/validators/dockerfile-validator.test.d.ts.map +1 -0
  236. package/dist/lib/validators/dockerfile-validator.test.js +161 -0
  237. package/dist/lib/validators/dockerfile-validator.test.js.map +1 -0
  238. package/dist/lib/validators/env-validator.d.ts +3 -0
  239. package/dist/lib/validators/env-validator.d.ts.map +1 -0
  240. package/dist/lib/validators/env-validator.js +268 -0
  241. package/dist/lib/validators/env-validator.js.map +1 -0
  242. package/dist/lib/validators/git-validator.d.ts +3 -0
  243. package/dist/lib/validators/git-validator.d.ts.map +1 -0
  244. package/dist/lib/validators/git-validator.js +236 -0
  245. package/dist/lib/validators/git-validator.js.map +1 -0
  246. package/dist/lib/validators/health-detector.d.ts +4 -0
  247. package/dist/lib/validators/health-detector.d.ts.map +1 -0
  248. package/dist/lib/validators/health-detector.js +172 -0
  249. package/dist/lib/validators/health-detector.js.map +1 -0
  250. package/dist/lib/validators/health-detector.test.d.ts +2 -0
  251. package/dist/lib/validators/health-detector.test.d.ts.map +1 -0
  252. package/dist/lib/validators/health-detector.test.js +118 -0
  253. package/dist/lib/validators/health-detector.test.js.map +1 -0
  254. package/dist/lib/validators/index.d.ts +10 -0
  255. package/dist/lib/validators/index.d.ts.map +1 -0
  256. package/dist/lib/validators/index.js +10 -0
  257. package/dist/lib/validators/index.js.map +1 -0
  258. package/dist/lib/validators/oauth-validator.d.ts +3 -0
  259. package/dist/lib/validators/oauth-validator.d.ts.map +1 -0
  260. package/dist/lib/validators/oauth-validator.js +325 -0
  261. package/dist/lib/validators/oauth-validator.js.map +1 -0
  262. package/dist/lib/validators/oauth-validator.test.d.ts +2 -0
  263. package/dist/lib/validators/oauth-validator.test.d.ts.map +1 -0
  264. package/dist/lib/validators/oauth-validator.test.js +322 -0
  265. package/dist/lib/validators/oauth-validator.test.js.map +1 -0
  266. package/dist/lib/validators/route-validator.d.ts +3 -0
  267. package/dist/lib/validators/route-validator.d.ts.map +1 -0
  268. package/dist/lib/validators/route-validator.js +238 -0
  269. package/dist/lib/validators/route-validator.js.map +1 -0
  270. package/dist/lib/validators/scope-validator.d.ts +3 -0
  271. package/dist/lib/validators/scope-validator.d.ts.map +1 -0
  272. package/dist/lib/validators/scope-validator.js +141 -0
  273. package/dist/lib/validators/scope-validator.js.map +1 -0
  274. package/dist/lib/watch.d.ts +35 -0
  275. package/dist/lib/watch.d.ts.map +1 -0
  276. package/dist/lib/watch.js +171 -0
  277. package/dist/lib/watch.js.map +1 -0
  278. package/dist/templates/api/.env.example +15 -0
  279. package/dist/templates/api/Dockerfile +45 -0
  280. package/dist/templates/api/README.md +85 -0
  281. package/dist/templates/api/catalog-info.yaml +22 -0
  282. package/dist/templates/api/gitignore +31 -0
  283. package/dist/templates/api/helm/{{name}}/Chart.yaml +9 -0
  284. package/dist/templates/api/helm/{{name}}/templates/deployment.yaml +72 -0
  285. package/dist/templates/api/helm/{{name}}/templates/ingress.yaml +43 -0
  286. package/dist/templates/api/helm/{{name}}/templates/service.yaml +17 -0
  287. package/dist/templates/api/helm/{{name}}/values.yaml +64 -0
  288. package/dist/templates/api/package.json +33 -0
  289. package/dist/templates/api/src/index.ts +61 -0
  290. package/dist/templates/api/src/routes/example.ts +165 -0
  291. package/dist/templates/api/tsconfig.json +18 -0
  292. package/dist/templates/crosspod/README.md +87 -0
  293. package/dist/templates/crosspod/service-a/Dockerfile +27 -0
  294. package/dist/templates/crosspod/service-a/catalog-info.yaml +54 -0
  295. package/dist/templates/crosspod/service-a/gitignore +5 -0
  296. package/dist/templates/crosspod/service-a/helm/{{name}}-service-a/Chart.yaml +6 -0
  297. package/dist/templates/crosspod/service-a/helm/{{name}}-service-a/templates/deployment.yaml +72 -0
  298. package/dist/templates/crosspod/service-a/helm/{{name}}-service-a/templates/ingress.yaml +43 -0
  299. package/dist/templates/crosspod/service-a/helm/{{name}}-service-a/templates/service.yaml +17 -0
  300. package/dist/templates/crosspod/service-a/helm/{{name}}-service-a/values.yaml +44 -0
  301. package/dist/templates/crosspod/service-a/package.json +29 -0
  302. package/dist/templates/crosspod/service-a/src/index.ts +89 -0
  303. package/dist/templates/crosspod/service-a/tsconfig.json +14 -0
  304. package/dist/templates/crosspod/service-b/Dockerfile +27 -0
  305. package/dist/templates/crosspod/service-b/catalog-info.yaml +27 -0
  306. package/dist/templates/crosspod/service-b/gitignore +5 -0
  307. package/dist/templates/crosspod/service-b/helm/{{name}}-service-b/Chart.yaml +6 -0
  308. package/dist/templates/crosspod/service-b/helm/{{name}}-service-b/templates/deployment.yaml +72 -0
  309. package/dist/templates/crosspod/service-b/helm/{{name}}-service-b/templates/ingress.yaml +43 -0
  310. package/dist/templates/crosspod/service-b/helm/{{name}}-service-b/templates/service.yaml +17 -0
  311. package/dist/templates/crosspod/service-b/helm/{{name}}-service-b/values.yaml +47 -0
  312. package/dist/templates/crosspod/service-b/package.json +26 -0
  313. package/dist/templates/crosspod/service-b/src/index.ts +143 -0
  314. package/dist/templates/crosspod/service-b/tsconfig.json +14 -0
  315. package/dist/templates/mga/{{name}}-api/.env.example +5 -0
  316. package/dist/templates/mga/{{name}}-api/Dockerfile +45 -0
  317. package/dist/templates/mga/{{name}}-api/catalog-info.yaml +44 -0
  318. package/dist/templates/mga/{{name}}-api/gitignore +31 -0
  319. package/dist/templates/mga/{{name}}-api/helm/{{name}}-api/Chart.yaml +9 -0
  320. package/dist/templates/mga/{{name}}-api/helm/{{name}}-api/templates/deployment.yaml +72 -0
  321. package/dist/templates/mga/{{name}}-api/helm/{{name}}-api/templates/ingress.yaml +43 -0
  322. package/dist/templates/mga/{{name}}-api/helm/{{name}}-api/templates/service.yaml +17 -0
  323. package/dist/templates/mga/{{name}}-api/helm/{{name}}-api/values.yaml +65 -0
  324. package/dist/templates/mga/{{name}}-api/package.json +37 -0
  325. package/dist/templates/mga/{{name}}-api/src/index.ts +82 -0
  326. package/dist/templates/mga/{{name}}-api/src/lib/mongo.ts +19 -0
  327. package/dist/templates/mga/{{name}}-api/src/middleware/auth.ts +133 -0
  328. package/dist/templates/mga/{{name}}-api/src/models/agent.ts +45 -0
  329. package/dist/templates/mga/{{name}}-api/src/models/application.ts +58 -0
  330. package/dist/templates/mga/{{name}}-api/src/models/invite.ts +39 -0
  331. package/dist/templates/mga/{{name}}-api/src/models/policy.ts +59 -0
  332. package/dist/templates/mga/{{name}}-api/src/models/product.ts +51 -0
  333. package/dist/templates/mga/{{name}}-api/src/models/quote.ts +68 -0
  334. package/dist/templates/mga/{{name}}-api/src/routes/agents.ts +98 -0
  335. package/dist/templates/mga/{{name}}-api/src/routes/applications.ts +170 -0
  336. package/dist/templates/mga/{{name}}-api/src/routes/invites.ts +146 -0
  337. package/dist/templates/mga/{{name}}-api/src/routes/policies.ts +70 -0
  338. package/dist/templates/mga/{{name}}-api/src/routes/products.ts +154 -0
  339. package/dist/templates/mga/{{name}}-api/src/routes/quotes.ts +263 -0
  340. package/dist/templates/mga/{{name}}-api/src/routes/reports.ts +199 -0
  341. package/dist/templates/mga/{{name}}-api/tsconfig.json +18 -0
  342. package/dist/templates/mga/{{name}}-web/.dockerignore +6 -0
  343. package/dist/templates/mga/{{name}}-web/.env.example +6 -0
  344. package/dist/templates/mga/{{name}}-web/Dockerfile +51 -0
  345. package/dist/templates/mga/{{name}}-web/catalog-info.yaml +24 -0
  346. package/dist/templates/mga/{{name}}-web/dockerignore +6 -0
  347. package/dist/templates/mga/{{name}}-web/gitignore +36 -0
  348. package/dist/templates/mga/{{name}}-web/helm/{{name}}-web/Chart.yaml +9 -0
  349. package/dist/templates/mga/{{name}}-web/helm/{{name}}-web/templates/_helpers.tpl +49 -0
  350. package/dist/templates/mga/{{name}}-web/helm/{{name}}-web/templates/configmap.yaml +10 -0
  351. package/dist/templates/mga/{{name}}-web/helm/{{name}}-web/templates/deployment.yaml +56 -0
  352. package/dist/templates/mga/{{name}}-web/helm/{{name}}-web/templates/ingress.yaml +41 -0
  353. package/dist/templates/mga/{{name}}-web/helm/{{name}}-web/templates/service.yaml +15 -0
  354. package/dist/templates/mga/{{name}}-web/helm/{{name}}-web/values.yaml +70 -0
  355. package/dist/templates/mga/{{name}}-web/next.config.js +8 -0
  356. package/dist/templates/mga/{{name}}-web/package.json +30 -0
  357. package/dist/templates/mga/{{name}}-web/public/.gitkeep +0 -0
  358. package/dist/templates/mga/{{name}}-web/public/gitkeep +0 -0
  359. package/dist/templates/mga/{{name}}-web/src/app/api/auth/callback/route.ts +77 -0
  360. package/dist/templates/mga/{{name}}-web/src/app/api/auth/login/route.ts +16 -0
  361. package/dist/templates/mga/{{name}}-web/src/app/api/auth/logout/route.ts +7 -0
  362. package/dist/templates/mga/{{name}}-web/src/app/api/auth/session/route.ts +42 -0
  363. package/dist/templates/mga/{{name}}-web/src/app/api/health/route.ts +10 -0
  364. package/dist/templates/mga/{{name}}-web/src/app/api/proxy/applications/route.ts +47 -0
  365. package/dist/templates/mga/{{name}}-web/src/app/applications/layout.tsx +17 -0
  366. package/dist/templates/mga/{{name}}-web/src/app/applications/new/page.tsx +374 -0
  367. package/dist/templates/mga/{{name}}-web/src/app/applications/page.tsx +109 -0
  368. package/dist/templates/mga/{{name}}-web/src/app/dashboard/admin/page.tsx +179 -0
  369. package/dist/templates/mga/{{name}}-web/src/app/dashboard/agent/page.tsx +125 -0
  370. package/dist/templates/mga/{{name}}-web/src/app/dashboard/insured/page.tsx +145 -0
  371. package/dist/templates/mga/{{name}}-web/src/app/dashboard/layout.tsx +17 -0
  372. package/dist/templates/mga/{{name}}-web/src/app/dashboard/page.tsx +27 -0
  373. package/dist/templates/mga/{{name}}-web/src/app/dashboard/shell.tsx +89 -0
  374. package/dist/templates/mga/{{name}}-web/src/app/globals.css +477 -0
  375. package/dist/templates/mga/{{name}}-web/src/app/layout.tsx +19 -0
  376. package/dist/templates/mga/{{name}}-web/src/app/page.tsx +74 -0
  377. package/dist/templates/mga/{{name}}-web/src/app/reports/layout.tsx +21 -0
  378. package/dist/templates/mga/{{name}}-web/src/app/reports/page.tsx +231 -0
  379. package/dist/templates/mga/{{name}}-web/src/lib/api.ts +79 -0
  380. package/dist/templates/mga/{{name}}-web/src/lib/auth.ts +285 -0
  381. package/dist/templates/mga/{{name}}-web/src/middleware.ts +71 -0
  382. package/dist/templates/mga/{{name}}-web/tsconfig.json +26 -0
  383. package/dist/templates/nextjs/.env.example +11 -0
  384. package/dist/templates/nextjs/Dockerfile +51 -0
  385. package/dist/templates/nextjs/README.md +87 -0
  386. package/dist/templates/nextjs/catalog-info.yaml +16 -0
  387. package/dist/templates/nextjs/gitignore +36 -0
  388. package/dist/templates/nextjs/helm/{{name}}/Chart.yaml +9 -0
  389. package/dist/templates/nextjs/helm/{{name}}/templates/deployment.yaml +72 -0
  390. package/dist/templates/nextjs/helm/{{name}}/templates/ingress.yaml +43 -0
  391. package/dist/templates/nextjs/helm/{{name}}/templates/service.yaml +17 -0
  392. package/dist/templates/nextjs/helm/{{name}}/values.yaml +60 -0
  393. package/dist/templates/nextjs/next.config.js +23 -0
  394. package/dist/templates/nextjs/package.json +29 -0
  395. package/dist/templates/nextjs/public/.gitkeep +0 -0
  396. package/dist/templates/nextjs/public/gitkeep +0 -0
  397. package/dist/templates/nextjs/src/app/api/example/route.ts +63 -0
  398. package/dist/templates/nextjs/src/app/api/health/route.ts +10 -0
  399. package/dist/templates/nextjs/src/app/layout.tsx +18 -0
  400. package/dist/templates/nextjs/src/app/page.tsx +49 -0
  401. package/dist/templates/nextjs/tsconfig.json +26 -0
  402. package/dist/templates/nextjs-oauth/.dockerignore +6 -0
  403. package/dist/templates/nextjs-oauth/.env.example +12 -0
  404. package/dist/templates/nextjs-oauth/Dockerfile +51 -0
  405. package/dist/templates/nextjs-oauth/README.md +115 -0
  406. package/dist/templates/nextjs-oauth/catalog-info.yaml +17 -0
  407. package/dist/templates/nextjs-oauth/dockerignore +6 -0
  408. package/dist/templates/nextjs-oauth/gitignore +36 -0
  409. package/dist/templates/nextjs-oauth/helm/Chart.yaml +6 -0
  410. package/dist/templates/nextjs-oauth/helm/templates/_helpers.tpl +49 -0
  411. package/dist/templates/nextjs-oauth/helm/templates/configmap.yaml +10 -0
  412. package/dist/templates/nextjs-oauth/helm/templates/deployment.yaml +56 -0
  413. package/dist/templates/nextjs-oauth/helm/templates/ingress.yaml +41 -0
  414. package/dist/templates/nextjs-oauth/helm/templates/service.yaml +15 -0
  415. package/dist/templates/nextjs-oauth/helm/values.yaml +69 -0
  416. package/dist/templates/nextjs-oauth/helm/{{name}}/Chart.yaml +9 -0
  417. package/dist/templates/nextjs-oauth/helm/{{name}}/templates/deployment.yaml +68 -0
  418. package/dist/templates/nextjs-oauth/helm/{{name}}/templates/service.yaml +17 -0
  419. package/dist/templates/nextjs-oauth/helm/{{name}}/values.yaml +51 -0
  420. package/dist/templates/nextjs-oauth/next.config.js +23 -0
  421. package/dist/templates/nextjs-oauth/package.json +30 -0
  422. package/dist/templates/nextjs-oauth/public/.gitkeep +0 -0
  423. package/dist/templates/nextjs-oauth/public/gitkeep +0 -0
  424. package/dist/templates/nextjs-oauth/src/app/api/auth/callback/route.ts +77 -0
  425. package/dist/templates/nextjs-oauth/src/app/api/auth/login/route.ts +16 -0
  426. package/dist/templates/nextjs-oauth/src/app/api/auth/logout/route.ts +7 -0
  427. package/dist/templates/nextjs-oauth/src/app/api/auth/session/route.ts +42 -0
  428. package/dist/templates/nextjs-oauth/src/app/api/example/route.ts +63 -0
  429. package/dist/templates/nextjs-oauth/src/app/api/health/route.ts +10 -0
  430. package/dist/templates/nextjs-oauth/src/app/dashboard/page.tsx +92 -0
  431. package/dist/templates/nextjs-oauth/src/app/layout.tsx +18 -0
  432. package/dist/templates/nextjs-oauth/src/app/page.tsx +110 -0
  433. package/dist/templates/nextjs-oauth/src/lib/auth.ts +285 -0
  434. package/dist/templates/nextjs-oauth/src/middleware.ts +71 -0
  435. package/dist/templates/nextjs-oauth/tsconfig.json +26 -0
  436. package/dist/templates/static/catalog-info.yaml +14 -0
  437. package/dist/templates/static/index.html +16 -0
  438. package/dist/templates/static/styles.css +39 -0
  439. package/dist/templates/worker/.env.example +13 -0
  440. package/dist/templates/worker/Dockerfile +26 -0
  441. package/dist/templates/worker/README.md +106 -0
  442. package/dist/templates/worker/catalog-info.yaml +19 -0
  443. package/dist/templates/worker/gitignore +5 -0
  444. package/dist/templates/worker/helm/{{name}}/Chart.yaml +9 -0
  445. package/dist/templates/worker/helm/{{name}}/templates/deployment.yaml +68 -0
  446. package/dist/templates/worker/helm/{{name}}/templates/ingress.yaml +43 -0
  447. package/dist/templates/worker/helm/{{name}}/values.yaml +64 -0
  448. package/dist/templates/worker/package.json +26 -0
  449. package/dist/templates/worker/src/index.ts +185 -0
  450. package/dist/templates/worker/tsconfig.json +14 -0
  451. package/dist/types/index.d.ts +625 -0
  452. package/dist/types/index.d.ts.map +1 -0
  453. package/dist/types/index.js +46 -0
  454. package/dist/types/index.js.map +1 -0
  455. package/dist/types/platform.d.ts +191 -0
  456. package/dist/types/platform.d.ts.map +1 -0
  457. package/dist/types/platform.js +17 -0
  458. package/dist/types/platform.js.map +1 -0
  459. package/package.json +63 -0
package/README.md ADDED
@@ -0,0 +1,159 @@
1
+ # iec-cli
2
+
3
+ Developer CLI for the InsurEco Tawa platform. Deploy, manage, and monitor services with a single tool.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g iec-cli
9
+ ```
10
+
11
+ Or use without installing:
12
+
13
+ ```bash
14
+ npx iec-cli deploy
15
+ ```
16
+
17
+ ## Quick Start
18
+
19
+ ```bash
20
+ # Login to the platform
21
+ iec login
22
+
23
+ # Option 1: AI-powered setup (recommended)
24
+ iec init --ai
25
+
26
+ # Option 2: Use a starter template
27
+ iec sample --nextjs
28
+ cd my-service
29
+
30
+ # Check everything is configured correctly
31
+ iec preflight
32
+
33
+ # Deploy to sandbox
34
+ iec deploy
35
+ ```
36
+
37
+ ## Commands
38
+
39
+ ### Setup & Configuration
40
+
41
+ | Command | Description |
42
+ |---------|-------------|
43
+ | `iec login` | Authenticate with the platform |
44
+ | `iec logout` | Sign out |
45
+ | `iec whoami` | Show current user |
46
+ | `iec config` | View/set CLI configuration |
47
+ | `iec init` | Scaffold new service |
48
+ | `iec init --ai` | AI-powered interactive setup |
49
+ | `iec sample --api` | Scaffold Express/Hono API starter |
50
+ | `iec sample --nextjs` | Scaffold Next.js starter |
51
+ | `iec sample --crosspod` | Scaffold two services with pod-to-pod auth demo |
52
+
53
+ ### Deployment
54
+
55
+ | Command | Description |
56
+ |---------|-------------|
57
+ | `iec preflight` | Run pre-deployment checks |
58
+ | `iec register` | Register service with Koko |
59
+ | `iec link` | Connect repo to iec-builder |
60
+ | `iec deploy` | Build and deploy (via GitHub) |
61
+ | `iec push` | Push code directly to builder (no GitHub needed) |
62
+ | `iec rollback <version>` | Redeploy a previous version |
63
+ | `iec versions` | List deployable versions |
64
+ | `iec destroy` | Delete deployment |
65
+
66
+ ### Monitoring
67
+
68
+ | Command | Description |
69
+ |---------|-------------|
70
+ | `iec status` | Show service and build status |
71
+ | `iec logs` | Stream container logs |
72
+ | `iec logs --build <id>` | View build logs |
73
+ | `iec builds` | List recent builds |
74
+
75
+ ### Data Management
76
+
77
+ | Command | Description |
78
+ |---------|-------------|
79
+ | `iec env` | Manage environments |
80
+ | `iec program` | View programs |
81
+ | `iec backup` | Manage backups |
82
+ | `iec restore` | Restore from backup |
83
+
84
+ ## Configuration
85
+
86
+ ### Global Config (`~/.iec/config.yaml`)
87
+
88
+ ```yaml
89
+ koko_url: https://janus.tawa.insureco.io/koko
90
+ builder_url: https://builder.tawa.insureco.io
91
+ registry: registry.digitalocean.com/insureco
92
+ ```
93
+
94
+ ### Project Config (`catalog-info.yaml`)
95
+
96
+ ```yaml
97
+ apiVersion: backstage.io/v1alpha1
98
+ kind: Component
99
+ metadata:
100
+ name: my-service
101
+ description: My awesome service
102
+ annotations:
103
+ insureco.io/framework: nextjs
104
+ insureco.io/node-version: "20"
105
+ spec:
106
+ type: service
107
+ lifecycle: production
108
+ owner: my-team
109
+ routes:
110
+ - path: /api/users
111
+ methods: [GET, POST]
112
+ auth: required
113
+ ```
114
+
115
+ ## Environment Flags
116
+
117
+ ```bash
118
+ iec deploy # Deploy to sandbox (default)
119
+ iec deploy --prod # Deploy to production
120
+ iec deploy --uat # Deploy to UAT
121
+ iec deploy --watch # Watch build progress
122
+ ```
123
+
124
+ ## Development
125
+
126
+ ```bash
127
+ # Install dependencies
128
+ npm install
129
+
130
+ # Run in development
131
+ npm run dev
132
+
133
+ # Build
134
+ npm run build
135
+
136
+ # Run built CLI
137
+ npm start
138
+ ```
139
+
140
+ ## Publishing
141
+
142
+ To publish a new version:
143
+
144
+ ```bash
145
+ npm version patch # or minor, major
146
+ npm publish # publish to npm
147
+ git push # push version bump to remote
148
+ ```
149
+
150
+ The `prepublishOnly` script runs `npm run build` automatically.
151
+
152
+ ## Requirements
153
+
154
+ - Node.js 20+
155
+ - npm or pnpm
156
+
157
+ ## License
158
+
159
+ MIT
@@ -0,0 +1,11 @@
1
+ interface BackupOptions {
2
+ type?: 'mongodb' | 'redis' | 'neo4j';
3
+ database?: string;
4
+ }
5
+ interface RestoreOptions {
6
+ confirm?: boolean;
7
+ }
8
+ export declare function backupCommand(options: BackupOptions): Promise<void>;
9
+ export declare function restoreCommand(backupId: string, options: RestoreOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"AAKA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAkBD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzE;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAkCf"}
@@ -0,0 +1,112 @@
1
+ import { log, formatTable, spinner } from '../lib/output.js';
2
+ const BACKUP_API_URL = 'http://jefferson.daryx.com:8090';
3
+ export async function backupCommand(options) {
4
+ if (options.type) {
5
+ // Trigger manual backup
6
+ await triggerBackup(options.type, options.database);
7
+ }
8
+ else {
9
+ // Show backup status
10
+ await showBackupStatus();
11
+ }
12
+ }
13
+ export async function restoreCommand(backupId, options) {
14
+ if (!options.confirm) {
15
+ log.error('Restore requires --confirm flag');
16
+ log.dim('This is a destructive operation that will overwrite existing data');
17
+ process.exit(1);
18
+ }
19
+ const sp = spinner(`Restoring backup ${backupId}`);
20
+ try {
21
+ const response = await fetch(`${BACKUP_API_URL}/api/restore`, {
22
+ method: 'POST',
23
+ headers: { 'Content-Type': 'application/json' },
24
+ body: JSON.stringify({ backupId, confirm: true }),
25
+ });
26
+ const result = (await response.json());
27
+ if (!result.success) {
28
+ sp.stop(false);
29
+ log.error(`Restore failed: ${result.error?.message}`);
30
+ process.exit(1);
31
+ }
32
+ sp.stop(true);
33
+ log.success(`Restore started: job ${result.data?.jobId}`);
34
+ log.dim('Monitor progress with: iec backup --status');
35
+ }
36
+ catch (error) {
37
+ sp.stop(false);
38
+ if (error instanceof Error) {
39
+ log.error(`Failed to start restore: ${error.message}`);
40
+ }
41
+ process.exit(1);
42
+ }
43
+ }
44
+ async function showBackupStatus() {
45
+ log.info('Backup status');
46
+ log.info('');
47
+ try {
48
+ const response = await fetch(`${BACKUP_API_URL}/api/status`);
49
+ const result = (await response.json());
50
+ if (!result.success || !result.data) {
51
+ log.error(`Failed to get status: ${result.error?.message}`);
52
+ process.exit(1);
53
+ }
54
+ const { lastRun, nextScheduled, storage } = result.data;
55
+ log.info('Last backups:');
56
+ const lastRunRows = Object.entries(lastRun).map(([type, info]) => {
57
+ const typed = info;
58
+ return [
59
+ type,
60
+ typed.status,
61
+ new Date(typed.timestamp).toLocaleString(),
62
+ `${typed.durationSec}s`,
63
+ ];
64
+ });
65
+ console.log(formatTable(['TYPE', 'STATUS', 'TIMESTAMP', 'DURATION'], lastRunRows));
66
+ log.info('');
67
+ log.info('Next scheduled:');
68
+ for (const [type, timestamp] of Object.entries(nextScheduled)) {
69
+ log.dim(` ${type}: ${new Date(timestamp).toLocaleString()}`);
70
+ }
71
+ log.info('');
72
+ log.info('Storage:');
73
+ log.dim(` Provider: ${storage.provider}`);
74
+ log.dim(` Bucket: ${storage.bucket}`);
75
+ log.dim(` Used: ${(storage.usedBytes / 1024 / 1024 / 1024).toFixed(2)} GB`);
76
+ log.dim(` Backups: ${storage.backupCount}`);
77
+ }
78
+ catch (error) {
79
+ if (error instanceof Error) {
80
+ log.error(`Failed to connect to backup service: ${error.message}`);
81
+ log.dim(`Backup service URL: ${BACKUP_API_URL}`);
82
+ }
83
+ process.exit(1);
84
+ }
85
+ }
86
+ async function triggerBackup(type, database) {
87
+ const sp = spinner(`Triggering ${type} backup`);
88
+ try {
89
+ const response = await fetch(`${BACKUP_API_URL}/api/backups`, {
90
+ method: 'POST',
91
+ headers: { 'Content-Type': 'application/json' },
92
+ body: JSON.stringify({ type, database }),
93
+ });
94
+ const result = (await response.json());
95
+ if (!result.success) {
96
+ sp.stop(false);
97
+ log.error(`Backup failed: ${result.error?.message}`);
98
+ process.exit(1);
99
+ }
100
+ sp.stop(true);
101
+ log.success(`Backup started: job ${result.data?.jobId}`);
102
+ log.dim('Monitor progress with: iec backup');
103
+ }
104
+ catch (error) {
105
+ sp.stop(false);
106
+ if (error instanceof Error) {
107
+ log.error(`Failed to trigger backup: ${error.message}`);
108
+ }
109
+ process.exit(1);
110
+ }
111
+ }
112
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/commands/backup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * tawa config set KEY=VALUE [KEY2=VALUE2 ...] [--secret]
3
+ */
4
+ export declare function configSetCommand(pairs: string[], options: {
5
+ service?: string;
6
+ secret?: boolean;
7
+ }): Promise<void>;
8
+ /**
9
+ * tawa config list
10
+ */
11
+ export declare function configListCommand(options: {
12
+ service?: string;
13
+ }): Promise<void>;
14
+ /**
15
+ * tawa config unset KEY [KEY2 ...]
16
+ */
17
+ export declare function configUnsetCommand(keys: string[], options: {
18
+ service?: string;
19
+ }): Promise<void>;
20
+ /**
21
+ * tawa config pull
22
+ * Downloads all config + decrypted secrets to .env.local
23
+ */
24
+ export declare function configPullCommand(options: {
25
+ service?: string;
26
+ output?: string;
27
+ }): Promise<void>;
28
+ /**
29
+ * tawa config push [file]
30
+ * Push config from a .env file, classified against catalog declarations.
31
+ * Secrets are auto-detected from catalog-info.yaml declarations.
32
+ */
33
+ export declare function configPushCommand(file: string | undefined, options: {
34
+ service?: string;
35
+ }): Promise<void>;
36
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAyFA;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9C,OAAO,CAAC,IAAI,CAAC,CAmDf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CAgDf;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAiFf"}
@@ -0,0 +1,297 @@
1
+ import { writeFile, readFile } from 'fs/promises';
2
+ import { existsSync } from 'fs';
3
+ import { join, resolve, relative } from 'path';
4
+ import { parse as parseYaml } from 'yaml';
5
+ import { BuilderClient } from '../lib/builder.js';
6
+ import { loadLinkedService } from '../lib/config.js';
7
+ import { log } from '../lib/output.js';
8
+ /**
9
+ * Parse a .env file into a key-value map.
10
+ * Supports: KEY=VALUE, KEY="VALUE", KEY='VALUE', blank lines, # comments.
11
+ */
12
+ function parseEnvFile(content) {
13
+ const vars = {};
14
+ for (const rawLine of content.split('\n')) {
15
+ const line = rawLine.trim();
16
+ // Skip blank lines and comments
17
+ if (line === '' || line.startsWith('#'))
18
+ continue;
19
+ const eqIndex = line.indexOf('=');
20
+ if (eqIndex === -1)
21
+ continue;
22
+ const key = line.substring(0, eqIndex).trim();
23
+ if (!key)
24
+ continue;
25
+ let value = line.substring(eqIndex + 1).trim();
26
+ // Strip matching quotes
27
+ if ((value.startsWith('"') && value.endsWith('"')) ||
28
+ (value.startsWith("'") && value.endsWith("'"))) {
29
+ value = value.slice(1, -1);
30
+ }
31
+ // Unescape double-quoted values
32
+ if (rawLine.substring(eqIndex + 1).trim().startsWith('"')) {
33
+ value = value.replace(/\\n/g, '\n').replace(/\\"/g, '"').replace(/\\\\/g, '\\');
34
+ }
35
+ vars[key] = value;
36
+ }
37
+ return vars;
38
+ }
39
+ /**
40
+ * Resolve service name from --service flag, .tawa.yaml, or catalog-info.yaml
41
+ */
42
+ async function resolveServiceName(serviceFlag) {
43
+ if (serviceFlag) {
44
+ return serviceFlag;
45
+ }
46
+ const linked = await loadLinkedService();
47
+ if (linked?.serviceName) {
48
+ return linked.serviceName;
49
+ }
50
+ // Try catalog-info.yaml
51
+ try {
52
+ const content = await readFile(join(process.cwd(), 'catalog-info.yaml'), 'utf-8');
53
+ const catalog = parseYaml(content);
54
+ if (catalog?.metadata?.name) {
55
+ return catalog.metadata.name;
56
+ }
57
+ }
58
+ catch {
59
+ // catalog-info.yaml not found or invalid
60
+ }
61
+ log.error('Could not determine service name');
62
+ log.dim('Run from a project directory with .tawa.yaml or catalog-info.yaml,');
63
+ log.dim('or use --service <name> to specify the service.');
64
+ process.exit(1);
65
+ }
66
+ /**
67
+ * Quote a value for .env file format if it contains special characters.
68
+ */
69
+ function formatEnvValue(key, value) {
70
+ if (/[\s#"'\\]/.test(value) || value === '') {
71
+ const escaped = value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
72
+ return `${key}="${escaped}"`;
73
+ }
74
+ return `${key}=${value}`;
75
+ }
76
+ /**
77
+ * tawa config set KEY=VALUE [KEY2=VALUE2 ...] [--secret]
78
+ */
79
+ export async function configSetCommand(pairs, options) {
80
+ if (pairs.length === 0) {
81
+ log.error('No KEY=VALUE pairs provided');
82
+ log.dim('Usage: tawa config set KEY=VALUE [KEY2=VALUE2 ...]');
83
+ process.exit(1);
84
+ }
85
+ // Parse KEY=VALUE pairs
86
+ const vars = {};
87
+ for (const pair of pairs) {
88
+ const eqIndex = pair.indexOf('=');
89
+ if (eqIndex === -1) {
90
+ log.error(`Invalid format: "${pair}" (expected KEY=VALUE)`);
91
+ process.exit(1);
92
+ }
93
+ const key = pair.substring(0, eqIndex);
94
+ const value = pair.substring(eqIndex + 1);
95
+ if (!key) {
96
+ log.error(`Invalid key in "${pair}"`);
97
+ process.exit(1);
98
+ }
99
+ vars[key] = value;
100
+ }
101
+ const serviceName = await resolveServiceName(options.service);
102
+ const client = await BuilderClient.create();
103
+ log.info(`Setting ${options.secret ? 'secrets' : 'config'} for ${serviceName}...`);
104
+ const result = await client.setConfig(serviceName, vars, options.secret);
105
+ if (!result.success) {
106
+ log.error(`Failed to set config: ${result.error?.message}`);
107
+ process.exit(1);
108
+ }
109
+ const data = result.data;
110
+ if (!data) {
111
+ log.error('Unexpected empty response');
112
+ process.exit(1);
113
+ }
114
+ log.success(`${Object.keys(vars).length} variable(s) ${options.secret ? 'encrypted and ' : ''}saved`);
115
+ // Show summary
116
+ const configCount = Object.keys(data.config).length;
117
+ const secretCount = data.secrets.length;
118
+ log.dim(` Config vars: ${configCount}`);
119
+ log.dim(` Secrets: ${secretCount}`);
120
+ log.info('');
121
+ log.warning('Deploy to apply changes: tawa deploy or tawa push --deploy');
122
+ }
123
+ /**
124
+ * tawa config list
125
+ */
126
+ export async function configListCommand(options) {
127
+ const serviceName = await resolveServiceName(options.service);
128
+ const client = await BuilderClient.create();
129
+ const result = await client.getConfig(serviceName);
130
+ if (!result.success) {
131
+ log.error(`Failed to get config: ${result.error?.message}`);
132
+ process.exit(1);
133
+ }
134
+ const data = result.data;
135
+ if (!data) {
136
+ log.error('Unexpected empty response');
137
+ process.exit(1);
138
+ }
139
+ log.info(`Config for ${serviceName}`);
140
+ if (data.updatedAt) {
141
+ log.dim(`Last updated: ${data.updatedAt}`);
142
+ }
143
+ log.info('');
144
+ const configEntries = Object.entries(data.config);
145
+ const secretKeys = data.secrets;
146
+ if (configEntries.length === 0 && secretKeys.length === 0) {
147
+ log.dim('No config vars set. Use "tawa config set KEY=VALUE" to add some.');
148
+ return;
149
+ }
150
+ // Show plain config vars
151
+ for (const [key, value] of configEntries) {
152
+ log.dim(` ${key}=${value}`);
153
+ }
154
+ // Show secret names (values hidden)
155
+ for (const key of secretKeys) {
156
+ log.dim(` ${key}=********`);
157
+ }
158
+ }
159
+ /**
160
+ * tawa config unset KEY [KEY2 ...]
161
+ */
162
+ export async function configUnsetCommand(keys, options) {
163
+ if (keys.length === 0) {
164
+ log.error('No keys provided');
165
+ log.dim('Usage: tawa config unset KEY [KEY2 ...]');
166
+ process.exit(1);
167
+ }
168
+ const serviceName = await resolveServiceName(options.service);
169
+ const client = await BuilderClient.create();
170
+ log.info(`Removing config for ${serviceName}...`);
171
+ const result = await client.unsetConfig(serviceName, keys);
172
+ if (!result.success) {
173
+ log.error(`Failed to unset config: ${result.error?.message}`);
174
+ process.exit(1);
175
+ }
176
+ log.success(`${keys.length} variable(s) removed`);
177
+ log.info('');
178
+ log.warning('Deploy to apply changes: tawa deploy or tawa push --deploy');
179
+ }
180
+ /**
181
+ * tawa config pull
182
+ * Downloads all config + decrypted secrets to .env.local
183
+ */
184
+ export async function configPullCommand(options) {
185
+ const serviceName = await resolveServiceName(options.service);
186
+ const client = await BuilderClient.create();
187
+ log.info(`Pulling config for ${serviceName}...`);
188
+ const result = await client.pullConfig(serviceName);
189
+ if (!result.success) {
190
+ log.error(`Failed to pull config: ${result.error?.message}`);
191
+ process.exit(1);
192
+ }
193
+ const data = result.data;
194
+ if (!data) {
195
+ log.error('Unexpected empty response');
196
+ process.exit(1);
197
+ }
198
+ const vars = data.vars;
199
+ const entries = Object.entries(vars);
200
+ if (entries.length === 0) {
201
+ log.dim('No config vars to pull.');
202
+ return;
203
+ }
204
+ // Resolve output path
205
+ const outputPath = options.output
206
+ ? resolve(process.cwd(), options.output)
207
+ : join(process.cwd(), '.env.local');
208
+ // Warn if writing outside the current project directory
209
+ const rel = relative(process.cwd(), outputPath);
210
+ if (rel.startsWith('..')) {
211
+ log.warning(`Writing secrets outside project directory: ${outputPath}`);
212
+ }
213
+ // Format with proper quoting for special characters
214
+ const content = entries
215
+ .map(([key, value]) => formatEnvValue(key, value))
216
+ .join('\n') + '\n';
217
+ // Write with restricted permissions (owner-only read/write)
218
+ await writeFile(outputPath, content, { encoding: 'utf-8', mode: 0o600 });
219
+ log.success(`${entries.length} variable(s) written to ${outputPath}`);
220
+ log.warning('Do not commit .env.local to version control');
221
+ }
222
+ /**
223
+ * tawa config push [file]
224
+ * Push config from a .env file, classified against catalog declarations.
225
+ * Secrets are auto-detected from catalog-info.yaml declarations.
226
+ */
227
+ export async function configPushCommand(file, options) {
228
+ // Resolve .env file path
229
+ const envPath = file
230
+ ? resolve(process.cwd(), file)
231
+ : join(process.cwd(), '.env');
232
+ if (!existsSync(envPath)) {
233
+ log.error(`File not found: ${envPath}`);
234
+ log.dim(file
235
+ ? 'Check the file path and try again.'
236
+ : 'Create a .env file or specify the path: tawa config push <file>');
237
+ process.exit(1);
238
+ }
239
+ const content = await readFile(envPath, 'utf-8');
240
+ const vars = parseEnvFile(content);
241
+ const keyCount = Object.keys(vars).length;
242
+ if (keyCount === 0) {
243
+ log.error('No variables found in file');
244
+ log.dim('Ensure the file has KEY=VALUE entries (one per line).');
245
+ process.exit(1);
246
+ }
247
+ const serviceName = await resolveServiceName(options.service);
248
+ const client = await BuilderClient.create();
249
+ log.info(`Pushing ${keyCount} variable(s) from ${envPath} to ${serviceName}...`);
250
+ const result = await client.pushConfig(serviceName, vars);
251
+ if (!result.success) {
252
+ const msg = result.error?.message || 'Unknown error';
253
+ if (result.error?.code === 'NO_DECLARATIONS') {
254
+ log.error('No config declarations found');
255
+ log.dim('Deploy once to sync catalog-info.yaml, or use "tawa config set" for direct configuration.');
256
+ }
257
+ else if (result.error?.code === 'ALL_REJECTED') {
258
+ log.error(msg);
259
+ log.dim('Ensure your .env keys match the spec.config declarations in catalog-info.yaml.');
260
+ }
261
+ else {
262
+ log.error(`Failed to push config: ${msg}`);
263
+ }
264
+ process.exit(1);
265
+ }
266
+ const data = result.data;
267
+ if (!data) {
268
+ log.error('Unexpected empty response');
269
+ process.exit(1);
270
+ }
271
+ // Show results
272
+ const { pushed, rejected, warnings } = data;
273
+ if (pushed.config.length > 0) {
274
+ log.success(`${pushed.config.length} config var(s) saved`);
275
+ for (const key of pushed.config) {
276
+ log.dim(` ${key}`);
277
+ }
278
+ }
279
+ if (pushed.secrets.length > 0) {
280
+ log.success(`${pushed.secrets.length} secret(s) encrypted and saved`);
281
+ for (const key of pushed.secrets) {
282
+ log.dim(` ${key}`);
283
+ }
284
+ }
285
+ if (rejected.length > 0) {
286
+ log.warning(`${rejected.length} key(s) rejected (not declared in catalog-info.yaml)`);
287
+ for (const key of rejected) {
288
+ log.dim(` ${key}`);
289
+ }
290
+ }
291
+ for (const warning of warnings) {
292
+ log.warning(warning);
293
+ }
294
+ log.info('');
295
+ log.warning('Deploy to apply changes: tawa deploy');
296
+ }
297
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Environment } from '../types/index.js';
2
+ interface DeployOptions {
3
+ branch?: string;
4
+ watch?: boolean;
5
+ env?: Environment;
6
+ prod?: boolean;
7
+ sandbox?: boolean;
8
+ uat?: boolean;
9
+ validate?: boolean;
10
+ skipValidate?: boolean;
11
+ }
12
+ export declare function deployCommand(options: DeployOptions): Promise<void>;
13
+ export declare function listBuildsCommand(options: {
14
+ service?: string;
15
+ limit?: number;
16
+ }): Promise<void>;
17
+ export {};
18
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAIjE,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,GAAG,CAAC,EAAE,WAAW,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0KzE;AAGD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCpG"}