@kaleidorg/mind 0.8.0 → 0.8.1
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/dist/engine.d.ts +6 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +18 -1
- package/dist/engine.js.map +1 -1
- package/dist/fastpath/fastpath.d.ts +6 -1
- package/dist/fastpath/fastpath.d.ts.map +1 -1
- package/dist/fastpath/fastpath.js +16 -2
- package/dist/fastpath/fastpath.js.map +1 -1
- package/dist/fastpath/render.d.ts +2 -0
- package/dist/fastpath/render.d.ts.map +1 -0
- package/dist/fastpath/render.js +58 -0
- package/dist/fastpath/render.js.map +1 -0
- package/dist/funnel.d.ts.map +1 -1
- package/dist/funnel.js +11 -14
- package/dist/funnel.js.map +1 -1
- package/dist/providers/types.d.ts +13 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/qvac/provider.d.ts +9 -0
- package/dist/qvac/provider.d.ts.map +1 -1
- package/dist/qvac/provider.js +12 -1
- package/dist/qvac/provider.js.map +1 -1
- package/package.json +1 -1
- package/src/engine.test.ts +39 -0
- package/src/engine.ts +21 -1
- package/src/fastpath/fastpath.ts +22 -2
- package/src/fastpath/render.test.ts +39 -0
- package/src/fastpath/render.ts +56 -0
- package/src/funnel.mind.test.ts +11 -15
- package/src/funnel.ts +11 -15
- package/src/providers/types.ts +13 -0
- package/src/qvac/provider.test.ts +20 -0
- package/src/qvac/provider.ts +20 -1
package/dist/engine.d.ts
CHANGED
|
@@ -47,6 +47,8 @@ export interface EngineOptions {
|
|
|
47
47
|
* asset balance the answer calls sats. Default true.
|
|
48
48
|
*/
|
|
49
49
|
fixAmountConversions?: boolean;
|
|
50
|
+
/** Let the model reason on a forced first tool call. Default false (thinking off). */
|
|
51
|
+
thinkOnForcedCalls?: boolean;
|
|
50
52
|
/**
|
|
51
53
|
* Answer a wallet action (create an invoice, get an address, pay, send) with
|
|
52
54
|
* a fixed "no tool" reply, without inference, when no exposed tool can do it.
|
|
@@ -98,6 +100,8 @@ export interface AgenticOptions {
|
|
|
98
100
|
* made-up data. Later rounds are left to the model.
|
|
99
101
|
*/
|
|
100
102
|
firstTurnToolChoice?: ToolChoice;
|
|
103
|
+
/** Session key passed to every model call of this run. Default: a fresh key per run. */
|
|
104
|
+
sessionKey?: string;
|
|
101
105
|
signal?: AbortSignal;
|
|
102
106
|
}
|
|
103
107
|
export interface AgenticResult {
|
|
@@ -120,6 +124,7 @@ export declare class Engine {
|
|
|
120
124
|
private readonly compressOpts?;
|
|
121
125
|
private readonly guardPaymentData;
|
|
122
126
|
private readonly fixAmounts;
|
|
127
|
+
private readonly thinkOnForcedCalls;
|
|
123
128
|
private readonly guardMissingTools;
|
|
124
129
|
private readonly endTurnOnDecline;
|
|
125
130
|
constructor(opts: EngineOptions);
|
|
@@ -133,6 +138,7 @@ export declare class Engine {
|
|
|
133
138
|
*/
|
|
134
139
|
composeSkill(skills: SkillRegistry, query: string, base: string): Promise<ComposedSkill>;
|
|
135
140
|
runAgentic(messages: Message[], opts?: AgenticOptions): Promise<AgenticResult>;
|
|
141
|
+
private runAgenticSession;
|
|
136
142
|
/**
|
|
137
143
|
* The model ran tools but produced no visible answer (e.g. reasoning used the
|
|
138
144
|
* whole output budget). Ask once more without tools; if that is empty too,
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.js
CHANGED
|
@@ -35,6 +35,7 @@ export class Engine {
|
|
|
35
35
|
compressOpts;
|
|
36
36
|
guardPaymentData;
|
|
37
37
|
fixAmounts;
|
|
38
|
+
thinkOnForcedCalls;
|
|
38
39
|
guardMissingTools;
|
|
39
40
|
endTurnOnDecline;
|
|
40
41
|
constructor(opts) {
|
|
@@ -44,6 +45,7 @@ export class Engine {
|
|
|
44
45
|
this.defaultMaxTurns = opts.defaultMaxTurns ?? 5;
|
|
45
46
|
this.guardPaymentData = opts.guardUngroundedPaymentData ?? true;
|
|
46
47
|
this.fixAmounts = opts.fixAmountConversions ?? true;
|
|
48
|
+
this.thinkOnForcedCalls = opts.thinkOnForcedCalls ?? false;
|
|
47
49
|
this.guardMissingTools = opts.guardMissingTools ?? true;
|
|
48
50
|
this.endTurnOnDecline = opts.endTurnOnDecline ?? true;
|
|
49
51
|
this.compressOpts = opts.compressToolOutput
|
|
@@ -65,6 +67,16 @@ export class Engine {
|
|
|
65
67
|
return { skill, ...skills.compose(base, skill) };
|
|
66
68
|
}
|
|
67
69
|
async runAgentic(messages, opts = {}) {
|
|
70
|
+
const sessionKey = opts.sessionKey ?? `mind-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
71
|
+
try {
|
|
72
|
+
return await this.runAgenticSession(messages, { ...opts, sessionKey });
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
if (!opts.sessionKey)
|
|
76
|
+
await this.provider.endSession?.(sessionKey).catch(() => { });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async runAgenticSession(messages, opts) {
|
|
68
80
|
const maxTurns = opts.maxTurns ?? this.defaultMaxTurns;
|
|
69
81
|
const hasSystem = messages.some((m) => m.role === 'system');
|
|
70
82
|
const system = hasSystem ? undefined : this.defaultSystem;
|
|
@@ -98,11 +110,14 @@ export class Engine {
|
|
|
98
110
|
if (opts.signal?.aborted)
|
|
99
111
|
break;
|
|
100
112
|
const out = await this.provider.runTurn({
|
|
113
|
+
sessionKey: opts.sessionKey,
|
|
101
114
|
messages: history,
|
|
102
115
|
tools: allTools,
|
|
103
116
|
system,
|
|
117
|
+
// A forced first call only picks the tool and its arguments; reasoning
|
|
118
|
+
// there costs most of the turn's time on small models.
|
|
104
119
|
...(turn === 1 && opts.firstTurnToolChoice && allTools.length
|
|
105
|
-
? { toolChoice: opts.firstTurnToolChoice }
|
|
120
|
+
? { toolChoice: opts.firstTurnToolChoice, ...(this.thinkOnForcedCalls ? {} : { thinking: 'off' }) }
|
|
106
121
|
: {}),
|
|
107
122
|
onToken: opts.onToken ? (t) => opts.onToken(t, turn) : undefined,
|
|
108
123
|
signal: opts.signal,
|
|
@@ -202,6 +217,7 @@ export class Engine {
|
|
|
202
217
|
}
|
|
203
218
|
if (repeatedAgain) {
|
|
204
219
|
const forced = await this.provider.runTurn({
|
|
220
|
+
sessionKey: opts.sessionKey,
|
|
205
221
|
messages: history,
|
|
206
222
|
tools: [],
|
|
207
223
|
system,
|
|
@@ -253,6 +269,7 @@ export class Engine {
|
|
|
253
269
|
if (opts.signal?.aborted)
|
|
254
270
|
return '';
|
|
255
271
|
const retry = await this.provider.runTurn({
|
|
272
|
+
sessionKey: opts.sessionKey,
|
|
256
273
|
messages: [
|
|
257
274
|
...history,
|
|
258
275
|
{ role: 'user', content: 'Answer my question now from the tool results above, in a few short sentences.' },
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ export interface FastIntent {
|
|
|
15
15
|
name: string;
|
|
16
16
|
/** Contract tool to call when this intent matches. */
|
|
17
17
|
tool: string;
|
|
18
|
+
/** Equivalent tools to try, in order, when the host doesn't expose `tool`. */
|
|
19
|
+
fallbackTools?: string[];
|
|
18
20
|
/** True only when this intent UNAMBIGUOUSLY matches the text. */
|
|
19
21
|
match: (text: string) => boolean;
|
|
20
22
|
/** Optional args derived from the text (default: none). */
|
|
@@ -22,7 +24,10 @@ export interface FastIntent {
|
|
|
22
24
|
}
|
|
23
25
|
export interface FastHit {
|
|
24
26
|
intent: FastIntent;
|
|
27
|
+
/** The intent's primary tool. */
|
|
25
28
|
tool: string;
|
|
29
|
+
/** Primary tool first, then the fallbacks. */
|
|
30
|
+
tools: string[];
|
|
26
31
|
args: Record<string, unknown>;
|
|
27
32
|
}
|
|
28
33
|
export declare class FastPath {
|
|
@@ -33,6 +38,6 @@ export declare class FastPath {
|
|
|
33
38
|
/** The first unambiguously-matching intent, or null. */
|
|
34
39
|
select(text: string): FastHit | null;
|
|
35
40
|
}
|
|
36
|
-
/** Default wallet read intents (balance / receive address / price). */
|
|
41
|
+
/** Default wallet read intents (balance / RGB assets / receive address / price). */
|
|
37
42
|
export declare const WALLET_FAST_INTENTS: FastIntent[];
|
|
38
43
|
//# sourceMappingURL=fastpath.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastpath.d.ts","sourceRoot":"","sources":["../../src/fastpath/fastpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAe;IAC9B,YAAY,OAAO,GAAE,UAAU,EAAO,EAErC;IACD,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAE5B;IACD,IAAI,IAAI,UAAU,EAAE,CAEnB;IACD,wDAAwD;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"fastpath.d.ts","sourceRoot":"","sources":["../../src/fastpath/fastpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,iEAAiE;IACjE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAe;IAC9B,YAAY,OAAO,GAAE,UAAU,EAAO,EAErC;IACD,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAE5B;IACD,IAAI,IAAI,UAAU,EAAE,CAEnB;IACD,wDAAwD;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAKnC;CACF;AAQD,oFAAoF;AACpF,eAAO,MAAM,mBAAmB,EAAE,UAAU,EA2B3C,CAAC"}
|
|
@@ -25,22 +25,36 @@ export class FastPath {
|
|
|
25
25
|
/** The first unambiguously-matching intent, or null. */
|
|
26
26
|
select(text) {
|
|
27
27
|
const intent = this.intents.find((i) => i.match(text));
|
|
28
|
-
return intent
|
|
28
|
+
return intent
|
|
29
|
+
? { intent, tool: intent.tool, tools: [intent.tool, ...(intent.fallbackTools ?? [])], args: intent.args?.(text) ?? {} }
|
|
30
|
+
: null;
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
// A "spend or compound" guard — never fast-path anything that moves money or
|
|
32
34
|
// chains another action ("send", "pay", "and then", "swap").
|
|
33
35
|
const ACTIONY = /\b(send|pay|transfer|swap|buy|sell|then|after that)\b/i;
|
|
34
|
-
|
|
36
|
+
// Asks that create something are not reads, even when they mention assets.
|
|
37
|
+
const CREATEY = /\b(issue|mint|create|make|new|generate|invoice|receive|request)\b/i;
|
|
38
|
+
/** Default wallet read intents (balance / RGB assets / receive address / price). */
|
|
35
39
|
export const WALLET_FAST_INTENTS = [
|
|
36
40
|
{
|
|
37
41
|
name: 'balance',
|
|
38
42
|
tool: 'get_balances',
|
|
43
|
+
fallbackTools: ['rln_get_balances', 'wdk_get_balances'],
|
|
39
44
|
match: (t) => !ACTIONY.test(t) && /\b(balance|funds|how much (do i|have i|i have)|how much.* (do i have|in my wallet))\b/i.test(t),
|
|
40
45
|
},
|
|
46
|
+
{
|
|
47
|
+
name: 'assets',
|
|
48
|
+
tool: 'rln_list_assets',
|
|
49
|
+
fallbackTools: ['wdk_list_assets'],
|
|
50
|
+
match: (t) => !ACTIONY.test(t) &&
|
|
51
|
+
!CREATEY.test(t) &&
|
|
52
|
+
/\b(which|what|list|show|my)\b[^.?!]*\b(rgb assets?|assets?|tokens?)\b|\b(rgb assets?|tokens?) (do i|i) (have|hold|own)\b/i.test(t),
|
|
53
|
+
},
|
|
41
54
|
{
|
|
42
55
|
name: 'address',
|
|
43
56
|
tool: 'spark_get_address',
|
|
57
|
+
fallbackTools: ['rln_get_address', 'wdk_get_address'],
|
|
44
58
|
match: (t) => !ACTIONY.test(t) && /\b(receive address|deposit address|my address|an address|get .*address|where.* receive)\b/i.test(t),
|
|
45
59
|
},
|
|
46
60
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastpath.js","sourceRoot":"","sources":["../../src/fastpath/fastpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"fastpath.js","sourceRoot":"","sources":["../../src/fastpath/fastpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAuBH,MAAM,OAAO,QAAQ;IACX,OAAO,CAAe;IAC9B,YAAY,OAAO,GAAiB,EAAE;QACpC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,GAAG,CAAC,MAAkB;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,wDAAwD;IACxD,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM;YACX,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACvH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;CACF;AAED,6EAA6E;AAC7E,6DAA6D;AAC7D,MAAM,OAAO,GAAG,wDAAwD,CAAC;AACzE,2EAA2E;AAC3E,MAAM,OAAO,GAAG,oEAAoE,CAAC;AAErF,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC/C;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,cAAc;QACpB,aAAa,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,wFAAwF,CAAC,IAAI,CAAC,CAAC,CAAC;KACnI;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;QACvB,aAAa,EAAE,CAAC,iBAAiB,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,2HAA2H,CAAC,IAAI,CAAC,CAAC,CAAC;KACtI;IACD;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,mBAAmB;QACzB,aAAa,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;QACrD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,4FAA4F,CAAC,IAAI,CAAC,CAAC,CAAC;KACvI;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,2FAA2F,CAAC,IAAI,CAAC,CAAC,CAAC;KACtI;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/fastpath/render.ts"],"names":[],"mappings":"AA+CA,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAQzE"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text for a fast-path result. Tools that answer the same intent return
|
|
3
|
+
* different shapes (aggregate wallet, kaleido-mcp, MockWallet), so each shape
|
|
4
|
+
* is read here instead of asking a model to describe it.
|
|
5
|
+
*/
|
|
6
|
+
import { formatRgbAmount } from '../context/rgb-units.js';
|
|
7
|
+
const sats = (n) => `${Number(n ?? 0).toLocaleString('en-US')} sats`;
|
|
8
|
+
function parse(r) {
|
|
9
|
+
if (typeof r !== 'string')
|
|
10
|
+
return r;
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(r);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return r;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function renderBalance(r) {
|
|
19
|
+
if (r.total_sats !== undefined) {
|
|
20
|
+
const n = r.layers?.length ?? 0;
|
|
21
|
+
return `You have ${sats(r.total_sats)}${n > 1 ? ` across ${n} layers` : ''}.`;
|
|
22
|
+
}
|
|
23
|
+
if (r.btc_onchain) {
|
|
24
|
+
const b = r.btc_onchain;
|
|
25
|
+
const lines = [`On-chain: ${sats(b.vanilla_spendable_sats)} spendable.`];
|
|
26
|
+
if (Number(b.colored_spendable_sats))
|
|
27
|
+
lines.push(`RGB UTXOs: ${sats(b.colored_spendable_sats)} (holding RGB assets, not for spending).`);
|
|
28
|
+
if (r.lightning_balance_sat !== undefined)
|
|
29
|
+
lines.push(`Lightning: ${sats(r.lightning_balance_sat)}.`);
|
|
30
|
+
return lines.join('\n');
|
|
31
|
+
}
|
|
32
|
+
if (r.btc_sats !== undefined)
|
|
33
|
+
return `You have ${sats(r.btc_sats)}.`;
|
|
34
|
+
return `Balances:\n${JSON.stringify(r, null, 2)}`;
|
|
35
|
+
}
|
|
36
|
+
function renderAssets(r) {
|
|
37
|
+
const list = Array.isArray(r) ? r : Array.isArray(r?.assets) ? r.assets : [];
|
|
38
|
+
if (!list.length)
|
|
39
|
+
return "You don't hold any RGB assets yet.";
|
|
40
|
+
const rows = list.map((a) => {
|
|
41
|
+
const raw = a.balance?.spendable ?? a.balance?.settled;
|
|
42
|
+
const amount = typeof raw === 'number' ? `${formatRgbAmount(raw, Number(a.precision) || 0)} ${a.ticker}` : 'balance unknown';
|
|
43
|
+
return `- ${a.ticker}${a.name && a.name !== a.ticker ? ` (${a.name})` : ''}: ${amount}`;
|
|
44
|
+
});
|
|
45
|
+
return `Your RGB assets:\n${rows.join('\n')}`;
|
|
46
|
+
}
|
|
47
|
+
export function defaultRenderFast(intent, result) {
|
|
48
|
+
const r = parse(result);
|
|
49
|
+
if (intent === 'balance')
|
|
50
|
+
return renderBalance(r ?? {});
|
|
51
|
+
if (intent === 'assets')
|
|
52
|
+
return renderAssets(r);
|
|
53
|
+
if (intent === 'address') {
|
|
54
|
+
return r?.address ? `Here's your receive address:\n\n\`${r.address}\`` : 'No address available right now.';
|
|
55
|
+
}
|
|
56
|
+
return `Bitcoin is $${Number(r?.price_usd ?? 0).toLocaleString('en-US')}.`;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/fastpath/render.ts"],"names":[],"mappings":"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"}
|
package/dist/funnel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"funnel.d.ts","sourceRoot":"","sources":["../src/funnel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"funnel.d.ts","sourceRoot":"","sources":["../src/funnel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvE,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,QAkCtB,CAAC;AAQb,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,uDAAuD;IACvD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,qEAAqE;IACrE,UAAU,CAAC,EAAE,CACX,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAC1D,IAAI,EAAE;QAAE,oBAAoB,EAAE,OAAO,CAAA;KAAE,KACpC,IAAI,CAAC;IACV,2EAA2E;IAC3E,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,MAAM,EAAE,OAAO,CAAC;KACjB,KAAK,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACvH;wEACoE;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpC,+FAA+F;IAC/F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gEAAgE;IAChE,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,WAAW,CAAC;IACtB,uEAAuE;IACvE,KAAK,EAAE,YAAY,CAAC;IACpB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uEAAuE;IACvE,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;IAChD,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,cAAc,CAAC;IACnC,6EAA6E;IAC7E,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;IACzD,oEAAoE;IACpE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8C;IACzE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA4B;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,yEAAyE;IACzE,OAAO,CAAC,WAAW,CAAoD;IAEvE,YAAY,IAAI,EAAE,aAAa,EAkB9B;IAED,0DAA0D;IAC1D,UAAU,IAAI,KAAK,EAAE,CAEpB;IAED,OAAO,CAAC,SAAS;IAWX,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,eAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CA+L5E;CACF"}
|
package/dist/funnel.js
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* the contract; with no `onConfirm` the gate fails closed.
|
|
20
20
|
*/
|
|
21
21
|
import { Engine } from './engine.js';
|
|
22
|
+
import { defaultRenderFast } from './fastpath/render.js';
|
|
22
23
|
import { FastPath, WALLET_FAST_INTENTS } from './fastpath/fastpath.js';
|
|
23
24
|
import { RecipeRegistry, runRecipe } from './recipe/runner.js';
|
|
24
25
|
import { paymentsRecipe } from './recipe/payments.js';
|
|
@@ -67,17 +68,6 @@ export const DEFAULT_WALLET_SYSTEM = [
|
|
|
67
68
|
const AMBIENT_MEMORY = ['remember', 'recall'];
|
|
68
69
|
const AMBIENT_RAG = ['search_knowledge'];
|
|
69
70
|
const DEFAULT_HISTORY = 8;
|
|
70
|
-
function defaultRenderFast(intent, r) {
|
|
71
|
-
if (intent === 'balance') {
|
|
72
|
-
const sats = Number(r?.total_sats ?? 0);
|
|
73
|
-
const n = r?.layers?.length ?? 0;
|
|
74
|
-
return `You have ${sats.toLocaleString()} sats${n > 1 ? ` across ${n} layers` : ''}.`;
|
|
75
|
-
}
|
|
76
|
-
if (intent === 'address') {
|
|
77
|
-
return r?.address ? `Here's your receive address:\n\n\`${r.address}\`` : 'No address available right now.';
|
|
78
|
-
}
|
|
79
|
-
return `Bitcoin is $${Number(r?.price_usd ?? 0).toLocaleString()}.`;
|
|
80
|
-
}
|
|
81
71
|
export class Funnel {
|
|
82
72
|
provider;
|
|
83
73
|
registry;
|
|
@@ -136,9 +126,16 @@ export class Funnel {
|
|
|
136
126
|
// tool — a partial tool surface (e.g. desktop without the core aggregate
|
|
137
127
|
// helpers) falls through to the agentic tier instead of erroring.
|
|
138
128
|
const fast = this.fastPath.select(text);
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
129
|
+
let fastTool;
|
|
130
|
+
for (const name of fast?.tools ?? []) {
|
|
131
|
+
if (await this.registry.getDef(name)) {
|
|
132
|
+
fastTool = name;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (fast && fastTool) {
|
|
137
|
+
this.log(`tier=fast-path → ${fastTool}`);
|
|
138
|
+
const r = await this.registry.execute(fastTool, fast.args);
|
|
142
139
|
return { text: this.renderFast(fast.intent.name, r), tier: 'fast', route: fast.intent.name, intent: fast.intent.name, data: r };
|
|
143
140
|
}
|
|
144
141
|
// ── T2: recipe multi-step — fires when:
|
package/dist/funnel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"funnel.js","sourceRoot":"","sources":["../src/funnel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"funnel.js","sourceRoot":"","sources":["../src/funnel.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,17 @@ export interface TurnInput {
|
|
|
21
21
|
* empty or the provider has no such control.
|
|
22
22
|
*/
|
|
23
23
|
toolChoice?: ToolChoice;
|
|
24
|
+
/**
|
|
25
|
+
* `'off'` asks the provider to skip reasoning for this turn (e.g. a forced
|
|
26
|
+
* tool call). Ignored by providers without reasoning control.
|
|
27
|
+
*/
|
|
28
|
+
thinking?: 'off';
|
|
29
|
+
/**
|
|
30
|
+
* Same value on every call of one agentic run, whose history only grows.
|
|
31
|
+
* Providers with a session cache (QVAC `kvCache`) can then send only the new
|
|
32
|
+
* message instead of the whole prompt.
|
|
33
|
+
*/
|
|
34
|
+
sessionKey?: string;
|
|
24
35
|
/** Visible content tokens as they stream. */
|
|
25
36
|
onToken?: (token: string) => void;
|
|
26
37
|
signal?: AbortSignal;
|
|
@@ -75,6 +86,8 @@ export interface LLMProvider {
|
|
|
75
86
|
readonly name: string;
|
|
76
87
|
/** Run one completion turn. */
|
|
77
88
|
runTurn(input: TurnInput): Promise<TurnOutput>;
|
|
89
|
+
/** Drop whatever the provider cached for `sessionKey` (end of an agentic run). */
|
|
90
|
+
endSession?(sessionKey: string): Promise<void>;
|
|
78
91
|
/** Cancel an in-flight turn by request id, if the provider supports it. */
|
|
79
92
|
cancel?(requestId: string): Promise<void>;
|
|
80
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEtE,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,GAAG,kBAAkB,GAAG,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC5D;AAED,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,qEAAqE;IACrE,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,2EAA2E;IAC3E,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEtE,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,GAAG,kBAAkB,GAAG,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC5D;AAED,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,qEAAqE;IACrE,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/C,kFAAkF;IAClF,UAAU,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,2EAA2E;IAC3E,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C"}
|
package/dist/qvac/provider.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ import type { LLMProvider, TurnInput } from '../providers/types.js';
|
|
|
21
21
|
import type { QvacTurnStats } from './parse.js';
|
|
22
22
|
type CompletionFn = typeof QvacSdk.completion;
|
|
23
23
|
type CancelFn = typeof QvacSdk.cancel;
|
|
24
|
+
type DeleteCacheFn = typeof QvacSdk.deleteCache;
|
|
24
25
|
export interface QvacProviderOptions {
|
|
25
26
|
/** The SDK's `completion` (injected — see module docs). */
|
|
26
27
|
completion: CompletionFn;
|
|
@@ -44,6 +45,14 @@ export interface QvacProviderOptions {
|
|
|
44
45
|
* unlimited reasoning.
|
|
45
46
|
*/
|
|
46
47
|
maxThinkingTokens?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Keep each agentic run in a QVAC KV-cache session (`kvCache: sessionKey`),
|
|
50
|
+
* so calls after the first send only the new message instead of re-reading
|
|
51
|
+
* the whole prompt. Needs `deleteCache` to drop the session at the end.
|
|
52
|
+
*/
|
|
53
|
+
sessionCache?: boolean;
|
|
54
|
+
/** The SDK's `deleteCache` (injected); used with `sessionCache`. */
|
|
55
|
+
deleteCache?: DeleteCacheFn;
|
|
47
56
|
/** Stream the model's `<think>` reasoning, when a host wants to surface it. */
|
|
48
57
|
onThinking?: (token: string) => void;
|
|
49
58
|
/**
|
|
@@ -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;AAIhD,KAAK,YAAY,GAAG,OAAO,OAAO,CAAC,UAAU,CAAC;AAC9C,KAAK,QAAQ,GAAG,OAAO,OAAO,CAAC,MAAM,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;AACtC,KAAK,aAAa,GAAG,OAAO,OAAO,CAAC,WAAW,CAAC;AAEhD,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;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,WAAW,CAAC,EAAE,aAAa,CAAC;IAC5B,+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,CAqJ5E"}
|
package/dist/qvac/provider.js
CHANGED
|
@@ -24,7 +24,7 @@ export function createQvacProvider(options) {
|
|
|
24
24
|
const predict = input.maxTokens ?? options.defaultMaxTokens;
|
|
25
25
|
// A thinking budget at or above the output cap never binds: the model can
|
|
26
26
|
// spend the whole turn reasoning and return no answer. Keep half for it.
|
|
27
|
-
const thinkingCap = input.maxThinkingTokens ?? options.maxThinkingTokens;
|
|
27
|
+
const thinkingCap = input.thinking === 'off' ? 0 : (input.maxThinkingTokens ?? options.maxThinkingTokens);
|
|
28
28
|
const maxThinkingTokens = thinkingCap !== undefined && predict !== undefined && thinkingCap >= predict
|
|
29
29
|
? Math.floor(predict / 2)
|
|
30
30
|
: thinkingCap;
|
|
@@ -45,6 +45,7 @@ export function createQvacProvider(options) {
|
|
|
45
45
|
// Split `<think>` into separate thinkingDelta events so reasoning never
|
|
46
46
|
// pollutes the visible answer.
|
|
47
47
|
captureThinking: true,
|
|
48
|
+
...(options.sessionCache && input.sessionKey ? { kvCache: input.sessionKey } : {}),
|
|
48
49
|
...(generationParams ? { generationParams } : {}),
|
|
49
50
|
...(tools ? { tools } : {}),
|
|
50
51
|
});
|
|
@@ -114,6 +115,16 @@ export function createQvacProvider(options) {
|
|
|
114
115
|
...(incomplete ? { incomplete: true } : {}),
|
|
115
116
|
};
|
|
116
117
|
},
|
|
118
|
+
async endSession(sessionKey) {
|
|
119
|
+
if (!options.sessionCache || !options.deleteCache)
|
|
120
|
+
return;
|
|
121
|
+
try {
|
|
122
|
+
await options.deleteCache({ kvCacheKey: sessionKey });
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
console.warn('[qvac] deleteCache failed:', err);
|
|
126
|
+
}
|
|
127
|
+
},
|
|
117
128
|
async cancel(requestId) {
|
|
118
129
|
// The cancel only lands once the server has begun the request; a same-tick
|
|
119
130
|
// cancel may race the begin and is logged as a no-match by the SDK.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/qvac/provider.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/qvac/provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/engine.test.ts
CHANGED
|
@@ -224,6 +224,45 @@ describe('Engine agentic loop', () => {
|
|
|
224
224
|
expect(seen).toEqual(['required', undefined]);
|
|
225
225
|
});
|
|
226
226
|
|
|
227
|
+
it('passes one session key to every call of a run and ends the session', async () => {
|
|
228
|
+
const keys: Array<string | undefined> = [];
|
|
229
|
+
const ended: string[] = [];
|
|
230
|
+
const provider: LLMProvider = {
|
|
231
|
+
name: 'rec',
|
|
232
|
+
async runTurn(input) {
|
|
233
|
+
keys.push(input.sessionKey);
|
|
234
|
+
return keys.length === 1
|
|
235
|
+
? { text: '', rawContent: '', toolCalls: [{ name: 'get_balance', arguments: {} }] }
|
|
236
|
+
: { text: 'done', rawContent: 'done', toolCalls: [] };
|
|
237
|
+
},
|
|
238
|
+
async endSession(key) {
|
|
239
|
+
ended.push(key);
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
const engine = new Engine({ provider, tools: freshTools() });
|
|
243
|
+
await engine.runAgentic([{ role: 'user', content: 'x' }]);
|
|
244
|
+
await engine.runAgentic([{ role: 'user', content: 'y' }]);
|
|
245
|
+
expect(keys[0]).toBeTruthy();
|
|
246
|
+
expect(keys[1]).toBe(keys[0]);
|
|
247
|
+
expect(keys[2]).not.toBe(keys[0]);
|
|
248
|
+
expect(ended).toEqual([keys[0], keys[2]]);
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
it('turns thinking off on the forced first call only', async () => {
|
|
252
|
+
const thinking: Array<string | undefined> = [];
|
|
253
|
+
const provider: LLMProvider = {
|
|
254
|
+
name: 'rec',
|
|
255
|
+
async runTurn(input) {
|
|
256
|
+
thinking.push(input.thinking);
|
|
257
|
+
return thinking.length === 1
|
|
258
|
+
? { text: '', rawContent: '', toolCalls: [{ name: 'get_balance', arguments: {} }] }
|
|
259
|
+
: { text: 'done', rawContent: 'done', toolCalls: [] };
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
await new Engine({ provider, tools: freshTools() }).runAgentic([{ role: 'user', content: 'x' }], { firstTurnToolChoice: 'required' });
|
|
263
|
+
expect(thinking).toEqual(['off', undefined]);
|
|
264
|
+
});
|
|
265
|
+
|
|
227
266
|
it('feeds an unparseable tool call back to the model once, then gives up cleanly', async () => {
|
|
228
267
|
const histories: number[] = [];
|
|
229
268
|
const provider: LLMProvider = {
|
package/src/engine.ts
CHANGED
|
@@ -63,6 +63,8 @@ export interface EngineOptions {
|
|
|
63
63
|
* asset balance the answer calls sats. Default true.
|
|
64
64
|
*/
|
|
65
65
|
fixAmountConversions?: boolean;
|
|
66
|
+
/** Let the model reason on a forced first tool call. Default false (thinking off). */
|
|
67
|
+
thinkOnForcedCalls?: boolean;
|
|
66
68
|
/**
|
|
67
69
|
* Answer a wallet action (create an invoice, get an address, pay, send) with
|
|
68
70
|
* a fixed "no tool" reply, without inference, when no exposed tool can do it.
|
|
@@ -105,6 +107,8 @@ export interface AgenticOptions {
|
|
|
105
107
|
* made-up data. Later rounds are left to the model.
|
|
106
108
|
*/
|
|
107
109
|
firstTurnToolChoice?: ToolChoice;
|
|
110
|
+
/** Session key passed to every model call of this run. Default: a fresh key per run. */
|
|
111
|
+
sessionKey?: string;
|
|
108
112
|
signal?: AbortSignal;
|
|
109
113
|
}
|
|
110
114
|
|
|
@@ -142,6 +146,7 @@ export class Engine {
|
|
|
142
146
|
private readonly compressOpts?: ToolCrushOptions;
|
|
143
147
|
private readonly guardPaymentData: boolean;
|
|
144
148
|
private readonly fixAmounts: boolean;
|
|
149
|
+
private readonly thinkOnForcedCalls: boolean;
|
|
145
150
|
private readonly guardMissingTools: boolean;
|
|
146
151
|
private readonly endTurnOnDecline: boolean;
|
|
147
152
|
|
|
@@ -152,6 +157,7 @@ export class Engine {
|
|
|
152
157
|
this.defaultMaxTurns = opts.defaultMaxTurns ?? 5;
|
|
153
158
|
this.guardPaymentData = opts.guardUngroundedPaymentData ?? true;
|
|
154
159
|
this.fixAmounts = opts.fixAmountConversions ?? true;
|
|
160
|
+
this.thinkOnForcedCalls = opts.thinkOnForcedCalls ?? false;
|
|
155
161
|
this.guardMissingTools = opts.guardMissingTools ?? true;
|
|
156
162
|
this.endTurnOnDecline = opts.endTurnOnDecline ?? true;
|
|
157
163
|
this.compressOpts = opts.compressToolOutput
|
|
@@ -175,6 +181,15 @@ export class Engine {
|
|
|
175
181
|
}
|
|
176
182
|
|
|
177
183
|
async runAgentic(messages: Message[], opts: AgenticOptions = {}): Promise<AgenticResult> {
|
|
184
|
+
const sessionKey = opts.sessionKey ?? `mind-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
185
|
+
try {
|
|
186
|
+
return await this.runAgenticSession(messages, { ...opts, sessionKey });
|
|
187
|
+
} finally {
|
|
188
|
+
if (!opts.sessionKey) await this.provider.endSession?.(sessionKey).catch(() => {});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
private async runAgenticSession(messages: Message[], opts: AgenticOptions): Promise<AgenticResult> {
|
|
178
193
|
const maxTurns = opts.maxTurns ?? this.defaultMaxTurns;
|
|
179
194
|
const hasSystem = messages.some((m) => m.role === 'system');
|
|
180
195
|
const system = hasSystem ? undefined : this.defaultSystem;
|
|
@@ -211,11 +226,14 @@ export class Engine {
|
|
|
211
226
|
if (opts.signal?.aborted) break;
|
|
212
227
|
|
|
213
228
|
const out = await this.provider.runTurn({
|
|
229
|
+
sessionKey: opts.sessionKey,
|
|
214
230
|
messages: history,
|
|
215
231
|
tools: allTools,
|
|
216
232
|
system,
|
|
233
|
+
// A forced first call only picks the tool and its arguments; reasoning
|
|
234
|
+
// there costs most of the turn's time on small models.
|
|
217
235
|
...(turn === 1 && opts.firstTurnToolChoice && allTools.length
|
|
218
|
-
? { toolChoice: opts.firstTurnToolChoice }
|
|
236
|
+
? { toolChoice: opts.firstTurnToolChoice, ...(this.thinkOnForcedCalls ? {} : { thinking: 'off' as const }) }
|
|
219
237
|
: {}),
|
|
220
238
|
onToken: opts.onToken ? (t) => opts.onToken!(t, turn) : undefined,
|
|
221
239
|
signal: opts.signal,
|
|
@@ -314,6 +332,7 @@ export class Engine {
|
|
|
314
332
|
|
|
315
333
|
if (repeatedAgain) {
|
|
316
334
|
const forced = await this.provider.runTurn({
|
|
335
|
+
sessionKey: opts.sessionKey,
|
|
317
336
|
messages: history,
|
|
318
337
|
tools: [],
|
|
319
338
|
system,
|
|
@@ -375,6 +394,7 @@ export class Engine {
|
|
|
375
394
|
): Promise<string> {
|
|
376
395
|
if (opts.signal?.aborted) return '';
|
|
377
396
|
const retry = await this.provider.runTurn({
|
|
397
|
+
sessionKey: opts.sessionKey,
|
|
378
398
|
messages: [
|
|
379
399
|
...history,
|
|
380
400
|
{ role: 'user', content: 'Answer my question now from the tool results above, in a few short sentences.' },
|
package/src/fastpath/fastpath.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface FastIntent {
|
|
|
16
16
|
name: string;
|
|
17
17
|
/** Contract tool to call when this intent matches. */
|
|
18
18
|
tool: string;
|
|
19
|
+
/** Equivalent tools to try, in order, when the host doesn't expose `tool`. */
|
|
20
|
+
fallbackTools?: string[];
|
|
19
21
|
/** True only when this intent UNAMBIGUOUSLY matches the text. */
|
|
20
22
|
match: (text: string) => boolean;
|
|
21
23
|
/** Optional args derived from the text (default: none). */
|
|
@@ -24,7 +26,10 @@ export interface FastIntent {
|
|
|
24
26
|
|
|
25
27
|
export interface FastHit {
|
|
26
28
|
intent: FastIntent;
|
|
29
|
+
/** The intent's primary tool. */
|
|
27
30
|
tool: string;
|
|
31
|
+
/** Primary tool first, then the fallbacks. */
|
|
32
|
+
tools: string[];
|
|
28
33
|
args: Record<string, unknown>;
|
|
29
34
|
}
|
|
30
35
|
|
|
@@ -42,24 +47,39 @@ export class FastPath {
|
|
|
42
47
|
/** The first unambiguously-matching intent, or null. */
|
|
43
48
|
select(text: string): FastHit | null {
|
|
44
49
|
const intent = this.intents.find((i) => i.match(text));
|
|
45
|
-
return intent
|
|
50
|
+
return intent
|
|
51
|
+
? { intent, tool: intent.tool, tools: [intent.tool, ...(intent.fallbackTools ?? [])], args: intent.args?.(text) ?? {} }
|
|
52
|
+
: null;
|
|
46
53
|
}
|
|
47
54
|
}
|
|
48
55
|
|
|
49
56
|
// A "spend or compound" guard — never fast-path anything that moves money or
|
|
50
57
|
// chains another action ("send", "pay", "and then", "swap").
|
|
51
58
|
const ACTIONY = /\b(send|pay|transfer|swap|buy|sell|then|after that)\b/i;
|
|
59
|
+
// Asks that create something are not reads, even when they mention assets.
|
|
60
|
+
const CREATEY = /\b(issue|mint|create|make|new|generate|invoice|receive|request)\b/i;
|
|
52
61
|
|
|
53
|
-
/** Default wallet read intents (balance / receive address / price). */
|
|
62
|
+
/** Default wallet read intents (balance / RGB assets / receive address / price). */
|
|
54
63
|
export const WALLET_FAST_INTENTS: FastIntent[] = [
|
|
55
64
|
{
|
|
56
65
|
name: 'balance',
|
|
57
66
|
tool: 'get_balances',
|
|
67
|
+
fallbackTools: ['rln_get_balances', 'wdk_get_balances'],
|
|
58
68
|
match: (t) => !ACTIONY.test(t) && /\b(balance|funds|how much (do i|have i|i have)|how much.* (do i have|in my wallet))\b/i.test(t),
|
|
59
69
|
},
|
|
70
|
+
{
|
|
71
|
+
name: 'assets',
|
|
72
|
+
tool: 'rln_list_assets',
|
|
73
|
+
fallbackTools: ['wdk_list_assets'],
|
|
74
|
+
match: (t) =>
|
|
75
|
+
!ACTIONY.test(t) &&
|
|
76
|
+
!CREATEY.test(t) &&
|
|
77
|
+
/\b(which|what|list|show|my)\b[^.?!]*\b(rgb assets?|assets?|tokens?)\b|\b(rgb assets?|tokens?) (do i|i) (have|hold|own)\b/i.test(t),
|
|
78
|
+
},
|
|
60
79
|
{
|
|
61
80
|
name: 'address',
|
|
62
81
|
tool: 'spark_get_address',
|
|
82
|
+
fallbackTools: ['rln_get_address', 'wdk_get_address'],
|
|
63
83
|
match: (t) => !ACTIONY.test(t) && /\b(receive address|deposit address|my address|an address|get .*address|where.* receive)\b/i.test(t),
|
|
64
84
|
},
|
|
65
85
|
{
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { defaultRenderFast } from './render.js';
|
|
3
|
+
import { FastPath, WALLET_FAST_INTENTS } from './fastpath.js';
|
|
4
|
+
|
|
5
|
+
const fp = new FastPath(WALLET_FAST_INTENTS);
|
|
6
|
+
|
|
7
|
+
describe('fast path: RLN tools and RGB assets', () => {
|
|
8
|
+
it('lists fallback tools after the primary one', () => {
|
|
9
|
+
expect(fp.select('What is my on-chain BTC balance?')?.tools).toEqual(['get_balances', 'rln_get_balances', 'wdk_get_balances']);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('routes asset questions, not asset actions', () => {
|
|
13
|
+
expect(fp.select('Which RGB assets do I hold, and what are the balances?')?.intent.name).toBe('assets');
|
|
14
|
+
expect(fp.select('list my tokens')?.intent.name).toBe('assets');
|
|
15
|
+
expect(fp.select('Issue a new RGB asset named FOO')).toBeNull();
|
|
16
|
+
expect(fp.select('Create an RGB invoice so I can receive 10 USDT')).toBeNull();
|
|
17
|
+
expect(fp.select('Send 1 USDT to rgb:abc')).toBeNull();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('renders the kaleido-mcp, aggregate and MockWallet balance shapes', () => {
|
|
21
|
+
expect(
|
|
22
|
+
defaultRenderFast(
|
|
23
|
+
'balance',
|
|
24
|
+
JSON.stringify({ btc_onchain: { vanilla_spendable_sats: 4277, colored_spendable_sats: 195000 }, lightning_balance_sat: 0 }),
|
|
25
|
+
),
|
|
26
|
+
).toBe('On-chain: 4,277 sats spendable.\nRGB UTXOs: 195,000 sats (holding RGB assets, not for spending).\nLightning: 0 sats.');
|
|
27
|
+
expect(defaultRenderFast('balance', { total_sats: 1000, layers: [{}, {}] })).toBe('You have 1,000 sats across 2 layers.');
|
|
28
|
+
expect(defaultRenderFast('balance', { btc_sats: 300000 })).toBe('You have 300,000 sats.');
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('renders RGB assets with their ticker and precision', () => {
|
|
32
|
+
const mcp = [
|
|
33
|
+
{ ticker: 'Q35A', name: 'Bench Q35A', precision: 0, balance: { spendable: 1_000_000 } },
|
|
34
|
+
{ ticker: 'USDT', name: 'Tether USD', precision: 6, balance: { spendable: 2_500_000 } },
|
|
35
|
+
];
|
|
36
|
+
expect(defaultRenderFast('assets', mcp)).toBe('Your RGB assets:\n- Q35A (Bench Q35A): 1,000,000 Q35A\n- USDT (Tether USD): 2.5 USDT');
|
|
37
|
+
expect(defaultRenderFast('assets', { assets: [] })).toBe("You don't hold any RGB assets yet.");
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text for a fast-path result. Tools that answer the same intent return
|
|
3
|
+
* different shapes (aggregate wallet, kaleido-mcp, MockWallet), so each shape
|
|
4
|
+
* is read here instead of asking a model to describe it.
|
|
5
|
+
*/
|
|
6
|
+
import { formatRgbAmount } from '../context/rgb-units.js';
|
|
7
|
+
|
|
8
|
+
type Obj = Record<string, any>;
|
|
9
|
+
|
|
10
|
+
const sats = (n: unknown) => `${Number(n ?? 0).toLocaleString('en-US')} sats`;
|
|
11
|
+
|
|
12
|
+
function parse(r: unknown): unknown {
|
|
13
|
+
if (typeof r !== 'string') return r;
|
|
14
|
+
try {
|
|
15
|
+
return JSON.parse(r);
|
|
16
|
+
} catch {
|
|
17
|
+
return r;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function renderBalance(r: Obj): string {
|
|
22
|
+
if (r.total_sats !== undefined) {
|
|
23
|
+
const n = r.layers?.length ?? 0;
|
|
24
|
+
return `You have ${sats(r.total_sats)}${n > 1 ? ` across ${n} layers` : ''}.`;
|
|
25
|
+
}
|
|
26
|
+
if (r.btc_onchain) {
|
|
27
|
+
const b = r.btc_onchain;
|
|
28
|
+
const lines = [`On-chain: ${sats(b.vanilla_spendable_sats)} spendable.`];
|
|
29
|
+
if (Number(b.colored_spendable_sats)) lines.push(`RGB UTXOs: ${sats(b.colored_spendable_sats)} (holding RGB assets, not for spending).`);
|
|
30
|
+
if (r.lightning_balance_sat !== undefined) lines.push(`Lightning: ${sats(r.lightning_balance_sat)}.`);
|
|
31
|
+
return lines.join('\n');
|
|
32
|
+
}
|
|
33
|
+
if (r.btc_sats !== undefined) return `You have ${sats(r.btc_sats)}.`;
|
|
34
|
+
return `Balances:\n${JSON.stringify(r, null, 2)}`;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function renderAssets(r: unknown): string {
|
|
38
|
+
const list: Obj[] = Array.isArray(r) ? r : Array.isArray((r as Obj)?.assets) ? (r as Obj).assets : [];
|
|
39
|
+
if (!list.length) return "You don't hold any RGB assets yet.";
|
|
40
|
+
const rows = list.map((a) => {
|
|
41
|
+
const raw = a.balance?.spendable ?? a.balance?.settled;
|
|
42
|
+
const amount = typeof raw === 'number' ? `${formatRgbAmount(raw, Number(a.precision) || 0)} ${a.ticker}` : 'balance unknown';
|
|
43
|
+
return `- ${a.ticker}${a.name && a.name !== a.ticker ? ` (${a.name})` : ''}: ${amount}`;
|
|
44
|
+
});
|
|
45
|
+
return `Your RGB assets:\n${rows.join('\n')}`;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function defaultRenderFast(intent: string, result: unknown): string {
|
|
49
|
+
const r = parse(result) as Obj;
|
|
50
|
+
if (intent === 'balance') return renderBalance(r ?? {});
|
|
51
|
+
if (intent === 'assets') return renderAssets(r);
|
|
52
|
+
if (intent === 'address') {
|
|
53
|
+
return r?.address ? `Here's your receive address:\n\n\`${r.address}\`` : 'No address available right now.';
|
|
54
|
+
}
|
|
55
|
+
return `Bitcoin is $${Number(r?.price_usd ?? 0).toLocaleString('en-US')}.`;
|
|
56
|
+
}
|
package/src/funnel.mind.test.ts
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* Fully deterministic (no node/model/maker), so it runs in CI. Live tool
|
|
18
18
|
* execution against a real node is the separate mcp.live.test.ts.
|
|
19
19
|
*/
|
|
20
|
+
import type { FastIntent } from './fastpath/fastpath.js';
|
|
20
21
|
import { describe, expect, it } from 'vitest';
|
|
21
22
|
import { Funnel } from './funnel.js';
|
|
22
23
|
import { ToolRegistry } from './tools/registry.js';
|
|
@@ -83,7 +84,7 @@ function searchMerchants(query: string): string {
|
|
|
83
84
|
*/
|
|
84
85
|
function buildMind(
|
|
85
86
|
provider: LLMProvider,
|
|
86
|
-
opts: { skills?: Skill[]; log?: (m: string) => void } = {},
|
|
87
|
+
opts: { skills?: Skill[]; log?: (m: string) => void; fastIntents?: FastIntent[] } = {},
|
|
87
88
|
): { funnel: Funnel; calls: Array<{ name: string; args: any }> } {
|
|
88
89
|
const calls: Array<{ name: string; args: any }> = [];
|
|
89
90
|
const tool = (name: string, response: any, spend = false) => ({
|
|
@@ -140,27 +141,21 @@ function buildMind(
|
|
|
140
141
|
]);
|
|
141
142
|
|
|
142
143
|
return {
|
|
143
|
-
funnel: new Funnel({ provider, tools, recipes: DESKTOP_RECIPES, maxTurns: 8, skills: opts.skills, log: opts.log }),
|
|
144
|
+
funnel: new Funnel({ provider, tools, recipes: DESKTOP_RECIPES, maxTurns: 8, skills: opts.skills, log: opts.log, ...(opts.fastIntents ? { fastIntents: opts.fastIntents } : {}) }),
|
|
144
145
|
calls,
|
|
145
146
|
};
|
|
146
147
|
}
|
|
147
148
|
|
|
148
149
|
describe('desktop mind — balance', () => {
|
|
149
|
-
it('
|
|
150
|
-
const { funnel, calls } = buildMind(
|
|
151
|
-
scripted([
|
|
152
|
-
{ text: '', toolCalls: [{ name: 'rln_get_balances', arguments: {} }] },
|
|
153
|
-
{ text: 'You have 1,949,753 sats in Lightning.' },
|
|
154
|
-
]),
|
|
155
|
-
);
|
|
150
|
+
it('answers "what\'s my balance?" on the fast path with rln_get_balances, no model', async () => {
|
|
151
|
+
const { funnel, calls } = buildMind(scripted([]));
|
|
156
152
|
|
|
157
153
|
const res = await funnel.runTurn("what's my balance?");
|
|
158
154
|
|
|
159
|
-
expect(res.tier).toBe('
|
|
160
|
-
expect(calls.map((c) => c.name)).
|
|
161
|
-
|
|
162
|
-
expect((
|
|
163
|
-
expect(res.text).toBeTruthy();
|
|
155
|
+
expect(res.tier).toBe('fast');
|
|
156
|
+
expect(calls.map((c) => c.name)).toEqual(['rln_get_balances']);
|
|
157
|
+
expect((res.data as { lightning_balance_sat?: number })?.lightning_balance_sat).toBe(1_949_753);
|
|
158
|
+
expect(res.text).toBe('On-chain: 100,000 sats spendable.\nLightning: 1,949,753 sats.');
|
|
164
159
|
});
|
|
165
160
|
});
|
|
166
161
|
|
|
@@ -359,7 +354,8 @@ describe('desktop mind — skill scoping (real skills)', () => {
|
|
|
359
354
|
{ text: '', toolCalls: [{ name: 'rln_get_balances', arguments: {} }] },
|
|
360
355
|
{ text: 'You have 1,949,753 sats.' },
|
|
361
356
|
]),
|
|
362
|
-
|
|
357
|
+
// Fast path off, so the balance ask exercises skill scoping.
|
|
358
|
+
{ skills: SKILLS, log: (m) => logs.push(m), fastIntents: [] },
|
|
363
359
|
);
|
|
364
360
|
|
|
365
361
|
const res = await funnel.runTurn("what's my balance?");
|
package/src/funnel.ts
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
import { Engine } from './engine.js';
|
|
23
23
|
import type { ToolCrushOptions } from './context/compress.js';
|
|
24
24
|
import type { ToolRegistry } from './tools/registry.js';
|
|
25
|
+
import { defaultRenderFast } from './fastpath/render.js';
|
|
25
26
|
import { FastPath, WALLET_FAST_INTENTS } from './fastpath/fastpath.js';
|
|
26
27
|
import type { FastIntent } from './fastpath/fastpath.js';
|
|
27
28
|
import { RecipeRegistry, runRecipe } from './recipe/runner.js';
|
|
@@ -176,18 +177,6 @@ export interface FunnelOptions {
|
|
|
176
177
|
topKRag?: number;
|
|
177
178
|
}
|
|
178
179
|
|
|
179
|
-
function defaultRenderFast(intent: string, r: any): string {
|
|
180
|
-
if (intent === 'balance') {
|
|
181
|
-
const sats = Number(r?.total_sats ?? 0);
|
|
182
|
-
const n = r?.layers?.length ?? 0;
|
|
183
|
-
return `You have ${sats.toLocaleString()} sats${n > 1 ? ` across ${n} layers` : ''}.`;
|
|
184
|
-
}
|
|
185
|
-
if (intent === 'address') {
|
|
186
|
-
return r?.address ? `Here's your receive address:\n\n\`${r.address}\`` : 'No address available right now.';
|
|
187
|
-
}
|
|
188
|
-
return `Bitcoin is $${Number(r?.price_usd ?? 0).toLocaleString()}.`;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
180
|
export class Funnel {
|
|
192
181
|
private readonly provider: LLMProvider;
|
|
193
182
|
private readonly registry: ToolRegistry;
|
|
@@ -251,9 +240,16 @@ export class Funnel {
|
|
|
251
240
|
// tool — a partial tool surface (e.g. desktop without the core aggregate
|
|
252
241
|
// helpers) falls through to the agentic tier instead of erroring.
|
|
253
242
|
const fast = this.fastPath.select(text);
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
243
|
+
let fastTool: string | undefined;
|
|
244
|
+
for (const name of fast?.tools ?? []) {
|
|
245
|
+
if (await this.registry.getDef(name)) {
|
|
246
|
+
fastTool = name;
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
if (fast && fastTool) {
|
|
251
|
+
this.log(`tier=fast-path → ${fastTool}`);
|
|
252
|
+
const r = await this.registry.execute(fastTool, fast.args);
|
|
257
253
|
return { text: this.renderFast(fast.intent.name, r), tier: 'fast', route: fast.intent.name, intent: fast.intent.name, data: r };
|
|
258
254
|
}
|
|
259
255
|
|
package/src/providers/types.ts
CHANGED
|
@@ -23,6 +23,17 @@ export interface TurnInput {
|
|
|
23
23
|
* empty or the provider has no such control.
|
|
24
24
|
*/
|
|
25
25
|
toolChoice?: ToolChoice;
|
|
26
|
+
/**
|
|
27
|
+
* `'off'` asks the provider to skip reasoning for this turn (e.g. a forced
|
|
28
|
+
* tool call). Ignored by providers without reasoning control.
|
|
29
|
+
*/
|
|
30
|
+
thinking?: 'off';
|
|
31
|
+
/**
|
|
32
|
+
* Same value on every call of one agentic run, whose history only grows.
|
|
33
|
+
* Providers with a session cache (QVAC `kvCache`) can then send only the new
|
|
34
|
+
* message instead of the whole prompt.
|
|
35
|
+
*/
|
|
36
|
+
sessionKey?: string;
|
|
26
37
|
/** Visible content tokens as they stream. */
|
|
27
38
|
onToken?: (token: string) => void;
|
|
28
39
|
signal?: AbortSignal;
|
|
@@ -82,6 +93,8 @@ export interface LLMProvider {
|
|
|
82
93
|
readonly name: string;
|
|
83
94
|
/** Run one completion turn. */
|
|
84
95
|
runTurn(input: TurnInput): Promise<TurnOutput>;
|
|
96
|
+
/** Drop whatever the provider cached for `sessionKey` (end of an agentic run). */
|
|
97
|
+
endSession?(sessionKey: string): Promise<void>;
|
|
85
98
|
/** Cancel an in-flight turn by request id, if the provider supports it. */
|
|
86
99
|
cancel?(requestId: string): Promise<void>;
|
|
87
100
|
}
|
|
@@ -120,6 +120,26 @@ describe('createQvacProvider.runTurn', () => {
|
|
|
120
120
|
expect(calls[0].generationParams).toEqual({ reasoning_budget: 128 });
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
+
it("sends reasoning_budget 0 when a turn asks for thinking 'off'", async () => {
|
|
124
|
+
const { fn, calls } = fakeCompletion({ contentText: 'ok', toolCalls: [], raw: { fullText: 'ok' } });
|
|
125
|
+
const p = createQvacProvider({ completion: fn as any, cancel: noopCancel, getModelId: () => 'm1', maxThinkingTokens: 128 });
|
|
126
|
+
await p.runTurn({ messages: [{ role: 'user', content: 'x' }], tools: [], thinking: 'off' });
|
|
127
|
+
expect(calls[0].generationParams).toEqual({ reasoning_budget: 0 });
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it('uses the session key as kvCache when sessionCache is on, and deletes it at the end', async () => {
|
|
131
|
+
const { fn, calls } = fakeCompletion({ contentText: 'ok', toolCalls: [], raw: { fullText: 'ok' } });
|
|
132
|
+
const deleted: unknown[] = [];
|
|
133
|
+
const on = createQvacProvider({ completion: fn as any, cancel: noopCancel, getModelId: () => 'm1', sessionCache: true, deleteCache: (async (p: unknown) => void deleted.push(p)) as any });
|
|
134
|
+
const off = createQvacProvider({ completion: fn as any, cancel: noopCancel, getModelId: () => 'm1' });
|
|
135
|
+
await on.runTurn({ messages: [{ role: 'user', content: 'x' }], tools: [], sessionKey: 'run-1' });
|
|
136
|
+
await off.runTurn({ messages: [{ role: 'user', content: 'x' }], tools: [], sessionKey: 'run-1' });
|
|
137
|
+
await on.endSession!('run-1');
|
|
138
|
+
expect(calls[0].kvCache).toBe('run-1');
|
|
139
|
+
expect(calls[1].kvCache).toBeUndefined();
|
|
140
|
+
expect(deleted).toEqual([{ kvCacheKey: 'run-1' }]);
|
|
141
|
+
});
|
|
142
|
+
|
|
123
143
|
it('keeps the reasoning budget below the output cap', async () => {
|
|
124
144
|
const { fn, calls } = fakeCompletion({ contentText: 'ok', toolCalls: [], raw: { fullText: 'ok' } });
|
|
125
145
|
const p = createQvacProvider({ completion: fn as any, cancel: noopCancel, getModelId: () => 'm1', defaultMaxTokens: 512, maxThinkingTokens: 512 });
|
package/src/qvac/provider.ts
CHANGED
|
@@ -24,6 +24,7 @@ import { toQvacTools } from './tools.js';
|
|
|
24
24
|
|
|
25
25
|
type CompletionFn = typeof QvacSdk.completion;
|
|
26
26
|
type CancelFn = typeof QvacSdk.cancel;
|
|
27
|
+
type DeleteCacheFn = typeof QvacSdk.deleteCache;
|
|
27
28
|
|
|
28
29
|
export interface QvacProviderOptions {
|
|
29
30
|
/** The SDK's `completion` (injected — see module docs). */
|
|
@@ -48,6 +49,14 @@ export interface QvacProviderOptions {
|
|
|
48
49
|
* unlimited reasoning.
|
|
49
50
|
*/
|
|
50
51
|
maxThinkingTokens?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Keep each agentic run in a QVAC KV-cache session (`kvCache: sessionKey`),
|
|
54
|
+
* so calls after the first send only the new message instead of re-reading
|
|
55
|
+
* the whole prompt. Needs `deleteCache` to drop the session at the end.
|
|
56
|
+
*/
|
|
57
|
+
sessionCache?: boolean;
|
|
58
|
+
/** The SDK's `deleteCache` (injected); used with `sessionCache`. */
|
|
59
|
+
deleteCache?: DeleteCacheFn;
|
|
51
60
|
/** Stream the model's `<think>` reasoning, when a host wants to surface it. */
|
|
52
61
|
onThinking?: (token: string) => void;
|
|
53
62
|
/**
|
|
@@ -96,7 +105,7 @@ export function createQvacProvider(options: QvacProviderOptions): LLMProvider {
|
|
|
96
105
|
const predict = input.maxTokens ?? options.defaultMaxTokens;
|
|
97
106
|
// A thinking budget at or above the output cap never binds: the model can
|
|
98
107
|
// spend the whole turn reasoning and return no answer. Keep half for it.
|
|
99
|
-
const thinkingCap = input.maxThinkingTokens ?? options.maxThinkingTokens;
|
|
108
|
+
const thinkingCap = input.thinking === 'off' ? 0 : (input.maxThinkingTokens ?? options.maxThinkingTokens);
|
|
100
109
|
const maxThinkingTokens =
|
|
101
110
|
thinkingCap !== undefined && predict !== undefined && thinkingCap >= predict
|
|
102
111
|
? Math.floor(predict / 2)
|
|
@@ -119,6 +128,7 @@ export function createQvacProvider(options: QvacProviderOptions): LLMProvider {
|
|
|
119
128
|
// Split `<think>` into separate thinkingDelta events so reasoning never
|
|
120
129
|
// pollutes the visible answer.
|
|
121
130
|
captureThinking: true,
|
|
131
|
+
...(options.sessionCache && input.sessionKey ? { kvCache: input.sessionKey } : {}),
|
|
122
132
|
...(generationParams ? { generationParams } : {}),
|
|
123
133
|
...(tools ? { tools } : {}),
|
|
124
134
|
} as unknown as Parameters<CompletionFn>[0]);
|
|
@@ -201,6 +211,15 @@ export function createQvacProvider(options: QvacProviderOptions): LLMProvider {
|
|
|
201
211
|
};
|
|
202
212
|
},
|
|
203
213
|
|
|
214
|
+
async endSession(sessionKey: string): Promise<void> {
|
|
215
|
+
if (!options.sessionCache || !options.deleteCache) return;
|
|
216
|
+
try {
|
|
217
|
+
await options.deleteCache({ kvCacheKey: sessionKey });
|
|
218
|
+
} catch (err) {
|
|
219
|
+
console.warn('[qvac] deleteCache failed:', err);
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
|
|
204
223
|
async cancel(requestId: string): Promise<void> {
|
|
205
224
|
// The cancel only lands once the server has begun the request; a same-tick
|
|
206
225
|
// cancel may race the begin and is logged as a no-match by the SDK.
|