@qvac/harness 0.3.3 → 0.5.0

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 (301) hide show
  1. package/CHANGELOG.md +700 -126
  2. package/README.md +156 -0
  3. package/dist/harness.bundle +71 -103
  4. package/dist/prebuilds-manifest.json +0 -8
  5. package/dist-lib/index.d.ts +42 -40
  6. package/dist-lib/index.js +307 -117
  7. package/dist-lib/lib/audio-transcode-bare.d.ts +2 -2
  8. package/dist-lib/lib/audio-transcode-bare.js +28 -18
  9. package/dist-lib/lib/audio-transcode-node.d.ts +2 -2
  10. package/dist-lib/lib/capabilities/audio-resample.d.ts +7 -6
  11. package/dist-lib/lib/capabilities/audio-resample.js +30 -18
  12. package/dist-lib/lib/capabilities/completion.d.ts +20 -19
  13. package/dist-lib/lib/capabilities/completion.js +194 -135
  14. package/dist-lib/lib/capabilities/download.d.ts +6 -6
  15. package/dist-lib/lib/capabilities/download.js +15 -8
  16. package/dist-lib/lib/capabilities/embed.js +2 -1
  17. package/dist-lib/lib/capabilities/enhance.d.ts +6 -1
  18. package/dist-lib/lib/capabilities/enhance.js +7 -4
  19. package/dist-lib/lib/capabilities/invoke.js +7 -4
  20. package/dist-lib/lib/capabilities/kv-cache.js +2 -1
  21. package/dist-lib/lib/capabilities/preview-model-source.d.ts +69 -0
  22. package/dist-lib/lib/capabilities/preview-model-source.js +439 -0
  23. package/dist-lib/lib/capabilities/speech-text.js +5 -4
  24. package/dist-lib/lib/capabilities/tool-selection.js +10 -9
  25. package/dist-lib/lib/capabilities/tool-turns.js +30 -16
  26. package/dist-lib/lib/capabilities/usage-breakdown.js +2 -1
  27. package/dist-lib/lib/capabilities/voice.d.ts +5 -1
  28. package/dist-lib/lib/capabilities/voice.js +22 -12
  29. package/dist-lib/lib/connect.d.ts +15 -37
  30. package/dist-lib/lib/connect.js +161 -112
  31. package/dist-lib/lib/context-window.js +25 -21
  32. package/dist-lib/lib/contract-types.d.ts +26 -20
  33. package/dist-lib/lib/diagram-repair.d.ts +4 -4
  34. package/dist-lib/lib/diagram-repair.js +6 -3
  35. package/dist-lib/lib/docx/index.d.ts +3 -2
  36. package/dist-lib/lib/{error-fields.d.ts → guards.d.ts} +1 -0
  37. package/dist-lib/lib/{error-fields.js → guards.js} +3 -0
  38. package/dist-lib/lib/hardware/capability-probe.js +20 -10
  39. package/dist-lib/lib/hardware/gpu-classify.js +6 -3
  40. package/dist-lib/lib/hardware/gpu-probe-addon.js +8 -4
  41. package/dist-lib/lib/hardware/gpu-probe.js +4 -2
  42. package/dist-lib/lib/hardware/gpu-stats.native.cjs +8 -9
  43. package/dist-lib/lib/hardware/parsers.js +8 -4
  44. package/dist-lib/lib/helpers/buffer-burst.js +4 -2
  45. package/dist-lib/lib/helpers/control-tokens.js +4 -2
  46. package/dist-lib/lib/helpers/join-guard.d.ts +2 -2
  47. package/dist-lib/lib/helpers/join-guard.js +4 -2
  48. package/dist-lib/lib/helpers/load-stall.js +4 -2
  49. package/dist-lib/lib/helpers/markup-stream-filter.d.ts +2 -2
  50. package/dist-lib/lib/helpers/markup-stream-filter.js +6 -3
  51. package/dist-lib/lib/helpers/race-abort.js +2 -1
  52. package/dist-lib/lib/helpers/race-timeout.d.ts +5 -0
  53. package/dist-lib/lib/helpers/race-timeout.js +14 -0
  54. package/dist-lib/lib/helpers/run-outcome.d.ts +6 -8
  55. package/dist-lib/lib/helpers/run-outcome.js +36 -20
  56. package/dist-lib/lib/helpers/spawn-path.js +6 -3
  57. package/dist-lib/lib/helpers/text-coalescer.js +6 -3
  58. package/dist-lib/lib/helpers/thinking.js +38 -45
  59. package/dist-lib/lib/helpers/tool-call-markup.d.ts +9 -7
  60. package/dist-lib/lib/helpers/tool-call-markup.js +36 -20
  61. package/dist-lib/lib/helpers/tool-intent.d.ts +3 -2
  62. package/dist-lib/lib/helpers/tool-intent.js +4 -2
  63. package/dist-lib/lib/helpers/tool-label.js +18 -9
  64. package/dist-lib/lib/hooks/built-in/arg-repair.js +23 -13
  65. package/dist-lib/lib/hooks/built-in/egress.js +2 -1
  66. package/dist-lib/lib/hooks/built-in/skill-catalog.js +2 -1
  67. package/dist-lib/lib/hooks/pipeline.d.ts +5 -4
  68. package/dist-lib/lib/hooks/pipeline.js +6 -3
  69. package/dist-lib/lib/hooks/run.js +12 -8
  70. package/dist-lib/lib/model-download-progress.js +10 -8
  71. package/dist-lib/lib/models/context.d.ts +1 -1
  72. package/dist-lib/lib/models/context.js +5 -1
  73. package/dist-lib/lib/models/custom-model-cache.d.ts +13 -0
  74. package/dist-lib/lib/models/custom-model-cache.js +70 -0
  75. package/dist-lib/lib/models/gguf-header.d.ts +31 -0
  76. package/dist-lib/lib/models/gguf-header.js +230 -0
  77. package/dist-lib/lib/models/idle-unload.d.ts +14 -0
  78. package/dist-lib/lib/models/idle-unload.js +51 -0
  79. package/dist-lib/lib/models/kv-cache.d.ts +3 -2
  80. package/dist-lib/lib/models/kv-cache.js +4 -3
  81. package/dist-lib/lib/models/llm-presets.d.ts +2 -2
  82. package/dist-lib/lib/models/llm-presets.js +4 -2
  83. package/dist-lib/lib/models/model-catalog-constants.js +3 -2
  84. package/dist-lib/lib/models/model-catalog.d.ts +19 -21
  85. package/dist-lib/lib/models/model-catalog.js +66 -33
  86. package/dist-lib/lib/models/model-delete.d.ts +4 -1
  87. package/dist-lib/lib/models/model-delete.js +30 -15
  88. package/dist-lib/lib/models/model-handle.js +2 -1
  89. package/dist-lib/lib/models/model-list.d.ts +14 -3
  90. package/dist-lib/lib/models/model-list.js +33 -6
  91. package/dist-lib/lib/models/model-pool.d.ts +44 -10
  92. package/dist-lib/lib/models/model-pool.js +47 -42
  93. package/dist-lib/lib/models/model-source.js +11 -6
  94. package/dist-lib/lib/models/music-catalog.d.ts +2 -2
  95. package/dist-lib/lib/models/nmt-catalog.d.ts +4 -3
  96. package/dist-lib/lib/models/nmt-catalog.js +10 -5
  97. package/dist-lib/lib/models/opencl-cache.d.ts +6 -1
  98. package/dist-lib/lib/models/opencl-cache.js +5 -3
  99. package/dist-lib/lib/models/sdk-faults.d.ts +11 -8
  100. package/dist-lib/lib/models/sdk-faults.js +9 -6
  101. package/dist-lib/lib/models/shards.d.ts +11 -0
  102. package/dist-lib/lib/models/shards.js +15 -0
  103. package/dist-lib/lib/models/tool-dialect.js +10 -5
  104. package/dist-lib/lib/no-redirect-fetch-bare.d.ts +3 -3
  105. package/dist-lib/lib/no-redirect-fetch-bare.js +1 -1
  106. package/dist-lib/lib/no-redirect-fetch-impl.js +6 -3
  107. package/dist-lib/lib/no-redirect-fetch-node.d.ts +1 -1
  108. package/dist-lib/lib/no-redirect-fetch-node.js +9 -9
  109. package/dist-lib/lib/office/index.d.ts +3 -2
  110. package/dist-lib/lib/office/python.d.ts +3 -2
  111. package/dist-lib/lib/office/python.js +2 -1
  112. package/dist-lib/lib/prompt.d.ts +5 -4
  113. package/dist-lib/lib/prompt.js +8 -4
  114. package/dist-lib/lib/queue.js +10 -5
  115. package/dist-lib/lib/resolution-detector.js +21 -11
  116. package/dist-lib/lib/rpc-session.js +2 -1
  117. package/dist-lib/lib/sdk-loader.js +2 -1
  118. package/dist-lib/lib/sdk-storage.js +4 -2
  119. package/dist-lib/lib/serve.js +128 -68
  120. package/dist-lib/lib/spawn.js +7 -4
  121. package/dist-lib/lib/tmp-path.d.ts +7 -6
  122. package/dist-lib/lib/tool-call-display.d.ts +2 -2
  123. package/dist-lib/lib/tools/create-documents.js +18 -10
  124. package/dist-lib/lib/tools/edit-documents.js +23 -13
  125. package/dist-lib/lib/tools/edit-image.d.ts +2 -2
  126. package/dist-lib/lib/tools/edit-image.js +60 -36
  127. package/dist-lib/lib/tools/exec/adapters/adapter.d.ts +10 -10
  128. package/dist-lib/lib/tools/exec/adapters/python/attachments.d.ts +17 -11
  129. package/dist-lib/lib/tools/exec/adapters/python/attachments.js +53 -40
  130. package/dist-lib/lib/tools/exec/adapters/python/create-effect.d.ts +2 -2
  131. package/dist-lib/lib/tools/exec/adapters/python/create-effect.js +60 -32
  132. package/dist-lib/lib/tools/exec/adapters/python/guarded-fetch.d.ts +33 -22
  133. package/dist-lib/lib/tools/exec/adapters/python/guarded-fetch.js +58 -29
  134. package/dist-lib/lib/tools/exec/adapters/python/interrupt-timer.d.ts +2 -2
  135. package/dist-lib/lib/tools/exec/adapters/python/loader.js +23 -12
  136. package/dist-lib/lib/tools/exec/adapters/python/memfs.d.ts +13 -11
  137. package/dist-lib/lib/tools/exec/adapters/python/memfs.js +10 -5
  138. package/dist-lib/lib/tools/exec/adapters/python/net-shim.js +3 -1
  139. package/dist-lib/lib/tools/exec/adapters/python/output-policy.d.ts +6 -4
  140. package/dist-lib/lib/tools/exec/adapters/python/output-policy.js +20 -10
  141. package/dist-lib/lib/tools/exec/adapters/python/pyodide.d.ts +2 -2
  142. package/dist-lib/lib/tools/exec/adapters/python/pyodide.js +14 -7
  143. package/dist-lib/lib/tools/exec/adapters/python/python-adapter.d.ts +41 -34
  144. package/dist-lib/lib/tools/exec/adapters/python/python-adapter.js +316 -166
  145. package/dist-lib/lib/tools/exec/adapters/python/run-session.d.ts +9 -8
  146. package/dist-lib/lib/tools/exec/adapters/python/run-session.js +56 -28
  147. package/dist-lib/lib/tools/exec/adapters/python/wheels.d.ts +8 -10
  148. package/dist-lib/lib/tools/exec/adapters/python/wheels.js +22 -11
  149. package/dist-lib/lib/tools/exec/adapters/python/worker/client.d.ts +3 -2
  150. package/dist-lib/lib/tools/exec/adapters/python/worker/client.js +41 -26
  151. package/dist-lib/lib/tools/exec/adapters/python/worker/entry.js +27 -18
  152. package/dist-lib/lib/tools/exec/adapters/python/worker/protocol.d.ts +2 -2
  153. package/dist-lib/lib/tools/exec/adapters/python/worker/protocol.js +14 -13
  154. package/dist-lib/lib/tools/exec/adapters/python/worker/spawn-node.d.ts +4 -4
  155. package/dist-lib/lib/tools/exec/adapters/python/worker/spawn-node.js +10 -5
  156. package/dist-lib/lib/tools/exec/adapters/shell/shell-adapter.d.ts +4 -4
  157. package/dist-lib/lib/tools/exec/adapters/shell/shell-adapter.js +2 -1
  158. package/dist-lib/lib/tools/exec/obsidian/cli-process.d.ts +6 -1
  159. package/dist-lib/lib/tools/exec/obsidian/cli-process.js +8 -5
  160. package/dist-lib/lib/tools/exec/obsidian/cli.d.ts +6 -6
  161. package/dist-lib/lib/tools/exec/obsidian/cli.js +4 -4
  162. package/dist-lib/lib/tools/exec/obsidian/command.d.ts +3 -2
  163. package/dist-lib/lib/tools/exec/obsidian/command.js +6 -3
  164. package/dist-lib/lib/tools/exec/obsidian/output.js +2 -1
  165. package/dist-lib/lib/tools/exec/obsidian/route.d.ts +4 -6
  166. package/dist-lib/lib/tools/exec/obsidian/route.js +17 -11
  167. package/dist-lib/lib/tools/exec/obsidian/safe-path.js +2 -1
  168. package/dist-lib/lib/tools/exec/obsidian/vault-create.js +15 -7
  169. package/dist-lib/lib/tools/exec/obsidian/vault-paths.d.ts +2 -2
  170. package/dist-lib/lib/tools/exec/obsidian/vault-paths.js +20 -10
  171. package/dist-lib/lib/tools/exec/obsidian/vault-read.js +20 -13
  172. package/dist-lib/lib/tools/exec/obsidian/vault-write.js +24 -12
  173. package/dist-lib/lib/tools/exec/runner.d.ts +14 -14
  174. package/dist-lib/lib/tools/exec/runner.js +5 -3
  175. package/dist-lib/lib/tools/exec/scope.js +52 -28
  176. package/dist-lib/lib/tools/exec/shell-argv.js +31 -18
  177. package/dist-lib/lib/tools/exec/shell-guidance.d.ts +6 -1
  178. package/dist-lib/lib/tools/exec/shell-guidance.js +35 -20
  179. package/dist-lib/lib/tools/exec/video-tools.js +2 -2
  180. package/dist-lib/lib/tools/exec.d.ts +6 -8
  181. package/dist-lib/lib/tools/exec.js +113 -54
  182. package/dist-lib/lib/tools/file-glob.d.ts +4 -5
  183. package/dist-lib/lib/tools/file-glob.js +16 -11
  184. package/dist-lib/lib/tools/fs/glob.js +13 -18
  185. package/dist-lib/lib/tools/fs/remote-protocol.d.ts +10 -10
  186. package/dist-lib/lib/tools/fs/remote.d.ts +3 -2
  187. package/dist-lib/lib/tools/fs/remote.js +13 -7
  188. package/dist-lib/lib/tools/fs/scope.d.ts +8 -3
  189. package/dist-lib/lib/tools/fs/scope.js +20 -12
  190. package/dist-lib/lib/tools/fs/walk.js +6 -3
  191. package/dist-lib/lib/tools/fs/write.d.ts +3 -2
  192. package/dist-lib/lib/tools/generate-image.d.ts +11 -9
  193. package/dist-lib/lib/tools/generate-image.js +73 -37
  194. package/dist-lib/lib/tools/generate-music.d.ts +22 -11
  195. package/dist-lib/lib/tools/generate-music.js +79 -48
  196. package/dist-lib/lib/tools/grep.js +66 -41
  197. package/dist-lib/lib/tools/http-request/encode-fields.js +18 -9
  198. package/dist-lib/lib/tools/http-request/{utils.js → request.js} +20 -11
  199. package/dist-lib/lib/tools/http-request/truncate-response.js +57 -46
  200. package/dist-lib/lib/tools/http-request.d.ts +1 -1
  201. package/dist-lib/lib/tools/http-request.js +33 -18
  202. package/dist-lib/lib/tools/mcp/protocol.d.ts +53 -0
  203. package/dist-lib/lib/tools/mcp/{utils.js → protocol.js} +45 -23
  204. package/dist-lib/lib/tools/mcp-call.d.ts +1 -1
  205. package/dist-lib/lib/tools/mcp-call.js +37 -16
  206. package/dist-lib/lib/tools/operations/builders.js +10 -6
  207. package/dist-lib/lib/tools/operations/compile.js +20 -10
  208. package/dist-lib/lib/tools/operations/decoders.js +12 -6
  209. package/dist-lib/lib/tools/operations/gmail-message.js +3 -2
  210. package/dist-lib/lib/tools/outbound-guard.d.ts +4 -3
  211. package/dist-lib/lib/tools/outbound-guard.js +14 -8
  212. package/dist-lib/lib/tools/private-ip.js +8 -7
  213. package/dist-lib/lib/tools/rag-search.js +14 -7
  214. package/dist-lib/lib/tools/read-files.js +23 -20
  215. package/dist-lib/lib/tools/skill.js +19 -10
  216. package/dist-lib/lib/tools/skills/auth-resolver.d.ts +11 -18
  217. package/dist-lib/lib/tools/skills/auth-resolver.js +30 -18
  218. package/dist-lib/lib/tools/skills/bin-check.d.ts +3 -2
  219. package/dist-lib/lib/tools/skills/bin-check.js +10 -3
  220. package/dist-lib/lib/tools/skills/bundled-dir.js +20 -10
  221. package/dist-lib/lib/tools/skills/bundled-hash.d.ts +3 -2
  222. package/dist-lib/lib/tools/skills/bundled-hash.js +6 -1
  223. package/dist-lib/lib/tools/skills/catalog.d.ts +3 -2
  224. package/dist-lib/lib/tools/skills/catalog.js +33 -28
  225. package/dist-lib/lib/tools/skills/cli-argv.d.ts +3 -2
  226. package/dist-lib/lib/tools/skills/cli-argv.js +55 -52
  227. package/dist-lib/lib/tools/skills/cli-schema-check.js +21 -10
  228. package/dist-lib/lib/tools/skills/cli-schema-load.js +28 -20
  229. package/dist-lib/lib/tools/skills/cli-schema-types.d.ts +6 -6
  230. package/dist-lib/lib/tools/skills/cli-schema.js +2 -1
  231. package/dist-lib/lib/tools/skills/credential-check.d.ts +6 -3
  232. package/dist-lib/lib/tools/skills/credential-check.js +24 -12
  233. package/dist-lib/lib/tools/skills/credential-grants.js +1 -6
  234. package/dist-lib/lib/tools/skills/credential-health.d.ts +5 -1
  235. package/dist-lib/lib/tools/skills/credential-health.js +5 -3
  236. package/dist-lib/lib/tools/skills/frontmatter-parser.js +10 -5
  237. package/dist-lib/lib/tools/skills/manifest-parse.js +84 -64
  238. package/dist-lib/lib/tools/skills/mention.js +7 -6
  239. package/dist-lib/lib/tools/skills/obsidian-readiness.d.ts +2 -2
  240. package/dist-lib/lib/tools/skills/obsidian-readiness.js +11 -3
  241. package/dist-lib/lib/tools/skills/overlay-crud.d.ts +6 -4
  242. package/dist-lib/lib/tools/skills/overlay-crud.js +12 -6
  243. package/dist-lib/lib/tools/skills/overlay-dir.js +4 -2
  244. package/dist-lib/lib/tools/skills/overlay-watch.d.ts +3 -2
  245. package/dist-lib/lib/tools/skills/overlay-watch.js +8 -4
  246. package/dist-lib/lib/tools/skills/setup-routes.js +1 -3
  247. package/dist-lib/lib/tools/skills/skill-settings.js +4 -1
  248. package/dist-lib/lib/tools/skills/skill-state.d.ts +6 -11
  249. package/dist-lib/lib/tools/skills/skill-state.js +48 -29
  250. package/dist-lib/lib/tools/skills/tool-grants.js +6 -3
  251. package/dist-lib/lib/tools/toolsets.js +2 -1
  252. package/dist-lib/lib/tools/translate.d.ts +4 -5
  253. package/dist-lib/lib/tools/translate.js +31 -14
  254. package/dist-lib/lib/tools/url-guard.js +2 -1
  255. package/dist-lib/lib/tools/weather-lookup/place.js +8 -4
  256. package/dist-lib/lib/tools/weather-lookup/report.d.ts +7 -1
  257. package/dist-lib/lib/tools/weather-lookup/report.js +46 -9
  258. package/dist-lib/lib/tools/weather-lookup.js +18 -12
  259. package/dist-lib/lib/tools/web-fetch.js +47 -24
  260. package/dist-lib/lib/tools/web-search.js +8 -3
  261. package/dist-lib/lib/validating-lookup.d.ts +4 -4
  262. package/dist-lib/lib/wav-encode.d.ts +1 -1
  263. package/dist-lib/lib/wav-encode.js +11 -10
  264. package/dist-lib/lib/web-fetch/embedded-state.js +24 -12
  265. package/dist-lib/lib/web-fetch/extract.js +4 -2
  266. package/dist-lib/lib/web-fetch/images.js +8 -4
  267. package/dist-lib/lib/web-fetch/video.d.ts +2 -2
  268. package/dist-lib/lib/web-fetch/video.js +8 -4
  269. package/dist-lib/lib/web-search/engine-registry.d.ts +2 -2
  270. package/dist-lib/lib/web-search/engines/aol.js +1 -1
  271. package/dist-lib/lib/web-search/engines/bing.js +1 -1
  272. package/dist-lib/lib/web-search/engines/brave.js +4 -1
  273. package/dist-lib/lib/web-search/engines/duckduckgo.js +3 -2
  274. package/dist-lib/lib/web-search/engines/google.js +7 -3
  275. package/dist-lib/lib/web-search/engines/wikipedia.js +5 -4
  276. package/dist-lib/lib/web-search/engines/yahoo.js +1 -1
  277. package/dist-lib/lib/web-search/fetch-html.d.ts +5 -4
  278. package/dist-lib/lib/web-search/fetch-html.js +13 -7
  279. package/dist-lib/lib/web-search/orchestrator.d.ts +9 -5
  280. package/dist-lib/lib/web-search/orchestrator.js +3 -3
  281. package/dist-lib/lib/wire.d.ts +3 -2
  282. package/dist-lib/lib/wire.js +23 -15
  283. package/dist-lib/schema/baseline.js +10 -5
  284. package/dist-lib/schema/build.js +2 -1
  285. package/dist-lib/schema/harness.d.ts +15 -2
  286. package/dist-lib/schema/harness.js +55 -2
  287. package/dist-lib/schema/release-tags.d.ts +3 -2
  288. package/dist-lib/schema/release-tags.js +6 -3
  289. package/dist-lib/spec/bind.js +6 -0
  290. package/dist-lib/spec/calls.js +2 -0
  291. package/dist-lib/spec/hrpc/hrpc.json +26 -0
  292. package/dist-lib/spec/hrpc/index.js +27 -3
  293. package/dist-lib/spec/hrpc/messages.js +207 -8
  294. package/dist-lib/spec/hyperschema/index.js +207 -8
  295. package/dist-lib/spec/hyperschema/schema.json +165 -1
  296. package/dist-lib/spec/hyperschema/types.d.ts +42 -1
  297. package/package.json +13 -14
  298. package/worker/harness-sidecar.mjs +16 -22
  299. package/worker/stow-entry.mjs +7 -4
  300. package/dist-lib/lib/tools/mcp/utils.d.ts +0 -47
  301. /package/dist-lib/lib/tools/http-request/{utils.d.ts → request.d.ts} +0 -0
@@ -7,18 +7,18 @@ export type DownloadProgressEvent = {
7
7
  type: 'progress';
8
8
  transferred?: boolean;
9
9
  } & DownloadProgress;
10
- export type DownloadCompleteEvent = {
10
+ export interface DownloadCompleteEvent {
11
11
  type: 'complete';
12
12
  assetId: string;
13
13
  downloaded?: boolean;
14
- };
15
- export type DownloadErrorEvent = {
14
+ }
15
+ export interface DownloadErrorEvent {
16
16
  type: 'error';
17
17
  message: string;
18
- };
19
- export type DownloadAbortedEvent = {
18
+ }
19
+ export interface DownloadAbortedEvent {
20
20
  type: 'aborted';
21
- };
21
+ }
22
22
  export type DownloadEvent = DownloadProgressEvent | DownloadCompleteEvent | DownloadErrorEvent | DownloadAbortedEvent;
23
23
  export interface DownloadSdk extends ModelRegistrySdk {
24
24
  downloadAsset(options: {
@@ -1,5 +1,5 @@
1
1
  import { Readable } from 'streamx';
2
- import { errorMessage } from '../error-fields.js';
2
+ import { errorMessage } from '../guards.js';
3
3
  import { resolveModelSrc } from '../models/model-source.js';
4
4
  const noop = () => { };
5
5
  export function download(sdkOrLoader, args, onSettled) {
@@ -30,12 +30,14 @@ export function download(sdkOrLoader, args, onSettled) {
30
30
  finish({ type: 'aborted' });
31
31
  };
32
32
  const onProgress = (p) => {
33
- if (!settled)
33
+ if (!settled) {
34
34
  stream.push({ ...p, type: 'progress', transferred });
35
+ }
35
36
  };
36
37
  const start = async () => {
37
- if (signal?.aborted)
38
+ if (signal?.aborted) {
38
39
  return finish({ type: 'aborted' });
40
+ }
39
41
  try {
40
42
  sdkRef = await loadSdk();
41
43
  const resolved = await resolveModelSrc(sdkRef, model, addon);
@@ -44,8 +46,9 @@ export function download(sdkOrLoader, args, onSettled) {
44
46
  const aggregate = aggregateLayout(srcs, assetSizes);
45
47
  let mainAssetId = '';
46
48
  for (let i = 0; i < srcs.length; i++) {
47
- if (signal?.aborted)
49
+ if (signal?.aborted) {
48
50
  return finish({ type: 'aborted' });
51
+ }
49
52
  const progress = aggregate
50
53
  ? aggregateProgressHandler(onProgress, {
51
54
  setKey: mainSrc,
@@ -61,23 +64,26 @@ export function download(sdkOrLoader, args, onSettled) {
61
64
  assetSrc: srcs[i],
62
65
  seed,
63
66
  onProgress: (update) => {
64
- if (update.percentage < 100)
67
+ if (update.percentage < 100) {
65
68
  transferred = true;
69
+ }
66
70
  progress(update);
67
71
  }
68
72
  });
69
73
  requestId = op.requestId;
70
74
  const assetId = await op;
71
- if (i === 0)
75
+ if (i === 0) {
72
76
  mainAssetId = assetId;
77
+ }
73
78
  }
74
79
  opDone = true;
75
80
  finish({ type: 'complete', assetId: mainAssetId, downloaded: transferred });
76
81
  }
77
82
  catch (err) {
78
83
  opDone = true;
79
- if (signal?.aborted)
84
+ if (signal?.aborted) {
80
85
  return finish({ type: 'aborted' });
86
+ }
81
87
  finish({ type: 'error', message: errorMessage(err) });
82
88
  }
83
89
  };
@@ -103,8 +109,9 @@ function aggregateLayout(sources, assetSizes) {
103
109
  let totalBytes = 0;
104
110
  for (const source of sources) {
105
111
  const size = assetSizes[source];
106
- if (!Number.isFinite(size) || size <= 0)
112
+ if (!Number.isFinite(size) || size <= 0) {
107
113
  return null;
114
+ }
108
115
  offsets.push(totalBytes);
109
116
  sizes.push(size);
110
117
  totalBytes += size;
@@ -7,7 +7,8 @@ export function createEmbedLane() {
7
7
  const { embedding } = await sdk.embed({ modelId, text: texts });
8
8
  return embedding;
9
9
  });
10
- tail = job.catch(() => { });
10
+ tail = job.catch(noop);
11
11
  return job;
12
12
  };
13
13
  }
14
+ function noop() { }
@@ -7,4 +7,9 @@ export interface EnhanceResult {
7
7
  totalTokens?: number;
8
8
  }
9
9
  export type Enhancer = (prompt: string, signal?: BareAbortSignal) => Promise<EnhanceResult | null>;
10
- export declare function expandImagePrompt(sdk: CompletionSdk, modelId: string, model: string, prompt: string, signal?: BareAbortSignal): Promise<EnhanceResult | null>;
10
+ export interface ExpandImagePromptOptions {
11
+ modelId: string;
12
+ model: string;
13
+ signal?: BareAbortSignal | undefined;
14
+ }
15
+ export declare function expandImagePrompt(sdk: CompletionSdk, prompt: string, { modelId, model, signal }: ExpandImagePromptOptions): Promise<EnhanceResult | null>;
@@ -3,7 +3,7 @@ import { raceAbort } from '../helpers/race-abort.js';
3
3
  const SYSTEM = "Rewrite the user's description as a single vivid prompt for an image generator. " +
4
4
  'Answer with the prompt alone: no preamble, no quotes, no explanation.';
5
5
  const MAX_PROMPT_CHARS = 400;
6
- export async function expandImagePrompt(sdk, modelId, model, prompt, signal) {
6
+ export async function expandImagePrompt(sdk, prompt, { modelId, model, signal }) {
7
7
  const run = sdk.completion({
8
8
  modelId,
9
9
  history: [
@@ -18,12 +18,15 @@ export async function expandImagePrompt(sdk, modelId, model, prompt, signal) {
18
18
  final = await raceAbort(run.final, signal);
19
19
  }
20
20
  catch (err) {
21
- if (run.requestId)
22
- void sdk.cancel?.({ requestId: run.requestId }).catch(() => { });
21
+ if (run.requestId) {
22
+ void sdk.cancel?.({ requestId: run.requestId }).catch(noop);
23
+ }
23
24
  throw err;
24
25
  }
25
26
  const text = cleanAnswer(final.contentText).slice(0, MAX_PROMPT_CHARS);
26
- if (!text)
27
+ if (!text) {
27
28
  return null;
29
+ }
28
30
  return { text, model, totalTokens: final.stats?.generatedTokens };
29
31
  }
32
+ function noop() { }
@@ -1,9 +1,10 @@
1
+ import { errorMessage } from '../guards.js';
1
2
  import { AbortedError } from '../helpers/race-abort.js';
2
3
  const CAPABILITY_TOOLS = {
3
4
  image: { tool: 'generate_image', enhances: 'prompt' },
4
5
  translate: { tool: 'translate' }
5
6
  };
6
- export const CAPABILITIES = Object.keys(CAPABILITY_TOOLS);
7
+ export const CAPABILITIES = Object.keys(CAPABILITY_TOOLS).filter(isCapability);
7
8
  export function isCapability(name) {
8
9
  return name in CAPABILITY_TOOLS;
9
10
  }
@@ -30,13 +31,15 @@ export async function* invoke({ capability, args, tools, ctx, enhance = 'never',
30
31
  }
31
32
  }
32
33
  }
33
- if (ctx.signal?.aborted)
34
+ if (ctx.signal?.aborted) {
34
35
  return yield { type: 'aborted' };
36
+ }
35
37
  yield { type: 'tool-call', name: entry.tool, args: called, effect: tool.effect(called, ctx) };
36
38
  try {
37
39
  const result = await tool.execute(called, ctx);
38
- if (ctx.signal?.aborted)
40
+ if (ctx.signal?.aborted) {
39
41
  return yield { type: 'aborted' };
42
+ }
40
43
  yield { type: 'tool-result', name: entry.tool, result };
41
44
  }
42
45
  catch (err) {
@@ -44,7 +47,7 @@ export async function* invoke({ capability, args, tools, ctx, enhance = 'never',
44
47
  yield { type: 'aborted' };
45
48
  return;
46
49
  }
47
- yield { type: 'error', message: err instanceof Error ? err.message : String(err) };
50
+ yield { type: 'error', message: errorMessage(err) };
48
51
  return;
49
52
  }
50
53
  yield {
@@ -1,3 +1,4 @@
1
+ import { errorMessage } from '../guards.js';
1
2
  export async function deleteAllKvCaches(loadSdk) {
2
3
  return deleteCacheWith(loadSdk, { all: true });
3
4
  }
@@ -15,7 +16,7 @@ async function deleteCacheWith(loadSdk, params) {
15
16
  catch (error) {
16
17
  return {
17
18
  status: 'failure',
18
- error: error instanceof Error ? error.message : String(error)
19
+ error: errorMessage(error)
19
20
  };
20
21
  }
21
22
  }
@@ -0,0 +1,69 @@
1
+ import type { HarnessPreviewModelSourceResponse } from '../../spec/hyperschema/types.d.ts';
2
+ export type ModelFitVerdict = 'likely-fits' | 'likely-too-large' | 'unknown';
3
+ export type ModelSourceRefusal = 'invalid-source' | 'not-found' | 'private' | 'gated' | 'web-page' | 'unreachable' | 'not-gguf' | 'not-a-model' | 'no-model-files' | 'invalid-projection';
4
+ export type ModelTaskType = 'llm' | 'embeddings' | 'speech-to-text' | 'text-to-speech' | 'image-generation';
5
+ export interface ModelSourceFile {
6
+ src: string;
7
+ label: string;
8
+ sizeBytes: number;
9
+ }
10
+ export interface ModelSourcePreview {
11
+ ok: boolean;
12
+ refusal?: ModelSourceRefusal;
13
+ reason?: string;
14
+ src?: string;
15
+ files?: ModelSourceFile[];
16
+ sizeBytes?: number;
17
+ contextLength?: number;
18
+ architecture?: string;
19
+ sizeLabel?: string;
20
+ taskType?: string;
21
+ license?: string;
22
+ fit?: ModelFitVerdict;
23
+ fitReasons?: string[];
24
+ mmprojSrc?: string;
25
+ }
26
+ export interface PreviewModelSourceContext {
27
+ src: string;
28
+ mmprojSrc?: string;
29
+ }
30
+ export interface PreviewResponse {
31
+ ok: boolean;
32
+ status: number;
33
+ headers: {
34
+ get(name: string): string | null;
35
+ };
36
+ json(): Promise<unknown>;
37
+ arrayBuffer(): Promise<ArrayBuffer>;
38
+ }
39
+ export type PreviewFetch = (url: string, init?: {
40
+ method?: string;
41
+ headers?: Record<string, string>;
42
+ redirect?: 'follow';
43
+ }) => Promise<PreviewResponse>;
44
+ export interface FitQuery {
45
+ sha256Checksum: string;
46
+ name: string;
47
+ contextTokens: number;
48
+ }
49
+ export interface PreviewDeps {
50
+ fetch?: PreviewFetch;
51
+ stat?(path: string): Promise<FileStat | null>;
52
+ assessFit?(query: FitQuery): Promise<FitAssessment>;
53
+ }
54
+ export interface FileStat {
55
+ size: number;
56
+ }
57
+ export interface FitAssessment {
58
+ fit: ModelFitVerdict;
59
+ fitReasons: string[];
60
+ }
61
+ interface HuggingFaceRef {
62
+ repo: string;
63
+ revision: string;
64
+ file?: string;
65
+ }
66
+ export declare function previewModelSource(context: PreviewModelSourceContext, deps?: PreviewDeps): Promise<ModelSourcePreview>;
67
+ export declare function readModelSourcePreview(response: HarnessPreviewModelSourceResponse): ModelSourcePreview;
68
+ export declare function parseHuggingFaceRef(src: string): HuggingFaceRef | null;
69
+ export {};