aura-code 0.6.3 → 0.10.1

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 (265) hide show
  1. package/README.md +47 -164
  2. package/dist/agent/affect.d.ts +13 -0
  3. package/dist/agent/affect.js +34 -0
  4. package/dist/agent/affect.js.map +1 -0
  5. package/dist/agent/compactor.d.ts +27 -4
  6. package/dist/agent/compactor.js +185 -54
  7. package/dist/agent/compactor.js.map +1 -1
  8. package/dist/agent/confess.d.ts +35 -0
  9. package/dist/agent/confess.js +296 -0
  10. package/dist/agent/confess.js.map +1 -0
  11. package/dist/agent/context.d.ts +0 -4
  12. package/dist/agent/context.js +0 -38
  13. package/dist/agent/context.js.map +1 -1
  14. package/dist/agent/domain-expertise.d.ts +22 -0
  15. package/dist/agent/domain-expertise.js +110 -0
  16. package/dist/agent/domain-expertise.js.map +1 -0
  17. package/dist/agent/executive-queue.d.ts +26 -0
  18. package/dist/agent/executive-queue.js +50 -0
  19. package/dist/agent/executive-queue.js.map +1 -0
  20. package/dist/agent/generational-flush.d.ts +28 -0
  21. package/dist/agent/generational-flush.js +48 -0
  22. package/dist/agent/generational-flush.js.map +1 -0
  23. package/dist/agent/loop-profile.d.ts +50 -0
  24. package/dist/agent/loop-profile.js +88 -0
  25. package/dist/agent/loop-profile.js.map +1 -0
  26. package/dist/agent/loop.d.ts +14 -5
  27. package/dist/agent/loop.js +167 -39
  28. package/dist/agent/loop.js.map +1 -1
  29. package/dist/agent/memory-consolidate.d.ts +14 -0
  30. package/dist/agent/memory-consolidate.js +141 -0
  31. package/dist/agent/memory-consolidate.js.map +1 -0
  32. package/dist/agent/mixture.d.ts +33 -0
  33. package/dist/agent/mixture.js +138 -0
  34. package/dist/agent/mixture.js.map +1 -0
  35. package/dist/agent/spawner.js +2 -2
  36. package/dist/agent/spawner.js.map +1 -1
  37. package/dist/agent/system-prompt.d.ts +1 -1
  38. package/dist/agent/system-prompt.js +50 -22
  39. package/dist/agent/system-prompt.js.map +1 -1
  40. package/dist/agent/unified-memory.d.ts +15 -0
  41. package/dist/agent/unified-memory.js +164 -0
  42. package/dist/agent/unified-memory.js.map +1 -0
  43. package/dist/checkpoints/engine.d.ts +44 -0
  44. package/dist/checkpoints/engine.js +324 -0
  45. package/dist/checkpoints/engine.js.map +1 -0
  46. package/dist/cli/command-palette.d.ts +26 -0
  47. package/dist/cli/command-palette.js +133 -0
  48. package/dist/cli/command-palette.js.map +1 -0
  49. package/dist/cli/context-health.d.ts +51 -0
  50. package/dist/cli/context-health.js +187 -0
  51. package/dist/cli/context-health.js.map +1 -0
  52. package/dist/cli/diamond.d.ts +67 -0
  53. package/dist/cli/diamond.js +222 -12
  54. package/dist/cli/diamond.js.map +1 -1
  55. package/dist/cli/dic.d.ts +2 -0
  56. package/dist/cli/dic.js +106 -0
  57. package/dist/cli/dic.js.map +1 -0
  58. package/dist/cli/diff-view.d.ts +18 -0
  59. package/dist/cli/diff-view.js +114 -0
  60. package/dist/cli/diff-view.js.map +1 -0
  61. package/dist/cli/display.d.ts +18 -4
  62. package/dist/cli/display.js +74 -151
  63. package/dist/cli/display.js.map +1 -1
  64. package/dist/cli/help-data.d.ts +7 -0
  65. package/dist/cli/help-data.js +80 -0
  66. package/dist/cli/help-data.js.map +1 -0
  67. package/dist/cli/index.js +1002 -852
  68. package/dist/cli/index.js.map +1 -1
  69. package/dist/cli/markdown.d.ts +5 -0
  70. package/dist/cli/markdown.js +128 -0
  71. package/dist/cli/markdown.js.map +1 -0
  72. package/dist/cli/model-select.d.ts +39 -0
  73. package/dist/cli/model-select.js +65 -0
  74. package/dist/cli/model-select.js.map +1 -0
  75. package/dist/cli/tui.d.ts +34 -0
  76. package/dist/cli/tui.js +1176 -0
  77. package/dist/cli/tui.js.map +1 -0
  78. package/dist/config/defaults.d.ts +6 -17
  79. package/dist/config/defaults.js +25 -46
  80. package/dist/config/defaults.js.map +1 -1
  81. package/dist/config/project-config.d.ts +2 -6
  82. package/dist/config/project-config.js +2 -2
  83. package/dist/config/project-config.js.map +1 -1
  84. package/dist/doctor/checks.d.ts +18 -0
  85. package/dist/doctor/checks.js +524 -0
  86. package/dist/doctor/checks.js.map +1 -0
  87. package/dist/doctor/index.d.ts +4 -0
  88. package/dist/doctor/index.js +229 -0
  89. package/dist/doctor/index.js.map +1 -0
  90. package/dist/doctor/repair.d.ts +19 -0
  91. package/dist/doctor/repair.js +126 -0
  92. package/dist/doctor/repair.js.map +1 -0
  93. package/dist/doctor/types.d.ts +38 -0
  94. package/dist/doctor/types.js +10 -0
  95. package/dist/doctor/types.js.map +1 -0
  96. package/dist/dream/dream.d.ts +79 -59
  97. package/dist/dream/dream.js +324 -144
  98. package/dist/dream/dream.js.map +1 -1
  99. package/dist/dream/episode.d.ts +17 -0
  100. package/dist/dream/episode.js +116 -0
  101. package/dist/dream/episode.js.map +1 -0
  102. package/dist/kanban/engine.d.ts +26 -0
  103. package/dist/kanban/engine.js +208 -0
  104. package/dist/kanban/engine.js.map +1 -0
  105. package/dist/kanban/types.d.ts +19 -0
  106. package/dist/kanban/types.js +9 -1
  107. package/dist/kanban/types.js.map +1 -1
  108. package/dist/machina/render-html.js +4 -2
  109. package/dist/machina/render-html.js.map +1 -1
  110. package/dist/machina/render-terminal.js +11 -4
  111. package/dist/machina/render-terminal.js.map +1 -1
  112. package/dist/machina/repair.d.ts +23 -0
  113. package/dist/machina/repair.js +98 -0
  114. package/dist/machina/repair.js.map +1 -0
  115. package/dist/machina/spec.js +12 -12
  116. package/dist/machina/spec.js.map +1 -1
  117. package/dist/machina/verify.d.ts +13 -1
  118. package/dist/machina/verify.js +12 -2
  119. package/dist/machina/verify.js.map +1 -1
  120. package/dist/mining/extract.d.ts +34 -0
  121. package/dist/mining/extract.js +229 -0
  122. package/dist/mining/extract.js.map +1 -0
  123. package/dist/mining/refine.d.ts +28 -0
  124. package/dist/mining/refine.js +256 -0
  125. package/dist/mining/refine.js.map +1 -0
  126. package/dist/perception/extractor.js +5 -3
  127. package/dist/perception/extractor.js.map +1 -1
  128. package/dist/perception/graph-store.d.ts +0 -11
  129. package/dist/perception/graph-store.js +0 -33
  130. package/dist/perception/graph-store.js.map +1 -1
  131. package/dist/perception/index.d.ts +1 -1
  132. package/dist/perception/index.js +1 -2
  133. package/dist/perception/index.js.map +1 -1
  134. package/dist/plugins/commands.d.ts +38 -0
  135. package/dist/plugins/commands.js +134 -0
  136. package/dist/plugins/commands.js.map +1 -0
  137. package/dist/plugins/frontmatter.d.ts +14 -0
  138. package/dist/plugins/frontmatter.js +78 -0
  139. package/dist/plugins/frontmatter.js.map +1 -0
  140. package/dist/plugins/hooks.d.ts +12 -0
  141. package/dist/plugins/hooks.js +148 -0
  142. package/dist/plugins/hooks.js.map +1 -0
  143. package/dist/plugins/loader.d.ts +7 -0
  144. package/dist/plugins/loader.js +255 -0
  145. package/dist/plugins/loader.js.map +1 -0
  146. package/dist/plugins/market.d.ts +23 -0
  147. package/dist/plugins/market.js +281 -0
  148. package/dist/plugins/market.js.map +1 -0
  149. package/dist/plugins/types.d.ts +90 -0
  150. package/dist/plugins/types.js +20 -0
  151. package/dist/plugins/types.js.map +1 -0
  152. package/dist/providers/anthropic-oauth-draft.d.ts +119 -0
  153. package/dist/providers/anthropic-oauth-draft.js +414 -0
  154. package/dist/providers/anthropic-oauth-draft.js.map +1 -0
  155. package/dist/providers/anthropic.d.ts +4 -1
  156. package/dist/providers/anthropic.js +35 -7
  157. package/dist/providers/anthropic.js.map +1 -1
  158. package/dist/providers/factory.d.ts +43 -19
  159. package/dist/providers/factory.js +183 -129
  160. package/dist/providers/factory.js.map +1 -1
  161. package/dist/providers/google.js +9 -22
  162. package/dist/providers/google.js.map +1 -1
  163. package/dist/providers/live-models.d.ts +23 -0
  164. package/dist/providers/live-models.js +145 -0
  165. package/dist/providers/live-models.js.map +1 -0
  166. package/dist/providers/openai-compatible.d.ts +1 -12
  167. package/dist/providers/openai-compatible.js +71 -108
  168. package/dist/providers/openai-compatible.js.map +1 -1
  169. package/dist/providers/resilient-factory.js +1 -1
  170. package/dist/providers/resilient-factory.js.map +1 -1
  171. package/dist/repl/queue.d.ts +22 -0
  172. package/dist/repl/queue.js +165 -0
  173. package/dist/repl/queue.js.map +1 -0
  174. package/dist/repl/side-channel.d.ts +23 -0
  175. package/dist/repl/side-channel.js +63 -0
  176. package/dist/repl/side-channel.js.map +1 -0
  177. package/dist/research/council.d.ts +2 -0
  178. package/dist/research/council.js +29 -4
  179. package/dist/research/council.js.map +1 -1
  180. package/dist/ruby/alternator.d.ts +11 -30
  181. package/dist/ruby/alternator.js +59 -38
  182. package/dist/ruby/alternator.js.map +1 -1
  183. package/dist/ruby/episode-capture.d.ts +0 -10
  184. package/dist/ruby/episode-capture.js +0 -33
  185. package/dist/ruby/episode-capture.js.map +1 -1
  186. package/dist/ruby/types.js +1 -1
  187. package/dist/ruby/types.js.map +1 -1
  188. package/dist/safety/path-jail.d.ts +17 -0
  189. package/dist/safety/path-jail.js +100 -0
  190. package/dist/safety/path-jail.js.map +1 -0
  191. package/dist/safety/permissions.d.ts +12 -21
  192. package/dist/safety/permissions.js +81 -216
  193. package/dist/safety/permissions.js.map +1 -1
  194. package/dist/safety/ssrf.d.ts +29 -0
  195. package/dist/safety/ssrf.js +185 -0
  196. package/dist/safety/ssrf.js.map +1 -0
  197. package/dist/server/index.js +64 -10
  198. package/dist/server/index.js.map +1 -1
  199. package/dist/setup/first-run.d.ts +0 -24
  200. package/dist/setup/first-run.js +10 -344
  201. package/dist/setup/first-run.js.map +1 -1
  202. package/dist/setup/key-store.d.ts +12 -0
  203. package/dist/setup/key-store.js +108 -0
  204. package/dist/setup/key-store.js.map +1 -0
  205. package/dist/setup/provider-registry.js +31 -18
  206. package/dist/setup/provider-registry.js.map +1 -1
  207. package/dist/setup/provider-test.d.ts +7 -0
  208. package/dist/setup/provider-test.js +73 -10
  209. package/dist/setup/provider-test.js.map +1 -1
  210. package/dist/setup/provider-wizard.d.ts +4 -1
  211. package/dist/setup/provider-wizard.js +92 -26
  212. package/dist/setup/provider-wizard.js.map +1 -1
  213. package/dist/setup/xiaomi.d.ts +1 -1
  214. package/dist/setup/xiaomi.js +3 -3
  215. package/dist/setup/xiaomi.js.map +1 -1
  216. package/dist/tools/browser.js +14 -10
  217. package/dist/tools/browser.js.map +1 -1
  218. package/dist/tools/clipboard.js +7 -1
  219. package/dist/tools/clipboard.js.map +1 -1
  220. package/dist/tools/dictate.d.ts +60 -0
  221. package/dist/tools/dictate.js +983 -0
  222. package/dist/tools/dictate.js.map +1 -0
  223. package/dist/tools/dictate_patched.js +1057 -0
  224. package/dist/tools/edit-file.js +10 -2
  225. package/dist/tools/edit-file.js.map +1 -1
  226. package/dist/tools/http-request.js +14 -4
  227. package/dist/tools/http-request.js.map +1 -1
  228. package/dist/tools/image-read.js +34 -2
  229. package/dist/tools/image-read.js.map +1 -1
  230. package/dist/tools/index.d.ts +16 -1
  231. package/dist/tools/index.js +59 -8
  232. package/dist/tools/index.js.map +1 -1
  233. package/dist/tools/mcp.js +12 -0
  234. package/dist/tools/mcp.js.map +1 -1
  235. package/dist/tools/read-file.js +10 -14
  236. package/dist/tools/read-file.js.map +1 -1
  237. package/dist/tools/telegram-audio-policy.d.ts +30 -0
  238. package/dist/tools/telegram-audio-policy.js +49 -0
  239. package/dist/tools/telegram-audio-policy.js.map +1 -0
  240. package/dist/tools/telegram-bot.js +1136 -537
  241. package/dist/tools/telegram-bot.js.map +1 -1
  242. package/dist/tools/telegram-voice.d.ts +18 -5
  243. package/dist/tools/telegram-voice.js +54 -12
  244. package/dist/tools/telegram-voice.js.map +1 -1
  245. package/dist/tools/telegram.d.ts +3 -3
  246. package/dist/tools/telegram.js +5 -84
  247. package/dist/tools/telegram.js.map +1 -1
  248. package/dist/tools/tools.d.ts +2 -14
  249. package/dist/tools/tools.js +79 -144
  250. package/dist/tools/tools.js.map +1 -1
  251. package/dist/tools/web-fetch.js +39 -7
  252. package/dist/tools/web-fetch.js.map +1 -1
  253. package/dist/tools/web-search.d.ts +0 -20
  254. package/dist/tools/web-search.js +40 -137
  255. package/dist/tools/web-search.js.map +1 -1
  256. package/dist/util/errors.js +1 -15
  257. package/dist/util/errors.js.map +1 -1
  258. package/dist/util/json-repair.d.ts +11 -0
  259. package/dist/util/json-repair.js +31 -0
  260. package/dist/util/json-repair.js.map +1 -0
  261. package/dist/util/rate-limiter.js +2 -8
  262. package/dist/util/rate-limiter.js.map +1 -1
  263. package/dist/viz/index.js +793 -792
  264. package/dist/viz/index.js.map +1 -1
  265. package/package.json +12 -32
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadKeysIntoEnv = loadKeysIntoEnv;
37
+ exports.saveKey = saveKey;
38
+ exports.listKeyNames = listKeyNames;
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ const os = __importStar(require("os"));
42
+ // ─────────────────────────────────────────────────────────────────────────────
43
+ // Persistent API-key store — ~/.aura/keys.json
44
+ //
45
+ // Aura resolves keys from process.env (see util/env.ts), which means a key only
46
+ // survives if it's exported in a shell rc / environment.d file. That's fragile:
47
+ // a key set with :apikey vanished on exit, and keys scattered across .bashrc vs
48
+ // environment.d meant some sessions couldn't see them (the recurring "type the
49
+ // key every time" pain). This store fixes it: keys live in one file, loaded
50
+ // into process.env at startup so every run and every provider sees them.
51
+ //
52
+ // Precedence: a key already present in the real environment WINS (so a shell
53
+ // export or a per-run `KEY=… aura` override is never clobbered by the store).
54
+ // ─────────────────────────────────────────────────────────────────────────────
55
+ function keyStorePath() {
56
+ return path.join(os.homedir(), '.aura', 'keys.json');
57
+ }
58
+ function readStore() {
59
+ try {
60
+ const p = keyStorePath();
61
+ if (!fs.existsSync(p))
62
+ return {};
63
+ const parsed = JSON.parse(fs.readFileSync(p, 'utf8'));
64
+ return parsed && typeof parsed === 'object' ? parsed : {};
65
+ }
66
+ catch {
67
+ return {};
68
+ }
69
+ }
70
+ /**
71
+ * Merge stored keys into process.env WITHOUT overriding anything already set
72
+ * in the real environment. Call once at startup, before any provider is built.
73
+ */
74
+ function loadKeysIntoEnv() {
75
+ const store = readStore();
76
+ for (const [name, value] of Object.entries(store)) {
77
+ if (!value || !String(value).trim())
78
+ continue;
79
+ const existing = process.env[name];
80
+ if (existing && existing.trim())
81
+ continue; // real env wins
82
+ process.env[name] = String(value);
83
+ }
84
+ }
85
+ /**
86
+ * Persist a key to the store AND set it live in this process. Written with 0600
87
+ * perms (secrets). Returns the file path.
88
+ */
89
+ function saveKey(name, value) {
90
+ const store = readStore();
91
+ store[name] = value;
92
+ const p = keyStorePath();
93
+ fs.mkdirSync(path.dirname(p), { recursive: true });
94
+ const tmp = `${p}.tmp`;
95
+ fs.writeFileSync(tmp, JSON.stringify(store, null, 2), { mode: 0o600 });
96
+ fs.renameSync(tmp, p);
97
+ try {
98
+ fs.chmodSync(p, 0o600);
99
+ }
100
+ catch { /* best effort */ }
101
+ process.env[name] = value; // live immediately
102
+ return p;
103
+ }
104
+ /** Names of keys currently in the store (values never returned/logged). */
105
+ function listKeyNames() {
106
+ return Object.keys(readStore());
107
+ }
108
+ //# sourceMappingURL=key-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-store.js","sourceRoot":"","sources":["../../src/setup/key-store.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCA,0CAQC;AAMD,0BAWC;AAGD,oCAEC;AArED,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,yEAAyE;AACzE,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;AAEhF,SAAS,YAAY;IACnB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACvD,CAAC;AAID,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;QACzB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QACtD,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe;IAC7B,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;YAAE,SAAS;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;YAAE,SAAS,CAAC,gBAAgB;QAC3D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,IAAY,EAAE,KAAa;IACjD,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACpB,MAAM,CAAC,GAAG,YAAY,EAAE,CAAC;IACzB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACvB,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC;QAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,mBAAmB;IAC9C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,2EAA2E;AAC3E,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAClC,CAAC"}
@@ -24,8 +24,8 @@ exports.PROVIDER_REGISTRY = [
24
24
  envKey: 'DEEPSEEK_API_KEY',
25
25
  signupUrl: 'https://platform.deepseek.com/api_keys',
26
26
  models: [
27
- { id: 'deepseek-v4-flash', label: 'DeepSeek V4 Flash', speed: 'Fast', contextWindow: 1000000 },
28
- { id: 'deepseek-v4-pro', label: 'DeepSeek V4 Pro', speed: 'Powerful', contextWindow: 1000000 },
27
+ { id: 'deepseek-v4-flash', label: 'DeepSeek V4 Flash', speed: 'Fast', contextWindow: 1_000_000 },
28
+ { id: 'deepseek-v4-pro', label: 'DeepSeek V4 Pro', speed: 'Powerful', contextWindow: 1_000_000 },
29
29
  ],
30
30
  },
31
31
  {
@@ -34,8 +34,8 @@ exports.PROVIDER_REGISTRY = [
34
34
  envKey: 'ANTHROPIC_API_KEY',
35
35
  signupUrl: 'https://console.anthropic.com/settings/keys',
36
36
  models: [
37
- { id: 'claude-sonnet-4-5-20251001', label: 'Claude Sonnet 4.5', speed: 'Fast', contextWindow: 200000 },
38
- { id: 'claude-opus-4-5-20251001', label: 'Claude Opus 4.5', speed: 'Powerful', contextWindow: 200000 },
37
+ { id: 'claude-sonnet-4-5-20251001', label: 'Claude Sonnet 4.5', speed: 'Fast', contextWindow: 200_000 },
38
+ { id: 'claude-opus-4-5-20251001', label: 'Claude Opus 4.5', speed: 'Powerful', contextWindow: 200_000 },
39
39
  ],
40
40
  },
41
41
  {
@@ -44,9 +44,9 @@ exports.PROVIDER_REGISTRY = [
44
44
  envKey: 'OPENAI_API_KEY',
45
45
  signupUrl: 'https://platform.openai.com/api-keys',
46
46
  models: [
47
- { id: 'gpt-4o', label: 'GPT-4o', speed: 'Fast', contextWindow: 128000 },
48
- { id: 'gpt-4o-mini', label: 'GPT-4o Mini', speed: 'Fast', contextWindow: 128000 },
49
- { id: 'o1', label: 'o1', speed: 'Reasoning', contextWindow: 200000 },
47
+ { id: 'gpt-4o', label: 'GPT-4o', speed: 'Fast', contextWindow: 128_000 },
48
+ { id: 'gpt-4o-mini', label: 'GPT-4o Mini', speed: 'Fast', contextWindow: 128_000 },
49
+ { id: 'o1', label: 'o1', speed: 'Reasoning', contextWindow: 200_000 },
50
50
  ],
51
51
  },
52
52
  {
@@ -55,8 +55,8 @@ exports.PROVIDER_REGISTRY = [
55
55
  envKey: 'GOOGLE_API_KEY',
56
56
  signupUrl: 'https://aistudio.google.com/apikey',
57
57
  models: [
58
- { id: 'gemini-2.5-flash', label: 'Gemini 2.5 Flash', speed: 'Fast', contextWindow: 1000000 },
59
- { id: 'gemini-2.5-pro', label: 'Gemini 2.5 Pro', speed: 'Powerful', contextWindow: 1000000 },
58
+ { id: 'gemini-2.5-flash', label: 'Gemini 2.5 Flash', speed: 'Fast', contextWindow: 1_000_000 },
59
+ { id: 'gemini-2.5-pro', label: 'Gemini 2.5 Pro', speed: 'Powerful', contextWindow: 1_000_000 },
60
60
  ],
61
61
  },
62
62
  {
@@ -75,7 +75,7 @@ exports.PROVIDER_REGISTRY = [
75
75
  envKey: 'OPENROUTER_API_KEY',
76
76
  signupUrl: 'https://openrouter.ai/keys',
77
77
  models: [
78
- { id: 'auto', label: 'Auto (best available)', speed: 'Auto', contextWindow: 128000 },
78
+ { id: 'auto', label: 'Auto (best available)', speed: 'Auto', contextWindow: 128_000 },
79
79
  ],
80
80
  },
81
81
  {
@@ -84,7 +84,7 @@ exports.PROVIDER_REGISTRY = [
84
84
  envKey: 'XAI_API_KEY',
85
85
  signupUrl: 'https://console.x.ai',
86
86
  models: [
87
- { id: 'grok-2', label: 'Grok 2', speed: 'Powerful', contextWindow: 131072 },
87
+ { id: 'grok-2', label: 'Grok 2', speed: 'Powerful', contextWindow: 131_072 },
88
88
  ],
89
89
  },
90
90
  {
@@ -93,12 +93,12 @@ exports.PROVIDER_REGISTRY = [
93
93
  envKey: 'OPENCODE_API_KEY',
94
94
  signupUrl: 'https://opencode.ai',
95
95
  models: [
96
- { id: 'opencode/gpt-5-nano', label: 'GPT-5 Nano (free)', speed: 'Fast · free', contextWindow: 128000 },
97
- { id: 'opencode/big-pickle', label: 'Big Pickle (free)', speed: 'Powerful · free', contextWindow: 128000 },
98
- { id: 'opencode/mimo-v2.5-free', label: 'MiMo V2.5 (free)', speed: 'Fast · free', contextWindow: 128000 },
99
- { id: 'opencode/minimax-m2.5-free', label: 'MiniMax M2.5 (free)', speed: 'Reasoning · free', contextWindow: 128000 },
100
- { id: 'opencode/nemotron-3-super-free', label: 'Nemotron 3 Super (free)', speed: 'Fast · free', contextWindow: 128000 },
101
- { id: 'opencode/ling-2.6-flash-free', label: 'Ling 2.6 Flash (free)', speed: 'Fast · free', contextWindow: 128000 },
96
+ { id: 'opencode/gpt-5-nano', label: 'GPT-5 Nano (free)', speed: 'Fast · free', contextWindow: 128_000 },
97
+ { id: 'opencode/big-pickle', label: 'Big Pickle (free)', speed: 'Powerful · free', contextWindow: 128_000 },
98
+ { id: 'opencode/mimo-v2.5-free', label: 'MiMo V2.5 (free)', speed: 'Fast · free', contextWindow: 128_000 },
99
+ { id: 'opencode/minimax-m2.5-free', label: 'MiniMax M2.5 (free)', speed: 'Reasoning · free', contextWindow: 128_000 },
100
+ { id: 'opencode/nemotron-3-super-free', label: 'Nemotron 3 Super (free)', speed: 'Fast · free', contextWindow: 128_000 },
101
+ { id: 'opencode/ling-2.6-flash-free', label: 'Ling 2.6 Flash (free)', speed: 'Fast · free', contextWindow: 128_000 },
102
102
  ],
103
103
  },
104
104
  {
@@ -107,7 +107,20 @@ exports.PROVIDER_REGISTRY = [
107
107
  envKey: 'NVIDIA_API_KEY',
108
108
  signupUrl: 'https://build.nvidia.com',
109
109
  models: [
110
- { id: 'nvidia/llama-3.1-nemotron-70b-instruct', label: 'Nemotron 70B', speed: 'Powerful', contextWindow: 131072 },
110
+ { id: 'nvidia/llama-3.1-nemotron-70b-instruct', label: 'Nemotron 70B', speed: 'Powerful', contextWindow: 131_072 },
111
+ ],
112
+ },
113
+ {
114
+ name: 'GLM (Zhipu)',
115
+ // General endpoint as default; the wizard swaps in the Coding Plan
116
+ // endpoint when the user picks that plan.
117
+ baseUrl: 'https://api.z.ai/api/paas/v4',
118
+ envKey: 'ZHIPU_API_KEY',
119
+ signupUrl: 'https://z.ai',
120
+ models: [
121
+ { id: 'glm-5.2', label: 'GLM-5.2', speed: 'Powerful · 1M context', contextWindow: 1_000_000 },
122
+ { id: 'glm-5.1', label: 'GLM-5.1', speed: 'Powerful · agentic', contextWindow: 200_000 },
123
+ { id: 'glm-5', label: 'GLM-5', speed: 'Powerful · 744B MoE', contextWindow: 200_000 },
111
124
  ],
112
125
  },
113
126
  {
@@ -1 +1 @@
1
- {"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../src/setup/provider-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../../src/setup/provider-registry.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,13 @@ export interface TestResult {
8
8
  ok: boolean;
9
9
  error?: string;
10
10
  }
11
+ /**
12
+ * Normalize a user-entered base URL: trim whitespace, drop trailing slashes,
13
+ * and strip a pasted endpoint path (/chat/completions, /completions,
14
+ * /v1/messages) — users often paste the full endpoint URL from provider docs,
15
+ * which would otherwise produce e.g. .../chat/completions/chat/completions.
16
+ */
17
+ export declare function normalizeBaseUrl(raw: string): string;
11
18
  /**
12
19
  * Test a provider connection by sending a minimal chat completion request.
13
20
  * Times out after 10 seconds.
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.normalizeBaseUrl = normalizeBaseUrl;
36
37
  exports.testProviderConnection = testProviderConnection;
37
38
  /**
38
39
  * Provider connection tester.
@@ -46,15 +47,35 @@ exports.testProviderConnection = testProviderConnection;
46
47
  const https = __importStar(require("https"));
47
48
  const http = __importStar(require("http"));
48
49
  const url_1 = require("url");
50
+ /**
51
+ * Normalize a user-entered base URL: trim whitespace, drop trailing slashes,
52
+ * and strip a pasted endpoint path (/chat/completions, /completions,
53
+ * /v1/messages) — users often paste the full endpoint URL from provider docs,
54
+ * which would otherwise produce e.g. .../chat/completions/chat/completions.
55
+ */
56
+ function normalizeBaseUrl(raw) {
57
+ let url = raw.trim().replace(/\/+$/, '');
58
+ url = url.replace(/\/chat\/completions$/, '');
59
+ url = url.replace(/\/v1\/messages$/, '/v1');
60
+ url = url.replace(/\/+$/, '');
61
+ return url;
62
+ }
49
63
  /**
50
64
  * Strip routing/vendor prefixes that Aura adds to model IDs for internal
51
65
  * routing (e.g. "opencode/big-pickle" → "big-pickle", "ollama/llama3.2" → "llama3.2").
52
66
  * These prefixes must not be forwarded to the actual API.
67
+ *
68
+ * NOT applied to Custom endpoints — there the model ID is the user's exact
69
+ * string and any prefix may be genuinely part of the remote model name
70
+ * (e.g. OpenRouter's "qwen/qwen3-coder:free").
53
71
  */
54
72
  function stripModelPrefix(model) {
55
73
  // opencode/ or zen/ prefix (OpenCode Zen gateway)
56
74
  if (/^(opencode|zen)\//.test(model))
57
75
  return model.replace(/^(opencode|zen)\//, '');
76
+ // zhipu/ or zhipu-coding/ prefix (Zhipu Z.ai — endpoint routing only)
77
+ if (/^zhipu(-coding)?\//.test(model))
78
+ return model.replace(/^zhipu(-coding)?\//, '');
58
79
  // openrouter/vendor/model → just model (last segment)
59
80
  if (model.startsWith('openrouter/')) {
60
81
  const parts = model.split('/');
@@ -66,6 +87,9 @@ function stripModelPrefix(model) {
66
87
  // xai/model
67
88
  if (model.startsWith('xai/'))
68
89
  return model.replace('xai/', '');
90
+ // xiaomi/model, mimo/model (factory accepts both prefixes)
91
+ if (/^(xiaomi|mimo)\//.test(model))
92
+ return model.replace(/^(xiaomi|mimo)\//, '');
69
93
  return model;
70
94
  }
71
95
  /**
@@ -76,20 +100,23 @@ async function testProviderConnection(config) {
76
100
  const isOllama = config.provider === 'Ollama (local, free)';
77
101
  const isAnthropic = config.provider === 'Anthropic (Claude)';
78
102
  const isGoogle = config.provider === 'Google (Gemini)';
103
+ const isCustom = config.provider === 'Custom endpoint';
104
+ const normalized = { ...config, baseUrl: normalizeBaseUrl(config.baseUrl) };
79
105
  // ── Ollama: just check if the server is reachable ──────────────────────────
80
106
  if (isOllama) {
81
- return testOllamaConnection(config.baseUrl);
107
+ return testOllamaConnection(normalized.baseUrl);
82
108
  }
83
109
  // ── Google: uses a different API format ────────────────────────────────────
84
110
  if (isGoogle) {
85
- return testGoogleConnection(config);
111
+ return testGoogleConnection(normalized);
86
112
  }
87
113
  // ── Anthropic: uses x-api-key header and different body format ─────────────
88
114
  if (isAnthropic) {
89
- return testAnthropicConnection(config);
115
+ return testAnthropicConnection(normalized);
90
116
  }
91
117
  // ── All others: OpenAI-compatible chat/completions ─────────────────────────
92
- return testOpenAICompatibleConnection(config);
118
+ // Custom endpoints send the model ID verbatim — no prefix stripping.
119
+ return testOpenAICompatibleConnection(normalized, { stripPrefix: !isCustom });
93
120
  }
94
121
  /**
95
122
  * Check if Ollama is running by fetching /api/tags.
@@ -126,12 +153,13 @@ async function testGoogleConnection(config) {
126
153
  const url = new url_1.URL(`${config.baseUrl}/models/${config.model}:generateContent?key=${config.apiKey}`);
127
154
  const body = JSON.stringify({
128
155
  contents: [{ parts: [{ text: "Say 'ok' and nothing else" }] }],
129
- generationConfig: { maxOutputTokens: 10 },
156
+ generationConfig: { maxOutputTokens: 64 },
130
157
  });
131
158
  return makeRequest(url, {
132
159
  method: 'POST',
133
160
  headers: { 'Content-Type': 'application/json' },
134
161
  body,
162
+ expectField: 'candidates',
135
163
  });
136
164
  }
137
165
  /**
@@ -141,7 +169,7 @@ async function testAnthropicConnection(config) {
141
169
  const url = new url_1.URL(`${config.baseUrl}/v1/messages`);
142
170
  const body = JSON.stringify({
143
171
  model: stripModelPrefix(config.model),
144
- max_tokens: 10,
172
+ max_tokens: 64,
145
173
  messages: [{ role: 'user', content: "Say 'ok' and nothing else" }],
146
174
  });
147
175
  return makeRequest(url, {
@@ -152,16 +180,19 @@ async function testAnthropicConnection(config) {
152
180
  'anthropic-version': '2023-06-01',
153
181
  },
154
182
  body,
183
+ expectField: 'content',
155
184
  });
156
185
  }
157
186
  /**
158
187
  * Test OpenAI-compatible connection using chat/completions.
159
188
  */
160
- async function testOpenAICompatibleConnection(config) {
189
+ async function testOpenAICompatibleConnection(config, opts = { stripPrefix: true }) {
161
190
  const url = new url_1.URL(`${config.baseUrl}/chat/completions`);
162
191
  const body = JSON.stringify({
163
- model: stripModelPrefix(config.model),
164
- max_tokens: 10,
192
+ model: opts.stripPrefix ? stripModelPrefix(config.model) : config.model,
193
+ // 64 tokens: reasoning models (GLM, MiMo Pro, o-series) burn small budgets
194
+ // on hidden thinking; 10 used to come back as an empty "length" response.
195
+ max_tokens: 64,
165
196
  messages: [{ role: 'user', content: "Say 'ok' and nothing else" }],
166
197
  });
167
198
  return makeRequest(url, {
@@ -171,6 +202,7 @@ async function testOpenAICompatibleConnection(config) {
171
202
  'Authorization': `Bearer ${config.apiKey ?? ''}`,
172
203
  },
173
204
  body,
205
+ expectField: 'choices',
174
206
  });
175
207
  }
176
208
  /**
@@ -181,13 +213,44 @@ function makeRequest(url, opts) {
181
213
  return new Promise(resolve => {
182
214
  const req = transport.request(url, {
183
215
  method: opts.method,
184
- headers: opts.headers,
216
+ headers: {
217
+ // Some provider edges (e.g. Z.ai's CDN) silently drop requests with
218
+ // no User-Agent — the connection hangs until timeout instead of 401.
219
+ 'User-Agent': 'aura-code',
220
+ 'Accept': '*/*',
221
+ 'Content-Length': Buffer.byteLength(opts.body),
222
+ ...opts.headers,
223
+ },
185
224
  timeout: 10_000,
186
225
  }, res => {
187
226
  let data = '';
188
227
  res.on('data', chunk => { data += chunk; });
189
228
  res.on('end', () => {
190
229
  if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
230
+ // 2xx alone is not proof: a wrong base URL can hit a web app that
231
+ // answers 200 with an HTML page, or a gateway that wraps errors in
232
+ // 200s. Require a JSON body with the field a real completion has.
233
+ let parsed = null;
234
+ try {
235
+ parsed = JSON.parse(data);
236
+ }
237
+ catch { /* not JSON */ }
238
+ if (parsed === null) {
239
+ resolve({
240
+ ok: false,
241
+ error: `Endpoint answered HTTP ${res.statusCode} but not with JSON (got ${data.trimStart().startsWith('<') ? 'an HTML page' : 'unparseable data'}) — the base URL probably points at a website, not an API. Check that it ends with the API root (e.g. /v1).`,
242
+ });
243
+ return;
244
+ }
245
+ if (opts.expectField && !(opts.expectField in parsed)) {
246
+ const errMsg = parsed.error?.message
247
+ ?? parsed.msg;
248
+ resolve({
249
+ ok: false,
250
+ error: `Endpoint answered HTTP ${res.statusCode} but the response has no "${opts.expectField}" field${errMsg ? ` (server said: ${errMsg})` : ''} — wrong API format or base URL path.`,
251
+ });
252
+ return;
253
+ }
191
254
  resolve({ ok: true });
192
255
  }
193
256
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"provider-test.js","sourceRoot":"","sources":["../../src/setup/provider-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-test.js","sourceRoot":"","sources":["../../src/setup/provider-test.ts"],"names":[],"mappings":"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"}
@@ -21,8 +21,11 @@ export interface ProviderConfig {
21
21
  * Run the full 4-step provider wizard.
22
22
  *
23
23
  * Returns the chosen config on success, or null if the user cancelled.
24
+ *
25
+ * @param existingRl - Optional readline interface (for non-TUI mode)
26
+ * @param askInputFn - Optional askInput function (for TUI mode)
24
27
  */
25
- export declare function runProviderWizard(existingRl?: readline.Interface): Promise<ProviderConfig | null>;
28
+ export declare function runProviderWizard(existingRl?: readline.Interface, askInputFn?: (prompt: string) => Promise<string>): Promise<ProviderConfig | null>;
26
29
  /**
27
30
  * Load saved provider config from the config directory.
28
31
  */