@fractary/faber 2.5.3 → 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.
- package/dist/__tests__/config.test.d.ts +0 -0
- package/dist/__tests__/config.test.d.ts.map +0 -0
- package/dist/__tests__/config.test.js +0 -0
- package/dist/__tests__/config.test.js.map +0 -0
- package/dist/__tests__/integration/forge-integration.test.d.ts +0 -0
- package/dist/__tests__/integration/forge-integration.test.d.ts.map +0 -0
- package/dist/__tests__/integration/forge-integration.test.js +2 -2
- package/dist/__tests__/integration/forge-integration.test.js.map +1 -1
- package/dist/__tests__/integration/init-workflow.test.d.ts +0 -0
- package/dist/__tests__/integration/init-workflow.test.d.ts.map +0 -0
- package/dist/__tests__/integration/init-workflow.test.js +0 -0
- package/dist/__tests__/integration/init-workflow.test.js.map +0 -0
- package/dist/agents/index.d.ts +0 -0
- package/dist/agents/index.d.ts.map +0 -0
- package/dist/agents/index.js +0 -0
- package/dist/agents/index.js.map +0 -0
- package/dist/agents/selector.d.ts +0 -0
- package/dist/agents/selector.d.ts.map +0 -0
- package/dist/agents/selector.js +0 -0
- package/dist/agents/selector.js.map +0 -0
- package/dist/agents/type-registry.d.ts +0 -0
- package/dist/agents/type-registry.d.ts.map +0 -0
- package/dist/agents/type-registry.js +0 -0
- package/dist/agents/type-registry.js.map +0 -0
- package/dist/agents/types.d.ts +0 -0
- package/dist/agents/types.d.ts.map +0 -0
- package/dist/agents/types.js +0 -0
- package/dist/agents/types.js.map +0 -0
- package/dist/auth/github-app.d.ts +0 -0
- package/dist/auth/github-app.d.ts.map +0 -0
- package/dist/auth/github-app.js +0 -0
- package/dist/auth/github-app.js.map +0 -0
- package/dist/auth/index.d.ts +0 -0
- package/dist/auth/index.d.ts.map +0 -0
- package/dist/auth/index.js +0 -0
- package/dist/auth/index.js.map +0 -0
- package/dist/changelog/index.d.ts +0 -0
- package/dist/changelog/index.d.ts.map +0 -0
- package/dist/changelog/index.js +0 -0
- package/dist/changelog/index.js.map +0 -0
- package/dist/changelog/manager.d.ts +0 -0
- package/dist/changelog/manager.d.ts.map +0 -0
- package/dist/changelog/manager.js +0 -0
- package/dist/changelog/manager.js.map +0 -0
- package/dist/changelog/types.d.ts +0 -0
- package/dist/changelog/types.d.ts.map +0 -0
- package/dist/changelog/types.js +0 -0
- package/dist/changelog/types.js.map +0 -0
- package/dist/cli/commands/logs.d.ts +6 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +215 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/repo.d.ts +6 -0
- package/dist/cli/commands/repo.d.ts.map +1 -0
- package/dist/cli/commands/repo.js +260 -0
- package/dist/cli/commands/repo.js.map +1 -0
- package/dist/cli/commands/spec.d.ts +6 -0
- package/dist/cli/commands/spec.d.ts.map +1 -0
- package/dist/cli/commands/spec.js +184 -0
- package/dist/cli/commands/spec.js.map +1 -0
- package/dist/cli/commands/work.d.ts +6 -0
- package/dist/cli/commands/work.d.ts.map +1 -0
- package/dist/cli/commands/work.js +113 -0
- package/dist/cli/commands/work.js.map +1 -0
- package/dist/cli/commands/workflow.d.ts +6 -0
- package/dist/cli/commands/workflow.d.ts.map +1 -0
- package/dist/cli/commands/workflow.js +214 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +27 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/__tests__/initializer.test.d.ts +0 -0
- package/dist/config/__tests__/initializer.test.d.ts.map +0 -0
- package/dist/config/__tests__/initializer.test.js +0 -0
- package/dist/config/__tests__/initializer.test.js.map +0 -0
- package/dist/config/initializer.d.ts +0 -0
- package/dist/config/initializer.d.ts.map +0 -0
- package/dist/config/initializer.js +0 -0
- package/dist/config/initializer.js.map +0 -0
- package/dist/config/updater.d.ts +0 -0
- package/dist/config/updater.d.ts.map +0 -0
- package/dist/config/updater.js +0 -0
- package/dist/config/updater.js.map +0 -0
- package/dist/config/validator.d.ts +0 -0
- package/dist/config/validator.d.ts.map +0 -0
- package/dist/config/validator.js +0 -0
- package/dist/config/validator.js.map +0 -0
- package/dist/config.d.ts +0 -0
- package/dist/config.d.ts.map +0 -0
- package/dist/config.js +0 -0
- package/dist/config.js.map +0 -0
- package/dist/defaults.d.ts +0 -0
- package/dist/defaults.d.ts.map +0 -0
- package/dist/defaults.js +0 -0
- package/dist/defaults.js.map +0 -0
- package/dist/errors.d.ts +0 -0
- package/dist/errors.d.ts.map +0 -0
- package/dist/errors.js +0 -0
- package/dist/errors.js.map +0 -0
- package/dist/executors/cli-entry.d.ts +0 -0
- package/dist/executors/cli-entry.d.ts.map +0 -0
- package/dist/executors/cli-entry.js +0 -0
- package/dist/executors/cli-entry.js.map +0 -0
- package/dist/executors/index.d.ts +0 -0
- package/dist/executors/index.d.ts.map +0 -0
- package/dist/executors/index.js +0 -0
- package/dist/executors/index.js.map +0 -0
- package/dist/executors/providers/claude.d.ts +0 -0
- package/dist/executors/providers/claude.d.ts.map +0 -0
- package/dist/executors/providers/claude.js +0 -0
- package/dist/executors/providers/claude.js.map +0 -0
- package/dist/executors/providers/http.d.ts +0 -0
- package/dist/executors/providers/http.d.ts.map +0 -0
- package/dist/executors/providers/http.js +0 -0
- package/dist/executors/providers/http.js.map +0 -0
- package/dist/executors/providers/index.d.ts +0 -0
- package/dist/executors/providers/index.d.ts.map +0 -0
- package/dist/executors/providers/index.js +0 -0
- package/dist/executors/providers/index.js.map +0 -0
- package/dist/executors/providers/openai-compatible.d.ts +0 -0
- package/dist/executors/providers/openai-compatible.d.ts.map +0 -0
- package/dist/executors/providers/openai-compatible.js +0 -0
- package/dist/executors/providers/openai-compatible.js.map +0 -0
- package/dist/executors/providers/openai.d.ts +0 -0
- package/dist/executors/providers/openai.d.ts.map +0 -0
- package/dist/executors/providers/openai.js +0 -0
- package/dist/executors/providers/openai.js.map +0 -0
- package/dist/executors/registry.d.ts +0 -0
- package/dist/executors/registry.d.ts.map +0 -0
- package/dist/executors/registry.js +0 -0
- package/dist/executors/registry.js.map +0 -0
- package/dist/executors/types.d.ts +0 -0
- package/dist/executors/types.d.ts.map +0 -0
- package/dist/executors/types.js +0 -0
- package/dist/executors/types.js.map +0 -0
- package/dist/executors/workflow-executor.d.ts +0 -0
- package/dist/executors/workflow-executor.d.ts.map +0 -0
- package/dist/executors/workflow-executor.js +0 -0
- package/dist/executors/workflow-executor.js.map +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.d.ts.map +0 -0
- package/dist/index.js +0 -0
- package/dist/index.js.map +0 -0
- package/dist/logs/index.d.ts +0 -0
- package/dist/logs/index.d.ts.map +0 -0
- package/dist/logs/index.js +0 -0
- package/dist/logs/index.js.map +0 -0
- package/dist/logs/manager.d.ts +0 -0
- package/dist/logs/manager.d.ts.map +0 -0
- package/dist/logs/manager.js +0 -0
- package/dist/logs/manager.js.map +0 -0
- package/dist/logs/types.d.ts +0 -0
- package/dist/logs/types.d.ts.map +0 -0
- package/dist/logs/types.js +0 -0
- package/dist/logs/types.js.map +0 -0
- package/dist/paths.d.ts +0 -0
- package/dist/paths.d.ts.map +0 -0
- package/dist/paths.js +0 -0
- package/dist/paths.js.map +0 -0
- package/dist/repo/git.d.ts +0 -0
- package/dist/repo/git.d.ts.map +0 -0
- package/dist/repo/git.js +0 -0
- package/dist/repo/git.js.map +0 -0
- package/dist/repo/index.d.ts +0 -0
- package/dist/repo/index.d.ts.map +0 -0
- package/dist/repo/index.js +0 -0
- package/dist/repo/index.js.map +0 -0
- package/dist/repo/manager.d.ts +0 -0
- package/dist/repo/manager.d.ts.map +0 -0
- package/dist/repo/manager.js +0 -0
- package/dist/repo/manager.js.map +0 -0
- package/dist/repo/providers/bitbucket.d.ts +0 -0
- package/dist/repo/providers/bitbucket.d.ts.map +0 -0
- package/dist/repo/providers/bitbucket.js +0 -0
- package/dist/repo/providers/bitbucket.js.map +0 -0
- package/dist/repo/providers/github.d.ts +0 -0
- package/dist/repo/providers/github.d.ts.map +0 -0
- package/dist/repo/providers/github.js +0 -0
- package/dist/repo/providers/github.js.map +0 -0
- package/dist/repo/providers/gitlab.d.ts +0 -0
- package/dist/repo/providers/gitlab.d.ts.map +0 -0
- package/dist/repo/providers/gitlab.js +0 -0
- package/dist/repo/providers/gitlab.js.map +0 -0
- package/dist/repo/providers/index.d.ts +0 -0
- package/dist/repo/providers/index.d.ts.map +0 -0
- package/dist/repo/providers/index.js +0 -0
- package/dist/repo/providers/index.js.map +0 -0
- package/dist/repo/types.d.ts +0 -0
- package/dist/repo/types.d.ts.map +0 -0
- package/dist/repo/types.js +0 -0
- package/dist/repo/types.js.map +0 -0
- package/dist/spec/__tests__/manager.test.d.ts +0 -0
- package/dist/spec/__tests__/manager.test.d.ts.map +0 -0
- package/dist/spec/__tests__/manager.test.js +2 -2
- package/dist/spec/__tests__/manager.test.js.map +1 -1
- package/dist/spec/index.d.ts +3 -3
- package/dist/spec/index.d.ts.map +1 -1
- package/dist/spec/index.js +3 -3
- package/dist/spec/index.js.map +1 -1
- package/dist/spec/manager.d.ts +1 -1
- package/dist/spec/manager.d.ts.map +1 -1
- package/dist/spec/manager.js +3 -3
- package/dist/spec/manager.js.map +1 -1
- package/dist/spec/templates.d.ts +1 -1
- package/dist/spec/templates.d.ts.map +1 -1
- package/dist/spec/templates.js +0 -0
- package/dist/spec/templates.js.map +0 -0
- package/dist/spec/types.d.ts +2 -2
- package/dist/spec/types.d.ts.map +1 -1
- package/dist/spec/types.js +0 -0
- package/dist/spec/types.js.map +0 -0
- package/dist/state/index.d.ts +0 -0
- package/dist/state/index.d.ts.map +0 -0
- package/dist/state/index.js +0 -0
- package/dist/state/index.js.map +0 -0
- package/dist/state/manager.d.ts +0 -0
- package/dist/state/manager.d.ts.map +0 -0
- package/dist/state/manager.js +0 -0
- package/dist/state/manager.js.map +0 -0
- package/dist/state/session.d.ts +0 -0
- package/dist/state/session.d.ts.map +0 -0
- package/dist/state/session.js +0 -0
- package/dist/state/session.js.map +0 -0
- package/dist/state/types.d.ts +0 -0
- package/dist/state/types.d.ts.map +0 -0
- package/dist/state/types.js +0 -0
- package/dist/state/types.js.map +0 -0
- package/dist/storage/codex-adapter.d.ts +0 -0
- package/dist/storage/codex-adapter.d.ts.map +0 -0
- package/dist/storage/codex-adapter.js +0 -0
- package/dist/storage/codex-adapter.js.map +0 -0
- package/dist/storage/index.d.ts +0 -0
- package/dist/storage/index.d.ts.map +0 -0
- package/dist/storage/index.js +0 -0
- package/dist/storage/index.js.map +0 -0
- package/dist/storage/local.d.ts +0 -0
- package/dist/storage/local.d.ts.map +0 -0
- package/dist/storage/local.js +0 -0
- package/dist/storage/local.js.map +0 -0
- package/dist/types.d.ts +0 -0
- package/dist/types.d.ts.map +0 -0
- package/dist/types.js +0 -0
- package/dist/types.js.map +0 -0
- package/dist/work/index.d.ts +0 -0
- package/dist/work/index.d.ts.map +0 -0
- package/dist/work/index.js +0 -0
- package/dist/work/index.js.map +0 -0
- package/dist/work/manager.d.ts +0 -0
- package/dist/work/manager.d.ts.map +0 -0
- package/dist/work/manager.js +0 -0
- package/dist/work/manager.js.map +0 -0
- package/dist/work/providers/github.d.ts +0 -5
- package/dist/work/providers/github.d.ts.map +1 -1
- package/dist/work/providers/github.js +41 -69
- package/dist/work/providers/github.js.map +1 -1
- package/dist/work/providers/jira.d.ts +0 -0
- package/dist/work/providers/jira.d.ts.map +0 -0
- package/dist/work/providers/jira.js +0 -0
- package/dist/work/providers/jira.js.map +0 -0
- package/dist/work/providers/linear.d.ts +0 -0
- package/dist/work/providers/linear.d.ts.map +0 -0
- package/dist/work/providers/linear.js +0 -0
- package/dist/work/providers/linear.js.map +0 -0
- package/dist/work/types.d.ts +0 -0
- package/dist/work/types.d.ts.map +0 -0
- package/dist/work/types.js +0 -0
- package/dist/work/types.js.map +0 -0
- package/dist/workflow/__tests__/agent-executor.test.d.ts +0 -0
- package/dist/workflow/__tests__/agent-executor.test.d.ts.map +0 -0
- package/dist/workflow/__tests__/agent-executor.test.js +2 -2
- package/dist/workflow/__tests__/agent-executor.test.js.map +1 -1
- package/dist/workflow/__tests__/resolver.test.d.ts +0 -0
- package/dist/workflow/__tests__/resolver.test.d.ts.map +0 -0
- package/dist/workflow/__tests__/resolver.test.js +0 -0
- package/dist/workflow/__tests__/resolver.test.js.map +0 -0
- package/dist/workflow/agent-executor.d.ts +1 -1
- package/dist/workflow/agent-executor.d.ts.map +1 -1
- package/dist/workflow/agent-executor.js +3 -3
- package/dist/workflow/agent-executor.js.map +1 -1
- package/dist/workflow/faber.d.ts +0 -0
- package/dist/workflow/faber.d.ts.map +0 -0
- package/dist/workflow/faber.js +0 -0
- package/dist/workflow/faber.js.map +0 -0
- package/dist/workflow/index.d.ts +0 -0
- package/dist/workflow/index.d.ts.map +0 -0
- package/dist/workflow/index.js +0 -0
- package/dist/workflow/index.js.map +0 -0
- package/dist/workflow/resolver.d.ts +0 -0
- package/dist/workflow/resolver.d.ts.map +0 -0
- package/dist/workflow/resolver.js +0 -0
- package/dist/workflow/resolver.js.map +0 -0
- package/dist/workflow/types.d.ts +0 -0
- package/dist/workflow/types.d.ts.map +0 -0
- package/dist/workflow/types.js +0 -0
- package/dist/workflow/types.js.map +0 -0
- package/dist/workflows/__tests__/registry.test.d.ts +0 -0
- package/dist/workflows/__tests__/registry.test.d.ts.map +0 -0
- package/dist/workflows/__tests__/registry.test.js +0 -0
- package/dist/workflows/__tests__/registry.test.js.map +0 -0
- package/dist/workflows/registry.d.ts +0 -0
- package/dist/workflows/registry.d.ts.map +0 -0
- package/dist/workflows/registry.js +0 -0
- package/dist/workflows/registry.js.map +0 -0
- package/package.json +1 -1
- package/dist/cloud/__tests__/resource-manager.test.d.ts +0 -7
- package/dist/cloud/__tests__/resource-manager.test.d.ts.map +0 -1
- package/dist/cloud/__tests__/resource-manager.test.js +0 -741
- package/dist/cloud/__tests__/resource-manager.test.js.map +0 -1
- package/dist/cloud/__tests__/terraform-manager.test.d.ts +0 -7
- package/dist/cloud/__tests__/terraform-manager.test.d.ts.map +0 -1
- package/dist/cloud/__tests__/terraform-manager.test.js +0 -493
- package/dist/cloud/__tests__/terraform-manager.test.js.map +0 -1
- package/dist/cloud/index.d.ts +0 -9
- package/dist/cloud/index.d.ts.map +0 -1
- package/dist/cloud/index.js +0 -11
- package/dist/cloud/index.js.map +0 -1
- package/dist/cloud/resource-manager.d.ts +0 -81
- package/dist/cloud/resource-manager.d.ts.map +0 -1
- package/dist/cloud/resource-manager.js +0 -288
- package/dist/cloud/resource-manager.js.map +0 -1
- package/dist/cloud/terraform-manager.d.ts +0 -108
- package/dist/cloud/terraform-manager.d.ts.map +0 -1
- package/dist/cloud/terraform-manager.js +0 -552
- package/dist/cloud/terraform-manager.js.map +0 -1
- package/dist/cloud/types.d.ts +0 -281
- package/dist/cloud/types.d.ts.map +0 -1
- package/dist/cloud/types.js +0 -7
- package/dist/cloud/types.js.map +0 -1
- package/dist/faber/__tests__/config-manager.test.d.ts +0 -7
- package/dist/faber/__tests__/config-manager.test.d.ts.map +0 -1
- package/dist/faber/__tests__/config-manager.test.js +0 -637
- package/dist/faber/__tests__/config-manager.test.js.map +0 -1
- package/dist/faber/__tests__/state-manager.test.d.ts +0 -7
- package/dist/faber/__tests__/state-manager.test.d.ts.map +0 -1
- package/dist/faber/__tests__/state-manager.test.js +0 -541
- package/dist/faber/__tests__/state-manager.test.js.map +0 -1
- package/dist/faber/config-manager.d.ts +0 -123
- package/dist/faber/config-manager.d.ts.map +0 -1
- package/dist/faber/config-manager.js +0 -449
- package/dist/faber/config-manager.js.map +0 -1
- package/dist/faber/index.d.ts +0 -17
- package/dist/faber/index.d.ts.map +0 -1
- package/dist/faber/index.js +0 -15
- package/dist/faber/index.js.map +0 -1
- package/dist/faber/state-manager.d.ts +0 -124
- package/dist/faber/state-manager.d.ts.map +0 -1
- package/dist/faber/state-manager.js +0 -558
- package/dist/faber/state-manager.js.map +0 -1
- package/dist/faber/types.d.ts +0 -383
- package/dist/faber/types.d.ts.map +0 -1
- package/dist/faber/types.js +0 -60
- package/dist/faber/types.js.map +0 -1
|
@@ -1,81 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,288 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"resource-manager.js","sourceRoot":"","sources":["../../src/cloud/resource-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,108 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|