attocode 0.1.3 → 0.1.5

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.
Files changed (133) hide show
  1. package/CHANGELOG.md +38 -1
  2. package/README.md +56 -0
  3. package/dist/src/agent.d.ts +5 -0
  4. package/dist/src/agent.d.ts.map +1 -1
  5. package/dist/src/agent.js +244 -21
  6. package/dist/src/agent.js.map +1 -1
  7. package/dist/src/analysis/feedback-loop.d.ts +115 -0
  8. package/dist/src/analysis/feedback-loop.d.ts.map +1 -0
  9. package/dist/src/analysis/feedback-loop.js +226 -0
  10. package/dist/src/analysis/feedback-loop.js.map +1 -0
  11. package/dist/src/analysis/index.d.ts +9 -0
  12. package/dist/src/analysis/index.d.ts.map +1 -0
  13. package/dist/src/analysis/index.js +9 -0
  14. package/dist/src/analysis/index.js.map +1 -0
  15. package/dist/src/analysis/prompt-templates.d.ts +36 -0
  16. package/dist/src/analysis/prompt-templates.d.ts.map +1 -0
  17. package/dist/src/analysis/prompt-templates.js +198 -0
  18. package/dist/src/analysis/prompt-templates.js.map +1 -0
  19. package/dist/src/analysis/trace-summary.d.ts +56 -0
  20. package/dist/src/analysis/trace-summary.d.ts.map +1 -0
  21. package/dist/src/analysis/trace-summary.js +261 -0
  22. package/dist/src/analysis/trace-summary.js.map +1 -0
  23. package/dist/src/commands/handler.d.ts.map +1 -1
  24. package/dist/src/commands/handler.js +194 -2
  25. package/dist/src/commands/handler.js.map +1 -1
  26. package/dist/src/config.d.ts +3 -0
  27. package/dist/src/config.d.ts.map +1 -1
  28. package/dist/src/config.js.map +1 -1
  29. package/dist/src/defaults.d.ts +11 -2
  30. package/dist/src/defaults.d.ts.map +1 -1
  31. package/dist/src/defaults.js +25 -2
  32. package/dist/src/defaults.js.map +1 -1
  33. package/dist/src/errors/index.d.ts +233 -0
  34. package/dist/src/errors/index.d.ts.map +1 -0
  35. package/dist/src/errors/index.js +427 -0
  36. package/dist/src/errors/index.js.map +1 -0
  37. package/dist/src/integrations/auto-compaction.d.ts +33 -0
  38. package/dist/src/integrations/auto-compaction.d.ts.map +1 -1
  39. package/dist/src/integrations/auto-compaction.js +47 -3
  40. package/dist/src/integrations/auto-compaction.js.map +1 -1
  41. package/dist/src/integrations/dead-letter-queue.d.ts +208 -0
  42. package/dist/src/integrations/dead-letter-queue.d.ts.map +1 -0
  43. package/dist/src/integrations/dead-letter-queue.js +458 -0
  44. package/dist/src/integrations/dead-letter-queue.js.map +1 -0
  45. package/dist/src/integrations/economics.d.ts +94 -2
  46. package/dist/src/integrations/economics.d.ts.map +1 -1
  47. package/dist/src/integrations/economics.js +263 -10
  48. package/dist/src/integrations/economics.js.map +1 -1
  49. package/dist/src/integrations/health-check.d.ts +218 -0
  50. package/dist/src/integrations/health-check.d.ts.map +1 -0
  51. package/dist/src/integrations/health-check.js +400 -0
  52. package/dist/src/integrations/health-check.js.map +1 -0
  53. package/dist/src/integrations/index.d.ts +5 -0
  54. package/dist/src/integrations/index.d.ts.map +1 -1
  55. package/dist/src/integrations/index.js +9 -0
  56. package/dist/src/integrations/index.js.map +1 -1
  57. package/dist/src/integrations/mcp-client.d.ts +9 -0
  58. package/dist/src/integrations/mcp-client.d.ts.map +1 -1
  59. package/dist/src/integrations/mcp-client.js +49 -7
  60. package/dist/src/integrations/mcp-client.js.map +1 -1
  61. package/dist/src/integrations/openrouter-pricing.d.ts +28 -3
  62. package/dist/src/integrations/openrouter-pricing.d.ts.map +1 -1
  63. package/dist/src/integrations/openrouter-pricing.js +57 -16
  64. package/dist/src/integrations/openrouter-pricing.js.map +1 -1
  65. package/dist/src/integrations/retry.d.ts +131 -0
  66. package/dist/src/integrations/retry.d.ts.map +1 -0
  67. package/dist/src/integrations/retry.js +233 -0
  68. package/dist/src/integrations/retry.js.map +1 -0
  69. package/dist/src/integrations/sqlite-store.d.ts +42 -0
  70. package/dist/src/integrations/sqlite-store.d.ts.map +1 -1
  71. package/dist/src/integrations/sqlite-store.js +111 -0
  72. package/dist/src/integrations/sqlite-store.js.map +1 -1
  73. package/dist/src/main.js +88 -7
  74. package/dist/src/main.js.map +1 -1
  75. package/dist/src/modes/repl.d.ts.map +1 -1
  76. package/dist/src/modes/repl.js +37 -1
  77. package/dist/src/modes/repl.js.map +1 -1
  78. package/dist/src/modes/tui.d.ts.map +1 -1
  79. package/dist/src/modes/tui.js +46 -5
  80. package/dist/src/modes/tui.js.map +1 -1
  81. package/dist/src/modes.d.ts.map +1 -1
  82. package/dist/src/modes.js +10 -3
  83. package/dist/src/modes.js.map +1 -1
  84. package/dist/src/persistence/schema.d.ts +4 -0
  85. package/dist/src/persistence/schema.d.ts.map +1 -1
  86. package/dist/src/persistence/schema.js +49 -0
  87. package/dist/src/persistence/schema.js.map +1 -1
  88. package/dist/src/providers/adapters/anthropic.d.ts +24 -2
  89. package/dist/src/providers/adapters/anthropic.d.ts.map +1 -1
  90. package/dist/src/providers/adapters/anthropic.js +184 -0
  91. package/dist/src/providers/adapters/anthropic.js.map +1 -1
  92. package/dist/src/tools/bash.d.ts.map +1 -1
  93. package/dist/src/tools/bash.js +7 -4
  94. package/dist/src/tools/bash.js.map +1 -1
  95. package/dist/src/tools/file.d.ts.map +1 -1
  96. package/dist/src/tools/file.js +31 -10
  97. package/dist/src/tools/file.js.map +1 -1
  98. package/dist/src/tools/permission.d.ts +12 -0
  99. package/dist/src/tools/permission.d.ts.map +1 -1
  100. package/dist/src/tools/permission.js +136 -0
  101. package/dist/src/tools/permission.js.map +1 -1
  102. package/dist/src/tools/registry.d.ts +23 -1
  103. package/dist/src/tools/registry.d.ts.map +1 -1
  104. package/dist/src/tools/registry.js +77 -17
  105. package/dist/src/tools/registry.js.map +1 -1
  106. package/dist/src/tools/standard.d.ts.map +1 -1
  107. package/dist/src/tools/standard.js +8 -0
  108. package/dist/src/tools/standard.js.map +1 -1
  109. package/dist/src/tools/types.d.ts +20 -1
  110. package/dist/src/tools/types.d.ts.map +1 -1
  111. package/dist/src/tools/types.js.map +1 -1
  112. package/dist/src/tracing/trace-collector.d.ts +209 -3
  113. package/dist/src/tracing/trace-collector.d.ts.map +1 -1
  114. package/dist/src/tracing/trace-collector.js +407 -15
  115. package/dist/src/tracing/trace-collector.js.map +1 -1
  116. package/dist/src/tracing/types.d.ts +476 -2
  117. package/dist/src/tracing/types.d.ts.map +1 -1
  118. package/dist/src/tracing/types.js +25 -0
  119. package/dist/src/tracing/types.js.map +1 -1
  120. package/dist/src/tui/app.d.ts.map +1 -1
  121. package/dist/src/tui/app.js +161 -4
  122. package/dist/src/tui/app.js.map +1 -1
  123. package/dist/src/types.d.ts +35 -0
  124. package/dist/src/types.d.ts.map +1 -1
  125. package/package.json +6 -3
  126. package/dist/src/hello.d.ts +0 -2
  127. package/dist/src/hello.d.ts.map +0 -1
  128. package/dist/src/hello.js +0 -4
  129. package/dist/src/hello.js.map +0 -1
  130. package/dist/src/test-sqlite.d.ts +0 -2
  131. package/dist/src/test-sqlite.d.ts.map +0 -1
  132. package/dist/src/test-sqlite.js +0 -114
  133. package/dist/src/test-sqlite.js.map +0 -1
@@ -0,0 +1,233 @@
1
+ /**
2
+ * Centralized Error Types
3
+ *
4
+ * Provides typed, categorized errors for the agent system.
5
+ * Enables better error handling, recovery strategies, and observability.
6
+ *
7
+ * Error Categories:
8
+ * - TRANSIENT: Network, timeout - retryable
9
+ * - PERMANENT: Auth, config, validation - not retryable
10
+ * - RESOURCE: Memory, CPU limits exceeded
11
+ * - RATE_LIMITED: API rate limits hit
12
+ * - DEPENDENCY: External service failures
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * throw new ToolError(
17
+ * 'File not found: config.json',
18
+ * ErrorCategory.PERMANENT,
19
+ * false,
20
+ * { tool: 'read_file', path: 'config.json' }
21
+ * );
22
+ * ```
23
+ */
24
+ /**
25
+ * Categories of errors for recovery decisions.
26
+ */
27
+ export declare enum ErrorCategory {
28
+ /** Transient errors - may resolve on retry (network, timeout) */
29
+ TRANSIENT = "TRANSIENT",
30
+ /** Permanent errors - will not resolve on retry (auth, invalid input) */
31
+ PERMANENT = "PERMANENT",
32
+ /** Resource errors - system resource limits exceeded */
33
+ RESOURCE = "RESOURCE",
34
+ /** Validation errors - invalid input or configuration */
35
+ VALIDATION = "VALIDATION",
36
+ /** Rate limited - API rate limits hit, retry after delay */
37
+ RATE_LIMITED = "RATE_LIMITED",
38
+ /** Dependency errors - external service failures */
39
+ DEPENDENCY = "DEPENDENCY",
40
+ /** Internal errors - unexpected internal failures */
41
+ INTERNAL = "INTERNAL",
42
+ /** Cancelled - operation was cancelled */
43
+ CANCELLED = "CANCELLED"
44
+ }
45
+ /**
46
+ * Base class for all agent errors.
47
+ * Provides structured error information for handling and observability.
48
+ */
49
+ export declare class AgentError extends Error {
50
+ /** Error category for recovery decisions */
51
+ readonly category: ErrorCategory;
52
+ /** Whether the error may resolve on retry */
53
+ readonly recoverable: boolean;
54
+ /** Timestamp when error occurred */
55
+ readonly timestamp: Date;
56
+ /** Additional context for debugging */
57
+ readonly context: Record<string, unknown>;
58
+ /** Original error that caused this one (if wrapping) */
59
+ readonly cause?: Error;
60
+ constructor(message: string, category: ErrorCategory, recoverable: boolean, context?: Record<string, unknown>, cause?: Error);
61
+ /**
62
+ * Create a serializable representation of the error.
63
+ */
64
+ toJSON(): Record<string, unknown>;
65
+ /**
66
+ * Format error for logging.
67
+ */
68
+ toLogString(): string;
69
+ }
70
+ /**
71
+ * Error from tool execution.
72
+ */
73
+ export declare class ToolError extends AgentError {
74
+ /** Name of the tool that failed */
75
+ readonly toolName: string;
76
+ constructor(message: string, category: ErrorCategory, recoverable: boolean, toolName: string, context?: Record<string, unknown>, cause?: Error);
77
+ /**
78
+ * Create a ToolError from a generic error.
79
+ */
80
+ static fromError(error: Error, toolName: string): ToolError;
81
+ }
82
+ /**
83
+ * Error from MCP server communication.
84
+ */
85
+ export declare class MCPError extends AgentError {
86
+ /** Name of the MCP server */
87
+ readonly serverName: string;
88
+ /** MCP method that failed (e.g., 'tools/call') */
89
+ readonly method?: string;
90
+ constructor(message: string, category: ErrorCategory, recoverable: boolean, serverName: string, context?: Record<string, unknown>, cause?: Error);
91
+ /**
92
+ * Create error for server not found.
93
+ */
94
+ static serverNotFound(serverName: string): MCPError;
95
+ /**
96
+ * Create error for server not connected.
97
+ */
98
+ static serverNotConnected(serverName: string): MCPError;
99
+ /**
100
+ * Create error for request timeout.
101
+ */
102
+ static timeout(serverName: string, method: string): MCPError;
103
+ }
104
+ /**
105
+ * Error from file operations.
106
+ */
107
+ export declare class FileOperationError extends AgentError {
108
+ /** Path of the file operation */
109
+ readonly path: string;
110
+ /** Type of operation (read, write, delete, etc.) */
111
+ readonly operation: string;
112
+ constructor(message: string, category: ErrorCategory, recoverable: boolean, path: string, operation: string, context?: Record<string, unknown>, cause?: Error);
113
+ /**
114
+ * Create error for file not found.
115
+ */
116
+ static notFound(path: string, operation: string): FileOperationError;
117
+ /**
118
+ * Create error for permission denied.
119
+ */
120
+ static permissionDenied(path: string, operation: string): FileOperationError;
121
+ /**
122
+ * Create error for file busy (may resolve on retry).
123
+ */
124
+ static busy(path: string, operation: string): FileOperationError;
125
+ }
126
+ /**
127
+ * Error from LLM provider calls.
128
+ */
129
+ export declare class ProviderError extends AgentError {
130
+ /** Name of the provider */
131
+ readonly providerName: string;
132
+ /** HTTP status code if applicable */
133
+ readonly statusCode?: number;
134
+ constructor(message: string, category: ErrorCategory, recoverable: boolean, providerName: string, context?: Record<string, unknown>, cause?: Error);
135
+ /**
136
+ * Create error for rate limiting.
137
+ */
138
+ static rateLimited(providerName: string, retryAfter?: number): ProviderError;
139
+ /**
140
+ * Create error for authentication failure.
141
+ */
142
+ static authenticationFailed(providerName: string): ProviderError;
143
+ /**
144
+ * Create error for server error.
145
+ */
146
+ static serverError(providerName: string, statusCode: number): ProviderError;
147
+ }
148
+ /**
149
+ * Error from validation failures.
150
+ */
151
+ export declare class ValidationError extends AgentError {
152
+ /** Field(s) that failed validation */
153
+ readonly fields?: string[];
154
+ constructor(message: string, fields?: string[], context?: Record<string, unknown>);
155
+ /**
156
+ * Create error from Zod validation result.
157
+ */
158
+ static fromZodError(error: {
159
+ issues: Array<{
160
+ path: (string | number)[];
161
+ message: string;
162
+ }>;
163
+ }): ValidationError;
164
+ }
165
+ /**
166
+ * Error when operation is cancelled.
167
+ */
168
+ export declare class CancellationError extends AgentError {
169
+ /** Reason for cancellation */
170
+ readonly reason: string;
171
+ constructor(reason?: string);
172
+ }
173
+ /**
174
+ * Error when resources are exhausted.
175
+ */
176
+ export declare class ResourceError extends AgentError {
177
+ /** Type of resource exhausted */
178
+ readonly resourceType: 'memory' | 'cpu' | 'time' | 'tokens' | 'concurrent';
179
+ /** Current usage */
180
+ readonly usage?: number;
181
+ /** Limit that was exceeded */
182
+ readonly limit?: number;
183
+ constructor(message: string, resourceType: 'memory' | 'cpu' | 'time' | 'tokens' | 'concurrent', usage?: number, limit?: number);
184
+ /**
185
+ * Create error for memory limit exceeded.
186
+ */
187
+ static memoryExceeded(usage: number, limit: number): ResourceError;
188
+ /**
189
+ * Create error for timeout.
190
+ */
191
+ static timeout(elapsed: number, limit: number): ResourceError;
192
+ /**
193
+ * Create error for token limit exceeded.
194
+ */
195
+ static tokenLimitExceeded(used: number, limit: number): ResourceError;
196
+ }
197
+ /**
198
+ * Determine error category from a generic error.
199
+ * Used to wrap unknown errors in typed AgentError.
200
+ */
201
+ export declare function categorizeError(error: Error): {
202
+ category: ErrorCategory;
203
+ recoverable: boolean;
204
+ };
205
+ /**
206
+ * Wrap an unknown error as an AgentError.
207
+ */
208
+ export declare function wrapError(error: unknown, context?: Record<string, unknown>): AgentError;
209
+ /**
210
+ * Type guard for AgentError.
211
+ */
212
+ export declare function isAgentError(error: unknown): error is AgentError;
213
+ /**
214
+ * Type guard for recoverable errors.
215
+ */
216
+ export declare function isRecoverable(error: unknown): boolean;
217
+ /**
218
+ * Type guard for transient errors (should retry).
219
+ */
220
+ export declare function isTransient(error: unknown): boolean;
221
+ /**
222
+ * Type guard for rate limited errors (should retry with backoff).
223
+ */
224
+ export declare function isRateLimited(error: unknown): boolean;
225
+ /**
226
+ * Format error for display to user.
227
+ */
228
+ export declare function formatError(error: unknown): string;
229
+ /**
230
+ * Format error for logging with full details.
231
+ */
232
+ export declare function formatErrorForLog(error: unknown): string;
233
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH;;GAEG;AACH,oBAAY,aAAa;IACvB,iEAAiE;IACjE,SAAS,cAAc;IAEvB,yEAAyE;IACzE,SAAS,cAAc;IAEvB,wDAAwD;IACxD,QAAQ,aAAa;IAErB,yDAAyD;IACzD,UAAU,eAAe;IAEzB,4DAA4D;IAC5D,YAAY,iBAAiB;IAE7B,oDAAoD;IACpD,UAAU,eAAe;IAEzB,qDAAqD;IACrD,QAAQ,aAAa;IAErB,0CAA0C;IAC1C,SAAS,cAAc;CACxB;AAMD;;;GAGG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IAEjC,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IAEzB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE1C,wDAAwD;IACxD,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;gBAGrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,CAAC,EAAE,KAAK;IAgBf;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAajC;;OAEG;IACH,WAAW,IAAI,MAAM;CAatB;AAMD;;GAEG;AACH,qBAAa,SAAU,SAAQ,UAAU;IACvC,mCAAmC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAGxB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,CAAC,EAAE,KAAK;IAOf;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS;CAW5D;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,UAAU;IACtC,6BAA6B;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAGvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,OAAO,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,CAAC,EAAE,KAAK;IAQf;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ;IASnD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ;IASvD;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ;CAS7D;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;IAChD,iCAAiC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,oDAAoD;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAGzB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,CAAC,EAAE,KAAK;IAQf;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB;IAUpE;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB;IAU5E;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB;CASjE;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,2BAA2B;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,qCAAqC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAG3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,OAAO,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,CAAC,EAAE,KAAK;IAQf;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa;IAU5E;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa;IAShE;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa;CAS5E;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,UAAU;IAC7C,sCAAsC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;gBAGzB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOnC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,eAAe;CAQ/G;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,GAAE,MAA8B;CAKnD;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,iCAAiC;IACjC,QAAQ,CAAC,YAAY,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;IAE3E,oBAAoB;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAExB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAGtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,EACjE,KAAK,CAAC,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM;IAShB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa;IASlE;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa;IAS7D;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa;CAQtE;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG;IAC7C,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB,CAiEA;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CASvF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMnD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAMrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQxD"}
@@ -0,0 +1,427 @@
1
+ /**
2
+ * Centralized Error Types
3
+ *
4
+ * Provides typed, categorized errors for the agent system.
5
+ * Enables better error handling, recovery strategies, and observability.
6
+ *
7
+ * Error Categories:
8
+ * - TRANSIENT: Network, timeout - retryable
9
+ * - PERMANENT: Auth, config, validation - not retryable
10
+ * - RESOURCE: Memory, CPU limits exceeded
11
+ * - RATE_LIMITED: API rate limits hit
12
+ * - DEPENDENCY: External service failures
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * throw new ToolError(
17
+ * 'File not found: config.json',
18
+ * ErrorCategory.PERMANENT,
19
+ * false,
20
+ * { tool: 'read_file', path: 'config.json' }
21
+ * );
22
+ * ```
23
+ */
24
+ // =============================================================================
25
+ // ERROR CATEGORIES
26
+ // =============================================================================
27
+ /**
28
+ * Categories of errors for recovery decisions.
29
+ */
30
+ export var ErrorCategory;
31
+ (function (ErrorCategory) {
32
+ /** Transient errors - may resolve on retry (network, timeout) */
33
+ ErrorCategory["TRANSIENT"] = "TRANSIENT";
34
+ /** Permanent errors - will not resolve on retry (auth, invalid input) */
35
+ ErrorCategory["PERMANENT"] = "PERMANENT";
36
+ /** Resource errors - system resource limits exceeded */
37
+ ErrorCategory["RESOURCE"] = "RESOURCE";
38
+ /** Validation errors - invalid input or configuration */
39
+ ErrorCategory["VALIDATION"] = "VALIDATION";
40
+ /** Rate limited - API rate limits hit, retry after delay */
41
+ ErrorCategory["RATE_LIMITED"] = "RATE_LIMITED";
42
+ /** Dependency errors - external service failures */
43
+ ErrorCategory["DEPENDENCY"] = "DEPENDENCY";
44
+ /** Internal errors - unexpected internal failures */
45
+ ErrorCategory["INTERNAL"] = "INTERNAL";
46
+ /** Cancelled - operation was cancelled */
47
+ ErrorCategory["CANCELLED"] = "CANCELLED";
48
+ })(ErrorCategory || (ErrorCategory = {}));
49
+ // =============================================================================
50
+ // BASE ERROR CLASS
51
+ // =============================================================================
52
+ /**
53
+ * Base class for all agent errors.
54
+ * Provides structured error information for handling and observability.
55
+ */
56
+ export class AgentError extends Error {
57
+ /** Error category for recovery decisions */
58
+ category;
59
+ /** Whether the error may resolve on retry */
60
+ recoverable;
61
+ /** Timestamp when error occurred */
62
+ timestamp;
63
+ /** Additional context for debugging */
64
+ context;
65
+ /** Original error that caused this one (if wrapping) */
66
+ cause;
67
+ constructor(message, category, recoverable, context, cause) {
68
+ super(message);
69
+ this.name = 'AgentError';
70
+ this.category = category;
71
+ this.recoverable = recoverable;
72
+ this.timestamp = new Date();
73
+ this.context = context ?? {};
74
+ this.cause = cause;
75
+ // Maintain proper stack trace in V8
76
+ if (Error.captureStackTrace) {
77
+ Error.captureStackTrace(this, this.constructor);
78
+ }
79
+ }
80
+ /**
81
+ * Create a serializable representation of the error.
82
+ */
83
+ toJSON() {
84
+ return {
85
+ name: this.name,
86
+ message: this.message,
87
+ category: this.category,
88
+ recoverable: this.recoverable,
89
+ timestamp: this.timestamp.toISOString(),
90
+ context: this.context,
91
+ cause: this.cause?.message,
92
+ stack: this.stack,
93
+ };
94
+ }
95
+ /**
96
+ * Format error for logging.
97
+ */
98
+ toLogString() {
99
+ const parts = [
100
+ `[${this.name}]`,
101
+ `(${this.category})`,
102
+ this.message,
103
+ ];
104
+ if (Object.keys(this.context).length > 0) {
105
+ parts.push(`context=${JSON.stringify(this.context)}`);
106
+ }
107
+ return parts.join(' ');
108
+ }
109
+ }
110
+ // =============================================================================
111
+ // SPECIALIZED ERROR CLASSES
112
+ // =============================================================================
113
+ /**
114
+ * Error from tool execution.
115
+ */
116
+ export class ToolError extends AgentError {
117
+ /** Name of the tool that failed */
118
+ toolName;
119
+ constructor(message, category, recoverable, toolName, context, cause) {
120
+ super(message, category, recoverable, { ...context, tool: toolName }, cause);
121
+ this.name = 'ToolError';
122
+ this.toolName = toolName;
123
+ }
124
+ /**
125
+ * Create a ToolError from a generic error.
126
+ */
127
+ static fromError(error, toolName) {
128
+ const { category, recoverable } = categorizeError(error);
129
+ return new ToolError(error.message, category, recoverable, toolName, undefined, error);
130
+ }
131
+ }
132
+ /**
133
+ * Error from MCP server communication.
134
+ */
135
+ export class MCPError extends AgentError {
136
+ /** Name of the MCP server */
137
+ serverName;
138
+ /** MCP method that failed (e.g., 'tools/call') */
139
+ method;
140
+ constructor(message, category, recoverable, serverName, context, cause) {
141
+ super(message, category, recoverable, { ...context, server: serverName }, cause);
142
+ this.name = 'MCPError';
143
+ this.serverName = serverName;
144
+ this.method = context?.method;
145
+ }
146
+ /**
147
+ * Create error for server not found.
148
+ */
149
+ static serverNotFound(serverName) {
150
+ return new MCPError(`Server not found: ${serverName}`, ErrorCategory.PERMANENT, false, serverName);
151
+ }
152
+ /**
153
+ * Create error for server not connected.
154
+ */
155
+ static serverNotConnected(serverName) {
156
+ return new MCPError(`Server not connected: ${serverName}`, ErrorCategory.DEPENDENCY, true, // May recover if server restarts
157
+ serverName);
158
+ }
159
+ /**
160
+ * Create error for request timeout.
161
+ */
162
+ static timeout(serverName, method) {
163
+ return new MCPError(`Request timeout: ${method}`, ErrorCategory.TRANSIENT, true, serverName, { method });
164
+ }
165
+ }
166
+ /**
167
+ * Error from file operations.
168
+ */
169
+ export class FileOperationError extends AgentError {
170
+ /** Path of the file operation */
171
+ path;
172
+ /** Type of operation (read, write, delete, etc.) */
173
+ operation;
174
+ constructor(message, category, recoverable, path, operation, context, cause) {
175
+ super(message, category, recoverable, { ...context, path, operation }, cause);
176
+ this.name = 'FileOperationError';
177
+ this.path = path;
178
+ this.operation = operation;
179
+ }
180
+ /**
181
+ * Create error for file not found.
182
+ */
183
+ static notFound(path, operation) {
184
+ return new FileOperationError(`File not found: ${path}`, ErrorCategory.PERMANENT, false, path, operation);
185
+ }
186
+ /**
187
+ * Create error for permission denied.
188
+ */
189
+ static permissionDenied(path, operation) {
190
+ return new FileOperationError(`Permission denied: ${path}`, ErrorCategory.PERMANENT, false, path, operation);
191
+ }
192
+ /**
193
+ * Create error for file busy (may resolve on retry).
194
+ */
195
+ static busy(path, operation) {
196
+ return new FileOperationError(`File busy: ${path}`, ErrorCategory.TRANSIENT, true, path, operation);
197
+ }
198
+ }
199
+ /**
200
+ * Error from LLM provider calls.
201
+ */
202
+ export class ProviderError extends AgentError {
203
+ /** Name of the provider */
204
+ providerName;
205
+ /** HTTP status code if applicable */
206
+ statusCode;
207
+ constructor(message, category, recoverable, providerName, context, cause) {
208
+ super(message, category, recoverable, { ...context, provider: providerName }, cause);
209
+ this.name = 'ProviderError';
210
+ this.providerName = providerName;
211
+ this.statusCode = context?.statusCode;
212
+ }
213
+ /**
214
+ * Create error for rate limiting.
215
+ */
216
+ static rateLimited(providerName, retryAfter) {
217
+ return new ProviderError(`Rate limited by ${providerName}`, ErrorCategory.RATE_LIMITED, true, providerName, { retryAfter });
218
+ }
219
+ /**
220
+ * Create error for authentication failure.
221
+ */
222
+ static authenticationFailed(providerName) {
223
+ return new ProviderError(`Authentication failed for ${providerName}`, ErrorCategory.PERMANENT, false, providerName);
224
+ }
225
+ /**
226
+ * Create error for server error.
227
+ */
228
+ static serverError(providerName, statusCode) {
229
+ return new ProviderError(`Server error from ${providerName}: ${statusCode}`, ErrorCategory.TRANSIENT, true, providerName, { statusCode });
230
+ }
231
+ }
232
+ /**
233
+ * Error from validation failures.
234
+ */
235
+ export class ValidationError extends AgentError {
236
+ /** Field(s) that failed validation */
237
+ fields;
238
+ constructor(message, fields, context) {
239
+ super(message, ErrorCategory.VALIDATION, false, { ...context, fields });
240
+ this.name = 'ValidationError';
241
+ this.fields = fields;
242
+ }
243
+ /**
244
+ * Create error from Zod validation result.
245
+ */
246
+ static fromZodError(error) {
247
+ const fields = error.issues.map(i => i.path.join('.'));
248
+ const messages = error.issues.map(i => `${i.path.join('.')}: ${i.message}`);
249
+ return new ValidationError(`Validation failed: ${messages.join(', ')}`, fields);
250
+ }
251
+ }
252
+ /**
253
+ * Error when operation is cancelled.
254
+ */
255
+ export class CancellationError extends AgentError {
256
+ /** Reason for cancellation */
257
+ reason;
258
+ constructor(reason = 'Operation cancelled') {
259
+ super(reason, ErrorCategory.CANCELLED, false, { reason });
260
+ this.name = 'CancellationError';
261
+ this.reason = reason;
262
+ }
263
+ }
264
+ /**
265
+ * Error when resources are exhausted.
266
+ */
267
+ export class ResourceError extends AgentError {
268
+ /** Type of resource exhausted */
269
+ resourceType;
270
+ /** Current usage */
271
+ usage;
272
+ /** Limit that was exceeded */
273
+ limit;
274
+ constructor(message, resourceType, usage, limit) {
275
+ super(message, ErrorCategory.RESOURCE, false, { resourceType, usage, limit });
276
+ this.name = 'ResourceError';
277
+ this.resourceType = resourceType;
278
+ this.usage = usage;
279
+ this.limit = limit;
280
+ }
281
+ /**
282
+ * Create error for memory limit exceeded.
283
+ */
284
+ static memoryExceeded(usage, limit) {
285
+ return new ResourceError(`Memory limit exceeded: ${usage}MB / ${limit}MB`, 'memory', usage, limit);
286
+ }
287
+ /**
288
+ * Create error for timeout.
289
+ */
290
+ static timeout(elapsed, limit) {
291
+ return new ResourceError(`Time limit exceeded: ${elapsed}ms / ${limit}ms`, 'time', elapsed, limit);
292
+ }
293
+ /**
294
+ * Create error for token limit exceeded.
295
+ */
296
+ static tokenLimitExceeded(used, limit) {
297
+ return new ResourceError(`Token limit exceeded: ${used} / ${limit}`, 'tokens', used, limit);
298
+ }
299
+ }
300
+ // =============================================================================
301
+ // ERROR UTILITIES
302
+ // =============================================================================
303
+ /**
304
+ * Determine error category from a generic error.
305
+ * Used to wrap unknown errors in typed AgentError.
306
+ */
307
+ export function categorizeError(error) {
308
+ const message = error.message.toLowerCase();
309
+ const code = error.code;
310
+ // Check for transient errors (retryable)
311
+ if (code === 'ETIMEDOUT' ||
312
+ code === 'ECONNRESET' ||
313
+ code === 'ECONNREFUSED' ||
314
+ code === 'ENOTFOUND' ||
315
+ message.includes('etimedout') ||
316
+ message.includes('econnreset') ||
317
+ message.includes('timeout') ||
318
+ message.includes('socket hang up') ||
319
+ message.includes('network error') ||
320
+ message.includes('temporarily unavailable')) {
321
+ return { category: ErrorCategory.TRANSIENT, recoverable: true };
322
+ }
323
+ // Check for rate limiting
324
+ if (message.includes('rate limit') ||
325
+ message.includes('too many requests') ||
326
+ message.includes('429')) {
327
+ return { category: ErrorCategory.RATE_LIMITED, recoverable: true };
328
+ }
329
+ // Check for authentication errors
330
+ if (message.includes('unauthorized') ||
331
+ message.includes('authentication') ||
332
+ message.includes('forbidden') ||
333
+ message.includes('401') ||
334
+ message.includes('403')) {
335
+ return { category: ErrorCategory.PERMANENT, recoverable: false };
336
+ }
337
+ // Check for validation errors
338
+ if (message.includes('invalid') ||
339
+ message.includes('validation') ||
340
+ message.includes('required')) {
341
+ return { category: ErrorCategory.VALIDATION, recoverable: false };
342
+ }
343
+ // Check for resource errors
344
+ if (code === 'ENOMEM' ||
345
+ message.includes('out of memory') ||
346
+ message.includes('resource limit')) {
347
+ return { category: ErrorCategory.RESOURCE, recoverable: false };
348
+ }
349
+ // Check for cancellation
350
+ if (message.includes('cancelled') || message.includes('aborted')) {
351
+ return { category: ErrorCategory.CANCELLED, recoverable: false };
352
+ }
353
+ // Default to transient (assume retryable)
354
+ return { category: ErrorCategory.INTERNAL, recoverable: false };
355
+ }
356
+ /**
357
+ * Wrap an unknown error as an AgentError.
358
+ */
359
+ export function wrapError(error, context) {
360
+ if (error instanceof AgentError) {
361
+ return error;
362
+ }
363
+ const err = error instanceof Error ? error : new Error(String(error));
364
+ const { category, recoverable } = categorizeError(err);
365
+ return new AgentError(err.message, category, recoverable, context, err);
366
+ }
367
+ /**
368
+ * Type guard for AgentError.
369
+ */
370
+ export function isAgentError(error) {
371
+ return error instanceof AgentError;
372
+ }
373
+ /**
374
+ * Type guard for recoverable errors.
375
+ */
376
+ export function isRecoverable(error) {
377
+ if (error instanceof AgentError) {
378
+ return error.recoverable;
379
+ }
380
+ const { recoverable } = categorizeError(error);
381
+ return recoverable;
382
+ }
383
+ /**
384
+ * Type guard for transient errors (should retry).
385
+ */
386
+ export function isTransient(error) {
387
+ if (error instanceof AgentError) {
388
+ return error.category === ErrorCategory.TRANSIENT;
389
+ }
390
+ const { category } = categorizeError(error);
391
+ return category === ErrorCategory.TRANSIENT;
392
+ }
393
+ /**
394
+ * Type guard for rate limited errors (should retry with backoff).
395
+ */
396
+ export function isRateLimited(error) {
397
+ if (error instanceof AgentError) {
398
+ return error.category === ErrorCategory.RATE_LIMITED;
399
+ }
400
+ const { category } = categorizeError(error);
401
+ return category === ErrorCategory.RATE_LIMITED;
402
+ }
403
+ /**
404
+ * Format error for display to user.
405
+ */
406
+ export function formatError(error) {
407
+ if (error instanceof AgentError) {
408
+ return `${error.name}: ${error.message}`;
409
+ }
410
+ if (error instanceof Error) {
411
+ return error.message;
412
+ }
413
+ return String(error);
414
+ }
415
+ /**
416
+ * Format error for logging with full details.
417
+ */
418
+ export function formatErrorForLog(error) {
419
+ if (error instanceof AgentError) {
420
+ return error.toLogString();
421
+ }
422
+ if (error instanceof Error) {
423
+ return `[Error] ${error.message}`;
424
+ }
425
+ return `[Unknown] ${String(error)}`;
426
+ }
427
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errors/index.ts"],"names":[],"mappings":"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"}