centaurus-cli 2.3.0 → 2.5.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/README.md +151 -1
- package/dist/cli-adapter.d.ts +41 -2
- package/dist/cli-adapter.d.ts.map +1 -1
- package/dist/cli-adapter.js +407 -79
- package/dist/cli-adapter.js.map +1 -1
- package/dist/config/types.d.ts +23 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +20 -0
- package/dist/config/types.js.map +1 -1
- package/dist/context/__tests__/command-detector.test.d.ts +14 -0
- package/dist/context/__tests__/command-detector.test.d.ts.map +1 -0
- package/dist/context/__tests__/command-detector.test.js +318 -0
- package/dist/context/__tests__/command-detector.test.js.map +1 -0
- package/dist/context/__tests__/context-manager.test.d.ts +16 -0
- package/dist/context/__tests__/context-manager.test.d.ts.map +1 -0
- package/dist/context/__tests__/context-manager.test.js +375 -0
- package/dist/context/__tests__/context-manager.test.js.map +1 -0
- package/dist/context/__tests__/error-handling.test.d.ts +15 -0
- package/dist/context/__tests__/error-handling.test.d.ts.map +1 -0
- package/dist/context/__tests__/error-handling.test.js +447 -0
- package/dist/context/__tests__/error-handling.test.js.map +1 -0
- package/dist/context/command-detector.d.ts +50 -0
- package/dist/context/command-detector.d.ts.map +1 -0
- package/dist/context/command-detector.js +72 -0
- package/dist/context/command-detector.js.map +1 -0
- package/dist/context/context-manager.d.ts +144 -0
- package/dist/context/context-manager.d.ts.map +1 -0
- package/dist/context/context-manager.js +487 -0
- package/dist/context/context-manager.js.map +1 -0
- package/dist/context/handlers/__tests__/docker-handler.test.d.ts +13 -0
- package/dist/context/handlers/__tests__/docker-handler.test.d.ts.map +1 -0
- package/dist/context/handlers/__tests__/docker-handler.test.js +285 -0
- package/dist/context/handlers/__tests__/docker-handler.test.js.map +1 -0
- package/dist/context/handlers/__tests__/ssh-handler.test.d.ts +13 -0
- package/dist/context/handlers/__tests__/ssh-handler.test.d.ts.map +1 -0
- package/dist/context/handlers/__tests__/ssh-handler.test.js +251 -0
- package/dist/context/handlers/__tests__/ssh-handler.test.js.map +1 -0
- package/dist/context/handlers/__tests__/wsl-handler.test.d.ts +7 -0
- package/dist/context/handlers/__tests__/wsl-handler.test.d.ts.map +1 -0
- package/dist/context/handlers/__tests__/wsl-handler.test.js +331 -0
- package/dist/context/handlers/__tests__/wsl-handler.test.js.map +1 -0
- package/dist/context/handlers/docker-handler.d.ts +111 -0
- package/dist/context/handlers/docker-handler.d.ts.map +1 -0
- package/dist/context/handlers/docker-handler.js +439 -0
- package/dist/context/handlers/docker-handler.js.map +1 -0
- package/dist/context/handlers/ssh-handler.d.ts +120 -0
- package/dist/context/handlers/ssh-handler.d.ts.map +1 -0
- package/dist/context/handlers/ssh-handler.js +523 -0
- package/dist/context/handlers/ssh-handler.js.map +1 -0
- package/dist/context/handlers/wsl-handler.d.ts +128 -0
- package/dist/context/handlers/wsl-handler.d.ts.map +1 -0
- package/dist/context/handlers/wsl-handler.js +590 -0
- package/dist/context/handlers/wsl-handler.js.map +1 -0
- package/dist/context/index.d.ts +8 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +7 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/subshell-handler.d.ts +130 -0
- package/dist/context/subshell-handler.d.ts.map +1 -0
- package/dist/context/subshell-handler.js +5 -0
- package/dist/context/subshell-handler.js.map +1 -0
- package/dist/context/types.d.ts +70 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +34 -0
- package/dist/context/types.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/services/__tests__/ai-context-injector.test.d.ts +15 -0
- package/dist/services/__tests__/ai-context-injector.test.d.ts.map +1 -0
- package/dist/services/__tests__/ai-context-injector.test.js +326 -0
- package/dist/services/__tests__/ai-context-injector.test.js.map +1 -0
- package/dist/services/ai-context-injector.d.ts +41 -0
- package/dist/services/ai-context-injector.d.ts.map +1 -0
- package/dist/services/ai-context-injector.js +97 -0
- package/dist/services/ai-context-injector.js.map +1 -0
- package/dist/services/ai-service-client.d.ts +4 -1
- package/dist/services/ai-service-client.d.ts.map +1 -1
- package/dist/services/ai-service-client.js +6 -2
- package/dist/services/ai-service-client.js.map +1 -1
- package/dist/services/api-client.js +1 -1
- package/dist/services/api-client.js.map +1 -1
- package/dist/src/context/types.js +27 -0
- package/dist/src/services/ai-context-injector.js +96 -0
- package/dist/src/services/ai-service-client.js +270 -0
- package/dist/src/services/api-client.js +349 -0
- package/dist/src/tools/types.js +1 -0
- package/dist/src/types/index.js +1 -0
- package/dist/test/context/types.js +27 -0
- package/dist/test/services/__tests__/ai-context-injector.test.js +325 -0
- package/dist/test/services/ai-context-injector.js +96 -0
- package/dist/test/services/ai-service-client.js +270 -0
- package/dist/test/services/api-client.js +349 -0
- package/dist/test/tools/types.js +1 -0
- package/dist/test/types/index.js +1 -0
- package/dist/test-ai-context-injector.js +97 -0
- package/dist/test-ssh-handler.d.ts +8 -0
- package/dist/test-ssh-handler.d.ts.map +1 -0
- package/dist/test-ssh-handler.js +198 -0
- package/dist/test-ssh-handler.js.map +1 -0
- package/dist/tools/command.d.ts.map +1 -1
- package/dist/tools/command.js +123 -46
- package/dist/tools/command.js.map +1 -1
- package/dist/tools/file-ops.d.ts.map +1 -1
- package/dist/tools/file-ops.js +115 -48
- package/dist/tools/file-ops.js.map +1 -1
- package/dist/tools/types.d.ts +1 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/web-search.js +2 -2
- package/dist/tools/web-search.js.map +1 -1
- package/dist/types/index.d.ts +41 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/components/App.d.ts +3 -0
- package/dist/ui/components/App.d.ts.map +1 -1
- package/dist/ui/components/App.js +213 -46
- package/dist/ui/components/App.js.map +1 -1
- package/dist/ui/components/Breadcrumbs.d.ts +12 -0
- package/dist/ui/components/Breadcrumbs.d.ts.map +1 -0
- package/dist/ui/components/Breadcrumbs.js +62 -0
- package/dist/ui/components/Breadcrumbs.js.map +1 -0
- package/dist/ui/components/CodeBlock.js +1 -1
- package/dist/ui/components/CodeBlock.js.map +1 -1
- package/dist/ui/components/DiffViewer.js +1 -1
- package/dist/ui/components/DiffViewer.js.map +1 -1
- package/dist/ui/components/FileViewerScreen.d.ts +14 -0
- package/dist/ui/components/FileViewerScreen.d.ts.map +1 -0
- package/dist/ui/components/FileViewerScreen.js +74 -0
- package/dist/ui/components/FileViewerScreen.js.map +1 -0
- package/dist/ui/components/InputBox.d.ts +2 -0
- package/dist/ui/components/InputBox.d.ts.map +1 -1
- package/dist/ui/components/InputBox.js +85 -41
- package/dist/ui/components/InputBox.js.map +1 -1
- package/dist/ui/components/MessageDisplay.d.ts.map +1 -1
- package/dist/ui/components/MessageDisplay.js +3 -28
- package/dist/ui/components/MessageDisplay.js.map +1 -1
- package/dist/ui/components/PasswordPrompt.d.ts +9 -0
- package/dist/ui/components/PasswordPrompt.d.ts.map +1 -0
- package/dist/ui/components/PasswordPrompt.js +20 -0
- package/dist/ui/components/PasswordPrompt.js.map +1 -0
- package/dist/ui/components/StatusBar.d.ts +2 -0
- package/dist/ui/components/StatusBar.d.ts.map +1 -1
- package/dist/ui/components/StatusBar.js +36 -1
- package/dist/ui/components/StatusBar.js.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.d.ts.map +1 -1
- package/dist/ui/components/ToolExecutionMessage.js +13 -24
- package/dist/ui/components/ToolExecutionMessage.js.map +1 -1
- package/dist/ui/components/VersionUpdatePrompt.d.ts +10 -0
- package/dist/ui/components/VersionUpdatePrompt.d.ts.map +1 -0
- package/dist/ui/components/VersionUpdatePrompt.js +41 -0
- package/dist/ui/components/VersionUpdatePrompt.js.map +1 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +38 -10
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/version-checker.d.ts +14 -0
- package/dist/utils/version-checker.d.ts.map +1 -0
- package/dist/utils/version-checker.js +63 -0
- package/dist/utils/version-checker.js.map +1 -0
- package/package.json +71 -69
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Context Injector
|
|
3
|
+
*
|
|
4
|
+
* Injects subshell context into AI message history to make the AI aware
|
|
5
|
+
* of the current execution environment (SSH, WSL, Docker, etc.)
|
|
6
|
+
*/
|
|
7
|
+
import type { Message } from './ai-service-client.js';
|
|
8
|
+
import type { SubshellContext } from '../context/types.js';
|
|
9
|
+
/**
|
|
10
|
+
* AI Context Injector class
|
|
11
|
+
* Handles injection of subshell context into message history before AI calls
|
|
12
|
+
*/
|
|
13
|
+
export declare class AIContextInjector {
|
|
14
|
+
/**
|
|
15
|
+
* Inject subshell context into message history
|
|
16
|
+
*
|
|
17
|
+
* If the current context is a subshell (not local), this method inserts
|
|
18
|
+
* a system message describing the environment before the last user message.
|
|
19
|
+
* This ensures the AI is aware of where commands will execute.
|
|
20
|
+
*
|
|
21
|
+
* @param messages - The conversation history
|
|
22
|
+
* @param context - The current subshell context
|
|
23
|
+
* @returns Modified message array with context injected (if applicable)
|
|
24
|
+
*/
|
|
25
|
+
injectSubshellContext(messages: Message[], context: SubshellContext): Message[];
|
|
26
|
+
/**
|
|
27
|
+
* Build context message describing the current subshell environment
|
|
28
|
+
*
|
|
29
|
+
* Creates a formatted message that informs the AI about:
|
|
30
|
+
* - Environment type (SSH, WSL, Docker)
|
|
31
|
+
* - Working directory
|
|
32
|
+
* - Shell type
|
|
33
|
+
* - Operating system
|
|
34
|
+
* - Connection details (hostname, username, etc.)
|
|
35
|
+
*
|
|
36
|
+
* @param context - The current subshell context
|
|
37
|
+
* @returns Formatted context message string
|
|
38
|
+
*/
|
|
39
|
+
private buildContextMessage;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ai-context-injector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-context-injector.d.ts","sourceRoot":"","sources":["../../src/services/ai-context-injector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,EAAE;IAoC/E;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,mBAAmB;CAiC5B"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Context Injector
|
|
3
|
+
*
|
|
4
|
+
* Injects subshell context into AI message history to make the AI aware
|
|
5
|
+
* of the current execution environment (SSH, WSL, Docker, etc.)
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* AI Context Injector class
|
|
9
|
+
* Handles injection of subshell context into message history before AI calls
|
|
10
|
+
*/
|
|
11
|
+
export class AIContextInjector {
|
|
12
|
+
/**
|
|
13
|
+
* Inject subshell context into message history
|
|
14
|
+
*
|
|
15
|
+
* If the current context is a subshell (not local), this method inserts
|
|
16
|
+
* a system message describing the environment before the last user message.
|
|
17
|
+
* This ensures the AI is aware of where commands will execute.
|
|
18
|
+
*
|
|
19
|
+
* @param messages - The conversation history
|
|
20
|
+
* @param context - The current subshell context
|
|
21
|
+
* @returns Modified message array with context injected (if applicable)
|
|
22
|
+
*/
|
|
23
|
+
injectSubshellContext(messages, context) {
|
|
24
|
+
// Don't inject context for local environment
|
|
25
|
+
if (context.type === 'local') {
|
|
26
|
+
return messages;
|
|
27
|
+
}
|
|
28
|
+
// Build context message
|
|
29
|
+
const contextMessage = {
|
|
30
|
+
role: 'system',
|
|
31
|
+
content: this.buildContextMessage(context),
|
|
32
|
+
};
|
|
33
|
+
// Insert context message before the last user message
|
|
34
|
+
// This ensures the AI sees the context right before processing the request
|
|
35
|
+
const result = [...messages];
|
|
36
|
+
// Find the last user message index
|
|
37
|
+
let lastUserMessageIndex = -1;
|
|
38
|
+
for (let i = result.length - 1; i >= 0; i--) {
|
|
39
|
+
if (result[i].role === 'user') {
|
|
40
|
+
lastUserMessageIndex = i;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// If we found a user message, insert context before it
|
|
45
|
+
// Otherwise, append to the end
|
|
46
|
+
if (lastUserMessageIndex >= 0) {
|
|
47
|
+
result.splice(lastUserMessageIndex, 0, contextMessage);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
result.push(contextMessage);
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build context message describing the current subshell environment
|
|
56
|
+
*
|
|
57
|
+
* Creates a formatted message that informs the AI about:
|
|
58
|
+
* - Environment type (SSH, WSL, Docker)
|
|
59
|
+
* - Working directory
|
|
60
|
+
* - Shell type
|
|
61
|
+
* - Operating system
|
|
62
|
+
* - Connection details (hostname, username, etc.)
|
|
63
|
+
*
|
|
64
|
+
* @param context - The current subshell context
|
|
65
|
+
* @returns Formatted context message string
|
|
66
|
+
*/
|
|
67
|
+
buildContextMessage(context) {
|
|
68
|
+
const { type, metadata } = context;
|
|
69
|
+
let message = `\n\n## CURRENT EXECUTION ENVIRONMENT\n\n`;
|
|
70
|
+
message += `You are currently operating in a ${type.toUpperCase()} environment.\n\n`;
|
|
71
|
+
message += `**Environment Details:**\n`;
|
|
72
|
+
message += `- Type: ${type}\n`;
|
|
73
|
+
message += `- Working Directory: ${metadata.workingDirectory}\n`;
|
|
74
|
+
message += `- Shell: ${metadata.shell}\n`;
|
|
75
|
+
message += `- OS: ${metadata.os}\n`;
|
|
76
|
+
// Add type-specific details
|
|
77
|
+
if (metadata.hostname) {
|
|
78
|
+
message += `- Hostname: ${metadata.hostname}\n`;
|
|
79
|
+
}
|
|
80
|
+
if (metadata.username) {
|
|
81
|
+
message += `- Username: ${metadata.username}\n`;
|
|
82
|
+
}
|
|
83
|
+
if (metadata.distroName) {
|
|
84
|
+
message += `- Distribution: ${metadata.distroName}\n`;
|
|
85
|
+
}
|
|
86
|
+
if (metadata.containerId) {
|
|
87
|
+
message += `- Container: ${metadata.containerId}\n`;
|
|
88
|
+
}
|
|
89
|
+
if (metadata.port) {
|
|
90
|
+
message += `- Port: ${metadata.port}\n`;
|
|
91
|
+
}
|
|
92
|
+
message += `\n**IMPORTANT:** All commands and file operations you execute will run in this ${type} environment, not on the local machine.\n`;
|
|
93
|
+
message += `When reading files, writing files, executing commands, or performing any operations, they will all happen in the ${type} environment.\n`;
|
|
94
|
+
return message;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=ai-context-injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-context-injector.js","sourceRoot":"","sources":["../../src/services/ai-context-injector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IAC5B;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,QAAmB,EAAE,OAAwB;QACjE,6CAA6C;QAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,wBAAwB;QACxB,MAAM,cAAc,GAAY;YAC9B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;SAC3C,CAAC;QAEF,sDAAsD;QACtD,2EAA2E;QAC3E,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE7B,mCAAmC;QACnC,IAAI,oBAAoB,GAAG,CAAC,CAAC,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9B,oBAAoB,GAAG,CAAC,CAAC;gBACzB,MAAM;YACR,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,+BAA+B;QAC/B,IAAI,oBAAoB,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,mBAAmB,CAAC,OAAwB;QAClD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEnC,IAAI,OAAO,GAAG,0CAA0C,CAAC;QACzD,OAAO,IAAI,oCAAoC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC;QACrF,OAAO,IAAI,4BAA4B,CAAC;QACxC,OAAO,IAAI,WAAW,IAAI,IAAI,CAAC;QAC/B,OAAO,IAAI,wBAAwB,QAAQ,CAAC,gBAAgB,IAAI,CAAC;QACjE,OAAO,IAAI,YAAY,QAAQ,CAAC,KAAK,IAAI,CAAC;QAC1C,OAAO,IAAI,SAAS,QAAQ,CAAC,EAAE,IAAI,CAAC;QAEpC,4BAA4B;QAC5B,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,QAAQ,CAAC,QAAQ,IAAI,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtB,OAAO,IAAI,eAAe,QAAQ,CAAC,QAAQ,IAAI,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,IAAI,mBAAmB,QAAQ,CAAC,UAAU,IAAI,CAAC;QACxD,CAAC;QACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzB,OAAO,IAAI,gBAAgB,QAAQ,CAAC,WAAW,IAAI,CAAC;QACtD,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,WAAW,QAAQ,CAAC,IAAI,IAAI,CAAC;QAC1C,CAAC;QAED,OAAO,IAAI,kFAAkF,IAAI,2CAA2C,CAAC;QAC7I,OAAO,IAAI,oHAAoH,IAAI,iBAAiB,CAAC;QAErJ,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* AI chat requests. Replaces direct Gemini SDK usage in the CLI.
|
|
6
6
|
*/
|
|
7
7
|
import type { ToolSchema } from '../tools/types.js';
|
|
8
|
+
import type { EnvironmentContext } from '../types/index.js';
|
|
8
9
|
/**
|
|
9
10
|
* Message format for AI chat requests
|
|
10
11
|
*/
|
|
@@ -59,9 +60,11 @@ export declare class AIServiceClient {
|
|
|
59
60
|
* @param model - The AI model to use (e.g., 'gemini-2.5-flash')
|
|
60
61
|
* @param messages - Conversation history including system, user, assistant, and tool messages
|
|
61
62
|
* @param tools - Available tool schemas for the AI to use
|
|
63
|
+
* @param environmentContext - Optional environment context (OS, shell, cwd, etc.)
|
|
64
|
+
* @param mode - Optional mode (default, plan, command)
|
|
62
65
|
* @yields Stream chunks (text, tool calls, done, or error events)
|
|
63
66
|
*/
|
|
64
|
-
streamChat(model: string, messages: Message[], tools: ToolSchema[]): AsyncGenerator<StreamChunk, void, unknown>;
|
|
67
|
+
streamChat(model: string, messages: Message[], tools: ToolSchema[], environmentContext?: EnvironmentContext, mode?: string): AsyncGenerator<StreamChunk, void, unknown>;
|
|
65
68
|
/**
|
|
66
69
|
* Check if an error code is retryable
|
|
67
70
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-service-client.d.ts","sourceRoot":"","sources":["../../src/services/ai-service-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-service-client.d.ts","sourceRoot":"","sources":["../../src/services/ai-service-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK5D;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CAAC;AAc7E;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAgB;;IAQlC;;;OAGG;IACH,OAAO,CAAC,UAAU;IAUlB;;;;;;;;;OASG;IACI,UAAU,CACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,UAAU,EAAE,EACnB,kBAAkB,CAAC,EAAE,kBAAkB,EACvC,IAAI,CAAC,EAAE,MAAM,GACZ,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC;IAwJ7C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;IACH,OAAO,CAAC,KAAK;IAIb;;;OAGG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;OAKG;YACY,cAAc;CAuD9B;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
|
@@ -29,7 +29,7 @@ export class AIServiceClient {
|
|
|
29
29
|
// Use production URL by default, only use localhost in development mode
|
|
30
30
|
this.baseURL = process.env.DEV_MODE === 'true'
|
|
31
31
|
? 'http://localhost:3002/api'
|
|
32
|
-
: 'https://centaurus-backend.
|
|
32
|
+
: (process.env.BACKEND_URL || 'https://centaurus-backend-354715948975.asia-south1.run.app/api');
|
|
33
33
|
}
|
|
34
34
|
return this.baseURL;
|
|
35
35
|
}
|
|
@@ -39,15 +39,19 @@ export class AIServiceClient {
|
|
|
39
39
|
* @param model - The AI model to use (e.g., 'gemini-2.5-flash')
|
|
40
40
|
* @param messages - Conversation history including system, user, assistant, and tool messages
|
|
41
41
|
* @param tools - Available tool schemas for the AI to use
|
|
42
|
+
* @param environmentContext - Optional environment context (OS, shell, cwd, etc.)
|
|
43
|
+
* @param mode - Optional mode (default, plan, command)
|
|
42
44
|
* @yields Stream chunks (text, tool calls, done, or error events)
|
|
43
45
|
*/
|
|
44
|
-
async *streamChat(model, messages, tools) {
|
|
46
|
+
async *streamChat(model, messages, tools, environmentContext, mode) {
|
|
45
47
|
// Build request payload
|
|
46
48
|
const payload = {
|
|
47
49
|
model,
|
|
48
50
|
messages,
|
|
49
51
|
tools,
|
|
50
52
|
stream: true,
|
|
53
|
+
environmentContext,
|
|
54
|
+
mode,
|
|
51
55
|
};
|
|
52
56
|
// Get authentication token from api client
|
|
53
57
|
if (!apiClient.isAuthenticated()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-service-client.js","sourceRoot":"","sources":["../../src/services/ai-service-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-service-client.js","sourceRoot":"","sources":["../../src/services/ai-service-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ class ApiClient {
|
|
|
38
38
|
// Use production URL by default, only use localhost in development mode
|
|
39
39
|
const baseURL = process.env.DEV_MODE === 'true'
|
|
40
40
|
? 'http://localhost:3002/api'
|
|
41
|
-
: 'https://centaurus-backend.
|
|
41
|
+
: (process.env.BACKEND_URL || 'https://centaurus-backend-354715948975.asia-south1.run.app/api');
|
|
42
42
|
this.client = axios.create({
|
|
43
43
|
baseURL,
|
|
44
44
|
timeout: 30000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,IAAI,EAAW,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAuI7B;;GAEG;AACH,MAAM,SAAS;IACL,MAAM,GAAyB,IAAI,CAAC;IACpC,YAAY,GAAkB,IAAI,CAAC;IACnC,UAAU,CAAS;IACnB,SAAS,CAAS;IAE1B;QACE,yDAAyD;QACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEvD,qCAAqC;QACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,uDAAuD;QACvD,uDAAuD;IACzD,CAAC;IAED;;;OAGG;IACK,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,gDAAgD;YAChD,wEAAwE;YACxE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;gBAC7C,CAAC,CAAC,2BAA2B;gBAC7B,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the subshell context management system
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Error thrown when a subshell connection fails
|
|
6
|
+
*/
|
|
7
|
+
export class SubshellConnectionError extends Error {
|
|
8
|
+
constructor(type, reason, recoverable) {
|
|
9
|
+
super(`${type} connection failed: ${reason}`);
|
|
10
|
+
this.type = type;
|
|
11
|
+
this.reason = reason;
|
|
12
|
+
this.recoverable = recoverable;
|
|
13
|
+
this.name = 'SubshellConnectionError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Error thrown when a subshell command execution fails
|
|
18
|
+
*/
|
|
19
|
+
export class SubshellExecutionError extends Error {
|
|
20
|
+
constructor(command, reason, exitCode) {
|
|
21
|
+
super(`Command execution failed: ${reason}`);
|
|
22
|
+
this.command = command;
|
|
23
|
+
this.reason = reason;
|
|
24
|
+
this.exitCode = exitCode;
|
|
25
|
+
this.name = 'SubshellExecutionError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Context Injector
|
|
3
|
+
*
|
|
4
|
+
* Injects subshell context into AI message history to make the AI aware
|
|
5
|
+
* of the current execution environment (SSH, WSL, Docker, etc.)
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* AI Context Injector class
|
|
9
|
+
* Handles injection of subshell context into message history before AI calls
|
|
10
|
+
*/
|
|
11
|
+
export class AIContextInjector {
|
|
12
|
+
/**
|
|
13
|
+
* Inject subshell context into message history
|
|
14
|
+
*
|
|
15
|
+
* If the current context is a subshell (not local), this method inserts
|
|
16
|
+
* a system message describing the environment before the last user message.
|
|
17
|
+
* This ensures the AI is aware of where commands will execute.
|
|
18
|
+
*
|
|
19
|
+
* @param messages - The conversation history
|
|
20
|
+
* @param context - The current subshell context
|
|
21
|
+
* @returns Modified message array with context injected (if applicable)
|
|
22
|
+
*/
|
|
23
|
+
injectSubshellContext(messages, context) {
|
|
24
|
+
// Don't inject context for local environment
|
|
25
|
+
if (context.type === 'local') {
|
|
26
|
+
return messages;
|
|
27
|
+
}
|
|
28
|
+
// Build context message
|
|
29
|
+
const contextMessage = {
|
|
30
|
+
role: 'system',
|
|
31
|
+
content: this.buildContextMessage(context),
|
|
32
|
+
};
|
|
33
|
+
// Insert context message before the last user message
|
|
34
|
+
// This ensures the AI sees the context right before processing the request
|
|
35
|
+
const result = [...messages];
|
|
36
|
+
// Find the last user message index
|
|
37
|
+
let lastUserMessageIndex = -1;
|
|
38
|
+
for (let i = result.length - 1; i >= 0; i--) {
|
|
39
|
+
if (result[i].role === 'user') {
|
|
40
|
+
lastUserMessageIndex = i;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// If we found a user message, insert context before it
|
|
45
|
+
// Otherwise, append to the end
|
|
46
|
+
if (lastUserMessageIndex >= 0) {
|
|
47
|
+
result.splice(lastUserMessageIndex, 0, contextMessage);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
result.push(contextMessage);
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Build context message describing the current subshell environment
|
|
56
|
+
*
|
|
57
|
+
* Creates a formatted message that informs the AI about:
|
|
58
|
+
* - Environment type (SSH, WSL, Docker)
|
|
59
|
+
* - Working directory
|
|
60
|
+
* - Shell type
|
|
61
|
+
* - Operating system
|
|
62
|
+
* - Connection details (hostname, username, etc.)
|
|
63
|
+
*
|
|
64
|
+
* @param context - The current subshell context
|
|
65
|
+
* @returns Formatted context message string
|
|
66
|
+
*/
|
|
67
|
+
buildContextMessage(context) {
|
|
68
|
+
const { type, metadata } = context;
|
|
69
|
+
let message = `\n\n## CURRENT EXECUTION ENVIRONMENT\n\n`;
|
|
70
|
+
message += `You are currently operating in a ${type.toUpperCase()} environment.\n\n`;
|
|
71
|
+
message += `**Environment Details:**\n`;
|
|
72
|
+
message += `- Type: ${type}\n`;
|
|
73
|
+
message += `- Working Directory: ${metadata.workingDirectory}\n`;
|
|
74
|
+
message += `- Shell: ${metadata.shell}\n`;
|
|
75
|
+
message += `- OS: ${metadata.os}\n`;
|
|
76
|
+
// Add type-specific details
|
|
77
|
+
if (metadata.hostname) {
|
|
78
|
+
message += `- Hostname: ${metadata.hostname}\n`;
|
|
79
|
+
}
|
|
80
|
+
if (metadata.username) {
|
|
81
|
+
message += `- Username: ${metadata.username}\n`;
|
|
82
|
+
}
|
|
83
|
+
if (metadata.distroName) {
|
|
84
|
+
message += `- Distribution: ${metadata.distroName}\n`;
|
|
85
|
+
}
|
|
86
|
+
if (metadata.containerId) {
|
|
87
|
+
message += `- Container: ${metadata.containerId}\n`;
|
|
88
|
+
}
|
|
89
|
+
if (metadata.port) {
|
|
90
|
+
message += `- Port: ${metadata.port}\n`;
|
|
91
|
+
}
|
|
92
|
+
message += `\n**IMPORTANT:** All commands and file operations you execute will run in this ${type} environment, not on the local machine.\n`;
|
|
93
|
+
message += `When reading files, writing files, executing commands, or performing any operations, they will all happen in the ${type} environment.\n`;
|
|
94
|
+
return message;
|
|
95
|
+
}
|
|
96
|
+
}
|