@kaleidorg/mind 0.7.0 → 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 +96 -8
- 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/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 +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -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/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/config.d.ts +1 -1
- package/dist/qvac/config.js +1 -1
- package/dist/qvac/index.d.ts +1 -0
- package/dist/qvac/index.d.ts.map +1 -1
- package/dist/qvac/index.js +1 -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 +11 -0
- 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 +22 -8
- 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.map +1 -1
- package/dist/qvac/tools.d.ts +5 -0
- package/dist/qvac/tools.d.ts.map +1 -1
- package/dist/qvac/tools.js +10 -0
- package/dist/qvac/tools.js.map +1 -1
- package/dist/recipe/issue-asset.d.ts.map +1 -1
- package/dist/recipe/issue-asset.js +42 -16
- package/dist/recipe/issue-asset.js.map +1 -1
- 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/registry.js +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/mock-wallet.d.ts +24 -0
- package/dist/testing/mock-wallet.d.ts.map +1 -1
- package/dist/testing/mock-wallet.js +75 -6
- package/dist/testing/mock-wallet.js.map +1 -1
- package/dist/wallet/confirm.d.ts.map +1 -1
- package/dist/wallet/confirm.js +27 -9
- package/dist/wallet/confirm.js.map +1 -1
- package/package.json +6 -1
- package/skills/README.md +1 -0
- package/skills/kaleido-trading/SKILL.md +22 -28
- package/skills/kaleido-trading/references/api.md +3 -3
- package/skills/rgb-lightning-node/SKILL.md +32 -12
- 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 +37 -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/index.ts +10 -0
- package/src/qvac/models.ts +98 -0
- package/src/qvac/parse.test.ts +7 -0
- package/src/qvac/parse.ts +33 -1
- package/src/qvac/provider.test.ts +34 -1
- package/src/qvac/provider.ts +30 -13
- package/src/qvac/stream.ts +3 -5
- package/src/qvac/tools.ts +10 -0
- package/src/recipe/issue-asset.test.ts +39 -0
- package/src/recipe/issue-asset.ts +41 -13
- 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/mock-wallet.ts +73 -6
- package/src/wallet/confirm.ts +27 -9
package/src/wallet/confirm.ts
CHANGED
|
@@ -31,7 +31,7 @@ function isRef(s: string): boolean {
|
|
|
31
31
|
/** Shorten an address/invoice for speech; leave contact names intact. */
|
|
32
32
|
function shortRef(s: string): string {
|
|
33
33
|
const v = s.trim();
|
|
34
|
-
return isRef(v) ? `${v.slice(0, 6)}…${v.slice(-4)}` : v;
|
|
34
|
+
return isRef(v) && v.length > 12 ? `${v.slice(0, 6)}…${v.slice(-4)}` : v;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/** " over Spark" suffix for the call's layer (explicit arg wins, else the tool's). */
|
|
@@ -41,8 +41,26 @@ function over(name: string, args: Record<string, unknown>): string {
|
|
|
41
41
|
return label ? ` over ${label}` : '';
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
/** A finite number from a tool arg, else undefined (never NaN in a readback). */
|
|
45
|
+
function num(v: unknown): number | undefined {
|
|
46
|
+
if (typeof v === 'number') return Number.isFinite(v) ? v : undefined;
|
|
47
|
+
if (typeof v === 'string' && v.trim() !== '' && Number.isFinite(Number(v))) return Number(v);
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** A display string from a tool arg, stripped of stray quotes/commas a model may leave in. */
|
|
52
|
+
function label(v: unknown): string {
|
|
53
|
+
return String(v ?? '').trim().replace(/^[\s'"`,]+|[\s'"`,]+$/g, '') || '?';
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const sats = (v: unknown) => {
|
|
57
|
+
const n = num(v);
|
|
58
|
+
return n === undefined ? 'an unspecified amount of sats' : `${fmtNum(n)} sats`;
|
|
59
|
+
};
|
|
60
|
+
const asset = (amount: unknown, ticker: unknown) => {
|
|
61
|
+
const n = num(amount);
|
|
62
|
+
return n === undefined ? `an unspecified amount of ${label(ticker)}` : `${fmtNum(n)} ${label(ticker)}`;
|
|
63
|
+
};
|
|
46
64
|
|
|
47
65
|
/** A spoken confirmation ending in "Confirm?", or null for non-spend tools. */
|
|
48
66
|
export function confirmReadback(call: { name: string; arguments: Record<string, unknown> }): string | null {
|
|
@@ -68,18 +86,18 @@ export function confirmReadback(call: { name: string; arguments: Record<string,
|
|
|
68
86
|
case 'spark_pay_invoice':
|
|
69
87
|
return ask(`Pay Lightning invoice ${shortRef(String(a.invoice ?? ''))}${over(name, a)}`);
|
|
70
88
|
case 'rln_issue_asset': {
|
|
71
|
-
const
|
|
89
|
+
const named = a.name != null && a.ticker != null && label(a.name) !== label(a.ticker) ? ` (${label(a.name)})` : '';
|
|
72
90
|
return a.schema === 'UDA'
|
|
73
|
-
? ask(`Issue unique asset ${
|
|
74
|
-
: ask(`Issue ${asset(a.amount, a.ticker ?? a.name)}${
|
|
91
|
+
? ask(`Issue unique asset ${label(a.ticker ?? a.name)}${named} on RGB`)
|
|
92
|
+
: ask(`Issue ${asset(a.amount, a.ticker ?? a.name)}${named}, a new RGB asset`);
|
|
75
93
|
}
|
|
76
94
|
case 'rln_create_utxos':
|
|
77
|
-
return ask(`Create ${fmtNum(
|
|
95
|
+
return ask(`Create ${fmtNum(num(a.num) ?? 5)} RGB UTXOs on-chain${over(name, a)}`);
|
|
78
96
|
case 'rln_send_btc':
|
|
79
97
|
return ask(`Send ${sats(a.amount_sat)} on-chain to ${to('address')}${over(name, a)}`);
|
|
80
98
|
case 'rln_open_channel': {
|
|
81
99
|
const peer = shortRef(String(a.peer_pubkey_and_addr ?? '').split('@')[0] ?? '');
|
|
82
|
-
const withAsset = a.asset_id != null && a.asset_amount
|
|
100
|
+
const withAsset = a.asset_id != null && num(a.asset_amount) !== undefined ? ` with ${fmtNum(num(a.asset_amount)!)} of ${shortRef(String(a.asset_id))}` : '';
|
|
83
101
|
return ask(`Open a ${sats(a.capacity_sat)} channel to ${peer}${withAsset}`);
|
|
84
102
|
}
|
|
85
103
|
case 'rln_close_channel':
|
|
@@ -87,7 +105,7 @@ export function confirmReadback(call: { name: string; arguments: Record<string,
|
|
|
87
105
|
case 'rln_atomic_taker':
|
|
88
106
|
return ask(`Accept atomic swap ${shortRef(String(a.swapstring ?? ''))} on your node`);
|
|
89
107
|
case 'execute_swap':
|
|
90
|
-
return ask(`Swap ${
|
|
108
|
+
return ask(`Swap ${asset(a.amount, a.from_asset)} for ${label(a.to_asset)}`);
|
|
91
109
|
default:
|
|
92
110
|
// Unknown but spend-flagged tool → a generic, still-honest readback.
|
|
93
111
|
return getWalletTool(name)?.spend ? ask(`Confirm ${name.replace(/_/g, ' ')}`) : null;
|