@nxuss/lemma 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +148 -9
  2. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  3. package/dist/cjs/cli/lemma-proxy.js +2 -0
  4. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  5. package/dist/cjs/infra/analyzers/DriftDetector.d.ts +4 -0
  6. package/dist/cjs/infra/analyzers/DriftDetector.d.ts.map +1 -0
  7. package/dist/cjs/infra/analyzers/DriftDetector.js +88 -0
  8. package/dist/cjs/infra/analyzers/DriftDetector.js.map +1 -0
  9. package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts +3 -0
  10. package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts.map +1 -0
  11. package/dist/cjs/infra/analyzers/InfraAnalyzer.js +73 -0
  12. package/dist/cjs/infra/analyzers/InfraAnalyzer.js.map +1 -0
  13. package/dist/cjs/infra/analyzers/MonolithAnalyzer.d.ts +3 -0
  14. package/dist/cjs/infra/analyzers/MonolithAnalyzer.d.ts.map +1 -0
  15. package/dist/cjs/infra/analyzers/MonolithAnalyzer.js +180 -0
  16. package/dist/cjs/infra/analyzers/MonolithAnalyzer.js.map +1 -0
  17. package/dist/cjs/infra/analyzers/index.d.ts +4 -0
  18. package/dist/cjs/infra/analyzers/index.d.ts.map +1 -0
  19. package/dist/cjs/infra/analyzers/index.js +11 -0
  20. package/dist/cjs/infra/analyzers/index.js.map +1 -0
  21. package/dist/cjs/infra/cli.d.ts +2 -0
  22. package/dist/cjs/infra/cli.d.ts.map +1 -0
  23. package/dist/cjs/infra/cli.js +221 -0
  24. package/dist/cjs/infra/cli.js.map +1 -0
  25. package/dist/cjs/infra/config.d.ts +17 -0
  26. package/dist/cjs/infra/config.d.ts.map +1 -0
  27. package/dist/cjs/infra/config.js +111 -0
  28. package/dist/cjs/infra/config.js.map +1 -0
  29. package/dist/cjs/infra/index.d.ts +8 -0
  30. package/dist/cjs/infra/index.d.ts.map +1 -0
  31. package/dist/cjs/infra/index.js +28 -0
  32. package/dist/cjs/infra/index.js.map +1 -0
  33. package/dist/cjs/infra/mcp-tools.d.ts +16 -0
  34. package/dist/cjs/infra/mcp-tools.d.ts.map +1 -0
  35. package/dist/cjs/infra/mcp-tools.js +456 -0
  36. package/dist/cjs/infra/mcp-tools.js.map +1 -0
  37. package/dist/cjs/infra/providers/InfraProvider.d.ts +9 -0
  38. package/dist/cjs/infra/providers/InfraProvider.d.ts.map +1 -0
  39. package/dist/cjs/infra/providers/InfraProvider.js +3 -0
  40. package/dist/cjs/infra/providers/InfraProvider.js.map +1 -0
  41. package/dist/cjs/infra/providers/JenkinsProvider.d.ts +16 -0
  42. package/dist/cjs/infra/providers/JenkinsProvider.d.ts.map +1 -0
  43. package/dist/cjs/infra/providers/JenkinsProvider.js +188 -0
  44. package/dist/cjs/infra/providers/JenkinsProvider.js.map +1 -0
  45. package/dist/cjs/infra/providers/OKDProvider.d.ts +24 -0
  46. package/dist/cjs/infra/providers/OKDProvider.d.ts.map +1 -0
  47. package/dist/cjs/infra/providers/OKDProvider.js +292 -0
  48. package/dist/cjs/infra/providers/OKDProvider.js.map +1 -0
  49. package/dist/cjs/infra/providers/TerraformProvider.d.ts +17 -0
  50. package/dist/cjs/infra/providers/TerraformProvider.d.ts.map +1 -0
  51. package/dist/cjs/infra/providers/TerraformProvider.js +109 -0
  52. package/dist/cjs/infra/providers/TerraformProvider.js.map +1 -0
  53. package/dist/cjs/infra/providers/index.d.ts +9 -0
  54. package/dist/cjs/infra/providers/index.d.ts.map +1 -0
  55. package/dist/cjs/infra/providers/index.js +34 -0
  56. package/dist/cjs/infra/providers/index.js.map +1 -0
  57. package/dist/cjs/infra/templates/jenkins/index.d.ts +15 -0
  58. package/dist/cjs/infra/templates/jenkins/index.d.ts.map +1 -0
  59. package/dist/cjs/infra/templates/jenkins/index.js +124 -0
  60. package/dist/cjs/infra/templates/jenkins/index.js.map +1 -0
  61. package/dist/cjs/infra/templates/okd/index.d.ts +31 -0
  62. package/dist/cjs/infra/templates/okd/index.d.ts.map +1 -0
  63. package/dist/cjs/infra/templates/okd/index.js +149 -0
  64. package/dist/cjs/infra/templates/okd/index.js.map +1 -0
  65. package/dist/cjs/infra/types.d.ts +128 -0
  66. package/dist/cjs/infra/types.d.ts.map +1 -0
  67. package/dist/cjs/infra/types.js +4 -0
  68. package/dist/cjs/infra/types.js.map +1 -0
  69. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  70. package/dist/cjs/mcp/tools.js +9 -1
  71. package/dist/cjs/mcp/tools.js.map +1 -1
  72. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  73. package/dist/esm/cli/lemma-proxy.js +2 -0
  74. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  75. package/dist/esm/infra/analyzers/DriftDetector.d.ts +4 -0
  76. package/dist/esm/infra/analyzers/DriftDetector.d.ts.map +1 -0
  77. package/dist/esm/infra/analyzers/DriftDetector.js +84 -0
  78. package/dist/esm/infra/analyzers/DriftDetector.js.map +1 -0
  79. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts +3 -0
  80. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts.map +1 -0
  81. package/dist/esm/infra/analyzers/InfraAnalyzer.js +70 -0
  82. package/dist/esm/infra/analyzers/InfraAnalyzer.js.map +1 -0
  83. package/dist/esm/infra/analyzers/MonolithAnalyzer.d.ts +3 -0
  84. package/dist/esm/infra/analyzers/MonolithAnalyzer.d.ts.map +1 -0
  85. package/dist/esm/infra/analyzers/MonolithAnalyzer.js +174 -0
  86. package/dist/esm/infra/analyzers/MonolithAnalyzer.js.map +1 -0
  87. package/dist/esm/infra/analyzers/index.d.ts +4 -0
  88. package/dist/esm/infra/analyzers/index.d.ts.map +1 -0
  89. package/dist/esm/infra/analyzers/index.js +4 -0
  90. package/dist/esm/infra/analyzers/index.js.map +1 -0
  91. package/dist/esm/infra/cli.d.ts +2 -0
  92. package/dist/esm/infra/cli.d.ts.map +1 -0
  93. package/dist/esm/infra/cli.js +218 -0
  94. package/dist/esm/infra/cli.js.map +1 -0
  95. package/dist/esm/infra/config.d.ts +17 -0
  96. package/dist/esm/infra/config.d.ts.map +1 -0
  97. package/dist/esm/infra/config.js +101 -0
  98. package/dist/esm/infra/config.js.map +1 -0
  99. package/dist/esm/infra/index.d.ts +8 -0
  100. package/dist/esm/infra/index.d.ts.map +1 -0
  101. package/dist/esm/infra/index.js +9 -0
  102. package/dist/esm/infra/index.js.map +1 -0
  103. package/dist/esm/infra/mcp-tools.d.ts +16 -0
  104. package/dist/esm/infra/mcp-tools.d.ts.map +1 -0
  105. package/dist/esm/infra/mcp-tools.js +451 -0
  106. package/dist/esm/infra/mcp-tools.js.map +1 -0
  107. package/dist/esm/infra/providers/InfraProvider.d.ts +9 -0
  108. package/dist/esm/infra/providers/InfraProvider.d.ts.map +1 -0
  109. package/dist/esm/infra/providers/InfraProvider.js +2 -0
  110. package/dist/esm/infra/providers/InfraProvider.js.map +1 -0
  111. package/dist/esm/infra/providers/JenkinsProvider.d.ts +16 -0
  112. package/dist/esm/infra/providers/JenkinsProvider.d.ts.map +1 -0
  113. package/dist/esm/infra/providers/JenkinsProvider.js +181 -0
  114. package/dist/esm/infra/providers/JenkinsProvider.js.map +1 -0
  115. package/dist/esm/infra/providers/OKDProvider.d.ts +24 -0
  116. package/dist/esm/infra/providers/OKDProvider.d.ts.map +1 -0
  117. package/dist/esm/infra/providers/OKDProvider.js +288 -0
  118. package/dist/esm/infra/providers/OKDProvider.js.map +1 -0
  119. package/dist/esm/infra/providers/TerraformProvider.d.ts +17 -0
  120. package/dist/esm/infra/providers/TerraformProvider.d.ts.map +1 -0
  121. package/dist/esm/infra/providers/TerraformProvider.js +105 -0
  122. package/dist/esm/infra/providers/TerraformProvider.js.map +1 -0
  123. package/dist/esm/infra/providers/index.d.ts +9 -0
  124. package/dist/esm/infra/providers/index.d.ts.map +1 -0
  125. package/dist/esm/infra/providers/index.js +27 -0
  126. package/dist/esm/infra/providers/index.js.map +1 -0
  127. package/dist/esm/infra/templates/jenkins/index.d.ts +15 -0
  128. package/dist/esm/infra/templates/jenkins/index.d.ts.map +1 -0
  129. package/dist/esm/infra/templates/jenkins/index.js +120 -0
  130. package/dist/esm/infra/templates/jenkins/index.js.map +1 -0
  131. package/dist/esm/infra/templates/okd/index.d.ts +31 -0
  132. package/dist/esm/infra/templates/okd/index.d.ts.map +1 -0
  133. package/dist/esm/infra/templates/okd/index.js +142 -0
  134. package/dist/esm/infra/templates/okd/index.js.map +1 -0
  135. package/dist/esm/infra/types.d.ts +128 -0
  136. package/dist/esm/infra/types.d.ts.map +1 -0
  137. package/dist/esm/infra/types.js +3 -0
  138. package/dist/esm/infra/types.js.map +1 -0
  139. package/dist/esm/mcp/tools.d.ts.map +1 -1
  140. package/dist/esm/mcp/tools.js +9 -1
  141. package/dist/esm/mcp/tools.js.map +1 -1
  142. package/package.json +3 -2
@@ -0,0 +1,105 @@
1
+ import { execSync } from 'child_process';
2
+ function tf(args, workDir, timeout = 30000) {
3
+ try {
4
+ return execSync(`terraform ${args}`, {
5
+ encoding: 'utf8',
6
+ timeout,
7
+ cwd: workDir,
8
+ stdio: ['pipe', 'pipe', 'pipe'],
9
+ }).trim();
10
+ }
11
+ catch (err) {
12
+ throw new Error(`terraform command failed: ${err.stderr || err.message}`);
13
+ }
14
+ }
15
+ export class TerraformProvider {
16
+ constructor() {
17
+ this.name = 'terraform';
18
+ this.type = 'terraform';
19
+ this.config = null;
20
+ }
21
+ async connect(config) {
22
+ this.config = config;
23
+ try {
24
+ const health = await this.healthCheck();
25
+ return health.status !== 'down';
26
+ }
27
+ catch {
28
+ return false;
29
+ }
30
+ }
31
+ async healthCheck() {
32
+ const start = Date.now();
33
+ try {
34
+ const version = tf('version', this.config?.workDir, 5000);
35
+ return {
36
+ status: 'healthy',
37
+ latency: Date.now() - start,
38
+ details: { version: version.split('\n')[0] },
39
+ lastChecked: new Date().toISOString(),
40
+ };
41
+ }
42
+ catch (err) {
43
+ return {
44
+ status: 'down',
45
+ latency: Date.now() - start,
46
+ details: { error: err.message },
47
+ lastChecked: new Date().toISOString(),
48
+ };
49
+ }
50
+ }
51
+ async getStatus() {
52
+ const workDir = this.config?.workDir;
53
+ const stateList = tf('state list', workDir, 10000);
54
+ const resources = stateList.split('\n').filter(Boolean);
55
+ return { resources, count: resources.length };
56
+ }
57
+ async plan() {
58
+ return tf('plan -no-color', this.config?.workDir, 60000);
59
+ }
60
+ async apply(autoApprove = false) {
61
+ const flag = autoApprove ? ' -auto-approve' : '';
62
+ return tf(`apply${flag} -no-color`, this.config?.workDir, 120000);
63
+ }
64
+ async stateList() {
65
+ const raw = tf('state list', this.config?.workDir, 10000);
66
+ return raw.split('\n').filter(Boolean);
67
+ }
68
+ async detectDrift() {
69
+ const workDir = this.config?.workDir;
70
+ const planOutput = tf('plan -detailed-exitcode -no-color', workDir, 60000);
71
+ const drifts = [];
72
+ const lines = planOutput.split('\n');
73
+ for (const line of lines) {
74
+ if (line.startsWith(' ~ ') || line.startsWith(' - ') || line.startsWith(' + ')) {
75
+ const isDestructive = line.startsWith(' - ');
76
+ drifts.push({
77
+ resource: line.replace(/^\s*[~+-]\s+/, '').split(' ')[0],
78
+ type: 'config',
79
+ expected: 'current state',
80
+ actual: line.startsWith(' ~') ? 'modified' : line.startsWith(' -') ? 'removed' : 'added',
81
+ severity: isDestructive ? 'HIGH' : 'MEDIUM',
82
+ });
83
+ }
84
+ }
85
+ return drifts;
86
+ }
87
+ async stateShow(resource) {
88
+ return tf(`state show ${resource}`, this.config?.workDir, 10000);
89
+ }
90
+ async output() {
91
+ try {
92
+ const raw = tf('output -json', this.config?.workDir, 10000);
93
+ const parsed = JSON.parse(raw);
94
+ const result = {};
95
+ for (const [k, v] of Object.entries(parsed)) {
96
+ result[k] = v.value;
97
+ }
98
+ return result;
99
+ }
100
+ catch {
101
+ return {};
102
+ }
103
+ }
104
+ }
105
+ //# sourceMappingURL=TerraformProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TerraformProvider.js","sourceRoot":"","sources":["../../../../src/infra/providers/TerraformProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { JenkinsProvider } from './JenkinsProvider';
2
+ import { OKDProvider } from './OKDProvider';
3
+ import { TerraformProvider } from './TerraformProvider';
4
+ import type { InfraProvider } from './InfraProvider';
5
+ export declare function getProvider(name: string): InfraProvider;
6
+ export declare function listProviders(): string[];
7
+ export { JenkinsProvider, OKDProvider, TerraformProvider };
8
+ export type { InfraProvider } from './InfraProvider';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/infra/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIrD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAiBvD;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { JenkinsProvider } from './JenkinsProvider';
2
+ import { OKDProvider } from './OKDProvider';
3
+ import { TerraformProvider } from './TerraformProvider';
4
+ const providers = {};
5
+ export function getProvider(name) {
6
+ if (!providers[name]) {
7
+ switch (name) {
8
+ case 'jenkins':
9
+ providers[name] = new JenkinsProvider();
10
+ break;
11
+ case 'okd':
12
+ providers[name] = new OKDProvider();
13
+ break;
14
+ case 'terraform':
15
+ providers[name] = new TerraformProvider();
16
+ break;
17
+ default:
18
+ throw new Error(`Unknown provider: ${name}. Available: jenkins, okd, terraform`);
19
+ }
20
+ }
21
+ return providers[name];
22
+ }
23
+ export function listProviders() {
24
+ return ['jenkins', 'okd', 'terraform'];
25
+ }
26
+ export { JenkinsProvider, OKDProvider, TerraformProvider };
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/infra/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,SAAS,GAAkC,EAAE,CAAC;AAEpD,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,SAAS;gBACZ,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;gBACxC,MAAM;YACR,KAAK,KAAK;gBACR,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;gBACpC,MAAM;YACR,KAAK,WAAW;gBACd,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,iBAAiB,EAAE,CAAC;gBAC1C,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,sCAAsC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AACzC,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare function jenkinsfileTemplate(cfg: {
2
+ name: string;
3
+ dockerImage?: string;
4
+ registry?: string;
5
+ namespace?: string;
6
+ buildArgs?: Record<string, string>;
7
+ envVars?: Record<string, string>;
8
+ triggers?: string[];
9
+ }): string;
10
+ export declare function multibranchTemplate(cfg: {
11
+ name: string;
12
+ repoUrl: string;
13
+ branchPattern?: string;
14
+ }): string;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/infra/templates/jenkins/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,GAAG,MAAM,CAyET;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CA6CT"}
@@ -0,0 +1,120 @@
1
+ export function jenkinsfileTemplate(cfg) {
2
+ const buildArgsYaml = cfg.buildArgs
3
+ ? Object.entries(cfg.buildArgs).map(([k, v]) => ` ${k} = '${v}'`).join('\n')
4
+ : '';
5
+ const envYaml = cfg.envVars
6
+ ? Object.entries(cfg.envVars).map(([k, v]) => ` ${k} = '${v}'`).join('\n')
7
+ : '';
8
+ const triggersYaml = cfg.triggers?.length
9
+ ? cfg.triggers.map((t) => ` ${t}`).join('\n')
10
+ : " pollSCM('H/5 * * * *')";
11
+ return `pipeline {
12
+ agent any
13
+
14
+ environment {
15
+ DOCKER_IMAGE = '${cfg.dockerImage || cfg.name}'
16
+ REGISTRY = '${cfg.registry || 'docker.io'}'
17
+ NAMESPACE = '${cfg.namespace || 'default'}'
18
+ ${buildArgsYaml ? `\n parameters {\n${buildArgsYaml}\n }\n` : ''}
19
+ ${envYaml ? `\n${envYaml}\n` : ''}
20
+ }
21
+
22
+ triggers {
23
+ ${triggersYaml}
24
+ }
25
+
26
+ stages {
27
+ stage('Checkout') {
28
+ steps {
29
+ checkout scm
30
+ }
31
+ }
32
+
33
+ stage('Build Image') {
34
+ steps {
35
+ sh "docker build -t \${REGISTRY}/\${DOCKER_IMAGE}:\${BUILD_NUMBER} ."
36
+ }
37
+ }
38
+
39
+ stage('Test') {
40
+ steps {
41
+ sh 'echo "Running tests..."'
42
+ }
43
+ }
44
+
45
+ stage('Push Image') {
46
+ steps {
47
+ withCredentials([usernamePassword(credentialsId: 'registry-creds', usernameVariable: 'USER', passwordVariable: 'PASS')]) {
48
+ sh "echo \$PASS | docker login \${REGISTRY} -u \$USER --password-stdin"
49
+ sh "docker push \${REGISTRY}/\${DOCKER_IMAGE}:\${BUILD_NUMBER}"
50
+ sh "docker tag \${REGISTRY}/\${DOCKER_IMAGE}:\${BUILD_NUMBER} \${REGISTRY}/\${DOCKER_IMAGE}:latest"
51
+ sh "docker push \${REGISTRY}/\${DOCKER_IMAGE}:latest"
52
+ }
53
+ }
54
+ }
55
+
56
+ stage('Deploy to OKD') {
57
+ steps {
58
+ sh "oc tag \${NAMESPACE}/\${DOCKER_IMAGE}:\${BUILD_NUMBER} \${NAMESPACE}/\${DOCKER_IMAGE}:latest || true"
59
+ sh "oc rollout latest dc/\${DOCKER_IMAGE} -n \${NAMESPACE}"
60
+ }
61
+ }
62
+ }
63
+
64
+ post {
65
+ success {
66
+ echo 'Build + Deploy succeeded!'
67
+ }
68
+ failure {
69
+ echo 'Build failed!'
70
+ }
71
+ }
72
+ }`;
73
+ }
74
+ export function multibranchTemplate(cfg) {
75
+ return `pipeline {
76
+ agent any
77
+
78
+ triggers {
79
+ pollSCM('H/5 * * * *')
80
+ }
81
+
82
+ stages {
83
+ stage('Detect Branch') {
84
+ steps {
85
+ script {
86
+ env.BRANCH_NAME = env.BRANCH_NAME ?: 'main'
87
+ echo "Building branch: \${env.BRANCH_NAME}"
88
+ }
89
+ }
90
+ }
91
+
92
+ stage('Checkout') {
93
+ steps {
94
+ checkout scm
95
+ }
96
+ }
97
+
98
+ stage('Build') {
99
+ steps {
100
+ sh "docker build -t ${cfg.name}:\${env.BRANCH_NAME}-\${BUILD_NUMBER} ."
101
+ }
102
+ }
103
+
104
+ stage('Test') {
105
+ steps {
106
+ sh 'echo "Running tests for \${env.BRANCH_NAME}"'
107
+ }
108
+ }
109
+
110
+ stage('Deploy') {
111
+ when { branch 'main' }
112
+ steps {
113
+ sh "oc tag ${cfg.name}:latest ${cfg.name}:\${BUILD_NUMBER} || true"
114
+ sh "oc rollout latest dc/${cfg.name}"
115
+ }
116
+ }
117
+ }
118
+ }`;
119
+ }
120
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/infra/templates/jenkins/index.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,GAQnC;IACC,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS;QACjC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/E,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO;QACzB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7E,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,MAAM;QACvC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAChD,CAAC,CAAC,4BAA4B,CAAC;IAEjC,OAAO;;;;sBAIa,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI;kBAC/B,GAAG,CAAC,QAAQ,IAAI,WAAW;mBAC1B,GAAG,CAAC,SAAS,IAAI,SAAS;EAC3C,aAAa,CAAC,CAAC,CAAC,qBAAqB,aAAa,SAAS,CAAC,CAAC,CAAC,EAAE;EAChE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE;;;;EAI/B,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAInC;IACC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;8BAyBqB,GAAG,CAAC,IAAI;;;;;;;;;;;;;qBAajB,GAAG,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI;mCACb,GAAG,CAAC,IAAI;;;;EAIzC,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ export declare function deploymentConfigTemplate(cfg: {
2
+ name: string;
3
+ image: string;
4
+ port: number;
5
+ replicas: number;
6
+ ns: string;
7
+ registry: string;
8
+ envVars?: Record<string, string>;
9
+ }): string;
10
+ export declare function buildConfigTemplate(cfg: {
11
+ name: string;
12
+ ns: string;
13
+ }): string;
14
+ export declare function imageStreamTemplate(cfg: {
15
+ name: string;
16
+ ns: string;
17
+ registry: string;
18
+ }): string;
19
+ export declare function routeTemplate(cfg: {
20
+ name: string;
21
+ ns: string;
22
+ hostname: string;
23
+ tls: boolean;
24
+ port: number;
25
+ }): string;
26
+ export declare function serviceTemplate(cfg: {
27
+ name: string;
28
+ ns: string;
29
+ port: number;
30
+ }): string;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/infra/templates/okd/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CAAC,GAAG,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,GAAG,MAAM,CA2DT;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CA0B7E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAkB/F;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAmBrH;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAevF"}
@@ -0,0 +1,142 @@
1
+ export function deploymentConfigTemplate(cfg) {
2
+ const envYaml = cfg.envVars
3
+ ? Object.entries(cfg.envVars)
4
+ .map(([k, v]) => ` - name: ${k}\n value: "${v}"`)
5
+ .join('\n')
6
+ : '';
7
+ return `apiVersion: apps.openshift.io/v1
8
+ kind: DeploymentConfig
9
+ metadata:
10
+ name: ${cfg.name}
11
+ namespace: ${cfg.ns}
12
+ labels:
13
+ app: ${cfg.name}
14
+ spec:
15
+ replicas: ${cfg.replicas}
16
+ selector:
17
+ app: ${cfg.name}
18
+ template:
19
+ metadata:
20
+ labels:
21
+ app: ${cfg.name}
22
+ spec:
23
+ containers:
24
+ - name: ${cfg.name}
25
+ image: ${cfg.registry}/${cfg.ns}/${cfg.image}
26
+ ports:
27
+ - containerPort: ${cfg.port}
28
+ protocol: TCP
29
+ resources:
30
+ requests:
31
+ cpu: 100m
32
+ memory: 128Mi
33
+ limits:
34
+ cpu: 500m
35
+ memory: 512Mi
36
+ ${envYaml ? ` env:\n${envYaml}` : ''}
37
+ readinessProbe:
38
+ httpGet:
39
+ path: /health
40
+ port: ${cfg.port}
41
+ initialDelaySeconds: 5
42
+ periodSeconds: 10
43
+ livenessProbe:
44
+ httpGet:
45
+ path: /health
46
+ port: ${cfg.port}
47
+ initialDelaySeconds: 15
48
+ periodSeconds: 20
49
+ triggers:
50
+ - type: ConfigChange
51
+ - type: ImageChange
52
+ imageChangeParams:
53
+ automatic: true
54
+ containerNames:
55
+ - ${cfg.name}
56
+ from:
57
+ kind: ImageStreamTag
58
+ name: ${cfg.name}:latest`;
59
+ }
60
+ export function buildConfigTemplate(cfg) {
61
+ return `apiVersion: build.openshift.io/v1
62
+ kind: BuildConfig
63
+ metadata:
64
+ name: ${cfg.name}
65
+ namespace: ${cfg.ns}
66
+ labels:
67
+ app: ${cfg.name}
68
+ spec:
69
+ source:
70
+ type: Git
71
+ git:
72
+ uri: ""
73
+ strategy:
74
+ type: Docker
75
+ dockerStrategy:
76
+ dockerfilePath: Dockerfile
77
+ output:
78
+ to:
79
+ kind: ImageStreamTag
80
+ name: ${cfg.name}:latest
81
+ triggers:
82
+ - type: GitHub
83
+ github:
84
+ secret: ""
85
+ - type: ConfigChange`;
86
+ }
87
+ export function imageStreamTemplate(cfg) {
88
+ return `apiVersion: image.openshift.io/v1
89
+ kind: ImageStream
90
+ metadata:
91
+ name: ${cfg.name}
92
+ namespace: ${cfg.ns}
93
+ labels:
94
+ app: ${cfg.name}
95
+ spec:
96
+ lookupPolicy:
97
+ local: false
98
+ tags:
99
+ - name: latest
100
+ from:
101
+ kind: DockerImage
102
+ name: ${cfg.registry}/${cfg.ns}/${cfg.name}:latest
103
+ importPolicy:
104
+ scheduled: true`;
105
+ }
106
+ export function routeTemplate(cfg) {
107
+ return `apiVersion: route.openshift.io/v1
108
+ kind: Route
109
+ metadata:
110
+ name: ${cfg.name}
111
+ namespace: ${cfg.ns}
112
+ labels:
113
+ app: ${cfg.name}
114
+ spec:
115
+ host: ${cfg.hostname}
116
+ to:
117
+ kind: Service
118
+ name: ${cfg.name}
119
+ weight: 100
120
+ port:
121
+ targetPort: ${cfg.port}
122
+ tls:
123
+ termination: ${cfg.tls ? 'edge' : 'passthrough'}
124
+ insecureEdgeTerminationPolicy: Redirect`;
125
+ }
126
+ export function serviceTemplate(cfg) {
127
+ return `apiVersion: v1
128
+ kind: Service
129
+ metadata:
130
+ name: ${cfg.name}
131
+ namespace: ${cfg.ns}
132
+ labels:
133
+ app: ${cfg.name}
134
+ spec:
135
+ ports:
136
+ - port: ${cfg.port}
137
+ targetPort: ${cfg.port}
138
+ protocol: TCP
139
+ selector:
140
+ app: ${cfg.name}`;
141
+ }
142
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/infra/templates/okd/index.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,wBAAwB,CAAC,GAQxC;IACC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO;QACzB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;aACxB,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,GAAG,CAAC;aACpE,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;UAGC,GAAG,CAAC,IAAI;eACH,GAAG,CAAC,EAAE;;WAEV,GAAG,CAAC,IAAI;;cAEL,GAAG,CAAC,QAAQ;;WAEf,GAAG,CAAC,IAAI;;;;eAIJ,GAAG,CAAC,IAAI;;;kBAGL,GAAG,CAAC,IAAI;mBACP,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK;;+BAEvB,GAAG,CAAC,IAAI;;;;;;;;;EASrC,OAAO,CAAC,CAAC,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;;;;sBAIvB,GAAG,CAAC,IAAI;;;;;;sBAMR,GAAG,CAAC,IAAI;;;;;;;;;cAShB,GAAG,CAAC,IAAI;;;kBAGJ,GAAG,CAAC,IAAI,SAAS,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAiC;IACnE,OAAO;;;UAGC,GAAG,CAAC,IAAI;eACH,GAAG,CAAC,EAAE;;WAEV,GAAG,CAAC,IAAI;;;;;;;;;;;;;cAaL,GAAG,CAAC,IAAI;;;;;yBAKG,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAmD;IACrF,OAAO;;;UAGC,GAAG,CAAC,IAAI;eACH,GAAG,CAAC,EAAE;;WAEV,GAAG,CAAC,IAAI;;;;;;;;gBAQH,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI;;wBAE1B,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAA+E;IAC3G,OAAO;;;UAGC,GAAG,CAAC,IAAI;eACH,GAAG,CAAC,EAAE;;WAEV,GAAG,CAAC,IAAI;;UAET,GAAG,CAAC,QAAQ;;;YAGV,GAAG,CAAC,IAAI;;;kBAGF,GAAG,CAAC,IAAI;;mBAEP,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa;4CACP,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAA+C;IAC7E,OAAO;;;UAGC,GAAG,CAAC,IAAI;eACH,GAAG,CAAC,EAAE;;WAEV,GAAG,CAAC,IAAI;;;cAGL,GAAG,CAAC,IAAI;oBACF,GAAG,CAAC,IAAI;;;WAGjB,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,128 @@
1
+ export type InfraProviderType = 'jenkins' | 'okd' | 'terraform';
2
+ export interface HealthStatus {
3
+ status: 'healthy' | 'degraded' | 'down';
4
+ latency: number;
5
+ details: Record<string, any>;
6
+ lastChecked: string;
7
+ }
8
+ export interface InfraStatus {
9
+ providers: Record<string, HealthStatus>;
10
+ lastDiscovery: string;
11
+ }
12
+ export interface JenkinsConfig {
13
+ url: string;
14
+ username?: string;
15
+ apiToken?: string;
16
+ credentialsId?: string;
17
+ folder?: string;
18
+ }
19
+ export interface OKDConfig {
20
+ server: string;
21
+ project: string;
22
+ imageRegistry?: string;
23
+ token?: string;
24
+ route?: {
25
+ tls: boolean;
26
+ hostname: string;
27
+ };
28
+ }
29
+ export interface TerraformConfig {
30
+ backend: string;
31
+ bucket?: string;
32
+ key?: string;
33
+ region?: string;
34
+ workDir?: string;
35
+ }
36
+ export interface InfraConfig {
37
+ jenkins?: JenkinsConfig;
38
+ okd?: OKDConfig;
39
+ terraform?: TerraformConfig;
40
+ deploy: {
41
+ autoApprove: boolean;
42
+ confirmationPrompt: boolean;
43
+ notifyOnSuccess: boolean;
44
+ };
45
+ }
46
+ export interface DeployResult {
47
+ provider: string;
48
+ success: boolean;
49
+ url?: string;
50
+ artifacts: string[];
51
+ logs: string[];
52
+ nextSteps: string[];
53
+ tokenEstimate: number;
54
+ }
55
+ export interface PipelineConfig {
56
+ name: string;
57
+ branch: string;
58
+ dockerImage?: string;
59
+ registry?: string;
60
+ namespace?: string;
61
+ buildArgs?: Record<string, string>;
62
+ envVars?: Record<string, string>;
63
+ triggers?: string[];
64
+ }
65
+ export interface OKDManifests {
66
+ deploymentConfig: string;
67
+ buildConfig: string;
68
+ imageStream: string;
69
+ route: string;
70
+ service: string;
71
+ }
72
+ export type FindingSeverity = 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
73
+ export type FindingCategory = 'security' | 'reliability' | 'cost' | 'performance' | 'compliance';
74
+ export interface InfraFinding {
75
+ ruleId: string;
76
+ severity: FindingSeverity;
77
+ category: FindingCategory;
78
+ resource: string;
79
+ message: string;
80
+ suggestion: string;
81
+ autoFixAvailable: boolean;
82
+ }
83
+ export interface InfraAnalysisResult {
84
+ findings: InfraFinding[];
85
+ score: number;
86
+ provider: string;
87
+ summary: string;
88
+ }
89
+ export interface DriftResult {
90
+ resource: string;
91
+ type: 'config' | 'state' | 'permission';
92
+ expected: string;
93
+ actual: string;
94
+ severity: FindingSeverity;
95
+ }
96
+ export interface MonolithAnalysis {
97
+ modules: ModuleInfo[];
98
+ couplingScore: number;
99
+ suggestedSplits: SuggestedSplit[];
100
+ migrationPlan: MigrationStep[];
101
+ }
102
+ export interface ModuleInfo {
103
+ name: string;
104
+ files: number;
105
+ dependencies: string[];
106
+ entryPoints: string[];
107
+ complexity: number;
108
+ }
109
+ export interface SuggestedSplit {
110
+ name: string;
111
+ includes: string[];
112
+ rationale: string;
113
+ estimatedEffort: 'low' | 'medium' | 'high';
114
+ }
115
+ export interface MigrationStep {
116
+ order: number;
117
+ action: string;
118
+ detail: string;
119
+ risk: FindingSeverity;
120
+ }
121
+ export interface InfraCLIOptions {
122
+ provider?: string;
123
+ project?: string;
124
+ dryRun?: boolean;
125
+ verbose?: boolean;
126
+ json?: boolean;
127
+ }
128
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/infra/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC;CACvB;AAID,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,OAAO,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,MAAM,EAAE;QACN,WAAW,EAAE,OAAO,CAAC;QACrB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,eAAe,EAAE,OAAO,CAAC;KAC1B,CAAC;CACH;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC;AAEjG,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,aAAa,EAAE,aAAa,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;CACvB;AAID,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB"}
@@ -0,0 +1,3 @@
1
+ // ── Infrastructure Command Center Types ────────────────────────────────────────
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/infra/types.ts"],"names":[],"mappings":"AAAA,kFAAkF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAkgCnE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAC1C,IAAI,CA2DN"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA2gCnE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAC1C,IAAI,CA2DN"}