@vfarcic/dot-ai 0.192.0 → 0.194.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 (105) hide show
  1. package/README.md +6 -6
  2. package/dist/core/agent-display.d.ts +2 -4
  3. package/dist/core/agent-display.d.ts.map +1 -1
  4. package/dist/core/agent-display.js +4 -12
  5. package/dist/core/base-vector-service.d.ts +6 -0
  6. package/dist/core/base-vector-service.d.ts.map +1 -1
  7. package/dist/core/base-vector-service.js +18 -8
  8. package/dist/core/capabilities.d.ts +12 -0
  9. package/dist/core/capabilities.d.ts.map +1 -1
  10. package/dist/core/capability-operations.d.ts +3 -0
  11. package/dist/core/capability-operations.d.ts.map +1 -1
  12. package/dist/core/capability-operations.js +88 -5
  13. package/dist/core/capability-scan-workflow.d.ts +35 -5
  14. package/dist/core/capability-scan-workflow.d.ts.map +1 -1
  15. package/dist/core/capability-scan-workflow.js +169 -145
  16. package/dist/core/capability-vector-service.d.ts +11 -2
  17. package/dist/core/capability-vector-service.d.ts.map +1 -1
  18. package/dist/core/capability-vector-service.js +50 -0
  19. package/dist/core/discovery.d.ts +34 -0
  20. package/dist/core/discovery.d.ts.map +1 -1
  21. package/dist/core/discovery.js +105 -19
  22. package/dist/core/index.d.ts +0 -1
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/index.js +1 -6
  25. package/dist/core/kubectl-tools.d.ts +5 -0
  26. package/dist/core/kubectl-tools.d.ts.map +1 -1
  27. package/dist/core/kubectl-tools.js +74 -2
  28. package/dist/core/kubernetes-utils.d.ts +1 -0
  29. package/dist/core/kubernetes-utils.d.ts.map +1 -1
  30. package/dist/core/kubernetes-utils.js +92 -49
  31. package/dist/core/packaging.d.ts.map +1 -1
  32. package/dist/core/packaging.js +1 -0
  33. package/dist/core/resource-tools.d.ts +163 -1
  34. package/dist/core/resource-tools.d.ts.map +1 -1
  35. package/dist/core/resource-tools.js +343 -23
  36. package/dist/core/resource-vector-service.d.ts +17 -0
  37. package/dist/core/resource-vector-service.d.ts.map +1 -1
  38. package/dist/core/resource-vector-service.js +67 -3
  39. package/dist/core/telemetry/client.d.ts +16 -0
  40. package/dist/core/telemetry/client.d.ts.map +1 -0
  41. package/dist/core/telemetry/client.js +293 -0
  42. package/dist/core/telemetry/config.d.ts +12 -0
  43. package/dist/core/telemetry/config.d.ts.map +1 -0
  44. package/dist/core/telemetry/config.js +130 -0
  45. package/dist/core/telemetry/index.d.ts +30 -0
  46. package/dist/core/telemetry/index.d.ts.map +1 -0
  47. package/dist/core/telemetry/index.js +49 -0
  48. package/dist/core/telemetry/types.d.ts +125 -0
  49. package/dist/core/telemetry/types.d.ts.map +1 -0
  50. package/dist/core/telemetry/types.js +7 -0
  51. package/dist/core/tracing/index.d.ts +1 -1
  52. package/dist/core/tracing/index.d.ts.map +1 -1
  53. package/dist/core/tracing/tool-tracing.d.ts +11 -2
  54. package/dist/core/tracing/tool-tracing.d.ts.map +1 -1
  55. package/dist/core/tracing/tool-tracing.js +17 -3
  56. package/dist/core/vector-db-service.d.ts +7 -0
  57. package/dist/core/vector-db-service.d.ts.map +1 -1
  58. package/dist/core/vector-db-service.js +165 -61
  59. package/dist/core/visualization.d.ts +16 -1
  60. package/dist/core/visualization.d.ts.map +1 -1
  61. package/dist/core/visualization.js +64 -1
  62. package/dist/interfaces/mcp.d.ts +6 -0
  63. package/dist/interfaces/mcp.d.ts.map +1 -1
  64. package/dist/interfaces/mcp.js +36 -7
  65. package/dist/interfaces/rest-api.d.ts +63 -2
  66. package/dist/interfaces/rest-api.d.ts.map +1 -1
  67. package/dist/interfaces/rest-api.js +611 -51
  68. package/dist/mcp/server.js +55 -9
  69. package/dist/tools/answer-question.d.ts.map +1 -1
  70. package/dist/tools/answer-question.js +18 -0
  71. package/dist/tools/choose-solution.d.ts.map +1 -1
  72. package/dist/tools/choose-solution.js +22 -1
  73. package/dist/tools/deploy-manifests.d.ts.map +1 -1
  74. package/dist/tools/deploy-manifests.js +16 -2
  75. package/dist/tools/generate-manifests.d.ts.map +1 -1
  76. package/dist/tools/generate-manifests.js +12 -18
  77. package/dist/tools/operate.d.ts.map +1 -1
  78. package/dist/tools/operate.js +3 -11
  79. package/dist/tools/organizational-data.d.ts +1 -1
  80. package/dist/tools/organizational-data.d.ts.map +1 -1
  81. package/dist/tools/organizational-data.js +8 -17
  82. package/dist/tools/project-setup.d.ts.map +1 -1
  83. package/dist/tools/project-setup.js +5 -18
  84. package/dist/tools/query.d.ts +2 -11
  85. package/dist/tools/query.d.ts.map +1 -1
  86. package/dist/tools/query.js +63 -44
  87. package/dist/tools/recommend.d.ts +18 -1
  88. package/dist/tools/recommend.d.ts.map +1 -1
  89. package/dist/tools/recommend.js +44 -10
  90. package/dist/tools/remediate.d.ts.map +1 -1
  91. package/dist/tools/remediate.js +2 -24
  92. package/dist/tools/version.d.ts.map +1 -1
  93. package/dist/tools/version.js +4 -7
  94. package/package.json +2 -1
  95. package/prompts/partials/query-simple-output.md +11 -0
  96. package/prompts/partials/visualization-output.md +93 -0
  97. package/prompts/query-system.md +8 -12
  98. package/prompts/resource-selection.md +4 -0
  99. package/prompts/visualize.md +1 -68
  100. package/scripts/dot-ai.nu +1 -0
  101. package/scripts/reset-sync-and-scan-test-cluster.sh +120 -0
  102. package/shared-prompts/prd-create.md +1 -1
  103. package/dist/core/feedback.d.ts +0 -43
  104. package/dist/core/feedback.d.ts.map +0 -1
  105. package/dist/core/feedback.js +0 -98
@@ -46,8 +46,46 @@ Object.defineProperty(exports, "__esModule", { value: true });
46
46
  const mcp_js_1 = require("../interfaces/mcp.js");
47
47
  const index_js_1 = require("../core/index.js");
48
48
  const index_js_2 = require("../core/tracing/index.js");
49
+ const index_js_3 = require("../core/telemetry/index.js");
49
50
  const fs_1 = require("fs");
50
51
  const path_1 = __importDefault(require("path"));
52
+ // Track server start time for uptime calculation
53
+ const serverStartTime = Date.now();
54
+ /**
55
+ * Detect deployment method from environment
56
+ */
57
+ function detectDeploymentMethod() {
58
+ // Check for Helm deployment (set by Helm chart)
59
+ if (process.env.HELM_RELEASE_NAME || process.env.HELM_CHART_NAME) {
60
+ return 'helm';
61
+ }
62
+ // Check for Kubernetes environment (service account or env vars set by k8s)
63
+ if (process.env.KUBERNETES_SERVICE_HOST || process.env.KUBERNETES_PORT) {
64
+ return 'kubernetes';
65
+ }
66
+ // Check for Docker container (/.dockerenv file exists in containers)
67
+ if ((0, fs_1.existsSync)('/.dockerenv') || process.env.DOCKER_CONTAINER === 'true') {
68
+ return 'docker';
69
+ }
70
+ // Default to local development
71
+ return 'local';
72
+ }
73
+ /**
74
+ * Get Kubernetes version (non-blocking, returns undefined if unavailable)
75
+ */
76
+ async function getK8sVersion() {
77
+ try {
78
+ const { KubernetesDiscovery } = await Promise.resolve().then(() => __importStar(require('../core/discovery.js')));
79
+ const discovery = new KubernetesDiscovery({});
80
+ await discovery.connect();
81
+ const result = await discovery.testConnection();
82
+ return result.version;
83
+ }
84
+ catch {
85
+ // K8s version is optional - don't fail startup
86
+ return undefined;
87
+ }
88
+ }
51
89
  async function main() {
52
90
  try {
53
91
  // Initialize OpenTelemetry tracing (must happen before HTTP server starts)
@@ -127,19 +165,27 @@ async function main() {
127
165
  process.stderr.write(`Starting DevOps AI Toolkit MCP server with ${transportType} transport...\n`);
128
166
  await mcpServer.start();
129
167
  process.stderr.write('DevOps AI Toolkit MCP server started successfully\n');
130
- // Handle graceful shutdown
131
- process.on('SIGINT', async () => {
132
- process.stderr.write('Shutting down DevOps AI Toolkit MCP server...\n');
133
- await mcpServer.stop();
134
- await (0, index_js_2.shutdownTracer)();
135
- process.exit(0);
168
+ // Track server start telemetry (non-blocking)
169
+ const deploymentMethod = detectDeploymentMethod();
170
+ getK8sVersion().then((k8sVersion) => {
171
+ (0, index_js_3.getTelemetry)().trackServerStart(k8sVersion, deploymentMethod);
172
+ }).catch(() => {
173
+ // Telemetry errors are non-fatal - silently ignore
136
174
  });
137
- process.on('SIGTERM', async () => {
138
- process.stderr.write('Shutting down DevOps AI Toolkit MCP server...\n');
175
+ // Handle graceful shutdown
176
+ const gracefulShutdown = async (signal) => {
177
+ process.stderr.write(`Shutting down DevOps AI Toolkit MCP server (${signal})...\n`);
178
+ // Track server stop telemetry
179
+ const uptimeSeconds = Math.floor((Date.now() - serverStartTime) / 1000);
180
+ (0, index_js_3.getTelemetry)().trackServerStop(uptimeSeconds);
139
181
  await mcpServer.stop();
140
182
  await (0, index_js_2.shutdownTracer)();
183
+ // Flush telemetry events before exit
184
+ await (0, index_js_3.shutdownTelemetry)();
141
185
  process.exit(0);
142
- });
186
+ };
187
+ process.on('SIGINT', () => gracefulShutdown('SIGINT'));
188
+ process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
143
189
  // Keep the process alive for HTTP transport
144
190
  if (transportType === 'http') {
145
191
  process.stderr.write('HTTP transport active - server will run until terminated\n');
@@ -1 +1 @@
1
- {"version":3,"file":"answer-question.d.ts","sourceRoot":"","sources":["../../src/tools/answer-question.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAOhD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,+BAA+B,8HAA4H,CAAC;AAGzK,eAAO,MAAM,gCAAgC;;;;;;;;;;CAK5C,CAAC;AAwhBF;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EACtI,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAgUxD"}
1
+ {"version":3,"file":"answer-question.d.ts","sourceRoot":"","sources":["../../src/tools/answer-question.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAOhD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,+BAA+B,8HAA4H,CAAC;AAGzK,eAAO,MAAM,gCAAgC;;;;;;;;;;CAK5C,CAAC;AAwhBF;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EACtI,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAqVxD"}
@@ -652,6 +652,12 @@ async function handleAnswerQuestionTool(args, dotAI, logger, requestId) {
652
652
  }
653
653
  // Extract all user answers for handoff
654
654
  const userAnswers = (0, solution_utils_1.extractUserAnswers)(solution);
655
+ // Update session with workflow state - all questions complete
656
+ sessionManager.updateSession(args.solutionId, {
657
+ stage: 'questions',
658
+ currentQuestionStage: 'open',
659
+ nextQuestionStage: null
660
+ });
655
661
  const response = {
656
662
  status: 'ready_for_manifest_generation',
657
663
  solutionId: args.solutionId,
@@ -683,6 +689,12 @@ async function handleAnswerQuestionTool(args, dotAI, logger, requestId) {
683
689
  // This happens when advanced stage is completed (open stage is skipped for Helm)
684
690
  if (newStageState.isComplete && isHelmSolution(solution)) {
685
691
  const userAnswers = (0, solution_utils_1.extractUserAnswers)(solution);
692
+ // Update session with workflow state - all questions complete (Helm)
693
+ sessionManager.updateSession(args.solutionId, {
694
+ stage: 'questions',
695
+ currentQuestionStage: 'advanced',
696
+ nextQuestionStage: null
697
+ });
686
698
  const completionResponse = {
687
699
  status: 'ready_for_manifest_generation',
688
700
  solutionId: args.solutionId,
@@ -710,6 +722,12 @@ async function handleAnswerQuestionTool(args, dotAI, logger, requestId) {
710
722
  }
711
723
  // If stage is complete, move to next stage
712
724
  const nextStageQuestions = getQuestionsForStage(solution, newStageState.currentStage);
725
+ // Update session with workflow state - moving to next question stage
726
+ sessionManager.updateSession(args.solutionId, {
727
+ stage: 'questions',
728
+ currentQuestionStage: newStageState.currentStage,
729
+ nextQuestionStage: newStageState.nextStage
730
+ });
713
731
  const response = {
714
732
  status: 'stage_questions',
715
733
  solutionId: args.solutionId,
@@ -1 +1 @@
1
- {"version":3,"file":"choose-solution.d.ts","sourceRoot":"","sources":["../../src/tools/choose-solution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAKhD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,+BAA+B,uEAAuE,CAAC;AAGpH,eAAO,MAAM,gCAAgC;;CAE5C,CAAC;AAIF;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAmIxD"}
1
+ {"version":3,"file":"choose-solution.d.ts","sourceRoot":"","sources":["../../src/tools/choose-solution.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAKhD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,+BAA+B,uEAAuE,CAAC;AAGpH,eAAO,MAAM,gCAAgC;;CAE5C,CAAC;AAIF;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAyJxD"}
@@ -80,13 +80,34 @@ async function handleChooseSolutionTool(args, dotAI, logger, requestId) {
80
80
  hasOpen: !!solution.questions?.open
81
81
  }
82
82
  });
83
+ // Determine next stage based on what questions exist
84
+ const hasBasic = solution.questions?.basic && solution.questions.basic.length > 0;
85
+ const hasAdvanced = solution.questions?.advanced && solution.questions.advanced.length > 0;
86
+ const hasOpen = !!solution.questions?.open;
87
+ const isHelm = solution.type === 'helm';
88
+ let nextStage = null;
89
+ if (hasBasic) {
90
+ nextStage = 'basic';
91
+ }
92
+ else if (hasAdvanced) {
93
+ nextStage = 'advanced';
94
+ }
95
+ else if (!isHelm && hasOpen) {
96
+ nextStage = 'open';
97
+ }
98
+ // Update session with workflow state for UI page refresh support
99
+ sessionManager.updateSession(args.solutionId, {
100
+ stage: 'questions',
101
+ currentQuestionStage: 'required',
102
+ nextQuestionStage: nextStage
103
+ });
83
104
  // Prepare response with solution details and questions
84
105
  const response = {
85
106
  status: 'stage_questions',
86
107
  solutionId: args.solutionId,
87
108
  currentStage: 'required',
88
109
  questions: solution.questions.required || [],
89
- nextStage: 'basic',
110
+ nextStage: nextStage || 'complete',
90
111
  message: 'Please provide the required configuration for your application.',
91
112
  nextAction: 'Call recommend tool with stage: answerQuestion:required',
92
113
  guidance: 'Present ALL required questions to the user. All must be answered before proceeding.',
@@ -1 +1 @@
1
- {"version":3,"file":"deploy-manifests.d.ts","sourceRoot":"","sources":["../../src/tools/deploy-manifests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAahD,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D,eAAO,MAAM,gCAAgC,kFAAkF,CAAC;AAGhI,eAAO,MAAM,iCAAiC;;;CAG7C,CAAC;AAEF;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9C,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAuKxD"}
1
+ {"version":3,"file":"deploy-manifests.d.ts","sourceRoot":"","sources":["../../src/tools/deploy-manifests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAahD,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D,eAAO,MAAM,gCAAgC,kFAAkF,CAAC;AAGhI,eAAO,MAAM,iCAAiC;;;CAG7C,CAAC;AAEF;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9C,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAuLxD"}
@@ -84,6 +84,12 @@ async function handleDeployManifestsTool(args, dotAI, logger, requestId) {
84
84
  namespace,
85
85
  requestId
86
86
  });
87
+ // Update session with deployed stage for UI page refresh support
88
+ if (result.success) {
89
+ sessionManager.updateSession(args.solutionId, {
90
+ stage: 'deployed'
91
+ });
92
+ }
87
93
  const response = {
88
94
  success: result.success,
89
95
  solutionId: args.solutionId,
@@ -101,7 +107,8 @@ async function handleDeployManifestsTool(args, dotAI, logger, requestId) {
101
107
  : `Helm deployment failed: ${result.error}`,
102
108
  helmOutput: result.output || result.error,
103
109
  deploymentComplete: result.success,
104
- timestamp: new Date().toISOString()
110
+ timestamp: new Date().toISOString(),
111
+ agentInstructions: 'Deployment command executed. To verify the deployment is running correctly and resources are healthy, use the query tool to check pod status, events, and logs.'
105
112
  };
106
113
  return {
107
114
  content: [{
@@ -132,6 +139,12 @@ async function handleDeployManifestsTool(args, dotAI, logger, requestId) {
132
139
  readinessTimeout: result.readinessTimeout,
133
140
  requestId
134
141
  });
142
+ // Update session with deployed stage for UI page refresh support
143
+ if (result.success) {
144
+ sessionManager.updateSession(args.solutionId, {
145
+ stage: 'deployed'
146
+ });
147
+ }
135
148
  // Prepare response with deployment status
136
149
  const response = {
137
150
  success: result.success,
@@ -144,7 +157,8 @@ async function handleDeployManifestsTool(args, dotAI, logger, requestId) {
144
157
  // Additional deployment status info
145
158
  deploymentComplete: result.success && !result.readinessTimeout,
146
159
  requiresStatusCheck: result.success && result.readinessTimeout,
147
- timestamp: new Date().toISOString()
160
+ timestamp: new Date().toISOString(),
161
+ agentInstructions: 'Deployment command executed. To verify the deployment is running correctly and resources are healthy, use the query tool to check pod status, events, and logs.'
148
162
  };
149
163
  return {
150
164
  content: [{
@@ -1 +1 @@
1
- {"version":3,"file":"generate-manifests.d.ts","sourceRoot":"","sources":["../../src/tools/generate-manifests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,KAAK,EAAmD,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA0BhD,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAC/D,eAAO,MAAM,kCAAkC,+IAA+I,CAAC;AAG/L,eAAO,MAAM,mCAAmC;;;CAG/C,CAAC;AAsvBF;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EACrD,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAoUxD"}
1
+ {"version":3,"file":"generate-manifests.d.ts","sourceRoot":"","sources":["../../src/tools/generate-manifests.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,KAAK,EAA0B,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AA0BhD,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAC/D,eAAO,MAAM,kCAAkC,+IAA+I,CAAC;AAG/L,eAAO,MAAM,mCAAmC;;;CAG/C,CAAC;AAkvBF;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EACrD,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAiUxD"}
@@ -386,12 +386,10 @@ async function handleHelmGeneration(solution, solutionId, dotAI, logger, request
386
386
  // Build user-friendly helm command with generic values file path
387
387
  // (internal valuesPath is used for actual execution, not shown to user)
388
388
  const helmCommand = (0, helm_utils_1.buildHelmCommand)(chart, releaseName, namespace, 'values.yaml');
389
- // Check if we should show feedback message
390
- const feedbackMessage = (0, index_1.maybeGetFeedbackMessage)();
391
389
  // PRD #320: Update session with generateManifests data for visualization
392
390
  sessionManager.updateSession(solutionId, {
393
391
  ...solution,
394
- stage: 'generateManifests',
392
+ stage: 'manifests',
395
393
  generatedManifests: {
396
394
  type: 'helm',
397
395
  valuesYaml: valuesYaml,
@@ -426,16 +424,15 @@ async function handleHelmGeneration(solution, solutionId, dotAI, logger, request
426
424
  namespace: namespace,
427
425
  validationAttempts: attempt,
428
426
  timestamp: new Date().toISOString(),
429
- ...(visualizationUrl ? { visualizationUrl } : {}),
430
- ...(feedbackMessage ? { feedbackMessage } : {})
427
+ ...(visualizationUrl ? { visualizationUrl } : {})
431
428
  };
432
429
  // Build content blocks - JSON for REST API, agent instruction for MCP agents
433
430
  const content = [{
434
431
  type: 'text',
435
432
  text: JSON.stringify(response, null, 2)
436
433
  }];
437
- // Add agent instruction block if visualization URL or feedback message is present
438
- const agentDisplayBlock = (0, index_1.buildAgentDisplayBlock)({ visualizationUrl, feedbackMessage });
434
+ // Add agent instruction block if visualization URL is present
435
+ const agentDisplayBlock = (0, index_1.buildAgentDisplayBlock)({ visualizationUrl });
439
436
  if (agentDisplayBlock) {
440
437
  content.push(agentDisplayBlock);
441
438
  }
@@ -755,14 +752,13 @@ async function handleGenerateManifestsTool(args, dotAI, logger, requestId) {
755
752
  // Extract packaging options from user answers (with defaults)
756
753
  const outputFormat = (userAnswers.outputFormat || 'raw');
757
754
  const outputPath = userAnswers.outputPath || './manifests';
758
- const feedbackMessage = (0, index_1.maybeGetFeedbackMessage)();
759
755
  // Handle packaging based on outputFormat
760
756
  if (outputFormat === 'helm' || outputFormat === 'kustomize') {
761
757
  const packagingResult = await packageAndValidate(manifests, solution, outputFormat, outputPath, args.solutionId, dotAI, logger, args.interaction_id);
762
758
  // PRD #320: Update session with generateManifests data for visualization
763
759
  sessionManager.updateSession(args.solutionId, {
764
760
  ...solution,
765
- stage: 'generateManifests',
761
+ stage: 'manifests',
766
762
  generatedManifests: {
767
763
  type: outputFormat,
768
764
  outputPath,
@@ -784,16 +780,15 @@ async function handleGenerateManifestsTool(args, dotAI, logger, requestId) {
784
780
  packagingAttempts: packagingResult.attempts,
785
781
  timestamp: new Date().toISOString(),
786
782
  agentInstructions: `Write the files to "${outputPath}". The output is a ${outputFormat === 'helm' ? 'Helm chart' : 'Kustomize overlay'}. If immediate deployment is desired, call the recommend tool with stage: "deployManifests".`,
787
- ...(visualizationUrl ? { visualizationUrl } : {}),
788
- ...(feedbackMessage ? { feedbackMessage } : {})
783
+ ...(visualizationUrl ? { visualizationUrl } : {})
789
784
  };
790
785
  // Build content blocks - JSON for REST API, agent instruction for MCP agents
791
786
  const content = [{
792
787
  type: 'text',
793
788
  text: JSON.stringify(response, null, 2)
794
789
  }];
795
- // Add agent instruction block if visualization URL or feedback message is present
796
- const agentDisplayBlock = (0, index_1.buildAgentDisplayBlock)({ visualizationUrl, feedbackMessage });
790
+ // Add agent instruction block if visualization URL is present
791
+ const agentDisplayBlock = (0, index_1.buildAgentDisplayBlock)({ visualizationUrl });
797
792
  if (agentDisplayBlock) {
798
793
  content.push(agentDisplayBlock);
799
794
  }
@@ -802,7 +797,7 @@ async function handleGenerateManifestsTool(args, dotAI, logger, requestId) {
802
797
  // PRD #320: Update session with generateManifests data for visualization (raw format)
803
798
  sessionManager.updateSession(args.solutionId, {
804
799
  ...solution,
805
- stage: 'generateManifests',
800
+ stage: 'manifests',
806
801
  generatedManifests: {
807
802
  type: 'raw',
808
803
  outputPath,
@@ -825,16 +820,15 @@ async function handleGenerateManifestsTool(args, dotAI, logger, requestId) {
825
820
  validationAttempts: attempt,
826
821
  timestamp: new Date().toISOString(),
827
822
  agentInstructions: `Write the files to "${outputPath}". If immediate deployment is desired, call the recommend tool with stage: "deployManifests".`,
828
- ...(visualizationUrl ? { visualizationUrl } : {}),
829
- ...(feedbackMessage ? { feedbackMessage } : {})
823
+ ...(visualizationUrl ? { visualizationUrl } : {})
830
824
  };
831
825
  // Build content blocks - JSON for REST API, agent instruction for MCP agents
832
826
  const content = [{
833
827
  type: 'text',
834
828
  text: JSON.stringify(response, null, 2)
835
829
  }];
836
- // Add agent instruction block if visualization URL or feedback message is present
837
- const agentDisplayBlock = (0, index_1.buildAgentDisplayBlock)({ visualizationUrl, feedbackMessage });
830
+ // Add agent instruction block if visualization URL is present
831
+ const agentDisplayBlock = (0, index_1.buildAgentDisplayBlock)({ visualizationUrl });
838
832
  if (agentDisplayBlock) {
839
833
  content.push(agentDisplayBlock);
840
834
  }
@@ -1 +1 @@
1
- {"version":3,"file":"operate.d.ts","sourceRoot":"","sources":["../../src/tools/operate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operate.d.ts","sourceRoot":"","sources":["../../src/tools/operate.ts"],"names":[],"mappings":"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"}
@@ -229,22 +229,14 @@ async function operate(args) {
229
229
  */
230
230
  async function handleOperateTool(args) {
231
231
  const result = await operate(args);
232
- // Get feedback message for successful operations
233
- const feedbackMessage = result.status === 'success' ? (0, index_1.maybeGetFeedbackMessage)() : '';
234
- // Build response with visualization URL and feedback message in JSON
235
- const responseData = {
236
- ...result,
237
- ...(feedbackMessage ? { feedbackMessage } : {})
238
- };
239
232
  // Build content blocks - JSON for REST API, agent instruction for MCP agents
240
233
  const content = [{
241
234
  type: 'text',
242
- text: JSON.stringify(responseData, null, 2)
235
+ text: JSON.stringify(result, null, 2)
243
236
  }];
244
- // Add agent instruction block if visualization URL or feedback message is present
237
+ // Add agent instruction block if visualization URL is present
245
238
  const agentDisplayBlock = (0, index_1.buildAgentDisplayBlock)({
246
- visualizationUrl: result.visualizationUrl,
247
- feedbackMessage
239
+ visualizationUrl: result.visualizationUrl
248
240
  });
249
241
  if (agentDisplayBlock) {
250
242
  content.push(agentDisplayBlock);
@@ -22,8 +22,8 @@ export declare const ORGANIZATIONAL_DATA_TOOL_INPUT_SCHEMA: {
22
22
  search: "search";
23
23
  get: "get";
24
24
  delete: "delete";
25
- create: "create";
26
25
  list: "list";
26
+ create: "create";
27
27
  deleteAll: "deleteAll";
28
28
  progress: "progress";
29
29
  scan: "scan";
@@ -1 +1 @@
1
- {"version":3,"file":"organizational-data.d.ts","sourceRoot":"","sources":["../../src/tools/organizational-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAgBhD,eAAO,MAAM,6BAA6B,kBAAkB,CAAC;AAC7D,eAAO,MAAM,oCAAoC,+jBAAyjB,CAAC;AAG3mB,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BjD,CAAC;AA0sBF;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,KAAK,GAAG,IAAI,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CA2Id"}
1
+ {"version":3,"file":"organizational-data.d.ts","sourceRoot":"","sources":["../../src/tools/organizational-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAehD,eAAO,MAAM,6BAA6B,kBAAkB,CAAC;AAC7D,eAAO,MAAM,oCAAoC,+jBAAyjB,CAAC;AAG3mB,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BjD,CAAC;AAktBF;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,KAAK,GAAG,IAAI,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CA0Hd"}
@@ -58,7 +58,6 @@ const capability_scan_workflow_1 = require("../core/capability-scan-workflow");
58
58
  const crypto_1 = require("crypto");
59
59
  const fs = __importStar(require("fs"));
60
60
  const path = __importStar(require("path"));
61
- const index_2 = require("../core/index");
62
61
  // Tool metadata for MCP registration
63
62
  exports.ORGANIZATIONAL_DATA_TOOL_NAME = 'manageOrgData';
64
63
  exports.ORGANIZATIONAL_DATA_TOOL_DESCRIPTION = 'Unified tool for managing cluster data: organizational patterns, policy intents, and resource capabilities. For patterns and policies: supports create, list, get, delete, deleteAll, and search operations (patterns also support step-by-step creation workflow). For capabilities: supports scan, list, get, delete, deleteAll, and progress operations for cluster resource capability discovery and management. Use dataType parameter to specify what to manage: "pattern" for organizational patterns, "policy" for policy intents, "capabilities" for resource capabilities.';
@@ -248,7 +247,13 @@ async function handleFireAndForgetScan(args, logger, requestId, capabilityServic
248
247
  }
249
248
  };
250
249
  }
250
+ // Just set the resource list - scanSingleResource will fetch metadata for each
251
251
  session.selectedResources = parsedResources;
252
+ logger.info('Targeted scan initiated', {
253
+ requestId,
254
+ resourceCount: parsedResources.length,
255
+ resources: parsedResources
256
+ });
252
257
  }
253
258
  // Save session for progress tracking
254
259
  saveCapabilitySession(session);
@@ -684,25 +689,11 @@ async function handleOrganizationalDataTool(args, _dotAI, logger, requestId) {
684
689
  operation: args.operation,
685
690
  success: result.success
686
691
  });
687
- // Get feedback message when pattern/policy creation workflow is complete and successful
688
- const feedbackMessage = (result.success && result.operation === 'create' && result.storage?.stored === true)
689
- ? (0, index_2.maybeGetFeedbackMessage)()
690
- : '';
691
- // Build response with optional feedback message in JSON
692
- const responseData = {
693
- ...result,
694
- ...(feedbackMessage ? { feedbackMessage } : {})
695
- };
696
- // Build content blocks - JSON for REST API, agent instruction for MCP agents
692
+ // Build content blocks - JSON for REST API
697
693
  const content = [{
698
694
  type: 'text',
699
- text: JSON.stringify(responseData, null, 2)
695
+ text: JSON.stringify(result, null, 2)
700
696
  }];
701
- // Add agent instruction block if feedback message is present
702
- const agentDisplayBlock = (0, index_2.buildAgentDisplayBlock)({ feedbackMessage });
703
- if (agentDisplayBlock) {
704
- content.push(agentDisplayBlock);
705
- }
706
697
  return { content };
707
698
  }
708
699
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"project-setup.d.ts","sourceRoot":"","sources":["../../src/tools/project-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAiB,MAAM,uBAAuB,CAAC;AAQ1E,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AACtD,eAAO,MAAM,8BAA8B,qbAAqb,CAAC;AAGje,eAAO,MAAM,+BAA+B;;;;;;;;;;;CAO3C,CAAC;AAEF;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA2C7D"}
1
+ {"version":3,"file":"project-setup.d.ts","sourceRoot":"","sources":["../../src/tools/project-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAiB,MAAM,uBAAuB,CAAC;AAO1E,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AACtD,eAAO,MAAM,8BAA8B,qbAAqb,CAAC;AAGje,eAAO,MAAM,+BAA+B;;;;;;;;;;;CAO3C,CAAC;AAEF;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA2C7D"}
@@ -11,7 +11,6 @@ const discovery_1 = require("./project-setup/discovery");
11
11
  const report_scan_1 = require("./project-setup/report-scan");
12
12
  const generate_scope_1 = require("./project-setup/generate-scope");
13
13
  const crypto_1 = require("crypto");
14
- const index_1 = require("../core/index");
15
14
  // Tool metadata for MCP registration
16
15
  exports.PROJECT_SETUP_TOOL_NAME = 'projectSetup';
17
16
  exports.PROJECT_SETUP_TOOL_DESCRIPTION = 'Setup project, audit repository, or generate repository files. Use this when user wants to: setup project, audit repo, check missing files, create README, add LICENSE, generate CONTRIBUTING.md, add CI/CD workflows, initialize documentation, setup governance files. Analyzes local repositories and generates missing configuration, documentation, and governance files. Does NOT handle Kubernetes deployments - use recommend for those.';
@@ -115,24 +114,12 @@ async function handleGenerateScopeStep(args, logger, requestId) {
115
114
  });
116
115
  }
117
116
  const response = await (0, generate_scope_1.handleGenerateScope)(args.sessionId, args.scope, args.answers, logger, requestId);
118
- // Get feedback message for successful responses
119
- const feedbackMessage = response.success ? (0, index_1.maybeGetFeedbackMessage)() : '';
120
- // Build response with optional feedback message in JSON
121
- const responseData = {
122
- ...response,
123
- ...(feedbackMessage ? { feedbackMessage } : {})
117
+ return {
118
+ content: [{
119
+ type: 'text',
120
+ text: JSON.stringify(response, null, 2)
121
+ }]
124
122
  };
125
- // Build content blocks - JSON for REST API, agent instruction for MCP agents
126
- const content = [{
127
- type: 'text',
128
- text: JSON.stringify(responseData, null, 2)
129
- }];
130
- // Add agent instruction block if feedback message is present
131
- const agentDisplayBlock = (0, index_1.buildAgentDisplayBlock)({ feedbackMessage });
132
- if (agentDisplayBlock) {
133
- content.push(agentDisplayBlock);
134
- }
135
- return { content };
136
123
  }
137
124
  /**
138
125
  * Helper to create error response
@@ -7,6 +7,7 @@
7
7
  * PRD #291: Cluster Query Tool - Natural Language Cluster Intelligence
8
8
  */
9
9
  import { z } from 'zod';
10
+ import { CachedVisualization } from '../core/visualization';
10
11
  export declare const QUERY_TOOL_NAME = "query";
11
12
  export declare const QUERY_TOOL_DESCRIPTION = "Natural language query interface for Kubernetes cluster intelligence. Ask any questions about your cluster resources, capabilities, and status in plain English. Examples: \"What databases are running?\", \"Describe the nginx deployment\", \"Show me pods in the kube-system namespace\", \"What operators are installed?\", \"Is my-postgres healthy?\"";
12
13
  export declare const QUERY_TOOL_INPUT_SCHEMA: {
@@ -28,17 +29,7 @@ export interface QuerySessionData {
28
29
  input: any;
29
30
  output: any;
30
31
  }>;
31
- cachedVisualization?: {
32
- title: string;
33
- visualizations: Array<{
34
- id: string;
35
- label: string;
36
- type: 'mermaid' | 'cards' | 'code' | 'table' | 'diff';
37
- content: any;
38
- }>;
39
- insights: string[];
40
- generatedAt: string;
41
- };
32
+ cachedVisualization?: CachedVisualization;
42
33
  }
43
34
  export interface QueryOutput {
44
35
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,sBAAsB,iWAAuV,CAAC;AAG3X,eAAO,MAAM,uBAAuB;;;CAGnC,CAAC;AAGF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,GAAG,CAAC;QACX,MAAM,EAAE,GAAG,CAAC;KACb,CAAC,CAAC;IAEH,mBAAmB,CAAC,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,KAAK,CAAC;YACpB,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;YACtD,OAAO,EAAE,GAAG,CAAC;SACd,CAAC,CAAC;QACH,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAGD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAgED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CA4I7D"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,OAAO,EAIL,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAK/B,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,sBAAsB,iWAAuV,CAAC;AAG3X,eAAO,MAAM,uBAAuB;;;CAGnC,CAAC;AAGF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,GAAG,CAAC;QACX,MAAM,EAAE,GAAG,CAAC;KACb,CAAC,CAAC;IAEH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAGD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAgED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAuM7D"}