@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.
- package/CHANGELOG.md +700 -126
- package/README.md +156 -0
- package/dist/harness.bundle +71 -103
- package/dist/prebuilds-manifest.json +0 -8
- package/dist-lib/index.d.ts +42 -40
- package/dist-lib/index.js +307 -117
- package/dist-lib/lib/audio-transcode-bare.d.ts +2 -2
- package/dist-lib/lib/audio-transcode-bare.js +28 -18
- package/dist-lib/lib/audio-transcode-node.d.ts +2 -2
- package/dist-lib/lib/capabilities/audio-resample.d.ts +7 -6
- package/dist-lib/lib/capabilities/audio-resample.js +30 -18
- package/dist-lib/lib/capabilities/completion.d.ts +20 -19
- package/dist-lib/lib/capabilities/completion.js +194 -135
- package/dist-lib/lib/capabilities/download.d.ts +6 -6
- package/dist-lib/lib/capabilities/download.js +15 -8
- package/dist-lib/lib/capabilities/embed.js +2 -1
- package/dist-lib/lib/capabilities/enhance.d.ts +6 -1
- package/dist-lib/lib/capabilities/enhance.js +7 -4
- package/dist-lib/lib/capabilities/invoke.js +7 -4
- package/dist-lib/lib/capabilities/kv-cache.js +2 -1
- package/dist-lib/lib/capabilities/preview-model-source.d.ts +69 -0
- package/dist-lib/lib/capabilities/preview-model-source.js +439 -0
- package/dist-lib/lib/capabilities/speech-text.js +5 -4
- package/dist-lib/lib/capabilities/tool-selection.js +10 -9
- package/dist-lib/lib/capabilities/tool-turns.js +30 -16
- package/dist-lib/lib/capabilities/usage-breakdown.js +2 -1
- package/dist-lib/lib/capabilities/voice.d.ts +5 -1
- package/dist-lib/lib/capabilities/voice.js +22 -12
- package/dist-lib/lib/connect.d.ts +15 -37
- package/dist-lib/lib/connect.js +161 -112
- package/dist-lib/lib/context-window.js +25 -21
- package/dist-lib/lib/contract-types.d.ts +26 -20
- package/dist-lib/lib/diagram-repair.d.ts +4 -4
- package/dist-lib/lib/diagram-repair.js +6 -3
- package/dist-lib/lib/docx/index.d.ts +3 -2
- package/dist-lib/lib/{error-fields.d.ts → guards.d.ts} +1 -0
- package/dist-lib/lib/{error-fields.js → guards.js} +3 -0
- package/dist-lib/lib/hardware/capability-probe.js +20 -10
- package/dist-lib/lib/hardware/gpu-classify.js +6 -3
- package/dist-lib/lib/hardware/gpu-probe-addon.js +8 -4
- package/dist-lib/lib/hardware/gpu-probe.js +4 -2
- package/dist-lib/lib/hardware/gpu-stats.native.cjs +8 -9
- package/dist-lib/lib/hardware/parsers.js +8 -4
- package/dist-lib/lib/helpers/buffer-burst.js +4 -2
- package/dist-lib/lib/helpers/control-tokens.js +4 -2
- package/dist-lib/lib/helpers/join-guard.d.ts +2 -2
- package/dist-lib/lib/helpers/join-guard.js +4 -2
- package/dist-lib/lib/helpers/load-stall.js +4 -2
- package/dist-lib/lib/helpers/markup-stream-filter.d.ts +2 -2
- package/dist-lib/lib/helpers/markup-stream-filter.js +6 -3
- package/dist-lib/lib/helpers/race-abort.js +2 -1
- package/dist-lib/lib/helpers/race-timeout.d.ts +5 -0
- package/dist-lib/lib/helpers/race-timeout.js +14 -0
- package/dist-lib/lib/helpers/run-outcome.d.ts +6 -8
- package/dist-lib/lib/helpers/run-outcome.js +36 -20
- package/dist-lib/lib/helpers/spawn-path.js +6 -3
- package/dist-lib/lib/helpers/text-coalescer.js +6 -3
- package/dist-lib/lib/helpers/thinking.js +38 -45
- package/dist-lib/lib/helpers/tool-call-markup.d.ts +9 -7
- package/dist-lib/lib/helpers/tool-call-markup.js +36 -20
- package/dist-lib/lib/helpers/tool-intent.d.ts +3 -2
- package/dist-lib/lib/helpers/tool-intent.js +4 -2
- package/dist-lib/lib/helpers/tool-label.js +18 -9
- package/dist-lib/lib/hooks/built-in/arg-repair.js +23 -13
- package/dist-lib/lib/hooks/built-in/egress.js +2 -1
- package/dist-lib/lib/hooks/built-in/skill-catalog.js +2 -1
- package/dist-lib/lib/hooks/pipeline.d.ts +5 -4
- package/dist-lib/lib/hooks/pipeline.js +6 -3
- package/dist-lib/lib/hooks/run.js +12 -8
- package/dist-lib/lib/model-download-progress.js +10 -8
- package/dist-lib/lib/models/context.d.ts +1 -1
- package/dist-lib/lib/models/context.js +5 -1
- package/dist-lib/lib/models/custom-model-cache.d.ts +13 -0
- package/dist-lib/lib/models/custom-model-cache.js +70 -0
- package/dist-lib/lib/models/gguf-header.d.ts +31 -0
- package/dist-lib/lib/models/gguf-header.js +230 -0
- package/dist-lib/lib/models/idle-unload.d.ts +14 -0
- package/dist-lib/lib/models/idle-unload.js +51 -0
- package/dist-lib/lib/models/kv-cache.d.ts +3 -2
- package/dist-lib/lib/models/kv-cache.js +4 -3
- package/dist-lib/lib/models/llm-presets.d.ts +2 -2
- package/dist-lib/lib/models/llm-presets.js +4 -2
- package/dist-lib/lib/models/model-catalog-constants.js +3 -2
- package/dist-lib/lib/models/model-catalog.d.ts +19 -21
- package/dist-lib/lib/models/model-catalog.js +66 -33
- package/dist-lib/lib/models/model-delete.d.ts +4 -1
- package/dist-lib/lib/models/model-delete.js +30 -15
- package/dist-lib/lib/models/model-handle.js +2 -1
- package/dist-lib/lib/models/model-list.d.ts +14 -3
- package/dist-lib/lib/models/model-list.js +33 -6
- package/dist-lib/lib/models/model-pool.d.ts +44 -10
- package/dist-lib/lib/models/model-pool.js +47 -42
- package/dist-lib/lib/models/model-source.js +11 -6
- package/dist-lib/lib/models/music-catalog.d.ts +2 -2
- package/dist-lib/lib/models/nmt-catalog.d.ts +4 -3
- package/dist-lib/lib/models/nmt-catalog.js +10 -5
- package/dist-lib/lib/models/opencl-cache.d.ts +6 -1
- package/dist-lib/lib/models/opencl-cache.js +5 -3
- package/dist-lib/lib/models/sdk-faults.d.ts +11 -8
- package/dist-lib/lib/models/sdk-faults.js +9 -6
- package/dist-lib/lib/models/shards.d.ts +11 -0
- package/dist-lib/lib/models/shards.js +15 -0
- package/dist-lib/lib/models/tool-dialect.js +10 -5
- package/dist-lib/lib/no-redirect-fetch-bare.d.ts +3 -3
- package/dist-lib/lib/no-redirect-fetch-bare.js +1 -1
- package/dist-lib/lib/no-redirect-fetch-impl.js +6 -3
- package/dist-lib/lib/no-redirect-fetch-node.d.ts +1 -1
- package/dist-lib/lib/no-redirect-fetch-node.js +9 -9
- package/dist-lib/lib/office/index.d.ts +3 -2
- package/dist-lib/lib/office/python.d.ts +3 -2
- package/dist-lib/lib/office/python.js +2 -1
- package/dist-lib/lib/prompt.d.ts +5 -4
- package/dist-lib/lib/prompt.js +8 -4
- package/dist-lib/lib/queue.js +10 -5
- package/dist-lib/lib/resolution-detector.js +21 -11
- package/dist-lib/lib/rpc-session.js +2 -1
- package/dist-lib/lib/sdk-loader.js +2 -1
- package/dist-lib/lib/sdk-storage.js +4 -2
- package/dist-lib/lib/serve.js +128 -68
- package/dist-lib/lib/spawn.js +7 -4
- package/dist-lib/lib/tmp-path.d.ts +7 -6
- package/dist-lib/lib/tool-call-display.d.ts +2 -2
- package/dist-lib/lib/tools/create-documents.js +18 -10
- package/dist-lib/lib/tools/edit-documents.js +23 -13
- package/dist-lib/lib/tools/edit-image.d.ts +2 -2
- package/dist-lib/lib/tools/edit-image.js +60 -36
- package/dist-lib/lib/tools/exec/adapters/adapter.d.ts +10 -10
- package/dist-lib/lib/tools/exec/adapters/python/attachments.d.ts +17 -11
- package/dist-lib/lib/tools/exec/adapters/python/attachments.js +53 -40
- package/dist-lib/lib/tools/exec/adapters/python/create-effect.d.ts +2 -2
- package/dist-lib/lib/tools/exec/adapters/python/create-effect.js +60 -32
- package/dist-lib/lib/tools/exec/adapters/python/guarded-fetch.d.ts +33 -22
- package/dist-lib/lib/tools/exec/adapters/python/guarded-fetch.js +58 -29
- package/dist-lib/lib/tools/exec/adapters/python/interrupt-timer.d.ts +2 -2
- package/dist-lib/lib/tools/exec/adapters/python/loader.js +23 -12
- package/dist-lib/lib/tools/exec/adapters/python/memfs.d.ts +13 -11
- package/dist-lib/lib/tools/exec/adapters/python/memfs.js +10 -5
- package/dist-lib/lib/tools/exec/adapters/python/net-shim.js +3 -1
- package/dist-lib/lib/tools/exec/adapters/python/output-policy.d.ts +6 -4
- package/dist-lib/lib/tools/exec/adapters/python/output-policy.js +20 -10
- package/dist-lib/lib/tools/exec/adapters/python/pyodide.d.ts +2 -2
- package/dist-lib/lib/tools/exec/adapters/python/pyodide.js +14 -7
- package/dist-lib/lib/tools/exec/adapters/python/python-adapter.d.ts +41 -34
- package/dist-lib/lib/tools/exec/adapters/python/python-adapter.js +316 -166
- package/dist-lib/lib/tools/exec/adapters/python/run-session.d.ts +9 -8
- package/dist-lib/lib/tools/exec/adapters/python/run-session.js +56 -28
- package/dist-lib/lib/tools/exec/adapters/python/wheels.d.ts +8 -10
- package/dist-lib/lib/tools/exec/adapters/python/wheels.js +22 -11
- package/dist-lib/lib/tools/exec/adapters/python/worker/client.d.ts +3 -2
- package/dist-lib/lib/tools/exec/adapters/python/worker/client.js +41 -26
- package/dist-lib/lib/tools/exec/adapters/python/worker/entry.js +27 -18
- package/dist-lib/lib/tools/exec/adapters/python/worker/protocol.d.ts +2 -2
- package/dist-lib/lib/tools/exec/adapters/python/worker/protocol.js +14 -13
- package/dist-lib/lib/tools/exec/adapters/python/worker/spawn-node.d.ts +4 -4
- package/dist-lib/lib/tools/exec/adapters/python/worker/spawn-node.js +10 -5
- package/dist-lib/lib/tools/exec/adapters/shell/shell-adapter.d.ts +4 -4
- package/dist-lib/lib/tools/exec/adapters/shell/shell-adapter.js +2 -1
- package/dist-lib/lib/tools/exec/obsidian/cli-process.d.ts +6 -1
- package/dist-lib/lib/tools/exec/obsidian/cli-process.js +8 -5
- package/dist-lib/lib/tools/exec/obsidian/cli.d.ts +6 -6
- package/dist-lib/lib/tools/exec/obsidian/cli.js +4 -4
- package/dist-lib/lib/tools/exec/obsidian/command.d.ts +3 -2
- package/dist-lib/lib/tools/exec/obsidian/command.js +6 -3
- package/dist-lib/lib/tools/exec/obsidian/output.js +2 -1
- package/dist-lib/lib/tools/exec/obsidian/route.d.ts +4 -6
- package/dist-lib/lib/tools/exec/obsidian/route.js +17 -11
- package/dist-lib/lib/tools/exec/obsidian/safe-path.js +2 -1
- package/dist-lib/lib/tools/exec/obsidian/vault-create.js +15 -7
- package/dist-lib/lib/tools/exec/obsidian/vault-paths.d.ts +2 -2
- package/dist-lib/lib/tools/exec/obsidian/vault-paths.js +20 -10
- package/dist-lib/lib/tools/exec/obsidian/vault-read.js +20 -13
- package/dist-lib/lib/tools/exec/obsidian/vault-write.js +24 -12
- package/dist-lib/lib/tools/exec/runner.d.ts +14 -14
- package/dist-lib/lib/tools/exec/runner.js +5 -3
- package/dist-lib/lib/tools/exec/scope.js +52 -28
- package/dist-lib/lib/tools/exec/shell-argv.js +31 -18
- package/dist-lib/lib/tools/exec/shell-guidance.d.ts +6 -1
- package/dist-lib/lib/tools/exec/shell-guidance.js +35 -20
- package/dist-lib/lib/tools/exec/video-tools.js +2 -2
- package/dist-lib/lib/tools/exec.d.ts +6 -8
- package/dist-lib/lib/tools/exec.js +113 -54
- package/dist-lib/lib/tools/file-glob.d.ts +4 -5
- package/dist-lib/lib/tools/file-glob.js +16 -11
- package/dist-lib/lib/tools/fs/glob.js +13 -18
- package/dist-lib/lib/tools/fs/remote-protocol.d.ts +10 -10
- package/dist-lib/lib/tools/fs/remote.d.ts +3 -2
- package/dist-lib/lib/tools/fs/remote.js +13 -7
- package/dist-lib/lib/tools/fs/scope.d.ts +8 -3
- package/dist-lib/lib/tools/fs/scope.js +20 -12
- package/dist-lib/lib/tools/fs/walk.js +6 -3
- package/dist-lib/lib/tools/fs/write.d.ts +3 -2
- package/dist-lib/lib/tools/generate-image.d.ts +11 -9
- package/dist-lib/lib/tools/generate-image.js +73 -37
- package/dist-lib/lib/tools/generate-music.d.ts +22 -11
- package/dist-lib/lib/tools/generate-music.js +79 -48
- package/dist-lib/lib/tools/grep.js +66 -41
- package/dist-lib/lib/tools/http-request/encode-fields.js +18 -9
- package/dist-lib/lib/tools/http-request/{utils.js → request.js} +20 -11
- package/dist-lib/lib/tools/http-request/truncate-response.js +57 -46
- package/dist-lib/lib/tools/http-request.d.ts +1 -1
- package/dist-lib/lib/tools/http-request.js +33 -18
- package/dist-lib/lib/tools/mcp/protocol.d.ts +53 -0
- package/dist-lib/lib/tools/mcp/{utils.js → protocol.js} +45 -23
- package/dist-lib/lib/tools/mcp-call.d.ts +1 -1
- package/dist-lib/lib/tools/mcp-call.js +37 -16
- package/dist-lib/lib/tools/operations/builders.js +10 -6
- package/dist-lib/lib/tools/operations/compile.js +20 -10
- package/dist-lib/lib/tools/operations/decoders.js +12 -6
- package/dist-lib/lib/tools/operations/gmail-message.js +3 -2
- package/dist-lib/lib/tools/outbound-guard.d.ts +4 -3
- package/dist-lib/lib/tools/outbound-guard.js +14 -8
- package/dist-lib/lib/tools/private-ip.js +8 -7
- package/dist-lib/lib/tools/rag-search.js +14 -7
- package/dist-lib/lib/tools/read-files.js +23 -20
- package/dist-lib/lib/tools/skill.js +19 -10
- package/dist-lib/lib/tools/skills/auth-resolver.d.ts +11 -18
- package/dist-lib/lib/tools/skills/auth-resolver.js +30 -18
- package/dist-lib/lib/tools/skills/bin-check.d.ts +3 -2
- package/dist-lib/lib/tools/skills/bin-check.js +10 -3
- package/dist-lib/lib/tools/skills/bundled-dir.js +20 -10
- package/dist-lib/lib/tools/skills/bundled-hash.d.ts +3 -2
- package/dist-lib/lib/tools/skills/bundled-hash.js +6 -1
- package/dist-lib/lib/tools/skills/catalog.d.ts +3 -2
- package/dist-lib/lib/tools/skills/catalog.js +33 -28
- package/dist-lib/lib/tools/skills/cli-argv.d.ts +3 -2
- package/dist-lib/lib/tools/skills/cli-argv.js +55 -52
- package/dist-lib/lib/tools/skills/cli-schema-check.js +21 -10
- package/dist-lib/lib/tools/skills/cli-schema-load.js +28 -20
- package/dist-lib/lib/tools/skills/cli-schema-types.d.ts +6 -6
- package/dist-lib/lib/tools/skills/cli-schema.js +2 -1
- package/dist-lib/lib/tools/skills/credential-check.d.ts +6 -3
- package/dist-lib/lib/tools/skills/credential-check.js +24 -12
- package/dist-lib/lib/tools/skills/credential-grants.js +1 -6
- package/dist-lib/lib/tools/skills/credential-health.d.ts +5 -1
- package/dist-lib/lib/tools/skills/credential-health.js +5 -3
- package/dist-lib/lib/tools/skills/frontmatter-parser.js +10 -5
- package/dist-lib/lib/tools/skills/manifest-parse.js +84 -64
- package/dist-lib/lib/tools/skills/mention.js +7 -6
- package/dist-lib/lib/tools/skills/obsidian-readiness.d.ts +2 -2
- package/dist-lib/lib/tools/skills/obsidian-readiness.js +11 -3
- package/dist-lib/lib/tools/skills/overlay-crud.d.ts +6 -4
- package/dist-lib/lib/tools/skills/overlay-crud.js +12 -6
- package/dist-lib/lib/tools/skills/overlay-dir.js +4 -2
- package/dist-lib/lib/tools/skills/overlay-watch.d.ts +3 -2
- package/dist-lib/lib/tools/skills/overlay-watch.js +8 -4
- package/dist-lib/lib/tools/skills/setup-routes.js +1 -3
- package/dist-lib/lib/tools/skills/skill-settings.js +4 -1
- package/dist-lib/lib/tools/skills/skill-state.d.ts +6 -11
- package/dist-lib/lib/tools/skills/skill-state.js +48 -29
- package/dist-lib/lib/tools/skills/tool-grants.js +6 -3
- package/dist-lib/lib/tools/toolsets.js +2 -1
- package/dist-lib/lib/tools/translate.d.ts +4 -5
- package/dist-lib/lib/tools/translate.js +31 -14
- package/dist-lib/lib/tools/url-guard.js +2 -1
- package/dist-lib/lib/tools/weather-lookup/place.js +8 -4
- package/dist-lib/lib/tools/weather-lookup/report.d.ts +7 -1
- package/dist-lib/lib/tools/weather-lookup/report.js +46 -9
- package/dist-lib/lib/tools/weather-lookup.js +18 -12
- package/dist-lib/lib/tools/web-fetch.js +47 -24
- package/dist-lib/lib/tools/web-search.js +8 -3
- package/dist-lib/lib/validating-lookup.d.ts +4 -4
- package/dist-lib/lib/wav-encode.d.ts +1 -1
- package/dist-lib/lib/wav-encode.js +11 -10
- package/dist-lib/lib/web-fetch/embedded-state.js +24 -12
- package/dist-lib/lib/web-fetch/extract.js +4 -2
- package/dist-lib/lib/web-fetch/images.js +8 -4
- package/dist-lib/lib/web-fetch/video.d.ts +2 -2
- package/dist-lib/lib/web-fetch/video.js +8 -4
- package/dist-lib/lib/web-search/engine-registry.d.ts +2 -2
- package/dist-lib/lib/web-search/engines/aol.js +1 -1
- package/dist-lib/lib/web-search/engines/bing.js +1 -1
- package/dist-lib/lib/web-search/engines/brave.js +4 -1
- package/dist-lib/lib/web-search/engines/duckduckgo.js +3 -2
- package/dist-lib/lib/web-search/engines/google.js +7 -3
- package/dist-lib/lib/web-search/engines/wikipedia.js +5 -4
- package/dist-lib/lib/web-search/engines/yahoo.js +1 -1
- package/dist-lib/lib/web-search/fetch-html.d.ts +5 -4
- package/dist-lib/lib/web-search/fetch-html.js +13 -7
- package/dist-lib/lib/web-search/orchestrator.d.ts +9 -5
- package/dist-lib/lib/web-search/orchestrator.js +3 -3
- package/dist-lib/lib/wire.d.ts +3 -2
- package/dist-lib/lib/wire.js +23 -15
- package/dist-lib/schema/baseline.js +10 -5
- package/dist-lib/schema/build.js +2 -1
- package/dist-lib/schema/harness.d.ts +15 -2
- package/dist-lib/schema/harness.js +55 -2
- package/dist-lib/schema/release-tags.d.ts +3 -2
- package/dist-lib/schema/release-tags.js +6 -3
- package/dist-lib/spec/bind.js +6 -0
- package/dist-lib/spec/calls.js +2 -0
- package/dist-lib/spec/hrpc/hrpc.json +26 -0
- package/dist-lib/spec/hrpc/index.js +27 -3
- package/dist-lib/spec/hrpc/messages.js +207 -8
- package/dist-lib/spec/hyperschema/index.js +207 -8
- package/dist-lib/spec/hyperschema/schema.json +165 -1
- package/dist-lib/spec/hyperschema/types.d.ts +42 -1
- package/package.json +13 -14
- package/worker/harness-sidecar.mjs +16 -22
- package/worker/stow-entry.mjs +7 -4
- package/dist-lib/lib/tools/mcp/utils.d.ts +0 -47
- /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
|
|
10
|
+
export interface DownloadCompleteEvent {
|
|
11
11
|
type: 'complete';
|
|
12
12
|
assetId: string;
|
|
13
13
|
downloaded?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export
|
|
14
|
+
}
|
|
15
|
+
export interface DownloadErrorEvent {
|
|
16
16
|
type: 'error';
|
|
17
17
|
message: string;
|
|
18
|
-
}
|
|
19
|
-
export
|
|
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 '../
|
|
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,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
|
|
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,
|
|
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:
|
|
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:
|
|
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 {};
|