nova-terminal-assistant 0.1.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.
Potentially problematic release.
This version of nova-terminal-assistant might be problematic. Click here for more details.
- package/README.md +358 -0
- package/bin/nova +38 -0
- package/bin/nova.js +12 -0
- package/package.json +67 -0
- package/src/cli/commands/SmartCompletion.ts +458 -0
- package/src/cli/index.ts +5 -0
- package/src/cli/startup/IFlowRepl.ts +212 -0
- package/src/cli/startup/InkBasedRepl.ts +1056 -0
- package/src/cli/startup/InteractiveRepl.ts +2833 -0
- package/src/cli/startup/NovaApp.ts +1861 -0
- package/src/cli/startup/index.ts +4 -0
- package/src/cli/startup/parseArgs.ts +293 -0
- package/src/cli/test-modules.ts +27 -0
- package/src/cli/ui/IFlowDropdown.ts +425 -0
- package/src/cli/ui/ModernReplUI.ts +276 -0
- package/src/cli/ui/SimpleSelector2.ts +215 -0
- package/src/cli/ui/components/ConfirmDialog.ts +176 -0
- package/src/cli/ui/components/ErrorPanel.ts +364 -0
- package/src/cli/ui/components/InkAppRunner.tsx +67 -0
- package/src/cli/ui/components/InkComponents.tsx +613 -0
- package/src/cli/ui/components/NovaInkApp.tsx +312 -0
- package/src/cli/ui/components/ProgressBar.ts +177 -0
- package/src/cli/ui/components/ProgressIndicator.ts +298 -0
- package/src/cli/ui/components/QuickActions.ts +396 -0
- package/src/cli/ui/components/SimpleErrorPanel.ts +231 -0
- package/src/cli/ui/components/StatusBar.ts +194 -0
- package/src/cli/ui/components/ThinkingBlockRenderer.ts +401 -0
- package/src/cli/ui/components/index.ts +27 -0
- package/src/cli/ui/ink-prototype.tsx +347 -0
- package/src/cli/utils/CliUI.ts +336 -0
- package/src/cli/utils/CompletionHelper.ts +388 -0
- package/src/cli/utils/EnhancedCompleter.test.ts +226 -0
- package/src/cli/utils/EnhancedCompleter.ts +513 -0
- package/src/cli/utils/ErrorEnhancer.ts +429 -0
- package/src/cli/utils/OutputFormatter.ts +193 -0
- package/src/cli/utils/index.ts +9 -0
- package/src/core/agents/AgentOrchestrator.ts +515 -0
- package/src/core/agents/index.ts +17 -0
- package/src/core/audit/AuditLogger.ts +509 -0
- package/src/core/audit/index.ts +11 -0
- package/src/core/auth/AuthManager.d.ts.map +1 -0
- package/src/core/auth/AuthManager.ts +138 -0
- package/src/core/auth/index.d.ts.map +1 -0
- package/src/core/auth/index.ts +2 -0
- package/src/core/config/ConfigManager.d.ts.map +1 -0
- package/src/core/config/ConfigManager.test.ts +183 -0
- package/src/core/config/ConfigManager.ts +1219 -0
- package/src/core/config/index.d.ts.map +1 -0
- package/src/core/config/index.ts +1 -0
- package/src/core/context/ContextBuilder.d.ts.map +1 -0
- package/src/core/context/ContextBuilder.ts +171 -0
- package/src/core/context/ContextCompressor.d.ts.map +1 -0
- package/src/core/context/ContextCompressor.ts +642 -0
- package/src/core/context/LayeredMemoryManager.ts +657 -0
- package/src/core/context/MemoryDiscovery.d.ts.map +1 -0
- package/src/core/context/MemoryDiscovery.ts +175 -0
- package/src/core/context/defaultSystemPrompt.d.ts.map +1 -0
- package/src/core/context/defaultSystemPrompt.ts +35 -0
- package/src/core/context/index.d.ts.map +1 -0
- package/src/core/context/index.ts +22 -0
- package/src/core/extensions/SkillGenerator.ts +421 -0
- package/src/core/extensions/SkillInstaller.d.ts.map +1 -0
- package/src/core/extensions/SkillInstaller.ts +257 -0
- package/src/core/extensions/SkillRegistry.d.ts.map +1 -0
- package/src/core/extensions/SkillRegistry.ts +361 -0
- package/src/core/extensions/SkillValidator.ts +525 -0
- package/src/core/extensions/index.ts +15 -0
- package/src/core/index.d.ts.map +1 -0
- package/src/core/index.ts +42 -0
- package/src/core/mcp/McpManager.d.ts.map +1 -0
- package/src/core/mcp/McpManager.ts +632 -0
- package/src/core/mcp/index.d.ts.map +1 -0
- package/src/core/mcp/index.ts +2 -0
- package/src/core/model/ModelClient.d.ts.map +1 -0
- package/src/core/model/ModelClient.ts +217 -0
- package/src/core/model/ModelConnectionTester.ts +363 -0
- package/src/core/model/ModelValidator.ts +348 -0
- package/src/core/model/index.d.ts.map +1 -0
- package/src/core/model/index.ts +6 -0
- package/src/core/model/providers/AnthropicProvider.d.ts.map +1 -0
- package/src/core/model/providers/AnthropicProvider.ts +279 -0
- package/src/core/model/providers/CodingPlanProvider.d.ts.map +1 -0
- package/src/core/model/providers/CodingPlanProvider.ts +210 -0
- package/src/core/model/providers/OllamaCloudProvider.d.ts.map +1 -0
- package/src/core/model/providers/OllamaCloudProvider.ts +405 -0
- package/src/core/model/providers/OllamaManager.d.ts.map +1 -0
- package/src/core/model/providers/OllamaManager.ts +201 -0
- package/src/core/model/providers/OllamaProvider.d.ts.map +1 -0
- package/src/core/model/providers/OllamaProvider.ts +73 -0
- package/src/core/model/providers/OpenAICompatibleProvider.d.ts.map +1 -0
- package/src/core/model/providers/OpenAICompatibleProvider.ts +327 -0
- package/src/core/model/providers/OpenAIProvider.d.ts.map +1 -0
- package/src/core/model/providers/OpenAIProvider.ts +29 -0
- package/src/core/model/providers/index.d.ts.map +1 -0
- package/src/core/model/providers/index.ts +12 -0
- package/src/core/model/types.d.ts.map +1 -0
- package/src/core/model/types.ts +77 -0
- package/src/core/security/ApprovalManager.d.ts.map +1 -0
- package/src/core/security/ApprovalManager.ts +174 -0
- package/src/core/security/FileFilter.d.ts.map +1 -0
- package/src/core/security/FileFilter.ts +141 -0
- package/src/core/security/HookExecutor.d.ts.map +1 -0
- package/src/core/security/HookExecutor.ts +178 -0
- package/src/core/security/SandboxExecutor.ts +447 -0
- package/src/core/security/index.d.ts.map +1 -0
- package/src/core/security/index.ts +8 -0
- package/src/core/session/AgentLoop.d.ts.map +1 -0
- package/src/core/session/AgentLoop.ts +501 -0
- package/src/core/session/SessionManager.d.ts.map +1 -0
- package/src/core/session/SessionManager.test.ts +183 -0
- package/src/core/session/SessionManager.ts +460 -0
- package/src/core/session/index.d.ts.map +1 -0
- package/src/core/session/index.ts +3 -0
- package/src/core/telemetry/Telemetry.d.ts.map +1 -0
- package/src/core/telemetry/Telemetry.ts +90 -0
- package/src/core/telemetry/TelemetryService.ts +531 -0
- package/src/core/telemetry/index.d.ts.map +1 -0
- package/src/core/telemetry/index.ts +12 -0
- package/src/core/testing/AutoFixer.ts +385 -0
- package/src/core/testing/ErrorAnalyzer.ts +499 -0
- package/src/core/testing/TestRunner.ts +265 -0
- package/src/core/testing/agent-cli-tests.ts +538 -0
- package/src/core/testing/index.ts +11 -0
- package/src/core/tools/ToolRegistry.d.ts.map +1 -0
- package/src/core/tools/ToolRegistry.test.ts +206 -0
- package/src/core/tools/ToolRegistry.ts +260 -0
- package/src/core/tools/impl/EditFileTool.d.ts.map +1 -0
- package/src/core/tools/impl/EditFileTool.ts +97 -0
- package/src/core/tools/impl/ListDirectoryTool.d.ts.map +1 -0
- package/src/core/tools/impl/ListDirectoryTool.ts +142 -0
- package/src/core/tools/impl/MemoryTool.d.ts.map +1 -0
- package/src/core/tools/impl/MemoryTool.ts +102 -0
- package/src/core/tools/impl/ReadFileTool.d.ts.map +1 -0
- package/src/core/tools/impl/ReadFileTool.ts +58 -0
- package/src/core/tools/impl/SearchContentTool.d.ts.map +1 -0
- package/src/core/tools/impl/SearchContentTool.ts +94 -0
- package/src/core/tools/impl/SearchFileTool.d.ts.map +1 -0
- package/src/core/tools/impl/SearchFileTool.ts +61 -0
- package/src/core/tools/impl/ShellTool.d.ts.map +1 -0
- package/src/core/tools/impl/ShellTool.ts +118 -0
- package/src/core/tools/impl/TaskTool.d.ts.map +1 -0
- package/src/core/tools/impl/TaskTool.ts +207 -0
- package/src/core/tools/impl/TodoTool.d.ts.map +1 -0
- package/src/core/tools/impl/TodoTool.ts +122 -0
- package/src/core/tools/impl/WebFetchTool.d.ts.map +1 -0
- package/src/core/tools/impl/WebFetchTool.ts +103 -0
- package/src/core/tools/impl/WebSearchTool.d.ts.map +1 -0
- package/src/core/tools/impl/WebSearchTool.ts +89 -0
- package/src/core/tools/impl/WriteFileTool.d.ts.map +1 -0
- package/src/core/tools/impl/WriteFileTool.ts +49 -0
- package/src/core/tools/impl/index.d.ts.map +1 -0
- package/src/core/tools/impl/index.ts +16 -0
- package/src/core/tools/index.d.ts.map +1 -0
- package/src/core/tools/index.ts +7 -0
- package/src/core/tools/schemas/execution.d.ts.map +1 -0
- package/src/core/tools/schemas/execution.ts +42 -0
- package/src/core/tools/schemas/file.d.ts.map +1 -0
- package/src/core/tools/schemas/file.ts +119 -0
- package/src/core/tools/schemas/index.d.ts.map +1 -0
- package/src/core/tools/schemas/index.ts +11 -0
- package/src/core/tools/schemas/memory.d.ts.map +1 -0
- package/src/core/tools/schemas/memory.ts +52 -0
- package/src/core/tools/schemas/orchestration.d.ts.map +1 -0
- package/src/core/tools/schemas/orchestration.ts +44 -0
- package/src/core/tools/schemas/search.d.ts.map +1 -0
- package/src/core/tools/schemas/search.ts +112 -0
- package/src/core/tools/schemas/todo.d.ts.map +1 -0
- package/src/core/tools/schemas/todo.ts +32 -0
- package/src/core/tools/schemas/web.d.ts.map +1 -0
- package/src/core/tools/schemas/web.ts +86 -0
- package/src/core/types/config.d.ts.map +1 -0
- package/src/core/types/config.ts +200 -0
- package/src/core/types/errors.d.ts.map +1 -0
- package/src/core/types/errors.ts +204 -0
- package/src/core/types/index.d.ts.map +1 -0
- package/src/core/types/index.ts +8 -0
- package/src/core/types/session.d.ts.map +1 -0
- package/src/core/types/session.ts +216 -0
- package/src/core/types/tools.d.ts.map +1 -0
- package/src/core/types/tools.ts +157 -0
- package/src/core/utils/CheckpointManager.d.ts.map +1 -0
- package/src/core/utils/CheckpointManager.ts +327 -0
- package/src/core/utils/Logger.d.ts.map +1 -0
- package/src/core/utils/Logger.ts +98 -0
- package/src/core/utils/RetryManager.ts +471 -0
- package/src/core/utils/TokenCounter.d.ts.map +1 -0
- package/src/core/utils/TokenCounter.ts +414 -0
- package/src/core/utils/VectorMemoryStore.ts +440 -0
- package/src/core/utils/helpers.d.ts.map +1 -0
- package/src/core/utils/helpers.ts +89 -0
- package/src/core/utils/index.d.ts.map +1 -0
- package/src/core/utils/index.ts +19 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Config Types - Application configuration
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
export interface NovaConfig {
|
|
6
|
+
/** Core engine settings */
|
|
7
|
+
core: CoreConfig;
|
|
8
|
+
/** Model provider settings */
|
|
9
|
+
models: ModelsConfig;
|
|
10
|
+
/** MCP server configuration */
|
|
11
|
+
mcp?: Record<string, McpServerConfig>;
|
|
12
|
+
/** Hook configuration */
|
|
13
|
+
hooks?: HookConfigEntry[];
|
|
14
|
+
/** File filter rules */
|
|
15
|
+
fileFilter?: FileFilterConfig;
|
|
16
|
+
/** Security settings */
|
|
17
|
+
security?: SecurityConfig;
|
|
18
|
+
/** Telemetry settings */
|
|
19
|
+
telemetry?: TelemetryConfig;
|
|
20
|
+
/** Extension settings */
|
|
21
|
+
extensions?: ExtensionsConfig;
|
|
22
|
+
/** User preferences */
|
|
23
|
+
preferences?: PreferencesConfig;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface CoreConfig {
|
|
27
|
+
/** Default model to use */
|
|
28
|
+
defaultModel: string;
|
|
29
|
+
/** Default approval mode */
|
|
30
|
+
defaultApprovalMode: 'yolo' | 'default' | 'accepting_edits' | 'plan' | 'smart';
|
|
31
|
+
/** Maximum conversation turns */
|
|
32
|
+
maxTurns: number;
|
|
33
|
+
/** Maximum tokens per response */
|
|
34
|
+
maxTokens: number;
|
|
35
|
+
/** Default temperature */
|
|
36
|
+
temperature: number;
|
|
37
|
+
/** Context window size for compression */
|
|
38
|
+
contextWindowTarget: number;
|
|
39
|
+
/** Whether streaming is enabled by default */
|
|
40
|
+
streaming: boolean;
|
|
41
|
+
/** Session persistence directory */
|
|
42
|
+
sessionsDir?: string;
|
|
43
|
+
/** Log level */
|
|
44
|
+
logLevel: 'debug' | 'info' | 'warn' | 'error' | 'silent';
|
|
45
|
+
/** Global timeout in milliseconds */
|
|
46
|
+
timeout?: number;
|
|
47
|
+
/** Maximum number of checkpoints to keep */
|
|
48
|
+
maxCheckpoints?: number;
|
|
49
|
+
/** Maximum age of checkpoints in days */
|
|
50
|
+
checkpointMaxAgeDays?: number;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface ModelsConfig {
|
|
54
|
+
/** Available model providers */
|
|
55
|
+
providers: Record<string, ModelProviderConfig>;
|
|
56
|
+
/** Model aliases */
|
|
57
|
+
aliases?: Record<string, string>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface ModelProviderConfig {
|
|
61
|
+
/** Provider type */
|
|
62
|
+
type: 'anthropic' | 'openai' | 'azure' | 'ollama' | 'ollama-cloud' | 'coding-plan' | 'custom';
|
|
63
|
+
/** Provider name (optional, for display purposes) */
|
|
64
|
+
name?: string;
|
|
65
|
+
/** API key (reference to env var or direct value) */
|
|
66
|
+
apiKey?: string;
|
|
67
|
+
/** Base URL for API */
|
|
68
|
+
baseUrl?: string;
|
|
69
|
+
/** API version */
|
|
70
|
+
apiVersion?: string;
|
|
71
|
+
/** Organization ID */
|
|
72
|
+
organizationId?: string;
|
|
73
|
+
/** Coding Plan platform (required when type is 'coding-plan') */
|
|
74
|
+
codingPlanPlatform?: 'alibaba' | 'tencent' | 'volcengine' | 'baidu' | 'kimi' | 'zhipu' | 'minimax' | 'custom';
|
|
75
|
+
/** Available models from this provider */
|
|
76
|
+
models: Record<string, ModelConfig>;
|
|
77
|
+
/** Default model for this provider */
|
|
78
|
+
defaultModel?: string;
|
|
79
|
+
/** Rate limits */
|
|
80
|
+
rateLimit?: {
|
|
81
|
+
requestsPerMinute: number;
|
|
82
|
+
tokensPerMinute: number;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface ModelConfig {
|
|
87
|
+
/** Display name */
|
|
88
|
+
name?: string;
|
|
89
|
+
/** Maximum context window */
|
|
90
|
+
maxContextTokens: number;
|
|
91
|
+
/** Maximum output tokens */
|
|
92
|
+
maxOutputTokens: number;
|
|
93
|
+
/** Whether the model supports vision */
|
|
94
|
+
supportsVision: boolean;
|
|
95
|
+
/** Whether the model supports tool use */
|
|
96
|
+
supportsTools: boolean;
|
|
97
|
+
/** Whether the model supports streaming */
|
|
98
|
+
supportsStreaming: boolean;
|
|
99
|
+
/** Whether the model supports thinking/reasoning */
|
|
100
|
+
supportsThinking: boolean;
|
|
101
|
+
/** Cost per 1M input tokens (USD) */
|
|
102
|
+
inputCostPerMToken?: number;
|
|
103
|
+
/** Cost per 1M output tokens (USD) */
|
|
104
|
+
outputCostPerMToken?: number;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export interface McpServerConfig {
|
|
108
|
+
/** Command to start the MCP server */
|
|
109
|
+
command: string;
|
|
110
|
+
/** Arguments */
|
|
111
|
+
args?: string[];
|
|
112
|
+
/** Environment variables */
|
|
113
|
+
env?: Record<string, string>;
|
|
114
|
+
/** Whether the server is enabled */
|
|
115
|
+
enabled?: boolean;
|
|
116
|
+
/** Connection timeout in ms */
|
|
117
|
+
timeout?: number;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export interface HookConfigEntry {
|
|
121
|
+
/** Hook event type */
|
|
122
|
+
event: string;
|
|
123
|
+
/** Command to execute */
|
|
124
|
+
command: string;
|
|
125
|
+
/** Matcher pattern (glob for tool names) */
|
|
126
|
+
matcher?: string;
|
|
127
|
+
/** Timeout in ms */
|
|
128
|
+
timeout?: number;
|
|
129
|
+
/** Description */
|
|
130
|
+
description?: string;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface FileFilterConfig {
|
|
134
|
+
/** Glob patterns to always ignore */
|
|
135
|
+
ignorePatterns: string[];
|
|
136
|
+
/** Glob patterns to always allow */
|
|
137
|
+
allowPatterns?: string[];
|
|
138
|
+
/** Maximum file size to read (bytes) */
|
|
139
|
+
maxFileSize?: number;
|
|
140
|
+
/** Maximum number of files for batch operations */
|
|
141
|
+
maxBatchSize?: number;
|
|
142
|
+
/** Directories to never access */
|
|
143
|
+
forbiddenPaths?: string[];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface SecurityConfig {
|
|
147
|
+
/** Sandbox mode */
|
|
148
|
+
sandbox: 'none' | 'restricted' | 'full';
|
|
149
|
+
/** Whether to enable checkpoint/recovery */
|
|
150
|
+
checkpoints: boolean;
|
|
151
|
+
/** Maximum checkpoint age (ms) */
|
|
152
|
+
checkpointMaxAge?: number;
|
|
153
|
+
/** Commands that are always blocked */
|
|
154
|
+
blockedCommands?: string[];
|
|
155
|
+
/** Commands that are always allowed (even in strict mode) */
|
|
156
|
+
allowedCommands?: string[];
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export interface TelemetryConfig {
|
|
160
|
+
/** Whether telemetry is enabled */
|
|
161
|
+
enabled: boolean;
|
|
162
|
+
/** Telemetry endpoint */
|
|
163
|
+
endpoint?: string;
|
|
164
|
+
/** Unique anonymous identifier */
|
|
165
|
+
clientId?: string;
|
|
166
|
+
/** What to track */
|
|
167
|
+
track: {
|
|
168
|
+
usage?: boolean;
|
|
169
|
+
errors?: boolean;
|
|
170
|
+
performance?: boolean;
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export interface ExtensionsConfig {
|
|
175
|
+
/** Path to extensions directory */
|
|
176
|
+
extensionsDir?: string;
|
|
177
|
+
/** List of enabled extensions */
|
|
178
|
+
enabled: string[];
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export interface PreferencesConfig {
|
|
182
|
+
/** Theme */
|
|
183
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
184
|
+
/** Editor to use for file editing */
|
|
185
|
+
editor?: string;
|
|
186
|
+
/** Shell to use */
|
|
187
|
+
shell?: string;
|
|
188
|
+
/** Language */
|
|
189
|
+
language?: string;
|
|
190
|
+
/** Key bindings */
|
|
191
|
+
keyBindings?: Record<string, string>;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// --- Config Resolution ---
|
|
195
|
+
export type ConfigSource = 'default' | 'config_file' | 'env' | 'cli_arg';
|
|
196
|
+
|
|
197
|
+
export interface ResolvedConfig {
|
|
198
|
+
value: unknown;
|
|
199
|
+
source: ConfigSource;
|
|
200
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Error Types - Custom error classes and error handling
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
/** Base error class for all Nova CLI errors */
|
|
6
|
+
export class NovaError extends Error {
|
|
7
|
+
constructor(
|
|
8
|
+
message: string,
|
|
9
|
+
public readonly code: string,
|
|
10
|
+
public readonly details?: unknown,
|
|
11
|
+
public readonly retryable: boolean = false
|
|
12
|
+
) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.name = 'NovaError';
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
toJSON(): Record<string, unknown> {
|
|
18
|
+
return {
|
|
19
|
+
name: this.name,
|
|
20
|
+
code: this.code,
|
|
21
|
+
message: this.message,
|
|
22
|
+
details: this.details,
|
|
23
|
+
retryable: this.retryable,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Error in configuration loading or validation */
|
|
29
|
+
export class ConfigError extends NovaError {
|
|
30
|
+
constructor(message: string, details?: unknown) {
|
|
31
|
+
super(message, 'CONFIG_ERROR', details, false);
|
|
32
|
+
this.name = 'ConfigError';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Error in model API communication */
|
|
37
|
+
export class ModelError extends NovaError {
|
|
38
|
+
constructor(
|
|
39
|
+
message: string,
|
|
40
|
+
public readonly statusCode?: number,
|
|
41
|
+
public readonly provider?: string,
|
|
42
|
+
details?: unknown
|
|
43
|
+
) {
|
|
44
|
+
super(message, 'MODEL_ERROR', details, statusCode !== 429 && statusCode !== 503);
|
|
45
|
+
this.name = 'ModelError';
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Error from rate limiting */
|
|
50
|
+
export class RateLimitError extends ModelError {
|
|
51
|
+
declare readonly code: string;
|
|
52
|
+
declare readonly retryable: boolean;
|
|
53
|
+
constructor(
|
|
54
|
+
message: string,
|
|
55
|
+
public readonly retryAfterMs: number,
|
|
56
|
+
provider?: string
|
|
57
|
+
) {
|
|
58
|
+
super(message, 429, provider, { retryAfterMs });
|
|
59
|
+
this.name = 'RateLimitError';
|
|
60
|
+
(this as any).code = 'RATE_LIMIT_ERROR';
|
|
61
|
+
(this as any).retryable = true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Error in tool execution */
|
|
66
|
+
export class ToolError extends NovaError {
|
|
67
|
+
constructor(
|
|
68
|
+
message: string,
|
|
69
|
+
public readonly toolName: string,
|
|
70
|
+
public readonly toolCallId?: string,
|
|
71
|
+
details?: unknown
|
|
72
|
+
) {
|
|
73
|
+
super(message, 'TOOL_ERROR', details, false);
|
|
74
|
+
this.name = 'ToolError';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Error from tool input validation */
|
|
79
|
+
export class ToolValidationError extends ToolError {
|
|
80
|
+
declare readonly code: string;
|
|
81
|
+
constructor(
|
|
82
|
+
message: string,
|
|
83
|
+
toolName: string,
|
|
84
|
+
public readonly validationErrors: Array<{ field: string; message: string }>
|
|
85
|
+
) {
|
|
86
|
+
super(message, toolName, undefined, { validationErrors });
|
|
87
|
+
this.name = 'ToolValidationError';
|
|
88
|
+
(this as any).code = 'TOOL_VALIDATION_ERROR';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** Error in session management */
|
|
93
|
+
export class SessionError extends NovaError {
|
|
94
|
+
constructor(
|
|
95
|
+
message: string,
|
|
96
|
+
public readonly sessionId?: string,
|
|
97
|
+
details?: unknown
|
|
98
|
+
) {
|
|
99
|
+
super(message, 'SESSION_ERROR', details, false);
|
|
100
|
+
this.name = 'SessionError';
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Error from approval system */
|
|
105
|
+
export class ApprovalError extends NovaError {
|
|
106
|
+
constructor(message: string, details?: unknown) {
|
|
107
|
+
super(message, 'APPROVAL_ERROR', details, false);
|
|
108
|
+
this.name = 'ApprovalError';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/** Error from hook execution */
|
|
113
|
+
export class HookError extends NovaError {
|
|
114
|
+
constructor(
|
|
115
|
+
message: string,
|
|
116
|
+
public readonly hookEvent: string,
|
|
117
|
+
public readonly exitCode?: number,
|
|
118
|
+
details?: unknown
|
|
119
|
+
) {
|
|
120
|
+
super(message, 'HOOK_ERROR', details, false);
|
|
121
|
+
this.name = 'HookError';
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** Error from MCP server */
|
|
126
|
+
export class McpError extends NovaError {
|
|
127
|
+
constructor(
|
|
128
|
+
message: string,
|
|
129
|
+
public readonly serverName?: string,
|
|
130
|
+
details?: unknown
|
|
131
|
+
) {
|
|
132
|
+
super(message, 'MCP_ERROR', details, false);
|
|
133
|
+
this.name = 'McpError';
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/** Error from security/sandbox */
|
|
138
|
+
export class SecurityError extends NovaError {
|
|
139
|
+
constructor(message: string, details?: unknown) {
|
|
140
|
+
super(message, 'SECURITY_ERROR', details, false);
|
|
141
|
+
this.name = 'SecurityError';
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/** Error when context window is exceeded */
|
|
146
|
+
export class ContextOverflowError extends NovaError {
|
|
147
|
+
constructor(
|
|
148
|
+
message: string,
|
|
149
|
+
public readonly currentTokens: number,
|
|
150
|
+
public readonly maxTokens: number
|
|
151
|
+
) {
|
|
152
|
+
super(message, 'CONTEXT_OVERFLOW', { currentTokens, maxTokens }, false);
|
|
153
|
+
this.name = 'ContextOverflowError';
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/** Error when operation is cancelled */
|
|
158
|
+
export class CancelledError extends NovaError {
|
|
159
|
+
constructor(message: string = 'Operation cancelled') {
|
|
160
|
+
super(message, 'CANCELLED', undefined, false);
|
|
161
|
+
this.name = 'CancelledError';
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/** Error from timeout */
|
|
166
|
+
export class TimeoutError extends NovaError {
|
|
167
|
+
constructor(
|
|
168
|
+
message: string,
|
|
169
|
+
public readonly timeoutMs: number
|
|
170
|
+
) {
|
|
171
|
+
super(message, 'TIMEOUT', { timeoutMs }, false);
|
|
172
|
+
this.name = 'TimeoutError';
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/** Aggregate error for multiple failures */
|
|
177
|
+
export class AggregateError extends NovaError {
|
|
178
|
+
constructor(
|
|
179
|
+
message: string,
|
|
180
|
+
public readonly errors: Error[]
|
|
181
|
+
) {
|
|
182
|
+
super(message, 'AGGREGATE_ERROR', { errorCount: errors.length }, false);
|
|
183
|
+
this.name = 'AggregateError';
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/** Error type guard */
|
|
188
|
+
export function isNovaError(error: unknown): error is NovaError {
|
|
189
|
+
return error instanceof NovaError;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** Get user-friendly error message */
|
|
193
|
+
export function getErrorMessage(error: unknown): string {
|
|
194
|
+
if (isNovaError(error)) {
|
|
195
|
+
return `[${error.code}] ${error.message}`;
|
|
196
|
+
}
|
|
197
|
+
if (error instanceof Error) {
|
|
198
|
+
return error.message;
|
|
199
|
+
}
|
|
200
|
+
if (typeof error === 'string') {
|
|
201
|
+
return error;
|
|
202
|
+
}
|
|
203
|
+
return 'An unknown error occurred';
|
|
204
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Types Barrel Export
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
export * from './session.js';
|
|
6
|
+
export * from './tools.js';
|
|
7
|
+
export * from './config.js';
|
|
8
|
+
export * from './errors.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Session Types - Session lifecycle and state management
|
|
3
|
+
// ============================================================================
|
|
4
|
+
|
|
5
|
+
/** Branded type for session identifiers */
|
|
6
|
+
export type SessionId = string & { readonly __brand: 'SessionId' };
|
|
7
|
+
/** Branded type for message identifiers */
|
|
8
|
+
export type MessageId = string & { readonly __brand: 'MessageId' };
|
|
9
|
+
/** Branded type for tool call identifiers */
|
|
10
|
+
export type ToolCallId = string & { readonly __brand: 'ToolCallId' };
|
|
11
|
+
|
|
12
|
+
/** Create a branded SessionId */
|
|
13
|
+
export function createSessionId(id: string): SessionId {
|
|
14
|
+
return id as SessionId;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** Create a branded MessageId */
|
|
18
|
+
export function createMessageId(id: string): MessageId {
|
|
19
|
+
return id as MessageId;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Create a branded ToolCallId */
|
|
23
|
+
export function createToolCallId(id: string): ToolCallId {
|
|
24
|
+
return id as ToolCallId;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// --- Session States ---
|
|
28
|
+
export type SessionState =
|
|
29
|
+
| 'idle'
|
|
30
|
+
| 'initializing'
|
|
31
|
+
| 'running'
|
|
32
|
+
| 'awaiting_approval'
|
|
33
|
+
| 'paused'
|
|
34
|
+
| 'completed'
|
|
35
|
+
| 'error'
|
|
36
|
+
| 'cancelled';
|
|
37
|
+
|
|
38
|
+
export type SessionEventType =
|
|
39
|
+
| 'state_change'
|
|
40
|
+
| 'message_added'
|
|
41
|
+
| 'tool_call_start'
|
|
42
|
+
| 'tool_call_complete'
|
|
43
|
+
| 'tool_call_error'
|
|
44
|
+
| 'error'
|
|
45
|
+
| 'context_update'
|
|
46
|
+
| 'approval_required'
|
|
47
|
+
| 'approval_response'
|
|
48
|
+
| 'streaming_start'
|
|
49
|
+
| 'streaming_delta'
|
|
50
|
+
| 'streaming_complete';
|
|
51
|
+
|
|
52
|
+
export interface SessionEvent<T = unknown> {
|
|
53
|
+
type: SessionEventType;
|
|
54
|
+
sessionId: SessionId;
|
|
55
|
+
timestamp: number;
|
|
56
|
+
data: T;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// --- Message Types ---
|
|
60
|
+
export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
|
|
61
|
+
|
|
62
|
+
export type ContentBlockType =
|
|
63
|
+
| 'text'
|
|
64
|
+
| 'image'
|
|
65
|
+
| 'thinking'
|
|
66
|
+
| 'tool_use'
|
|
67
|
+
| 'tool_result';
|
|
68
|
+
|
|
69
|
+
export interface TextContent {
|
|
70
|
+
type: 'text';
|
|
71
|
+
text: string;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface ImageContent {
|
|
75
|
+
type: 'image';
|
|
76
|
+
source: {
|
|
77
|
+
type: 'base64' | 'url';
|
|
78
|
+
media_type: string;
|
|
79
|
+
data?: string;
|
|
80
|
+
url?: string;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface ThinkingContent {
|
|
85
|
+
type: 'thinking';
|
|
86
|
+
thinking: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface ToolUseContent {
|
|
90
|
+
type: 'tool_use';
|
|
91
|
+
id: ToolCallId;
|
|
92
|
+
name: string;
|
|
93
|
+
input: Record<string, unknown>;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface ToolResultContent {
|
|
97
|
+
type: 'tool_result';
|
|
98
|
+
tool_use_id: ToolCallId;
|
|
99
|
+
content: string | Array<TextContent | ImageContent>;
|
|
100
|
+
is_error?: boolean;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export type ContentBlock =
|
|
104
|
+
| TextContent
|
|
105
|
+
| ImageContent
|
|
106
|
+
| ThinkingContent
|
|
107
|
+
| ToolUseContent
|
|
108
|
+
| ToolResultContent;
|
|
109
|
+
|
|
110
|
+
export interface Message {
|
|
111
|
+
id: MessageId;
|
|
112
|
+
role: MessageRole;
|
|
113
|
+
content: ContentBlock[];
|
|
114
|
+
timestamp: number;
|
|
115
|
+
createdAt: Date;
|
|
116
|
+
metadata?: Record<string, unknown>;
|
|
117
|
+
}
|
|
118
|
+
// --- Conversation ---
|
|
119
|
+
export interface Conversation {
|
|
120
|
+
messages: Message[];
|
|
121
|
+
systemPrompt?: string;
|
|
122
|
+
context?: ConversationContext;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export interface ConversationContext {
|
|
126
|
+
workingDirectory: string;
|
|
127
|
+
environment: Record<string, string>;
|
|
128
|
+
sessionId: SessionId;
|
|
129
|
+
toolResults: Map<string, unknown>;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// --- Session Config ---
|
|
133
|
+
export interface SessionConfig {
|
|
134
|
+
/** Unique session identifier */
|
|
135
|
+
id: SessionId;
|
|
136
|
+
/** Human-readable session name */
|
|
137
|
+
name?: string;
|
|
138
|
+
/** Model identifier (e.g., 'claude-3-opus-20240229') */
|
|
139
|
+
model: string;
|
|
140
|
+
/** Maximum tokens for model responses */
|
|
141
|
+
maxTokens: number;
|
|
142
|
+
/** Temperature for sampling (0-1) */
|
|
143
|
+
temperature?: number;
|
|
144
|
+
/** System prompt */
|
|
145
|
+
systemPrompt?: string;
|
|
146
|
+
/** Working directory for file operations */
|
|
147
|
+
workingDirectory: string;
|
|
148
|
+
/** Approval mode */
|
|
149
|
+
approvalMode: ApprovalMode;
|
|
150
|
+
/** Whether to enable streaming responses */
|
|
151
|
+
streaming: boolean;
|
|
152
|
+
/** Maximum number of conversation turns */
|
|
153
|
+
maxTurns?: number;
|
|
154
|
+
/** Custom tool definitions */
|
|
155
|
+
tools?: string[];
|
|
156
|
+
/** MCP servers to connect */
|
|
157
|
+
mcpServers?: string[];
|
|
158
|
+
/** Hook scripts configuration */
|
|
159
|
+
hooks?: HookConfig[];
|
|
160
|
+
/** Session metadata */
|
|
161
|
+
metadata?: Record<string, unknown>;
|
|
162
|
+
/** Parent session ID for sub-sessions */
|
|
163
|
+
parentSessionId?: string;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// --- Approval ---
|
|
167
|
+
export type ApprovalMode =
|
|
168
|
+
| 'yolo' // Auto-approve everything
|
|
169
|
+
| 'default' // Ask for approval on potentially destructive ops
|
|
170
|
+
| 'accepting_edits' // Auto-approve file edits only
|
|
171
|
+
| 'plan' // Always ask before executing
|
|
172
|
+
| 'smart'; // AI-assisted approval decisions
|
|
173
|
+
|
|
174
|
+
export interface ApprovalRequest {
|
|
175
|
+
id: string;
|
|
176
|
+
sessionId: SessionId;
|
|
177
|
+
toolName: string;
|
|
178
|
+
toolInput: Record<string, unknown>;
|
|
179
|
+
risk: 'low' | 'medium' | 'high' | 'critical';
|
|
180
|
+
description: string;
|
|
181
|
+
timestamp: number;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export interface ApprovalResponse {
|
|
185
|
+
requestId: string;
|
|
186
|
+
approved: boolean;
|
|
187
|
+
modifiedInput?: Record<string, unknown>;
|
|
188
|
+
reason?: string;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// --- Hooks ---
|
|
192
|
+
export type HookEvent =
|
|
193
|
+
| 'PreToolUse'
|
|
194
|
+
| 'PostToolUse'
|
|
195
|
+
| 'SetUpEnvironment'
|
|
196
|
+
| 'Stop'
|
|
197
|
+
| 'SessionStart'
|
|
198
|
+
| 'SessionEnd'
|
|
199
|
+
| 'UserPromptSubmit'
|
|
200
|
+
| 'Notification';
|
|
201
|
+
|
|
202
|
+
export interface HookConfig {
|
|
203
|
+
event: HookEvent;
|
|
204
|
+
command: string;
|
|
205
|
+
timeout?: number;
|
|
206
|
+
condition?: string;
|
|
207
|
+
matcher?: string;
|
|
208
|
+
description?: string;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export interface HookResult {
|
|
212
|
+
exitCode: number;
|
|
213
|
+
stdout: string;
|
|
214
|
+
stderr: string;
|
|
215
|
+
duration: number;
|
|
216
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["tools.ts"],"names":[],"mappings":"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"}
|