@fractary/faber 2.4.41 → 2.4.43

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/cloud/__tests__/resource-manager.test.d.ts +7 -0
  50. package/dist/cloud/__tests__/resource-manager.test.d.ts.map +1 -0
  51. package/dist/cloud/__tests__/resource-manager.test.js +741 -0
  52. package/dist/cloud/__tests__/resource-manager.test.js.map +1 -0
  53. package/dist/cloud/__tests__/terraform-manager.test.d.ts +7 -0
  54. package/dist/cloud/__tests__/terraform-manager.test.d.ts.map +1 -0
  55. package/dist/cloud/__tests__/terraform-manager.test.js +493 -0
  56. package/dist/cloud/__tests__/terraform-manager.test.js.map +1 -0
  57. package/dist/cloud/index.d.ts +9 -0
  58. package/dist/cloud/index.d.ts.map +1 -0
  59. package/dist/cloud/index.js +11 -0
  60. package/dist/cloud/index.js.map +1 -0
  61. package/dist/cloud/resource-manager.d.ts +81 -0
  62. package/dist/cloud/resource-manager.d.ts.map +1 -0
  63. package/dist/cloud/resource-manager.js +288 -0
  64. package/dist/cloud/resource-manager.js.map +1 -0
  65. package/dist/cloud/terraform-manager.d.ts +108 -0
  66. package/dist/cloud/terraform-manager.d.ts.map +1 -0
  67. package/dist/cloud/terraform-manager.js +552 -0
  68. package/dist/cloud/terraform-manager.js.map +1 -0
  69. package/dist/cloud/types.d.ts +281 -0
  70. package/dist/cloud/types.d.ts.map +1 -0
  71. package/dist/cloud/types.js +7 -0
  72. package/dist/cloud/types.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 +16 -0
  90. package/dist/config.d.ts.map +1 -1
  91. package/dist/config.js +2 -0
  92. package/dist/config.js.map +1 -1
  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/faber/__tests__/config-manager.test.d.ts +7 -0
  142. package/dist/faber/__tests__/config-manager.test.d.ts.map +1 -0
  143. package/dist/faber/__tests__/config-manager.test.js +637 -0
  144. package/dist/faber/__tests__/config-manager.test.js.map +1 -0
  145. package/dist/faber/__tests__/state-manager.test.d.ts +7 -0
  146. package/dist/faber/__tests__/state-manager.test.d.ts.map +1 -0
  147. package/dist/faber/__tests__/state-manager.test.js +541 -0
  148. package/dist/faber/__tests__/state-manager.test.js.map +1 -0
  149. package/dist/faber/config-manager.d.ts +123 -0
  150. package/dist/faber/config-manager.d.ts.map +1 -0
  151. package/dist/faber/config-manager.js +449 -0
  152. package/dist/faber/config-manager.js.map +1 -0
  153. package/dist/faber/index.d.ts +17 -0
  154. package/dist/faber/index.d.ts.map +1 -0
  155. package/dist/faber/index.js +15 -0
  156. package/dist/faber/index.js.map +1 -0
  157. package/dist/faber/state-manager.d.ts +124 -0
  158. package/dist/faber/state-manager.d.ts.map +1 -0
  159. package/dist/faber/state-manager.js +558 -0
  160. package/dist/faber/state-manager.js.map +1 -0
  161. package/dist/faber/types.d.ts +383 -0
  162. package/dist/faber/types.d.ts.map +1 -0
  163. package/dist/faber/types.js +60 -0
  164. package/dist/faber/types.js.map +1 -0
  165. package/dist/index.d.ts +0 -0
  166. package/dist/index.d.ts.map +0 -0
  167. package/dist/index.js +0 -0
  168. package/dist/index.js.map +0 -0
  169. package/dist/logs/index.d.ts +0 -0
  170. package/dist/logs/index.d.ts.map +0 -0
  171. package/dist/logs/index.js +0 -0
  172. package/dist/logs/index.js.map +0 -0
  173. package/dist/logs/manager.d.ts +0 -0
  174. package/dist/logs/manager.d.ts.map +0 -0
  175. package/dist/logs/manager.js +0 -0
  176. package/dist/logs/manager.js.map +0 -0
  177. package/dist/logs/types.d.ts +0 -0
  178. package/dist/logs/types.d.ts.map +0 -0
  179. package/dist/logs/types.js +0 -0
  180. package/dist/logs/types.js.map +0 -0
  181. package/dist/paths.d.ts +0 -0
  182. package/dist/paths.d.ts.map +0 -0
  183. package/dist/paths.js +0 -0
  184. package/dist/paths.js.map +0 -0
  185. package/dist/repo/git.d.ts +0 -0
  186. package/dist/repo/git.d.ts.map +0 -0
  187. package/dist/repo/git.js +0 -0
  188. package/dist/repo/git.js.map +0 -0
  189. package/dist/repo/index.d.ts +0 -0
  190. package/dist/repo/index.d.ts.map +0 -0
  191. package/dist/repo/index.js +0 -0
  192. package/dist/repo/index.js.map +0 -0
  193. package/dist/repo/manager.d.ts +0 -0
  194. package/dist/repo/manager.d.ts.map +0 -0
  195. package/dist/repo/manager.js +0 -0
  196. package/dist/repo/manager.js.map +0 -0
  197. package/dist/repo/providers/bitbucket.d.ts +0 -0
  198. package/dist/repo/providers/bitbucket.d.ts.map +0 -0
  199. package/dist/repo/providers/bitbucket.js +0 -0
  200. package/dist/repo/providers/bitbucket.js.map +0 -0
  201. package/dist/repo/providers/github.d.ts +0 -0
  202. package/dist/repo/providers/github.d.ts.map +0 -0
  203. package/dist/repo/providers/github.js +0 -0
  204. package/dist/repo/providers/github.js.map +0 -0
  205. package/dist/repo/providers/gitlab.d.ts +0 -0
  206. package/dist/repo/providers/gitlab.d.ts.map +0 -0
  207. package/dist/repo/providers/gitlab.js +0 -0
  208. package/dist/repo/providers/gitlab.js.map +0 -0
  209. package/dist/repo/providers/index.d.ts +0 -0
  210. package/dist/repo/providers/index.d.ts.map +0 -0
  211. package/dist/repo/providers/index.js +0 -0
  212. package/dist/repo/providers/index.js.map +0 -0
  213. package/dist/repo/types.d.ts +0 -0
  214. package/dist/repo/types.d.ts.map +0 -0
  215. package/dist/repo/types.js +0 -0
  216. package/dist/repo/types.js.map +0 -0
  217. package/dist/spec/__tests__/manager.test.d.ts +0 -0
  218. package/dist/spec/__tests__/manager.test.d.ts.map +0 -0
  219. package/dist/spec/__tests__/manager.test.js +2 -2
  220. package/dist/spec/__tests__/manager.test.js.map +1 -1
  221. package/dist/spec/index.d.ts +3 -3
  222. package/dist/spec/index.d.ts.map +1 -1
  223. package/dist/spec/index.js +3 -3
  224. package/dist/spec/index.js.map +1 -1
  225. package/dist/spec/manager.d.ts +1 -1
  226. package/dist/spec/manager.d.ts.map +1 -1
  227. package/dist/spec/manager.js +3 -3
  228. package/dist/spec/manager.js.map +1 -1
  229. package/dist/spec/templates.d.ts +1 -1
  230. package/dist/spec/templates.d.ts.map +1 -1
  231. package/dist/spec/templates.js +0 -0
  232. package/dist/spec/templates.js.map +0 -0
  233. package/dist/spec/types.d.ts +2 -2
  234. package/dist/spec/types.d.ts.map +1 -1
  235. package/dist/spec/types.js +0 -0
  236. package/dist/spec/types.js.map +0 -0
  237. package/dist/state/index.d.ts +0 -0
  238. package/dist/state/index.d.ts.map +0 -0
  239. package/dist/state/index.js +0 -0
  240. package/dist/state/index.js.map +0 -0
  241. package/dist/state/manager.d.ts +0 -0
  242. package/dist/state/manager.d.ts.map +0 -0
  243. package/dist/state/manager.js +0 -0
  244. package/dist/state/manager.js.map +0 -0
  245. package/dist/state/session.d.ts +0 -0
  246. package/dist/state/session.d.ts.map +0 -0
  247. package/dist/state/session.js +0 -0
  248. package/dist/state/session.js.map +0 -0
  249. package/dist/state/types.d.ts +0 -0
  250. package/dist/state/types.d.ts.map +0 -0
  251. package/dist/state/types.js +0 -0
  252. package/dist/state/types.js.map +0 -0
  253. package/dist/storage/codex-adapter.d.ts +0 -0
  254. package/dist/storage/codex-adapter.d.ts.map +0 -0
  255. package/dist/storage/codex-adapter.js +0 -0
  256. package/dist/storage/codex-adapter.js.map +0 -0
  257. package/dist/storage/index.d.ts +0 -0
  258. package/dist/storage/index.d.ts.map +0 -0
  259. package/dist/storage/index.js +0 -0
  260. package/dist/storage/index.js.map +0 -0
  261. package/dist/storage/local.d.ts +0 -0
  262. package/dist/storage/local.d.ts.map +0 -0
  263. package/dist/storage/local.js +0 -0
  264. package/dist/storage/local.js.map +0 -0
  265. package/dist/types.d.ts +2 -0
  266. package/dist/types.d.ts.map +1 -1
  267. package/dist/types.js +0 -0
  268. package/dist/types.js.map +0 -0
  269. package/dist/work/index.d.ts +0 -0
  270. package/dist/work/index.d.ts.map +0 -0
  271. package/dist/work/index.js +0 -0
  272. package/dist/work/index.js.map +0 -0
  273. package/dist/work/manager.d.ts +0 -0
  274. package/dist/work/manager.d.ts.map +0 -0
  275. package/dist/work/manager.js +0 -0
  276. package/dist/work/manager.js.map +0 -0
  277. package/dist/work/providers/github.d.ts +0 -0
  278. package/dist/work/providers/github.d.ts.map +1 -1
  279. package/dist/work/providers/github.js +5 -3
  280. package/dist/work/providers/github.js.map +1 -1
  281. package/dist/work/providers/jira.d.ts +0 -0
  282. package/dist/work/providers/jira.d.ts.map +0 -0
  283. package/dist/work/providers/jira.js +0 -0
  284. package/dist/work/providers/jira.js.map +0 -0
  285. package/dist/work/providers/linear.d.ts +0 -0
  286. package/dist/work/providers/linear.d.ts.map +0 -0
  287. package/dist/work/providers/linear.js +0 -0
  288. package/dist/work/providers/linear.js.map +0 -0
  289. package/dist/work/types.d.ts +0 -0
  290. package/dist/work/types.d.ts.map +0 -0
  291. package/dist/work/types.js +0 -0
  292. package/dist/work/types.js.map +0 -0
  293. package/dist/workflow/__tests__/agent-executor.test.d.ts +0 -0
  294. package/dist/workflow/__tests__/agent-executor.test.d.ts.map +0 -0
  295. package/dist/workflow/__tests__/agent-executor.test.js +2 -2
  296. package/dist/workflow/__tests__/agent-executor.test.js.map +1 -1
  297. package/dist/workflow/__tests__/resolver.test.d.ts +0 -0
  298. package/dist/workflow/__tests__/resolver.test.d.ts.map +0 -0
  299. package/dist/workflow/__tests__/resolver.test.js +0 -0
  300. package/dist/workflow/__tests__/resolver.test.js.map +0 -0
  301. package/dist/workflow/agent-executor.d.ts +1 -1
  302. package/dist/workflow/agent-executor.d.ts.map +1 -1
  303. package/dist/workflow/agent-executor.js +3 -3
  304. package/dist/workflow/agent-executor.js.map +1 -1
  305. package/dist/workflow/faber.d.ts +0 -0
  306. package/dist/workflow/faber.d.ts.map +0 -0
  307. package/dist/workflow/faber.js +0 -0
  308. package/dist/workflow/faber.js.map +0 -0
  309. package/dist/workflow/index.d.ts +0 -0
  310. package/dist/workflow/index.d.ts.map +0 -0
  311. package/dist/workflow/index.js +0 -0
  312. package/dist/workflow/index.js.map +0 -0
  313. package/dist/workflow/resolver.d.ts +0 -0
  314. package/dist/workflow/resolver.d.ts.map +0 -0
  315. package/dist/workflow/resolver.js +0 -0
  316. package/dist/workflow/resolver.js.map +0 -0
  317. package/dist/workflow/types.d.ts +0 -0
  318. package/dist/workflow/types.d.ts.map +0 -0
  319. package/dist/workflow/types.js +0 -0
  320. package/dist/workflow/types.js.map +0 -0
  321. package/dist/workflows/__tests__/registry.test.d.ts +0 -0
  322. package/dist/workflows/__tests__/registry.test.d.ts.map +0 -0
  323. package/dist/workflows/__tests__/registry.test.js +0 -0
  324. package/dist/workflows/__tests__/registry.test.js.map +0 -0
  325. package/dist/workflows/registry.d.ts +0 -0
  326. package/dist/workflows/registry.d.ts.map +0 -0
  327. package/dist/workflows/registry.js +0 -0
  328. package/dist/workflows/registry.js.map +0 -0
  329. package/package.json +2 -2
  330. package/dist/cli/commands/logs.d.ts +0 -6
  331. package/dist/cli/commands/logs.d.ts.map +0 -1
  332. package/dist/cli/commands/logs.js +0 -215
  333. package/dist/cli/commands/logs.js.map +0 -1
  334. package/dist/cli/commands/repo.d.ts +0 -6
  335. package/dist/cli/commands/repo.d.ts.map +0 -1
  336. package/dist/cli/commands/repo.js +0 -260
  337. package/dist/cli/commands/repo.js.map +0 -1
  338. package/dist/cli/commands/spec.d.ts +0 -6
  339. package/dist/cli/commands/spec.d.ts.map +0 -1
  340. package/dist/cli/commands/spec.js +0 -184
  341. package/dist/cli/commands/spec.js.map +0 -1
  342. package/dist/cli/commands/work.d.ts +0 -6
  343. package/dist/cli/commands/work.d.ts.map +0 -1
  344. package/dist/cli/commands/work.js +0 -113
  345. package/dist/cli/commands/work.js.map +0 -1
  346. package/dist/cli/commands/workflow.d.ts +0 -6
  347. package/dist/cli/commands/workflow.d.ts.map +0 -1
  348. package/dist/cli/commands/workflow.js +0 -214
  349. package/dist/cli/commands/workflow.js.map +0 -1
  350. package/dist/cli/index.d.ts +0 -8
  351. package/dist/cli/index.d.ts.map +0 -1
  352. package/dist/cli/index.js +0 -27
  353. package/dist/cli/index.js.map +0 -1
@@ -0,0 +1,81 @@
1
+ /**
2
+ * @fractary/faber - Resource Manager
3
+ *
4
+ * Tracks and manages deployed cloud resources across environments.
5
+ * Uses Terraform state as primary source of truth.
6
+ */
7
+ import { ResourceManagerConfig, CloudResource, ResourceFilterOptions, ResourceSummary } from './types';
8
+ /**
9
+ * ResourceManager - Manages cloud resource tracking
10
+ *
11
+ * Provides an abstraction over Terraform state for listing
12
+ * and monitoring deployed resources.
13
+ */
14
+ export declare class ResourceManager {
15
+ private readonly environment;
16
+ private readonly terraformDir;
17
+ private readonly awsProfile;
18
+ private terraformManager;
19
+ constructor(config: ResourceManagerConfig);
20
+ /**
21
+ * Get or create terraform manager for the environment
22
+ */
23
+ private getTerraformManager;
24
+ /**
25
+ * List resources from Terraform state
26
+ */
27
+ list(filters?: ResourceFilterOptions): Promise<CloudResource[]>;
28
+ /**
29
+ * Map Terraform resource to CloudResource
30
+ */
31
+ private mapTerraformResource;
32
+ /**
33
+ * Map resource attributes to status
34
+ */
35
+ private mapResourceStatus;
36
+ /**
37
+ * Apply filters to resources
38
+ */
39
+ private applyFilters;
40
+ /**
41
+ * Get resource status summary
42
+ */
43
+ status(): Promise<ResourceSummary>;
44
+ /**
45
+ * Get a specific resource by ID
46
+ */
47
+ get(resourceId: string): Promise<CloudResource | null>;
48
+ /**
49
+ * Get resources by type
50
+ */
51
+ getByType(type: string): Promise<CloudResource[]>;
52
+ /**
53
+ * Get resources by tag
54
+ */
55
+ getByTag(key: string, value: string): Promise<CloudResource[]>;
56
+ /**
57
+ * Check if any resources exist
58
+ */
59
+ hasResources(): Promise<boolean>;
60
+ /**
61
+ * Get resource count
62
+ */
63
+ count(filters?: ResourceFilterOptions): Promise<number>;
64
+ /**
65
+ * Get environment name
66
+ */
67
+ getEnvironment(): string;
68
+ /**
69
+ * Get terraform outputs for the environment
70
+ */
71
+ getOutputs(): Promise<Record<string, unknown>>;
72
+ /**
73
+ * Check health of resources (basic connectivity check)
74
+ */
75
+ healthCheck(): Promise<{
76
+ healthy: boolean;
77
+ issues: string[];
78
+ checked: number;
79
+ }>;
80
+ }
81
+ //# sourceMappingURL=resource-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-manager.d.ts","sourceRoot":"","sources":["../../src/cloud/resource-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACrB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAGjB;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,gBAAgB,CAAiC;gBAE7C,MAAM,EAAE,qBAAqB;IAMzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA2BrE;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6C5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0CzB;;OAEG;IACH,OAAO,CAAC,YAAY;IA6BpB;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAgCxC;;OAEG;IACG,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAK5D;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIvD;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIpE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAKtC;;OAEG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7D;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAoBpD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAC3B,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CA4BH"}
@@ -0,0 +1,288 @@
1
+ /**
2
+ * @fractary/faber - Resource Manager
3
+ *
4
+ * Tracks and manages deployed cloud resources across environments.
5
+ * Uses Terraform state as primary source of truth.
6
+ */
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import { TerraformManager } from './terraform-manager';
10
+ /**
11
+ * ResourceManager - Manages cloud resource tracking
12
+ *
13
+ * Provides an abstraction over Terraform state for listing
14
+ * and monitoring deployed resources.
15
+ */
16
+ export class ResourceManager {
17
+ environment;
18
+ terraformDir;
19
+ awsProfile;
20
+ terraformManager = null;
21
+ constructor(config) {
22
+ this.environment = config.environment;
23
+ this.terraformDir = config.terraformDir;
24
+ this.awsProfile = config.awsProfile;
25
+ }
26
+ /**
27
+ * Get or create terraform manager for the environment
28
+ */
29
+ getTerraformManager() {
30
+ if (!this.terraformDir) {
31
+ return null;
32
+ }
33
+ if (!this.terraformManager) {
34
+ const workingDir = path.resolve(this.terraformDir);
35
+ if (fs.existsSync(workingDir)) {
36
+ this.terraformManager = new TerraformManager({
37
+ workingDir,
38
+ environment: this.environment,
39
+ awsProfile: this.awsProfile,
40
+ });
41
+ }
42
+ }
43
+ return this.terraformManager;
44
+ }
45
+ /**
46
+ * List resources from Terraform state
47
+ */
48
+ async list(filters) {
49
+ const resources = [];
50
+ // Try to get resources from Terraform state
51
+ const tf = this.getTerraformManager();
52
+ if (tf && await tf.isInitialized()) {
53
+ try {
54
+ const state = await tf.show();
55
+ for (const resource of state.resources) {
56
+ // Only include managed resources
57
+ if (resource.mode !== 'managed')
58
+ continue;
59
+ for (const instance of resource.instances) {
60
+ const cloudResource = this.mapTerraformResource(resource, instance);
61
+ resources.push(cloudResource);
62
+ }
63
+ }
64
+ }
65
+ catch (error) {
66
+ console.error('Failed to read Terraform state:', error);
67
+ }
68
+ }
69
+ // Apply filters
70
+ return this.applyFilters(resources, filters);
71
+ }
72
+ /**
73
+ * Map Terraform resource to CloudResource
74
+ */
75
+ mapTerraformResource(resource, instance) {
76
+ const attrs = instance.attributes;
77
+ // Determine provider from terraform provider name
78
+ let provider = 'other';
79
+ if (resource.provider.includes('aws'))
80
+ provider = 'aws';
81
+ else if (resource.provider.includes('google'))
82
+ provider = 'gcp';
83
+ else if (resource.provider.includes('azurerm'))
84
+ provider = 'azure';
85
+ // Extract common attributes
86
+ const id = (attrs.id ?? attrs.arn ?? `${resource.type}.${resource.name}`);
87
+ const tagsObj = attrs.tags;
88
+ const name = (attrs.name ?? (tagsObj && tagsObj.Name) ?? resource.name);
89
+ const availabilityZone = attrs.availability_zone;
90
+ const region = (attrs.region ?? (availabilityZone ? availabilityZone.slice(0, -1) : undefined));
91
+ const tags = tagsObj;
92
+ // Map status (varies by resource type)
93
+ const status = this.mapResourceStatus(resource.type, attrs);
94
+ return {
95
+ id,
96
+ type: resource.type,
97
+ name,
98
+ provider,
99
+ region,
100
+ status,
101
+ tags,
102
+ metadata: {
103
+ terraform_address: `${resource.type}.${resource.name}`,
104
+ ...attrs,
105
+ },
106
+ };
107
+ }
108
+ /**
109
+ * Map resource attributes to status
110
+ */
111
+ mapResourceStatus(resourceType, attrs) {
112
+ // EC2 instances
113
+ if (resourceType === 'aws_instance') {
114
+ const state = attrs.instance_state;
115
+ if (state === 'running')
116
+ return 'running';
117
+ if (state === 'stopped')
118
+ return 'stopped';
119
+ if (state === 'pending')
120
+ return 'pending';
121
+ if (state === 'terminated')
122
+ return 'terminated';
123
+ }
124
+ // RDS instances
125
+ if (resourceType === 'aws_db_instance') {
126
+ const status = attrs.status;
127
+ if (status === 'available')
128
+ return 'running';
129
+ if (status === 'stopped')
130
+ return 'stopped';
131
+ if (status === 'starting' || status === 'creating')
132
+ return 'pending';
133
+ }
134
+ // Lambda functions (always "running" if they exist)
135
+ if (resourceType === 'aws_lambda_function') {
136
+ return 'running';
137
+ }
138
+ // S3 buckets (always "running" if they exist)
139
+ if (resourceType === 'aws_s3_bucket') {
140
+ return 'running';
141
+ }
142
+ // ECS services
143
+ if (resourceType === 'aws_ecs_service') {
144
+ const desiredCount = attrs.desired_count;
145
+ if (desiredCount > 0)
146
+ return 'running';
147
+ return 'stopped';
148
+ }
149
+ // Default to running if resource exists in state
150
+ return 'running';
151
+ }
152
+ /**
153
+ * Apply filters to resources
154
+ */
155
+ applyFilters(resources, filters) {
156
+ if (!filters)
157
+ return resources;
158
+ let result = resources;
159
+ if (filters.type) {
160
+ result = result.filter(r => r.type === filters.type);
161
+ }
162
+ if (filters.status) {
163
+ result = result.filter(r => r.status === filters.status);
164
+ }
165
+ if (filters.region) {
166
+ result = result.filter(r => r.region === filters.region);
167
+ }
168
+ if (filters.tag) {
169
+ result = result.filter(r => r.tags && r.tags[filters.tag.key] === filters.tag.value);
170
+ }
171
+ return result;
172
+ }
173
+ /**
174
+ * Get resource status summary
175
+ */
176
+ async status() {
177
+ const resources = await this.list();
178
+ const summary = {
179
+ total: resources.length,
180
+ by_type: {},
181
+ by_status: {
182
+ running: 0,
183
+ stopped: 0,
184
+ pending: 0,
185
+ terminated: 0,
186
+ unknown: 0,
187
+ },
188
+ by_region: {},
189
+ };
190
+ for (const resource of resources) {
191
+ // Count by type
192
+ summary.by_type[resource.type] = (summary.by_type[resource.type] ?? 0) + 1;
193
+ // Count by status
194
+ summary.by_status[resource.status]++;
195
+ // Count by region
196
+ if (resource.region) {
197
+ summary.by_region[resource.region] = (summary.by_region[resource.region] ?? 0) + 1;
198
+ }
199
+ }
200
+ return summary;
201
+ }
202
+ /**
203
+ * Get a specific resource by ID
204
+ */
205
+ async get(resourceId) {
206
+ const resources = await this.list();
207
+ return resources.find(r => r.id === resourceId) ?? null;
208
+ }
209
+ /**
210
+ * Get resources by type
211
+ */
212
+ async getByType(type) {
213
+ return this.list({ type });
214
+ }
215
+ /**
216
+ * Get resources by tag
217
+ */
218
+ async getByTag(key, value) {
219
+ return this.list({ tag: { key, value } });
220
+ }
221
+ /**
222
+ * Check if any resources exist
223
+ */
224
+ async hasResources() {
225
+ const resources = await this.list();
226
+ return resources.length > 0;
227
+ }
228
+ /**
229
+ * Get resource count
230
+ */
231
+ async count(filters) {
232
+ const resources = await this.list(filters);
233
+ return resources.length;
234
+ }
235
+ /**
236
+ * Get environment name
237
+ */
238
+ getEnvironment() {
239
+ return this.environment;
240
+ }
241
+ /**
242
+ * Get terraform outputs for the environment
243
+ */
244
+ async getOutputs() {
245
+ const tf = this.getTerraformManager();
246
+ if (!tf || !await tf.isInitialized()) {
247
+ return {};
248
+ }
249
+ try {
250
+ const outputs = await tf.output();
251
+ const result = {};
252
+ for (const [key, value] of Object.entries(outputs)) {
253
+ result[key] = value.value;
254
+ }
255
+ return result;
256
+ }
257
+ catch {
258
+ return {};
259
+ }
260
+ }
261
+ /**
262
+ * Check health of resources (basic connectivity check)
263
+ */
264
+ async healthCheck() {
265
+ const resources = await this.list();
266
+ const issues = [];
267
+ // Check for resources in bad states
268
+ for (const resource of resources) {
269
+ if (resource.status === 'terminated') {
270
+ issues.push(`Resource ${resource.id} is terminated`);
271
+ }
272
+ if (resource.status === 'unknown') {
273
+ issues.push(`Resource ${resource.id} has unknown status`);
274
+ }
275
+ }
276
+ // Check for stopped resources that should be running
277
+ const stoppedInstances = resources.filter(r => r.type === 'aws_instance' && r.status === 'stopped');
278
+ if (stoppedInstances.length > 0) {
279
+ issues.push(`${stoppedInstances.length} EC2 instance(s) are stopped`);
280
+ }
281
+ return {
282
+ healthy: issues.length === 0,
283
+ issues,
284
+ checked: resources.length,
285
+ };
286
+ }
287
+ }
288
+ //# sourceMappingURL=resource-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-manager.js","sourceRoot":"","sources":["../../src/cloud/resource-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * @fractary/faber - Terraform Manager
3
+ *
4
+ * Wraps Terraform CLI operations with structured responses.
5
+ */
6
+ import { TerraformManagerConfig, TerraformPlan, TerraformInitResult, TerraformValidateResult, TerraformApplyResult, TerraformDestroyResult, TerraformState, TerraformOutput, TerraformInitOptions, TerraformPlanOptions, TerraformApplyOptions, TerraformDestroyOptions } from './types';
7
+ /**
8
+ * TerraformManager - Manages Terraform CLI operations
9
+ *
10
+ * Provides structured wrappers around terraform commands with
11
+ * JSON output parsing and error handling.
12
+ */
13
+ export declare class TerraformManager {
14
+ private readonly workingDir;
15
+ private readonly environment;
16
+ private readonly terraformBinary;
17
+ private readonly awsProfile;
18
+ private readonly envVars;
19
+ constructor(config: TerraformManagerConfig);
20
+ /**
21
+ * Get environment variables for terraform execution
22
+ */
23
+ private getEnv;
24
+ /**
25
+ * Execute terraform command synchronously
26
+ */
27
+ private exec;
28
+ /**
29
+ * Execute terraform command with JSON output
30
+ */
31
+ private execJson;
32
+ /**
33
+ * Build variable arguments
34
+ */
35
+ private buildVarArgs;
36
+ /**
37
+ * Build target arguments
38
+ */
39
+ private buildTargetArgs;
40
+ /**
41
+ * Initialize Terraform working directory
42
+ */
43
+ init(options?: TerraformInitOptions): Promise<TerraformInitResult>;
44
+ /**
45
+ * Validate Terraform configuration
46
+ */
47
+ validate(): Promise<TerraformValidateResult>;
48
+ /**
49
+ * Generate execution plan
50
+ */
51
+ plan(options?: TerraformPlanOptions): Promise<TerraformPlan>;
52
+ /**
53
+ * Map terraform actions to single action type
54
+ */
55
+ private mapAction;
56
+ /**
57
+ * Apply changes
58
+ */
59
+ apply(options?: TerraformApplyOptions): Promise<TerraformApplyResult>;
60
+ /**
61
+ * Destroy infrastructure
62
+ */
63
+ destroy(options?: TerraformDestroyOptions): Promise<TerraformDestroyResult>;
64
+ /**
65
+ * Show current state
66
+ */
67
+ show(): Promise<TerraformState>;
68
+ /**
69
+ * Get outputs
70
+ */
71
+ output(name?: string): Promise<Record<string, TerraformOutput>>;
72
+ /**
73
+ * Select workspace
74
+ */
75
+ selectWorkspace(name: string): Promise<void>;
76
+ /**
77
+ * List workspaces
78
+ */
79
+ listWorkspaces(): Promise<string[]>;
80
+ /**
81
+ * Get current workspace
82
+ */
83
+ currentWorkspace(): Promise<string>;
84
+ /**
85
+ * Get terraform version
86
+ */
87
+ getVersion(): Promise<string>;
88
+ /**
89
+ * Check if terraform is initialized
90
+ */
91
+ isInitialized(): Promise<boolean>;
92
+ /**
93
+ * Format terraform files
94
+ */
95
+ fmt(check?: boolean): Promise<{
96
+ formatted: boolean;
97
+ files: string[];
98
+ }>;
99
+ /**
100
+ * Get working directory
101
+ */
102
+ getWorkingDir(): string;
103
+ /**
104
+ * Get environment
105
+ */
106
+ getEnvironment(): string | undefined;
107
+ }
108
+ //# sourceMappingURL=terraform-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terraform-manager.d.ts","sourceRoot":"","sources":["../../src/cloud/terraform-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EAExB,MAAM,SAAS,CAAC;AAOjB;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,MAAM,EAAE,sBAAsB;IAiB1C;;OAEG;IACH,OAAO,CAAC,MAAM;IAUd;;OAEG;IACH,OAAO,CAAC,IAAI;IAqBZ;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,YAAY;IAmBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkDxE;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,uBAAuB,CAAC;IAsClD;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,CAAC;IAmGlE;;OAEG;IACH,OAAO,CAAC,SAAS;IASjB;;OAEG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAyD3E;;OAEG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA6CjF;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IAuDrC;;OAEG;IACG,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAkCrE;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUlD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAUzC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IASzC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAanC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAKvC;;OAEG;IACG,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA4B5E;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,SAAS;CAGrC"}