@defai.digital/ax-cli 3.8.6 → 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.
Files changed (196) hide show
  1. package/README.md +28 -393
  2. package/config-defaults/models.yaml +0 -24
  3. package/config-defaults/settings.yaml +16 -16
  4. package/dist/agent/dependency-resolver.js +22 -1
  5. package/dist/agent/dependency-resolver.js.map +1 -1
  6. package/dist/agent/llm-agent.d.ts +23 -2
  7. package/dist/agent/llm-agent.js +126 -122
  8. package/dist/agent/llm-agent.js.map +1 -1
  9. package/dist/agent/loop-detector.d.ts +70 -0
  10. package/dist/agent/loop-detector.js +339 -0
  11. package/dist/agent/loop-detector.js.map +1 -0
  12. package/dist/agent/progress-tracker.d.ts +94 -0
  13. package/dist/agent/progress-tracker.js +222 -0
  14. package/dist/agent/progress-tracker.js.map +1 -0
  15. package/dist/agent/status-reporter.js +2 -2
  16. package/dist/agent/status-reporter.js.map +1 -1
  17. package/dist/agent/subagent.js +7 -3
  18. package/dist/agent/subagent.js.map +1 -1
  19. package/dist/analyzers/architecture/project-structure-scanner.js +6 -2
  20. package/dist/analyzers/architecture/project-structure-scanner.js.map +1 -1
  21. package/dist/analyzers/git/churn-calculator.js +2 -1
  22. package/dist/analyzers/git/churn-calculator.js.map +1 -1
  23. package/dist/checkpoint/manager.js +18 -4
  24. package/dist/checkpoint/manager.js.map +1 -1
  25. package/dist/checkpoint/storage.d.ts +6 -0
  26. package/dist/checkpoint/storage.js +96 -49
  27. package/dist/checkpoint/storage.js.map +1 -1
  28. package/dist/commands/cache.js +8 -6
  29. package/dist/commands/cache.js.map +1 -1
  30. package/dist/commands/doctor.js +19 -27
  31. package/dist/commands/doctor.js.map +1 -1
  32. package/dist/commands/mcp-migrate.js +6 -5
  33. package/dist/commands/mcp-migrate.js.map +1 -1
  34. package/dist/commands/mcp.js +14 -2
  35. package/dist/commands/mcp.js.map +1 -1
  36. package/dist/commands/models.js +8 -12
  37. package/dist/commands/models.js.map +1 -1
  38. package/dist/commands/plan.js +1 -10
  39. package/dist/commands/plan.js.map +1 -1
  40. package/dist/commands/setup.js +4 -3
  41. package/dist/commands/setup.js.map +1 -1
  42. package/dist/commands/status.js +40 -14
  43. package/dist/commands/status.js.map +1 -1
  44. package/dist/constants.d.ts +12 -0
  45. package/dist/constants.js +16 -4
  46. package/dist/constants.js.map +1 -1
  47. package/dist/hooks/hook-runner.d.ts +138 -0
  48. package/dist/hooks/hook-runner.js +429 -0
  49. package/dist/hooks/hook-runner.js.map +1 -0
  50. package/dist/hooks/index.d.ts +6 -0
  51. package/dist/hooks/index.js +7 -0
  52. package/dist/hooks/index.js.map +1 -0
  53. package/dist/index.js +3 -21
  54. package/dist/index.js.map +1 -1
  55. package/dist/llm/client.d.ts +9 -0
  56. package/dist/llm/client.js +306 -45
  57. package/dist/llm/client.js.map +1 -1
  58. package/dist/llm/tools.js +2 -39
  59. package/dist/llm/tools.js.map +1 -1
  60. package/dist/llm/types.d.ts +1 -47
  61. package/dist/llm/types.js +0 -18
  62. package/dist/llm/types.js.map +1 -1
  63. package/dist/mcp/automatosx-loader.js +2 -1
  64. package/dist/mcp/automatosx-loader.js.map +1 -1
  65. package/dist/mcp/client-v2.d.ts +3 -0
  66. package/dist/mcp/client-v2.js +85 -19
  67. package/dist/mcp/client-v2.js.map +1 -1
  68. package/dist/mcp/config-migrator.js +3 -2
  69. package/dist/mcp/config-migrator.js.map +1 -1
  70. package/dist/mcp/config-v2.d.ts +5 -0
  71. package/dist/mcp/config-v2.js +26 -0
  72. package/dist/mcp/config-v2.js.map +1 -1
  73. package/dist/mcp/error-formatter.js +4 -1
  74. package/dist/mcp/error-formatter.js.map +1 -1
  75. package/dist/mcp/health.js +1 -1
  76. package/dist/mcp/health.js.map +1 -1
  77. package/dist/mcp/reconnection.js +2 -1
  78. package/dist/mcp/reconnection.js.map +1 -1
  79. package/dist/mcp/registry.js +3 -2
  80. package/dist/mcp/registry.js.map +1 -1
  81. package/dist/mcp/resources.js +2 -1
  82. package/dist/mcp/resources.js.map +1 -1
  83. package/dist/mcp/validation.js +9 -0
  84. package/dist/mcp/validation.js.map +1 -1
  85. package/dist/memory/context-store.js +4 -6
  86. package/dist/memory/context-store.js.map +1 -1
  87. package/dist/memory/types.d.ts +2 -0
  88. package/dist/memory/types.js +4 -1
  89. package/dist/memory/types.js.map +1 -1
  90. package/dist/permissions/index.d.ts +6 -0
  91. package/dist/permissions/index.js +7 -0
  92. package/dist/permissions/index.js.map +1 -0
  93. package/dist/permissions/permission-manager.d.ts +145 -0
  94. package/dist/permissions/permission-manager.js +401 -0
  95. package/dist/permissions/permission-manager.js.map +1 -0
  96. package/dist/planner/plan-storage.js +3 -2
  97. package/dist/planner/plan-storage.js.map +1 -1
  98. package/dist/planner/task-planner.js +2 -1
  99. package/dist/planner/task-planner.js.map +1 -1
  100. package/dist/planner/types.d.ts +6 -6
  101. package/dist/schemas/settings-schemas.d.ts +0 -14
  102. package/dist/schemas/settings-schemas.js +0 -10
  103. package/dist/schemas/settings-schemas.js.map +1 -1
  104. package/dist/schemas/tool-schemas.d.ts +2 -2
  105. package/dist/schemas/yaml-schemas.d.ts +15 -0
  106. package/dist/schemas/yaml-schemas.js +3 -0
  107. package/dist/schemas/yaml-schemas.js.map +1 -1
  108. package/dist/tools/bash.js +35 -10
  109. package/dist/tools/bash.js.map +1 -1
  110. package/dist/tools/confirmation-tool.js +3 -2
  111. package/dist/tools/confirmation-tool.js.map +1 -1
  112. package/dist/tools/registry.d.ts +1 -1
  113. package/dist/tools/registry.js +2 -1
  114. package/dist/tools/registry.js.map +1 -1
  115. package/dist/tools/search.js +12 -13
  116. package/dist/tools/search.js.map +1 -1
  117. package/dist/tools/text-editor.d.ts +46 -0
  118. package/dist/tools/text-editor.js +455 -11
  119. package/dist/tools/text-editor.js.map +1 -1
  120. package/dist/tools/todo-tool.js +5 -4
  121. package/dist/tools/todo-tool.js.map +1 -1
  122. package/dist/ui/components/chat-input.js +10 -1
  123. package/dist/ui/components/chat-input.js.map +1 -1
  124. package/dist/ui/components/chat-interface.js +1 -0
  125. package/dist/ui/components/chat-interface.js.map +1 -1
  126. package/dist/ui/components/tool-group-display.js +0 -6
  127. package/dist/ui/components/tool-group-display.js.map +1 -1
  128. package/dist/ui/hooks/use-input-handler.js +7 -6
  129. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  130. package/dist/ui/hooks/use-input-history.js +21 -13
  131. package/dist/ui/hooks/use-input-history.js.map +1 -1
  132. package/dist/ui/utils/tool-grouper.d.ts +1 -2
  133. package/dist/ui/utils/tool-grouper.js +4 -15
  134. package/dist/ui/utils/tool-grouper.js.map +1 -1
  135. package/dist/utils/api-error.d.ts +61 -0
  136. package/dist/utils/api-error.js +176 -0
  137. package/dist/utils/api-error.js.map +1 -0
  138. package/dist/utils/audit-logger.js +2 -1
  139. package/dist/utils/audit-logger.js.map +1 -1
  140. package/dist/utils/auto-accept-logger.js +3 -3
  141. package/dist/utils/auto-accept-logger.js.map +1 -1
  142. package/dist/utils/config-loader.d.ts +3 -0
  143. package/dist/utils/config-loader.js +27 -2
  144. package/dist/utils/config-loader.js.map +1 -1
  145. package/dist/utils/encryption.js +2 -1
  146. package/dist/utils/encryption.js.map +1 -1
  147. package/dist/utils/file-cache.js +4 -2
  148. package/dist/utils/file-cache.js.map +1 -1
  149. package/dist/utils/history-migration.js +5 -4
  150. package/dist/utils/history-migration.js.map +1 -1
  151. package/dist/utils/onboarding-manager.js +2 -1
  152. package/dist/utils/onboarding-manager.js.map +1 -1
  153. package/dist/utils/path-helpers.d.ts +8 -0
  154. package/dist/utils/path-helpers.js +35 -0
  155. package/dist/utils/path-helpers.js.map +1 -0
  156. package/dist/utils/path-security.js +3 -2
  157. package/dist/utils/path-security.js.map +1 -1
  158. package/dist/utils/retry-helper.d.ts +61 -0
  159. package/dist/utils/retry-helper.js +206 -0
  160. package/dist/utils/retry-helper.js.map +1 -0
  161. package/dist/utils/settings-manager.d.ts +1 -21
  162. package/dist/utils/settings-manager.js +2 -82
  163. package/dist/utils/settings-manager.js.map +1 -1
  164. package/dist/utils/streaming-analyzer.d.ts +2 -13
  165. package/dist/utils/streaming-analyzer.js +3 -25
  166. package/dist/utils/streaming-analyzer.js.map +1 -1
  167. package/dist/utils/token-counter.d.ts +13 -1
  168. package/dist/utils/token-counter.js +31 -6
  169. package/dist/utils/token-counter.js.map +1 -1
  170. package/package.json +3 -2
  171. package/packages/schemas/README.md +1 -1
  172. package/packages/schemas/package.json +1 -1
  173. package/dist/tools/web-search/cache.d.ts +0 -62
  174. package/dist/tools/web-search/cache.js +0 -105
  175. package/dist/tools/web-search/cache.js.map +0 -1
  176. package/dist/tools/web-search/engines/crates.d.ts +0 -19
  177. package/dist/tools/web-search/engines/crates.js +0 -87
  178. package/dist/tools/web-search/engines/crates.js.map +0 -1
  179. package/dist/tools/web-search/engines/npm.d.ts +0 -18
  180. package/dist/tools/web-search/engines/npm.js +0 -86
  181. package/dist/tools/web-search/engines/npm.js.map +0 -1
  182. package/dist/tools/web-search/engines/pypi.d.ts +0 -18
  183. package/dist/tools/web-search/engines/pypi.js +0 -75
  184. package/dist/tools/web-search/engines/pypi.js.map +0 -1
  185. package/dist/tools/web-search/index.d.ts +0 -11
  186. package/dist/tools/web-search/index.js +0 -11
  187. package/dist/tools/web-search/index.js.map +0 -1
  188. package/dist/tools/web-search/router.d.ts +0 -34
  189. package/dist/tools/web-search/router.js +0 -245
  190. package/dist/tools/web-search/router.js.map +0 -1
  191. package/dist/tools/web-search/types.d.ts +0 -45
  192. package/dist/tools/web-search/types.js +0 -6
  193. package/dist/tools/web-search/types.js.map +0 -1
  194. package/dist/tools/web-search/web-search-tool.d.ts +0 -51
  195. package/dist/tools/web-search/web-search-tool.js +0 -246
  196. package/dist/tools/web-search/web-search-tool.js.map +0 -1
@@ -8,6 +8,7 @@
8
8
  * Impact: Better UX, perceived 2-5x faster
9
9
  */
10
10
  import { EventEmitter } from 'events';
11
+ import { formatDuration } from '../ui/utils/tool-grouper.js';
11
12
  /**
12
13
  * Streaming Analyzer
13
14
  *
@@ -189,31 +190,8 @@ export function createProgressBar(progress, width = 40) {
189
190
  const empty = ' '.repeat(emptyWidth);
190
191
  return `[${filled}${empty}] ${progress.percentage.toFixed(1)}%`;
191
192
  }
192
- /**
193
- * Helper function to format duration
194
- *
195
- * @param ms - Duration in milliseconds
196
- * @returns Formatted duration string
197
- *
198
- * @example
199
- * ```typescript
200
- * formatDuration(1500); // "1.5s"
201
- * formatDuration(65000); // "1m 5s"
202
- * ```
203
- */
204
- export function formatDuration(ms) {
205
- if (ms < 1000) {
206
- return `${ms.toFixed(0)}ms`;
207
- }
208
- else if (ms < 60000) {
209
- return `${(ms / 1000).toFixed(1)}s`;
210
- }
211
- else {
212
- const minutes = Math.floor(ms / 60000);
213
- const seconds = Math.round((ms % 60000) / 1000);
214
- return `${minutes}m ${seconds}s`;
215
- }
216
- }
193
+ // Re-export formatDuration for backwards compatibility
194
+ export { formatDuration };
217
195
  /**
218
196
  * Helper function to format summary
219
197
  *
@@ -1 +1 @@
1
- {"version":3,"file":"streaming-analyzer.js","sourceRoot":"","sources":["../../src/utils/streaming-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAsEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,iBAA+B,SAAQ,YAAY;IACtD,OAAO,GAA4B,EAAE,CAAC;IACtC,SAAS,GAAW,CAAC,CAAC;IACtB,SAAS,GAAW,CAAC,CAAC;IACtB,KAAK,GAAW,CAAC,CAAC;IAE1B;;;;;;OAMG;IACH,KAAK,CAAC,OAAO,CACX,KAAe,EACf,QAAsC;QAEtC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,KAAe,EACf,QAAsC,EACtC,cAAsB,CAAC;QAEvB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QAE1B,oCAAoC;QACpC,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QACzB,MAAM,SAAS,GAAuB,IAAI,GAAG,EAAE,CAAC;QAEhD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC9C,6CAA6C;YAC7C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,GAAG,WAAW,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;gBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAEjD,sDAAsD;gBACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;oBACnC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5B,CAAC,CAAC,CAAC;gBAEH,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YAED,oCAAoC;YACpC,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9C,MAAM,sBAAsB,GAAG,cAAc,GAAG,SAAS,CAAC;QAE1D,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU;YACV,sBAAsB,EAAE,sBAAsB,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS;SACxF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CACvB,IAAY,EACZ,QAAsC;QAEtC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,MAA6B,CAAC;QAElC,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,MAAM,GAAG;gBACP,IAAI;gBACJ,MAAM,EAAE,cAAc;gBACtB,QAAQ;gBACR,MAAM,EAAE,KAAK,EAAE,2BAA2B;aAC3C,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,MAAM,GAAG;gBACP,IAAI;gBACJ,KAAK,EAAE,KAAc;gBACrB,QAAQ;gBACR,MAAM,EAAE,KAAK;aACd,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,KAAc,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,aAAa;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QAChE,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;YAC5E,CAAC,CAAC,CAAC,CAAC;QACN,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC1C,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;YACnC,CAAC,CAAC,CAAC,CAAC;QAEN,MAAM,OAAO,GAAuB;YAClC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY;YACZ,UAAU;YACV,WAAW;YACX,aAAa;YACb,WAAW;YACX,YAAY;SACb,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA0B,EAAE,QAAgB,EAAE;IAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,CAAC;IACvC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,IAAI,MAAM,GAAG,KAAK,KAAK,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AAClE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACd,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9B,CAAC;SAAM,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAChD,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAI,OAA2B;IAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,oBAAoB,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,oBAAoB,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE3E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"streaming-analyzer.js","sourceRoot":"","sources":["../../src/utils/streaming-analyzer.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export declare class TokenCounter {
4
4
  private cache;
5
5
  private fingerprintToHashCache;
6
6
  private model;
7
+ private disposed;
7
8
  constructor(model?: string);
8
9
  /**
9
10
  * Create quick fingerprint to avoid redundant hashing
@@ -41,11 +42,22 @@ export declare class TokenCounter {
41
42
  maxSize: number;
42
43
  ttl?: number;
43
44
  };
45
+ /**
46
+ * Whether this instance has been disposed
47
+ */
48
+ isDisposed(): boolean;
44
49
  }
45
50
  /**
46
51
  * Format token count for display (e.g., 1.2k for 1200)
52
+ * @param count - The token count to format
53
+ * @param options - Formatting options
54
+ * @param options.suffix - Whether to add " tokens" suffix (default: false)
55
+ * @param options.uppercase - Whether to use uppercase K/M (default: false)
47
56
  */
48
- export declare function formatTokenCount(count: number): string;
57
+ export declare function formatTokenCount(count: number, options?: {
58
+ suffix?: boolean;
59
+ uppercase?: boolean;
60
+ }): string;
49
61
  /**
50
62
  * Get or create a singleton token counter for the specified model
51
63
  * Reuses encoder instances to avoid expensive tiktoken initialization
@@ -7,6 +7,7 @@ export class TokenCounter {
7
7
  cache;
8
8
  fingerprintToHashCache = new Map();
9
9
  model; // CACHE FIX: Track model for cache key prefix
10
+ disposed = false; // Prevent use-after-dispose when singleton is reused
10
11
  constructor(model = TOKEN_CONFIG.DEFAULT_MODEL) {
11
12
  this.model = model;
12
13
  try {
@@ -74,6 +75,9 @@ export class TokenCounter {
74
75
  * Count tokens in a string with LRU caching for performance
75
76
  */
76
77
  countTokens(text) {
78
+ if (this.disposed) {
79
+ throw new Error('TokenCounter has been disposed');
80
+ }
77
81
  // CRITICAL FIX: Early return for empty strings without caching
78
82
  // Prevents cache pollution where all empty strings share same cache key
79
83
  if (!text)
@@ -97,6 +101,9 @@ export class TokenCounter {
97
101
  * Count tokens in messages array (for chat completions)
98
102
  */
99
103
  countMessageTokens(messages) {
104
+ if (this.disposed) {
105
+ throw new Error('TokenCounter has been disposed');
106
+ }
100
107
  let totalTokens = 0;
101
108
  for (const message of messages) {
102
109
  // Every message follows <|start|>{role/name}\n{content}<|end|>\n
@@ -139,9 +146,12 @@ export class TokenCounter {
139
146
  * Clean up resources
140
147
  */
141
148
  dispose() {
149
+ if (this.disposed)
150
+ return;
142
151
  this.cache.clear();
143
152
  this.fingerprintToHashCache.clear();
144
153
  this.encoder.free();
154
+ this.disposed = true;
145
155
  }
146
156
  /**
147
157
  * Get cache statistics
@@ -149,25 +159,40 @@ export class TokenCounter {
149
159
  getCacheStats() {
150
160
  return this.cache.stats();
151
161
  }
162
+ /**
163
+ * Whether this instance has been disposed
164
+ */
165
+ isDisposed() {
166
+ return this.disposed;
167
+ }
152
168
  }
153
169
  /**
154
170
  * Format token count for display (e.g., 1.2k for 1200)
171
+ * @param count - The token count to format
172
+ * @param options - Formatting options
173
+ * @param options.suffix - Whether to add " tokens" suffix (default: false)
174
+ * @param options.uppercase - Whether to use uppercase K/M (default: false)
155
175
  */
156
- export function formatTokenCount(count) {
176
+ export function formatTokenCount(count, options) {
157
177
  // CRITICAL FIX: Handle edge cases (NaN, Infinity, negative numbers)
158
178
  // Prevents potential issues with invalid token counts
159
179
  if (!Number.isFinite(count) || count < 0) {
160
- return '0';
180
+ return options?.suffix ? '0 tokens' : '0';
161
181
  }
182
+ const suffix = options?.suffix ? ' tokens' : '';
183
+ const kChar = options?.uppercase ? 'K' : 'k';
184
+ const mChar = options?.uppercase ? 'M' : 'm';
162
185
  if (count <= 999) {
163
- return Math.floor(count).toString();
186
+ return `${Math.floor(count)}${suffix}`;
164
187
  }
165
188
  if (count < 1_000_000) {
166
189
  const k = count / 1000;
167
- return k % 1 === 0 ? `${Math.floor(k)}k` : `${k.toFixed(1)}k`;
190
+ const formatted = k % 1 === 0 ? `${Math.floor(k)}${kChar}` : `${k.toFixed(1)}${kChar}`;
191
+ return `${formatted}${suffix}`;
168
192
  }
169
193
  const m = count / 1_000_000;
170
- return m % 1 === 0 ? `${Math.floor(m)}m` : `${m.toFixed(1)}m`;
194
+ const formatted = m % 1 === 0 ? `${Math.floor(m)}${mChar}` : `${m.toFixed(1)}${mChar}`;
195
+ return `${formatted}${suffix}`;
171
196
  }
172
197
  // Singleton instances keyed by model
173
198
  const tokenCounterInstances = new Map();
@@ -181,7 +206,7 @@ const tokenCounterInstances = new Map();
181
206
  export function getTokenCounter(model) {
182
207
  const key = model || TOKEN_CONFIG.DEFAULT_MODEL;
183
208
  let instance = tokenCounterInstances.get(key);
184
- if (!instance) {
209
+ if (!instance || instance.isDisposed()) {
185
210
  instance = new TokenCounter(key);
186
211
  tokenCounterInstances.set(key, instance);
187
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../src/utils/token-counter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../src/utils/token-counter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defai.digital/ax-cli",
3
- "version": "3.8.6",
3
+ "version": "3.8.8",
4
4
  "sdkVersion": "1.2.0",
5
5
  "description": "Enterprise-Class AI Command Line Interface - Primary support for GLM (General Language Model) with multi-provider AI orchestration powered by AutomatosX.",
6
6
  "type": "module",
@@ -42,6 +42,7 @@
42
42
  "build:schemas": "cd packages/schemas && npm run build",
43
43
  "dev": "tsx src/index.ts",
44
44
  "start": "node dist/index.js",
45
+ "pretest": "npm run build:schemas",
45
46
  "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
46
47
  "typecheck": "tsc --noEmit",
47
48
  "test": "vitest run",
@@ -72,7 +73,7 @@
72
73
  "author": "DEFAI Digital <https://defai.digital>",
73
74
  "license": "MIT",
74
75
  "dependencies": {
75
- "@ax-cli/schemas": "npm:@defai.digital/ax-cli-schemas@^1.0.0",
76
+ "@ax-cli/schemas": "workspace:*",
76
77
  "@clack/prompts": "^0.11.0",
77
78
  "@modelcontextprotocol/sdk": "^1.22.0",
78
79
  "axios": "^1.7.0",
@@ -362,7 +362,7 @@ packages/schemas/
362
362
 
363
363
  ## Version
364
364
 
365
- Current version: 0.1.0
365
+ Current version: 1.0.0
366
366
 
367
367
  ## License
368
368
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "@defai.digital/ax-cli-schemas",
2
+ "name": "@ax-cli/schemas",
3
3
  "version": "1.0.0",
4
4
  "description": "Single Source of Truth (SSOT) type system for ax-cli - Zod schemas, brand types, and OpenAPI generation",
5
5
  "type": "module",
@@ -1,62 +0,0 @@
1
- /**
2
- * Search Cache
3
- * In-memory cache for web search results
4
- */
5
- import type { WebSearchResult } from "./types.js";
6
- export interface CacheEntry {
7
- query: string;
8
- results: WebSearchResult[];
9
- timestamp: number;
10
- ttl: number;
11
- }
12
- export declare class SearchCache {
13
- private cache;
14
- private readonly DEFAULT_TTL;
15
- private readonly MAX_KEYS;
16
- constructor(ttl?: number, maxKeys?: number);
17
- /**
18
- * Generate cache key from query
19
- */
20
- private getCacheKey;
21
- /**
22
- * Get cached results for a query
23
- */
24
- get(query: string): WebSearchResult[] | null;
25
- /**
26
- * Cache search results for a query
27
- */
28
- set(query: string, results: WebSearchResult[], ttl?: number): void;
29
- /**
30
- * Check if query has cached results
31
- */
32
- has(query: string): boolean;
33
- /**
34
- * Clear specific query from cache
35
- */
36
- delete(query: string): void;
37
- /**
38
- * Clear all cached results
39
- */
40
- clear(): void;
41
- /**
42
- * Get cache statistics
43
- */
44
- getStats(): {
45
- keys: number;
46
- hits: number;
47
- misses: number;
48
- hitRate: number;
49
- };
50
- /**
51
- * Get all cached queries (for debugging)
52
- */
53
- getCachedQueries(): string[];
54
- /**
55
- * Get cache entry with metadata
56
- */
57
- getEntry(query: string): CacheEntry | null;
58
- /**
59
- * Get TTL for a cached query
60
- */
61
- getTTL(query: string): number | undefined;
62
- }
@@ -1,105 +0,0 @@
1
- /**
2
- * Search Cache
3
- * In-memory cache for web search results
4
- */
5
- import NodeCache from "node-cache";
6
- export class SearchCache {
7
- cache;
8
- DEFAULT_TTL = 300; // 5 minutes in seconds
9
- MAX_KEYS = 500; // Maximum cache entries
10
- constructor(ttl, maxKeys) {
11
- this.cache = new NodeCache({
12
- stdTTL: ttl || this.DEFAULT_TTL,
13
- checkperiod: 60, // Check for expired entries every 60 seconds
14
- maxKeys: maxKeys || this.MAX_KEYS,
15
- useClones: false, // Better performance, but watch for mutations
16
- });
17
- }
18
- /**
19
- * Generate cache key from query
20
- */
21
- getCacheKey(query) {
22
- return `search:${query.toLowerCase().trim()}`;
23
- }
24
- /**
25
- * Get cached results for a query
26
- */
27
- get(query) {
28
- const key = this.getCacheKey(query);
29
- const entry = this.cache.get(key);
30
- if (!entry) {
31
- return null;
32
- }
33
- // Return the cached results
34
- return entry.results;
35
- }
36
- /**
37
- * Cache search results for a query
38
- */
39
- set(query, results, ttl) {
40
- const key = this.getCacheKey(query);
41
- const effectiveTtl = ttl || this.DEFAULT_TTL;
42
- const entry = {
43
- query,
44
- results,
45
- timestamp: Date.now(),
46
- ttl: effectiveTtl,
47
- };
48
- this.cache.set(key, entry, effectiveTtl);
49
- }
50
- /**
51
- * Check if query has cached results
52
- */
53
- has(query) {
54
- const key = this.getCacheKey(query);
55
- return this.cache.has(key);
56
- }
57
- /**
58
- * Clear specific query from cache
59
- */
60
- delete(query) {
61
- const key = this.getCacheKey(query);
62
- this.cache.del(key);
63
- }
64
- /**
65
- * Clear all cached results
66
- */
67
- clear() {
68
- this.cache.flushAll();
69
- }
70
- /**
71
- * Get cache statistics
72
- */
73
- getStats() {
74
- const stats = this.cache.getStats();
75
- const total = stats.hits + stats.misses;
76
- const hitRate = total > 0 ? stats.hits / total : 0;
77
- return {
78
- keys: stats.keys,
79
- hits: stats.hits,
80
- misses: stats.misses,
81
- hitRate: Math.round(hitRate * 100) / 100,
82
- };
83
- }
84
- /**
85
- * Get all cached queries (for debugging)
86
- */
87
- getCachedQueries() {
88
- return this.cache.keys().map((key) => key.replace("search:", ""));
89
- }
90
- /**
91
- * Get cache entry with metadata
92
- */
93
- getEntry(query) {
94
- const key = this.getCacheKey(query);
95
- return this.cache.get(key) || null;
96
- }
97
- /**
98
- * Get TTL for a cached query
99
- */
100
- getTTL(query) {
101
- const key = this.getCacheKey(query);
102
- return this.cache.getTtl(key);
103
- }
104
- }
105
- //# sourceMappingURL=cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/tools/web-search/cache.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- /**
2
- * crates.io (Rust Crates) Search Engine
3
- * Free, unlimited search for Rust crates
4
- * No API key required
5
- */
6
- import type { SearchEngine, WebSearchResult, SearchOptions } from "../types.js";
7
- export declare class CratesSearch implements SearchEngine {
8
- readonly name = "crates.io";
9
- private baseUrl;
10
- private timeout;
11
- /**
12
- * Always available - no API key required
13
- */
14
- isAvailable(): boolean;
15
- search(query: string, options?: SearchOptions): Promise<WebSearchResult[]>;
16
- private formatResults;
17
- private createSnippet;
18
- private calculateScore;
19
- }
@@ -1,87 +0,0 @@
1
- /**
2
- * crates.io (Rust Crates) Search Engine
3
- * Free, unlimited search for Rust crates
4
- * No API key required
5
- */
6
- import axios from "axios";
7
- export class CratesSearch {
8
- name = "crates.io";
9
- baseUrl = "https://crates.io/api/v1/crates";
10
- timeout = 10000; // 10 second timeout
11
- /**
12
- * Always available - no API key required
13
- */
14
- isAvailable() {
15
- return true;
16
- }
17
- async search(query, options) {
18
- try {
19
- const params = new URLSearchParams({
20
- q: query,
21
- per_page: Math.min(options?.maxResults || 5, 20).toString(),
22
- });
23
- const response = await axios.get(`${this.baseUrl}?${params.toString()}`, {
24
- timeout: options?.timeout || this.timeout,
25
- headers: {
26
- "User-Agent": "ax-cli",
27
- Accept: "application/json",
28
- },
29
- });
30
- return this.formatResults(response.data);
31
- }
32
- catch (error) {
33
- if (axios.isAxiosError(error)) {
34
- if (error.code === "ECONNABORTED") {
35
- throw new Error("crates.io search timeout");
36
- }
37
- throw new Error(`crates.io error: ${error.response?.data?.errors?.[0]?.detail || error.message}`);
38
- }
39
- throw error;
40
- }
41
- }
42
- formatResults(response) {
43
- return response.crates.map((crate) => ({
44
- title: crate.name,
45
- url: `https://crates.io/crates/${crate.name}`,
46
- snippet: this.createSnippet(crate),
47
- source: this.name,
48
- relevanceScore: this.calculateScore(crate),
49
- metadata: {
50
- version: crate.newest_version,
51
- downloads: crate.downloads,
52
- recentDownloads: crate.recent_downloads,
53
- documentation: crate.documentation,
54
- homepage: crate.homepage,
55
- repository: crate.repository,
56
- },
57
- }));
58
- }
59
- createSnippet(crate) {
60
- const parts = [];
61
- if (crate.description) {
62
- parts.push(crate.description);
63
- }
64
- parts.push(`v${crate.newest_version}`);
65
- if (crate.downloads > 1000000) {
66
- parts.push(`${(crate.downloads / 1000000).toFixed(1)}M downloads`);
67
- }
68
- else if (crate.downloads > 1000) {
69
- parts.push(`${(crate.downloads / 1000).toFixed(1)}K downloads`);
70
- }
71
- const indicators = [];
72
- if (crate.downloads > 1000000)
73
- indicators.push("very popular");
74
- else if (crate.downloads > 100000)
75
- indicators.push("popular");
76
- if (indicators.length > 0) {
77
- parts.push(`(${indicators.join(", ")})`);
78
- }
79
- return parts.join(" • ");
80
- }
81
- calculateScore(crate) {
82
- // Score based on downloads (logarithmic scale)
83
- const downloadScore = Math.min(Math.log10(crate.downloads + 1) * 10, 100);
84
- return downloadScore;
85
- }
86
- }
87
- //# sourceMappingURL=crates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crates.js","sourceRoot":"","sources":["../../../../src/tools/web-search/engines/crates.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- /**
2
- * npm Registry Search Engine
3
- * Free, unlimited search for npm packages
4
- * No API key required
5
- */
6
- import type { SearchEngine, WebSearchResult, SearchOptions } from "../types.js";
7
- export declare class NpmSearch implements SearchEngine {
8
- readonly name = "npm";
9
- private baseUrl;
10
- private timeout;
11
- /**
12
- * Always available - no API key required
13
- */
14
- isAvailable(): boolean;
15
- search(query: string, options?: SearchOptions): Promise<WebSearchResult[]>;
16
- private formatResults;
17
- private createSnippet;
18
- }
@@ -1,86 +0,0 @@
1
- /**
2
- * npm Registry Search Engine
3
- * Free, unlimited search for npm packages
4
- * No API key required
5
- */
6
- import axios from "axios";
7
- export class NpmSearch {
8
- name = "npm";
9
- baseUrl = "https://registry.npmjs.org/-/v1/search";
10
- timeout = 10000; // 10 second timeout
11
- /**
12
- * Always available - no API key required
13
- */
14
- isAvailable() {
15
- return true;
16
- }
17
- async search(query, options) {
18
- try {
19
- const params = new URLSearchParams({
20
- text: query,
21
- size: Math.min(options?.maxResults || 5, 20).toString(),
22
- });
23
- const response = await axios.get(`${this.baseUrl}?${params.toString()}`, {
24
- timeout: options?.timeout || this.timeout,
25
- headers: {
26
- Accept: "application/json",
27
- },
28
- });
29
- return this.formatResults(response.data);
30
- }
31
- catch (error) {
32
- if (axios.isAxiosError(error)) {
33
- if (error.code === "ECONNABORTED") {
34
- throw new Error("npm search timeout");
35
- }
36
- throw new Error(`npm registry error: ${error.response?.data?.error || error.message}`);
37
- }
38
- throw error;
39
- }
40
- }
41
- formatResults(response) {
42
- return response.objects.map((pkg) => ({
43
- title: pkg.package.name,
44
- url: pkg.package.links.npm || `https://www.npmjs.com/package/${pkg.package.name}`,
45
- snippet: this.createSnippet(pkg),
46
- source: this.name,
47
- relevanceScore: pkg.score.final * 100, // Convert 0-1 to 0-100
48
- publishedDate: pkg.package.date,
49
- metadata: {
50
- version: pkg.package.version,
51
- author: pkg.package.author?.name || pkg.package.publisher.username,
52
- quality: pkg.score.detail.quality,
53
- popularity: pkg.score.detail.popularity,
54
- maintenance: pkg.score.detail.maintenance,
55
- homepage: pkg.package.links.homepage,
56
- repository: pkg.package.links.repository,
57
- },
58
- }));
59
- }
60
- createSnippet(pkg) {
61
- const parts = [];
62
- if (pkg.package.description) {
63
- parts.push(pkg.package.description);
64
- }
65
- parts.push(`v${pkg.package.version}`);
66
- if (pkg.package.author?.name) {
67
- parts.push(`by ${pkg.package.author.name}`);
68
- }
69
- // Add quality indicators
70
- const quality = pkg.score.detail.quality;
71
- const popularity = pkg.score.detail.popularity;
72
- const maintenance = pkg.score.detail.maintenance;
73
- const indicators = [];
74
- if (quality > 0.7)
75
- indicators.push("high quality");
76
- if (popularity > 0.7)
77
- indicators.push("popular");
78
- if (maintenance > 0.7)
79
- indicators.push("well-maintained");
80
- if (indicators.length > 0) {
81
- parts.push(`(${indicators.join(", ")})`);
82
- }
83
- return parts.join(" • ");
84
- }
85
- }
86
- //# sourceMappingURL=npm.js.map