@mseep/clawdcursor 1.5.5

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 (354) hide show
  1. package/CHANGELOG.md +2264 -0
  2. package/LICENSE +21 -0
  3. package/README.md +385 -0
  4. package/SECURITY.md +44 -0
  5. package/SKILL.md +503 -0
  6. package/dist/core/agent-loop/agent.d.ts +42 -0
  7. package/dist/core/agent-loop/agent.js +1023 -0
  8. package/dist/core/agent-loop/agent.js.map +1 -0
  9. package/dist/core/agent-loop/batch-tool.d.ts +25 -0
  10. package/dist/core/agent-loop/batch-tool.js +218 -0
  11. package/dist/core/agent-loop/batch-tool.js.map +1 -0
  12. package/dist/core/agent-loop/coord-scale.d.ts +72 -0
  13. package/dist/core/agent-loop/coord-scale.js +89 -0
  14. package/dist/core/agent-loop/coord-scale.js.map +1 -0
  15. package/dist/core/agent-loop/focus-guard.d.ts +24 -0
  16. package/dist/core/agent-loop/focus-guard.js +29 -0
  17. package/dist/core/agent-loop/focus-guard.js.map +1 -0
  18. package/dist/core/agent-loop/project-mcp.d.ts +97 -0
  19. package/dist/core/agent-loop/project-mcp.js +253 -0
  20. package/dist/core/agent-loop/project-mcp.js.map +1 -0
  21. package/dist/core/agent-loop/prompt.d.ts +45 -0
  22. package/dist/core/agent-loop/prompt.js +426 -0
  23. package/dist/core/agent-loop/prompt.js.map +1 -0
  24. package/dist/core/agent-loop/tool-meta.d.ts +93 -0
  25. package/dist/core/agent-loop/tool-meta.js +651 -0
  26. package/dist/core/agent-loop/tool-meta.js.map +1 -0
  27. package/dist/core/agent-loop/tools.d.ts +38 -0
  28. package/dist/core/agent-loop/tools.js +2134 -0
  29. package/dist/core/agent-loop/tools.js.map +1 -0
  30. package/dist/core/agent-loop/types.d.ts +170 -0
  31. package/dist/core/agent-loop/types.js +12 -0
  32. package/dist/core/agent-loop/types.js.map +1 -0
  33. package/dist/core/agent.d.ts +51 -0
  34. package/dist/core/agent.js +245 -0
  35. package/dist/core/agent.js.map +1 -0
  36. package/dist/core/app-categories.d.ts +67 -0
  37. package/dist/core/app-categories.js +108 -0
  38. package/dist/core/app-categories.js.map +1 -0
  39. package/dist/core/banner.d.ts +70 -0
  40. package/dist/core/banner.js +245 -0
  41. package/dist/core/banner.js.map +1 -0
  42. package/dist/core/classify/capability.d.ts +45 -0
  43. package/dist/core/classify/capability.js +78 -0
  44. package/dist/core/classify/capability.js.map +1 -0
  45. package/dist/core/decompose/llm-decomposer.d.ts +35 -0
  46. package/dist/core/decompose/llm-decomposer.js +156 -0
  47. package/dist/core/decompose/llm-decomposer.js.map +1 -0
  48. package/dist/core/decompose/parser.d.ts +27 -0
  49. package/dist/core/decompose/parser.js +101 -0
  50. package/dist/core/decompose/parser.js.map +1 -0
  51. package/dist/core/observability/correlation.d.ts +19 -0
  52. package/dist/core/observability/correlation.js +36 -0
  53. package/dist/core/observability/correlation.js.map +1 -0
  54. package/dist/core/observability/cost-meter.d.ts +51 -0
  55. package/dist/core/observability/cost-meter.js +134 -0
  56. package/dist/core/observability/cost-meter.js.map +1 -0
  57. package/dist/core/observability/logger.d.ts +61 -0
  58. package/dist/core/observability/logger.js +550 -0
  59. package/dist/core/observability/logger.js.map +1 -0
  60. package/dist/core/router/aliases.d.ts +50 -0
  61. package/dist/core/router/aliases.js +104 -0
  62. package/dist/core/router/aliases.js.map +1 -0
  63. package/dist/core/router/normalize.d.ts +41 -0
  64. package/dist/core/router/normalize.js +80 -0
  65. package/dist/core/router/normalize.js.map +1 -0
  66. package/dist/core/safety.d.ts +126 -0
  67. package/dist/core/safety.js +568 -0
  68. package/dist/core/safety.js.map +1 -0
  69. package/dist/core/sense/a11y-resolver.d.ts +73 -0
  70. package/dist/core/sense/a11y-resolver.js +76 -0
  71. package/dist/core/sense/a11y-resolver.js.map +1 -0
  72. package/dist/core/sense/fingerprint.d.ts +41 -0
  73. package/dist/core/sense/fingerprint.js +123 -0
  74. package/dist/core/sense/fingerprint.js.map +1 -0
  75. package/dist/core/sense/rank.d.ts +70 -0
  76. package/dist/core/sense/rank.js +192 -0
  77. package/dist/core/sense/rank.js.map +1 -0
  78. package/dist/core/sense/reactive-check.d.ts +40 -0
  79. package/dist/core/sense/reactive-check.js +48 -0
  80. package/dist/core/sense/reactive-check.js.map +1 -0
  81. package/dist/core/sense/snapshot.d.ts +19 -0
  82. package/dist/core/sense/snapshot.js +100 -0
  83. package/dist/core/sense/snapshot.js.map +1 -0
  84. package/dist/core/sense/types.d.ts +66 -0
  85. package/dist/core/sense/types.js +9 -0
  86. package/dist/core/sense/types.js.map +1 -0
  87. package/dist/core/sense/ui-map-anchors.d.ts +7 -0
  88. package/dist/core/sense/ui-map-anchors.js +24 -0
  89. package/dist/core/sense/ui-map-anchors.js.map +1 -0
  90. package/dist/core/sense/ui-map-elements.d.ts +5 -0
  91. package/dist/core/sense/ui-map-elements.js +33 -0
  92. package/dist/core/sense/ui-map-elements.js.map +1 -0
  93. package/dist/core/sense/ui-map-find.d.ts +56 -0
  94. package/dist/core/sense/ui-map-find.js +153 -0
  95. package/dist/core/sense/ui-map-find.js.map +1 -0
  96. package/dist/core/sense/ui-map-fuse.d.ts +4 -0
  97. package/dist/core/sense/ui-map-fuse.js +44 -0
  98. package/dist/core/sense/ui-map-fuse.js.map +1 -0
  99. package/dist/core/sense/ui-map-geom.d.ts +3 -0
  100. package/dist/core/sense/ui-map-geom.js +16 -0
  101. package/dist/core/sense/ui-map-geom.js.map +1 -0
  102. package/dist/core/sense/ui-map-holder.d.ts +58 -0
  103. package/dist/core/sense/ui-map-holder.js +87 -0
  104. package/dist/core/sense/ui-map-holder.js.map +1 -0
  105. package/dist/core/sense/ui-map-normalize.d.ts +19 -0
  106. package/dist/core/sense/ui-map-normalize.js +65 -0
  107. package/dist/core/sense/ui-map-normalize.js.map +1 -0
  108. package/dist/core/sense/ui-map-render.d.ts +4 -0
  109. package/dist/core/sense/ui-map-render.js +34 -0
  110. package/dist/core/sense/ui-map-render.js.map +1 -0
  111. package/dist/core/sense/ui-map-resolve.d.ts +41 -0
  112. package/dist/core/sense/ui-map-resolve.js +59 -0
  113. package/dist/core/sense/ui-map-resolve.js.map +1 -0
  114. package/dist/core/sense/ui-map-types.d.ts +66 -0
  115. package/dist/core/sense/ui-map-types.js +11 -0
  116. package/dist/core/sense/ui-map-types.js.map +1 -0
  117. package/dist/core/sense/ui-map.d.ts +29 -0
  118. package/dist/core/sense/ui-map.js +113 -0
  119. package/dist/core/sense/ui-map.js.map +1 -0
  120. package/dist/core/verify/assertions.d.ts +132 -0
  121. package/dist/core/verify/assertions.js +284 -0
  122. package/dist/core/verify/assertions.js.map +1 -0
  123. package/dist/index.d.ts +21 -0
  124. package/dist/index.js +24 -0
  125. package/dist/index.js.map +1 -0
  126. package/dist/llm/browser-config.d.ts +36 -0
  127. package/dist/llm/browser-config.js +83 -0
  128. package/dist/llm/browser-config.js.map +1 -0
  129. package/dist/llm/client.d.ts +268 -0
  130. package/dist/llm/client.js +1094 -0
  131. package/dist/llm/client.js.map +1 -0
  132. package/dist/llm/config.d.ts +79 -0
  133. package/dist/llm/config.js +375 -0
  134. package/dist/llm/config.js.map +1 -0
  135. package/dist/llm/credentials.d.ts +35 -0
  136. package/dist/llm/credentials.js +491 -0
  137. package/dist/llm/credentials.js.map +1 -0
  138. package/dist/llm/external-creds.d.ts +42 -0
  139. package/dist/llm/external-creds.js +169 -0
  140. package/dist/llm/external-creds.js.map +1 -0
  141. package/dist/llm/providers.d.ts +123 -0
  142. package/dist/llm/providers.js +717 -0
  143. package/dist/llm/providers.js.map +1 -0
  144. package/dist/paths.d.ts +31 -0
  145. package/dist/paths.js +147 -0
  146. package/dist/paths.js.map +1 -0
  147. package/dist/platform/accessibility.d.ts +139 -0
  148. package/dist/platform/accessibility.js +670 -0
  149. package/dist/platform/accessibility.js.map +1 -0
  150. package/dist/platform/cdp-driver.d.ts +318 -0
  151. package/dist/platform/cdp-driver.js +1179 -0
  152. package/dist/platform/cdp-driver.js.map +1 -0
  153. package/dist/platform/index.d.ts +11 -0
  154. package/dist/platform/index.js +69 -0
  155. package/dist/platform/index.js.map +1 -0
  156. package/dist/platform/keys.d.ts +17 -0
  157. package/dist/platform/keys.js +129 -0
  158. package/dist/platform/keys.js.map +1 -0
  159. package/dist/platform/launch-poll.d.ts +101 -0
  160. package/dist/platform/launch-poll.js +177 -0
  161. package/dist/platform/launch-poll.js.map +1 -0
  162. package/dist/platform/linux.d.ts +173 -0
  163. package/dist/platform/linux.js +1253 -0
  164. package/dist/platform/linux.js.map +1 -0
  165. package/dist/platform/macos.d.ts +136 -0
  166. package/dist/platform/macos.js +976 -0
  167. package/dist/platform/macos.js.map +1 -0
  168. package/dist/platform/native-desktop.d.ts +145 -0
  169. package/dist/platform/native-desktop.js +936 -0
  170. package/dist/platform/native-desktop.js.map +1 -0
  171. package/dist/platform/native-helper.d.ts +130 -0
  172. package/dist/platform/native-helper.js +592 -0
  173. package/dist/platform/native-helper.js.map +1 -0
  174. package/dist/platform/ocr-engine.d.ts +78 -0
  175. package/dist/platform/ocr-engine.js +363 -0
  176. package/dist/platform/ocr-engine.js.map +1 -0
  177. package/dist/platform/ps-runner.d.ts +28 -0
  178. package/dist/platform/ps-runner.js +228 -0
  179. package/dist/platform/ps-runner.js.map +1 -0
  180. package/dist/platform/types.d.ts +397 -0
  181. package/dist/platform/types.js +15 -0
  182. package/dist/platform/types.js.map +1 -0
  183. package/dist/platform/uri-handler.d.ts +75 -0
  184. package/dist/platform/uri-handler.js +273 -0
  185. package/dist/platform/uri-handler.js.map +1 -0
  186. package/dist/platform/wayland-backend.d.ts +53 -0
  187. package/dist/platform/wayland-backend.js +348 -0
  188. package/dist/platform/wayland-backend.js.map +1 -0
  189. package/dist/platform/windows.d.ts +232 -0
  190. package/dist/platform/windows.js +1210 -0
  191. package/dist/platform/windows.js.map +1 -0
  192. package/dist/postbuild.d.ts +10 -0
  193. package/dist/postbuild.js +98 -0
  194. package/dist/postbuild.js.map +1 -0
  195. package/dist/schema/snapshot.d.ts +33 -0
  196. package/dist/schema/snapshot.js +90 -0
  197. package/dist/schema/snapshot.js.map +1 -0
  198. package/dist/shortcuts.d.ts +30 -0
  199. package/dist/shortcuts.js +261 -0
  200. package/dist/shortcuts.js.map +1 -0
  201. package/dist/surface/cli.d.ts +7 -0
  202. package/dist/surface/cli.js +1556 -0
  203. package/dist/surface/cli.js.map +1 -0
  204. package/dist/surface/dashboard.d.ts +8 -0
  205. package/dist/surface/dashboard.js +1193 -0
  206. package/dist/surface/dashboard.js.map +1 -0
  207. package/dist/surface/doctor.d.ts +29 -0
  208. package/dist/surface/doctor.js +1514 -0
  209. package/dist/surface/doctor.js.map +1 -0
  210. package/dist/surface/format.d.ts +10 -0
  211. package/dist/surface/format.js +37 -0
  212. package/dist/surface/format.js.map +1 -0
  213. package/dist/surface/http-utility.d.ts +65 -0
  214. package/dist/surface/http-utility.js +336 -0
  215. package/dist/surface/http-utility.js.map +1 -0
  216. package/dist/surface/mcp-server.d.ts +91 -0
  217. package/dist/surface/mcp-server.js +280 -0
  218. package/dist/surface/mcp-server.js.map +1 -0
  219. package/dist/surface/onboarding.d.ts +15 -0
  220. package/dist/surface/onboarding.js +184 -0
  221. package/dist/surface/onboarding.js.map +1 -0
  222. package/dist/surface/pidfile.d.ts +79 -0
  223. package/dist/surface/pidfile.js +263 -0
  224. package/dist/surface/pidfile.js.map +1 -0
  225. package/dist/surface/readiness.d.ts +45 -0
  226. package/dist/surface/readiness.js +230 -0
  227. package/dist/surface/readiness.js.map +1 -0
  228. package/dist/surface/report.d.ts +68 -0
  229. package/dist/surface/report.js +341 -0
  230. package/dist/surface/report.js.map +1 -0
  231. package/dist/surface/skill-register.d.ts +14 -0
  232. package/dist/surface/skill-register.js +150 -0
  233. package/dist/surface/skill-register.js.map +1 -0
  234. package/dist/surface/version.d.ts +6 -0
  235. package/dist/surface/version.js +27 -0
  236. package/dist/surface/version.js.map +1 -0
  237. package/dist/tools/a11y.d.ts +8 -0
  238. package/dist/tools/a11y.js +545 -0
  239. package/dist/tools/a11y.js.map +1 -0
  240. package/dist/tools/a11y_depth.d.ts +19 -0
  241. package/dist/tools/a11y_depth.js +455 -0
  242. package/dist/tools/a11y_depth.js.map +1 -0
  243. package/dist/tools/agent.d.ts +15 -0
  244. package/dist/tools/agent.js +248 -0
  245. package/dist/tools/agent.js.map +1 -0
  246. package/dist/tools/batch.d.ts +46 -0
  247. package/dist/tools/batch.js +230 -0
  248. package/dist/tools/batch.js.map +1 -0
  249. package/dist/tools/cdp.d.ts +8 -0
  250. package/dist/tools/cdp.js +233 -0
  251. package/dist/tools/cdp.js.map +1 -0
  252. package/dist/tools/compact.d.ts +63 -0
  253. package/dist/tools/compact.js +418 -0
  254. package/dist/tools/compact.js.map +1 -0
  255. package/dist/tools/cost-class.d.ts +38 -0
  256. package/dist/tools/cost-class.js +117 -0
  257. package/dist/tools/cost-class.js.map +1 -0
  258. package/dist/tools/desktop.d.ts +9 -0
  259. package/dist/tools/desktop.js +346 -0
  260. package/dist/tools/desktop.js.map +1 -0
  261. package/dist/tools/electron_bridge.d.ts +41 -0
  262. package/dist/tools/electron_bridge.js +261 -0
  263. package/dist/tools/electron_bridge.js.map +1 -0
  264. package/dist/tools/extras.d.ts +22 -0
  265. package/dist/tools/extras.js +942 -0
  266. package/dist/tools/extras.js.map +1 -0
  267. package/dist/tools/favorites.d.ts +13 -0
  268. package/dist/tools/favorites.js +137 -0
  269. package/dist/tools/favorites.js.map +1 -0
  270. package/dist/tools/introspection.d.ts +13 -0
  271. package/dist/tools/introspection.js +55 -0
  272. package/dist/tools/introspection.js.map +1 -0
  273. package/dist/tools/ocr.d.ts +8 -0
  274. package/dist/tools/ocr.js +66 -0
  275. package/dist/tools/ocr.js.map +1 -0
  276. package/dist/tools/orchestration.d.ts +7 -0
  277. package/dist/tools/orchestration.js +377 -0
  278. package/dist/tools/orchestration.js.map +1 -0
  279. package/dist/tools/playbooks/extract-compose.d.ts +22 -0
  280. package/dist/tools/playbooks/extract-compose.js +85 -0
  281. package/dist/tools/playbooks/extract-compose.js.map +1 -0
  282. package/dist/tools/playbooks/find-replace.d.ts +11 -0
  283. package/dist/tools/playbooks/find-replace.js +56 -0
  284. package/dist/tools/playbooks/find-replace.js.map +1 -0
  285. package/dist/tools/playbooks/index.d.ts +63 -0
  286. package/dist/tools/playbooks/index.js +70 -0
  287. package/dist/tools/playbooks/index.js.map +1 -0
  288. package/dist/tools/playbooks/keys-blocklist.d.ts +24 -0
  289. package/dist/tools/playbooks/keys-blocklist.js +89 -0
  290. package/dist/tools/playbooks/keys-blocklist.js.map +1 -0
  291. package/dist/tools/registry.d.ts +40 -0
  292. package/dist/tools/registry.js +560 -0
  293. package/dist/tools/registry.js.map +1 -0
  294. package/dist/tools/safety-gate.d.ts +16 -0
  295. package/dist/tools/safety-gate.js +70 -0
  296. package/dist/tools/safety-gate.js.map +1 -0
  297. package/dist/tools/scheduler.d.ts +76 -0
  298. package/dist/tools/scheduler.js +413 -0
  299. package/dist/tools/scheduler.js.map +1 -0
  300. package/dist/tools/shortcuts.d.ts +13 -0
  301. package/dist/tools/shortcuts.js +205 -0
  302. package/dist/tools/shortcuts.js.map +1 -0
  303. package/dist/tools/smart.d.ts +15 -0
  304. package/dist/tools/smart.js +785 -0
  305. package/dist/tools/smart.js.map +1 -0
  306. package/dist/tools/types.d.ts +174 -0
  307. package/dist/tools/types.js +67 -0
  308. package/dist/tools/types.js.map +1 -0
  309. package/dist/tools/window-text.d.ts +15 -0
  310. package/dist/tools/window-text.js +39 -0
  311. package/dist/tools/window-text.js.map +1 -0
  312. package/dist/types.d.ts +122 -0
  313. package/dist/types.js +41 -0
  314. package/dist/types.js.map +1 -0
  315. package/native/Package.swift +38 -0
  316. package/native/README.md +113 -0
  317. package/native/Sources/ClawdCursorHelper/main.swift +602 -0
  318. package/native/Sources/ClawdCursorHost/main.swift +182 -0
  319. package/native/Sources/PermissionCheck/main.swift +53 -0
  320. package/native/Sources/ScreenshotHelper/main.swift +219 -0
  321. package/native/build.sh +139 -0
  322. package/native/entitlements.plist +12 -0
  323. package/package.json +115 -0
  324. package/scripts/banner.ps1 +112 -0
  325. package/scripts/coord-accuracy.ps1 +140 -0
  326. package/scripts/coord-uwp.ps1 +80 -0
  327. package/scripts/edge-glow.ps1 +180 -0
  328. package/scripts/find-element.ps1 +198 -0
  329. package/scripts/get-foreground-window.ps1 +71 -0
  330. package/scripts/get-screen-context.ps1 +183 -0
  331. package/scripts/get-windows.ps1 +66 -0
  332. package/scripts/install-panic-hotkey.ps1 +46 -0
  333. package/scripts/interact-element.ps1 +431 -0
  334. package/scripts/invoke-element.ps1 +314 -0
  335. package/scripts/linux/atspi-bridge.py +356 -0
  336. package/scripts/linux/ocr-recognize.py +154 -0
  337. package/scripts/mac/_window-picker.jxa +163 -0
  338. package/scripts/mac/find-element.jxa +0 -0
  339. package/scripts/mac/find-element.sh +161 -0
  340. package/scripts/mac/focus-window.jxa +284 -0
  341. package/scripts/mac/get-focused-element.jxa +102 -0
  342. package/scripts/mac/get-foreground-window.jxa +173 -0
  343. package/scripts/mac/get-screen-context.jxa +197 -0
  344. package/scripts/mac/get-ui-tree.sh +141 -0
  345. package/scripts/mac/get-windows.jxa +117 -0
  346. package/scripts/mac/interact-element.sh +235 -0
  347. package/scripts/mac/invoke-element.jxa +408 -0
  348. package/scripts/mac/ocr-recognize.swift +124 -0
  349. package/scripts/ocr-recognize.ps1 +102 -0
  350. package/scripts/postinstall-native.js +48 -0
  351. package/scripts/ps-bridge.ps1 +830 -0
  352. package/scripts/smoke-mcp.ps1 +119 -0
  353. package/scripts/sync-version.ts +178 -0
  354. package/scripts/verify-install.js +81 -0
@@ -0,0 +1,491 @@
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.inferProviderFromBaseUrl = inferProviderFromBaseUrl;
37
+ exports.resolveApiConfig = resolveApiConfig;
38
+ const fs = __importStar(require("fs"));
39
+ const os = __importStar(require("os"));
40
+ const path = __importStar(require("path"));
41
+ const paths_1 = require("../paths");
42
+ function normalizeProviderKey(key) {
43
+ const lower = key.toLowerCase().trim();
44
+ if (!lower)
45
+ return lower;
46
+ return lower.split(':')[0];
47
+ }
48
+ function normalizeProvider(provider) {
49
+ if (!provider)
50
+ return undefined;
51
+ const p = provider.trim().toLowerCase();
52
+ return p.length > 0 ? p : undefined;
53
+ }
54
+ function toEnvStyleKey(value) {
55
+ return value
56
+ .replace(/[^a-zA-Z0-9]+/g, '_')
57
+ .replace(/([a-z0-9])([A-Z])/g, '$1_$2')
58
+ .replace(/^_+|_+$/g, '')
59
+ .toUpperCase();
60
+ }
61
+ function normalizeBaseUrl(url) {
62
+ if (!url)
63
+ return undefined;
64
+ const trimmed = url.trim().replace(/\/+$/, '');
65
+ return trimmed.length > 0 ? trimmed : undefined;
66
+ }
67
+ function pick(...values) {
68
+ for (const v of values) {
69
+ if (v && v.trim())
70
+ return v.trim();
71
+ }
72
+ return undefined;
73
+ }
74
+ function inferProviderFromBaseUrl(baseUrl) {
75
+ const url = (baseUrl || '').toLowerCase();
76
+ if (!url)
77
+ return undefined;
78
+ if (url.includes('anthropic'))
79
+ return 'anthropic';
80
+ if (url.includes('moonshot') || url.includes('kimi'))
81
+ return 'kimi';
82
+ if (url.includes('11434') || url.includes('ollama'))
83
+ return 'ollama';
84
+ if (url.includes('openai'))
85
+ return 'openai';
86
+ if (url.includes('groq'))
87
+ return 'groq';
88
+ if (url.includes('together'))
89
+ return 'together';
90
+ if (url.includes('deepseek'))
91
+ return 'deepseek';
92
+ if (url.includes('nvidia') || url.includes('integrate.api'))
93
+ return 'nvidia';
94
+ if (url.includes('mistral'))
95
+ return 'mistral';
96
+ if (url.includes('fireworks'))
97
+ return 'fireworks';
98
+ if (url.includes('dashscope') || url.includes('alibaba') || url.includes('qwen'))
99
+ return 'alibaba';
100
+ if (url.includes('cohere'))
101
+ return 'cohere';
102
+ if (url.includes('perplexity') || url.includes('pplx'))
103
+ return 'perplexity';
104
+ // Unknown endpoint — still works, just no provider label
105
+ return undefined;
106
+ }
107
+ function safeReadJson(filePath) {
108
+ try {
109
+ if (!fs.existsSync(filePath))
110
+ return null;
111
+ const raw = fs.readFileSync(filePath, 'utf-8');
112
+ return JSON.parse(raw);
113
+ }
114
+ catch {
115
+ return null;
116
+ }
117
+ }
118
+ function isObject(value) {
119
+ return !!value && typeof value === 'object' && !Array.isArray(value);
120
+ }
121
+ function extractApiKeyLike(value) {
122
+ if (!value)
123
+ return undefined;
124
+ if (typeof value === 'string')
125
+ return value;
126
+ if (isObject(value)) {
127
+ return pick(value.apiKey, value.api_key, value.key, value.token, value.accessToken, value.access_token, value.access, value.oauthAccessToken, value.oauth_access_token, value.bearer, value.oauth?.accessToken, value.oauth?.access_token, value.oauth?.access);
128
+ }
129
+ return undefined;
130
+ }
131
+ function resolveTemplateVars(value, envSources) {
132
+ const trimmed = value.trim();
133
+ if (!trimmed)
134
+ return undefined;
135
+ const hasTemplate = /\$\{[^}]+\}/.test(trimmed);
136
+ if (!hasTemplate)
137
+ return trimmed;
138
+ let unresolved = false;
139
+ const expanded = trimmed.replace(/\$\{([^}]+)\}/g, (_, key) => {
140
+ const normalizedKey = key.trim();
141
+ for (const source of envSources) {
142
+ const candidate = source?.[normalizedKey];
143
+ if (typeof candidate === 'string' && candidate.length > 0) {
144
+ return candidate;
145
+ }
146
+ }
147
+ unresolved = true;
148
+ return '';
149
+ });
150
+ if (unresolved)
151
+ return undefined;
152
+ return expanded;
153
+ }
154
+ function extractResolvedApiKey(value, envSources) {
155
+ const apiKey = extractApiKeyLike(value);
156
+ if (!apiKey)
157
+ return undefined;
158
+ return resolveTemplateVars(apiKey, envSources);
159
+ }
160
+ function extractBaseUrlLike(value) {
161
+ if (!value)
162
+ return undefined;
163
+ if (typeof value === 'string')
164
+ return normalizeBaseUrl(value);
165
+ if (isObject(value)) {
166
+ return normalizeBaseUrl(pick(value.baseUrl, value.base_url, value.endpoint, value.url));
167
+ }
168
+ return undefined;
169
+ }
170
+ function normalizeModelEntry(model) {
171
+ if (!model)
172
+ return null;
173
+ const id = typeof model === 'string'
174
+ ? model
175
+ : pick(model.id, model.model, model.modelId, model.name);
176
+ if (!id)
177
+ return null;
178
+ const input = Array.isArray(model.input)
179
+ ? model.input.map((x) => String(x).toLowerCase())
180
+ : [];
181
+ return { id, input };
182
+ }
183
+ function getOpenClawRoots() {
184
+ const home = os.homedir();
185
+ return [
186
+ path.join(home, '.openclaw'),
187
+ path.join(home, '.openclaw-dev'),
188
+ ];
189
+ }
190
+ function readConfiguredProvider() {
191
+ // Check both the package directory (where the code lives) and cwd
192
+ const pkgConfigPath = path.join((0, paths_1.getPackageRoot)(), '.clawdcursor-config.json');
193
+ const cwdConfigPath = path.join(process.cwd(), '.clawdcursor-config.json');
194
+ const cfg = safeReadJson(pkgConfigPath) || safeReadJson(cwdConfigPath);
195
+ if (!cfg || !isObject(cfg))
196
+ return undefined;
197
+ const provider = pick(cfg.provider, cfg?.pipeline?.provider, cfg?.pipeline?.providerKey);
198
+ return normalizeProvider(provider);
199
+ }
200
+ function providerEnvCandidates(provider) {
201
+ const normalized = normalizeProvider(provider);
202
+ if (!normalized)
203
+ return [];
204
+ const bases = [normalized, normalized.split(':')[0]].filter(Boolean);
205
+ const seen = new Set();
206
+ const keys = [];
207
+ for (const base of bases) {
208
+ const envBase = toEnvStyleKey(base);
209
+ if (!envBase || seen.has(envBase))
210
+ continue;
211
+ seen.add(envBase);
212
+ keys.push(`${envBase}_API_KEY`);
213
+ }
214
+ return keys;
215
+ }
216
+ function loadOpenClawProviderMap() {
217
+ const providers = {};
218
+ const ensureProvider = (key) => {
219
+ const normalizedKey = normalizeProviderKey(key);
220
+ if (!providers[normalizedKey]) {
221
+ providers[normalizedKey] = { key: normalizedKey, models: [] };
222
+ }
223
+ return providers[normalizedKey];
224
+ };
225
+ for (const root of getOpenClawRoots()) {
226
+ const authCandidates = [
227
+ path.join(root, 'agents', 'main', 'agent', 'auth-profiles.json'),
228
+ path.join(root, 'agents', 'main', 'auth-profiles.json'),
229
+ ];
230
+ const configCandidates = [
231
+ path.join(root, 'openclaw.json'),
232
+ path.join(root, 'agents', 'main', 'openclaw.json'),
233
+ path.join(root, 'agents', 'main', 'agent', 'openclaw.json'),
234
+ ];
235
+ for (const authPath of authCandidates) {
236
+ const auth = safeReadJson(authPath);
237
+ if (!auth)
238
+ continue;
239
+ const containers = [auth, auth.profiles, auth.providers, auth.authProfiles];
240
+ for (const container of containers) {
241
+ if (!isObject(container))
242
+ continue;
243
+ for (const [key, value] of Object.entries(container)) {
244
+ const entry = ensureProvider(key);
245
+ const apiKey = extractApiKeyLike(value);
246
+ const baseUrl = extractBaseUrlLike(value);
247
+ if (apiKey)
248
+ entry.apiKey = apiKey;
249
+ if (baseUrl)
250
+ entry.baseUrl = baseUrl;
251
+ const maybeModels = isObject(value) ? (value.models || value.availableModels) : null;
252
+ if (Array.isArray(maybeModels)) {
253
+ for (const m of maybeModels) {
254
+ const normalized = normalizeModelEntry(m);
255
+ if (normalized)
256
+ entry.models.push(normalized);
257
+ }
258
+ }
259
+ }
260
+ }
261
+ }
262
+ for (const configPath of configCandidates) {
263
+ const cfg = safeReadJson(configPath);
264
+ if (!cfg)
265
+ continue;
266
+ const envSources = [cfg.env, process.env];
267
+ const providerBlocks = [
268
+ cfg?.models?.providers,
269
+ cfg?.providers,
270
+ ];
271
+ for (const block of providerBlocks) {
272
+ if (!isObject(block))
273
+ continue;
274
+ for (const [key, value] of Object.entries(block)) {
275
+ const entry = ensureProvider(key);
276
+ const apiKey = extractResolvedApiKey(value, envSources);
277
+ const baseUrl = extractBaseUrlLike(value);
278
+ if (apiKey && !entry.apiKey)
279
+ entry.apiKey = apiKey;
280
+ if (baseUrl && !entry.baseUrl)
281
+ entry.baseUrl = baseUrl;
282
+ if (isObject(value) && Array.isArray(value.models)) {
283
+ for (const m of value.models) {
284
+ const normalized = normalizeModelEntry(m);
285
+ if (normalized)
286
+ entry.models.push(normalized);
287
+ }
288
+ }
289
+ }
290
+ }
291
+ }
292
+ }
293
+ // De-duplicate models by id
294
+ for (const entry of Object.values(providers)) {
295
+ const seen = new Set();
296
+ entry.models = entry.models.filter(m => {
297
+ if (seen.has(m.id))
298
+ return false;
299
+ seen.add(m.id);
300
+ return true;
301
+ });
302
+ }
303
+ return providers;
304
+ }
305
+ function selectVisionProvider(providers) {
306
+ for (const p of providers) {
307
+ if (p.models.some(m => m.input.includes('image') || m.input.includes('vision'))) {
308
+ return p;
309
+ }
310
+ }
311
+ return null;
312
+ }
313
+ function isLikelyLocalProvider(provider) {
314
+ const url = (provider?.baseUrl || '').toLowerCase();
315
+ return provider?.key === 'ollama' || url.includes('localhost') || url.includes('127.0.0.1') || url.includes('11434');
316
+ }
317
+ function selectProviderWithApiKey(providers) {
318
+ for (const p of providers) {
319
+ if (p.apiKey)
320
+ return p;
321
+ }
322
+ return null;
323
+ }
324
+ function selectTextProvider(providers) {
325
+ const withTextModel = providers.find(p => p.models.some(m => !m.input.includes('image') && !m.input.includes('vision')));
326
+ if (withTextModel)
327
+ return withTextModel;
328
+ return providers.find(p => p.models.length > 0) || null;
329
+ }
330
+ function resolveFromOpenClawFiles() {
331
+ const providerMap = loadOpenClawProviderMap();
332
+ const providerList = Object.values(providerMap).filter(p => !!(p.apiKey || p.baseUrl || p.models.length > 0));
333
+ if (providerList.length === 0)
334
+ return null;
335
+ const configuredProvider = readConfiguredProvider();
336
+ const preferredProvider = configuredProvider ? providerMap[normalizeProviderKey(configuredProvider)] : undefined;
337
+ const preferredCandidates = preferredProvider ? [preferredProvider] : providerList;
338
+ const preferredProviderWithKey = selectProviderWithApiKey(preferredCandidates);
339
+ const globalProviderWithKey = selectProviderWithApiKey(providerList);
340
+ const visionProvider = selectVisionProvider(preferredCandidates) || selectVisionProvider(providerList);
341
+ const textProvider = selectTextProvider(preferredCandidates) || selectTextProvider(providerList);
342
+ const selectedProvider = preferredProviderWithKey
343
+ || preferredProvider
344
+ || visionProvider
345
+ || textProvider
346
+ || globalProviderWithKey;
347
+ if (!selectedProvider)
348
+ return null;
349
+ const rawVisionModel = visionProvider?.models.find(m => m.input.includes('image') || m.input.includes('vision'))?.id
350
+ || textProvider?.models[0]?.id;
351
+ // Find a text-only model. Do NOT fall back to vision models — they may be
352
+ // reasoning models (kimi-k2.5) that reject temperature=0 and cost more.
353
+ const rawTextModel = textProvider?.models.find(m => !m.input.includes('image') && !m.input.includes('vision'))?.id;
354
+ const textModel = rawTextModel;
355
+ const visionModel = rawVisionModel;
356
+ const resolvedApiKey = selectedProvider.apiKey || textProvider?.apiKey || visionProvider?.apiKey || globalProviderWithKey?.apiKey || '';
357
+ if (!resolvedApiKey && !isLikelyLocalProvider(selectedProvider)) {
358
+ return null;
359
+ }
360
+ const resolvedTextApiKey = textProvider?.apiKey || selectedProvider.apiKey || resolvedApiKey;
361
+ const resolvedVisionApiKey = visionProvider?.apiKey || selectedProvider.apiKey || resolvedApiKey;
362
+ const resolvedBaseUrl = selectedProvider.baseUrl || visionProvider?.baseUrl || textProvider?.baseUrl;
363
+ const resolvedTextBaseUrl = textProvider?.baseUrl || selectedProvider.baseUrl || visionProvider?.baseUrl;
364
+ const resolvedVisionBaseUrl = visionProvider?.baseUrl || selectedProvider.baseUrl || textProvider?.baseUrl;
365
+ return {
366
+ apiKey: resolvedApiKey,
367
+ baseUrl: resolvedBaseUrl,
368
+ textModel,
369
+ visionModel,
370
+ textApiKey: resolvedTextApiKey,
371
+ textBaseUrl: resolvedTextBaseUrl,
372
+ visionApiKey: resolvedVisionApiKey,
373
+ visionBaseUrl: resolvedVisionBaseUrl,
374
+ provider: normalizeProvider(selectedProvider.key) || inferProviderFromBaseUrl(selectedProvider.baseUrl),
375
+ source: 'external',
376
+ };
377
+ }
378
+ /**
379
+ * Resolve key + endpoint + models from all available sources.
380
+ */
381
+ function resolveApiConfig(opts) {
382
+ // Explicit CLI flags always win over auto-detection
383
+ if (opts?.apiKey || opts?.provider || opts?.baseUrl) {
384
+ // If provider is specified but no API key, walk a defined precedence:
385
+ // 1. Provider-scoped env vars (e.g. KIMI_API_KEY)
386
+ // 2. External host auth-profiles (e.g. OpenClaw ~/.openclaw/.../auth-profiles.json)
387
+ // — same store doctor's scanner reads, so per-provider lookups can never
388
+ // disagree with what doctor told the user about.
389
+ // 3. Generic AI_API_KEY fallback
390
+ let explicitApiKey = opts.apiKey || '';
391
+ const normalizedProvider = normalizeProvider(opts.provider) || '';
392
+ if (!explicitApiKey && opts.provider) {
393
+ const { PROVIDER_ENV_VARS } = require('./providers');
394
+ const envVarNames = PROVIDER_ENV_VARS[normalizedProvider] || [];
395
+ for (const envVar of envVarNames) {
396
+ if (process.env[envVar]) {
397
+ explicitApiKey = process.env[envVar];
398
+ break;
399
+ }
400
+ }
401
+ if (!explicitApiKey && normalizedProvider) {
402
+ // External host (OpenClaw, etc.) — read the requested provider's key
403
+ // from auth-profiles, NOT a generic "best provider" guess. This closes
404
+ // the v0.8.8 bug where start fell back to the wrong provider's key.
405
+ const { getExternalProviderKey } = require('./external-creds');
406
+ const extKey = getExternalProviderKey(normalizedProvider);
407
+ if (extKey)
408
+ explicitApiKey = extKey;
409
+ }
410
+ // Last resort: generic AI_API_KEY
411
+ if (!explicitApiKey && process.env.AI_API_KEY)
412
+ explicitApiKey = process.env.AI_API_KEY;
413
+ }
414
+ const explicitBaseUrl = normalizeBaseUrl(opts.baseUrl);
415
+ const explicitTextModel = pick(opts.textModel);
416
+ const explicitVisionModel = pick(opts.visionModel);
417
+ return {
418
+ apiKey: explicitApiKey,
419
+ provider: normalizeProvider(opts.provider) || inferProviderFromBaseUrl(explicitBaseUrl),
420
+ baseUrl: explicitBaseUrl,
421
+ textModel: explicitTextModel,
422
+ visionModel: explicitVisionModel,
423
+ textApiKey: explicitApiKey,
424
+ textBaseUrl: explicitBaseUrl,
425
+ visionApiKey: explicitApiKey,
426
+ visionBaseUrl: explicitBaseUrl,
427
+ source: 'local',
428
+ };
429
+ }
430
+ const fromFiles = resolveFromOpenClawFiles();
431
+ if (fromFiles) {
432
+ return fromFiles;
433
+ }
434
+ // Check for externally-injected runtime env vars (e.g. from orchestration platforms).
435
+ const openClawKey = pick(process.env.OPENCLAW_AI_API_KEY, process.env.OPENCLAW_API_KEY, process.env.OPENCLAW_AGENT_API_KEY) || '';
436
+ const openClawBaseUrl = normalizeBaseUrl(pick(process.env.OPENCLAW_BASE_URL, process.env.OPENCLAW_AI_BASE_URL, process.env.OPENCLAW_AGENT_BASE_URL));
437
+ const openClawTextModel = pick(process.env.OPENCLAW_TEXT_MODEL, process.env.OPENCLAW_AI_TEXT_MODEL, process.env.OPENCLAW_MODEL);
438
+ const openClawVisionModel = pick(process.env.OPENCLAW_VISION_MODEL, process.env.OPENCLAW_AI_VISION_MODEL, process.env.OPENCLAW_MODEL);
439
+ const openClawProvider = normalizeProvider(pick(process.env.OPENCLAW_PROVIDER, process.env.OPENCLAW_AI_PROVIDER, process.env.OPENCLAW_AGENT_PROVIDER)) || inferProviderFromBaseUrl(openClawBaseUrl);
440
+ if (openClawKey || openClawBaseUrl || openClawTextModel || openClawVisionModel || openClawProvider) {
441
+ return {
442
+ apiKey: openClawKey,
443
+ provider: openClawProvider,
444
+ baseUrl: openClawBaseUrl,
445
+ textModel: openClawTextModel,
446
+ visionModel: openClawVisionModel,
447
+ textApiKey: openClawKey,
448
+ textBaseUrl: openClawBaseUrl,
449
+ visionApiKey: openClawKey,
450
+ visionBaseUrl: openClawBaseUrl,
451
+ source: 'external',
452
+ };
453
+ }
454
+ const explicitApiKey = opts?.apiKey || '';
455
+ const localProvider = normalizeProvider(opts?.provider) || normalizeProvider(readConfiguredProvider());
456
+ const providerScopedEnvKey = pick(...providerEnvCandidates(localProvider).map((key) => {
457
+ const value = process.env[key];
458
+ return typeof value === 'string' ? value : undefined;
459
+ }));
460
+ const localBaseUrl = normalizeBaseUrl(pick(opts?.baseUrl, process.env.AI_BASE_URL, process.env.OPENAI_BASE_URL));
461
+ const localTextModel = pick(opts?.textModel, process.env.AI_TEXT_MODEL, process.env.AI_MODEL);
462
+ const localVisionModel = pick(opts?.visionModel, process.env.AI_VISION_MODEL, process.env.AI_MODEL);
463
+ const localApiKey = pick(explicitApiKey, process.env.AI_API_KEY, providerScopedEnvKey, process.env.ANTHROPIC_API_KEY, process.env.OPENAI_API_KEY, process.env.KIMI_API_KEY, process.env.MOONSHOT_API_KEY) || '';
464
+ if (localApiKey || localBaseUrl || localTextModel || localVisionModel || opts?.provider) {
465
+ return {
466
+ apiKey: localApiKey,
467
+ provider: normalizeProvider(opts?.provider) || inferProviderFromBaseUrl(localBaseUrl),
468
+ baseUrl: localBaseUrl,
469
+ textModel: localTextModel,
470
+ visionModel: localVisionModel,
471
+ textApiKey: localApiKey,
472
+ textBaseUrl: localBaseUrl,
473
+ visionApiKey: localApiKey,
474
+ visionBaseUrl: localBaseUrl,
475
+ source: 'local',
476
+ };
477
+ }
478
+ return {
479
+ apiKey: localApiKey,
480
+ provider: inferProviderFromBaseUrl(localBaseUrl),
481
+ baseUrl: localBaseUrl,
482
+ textModel: localTextModel,
483
+ visionModel: localVisionModel,
484
+ textApiKey: localApiKey,
485
+ textBaseUrl: localBaseUrl,
486
+ visionApiKey: localApiKey,
487
+ visionBaseUrl: localBaseUrl,
488
+ source: 'local',
489
+ };
490
+ }
491
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/llm/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * External-credential reader.
3
+ *
4
+ * Loads provider API keys from cohabitating agent frameworks (OpenClaw,
5
+ * future hosts) so users who configure credentials there don't have to
6
+ * re-enter them as environment variables.
7
+ *
8
+ * Single source of truth — both `scanProviders()` (doctor's all-providers
9
+ * scan) and `resolveApiConfig({ provider })` (start's per-provider lookup)
10
+ * consult this module so they can never disagree about which key belongs
11
+ * to which provider. v0.8.8 had a real bug where doctor read the right
12
+ * Kimi key but start fell back to the wrong (Anthropic) key on the same
13
+ * machine because only doctor was wired to the OpenClaw profile reader.
14
+ *
15
+ * Read once, cache forever (per-process). Tests can call
16
+ * `clearExternalProviderKeysCache()` to invalidate.
17
+ */
18
+ export interface ExternalProviderEntry {
19
+ apiKey: string;
20
+ baseUrl?: string;
21
+ /** Where this entry was sourced — for debugging / logs. */
22
+ sourceFile?: string;
23
+ }
24
+ /**
25
+ * Read all external provider keys, merged across known hosts.
26
+ * First-write-wins per provider (so `.openclaw` beats `.openclaw-dev`
27
+ * if both define the same provider).
28
+ */
29
+ export declare function loadExternalProviderKeys(): Record<string, ExternalProviderEntry>;
30
+ /**
31
+ * Get a specific provider's external key, or undefined if not found.
32
+ * Use this in credential-resolution paths that want to consult external
33
+ * hosts as one of several fallbacks.
34
+ */
35
+ export declare function getExternalProviderKey(providerKey: string): string | undefined;
36
+ /**
37
+ * Get a specific provider's external base URL override (rare — only set
38
+ * when an external host explicitly overrides the provider's default URL).
39
+ */
40
+ export declare function getExternalProviderBaseUrl(providerKey: string): string | undefined;
41
+ /** Clear the in-process cache. Tests use this; runtime never should. */
42
+ export declare function clearExternalProviderKeysCache(): void;