@defai.digital/ax-cli 3.6.1 → 3.6.2

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 (102) hide show
  1. package/README.md +26 -15
  2. package/config-defaults/settings.yaml +24 -0
  3. package/dist/constants.d.ts +13 -0
  4. package/dist/constants.js +28 -0
  5. package/dist/constants.js.map +1 -1
  6. package/dist/index.js +0 -0
  7. package/dist/schemas/settings-schemas.d.ts +17 -0
  8. package/dist/schemas/settings-schemas.js +15 -0
  9. package/dist/schemas/settings-schemas.js.map +1 -1
  10. package/dist/ui/components/chat-history.d.ts +2 -0
  11. package/dist/ui/components/chat-history.js +32 -81
  12. package/dist/ui/components/chat-history.js.map +1 -1
  13. package/dist/ui/components/chat-interface.js +3 -3
  14. package/dist/ui/components/chat-interface.js.map +1 -1
  15. package/dist/ui/components/status-bar.d.ts +2 -0
  16. package/dist/ui/components/status-bar.js +33 -9
  17. package/dist/ui/components/status-bar.js.map +1 -1
  18. package/dist/ui/components/tool-group-display.d.ts +15 -0
  19. package/dist/ui/components/tool-group-display.js +91 -0
  20. package/dist/ui/components/tool-group-display.js.map +1 -0
  21. package/dist/ui/hooks/use-enhanced-input.js +43 -6
  22. package/dist/ui/hooks/use-enhanced-input.js.map +1 -1
  23. package/dist/ui/hooks/use-input-handler.d.ts +2 -0
  24. package/dist/ui/hooks/use-input-handler.js +13 -7
  25. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  26. package/dist/ui/utils/change-summarizer.d.ts +20 -0
  27. package/dist/ui/utils/change-summarizer.js +193 -0
  28. package/dist/ui/utils/change-summarizer.js.map +1 -0
  29. package/dist/ui/utils/tool-grouper.d.ts +62 -0
  30. package/dist/ui/utils/tool-grouper.js +224 -0
  31. package/dist/ui/utils/tool-grouper.js.map +1 -0
  32. package/dist/utils/config-loader.d.ts +4 -0
  33. package/dist/utils/config-loader.js.map +1 -1
  34. package/dist/utils/paste-utils.js +45 -19
  35. package/dist/utils/paste-utils.js.map +1 -1
  36. package/package.json +2 -2
  37. package/packages/schemas/package.json +1 -1
  38. package/.ax-cli/CUSTOM.md +0 -269
  39. package/.ax-cli/checkpoints/2025-11-20/checkpoint-11e9e0ba-c39d-4fd2-aa77-bc818811c921.json +0 -69
  40. package/.ax-cli/checkpoints/2025-11-20/checkpoint-2b260b98-b418-4c7c-9694-e2b94967e662.json +0 -24
  41. package/.ax-cli/checkpoints/2025-11-20/checkpoint-2dd84869-e62d-46c8-9885-7e45f37f36e2.json +0 -69
  42. package/.ax-cli/checkpoints/2025-11-20/checkpoint-484dc350-353f-4808-9ed1-ebb3cefdab37.json +0 -24
  43. package/.ax-cli/checkpoints/2025-11-20/checkpoint-74a18b87-6172-4215-962b-44bb9f46a662.json +0 -69
  44. package/.ax-cli/checkpoints/2025-11-20/checkpoint-7e03601e-e8ab-4cd7-9841-a74b66adf78f.json +0 -69
  45. package/.ax-cli/checkpoints/2025-11-20/checkpoint-7f9c6562-771f-4fd0-adcf-9e7e9ac34ae8.json +0 -44
  46. package/.ax-cli/checkpoints/2025-11-20/checkpoint-870a5fb9-6e82-4ff2-8ec8-af4c251cc514.json +0 -44
  47. package/.ax-cli/checkpoints/2025-11-20/checkpoint-93946601-0e83-456c-ba47-def9713124dd.json +0 -24
  48. package/.ax-cli/checkpoints/2025-11-20/checkpoint-e1ebe666-4c3a-4367-ba5c-27fe512a9c70.json +0 -24
  49. package/.ax-cli/checkpoints/2025-11-21/checkpoint-15743e7d-430c-4d76-b6fc-955d7a5c250c.json +0 -44
  50. package/.ax-cli/checkpoints/2025-11-21/checkpoint-25cf7679-0b3f-4988-83d7-704548fbba91.json +0 -69
  51. package/.ax-cli/checkpoints/2025-11-21/checkpoint-54aedbac-6db0-464e-8ebb-dbb3979e6dca.json +0 -24
  52. package/.ax-cli/checkpoints/2025-11-21/checkpoint-7658aed8-fe5d-4222-903f-1a7c63717ea7.json +0 -24
  53. package/.ax-cli/checkpoints/2025-11-21/checkpoint-c9c13497-40dc-4294-a327-6a5fc854eaa1.json +0 -69
  54. package/.ax-cli/checkpoints/metadata.json +0 -62
  55. package/.ax-cli/index.json +0 -44
  56. package/.ax-cli/memory.json +0 -62
  57. package/.ax-cli/settings.json +0 -1
  58. package/ax.config.json +0 -333
  59. package/dist/agent/chat-history-manager.d.ts +0 -56
  60. package/dist/agent/chat-history-manager.js +0 -150
  61. package/dist/agent/chat-history-manager.js.map +0 -1
  62. package/dist/agent/tool-manager.d.ts +0 -39
  63. package/dist/agent/tool-manager.js +0 -76
  64. package/dist/agent/tool-manager.js.map +0 -1
  65. package/dist/hooks/use-chat-reducer.d.ts +0 -61
  66. package/dist/hooks/use-chat-reducer.js +0 -118
  67. package/dist/hooks/use-chat-reducer.js.map +0 -1
  68. package/dist/hooks/use-enhanced-input.d.ts +0 -40
  69. package/dist/hooks/use-enhanced-input.js +0 -249
  70. package/dist/hooks/use-enhanced-input.js.map +0 -1
  71. package/dist/hooks/use-input-handler.d.ts +0 -46
  72. package/dist/hooks/use-input-handler.js +0 -1430
  73. package/dist/hooks/use-input-handler.js.map +0 -1
  74. package/dist/hooks/use-input-history.d.ts +0 -9
  75. package/dist/hooks/use-input-history.js +0 -112
  76. package/dist/hooks/use-input-history.js.map +0 -1
  77. package/dist/index.js.bak +0 -664
  78. package/dist/tools/web-search/engines/brave.d.ts +0 -16
  79. package/dist/tools/web-search/engines/brave.js +0 -99
  80. package/dist/tools/web-search/engines/brave.js.map +0 -1
  81. package/dist/tools/web-search/engines/tavily.d.ts +0 -17
  82. package/dist/tools/web-search/engines/tavily.js +0 -73
  83. package/dist/tools/web-search/engines/tavily.js.map +0 -1
  84. package/dist/utils/paste-collapse.d.ts +0 -46
  85. package/dist/utils/paste-collapse.js +0 -77
  86. package/dist/utils/paste-collapse.js.map +0 -1
  87. package/packages/schemas/dist/index.d.ts +0 -14
  88. package/packages/schemas/dist/index.d.ts.map +0 -1
  89. package/packages/schemas/dist/index.js +0 -19
  90. package/packages/schemas/dist/index.js.map +0 -1
  91. package/packages/schemas/dist/public/core/brand-types.d.ts +0 -308
  92. package/packages/schemas/dist/public/core/brand-types.d.ts.map +0 -1
  93. package/packages/schemas/dist/public/core/brand-types.js +0 -243
  94. package/packages/schemas/dist/public/core/brand-types.js.map +0 -1
  95. package/packages/schemas/dist/public/core/enums.d.ts +0 -227
  96. package/packages/schemas/dist/public/core/enums.d.ts.map +0 -1
  97. package/packages/schemas/dist/public/core/enums.js +0 -222
  98. package/packages/schemas/dist/public/core/enums.js.map +0 -1
  99. package/packages/schemas/dist/public/core/id-types.d.ts +0 -286
  100. package/packages/schemas/dist/public/core/id-types.d.ts.map +0 -1
  101. package/packages/schemas/dist/public/core/id-types.js +0 -136
  102. package/packages/schemas/dist/public/core/id-types.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"brand-types.d.ts","sourceRoot":"","sources":["../../../src/public/core/brand-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAEhE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAC3C,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAIvB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAElE;AAED;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE5E;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EACpD,MAAM,EAAE;IAAE,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC;IAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,EACxH,SAAS,EAAE,CAAC;IAGV;;OAEG;;uBAEc,OAAO,KAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;2BAIjB,OAAO,KAAG;YAAE,OAAO,EAAE,IAAI,CAAC;YAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SAAE,GAAG;YAAE,OAAO,EAAE,KAAK,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE;;IASxG;;;OAGG;mBACY,OAAO,KAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAKpC;;OAEG;gBACS,OAAO,KAAG,KAAK,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAK1C;;OAEG;;EAGN;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG"}
@@ -1,243 +0,0 @@
1
- /**
2
- * Brand Types Utilities for @ax-cli/schemas
3
- *
4
- * CRITICAL SECURITY WARNING:
5
- * =========================
6
- * Brand types are COMPILE-TIME ONLY markers. They provide ZERO runtime validation.
7
- *
8
- * **YOU MUST VALIDATE ALL INPUTS AT SYSTEM BOUNDARIES**
9
- *
10
- * Unsafe usage (WILL FAIL IN PRODUCTION):
11
- * ```typescript
12
- * const tenantId = userInput as TenantId; // ❌ NO RUNTIME VALIDATION!
13
- * ```
14
- *
15
- * Safe usage (REQUIRED):
16
- * ```typescript
17
- * const result = TenantId.parse(userInput); // ✅ Validates with Zod
18
- * if (result.success) {
19
- * const tenantId = result.data; // Type-safe AND runtime-safe
20
- * }
21
- * ```
22
- *
23
- * WHEN TO USE BRAND TYPES:
24
- * - Preventing ID mixing at compile time (ApiKeyId vs TenantId)
25
- * - Enforcing domain boundaries in function signatures
26
- * - Type-level documentation of intent
27
- *
28
- * WHEN TO VALIDATE:
29
- * - API boundaries (HTTP requests, MCP inputs)
30
- * - File I/O (reading configs, user settings)
31
- * - Database queries (WHERE clauses with user IDs)
32
- * - Environment variables
33
- * - Command-line arguments
34
- *
35
- * PERFORMANCE:
36
- * Brand types have ZERO runtime cost. They are erased during compilation.
37
- *
38
- * @module brand-types
39
- * @see {@link https://github.com/microsoft/TypeScript/issues/4895|TypeScript Nominal Types}
40
- */
41
- /**
42
- * Creates a branded value.
43
- *
44
- * WARNING: This function performs NO VALIDATION. It is a type-level assertion only.
45
- *
46
- * Use this ONLY in trusted contexts after validation:
47
- * - Inside schema .transform() after Zod validation
48
- * - After database queries that return validated data
49
- * - In test fixtures with known-good values
50
- *
51
- * DO NOT use with user input directly:
52
- * ```typescript
53
- * // ❌ UNSAFE - No validation!
54
- * const userId = brand<string, 'UserId'>(req.body.userId);
55
- *
56
- * // ✅ SAFE - Validated first
57
- * const result = UserIdSchema.safeParse(req.body.userId);
58
- * if (result.success) {
59
- * const userId = result.data; // Already branded by schema
60
- * }
61
- * ```
62
- *
63
- * @template T - The base type
64
- * @template B - The brand identifier
65
- * @param value - The value to brand
66
- * @returns The same value, but with a brand type
67
- *
68
- * @example
69
- * ```typescript
70
- * // Safe usage in tests
71
- * const mockTenantId = brand<string, 'TenantId'>("test-tenant-123");
72
- *
73
- * // Safe usage after validation
74
- * const schema = z.string().uuid().transform(v => brand<string, 'TenantId'>(v));
75
- * const tenantId = schema.parse(userInput); // Validated AND branded
76
- * ```
77
- */
78
- export function brand(value) {
79
- return value;
80
- }
81
- /**
82
- * Type guard to check if a value is already branded with a specific brand.
83
- *
84
- * NOTE: This only works if the value was created using the brand() function.
85
- * It CANNOT detect fake brands created with `as` casts.
86
- *
87
- * @template T - The base type
88
- * @template B - The brand identifier
89
- * @param value - The value to check
90
- * @returns true if the value has the correct brand (compile-time only)
91
- *
92
- * @example
93
- * ```typescript
94
- * const value: string | TenantId = getTenantId();
95
- *
96
- * if (isBranded<string, 'TenantId'>(value)) {
97
- * const tenantId: TenantId = value; // TypeScript knows it's branded
98
- * }
99
- * ```
100
- */
101
- export function isBranded(_value) {
102
- // At runtime, branded types are indistinguishable from their base type
103
- // This function exists only for type narrowing
104
- return true;
105
- }
106
- /**
107
- * Removes the brand from a branded type, returning the base type.
108
- *
109
- * Use this when you need to pass a branded value to a function that
110
- * expects the base type (e.g., logging, serialization).
111
- *
112
- * @template T - The base type
113
- * @template B - The brand identifier
114
- * @param value - The branded value
115
- * @returns The same value, but with the brand removed
116
- *
117
- * @example
118
- * ```typescript
119
- * const tenantId: TenantId = getTenantId();
120
- *
121
- * // Pass to function expecting plain string
122
- * console.log(unbrand(tenantId)); // string, not TenantId
123
- *
124
- * // Serialize to JSON
125
- * const json = JSON.stringify({ id: unbrand(tenantId) });
126
- * ```
127
- */
128
- export function unbrand(value) {
129
- return value;
130
- }
131
- /**
132
- * Creates a type-safe brand factory with validation.
133
- *
134
- * This is the RECOMMENDED way to create brand types with runtime validation.
135
- *
136
- * @template T - The base type
137
- * @template B - The brand identifier
138
- * @param schema - Zod schema for validation
139
- * @param brandName - The brand identifier
140
- * @returns Object with parse, create, and is methods
141
- *
142
- * @example
143
- * ```typescript
144
- * import { z } from 'zod';
145
- *
146
- * const TenantId = createBrandFactory(
147
- * z.string().uuid(),
148
- * 'TenantId'
149
- * );
150
- *
151
- * // Type-safe parsing with validation
152
- * const result = TenantId.parse(userInput);
153
- * if (result.success) {
154
- * const tenantId = result.data; // Brand<string, 'TenantId'>
155
- * }
156
- *
157
- * // Create new ID
158
- * const newId = TenantId.create(); // Generates UUID
159
- *
160
- * // Type guard
161
- * if (TenantId.is(value)) {
162
- * // value is Brand<string, 'TenantId'>
163
- * }
164
- * ```
165
- */
166
- export function createBrandFactory(schema, brandName) {
167
- return {
168
- /**
169
- * The Zod schema with brand transformation.
170
- */
171
- schema: {
172
- parse: (input) => {
173
- const validated = schema.parse(input);
174
- return brand(validated);
175
- },
176
- safeParse: (input) => {
177
- const result = schema.safeParse(input);
178
- if (result.success) {
179
- return { success: true, data: brand(result.data) };
180
- }
181
- return { success: false, error: result.error };
182
- },
183
- },
184
- /**
185
- * Parse and validate input, returning branded value.
186
- * Throws on validation failure.
187
- */
188
- parse: (input) => {
189
- const validated = schema.parse(input);
190
- return brand(validated);
191
- },
192
- /**
193
- * Type guard to check if a value is this brand.
194
- */
195
- is: (value) => {
196
- const result = schema.safeParse(value);
197
- return result.success;
198
- },
199
- /**
200
- * Brand name identifier.
201
- */
202
- brandName,
203
- };
204
- }
205
- /**
206
- * BEST PRACTICES SUMMARY:
207
- * =======================
208
- *
209
- * 1. ALWAYS validate at boundaries:
210
- * - API inputs: Use Zod schemas
211
- * - Database outputs: Use Zod schemas
212
- * - File I/O: Use Zod schemas
213
- * - CLI args: Use Zod schemas
214
- *
215
- * 2. NEVER cast to brand types:
216
- * ❌ const id = userInput as TenantId;
217
- * ✅ const id = TenantIdSchema.parse(userInput);
218
- *
219
- * 3. Use createBrandFactory for all brand types:
220
- * - Provides validation
221
- * - Provides type guards
222
- * - Centralizes brand creation
223
- *
224
- * 4. Document which functions validate:
225
- * ```typescript
226
- * // @validates TenantId - performs Zod validation
227
- * function parseTenantId(input: string): TenantId {
228
- * return TenantIdSchema.parse(input);
229
- * }
230
- *
231
- * // @assumes TenantId - no validation, requires validated input
232
- * function formatTenantId(id: TenantId): string {
233
- * return `tenant:${unbrand(id)}`;
234
- * }
235
- * ```
236
- *
237
- * 5. Test brand type enforcement:
238
- * ```typescript
239
- * // Should fail to compile
240
- * const apiKey: ApiKeyId = getTenantId(); // ❌
241
- * ```
242
- */
243
- //# sourceMappingURL=brand-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"brand-types.js","sourceRoot":"","sources":["../../../src/public/core/brand-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAuDH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,KAAK,CAAsB,KAAQ;IACjD,OAAO,KAAoB,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,SAAS,CACvB,MAAe;IAEf,uEAAuE;IACvE,+CAA+C;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,OAAO,CAAsB,KAAkB;IAC7D,OAAO,KAAU,CAAC;AACpB,CAAC;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAwH,EACxH,SAAY;IAEZ,OAAO;QACL;;WAEG;QACH,MAAM,EAAE;YACN,KAAK,EAAE,CAAC,KAAc,EAAe,EAAE;gBACrC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtC,OAAO,KAAK,CAAO,SAAS,CAAC,CAAC;YAChC,CAAC;YACD,SAAS,EAAE,CAAC,KAAc,EAA6E,EAAE;gBACvG,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAO,MAAM,CAAC,IAAS,CAAC,EAAE,CAAC;gBAChE,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACjD,CAAC;SACF;QAED;;;WAGG;QACH,KAAK,EAAE,CAAC,KAAc,EAAe,EAAE;YACrC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO,KAAK,CAAO,SAAS,CAAC,CAAC;QAChC,CAAC;QAED;;WAEG;QACH,EAAE,EAAE,CAAC,KAAc,EAAwB,EAAE;YAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAED;;WAEG;QACH,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG"}
@@ -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