@vfarcic/dot-ai 0.124.0 → 0.126.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.
- package/assets/project-setup/templates/.github/CODEOWNERS.hbs +25 -0
- package/assets/project-setup/templates/.github/FUNDING.yml.hbs +35 -0
- package/assets/project-setup/templates/.github/ISSUE_TEMPLATE/bug_report.yml.hbs +175 -0
- package/assets/project-setup/templates/.github/ISSUE_TEMPLATE/config.yml.hbs +32 -0
- package/assets/project-setup/templates/.github/ISSUE_TEMPLATE/feature_request.yml.hbs +134 -0
- package/assets/project-setup/templates/.github/PULL_REQUEST_TEMPLATE.md.hbs +172 -0
- package/assets/project-setup/templates/.github/labeler.yml.hbs +123 -0
- package/assets/project-setup/templates/.github/release.yml.hbs +51 -0
- package/assets/project-setup/templates/.github/workflows/labeler.yml.hbs +21 -0
- package/assets/project-setup/templates/.github/workflows/scorecard.yml.hbs +71 -0
- package/assets/project-setup/templates/.github/workflows/stale.yml.hbs +57 -0
- package/dist/core/ai-provider-factory.d.ts.map +1 -1
- package/dist/core/ai-provider-factory.js +22 -5
- package/dist/core/ai-provider.interface.d.ts +16 -0
- package/dist/core/ai-provider.interface.d.ts.map +1 -1
- package/dist/core/capability-scan-workflow.d.ts +4 -9
- package/dist/core/capability-scan-workflow.d.ts.map +1 -1
- package/dist/core/capability-scan-workflow.js +203 -456
- package/dist/core/discovery.d.ts +6 -0
- package/dist/core/discovery.d.ts.map +1 -1
- package/dist/core/discovery.js +39 -3
- package/dist/core/embedding-service.d.ts +9 -36
- package/dist/core/embedding-service.d.ts.map +1 -1
- package/dist/core/embedding-service.js +137 -246
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +2 -2
- package/dist/core/kubernetes-utils.d.ts +1 -0
- package/dist/core/kubernetes-utils.d.ts.map +1 -1
- package/dist/core/kubernetes-utils.js +53 -48
- package/dist/core/model-config.d.ts +2 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +3 -1
- package/dist/core/providers/anthropic-provider.d.ts.map +1 -1
- package/dist/core/providers/anthropic-provider.js +352 -282
- package/dist/core/providers/provider-debug-utils.d.ts +4 -0
- package/dist/core/providers/provider-debug-utils.d.ts.map +1 -1
- package/dist/core/providers/provider-debug-utils.js +25 -3
- package/dist/core/providers/vercel-provider.d.ts +1 -0
- package/dist/core/providers/vercel-provider.d.ts.map +1 -1
- package/dist/core/providers/vercel-provider.js +412 -345
- package/dist/core/tracing/ai-tracing.d.ts +80 -0
- package/dist/core/tracing/ai-tracing.d.ts.map +1 -0
- package/dist/core/tracing/ai-tracing.js +122 -0
- package/dist/core/tracing/config.d.ts +15 -0
- package/dist/core/tracing/config.d.ts.map +1 -0
- package/dist/core/tracing/config.js +133 -0
- package/dist/core/tracing/http-tracing.d.ts +28 -0
- package/dist/core/tracing/http-tracing.d.ts.map +1 -0
- package/dist/core/tracing/http-tracing.js +119 -0
- package/dist/core/tracing/index.d.ts +14 -0
- package/dist/core/tracing/index.d.ts.map +1 -0
- package/dist/core/tracing/index.js +40 -0
- package/dist/core/tracing/k8s-tracing.d.ts +57 -0
- package/dist/core/tracing/k8s-tracing.d.ts.map +1 -0
- package/dist/core/tracing/k8s-tracing.js +155 -0
- package/dist/core/tracing/qdrant-tracing.d.ts +68 -0
- package/dist/core/tracing/qdrant-tracing.d.ts.map +1 -0
- package/dist/core/tracing/qdrant-tracing.js +102 -0
- package/dist/core/tracing/tool-tracing.d.ts +31 -0
- package/dist/core/tracing/tool-tracing.d.ts.map +1 -0
- package/dist/core/tracing/tool-tracing.js +76 -0
- package/dist/core/tracing/tracer.d.ts +21 -0
- package/dist/core/tracing/tracer.d.ts.map +1 -0
- package/dist/core/tracing/tracer.js +215 -0
- package/dist/core/tracing/types.d.ts +86 -0
- package/dist/core/tracing/types.d.ts.map +1 -0
- package/dist/core/tracing/types.js +41 -0
- package/dist/core/unified-creation-session.js +1 -1
- package/dist/core/vector-db-service.d.ts.map +1 -1
- package/dist/core/vector-db-service.js +238 -163
- package/dist/interfaces/mcp.d.ts.map +1 -1
- package/dist/interfaces/mcp.js +71 -43
- package/dist/mcp/server.js +12 -2
- package/dist/tools/organizational-data.d.ts.map +1 -1
- package/dist/tools/organizational-data.js +2 -4
- package/dist/tools/version.d.ts +12 -1
- package/dist/tools/version.d.ts.map +1 -1
- package/dist/tools/version.js +24 -4
- package/package.json +11 -1
package/dist/core/discovery.d.ts
CHANGED
|
@@ -150,6 +150,12 @@ export declare class KubernetesDiscovery {
|
|
|
150
150
|
explainResource(resource: string, options?: {
|
|
151
151
|
field?: string;
|
|
152
152
|
}): Promise<string>;
|
|
153
|
+
/**
|
|
154
|
+
* Get CRD definition with cleaned-up YAML (removes massive annotations and unnecessary fields)
|
|
155
|
+
* @param crdName - Name of the CRD (e.g., 'workflows.argoproj.io')
|
|
156
|
+
* @returns Cleaned YAML string suitable for AI prompts
|
|
157
|
+
*/
|
|
158
|
+
getCRDDefinition(crdName: string): Promise<string>;
|
|
153
159
|
fingerprintCluster(): Promise<ClusterFingerprint>;
|
|
154
160
|
private getResourceCounts;
|
|
155
161
|
private getNetworkingInfo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/core/discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,GAAG,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/core/discovery.ts"],"names":[],"mappings":"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"}
|
package/dist/core/discovery.js
CHANGED
|
@@ -42,7 +42,9 @@ exports.KubernetesDiscovery = void 0;
|
|
|
42
42
|
const k8s = __importStar(require("@kubernetes/client-node"));
|
|
43
43
|
const path = __importStar(require("path"));
|
|
44
44
|
const os = __importStar(require("os"));
|
|
45
|
+
const yaml = __importStar(require("yaml"));
|
|
45
46
|
const kubernetes_utils_1 = require("./kubernetes-utils");
|
|
47
|
+
const tracing_1 = require("./tracing");
|
|
46
48
|
class KubernetesDiscovery {
|
|
47
49
|
kc;
|
|
48
50
|
k8sApi;
|
|
@@ -141,7 +143,7 @@ class KubernetesDiscovery {
|
|
|
141
143
|
// Try to get server version
|
|
142
144
|
let version;
|
|
143
145
|
try {
|
|
144
|
-
const versionClient = this.kc.makeApiClient(k8s.VersionApi);
|
|
146
|
+
const versionClient = (0, tracing_1.createTracedK8sClient)(this.kc.makeApiClient(k8s.VersionApi), 'VersionApi');
|
|
145
147
|
const versionResponse = await versionClient.getCode();
|
|
146
148
|
version = versionResponse.gitVersion;
|
|
147
149
|
}
|
|
@@ -187,8 +189,8 @@ class KubernetesDiscovery {
|
|
|
187
189
|
// Priority 3: Default kubeconfig location
|
|
188
190
|
this.kc.loadFromDefault();
|
|
189
191
|
}
|
|
190
|
-
// Create API clients
|
|
191
|
-
this.k8sApi = this.kc.makeApiClient(k8s.CoreV1Api);
|
|
192
|
+
// Create API clients with tracing
|
|
193
|
+
this.k8sApi = (0, tracing_1.createTracedK8sClient)(this.kc.makeApiClient(k8s.CoreV1Api), 'CoreV1Api');
|
|
192
194
|
// Test the connection by making a simple API call
|
|
193
195
|
try {
|
|
194
196
|
await this.k8sApi.listNamespace();
|
|
@@ -461,6 +463,40 @@ class KubernetesDiscovery {
|
|
|
461
463
|
throw new Error(`Failed to explain resource '${resource}': ${error instanceof Error ? error.message : 'Unknown error'}. Please check resource name and cluster connectivity.`);
|
|
462
464
|
}
|
|
463
465
|
}
|
|
466
|
+
/**
|
|
467
|
+
* Get CRD definition with cleaned-up YAML (removes massive annotations and unnecessary fields)
|
|
468
|
+
* @param crdName - Name of the CRD (e.g., 'workflows.argoproj.io')
|
|
469
|
+
* @returns Cleaned YAML string suitable for AI prompts
|
|
470
|
+
*/
|
|
471
|
+
async getCRDDefinition(crdName) {
|
|
472
|
+
if (!this.connected) {
|
|
473
|
+
throw new Error('Not connected to cluster');
|
|
474
|
+
}
|
|
475
|
+
try {
|
|
476
|
+
const yamlOutput = await this.executeKubectl(['get', 'crd', crdName, '-o', 'yaml'], { kubeconfig: this.kubeconfigPath });
|
|
477
|
+
// Parse YAML
|
|
478
|
+
const crdObject = yaml.parse(yamlOutput);
|
|
479
|
+
// Remove massive last-applied-configuration annotation
|
|
480
|
+
if (crdObject.metadata?.annotations) {
|
|
481
|
+
delete crdObject.metadata.annotations['kubectl.kubernetes.io/last-applied-configuration'];
|
|
482
|
+
}
|
|
483
|
+
// Remove status section (not needed for schema understanding)
|
|
484
|
+
delete crdObject.status;
|
|
485
|
+
// Remove unnecessary metadata fields
|
|
486
|
+
if (crdObject.metadata) {
|
|
487
|
+
delete crdObject.metadata.creationTimestamp;
|
|
488
|
+
delete crdObject.metadata.resourceVersion;
|
|
489
|
+
delete crdObject.metadata.uid;
|
|
490
|
+
delete crdObject.metadata.managedFields;
|
|
491
|
+
delete crdObject.metadata.generation;
|
|
492
|
+
}
|
|
493
|
+
// Re-serialize to clean YAML
|
|
494
|
+
return yaml.stringify(crdObject);
|
|
495
|
+
}
|
|
496
|
+
catch (error) {
|
|
497
|
+
throw new Error(`Failed to get CRD definition for '${crdName}': ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
464
500
|
async fingerprintCluster() {
|
|
465
501
|
if (!this.connected) {
|
|
466
502
|
throw new Error('Not connected to cluster');
|
|
@@ -18,52 +18,25 @@ export interface EmbeddingProvider {
|
|
|
18
18
|
getModel(): string;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
21
|
+
* Unified Vercel AI SDK Embedding Provider
|
|
22
|
+
* Supports OpenAI, Google, and Mistral through Vercel AI SDK
|
|
23
23
|
*/
|
|
24
|
-
export declare class
|
|
25
|
-
private
|
|
26
|
-
private model;
|
|
27
|
-
private dimensions;
|
|
28
|
-
private available;
|
|
29
|
-
constructor(config?: EmbeddingConfig);
|
|
30
|
-
generateEmbedding(text: string): Promise<number[]>;
|
|
31
|
-
generateEmbeddings(texts: string[]): Promise<number[][]>;
|
|
32
|
-
isAvailable(): boolean;
|
|
33
|
-
getDimensions(): number;
|
|
34
|
-
getModel(): string;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Google Embedding Provider
|
|
38
|
-
* Optional provider using Google's text-embedding-004 model
|
|
39
|
-
*/
|
|
40
|
-
export declare class GoogleEmbeddingProvider implements EmbeddingProvider {
|
|
41
|
-
private apiKey;
|
|
42
|
-
private model;
|
|
43
|
-
private dimensions;
|
|
44
|
-
private available;
|
|
45
|
-
constructor(config?: EmbeddingConfig);
|
|
46
|
-
generateEmbedding(text: string): Promise<number[]>;
|
|
47
|
-
generateEmbeddings(texts: string[]): Promise<number[][]>;
|
|
48
|
-
isAvailable(): boolean;
|
|
49
|
-
getDimensions(): number;
|
|
50
|
-
getModel(): string;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Mistral Embedding Provider
|
|
54
|
-
* Optional provider using Mistral's text-embedding-v1 model
|
|
55
|
-
*/
|
|
56
|
-
export declare class MistralEmbeddingProvider implements EmbeddingProvider {
|
|
24
|
+
export declare class VercelEmbeddingProvider implements EmbeddingProvider {
|
|
25
|
+
private providerType;
|
|
57
26
|
private apiKey;
|
|
58
27
|
private model;
|
|
59
28
|
private dimensions;
|
|
60
29
|
private available;
|
|
61
|
-
|
|
30
|
+
private modelInstance;
|
|
31
|
+
constructor(config: EmbeddingConfig & {
|
|
32
|
+
provider: 'openai' | 'google' | 'mistral';
|
|
33
|
+
});
|
|
62
34
|
generateEmbedding(text: string): Promise<number[]>;
|
|
63
35
|
generateEmbeddings(texts: string[]): Promise<number[][]>;
|
|
64
36
|
isAvailable(): boolean;
|
|
65
37
|
getDimensions(): number;
|
|
66
38
|
getModel(): string;
|
|
39
|
+
getProviderType(): string;
|
|
67
40
|
}
|
|
68
41
|
/**
|
|
69
42
|
* Main Embedding Service
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-service.d.ts","sourceRoot":"","sources":["../../src/core/embedding-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"embedding-service.d.ts","sourceRoot":"","sources":["../../src/core/embedding-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzD,WAAW,IAAI,OAAO,CAAC;IACvB,aAAa,IAAI,MAAM,CAAC;IACxB,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,aAAa,CAAM;gBAEf,MAAM,EAAE,eAAe,GAAG;QAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE;IAyD7E,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiDlD,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IA8D9D,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,QAAQ,IAAI,MAAM;IAIlB,eAAe,IAAI,MAAM;CAG1B;AA0BD;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA2B;gBAE/B,MAAM,GAAE,eAAoB;IAKxC;;;OAGG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAaxD;;;OAGG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAc9D;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,SAAS,IAAI;QACX,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IA4BD;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE;QAC/B,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,MAAM;CASX"}
|
|
@@ -5,155 +5,122 @@
|
|
|
5
5
|
* Optional semantic search enhancement for pattern matching.
|
|
6
6
|
* Gracefully falls back to keyword-only search when embedding providers are not available.
|
|
7
7
|
*/
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.EmbeddingService = exports.
|
|
13
|
-
const openai_1 = __importDefault(require("openai"));
|
|
9
|
+
exports.EmbeddingService = exports.VercelEmbeddingProvider = void 0;
|
|
14
10
|
const google_1 = require("@ai-sdk/google");
|
|
15
11
|
const mistral_1 = require("@ai-sdk/mistral");
|
|
12
|
+
const openai_1 = require("@ai-sdk/openai");
|
|
16
13
|
const ai_1 = require("ai");
|
|
14
|
+
const tracing_1 = require("./tracing");
|
|
17
15
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
16
|
+
* Unified Vercel AI SDK Embedding Provider
|
|
17
|
+
* Supports OpenAI, Google, and Mistral through Vercel AI SDK
|
|
20
18
|
*/
|
|
21
|
-
class
|
|
22
|
-
|
|
19
|
+
class VercelEmbeddingProvider {
|
|
20
|
+
providerType;
|
|
21
|
+
apiKey;
|
|
23
22
|
model;
|
|
24
23
|
dimensions;
|
|
25
24
|
available;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.
|
|
29
|
-
this.dimensions = config.dimensions || 1536; // text-embedding-3-small default
|
|
25
|
+
modelInstance;
|
|
26
|
+
constructor(config) {
|
|
27
|
+
this.providerType = config.provider;
|
|
30
28
|
this.available = false;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
this.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
29
|
+
// Get API key based on provider
|
|
30
|
+
switch (this.providerType) {
|
|
31
|
+
case 'openai':
|
|
32
|
+
this.apiKey = config.apiKey || process.env.CUSTOM_EMBEDDINGS_API_KEY || process.env.OPENAI_API_KEY || '';
|
|
33
|
+
this.model = config.model || 'text-embedding-3-small';
|
|
34
|
+
this.dimensions = config.dimensions || 1536;
|
|
35
|
+
break;
|
|
36
|
+
case 'google':
|
|
37
|
+
this.apiKey = config.apiKey || process.env.GOOGLE_API_KEY || '';
|
|
38
|
+
this.model = config.model || 'text-embedding-004';
|
|
39
|
+
this.dimensions = config.dimensions || 768;
|
|
40
|
+
break;
|
|
41
|
+
case 'mistral':
|
|
42
|
+
this.apiKey = config.apiKey || process.env.MISTRAL_API_KEY || '';
|
|
43
|
+
this.model = config.model || 'mistral-embed';
|
|
44
|
+
this.dimensions = config.dimensions || 1024;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
if (!this.apiKey) {
|
|
48
|
+
this.available = false;
|
|
49
|
+
return;
|
|
49
50
|
}
|
|
50
51
|
try {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
52
|
+
// Initialize model instance based on provider
|
|
53
|
+
switch (this.providerType) {
|
|
54
|
+
case 'openai': {
|
|
55
|
+
const baseURL = process.env.CUSTOM_EMBEDDINGS_BASE_URL;
|
|
56
|
+
const openai = (0, openai_1.createOpenAI)({
|
|
57
|
+
apiKey: this.apiKey,
|
|
58
|
+
...(baseURL && { baseURL })
|
|
59
|
+
});
|
|
60
|
+
this.modelInstance = openai.textEmbedding(this.model);
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
case 'google':
|
|
64
|
+
// Set environment variable that Google SDK expects
|
|
65
|
+
process.env.GOOGLE_GENERATIVE_AI_API_KEY = this.apiKey;
|
|
66
|
+
this.modelInstance = google_1.google.textEmbedding(this.model);
|
|
67
|
+
break;
|
|
68
|
+
case 'mistral': {
|
|
69
|
+
const mistral = (0, mistral_1.createMistral)({ apiKey: this.apiKey });
|
|
70
|
+
this.modelInstance = mistral.textEmbedding(this.model);
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
64
73
|
}
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
async generateEmbeddings(texts) {
|
|
69
|
-
if (!this.isAvailable()) {
|
|
70
|
-
throw new Error('OpenAI embedding provider not available');
|
|
71
|
-
}
|
|
72
|
-
if (!texts || texts.length === 0) {
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
const validTexts = texts
|
|
76
|
-
.map(t => t?.trim())
|
|
77
|
-
.filter(t => t && t.length > 0);
|
|
78
|
-
if (validTexts.length === 0) {
|
|
79
|
-
return [];
|
|
80
|
-
}
|
|
81
|
-
try {
|
|
82
|
-
const response = await this.client.embeddings.create({
|
|
83
|
-
model: this.model,
|
|
84
|
-
input: validTexts,
|
|
85
|
-
encoding_format: 'float'
|
|
86
|
-
});
|
|
87
|
-
return response.data.map(item => item.embedding);
|
|
74
|
+
this.available = true;
|
|
88
75
|
}
|
|
89
76
|
catch (error) {
|
|
90
|
-
|
|
91
|
-
throw new Error(`OpenAI batch embedding failed: ${error.message}`);
|
|
92
|
-
}
|
|
93
|
-
throw new Error(`OpenAI batch embedding failed: ${String(error)}`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
isAvailable() {
|
|
97
|
-
return this.available && this.client !== null;
|
|
98
|
-
}
|
|
99
|
-
getDimensions() {
|
|
100
|
-
return this.dimensions;
|
|
101
|
-
}
|
|
102
|
-
getModel() {
|
|
103
|
-
return this.model;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
exports.OpenAIEmbeddingProvider = OpenAIEmbeddingProvider;
|
|
107
|
-
/**
|
|
108
|
-
* Google Embedding Provider
|
|
109
|
-
* Optional provider using Google's text-embedding-004 model
|
|
110
|
-
*/
|
|
111
|
-
class GoogleEmbeddingProvider {
|
|
112
|
-
apiKey = null;
|
|
113
|
-
model;
|
|
114
|
-
dimensions;
|
|
115
|
-
available;
|
|
116
|
-
constructor(config = {}) {
|
|
117
|
-
this.apiKey = config.apiKey || process.env.GOOGLE_API_KEY || null;
|
|
118
|
-
this.model = config.model || 'text-embedding-004';
|
|
119
|
-
this.dimensions = config.dimensions || 768; // text-embedding-004 default
|
|
120
|
-
this.available = !!this.apiKey;
|
|
121
|
-
// Set the environment variable that Google SDK expects
|
|
122
|
-
if (this.apiKey) {
|
|
123
|
-
process.env.GOOGLE_GENERATIVE_AI_API_KEY = this.apiKey;
|
|
77
|
+
this.available = false;
|
|
124
78
|
}
|
|
125
79
|
}
|
|
126
80
|
async generateEmbedding(text) {
|
|
127
81
|
if (!this.isAvailable()) {
|
|
128
|
-
throw new Error(
|
|
82
|
+
throw new Error(`${this.providerType} embedding provider not available`);
|
|
129
83
|
}
|
|
130
84
|
if (!text || text.trim().length === 0) {
|
|
131
85
|
throw new Error('Text cannot be empty for embedding generation');
|
|
132
86
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
87
|
+
// Wrap embed() call with OpenTelemetry tracing
|
|
88
|
+
return await (0, tracing_1.withAITracing)({
|
|
89
|
+
provider: this.providerType,
|
|
90
|
+
model: this.model,
|
|
91
|
+
operation: 'embeddings'
|
|
92
|
+
}, async () => {
|
|
93
|
+
try {
|
|
94
|
+
const embedOptions = {
|
|
95
|
+
model: this.modelInstance,
|
|
96
|
+
value: text.trim()
|
|
97
|
+
};
|
|
98
|
+
// Add Google-specific options
|
|
99
|
+
if (this.providerType === 'google') {
|
|
100
|
+
embedOptions.providerOptions = {
|
|
101
|
+
google: {
|
|
102
|
+
outputDimensionality: this.dimensions,
|
|
103
|
+
taskType: 'SEMANTIC_SIMILARITY'
|
|
104
|
+
}
|
|
105
|
+
};
|
|
143
106
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
catch (error) {
|
|
148
|
-
if (error instanceof Error) {
|
|
149
|
-
throw new Error(`Google embedding failed: ${error.message}`);
|
|
107
|
+
const result = await (0, ai_1.embed)(embedOptions);
|
|
108
|
+
return result.embedding;
|
|
150
109
|
}
|
|
151
|
-
|
|
152
|
-
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (error instanceof Error) {
|
|
112
|
+
throw new Error(`${this.providerType} embedding failed: ${error.message}`);
|
|
113
|
+
}
|
|
114
|
+
throw new Error(`${this.providerType} embedding failed: ${String(error)}`);
|
|
115
|
+
}
|
|
116
|
+
}, (embedding) => ({
|
|
117
|
+
embeddingCount: 1,
|
|
118
|
+
embeddingDimensions: embedding.length
|
|
119
|
+
}));
|
|
153
120
|
}
|
|
154
121
|
async generateEmbeddings(texts) {
|
|
155
122
|
if (!this.isAvailable()) {
|
|
156
|
-
throw new Error(
|
|
123
|
+
throw new Error(`${this.providerType} embedding provider not available`);
|
|
157
124
|
}
|
|
158
125
|
if (!texts || texts.length === 0) {
|
|
159
126
|
return [];
|
|
@@ -164,26 +131,41 @@ class GoogleEmbeddingProvider {
|
|
|
164
131
|
if (validTexts.length === 0) {
|
|
165
132
|
return [];
|
|
166
133
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
134
|
+
// Wrap batch embed calls with OpenTelemetry tracing
|
|
135
|
+
return await (0, tracing_1.withAITracing)({
|
|
136
|
+
provider: this.providerType,
|
|
137
|
+
model: this.model,
|
|
138
|
+
operation: 'embeddings'
|
|
139
|
+
}, async () => {
|
|
140
|
+
try {
|
|
141
|
+
const results = await Promise.all(validTexts.map(text => {
|
|
142
|
+
const embedOptions = {
|
|
143
|
+
model: this.modelInstance,
|
|
144
|
+
value: text
|
|
145
|
+
};
|
|
146
|
+
// Add Google-specific options
|
|
147
|
+
if (this.providerType === 'google') {
|
|
148
|
+
embedOptions.providerOptions = {
|
|
149
|
+
google: {
|
|
150
|
+
outputDimensionality: this.dimensions,
|
|
151
|
+
taskType: 'SEMANTIC_SIMILARITY'
|
|
152
|
+
}
|
|
153
|
+
};
|
|
176
154
|
}
|
|
155
|
+
return (0, ai_1.embed)(embedOptions);
|
|
156
|
+
}));
|
|
157
|
+
return results.map(result => result.embedding);
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (error instanceof Error) {
|
|
161
|
+
throw new Error(`${this.providerType} batch embedding failed: ${error.message}`);
|
|
177
162
|
}
|
|
178
|
-
|
|
179
|
-
return results.map(result => result.embedding);
|
|
180
|
-
}
|
|
181
|
-
catch (error) {
|
|
182
|
-
if (error instanceof Error) {
|
|
183
|
-
throw new Error(`Google batch embedding failed: ${error.message}`);
|
|
163
|
+
throw new Error(`${this.providerType} batch embedding failed: ${String(error)}`);
|
|
184
164
|
}
|
|
185
|
-
|
|
186
|
-
|
|
165
|
+
}, (embeddings) => ({
|
|
166
|
+
embeddingCount: embeddings.length,
|
|
167
|
+
embeddingDimensions: embeddings[0]?.length || this.dimensions
|
|
168
|
+
}));
|
|
187
169
|
}
|
|
188
170
|
isAvailable() {
|
|
189
171
|
return this.available;
|
|
@@ -194,109 +176,30 @@ class GoogleEmbeddingProvider {
|
|
|
194
176
|
getModel() {
|
|
195
177
|
return this.model;
|
|
196
178
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Mistral Embedding Provider
|
|
201
|
-
* Optional provider using Mistral's text-embedding-v1 model
|
|
202
|
-
*/
|
|
203
|
-
class MistralEmbeddingProvider {
|
|
204
|
-
apiKey = null;
|
|
205
|
-
model;
|
|
206
|
-
dimensions;
|
|
207
|
-
available;
|
|
208
|
-
constructor(config = {}) {
|
|
209
|
-
this.apiKey = config.apiKey || process.env.MISTRAL_API_KEY || null;
|
|
210
|
-
this.model = config.model || 'mistral-embed';
|
|
211
|
-
this.dimensions = config.dimensions || 1024; // mistral-embed default
|
|
212
|
-
this.available = !!this.apiKey;
|
|
213
|
-
}
|
|
214
|
-
async generateEmbedding(text) {
|
|
215
|
-
if (!this.isAvailable()) {
|
|
216
|
-
throw new Error('Mistral embedding provider not available');
|
|
217
|
-
}
|
|
218
|
-
if (!text || text.trim().length === 0) {
|
|
219
|
-
throw new Error('Text cannot be empty for embedding generation');
|
|
220
|
-
}
|
|
221
|
-
try {
|
|
222
|
-
const mistral = (0, mistral_1.createMistral)({ apiKey: this.apiKey });
|
|
223
|
-
const model = mistral.textEmbedding(this.model);
|
|
224
|
-
const result = await (0, ai_1.embed)({
|
|
225
|
-
model,
|
|
226
|
-
value: text.trim()
|
|
227
|
-
});
|
|
228
|
-
return result.embedding;
|
|
229
|
-
}
|
|
230
|
-
catch (error) {
|
|
231
|
-
if (error instanceof Error) {
|
|
232
|
-
throw new Error(`Mistral embedding failed: ${error.message}`);
|
|
233
|
-
}
|
|
234
|
-
throw new Error(`Mistral embedding failed: ${String(error)}`);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
async generateEmbeddings(texts) {
|
|
238
|
-
if (!this.isAvailable()) {
|
|
239
|
-
throw new Error('Mistral embedding provider not available');
|
|
240
|
-
}
|
|
241
|
-
if (!texts || texts.length === 0) {
|
|
242
|
-
return [];
|
|
243
|
-
}
|
|
244
|
-
const validTexts = texts
|
|
245
|
-
.map(t => t?.trim())
|
|
246
|
-
.filter(t => t && t.length > 0);
|
|
247
|
-
if (validTexts.length === 0) {
|
|
248
|
-
return [];
|
|
249
|
-
}
|
|
250
|
-
try {
|
|
251
|
-
const mistral = (0, mistral_1.createMistral)({ apiKey: this.apiKey });
|
|
252
|
-
const model = mistral.textEmbedding(this.model);
|
|
253
|
-
const results = await Promise.all(validTexts.map(text => (0, ai_1.embed)({
|
|
254
|
-
model,
|
|
255
|
-
value: text
|
|
256
|
-
})));
|
|
257
|
-
return results.map(result => result.embedding);
|
|
258
|
-
}
|
|
259
|
-
catch (error) {
|
|
260
|
-
if (error instanceof Error) {
|
|
261
|
-
throw new Error(`Mistral batch embedding failed: ${error.message}`);
|
|
262
|
-
}
|
|
263
|
-
throw new Error(`Mistral batch embedding failed: ${String(error)}`);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
isAvailable() {
|
|
267
|
-
return this.available;
|
|
268
|
-
}
|
|
269
|
-
getDimensions() {
|
|
270
|
-
return this.dimensions;
|
|
271
|
-
}
|
|
272
|
-
getModel() {
|
|
273
|
-
return this.model;
|
|
179
|
+
getProviderType() {
|
|
180
|
+
return this.providerType;
|
|
274
181
|
}
|
|
275
182
|
}
|
|
276
|
-
exports.
|
|
183
|
+
exports.VercelEmbeddingProvider = VercelEmbeddingProvider;
|
|
277
184
|
/**
|
|
278
185
|
* Factory function to create embedding provider based on configuration
|
|
279
186
|
*/
|
|
280
187
|
function createEmbeddingProvider(config = {}) {
|
|
281
|
-
const
|
|
188
|
+
const providerType = (config.provider || process.env.EMBEDDINGS_PROVIDER || 'openai').toLowerCase();
|
|
189
|
+
// Validate provider type
|
|
190
|
+
if (providerType !== 'openai' && providerType !== 'google' && providerType !== 'mistral') {
|
|
191
|
+
console.warn(`Unknown embedding provider: ${providerType}, falling back to openai`);
|
|
192
|
+
return createEmbeddingProvider({ ...config, provider: 'openai' });
|
|
193
|
+
}
|
|
282
194
|
try {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
case 'mistral': {
|
|
289
|
-
const mistralProvider = new MistralEmbeddingProvider(config);
|
|
290
|
-
return mistralProvider.isAvailable() ? mistralProvider : null;
|
|
291
|
-
}
|
|
292
|
-
case 'openai':
|
|
293
|
-
default: {
|
|
294
|
-
const openaiProvider = new OpenAIEmbeddingProvider(config);
|
|
295
|
-
return openaiProvider.isAvailable() ? openaiProvider : null;
|
|
296
|
-
}
|
|
297
|
-
}
|
|
195
|
+
const provider = new VercelEmbeddingProvider({
|
|
196
|
+
...config,
|
|
197
|
+
provider: providerType
|
|
198
|
+
});
|
|
199
|
+
return provider.isAvailable() ? provider : null;
|
|
298
200
|
}
|
|
299
201
|
catch (error) {
|
|
202
|
+
console.error(`Failed to create ${providerType} embedding provider:`, error);
|
|
300
203
|
return null;
|
|
301
204
|
}
|
|
302
205
|
}
|
|
@@ -360,20 +263,8 @@ class EmbeddingService {
|
|
|
360
263
|
*/
|
|
361
264
|
getStatus() {
|
|
362
265
|
if (this.isAvailable()) {
|
|
363
|
-
//
|
|
364
|
-
|
|
365
|
-
if (this.provider instanceof GoogleEmbeddingProvider) {
|
|
366
|
-
providerName = 'google';
|
|
367
|
-
}
|
|
368
|
-
else if (this.provider instanceof MistralEmbeddingProvider) {
|
|
369
|
-
providerName = 'mistral';
|
|
370
|
-
}
|
|
371
|
-
else if (this.provider instanceof OpenAIEmbeddingProvider) {
|
|
372
|
-
providerName = 'openai';
|
|
373
|
-
}
|
|
374
|
-
else {
|
|
375
|
-
providerName = 'unknown';
|
|
376
|
-
}
|
|
266
|
+
// Get provider type from VercelEmbeddingProvider
|
|
267
|
+
const providerName = this.provider.getProviderType?.() || 'unknown';
|
|
377
268
|
return {
|
|
378
269
|
available: true,
|
|
379
270
|
provider: providerName,
|
package/dist/core/index.d.ts
CHANGED
|
@@ -45,6 +45,6 @@ export { BaseVectorService, BaseSearchOptions, BaseSearchResult } from './base-v
|
|
|
45
45
|
export { PatternVectorService, PatternSearchOptions, PatternSearchResult } from './pattern-vector-service';
|
|
46
46
|
export { PolicyVectorService, PolicySearchOptions, PolicySearchResult } from './policy-vector-service';
|
|
47
47
|
export { CapabilityVectorService, ResourceCapability, CapabilitySearchOptions } from './capability-vector-service';
|
|
48
|
-
export { EmbeddingService, EmbeddingConfig, EmbeddingProvider,
|
|
48
|
+
export { EmbeddingService, EmbeddingConfig, EmbeddingProvider, VercelEmbeddingProvider } from './embedding-service';
|
|
49
49
|
export default DotAI;
|
|
50
50
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Shared intelligence for both CLI and MCP interfaces
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
8
|
+
exports.VercelEmbeddingProvider = exports.EmbeddingService = exports.CapabilityVectorService = exports.PolicyVectorService = exports.PatternVectorService = exports.BaseVectorService = exports.VectorDBService = exports.deserializePattern = exports.serializePattern = exports.createPattern = exports.validatePattern = exports.ResourceRecommender = exports.ManifestValidator = exports.SchemaParser = exports.AIProviderFactory = exports.createAIProvider = exports.WorkflowEngine = exports.MemorySystem = exports.KubernetesDiscovery = exports.DotAI = void 0;
|
|
9
9
|
const discovery_1 = require("./discovery");
|
|
10
10
|
const memory_1 = require("./memory");
|
|
11
11
|
const workflow_1 = require("./workflow");
|
|
@@ -137,6 +137,6 @@ var capability_vector_service_1 = require("./capability-vector-service");
|
|
|
137
137
|
Object.defineProperty(exports, "CapabilityVectorService", { enumerable: true, get: function () { return capability_vector_service_1.CapabilityVectorService; } });
|
|
138
138
|
var embedding_service_1 = require("./embedding-service");
|
|
139
139
|
Object.defineProperty(exports, "EmbeddingService", { enumerable: true, get: function () { return embedding_service_1.EmbeddingService; } });
|
|
140
|
-
Object.defineProperty(exports, "
|
|
140
|
+
Object.defineProperty(exports, "VercelEmbeddingProvider", { enumerable: true, get: function () { return embedding_service_1.VercelEmbeddingProvider; } });
|
|
141
141
|
// Default export
|
|
142
142
|
exports.default = DotAI;
|