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,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface and types for subshell handlers
|
|
3
|
+
*/
|
|
4
|
+
import { SubshellContext } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Information for displaying breadcrumbs in the UI
|
|
7
|
+
*/
|
|
8
|
+
export interface BreadcrumbInfo {
|
|
9
|
+
/** Label for the breadcrumb (e.g., "ssh", "wsl", "docker") */
|
|
10
|
+
label: string;
|
|
11
|
+
/** Optional value to display (e.g., "user@host") */
|
|
12
|
+
value?: string;
|
|
13
|
+
/** Optional color for the breadcrumb */
|
|
14
|
+
color?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Result of a command execution
|
|
18
|
+
*/
|
|
19
|
+
export interface CommandResult {
|
|
20
|
+
/** Standard output from the command */
|
|
21
|
+
stdout: string;
|
|
22
|
+
/** Standard error from the command */
|
|
23
|
+
stderr: string;
|
|
24
|
+
/** Exit code of the command */
|
|
25
|
+
exitCode: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Directory entry information
|
|
29
|
+
*/
|
|
30
|
+
export interface DirectoryEntry {
|
|
31
|
+
/** Name of the file or directory */
|
|
32
|
+
name: string;
|
|
33
|
+
/** Type of the entry */
|
|
34
|
+
type: 'file' | 'directory';
|
|
35
|
+
/** Size in bytes (optional) */
|
|
36
|
+
size?: number;
|
|
37
|
+
/** Permissions string (optional) */
|
|
38
|
+
permissions?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Search result from file search operations
|
|
42
|
+
*/
|
|
43
|
+
export interface SearchResult {
|
|
44
|
+
/** File path where the match was found */
|
|
45
|
+
file: string;
|
|
46
|
+
/** Line number of the match */
|
|
47
|
+
line: number;
|
|
48
|
+
/** Content of the matching line */
|
|
49
|
+
content: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Interface that all subshell handlers must implement
|
|
53
|
+
*/
|
|
54
|
+
export interface SubshellHandler {
|
|
55
|
+
/** Type identifier for this handler */
|
|
56
|
+
readonly type: string;
|
|
57
|
+
/** Regular expressions for detecting this subshell type */
|
|
58
|
+
readonly detectionPatterns: RegExp[];
|
|
59
|
+
/**
|
|
60
|
+
* Detect if a command should trigger this handler
|
|
61
|
+
* @param command The command to check
|
|
62
|
+
* @returns True if this handler should handle the command
|
|
63
|
+
*/
|
|
64
|
+
detect(command: string): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Connect to the subshell environment
|
|
67
|
+
* @param command The command that initiated the subshell
|
|
68
|
+
* @param cwd Current working directory
|
|
69
|
+
* @returns Promise resolving to the new subshell context
|
|
70
|
+
*/
|
|
71
|
+
connect(command: string, cwd: string): Promise<SubshellContext>;
|
|
72
|
+
/**
|
|
73
|
+
* Disconnect from the subshell environment
|
|
74
|
+
* @returns Promise that resolves when disconnected
|
|
75
|
+
*/
|
|
76
|
+
disconnect(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Execute a command in the subshell
|
|
79
|
+
* @param command The command to execute
|
|
80
|
+
* @returns Promise resolving to the command result
|
|
81
|
+
*/
|
|
82
|
+
executeCommand(command: string): Promise<CommandResult>;
|
|
83
|
+
/**
|
|
84
|
+
* Read a file from the subshell filesystem
|
|
85
|
+
* @param path Path to the file
|
|
86
|
+
* @returns Promise resolving to the file content
|
|
87
|
+
*/
|
|
88
|
+
readFile(path: string): Promise<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Write a file to the subshell filesystem
|
|
91
|
+
* @param path Path to the file
|
|
92
|
+
* @param content Content to write
|
|
93
|
+
* @returns Promise that resolves when write is complete
|
|
94
|
+
*/
|
|
95
|
+
writeFile(path: string, content: string): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* List directory contents in the subshell
|
|
98
|
+
* @param path Path to the directory
|
|
99
|
+
* @returns Promise resolving to directory entries
|
|
100
|
+
*/
|
|
101
|
+
listDirectory(path: string): Promise<DirectoryEntry[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Search for files matching a pattern
|
|
104
|
+
* @param pattern Search pattern (regex)
|
|
105
|
+
* @param directory Directory to search in
|
|
106
|
+
* @returns Promise resolving to search results
|
|
107
|
+
*/
|
|
108
|
+
searchFiles(pattern: string, directory: string): Promise<SearchResult[]>;
|
|
109
|
+
/**
|
|
110
|
+
* Get the current working directory in the subshell
|
|
111
|
+
* @returns Promise resolving to the current working directory
|
|
112
|
+
*/
|
|
113
|
+
getCurrentWorkingDirectory(): Promise<string>;
|
|
114
|
+
/**
|
|
115
|
+
* Get the shell type (bash, zsh, fish, etc.)
|
|
116
|
+
* @returns Promise resolving to the shell type
|
|
117
|
+
*/
|
|
118
|
+
getShellType(): Promise<string>;
|
|
119
|
+
/**
|
|
120
|
+
* Get the operating system type
|
|
121
|
+
* @returns Promise resolving to the OS type
|
|
122
|
+
*/
|
|
123
|
+
getOSType(): Promise<'windows' | 'macos' | 'linux'>;
|
|
124
|
+
/**
|
|
125
|
+
* Get breadcrumb information for the UI
|
|
126
|
+
* @returns Array of breadcrumb information
|
|
127
|
+
*/
|
|
128
|
+
getBreadcrumbs(): BreadcrumbInfo[];
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=subshell-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subshell-handler.d.ts","sourceRoot":"","sources":["../../src/context/subshell-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IAEd,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IAEf,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAE3B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IAEb,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IAEb,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAIrC;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAEjC;;;;;OAKG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhE;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAI5B;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAExD;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAEvD;;;;;OAKG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAIzE;;;OAGG;IACH,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9C;;;OAGG;IACH,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhC;;;OAGG;IACH,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;IAIpD;;;OAGG;IACH,cAAc,IAAI,cAAc,EAAE,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subshell-handler.js","sourceRoot":"","sources":["../../src/context/subshell-handler.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types for the subshell context management system
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Connection state for a subshell
|
|
6
|
+
*/
|
|
7
|
+
export type ConnectionState = 'connecting' | 'connected' | 'disconnected' | 'error';
|
|
8
|
+
/**
|
|
9
|
+
* Operating system types
|
|
10
|
+
*/
|
|
11
|
+
export type OSType = 'windows' | 'macos' | 'linux';
|
|
12
|
+
/**
|
|
13
|
+
* Subshell type identifiers
|
|
14
|
+
*/
|
|
15
|
+
export type SubshellType = 'local' | 'ssh' | 'wsl' | 'docker';
|
|
16
|
+
/**
|
|
17
|
+
* Metadata about a subshell environment
|
|
18
|
+
*/
|
|
19
|
+
export interface SubshellMetadata {
|
|
20
|
+
/** Remote hostname (for SSH) */
|
|
21
|
+
hostname?: string;
|
|
22
|
+
/** Remote username (for SSH) */
|
|
23
|
+
username?: string;
|
|
24
|
+
/** Current working directory in the subshell */
|
|
25
|
+
workingDirectory: string;
|
|
26
|
+
/** Shell type (bash, zsh, fish, etc.) */
|
|
27
|
+
shell: string;
|
|
28
|
+
/** Operating system type */
|
|
29
|
+
os: OSType;
|
|
30
|
+
/** WSL distribution name (for WSL) */
|
|
31
|
+
distroName?: string;
|
|
32
|
+
/** Docker container ID (for Docker) */
|
|
33
|
+
containerId?: string;
|
|
34
|
+
/** Port number (for SSH) */
|
|
35
|
+
port?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Context representing the current execution environment
|
|
39
|
+
*/
|
|
40
|
+
export interface SubshellContext {
|
|
41
|
+
/** Type of the current context */
|
|
42
|
+
type: SubshellType;
|
|
43
|
+
/** Handler for this subshell (undefined for local) */
|
|
44
|
+
handler?: any;
|
|
45
|
+
/** Metadata about the environment */
|
|
46
|
+
metadata: SubshellMetadata;
|
|
47
|
+
/** Current connection state */
|
|
48
|
+
connectionState: ConnectionState;
|
|
49
|
+
/** Unique session identifier */
|
|
50
|
+
sessionId: string;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Error thrown when a subshell connection fails
|
|
54
|
+
*/
|
|
55
|
+
export declare class SubshellConnectionError extends Error {
|
|
56
|
+
type: string;
|
|
57
|
+
reason: string;
|
|
58
|
+
recoverable: boolean;
|
|
59
|
+
constructor(type: string, reason: string, recoverable: boolean);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Error thrown when a subshell command execution fails
|
|
63
|
+
*/
|
|
64
|
+
export declare class SubshellExecutionError extends Error {
|
|
65
|
+
command: string;
|
|
66
|
+
reason: string;
|
|
67
|
+
exitCode?: number;
|
|
68
|
+
constructor(command: string, reason: string, exitCode?: number);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/context/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;AAEpF;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IAEzB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IAEd,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IAEX,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,IAAI,EAAE,YAAY,CAAC;IAEnB,sDAAsD;IACtD,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd,qCAAqC;IACrC,QAAQ,EAAE,gBAAgB,CAAC;IAE3B,+BAA+B;IAC/B,eAAe,EAAE,eAAe,CAAC;IAEjC,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAEvC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,OAAO;gBAFpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,OAAO;CAK9B;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAEtC,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,QAAQ,CAAC,EAAE,MAAM;gBAFjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM;CAK3B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
type;
|
|
9
|
+
reason;
|
|
10
|
+
recoverable;
|
|
11
|
+
constructor(type, reason, recoverable) {
|
|
12
|
+
super(`${type} connection failed: ${reason}`);
|
|
13
|
+
this.type = type;
|
|
14
|
+
this.reason = reason;
|
|
15
|
+
this.recoverable = recoverable;
|
|
16
|
+
this.name = 'SubshellConnectionError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Error thrown when a subshell command execution fails
|
|
21
|
+
*/
|
|
22
|
+
export class SubshellExecutionError extends Error {
|
|
23
|
+
command;
|
|
24
|
+
reason;
|
|
25
|
+
exitCode;
|
|
26
|
+
constructor(command, reason, exitCode) {
|
|
27
|
+
super(`Command execution failed: ${reason}`);
|
|
28
|
+
this.command = command;
|
|
29
|
+
this.reason = reason;
|
|
30
|
+
this.exitCode = exitCode;
|
|
31
|
+
this.name = 'SubshellExecutionError';
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/context/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkEH;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAEvC;IACA;IACA;IAHT,YACS,IAAY,EACZ,MAAc,EACd,WAAoB;QAE3B,KAAK,CAAC,GAAG,IAAI,uBAAuB,MAAM,EAAE,CAAC,CAAC;QAJvC,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAS;QAG3B,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAEtC;IACA;IACA;IAHT,YACS,OAAe,EACf,MAAc,EACd,QAAiB;QAExB,KAAK,CAAC,6BAA6B,MAAM,EAAE,CAAC,CAAC;QAJtC,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAS;QAGxB,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF"}
|
package/dist/index.js
CHANGED
|
@@ -141,6 +141,12 @@ async function main() {
|
|
|
141
141
|
},
|
|
142
142
|
onCwdChange: (callback) => {
|
|
143
143
|
cli.setOnCwdChange(callback);
|
|
144
|
+
},
|
|
145
|
+
onSubshellContextChange: (callback) => {
|
|
146
|
+
cli.setOnSubshellContextChange(callback);
|
|
147
|
+
},
|
|
148
|
+
onPasswordRequest: (callback) => {
|
|
149
|
+
cli.setOnPasswordRequest(callback);
|
|
144
150
|
}
|
|
145
151
|
})), {
|
|
146
152
|
patchConsole: false,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for AI Context Injector
|
|
3
|
+
*
|
|
4
|
+
* These tests verify:
|
|
5
|
+
* - Context message format
|
|
6
|
+
* - Context injection into message history
|
|
7
|
+
* - Local context (no injection)
|
|
8
|
+
* - Different subshell types (SSH, WSL, Docker)
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Run all tests
|
|
12
|
+
*/
|
|
13
|
+
declare function runTests(): Promise<void>;
|
|
14
|
+
export { runTests };
|
|
15
|
+
//# sourceMappingURL=ai-context-injector.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-context-injector.test.d.ts","sourceRoot":"","sources":["../../../src/services/__tests__/ai-context-injector.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqWH;;GAEG;AACH,iBAAe,QAAQ,kBAiBtB;AAOD,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for AI Context Injector
|
|
3
|
+
*
|
|
4
|
+
* These tests verify:
|
|
5
|
+
* - Context message format
|
|
6
|
+
* - Context injection into message history
|
|
7
|
+
* - Local context (no injection)
|
|
8
|
+
* - Different subshell types (SSH, WSL, Docker)
|
|
9
|
+
*/
|
|
10
|
+
import { AIContextInjector } from '../ai-context-injector.js';
|
|
11
|
+
/**
|
|
12
|
+
* Test: No injection for local context
|
|
13
|
+
*/
|
|
14
|
+
async function testLocalContextNoInjection() {
|
|
15
|
+
console.log('Test: No injection for local context');
|
|
16
|
+
const injector = new AIContextInjector();
|
|
17
|
+
const messages = [
|
|
18
|
+
{ role: 'user', content: 'Hello' },
|
|
19
|
+
{ role: 'assistant', content: 'Hi there!' },
|
|
20
|
+
{ role: 'user', content: 'List files' },
|
|
21
|
+
];
|
|
22
|
+
const localContext = {
|
|
23
|
+
type: 'local',
|
|
24
|
+
metadata: {
|
|
25
|
+
workingDirectory: '/home/user',
|
|
26
|
+
shell: 'bash',
|
|
27
|
+
os: 'linux',
|
|
28
|
+
},
|
|
29
|
+
connectionState: 'connected',
|
|
30
|
+
sessionId: 'local-session',
|
|
31
|
+
};
|
|
32
|
+
const result = injector.injectSubshellContext(messages, localContext);
|
|
33
|
+
// Should return the same messages without modification
|
|
34
|
+
if (result.length !== messages.length) {
|
|
35
|
+
throw new Error('Expected no additional messages for local context');
|
|
36
|
+
}
|
|
37
|
+
if (result !== messages) {
|
|
38
|
+
throw new Error('Expected same array reference for local context');
|
|
39
|
+
}
|
|
40
|
+
console.log('✓ Local context does not inject additional messages');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Test: SSH context injection
|
|
44
|
+
*/
|
|
45
|
+
async function testSSHContextInjection() {
|
|
46
|
+
console.log('\nTest: SSH context injection');
|
|
47
|
+
const injector = new AIContextInjector();
|
|
48
|
+
const messages = [
|
|
49
|
+
{ role: 'user', content: 'Hello' },
|
|
50
|
+
{ role: 'assistant', content: 'Hi there!' },
|
|
51
|
+
{ role: 'user', content: 'List files' },
|
|
52
|
+
];
|
|
53
|
+
const sshContext = {
|
|
54
|
+
type: 'ssh',
|
|
55
|
+
metadata: {
|
|
56
|
+
hostname: 'example.com',
|
|
57
|
+
username: 'testuser',
|
|
58
|
+
workingDirectory: '/home/testuser',
|
|
59
|
+
shell: 'bash',
|
|
60
|
+
os: 'linux',
|
|
61
|
+
port: 22,
|
|
62
|
+
},
|
|
63
|
+
connectionState: 'connected',
|
|
64
|
+
sessionId: 'ssh-session',
|
|
65
|
+
};
|
|
66
|
+
const result = injector.injectSubshellContext(messages, sshContext);
|
|
67
|
+
// Should have one additional message (context message)
|
|
68
|
+
if (result.length !== messages.length + 1) {
|
|
69
|
+
throw new Error(`Expected ${messages.length + 1} messages, got ${result.length}`);
|
|
70
|
+
}
|
|
71
|
+
// Context message should be inserted before the last user message
|
|
72
|
+
const contextMessage = result[result.length - 2];
|
|
73
|
+
if (contextMessage.role !== 'system') {
|
|
74
|
+
throw new Error('Expected context message to have role "system"');
|
|
75
|
+
}
|
|
76
|
+
// Verify context message content
|
|
77
|
+
const content = contextMessage.content;
|
|
78
|
+
if (!content.includes('SSH')) {
|
|
79
|
+
throw new Error('Expected context message to mention SSH');
|
|
80
|
+
}
|
|
81
|
+
if (!content.includes('example.com')) {
|
|
82
|
+
throw new Error('Expected context message to include hostname');
|
|
83
|
+
}
|
|
84
|
+
if (!content.includes('testuser')) {
|
|
85
|
+
throw new Error('Expected context message to include username');
|
|
86
|
+
}
|
|
87
|
+
if (!content.includes('/home/testuser')) {
|
|
88
|
+
throw new Error('Expected context message to include working directory');
|
|
89
|
+
}
|
|
90
|
+
if (!content.includes('bash')) {
|
|
91
|
+
throw new Error('Expected context message to include shell type');
|
|
92
|
+
}
|
|
93
|
+
if (!content.includes('linux')) {
|
|
94
|
+
throw new Error('Expected context message to include OS type');
|
|
95
|
+
}
|
|
96
|
+
if (!content.includes('22')) {
|
|
97
|
+
throw new Error('Expected context message to include port');
|
|
98
|
+
}
|
|
99
|
+
// Last message should still be the user message
|
|
100
|
+
const lastMessage = result[result.length - 1];
|
|
101
|
+
if (lastMessage.role !== 'user' || lastMessage.content !== 'List files') {
|
|
102
|
+
throw new Error('Expected last message to be the original user message');
|
|
103
|
+
}
|
|
104
|
+
console.log('✓ SSH context injects correct message with all details');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Test: WSL context injection
|
|
108
|
+
*/
|
|
109
|
+
async function testWSLContextInjection() {
|
|
110
|
+
console.log('\nTest: WSL context injection');
|
|
111
|
+
const injector = new AIContextInjector();
|
|
112
|
+
const messages = [
|
|
113
|
+
{ role: 'user', content: 'Run command' },
|
|
114
|
+
];
|
|
115
|
+
const wslContext = {
|
|
116
|
+
type: 'wsl',
|
|
117
|
+
metadata: {
|
|
118
|
+
distroName: 'Ubuntu-20.04',
|
|
119
|
+
workingDirectory: '/home/user',
|
|
120
|
+
shell: 'bash',
|
|
121
|
+
os: 'linux',
|
|
122
|
+
},
|
|
123
|
+
connectionState: 'connected',
|
|
124
|
+
sessionId: 'wsl-session',
|
|
125
|
+
};
|
|
126
|
+
const result = injector.injectSubshellContext(messages, wslContext);
|
|
127
|
+
// Should have one additional message
|
|
128
|
+
if (result.length !== 2) {
|
|
129
|
+
throw new Error('Expected 2 messages after injection');
|
|
130
|
+
}
|
|
131
|
+
const contextMessage = result[0];
|
|
132
|
+
if (contextMessage.role !== 'system') {
|
|
133
|
+
throw new Error('Expected context message to have role "system"');
|
|
134
|
+
}
|
|
135
|
+
const content = contextMessage.content;
|
|
136
|
+
if (!content.includes('WSL')) {
|
|
137
|
+
throw new Error('Expected context message to mention WSL');
|
|
138
|
+
}
|
|
139
|
+
if (!content.includes('Ubuntu-20.04')) {
|
|
140
|
+
throw new Error('Expected context message to include distribution name');
|
|
141
|
+
}
|
|
142
|
+
console.log('✓ WSL context injects correct message with distribution info');
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Test: Docker context injection
|
|
146
|
+
*/
|
|
147
|
+
async function testDockerContextInjection() {
|
|
148
|
+
console.log('\nTest: Docker context injection');
|
|
149
|
+
const injector = new AIContextInjector();
|
|
150
|
+
const messages = [
|
|
151
|
+
{ role: 'user', content: 'Check container' },
|
|
152
|
+
];
|
|
153
|
+
const dockerContext = {
|
|
154
|
+
type: 'docker',
|
|
155
|
+
metadata: {
|
|
156
|
+
containerId: 'abc123def456',
|
|
157
|
+
workingDirectory: '/app',
|
|
158
|
+
shell: 'sh',
|
|
159
|
+
os: 'linux',
|
|
160
|
+
},
|
|
161
|
+
connectionState: 'connected',
|
|
162
|
+
sessionId: 'docker-session',
|
|
163
|
+
};
|
|
164
|
+
const result = injector.injectSubshellContext(messages, dockerContext);
|
|
165
|
+
// Should have one additional message
|
|
166
|
+
if (result.length !== 2) {
|
|
167
|
+
throw new Error('Expected 2 messages after injection');
|
|
168
|
+
}
|
|
169
|
+
const contextMessage = result[0];
|
|
170
|
+
const content = contextMessage.content;
|
|
171
|
+
if (!content.includes('DOCKER')) {
|
|
172
|
+
throw new Error('Expected context message to mention DOCKER');
|
|
173
|
+
}
|
|
174
|
+
if (!content.includes('abc123def456')) {
|
|
175
|
+
throw new Error('Expected context message to include container ID');
|
|
176
|
+
}
|
|
177
|
+
if (!content.includes('/app')) {
|
|
178
|
+
throw new Error('Expected context message to include working directory');
|
|
179
|
+
}
|
|
180
|
+
console.log('✓ Docker context injects correct message with container info');
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Test: Context message inserted before last user message
|
|
184
|
+
*/
|
|
185
|
+
async function testContextMessagePosition() {
|
|
186
|
+
console.log('\nTest: Context message inserted before last user message');
|
|
187
|
+
const injector = new AIContextInjector();
|
|
188
|
+
const messages = [
|
|
189
|
+
{ role: 'user', content: 'First message' },
|
|
190
|
+
{ role: 'assistant', content: 'First response' },
|
|
191
|
+
{ role: 'user', content: 'Second message' },
|
|
192
|
+
{ role: 'assistant', content: 'Second response' },
|
|
193
|
+
{ role: 'tool', content: 'Tool result' },
|
|
194
|
+
{ role: 'user', content: 'Third message' },
|
|
195
|
+
];
|
|
196
|
+
const sshContext = {
|
|
197
|
+
type: 'ssh',
|
|
198
|
+
metadata: {
|
|
199
|
+
hostname: 'server.com',
|
|
200
|
+
username: 'admin',
|
|
201
|
+
workingDirectory: '/root',
|
|
202
|
+
shell: 'zsh',
|
|
203
|
+
os: 'linux',
|
|
204
|
+
},
|
|
205
|
+
connectionState: 'connected',
|
|
206
|
+
sessionId: 'test-session',
|
|
207
|
+
};
|
|
208
|
+
const result = injector.injectSubshellContext(messages, sshContext);
|
|
209
|
+
// Should have 7 messages (6 original + 1 context)
|
|
210
|
+
if (result.length !== 7) {
|
|
211
|
+
throw new Error(`Expected 7 messages, got ${result.length}`);
|
|
212
|
+
}
|
|
213
|
+
// Context message should be at index 5 (before last user message at index 6)
|
|
214
|
+
const contextMessage = result[5];
|
|
215
|
+
if (contextMessage.role !== 'system') {
|
|
216
|
+
throw new Error('Expected context message at index 5');
|
|
217
|
+
}
|
|
218
|
+
// Last message should still be the user message
|
|
219
|
+
const lastMessage = result[6];
|
|
220
|
+
if (lastMessage.role !== 'user' || lastMessage.content !== 'Third message') {
|
|
221
|
+
throw new Error('Expected last message to be the original user message');
|
|
222
|
+
}
|
|
223
|
+
// Previous messages should be unchanged
|
|
224
|
+
if (result[0].content !== 'First message') {
|
|
225
|
+
throw new Error('Expected first message to be unchanged');
|
|
226
|
+
}
|
|
227
|
+
if (result[4].role !== 'tool') {
|
|
228
|
+
throw new Error('Expected tool message to remain at correct position');
|
|
229
|
+
}
|
|
230
|
+
console.log('✓ Context message inserted at correct position');
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Test: Context message when no user messages exist
|
|
234
|
+
*/
|
|
235
|
+
async function testContextMessageNoUserMessages() {
|
|
236
|
+
console.log('\nTest: Context message when no user messages exist');
|
|
237
|
+
const injector = new AIContextInjector();
|
|
238
|
+
const messages = [
|
|
239
|
+
{ role: 'system', content: 'System message' },
|
|
240
|
+
{ role: 'assistant', content: 'Assistant message' },
|
|
241
|
+
];
|
|
242
|
+
const sshContext = {
|
|
243
|
+
type: 'ssh',
|
|
244
|
+
metadata: {
|
|
245
|
+
hostname: 'test.com',
|
|
246
|
+
username: 'user',
|
|
247
|
+
workingDirectory: '/home/user',
|
|
248
|
+
shell: 'bash',
|
|
249
|
+
os: 'linux',
|
|
250
|
+
},
|
|
251
|
+
connectionState: 'connected',
|
|
252
|
+
sessionId: 'test-session',
|
|
253
|
+
};
|
|
254
|
+
const result = injector.injectSubshellContext(messages, sshContext);
|
|
255
|
+
// Should append context message to the end
|
|
256
|
+
if (result.length !== 3) {
|
|
257
|
+
throw new Error('Expected 3 messages');
|
|
258
|
+
}
|
|
259
|
+
const lastMessage = result[2];
|
|
260
|
+
if (lastMessage.role !== 'system') {
|
|
261
|
+
throw new Error('Expected context message to be appended');
|
|
262
|
+
}
|
|
263
|
+
console.log('✓ Context message appended when no user messages exist');
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Test: Important warning in context message
|
|
267
|
+
*/
|
|
268
|
+
async function testContextMessageWarning() {
|
|
269
|
+
console.log('\nTest: Important warning in context message');
|
|
270
|
+
const injector = new AIContextInjector();
|
|
271
|
+
const messages = [
|
|
272
|
+
{ role: 'user', content: 'Test' },
|
|
273
|
+
];
|
|
274
|
+
const sshContext = {
|
|
275
|
+
type: 'ssh',
|
|
276
|
+
metadata: {
|
|
277
|
+
hostname: 'remote.com',
|
|
278
|
+
username: 'user',
|
|
279
|
+
workingDirectory: '/tmp',
|
|
280
|
+
shell: 'bash',
|
|
281
|
+
os: 'linux',
|
|
282
|
+
},
|
|
283
|
+
connectionState: 'connected',
|
|
284
|
+
sessionId: 'test-session',
|
|
285
|
+
};
|
|
286
|
+
const result = injector.injectSubshellContext(messages, sshContext);
|
|
287
|
+
const contextMessage = result[0];
|
|
288
|
+
const content = contextMessage.content;
|
|
289
|
+
// Should contain important warning about execution environment
|
|
290
|
+
if (!content.includes('IMPORTANT')) {
|
|
291
|
+
throw new Error('Expected context message to contain IMPORTANT warning');
|
|
292
|
+
}
|
|
293
|
+
if (!content.includes('not on the local machine')) {
|
|
294
|
+
throw new Error('Expected warning about remote execution');
|
|
295
|
+
}
|
|
296
|
+
if (!content.includes('ssh environment')) {
|
|
297
|
+
throw new Error('Expected mention of ssh environment in warning');
|
|
298
|
+
}
|
|
299
|
+
console.log('✓ Context message includes important warning');
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Run all tests
|
|
303
|
+
*/
|
|
304
|
+
async function runTests() {
|
|
305
|
+
console.log('=== AI Context Injector Tests ===\n');
|
|
306
|
+
try {
|
|
307
|
+
await testLocalContextNoInjection();
|
|
308
|
+
await testSSHContextInjection();
|
|
309
|
+
await testWSLContextInjection();
|
|
310
|
+
await testDockerContextInjection();
|
|
311
|
+
await testContextMessagePosition();
|
|
312
|
+
await testContextMessageNoUserMessages();
|
|
313
|
+
await testContextMessageWarning();
|
|
314
|
+
console.log('\n=== All tests passed! ===');
|
|
315
|
+
}
|
|
316
|
+
catch (error) {
|
|
317
|
+
console.error('\n❌ Test failed:', error);
|
|
318
|
+
process.exit(1);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// Run tests if this file is executed directly
|
|
322
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
323
|
+
runTests();
|
|
324
|
+
}
|
|
325
|
+
export { runTests };
|
|
326
|
+
//# sourceMappingURL=ai-context-injector.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-context-injector.test.js","sourceRoot":"","sources":["../../../src/services/__tests__/ai-context-injector.test.ts"],"names":[],"mappings":"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"}
|