@kaleidorg/mind 0.6.4 → 0.8.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/README.md +345 -0
- package/dist/autonomy/risk.js.map +1 -1
- package/dist/autonomy/run-state.d.ts.map +1 -1
- package/dist/autonomy/run-state.js.map +1 -1
- package/dist/autonomy/task-store.d.ts.map +1 -1
- package/dist/autonomy/task-store.js.map +1 -1
- package/dist/bitrefill/contract.js.map +1 -1
- package/dist/context/budget.js.map +1 -1
- package/dist/context/builder.d.ts.map +1 -1
- package/dist/context/builder.js.map +1 -1
- package/dist/context/compress.d.ts.map +1 -1
- package/dist/context/compress.js +1 -0
- package/dist/context/compress.js.map +1 -1
- package/dist/context/rgb-units.d.ts +18 -0
- package/dist/context/rgb-units.d.ts.map +1 -0
- package/dist/context/rgb-units.js +86 -0
- package/dist/context/rgb-units.js.map +1 -0
- package/dist/engine.d.ts +53 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +179 -17
- package/dist/engine.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.d.ts.map +1 -1
- package/dist/evidence.js.map +1 -1
- package/dist/fastpath/fastpath.d.ts.map +1 -1
- package/dist/fastpath/fastpath.js.map +1 -1
- package/dist/flashnet/contract.js.map +1 -1
- package/dist/funnel.d.ts.map +1 -1
- package/dist/funnel.js +23 -4
- package/dist/funnel.js.map +1 -1
- package/dist/guards.d.ts +63 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +284 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/kaleidoswap/contract.d.ts +3 -4
- package/dist/kaleidoswap/contract.d.ts.map +1 -1
- package/dist/kaleidoswap/contract.js +3 -17
- package/dist/kaleidoswap/contract.js.map +1 -1
- package/dist/knowledge/btc-map.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js.map +1 -1
- package/dist/lsps1/contract.js.map +1 -1
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js.map +1 -1
- package/dist/providers/openai.d.ts +64 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +233 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/types.d.ts +20 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/qvac/assistant.js.map +1 -1
- package/dist/qvac/config.d.ts +7 -7
- package/dist/qvac/config.d.ts.map +1 -1
- package/dist/qvac/config.js +1 -1
- package/dist/qvac/delegate.d.ts +2 -0
- package/dist/qvac/delegate.d.ts.map +1 -1
- package/dist/qvac/delegate.js +2 -0
- package/dist/qvac/delegate.js.map +1 -1
- package/dist/qvac/index.d.ts +2 -0
- package/dist/qvac/index.d.ts.map +1 -1
- package/dist/qvac/index.js +2 -0
- package/dist/qvac/index.js.map +1 -1
- package/dist/qvac/models.d.ts +31 -0
- package/dist/qvac/models.d.ts.map +1 -0
- package/dist/qvac/models.js +80 -0
- package/dist/qvac/models.js.map +1 -0
- package/dist/qvac/parse.d.ts +16 -2
- package/dist/qvac/parse.d.ts.map +1 -1
- package/dist/qvac/parse.js +29 -7
- package/dist/qvac/parse.js.map +1 -1
- package/dist/qvac/provider.d.ts +5 -4
- package/dist/qvac/provider.d.ts.map +1 -1
- package/dist/qvac/provider.js +30 -21
- package/dist/qvac/provider.js.map +1 -1
- package/dist/qvac/stream.d.ts +3 -5
- package/dist/qvac/stream.d.ts.map +1 -1
- package/dist/qvac/stream.js +29 -1
- package/dist/qvac/stream.js.map +1 -1
- package/dist/qvac/tools.d.ts +37 -0
- package/dist/qvac/tools.d.ts.map +1 -0
- package/dist/qvac/tools.js +94 -0
- package/dist/qvac/tools.js.map +1 -0
- package/dist/qvac/voice.js.map +1 -1
- package/dist/rag/retriever.d.ts.map +1 -1
- package/dist/rag/tool.js.map +1 -1
- package/dist/rag/vector-store.d.ts.map +1 -1
- package/dist/rag/vector-store.js.map +1 -1
- package/dist/recipe/issue-asset.d.ts +16 -0
- package/dist/recipe/issue-asset.d.ts.map +1 -0
- package/dist/recipe/issue-asset.js +120 -0
- package/dist/recipe/issue-asset.js.map +1 -0
- package/dist/recipe/runner.d.ts.map +1 -1
- package/dist/recipe/runner.js +1 -0
- package/dist/recipe/runner.js.map +1 -1
- package/dist/recipe/submarine-pay.d.ts +17 -0
- package/dist/recipe/submarine-pay.d.ts.map +1 -0
- package/dist/recipe/submarine-pay.js +79 -0
- package/dist/recipe/submarine-pay.js.map +1 -0
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +1 -1
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/select.d.ts +20 -0
- package/dist/skills/select.d.ts.map +1 -0
- package/dist/skills/select.js +32 -0
- package/dist/skills/select.js.map +1 -0
- package/dist/submarine/contract.d.ts +42 -0
- package/dist/submarine/contract.d.ts.map +1 -0
- package/dist/submarine/contract.js +73 -0
- package/dist/submarine/contract.js.map +1 -0
- package/dist/testing/index.d.ts +14 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +12 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-wallet.d.ts +103 -0
- package/dist/testing/mock-wallet.d.ts.map +1 -0
- package/dist/testing/mock-wallet.js +249 -0
- package/dist/testing/mock-wallet.js.map +1 -0
- package/dist/testing/scripted-provider.d.ts +17 -0
- package/dist/testing/scripted-provider.d.ts.map +1 -0
- package/dist/testing/scripted-provider.js +26 -0
- package/dist/testing/scripted-provider.js.map +1 -0
- package/dist/tools/in-process.d.ts.map +1 -1
- package/dist/tools/mcp.d.ts.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/wallet/confirm.d.ts.map +1 -1
- package/dist/wallet/confirm.js +43 -5
- package/dist/wallet/confirm.js.map +1 -1
- package/dist/wallet/contract.d.ts.map +1 -1
- package/dist/wallet/contract.js +36 -0
- package/dist/wallet/contract.js.map +1 -1
- package/package.json +15 -5
- package/skills/README.md +2 -1
- package/skills/kaleido-node/SKILL.md +63 -0
- package/skills/kaleido-trading/SKILL.md +34 -27
- package/skills/kaleido-trading/references/api.md +61 -0
- package/skills/kaleido-trading/references/assets.md +57 -0
- package/skills/kaleido-trading/references/atomic.md +93 -0
- package/skills/paid-data/SKILL.md +59 -6
- package/skills/rgb-lightning-node/SKILL.md +142 -17
- package/skills/spark-wallet/SKILL.md +1 -0
- package/skills/submarine-swaps/SKILL.md +48 -0
- package/src/context/compress.ts +1 -0
- package/src/context/rgb-units.test.ts +42 -0
- package/src/context/rgb-units.ts +89 -0
- package/src/engine.test.ts +94 -3
- package/src/engine.ts +234 -19
- package/src/funnel.mind.test.ts +4 -2
- package/src/funnel.ts +23 -4
- package/src/guards.test.ts +399 -0
- package/src/guards.ts +299 -0
- package/src/index.ts +40 -1
- package/src/kaleidoswap/contract.test.ts +8 -16
- package/src/kaleidoswap/contract.ts +4 -32
- package/src/providers/openai.test.ts +127 -0
- package/src/providers/openai.ts +282 -0
- package/src/providers/types.ts +22 -0
- package/src/qvac/config.ts +1 -1
- package/src/qvac/delegate.ts +2 -0
- package/src/qvac/index.ts +12 -0
- package/src/qvac/models.ts +98 -0
- package/src/qvac/parse.test.ts +7 -0
- package/src/qvac/parse.ts +38 -3
- package/src/qvac/provider.test.ts +72 -1
- package/src/qvac/provider.ts +40 -27
- package/src/qvac/stream.test.ts +28 -0
- package/src/qvac/stream.ts +33 -6
- package/src/qvac/tools.test.ts +86 -0
- package/src/qvac/tools.ts +116 -0
- package/src/recipe/issue-asset.test.ts +131 -0
- package/src/recipe/issue-asset.ts +123 -0
- package/src/recipe/runner.ts +1 -0
- package/src/recipe/submarine-pay.test.ts +87 -0
- package/src/recipe/submarine-pay.ts +78 -0
- package/src/skills/registry.ts +1 -1
- package/src/skills/select.ts +41 -0
- package/src/submarine/contract.ts +112 -0
- package/src/testing/index.ts +14 -0
- package/src/testing/mock-wallet.ts +278 -0
- package/src/testing/scripted-provider.ts +37 -0
- package/src/wallet/confirm.test.ts +16 -0
- package/src/wallet/confirm.ts +43 -5
- package/src/wallet/contract.test.ts +38 -0
- package/src/wallet/contract.ts +36 -0
package/dist/qvac/index.js
CHANGED
|
@@ -10,8 +10,10 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export { cleanAssistantVisibleText, sanitizeForSupertonic, } from './text.js';
|
|
12
12
|
export { LOCAL_LLM_CONFIG, LOCAL_LLM_CONFIG_GPU, DELEGATE_LLM_CONFIG, TTS_SAMPLE_RATE, DEFAULT_VOICE_STREAM_PARAMS, WHISPER_LANGS, normalizeWhisperLang, } from './config.js';
|
|
13
|
+
export { QWEN35_MODELS, DEFAULT_MODEL_ID, DEFAULT_SMALL_DEVICE_MODEL_ID, DEFAULT_QVAC_MODEL, DEFAULT_SMALL_DEVICE_QVAC_MODEL, getRecommendedModel, } from './models.js';
|
|
13
14
|
export { finalToTurn, } from './parse.js';
|
|
14
15
|
export { consumeRun, } from './stream.js';
|
|
16
|
+
export { toQvacTools } from './tools.js';
|
|
15
17
|
export { createQvacProvider, } from './provider.js';
|
|
16
18
|
export { createQvacVoice, } from './voice.js';
|
|
17
19
|
export { runVoiceAssistant, shouldHandleUtterance, DEFAULT_IGNORED_UTTERANCES, } from './assistant.js';
|
package/dist/qvac/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/qvac/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,2BAA2B,EAC3B,aAAa,EACb,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,UAAU,GAKX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,eAAe,GAKhB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,GAM3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GAGpB,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/qvac/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,2BAA2B,EAC3B,aAAa,EACb,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,6BAA6B,EAC7B,kBAAkB,EAClB,+BAA+B,EAC/B,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,UAAU,GAKX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAoC,MAAM,YAAY,CAAC;AAE3E,OAAO,EACL,kBAAkB,GAGnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,eAAe,GAKhB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,GAM3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GAGpB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recommended local models. Plain data (no SDK import): `qvacConstant` is the
|
|
3
|
+
* name of the matching @qvac/sdk registry export (present since @qvac/sdk
|
|
4
|
+
* 0.13.1), `hfRepo`/`hfFile` the same GGUF on Hugging Face for hosts that
|
|
5
|
+
* download directly. Sizes are the exact file sizes.
|
|
6
|
+
*/
|
|
7
|
+
export interface RecommendedModel {
|
|
8
|
+
id: string;
|
|
9
|
+
family: string;
|
|
10
|
+
displayName: string;
|
|
11
|
+
/** Name of the @qvac/sdk model constant, e.g. `QWEN3_5_4B_MULTIMODAL_Q4_K_M`. */
|
|
12
|
+
qvacConstant: string;
|
|
13
|
+
quant: string;
|
|
14
|
+
sizeBytes: number;
|
|
15
|
+
hfRepo: string;
|
|
16
|
+
hfFile: string;
|
|
17
|
+
/** Rough RAM needed to run it with the agent's context window. */
|
|
18
|
+
ramHintGb: number;
|
|
19
|
+
notes: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const QWEN35_MODELS: readonly RecommendedModel[];
|
|
22
|
+
/** Default model for every host (provider sidecar, CLI, examples). */
|
|
23
|
+
export declare const DEFAULT_MODEL_ID = "qwen3.5-2b-q4_k_m";
|
|
24
|
+
/** Default model for phones and other small devices. */
|
|
25
|
+
export declare const DEFAULT_SMALL_DEVICE_MODEL_ID = "qwen3.5-2b-q4_k_m";
|
|
26
|
+
export declare function getRecommendedModel(id: string): RecommendedModel | undefined;
|
|
27
|
+
/** @qvac/sdk constant name of the default, e.g. for `sdk[DEFAULT_QVAC_MODEL]`. */
|
|
28
|
+
export declare const DEFAULT_QVAC_MODEL: string;
|
|
29
|
+
/** @qvac/sdk constant name of the small-device default. */
|
|
30
|
+
export declare const DEFAULT_SMALL_DEVICE_QVAC_MODEL: string;
|
|
31
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/qvac/models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,gBAAgB,EA6DpD,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AACpD,wDAAwD;AACxD,eAAO,MAAM,6BAA6B,sBAAsB,CAAC;AAEjE,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAE5E;AAED,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,QAAsD,CAAC;AACtF,2DAA2D;AAC3D,eAAO,MAAM,+BAA+B,QAAmE,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recommended local models. Plain data (no SDK import): `qvacConstant` is the
|
|
3
|
+
* name of the matching @qvac/sdk registry export (present since @qvac/sdk
|
|
4
|
+
* 0.13.1), `hfRepo`/`hfFile` the same GGUF on Hugging Face for hosts that
|
|
5
|
+
* download directly. Sizes are the exact file sizes.
|
|
6
|
+
*/
|
|
7
|
+
export const QWEN35_MODELS = [
|
|
8
|
+
{
|
|
9
|
+
id: 'qwen3.5-0.8b-q4_k_m',
|
|
10
|
+
family: 'qwen3.5',
|
|
11
|
+
displayName: 'Qwen 3.5 · 0.8B',
|
|
12
|
+
qvacConstant: 'QWEN3_5_0_8B_MULTIMODAL_Q4_K_M',
|
|
13
|
+
quant: 'Q4_K_M',
|
|
14
|
+
sizeBytes: 532_517_120,
|
|
15
|
+
hfRepo: 'unsloth/Qwen3.5-0.8B-GGUF',
|
|
16
|
+
hfFile: 'Qwen3.5-0.8B-Q4_K_M.gguf',
|
|
17
|
+
ramHintGb: 1.5,
|
|
18
|
+
notes: 'Smoke tests only. Loops on wallet actions in our signet bench; fine for chat and single read-only calls.',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'qwen3.5-2b-q4_k_m',
|
|
22
|
+
family: 'qwen3.5',
|
|
23
|
+
displayName: 'Qwen 3.5 · 2B',
|
|
24
|
+
qvacConstant: 'QWEN3_5_2B_MULTIMODAL_Q4_K_M',
|
|
25
|
+
quant: 'Q4_K_M',
|
|
26
|
+
sizeBytes: 1_280_835_840,
|
|
27
|
+
hfRepo: 'unsloth/Qwen3.5-2B-GGUF',
|
|
28
|
+
hfFile: 'Qwen3.5-2B-Q4_K_M.gguf',
|
|
29
|
+
ramHintGb: 3,
|
|
30
|
+
notes: 'Recommended default. Passed all 7 wallet tasks of our signet RGB bench at 45–150 s per question on an M4 laptop; also fits phones.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'qwen3.5-4b-q4_k_m',
|
|
34
|
+
family: 'qwen3.5',
|
|
35
|
+
displayName: 'Qwen 3.5 · 4B',
|
|
36
|
+
qvacConstant: 'QWEN3_5_4B_MULTIMODAL_Q4_K_M',
|
|
37
|
+
quant: 'Q4_K_M',
|
|
38
|
+
sizeBytes: 2_740_937_888,
|
|
39
|
+
hfRepo: 'unsloth/Qwen3.5-4B-GGUF',
|
|
40
|
+
hfFile: 'Qwen3.5-4B-Q4_K_M.gguf',
|
|
41
|
+
ramHintGb: 5,
|
|
42
|
+
notes: 'Same correctness as 2B in our bench, about twice as slow (105–330 s per question on an M4). Pick it for longer free-form answers.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: 'qwen3.5-9b-q4_k_m',
|
|
46
|
+
family: 'qwen3.5',
|
|
47
|
+
displayName: 'Qwen 3.5 · 9B',
|
|
48
|
+
qvacConstant: 'QWEN3_5_9B_MULTIMODAL_Q4_K_M',
|
|
49
|
+
quant: 'Q4_K_M',
|
|
50
|
+
sizeBytes: 5_680_522_464,
|
|
51
|
+
hfRepo: 'unsloth/Qwen3.5-9B-GGUF',
|
|
52
|
+
hfFile: 'Qwen3.5-9B-Q4_K_M.gguf',
|
|
53
|
+
ramHintGb: 9,
|
|
54
|
+
notes: 'Needs 16 GB of RAM. Slow for interactive use (180–690 s per question on an M4); for unattended multi-step tasks.',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: 'qwen3.6-35b-a3b-q4_k_m',
|
|
58
|
+
family: 'qwen3.6',
|
|
59
|
+
displayName: 'Qwen 3.6 · 35B-A3B (MoE)',
|
|
60
|
+
qvacConstant: 'QWEN3_6_35B_A3B_MULTIMODAL_Q4_K_M',
|
|
61
|
+
quant: 'UD-Q4_K_M',
|
|
62
|
+
sizeBytes: 22_134_528_992,
|
|
63
|
+
hfRepo: 'unsloth/Qwen3.6-35B-A3B-GGUF',
|
|
64
|
+
hfFile: 'Qwen3.6-35B-A3B-UD-Q4_K_M.gguf',
|
|
65
|
+
ramHintGb: 26,
|
|
66
|
+
notes: 'Big machines only (32 GB+). MoE with ~3B active parameters: best quality, 22 GB download.',
|
|
67
|
+
},
|
|
68
|
+
];
|
|
69
|
+
/** Default model for every host (provider sidecar, CLI, examples). */
|
|
70
|
+
export const DEFAULT_MODEL_ID = 'qwen3.5-2b-q4_k_m';
|
|
71
|
+
/** Default model for phones and other small devices. */
|
|
72
|
+
export const DEFAULT_SMALL_DEVICE_MODEL_ID = 'qwen3.5-2b-q4_k_m';
|
|
73
|
+
export function getRecommendedModel(id) {
|
|
74
|
+
return QWEN35_MODELS.find((m) => m.id === id);
|
|
75
|
+
}
|
|
76
|
+
/** @qvac/sdk constant name of the default, e.g. for `sdk[DEFAULT_QVAC_MODEL]`. */
|
|
77
|
+
export const DEFAULT_QVAC_MODEL = getRecommendedModel(DEFAULT_MODEL_ID).qvacConstant;
|
|
78
|
+
/** @qvac/sdk constant name of the small-device default. */
|
|
79
|
+
export const DEFAULT_SMALL_DEVICE_QVAC_MODEL = getRecommendedModel(DEFAULT_SMALL_DEVICE_MODEL_ID).qvacConstant;
|
|
80
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/qvac/models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,MAAM,CAAC,MAAM,aAAa,GAAgC;IACxD;QACE,EAAE,EAAE,qBAAqB;QACzB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,iBAAiB;QAC9B,YAAY,EAAE,gCAAgC;QAC9C,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE,2BAA2B;QACnC,MAAM,EAAE,0BAA0B;QAClC,SAAS,EAAE,GAAG;QACd,KAAK,EAAE,0GAA0G;KAClH;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,8BAA8B;QAC5C,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE,wBAAwB;QAChC,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,oIAAoI;KAC5I;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,8BAA8B;QAC5C,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE,wBAAwB;QAChC,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,mIAAmI;KAC3I;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,eAAe;QAC5B,YAAY,EAAE,8BAA8B;QAC5C,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,yBAAyB;QACjC,MAAM,EAAE,wBAAwB;QAChC,SAAS,EAAE,CAAC;QACZ,KAAK,EAAE,kHAAkH;KAC1H;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,0BAA0B;QACvC,YAAY,EAAE,mCAAmC;QACjD,KAAK,EAAE,WAAW;QAClB,SAAS,EAAE,cAAc;QACzB,MAAM,EAAE,8BAA8B;QACtC,MAAM,EAAE,gCAAgC;QACxC,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,2FAA2F;KACnG;CACF,CAAC;AAEF,sEAAsE;AACtE,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AACpD,wDAAwD;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,mBAAmB,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,gBAAgB,CAAE,CAAC,YAAY,CAAC;AACtF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,+BAA+B,GAAG,mBAAmB,CAAC,6BAA6B,CAAE,CAAC,YAAY,CAAC"}
|
package/dist/qvac/parse.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure mapping from a QVAC completion `final` frame to the shape the shared
|
|
3
|
+
* @kaleidorg/mind Engine consumes. Kept SDK-free (structural input type) so it
|
|
4
|
+
* is testable without loading a model, and so the same mapping runs on mobile,
|
|
5
|
+
* desktop, and the eval harness.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolCallError } from '../providers/types.js';
|
|
1
8
|
/**
|
|
2
9
|
* Per-turn inference stats from a QVAC `completion().final.stats` frame. The
|
|
3
10
|
* authoritative source for which backend actually ran (`backendDevice`) and the
|
|
@@ -9,6 +16,9 @@ export interface QvacTurnStats {
|
|
|
9
16
|
tokensPerSecond?: number;
|
|
10
17
|
totalTokens?: number;
|
|
11
18
|
promptTokens?: number;
|
|
19
|
+
/** Tokens generated this turn (what the SDK reports; `totalTokens` is not emitted). */
|
|
20
|
+
generatedTokens?: number;
|
|
21
|
+
timeToFirstToken?: number;
|
|
12
22
|
contextSize?: number;
|
|
13
23
|
totalTime?: number;
|
|
14
24
|
}
|
|
@@ -26,9 +36,11 @@ export interface QvacFinalLike {
|
|
|
26
36
|
name: string;
|
|
27
37
|
arguments?: Record<string, unknown>;
|
|
28
38
|
}>;
|
|
39
|
+
/** Tool-call regions that failed to parse or validate (QVAC 0.20+; omitted when none). */
|
|
40
|
+
toolErrors?: ToolCallError[];
|
|
29
41
|
/**
|
|
30
|
-
* Why generation stopped
|
|
31
|
-
*
|
|
42
|
+
* Why generation stopped: `"length"` when the token budget is exhausted,
|
|
43
|
+
* `"cancelled"` on abort, `"eos"`/`"stopSequence"`/`undefined` on a natural stop. We surface
|
|
32
44
|
* it so the funnel can tell a truncated tool-call from a complete one.
|
|
33
45
|
*/
|
|
34
46
|
stopReason?: 'length' | 'cancelled' | string;
|
|
@@ -46,6 +58,8 @@ export interface ParsedTurn {
|
|
|
46
58
|
name: string;
|
|
47
59
|
arguments: Record<string, unknown>;
|
|
48
60
|
}>;
|
|
61
|
+
/** Tool-call attempts the SDK could not parse, when no call was recovered from text. */
|
|
62
|
+
toolErrors?: ToolCallError[];
|
|
49
63
|
/** True when generation was cut off by the token budget (incomplete output). */
|
|
50
64
|
truncated: boolean;
|
|
51
65
|
/** Raw stop reason from the SDK, when provided. */
|
package/dist/qvac/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/qvac/parse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/qvac/parse.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qEAAqE;AACrE,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,uEAAuE;IACvE,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACtF,0FAA0F;IAC1F,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B;;;;OAIG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IAC7C,iFAAiF;IACjF,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,oEAAoE;IACpE,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACpF,wFAAwF;IACxF,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,gFAAgF;IAChF,SAAS,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AA2DD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GACX,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAe7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,SAAK,GAAG,UAAU,CAqB3E"}
|
package/dist/qvac/parse.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure mapping from a QVAC completion `final` frame to the shape the shared
|
|
3
|
-
* @kaleidorg/mind Engine consumes. Kept SDK-free (structural input type) so it
|
|
4
|
-
* is testable without loading a model, and so the same mapping runs on mobile,
|
|
5
|
-
* desktop, and the eval harness.
|
|
6
|
-
*/
|
|
7
1
|
import { cleanAssistantVisibleText } from './text.js';
|
|
8
2
|
/** Parse the first balanced `{…}` from a string as a `{name, arguments}` call. */
|
|
9
3
|
function parseCallObject(s) {
|
|
@@ -33,6 +27,32 @@ function parseCallObject(s) {
|
|
|
33
27
|
}
|
|
34
28
|
return null;
|
|
35
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Parse Qwen3.5's XML call body:
|
|
32
|
+
* `<function=name><parameter=key>value</parameter>…</function>`. Values that
|
|
33
|
+
* read as JSON (numbers, booleans, arrays, objects) are decoded; the rest stay
|
|
34
|
+
* strings.
|
|
35
|
+
*/
|
|
36
|
+
function parseXmlCall(s) {
|
|
37
|
+
const fn = s.match(/<function=([^>\s]+)\s*>([\s\S]*?)(?:<\/function>|$)/i);
|
|
38
|
+
if (!fn?.[1])
|
|
39
|
+
return null;
|
|
40
|
+
const args = {};
|
|
41
|
+
for (const m of (fn[2] ?? '').matchAll(/<parameter=([^>\s]+)\s*>([\s\S]*?)<\/parameter>/gi)) {
|
|
42
|
+
const raw = (m[2] ?? '').trim();
|
|
43
|
+
let value = raw;
|
|
44
|
+
if (/^(-?\d+(\.\d+)?|true|false|null|\[[\s\S]*\]|\{[\s\S]*\})$/.test(raw)) {
|
|
45
|
+
try {
|
|
46
|
+
value = JSON.parse(raw);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
value = raw;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
args[m[1]] = value;
|
|
53
|
+
}
|
|
54
|
+
return { name: fn[1], arguments: args };
|
|
55
|
+
}
|
|
36
56
|
/**
|
|
37
57
|
* Recover tool calls a model emitted as PLAIN TEXT instead of structured frames
|
|
38
58
|
* — `<tool_call>{"name":…,"arguments":…}</tool_call>` (Qwen/Hermes) or a bare
|
|
@@ -43,7 +63,8 @@ function parseCallObject(s) {
|
|
|
43
63
|
export function extractTextToolCalls(text) {
|
|
44
64
|
const calls = [];
|
|
45
65
|
for (const m of text.matchAll(/<tool_call\b[^>]*>([\s\S]*?)<\/tool_call>/gi)) {
|
|
46
|
-
const
|
|
66
|
+
const body = m[1] ?? '';
|
|
67
|
+
const c = parseCallObject(body) ?? parseXmlCall(body);
|
|
47
68
|
if (c)
|
|
48
69
|
calls.push(c);
|
|
49
70
|
}
|
|
@@ -84,6 +105,7 @@ export function finalToTurn(final, streamed = '') {
|
|
|
84
105
|
text,
|
|
85
106
|
rawContent: final.raw?.fullText ?? rawText,
|
|
86
107
|
toolCalls,
|
|
108
|
+
...(toolCalls.length === 0 && final.toolErrors?.length ? { toolErrors: final.toolErrors } : {}),
|
|
87
109
|
truncated: final.stopReason === 'length',
|
|
88
110
|
stopReason: final.stopReason,
|
|
89
111
|
stats: final.stats,
|
package/dist/qvac/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/qvac/parse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../src/qvac/parse.ts"],"names":[],"mappings":"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"}
|
package/dist/qvac/provider.d.ts
CHANGED
|
@@ -37,10 +37,11 @@ export interface QvacProviderOptions {
|
|
|
37
37
|
/** Default max output tokens — caps a turn so it can't ramble. Omit for uncapped. */
|
|
38
38
|
defaultMaxTokens?: number;
|
|
39
39
|
/**
|
|
40
|
-
* Cap `<think>` reasoning at this many TOKENS (not seconds — tok/s varies
|
|
41
|
-
* the SDK
|
|
42
|
-
* the
|
|
43
|
-
* "Thinking…". Omit for
|
|
40
|
+
* Cap `<think>` reasoning at this many TOKENS (not seconds — tok/s varies).
|
|
41
|
+
* Sent as the SDK's `reasoning_budget`, so the model closes its reasoning and
|
|
42
|
+
* answers. If the stream still runs well past it, the run is cancelled and a
|
|
43
|
+
* short fallback is returned instead of hanging on "Thinking…". Omit for
|
|
44
|
+
* unlimited reasoning.
|
|
44
45
|
*/
|
|
45
46
|
maxThinkingTokens?: number;
|
|
46
47
|
/** Stream the model's `<think>` reasoning, when a host wants to surface it. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/qvac/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,KAAK,OAAO,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAoB,WAAW,EAAE,SAAS,EAAc,MAAM,uBAAuB,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/qvac/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,KAAK,OAAO,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAoB,WAAW,EAAE,SAAS,EAAc,MAAM,uBAAuB,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,KAAK,YAAY,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC;AAC9C,KAAK,QAAQ,GAAG,OAAO,OAAO,CAAC,MAAM,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,UAAU,EAAE,YAAY,CAAC;IACzB,qCAAqC;IACrC,MAAM,EAAE,QAAQ,CAAC;IACjB,8EAA8E;IAC9E,UAAU,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAc,SAAQ,SAAS;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAOD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,WAAW,CA2I5E"}
|
package/dist/qvac/provider.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { consumeRun } from './stream.js';
|
|
2
|
+
import { toQvacTools } from './tools.js';
|
|
2
3
|
/** Shown when a turn is cut off because it blew its thinking-token budget. */
|
|
3
4
|
const THINKING_BUDGET_FALLBACK = 'I spent my whole thinking budget on that one without landing an answer. ' +
|
|
4
5
|
'Try asking again, more specifically.';
|
|
@@ -12,29 +13,31 @@ export function createQvacProvider(options) {
|
|
|
12
13
|
const history = input.system
|
|
13
14
|
? [{ role: 'system', content: input.system }, ...input.messages]
|
|
14
15
|
: input.messages;
|
|
15
|
-
// Tools are forwarded by schema only
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
//
|
|
19
|
-
const tools = input.tools.length
|
|
20
|
-
? input.tools.map((t) => ({
|
|
21
|
-
name: t.name,
|
|
22
|
-
description: t.description,
|
|
23
|
-
parameters: t.parameters,
|
|
24
|
-
}))
|
|
25
|
-
: undefined;
|
|
26
|
-
// QVAC 0.13 nests sampling under `generationParams`; top-level
|
|
16
|
+
// Tools are forwarded by schema only — the Engine validates + executes.
|
|
17
|
+
// JSON-Schema tools are normalised to the SDK's Tool shape (see tools.ts).
|
|
18
|
+
const tools = toQvacTools(input.tools);
|
|
19
|
+
// QVAC (0.13+) nests sampling under `generationParams`; top-level
|
|
27
20
|
// `temperature`/`max_tokens` (as older rate code passed) are dropped by
|
|
28
21
|
// validation, so the cap silently no-op'd. Build it here, and only send it
|
|
29
22
|
// when a value is set so a host that passes neither keeps SDK defaults.
|
|
30
23
|
const temp = input.temperature ?? options.defaultTemperature;
|
|
31
24
|
const predict = input.maxTokens ?? options.defaultMaxTokens;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
:
|
|
25
|
+
// A thinking budget at or above the output cap never binds: the model can
|
|
26
|
+
// spend the whole turn reasoning and return no answer. Keep half for it.
|
|
27
|
+
const thinkingCap = input.maxThinkingTokens ?? options.maxThinkingTokens;
|
|
28
|
+
const maxThinkingTokens = thinkingCap !== undefined && predict !== undefined && thinkingCap >= predict
|
|
29
|
+
? Math.floor(predict / 2)
|
|
30
|
+
: thinkingCap;
|
|
31
|
+
// `tool_choice` is only meaningful with tools; the SDK rejects a named
|
|
32
|
+
// choice that isn't among them.
|
|
33
|
+
const toolChoice = tools && input.toolChoice ? input.toolChoice : undefined;
|
|
34
|
+
const generationParamsRaw = {
|
|
35
|
+
...(temp !== undefined ? { temp } : {}),
|
|
36
|
+
...(predict !== undefined ? { predict } : {}),
|
|
37
|
+
...(maxThinkingTokens !== undefined ? { reasoning_budget: maxThinkingTokens } : {}),
|
|
38
|
+
...(toolChoice ? { tool_choice: toolChoice } : {}),
|
|
39
|
+
};
|
|
40
|
+
const generationParams = Object.keys(generationParamsRaw).length ? generationParamsRaw : undefined;
|
|
38
41
|
const run = options.completion({
|
|
39
42
|
modelId,
|
|
40
43
|
history,
|
|
@@ -58,11 +61,12 @@ export function createQvacProvider(options) {
|
|
|
58
61
|
input.signal.addEventListener('abort', () => void options.cancel({ requestId: run.requestId }).catch(() => { }), { once: true });
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
|
-
const maxThinkingTokens = input.maxThinkingTokens ?? options.maxThinkingTokens;
|
|
62
64
|
const result = await consumeRun(run, {
|
|
63
65
|
onToken: input.onToken,
|
|
64
66
|
onThinking: input.onThinking ?? options.onThinking,
|
|
65
|
-
|
|
67
|
+
// Backstop only: the SDK enforces the budget itself, and our count is a
|
|
68
|
+
// char-based estimate, so leave headroom before cancelling.
|
|
69
|
+
maxThinkingTokens: maxThinkingTokens === undefined ? undefined : Math.ceil(maxThinkingTokens * 1.25) + 32,
|
|
66
70
|
// Cancel the in-flight run the moment the thinking budget is blown — the
|
|
67
71
|
// SDK keeps generating otherwise. Fire-and-forget; `final` then resolves.
|
|
68
72
|
onThinkingBudgetExceeded: () => {
|
|
@@ -75,8 +79,10 @@ export function createQvacProvider(options) {
|
|
|
75
79
|
// A turn cut off mid-reasoning has no visible answer — return a short note
|
|
76
80
|
// instead of an empty bubble so the agentic loop ends cleanly.
|
|
77
81
|
const text = result.text || (result.thinkingBudgetExceeded ? THINKING_BUDGET_FALLBACK : result.text);
|
|
78
|
-
const totalTokens = result.stats?.totalTokens;
|
|
79
82
|
const promptTokens = result.stats?.promptTokens;
|
|
83
|
+
const generated = result.stats?.generatedTokens;
|
|
84
|
+
const totalTokens = result.stats?.totalTokens ??
|
|
85
|
+
(typeof generated === 'number' && typeof promptTokens === 'number' ? promptTokens + generated : undefined);
|
|
80
86
|
const inference = {
|
|
81
87
|
requestId: result.requestId,
|
|
82
88
|
durationMs: result.timing.durationMs,
|
|
@@ -97,12 +103,15 @@ export function createQvacProvider(options) {
|
|
|
97
103
|
: {}),
|
|
98
104
|
...(result.stopReason ? { stopReason: result.stopReason } : {}),
|
|
99
105
|
};
|
|
106
|
+
const incomplete = !result.text && result.toolCalls.length === 0 && (result.thinkingBudgetExceeded || !!result.truncated);
|
|
100
107
|
return {
|
|
101
108
|
text,
|
|
102
109
|
rawContent: result.rawContent,
|
|
103
110
|
toolCalls: result.toolCalls,
|
|
111
|
+
...(result.toolErrors ? { toolErrors: result.toolErrors } : {}),
|
|
104
112
|
requestId: result.requestId,
|
|
105
113
|
inference,
|
|
114
|
+
...(incomplete ? { incomplete: true } : {}),
|
|
106
115
|
};
|
|
107
116
|
},
|
|
108
117
|
async cancel(requestId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/qvac/provider.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/qvac/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/qvac/stream.d.ts
CHANGED
|
@@ -25,11 +25,9 @@ export interface StreamHandlers {
|
|
|
25
25
|
/** The model's `<think>` reasoning, streamed separately. */
|
|
26
26
|
onThinking?: (token: string) => void;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* only on/off), so we count thinking tokens and stop the run once they exceed
|
|
32
|
-
* this. Omit for unlimited reasoning.
|
|
28
|
+
* Stop the run once `<think>` reasoning exceeds this many tokens (estimated
|
|
29
|
+
* from characters). A backstop for the SDK's own `reasoning_budget`. Omit for
|
|
30
|
+
* unlimited reasoning.
|
|
33
31
|
*/
|
|
34
32
|
maxThinkingTokens?: number;
|
|
35
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/qvac/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9E,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/qvac/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9E,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,4DAA4D;IAC5D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AA6BD;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,iBAAiB,EACtB,QAAQ,GAAE,cAAmB,GAC5B,OAAO,CAAC,YAAY,CAAC,CA6CvB"}
|
package/dist/qvac/stream.js
CHANGED
|
@@ -7,6 +7,25 @@
|
|
|
7
7
|
* assignable to it. The actual `@qvac/sdk` import lives in `provider.ts`.
|
|
8
8
|
*/
|
|
9
9
|
import { finalToTurn } from './parse.js';
|
|
10
|
+
/**
|
|
11
|
+
* Since QVAC 0.11 a cancelled run ends `events` normally but REJECTS `final`
|
|
12
|
+
* with `InferenceCancelledError { requestId, partial }`. Fold that back into a
|
|
13
|
+
* `final` frame with stopReason 'cancelled' so a stop or a blown thinking budget
|
|
14
|
+
* is a result, not an exception. Matched structurally to stay SDK-free.
|
|
15
|
+
*/
|
|
16
|
+
function cancelledFinal(err) {
|
|
17
|
+
const e = err;
|
|
18
|
+
const named = err?.constructor?.name === 'InferenceCancelledError';
|
|
19
|
+
if (!e || !(named || (typeof e.requestId === 'string' && typeof e.partial === 'object')))
|
|
20
|
+
return null;
|
|
21
|
+
const partial = e.partial ?? {};
|
|
22
|
+
return {
|
|
23
|
+
contentText: partial.text ?? '',
|
|
24
|
+
toolCalls: partial.toolCalls ?? [],
|
|
25
|
+
...(partial.stats ? { stats: partial.stats } : {}),
|
|
26
|
+
stopReason: 'cancelled',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
10
29
|
/** Rough token estimate (~4 chars/token) — same heuristic the context budget uses. */
|
|
11
30
|
function approxTokens(chars) {
|
|
12
31
|
return Math.ceil(chars / 4);
|
|
@@ -46,7 +65,16 @@ export async function consumeRun(run, handlers = {}) {
|
|
|
46
65
|
}
|
|
47
66
|
}
|
|
48
67
|
}
|
|
49
|
-
|
|
68
|
+
let final;
|
|
69
|
+
try {
|
|
70
|
+
final = await run.final;
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
const recovered = cancelledFinal(err);
|
|
74
|
+
if (!recovered)
|
|
75
|
+
throw err;
|
|
76
|
+
final = recovered;
|
|
77
|
+
}
|
|
50
78
|
const finishedAt = now();
|
|
51
79
|
return {
|
|
52
80
|
...finalToTurn(final, streamed),
|
package/dist/qvac/stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/qvac/stream.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,WAAW,EAAuC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/qvac/stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map engine ToolDefs to the tool shape `completion({ tools })` accepts.
|
|
3
|
+
*
|
|
4
|
+
* The SDK picks a mode from the FIRST tool: a full `Tool`
|
|
5
|
+
* (`{ type: 'function', name, description, parameters: <flat JSON Schema> }`)
|
|
6
|
+
* or a Zod `ToolInput`. A plain JSON-Schema def without `type: 'function'`
|
|
7
|
+
* falls into the Zod branch, which reads `parameters.shape` and silently drops
|
|
8
|
+
* every argument — the model then sees tool names with no parameters. So
|
|
9
|
+
* JSON-Schema tools (wallet contract, MCP) are normalised to full `Tool`s here.
|
|
10
|
+
* An all-Zod tool list is passed through for the SDK to convert, as before.
|
|
11
|
+
*/
|
|
12
|
+
import type { ToolDef } from '../types.js';
|
|
13
|
+
type PropType = 'string' | 'number' | 'boolean' | 'object' | 'array' | 'integer';
|
|
14
|
+
export interface QvacToolProp {
|
|
15
|
+
type: PropType;
|
|
16
|
+
description?: string;
|
|
17
|
+
enum?: Array<string | number | boolean | null>;
|
|
18
|
+
}
|
|
19
|
+
export interface QvacTool {
|
|
20
|
+
type: 'function';
|
|
21
|
+
name: string;
|
|
22
|
+
description: string;
|
|
23
|
+
parameters: {
|
|
24
|
+
type: 'object';
|
|
25
|
+
properties: Record<string, QvacToolProp>;
|
|
26
|
+
required?: string[];
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Tools for `completion()`; undefined when there are none. */
|
|
30
|
+
export declare function toQvacTools(tools: ReadonlyArray<Pick<ToolDef, 'name' | 'description' | 'parameters'>>): QvacTool[] | Array<Pick<ToolDef, 'name' | 'description' | 'parameters'>> | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* JSON Schema for a tool's parameters: a JSON-Schema def is returned as is
|
|
33
|
+
* (nested objects intact), a Zod schema is converted to a flat object schema.
|
|
34
|
+
*/
|
|
35
|
+
export declare function toolParametersSchema(t: Pick<ToolDef, 'name' | 'description' | 'parameters'>): Record<string, unknown>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/qvac/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,KAAK,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAGjF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC/F;AAqED,+DAA+D;AAC/D,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC,GACzE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC,CAAC,GAAG,SAAS,CAMtF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIrH"}
|