@vfarcic/dot-ai 1.13.0 → 1.14.1
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/dist/core/ai-provider-factory.d.ts.map +1 -1
- package/dist/core/ai-provider-factory.js +18 -3
- package/dist/core/ai-provider.interface.d.ts +9 -0
- package/dist/core/ai-provider.interface.d.ts.map +1 -1
- package/dist/core/git-utils.d.ts.map +1 -1
- package/dist/core/git-utils.js +4 -1
- 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 +40 -5
- package/dist/core/session-events.d.ts +51 -0
- package/dist/core/session-events.d.ts.map +1 -0
- package/dist/core/session-events.js +51 -0
- package/dist/interfaces/rest-api.d.ts +11 -0
- package/dist/interfaces/rest-api.d.ts.map +1 -1
- package/dist/interfaces/rest-api.js +107 -0
- package/dist/interfaces/routes/index.d.ts.map +1 -1
- package/dist/interfaces/routes/index.js +25 -1
- package/dist/interfaces/schemas/index.d.ts +1 -1
- package/dist/interfaces/schemas/index.d.ts.map +1 -1
- package/dist/interfaces/schemas/index.js +8 -2
- package/dist/interfaces/schemas/sessions.d.ts +100 -0
- package/dist/interfaces/schemas/sessions.d.ts.map +1 -1
- package/dist/interfaces/schemas/sessions.js +58 -1
- package/dist/tools/impact-analysis.d.ts.map +1 -1
- package/dist/tools/impact-analysis.js +4 -0
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +4 -0
- package/dist/tools/remediate.d.ts.map +1 -1
- package/dist/tools/remediate.js +33 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-provider-factory.d.ts","sourceRoot":"","sources":["../../src/core/ai-provider-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,UAAU,EACV,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AA8BjC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU;IA2BnD;;;;;;;;;;OAUG;IACH,MAAM,CAAC,aAAa,IAAI,UAAU;
|
|
1
|
+
{"version":3,"file":"ai-provider-factory.d.ts","sourceRoot":"","sources":["../../src/core/ai-provider-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,UAAU,EACV,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AA8BjC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU;IA2BnD;;;;;;;;;;OAUG;IACH,MAAM,CAAC,aAAa,IAAI,UAAU;IAqGlC;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAWrD;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAMxC;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAE7C"}
|
|
@@ -137,6 +137,17 @@ class AIProviderFactory {
|
|
|
137
137
|
// PRD #194: Get custom endpoint URL for OpenAI-compatible LLM APIs
|
|
138
138
|
// Use CUSTOM_LLM_BASE_URL for LLM endpoints (separate from OPENAI_BASE_URL used for embeddings)
|
|
139
139
|
const baseURL = process.env.CUSTOM_LLM_BASE_URL;
|
|
140
|
+
// PRD #443: Parse custom headers from environment variable
|
|
141
|
+
let customHeaders;
|
|
142
|
+
const customHeadersEnv = process.env.CUSTOM_LLM_HEADERS;
|
|
143
|
+
if (customHeadersEnv) {
|
|
144
|
+
try {
|
|
145
|
+
customHeaders = JSON.parse(customHeadersEnv);
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
process.stderr.write(`WARNING: CUSTOM_LLM_HEADERS is not valid JSON: ${customHeadersEnv}. Custom headers will be ignored.\n`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
140
151
|
// Determine effective provider type based on endpoint configuration
|
|
141
152
|
let effectiveProviderType = providerType;
|
|
142
153
|
// PRD #194: Detect OpenRouter and override provider type
|
|
@@ -144,8 +155,11 @@ class AIProviderFactory {
|
|
|
144
155
|
if (baseURL && baseURL.includes('openrouter.ai')) {
|
|
145
156
|
effectiveProviderType = 'openrouter';
|
|
146
157
|
}
|
|
147
|
-
else if (baseURL) {
|
|
148
|
-
//
|
|
158
|
+
else if (baseURL && !process.env.AI_PROVIDER) {
|
|
159
|
+
// PRD #443: Only force 'custom' provider when AI_PROVIDER is NOT explicitly set.
|
|
160
|
+
// If AI_PROVIDER is explicitly set (e.g., 'anthropic'), preserve it so that
|
|
161
|
+
// native provider features (cache control, tool calling format) are retained
|
|
162
|
+
// when using a custom base URL (e.g., corporate Anthropic proxy).
|
|
149
163
|
effectiveProviderType = 'custom';
|
|
150
164
|
}
|
|
151
165
|
return this.create({
|
|
@@ -153,7 +167,8 @@ class AIProviderFactory {
|
|
|
153
167
|
apiKey,
|
|
154
168
|
model,
|
|
155
169
|
debugMode,
|
|
156
|
-
baseURL
|
|
170
|
+
baseURL,
|
|
171
|
+
customHeaders,
|
|
157
172
|
});
|
|
158
173
|
}
|
|
159
174
|
/**
|
|
@@ -50,6 +50,15 @@ export interface AIProviderConfig {
|
|
|
50
50
|
* maxOutputTokens=8192 in API requests.
|
|
51
51
|
*/
|
|
52
52
|
baseURL?: string;
|
|
53
|
+
/** Custom HTTP headers to pass to the AI provider SDK (PRD #443)
|
|
54
|
+
*
|
|
55
|
+
* Parsed from CUSTOM_LLM_HEADERS environment variable (JSON string).
|
|
56
|
+
* Merged with provider-specific default headers (e.g., Anthropic beta header),
|
|
57
|
+
* with custom headers taking precedence.
|
|
58
|
+
*
|
|
59
|
+
* Example: { "version": "2026-02-20", "x-custom-auth": "token123" }
|
|
60
|
+
*/
|
|
61
|
+
customHeaders?: Record<string, string>;
|
|
53
62
|
}
|
|
54
63
|
/**
|
|
55
64
|
* Tool definition for AI providers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-provider.interface.d.ts","sourceRoot":"","sources":["../../src/core/ai-provider.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,2BAA2B,CAAC,EAAE,MAAM,CAAC;QACrC,uBAAuB,CAAC,EAAE,MAAM,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IAEf,8EAA8E;IAC9E,QAAQ,EAAE,MAAM,CAAC;IAEjB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oDAAoD;IACpD,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-provider.interface.d.ts","sourceRoot":"","sources":["../../src/core/ai-provider.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../../src/core/git-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AASD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK1E;AA2ED,wBAAsB,YAAY,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAc7E;AAED,wBAAgB,uBAAuB,IAAI,aAAa,CAyBvD;AAeD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CASjE;AAID,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA6BhD;AAID,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B5E;AAID,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../../src/core/git-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AASD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK1E;AA2ED,wBAAsB,YAAY,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAc7E;AAED,wBAAgB,uBAAuB,IAAI,aAAa,CAyBvD;AAeD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CASjE;AAID,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,YAAY,GAClB,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA6BhD;AAID,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8B5E;AAID,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,EAC/C,aAAa,EAAE,MAAM,EACrB,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,UAAU,CAAC,CA4ErB"}
|
package/dist/core/git-utils.js
CHANGED
|
@@ -260,7 +260,10 @@ async function pushRepo(repoPath, files, commitMessage, opts) {
|
|
|
260
260
|
'dot-ai@users.noreply.github.com';
|
|
261
261
|
await git.addConfig('user.name', gitUserName);
|
|
262
262
|
await git.addConfig('user.email', gitUserEmail);
|
|
263
|
-
const
|
|
263
|
+
const finalMessage = process.env.CI === 'true'
|
|
264
|
+
? `${commitMessage} [skip ci]`
|
|
265
|
+
: commitMessage;
|
|
266
|
+
const commitResult = await git.commit(finalMessage);
|
|
264
267
|
if (!commitResult.commit) {
|
|
265
268
|
return {
|
|
266
269
|
commitSha: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-provider.d.ts","sourceRoot":"","sources":["../../../src/core/providers/vercel-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACd,MAAM,0BAA0B,CAAC;AA4DlC,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,aAAa,CAAiB;gBAE1B,MAAM,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"vercel-provider.d.ts","sourceRoot":"","sources":["../../../src/core/providers/vercel-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACd,MAAM,0BAA0B,CAAC;AA4DlC,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,aAAa,CAAC,CAAyB;IAC/C,OAAO,CAAC,aAAa,CAAiB;gBAE1B,MAAM,EAAE,gBAAgB;IAYpC,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,eAAe;IAgIvB,eAAe,IAAI,MAAM;IAIzB,eAAe,IAAI,MAAM;IAIzB,YAAY,IAAI,MAAM;IAItB,aAAa,IAAI,OAAO;IAIxB,OAAO,CAAC,iBAAiB;IAyBnB,WAAW,CACf,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAkB,EAC7B,iBAAiB,CAAC,EAAE;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACA,OAAO,CAAC,UAAU,CAAC;IAsJtB;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CA6b/D"}
|
|
@@ -29,6 +29,7 @@ class VercelProvider {
|
|
|
29
29
|
apiKey;
|
|
30
30
|
debugMode;
|
|
31
31
|
baseURL; // PRD #194: Custom endpoint URL for OpenAI-compatible APIs
|
|
32
|
+
customHeaders; // PRD #443: Custom HTTP headers
|
|
32
33
|
modelInstance; // Vercel AI SDK model instance - initialized by initializeModel()
|
|
33
34
|
constructor(config) {
|
|
34
35
|
this.apiKey = config.apiKey;
|
|
@@ -36,6 +37,7 @@ class VercelProvider {
|
|
|
36
37
|
this.model = config.model || this.getDefaultModel();
|
|
37
38
|
this.debugMode = config.debugMode ?? process.env.DEBUG_DOT_AI === 'true';
|
|
38
39
|
this.baseURL = config.baseURL; // PRD #194: Store custom endpoint URL
|
|
40
|
+
this.customHeaders = config.customHeaders; // PRD #443: Store custom headers
|
|
39
41
|
this.validateConfiguration();
|
|
40
42
|
this.initializeModel();
|
|
41
43
|
}
|
|
@@ -51,34 +53,62 @@ class VercelProvider {
|
|
|
51
53
|
try {
|
|
52
54
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Vercel AI SDK provider types vary
|
|
53
55
|
let provider;
|
|
56
|
+
// PRD #443: Helper to build merged headers (provider defaults + custom headers)
|
|
57
|
+
// Custom headers take precedence over provider defaults via spread order
|
|
58
|
+
const mergeHeaders = (providerDefaults) => {
|
|
59
|
+
if (!providerDefaults && !this.customHeaders)
|
|
60
|
+
return undefined;
|
|
61
|
+
return {
|
|
62
|
+
...providerDefaults,
|
|
63
|
+
...this.customHeaders,
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
// PRD #443: Helper for optional baseURL spread
|
|
67
|
+
const baseURLOpt = this.baseURL ? { baseURL: this.baseURL } : {};
|
|
54
68
|
switch (this.providerType) {
|
|
55
69
|
case 'openai':
|
|
56
70
|
provider = (0, openai_1.createOpenAI)({
|
|
57
71
|
apiKey: this.apiKey,
|
|
72
|
+
...baseURLOpt,
|
|
73
|
+
...(mergeHeaders() && { headers: mergeHeaders() }),
|
|
58
74
|
});
|
|
59
75
|
break;
|
|
60
76
|
case 'google':
|
|
61
77
|
case 'google_flash': // PRD #294: Gemini 3 Flash variant
|
|
62
|
-
provider = (0, google_1.createGoogleGenerativeAI)({
|
|
78
|
+
provider = (0, google_1.createGoogleGenerativeAI)({
|
|
79
|
+
apiKey: this.apiKey,
|
|
80
|
+
...baseURLOpt,
|
|
81
|
+
...(mergeHeaders() && { headers: mergeHeaders() }),
|
|
82
|
+
});
|
|
63
83
|
break;
|
|
64
84
|
case 'anthropic':
|
|
65
85
|
case 'anthropic_opus':
|
|
66
86
|
case 'anthropic_haiku':
|
|
67
87
|
provider = (0, anthropic_1.createAnthropic)({
|
|
68
88
|
apiKey: this.apiKey,
|
|
89
|
+
...baseURLOpt,
|
|
69
90
|
// Enable 1M token context window for Claude Sonnet 4 (5x increase from 200K)
|
|
70
91
|
// Required for models like claude-sonnet-4-5-20250929
|
|
71
|
-
|
|
92
|
+
// PRD #443: Custom headers merge with (and can override) the anthropic-beta default
|
|
93
|
+
headers: mergeHeaders({
|
|
72
94
|
'anthropic-beta': 'context-1m-2025-08-07',
|
|
73
|
-
},
|
|
95
|
+
}),
|
|
74
96
|
});
|
|
75
97
|
break;
|
|
76
98
|
case 'xai':
|
|
77
|
-
provider = (0, xai_1.createXai)({
|
|
99
|
+
provider = (0, xai_1.createXai)({
|
|
100
|
+
apiKey: this.apiKey,
|
|
101
|
+
...baseURLOpt,
|
|
102
|
+
...(mergeHeaders() && { headers: mergeHeaders() }),
|
|
103
|
+
});
|
|
78
104
|
break;
|
|
79
105
|
case 'alibaba':
|
|
80
106
|
// PRD #382: Alibaba Qwen 3.5 Plus - uses @ai-sdk/alibaba dedicated SDK
|
|
81
|
-
|
|
107
|
+
// Note: @ai-sdk/alibaba does not accept baseURL (PRD #443 only covers Anthropic/OpenAI/Google/xAI)
|
|
108
|
+
provider = (0, alibaba_1.createAlibaba)({
|
|
109
|
+
apiKey: this.apiKey,
|
|
110
|
+
...(mergeHeaders() && { headers: mergeHeaders() }),
|
|
111
|
+
});
|
|
82
112
|
break;
|
|
83
113
|
case 'kimi':
|
|
84
114
|
// PRD #353: Moonshot AI Kimi K2.5 - uses @ai-sdk/openai-compatible for proper
|
|
@@ -88,6 +118,7 @@ class VercelProvider {
|
|
|
88
118
|
name: 'kimi',
|
|
89
119
|
apiKey: this.apiKey,
|
|
90
120
|
baseURL: 'https://api.moonshot.ai/v1',
|
|
121
|
+
...(mergeHeaders() && { headers: mergeHeaders() }),
|
|
91
122
|
});
|
|
92
123
|
this.modelInstance = provider.chatModel(this.model);
|
|
93
124
|
return; // Early return - model instance already set
|
|
@@ -97,6 +128,7 @@ class VercelProvider {
|
|
|
97
128
|
// 1. Environment variables (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION)
|
|
98
129
|
// 2. ~/.aws/credentials file
|
|
99
130
|
// 3. IAM roles (EC2 instance profiles, ECS roles, EKS service accounts)
|
|
131
|
+
// Note: Custom headers not supported - AWS SDK handles auth via credential chain
|
|
100
132
|
provider = (0, amazon_bedrock_1.createAmazonBedrock)({
|
|
101
133
|
region: process.env.AWS_REGION || 'us-east-1',
|
|
102
134
|
});
|
|
@@ -106,6 +138,8 @@ class VercelProvider {
|
|
|
106
138
|
// Use dedicated OpenRouter provider for proper format conversion
|
|
107
139
|
provider = (0, ai_sdk_provider_1.createOpenRouter)({
|
|
108
140
|
apiKey: this.apiKey,
|
|
141
|
+
...baseURLOpt,
|
|
142
|
+
...(mergeHeaders() && { headers: mergeHeaders() }),
|
|
109
143
|
});
|
|
110
144
|
break;
|
|
111
145
|
case 'custom':
|
|
@@ -117,6 +151,7 @@ class VercelProvider {
|
|
|
117
151
|
provider = (0, openai_1.createOpenAI)({
|
|
118
152
|
apiKey: this.apiKey,
|
|
119
153
|
baseURL: this.baseURL,
|
|
154
|
+
...(mergeHeaders() && { headers: mergeHeaders() }),
|
|
120
155
|
});
|
|
121
156
|
// Use .chat() explicitly for custom endpoints to use /chat/completions instead of /responses
|
|
122
157
|
this.modelInstance = provider.chat(this.model);
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Event Bus - Real-time event infrastructure for session lifecycle changes
|
|
3
|
+
*
|
|
4
|
+
* Interface-based event bus that broadcasts session state changes for any tool.
|
|
5
|
+
* Default implementation uses in-memory Node.js EventEmitter.
|
|
6
|
+
* Can be swapped to NATS or another external bus via setSessionEventBus().
|
|
7
|
+
*
|
|
8
|
+
* PRD #425: Session List API and SSE Streaming for Remediation Events
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Event payload for session state changes
|
|
12
|
+
*/
|
|
13
|
+
export interface SessionEvent {
|
|
14
|
+
sessionId: string;
|
|
15
|
+
toolName: string;
|
|
16
|
+
status: string;
|
|
17
|
+
issue: string;
|
|
18
|
+
timestamp: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Supported event types
|
|
22
|
+
*/
|
|
23
|
+
export type SessionEventType = 'session-created' | 'session-updated';
|
|
24
|
+
/**
|
|
25
|
+
* Event handler function signature
|
|
26
|
+
*/
|
|
27
|
+
export type SessionEventHandler = (event: SessionEvent) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Event name constants
|
|
30
|
+
*/
|
|
31
|
+
export declare const SESSION_EVENTS: {
|
|
32
|
+
readonly SESSION_CREATED: SessionEventType;
|
|
33
|
+
readonly SESSION_UPDATED: SessionEventType;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Abstract event bus interface. Swap implementations by calling setSessionEventBus().
|
|
37
|
+
*/
|
|
38
|
+
export interface SessionEventBus {
|
|
39
|
+
publish(eventType: SessionEventType, event: SessionEvent): void;
|
|
40
|
+
subscribe(eventType: SessionEventType, handler: SessionEventHandler): void;
|
|
41
|
+
unsubscribe(eventType: SessionEventType, handler: SessionEventHandler): void;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the active session event bus singleton
|
|
45
|
+
*/
|
|
46
|
+
export declare function getSessionEventBus(): SessionEventBus;
|
|
47
|
+
/**
|
|
48
|
+
* Replace the session event bus implementation (for testing or switching to external bus)
|
|
49
|
+
*/
|
|
50
|
+
export declare function setSessionEventBus(bus: SessionEventBus): void;
|
|
51
|
+
//# sourceMappingURL=session-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-events.d.ts","sourceRoot":"","sources":["../../src/core/session-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAEhE;;GAEG;AACH,eAAO,MAAM,cAAc;8BACa,gBAAgB;8BAChB,gBAAgB;CAC9C,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAChE,SAAS,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3E,WAAW,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC9E;AAwBD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAE7D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session Event Bus - Real-time event infrastructure for session lifecycle changes
|
|
4
|
+
*
|
|
5
|
+
* Interface-based event bus that broadcasts session state changes for any tool.
|
|
6
|
+
* Default implementation uses in-memory Node.js EventEmitter.
|
|
7
|
+
* Can be swapped to NATS or another external bus via setSessionEventBus().
|
|
8
|
+
*
|
|
9
|
+
* PRD #425: Session List API and SSE Streaming for Remediation Events
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SESSION_EVENTS = void 0;
|
|
13
|
+
exports.getSessionEventBus = getSessionEventBus;
|
|
14
|
+
exports.setSessionEventBus = setSessionEventBus;
|
|
15
|
+
const events_1 = require("events");
|
|
16
|
+
/**
|
|
17
|
+
* Event name constants
|
|
18
|
+
*/
|
|
19
|
+
exports.SESSION_EVENTS = {
|
|
20
|
+
SESSION_CREATED: 'session-created',
|
|
21
|
+
SESSION_UPDATED: 'session-updated',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* In-memory implementation using Node.js EventEmitter.
|
|
25
|
+
* Suitable for single-process deployments.
|
|
26
|
+
*/
|
|
27
|
+
class InMemorySessionEventBus {
|
|
28
|
+
emitter = new events_1.EventEmitter();
|
|
29
|
+
publish(eventType, event) {
|
|
30
|
+
this.emitter.emit(eventType, event);
|
|
31
|
+
}
|
|
32
|
+
subscribe(eventType, handler) {
|
|
33
|
+
this.emitter.on(eventType, handler);
|
|
34
|
+
}
|
|
35
|
+
unsubscribe(eventType, handler) {
|
|
36
|
+
this.emitter.off(eventType, handler);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
let instance = new InMemorySessionEventBus();
|
|
40
|
+
/**
|
|
41
|
+
* Get the active session event bus singleton
|
|
42
|
+
*/
|
|
43
|
+
function getSessionEventBus() {
|
|
44
|
+
return instance;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Replace the session event bus implementation (for testing or switching to external bus)
|
|
48
|
+
*/
|
|
49
|
+
function setSessionEventBus(bus) {
|
|
50
|
+
instance = bus;
|
|
51
|
+
}
|
|
@@ -230,6 +230,17 @@ export declare class RestApiRouter {
|
|
|
230
230
|
* PRD #320: Supports ?reload=true to regenerate visualization from current session data
|
|
231
231
|
*/
|
|
232
232
|
private handleVisualize;
|
|
233
|
+
/**
|
|
234
|
+
* Handle GET /api/v1/sessions (PRD #425)
|
|
235
|
+
* Lists sessions with optional status filtering and pagination.
|
|
236
|
+
* Returns summary-only data (excludes finalAnalysis).
|
|
237
|
+
*/
|
|
238
|
+
private handleListSessions;
|
|
239
|
+
/**
|
|
240
|
+
* Handle SSE streaming for remediation session events
|
|
241
|
+
* PRD #425: Real-time event stream filtered to toolName='remediate'
|
|
242
|
+
*/
|
|
243
|
+
private handleRemediationSSE;
|
|
233
244
|
/**
|
|
234
245
|
* Handle generic session retrieval requests
|
|
235
246
|
* Returns raw session data for any tool type (remediate, query, recommend, etc.)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest-api.d.ts","sourceRoot":"","sources":["../../src/interfaces/rest-api.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAc,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"rest-api.d.ts","sourceRoot":"","sources":["../../src/interfaces/rest-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,7 @@ const resource_sync_handler_1 = require("./resource-sync-handler");
|
|
|
48
48
|
const embedding_migration_handler_1 = require("./embedding-migration-handler");
|
|
49
49
|
const prompts_1 = require("../tools/prompts");
|
|
50
50
|
const generic_session_manager_1 = require("../core/generic-session-manager");
|
|
51
|
+
const session_events_1 = require("../core/session-events");
|
|
51
52
|
const shared_prompt_loader_1 = require("../core/shared-prompt-loader");
|
|
52
53
|
const visualization_1 = require("../core/visualization");
|
|
53
54
|
const ai_provider_factory_1 = require("../core/ai-provider-factory");
|
|
@@ -195,6 +196,8 @@ class RestApiRouter {
|
|
|
195
196
|
'POST:/api/v1/prompts/refresh': () => this.handlePromptsCacheRefresh(req, res, requestId),
|
|
196
197
|
'POST:/api/v1/prompts/:promptName': () => this.handlePromptsGetRequest(req, res, requestId, params.promptName, body),
|
|
197
198
|
'GET:/api/v1/visualize/:sessionId': () => this.handleVisualize(req, res, requestId, params.sessionId, searchParams),
|
|
199
|
+
'GET:/api/v1/events/remediations': () => this.handleRemediationSSE(req, res, requestId),
|
|
200
|
+
'GET:/api/v1/sessions': () => this.handleListSessions(req, res, requestId, searchParams),
|
|
198
201
|
'GET:/api/v1/sessions/:sessionId': () => this.handleSessionRetrieval(req, res, requestId, params.sessionId),
|
|
199
202
|
'DELETE:/api/v1/knowledge/source/:sourceIdentifier': () => this.handleDeleteKnowledgeSource(req, res, requestId, params.sourceIdentifier),
|
|
200
203
|
'POST:/api/v1/knowledge/ask': () => this.handleKnowledgeAsk(req, res, requestId, body),
|
|
@@ -1317,6 +1320,9 @@ class RestApiRouter {
|
|
|
1317
1320
|
let visualizationResponse;
|
|
1318
1321
|
let isFallbackResponse = false;
|
|
1319
1322
|
try {
|
|
1323
|
+
if (result.status && result.status !== 'success') {
|
|
1324
|
+
throw new Error(`AI visualization generation ${result.status}: ${result.finalMessage}`);
|
|
1325
|
+
}
|
|
1320
1326
|
const toolsUsed = [
|
|
1321
1327
|
...new Set(result.toolCallsExecuted.map(tc => tc.tool)),
|
|
1322
1328
|
];
|
|
@@ -1403,6 +1409,107 @@ class RestApiRouter {
|
|
|
1403
1409
|
await this.sendErrorResponse(res, requestId, HttpStatus.INTERNAL_SERVER_ERROR, 'VISUALIZATION_ERROR', 'Failed to generate visualization', { error: errorMessage });
|
|
1404
1410
|
}
|
|
1405
1411
|
}
|
|
1412
|
+
/**
|
|
1413
|
+
* Handle GET /api/v1/sessions (PRD #425)
|
|
1414
|
+
* Lists sessions with optional status filtering and pagination.
|
|
1415
|
+
* Returns summary-only data (excludes finalAnalysis).
|
|
1416
|
+
*/
|
|
1417
|
+
async handleListSessions(_req, res, requestId, searchParams) {
|
|
1418
|
+
try {
|
|
1419
|
+
const status = searchParams.get('status') || undefined;
|
|
1420
|
+
const limit = Math.min(Math.max(parseInt(searchParams.get('limit') || '50', 10) || 50, 1), 200);
|
|
1421
|
+
const offset = Math.max(parseInt(searchParams.get('offset') || '0', 10) || 0, 0);
|
|
1422
|
+
this.logger.info('Listing sessions', { requestId, status, limit, offset });
|
|
1423
|
+
const sessionManager = new generic_session_manager_1.GenericSessionManager('rem');
|
|
1424
|
+
const sessionIds = sessionManager.listSessions();
|
|
1425
|
+
// Load all sessions and build summaries
|
|
1426
|
+
const allSessions = [];
|
|
1427
|
+
for (const id of sessionIds) {
|
|
1428
|
+
const session = sessionManager.getSession(id);
|
|
1429
|
+
if (!session)
|
|
1430
|
+
continue;
|
|
1431
|
+
const data = session.data || {};
|
|
1432
|
+
const sessionStatus = typeof data.status === 'string' ? data.status : undefined;
|
|
1433
|
+
// Filter by status if provided
|
|
1434
|
+
if (status && sessionStatus !== status)
|
|
1435
|
+
continue;
|
|
1436
|
+
allSessions.push({
|
|
1437
|
+
sessionId: session.sessionId,
|
|
1438
|
+
status: sessionStatus,
|
|
1439
|
+
issue: typeof data.issue === 'string' ? data.issue : undefined,
|
|
1440
|
+
mode: typeof data.mode === 'string' ? data.mode : undefined,
|
|
1441
|
+
toolName: typeof data.toolName === 'string' ? data.toolName : undefined,
|
|
1442
|
+
createdAt: session.createdAt,
|
|
1443
|
+
updatedAt: session.updatedAt,
|
|
1444
|
+
});
|
|
1445
|
+
}
|
|
1446
|
+
// Sort by updatedAt descending (newest first)
|
|
1447
|
+
allSessions.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());
|
|
1448
|
+
const total = allSessions.length;
|
|
1449
|
+
const paginatedSessions = allSessions.slice(offset, offset + limit);
|
|
1450
|
+
const response = {
|
|
1451
|
+
success: true,
|
|
1452
|
+
data: {
|
|
1453
|
+
sessions: paginatedSessions,
|
|
1454
|
+
total,
|
|
1455
|
+
limit,
|
|
1456
|
+
offset,
|
|
1457
|
+
},
|
|
1458
|
+
meta: {
|
|
1459
|
+
timestamp: new Date().toISOString(),
|
|
1460
|
+
requestId,
|
|
1461
|
+
version: this.config.version,
|
|
1462
|
+
},
|
|
1463
|
+
};
|
|
1464
|
+
await this.sendJsonResponse(res, HttpStatus.OK, response);
|
|
1465
|
+
this.logger.info('Sessions listed successfully', {
|
|
1466
|
+
requestId,
|
|
1467
|
+
total,
|
|
1468
|
+
returned: paginatedSessions.length,
|
|
1469
|
+
});
|
|
1470
|
+
}
|
|
1471
|
+
catch (error) {
|
|
1472
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
1473
|
+
this.logger.error('Session list failed', error instanceof Error ? error : new Error(String(error)), { requestId });
|
|
1474
|
+
await this.sendErrorResponse(res, requestId, HttpStatus.INTERNAL_SERVER_ERROR, 'SESSION_LIST_ERROR', 'Failed to list sessions', { error: errorMessage });
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
/**
|
|
1478
|
+
* Handle SSE streaming for remediation session events
|
|
1479
|
+
* PRD #425: Real-time event stream filtered to toolName='remediate'
|
|
1480
|
+
*/
|
|
1481
|
+
async handleRemediationSSE(req, res, requestId) {
|
|
1482
|
+
const headers = {
|
|
1483
|
+
'Content-Type': 'text/event-stream',
|
|
1484
|
+
'Cache-Control': 'no-cache',
|
|
1485
|
+
'Connection': 'keep-alive',
|
|
1486
|
+
};
|
|
1487
|
+
if (this.config.enableCors) {
|
|
1488
|
+
headers['Access-Control-Allow-Origin'] = '*';
|
|
1489
|
+
headers['Access-Control-Allow-Headers'] = 'Content-Type, Authorization';
|
|
1490
|
+
}
|
|
1491
|
+
res.writeHead(HttpStatus.OK, headers);
|
|
1492
|
+
this.logger.info('SSE connection established', { requestId });
|
|
1493
|
+
const eventBus = (0, session_events_1.getSessionEventBus)();
|
|
1494
|
+
const createHandler = (eventType) => (event) => {
|
|
1495
|
+
if (event.toolName !== 'remediate')
|
|
1496
|
+
return;
|
|
1497
|
+
res.write(`event: ${eventType}\ndata: ${JSON.stringify(event)}\n\n`);
|
|
1498
|
+
};
|
|
1499
|
+
const onCreated = createHandler('session-created');
|
|
1500
|
+
const onUpdated = createHandler('session-updated');
|
|
1501
|
+
eventBus.subscribe('session-created', onCreated);
|
|
1502
|
+
eventBus.subscribe('session-updated', onUpdated);
|
|
1503
|
+
const heartbeat = setInterval(() => {
|
|
1504
|
+
res.write(': heartbeat\n\n');
|
|
1505
|
+
}, 30000);
|
|
1506
|
+
req.on('close', () => {
|
|
1507
|
+
clearInterval(heartbeat);
|
|
1508
|
+
eventBus.unsubscribe('session-created', onCreated);
|
|
1509
|
+
eventBus.unsubscribe('session-updated', onUpdated);
|
|
1510
|
+
this.logger.info('SSE connection closed', { requestId });
|
|
1511
|
+
});
|
|
1512
|
+
}
|
|
1406
1513
|
/**
|
|
1407
1514
|
* Handle generic session retrieval requests
|
|
1408
1515
|
* Returns raw session data for any tool type (remediate, query, recommend, etc.)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/routes/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAuM5E;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,CACR,EAyVA,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAInE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
|
|
@@ -332,8 +332,19 @@ exports.routeDefinitions = [
|
|
|
332
332
|
},
|
|
333
333
|
},
|
|
334
334
|
// ============================================
|
|
335
|
-
// Sessions
|
|
335
|
+
// Sessions Endpoints
|
|
336
336
|
// ============================================
|
|
337
|
+
{
|
|
338
|
+
path: '/api/v1/sessions',
|
|
339
|
+
method: 'GET',
|
|
340
|
+
description: 'List sessions with optional status filtering and pagination',
|
|
341
|
+
tags: ['Sessions'],
|
|
342
|
+
query: schemas_1.SessionListQuerySchema,
|
|
343
|
+
response: schemas_1.SessionListResponseSchema,
|
|
344
|
+
errorResponses: {
|
|
345
|
+
500: schemas_1.SessionListErrorSchema,
|
|
346
|
+
},
|
|
347
|
+
},
|
|
337
348
|
{
|
|
338
349
|
path: '/api/v1/sessions/:sessionId',
|
|
339
350
|
method: 'GET',
|
|
@@ -347,6 +358,19 @@ exports.routeDefinitions = [
|
|
|
347
358
|
},
|
|
348
359
|
},
|
|
349
360
|
// ============================================
|
|
361
|
+
// SSE Streaming Endpoints (PRD #425)
|
|
362
|
+
// ============================================
|
|
363
|
+
{
|
|
364
|
+
path: '/api/v1/events/remediations',
|
|
365
|
+
method: 'GET',
|
|
366
|
+
description: 'SSE stream for real-time remediation session events. Returns text/event-stream.',
|
|
367
|
+
tags: ['Sessions'],
|
|
368
|
+
response: schemas_1.RemediationSSEEventSchema,
|
|
369
|
+
errorResponses: {
|
|
370
|
+
500: schemas_1.InternalServerErrorSchema,
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
// ============================================
|
|
350
374
|
// Knowledge Base Endpoints (PRD #356)
|
|
351
375
|
// ============================================
|
|
352
376
|
{
|
|
@@ -15,7 +15,7 @@ export { VisualizationTypeSchema, CodeContentSchema, TableContentSchema, CardIte
|
|
|
15
15
|
export { ResourceKindSchema, ResourceKindsDataSchema, ResourceKindsResponseSchema, ResourceSummarySchema, ResourceSearchDataSchema, ResourceSearchResponseSchema, ResourceListDataSchema, ResourceListResponseSchema, SingleResourceDataSchema, SingleResourceResponseSchema, NamespacesDataSchema, NamespacesResponseSchema, ResourceSyncRequestSchema, ResourceSyncDataSchema, ResourceSyncResponseSchema, ResourceNotFoundErrorSchema, ResourceBadRequestErrorSchema, ResourcePluginUnavailableErrorSchema, ResourceKindsErrorSchema, ResourceSearchErrorSchema, ResourceListErrorSchema, SingleResourceErrorSchema, NamespacesErrorSchema, ResourceSyncErrorSchema, type ResourceKind, type ResourceKindsData, type ResourceKindsResponse, type ResourceSummary, type ResourceSearchData, type ResourceSearchResponse, type ResourceListData, type ResourceListResponse, type SingleResourceData, type SingleResourceResponse, type NamespacesData, type NamespacesResponse, type ResourceSyncRequest, type ResourceSyncData, type ResourceSyncResponse, } from './resources';
|
|
16
16
|
export { EventInvolvedObjectSchema, KubernetesEventSchema, EventsDataSchema, EventsResponseSchema, EventsBadRequestErrorSchema, EventsPluginUnavailableErrorSchema, EventsErrorSchema, type EventInvolvedObject, type KubernetesEvent, type EventsData, type EventsResponse, } from './events';
|
|
17
17
|
export { LogsDataSchema, LogsResponseSchema, LogsBadRequestErrorSchema, LogsPluginUnavailableErrorSchema, LogsErrorSchema, type LogsData, type LogsResponse, } from './logs';
|
|
18
|
-
export { SessionMetadataSchema, SessionDataSchema, SessionResponseDataSchema, SessionResponseSchema, SessionNotFoundErrorSchema, SessionRetrievalErrorSchema, type SessionMetadata, type SessionData, type SessionResponseData, type SessionResponse, } from './sessions';
|
|
18
|
+
export { SessionMetadataSchema, SessionDataSchema, SessionResponseDataSchema, SessionResponseSchema, SessionNotFoundErrorSchema, SessionRetrievalErrorSchema, SessionListQuerySchema, SessionSummarySchema, SessionListDataSchema, SessionListResponseSchema, SessionListErrorSchema, RemediationSSEEventSchema, type SessionMetadata, type SessionData, type SessionResponseData, type SessionResponse, type SessionListQuery, type SessionSummary, type SessionListData, type SessionListResponse, type RemediationSSEEvent, } from './sessions';
|
|
19
19
|
export { PromptArgumentSchema, PromptInfoSchema, PromptsListDataSchema, PromptsListResponseSchema, PromptMessageSchema, PromptFileSchema, PromptGetDataSchema, PromptGetResponseSchema, PromptGetRequestSchema, PromptNotFoundErrorSchema, PromptValidationErrorSchema, PromptsListErrorSchema, PromptGetErrorSchema, PromptsCacheRefreshDataSchema, PromptsCacheRefreshResponseSchema, PromptsCacheRefreshErrorSchema, type PromptArgument, type PromptInfo, type PromptsListData, type PromptsListResponse, type PromptMessage, type PromptFileData, type PromptGetData, type PromptGetResponse, type PromptGetRequest, type PromptsCacheRefreshData, type PromptsCacheRefreshResponse, } from './prompts';
|
|
20
20
|
export { DeleteBySourceDataSchema, DeleteBySourceResponseSchema, DeleteBySourceBadRequestErrorSchema, DeleteBySourcePluginUnavailableErrorSchema, DeleteBySourceErrorSchema, KnowledgeAskRequestSchema, KnowledgeAskSourceSchema, KnowledgeAskChunkSchema, KnowledgeAskDataSchema, KnowledgeAskResponseSchema, KnowledgeAskBadRequestErrorSchema, KnowledgeAskAIUnavailableErrorSchema, KnowledgeAskPluginUnavailableErrorSchema, KnowledgeAskErrorSchema, type DeleteBySourceData, type DeleteBySourceResponse, type KnowledgeAskRequest, type KnowledgeAskSource, type KnowledgeAskChunk, type KnowledgeAskData, type KnowledgeAskResponse, } from './knowledge';
|
|
21
21
|
export { EmbeddingMigrationRequestSchema, CollectionMigrationResultSchema, EmbeddingMigrationDataSchema, EmbeddingMigrationResponseSchema, EmbeddingMigrationBadRequestErrorSchema, EmbeddingMigrationServiceUnavailableErrorSchema, EmbeddingMigrationErrorSchema, type EmbeddingMigrationRequest, type CollectionMigrationResult, type EmbeddingMigrationData, type EmbeddingMigrationResponse, } from './embeddings';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/schemas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,EAC3B,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,+BAA+B,EAC/B,2BAA2B,EAC3B,gCAAgC,EAChC,0CAA0C,EAC1C,gCAAgC,EAChC,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,6BAA6B,EAC7B,oCAAoC,EACpC,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,2BAA2B,EAC3B,kCAAkC,EAClC,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,cAAc,GACpB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,yBAAyB,EACzB,gCAAgC,EAChC,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,YAAY,GAClB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/interfaces/schemas/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
*/
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.ResourceSyncResponseSchema = exports.ResourceSyncDataSchema = exports.ResourceSyncRequestSchema = exports.NamespacesResponseSchema = exports.NamespacesDataSchema = exports.SingleResourceResponseSchema = exports.SingleResourceDataSchema = exports.ResourceListResponseSchema = exports.ResourceListDataSchema = exports.ResourceSearchResponseSchema = exports.ResourceSearchDataSchema = exports.ResourceSummarySchema = exports.ResourceKindsResponseSchema = exports.ResourceKindsDataSchema = exports.ResourceKindSchema = exports.VisualizationInternalErrorSchema = exports.VisualizationServiceUnavailableErrorSchema = exports.VisualizationNotFoundErrorSchema = exports.VisualizationResponseSchema = exports.VisualizationResponseDataSchema = exports.VisualizationSchema = exports.VisualizationContentSchema = exports.BarChartContentSchema = exports.BarChartDataItemSchema = exports.DiffContentSchema = exports.CardsContentSchema = exports.CardItemSchema = exports.TableContentSchema = exports.CodeContentSchema = exports.VisualizationTypeSchema = exports.ToolDiscoveryErrorSchema = exports.ToolExecutionErrorSchema = exports.InvalidToolRequestErrorSchema = exports.ToolNotFoundErrorSchema = exports.ToolExecutionResponseSchema = exports.ToolExecutionDataSchema = exports.ToolDiscoveryResponseSchema = exports.ToolDiscoveryDataSchema = exports.ToolInfoSchema = exports.ToolParameterSchema = exports.createSuccessResponseSchema = exports.InternalServerErrorSchema = exports.ServiceUnavailableErrorSchema = exports.MethodNotAllowedErrorSchema = exports.BadRequestErrorSchema = exports.NotFoundErrorSchema = exports.ErrorResponseSchema = exports.RestApiResponseSchema = exports.ErrorDetailsSchema = exports.MetaSchema = void 0;
|
|
15
|
-
exports.
|
|
16
|
-
exports.UserManagementErrorSchema = exports.UserBadRequestErrorSchema = exports.UserNotFoundErrorSchema = exports.UserConflictErrorSchema = exports.UserEmailParamsSchema = exports.UserEntrySchema = exports.UserDeleteResponseSchema = exports.UserDeleteDataSchema = exports.UserListResponseSchema = exports.UserListDataSchema = exports.UserCreateResponseSchema = exports.UserCreateDataSchema = exports.UserCreateRequestSchema = exports.EmbeddingMigrationErrorSchema = exports.EmbeddingMigrationServiceUnavailableErrorSchema = exports.EmbeddingMigrationBadRequestErrorSchema = exports.EmbeddingMigrationResponseSchema = exports.EmbeddingMigrationDataSchema = exports.CollectionMigrationResultSchema = exports.EmbeddingMigrationRequestSchema = exports.KnowledgeAskErrorSchema = exports.KnowledgeAskPluginUnavailableErrorSchema = exports.KnowledgeAskAIUnavailableErrorSchema = exports.KnowledgeAskBadRequestErrorSchema = exports.KnowledgeAskResponseSchema = exports.KnowledgeAskDataSchema = exports.KnowledgeAskChunkSchema = void 0;
|
|
15
|
+
exports.DeleteBySourceDataSchema = exports.PromptsCacheRefreshErrorSchema = exports.PromptsCacheRefreshResponseSchema = exports.PromptsCacheRefreshDataSchema = exports.PromptGetErrorSchema = exports.PromptsListErrorSchema = exports.PromptValidationErrorSchema = exports.PromptNotFoundErrorSchema = exports.PromptGetRequestSchema = exports.PromptGetResponseSchema = exports.PromptGetDataSchema = exports.PromptFileSchema = exports.PromptMessageSchema = exports.PromptsListResponseSchema = exports.PromptsListDataSchema = exports.PromptInfoSchema = exports.PromptArgumentSchema = exports.RemediationSSEEventSchema = exports.SessionListErrorSchema = exports.SessionListResponseSchema = exports.SessionListDataSchema = exports.SessionSummarySchema = exports.SessionListQuerySchema = exports.SessionRetrievalErrorSchema = exports.SessionNotFoundErrorSchema = exports.SessionResponseSchema = exports.SessionResponseDataSchema = exports.SessionDataSchema = exports.SessionMetadataSchema = exports.LogsErrorSchema = exports.LogsPluginUnavailableErrorSchema = exports.LogsBadRequestErrorSchema = exports.LogsResponseSchema = exports.LogsDataSchema = exports.EventsErrorSchema = exports.EventsPluginUnavailableErrorSchema = exports.EventsBadRequestErrorSchema = exports.EventsResponseSchema = exports.EventsDataSchema = exports.KubernetesEventSchema = exports.EventInvolvedObjectSchema = exports.ResourceSyncErrorSchema = exports.NamespacesErrorSchema = exports.SingleResourceErrorSchema = exports.ResourceListErrorSchema = exports.ResourceSearchErrorSchema = exports.ResourceKindsErrorSchema = exports.ResourcePluginUnavailableErrorSchema = exports.ResourceBadRequestErrorSchema = exports.ResourceNotFoundErrorSchema = void 0;
|
|
16
|
+
exports.UserManagementErrorSchema = exports.UserBadRequestErrorSchema = exports.UserNotFoundErrorSchema = exports.UserConflictErrorSchema = exports.UserEmailParamsSchema = exports.UserEntrySchema = exports.UserDeleteResponseSchema = exports.UserDeleteDataSchema = exports.UserListResponseSchema = exports.UserListDataSchema = exports.UserCreateResponseSchema = exports.UserCreateDataSchema = exports.UserCreateRequestSchema = exports.EmbeddingMigrationErrorSchema = exports.EmbeddingMigrationServiceUnavailableErrorSchema = exports.EmbeddingMigrationBadRequestErrorSchema = exports.EmbeddingMigrationResponseSchema = exports.EmbeddingMigrationDataSchema = exports.CollectionMigrationResultSchema = exports.EmbeddingMigrationRequestSchema = exports.KnowledgeAskErrorSchema = exports.KnowledgeAskPluginUnavailableErrorSchema = exports.KnowledgeAskAIUnavailableErrorSchema = exports.KnowledgeAskBadRequestErrorSchema = exports.KnowledgeAskResponseSchema = exports.KnowledgeAskDataSchema = exports.KnowledgeAskChunkSchema = exports.KnowledgeAskSourceSchema = exports.KnowledgeAskRequestSchema = exports.DeleteBySourceErrorSchema = exports.DeleteBySourcePluginUnavailableErrorSchema = exports.DeleteBySourceBadRequestErrorSchema = exports.DeleteBySourceResponseSchema = void 0;
|
|
17
17
|
// Common schemas
|
|
18
18
|
var common_1 = require("./common");
|
|
19
19
|
Object.defineProperty(exports, "MetaSchema", { enumerable: true, get: function () { return common_1.MetaSchema; } });
|
|
@@ -105,6 +105,12 @@ Object.defineProperty(exports, "SessionResponseDataSchema", { enumerable: true,
|
|
|
105
105
|
Object.defineProperty(exports, "SessionResponseSchema", { enumerable: true, get: function () { return sessions_1.SessionResponseSchema; } });
|
|
106
106
|
Object.defineProperty(exports, "SessionNotFoundErrorSchema", { enumerable: true, get: function () { return sessions_1.SessionNotFoundErrorSchema; } });
|
|
107
107
|
Object.defineProperty(exports, "SessionRetrievalErrorSchema", { enumerable: true, get: function () { return sessions_1.SessionRetrievalErrorSchema; } });
|
|
108
|
+
Object.defineProperty(exports, "SessionListQuerySchema", { enumerable: true, get: function () { return sessions_1.SessionListQuerySchema; } });
|
|
109
|
+
Object.defineProperty(exports, "SessionSummarySchema", { enumerable: true, get: function () { return sessions_1.SessionSummarySchema; } });
|
|
110
|
+
Object.defineProperty(exports, "SessionListDataSchema", { enumerable: true, get: function () { return sessions_1.SessionListDataSchema; } });
|
|
111
|
+
Object.defineProperty(exports, "SessionListResponseSchema", { enumerable: true, get: function () { return sessions_1.SessionListResponseSchema; } });
|
|
112
|
+
Object.defineProperty(exports, "SessionListErrorSchema", { enumerable: true, get: function () { return sessions_1.SessionListErrorSchema; } });
|
|
113
|
+
Object.defineProperty(exports, "RemediationSSEEventSchema", { enumerable: true, get: function () { return sessions_1.RemediationSSEEventSchema; } });
|
|
108
114
|
// Prompts schemas
|
|
109
115
|
var prompts_1 = require("./prompts");
|
|
110
116
|
Object.defineProperty(exports, "PromptArgumentSchema", { enumerable: true, get: function () { return prompts_1.PromptArgumentSchema; } });
|
|
@@ -84,4 +84,104 @@ export declare const SessionRetrievalErrorSchema: z.ZodObject<{
|
|
|
84
84
|
details: z.ZodOptional<z.ZodAny>;
|
|
85
85
|
}, z.core.$strip>;
|
|
86
86
|
}, z.core.$strip>;
|
|
87
|
+
/**
|
|
88
|
+
* Session List Endpoint Schemas
|
|
89
|
+
* GET /api/v1/sessions
|
|
90
|
+
* PRD #425: Session List API and SSE Streaming
|
|
91
|
+
*/
|
|
92
|
+
/**
|
|
93
|
+
* Query parameters for listing sessions
|
|
94
|
+
*/
|
|
95
|
+
export declare const SessionListQuerySchema: z.ZodObject<{
|
|
96
|
+
status: z.ZodOptional<z.ZodString>;
|
|
97
|
+
limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
98
|
+
offset: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
export type SessionListQuery = z.infer<typeof SessionListQuerySchema>;
|
|
101
|
+
/**
|
|
102
|
+
* Session summary (no finalAnalysis to keep responses lean)
|
|
103
|
+
*/
|
|
104
|
+
export declare const SessionSummarySchema: z.ZodObject<{
|
|
105
|
+
sessionId: z.ZodString;
|
|
106
|
+
status: z.ZodOptional<z.ZodString>;
|
|
107
|
+
issue: z.ZodOptional<z.ZodString>;
|
|
108
|
+
mode: z.ZodOptional<z.ZodString>;
|
|
109
|
+
toolName: z.ZodOptional<z.ZodString>;
|
|
110
|
+
createdAt: z.ZodString;
|
|
111
|
+
updatedAt: z.ZodString;
|
|
112
|
+
}, z.core.$strip>;
|
|
113
|
+
export type SessionSummary = z.infer<typeof SessionSummarySchema>;
|
|
114
|
+
/**
|
|
115
|
+
* Session list response data
|
|
116
|
+
*/
|
|
117
|
+
export declare const SessionListDataSchema: z.ZodObject<{
|
|
118
|
+
sessions: z.ZodArray<z.ZodObject<{
|
|
119
|
+
sessionId: z.ZodString;
|
|
120
|
+
status: z.ZodOptional<z.ZodString>;
|
|
121
|
+
issue: z.ZodOptional<z.ZodString>;
|
|
122
|
+
mode: z.ZodOptional<z.ZodString>;
|
|
123
|
+
toolName: z.ZodOptional<z.ZodString>;
|
|
124
|
+
createdAt: z.ZodString;
|
|
125
|
+
updatedAt: z.ZodString;
|
|
126
|
+
}, z.core.$strip>>;
|
|
127
|
+
total: z.ZodNumber;
|
|
128
|
+
limit: z.ZodNumber;
|
|
129
|
+
offset: z.ZodNumber;
|
|
130
|
+
}, z.core.$strip>;
|
|
131
|
+
export type SessionListData = z.infer<typeof SessionListDataSchema>;
|
|
132
|
+
export declare const SessionListResponseSchema: z.ZodObject<{
|
|
133
|
+
success: z.ZodLiteral<true>;
|
|
134
|
+
data: z.ZodObject<{
|
|
135
|
+
sessions: z.ZodArray<z.ZodObject<{
|
|
136
|
+
sessionId: z.ZodString;
|
|
137
|
+
status: z.ZodOptional<z.ZodString>;
|
|
138
|
+
issue: z.ZodOptional<z.ZodString>;
|
|
139
|
+
mode: z.ZodOptional<z.ZodString>;
|
|
140
|
+
toolName: z.ZodOptional<z.ZodString>;
|
|
141
|
+
createdAt: z.ZodString;
|
|
142
|
+
updatedAt: z.ZodString;
|
|
143
|
+
}, z.core.$strip>>;
|
|
144
|
+
total: z.ZodNumber;
|
|
145
|
+
limit: z.ZodNumber;
|
|
146
|
+
offset: z.ZodNumber;
|
|
147
|
+
}, z.core.$strip>;
|
|
148
|
+
meta: z.ZodOptional<z.ZodObject<{
|
|
149
|
+
timestamp: z.ZodString;
|
|
150
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
151
|
+
version: z.ZodString;
|
|
152
|
+
}, z.core.$strip>>;
|
|
153
|
+
}, z.core.$strip>;
|
|
154
|
+
export type SessionListResponse = z.infer<typeof SessionListResponseSchema>;
|
|
155
|
+
export declare const SessionListErrorSchema: z.ZodObject<{
|
|
156
|
+
success: z.ZodLiteral<false>;
|
|
157
|
+
meta: z.ZodOptional<z.ZodObject<{
|
|
158
|
+
timestamp: z.ZodString;
|
|
159
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
160
|
+
version: z.ZodString;
|
|
161
|
+
}, z.core.$strip>>;
|
|
162
|
+
error: z.ZodObject<{
|
|
163
|
+
code: z.ZodLiteral<"SESSION_LIST_ERROR">;
|
|
164
|
+
message: z.ZodString;
|
|
165
|
+
details: z.ZodOptional<z.ZodAny>;
|
|
166
|
+
}, z.core.$strip>;
|
|
167
|
+
}, z.core.$strip>;
|
|
168
|
+
/**
|
|
169
|
+
* SSE Streaming Endpoint Schema
|
|
170
|
+
* GET /api/v1/events/remediations
|
|
171
|
+
* PRD #425: Real-time remediation session events via Server-Sent Events
|
|
172
|
+
*/
|
|
173
|
+
export declare const RemediationSSEEventSchema: z.ZodObject<{
|
|
174
|
+
event: z.ZodEnum<{
|
|
175
|
+
"session-created": "session-created";
|
|
176
|
+
"session-updated": "session-updated";
|
|
177
|
+
}>;
|
|
178
|
+
data: z.ZodObject<{
|
|
179
|
+
sessionId: z.ZodString;
|
|
180
|
+
toolName: z.ZodString;
|
|
181
|
+
status: z.ZodString;
|
|
182
|
+
issue: z.ZodString;
|
|
183
|
+
timestamp: z.ZodString;
|
|
184
|
+
}, z.core.$strip>;
|
|
185
|
+
}, z.core.$strip>;
|
|
186
|
+
export type RemediationSSEEvent = z.infer<typeof RemediationSSEEventSchema>;
|
|
87
187
|
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/interfaces/schemas/sessions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;iBAId,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;iBAKpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;iBAAyD,CAAC;AAE5F,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;iBAMrC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;iBAMtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/interfaces/schemas/sessions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;iBAId,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;iBAKpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;iBAAyD,CAAC;AAE5F,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;iBAMrC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;iBAMtC,CAAC;AAEH;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;iBAIjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;iBAQ/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;iBAKhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;iBAAqD,CAAC;AAE5F,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,sBAAsB;;;;;;;;;;;;iBAMjC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;iBASoD,CAAC;AAE3F,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* PRD #354: REST API Route Registry with Auto-Generated OpenAPI and Test Fixtures
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.SessionRetrievalErrorSchema = exports.SessionNotFoundErrorSchema = exports.SessionResponseSchema = exports.SessionResponseDataSchema = exports.SessionDataSchema = exports.SessionMetadataSchema = void 0;
|
|
9
|
+
exports.RemediationSSEEventSchema = exports.SessionListErrorSchema = exports.SessionListResponseSchema = exports.SessionListDataSchema = exports.SessionSummarySchema = exports.SessionListQuerySchema = exports.SessionRetrievalErrorSchema = exports.SessionNotFoundErrorSchema = exports.SessionResponseSchema = exports.SessionResponseDataSchema = exports.SessionDataSchema = exports.SessionMetadataSchema = void 0;
|
|
10
10
|
const zod_1 = require("zod");
|
|
11
11
|
const common_1 = require("./common");
|
|
12
12
|
/**
|
|
@@ -54,3 +54,60 @@ exports.SessionRetrievalErrorSchema = common_1.InternalServerErrorSchema.extend(
|
|
|
54
54
|
details: zod_1.z.any().optional(),
|
|
55
55
|
}),
|
|
56
56
|
});
|
|
57
|
+
/**
|
|
58
|
+
* Session List Endpoint Schemas
|
|
59
|
+
* GET /api/v1/sessions
|
|
60
|
+
* PRD #425: Session List API and SSE Streaming
|
|
61
|
+
*/
|
|
62
|
+
/**
|
|
63
|
+
* Query parameters for listing sessions
|
|
64
|
+
*/
|
|
65
|
+
exports.SessionListQuerySchema = zod_1.z.object({
|
|
66
|
+
status: zod_1.z.string().optional().describe('Filter by session status (e.g., analysis_complete, failed, investigating)'),
|
|
67
|
+
limit: zod_1.z.coerce.number().int().min(1).max(200).default(50).describe('Max results per page'),
|
|
68
|
+
offset: zod_1.z.coerce.number().int().min(0).default(0).describe('Pagination offset'),
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Session summary (no finalAnalysis to keep responses lean)
|
|
72
|
+
*/
|
|
73
|
+
exports.SessionSummarySchema = zod_1.z.object({
|
|
74
|
+
sessionId: zod_1.z.string().describe('Session ID'),
|
|
75
|
+
status: zod_1.z.string().optional().describe('Session status'),
|
|
76
|
+
issue: zod_1.z.string().optional().describe('Issue being investigated'),
|
|
77
|
+
mode: zod_1.z.string().optional().describe('Remediation mode (manual/automatic)'),
|
|
78
|
+
toolName: zod_1.z.string().optional().describe('Tool that created this session'),
|
|
79
|
+
createdAt: zod_1.z.string().describe('Session creation timestamp'),
|
|
80
|
+
updatedAt: zod_1.z.string().describe('Session last update timestamp'),
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* Session list response data
|
|
84
|
+
*/
|
|
85
|
+
exports.SessionListDataSchema = zod_1.z.object({
|
|
86
|
+
sessions: zod_1.z.array(exports.SessionSummarySchema).describe('List of session summaries'),
|
|
87
|
+
total: zod_1.z.number().describe('Total number of sessions matching the filter'),
|
|
88
|
+
limit: zod_1.z.number().describe('Max results per page'),
|
|
89
|
+
offset: zod_1.z.number().describe('Pagination offset'),
|
|
90
|
+
});
|
|
91
|
+
exports.SessionListResponseSchema = (0, common_1.createSuccessResponseSchema)(exports.SessionListDataSchema);
|
|
92
|
+
exports.SessionListErrorSchema = common_1.InternalServerErrorSchema.extend({
|
|
93
|
+
error: zod_1.z.object({
|
|
94
|
+
code: zod_1.z.literal('SESSION_LIST_ERROR'),
|
|
95
|
+
message: zod_1.z.string(),
|
|
96
|
+
details: zod_1.z.any().optional(),
|
|
97
|
+
}),
|
|
98
|
+
});
|
|
99
|
+
/**
|
|
100
|
+
* SSE Streaming Endpoint Schema
|
|
101
|
+
* GET /api/v1/events/remediations
|
|
102
|
+
* PRD #425: Real-time remediation session events via Server-Sent Events
|
|
103
|
+
*/
|
|
104
|
+
exports.RemediationSSEEventSchema = zod_1.z.object({
|
|
105
|
+
event: zod_1.z.enum(['session-created', 'session-updated']).describe('SSE event type'),
|
|
106
|
+
data: zod_1.z.object({
|
|
107
|
+
sessionId: zod_1.z.string().describe('Session ID'),
|
|
108
|
+
toolName: zod_1.z.string().describe('Tool that owns the session'),
|
|
109
|
+
status: zod_1.z.string().describe('Current session status'),
|
|
110
|
+
issue: zod_1.z.string().describe('Issue being investigated'),
|
|
111
|
+
timestamp: zod_1.z.string().describe('Event timestamp'),
|
|
112
|
+
}),
|
|
113
|
+
}).describe('SSE event for remediation session changes (Content-Type: text/event-stream)');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impact-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/impact-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAMvD,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D,eAAO,MAAM,gCAAgC,qXAAiX,CAAC;AAG/Z,eAAO,MAAM,iCAAiC;;;CAO7C,CAAC;AAGF,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AA2ED;;GAEG;AACH,UAAU,sBAAsB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,sBAAsB,EAC5B,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"impact-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/impact-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAMvD,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAC3D,eAAO,MAAM,gCAAgC,qXAAiX,CAAC;AAG/Z,eAAO,MAAM,iCAAiC;;;CAO7C,CAAC;AAGF,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AA2ED;;GAEG;AACH,UAAU,sBAAsB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,sBAAsB,EAC5B,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAyJ7D"}
|
|
@@ -150,6 +150,10 @@ async function handleImpactAnalysisTool(args, pluginManager) {
|
|
|
150
150
|
},
|
|
151
151
|
interaction_id: args.interaction_id
|
|
152
152
|
});
|
|
153
|
+
// Guard: if the AI call did not succeed, surface the real error instead of trying to parse
|
|
154
|
+
if (result.status && result.status !== 'success') {
|
|
155
|
+
throw new Error(`Impact analysis ${result.status}: ${result.finalMessage}`);
|
|
156
|
+
}
|
|
153
157
|
// Parse AI response
|
|
154
158
|
const { safe, summary } = parseImpactAnalysis(result.finalMessage);
|
|
155
159
|
// Extract tools used from execution record
|
|
@@ -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;AAKxB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,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,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,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,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAgED;;;;;GAKG;AACH,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,aAAa,EACnB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,WAAW,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,
|
|
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;AAKxB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,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,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,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,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAgED;;;;;GAKG;AACH,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,aAAa,EACnB,aAAa,CAAC,EAAE,aAAa,GAC5B,OAAO,CAAC,WAAW,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAkO3E"}
|
package/dist/tools/query.js
CHANGED
|
@@ -175,6 +175,10 @@ async function handleQueryTool(args, pluginManager) {
|
|
|
175
175
|
toolsUsed,
|
|
176
176
|
visualizationMode
|
|
177
177
|
});
|
|
178
|
+
// Guard: if the AI call did not succeed, surface the real error instead of trying to parse
|
|
179
|
+
if (result.status && result.status !== 'success') {
|
|
180
|
+
throw error_handling_1.ErrorHandler.createError(error_handling_1.ErrorCategory.AI_SERVICE, error_handling_1.ErrorSeverity.HIGH, `Query ${result.status}: ${result.finalMessage}`, { operation: 'query_tool_execution', component: 'QueryTool', isRetryable: true, requestId, input: { intent } });
|
|
181
|
+
}
|
|
178
182
|
// Handle visualization mode - return visualization response with sessionId for caching
|
|
179
183
|
if (visualizationMode) {
|
|
180
184
|
const visualizationResponse = (0, visualization_1.parseVisualizationResponse)(result.finalMessage, toolsUsed);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remediate.d.ts","sourceRoot":"","sources":["../../src/tools/remediate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,OAAO,EAEL,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"remediate.d.ts","sourceRoot":"","sources":["../../src/tools/remediate.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/remediate.js
CHANGED
|
@@ -51,6 +51,7 @@ const fs = __importStar(require("fs"));
|
|
|
51
51
|
const path = __importStar(require("path"));
|
|
52
52
|
const request_context_1 = require("../interfaces/request-context");
|
|
53
53
|
const rbac_1 = require("../core/rbac");
|
|
54
|
+
const session_events_1 = require("../core/session-events");
|
|
54
55
|
const internal_tools_1 = require("../core/internal-tools");
|
|
55
56
|
// PRD #143 Milestone 1: Hybrid approach - AI can use kubectl_api_resources tool OR continue with JSON dataRequests
|
|
56
57
|
// Tool metadata for direct MCP registration
|
|
@@ -194,6 +195,10 @@ async function conductInvestigation(session, sessionManager, aiProvider, logger,
|
|
|
194
195
|
toolCallsExecuted: result.toolCallsExecuted.length,
|
|
195
196
|
responseLength: result.finalMessage.length,
|
|
196
197
|
});
|
|
198
|
+
// Guard: if the AI call did not succeed, surface the real error instead of trying to parse
|
|
199
|
+
if (result.status && result.status !== 'success') {
|
|
200
|
+
throw new Error(`Remediation investigation ${result.status}: ${result.finalMessage}`);
|
|
201
|
+
}
|
|
197
202
|
// Parse final response as JSON (AI returns final analysis in JSON format)
|
|
198
203
|
const finalAnalysis = parseAIFinalAnalysis(result.finalMessage);
|
|
199
204
|
// Build RemediateOutput from parsed analysis
|
|
@@ -256,6 +261,13 @@ async function conductInvestigation(session, sessionManager, aiProvider, logger,
|
|
|
256
261
|
finalAnalysis: output,
|
|
257
262
|
status: 'analysis_complete',
|
|
258
263
|
});
|
|
264
|
+
(0, session_events_1.getSessionEventBus)().publish(session_events_1.SESSION_EVENTS.SESSION_UPDATED, {
|
|
265
|
+
sessionId: session.sessionId,
|
|
266
|
+
toolName: 'remediate',
|
|
267
|
+
status: 'analysis_complete',
|
|
268
|
+
issue: session.data.issue,
|
|
269
|
+
timestamp: new Date().toISOString(),
|
|
270
|
+
});
|
|
259
271
|
logger.info('Investigation and analysis completed', {
|
|
260
272
|
requestId,
|
|
261
273
|
sessionId: session.sessionId,
|
|
@@ -271,6 +283,13 @@ async function conductInvestigation(session, sessionManager, aiProvider, logger,
|
|
|
271
283
|
});
|
|
272
284
|
// Mark session as failed
|
|
273
285
|
sessionManager.updateSession(session.sessionId, { status: 'failed' });
|
|
286
|
+
(0, session_events_1.getSessionEventBus)().publish(session_events_1.SESSION_EVENTS.SESSION_UPDATED, {
|
|
287
|
+
sessionId: session.sessionId,
|
|
288
|
+
toolName: 'remediate',
|
|
289
|
+
status: 'failed',
|
|
290
|
+
issue: session.data.issue,
|
|
291
|
+
timestamp: new Date().toISOString(),
|
|
292
|
+
});
|
|
274
293
|
throw error_handling_1.ErrorHandler.createError(error_handling_1.ErrorCategory.AI_SERVICE, error_handling_1.ErrorSeverity.HIGH, `Investigation failed: ${error instanceof Error ? error.message : 'Unknown error'}`, {
|
|
275
294
|
operation: 'investigation_loop',
|
|
276
295
|
component: 'RemediateTool',
|
|
@@ -766,6 +785,13 @@ IMPORTANT: You MUST respond with the final JSON analysis format as specified in
|
|
|
766
785
|
status: overallSuccess ? 'executed_successfully' : 'executed_with_errors',
|
|
767
786
|
executionResults: results,
|
|
768
787
|
});
|
|
788
|
+
(0, session_events_1.getSessionEventBus)().publish(session_events_1.SESSION_EVENTS.SESSION_UPDATED, {
|
|
789
|
+
sessionId: session.sessionId,
|
|
790
|
+
toolName: 'remediate',
|
|
791
|
+
status: overallSuccess ? 'executed_successfully' : 'executed_with_errors',
|
|
792
|
+
issue: session.data.issue,
|
|
793
|
+
timestamp: new Date().toISOString(),
|
|
794
|
+
});
|
|
769
795
|
const hasOnlyGitOps = executedCommandCount === 0 && pullRequestInfo !== undefined;
|
|
770
796
|
const prInfo = pullRequestInfo;
|
|
771
797
|
let nextSteps;
|
|
@@ -921,6 +947,13 @@ async function handleRemediateTool(args) {
|
|
|
921
947
|
interaction_id: validatedInput.interaction_id,
|
|
922
948
|
status: 'investigating',
|
|
923
949
|
});
|
|
950
|
+
(0, session_events_1.getSessionEventBus)().publish(session_events_1.SESSION_EVENTS.SESSION_CREATED, {
|
|
951
|
+
sessionId: session.sessionId,
|
|
952
|
+
toolName: 'remediate',
|
|
953
|
+
status: 'investigating',
|
|
954
|
+
issue: validatedInput.issue,
|
|
955
|
+
timestamp: session.createdAt,
|
|
956
|
+
});
|
|
924
957
|
logger.info('Investigation session created', {
|
|
925
958
|
requestId,
|
|
926
959
|
sessionId: session.sessionId,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vfarcic/dot-ai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.14.1",
|
|
4
4
|
"description": "AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance",
|
|
5
5
|
"mcpName": "io.github.vfarcic/dot-ai",
|
|
6
6
|
"main": "dist/index.js",
|