@datename/fastcode-termux 0.1.6-beta → 0.1.6

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 (246) hide show
  1. package/README.md +6 -24
  2. package/dist/agent/guards.d.ts +0 -8
  3. package/dist/agent/guards.js +0 -195
  4. package/dist/agent/protocol.js +1 -4
  5. package/dist/agent/tools.d.ts +1 -3
  6. package/dist/agent/tools.js +377 -2
  7. package/dist/app.js +103 -335
  8. package/dist/cli.js +311 -362
  9. package/dist/commands/index.js +0 -22
  10. package/dist/commands/login.d.ts +2 -4
  11. package/dist/commands/login.js +10 -12
  12. package/dist/commands/logout.js +16 -8
  13. package/dist/commands/model.d.ts +0 -13
  14. package/dist/commands/model.js +22 -42
  15. package/dist/commands/provider.d.ts +0 -13
  16. package/dist/commands/provider.js +9 -20
  17. package/dist/commands/whoami.js +5 -6
  18. package/dist/config/store.d.ts +12 -32
  19. package/dist/config/store.js +65 -117
  20. package/dist/config/trust.d.ts +8 -21
  21. package/dist/config/trust.js +13 -99
  22. package/dist/lib/diagnostics.d.ts +4 -29
  23. package/dist/lib/diagnostics.js +4 -60
  24. package/dist/lib/http.d.ts +1 -11
  25. package/dist/lib/http.js +4 -62
  26. package/dist/providers/anthropic.d.ts +0 -1
  27. package/dist/providers/anthropic.js +0 -12
  28. package/dist/providers/custom.d.ts +0 -9
  29. package/dist/providers/deepseek.d.ts +0 -10
  30. package/dist/providers/deepseek.js +1 -2
  31. package/dist/providers/google.d.ts +0 -9
  32. package/dist/providers/groq.d.ts +0 -10
  33. package/dist/providers/groq.js +1 -2
  34. package/dist/providers/index.d.ts +201 -10
  35. package/dist/providers/index.js +0 -30
  36. package/dist/providers/mistral.d.ts +0 -10
  37. package/dist/providers/mistral.js +1 -2
  38. package/dist/providers/moonshot.d.ts +0 -10
  39. package/dist/providers/moonshot.js +1 -2
  40. package/dist/providers/ollama.d.ts +0 -9
  41. package/dist/providers/openai.d.ts +0 -10
  42. package/dist/providers/openai.js +1 -2
  43. package/dist/providers/openaiCompatible.d.ts +0 -9
  44. package/dist/providers/openaiCompatible.js +10 -58
  45. package/dist/providers/openrouter.d.ts +0 -10
  46. package/dist/providers/openrouter.js +1 -2
  47. package/dist/providers/qwen.d.ts +0 -10
  48. package/dist/providers/qwen.js +1 -2
  49. package/dist/providers/xai.d.ts +0 -10
  50. package/dist/providers/xai.js +1 -2
  51. package/dist/providers/zhipu.d.ts +0 -10
  52. package/dist/providers/zhipu.js +1 -2
  53. package/dist/session/log.d.ts +12 -35
  54. package/dist/session/log.js +10 -206
  55. package/dist/types.d.ts +1 -60
  56. package/dist/ui/Message.d.ts +7 -1
  57. package/dist/ui/Message.js +2 -13
  58. package/dist/ui/Prompt.d.ts +2 -1
  59. package/dist/ui/Prompt.js +2 -2
  60. package/dist/ui/Spinner.js +5 -11
  61. package/dist/ui/StatusBar.d.ts +1 -2
  62. package/dist/ui/StatusBar.js +5 -6
  63. package/package.json +1 -1
  64. package/src/agent/guards.ts +0 -196
  65. package/src/agent/protocol.ts +1 -4
  66. package/src/agent/tools.ts +377 -3
  67. package/src/app.ts +103 -335
  68. package/src/cli.ts +3 -30
  69. package/src/commands/index.ts +0 -22
  70. package/src/commands/login.ts +10 -12
  71. package/src/commands/logout.ts +16 -8
  72. package/src/commands/model.ts +22 -42
  73. package/src/commands/provider.ts +9 -20
  74. package/src/commands/whoami.ts +5 -6
  75. package/src/config/store.ts +69 -122
  76. package/src/config/trust.ts +21 -137
  77. package/src/lib/diagnostics.ts +4 -60
  78. package/src/lib/http.ts +4 -66
  79. package/src/providers/anthropic.ts +1 -13
  80. package/src/providers/deepseek.ts +1 -2
  81. package/src/providers/groq.ts +1 -2
  82. package/src/providers/index.ts +1 -32
  83. package/src/providers/mistral.ts +1 -2
  84. package/src/providers/moonshot.ts +1 -2
  85. package/src/providers/openai.ts +1 -2
  86. package/src/providers/openaiCompatible.ts +10 -58
  87. package/src/providers/openrouter.ts +1 -2
  88. package/src/providers/qwen.ts +1 -2
  89. package/src/providers/xai.ts +1 -2
  90. package/src/providers/zhipu.ts +1 -2
  91. package/src/session/log.ts +28 -267
  92. package/src/types.ts +1 -63
  93. package/src/ui/Message.ts +2 -13
  94. package/src/ui/Prompt.ts +2 -2
  95. package/src/ui/Spinner.ts +5 -11
  96. package/src/ui/StatusBar.ts +5 -6
  97. package/dist/agent/approval.d.ts +0 -50
  98. package/dist/agent/approval.js +0 -7
  99. package/dist/agent/compaction.d.ts +0 -39
  100. package/dist/agent/compaction.js +0 -227
  101. package/dist/agent/context.d.ts +0 -29
  102. package/dist/agent/context.js +0 -62
  103. package/dist/agent/ignore.d.ts +0 -11
  104. package/dist/agent/ignore.js +0 -129
  105. package/dist/agent/process-tree.d.ts +0 -2
  106. package/dist/agent/process-tree.js +0 -31
  107. package/dist/agent/protocol-mode.d.ts +0 -6
  108. package/dist/agent/protocol-mode.js +0 -51
  109. package/dist/agent/registry.d.ts +0 -17
  110. package/dist/agent/registry.js +0 -90
  111. package/dist/agent/runner.d.ts +0 -106
  112. package/dist/agent/runner.js +0 -352
  113. package/dist/agent/shell-session.d.ts +0 -37
  114. package/dist/agent/shell-session.js +0 -400
  115. package/dist/agent/stream.d.ts +0 -29
  116. package/dist/agent/stream.js +0 -103
  117. package/dist/agent/tool-schemas.d.ts +0 -2
  118. package/dist/agent/tool-schemas.js +0 -63
  119. package/dist/agent/tools/append_file.d.ts +0 -2
  120. package/dist/agent/tools/append_file.js +0 -26
  121. package/dist/agent/tools/apply_patch.d.ts +0 -10
  122. package/dist/agent/tools/apply_patch.js +0 -52
  123. package/dist/agent/tools/copy_file.d.ts +0 -2
  124. package/dist/agent/tools/copy_file.js +0 -30
  125. package/dist/agent/tools/delete_file.d.ts +0 -2
  126. package/dist/agent/tools/delete_file.js +0 -24
  127. package/dist/agent/tools/grep.d.ts +0 -2
  128. package/dist/agent/tools/grep.js +0 -23
  129. package/dist/agent/tools/index.d.ts +0 -2
  130. package/dist/agent/tools/index.js +0 -32
  131. package/dist/agent/tools/list_files.d.ts +0 -2
  132. package/dist/agent/tools/list_files.js +0 -17
  133. package/dist/agent/tools/make_dir.d.ts +0 -2
  134. package/dist/agent/tools/make_dir.js +0 -24
  135. package/dist/agent/tools/move_path.d.ts +0 -2
  136. package/dist/agent/tools/move_path.js +0 -47
  137. package/dist/agent/tools/paths.d.ts +0 -7
  138. package/dist/agent/tools/paths.js +0 -84
  139. package/dist/agent/tools/pwd.d.ts +0 -2
  140. package/dist/agent/tools/pwd.js +0 -10
  141. package/dist/agent/tools/read_file.d.ts +0 -2
  142. package/dist/agent/tools/read_file.js +0 -21
  143. package/dist/agent/tools/read_many.d.ts +0 -2
  144. package/dist/agent/tools/read_many.js +0 -25
  145. package/dist/agent/tools/readers.d.ts +0 -6
  146. package/dist/agent/tools/readers.js +0 -216
  147. package/dist/agent/tools/replace_in_file.d.ts +0 -2
  148. package/dist/agent/tools/replace_in_file.js +0 -30
  149. package/dist/agent/tools/shell.d.ts +0 -2
  150. package/dist/agent/tools/shell.js +0 -48
  151. package/dist/agent/tools/stat_path.d.ts +0 -2
  152. package/dist/agent/tools/stat_path.js +0 -31
  153. package/dist/agent/tools/types.d.ts +0 -39
  154. package/dist/agent/tools/types.js +0 -1
  155. package/dist/agent/tools/validate.d.ts +0 -6
  156. package/dist/agent/tools/validate.js +0 -29
  157. package/dist/agent/tools/write_file.d.ts +0 -2
  158. package/dist/agent/tools/write_file.js +0 -26
  159. package/dist/commands/attach.d.ts +0 -9
  160. package/dist/commands/attach.js +0 -15
  161. package/dist/commands/bg.d.ts +0 -7
  162. package/dist/commands/bg.js +0 -9
  163. package/dist/commands/cancel.d.ts +0 -10
  164. package/dist/commands/cancel.js +0 -10
  165. package/dist/commands/compact.d.ts +0 -10
  166. package/dist/commands/compact.js +0 -22
  167. package/dist/commands/context.d.ts +0 -7
  168. package/dist/commands/context.js +0 -24
  169. package/dist/commands/edit.d.ts +0 -10
  170. package/dist/commands/edit.js +0 -36
  171. package/dist/commands/effort.d.ts +0 -25
  172. package/dist/commands/effort.js +0 -48
  173. package/dist/commands/expand.d.ts +0 -10
  174. package/dist/commands/expand.js +0 -8
  175. package/dist/commands/jobs.d.ts +0 -7
  176. package/dist/commands/jobs.js +0 -16
  177. package/dist/commands/kill.d.ts +0 -7
  178. package/dist/commands/kill.js +0 -11
  179. package/dist/commands/steer.d.ts +0 -11
  180. package/dist/commands/steer.js +0 -13
  181. package/dist/lib/model-meta.d.ts +0 -19
  182. package/dist/lib/model-meta.js +0 -113
  183. package/dist/lib/native-tools.d.ts +0 -12
  184. package/dist/lib/native-tools.js +0 -21
  185. package/dist/lib/net.d.ts +0 -33
  186. package/dist/lib/net.js +0 -168
  187. package/dist/patch/apply.d.ts +0 -15
  188. package/dist/patch/apply.js +0 -172
  189. package/dist/patch/parse.d.ts +0 -29
  190. package/dist/patch/parse.js +0 -112
  191. package/dist/patch/plan.d.ts +0 -49
  192. package/dist/patch/plan.js +0 -273
  193. package/dist/session/projection.d.ts +0 -43
  194. package/dist/session/projection.js +0 -257
  195. package/dist/ui/Picker.d.ts +0 -8
  196. package/dist/ui/Picker.js +0 -24
  197. package/src/agent/approval.ts +0 -47
  198. package/src/agent/compaction.ts +0 -276
  199. package/src/agent/context.ts +0 -97
  200. package/src/agent/ignore.ts +0 -147
  201. package/src/agent/process-tree.ts +0 -32
  202. package/src/agent/protocol-mode.ts +0 -59
  203. package/src/agent/registry.ts +0 -98
  204. package/src/agent/runner.ts +0 -443
  205. package/src/agent/shell-session.ts +0 -449
  206. package/src/agent/stream.ts +0 -143
  207. package/src/agent/tool-schemas.ts +0 -67
  208. package/src/agent/tools/append_file.ts +0 -28
  209. package/src/agent/tools/apply_patch.ts +0 -54
  210. package/src/agent/tools/copy_file.ts +0 -32
  211. package/src/agent/tools/delete_file.ts +0 -26
  212. package/src/agent/tools/grep.ts +0 -25
  213. package/src/agent/tools/index.ts +0 -34
  214. package/src/agent/tools/list_files.ts +0 -19
  215. package/src/agent/tools/make_dir.ts +0 -26
  216. package/src/agent/tools/move_path.ts +0 -50
  217. package/src/agent/tools/paths.ts +0 -92
  218. package/src/agent/tools/pwd.ts +0 -12
  219. package/src/agent/tools/read_file.ts +0 -23
  220. package/src/agent/tools/read_many.ts +0 -27
  221. package/src/agent/tools/readers.ts +0 -228
  222. package/src/agent/tools/replace_in_file.ts +0 -32
  223. package/src/agent/tools/shell.ts +0 -53
  224. package/src/agent/tools/stat_path.ts +0 -33
  225. package/src/agent/tools/types.ts +0 -42
  226. package/src/agent/tools/validate.ts +0 -35
  227. package/src/agent/tools/write_file.ts +0 -28
  228. package/src/commands/attach.ts +0 -16
  229. package/src/commands/bg.ts +0 -9
  230. package/src/commands/cancel.ts +0 -10
  231. package/src/commands/compact.ts +0 -23
  232. package/src/commands/context.ts +0 -25
  233. package/src/commands/edit.ts +0 -37
  234. package/src/commands/effort.ts +0 -49
  235. package/src/commands/expand.ts +0 -8
  236. package/src/commands/jobs.ts +0 -17
  237. package/src/commands/kill.ts +0 -12
  238. package/src/commands/steer.ts +0 -13
  239. package/src/lib/model-meta.ts +0 -138
  240. package/src/lib/native-tools.ts +0 -32
  241. package/src/lib/net.ts +0 -204
  242. package/src/patch/apply.ts +0 -194
  243. package/src/patch/parse.ts +0 -131
  244. package/src/patch/plan.ts +0 -317
  245. package/src/session/projection.ts +0 -308
  246. package/src/ui/Picker.ts +0 -24
package/dist/lib/http.js CHANGED
@@ -16,17 +16,8 @@ export async function fetchJson(url, init = {}) {
16
16
  }
17
17
  return (await res.json());
18
18
  }
19
- export class NetworkStallError extends Error {
20
- code = "NETWORK_STALL";
21
- bytesReceived;
22
- constructor(message, bytesReceived = 0) {
23
- super(message);
24
- this.name = "NetworkStallError";
25
- this.bytesReceived = bytesReceived;
26
- }
27
- }
28
19
  /** Async iterator over SSE events from a streaming HTTP response. */
29
- export async function* streamSSE(res, options = {}) {
20
+ export async function* streamSSE(res) {
30
21
  if (!res.ok) {
31
22
  const body = await res.text().catch(() => "");
32
23
  throw new Error(`${res.status} ${res.statusText}: ${body.slice(0, 500)}`);
@@ -35,50 +26,19 @@ export async function* streamSSE(res, options = {}) {
35
26
  throw new Error("Empty response body");
36
27
  const reader = res.body.getReader();
37
28
  const decoder = new TextDecoder("utf-8");
38
- const envIdle = Number(process.env["FASTCODE_SSE_IDLE_MS"]);
39
- const idleMs = positive(options.idleTimeoutMs, positive(envIdle, 25_000));
40
- const totalMs = positive(options.totalTimeoutMs, 0);
41
- const startedAt = Date.now();
42
- let bytesReceived = 0;
43
29
  let buffer = "";
44
30
  while (true) {
45
- const remaining = totalMs > 0 ? totalMs - (Date.now() - startedAt) : Number.POSITIVE_INFINITY;
46
- if (remaining <= 0)
47
- throw new NetworkStallError(`SSE total timeout after ${totalMs}ms`, bytesReceived);
48
- const boundedByTotal = remaining <= idleMs;
49
- const waitMs = boundedByTotal ? Math.max(1, remaining) : idleMs;
50
- let timer;
51
- const timeout = new Promise((_resolve, reject) => {
52
- timer = setTimeout(() => {
53
- reject(new NetworkStallError(boundedByTotal
54
- ? `SSE total timeout after ${totalMs}ms`
55
- : `SSE idle timeout after ${idleMs}ms (no data received; set FASTCODE_SSE_IDLE_MS to wait longer)`, bytesReceived));
56
- }, waitMs);
57
- });
58
- let chunk;
59
- try {
60
- chunk = await Promise.race([reader.read(), timeout]);
61
- }
62
- catch (err) {
63
- await reader.cancel().catch(() => undefined);
64
- throw err;
65
- }
66
- finally {
67
- if (timer)
68
- clearTimeout(timer);
69
- }
70
- const { value, done } = chunk;
31
+ const { value, done } = await reader.read();
71
32
  if (done)
72
33
  break;
73
- bytesReceived += value?.byteLength ?? 0;
74
34
  // Normalize CR/LF so both "\n\n" and "\r\n\r\n" frame separators
75
35
  // are detected, including a CR/LF split across two chunks.
76
36
  buffer = (buffer + decoder.decode(value, { stream: true })).replace(/\r\n?/g, "\n");
77
37
  let sep = buffer.indexOf("\n\n");
78
38
  while (sep !== -1) {
79
- const chunkText = buffer.slice(0, sep);
39
+ const chunk = buffer.slice(0, sep);
80
40
  buffer = buffer.slice(sep + 2);
81
- const ev = parseSseChunk(chunkText);
41
+ const ev = parseSseChunk(chunk);
82
42
  if (ev)
83
43
  yield ev;
84
44
  sep = buffer.indexOf("\n\n");
@@ -92,24 +52,6 @@ export async function* streamSSE(res, options = {}) {
92
52
  yield ev;
93
53
  }
94
54
  }
95
- export async function probeConnectivity(url, timeoutMs = 3000) {
96
- const controller = new AbortController();
97
- const timer = setTimeout(() => controller.abort(), positive(timeoutMs, 3000));
98
- try {
99
- const res = await fetch(url, { signal: controller.signal });
100
- await res.body?.cancel().catch(() => undefined);
101
- return res.ok;
102
- }
103
- catch {
104
- return false;
105
- }
106
- finally {
107
- clearTimeout(timer);
108
- }
109
- }
110
- function positive(value, fallback) {
111
- return typeof value === "number" && Number.isFinite(value) && value > 0 ? value : fallback;
112
- }
113
55
  function parseSseChunk(chunk) {
114
56
  let event;
115
57
  const dataLines = [];
@@ -4,7 +4,6 @@ export declare const anthropicProvider: {
4
4
  authEnv: string[];
5
5
  baseUrl: string;
6
6
  defaultModel: string;
7
- supportsReasoning(): boolean;
8
7
  listModels(apiKey: any): Promise<any>;
9
8
  stream(req: any, apiKey: any): AsyncGenerator<{
10
9
  delta: any;
@@ -10,16 +10,12 @@ const STATIC_MODELS = [
10
10
  { id: "claude-haiku-4.5", label: "Claude Haiku 4.5" },
11
11
  ];
12
12
  const BASE = "https://api.anthropic.com/v1";
13
- const THINKING_BUDGETS = { low: 1024, medium: 4096, high: 8192, max: 16000 };
14
13
  export const anthropicProvider = {
15
14
  id: "anthropic",
16
15
  label: "Anthropic (Claude)",
17
16
  authEnv: ["ANTHROPIC_API_KEY", "CLAUDE_API_KEY"],
18
17
  baseUrl: BASE,
19
18
  defaultModel: "claude-sonnet-5.5",
20
- supportsReasoning() {
21
- return true;
22
- },
23
19
  async listModels(apiKey) {
24
20
  // Query the live model list; fall back to the built-in list offline.
25
21
  if (apiKey) {
@@ -57,14 +53,6 @@ export const anthropicProvider = {
57
53
  max_tokens: req.maxOutputTokens ?? 4096,
58
54
  ...(req.temperature !== undefined ? { temperature: req.temperature } : {}),
59
55
  };
60
- if (req.reasoningEffort && req.reasoningEffort !== "auto") {
61
- const budget = THINKING_BUDGETS[req.reasoningEffort] ?? THINKING_BUDGETS.medium;
62
- body.thinking = { type: "enabled", budget_tokens: budget };
63
- // max_tokens must exceed the thinking budget.
64
- body.max_tokens = Math.max(body.max_tokens, budget + 1024);
65
- // Extended thinking is incompatible with a custom temperature.
66
- delete body.temperature;
67
- }
68
56
  const res = await fetch(BASE + "/messages", {
69
57
  method: "POST",
70
58
  headers: {
@@ -10,24 +10,15 @@ export declare const customProvider: {
10
10
  done: boolean;
11
11
  reasoning?: undefined;
12
12
  usage?: undefined;
13
- toolCalls?: undefined;
14
13
  } | {
15
14
  delta: string;
16
15
  done: boolean;
17
16
  reasoning: string;
18
17
  usage?: undefined;
19
- toolCalls?: undefined;
20
18
  } | {
21
19
  delta: string;
22
20
  done: boolean;
23
21
  usage: any;
24
- toolCalls: import("../types.js").NativeToolCall[];
25
22
  reasoning?: undefined;
26
- } | {
27
- delta: string;
28
- done: boolean;
29
- usage: any;
30
- reasoning?: undefined;
31
- toolCalls?: undefined;
32
23
  }, void, unknown>;
33
24
  };
@@ -10,25 +10,15 @@ export declare const deepseekProvider: {
10
10
  done: boolean;
11
11
  reasoning?: undefined;
12
12
  usage?: undefined;
13
- toolCalls?: undefined;
14
13
  } | {
15
14
  delta: string;
16
15
  done: boolean;
17
16
  reasoning: string;
18
17
  usage?: undefined;
19
- toolCalls?: undefined;
20
18
  } | {
21
19
  delta: string;
22
20
  done: boolean;
23
21
  usage: any;
24
- toolCalls: import("../types.js").NativeToolCall[];
25
22
  reasoning?: undefined;
26
- } | {
27
- delta: string;
28
- done: boolean;
29
- usage: any;
30
- reasoning?: undefined;
31
- toolCalls?: undefined;
32
23
  }, void, unknown>;
33
- supportsReasoning: () => boolean;
34
24
  };
@@ -11,6 +11,5 @@ export const deepseekProvider = {
11
11
  baseUrl: BASE,
12
12
  defaultModel: "deepseek-v4-pro",
13
13
  listModels: (apiKey) => listModelsHttp({ baseUrl: BASE, apiKey, staticModels: STATIC }),
14
- stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: BASE, apiKey, staticModels: STATIC, reasoning: "openai" }),
15
- supportsReasoning: () => true,
14
+ stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: BASE, apiKey, staticModels: STATIC }),
16
15
  };
@@ -10,24 +10,15 @@ export declare const googleProvider: {
10
10
  done: boolean;
11
11
  reasoning?: undefined;
12
12
  usage?: undefined;
13
- toolCalls?: undefined;
14
13
  } | {
15
14
  delta: string;
16
15
  done: boolean;
17
16
  reasoning: string;
18
17
  usage?: undefined;
19
- toolCalls?: undefined;
20
18
  } | {
21
19
  delta: string;
22
20
  done: boolean;
23
21
  usage: any;
24
- toolCalls: import("../types.js").NativeToolCall[];
25
22
  reasoning?: undefined;
26
- } | {
27
- delta: string;
28
- done: boolean;
29
- usage: any;
30
- reasoning?: undefined;
31
- toolCalls?: undefined;
32
23
  }, void, unknown>;
33
24
  };
@@ -10,25 +10,15 @@ export declare const groqProvider: {
10
10
  done: boolean;
11
11
  reasoning?: undefined;
12
12
  usage?: undefined;
13
- toolCalls?: undefined;
14
13
  } | {
15
14
  delta: string;
16
15
  done: boolean;
17
16
  reasoning: string;
18
17
  usage?: undefined;
19
- toolCalls?: undefined;
20
18
  } | {
21
19
  delta: string;
22
20
  done: boolean;
23
21
  usage: any;
24
- toolCalls: import("../types.js").NativeToolCall[];
25
22
  reasoning?: undefined;
26
- } | {
27
- delta: string;
28
- done: boolean;
29
- usage: any;
30
- reasoning?: undefined;
31
- toolCalls?: undefined;
32
23
  }, void, unknown>;
33
- supportsReasoning: () => boolean;
34
24
  };
@@ -16,6 +16,5 @@ export const groqProvider = {
16
16
  baseUrl: BASE,
17
17
  defaultModel: "llama-3.3-70b-versatile",
18
18
  listModels: (apiKey) => listModelsHttp({ baseUrl: BASE, apiKey, staticModels: STATIC }),
19
- stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: BASE, apiKey, staticModels: STATIC, reasoning: "openai" }),
20
- supportsReasoning: () => true,
19
+ stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: BASE, apiKey, staticModels: STATIC }),
21
20
  };
@@ -1,10 +1,201 @@
1
- import type { Provider } from "../types.js";
2
- export declare const PROVIDERS: Provider[];
3
- export declare function getProvider(id: any): Provider;
4
- export declare function getProviderOrThrow(id: any): Provider;
5
- /**
6
- * Cheap connectivity check used by the model picker to label a list "offline".
7
- * `listModels()` silently falls back to the static list, so without this probe
8
- * the UI cannot tell a live catalog from a cached one.
9
- */
10
- export declare function probeProvider(provider: any, apiKey: any, timeoutMs?: number): Promise<boolean>;
1
+ export declare const PROVIDERS: ({
2
+ id: string;
3
+ label: string;
4
+ authEnv: string[];
5
+ baseUrl: string;
6
+ defaultModel: string;
7
+ listModels(apiKey: any): Promise<any>;
8
+ stream(req: any, apiKey: any): AsyncGenerator<{
9
+ delta: any;
10
+ done: boolean;
11
+ usage?: undefined;
12
+ } | {
13
+ delta: string;
14
+ done: boolean;
15
+ usage: {
16
+ inputTokens: number;
17
+ outputTokens: number;
18
+ costUsd: number;
19
+ };
20
+ }, void, unknown>;
21
+ } | {
22
+ id: string;
23
+ label: string;
24
+ authEnv: string[];
25
+ readonly baseUrl: string;
26
+ defaultModel: string;
27
+ listModels: (apiKey: any) => Promise<any>;
28
+ stream: (req: any, apiKey: any) => AsyncGenerator<{
29
+ delta: string;
30
+ done: boolean;
31
+ reasoning?: undefined;
32
+ usage?: undefined;
33
+ } | {
34
+ delta: string;
35
+ done: boolean;
36
+ reasoning: string;
37
+ usage?: undefined;
38
+ } | {
39
+ delta: string;
40
+ done: boolean;
41
+ usage: any;
42
+ reasoning?: undefined;
43
+ }, void, unknown>;
44
+ } | {
45
+ id: string;
46
+ label: string;
47
+ authEnv: any[];
48
+ readonly baseUrl: string;
49
+ defaultModel: string;
50
+ listModels: () => Promise<any>;
51
+ stream: (req: any) => AsyncGenerator<{
52
+ delta: string;
53
+ done: boolean;
54
+ reasoning?: undefined;
55
+ usage?: undefined;
56
+ } | {
57
+ delta: string;
58
+ done: boolean;
59
+ reasoning: string;
60
+ usage?: undefined;
61
+ } | {
62
+ delta: string;
63
+ done: boolean;
64
+ usage: any;
65
+ reasoning?: undefined;
66
+ }, void, unknown>;
67
+ })[];
68
+ export declare function getProvider(id: any): {
69
+ id: string;
70
+ label: string;
71
+ authEnv: string[];
72
+ baseUrl: string;
73
+ defaultModel: string;
74
+ listModels(apiKey: any): Promise<any>;
75
+ stream(req: any, apiKey: any): AsyncGenerator<{
76
+ delta: any;
77
+ done: boolean;
78
+ usage?: undefined;
79
+ } | {
80
+ delta: string;
81
+ done: boolean;
82
+ usage: {
83
+ inputTokens: number;
84
+ outputTokens: number;
85
+ costUsd: number;
86
+ };
87
+ }, void, unknown>;
88
+ } | {
89
+ id: string;
90
+ label: string;
91
+ authEnv: string[];
92
+ readonly baseUrl: string;
93
+ defaultModel: string;
94
+ listModels: (apiKey: any) => Promise<any>;
95
+ stream: (req: any, apiKey: any) => AsyncGenerator<{
96
+ delta: string;
97
+ done: boolean;
98
+ reasoning?: undefined;
99
+ usage?: undefined;
100
+ } | {
101
+ delta: string;
102
+ done: boolean;
103
+ reasoning: string;
104
+ usage?: undefined;
105
+ } | {
106
+ delta: string;
107
+ done: boolean;
108
+ usage: any;
109
+ reasoning?: undefined;
110
+ }, void, unknown>;
111
+ } | {
112
+ id: string;
113
+ label: string;
114
+ authEnv: any[];
115
+ readonly baseUrl: string;
116
+ defaultModel: string;
117
+ listModels: () => Promise<any>;
118
+ stream: (req: any) => AsyncGenerator<{
119
+ delta: string;
120
+ done: boolean;
121
+ reasoning?: undefined;
122
+ usage?: undefined;
123
+ } | {
124
+ delta: string;
125
+ done: boolean;
126
+ reasoning: string;
127
+ usage?: undefined;
128
+ } | {
129
+ delta: string;
130
+ done: boolean;
131
+ usage: any;
132
+ reasoning?: undefined;
133
+ }, void, unknown>;
134
+ };
135
+ export declare function getProviderOrThrow(id: any): {
136
+ id: string;
137
+ label: string;
138
+ authEnv: string[];
139
+ baseUrl: string;
140
+ defaultModel: string;
141
+ listModels(apiKey: any): Promise<any>;
142
+ stream(req: any, apiKey: any): AsyncGenerator<{
143
+ delta: any;
144
+ done: boolean;
145
+ usage?: undefined;
146
+ } | {
147
+ delta: string;
148
+ done: boolean;
149
+ usage: {
150
+ inputTokens: number;
151
+ outputTokens: number;
152
+ costUsd: number;
153
+ };
154
+ }, void, unknown>;
155
+ } | {
156
+ id: string;
157
+ label: string;
158
+ authEnv: string[];
159
+ readonly baseUrl: string;
160
+ defaultModel: string;
161
+ listModels: (apiKey: any) => Promise<any>;
162
+ stream: (req: any, apiKey: any) => AsyncGenerator<{
163
+ delta: string;
164
+ done: boolean;
165
+ reasoning?: undefined;
166
+ usage?: undefined;
167
+ } | {
168
+ delta: string;
169
+ done: boolean;
170
+ reasoning: string;
171
+ usage?: undefined;
172
+ } | {
173
+ delta: string;
174
+ done: boolean;
175
+ usage: any;
176
+ reasoning?: undefined;
177
+ }, void, unknown>;
178
+ } | {
179
+ id: string;
180
+ label: string;
181
+ authEnv: any[];
182
+ readonly baseUrl: string;
183
+ defaultModel: string;
184
+ listModels: () => Promise<any>;
185
+ stream: (req: any) => AsyncGenerator<{
186
+ delta: string;
187
+ done: boolean;
188
+ reasoning?: undefined;
189
+ usage?: undefined;
190
+ } | {
191
+ delta: string;
192
+ done: boolean;
193
+ reasoning: string;
194
+ usage?: undefined;
195
+ } | {
196
+ delta: string;
197
+ done: boolean;
198
+ usage: any;
199
+ reasoning?: undefined;
200
+ }, void, unknown>;
201
+ };
@@ -35,33 +35,3 @@ export function getProviderOrThrow(id) {
35
35
  throw new Error("Unknown provider: " + id);
36
36
  return p;
37
37
  }
38
- /**
39
- * Cheap connectivity check used by the model picker to label a list "offline".
40
- * `listModels()` silently falls back to the static list, so without this probe
41
- * the UI cannot tell a live catalog from a cached one.
42
- */
43
- export async function probeProvider(provider, apiKey, timeoutMs = 4000) {
44
- const controller = new AbortController();
45
- const timer = setTimeout(() => controller.abort(), timeoutMs);
46
- try {
47
- const base = String(provider.baseUrl).replace(/[/]+$/, "");
48
- const headers = { accept: "application/json" };
49
- if (apiKey) {
50
- if (provider.id === "anthropic") {
51
- headers["x-api-key"] = apiKey;
52
- headers["anthropic-version"] = "2023-06-01";
53
- }
54
- else {
55
- headers["authorization"] = "Bearer " + apiKey;
56
- }
57
- }
58
- const res = await fetch(base + "/models", { headers, signal: controller.signal });
59
- return res.ok;
60
- }
61
- catch {
62
- return false;
63
- }
64
- finally {
65
- clearTimeout(timer);
66
- }
67
- }
@@ -10,25 +10,15 @@ export declare const mistralProvider: {
10
10
  done: boolean;
11
11
  reasoning?: undefined;
12
12
  usage?: undefined;
13
- toolCalls?: undefined;
14
13
  } | {
15
14
  delta: string;
16
15
  done: boolean;
17
16
  reasoning: string;
18
17
  usage?: undefined;
19
- toolCalls?: undefined;
20
18
  } | {
21
19
  delta: string;
22
20
  done: boolean;
23
21
  usage: any;
24
- toolCalls: import("../types.js").NativeToolCall[];
25
22
  reasoning?: undefined;
26
- } | {
27
- delta: string;
28
- done: boolean;
29
- usage: any;
30
- reasoning?: undefined;
31
- toolCalls?: undefined;
32
23
  }, void, unknown>;
33
- supportsReasoning: () => boolean;
34
24
  };
@@ -15,6 +15,5 @@ export const mistralProvider = {
15
15
  baseUrl: BASE,
16
16
  defaultModel: "mistral-small-latest",
17
17
  listModels: (apiKey) => listModelsHttp({ baseUrl: BASE, apiKey, staticModels: STATIC }),
18
- stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: BASE, apiKey, staticModels: STATIC, reasoning: "openai" }),
19
- supportsReasoning: () => true,
18
+ stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: BASE, apiKey, staticModels: STATIC }),
20
19
  };
@@ -10,25 +10,15 @@ export declare const moonshotProvider: {
10
10
  done: boolean;
11
11
  reasoning?: undefined;
12
12
  usage?: undefined;
13
- toolCalls?: undefined;
14
13
  } | {
15
14
  delta: string;
16
15
  done: boolean;
17
16
  reasoning: string;
18
17
  usage?: undefined;
19
- toolCalls?: undefined;
20
18
  } | {
21
19
  delta: string;
22
20
  done: boolean;
23
21
  usage: any;
24
- toolCalls: import("../types.js").NativeToolCall[];
25
22
  reasoning?: undefined;
26
- } | {
27
- delta: string;
28
- done: boolean;
29
- usage: any;
30
- reasoning?: undefined;
31
- toolCalls?: undefined;
32
23
  }, void, unknown>;
33
- supportsReasoning: () => boolean;
34
24
  };
@@ -18,6 +18,5 @@ export const moonshotProvider = {
18
18
  },
19
19
  defaultModel: "kimi-k3",
20
20
  listModels: (apiKey) => listModelsHttp({ baseUrl: baseUrl(), apiKey, staticModels: STATIC }),
21
- stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: baseUrl(), apiKey, staticModels: STATIC, reasoning: "openai" }),
22
- supportsReasoning: () => true,
21
+ stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: baseUrl(), apiKey, staticModels: STATIC }),
23
22
  };
@@ -10,24 +10,15 @@ export declare const ollamaProvider: {
10
10
  done: boolean;
11
11
  reasoning?: undefined;
12
12
  usage?: undefined;
13
- toolCalls?: undefined;
14
13
  } | {
15
14
  delta: string;
16
15
  done: boolean;
17
16
  reasoning: string;
18
17
  usage?: undefined;
19
- toolCalls?: undefined;
20
18
  } | {
21
19
  delta: string;
22
20
  done: boolean;
23
21
  usage: any;
24
- toolCalls: import("../types.js").NativeToolCall[];
25
22
  reasoning?: undefined;
26
- } | {
27
- delta: string;
28
- done: boolean;
29
- usage: any;
30
- reasoning?: undefined;
31
- toolCalls?: undefined;
32
23
  }, void, unknown>;
33
24
  };
@@ -10,25 +10,15 @@ export declare const openaiProvider: {
10
10
  done: boolean;
11
11
  reasoning?: undefined;
12
12
  usage?: undefined;
13
- toolCalls?: undefined;
14
13
  } | {
15
14
  delta: string;
16
15
  done: boolean;
17
16
  reasoning: string;
18
17
  usage?: undefined;
19
- toolCalls?: undefined;
20
18
  } | {
21
19
  delta: string;
22
20
  done: boolean;
23
21
  usage: any;
24
- toolCalls: import("../types.js").NativeToolCall[];
25
22
  reasoning?: undefined;
26
- } | {
27
- delta: string;
28
- done: boolean;
29
- usage: any;
30
- reasoning?: undefined;
31
- toolCalls?: undefined;
32
23
  }, void, unknown>;
33
- supportsReasoning: (model: any) => boolean;
34
24
  };
@@ -21,6 +21,5 @@ export const openaiProvider = {
21
21
  baseUrl: BASE,
22
22
  defaultModel: "gpt-6-luna",
23
23
  listModels: (apiKey) => listModelsHttp({ baseUrl: BASE, apiKey, staticModels: STATIC }),
24
- stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: BASE, apiKey, staticModels: STATIC, reasoning: "openai" }),
25
- supportsReasoning: (model) => /^(o\d|gpt-5|gpt-6)/i.test(model),
24
+ stream: (req, apiKey) => streamChatCompletion(req, { baseUrl: BASE, apiKey, staticModels: STATIC }),
26
25
  };
@@ -3,24 +3,15 @@ export declare function streamChatCompletion(req: any, opts: any): AsyncGenerato
3
3
  done: boolean;
4
4
  reasoning?: undefined;
5
5
  usage?: undefined;
6
- toolCalls?: undefined;
7
6
  } | {
8
7
  delta: string;
9
8
  done: boolean;
10
9
  reasoning: string;
11
10
  usage?: undefined;
12
- toolCalls?: undefined;
13
11
  } | {
14
12
  delta: string;
15
13
  done: boolean;
16
14
  usage: any;
17
- toolCalls: import("../types.js").NativeToolCall[];
18
15
  reasoning?: undefined;
19
- } | {
20
- delta: string;
21
- done: boolean;
22
- usage: any;
23
- reasoning?: undefined;
24
- toolCalls?: undefined;
25
16
  }, void, unknown>;
26
17
  export declare function listModelsHttp(opts: any): Promise<any>;