@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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import b4a from 'b4a';
|
|
2
|
+
import { errorMessage } from '../guards.js';
|
|
2
3
|
import { AbortedError } from '../helpers/race-abort.js';
|
|
3
4
|
import { hlog } from '../log.js';
|
|
4
5
|
import { normalizeForSpeech } from './speech-text.js';
|
|
@@ -7,7 +8,7 @@ export function createVoiceLane() {
|
|
|
7
8
|
let tail = Promise.resolve();
|
|
8
9
|
return (job) => {
|
|
9
10
|
const run = tail.then(job);
|
|
10
|
-
tail = run.catch(
|
|
11
|
+
tail = run.catch(noop);
|
|
11
12
|
return run;
|
|
12
13
|
};
|
|
13
14
|
}
|
|
@@ -35,8 +36,9 @@ async function drainUntilIdle(lastPieceAt, streamClosed, signal) {
|
|
|
35
36
|
if (signal?.aborted || streamClosed() || Date.now() >= deadline)
|
|
36
37
|
return;
|
|
37
38
|
const last = lastPieceAt();
|
|
38
|
-
if (last > 0 && Date.now() - last >= TRANSCRIBE_DRAIN_IDLE_MS)
|
|
39
|
+
if (last > 0 && Date.now() - last >= TRANSCRIBE_DRAIN_IDLE_MS) {
|
|
39
40
|
return;
|
|
41
|
+
}
|
|
40
42
|
await pace(TRANSCRIBE_PACE_MS);
|
|
41
43
|
}
|
|
42
44
|
}
|
|
@@ -57,7 +59,7 @@ function transcribePiece(piece) {
|
|
|
57
59
|
}
|
|
58
60
|
return null;
|
|
59
61
|
}
|
|
60
|
-
export async function transcribeStreaming(sdk,
|
|
62
|
+
export async function transcribeStreaming(sdk, pcm, { modelId, signal }) {
|
|
61
63
|
const session = await sdk.transcribeStream({
|
|
62
64
|
modelId,
|
|
63
65
|
metadata: TRANSCRIBE_WITH_METADATA,
|
|
@@ -72,8 +74,9 @@ export async function transcribeStreaming(sdk, modelId, pcm, signal) {
|
|
|
72
74
|
for await (const piece of session) {
|
|
73
75
|
lastPieceAt = Date.now();
|
|
74
76
|
const seg = transcribePiece(piece);
|
|
75
|
-
if (!seg)
|
|
77
|
+
if (!seg) {
|
|
76
78
|
continue;
|
|
79
|
+
}
|
|
77
80
|
out += !out || seg.append ? seg.text : ` ${seg.text}`;
|
|
78
81
|
}
|
|
79
82
|
streamClosed = true;
|
|
@@ -85,16 +88,18 @@ export async function transcribeStreaming(sdk, modelId, pcm, signal) {
|
|
|
85
88
|
try {
|
|
86
89
|
await writePaced(session, pcm, signal);
|
|
87
90
|
await drainUntilIdle(() => lastPieceAt, () => streamClosed, signal);
|
|
88
|
-
if (!signal?.aborted)
|
|
91
|
+
if (!signal?.aborted) {
|
|
89
92
|
session.end();
|
|
93
|
+
}
|
|
90
94
|
const text = await collect;
|
|
91
|
-
if (signal?.aborted)
|
|
95
|
+
if (signal?.aborted) {
|
|
92
96
|
throw new AbortedError();
|
|
97
|
+
}
|
|
93
98
|
return text;
|
|
94
99
|
}
|
|
95
100
|
catch (err) {
|
|
96
101
|
session.destroy();
|
|
97
|
-
await collect.catch(
|
|
102
|
+
await collect.catch(noop);
|
|
98
103
|
throw err;
|
|
99
104
|
}
|
|
100
105
|
finally {
|
|
@@ -117,7 +122,7 @@ export async function* speakStreamOnce(sdk, modelId, text) {
|
|
|
117
122
|
session.end();
|
|
118
123
|
}
|
|
119
124
|
catch (err) {
|
|
120
|
-
hlog('tts stream input failed', { err:
|
|
125
|
+
hlog('tts stream input failed', { err: errorMessage(err) });
|
|
121
126
|
inputError = err;
|
|
122
127
|
destroyQuietly(session);
|
|
123
128
|
}
|
|
@@ -154,8 +159,9 @@ function destroyQuietly(session) {
|
|
|
154
159
|
}
|
|
155
160
|
function writeSpeakable(session, fragment) {
|
|
156
161
|
const spoken = speakable(fragment);
|
|
157
|
-
if (!/[A-Za-z0-9]/.test(spoken))
|
|
162
|
+
if (!/[A-Za-z0-9]/.test(spoken)) {
|
|
158
163
|
return false;
|
|
164
|
+
}
|
|
159
165
|
session.write(b4a.from(/^\s/.test(fragment) ? ` ${spoken}` : spoken, 'utf8'));
|
|
160
166
|
return true;
|
|
161
167
|
}
|
|
@@ -168,14 +174,17 @@ export function speakable(text) {
|
|
|
168
174
|
}
|
|
169
175
|
export async function speakOnce(sdk, modelId, text) {
|
|
170
176
|
const spoken = speakable(text);
|
|
171
|
-
if (!spoken)
|
|
177
|
+
if (!spoken) {
|
|
172
178
|
return [];
|
|
179
|
+
}
|
|
173
180
|
const result = sdk.textToSpeech({ modelId, text: spoken, inputType: 'text', stream: true });
|
|
174
181
|
const samples = [];
|
|
175
|
-
for await (const sample of result.bufferStream)
|
|
182
|
+
for await (const sample of result.bufferStream) {
|
|
176
183
|
samples.push(sample);
|
|
177
|
-
|
|
184
|
+
}
|
|
185
|
+
if (!(await result.done)) {
|
|
178
186
|
throw new Error('tts synthesis did not complete');
|
|
187
|
+
}
|
|
179
188
|
return samples;
|
|
180
189
|
}
|
|
181
190
|
export function packSamples(samples) {
|
|
@@ -187,3 +196,4 @@ export function packSamples(samples) {
|
|
|
187
196
|
}
|
|
188
197
|
return bytes;
|
|
189
198
|
}
|
|
199
|
+
function noop() { }
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
2
|
import { type Transport } from './rpc-session.ts';
|
|
3
3
|
import { type KvCacheDeletionResult } from './capabilities/kv-cache.ts';
|
|
4
|
-
import type {
|
|
4
|
+
import type { CustomModelEntry } from './models/model-catalog.ts';
|
|
5
|
+
import { type ModelSourcePreview, type PreviewModelSourceContext } from './capabilities/preview-model-source.ts';
|
|
6
|
+
import type { CapabilityInfo, CompletionContext, CredentialEntry, DetectedLanguage, DetectLanguageContext, DownloadContext, EmbedContext, HarnessContract, HarnessDiagnostics, HarnessEvent, HarnessInfo, InfraModel, InvokeContext, ListModelsOptions, ModelInfo, ResolvedSkillCatalogEntry, SkillsOptions, SkillWriteResult, SpeakContext, SpeakResult, SpeakStreamContext, ToolCatalogEntry, TranscribeContext, WarmModelContext } from './contract-types.ts';
|
|
5
7
|
import { type EmbedDevice } from './models/embed-config.ts';
|
|
6
8
|
import type { DeleteModelSummary } from './models/model-delete.ts';
|
|
7
|
-
import type { ManagedSkill, SkillFileContent } from './tools/skills/overlay-crud.ts';
|
|
9
|
+
import type { CopyBaseResult, DeleteOverlayResult, ManagedSkill, SkillFileContent } from './tools/skills/overlay-crud.ts';
|
|
10
|
+
import type { SkillSettingEntry } from './tools/skills/skill-settings.ts';
|
|
8
11
|
export declare const HARNESS_DIED = "HARNESS_DIED";
|
|
9
12
|
export declare function connectHarness(transport: Transport): RemoteHarness;
|
|
10
13
|
export declare function readEmbeddingDeviceResponse(response: unknown): EmbedDevice;
|
|
@@ -30,39 +33,17 @@ export declare class RemoteHarness extends EventEmitter implements HarnessContra
|
|
|
30
33
|
speakStream(context: SpeakStreamContext): AsyncIterable<SpeakResult>;
|
|
31
34
|
getEmbeddingDevice(): Promise<EmbedDevice>;
|
|
32
35
|
setEmbeddingDevice(device: EmbedDevice): Promise<void>;
|
|
33
|
-
setCredentials(entries: ReadonlyArray<
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
expiresAt?: number | null;
|
|
37
|
-
agentId?: string | null;
|
|
38
|
-
skill?: string | null;
|
|
39
|
-
}>): Promise<void>;
|
|
40
|
-
setSkillSettings(entries: ReadonlyArray<{
|
|
41
|
-
skill: string;
|
|
42
|
-
key: string;
|
|
43
|
-
value: string;
|
|
44
|
-
agentId?: string | null;
|
|
45
|
-
}>): Promise<void>;
|
|
36
|
+
setCredentials(entries: ReadonlyArray<CredentialEntry>): Promise<void>;
|
|
37
|
+
setSkillSettings(entries: ReadonlyArray<SkillSettingEntry>): Promise<void>;
|
|
38
|
+
setModelIdleTimeout(ms: number): Promise<void>;
|
|
46
39
|
listManagedSkills(): Promise<ManagedSkill[]>;
|
|
47
40
|
readSkillFile(name: string): Promise<SkillFileContent | null>;
|
|
48
|
-
writeSkillFile(name: string, content: string): Promise<
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
deleteOverlaySkill(name: string): Promise<{
|
|
55
|
-
removed: boolean;
|
|
56
|
-
}>;
|
|
57
|
-
setCustomModels(entries: ReadonlyArray<{
|
|
58
|
-
name: string;
|
|
59
|
-
src: string;
|
|
60
|
-
projectionSrc?: string;
|
|
61
|
-
}>): Promise<void>;
|
|
62
|
-
skills(agentId?: string | null, modelName?: string | null, options?: {
|
|
63
|
-
readonly refresh?: boolean;
|
|
64
|
-
readonly skipCredentialProbe?: boolean;
|
|
65
|
-
}): Promise<ResolvedSkillCatalogEntry[]>;
|
|
41
|
+
writeSkillFile(name: string, content: string): Promise<SkillWriteResult>;
|
|
42
|
+
copyBaseForEdit(name: string): Promise<CopyBaseResult>;
|
|
43
|
+
deleteOverlaySkill(name: string): Promise<DeleteOverlayResult>;
|
|
44
|
+
setCustomModels(entries: ReadonlyArray<CustomModelEntry>): Promise<void>;
|
|
45
|
+
previewModelSource(context: PreviewModelSourceContext): Promise<ModelSourcePreview>;
|
|
46
|
+
skills(agentId?: string | null, modelName?: string | null, options?: SkillsOptions): Promise<ResolvedSkillCatalogEntry[]>;
|
|
66
47
|
tools(): Promise<ToolCatalogEntry[]>;
|
|
67
48
|
warmModel(context: WarmModelContext): Promise<void>;
|
|
68
49
|
list(options?: ListModelsOptions): Promise<ModelInfo[]>;
|
|
@@ -70,10 +51,7 @@ export declare class RemoteHarness extends EventEmitter implements HarnessContra
|
|
|
70
51
|
clearKvCache(): Promise<KvCacheDeletionResult>;
|
|
71
52
|
deleteKvCache(kvCacheKey: string): Promise<KvCacheDeletionResult>;
|
|
72
53
|
private _deleteKvCaches;
|
|
73
|
-
infraModels(profile: string): Promise<
|
|
74
|
-
name: string;
|
|
75
|
-
addon: string;
|
|
76
|
-
}>>;
|
|
54
|
+
infraModels(profile: string): Promise<InfraModel[]>;
|
|
77
55
|
capability(): Promise<CapabilityInfo>;
|
|
78
56
|
close(): void;
|
|
79
57
|
describe(): Promise<HarnessInfo | null>;
|