@gaunt-sloth/core 2.0.0-alpha.4 → 2.0.0-alpha.40

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 (289) hide show
  1. package/README.md +71 -20
  2. package/dist/config/colour.d.ts +38 -0
  3. package/dist/config/colour.js +36 -0
  4. package/dist/config/colour.js.map +1 -0
  5. package/dist/config/configDiscovery.d.ts +79 -0
  6. package/dist/config/configDiscovery.js +80 -0
  7. package/dist/config/configDiscovery.js.map +1 -0
  8. package/dist/config/defaults.d.ts +21 -21
  9. package/dist/config/defaults.js +11 -9
  10. package/dist/config/defaults.js.map +1 -1
  11. package/dist/config/filesystem-tools.d.ts +41 -0
  12. package/dist/config/filesystem-tools.js +56 -0
  13. package/dist/config/filesystem-tools.js.map +1 -0
  14. package/dist/config/jsonc.d.ts +12 -0
  15. package/dist/config/jsonc.js +41 -0
  16. package/dist/config/jsonc.js.map +1 -0
  17. package/dist/config/loader.d.ts +165 -6
  18. package/dist/config/loader.js +963 -109
  19. package/dist/config/loader.js.map +1 -1
  20. package/dist/config/mouse.d.ts +50 -0
  21. package/dist/config/mouse.js +44 -0
  22. package/dist/config/mouse.js.map +1 -0
  23. package/dist/config/profiles.d.ts +68 -0
  24. package/dist/config/profiles.js +93 -0
  25. package/dist/config/profiles.js.map +1 -0
  26. package/dist/config/providerKeys.d.ts +69 -0
  27. package/dist/config/providerKeys.js +69 -0
  28. package/dist/config/providerKeys.js.map +1 -0
  29. package/dist/config/schema.d.ts +2695 -130
  30. package/dist/config/schema.js +1385 -68
  31. package/dist/config/schema.js.map +1 -1
  32. package/dist/config/shell-policy.d.ts +899 -111
  33. package/dist/config/shell-policy.js +800 -70
  34. package/dist/config/shell-policy.js.map +1 -1
  35. package/dist/config/tool-descriptions.d.ts +211 -0
  36. package/dist/config/tool-descriptions.js +272 -0
  37. package/dist/config/tool-descriptions.js.map +1 -0
  38. package/dist/config/types.d.ts +372 -34
  39. package/dist/config/types.js +1 -0
  40. package/dist/config/types.js.map +1 -1
  41. package/dist/config.d.ts +35 -1
  42. package/dist/config.js +16 -1
  43. package/dist/config.js.map +1 -1
  44. package/dist/constants.d.ts +45 -0
  45. package/dist/constants.js +45 -0
  46. package/dist/constants.js.map +1 -1
  47. package/dist/core/GthAbstractAgent.d.ts +190 -11
  48. package/dist/core/GthAbstractAgent.js +551 -35
  49. package/dist/core/GthAbstractAgent.js.map +1 -1
  50. package/dist/core/GthAgentRunner.d.ts +565 -57
  51. package/dist/core/GthAgentRunner.js +1546 -140
  52. package/dist/core/GthAgentRunner.js.map +1 -1
  53. package/dist/core/GthLangChainAgent.d.ts +117 -2
  54. package/dist/core/GthLangChainAgent.js +644 -18
  55. package/dist/core/GthLangChainAgent.js.map +1 -1
  56. package/dist/core/approvals/annotations.d.ts +122 -0
  57. package/dist/core/approvals/annotations.js +137 -0
  58. package/dist/core/approvals/annotations.js.map +1 -0
  59. package/dist/core/approvals/grants.d.ts +216 -0
  60. package/dist/core/approvals/grants.js +469 -0
  61. package/dist/core/approvals/grants.js.map +1 -0
  62. package/dist/core/approvals/matcher.d.ts +202 -0
  63. package/dist/core/approvals/matcher.js +267 -0
  64. package/dist/core/approvals/matcher.js.map +1 -0
  65. package/dist/core/approvals/mcpSubjects.d.ts +40 -0
  66. package/dist/core/approvals/mcpSubjects.js +99 -0
  67. package/dist/core/approvals/mcpSubjects.js.map +1 -0
  68. package/dist/core/approvals/promptHeader.d.ts +28 -0
  69. package/dist/core/approvals/promptHeader.js +62 -0
  70. package/dist/core/approvals/promptHeader.js.map +1 -0
  71. package/dist/core/approvals/toolAnnotationSources.d.ts +105 -0
  72. package/dist/core/approvals/toolAnnotationSources.js +277 -0
  73. package/dist/core/approvals/toolAnnotationSources.js.map +1 -0
  74. package/dist/core/approvals/toolHost.d.ts +46 -0
  75. package/dist/core/approvals/toolHost.js +108 -0
  76. package/dist/core/approvals/toolHost.js.map +1 -0
  77. package/dist/core/debugCapture.d.ts +74 -0
  78. package/dist/core/debugCapture.js +100 -0
  79. package/dist/core/debugCapture.js.map +1 -0
  80. package/dist/core/gthLeanAgentFactory.d.ts +9 -0
  81. package/dist/core/gthLeanAgentFactory.js +10 -0
  82. package/dist/core/gthLeanAgentFactory.js.map +1 -0
  83. package/dist/core/launchBanner.d.ts +127 -0
  84. package/dist/core/launchBanner.js +414 -0
  85. package/dist/core/launchBanner.js.map +1 -0
  86. package/dist/core/modelLabel.d.ts +19 -0
  87. package/dist/core/modelLabel.js +26 -0
  88. package/dist/core/modelLabel.js.map +1 -0
  89. package/dist/core/plainToolIndication.d.ts +15 -0
  90. package/dist/core/plainToolIndication.js +174 -0
  91. package/dist/core/plainToolIndication.js.map +1 -0
  92. package/dist/core/reasoningBlocks.d.ts +65 -0
  93. package/dist/core/reasoningBlocks.js +103 -0
  94. package/dist/core/reasoningBlocks.js.map +1 -0
  95. package/dist/core/refusal.d.ts +53 -0
  96. package/dist/core/refusal.js +133 -0
  97. package/dist/core/refusal.js.map +1 -0
  98. package/dist/core/runHeader.d.ts +38 -0
  99. package/dist/core/runHeader.js +42 -0
  100. package/dist/core/runHeader.js.map +1 -0
  101. package/dist/core/runStats.d.ts +52 -0
  102. package/dist/core/runStats.js +118 -0
  103. package/dist/core/runStats.js.map +1 -0
  104. package/dist/core/shell/ShellCommandFailedError.d.ts +53 -0
  105. package/dist/core/shell/ShellCommandFailedError.js +67 -0
  106. package/dist/core/shell/ShellCommandFailedError.js.map +1 -0
  107. package/dist/core/shell/abstention.d.ts +88 -0
  108. package/dist/core/shell/abstention.js +184 -0
  109. package/dist/core/shell/abstention.js.map +1 -0
  110. package/dist/core/shell/approvalCapture.d.ts +271 -0
  111. package/dist/core/shell/approvalCapture.js +108 -0
  112. package/dist/core/shell/approvalCapture.js.map +1 -0
  113. package/dist/core/shell/approvalStop.d.ts +123 -0
  114. package/dist/core/shell/approvalStop.js +269 -0
  115. package/dist/core/shell/approvalStop.js.map +1 -0
  116. package/dist/core/shell/arity.d.ts +6 -0
  117. package/dist/core/shell/arity.js +20 -6
  118. package/dist/core/shell/arity.js.map +1 -1
  119. package/dist/core/shell/denylist.d.ts +11 -0
  120. package/dist/core/shell/denylist.js +37 -0
  121. package/dist/core/shell/denylist.js.map +1 -0
  122. package/dist/core/shell/escalationSeverity.d.ts +141 -0
  123. package/dist/core/shell/escalationSeverity.js +89 -0
  124. package/dist/core/shell/escalationSeverity.js.map +1 -0
  125. package/dist/core/shell/framing.d.ts +190 -0
  126. package/dist/core/shell/framing.js +633 -0
  127. package/dist/core/shell/framing.js.map +1 -0
  128. package/dist/core/shell/hardline.d.ts +103 -0
  129. package/dist/core/shell/hardline.js +780 -0
  130. package/dist/core/shell/hardline.js.map +1 -0
  131. package/dist/core/shell/negotiation.d.ts +328 -0
  132. package/dist/core/shell/negotiation.js +488 -0
  133. package/dist/core/shell/negotiation.js.map +1 -0
  134. package/dist/core/shell/normalize.d.ts +44 -4
  135. package/dist/core/shell/normalize.js +61 -7
  136. package/dist/core/shell/normalize.js.map +1 -1
  137. package/dist/core/shell/openWorld.d.ts +263 -0
  138. package/dist/core/shell/openWorld.js +1188 -0
  139. package/dist/core/shell/openWorld.js.map +1 -0
  140. package/dist/core/shell/rater.d.ts +873 -0
  141. package/dist/core/shell/rater.js +1454 -0
  142. package/dist/core/shell/rater.js.map +1 -0
  143. package/dist/core/shell/raterModel.d.ts +41 -0
  144. package/dist/core/shell/raterModel.js +51 -0
  145. package/dist/core/shell/raterModel.js.map +1 -0
  146. package/dist/core/shell/raterVocabulary.d.ts +121 -0
  147. package/dist/core/shell/raterVocabulary.js +116 -0
  148. package/dist/core/shell/raterVocabulary.js.map +1 -0
  149. package/dist/core/shell/rejection.d.ts +69 -0
  150. package/dist/core/shell/rejection.js +38 -0
  151. package/dist/core/shell/rejection.js.map +1 -0
  152. package/dist/core/toolCallRepair/grammar.d.ts +41 -0
  153. package/dist/core/toolCallRepair/grammar.js +116 -0
  154. package/dist/core/toolCallRepair/grammar.js.map +1 -0
  155. package/dist/core/toolCallRepair/index.d.ts +2 -0
  156. package/dist/core/toolCallRepair/index.js +7 -0
  157. package/dist/core/toolCallRepair/index.js.map +1 -0
  158. package/dist/core/toolCallRepair/payload.d.ts +36 -0
  159. package/dist/core/toolCallRepair/payload.js +341 -0
  160. package/dist/core/toolCallRepair/payload.js.map +1 -0
  161. package/dist/core/toolCallRepair/promote.d.ts +45 -0
  162. package/dist/core/toolCallRepair/promote.js +90 -0
  163. package/dist/core/toolCallRepair/promote.js.map +1 -0
  164. package/dist/core/toolDisplay.d.ts +123 -0
  165. package/dist/core/toolDisplay.js +451 -0
  166. package/dist/core/toolDisplay.js.map +1 -0
  167. package/dist/core/toolOutputChannel.d.ts +95 -0
  168. package/dist/core/toolOutputChannel.js +165 -0
  169. package/dist/core/toolOutputChannel.js.map +1 -0
  170. package/dist/core/types.d.ts +378 -16
  171. package/dist/core/types.js.map +1 -1
  172. package/dist/history/historyFormat.d.ts +28 -0
  173. package/dist/history/historyFormat.js +127 -0
  174. package/dist/history/historyFormat.js.map +1 -0
  175. package/dist/history/historyStore.d.ts +198 -0
  176. package/dist/history/historyStore.js +482 -0
  177. package/dist/history/historyStore.js.map +1 -0
  178. package/dist/history/recordSession.d.ts +37 -0
  179. package/dist/history/recordSession.js +56 -0
  180. package/dist/history/recordSession.js.map +1 -0
  181. package/dist/index.d.ts +4 -0
  182. package/dist/index.js +4 -0
  183. package/dist/index.js.map +1 -1
  184. package/dist/providers/anthropic.d.ts +1 -1
  185. package/dist/providers/anthropic.js +17 -10
  186. package/dist/providers/anthropic.js.map +1 -1
  187. package/dist/providers/configurationPassthrough.d.ts +107 -0
  188. package/dist/providers/configurationPassthrough.js +148 -0
  189. package/dist/providers/configurationPassthrough.js.map +1 -0
  190. package/dist/providers/deepseek.d.ts +1 -1
  191. package/dist/providers/deepseek.js +5 -10
  192. package/dist/providers/deepseek.js.map +1 -1
  193. package/dist/providers/geminiSchemaSanitizer.d.ts +55 -0
  194. package/dist/providers/geminiSchemaSanitizer.js +347 -0
  195. package/dist/providers/geminiSchemaSanitizer.js.map +1 -0
  196. package/dist/providers/geminiThinking.d.ts +60 -0
  197. package/dist/providers/geminiThinking.js +92 -0
  198. package/dist/providers/geminiThinking.js.map +1 -0
  199. package/dist/providers/google-genai.d.ts +1 -1
  200. package/dist/providers/google-genai.js +23 -11
  201. package/dist/providers/google-genai.js.map +1 -1
  202. package/dist/providers/groq.d.ts +1 -1
  203. package/dist/providers/groq.js +17 -10
  204. package/dist/providers/groq.js.map +1 -1
  205. package/dist/providers/huggingface.d.ts +25 -0
  206. package/dist/providers/huggingface.js +69 -0
  207. package/dist/providers/huggingface.js.map +1 -0
  208. package/dist/providers/modelCatalog.d.ts +109 -0
  209. package/dist/providers/modelCatalog.js +245 -0
  210. package/dist/providers/modelCatalog.js.map +1 -0
  211. package/dist/providers/modelDiscovery.d.ts +153 -6
  212. package/dist/providers/modelDiscovery.js +295 -41
  213. package/dist/providers/modelDiscovery.js.map +1 -1
  214. package/dist/providers/ollama.d.ts +19 -5
  215. package/dist/providers/ollama.js +72 -52
  216. package/dist/providers/ollama.js.map +1 -1
  217. package/dist/providers/openai.d.ts +1 -1
  218. package/dist/providers/openai.js +39 -10
  219. package/dist/providers/openai.js.map +1 -1
  220. package/dist/providers/openrouter.d.ts +27 -5
  221. package/dist/providers/openrouter.js +88 -36
  222. package/dist/providers/openrouter.js.map +1 -1
  223. package/dist/providers/vertexai.d.ts +1 -1
  224. package/dist/providers/vertexai.js +24 -11
  225. package/dist/providers/vertexai.js.map +1 -1
  226. package/dist/providers/xai.d.ts +1 -1
  227. package/dist/providers/xai.js +25 -10
  228. package/dist/providers/xai.js.map +1 -1
  229. package/dist/runtime/askStructured.d.ts +105 -0
  230. package/dist/runtime/askStructured.js +120 -0
  231. package/dist/runtime/askStructured.js.map +1 -0
  232. package/dist/runtime/conversation.d.ts +64 -0
  233. package/dist/runtime/conversation.js +171 -0
  234. package/dist/runtime/conversation.js.map +1 -0
  235. package/dist/runtime/singleShot.d.ts +39 -5
  236. package/dist/runtime/singleShot.js +115 -36
  237. package/dist/runtime/singleShot.js.map +1 -1
  238. package/dist/runtime/structuredOutput.d.ts +104 -0
  239. package/dist/runtime/structuredOutput.js +393 -0
  240. package/dist/runtime/structuredOutput.js.map +1 -0
  241. package/dist/utils/ProgressIndicator.d.ts +21 -0
  242. package/dist/utils/ProgressIndicator.js +30 -3
  243. package/dist/utils/ProgressIndicator.js.map +1 -1
  244. package/dist/utils/aiignoreUtils.js.map +1 -1
  245. package/dist/utils/binaryOutputUtils.js.map +1 -1
  246. package/dist/utils/consoleUtils.d.ts +95 -0
  247. package/dist/utils/consoleUtils.js +112 -2
  248. package/dist/utils/consoleUtils.js.map +1 -1
  249. package/dist/utils/crashHandler.d.ts +87 -0
  250. package/dist/utils/crashHandler.js +128 -0
  251. package/dist/utils/crashHandler.js.map +1 -0
  252. package/dist/utils/debugDump.d.ts +134 -0
  253. package/dist/utils/debugDump.js +381 -0
  254. package/dist/utils/debugDump.js.map +1 -0
  255. package/dist/utils/debugUtils.d.ts +13 -4
  256. package/dist/utils/debugUtils.js +36 -13
  257. package/dist/utils/debugUtils.js.map +1 -1
  258. package/dist/utils/displayWidth.d.ts +53 -0
  259. package/dist/utils/displayWidth.js +195 -0
  260. package/dist/utils/displayWidth.js.map +1 -0
  261. package/dist/utils/fileUtils.d.ts +20 -1
  262. package/dist/utils/fileUtils.js +35 -2
  263. package/dist/utils/fileUtils.js.map +1 -1
  264. package/dist/utils/llmUtils.d.ts +39 -8
  265. package/dist/utils/llmUtils.js +76 -8
  266. package/dist/utils/llmUtils.js.map +1 -1
  267. package/dist/utils/redactSecrets.d.ts +63 -0
  268. package/dist/utils/redactSecrets.js +286 -0
  269. package/dist/utils/redactSecrets.js.map +1 -0
  270. package/dist/utils/systemPromptNotes.d.ts +222 -0
  271. package/dist/utils/systemPromptNotes.js +338 -0
  272. package/dist/utils/systemPromptNotes.js.map +1 -0
  273. package/dist/utils/systemUtils.d.ts +18 -1
  274. package/dist/utils/systemUtils.js +38 -3
  275. package/dist/utils/systemUtils.js.map +1 -1
  276. package/dist/utils/toolMatching.d.ts +30 -0
  277. package/dist/utils/toolMatching.js +44 -0
  278. package/dist/utils/toolMatching.js.map +1 -0
  279. package/dist/utils/untrustedText.d.ts +86 -0
  280. package/dist/utils/untrustedText.js +101 -0
  281. package/dist/utils/untrustedText.js.map +1 -0
  282. package/package.json +21 -6
  283. package/schema/gsloth-config.schema.json +1979 -353
  284. package/dist/core/shell/allowlist.d.ts +0 -75
  285. package/dist/core/shell/allowlist.js +0 -187
  286. package/dist/core/shell/allowlist.js.map +0 -1
  287. package/dist/core/shell/judge.d.ts +0 -161
  288. package/dist/core/shell/judge.js +0 -261
  289. package/dist/core/shell/judge.js.map +0 -1
@@ -24,6 +24,7 @@
24
24
  * `{ providerId, model }` maps directly onto a `RawGthConfig.llm`.
25
25
  */
26
26
  import { availableDefaultConfigs } from '#src/config.js';
27
+ import { CONFIG_SCHEMA_POINTER } from '#src/constants.js';
27
28
  import { displayDebug } from '#src/utils/consoleUtils.js';
28
29
  import { env } from '#src/utils/systemUtils.js';
29
30
  /** Default Ollama host, matching the Ollama CLI/library default. */
@@ -51,13 +52,20 @@ const chatOnly = (id) => !NON_CHAT_PATTERN.test(id);
51
52
  * Provider registry. The curated `preferredModels` are the models we have
52
53
  * tested with Gaunt Sloth's agent loop; defaults mirror the `init` templates in
53
54
  * each `#src/providers/<id>.js` factory.
55
+ *
56
+ * CFG-22 (2026-07-24): the CLOUD curated lists were trimmed to 1-2 current-gen ids/provider
57
+ * (head-first = the runtime default via getCuratedFallbackModel). Every surviving cloud id was live
58
+ * tool-call-validated with a `gth eval` identity matrix (a marker-read that proves a real tool
59
+ * call), with two exceptions: vertexai (no ADC here → mirrors the google-genai head) and ollama
60
+ * (local ids, out of the cloud-trim scope — kept as-is, validated against the local daemon if
61
+ * present). A dead id was caught and dropped: groq's qwen 404'd (`model_not_found`).
54
62
  */
55
63
  export const PROVIDER_DESCRIPTORS = [
56
64
  {
57
65
  id: 'anthropic',
58
66
  label: 'Anthropic (Claude)',
59
67
  apiKeyEnvironmentVariables: ['ANTHROPIC_API_KEY'],
60
- preferredModels: ['claude-sonnet-4-6', 'claude-opus-4-8', 'claude-haiku-4-5'],
68
+ preferredModels: ['claude-sonnet-5', 'claude-opus-4-8'],
61
69
  discovery: {
62
70
  kind: 'anthropic',
63
71
  modelsUrl: () => 'https://api.anthropic.com/v1/models',
@@ -68,7 +76,7 @@ export const PROVIDER_DESCRIPTORS = [
68
76
  id: 'openai',
69
77
  label: 'OpenAI',
70
78
  apiKeyEnvironmentVariables: ['OPENAI_API_KEY'],
71
- preferredModels: ['gpt-5.5', 'gpt-5.4-mini', 'gpt-5.3-codex', 'gpt-5.4-nano'],
79
+ preferredModels: ['gpt-5.6', 'gpt-5.5'],
72
80
  discovery: {
73
81
  kind: 'openai',
74
82
  modelsUrl: () => 'https://api.openai.com/v1/models',
@@ -80,21 +88,30 @@ export const PROVIDER_DESCRIPTORS = [
80
88
  id: 'google-genai',
81
89
  label: 'Google AI Studio (Gemini)',
82
90
  apiKeyEnvironmentVariables: ['GOOGLE_API_KEY'],
83
- // AI Studio exposes the 3.1 Pro tier only as a `-preview` slug.
84
- preferredModels: [
85
- 'gemini-3.5-flash',
86
- 'gemini-3.1-pro-preview',
87
- 'gemini-2.5-pro',
88
- 'gemini-2.5-flash',
89
- ],
90
- discovery: { kind: 'none' },
91
+ // GA-only defaults (Andrew 2026-07-24): the Gemini 3.x Pro tier is preview-only, so the curated
92
+ // defaults stay on GA flash tiers — gemini-3.6-flash (head, verified live via ListModels +
93
+ // tool-call probe) and gemini-3.5-flash-lite (the GA routing/summarizing workhorse).
94
+ preferredModels: ['gemini-3.6-flash', 'gemini-3.5-flash-lite'],
95
+ discovery: {
96
+ kind: 'google',
97
+ // Native ListModels — returns the full current family (incl. the 3.x tier)
98
+ // that the OpenAI-compat `/v1beta/openai/models` shim can lag behind.
99
+ modelsUrl: () => 'https://generativelanguage.googleapis.com/v1beta/models',
100
+ // The key rides the header form so it reuses the existing authHeader machinery
101
+ // (no `?key=` URL-building). No `filter`: the google parse path decides chat
102
+ // capability via `supportedGenerationMethods`, not the name-regex chatOnly.
103
+ authHeader: (key) => ({ 'x-goog-api-key': key }),
104
+ },
91
105
  },
92
106
  {
93
107
  id: 'vertexai',
94
108
  label: 'Google Vertex AI (Gemini)',
95
109
  apiKeyEnvironmentVariables: [],
96
- // Vertex publishes the same family under bare (non-preview) slugs.
97
- preferredModels: ['gemini-3.5-flash', 'gemini-3.1-pro', 'gemini-2.5-pro', 'gemini-2.5-flash'],
110
+ // Vertex mirrors the AI Studio (google-genai) family under the SAME slugs (the older "bare-slug"
111
+ // assumption was wrong). Verified live 2026-07-24 (Andrew, ADC box): all mirror-genai models
112
+ // resolve, and these GA flash defaults resolve with no extra config (preview models, not used
113
+ // here, are global-location only). Kept exactly in sync with the google-genai GA-only defaults.
114
+ preferredModels: ['gemini-3.6-flash', 'gemini-3.5-flash-lite'],
98
115
  discovery: { kind: 'none' },
99
116
  requiresExternalAuth: true,
100
117
  },
@@ -102,7 +119,7 @@ export const PROVIDER_DESCRIPTORS = [
102
119
  id: 'groq',
103
120
  label: 'Groq',
104
121
  apiKeyEnvironmentVariables: ['GROQ_API_KEY'],
105
- preferredModels: ['openai/gpt-oss-120b', 'qwen/qwen3.6-27b', 'openai/gpt-oss-20b'],
122
+ preferredModels: ['openai/gpt-oss-120b', 'openai/gpt-oss-20b'],
106
123
  discovery: {
107
124
  kind: 'openai',
108
125
  // Groq's OpenAI-compatible surface lives under /openai/v1.
@@ -127,7 +144,7 @@ export const PROVIDER_DESCRIPTORS = [
127
144
  id: 'xai',
128
145
  label: 'xAI (Grok)',
129
146
  apiKeyEnvironmentVariables: ['XAI_API_KEY'],
130
- preferredModels: ['grok-4.3', 'grok-build-0.1'],
147
+ preferredModels: ['grok-4.5', 'grok-4.3'],
131
148
  discovery: {
132
149
  kind: 'openai',
133
150
  modelsUrl: () => 'https://api.x.ai/v1/models',
@@ -141,7 +158,7 @@ export const PROVIDER_DESCRIPTORS = [
141
158
  // OPENROUTER_API_KEY is accepted as an alias.
142
159
  label: 'OpenRouter',
143
160
  apiKeyEnvironmentVariables: ['OPEN_ROUTER_API_KEY', 'OPENROUTER_API_KEY'],
144
- preferredModels: ['qwen/qwen3-coder', 'anthropic/claude-sonnet-4.6', 'openai/gpt-5.5'],
161
+ preferredModels: ['moonshotai/kimi-k3', 'deepseek/deepseek-v4-pro'],
145
162
  discovery: {
146
163
  kind: 'openai',
147
164
  modelsUrl: () => 'https://openrouter.ai/api/v1/models',
@@ -149,6 +166,19 @@ export const PROVIDER_DESCRIPTORS = [
149
166
  filter: chatOnly,
150
167
  },
151
168
  },
169
+ {
170
+ id: 'huggingface',
171
+ label: 'Hugging Face (Inference Providers)',
172
+ apiKeyEnvironmentVariables: ['HF_TOKEN', 'HUGGINGFACEHUB_API_TOKEN', 'HF_API_KEY'],
173
+ preferredModels: ['zai-org/GLM-5.2', 'moonshotai/Kimi-K2.7-Code'],
174
+ discovery: {
175
+ kind: 'openai',
176
+ // HF's OpenAI-compatible router exposes /v1/models across all inference providers.
177
+ modelsUrl: () => 'https://router.huggingface.co/v1/models',
178
+ authHeader: bearer,
179
+ filter: chatOnly,
180
+ },
181
+ },
152
182
  {
153
183
  id: 'ollama',
154
184
  label: 'Ollama (local)',
@@ -188,6 +218,54 @@ export function findApiKeyEnvVar(descriptor) {
188
218
  }
189
219
  return undefined;
190
220
  }
221
+ /** A non-empty string, ignoring surrounding whitespace. */
222
+ function isNonEmptyString(value) {
223
+ return typeof value === 'string' && value.trim().length > 0;
224
+ }
225
+ /**
226
+ * Decide whether an LLM spec has **no resolvable API key at all** for its provider, and if so
227
+ * report which provider and which variable names would have supplied one.
228
+ *
229
+ * This is the classifier the config loader uses to tell a missing secret apart from a provider
230
+ * that broke for some other reason, and it answers that question from the ENVIRONMENT rather than
231
+ * from the text of whatever error a provider SDK happened to throw. Message-sniffing would be
232
+ * wrong on both sides: SDK wording is not ours to depend on, and several providers word the same
233
+ * failure differently (some name the variable, some do not).
234
+ *
235
+ * Returns `undefined` — meaning "not a missing-key failure" — when any of these hold:
236
+ * - the provider is unknown here, or authenticates outside an env-var key (vertexai via ADC,
237
+ * ollama locally), so there is no key to be missing;
238
+ * - the config carries an inline `llm.apiKey`;
239
+ * - the config names an `llm.apiKeyEnvironmentVariable` that IS set;
240
+ * - any variable the provider accepts is set.
241
+ *
242
+ * The last two matter for correctness, not tidiness: classifying a provider outage as a missing
243
+ * key when a key was in fact present would defeat the whole distinction.
244
+ */
245
+ export function findMissingProviderKey(providerType, llmConfig) {
246
+ const descriptor = PROVIDER_DESCRIPTORS.find((candidate) => candidate.id === providerType);
247
+ if (!descriptor || descriptor.apiKeyEnvironmentVariables.length === 0) {
248
+ return undefined;
249
+ }
250
+ if (isNonEmptyString(llmConfig?.apiKey)) {
251
+ return undefined;
252
+ }
253
+ const declaredEnvVar = isNonEmptyString(llmConfig?.apiKeyEnvironmentVariable)
254
+ ? llmConfig.apiKeyEnvironmentVariable.trim()
255
+ : undefined;
256
+ if (declaredEnvVar && isNonEmptyString(env[declaredEnvVar])) {
257
+ return undefined;
258
+ }
259
+ if (findApiKeyEnvVar(descriptor)) {
260
+ return undefined;
261
+ }
262
+ // The config-declared variable leads: it is the name the user chose, so it is the name they will
263
+ // look for. The provider's own accepted names follow, in the order it checks them.
264
+ const envVars = declaredEnvVar
265
+ ? [declaredEnvVar, ...descriptor.apiKeyEnvironmentVariables.filter((n) => n !== declaredEnvVar)]
266
+ : [...descriptor.apiKeyEnvironmentVariables];
267
+ return { provider: descriptor.id, envVar: envVars[0], envVars };
268
+ }
191
269
  /**
192
270
  * Build the {@link ModelInfo} list for a provider given the descriptor and an
193
271
  * optional set of model ids known to actually exist (e.g. from a live
@@ -196,20 +274,92 @@ export function findApiKeyEnvVar(descriptor) {
196
274
  * - When `discoveredModels` is omitted, the curated `preferredModels` are
197
275
  * returned, all flagged ⭐ preferred.
198
276
  * - When provided, every discovered model is listed; those that also appear in
199
- * the curated `preferredModels` are flagged ⭐ preferred.
277
+ * the curated `preferredModels` are flagged ⭐ preferred. The list is ordered
278
+ * **preferred first** (in curated order, so the recommended default sits on top
279
+ * and is pre-selected), then every other discovered model **alphabetically** —
280
+ * so a large catalog (e.g. OpenRouter's 200+ models) is navigable instead of
281
+ * arriving in the endpoint's arbitrary order.
200
282
  */
201
283
  export function buildModelList(descriptor, discoveredModels) {
202
284
  if (!discoveredModels) {
203
285
  return descriptor.preferredModels.map((id) => ({ id, preferred: true }));
204
286
  }
205
- const preferred = new Set(descriptor.preferredModels);
206
- // Match preferred ids against the discovered tag, ignoring an explicit
207
- // `:latest` suffix so `qwen3` flags `qwen3:latest`.
208
- const isPreferred = (id) => preferred.has(id) || preferred.has(id.replace(/:latest$/, ''));
209
- return discoveredModels.map((id) => ({ id, preferred: isPreferred(id) }));
287
+ // Rank a discovered id by its position in the curated list, ignoring an explicit
288
+ // `:latest` suffix so `qwen3` matches `qwen3:latest`; `undefined` = not preferred.
289
+ const preferredRank = new Map(descriptor.preferredModels.map((id, i) => [id, i]));
290
+ const rankOf = (id) => preferredRank.get(id) ?? preferredRank.get(id.replace(/:latest$/, ''));
291
+ const isPreferred = (id) => rankOf(id) !== undefined;
292
+ const ordered = [...discoveredModels].sort((a, b) => {
293
+ const ra = rankOf(a);
294
+ const rb = rankOf(b);
295
+ if (ra !== undefined && rb !== undefined)
296
+ return ra - rb; // both preferred → curated order
297
+ if (ra !== undefined)
298
+ return -1; // preferred sorts before non-preferred
299
+ if (rb !== undefined)
300
+ return 1;
301
+ return a.localeCompare(b); // neither preferred → alphabetical
302
+ });
303
+ return ordered.map((id) => ({ id, preferred: isPreferred(id) }));
304
+ }
305
+ /**
306
+ * The single fallback source of truth for a provider's default model id (CFG-14).
307
+ *
308
+ * Returns the top curated ⭐ `preferredModels` entry for the provider — the one
309
+ * id that provider factories fall back to when a config carries no `model`, and
310
+ * the id first-run writes when live discovery is impossible. Centralising it here
311
+ * means the fallback lives in exactly ONE place (the curated registry above)
312
+ * instead of being duplicated as a literal in every `providers/<id>.ts`.
313
+ *
314
+ * Every registered provider is required to carry at least one curated model, so
315
+ * this always resolves for a known id; it throws for an unknown provider or a
316
+ * provider whose `preferredModels` is empty (a developer error — the invariant
317
+ * that the fallback source is complete would otherwise fail silently).
318
+ *
319
+ * @returns the curated default model id (always defined for a known provider).
320
+ */
321
+ export function getCuratedFallbackModel(providerId) {
322
+ const model = PROVIDER_DESCRIPTORS.find((d) => d.id === providerId)?.preferredModels[0];
323
+ if (!model) {
324
+ throw new Error(`No curated fallback model registered for provider "${providerId}".`);
325
+ }
326
+ return model;
210
327
  }
211
- /** Live-fetch timeout: short enough to never block first-run for long. */
328
+ /**
329
+ * Build the minimal `.gsloth.config.json` body an `init` template writes for a
330
+ * provider (CFG-14). When `model` is omitted, the `model` key is left OUT of the
331
+ * config entirely, so the provider factory resolves it at run time from
332
+ * {@link getCuratedFallbackModel} — the single curated source that tracks the
333
+ * installed version, rather than a literal frozen into the user's file that 404s
334
+ * once the model is retired.
335
+ *
336
+ * A `$schema` pointer ({@link CONFIG_SCHEMA_POINTER}) is written first so editors offer
337
+ * autocomplete/validation against the shipped JSON Schema (GS2-1). `$schema` is a known,
338
+ * runtime-ignored config field (see the zod schema), so it never affects loading.
339
+ */
340
+ export function buildInitConfigContent(providerId, model) {
341
+ const llm = { type: providerId };
342
+ if (model)
343
+ llm.model = model;
344
+ return JSON.stringify({ $schema: CONFIG_SCHEMA_POINTER, llm }, null, 2);
345
+ }
346
+ /**
347
+ * Live-fetch timeout for the NON-interactive probes: provider detection's Ollama
348
+ * liveness check and `resolveInitModel`. Short enough to never block for long when
349
+ * a daemon is down or a key is dead — every current caller keeps this default.
350
+ */
212
351
  const DISCOVERY_TIMEOUT_MS = 2000;
352
+ /**
353
+ * CFG-21 — the timeout for the *interactive* first-run model fetch. The dialog is
354
+ * blocking on a human who just picked a provider, so it can afford to wait a lot
355
+ * longer than the background probes for a large cloud catalog (OpenRouter ~300
356
+ * models) to arrive over a cold connection, rather than losing the 2s race and
357
+ * silently dropping to a 3-item curated stub. Threaded per-call so ONLY the dialog
358
+ * uses it — `detectProviders` / `resolveInitModel` stay on the short
359
+ * {@link DISCOVERY_TIMEOUT_MS} probe (a long global would hang the *provider* step
360
+ * whenever the local Ollama daemon is down).
361
+ */
362
+ export const INTERACTIVE_MODEL_FETCH_TIMEOUT_MS = 12_000;
213
363
  /**
214
364
  * Parse the `id`s out of a models-endpoint payload. Both the OpenAI-compatible
215
365
  * shape and Anthropic's native shape use a top-level `{ data: [{ id }] }`
@@ -223,30 +373,66 @@ function parseModelIds(body) {
223
373
  .map((m) => m?.id)
224
374
  .filter((id) => typeof id === 'string' && id.length > 0);
225
375
  }
376
+ /**
377
+ * Parse the Google AI Studio (`google-genai`) native ListModels envelope
378
+ * `{ models: [{ name: 'models/<id>', supportedGenerationMethods: [...] }] }`.
379
+ *
380
+ * Unlike the OpenAI/Anthropic `data[].id` shape, this endpoint returns the whole
381
+ * generative-language family — embeddings, TTS, image, etc. — alongside the chat
382
+ * models, so chat capability is decided by a **data-driven** check
383
+ * (`supportedGenerationMethods` includes `generateContent`) that REPLACES the
384
+ * name-regex `chatOnly` filter for this provider. Each surviving `name` is a
385
+ * fully-qualified `models/<id>`; the `models/` prefix is stripped to a bare slug
386
+ * (`gemini-3.6-flash`) — the form `ChatGoogleGenerativeAI` expects and the id the
387
+ * curated ⭐ overlay in {@link buildModelList} matches on.
388
+ */
389
+ function parseGoogleModels(body) {
390
+ const models = body?.models;
391
+ if (!Array.isArray(models))
392
+ return [];
393
+ return (models
394
+ .filter((m) => {
395
+ const methods = m?.supportedGenerationMethods;
396
+ // Data-driven chat-capability check (replaces the name-regex chatOnly for google).
397
+ return Array.isArray(methods) && methods.includes('generateContent');
398
+ })
399
+ .map((m) => m?.name)
400
+ .filter((name) => typeof name === 'string' && name.length > 0)
401
+ // Strip the `models/` prefix to the bare slug ChatGoogleGenerativeAI / the ⭐ overlay expect.
402
+ .map((name) => name.replace(/^models\//, '')));
403
+ }
226
404
  /**
227
405
  * Internal: run live discovery for one descriptor, distinguishing a successful
228
- * live query from a curated fallback.
406
+ * live query from a curated fallback and — via {@link ModelDiscoveryStatus} —
407
+ * a by-design curated result from an attempted-and-failed one (CFG-21).
229
408
  *
230
- * @returns `{ models, live }` where `live` is true only when the models came
231
- * from a successful, non-empty live `/v1/models` query (used as the Ollama
232
- * availability signal). `live` is false for curated/fallback results.
409
+ * @param options.timeoutMs live-fetch timeout, defaulting to the short
410
+ * {@link DISCOVERY_TIMEOUT_MS} so background probes are unchanged.
411
+ * @returns `{ models, live, status }`. `live` is true only when the models came
412
+ * from a successful, non-empty live `/v1/models` query (kept as the Ollama
413
+ * availability signal). `status` is `live` in that case, `fallback` when a live
414
+ * query was attempted but failed (network/timeout/non-2xx/empty), and `curated`
415
+ * when no live query was attempted (`kind:'none'` or no API key).
233
416
  */
234
- async function discoverModelsInternal(descriptor) {
235
- const curated = () => ({
417
+ async function discoverModelsInternal(descriptor, options = {}) {
418
+ const timeoutMs = options.timeoutMs ?? DISCOVERY_TIMEOUT_MS;
419
+ const curated = (status) => ({
236
420
  models: buildModelList(descriptor),
237
421
  live: false,
422
+ status,
238
423
  });
239
424
  const { discovery } = descriptor;
240
425
  if (discovery.kind === 'none' || !discovery.modelsUrl) {
241
- return curated();
426
+ return curated('curated');
242
427
  }
243
428
  // Resolve an API key for cloud providers; ollama needs none.
244
429
  let key = '';
245
430
  if (descriptor.id !== 'ollama') {
246
431
  const envVar = findApiKeyEnvVar(descriptor);
247
432
  if (!envVar) {
248
- // No key → don't hit the network; show the curated catalog.
249
- return curated();
433
+ // No key → don't hit the network; show the curated catalog. This is the
434
+ // by-design path, NOT a "couldn't reach" degrade — hence `curated`.
435
+ return curated('curated');
250
436
  }
251
437
  key = env[envVar] ?? '';
252
438
  }
@@ -259,26 +445,29 @@ async function discoverModelsInternal(descriptor) {
259
445
  const res = await fetch(url, {
260
446
  method: 'GET',
261
447
  headers,
262
- signal: AbortSignal.timeout(DISCOVERY_TIMEOUT_MS),
448
+ signal: AbortSignal.timeout(timeoutMs),
263
449
  });
264
450
  if (!res.ok) {
265
451
  displayDebug(`Model discovery for "${descriptor.id}" returned HTTP ${res.status}.`);
266
- return curated();
452
+ return curated('fallback');
267
453
  }
268
454
  const body = await res.json();
269
- let ids = parseModelIds(body);
455
+ // The google native ListModels envelope (`{ models: [{ name, supportedGenerationMethods }] }`)
456
+ // differs from the OpenAI/Anthropic `data[].id` shape and carries its own
457
+ // capability-based chat filter + `models/` prefix strip inside the parser.
458
+ let ids = discovery.kind === 'google' ? parseGoogleModels(body) : parseModelIds(body);
270
459
  if (discovery.filter) {
271
460
  ids = ids.filter(discovery.filter);
272
461
  }
273
462
  if (ids.length === 0) {
274
463
  displayDebug(`Model discovery for "${descriptor.id}" returned no usable models.`);
275
- return curated();
464
+ return curated('fallback');
276
465
  }
277
- return { models: buildModelList(descriptor, ids), live: true };
466
+ return { models: buildModelList(descriptor, ids), live: true, status: 'live' };
278
467
  }
279
468
  catch (e) {
280
469
  displayDebug(`Model discovery for "${descriptor.id}" failed: ${e instanceof Error ? e.message : String(e)}`);
281
- return curated();
470
+ return curated('fallback');
282
471
  }
283
472
  }
284
473
  /**
@@ -288,6 +477,9 @@ async function discoverModelsInternal(descriptor) {
288
477
  * - `kind: 'openai' | 'anthropic'` → fetches the models endpoint with a short
289
478
  * timeout, parses `data[].id`, applies the chat-only `filter`, and overlays
290
479
  * the ⭐ preferred flags via `buildModelList(descriptor, liveIds)`.
480
+ * - `kind: 'google'` → fetches the native ListModels endpoint, parses
481
+ * `models[].name` keeping only `generateContent`-capable entries and stripping
482
+ * the `models/` prefix, then overlays the ⭐ preferred flags likewise.
291
483
  *
292
484
  * Best-effort: any error / non-2xx / malformed / empty payload falls back to
293
485
  * the curated list. This function NEVER throws — a bad key must degrade to the
@@ -297,12 +489,12 @@ async function discoverModelsInternal(descriptor) {
297
489
  * the curated catalog is returned directly. Ollama (no key, local daemon) is
298
490
  * always probed.
299
491
  */
300
- export async function discoverModels(providerId) {
492
+ export async function discoverModels(providerId, options) {
301
493
  const descriptor = PROVIDER_DESCRIPTORS.find((d) => d.id === providerId);
302
494
  if (!descriptor) {
303
495
  throw new Error(`Unknown provider: ${providerId}`);
304
496
  }
305
- const { models } = await discoverModelsInternal(descriptor);
497
+ const { models } = await discoverModelsInternal(descriptor, options);
306
498
  return models;
307
499
  }
308
500
  /**
@@ -311,9 +503,71 @@ export async function discoverModels(providerId) {
311
503
  * Live-discovers from the provider's models endpoint where possible (with a
312
504
  * curated fallback); returns the curated set for `kind: 'none'` providers. Does
313
505
  * not require the provider to be "available".
506
+ *
507
+ * `options.timeoutMs` (CFG-21) overrides the default short live-fetch timeout; the
508
+ * bare `listModels(providerId)` call is unchanged.
314
509
  */
315
- export async function listModels(providerId) {
316
- return discoverModels(providerId);
510
+ export async function listModels(providerId, options) {
511
+ return discoverModels(providerId, options);
512
+ }
513
+ /**
514
+ * CFG-21 — like {@link discoverModels} but also returns the model list's
515
+ * {@link ModelDiscoveryStatus} provenance, so an interactive caller (the first-run
516
+ * dialog) can tell an honest "couldn't reach the provider" degrade (`fallback`)
517
+ * apart from a by-design curated list (`curated`) and a real live catalog (`live`).
518
+ * Kept as a separate export so `listModels` / `discoverModels` keep their existing
519
+ * `(providerId) => ModelInfo[]` signatures other callers rely on.
520
+ *
521
+ * Never throws for a discovery failure (that degrades to `fallback`); it only
522
+ * throws for an unknown provider id, mirroring {@link discoverModels}.
523
+ */
524
+ export async function discoverModelsWithProvenance(providerId, options) {
525
+ const descriptor = PROVIDER_DESCRIPTORS.find((d) => d.id === providerId);
526
+ if (!descriptor) {
527
+ throw new Error(`Unknown provider: ${providerId}`);
528
+ }
529
+ const { models, status } = await discoverModelsInternal(descriptor, options);
530
+ return { models, status };
531
+ }
532
+ /**
533
+ * Resolve the model id that `init` should bake into a generated config for a
534
+ * provider (CFG-14) — the safeguard against writing a speculative id that 404s
535
+ * once the model is retired.
536
+ *
537
+ * - **Live discovery possible** (a key / running daemon and a responding
538
+ * `/v1/models` endpoint): returns a *verified-present* id — the highest-ranked
539
+ * curated ⭐ id that is actually in the live list (matched tolerant of an
540
+ * `:latest` suffix), or, when no curated id is live, the first live id.
541
+ * - **Live discovery impossible** (`kind: 'none'`, no key, offline, empty
542
+ * catalog): returns `undefined`. This is the ONLY speculative path, and it
543
+ * deliberately declines to invent a literal: the caller OMITS `model` so the
544
+ * provider factory falls back to {@link getCuratedFallbackModel} at run time
545
+ * (a single curated source that upgrades with the installed version).
546
+ *
547
+ * Never throws — a bad key or network error degrades to `undefined`, mirroring
548
+ * {@link discoverModels}.
549
+ */
550
+ export async function resolveInitModel(providerId) {
551
+ const descriptor = PROVIDER_DESCRIPTORS.find((d) => d.id === providerId);
552
+ if (!descriptor)
553
+ return undefined;
554
+ const { models, live } = await discoverModelsInternal(descriptor);
555
+ // Not a live catalog → do NOT emit a speculative literal; defer to the run-time
556
+ // curated fallback by omitting `model`.
557
+ if (!live || models.length === 0)
558
+ return undefined;
559
+ // Prefer the highest-ranked curated id that is actually present in the live
560
+ // list, tolerating an explicit `:latest` suffix (so curated `qwen3` matches a
561
+ // live `qwen3:latest`).
562
+ const strip = (id) => id.replace(/:latest$/, '');
563
+ const liveByStripped = new Map(models.map((m) => [strip(m.id), m.id]));
564
+ for (const curated of descriptor.preferredModels) {
565
+ const hit = liveByStripped.get(strip(curated));
566
+ if (hit)
567
+ return hit;
568
+ }
569
+ // No curated id is live → the first live id is still a verified-present choice.
570
+ return models[0].id;
317
571
  }
318
572
  /**
319
573
  * Detect every known provider on this machine and list its models.
@@ -1 +1 @@
1
- {"version":3,"file":"modelDiscovery.js","sourceRoot":"","sources":["../../src/providers/modelDiscovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modelDiscovery.js","sourceRoot":"","sources":["../../src/providers/modelDiscovery.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,19 @@
1
- import { BaseChatModel, type BaseChatModelParams } from '@langchain/core/language_models/chat_models';
2
- import { OpenAIChatInput } from '@langchain/openai';
3
- import { ChatOpenAIFields } from '@langchain/openai';
4
- export declare function processJsonConfig(llmConfig: OpenAIChatInput & ChatOpenAIFields & BaseChatModelParams): Promise<BaseChatModel>;
5
- export declare function init(configFileName: string): void;
1
+ import type { BaseChatModel, BaseChatModelParams } from '@langchain/core/language_models/chat_models';
2
+ import type { ChatOllamaInput } from '@langchain/ollama';
3
+ /**
4
+ * GS2-59 build a native `ChatOllama` client (`@langchain/ollama`, talking to Ollama's
5
+ * `/api/chat`). This replaces the previous `ChatOpenAI`→`/v1` client, which had two fatal
6
+ * properties for local thinking models: it DROPPED the model's separate reasoning field (the
7
+ * completions converter discards it — `__includeRawResponse` is openrouter-only), and it IGNORED
8
+ * `num_ctx` so a large agentic prompt starved the answer to empty content. `ChatOllama` fixes both:
9
+ * it honors `numCtx`, and it surfaces the model's thinking in `additional_kwargs.reasoning_content`
10
+ * — the exact field the reasoning pipeline (`pickReasoningDelta`) already reads — so the `/reasoning`
11
+ * panel populates with no downstream change.
12
+ *
13
+ * Ollama is a local, unauthenticated daemon, so the old OpenAI-client knobs are gone (2.0 migration
14
+ * note): point elsewhere with `OLLAMA_HOST`; the previous `configuration.baseURL` / placeholder
15
+ * `apiKey` fields no longer apply. If a reverse proxy in front of Ollama needs auth, set `headers`
16
+ * in the config (passed straight through to `ChatOllama`).
17
+ */
18
+ export declare function processJsonConfig(llmConfig: ChatOllamaInput & BaseChatModelParams): Promise<BaseChatModel>;
19
+ export declare function init(configFileName: string, force?: boolean, model?: string): void;