@defai.digital/ax-cli 3.8.7 → 3.8.8
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 +28 -393
- package/config-defaults/settings.yaml +3 -0
- package/dist/agent/llm-agent.d.ts +11 -2
- package/dist/agent/llm-agent.js +73 -104
- package/dist/agent/llm-agent.js.map +1 -1
- package/dist/agent/loop-detector.d.ts +70 -0
- package/dist/agent/loop-detector.js +339 -0
- package/dist/agent/loop-detector.js.map +1 -0
- package/dist/agent/progress-tracker.d.ts +94 -0
- package/dist/agent/progress-tracker.js +222 -0
- package/dist/agent/progress-tracker.js.map +1 -0
- package/dist/agent/status-reporter.js +2 -2
- package/dist/agent/status-reporter.js.map +1 -1
- package/dist/agent/subagent.js +3 -3
- package/dist/agent/subagent.js.map +1 -1
- package/dist/analyzers/git/churn-calculator.js +2 -1
- package/dist/analyzers/git/churn-calculator.js.map +1 -1
- package/dist/checkpoint/storage.js +6 -4
- package/dist/checkpoint/storage.js.map +1 -1
- package/dist/commands/cache.js +8 -6
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/doctor.js +19 -27
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/mcp-migrate.js +6 -5
- package/dist/commands/mcp-migrate.js.map +1 -1
- package/dist/commands/models.js +8 -12
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/plan.js +1 -10
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/setup.js +2 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.js +4 -4
- package/dist/commands/status.js.map +1 -1
- package/dist/constants.d.ts +12 -0
- package/dist/constants.js +16 -4
- package/dist/constants.js.map +1 -1
- package/dist/hooks/hook-runner.d.ts +138 -0
- package/dist/hooks/hook-runner.js +429 -0
- package/dist/hooks/hook-runner.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.js +7 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.js +1 -19
- package/dist/index.js.map +1 -1
- package/dist/llm/tools.js +2 -39
- package/dist/llm/tools.js.map +1 -1
- package/dist/mcp/automatosx-loader.js +2 -1
- package/dist/mcp/automatosx-loader.js.map +1 -1
- package/dist/mcp/config-migrator.js +3 -2
- package/dist/mcp/config-migrator.js.map +1 -1
- package/dist/mcp/config-v2.d.ts +5 -0
- package/dist/mcp/config-v2.js +26 -0
- package/dist/mcp/config-v2.js.map +1 -1
- package/dist/mcp/error-formatter.js +4 -1
- package/dist/mcp/error-formatter.js.map +1 -1
- package/dist/mcp/reconnection.js +2 -1
- package/dist/mcp/reconnection.js.map +1 -1
- package/dist/mcp/registry.js +3 -2
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/resources.js +2 -1
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/validation.js +9 -0
- package/dist/mcp/validation.js.map +1 -1
- package/dist/memory/context-store.js +4 -6
- package/dist/memory/context-store.js.map +1 -1
- package/dist/memory/types.d.ts +2 -0
- package/dist/memory/types.js +4 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/permissions/index.d.ts +6 -0
- package/dist/permissions/index.js +7 -0
- package/dist/permissions/index.js.map +1 -0
- package/dist/permissions/permission-manager.d.ts +145 -0
- package/dist/permissions/permission-manager.js +401 -0
- package/dist/permissions/permission-manager.js.map +1 -0
- package/dist/planner/task-planner.js +2 -1
- package/dist/planner/task-planner.js.map +1 -1
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/settings-schemas.d.ts +0 -14
- package/dist/schemas/settings-schemas.js +0 -10
- package/dist/schemas/settings-schemas.js.map +1 -1
- package/dist/schemas/tool-schemas.d.ts +2 -2
- package/dist/schemas/yaml-schemas.d.ts +15 -0
- package/dist/schemas/yaml-schemas.js +3 -0
- package/dist/schemas/yaml-schemas.js.map +1 -1
- package/dist/tools/bash.js +6 -5
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/confirmation-tool.js +3 -2
- package/dist/tools/confirmation-tool.js.map +1 -1
- package/dist/tools/registry.d.ts +1 -1
- package/dist/tools/registry.js +2 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/todo-tool.js +3 -2
- package/dist/tools/todo-tool.js.map +1 -1
- package/dist/ui/components/tool-group-display.js +0 -6
- package/dist/ui/components/tool-group-display.js.map +1 -1
- package/dist/ui/hooks/use-input-handler.js +7 -6
- package/dist/ui/hooks/use-input-handler.js.map +1 -1
- package/dist/ui/hooks/use-input-history.js +4 -4
- package/dist/ui/hooks/use-input-history.js.map +1 -1
- package/dist/ui/utils/tool-grouper.d.ts +1 -2
- package/dist/ui/utils/tool-grouper.js +4 -15
- package/dist/ui/utils/tool-grouper.js.map +1 -1
- package/dist/utils/audit-logger.js +2 -1
- package/dist/utils/audit-logger.js.map +1 -1
- package/dist/utils/config-loader.d.ts +3 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/encryption.js +2 -1
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/file-cache.js +4 -2
- package/dist/utils/file-cache.js.map +1 -1
- package/dist/utils/onboarding-manager.js +2 -1
- package/dist/utils/onboarding-manager.js.map +1 -1
- package/dist/utils/path-helpers.js +3 -2
- package/dist/utils/path-helpers.js.map +1 -1
- package/dist/utils/path-security.js +3 -2
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/settings-manager.d.ts +1 -21
- package/dist/utils/settings-manager.js +2 -82
- package/dist/utils/settings-manager.js.map +1 -1
- package/dist/utils/streaming-analyzer.d.ts +2 -13
- package/dist/utils/streaming-analyzer.js +3 -25
- package/dist/utils/streaming-analyzer.js.map +1 -1
- package/dist/utils/token-counter.d.ts +8 -1
- package/dist/utils/token-counter.js +14 -5
- package/dist/utils/token-counter.js.map +1 -1
- package/package.json +3 -2
- package/packages/schemas/README.md +1 -1
- package/packages/schemas/package.json +1 -1
- package/.ax-cli/CUSTOM.md +0 -97
- package/.ax-cli/auto-accept-audit.json +0 -1302
- package/.ax-cli/index.json +0 -43
- package/.ax-cli/memory.json +0 -55
- package/.ax-cli/settings.json +0 -12
- package/ax.config.json +0 -303
- package/dist/tools/web-search/cache.d.ts +0 -62
- package/dist/tools/web-search/cache.js +0 -105
- package/dist/tools/web-search/cache.js.map +0 -1
- package/dist/tools/web-search/engines/crates.d.ts +0 -19
- package/dist/tools/web-search/engines/crates.js +0 -87
- package/dist/tools/web-search/engines/crates.js.map +0 -1
- package/dist/tools/web-search/engines/npm.d.ts +0 -18
- package/dist/tools/web-search/engines/npm.js +0 -86
- package/dist/tools/web-search/engines/npm.js.map +0 -1
- package/dist/tools/web-search/engines/pypi.d.ts +0 -18
- package/dist/tools/web-search/engines/pypi.js +0 -75
- package/dist/tools/web-search/engines/pypi.js.map +0 -1
- package/dist/tools/web-search/engines/stackoverflow.d.ts +0 -30
- package/dist/tools/web-search/engines/stackoverflow.js +0 -130
- package/dist/tools/web-search/engines/stackoverflow.js.map +0 -1
- package/dist/tools/web-search/engines/wikipedia.d.ts +0 -27
- package/dist/tools/web-search/engines/wikipedia.js +0 -112
- package/dist/tools/web-search/engines/wikipedia.js.map +0 -1
- package/dist/tools/web-search/index.d.ts +0 -11
- package/dist/tools/web-search/index.js +0 -11
- package/dist/tools/web-search/index.js.map +0 -1
- package/dist/tools/web-search/router.d.ts +0 -36
- package/dist/tools/web-search/router.js +0 -270
- package/dist/tools/web-search/router.js.map +0 -1
- package/dist/tools/web-search/types.d.ts +0 -45
- package/dist/tools/web-search/types.js +0 -6
- package/dist/tools/web-search/types.js.map +0 -1
- package/dist/tools/web-search/web-search-tool.d.ts +0 -51
- package/dist/tools/web-search/web-search-tool.js +0 -262
- package/dist/tools/web-search/web-search-tool.js.map +0 -1
- package/packages/schemas/dist/index.d.ts +0 -14
- package/packages/schemas/dist/index.d.ts.map +0 -1
- package/packages/schemas/dist/index.js +0 -19
- package/packages/schemas/dist/index.js.map +0 -1
- package/packages/schemas/dist/public/core/brand-types.d.ts +0 -308
- package/packages/schemas/dist/public/core/brand-types.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/brand-types.js +0 -243
- package/packages/schemas/dist/public/core/brand-types.js.map +0 -1
- package/packages/schemas/dist/public/core/enums.d.ts +0 -227
- package/packages/schemas/dist/public/core/enums.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/enums.js +0 -222
- package/packages/schemas/dist/public/core/enums.js.map +0 -1
- package/packages/schemas/dist/public/core/id-types.d.ts +0 -286
- package/packages/schemas/dist/public/core/id-types.d.ts.map +0 -1
- package/packages/schemas/dist/public/core/id-types.js +0 -136
- package/packages/schemas/dist/public/core/id-types.js.map +0 -1
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized Enums for @ax-cli/schemas
|
|
3
|
-
*
|
|
4
|
-
* This file contains all enumeration types used across the ax-cli ecosystem.
|
|
5
|
-
* Using Zod enums provides:
|
|
6
|
-
* - Runtime validation
|
|
7
|
-
* - TypeScript type inference
|
|
8
|
-
* - Exhaustiveness checking
|
|
9
|
-
* - Auto-completion support
|
|
10
|
-
*
|
|
11
|
-
* SECURITY: Always validate enum values at system boundaries (API, file I/O, CLI args).
|
|
12
|
-
*
|
|
13
|
-
* @module enums
|
|
14
|
-
*/
|
|
15
|
-
import { z } from 'zod';
|
|
16
|
-
/**
|
|
17
|
-
* Message Role Enum - Roles for chat messages in AI conversations
|
|
18
|
-
*
|
|
19
|
-
* Used in:
|
|
20
|
-
* - GrokMessageSchema (src/grok/types.ts)
|
|
21
|
-
* - Chat message payloads
|
|
22
|
-
* - Message history tracking
|
|
23
|
-
*
|
|
24
|
-
* @security MUST validate at API boundaries when accepting message objects
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```typescript
|
|
28
|
-
* const roleResult = MessageRoleEnum.safeParse(userInput);
|
|
29
|
-
* if (roleResult.success) {
|
|
30
|
-
* const role = roleResult.data; // 'system' | 'user' | 'assistant' | 'tool'
|
|
31
|
-
* }
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export declare const MessageRoleEnum: z.ZodEnum<["system", "user", "assistant", "tool"]>;
|
|
35
|
-
/**
|
|
36
|
-
* Extract the TypeScript type from MessageRoleEnum
|
|
37
|
-
*/
|
|
38
|
-
export type MessageRole = z.infer<typeof MessageRoleEnum>;
|
|
39
|
-
/**
|
|
40
|
-
* Finish Reason Enum - Reasons why an AI response completed
|
|
41
|
-
*
|
|
42
|
-
* Used in:
|
|
43
|
-
* - GrokResponseSchema (src/grok/types.ts)
|
|
44
|
-
* - API response tracking
|
|
45
|
-
* - Usage analytics
|
|
46
|
-
*
|
|
47
|
-
* Values:
|
|
48
|
-
* - `stop`: Natural completion (model decided to stop)
|
|
49
|
-
* - `length`: Stopped due to max token limit
|
|
50
|
-
* - `tool_calls`: Stopped to execute tool calls
|
|
51
|
-
* - `content_filter`: Stopped due to content policy violation
|
|
52
|
-
*
|
|
53
|
-
* @security MUST validate at API boundaries
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ```typescript
|
|
57
|
-
* const result = FinishReasonEnum.safeParse(response.finish_reason);
|
|
58
|
-
* if (result.success) {
|
|
59
|
-
* switch (result.data) {
|
|
60
|
-
* case 'stop':
|
|
61
|
-
* // Natural completion
|
|
62
|
-
* break;
|
|
63
|
-
* case 'length':
|
|
64
|
-
* // Truncated response
|
|
65
|
-
* break;
|
|
66
|
-
* case 'tool_calls':
|
|
67
|
-
* // Need to execute tools
|
|
68
|
-
* break;
|
|
69
|
-
* case 'content_filter':
|
|
70
|
-
* // Content policy violation
|
|
71
|
-
* break;
|
|
72
|
-
* }
|
|
73
|
-
* }
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
76
|
-
export declare const FinishReasonEnum: z.ZodEnum<["stop", "length", "tool_calls", "content_filter"]>;
|
|
77
|
-
/**
|
|
78
|
-
* Extract the TypeScript type from FinishReasonEnum
|
|
79
|
-
*/
|
|
80
|
-
export type FinishReason = z.infer<typeof FinishReasonEnum>;
|
|
81
|
-
/**
|
|
82
|
-
* Transport Enum - Communication protocols for MCP servers
|
|
83
|
-
*
|
|
84
|
-
* Used in:
|
|
85
|
-
* - MCPServerConfigSchema (src/mcp/config.ts)
|
|
86
|
-
* - MCP server initialization
|
|
87
|
-
* - Transport layer selection
|
|
88
|
-
*
|
|
89
|
-
* Values:
|
|
90
|
-
* - `stdio`: Standard input/output (for local processes)
|
|
91
|
-
* - `http`: HTTP protocol (for remote servers)
|
|
92
|
-
* - `sse`: Server-Sent Events (for streaming)
|
|
93
|
-
*
|
|
94
|
-
* @security MUST validate at MCP configuration boundaries
|
|
95
|
-
*
|
|
96
|
-
* @example
|
|
97
|
-
* ```typescript
|
|
98
|
-
* const config = {
|
|
99
|
-
* transport: TransportEnum.parse('stdio'),
|
|
100
|
-
* command: 'node',
|
|
101
|
-
* args: ['server.js']
|
|
102
|
-
* };
|
|
103
|
-
* ```
|
|
104
|
-
*/
|
|
105
|
-
export declare const TransportEnum: z.ZodEnum<["stdio", "http", "sse"]>;
|
|
106
|
-
/**
|
|
107
|
-
* Extract the TypeScript type from TransportEnum
|
|
108
|
-
*/
|
|
109
|
-
export type Transport = z.infer<typeof TransportEnum>;
|
|
110
|
-
/**
|
|
111
|
-
* Editor Command Enum - Commands for text editor tool
|
|
112
|
-
*
|
|
113
|
-
* Used in:
|
|
114
|
-
* - EditorCommand interface (src/tools/text-editor.ts)
|
|
115
|
-
* - Text editing operations
|
|
116
|
-
* - Command validation
|
|
117
|
-
*
|
|
118
|
-
* Values:
|
|
119
|
-
* - `view`: View file contents (read-only)
|
|
120
|
-
* - `str_replace`: Replace string in file (search and replace)
|
|
121
|
-
* - `create`: Create new file with content
|
|
122
|
-
* - `insert`: Insert content at specific line
|
|
123
|
-
* - `undo_edit`: Undo the last edit operation
|
|
124
|
-
*
|
|
125
|
-
* @security MUST validate at tool execution boundaries
|
|
126
|
-
* @security Command execution should be sandboxed to prevent file system abuse
|
|
127
|
-
*
|
|
128
|
-
* @example
|
|
129
|
-
* ```typescript
|
|
130
|
-
* const command = EditorCommandEnum.parse('str_replace');
|
|
131
|
-
* switch (command) {
|
|
132
|
-
* case 'view':
|
|
133
|
-
* return viewFile(path);
|
|
134
|
-
* case 'str_replace':
|
|
135
|
-
* return replaceString(path, oldStr, newStr);
|
|
136
|
-
* case 'create':
|
|
137
|
-
* return createFile(path, content);
|
|
138
|
-
* case 'insert':
|
|
139
|
-
* return insertContent(path, line, content);
|
|
140
|
-
* case 'undo_edit':
|
|
141
|
-
* return undoLastEdit();
|
|
142
|
-
* }
|
|
143
|
-
* ```
|
|
144
|
-
*/
|
|
145
|
-
export declare const EditorCommandEnum: z.ZodEnum<["view", "str_replace", "create", "insert", "undo_edit"]>;
|
|
146
|
-
/**
|
|
147
|
-
* Extract the TypeScript type from EditorCommandEnum
|
|
148
|
-
*/
|
|
149
|
-
export type EditorCommand = z.infer<typeof EditorCommandEnum>;
|
|
150
|
-
/**
|
|
151
|
-
* EXHAUSTIVENESS CHECKING EXAMPLES
|
|
152
|
-
*
|
|
153
|
-
* Zod enums enable TypeScript exhaustiveness checking via switch statements:
|
|
154
|
-
*
|
|
155
|
-
* ```typescript
|
|
156
|
-
* function handleFinishReason(reason: FinishReason): string {
|
|
157
|
-
* switch (reason) {
|
|
158
|
-
* case 'stop':
|
|
159
|
-
* return 'Completed successfully';
|
|
160
|
-
* case 'length':
|
|
161
|
-
* return 'Reached token limit';
|
|
162
|
-
* case 'tool_calls':
|
|
163
|
-
* return 'Executing tools';
|
|
164
|
-
* case 'content_filter':
|
|
165
|
-
* return 'Content filtered';
|
|
166
|
-
* // TypeScript will error if any case is missing!
|
|
167
|
-
* }
|
|
168
|
-
* }
|
|
169
|
-
* ```
|
|
170
|
-
*
|
|
171
|
-
* VALIDATION AT BOUNDARIES
|
|
172
|
-
*
|
|
173
|
-
* Always validate enum values from external sources:
|
|
174
|
-
*
|
|
175
|
-
* ```typescript
|
|
176
|
-
* // API endpoint
|
|
177
|
-
* app.post('/api/message', (req, res) => {
|
|
178
|
-
* const roleResult = MessageRoleEnum.safeParse(req.body.role);
|
|
179
|
-
* if (!roleResult.success) {
|
|
180
|
-
* return res.status(400).json({
|
|
181
|
-
* error: 'Invalid message role',
|
|
182
|
-
* details: roleResult.error
|
|
183
|
-
* });
|
|
184
|
-
* }
|
|
185
|
-
*
|
|
186
|
-
* // Safe to use - validated
|
|
187
|
-
* const message = createMessage(roleResult.data, req.body.content);
|
|
188
|
-
* });
|
|
189
|
-
* ```
|
|
190
|
-
*
|
|
191
|
-
* MIGRATION FROM STRING LITERALS
|
|
192
|
-
*
|
|
193
|
-
* Before (unsafe):
|
|
194
|
-
* ```typescript
|
|
195
|
-
* type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
|
|
196
|
-
* const role: MessageRole = userInput as MessageRole; // No runtime validation!
|
|
197
|
-
* ```
|
|
198
|
-
*
|
|
199
|
-
* After (safe):
|
|
200
|
-
* ```typescript
|
|
201
|
-
* const roleResult = MessageRoleEnum.safeParse(userInput);
|
|
202
|
-
* if (roleResult.success) {
|
|
203
|
-
* const role: MessageRole = roleResult.data; // Validated!
|
|
204
|
-
* }
|
|
205
|
-
* ```
|
|
206
|
-
*/
|
|
207
|
-
/**
|
|
208
|
-
* BEST PRACTICES SUMMARY
|
|
209
|
-
*
|
|
210
|
-
* 1. **Always validate at boundaries:**
|
|
211
|
-
* - Use `.safeParse()` for user input
|
|
212
|
-
* - Use `.parse()` when you want to throw on invalid input
|
|
213
|
-
*
|
|
214
|
-
* 2. **Use exhaustive switch statements:**
|
|
215
|
-
* - TypeScript will warn if you miss a case
|
|
216
|
-
* - Helps catch bugs when enums are extended
|
|
217
|
-
*
|
|
218
|
-
* 3. **Document enum usage:**
|
|
219
|
-
* - List where each enum is used
|
|
220
|
-
* - Explain what each value means
|
|
221
|
-
* - Note security implications
|
|
222
|
-
*
|
|
223
|
-
* 4. **Never cast to enum types:**
|
|
224
|
-
* - ❌ `const role = userInput as MessageRole`
|
|
225
|
-
* - ✅ `const role = MessageRoleEnum.parse(userInput)`
|
|
226
|
-
*/
|
|
227
|
-
//# sourceMappingURL=enums.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/public/core/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,eAAe,oDAAkD,CAAC;AAE/E;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,gBAAgB,+DAK3B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,aAAa,qCAAmC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,iBAAiB,qEAM5B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG"}
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized Enums for @ax-cli/schemas
|
|
3
|
-
*
|
|
4
|
-
* This file contains all enumeration types used across the ax-cli ecosystem.
|
|
5
|
-
* Using Zod enums provides:
|
|
6
|
-
* - Runtime validation
|
|
7
|
-
* - TypeScript type inference
|
|
8
|
-
* - Exhaustiveness checking
|
|
9
|
-
* - Auto-completion support
|
|
10
|
-
*
|
|
11
|
-
* SECURITY: Always validate enum values at system boundaries (API, file I/O, CLI args).
|
|
12
|
-
*
|
|
13
|
-
* @module enums
|
|
14
|
-
*/
|
|
15
|
-
import { z } from 'zod';
|
|
16
|
-
/**
|
|
17
|
-
* Message Role Enum - Roles for chat messages in AI conversations
|
|
18
|
-
*
|
|
19
|
-
* Used in:
|
|
20
|
-
* - GrokMessageSchema (src/grok/types.ts)
|
|
21
|
-
* - Chat message payloads
|
|
22
|
-
* - Message history tracking
|
|
23
|
-
*
|
|
24
|
-
* @security MUST validate at API boundaries when accepting message objects
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```typescript
|
|
28
|
-
* const roleResult = MessageRoleEnum.safeParse(userInput);
|
|
29
|
-
* if (roleResult.success) {
|
|
30
|
-
* const role = roleResult.data; // 'system' | 'user' | 'assistant' | 'tool'
|
|
31
|
-
* }
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export const MessageRoleEnum = z.enum(['system', 'user', 'assistant', 'tool']);
|
|
35
|
-
/**
|
|
36
|
-
* Finish Reason Enum - Reasons why an AI response completed
|
|
37
|
-
*
|
|
38
|
-
* Used in:
|
|
39
|
-
* - GrokResponseSchema (src/grok/types.ts)
|
|
40
|
-
* - API response tracking
|
|
41
|
-
* - Usage analytics
|
|
42
|
-
*
|
|
43
|
-
* Values:
|
|
44
|
-
* - `stop`: Natural completion (model decided to stop)
|
|
45
|
-
* - `length`: Stopped due to max token limit
|
|
46
|
-
* - `tool_calls`: Stopped to execute tool calls
|
|
47
|
-
* - `content_filter`: Stopped due to content policy violation
|
|
48
|
-
*
|
|
49
|
-
* @security MUST validate at API boundaries
|
|
50
|
-
*
|
|
51
|
-
* @example
|
|
52
|
-
* ```typescript
|
|
53
|
-
* const result = FinishReasonEnum.safeParse(response.finish_reason);
|
|
54
|
-
* if (result.success) {
|
|
55
|
-
* switch (result.data) {
|
|
56
|
-
* case 'stop':
|
|
57
|
-
* // Natural completion
|
|
58
|
-
* break;
|
|
59
|
-
* case 'length':
|
|
60
|
-
* // Truncated response
|
|
61
|
-
* break;
|
|
62
|
-
* case 'tool_calls':
|
|
63
|
-
* // Need to execute tools
|
|
64
|
-
* break;
|
|
65
|
-
* case 'content_filter':
|
|
66
|
-
* // Content policy violation
|
|
67
|
-
* break;
|
|
68
|
-
* }
|
|
69
|
-
* }
|
|
70
|
-
* ```
|
|
71
|
-
*/
|
|
72
|
-
export const FinishReasonEnum = z.enum([
|
|
73
|
-
'stop',
|
|
74
|
-
'length',
|
|
75
|
-
'tool_calls',
|
|
76
|
-
'content_filter',
|
|
77
|
-
]);
|
|
78
|
-
/**
|
|
79
|
-
* Transport Enum - Communication protocols for MCP servers
|
|
80
|
-
*
|
|
81
|
-
* Used in:
|
|
82
|
-
* - MCPServerConfigSchema (src/mcp/config.ts)
|
|
83
|
-
* - MCP server initialization
|
|
84
|
-
* - Transport layer selection
|
|
85
|
-
*
|
|
86
|
-
* Values:
|
|
87
|
-
* - `stdio`: Standard input/output (for local processes)
|
|
88
|
-
* - `http`: HTTP protocol (for remote servers)
|
|
89
|
-
* - `sse`: Server-Sent Events (for streaming)
|
|
90
|
-
*
|
|
91
|
-
* @security MUST validate at MCP configuration boundaries
|
|
92
|
-
*
|
|
93
|
-
* @example
|
|
94
|
-
* ```typescript
|
|
95
|
-
* const config = {
|
|
96
|
-
* transport: TransportEnum.parse('stdio'),
|
|
97
|
-
* command: 'node',
|
|
98
|
-
* args: ['server.js']
|
|
99
|
-
* };
|
|
100
|
-
* ```
|
|
101
|
-
*/
|
|
102
|
-
export const TransportEnum = z.enum(['stdio', 'http', 'sse']);
|
|
103
|
-
/**
|
|
104
|
-
* Editor Command Enum - Commands for text editor tool
|
|
105
|
-
*
|
|
106
|
-
* Used in:
|
|
107
|
-
* - EditorCommand interface (src/tools/text-editor.ts)
|
|
108
|
-
* - Text editing operations
|
|
109
|
-
* - Command validation
|
|
110
|
-
*
|
|
111
|
-
* Values:
|
|
112
|
-
* - `view`: View file contents (read-only)
|
|
113
|
-
* - `str_replace`: Replace string in file (search and replace)
|
|
114
|
-
* - `create`: Create new file with content
|
|
115
|
-
* - `insert`: Insert content at specific line
|
|
116
|
-
* - `undo_edit`: Undo the last edit operation
|
|
117
|
-
*
|
|
118
|
-
* @security MUST validate at tool execution boundaries
|
|
119
|
-
* @security Command execution should be sandboxed to prevent file system abuse
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
* ```typescript
|
|
123
|
-
* const command = EditorCommandEnum.parse('str_replace');
|
|
124
|
-
* switch (command) {
|
|
125
|
-
* case 'view':
|
|
126
|
-
* return viewFile(path);
|
|
127
|
-
* case 'str_replace':
|
|
128
|
-
* return replaceString(path, oldStr, newStr);
|
|
129
|
-
* case 'create':
|
|
130
|
-
* return createFile(path, content);
|
|
131
|
-
* case 'insert':
|
|
132
|
-
* return insertContent(path, line, content);
|
|
133
|
-
* case 'undo_edit':
|
|
134
|
-
* return undoLastEdit();
|
|
135
|
-
* }
|
|
136
|
-
* ```
|
|
137
|
-
*/
|
|
138
|
-
export const EditorCommandEnum = z.enum([
|
|
139
|
-
'view',
|
|
140
|
-
'str_replace',
|
|
141
|
-
'create',
|
|
142
|
-
'insert',
|
|
143
|
-
'undo_edit',
|
|
144
|
-
]);
|
|
145
|
-
/**
|
|
146
|
-
* EXHAUSTIVENESS CHECKING EXAMPLES
|
|
147
|
-
*
|
|
148
|
-
* Zod enums enable TypeScript exhaustiveness checking via switch statements:
|
|
149
|
-
*
|
|
150
|
-
* ```typescript
|
|
151
|
-
* function handleFinishReason(reason: FinishReason): string {
|
|
152
|
-
* switch (reason) {
|
|
153
|
-
* case 'stop':
|
|
154
|
-
* return 'Completed successfully';
|
|
155
|
-
* case 'length':
|
|
156
|
-
* return 'Reached token limit';
|
|
157
|
-
* case 'tool_calls':
|
|
158
|
-
* return 'Executing tools';
|
|
159
|
-
* case 'content_filter':
|
|
160
|
-
* return 'Content filtered';
|
|
161
|
-
* // TypeScript will error if any case is missing!
|
|
162
|
-
* }
|
|
163
|
-
* }
|
|
164
|
-
* ```
|
|
165
|
-
*
|
|
166
|
-
* VALIDATION AT BOUNDARIES
|
|
167
|
-
*
|
|
168
|
-
* Always validate enum values from external sources:
|
|
169
|
-
*
|
|
170
|
-
* ```typescript
|
|
171
|
-
* // API endpoint
|
|
172
|
-
* app.post('/api/message', (req, res) => {
|
|
173
|
-
* const roleResult = MessageRoleEnum.safeParse(req.body.role);
|
|
174
|
-
* if (!roleResult.success) {
|
|
175
|
-
* return res.status(400).json({
|
|
176
|
-
* error: 'Invalid message role',
|
|
177
|
-
* details: roleResult.error
|
|
178
|
-
* });
|
|
179
|
-
* }
|
|
180
|
-
*
|
|
181
|
-
* // Safe to use - validated
|
|
182
|
-
* const message = createMessage(roleResult.data, req.body.content);
|
|
183
|
-
* });
|
|
184
|
-
* ```
|
|
185
|
-
*
|
|
186
|
-
* MIGRATION FROM STRING LITERALS
|
|
187
|
-
*
|
|
188
|
-
* Before (unsafe):
|
|
189
|
-
* ```typescript
|
|
190
|
-
* type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
|
|
191
|
-
* const role: MessageRole = userInput as MessageRole; // No runtime validation!
|
|
192
|
-
* ```
|
|
193
|
-
*
|
|
194
|
-
* After (safe):
|
|
195
|
-
* ```typescript
|
|
196
|
-
* const roleResult = MessageRoleEnum.safeParse(userInput);
|
|
197
|
-
* if (roleResult.success) {
|
|
198
|
-
* const role: MessageRole = roleResult.data; // Validated!
|
|
199
|
-
* }
|
|
200
|
-
* ```
|
|
201
|
-
*/
|
|
202
|
-
/**
|
|
203
|
-
* BEST PRACTICES SUMMARY
|
|
204
|
-
*
|
|
205
|
-
* 1. **Always validate at boundaries:**
|
|
206
|
-
* - Use `.safeParse()` for user input
|
|
207
|
-
* - Use `.parse()` when you want to throw on invalid input
|
|
208
|
-
*
|
|
209
|
-
* 2. **Use exhaustive switch statements:**
|
|
210
|
-
* - TypeScript will warn if you miss a case
|
|
211
|
-
* - Helps catch bugs when enums are extended
|
|
212
|
-
*
|
|
213
|
-
* 3. **Document enum usage:**
|
|
214
|
-
* - List where each enum is used
|
|
215
|
-
* - Explain what each value means
|
|
216
|
-
* - Note security implications
|
|
217
|
-
*
|
|
218
|
-
* 4. **Never cast to enum types:**
|
|
219
|
-
* - ❌ `const role = userInput as MessageRole`
|
|
220
|
-
* - ✅ `const role = MessageRoleEnum.parse(userInput)`
|
|
221
|
-
*/
|
|
222
|
-
//# sourceMappingURL=enums.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/public/core/enums.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AAO/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,gBAAgB;CACjB,CAAC,CAAC;AAOH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAO9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC;IACtC,MAAM;IACN,aAAa;IACb,QAAQ;IACR,QAAQ;IACR,WAAW;CACZ,CAAC,CAAC;AAOH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH;;;;;;;;;;;;;;;;;;;GAmBG"}
|