@vfarcic/dot-ai 0.139.0 → 0.142.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 (72) hide show
  1. package/dist/core/capability-scan-workflow.d.ts.map +1 -1
  2. package/dist/core/capability-scan-workflow.js +3 -2
  3. package/dist/core/command-executor.d.ts +39 -0
  4. package/dist/core/command-executor.d.ts.map +1 -0
  5. package/dist/core/command-executor.js +111 -0
  6. package/dist/core/crd-availability.d.ts +16 -0
  7. package/dist/core/crd-availability.d.ts.map +1 -0
  8. package/dist/core/crd-availability.js +108 -0
  9. package/dist/core/deploy-operation.d.ts.map +1 -1
  10. package/dist/core/deploy-operation.js +5 -7
  11. package/dist/core/pattern-vector-service.d.ts +1 -1
  12. package/dist/core/pattern-vector-service.d.ts.map +1 -1
  13. package/dist/core/pattern-vector-service.js +2 -2
  14. package/dist/core/schema.d.ts +2 -9
  15. package/dist/core/schema.d.ts.map +1 -1
  16. package/dist/core/schema.js +2 -3
  17. package/dist/core/solution-cr.d.ts +21 -0
  18. package/dist/core/solution-cr.d.ts.map +1 -0
  19. package/dist/core/solution-cr.js +112 -0
  20. package/dist/core/solution-utils.d.ts +0 -6
  21. package/dist/core/solution-utils.d.ts.map +1 -1
  22. package/dist/core/solution-utils.js +0 -26
  23. package/dist/core/unified-creation-session.d.ts.map +1 -1
  24. package/dist/core/unified-creation-session.js +21 -4
  25. package/dist/core/vector-db-service.d.ts.map +1 -1
  26. package/dist/core/vector-db-service.js +5 -0
  27. package/dist/interfaces/mcp.d.ts.map +1 -1
  28. package/dist/interfaces/mcp.js +9 -1
  29. package/dist/interfaces/rest-registry.d.ts.map +1 -1
  30. package/dist/interfaces/rest-registry.js +1 -0
  31. package/dist/tools/answer-question.d.ts +6 -1
  32. package/dist/tools/answer-question.d.ts.map +1 -1
  33. package/dist/tools/answer-question.js +28 -143
  34. package/dist/tools/choose-solution.d.ts.map +1 -1
  35. package/dist/tools/choose-solution.js +22 -85
  36. package/dist/tools/deploy-manifests.js +1 -1
  37. package/dist/tools/generate-manifests.d.ts.map +1 -1
  38. package/dist/tools/generate-manifests.js +65 -124
  39. package/dist/tools/operate-analysis.d.ts +15 -0
  40. package/dist/tools/operate-analysis.d.ts.map +1 -0
  41. package/dist/tools/operate-analysis.js +232 -0
  42. package/dist/tools/operate-execution.d.ts +18 -0
  43. package/dist/tools/operate-execution.d.ts.map +1 -0
  44. package/dist/tools/operate-execution.js +122 -0
  45. package/dist/tools/operate.d.ts +133 -0
  46. package/dist/tools/operate.d.ts.map +1 -0
  47. package/dist/tools/operate.js +237 -0
  48. package/dist/tools/organizational-data.d.ts +17 -11
  49. package/dist/tools/organizational-data.d.ts.map +1 -1
  50. package/dist/tools/project-setup.d.ts +7 -3
  51. package/dist/tools/project-setup.d.ts.map +1 -1
  52. package/dist/tools/project-setup.js +1 -1
  53. package/dist/tools/recommend.d.ts +24 -0
  54. package/dist/tools/recommend.d.ts.map +1 -1
  55. package/dist/tools/recommend.js +28 -126
  56. package/dist/tools/remediate.d.ts +17 -7
  57. package/dist/tools/remediate.d.ts.map +1 -1
  58. package/dist/tools/remediate.js +38 -81
  59. package/dist/tools/version.js +1 -1
  60. package/package.json +1 -1
  61. package/prompts/operate-system.md +323 -0
  62. package/prompts/operate-user.md +25 -0
  63. package/prompts/question-generation.md +8 -1
  64. package/prompts/remediate-system.md +10 -1
  65. package/prompts/resource-selection.md +7 -9
  66. package/scripts/crossplane.nu +1 -1
  67. package/scripts/dot-ai.nu +14 -2
  68. package/shared-prompts/prd-close.md +7 -1
  69. package/shared-prompts/deploy.md +0 -23
  70. package/shared-prompts/manage-org-data.md +0 -42
  71. package/shared-prompts/remediate.md +0 -44
  72. package/shared-prompts/status.md +0 -19
@@ -1 +1 @@
1
- {"version":3,"file":"capability-scan-workflow.d.ts","sourceRoot":"","sources":["../../src/core/capability-scan-workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAMtE,MAAM,MAAM,6BAA6B,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AACzL,MAAM,MAAM,0BAA0B,GAAG,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;AAChI,MAAM,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;AAC1F,MAAM,MAAM,wCAAwC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,GAAG,CAAC;AAoBlN,UAAU,qBAAqB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,oBAAoB,GAAG,wBAAwB,GAAG,UAAU,GAAG,UAAU,CAAC;IACvF,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3F;AAsBD;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,uBAAuB,EAC1C,oBAAoB,EAAE,sBAAsB,EAC5C,2BAA2B,EAAE,6BAA6B,EAC1D,wBAAwB,EAAE,0BAA0B,EACpD,sCAAsC,EAAE,wCAAwC,EAChF,gBAAgB,EAAE,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,sCAAsC,EAAE,wCAAwC,KAAK,OAAO,CAAC,GAAG,CAAC,GAC7Y,OAAO,CAAC,GAAG,CAAC,CA4Hd;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,uBAAuB,EAC1C,oBAAoB,EAAE,sBAAsB,EAC5C,2BAA2B,EAAE,6BAA6B,EAC1D,wBAAwB,EAAE,0BAA0B,EACpD,sCAAsC,EAAE,wCAAwC,EAChF,gBAAgB,EAAE,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,sCAAsC,EAAE,wCAAwC,KAAK,OAAO,CAAC,GAAG,CAAC,GAC7Y,OAAO,CAAC,GAAG,CAAC,CAuCd;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,uBAAuB,EAC1C,oBAAoB,EAAE,sBAAsB,EAC5C,2BAA2B,EAAE,6BAA6B,EAC1D,wBAAwB,EAAE,0BAA0B,EACpD,sCAAsC,EAAE,wCAAwC,GAC/E,OAAO,CAAC,GAAG,CAAC,CAmad"}
1
+ {"version":3,"file":"capability-scan-workflow.d.ts","sourceRoot":"","sources":["../../src/core/capability-scan-workflow.ts"],"names":[],"mappings":"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"}
@@ -455,8 +455,9 @@ async function handleScanning(session, args, logger, requestId, capabilityServic
455
455
  const lines = currentResourceDefinition.split('\n');
456
456
  const groupLine = lines.find((line) => line.startsWith('GROUP:'));
457
457
  const versionLine = lines.find((line) => line.startsWith('VERSION:'));
458
- if (groupLine && versionLine) {
459
- const group = groupLine.replace('GROUP:', '').trim();
458
+ // Extract metadata if version is found (group is optional for core resources)
459
+ if (versionLine) {
460
+ const group = groupLine ? groupLine.replace('GROUP:', '').trim() : '';
460
461
  const version = versionLine.replace('VERSION:', '').trim();
461
462
  const apiVersion = group ? `${group}/${version}` : version;
462
463
  metadata = { apiVersion, version, group };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Shared Command Executor
3
+ *
4
+ * Provides common command execution logic for tools (remediate, operate, etc.)
5
+ * Uses continue-on-error pattern: executes all commands sequentially regardless
6
+ * of individual failures.
7
+ */
8
+ import { Logger } from './error-handling';
9
+ /**
10
+ * Execution result for a single command
11
+ */
12
+ export interface CommandExecutionResult {
13
+ command: string;
14
+ success: boolean;
15
+ output?: string;
16
+ error?: string;
17
+ timestamp: Date;
18
+ }
19
+ /**
20
+ * Options for command execution
21
+ */
22
+ export interface CommandExecutionOptions {
23
+ sessionId?: string;
24
+ context?: string;
25
+ logMetadata?: Record<string, any>;
26
+ }
27
+ /**
28
+ * Execute a list of commands sequentially with continue-on-error pattern
29
+ *
30
+ * @param commands - Array of command strings to execute
31
+ * @param logger - Logger instance for tracking execution
32
+ * @param options - Optional execution context and metadata
33
+ * @returns Array of execution results and overall success status
34
+ */
35
+ export declare function executeCommands(commands: string[], logger: Logger, options?: CommandExecutionOptions): Promise<{
36
+ results: CommandExecutionResult[];
37
+ overallSuccess: boolean;
38
+ }>;
39
+ //# sourceMappingURL=command-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-executor.d.ts","sourceRoot":"","sources":["../../src/core/command-executor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC;IAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CAAC,CAwEzE"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /**
3
+ * Shared Command Executor
4
+ *
5
+ * Provides common command execution logic for tools (remediate, operate, etc.)
6
+ * Uses continue-on-error pattern: executes all commands sequentially regardless
7
+ * of individual failures.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.executeCommands = executeCommands;
44
+ /**
45
+ * Execute a list of commands sequentially with continue-on-error pattern
46
+ *
47
+ * @param commands - Array of command strings to execute
48
+ * @param logger - Logger instance for tracking execution
49
+ * @param options - Optional execution context and metadata
50
+ * @returns Array of execution results and overall success status
51
+ */
52
+ async function executeCommands(commands, logger, options = {}) {
53
+ const results = [];
54
+ let overallSuccess = true;
55
+ const { sessionId, context = 'command execution', logMetadata = {} } = options;
56
+ logger.info(`Starting ${context}`, {
57
+ ...logMetadata,
58
+ sessionId,
59
+ commandCount: commands.length
60
+ });
61
+ // Execute each command sequentially
62
+ for (let i = 0; i < commands.length; i++) {
63
+ const command = commands[i];
64
+ const commandNum = i + 1;
65
+ try {
66
+ logger.info(`Executing command ${commandNum}/${commands.length}`, {
67
+ ...logMetadata,
68
+ sessionId,
69
+ command
70
+ });
71
+ // Clean up escape sequences that AI models sometimes add
72
+ const cleanCommand = command.replace(/\\"/g, '"');
73
+ // Execute command using shared utility
74
+ const { execAsync } = await Promise.resolve().then(() => __importStar(require('./platform-utils.js')));
75
+ const { stdout } = await execAsync(cleanCommand);
76
+ results.push({
77
+ command,
78
+ success: true,
79
+ output: stdout?.trim() || '',
80
+ timestamp: new Date()
81
+ });
82
+ logger.info(`Command ${commandNum} succeeded`, {
83
+ ...logMetadata,
84
+ sessionId
85
+ });
86
+ }
87
+ catch (error) {
88
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
89
+ overallSuccess = false;
90
+ results.push({
91
+ command,
92
+ success: false,
93
+ error: errorMessage,
94
+ timestamp: new Date()
95
+ });
96
+ logger.error(`Command ${commandNum} failed`, error, {
97
+ ...logMetadata,
98
+ sessionId,
99
+ command
100
+ });
101
+ // Continue to next command (continue-on-error pattern)
102
+ }
103
+ }
104
+ logger.info(`${context} completed`, {
105
+ ...logMetadata,
106
+ sessionId,
107
+ successCount: results.filter(r => r.success).length,
108
+ failureCount: results.filter(r => !r.success).length
109
+ });
110
+ return { results, overallSuccess };
111
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * CRD Availability Check with Global Caching
3
+ *
4
+ * Checks once per MCP server lifecycle if Solution CRD is available,
5
+ * then caches the result globally to avoid repeated cluster queries.
6
+ */
7
+ /**
8
+ * Helper function for checking CRD availability
9
+ * Use this function throughout the codebase
10
+ */
11
+ export declare function isSolutionCRDAvailable(): Promise<boolean>;
12
+ /**
13
+ * Reset CRD availability cache (primarily for testing)
14
+ */
15
+ export declare function resetCRDAvailabilityCache(): void;
16
+ //# sourceMappingURL=crd-availability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crd-availability.d.ts","sourceRoot":"","sources":["../../src/core/crd-availability.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4DH;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG/D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ /**
3
+ * CRD Availability Check with Global Caching
4
+ *
5
+ * Checks once per MCP server lifecycle if Solution CRD is available,
6
+ * then caches the result globally to avoid repeated cluster queries.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.isSolutionCRDAvailable = isSolutionCRDAvailable;
43
+ exports.resetCRDAvailabilityCache = resetCRDAvailabilityCache;
44
+ const k8s = __importStar(require("@kubernetes/client-node"));
45
+ /**
46
+ * Singleton cache for CRD availability check
47
+ * Checks once per MCP server lifecycle, caches result globally
48
+ */
49
+ class CRDAvailabilityCache {
50
+ static instance;
51
+ crdAvailable = null;
52
+ constructor() { }
53
+ static getInstance() {
54
+ if (!CRDAvailabilityCache.instance) {
55
+ CRDAvailabilityCache.instance = new CRDAvailabilityCache();
56
+ }
57
+ return CRDAvailabilityCache.instance;
58
+ }
59
+ async isSolutionCRDAvailable() {
60
+ // Return cached result if available
61
+ if (this.crdAvailable !== null) {
62
+ return this.crdAvailable;
63
+ }
64
+ // Check cluster for Solution CRD
65
+ try {
66
+ const kc = new k8s.KubeConfig();
67
+ kc.loadFromDefault();
68
+ const k8sApi = kc.makeApiClient(k8s.ApiextensionsV1Api);
69
+ const crdName = 'solutions.dot-ai.devopstoolkit.live';
70
+ await k8sApi.readCustomResourceDefinition({ name: crdName });
71
+ // CRD exists, cache result
72
+ this.crdAvailable = true;
73
+ console.log('✅ Solution CRD available - Solution CR generation enabled');
74
+ return true;
75
+ }
76
+ catch (error) {
77
+ if (error.statusCode === 404 || error.response?.statusCode === 404) {
78
+ // CRD not found, cache result
79
+ this.crdAvailable = false;
80
+ console.log('ℹ️ Solution CRD not available - Solution CR generation disabled (graceful degradation)');
81
+ return false;
82
+ }
83
+ // Other errors (cluster unreachable, etc.) - don't cache, throw
84
+ throw new Error(`Failed to check Solution CRD availability: ${error.message || error}`);
85
+ }
86
+ }
87
+ /**
88
+ * Reset cache (for testing or manual refresh)
89
+ */
90
+ reset() {
91
+ this.crdAvailable = null;
92
+ }
93
+ }
94
+ /**
95
+ * Helper function for checking CRD availability
96
+ * Use this function throughout the codebase
97
+ */
98
+ async function isSolutionCRDAvailable() {
99
+ const cache = CRDAvailabilityCache.getInstance();
100
+ return cache.isSolutionCRDAvailable();
101
+ }
102
+ /**
103
+ * Reset CRD availability cache (primarily for testing)
104
+ */
105
+ function resetCRDAvailabilityCache() {
106
+ const cache = CRDAvailabilityCache.getInstance();
107
+ cache.reset();
108
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-operation.d.ts","sourceRoot":"","sources":["../../src/core/deploy-operation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,UAAU,CAAC,EAAE,MAAM;IAM/B;;OAEG;IACU,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAiClE;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;YACW,oBAAoB;IAQlC;;OAEG;YACW,cAAc;CA8B7B"}
1
+ {"version":3,"file":"deploy-operation.d.ts","sourceRoot":"","sources":["../../src/core/deploy-operation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,UAAU,CAAC,EAAE,MAAM;IAM/B;;OAEG;IACU,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAiClE;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;YACW,oBAAoB;IAQlC;;OAEG;YACW,cAAc;CA8B7B"}
@@ -47,11 +47,9 @@ class DeployOperation {
47
47
  * Get the manifest file path for the solution
48
48
  */
49
49
  getManifestPath(options) {
50
- const sessionDir = options.sessionDir || process.env.DOT_AI_SESSION_DIR;
51
- if (!sessionDir) {
52
- throw new Error('Session directory not configured. Set DOT_AI_SESSION_DIR environment variable or provide sessionDir parameter.');
53
- }
54
- return (0, path_1.join)(sessionDir, `${options.solutionId}.yaml`);
50
+ // Use sessionDir if provided, otherwise use tmp directory (for recommend tool compatibility)
51
+ const tmpDir = options.sessionDir || (0, path_1.join)(process.cwd(), 'tmp');
52
+ return (0, path_1.join)(tmpDir, `${options.solutionId}.yaml`);
55
53
  }
56
54
  /**
57
55
  * Verify that the manifest file exists
@@ -87,9 +85,9 @@ class DeployOperation {
87
85
  waitOutput = `\n\nWait output:\n${waitResult}`;
88
86
  }
89
87
  catch (waitError) {
90
- // If no deployments found or wait fails, that's OK for ConfigMaps, Services, etc.
88
+ // If no deployments found or wait fails, that's OK for other resource types (Services, etc.)
91
89
  if (waitError.message && waitError.message.includes('no matching resources found')) {
92
- waitOutput = '\n\nWait output: No deployments found to wait for (likely ConfigMaps, Services, etc.)';
90
+ waitOutput = '\n\nWait output: No deployments found to wait for (likely Services, CRs, etc.)';
93
91
  }
94
92
  else {
95
93
  waitOutput = `\n\nWait output: Warning - ${waitError.message}`;
@@ -13,7 +13,7 @@ export interface PatternSearchOptions extends BaseSearchOptions {
13
13
  export interface PatternSearchResult extends BaseSearchResult<OrganizationalPattern> {
14
14
  }
15
15
  export declare class PatternVectorService extends BaseVectorService<OrganizationalPattern> {
16
- constructor(vectorDB?: VectorDBService, embeddingService?: EmbeddingService);
16
+ constructor(collectionName?: string, vectorDB?: VectorDBService, embeddingService?: EmbeddingService);
17
17
  protected createSearchText(pattern: OrganizationalPattern): string;
18
18
  protected extractId(pattern: OrganizationalPattern): string;
19
19
  protected createPayload(pattern: OrganizationalPattern): Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"pattern-vector-service.d.ts","sourceRoot":"","sources":["../../src/core/pattern-vector-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE/F,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;CAAG;AAClE,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,CAAC,qBAAqB,CAAC;CAAG;AAEvF,qBAAa,oBAAqB,SAAQ,iBAAiB,CAAC,qBAAqB,CAAC;gBACpE,QAAQ,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAAE,gBAAgB;IAK3E,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IAOlE,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IAI3D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAW5E,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,qBAAqB;IAatE,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAIjG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAI7D,cAAc,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAIlD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;CAG1C"}
1
+ {"version":3,"file":"pattern-vector-service.d.ts","sourceRoot":"","sources":["../../src/core/pattern-vector-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE/F,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;CAAG;AAClE,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,CAAC,qBAAqB,CAAC;CAAG;AAEvF,qBAAa,oBAAqB,SAAQ,iBAAiB,CAAC,qBAAqB,CAAC;gBACpE,cAAc,GAAE,MAAmB,EAAE,QAAQ,CAAC,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAAE,gBAAgB;IAKhH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IAOlE,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM;IAI3D,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAW5E,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,qBAAqB;IAatE,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAIjG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAI7D,cAAc,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAIlD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;CAG1C"}
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.PatternVectorService = void 0;
10
10
  const base_vector_service_1 = require("./base-vector-service");
11
11
  class PatternVectorService extends base_vector_service_1.BaseVectorService {
12
- constructor(vectorDB, embeddingService) {
13
- super('patterns', vectorDB, embeddingService);
12
+ constructor(collectionName = 'patterns', vectorDB, embeddingService) {
13
+ super(collectionName, vectorDB, embeddingService);
14
14
  }
15
15
  // Implement abstract methods from BaseVectorService
16
16
  createSearchText(pattern) {
@@ -79,13 +79,7 @@ export interface QuestionGroup {
79
79
  placeholder: string;
80
80
  answer?: string;
81
81
  };
82
- }
83
- export interface PatternInfluence {
84
- patternId: string;
85
- description: string;
86
- influence: 'high' | 'medium' | 'low';
87
- matchedTriggers: string[];
88
- matchedConcept?: string;
82
+ relevantPolicies?: string[];
89
83
  }
90
84
  export interface ResourceSolution {
91
85
  type: 'single' | 'combination';
@@ -95,8 +89,7 @@ export interface ResourceSolution {
95
89
  reasons: string[];
96
90
  analysis: string;
97
91
  questions: QuestionGroup;
98
- patternInfluences?: PatternInfluence[];
99
- usedPatterns?: boolean;
92
+ appliedPatterns?: string[];
100
93
  }
101
94
  export interface ClusterOptions {
102
95
  namespaces: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
@@ -292,7 +292,7 @@ class ResourceRecommender {
292
292
  // Initialize pattern service only if Vector DB is available
293
293
  try {
294
294
  const vectorDB = new vector_db_service_1.VectorDBService({ collectionName: 'patterns' });
295
- this.patternService = new pattern_vector_service_1.PatternVectorService(vectorDB);
295
+ this.patternService = new pattern_vector_service_1.PatternVectorService('patterns', vectorDB);
296
296
  console.log('✅ Pattern service initialized with Vector DB');
297
297
  }
298
298
  catch (error) {
@@ -412,8 +412,7 @@ class ResourceRecommender {
412
412
  reasons: solution.reasons || [],
413
413
  analysis: solution.analysis || '',
414
414
  questions: { required: [], basic: [], advanced: [], open: { question: '', placeholder: '' } },
415
- patternInfluences: solution.patternInfluences || [],
416
- usedPatterns: solution.usedPatterns || false
415
+ appliedPatterns: solution.appliedPatterns || []
417
416
  };
418
417
  });
419
418
  // Sort by score descending
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Solution Custom Resource Generation
3
+ *
4
+ * Generates Solution CR manifests from session data for tracking deployments
5
+ */
6
+ import type { SolutionData } from '../tools/recommend';
7
+ export interface SolutionCROptions {
8
+ solutionId: string;
9
+ namespace: string;
10
+ solution: SolutionData;
11
+ generatedManifestsYaml: string;
12
+ }
13
+ /**
14
+ * Generate a Solution Custom Resource from solution session data
15
+ * Parses generated manifests to extract actual resource references
16
+ *
17
+ * @param options Configuration containing solution data and generated manifests
18
+ * @returns Solution CR as YAML string
19
+ */
20
+ export declare function generateSolutionCR(options: SolutionCROptions): string;
21
+ //# sourceMappingURL=solution-cr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solution-cr.d.ts","sourceRoot":"","sources":["../../src/core/solution-cr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA2CrE"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ /**
3
+ * Solution Custom Resource Generation
4
+ *
5
+ * Generates Solution CR manifests from session data for tracking deployments
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.generateSolutionCR = generateSolutionCR;
42
+ const yaml = __importStar(require("js-yaml"));
43
+ /**
44
+ * Generate a Solution Custom Resource from solution session data
45
+ * Parses generated manifests to extract actual resource references
46
+ *
47
+ * @param options Configuration containing solution data and generated manifests
48
+ * @returns Solution CR as YAML string
49
+ */
50
+ function generateSolutionCR(options) {
51
+ const { solutionId, namespace, solution, generatedManifestsYaml } = options;
52
+ // Parse generated manifests to extract actual resource references
53
+ const resourceReferences = extractResourceReferences(generatedManifestsYaml, namespace);
54
+ // Build rationale from solution description, reasons, and analysis
55
+ const rationale = [
56
+ solution.description,
57
+ ...solution.reasons,
58
+ solution.analysis
59
+ ].filter(Boolean).join('\n\n');
60
+ // Get patterns and policies from session
61
+ const patterns = solution.appliedPatterns || [];
62
+ const policies = solution.questions?.relevantPolicies || [];
63
+ // Create Solution CR object
64
+ const solutionCR = {
65
+ apiVersion: 'dot-ai.devopstoolkit.live/v1alpha1',
66
+ kind: 'Solution',
67
+ metadata: {
68
+ name: `solution-${solutionId}`,
69
+ namespace: namespace,
70
+ labels: {
71
+ 'dot-ai.devopstoolkit.live/created-by': 'dot-ai-mcp',
72
+ 'dot-ai.devopstoolkit.live/solution-id': solutionId
73
+ }
74
+ },
75
+ spec: {
76
+ intent: solution.intent,
77
+ resources: resourceReferences,
78
+ context: {
79
+ createdBy: 'dot-ai-mcp',
80
+ rationale: rationale,
81
+ patterns: patterns,
82
+ policies: policies
83
+ }
84
+ }
85
+ };
86
+ // Convert to YAML
87
+ return yaml.dump(solutionCR);
88
+ }
89
+ /**
90
+ * Extract resource references from generated manifest YAML
91
+ *
92
+ * @param manifestsYaml Generated Kubernetes manifests as YAML string
93
+ * @param defaultNamespace Default namespace if not specified in manifest
94
+ * @returns Array of resource references
95
+ */
96
+ function extractResourceReferences(manifestsYaml, defaultNamespace) {
97
+ try {
98
+ const manifests = yaml.loadAll(manifestsYaml);
99
+ return manifests
100
+ .filter((manifest) => manifest && manifest.kind && manifest.metadata?.name)
101
+ .map((manifest) => ({
102
+ apiVersion: manifest.apiVersion,
103
+ kind: manifest.kind,
104
+ name: manifest.metadata.name,
105
+ namespace: manifest.metadata.namespace || defaultNamespace
106
+ }));
107
+ }
108
+ catch (error) {
109
+ console.error('Failed to extract resource references from manifests:', error);
110
+ return [];
111
+ }
112
+ }
@@ -9,12 +9,6 @@ export declare function extractUserAnswers(solution: any): Record<string, any>;
9
9
  * Sanitize intent string for use as Kubernetes label (63 char limit, alphanumeric + hyphens)
10
10
  */
11
11
  export declare function sanitizeIntentForLabel(intent: string): string;
12
- /**
13
- * Sanitize string for use as Kubernetes resource name (RFC 1123 subdomain)
14
- * Names must be lowercase alphanumeric characters, hyphens, or periods
15
- * Must start and end with alphanumeric character, max 63 characters
16
- */
17
- export declare function sanitizeKubernetesName(name: string): string;
18
12
  /**
19
13
  * Generate standard dot-ai labels for Kubernetes resources
20
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"solution-utils.d.ts","sourceRoot":"","sources":["../../src/core/solution-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAoBrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB3G;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAClD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,QAAQ,EAAE,GAAG,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxB"}
1
+ {"version":3,"file":"solution-utils.d.ts","sourceRoot":"","sources":["../../src/core/solution-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAoBrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB3G;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAClD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,QAAQ,EAAE,GAAG,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxB"}
@@ -5,7 +5,6 @@
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.extractUserAnswers = extractUserAnswers;
7
7
  exports.sanitizeIntentForLabel = sanitizeIntentForLabel;
8
- exports.sanitizeKubernetesName = sanitizeKubernetesName;
9
8
  exports.generateDotAiLabels = generateDotAiLabels;
10
9
  exports.addDotAiLabels = addDotAiLabels;
11
10
  /**
@@ -39,31 +38,6 @@ function sanitizeIntentForLabel(intent) {
39
38
  .substring(0, 63)
40
39
  .replace(/^-+|-+$/g, '');
41
40
  }
42
- /**
43
- * Sanitize string for use as Kubernetes resource name (RFC 1123 subdomain)
44
- * Names must be lowercase alphanumeric characters, hyphens, or periods
45
- * Must start and end with alphanumeric character, max 63 characters
46
- */
47
- function sanitizeKubernetesName(name) {
48
- if (!name) {
49
- return 'default-name';
50
- }
51
- let sanitized = name
52
- .toLowerCase()
53
- .replace(/[^a-z0-9.-]/g, '-') // Replace invalid chars with hyphens
54
- .substring(0, 63); // Enforce max length
55
- // Remove leading/trailing dots or hyphens
56
- sanitized = sanitized.replace(/^[.-]+|[.-]+$/g, '');
57
- // Ensure starts with alphanumeric
58
- if (sanitized && !/^[a-z0-9]/.test(sanitized)) {
59
- sanitized = 'a' + sanitized.substring(1);
60
- }
61
- // Ensure ends with alphanumeric
62
- if (sanitized && !/[a-z0-9]$/.test(sanitized)) {
63
- sanitized = sanitized.substring(0, sanitized.length - 1) + 'z';
64
- }
65
- return sanitized || 'default-name';
66
- }
67
41
  /**
68
42
  * Generate standard dot-ai labels for Kubernetes resources
69
43
  */