@fractary/faber 2.5.2 → 2.5.5

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 (353) hide show
  1. package/dist/__tests__/config.test.d.ts +0 -0
  2. package/dist/__tests__/config.test.d.ts.map +0 -0
  3. package/dist/__tests__/config.test.js +0 -0
  4. package/dist/__tests__/config.test.js.map +0 -0
  5. package/dist/__tests__/integration/forge-integration.test.d.ts +0 -0
  6. package/dist/__tests__/integration/forge-integration.test.d.ts.map +0 -0
  7. package/dist/__tests__/integration/forge-integration.test.js +2 -2
  8. package/dist/__tests__/integration/forge-integration.test.js.map +1 -1
  9. package/dist/__tests__/integration/init-workflow.test.d.ts +0 -0
  10. package/dist/__tests__/integration/init-workflow.test.d.ts.map +0 -0
  11. package/dist/__tests__/integration/init-workflow.test.js +0 -0
  12. package/dist/__tests__/integration/init-workflow.test.js.map +0 -0
  13. package/dist/agents/index.d.ts +0 -0
  14. package/dist/agents/index.d.ts.map +0 -0
  15. package/dist/agents/index.js +0 -0
  16. package/dist/agents/index.js.map +0 -0
  17. package/dist/agents/selector.d.ts +0 -0
  18. package/dist/agents/selector.d.ts.map +0 -0
  19. package/dist/agents/selector.js +0 -0
  20. package/dist/agents/selector.js.map +0 -0
  21. package/dist/agents/type-registry.d.ts +0 -0
  22. package/dist/agents/type-registry.d.ts.map +0 -0
  23. package/dist/agents/type-registry.js +0 -0
  24. package/dist/agents/type-registry.js.map +0 -0
  25. package/dist/agents/types.d.ts +0 -0
  26. package/dist/agents/types.d.ts.map +0 -0
  27. package/dist/agents/types.js +0 -0
  28. package/dist/agents/types.js.map +0 -0
  29. package/dist/auth/github-app.d.ts +0 -0
  30. package/dist/auth/github-app.d.ts.map +0 -0
  31. package/dist/auth/github-app.js +0 -0
  32. package/dist/auth/github-app.js.map +0 -0
  33. package/dist/auth/index.d.ts +0 -0
  34. package/dist/auth/index.d.ts.map +0 -0
  35. package/dist/auth/index.js +0 -0
  36. package/dist/auth/index.js.map +0 -0
  37. package/dist/changelog/index.d.ts +0 -0
  38. package/dist/changelog/index.d.ts.map +0 -0
  39. package/dist/changelog/index.js +0 -0
  40. package/dist/changelog/index.js.map +0 -0
  41. package/dist/changelog/manager.d.ts +0 -0
  42. package/dist/changelog/manager.d.ts.map +0 -0
  43. package/dist/changelog/manager.js +0 -0
  44. package/dist/changelog/manager.js.map +0 -0
  45. package/dist/changelog/types.d.ts +0 -0
  46. package/dist/changelog/types.d.ts.map +0 -0
  47. package/dist/changelog/types.js +0 -0
  48. package/dist/changelog/types.js.map +0 -0
  49. package/dist/cli/commands/logs.d.ts +6 -0
  50. package/dist/cli/commands/logs.d.ts.map +1 -0
  51. package/dist/cli/commands/logs.js +215 -0
  52. package/dist/cli/commands/logs.js.map +1 -0
  53. package/dist/cli/commands/repo.d.ts +6 -0
  54. package/dist/cli/commands/repo.d.ts.map +1 -0
  55. package/dist/cli/commands/repo.js +260 -0
  56. package/dist/cli/commands/repo.js.map +1 -0
  57. package/dist/cli/commands/spec.d.ts +6 -0
  58. package/dist/cli/commands/spec.d.ts.map +1 -0
  59. package/dist/cli/commands/spec.js +184 -0
  60. package/dist/cli/commands/spec.js.map +1 -0
  61. package/dist/cli/commands/work.d.ts +6 -0
  62. package/dist/cli/commands/work.d.ts.map +1 -0
  63. package/dist/cli/commands/work.js +113 -0
  64. package/dist/cli/commands/work.js.map +1 -0
  65. package/dist/cli/commands/workflow.d.ts +6 -0
  66. package/dist/cli/commands/workflow.d.ts.map +1 -0
  67. package/dist/cli/commands/workflow.js +214 -0
  68. package/dist/cli/commands/workflow.js.map +1 -0
  69. package/dist/cli/index.d.ts +8 -0
  70. package/dist/cli/index.d.ts.map +1 -0
  71. package/dist/cli/index.js +27 -0
  72. package/dist/cli/index.js.map +1 -0
  73. package/dist/config/__tests__/initializer.test.d.ts +0 -0
  74. package/dist/config/__tests__/initializer.test.d.ts.map +0 -0
  75. package/dist/config/__tests__/initializer.test.js +0 -0
  76. package/dist/config/__tests__/initializer.test.js.map +0 -0
  77. package/dist/config/initializer.d.ts +0 -0
  78. package/dist/config/initializer.d.ts.map +0 -0
  79. package/dist/config/initializer.js +0 -0
  80. package/dist/config/initializer.js.map +0 -0
  81. package/dist/config/updater.d.ts +0 -0
  82. package/dist/config/updater.d.ts.map +0 -0
  83. package/dist/config/updater.js +0 -0
  84. package/dist/config/updater.js.map +0 -0
  85. package/dist/config/validator.d.ts +0 -0
  86. package/dist/config/validator.d.ts.map +0 -0
  87. package/dist/config/validator.js +0 -0
  88. package/dist/config/validator.js.map +0 -0
  89. package/dist/config.d.ts +0 -0
  90. package/dist/config.d.ts.map +0 -0
  91. package/dist/config.js +0 -0
  92. package/dist/config.js.map +0 -0
  93. package/dist/defaults.d.ts +0 -0
  94. package/dist/defaults.d.ts.map +0 -0
  95. package/dist/defaults.js +0 -0
  96. package/dist/defaults.js.map +0 -0
  97. package/dist/errors.d.ts +0 -0
  98. package/dist/errors.d.ts.map +0 -0
  99. package/dist/errors.js +0 -0
  100. package/dist/errors.js.map +0 -0
  101. package/dist/executors/cli-entry.d.ts +0 -0
  102. package/dist/executors/cli-entry.d.ts.map +0 -0
  103. package/dist/executors/cli-entry.js +0 -0
  104. package/dist/executors/cli-entry.js.map +0 -0
  105. package/dist/executors/index.d.ts +0 -0
  106. package/dist/executors/index.d.ts.map +0 -0
  107. package/dist/executors/index.js +0 -0
  108. package/dist/executors/index.js.map +0 -0
  109. package/dist/executors/providers/claude.d.ts +0 -0
  110. package/dist/executors/providers/claude.d.ts.map +0 -0
  111. package/dist/executors/providers/claude.js +0 -0
  112. package/dist/executors/providers/claude.js.map +0 -0
  113. package/dist/executors/providers/http.d.ts +0 -0
  114. package/dist/executors/providers/http.d.ts.map +0 -0
  115. package/dist/executors/providers/http.js +0 -0
  116. package/dist/executors/providers/http.js.map +0 -0
  117. package/dist/executors/providers/index.d.ts +0 -0
  118. package/dist/executors/providers/index.d.ts.map +0 -0
  119. package/dist/executors/providers/index.js +0 -0
  120. package/dist/executors/providers/index.js.map +0 -0
  121. package/dist/executors/providers/openai-compatible.d.ts +0 -0
  122. package/dist/executors/providers/openai-compatible.d.ts.map +0 -0
  123. package/dist/executors/providers/openai-compatible.js +0 -0
  124. package/dist/executors/providers/openai-compatible.js.map +0 -0
  125. package/dist/executors/providers/openai.d.ts +0 -0
  126. package/dist/executors/providers/openai.d.ts.map +0 -0
  127. package/dist/executors/providers/openai.js +0 -0
  128. package/dist/executors/providers/openai.js.map +0 -0
  129. package/dist/executors/registry.d.ts +0 -0
  130. package/dist/executors/registry.d.ts.map +0 -0
  131. package/dist/executors/registry.js +0 -0
  132. package/dist/executors/registry.js.map +0 -0
  133. package/dist/executors/types.d.ts +0 -0
  134. package/dist/executors/types.d.ts.map +0 -0
  135. package/dist/executors/types.js +0 -0
  136. package/dist/executors/types.js.map +0 -0
  137. package/dist/executors/workflow-executor.d.ts +0 -0
  138. package/dist/executors/workflow-executor.d.ts.map +0 -0
  139. package/dist/executors/workflow-executor.js +0 -0
  140. package/dist/executors/workflow-executor.js.map +0 -0
  141. package/dist/index.d.ts +0 -0
  142. package/dist/index.d.ts.map +0 -0
  143. package/dist/index.js +0 -0
  144. package/dist/index.js.map +0 -0
  145. package/dist/logs/index.d.ts +0 -0
  146. package/dist/logs/index.d.ts.map +0 -0
  147. package/dist/logs/index.js +0 -0
  148. package/dist/logs/index.js.map +0 -0
  149. package/dist/logs/manager.d.ts +0 -0
  150. package/dist/logs/manager.d.ts.map +0 -0
  151. package/dist/logs/manager.js +0 -0
  152. package/dist/logs/manager.js.map +0 -0
  153. package/dist/logs/types.d.ts +0 -0
  154. package/dist/logs/types.d.ts.map +0 -0
  155. package/dist/logs/types.js +0 -0
  156. package/dist/logs/types.js.map +0 -0
  157. package/dist/paths.d.ts +0 -0
  158. package/dist/paths.d.ts.map +0 -0
  159. package/dist/paths.js +0 -0
  160. package/dist/paths.js.map +0 -0
  161. package/dist/repo/git.d.ts +0 -0
  162. package/dist/repo/git.d.ts.map +0 -0
  163. package/dist/repo/git.js +0 -0
  164. package/dist/repo/git.js.map +0 -0
  165. package/dist/repo/index.d.ts +0 -0
  166. package/dist/repo/index.d.ts.map +0 -0
  167. package/dist/repo/index.js +0 -0
  168. package/dist/repo/index.js.map +0 -0
  169. package/dist/repo/manager.d.ts +0 -0
  170. package/dist/repo/manager.d.ts.map +0 -0
  171. package/dist/repo/manager.js +0 -0
  172. package/dist/repo/manager.js.map +0 -0
  173. package/dist/repo/providers/bitbucket.d.ts +0 -0
  174. package/dist/repo/providers/bitbucket.d.ts.map +0 -0
  175. package/dist/repo/providers/bitbucket.js +0 -0
  176. package/dist/repo/providers/bitbucket.js.map +0 -0
  177. package/dist/repo/providers/github.d.ts +0 -0
  178. package/dist/repo/providers/github.d.ts.map +0 -0
  179. package/dist/repo/providers/github.js +0 -0
  180. package/dist/repo/providers/github.js.map +0 -0
  181. package/dist/repo/providers/gitlab.d.ts +0 -0
  182. package/dist/repo/providers/gitlab.d.ts.map +0 -0
  183. package/dist/repo/providers/gitlab.js +0 -0
  184. package/dist/repo/providers/gitlab.js.map +0 -0
  185. package/dist/repo/providers/index.d.ts +0 -0
  186. package/dist/repo/providers/index.d.ts.map +0 -0
  187. package/dist/repo/providers/index.js +0 -0
  188. package/dist/repo/providers/index.js.map +0 -0
  189. package/dist/repo/types.d.ts +0 -0
  190. package/dist/repo/types.d.ts.map +0 -0
  191. package/dist/repo/types.js +0 -0
  192. package/dist/repo/types.js.map +0 -0
  193. package/dist/spec/__tests__/manager.test.d.ts +0 -0
  194. package/dist/spec/__tests__/manager.test.d.ts.map +0 -0
  195. package/dist/spec/__tests__/manager.test.js +2 -2
  196. package/dist/spec/__tests__/manager.test.js.map +1 -1
  197. package/dist/spec/index.d.ts +3 -3
  198. package/dist/spec/index.d.ts.map +1 -1
  199. package/dist/spec/index.js +3 -3
  200. package/dist/spec/index.js.map +1 -1
  201. package/dist/spec/manager.d.ts +1 -1
  202. package/dist/spec/manager.d.ts.map +1 -1
  203. package/dist/spec/manager.js +3 -3
  204. package/dist/spec/manager.js.map +1 -1
  205. package/dist/spec/templates.d.ts +1 -1
  206. package/dist/spec/templates.d.ts.map +1 -1
  207. package/dist/spec/templates.js +0 -0
  208. package/dist/spec/templates.js.map +0 -0
  209. package/dist/spec/types.d.ts +2 -2
  210. package/dist/spec/types.d.ts.map +1 -1
  211. package/dist/spec/types.js +0 -0
  212. package/dist/spec/types.js.map +0 -0
  213. package/dist/state/index.d.ts +0 -0
  214. package/dist/state/index.d.ts.map +0 -0
  215. package/dist/state/index.js +0 -0
  216. package/dist/state/index.js.map +0 -0
  217. package/dist/state/manager.d.ts +0 -0
  218. package/dist/state/manager.d.ts.map +0 -0
  219. package/dist/state/manager.js +0 -0
  220. package/dist/state/manager.js.map +0 -0
  221. package/dist/state/session.d.ts +0 -0
  222. package/dist/state/session.d.ts.map +0 -0
  223. package/dist/state/session.js +0 -0
  224. package/dist/state/session.js.map +0 -0
  225. package/dist/state/types.d.ts +0 -0
  226. package/dist/state/types.d.ts.map +0 -0
  227. package/dist/state/types.js +0 -0
  228. package/dist/state/types.js.map +0 -0
  229. package/dist/storage/codex-adapter.d.ts +0 -0
  230. package/dist/storage/codex-adapter.d.ts.map +0 -0
  231. package/dist/storage/codex-adapter.js +0 -0
  232. package/dist/storage/codex-adapter.js.map +0 -0
  233. package/dist/storage/index.d.ts +0 -0
  234. package/dist/storage/index.d.ts.map +0 -0
  235. package/dist/storage/index.js +0 -0
  236. package/dist/storage/index.js.map +0 -0
  237. package/dist/storage/local.d.ts +0 -0
  238. package/dist/storage/local.d.ts.map +0 -0
  239. package/dist/storage/local.js +0 -0
  240. package/dist/storage/local.js.map +0 -0
  241. package/dist/types.d.ts +0 -0
  242. package/dist/types.d.ts.map +0 -0
  243. package/dist/types.js +0 -0
  244. package/dist/types.js.map +0 -0
  245. package/dist/work/index.d.ts +0 -0
  246. package/dist/work/index.d.ts.map +0 -0
  247. package/dist/work/index.js +0 -0
  248. package/dist/work/index.js.map +0 -0
  249. package/dist/work/manager.d.ts +0 -0
  250. package/dist/work/manager.d.ts.map +0 -0
  251. package/dist/work/manager.js +0 -0
  252. package/dist/work/manager.js.map +0 -0
  253. package/dist/work/providers/github.d.ts +0 -5
  254. package/dist/work/providers/github.d.ts.map +1 -1
  255. package/dist/work/providers/github.js +41 -69
  256. package/dist/work/providers/github.js.map +1 -1
  257. package/dist/work/providers/jira.d.ts +0 -0
  258. package/dist/work/providers/jira.d.ts.map +0 -0
  259. package/dist/work/providers/jira.js +0 -0
  260. package/dist/work/providers/jira.js.map +0 -0
  261. package/dist/work/providers/linear.d.ts +0 -0
  262. package/dist/work/providers/linear.d.ts.map +0 -0
  263. package/dist/work/providers/linear.js +0 -0
  264. package/dist/work/providers/linear.js.map +0 -0
  265. package/dist/work/types.d.ts +0 -0
  266. package/dist/work/types.d.ts.map +0 -0
  267. package/dist/work/types.js +0 -0
  268. package/dist/work/types.js.map +0 -0
  269. package/dist/workflow/__tests__/agent-executor.test.d.ts +0 -0
  270. package/dist/workflow/__tests__/agent-executor.test.d.ts.map +0 -0
  271. package/dist/workflow/__tests__/agent-executor.test.js +2 -2
  272. package/dist/workflow/__tests__/agent-executor.test.js.map +1 -1
  273. package/dist/workflow/__tests__/resolver.test.d.ts +0 -0
  274. package/dist/workflow/__tests__/resolver.test.d.ts.map +0 -0
  275. package/dist/workflow/__tests__/resolver.test.js +0 -0
  276. package/dist/workflow/__tests__/resolver.test.js.map +0 -0
  277. package/dist/workflow/agent-executor.d.ts +1 -1
  278. package/dist/workflow/agent-executor.d.ts.map +1 -1
  279. package/dist/workflow/agent-executor.js +3 -3
  280. package/dist/workflow/agent-executor.js.map +1 -1
  281. package/dist/workflow/faber.d.ts +0 -0
  282. package/dist/workflow/faber.d.ts.map +0 -0
  283. package/dist/workflow/faber.js +0 -0
  284. package/dist/workflow/faber.js.map +0 -0
  285. package/dist/workflow/index.d.ts +0 -0
  286. package/dist/workflow/index.d.ts.map +0 -0
  287. package/dist/workflow/index.js +0 -0
  288. package/dist/workflow/index.js.map +0 -0
  289. package/dist/workflow/resolver.d.ts +0 -0
  290. package/dist/workflow/resolver.d.ts.map +0 -0
  291. package/dist/workflow/resolver.js +0 -0
  292. package/dist/workflow/resolver.js.map +0 -0
  293. package/dist/workflow/types.d.ts +0 -0
  294. package/dist/workflow/types.d.ts.map +0 -0
  295. package/dist/workflow/types.js +0 -0
  296. package/dist/workflow/types.js.map +0 -0
  297. package/dist/workflows/__tests__/registry.test.d.ts +0 -0
  298. package/dist/workflows/__tests__/registry.test.d.ts.map +0 -0
  299. package/dist/workflows/__tests__/registry.test.js +0 -0
  300. package/dist/workflows/__tests__/registry.test.js.map +0 -0
  301. package/dist/workflows/registry.d.ts +0 -0
  302. package/dist/workflows/registry.d.ts.map +0 -0
  303. package/dist/workflows/registry.js +0 -0
  304. package/dist/workflows/registry.js.map +0 -0
  305. package/package.json +1 -1
  306. package/dist/cloud/__tests__/resource-manager.test.d.ts +0 -7
  307. package/dist/cloud/__tests__/resource-manager.test.d.ts.map +0 -1
  308. package/dist/cloud/__tests__/resource-manager.test.js +0 -741
  309. package/dist/cloud/__tests__/resource-manager.test.js.map +0 -1
  310. package/dist/cloud/__tests__/terraform-manager.test.d.ts +0 -7
  311. package/dist/cloud/__tests__/terraform-manager.test.d.ts.map +0 -1
  312. package/dist/cloud/__tests__/terraform-manager.test.js +0 -493
  313. package/dist/cloud/__tests__/terraform-manager.test.js.map +0 -1
  314. package/dist/cloud/index.d.ts +0 -9
  315. package/dist/cloud/index.d.ts.map +0 -1
  316. package/dist/cloud/index.js +0 -11
  317. package/dist/cloud/index.js.map +0 -1
  318. package/dist/cloud/resource-manager.d.ts +0 -81
  319. package/dist/cloud/resource-manager.d.ts.map +0 -1
  320. package/dist/cloud/resource-manager.js +0 -288
  321. package/dist/cloud/resource-manager.js.map +0 -1
  322. package/dist/cloud/terraform-manager.d.ts +0 -108
  323. package/dist/cloud/terraform-manager.d.ts.map +0 -1
  324. package/dist/cloud/terraform-manager.js +0 -552
  325. package/dist/cloud/terraform-manager.js.map +0 -1
  326. package/dist/cloud/types.d.ts +0 -281
  327. package/dist/cloud/types.d.ts.map +0 -1
  328. package/dist/cloud/types.js +0 -7
  329. package/dist/cloud/types.js.map +0 -1
  330. package/dist/faber/__tests__/config-manager.test.d.ts +0 -7
  331. package/dist/faber/__tests__/config-manager.test.d.ts.map +0 -1
  332. package/dist/faber/__tests__/config-manager.test.js +0 -637
  333. package/dist/faber/__tests__/config-manager.test.js.map +0 -1
  334. package/dist/faber/__tests__/state-manager.test.d.ts +0 -7
  335. package/dist/faber/__tests__/state-manager.test.d.ts.map +0 -1
  336. package/dist/faber/__tests__/state-manager.test.js +0 -541
  337. package/dist/faber/__tests__/state-manager.test.js.map +0 -1
  338. package/dist/faber/config-manager.d.ts +0 -123
  339. package/dist/faber/config-manager.d.ts.map +0 -1
  340. package/dist/faber/config-manager.js +0 -449
  341. package/dist/faber/config-manager.js.map +0 -1
  342. package/dist/faber/index.d.ts +0 -17
  343. package/dist/faber/index.d.ts.map +0 -1
  344. package/dist/faber/index.js +0 -15
  345. package/dist/faber/index.js.map +0 -1
  346. package/dist/faber/state-manager.d.ts +0 -124
  347. package/dist/faber/state-manager.d.ts.map +0 -1
  348. package/dist/faber/state-manager.js +0 -558
  349. package/dist/faber/state-manager.js.map +0 -1
  350. package/dist/faber/types.d.ts +0 -383
  351. package/dist/faber/types.d.ts.map +0 -1
  352. package/dist/faber/types.js +0 -60
  353. package/dist/faber/types.js.map +0 -1
@@ -1,552 +0,0 @@
1
- /**
2
- * @fractary/faber - Terraform Manager
3
- *
4
- * Wraps Terraform CLI operations with structured responses.
5
- */
6
- import { execSync } from 'child_process';
7
- import * as fs from 'fs';
8
- import * as path from 'path';
9
- /**
10
- * Default terraform binary
11
- */
12
- const DEFAULT_TERRAFORM_BINARY = 'terraform';
13
- /**
14
- * TerraformManager - Manages Terraform CLI operations
15
- *
16
- * Provides structured wrappers around terraform commands with
17
- * JSON output parsing and error handling.
18
- */
19
- export class TerraformManager {
20
- workingDir;
21
- environment;
22
- terraformBinary;
23
- awsProfile;
24
- envVars;
25
- constructor(config) {
26
- this.workingDir = path.resolve(config.workingDir);
27
- this.environment = config.environment;
28
- this.terraformBinary = config.terraformBinary ?? DEFAULT_TERRAFORM_BINARY;
29
- this.awsProfile = config.awsProfile;
30
- this.envVars = config.envVars ?? {};
31
- // Verify working directory exists
32
- if (!fs.existsSync(this.workingDir)) {
33
- throw new Error(`Working directory does not exist: ${this.workingDir}`);
34
- }
35
- }
36
- // ============================================
37
- // Helper Methods
38
- // ============================================
39
- /**
40
- * Get environment variables for terraform execution
41
- */
42
- getEnv() {
43
- const env = { ...process.env, ...this.envVars };
44
- if (this.awsProfile) {
45
- env.AWS_PROFILE = this.awsProfile;
46
- }
47
- return env;
48
- }
49
- /**
50
- * Execute terraform command synchronously
51
- */
52
- exec(args, options) {
53
- const command = [this.terraformBinary, ...args].join(' ');
54
- try {
55
- const output = execSync(command, {
56
- cwd: this.workingDir,
57
- env: this.getEnv(),
58
- encoding: 'utf-8',
59
- timeout: options?.timeout ?? 300000, // 5 minute default timeout
60
- stdio: ['pipe', 'pipe', 'pipe'],
61
- });
62
- return output;
63
- }
64
- catch (error) {
65
- const execError = error;
66
- const stderr = execError.stderr ?? '';
67
- const stdout = execError.stdout ?? '';
68
- throw new Error(`Terraform command failed: ${stderr || stdout || execError.message}`);
69
- }
70
- }
71
- /**
72
- * Execute terraform command with JSON output
73
- */
74
- execJson(args) {
75
- const output = this.exec([...args, '-json']);
76
- try {
77
- return JSON.parse(output);
78
- }
79
- catch {
80
- throw new Error(`Failed to parse terraform JSON output: ${output}`);
81
- }
82
- }
83
- /**
84
- * Build variable arguments
85
- */
86
- buildVarArgs(vars, varFiles) {
87
- const args = [];
88
- // Add var-file arguments
89
- for (const file of varFiles ?? []) {
90
- args.push('-var-file', file);
91
- }
92
- // Add var arguments
93
- for (const [key, value] of Object.entries(vars ?? {})) {
94
- args.push('-var', `${key}=${value}`);
95
- }
96
- return args;
97
- }
98
- /**
99
- * Build target arguments
100
- */
101
- buildTargetArgs(targets) {
102
- const args = [];
103
- for (const target of targets ?? []) {
104
- args.push('-target', target);
105
- }
106
- return args;
107
- }
108
- // ============================================
109
- // Core Operations
110
- // ============================================
111
- /**
112
- * Initialize Terraform working directory
113
- */
114
- async init(options) {
115
- const args = ['init', '-no-color'];
116
- if (options?.backend === false) {
117
- args.push('-backend=false');
118
- }
119
- if (options?.upgrade) {
120
- args.push('-upgrade');
121
- }
122
- if (options?.reconfigure) {
123
- args.push('-reconfigure');
124
- }
125
- if (options?.migrate) {
126
- args.push('-migrate-state');
127
- }
128
- try {
129
- const output = this.exec(args);
130
- // Parse output for relevant information
131
- const providersInstalled = [];
132
- const providerMatch = output.matchAll(/- Installed ([^\s]+)/g);
133
- for (const match of providerMatch) {
134
- providersInstalled.push(match[1]);
135
- }
136
- const backendConfigured = output.includes('Successfully configured the backend') ||
137
- output.includes('Initializing the backend');
138
- return {
139
- success: true,
140
- initialized: true,
141
- providers_installed: providersInstalled,
142
- backend_configured: backendConfigured,
143
- output,
144
- };
145
- }
146
- catch (error) {
147
- return {
148
- success: false,
149
- initialized: false,
150
- providers_installed: [],
151
- backend_configured: false,
152
- output: String(error),
153
- };
154
- }
155
- }
156
- /**
157
- * Validate Terraform configuration
158
- */
159
- async validate() {
160
- try {
161
- const result = this.execJson(['validate']);
162
- return {
163
- valid: result.valid,
164
- error_count: result.error_count,
165
- warning_count: result.warning_count,
166
- diagnostics: result.diagnostics ?? [],
167
- };
168
- }
169
- catch (error) {
170
- return {
171
- valid: false,
172
- error_count: 1,
173
- warning_count: 0,
174
- diagnostics: [{
175
- severity: 'error',
176
- summary: 'Validation failed',
177
- detail: String(error),
178
- }],
179
- };
180
- }
181
- }
182
- /**
183
- * Generate execution plan
184
- */
185
- async plan(options) {
186
- const args = ['plan', '-no-color', '-detailed-exitcode'];
187
- // Add output file option
188
- if (options?.out) {
189
- args.push('-out', options.out);
190
- }
191
- // Add target arguments
192
- args.push(...this.buildTargetArgs(options?.target));
193
- // Add variable arguments
194
- args.push(...this.buildVarArgs(options?.vars, options?.varFile));
195
- // Add destroy flag
196
- if (options?.destroy) {
197
- args.push('-destroy');
198
- }
199
- try {
200
- // First, run plan with regular output
201
- let hasChanges = false;
202
- let rawOutput = '';
203
- try {
204
- rawOutput = this.exec(args, { timeout: 600000 }); // 10 minute timeout for plan
205
- hasChanges = false; // Exit code 0 = no changes
206
- }
207
- catch (error) {
208
- const execError = error;
209
- if (execError.status === 2) {
210
- // Exit code 2 = changes detected
211
- hasChanges = true;
212
- rawOutput = execError.stdout ?? '';
213
- }
214
- else {
215
- throw error;
216
- }
217
- }
218
- // If we have an output file, show it in JSON format
219
- const resourceChanges = [];
220
- let add = 0, change = 0, destroy = 0;
221
- if (options?.out && fs.existsSync(options.out)) {
222
- try {
223
- const showOutput = this.exec(['show', '-json', options.out]);
224
- const planJson = JSON.parse(showOutput);
225
- if (planJson.resource_changes) {
226
- for (const rc of planJson.resource_changes) {
227
- const actions = rc.change?.actions ?? [];
228
- if (actions.includes('create'))
229
- add++;
230
- if (actions.includes('update'))
231
- change++;
232
- if (actions.includes('delete'))
233
- destroy++;
234
- resourceChanges.push({
235
- address: rc.address,
236
- module_address: rc.module_address,
237
- type: rc.type,
238
- name: rc.name,
239
- provider_name: rc.provider_name,
240
- action: this.mapAction(actions),
241
- before: rc.change?.before,
242
- after: rc.change?.after,
243
- });
244
- }
245
- }
246
- }
247
- catch {
248
- // If JSON parsing fails, parse from raw output
249
- const summaryMatch = rawOutput.match(/Plan: (\d+) to add, (\d+) to change, (\d+) to destroy/);
250
- if (summaryMatch) {
251
- add = parseInt(summaryMatch[1], 10);
252
- change = parseInt(summaryMatch[2], 10);
253
- destroy = parseInt(summaryMatch[3], 10);
254
- }
255
- }
256
- }
257
- else {
258
- // Parse summary from raw output
259
- const summaryMatch = rawOutput.match(/Plan: (\d+) to add, (\d+) to change, (\d+) to destroy/);
260
- if (summaryMatch) {
261
- add = parseInt(summaryMatch[1], 10);
262
- change = parseInt(summaryMatch[2], 10);
263
- destroy = parseInt(summaryMatch[3], 10);
264
- }
265
- }
266
- return {
267
- format_version: '1.0',
268
- terraform_version: await this.getVersion(),
269
- has_changes: hasChanges || (add + change + destroy > 0),
270
- resource_changes: resourceChanges,
271
- summary: { add, change, destroy },
272
- raw_output: rawOutput,
273
- };
274
- }
275
- catch (error) {
276
- throw new Error(`Terraform plan failed: ${error}`);
277
- }
278
- }
279
- /**
280
- * Map terraform actions to single action type
281
- */
282
- mapAction(actions) {
283
- if (actions.includes('create') && actions.includes('delete'))
284
- return 'replace';
285
- if (actions.includes('create'))
286
- return 'create';
287
- if (actions.includes('update'))
288
- return 'update';
289
- if (actions.includes('delete'))
290
- return 'delete';
291
- if (actions.includes('read'))
292
- return 'read';
293
- return 'no-op';
294
- }
295
- /**
296
- * Apply changes
297
- */
298
- async apply(options) {
299
- const startTime = Date.now();
300
- const args = ['apply', '-no-color'];
301
- // Auto-approve or use plan file (which doesn't need approval)
302
- if (options?.autoApprove || options?.planFile) {
303
- args.push('-auto-approve');
304
- }
305
- // Use saved plan file
306
- if (options?.planFile) {
307
- args.push(options.planFile);
308
- }
309
- else {
310
- // Add target arguments (only when not using plan file)
311
- args.push(...this.buildTargetArgs(options?.target));
312
- // Add variable arguments
313
- args.push(...this.buildVarArgs(options?.vars, options?.varFile));
314
- }
315
- try {
316
- const output = this.exec(args, { timeout: 1800000 }); // 30 minute timeout for apply
317
- // Parse results from output
318
- let created = 0, changed = 0, destroyed = 0;
319
- const summaryMatch = output.match(/Apply complete! Resources: (\d+) added, (\d+) changed, (\d+) destroyed/);
320
- if (summaryMatch) {
321
- created = parseInt(summaryMatch[1], 10);
322
- changed = parseInt(summaryMatch[2], 10);
323
- destroyed = parseInt(summaryMatch[3], 10);
324
- }
325
- // Get outputs
326
- const outputs = await this.output();
327
- return {
328
- success: true,
329
- resources_created: created,
330
- resources_changed: changed,
331
- resources_destroyed: destroyed,
332
- outputs,
333
- duration_seconds: (Date.now() - startTime) / 1000,
334
- errors: [],
335
- };
336
- }
337
- catch (error) {
338
- return {
339
- success: false,
340
- resources_created: 0,
341
- resources_changed: 0,
342
- resources_destroyed: 0,
343
- outputs: {},
344
- duration_seconds: (Date.now() - startTime) / 1000,
345
- errors: [String(error)],
346
- };
347
- }
348
- }
349
- /**
350
- * Destroy infrastructure
351
- */
352
- async destroy(options) {
353
- const startTime = Date.now();
354
- const args = ['destroy', '-no-color'];
355
- // Auto-approve
356
- if (options?.autoApprove) {
357
- args.push('-auto-approve');
358
- }
359
- // Add target arguments
360
- args.push(...this.buildTargetArgs(options?.target));
361
- // Add variable arguments
362
- args.push(...this.buildVarArgs(options?.vars, options?.varFile));
363
- try {
364
- const output = this.exec(args, { timeout: 1800000 }); // 30 minute timeout
365
- // Parse results from output
366
- let destroyed = 0;
367
- const summaryMatch = output.match(/Destroy complete! Resources: (\d+) destroyed/);
368
- if (summaryMatch) {
369
- destroyed = parseInt(summaryMatch[1], 10);
370
- }
371
- return {
372
- success: true,
373
- resources_destroyed: destroyed,
374
- duration_seconds: (Date.now() - startTime) / 1000,
375
- errors: [],
376
- };
377
- }
378
- catch (error) {
379
- return {
380
- success: false,
381
- resources_destroyed: 0,
382
- duration_seconds: (Date.now() - startTime) / 1000,
383
- errors: [String(error)],
384
- };
385
- }
386
- }
387
- // ============================================
388
- // State Operations
389
- // ============================================
390
- /**
391
- * Show current state
392
- */
393
- async show() {
394
- try {
395
- const result = this.execJson(['show']);
396
- const resources = result.values?.root_module?.resources?.map(r => ({
397
- type: r.type,
398
- name: r.name,
399
- mode: r.mode,
400
- provider: r.provider_name,
401
- instances: [{
402
- schema_version: r.schema_version,
403
- attributes: r.values,
404
- dependencies: r.depends_on,
405
- }],
406
- })) ?? [];
407
- const outputs = {};
408
- for (const [key, value] of Object.entries(result.values?.outputs ?? {})) {
409
- outputs[key] = {
410
- value: value.value,
411
- type: value.type,
412
- sensitive: value.sensitive,
413
- };
414
- }
415
- return {
416
- format_version: result.format_version,
417
- terraform_version: result.terraform_version,
418
- resources,
419
- outputs,
420
- };
421
- }
422
- catch (error) {
423
- throw new Error(`Failed to show terraform state: ${error}`);
424
- }
425
- }
426
- /**
427
- * Get outputs
428
- */
429
- async output(name) {
430
- try {
431
- const args = ['output'];
432
- if (name) {
433
- args.push(name);
434
- }
435
- const result = this.execJson(args);
436
- const outputs = {};
437
- for (const [key, value] of Object.entries(result)) {
438
- outputs[key] = {
439
- value: value.value,
440
- type: value.type,
441
- sensitive: value.sensitive,
442
- };
443
- }
444
- return outputs;
445
- }
446
- catch {
447
- // No outputs is not an error
448
- return {};
449
- }
450
- }
451
- // ============================================
452
- // Workspace Operations
453
- // ============================================
454
- /**
455
- * Select workspace
456
- */
457
- async selectWorkspace(name) {
458
- try {
459
- // Try to select existing workspace
460
- this.exec(['workspace', 'select', name]);
461
- }
462
- catch {
463
- // Create if doesn't exist
464
- this.exec(['workspace', 'new', name]);
465
- }
466
- }
467
- /**
468
- * List workspaces
469
- */
470
- async listWorkspaces() {
471
- const output = this.exec(['workspace', 'list']);
472
- // Parse workspace list (format: "* default\n other")
473
- return output
474
- .split('\n')
475
- .map(line => line.replace(/^\*?\s*/, '').trim())
476
- .filter(line => line.length > 0);
477
- }
478
- /**
479
- * Get current workspace
480
- */
481
- async currentWorkspace() {
482
- const output = this.exec(['workspace', 'show']);
483
- return output.trim();
484
- }
485
- // ============================================
486
- // Utility Methods
487
- // ============================================
488
- /**
489
- * Get terraform version
490
- */
491
- async getVersion() {
492
- try {
493
- const output = this.exec(['version', '-json']);
494
- const result = JSON.parse(output);
495
- return result.terraform_version;
496
- }
497
- catch {
498
- // Fallback to parsing text output
499
- const output = this.exec(['version']);
500
- const match = output.match(/Terraform v(\d+\.\d+\.\d+)/);
501
- return match?.[1] ?? 'unknown';
502
- }
503
- }
504
- /**
505
- * Check if terraform is initialized
506
- */
507
- async isInitialized() {
508
- const terraformDir = path.join(this.workingDir, '.terraform');
509
- return fs.existsSync(terraformDir);
510
- }
511
- /**
512
- * Format terraform files
513
- */
514
- async fmt(check) {
515
- const args = ['fmt', '-recursive'];
516
- if (check) {
517
- args.push('-check');
518
- }
519
- try {
520
- const output = this.exec(args);
521
- const files = output.split('\n').filter(line => line.trim().length > 0);
522
- return {
523
- formatted: true,
524
- files,
525
- };
526
- }
527
- catch (error) {
528
- const execError = error;
529
- if (check && execError.status === 3) {
530
- // Exit code 3 = files need formatting
531
- return {
532
- formatted: false,
533
- files: [],
534
- };
535
- }
536
- throw error;
537
- }
538
- }
539
- /**
540
- * Get working directory
541
- */
542
- getWorkingDir() {
543
- return this.workingDir;
544
- }
545
- /**
546
- * Get environment
547
- */
548
- getEnvironment() {
549
- return this.environment;
550
- }
551
- }
552
- //# sourceMappingURL=terraform-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terraform-manager.js","sourceRoot":"","sources":["../../src/cloud/terraform-manager.ts"],"names":[],"mappings":"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"}