@vfarcic/dot-ai 0.5.1 → 0.7.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 (146) hide show
  1. package/dist/cli.d.ts +3 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/{src/cli.ts → dist/cli.js} +19 -26
  4. package/dist/core/claude.d.ts +42 -0
  5. package/dist/core/claude.d.ts.map +1 -0
  6. package/dist/core/claude.js +229 -0
  7. package/dist/core/deploy-operation.d.ts +38 -0
  8. package/dist/core/deploy-operation.d.ts.map +1 -0
  9. package/dist/core/deploy-operation.js +101 -0
  10. package/dist/core/discovery.d.ts +162 -0
  11. package/dist/core/discovery.d.ts.map +1 -0
  12. package/dist/core/discovery.js +758 -0
  13. package/dist/core/error-handling.d.ts +167 -0
  14. package/dist/core/error-handling.d.ts.map +1 -0
  15. package/dist/core/error-handling.js +399 -0
  16. package/dist/core/index.d.ts +42 -0
  17. package/dist/core/index.d.ts.map +1 -0
  18. package/dist/core/index.js +123 -0
  19. package/dist/core/kubernetes-utils.d.ts +38 -0
  20. package/dist/core/kubernetes-utils.d.ts.map +1 -0
  21. package/dist/core/kubernetes-utils.js +177 -0
  22. package/dist/core/memory.d.ts +45 -0
  23. package/dist/core/memory.d.ts.map +1 -0
  24. package/dist/core/memory.js +113 -0
  25. package/dist/core/schema.d.ts +187 -0
  26. package/dist/core/schema.d.ts.map +1 -0
  27. package/dist/core/schema.js +655 -0
  28. package/dist/core/session-utils.d.ts +29 -0
  29. package/dist/core/session-utils.d.ts.map +1 -0
  30. package/dist/core/session-utils.js +121 -0
  31. package/dist/core/workflow.d.ts +70 -0
  32. package/dist/core/workflow.d.ts.map +1 -0
  33. package/dist/core/workflow.js +161 -0
  34. package/dist/index.d.ts +15 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +32 -0
  37. package/dist/interfaces/cli.d.ts +74 -0
  38. package/dist/interfaces/cli.d.ts.map +1 -0
  39. package/dist/interfaces/cli.js +769 -0
  40. package/dist/interfaces/mcp.d.ts +30 -0
  41. package/dist/interfaces/mcp.d.ts.map +1 -0
  42. package/dist/interfaces/mcp.js +105 -0
  43. package/dist/mcp/server.d.ts +9 -0
  44. package/dist/mcp/server.d.ts.map +1 -0
  45. package/dist/mcp/server.js +151 -0
  46. package/dist/tools/answer-question.d.ts +27 -0
  47. package/dist/tools/answer-question.d.ts.map +1 -0
  48. package/dist/tools/answer-question.js +696 -0
  49. package/dist/tools/choose-solution.d.ts +23 -0
  50. package/dist/tools/choose-solution.d.ts.map +1 -0
  51. package/dist/tools/choose-solution.js +171 -0
  52. package/dist/tools/deploy-manifests.d.ts +25 -0
  53. package/dist/tools/deploy-manifests.d.ts.map +1 -0
  54. package/dist/tools/deploy-manifests.js +74 -0
  55. package/dist/tools/generate-manifests.d.ts +23 -0
  56. package/dist/tools/generate-manifests.d.ts.map +1 -0
  57. package/dist/tools/generate-manifests.js +424 -0
  58. package/dist/tools/index.d.ts +11 -0
  59. package/dist/tools/index.d.ts.map +1 -0
  60. package/dist/tools/index.js +34 -0
  61. package/dist/tools/recommend.d.ts +23 -0
  62. package/dist/tools/recommend.d.ts.map +1 -0
  63. package/dist/tools/recommend.js +332 -0
  64. package/package.json +124 -2
  65. package/.claude/commands/context-load.md +0 -11
  66. package/.claude/commands/context-save.md +0 -16
  67. package/.claude/commands/prd-done.md +0 -115
  68. package/.claude/commands/prd-get.md +0 -25
  69. package/.claude/commands/prd-start.md +0 -87
  70. package/.claude/commands/task-done.md +0 -77
  71. package/.claude/commands/tests-reminder.md +0 -32
  72. package/.claude/settings.local.json +0 -20
  73. package/.eslintrc.json +0 -25
  74. package/.github/workflows/ci.yml +0 -170
  75. package/.prettierrc.json +0 -10
  76. package/.teller.yml +0 -8
  77. package/CLAUDE.md +0 -162
  78. package/assets/images/logo.png +0 -0
  79. package/bin/dot-ai.ts +0 -47
  80. package/bin.js +0 -19
  81. package/destroy.sh +0 -45
  82. package/devbox.json +0 -13
  83. package/devbox.lock +0 -225
  84. package/docs/API.md +0 -449
  85. package/docs/CONTEXT.md +0 -49
  86. package/docs/DEVELOPMENT.md +0 -203
  87. package/docs/NEXT_STEPS.md +0 -97
  88. package/docs/STAGE_BASED_API.md +0 -97
  89. package/docs/cli-guide.md +0 -798
  90. package/docs/design.md +0 -750
  91. package/docs/discovery-engine.md +0 -515
  92. package/docs/error-handling.md +0 -429
  93. package/docs/function-registration.md +0 -157
  94. package/docs/mcp-guide.md +0 -416
  95. package/renovate.json +0 -51
  96. package/setup.sh +0 -111
  97. package/src/core/claude.ts +0 -280
  98. package/src/core/deploy-operation.ts +0 -127
  99. package/src/core/discovery.ts +0 -900
  100. package/src/core/error-handling.ts +0 -562
  101. package/src/core/index.ts +0 -143
  102. package/src/core/kubernetes-utils.ts +0 -218
  103. package/src/core/memory.ts +0 -148
  104. package/src/core/schema.ts +0 -830
  105. package/src/core/session-utils.ts +0 -97
  106. package/src/core/workflow.ts +0 -234
  107. package/src/index.ts +0 -18
  108. package/src/interfaces/cli.ts +0 -872
  109. package/src/interfaces/mcp.ts +0 -183
  110. package/src/mcp/server.ts +0 -131
  111. package/src/tools/answer-question.ts +0 -807
  112. package/src/tools/choose-solution.ts +0 -169
  113. package/src/tools/deploy-manifests.ts +0 -94
  114. package/src/tools/generate-manifests.ts +0 -502
  115. package/src/tools/index.ts +0 -41
  116. package/src/tools/recommend.ts +0 -370
  117. package/tests/__mocks__/@kubernetes/client-node.ts +0 -106
  118. package/tests/build-system.test.ts +0 -345
  119. package/tests/configuration.test.ts +0 -226
  120. package/tests/core/deploy-operation.test.ts +0 -38
  121. package/tests/core/discovery.test.ts +0 -1648
  122. package/tests/core/error-handling.test.ts +0 -632
  123. package/tests/core/schema.test.ts +0 -1658
  124. package/tests/core/session-utils.test.ts +0 -245
  125. package/tests/core.test.ts +0 -439
  126. package/tests/fixtures/configmap-no-labels.yaml +0 -8
  127. package/tests/fixtures/crossplane-app-configuration.yaml +0 -6
  128. package/tests/fixtures/crossplane-providers.yaml +0 -45
  129. package/tests/fixtures/crossplane-rbac.yaml +0 -48
  130. package/tests/fixtures/invalid-configmap.yaml +0 -8
  131. package/tests/fixtures/invalid-deployment.yaml +0 -17
  132. package/tests/fixtures/test-deployment.yaml +0 -28
  133. package/tests/fixtures/valid-configmap.yaml +0 -15
  134. package/tests/infrastructure.test.ts +0 -426
  135. package/tests/interfaces/cli.test.ts +0 -1036
  136. package/tests/interfaces/mcp.test.ts +0 -139
  137. package/tests/kubernetes-utils.test.ts +0 -200
  138. package/tests/mcp/server.test.ts +0 -126
  139. package/tests/setup.ts +0 -31
  140. package/tests/tools/answer-question.test.ts +0 -367
  141. package/tests/tools/choose-solution.test.ts +0 -481
  142. package/tests/tools/deploy-manifests.test.ts +0 -185
  143. package/tests/tools/generate-manifests.test.ts +0 -441
  144. package/tests/tools/index.test.ts +0 -111
  145. package/tests/tools/recommend.test.ts +0 -180
  146. package/tsconfig.json +0 -34
@@ -1,180 +0,0 @@
1
- /**
2
- * Tests for Recommend Tool
3
- *
4
- * Tests the workflow guidance improvements for the recommend tool
5
- */
6
-
7
- import {
8
- RECOMMEND_TOOL_NAME,
9
- RECOMMEND_TOOL_DESCRIPTION,
10
- RECOMMEND_TOOL_INPUT_SCHEMA,
11
- handleRecommendTool
12
- } from '../../src/tools/recommend';
13
- import { DotAI } from '../../src/core';
14
- import { ResourceRecommender } from '../../src/core/schema';
15
-
16
- // Mock dependencies
17
- jest.mock('../../src/core');
18
- jest.mock('../../src/core/schema');
19
- jest.mock('../../src/core/error-handling');
20
- jest.mock('../../src/core/claude');
21
-
22
- describe('Recommend Tool', () => {
23
- describe('Tool Metadata', () => {
24
- test('should have essential properties only', () => {
25
- expect(RECOMMEND_TOOL_NAME).toBe('recommend');
26
- expect(RECOMMEND_TOOL_DESCRIPTION).toContain('Deploy, create, run, or setup applications');
27
- expect(RECOMMEND_TOOL_INPUT_SCHEMA).toBeDefined();
28
- });
29
-
30
- test('should have concise user-facing description', () => {
31
- expect(RECOMMEND_TOOL_DESCRIPTION).toContain('Deploy, create, run, or setup applications');
32
- expect(RECOMMEND_TOOL_DESCRIPTION).toContain('Ask the user to describe their application first');
33
- expect(RECOMMEND_TOOL_DESCRIPTION.length).toBeLessThan(200); // Should be concise
34
- });
35
-
36
- test('should have valid input schema', () => {
37
- expect(RECOMMEND_TOOL_INPUT_SCHEMA.intent).toBeDefined();
38
- });
39
- });
40
-
41
- describe('Tool Handler - MCP Connectivity Fix Verification', () => {
42
- test('should verify the fix: function parameters passed correctly', () => {
43
- // This test verifies that our MCP connectivity fix is in place
44
- // The fix changed from passing raw data to passing functions
45
-
46
- // Read the source code to verify the fix
47
- const fs = require('fs');
48
- const path = require('path');
49
- const sourceCode = fs.readFileSync(
50
- path.join(__dirname, '../../src/tools/recommend.ts'),
51
- 'utf8'
52
- );
53
-
54
- // Verify the fix: discoverResourcesFn should be defined as a function
55
- expect(sourceCode).toContain('const discoverResourcesFn = async () => {');
56
- expect(sourceCode).toContain('return await dotAI.discovery.discoverResources();');
57
-
58
- // Verify the function is passed to findBestSolutions (not raw data)
59
- expect(sourceCode).toContain('discoverResourcesFn,');
60
- expect(sourceCode).toContain('explainResourceFn');
61
-
62
- // Verify we're not passing raw data anymore (the old broken pattern)
63
- expect(sourceCode).not.toContain('await dotAI.discovery.discoverResources(),');
64
- expect(sourceCode).not.toContain('availableResources,'); // Old variable name
65
- });
66
-
67
- test('should confirm CLI and MCP patterns now match', () => {
68
- // Verify both CLI and MCP use the same pattern for calling ResourceRecommender
69
- const fs = require('fs');
70
- const path = require('path');
71
-
72
- const mcpCode = fs.readFileSync(
73
- path.join(__dirname, '../../src/tools/recommend.ts'),
74
- 'utf8'
75
- );
76
-
77
- const cliCode = fs.readFileSync(
78
- path.join(__dirname, '../../src/interfaces/cli.ts'),
79
- 'utf8'
80
- );
81
-
82
- // Both should use function-based approach
83
- expect(mcpCode).toContain('const discoverResourcesFn = async () => {');
84
- expect(cliCode).toContain('findBestSolutions(intent, discoverResourcesFn, explainResourceFn)'); // CLI uses same pattern
85
-
86
- // MCP should no longer have the broken pattern
87
- expect(mcpCode).not.toContain('const availableResources = await dotAI.discovery.discoverResources();');
88
- });
89
- });
90
-
91
- describe('Intent Validation', () => {
92
- test('should include intent validation in source code', () => {
93
- // Verify intent validation is implemented in the source
94
- const fs = require('fs');
95
- const path = require('path');
96
- const sourceCode = fs.readFileSync(
97
- path.join(__dirname, '../../src/tools/recommend.ts'),
98
- 'utf8'
99
- );
100
-
101
- // Check that validation function exists
102
- expect(sourceCode).toContain('async function validateIntentWithAI');
103
- expect(sourceCode).toContain('intent-validation.md');
104
-
105
- // Check that validation is called in the handler
106
- expect(sourceCode).toContain('await validateIntentWithAI(args.intent, claudeIntegration)');
107
- expect(sourceCode).toContain('Intent needs more specificity');
108
- });
109
-
110
- test('should validate prompt file exists', () => {
111
- const fs = require('fs');
112
- const path = require('path');
113
-
114
- const promptPath = path.join(__dirname, '../../prompts/intent-validation.md');
115
- expect(fs.existsSync(promptPath)).toBe(true);
116
-
117
- const promptContent = fs.readFileSync(promptPath, 'utf8');
118
- expect(promptContent).toContain('Intent Validation for Kubernetes Deployment Recommendations');
119
- expect(promptContent).toContain('{intent}');
120
- expect(promptContent).toContain('isSpecific');
121
- expect(promptContent).toContain('suggestions');
122
- });
123
-
124
- test('should handle AI validation gracefully on service failures', () => {
125
- const fs = require('fs');
126
- const path = require('path');
127
- const sourceCode = fs.readFileSync(
128
- path.join(__dirname, '../../src/tools/recommend.ts'),
129
- 'utf8'
130
- );
131
-
132
- // Verify error handling continues on AI service issues
133
- expect(sourceCode).toContain('console.warn(\'Intent validation failed, continuing with original intent:\', error);');
134
- expect(sourceCode).toContain('logger.warn(\'Intent validation failed, continuing with recommendation\'');
135
- });
136
-
137
- test('should validate proper error structure for vague intents', () => {
138
- const fs = require('fs');
139
- const path = require('path');
140
- const sourceCode = fs.readFileSync(
141
- path.join(__dirname, '../../src/tools/recommend.ts'),
142
- 'utf8'
143
- );
144
-
145
- // Check that validation errors are properly structured
146
- expect(sourceCode).toContain('ErrorCategory.VALIDATION');
147
- expect(sourceCode).toContain('ErrorSeverity.MEDIUM');
148
- expect(sourceCode).toContain('intent_validation');
149
- expect(sourceCode).toContain('Provide more specific details about your deployment');
150
- });
151
-
152
- test('should include ClaudeIntegration import', () => {
153
- const fs = require('fs');
154
- const path = require('path');
155
- const sourceCode = fs.readFileSync(
156
- path.join(__dirname, '../../src/tools/recommend.ts'),
157
- 'utf8'
158
- );
159
-
160
- expect(sourceCode).toContain('import { ClaudeIntegration } from \'../core/claude\'');
161
- });
162
-
163
- test('should validate before expensive resource discovery', () => {
164
- const fs = require('fs');
165
- const path = require('path');
166
- const sourceCode = fs.readFileSync(
167
- path.join(__dirname, '../../src/tools/recommend.ts'),
168
- 'utf8'
169
- );
170
-
171
- // Validation should happen before ResourceRecommender initialization
172
- const validationIndex = sourceCode.indexOf('await validateIntentWithAI');
173
- const recommenderIndex = sourceCode.indexOf('new ResourceRecommender');
174
-
175
- expect(validationIndex).toBeGreaterThan(-1);
176
- expect(recommenderIndex).toBeGreaterThan(-1);
177
- expect(validationIndex).toBeLessThan(recommenderIndex);
178
- });
179
- });
180
- });
package/tsconfig.json DELETED
@@ -1,34 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "commonjs",
5
- "lib": ["ES2022"],
6
- "outDir": "./dist",
7
- "rootDir": "./src",
8
- "strict": true,
9
- "noImplicitAny": true,
10
- "strictNullChecks": true,
11
- "noImplicitReturns": true,
12
- "esModuleInterop": true,
13
- "skipLibCheck": true,
14
- "forceConsistentCasingInFileNames": true,
15
- "moduleResolution": "node",
16
- "resolveJsonModule": true,
17
- "declaration": true,
18
- "declarationMap": true,
19
- "sourceMap": true,
20
- "removeComments": false,
21
- "experimentalDecorators": true,
22
- "emitDecoratorMetadata": true
23
- },
24
- "include": [
25
- "src/**/*"
26
- ],
27
- "exclude": [
28
- "node_modules",
29
- "dist",
30
- "coverage",
31
- "**/*.test.ts",
32
- "**/*.spec.ts"
33
- ]
34
- }