@kaleidorg/mind 0.7.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/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 +59 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +196 -17
- 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 +34 -18
- 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 +33 -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 +14 -4
- package/dist/qvac/provider.d.ts.map +1 -1
- package/dist/qvac/provider.js +33 -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 +133 -3
- package/src/engine.ts +254 -19
- 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 +15 -17
- package/src/funnel.ts +34 -19
- 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 +35 -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 +54 -1
- package/src/qvac/provider.ts +49 -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
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Pay this Lightning invoice with my Liquid USDT" — a submarine swap on the
|
|
3
|
+
* KaleidoSwap /v2 maker:
|
|
4
|
+
*
|
|
5
|
+
* "pay lntbs1… with L-USDT" → kaleidoswap_submarine_create → 🔒 kaleidoswap_submarine_fund
|
|
6
|
+
* "paga lntbs1… con USDT su Liquid" → same
|
|
7
|
+
*
|
|
8
|
+
* One confirmation, shown after `create` so the user sees the exact amount the
|
|
9
|
+
* maker asked for (fees included) before anything is locked. Keys never reach
|
|
10
|
+
* the model; `fund` takes only the swap id. Opt-in: register via
|
|
11
|
+
* `Funnel.recipes` BEFORE the generic payments recipe on hosts that bind the
|
|
12
|
+
* submarine tools.
|
|
13
|
+
*/
|
|
14
|
+
import { formatSubmarineAmount } from '../submarine/contract.js';
|
|
15
|
+
const INVOICE = /\b(ln(?:bcrt|tbs|bc|tb)[0-9a-z]{20,})\b/i;
|
|
16
|
+
// Only an explicit Liquid asset: a bare "USDT" is RGB USDT (atomic recipe), not L-USDT.
|
|
17
|
+
const L_USDT = /\b(l-?usdt|usdt[- ]?l|liquid[- ]usdt|usdt (?:on|su|in) liquid|usdt liquid)\b/i;
|
|
18
|
+
const L_BTC = /\b(l-?btc|liquid[- ]btc|liquid bitcoin|btc (?:on|su|in) liquid|bitcoin (?:on|su|in) liquid)\b/i;
|
|
19
|
+
/** Tool results may arrive as JSON text (MCP) or objects (in-process). */
|
|
20
|
+
function obj(v) {
|
|
21
|
+
if (typeof v === 'string') {
|
|
22
|
+
try {
|
|
23
|
+
return JSON.parse(v);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return {};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return (v ?? {});
|
|
30
|
+
}
|
|
31
|
+
function shortInvoice(inv) {
|
|
32
|
+
return `${inv.slice(0, 10)}…${inv.slice(-6)}`;
|
|
33
|
+
}
|
|
34
|
+
export function extractSubmarinePay(text) {
|
|
35
|
+
const invoice = text.match(INVOICE)?.[1];
|
|
36
|
+
if (!invoice)
|
|
37
|
+
return null;
|
|
38
|
+
const from_asset = L_USDT.test(text) ? 'L-USDT' : L_BTC.test(text) ? 'L-BTC' : undefined;
|
|
39
|
+
if (!from_asset)
|
|
40
|
+
return null;
|
|
41
|
+
return { invoice, from_asset };
|
|
42
|
+
}
|
|
43
|
+
export const submarinePayRecipe = {
|
|
44
|
+
name: 'submarine-pay',
|
|
45
|
+
description: 'Pay a Lightning invoice from Liquid funds (L-USDT or L-BTC) via a KaleidoSwap submarine swap — one confirmation.',
|
|
46
|
+
match: (t) => INVOICE.test(t) && (L_USDT.test(t) || L_BTC.test(t)),
|
|
47
|
+
triggers: ['l-usdt', 'liquid usdt', 'l-btc', 'submarine'],
|
|
48
|
+
slots: [
|
|
49
|
+
{ name: 'invoice', type: 'string', description: 'BOLT11 Lightning invoice to pay', required: true },
|
|
50
|
+
{ name: 'from_asset', type: 'string', description: 'L-USDT or L-BTC', required: true },
|
|
51
|
+
],
|
|
52
|
+
extract: extractSubmarinePay,
|
|
53
|
+
confident: (s) => typeof s.invoice === 'string' && (s.from_asset === 'L-USDT' || s.from_asset === 'L-BTC'),
|
|
54
|
+
steps: [
|
|
55
|
+
{
|
|
56
|
+
tool: 'kaleidoswap_submarine_create',
|
|
57
|
+
as: 'swap',
|
|
58
|
+
args: (ctx) => ({ invoice: ctx.slots.invoice, from_asset: ctx.slots.from_asset }),
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
confirm: (ctx) => {
|
|
62
|
+
const swap = obj(ctx.results.swap);
|
|
63
|
+
const asset = String(swap.from_asset ?? ctx.slots.from_asset);
|
|
64
|
+
return `Pay Lightning invoice ${shortInvoice(String(ctx.slots.invoice))} with ${formatSubmarineAmount(asset, swap.expected_amount)} (fees included) through a KaleidoSwap submarine swap. Confirm?`;
|
|
65
|
+
},
|
|
66
|
+
final: {
|
|
67
|
+
tool: 'kaleidoswap_submarine_fund',
|
|
68
|
+
args: (ctx) => ({ swap_id: obj(ctx.results.swap).swap_id }),
|
|
69
|
+
},
|
|
70
|
+
summary: (ctx, final) => {
|
|
71
|
+
const swap = obj(ctx.results.swap);
|
|
72
|
+
const funded = obj(final);
|
|
73
|
+
const asset = String(swap.from_asset ?? ctx.slots.from_asset);
|
|
74
|
+
return `Locked ${formatSubmarineAmount(asset, swap.expected_amount)} in swap ${String(swap.swap_id)}` +
|
|
75
|
+
(funded.txid ? ` (tx ${String(funded.txid).slice(0, 12)}…)` : '') +
|
|
76
|
+
'. The maker pays the invoice once the lockup is seen — ask me for the swap status to follow it.';
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=submarine-pay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submarine-pay.js","sourceRoot":"","sources":["../../src/recipe/submarine-pay.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/registry.js
CHANGED
|
@@ -14,7 +14,7 @@ export const READ_REFERENCE_TOOL = 'read_skill_reference';
|
|
|
14
14
|
* ---
|
|
15
15
|
* name: portfolio-manager
|
|
16
16
|
* description: Rebalance BTC/USDT/XAUT to target allocations.
|
|
17
|
-
* tools: get_balance, kaleidoswap_get_quote,
|
|
17
|
+
* tools: get_balance, kaleidoswap_get_quote, kaleidoswap_atomic_init
|
|
18
18
|
* triggers: rebalance, allocation, portfolio
|
|
19
19
|
* ---
|
|
20
20
|
* <instructions…>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-aware skill selection: pick a skill that can actually act with the tools
|
|
3
|
+
* a host has, before any inference runs.
|
|
4
|
+
*/
|
|
5
|
+
import type { ToolDef } from '../types.js';
|
|
6
|
+
import type { Skill } from './types.js';
|
|
7
|
+
import { SkillRegistry } from './registry.js';
|
|
8
|
+
/**
|
|
9
|
+
* Whether a skill can act given the live tool names. A `requires-tools`
|
|
10
|
+
* frontmatter list must be fully live; otherwise at least one of the skill's
|
|
11
|
+
* scoped tools must be.
|
|
12
|
+
*/
|
|
13
|
+
export declare function skillAvailable(skill: Skill, present: ReadonlySet<string>): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Select the best skill for `query` among those that can act with `liveTools`.
|
|
16
|
+
* Skills whose `requires-tools` are missing are never picked; a skill with zero
|
|
17
|
+
* live tools is only a last resort.
|
|
18
|
+
*/
|
|
19
|
+
export declare function selectAvailableSkill(skills: SkillRegistry | readonly Skill[], query: string, liveTools: Iterable<string | Pick<ToolDef, 'name'>>): Skill | null;
|
|
20
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/skills/select.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAuB,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAOlF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,GAAG,SAAS,KAAK,EAAE,EACxC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAClD,KAAK,GAAG,IAAI,CAQd"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-aware skill selection: pick a skill that can actually act with the tools
|
|
3
|
+
* a host has, before any inference runs.
|
|
4
|
+
*/
|
|
5
|
+
import { READ_REFERENCE_TOOL, SkillRegistry } from './registry.js';
|
|
6
|
+
/**
|
|
7
|
+
* Whether a skill can act given the live tool names. A `requires-tools`
|
|
8
|
+
* frontmatter list must be fully live; otherwise at least one of the skill's
|
|
9
|
+
* scoped tools must be.
|
|
10
|
+
*/
|
|
11
|
+
export function skillAvailable(skill, present) {
|
|
12
|
+
const required = skill.metadata?.['requires-tools'];
|
|
13
|
+
if (required) {
|
|
14
|
+
return required.split(',').map((t) => t.trim()).filter(Boolean).every((t) => present.has(t));
|
|
15
|
+
}
|
|
16
|
+
if (!skill.tools?.length)
|
|
17
|
+
return true;
|
|
18
|
+
return skill.tools.some((t) => t !== READ_REFERENCE_TOOL && present.has(t));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Select the best skill for `query` among those that can act with `liveTools`.
|
|
22
|
+
* Skills whose `requires-tools` are missing are never picked; a skill with zero
|
|
23
|
+
* live tools is only a last resort.
|
|
24
|
+
*/
|
|
25
|
+
export function selectAvailableSkill(skills, query, liveTools) {
|
|
26
|
+
const list = skills instanceof SkillRegistry ? skills.list() : [...skills];
|
|
27
|
+
const present = new Set([...liveTools].map((t) => (typeof t === 'string' ? t : t.name)));
|
|
28
|
+
const usable = list.filter((s) => skillAvailable(s, present));
|
|
29
|
+
return (new SkillRegistry(usable).select(query) ??
|
|
30
|
+
new SkillRegistry(list.filter((s) => !s.metadata?.['requires-tools'] && !usable.includes(s))).select(query));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/skills/select.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnE;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,KAAY,EAAE,OAA4B;IACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAwC,EACxC,KAAa,EACb,SAAmD;IAEnD,MAAM,IAAI,GAAG,MAAM,YAAY,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,OAAO,CACL,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACvC,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAC5G,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical submarine-swap tool contract — pay a Lightning invoice from Liquid
|
|
3
|
+
* funds through the KaleidoSwap Boltz /v2 maker (kaleidoswap-maker-rs).
|
|
4
|
+
*
|
|
5
|
+
* The names match kaleido-mcp, which implements them over @kaleidorg/swap-sdk.
|
|
6
|
+
* Hosts with the SDK in-process (desktop sidecar, React Native) bind the same
|
|
7
|
+
* names with `bindSubmarineTools`.
|
|
8
|
+
*
|
|
9
|
+
* Keys and preimages never cross this contract: the host derives the refund key
|
|
10
|
+
* from its wallet mnemonic and persists the swap. `kaleidoswap_submarine_fund`
|
|
11
|
+
* — the only spend — takes nothing but the swap id, so the model cannot alter
|
|
12
|
+
* the amount, asset or lockup address it pays.
|
|
13
|
+
*
|
|
14
|
+
* Pure data — no deps, no fetch, RN-safe.
|
|
15
|
+
*/
|
|
16
|
+
import type { ToolDef } from '../types.js';
|
|
17
|
+
import { InProcessToolSource } from '../tools/in-process.js';
|
|
18
|
+
export interface SubmarineToolDef extends ToolDef {
|
|
19
|
+
/** Moves funds → confirmation-gated. */
|
|
20
|
+
spend?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** Assets a submarine swap can be paid from, as the maker names them. */
|
|
23
|
+
export declare const SUBMARINE_FROM_ASSETS: readonly ['L-USDT', 'L-BTC'];
|
|
24
|
+
export type SubmarineFromAsset = typeof SUBMARINE_FROM_ASSETS[number];
|
|
25
|
+
/** Smallest-unit decimals of each source asset (L-USDT: 8, L-BTC: sats). */
|
|
26
|
+
export declare const SUBMARINE_ASSET_DECIMALS: Record<SubmarineFromAsset, number>;
|
|
27
|
+
export declare const SUBMARINE_TOOLS: SubmarineToolDef[];
|
|
28
|
+
export declare const SUBMARINE_SPEND_TOOLS: Set<string>;
|
|
29
|
+
export declare function isSubmarineSpendTool(name: string): boolean;
|
|
30
|
+
export declare function getSubmarineTool(name: string): SubmarineToolDef | undefined;
|
|
31
|
+
/** Format a smallest-unit amount of a source asset for display ("52.3 L-USDT", "1,200 sats"). */
|
|
32
|
+
export declare function formatSubmarineAmount(asset: string, smallestUnits: unknown): string;
|
|
33
|
+
export type SubmarineHandler = (args: Record<string, unknown>) => Promise<unknown>;
|
|
34
|
+
export interface BindSubmarineOptions {
|
|
35
|
+
/** Skip tools without a handler instead of throwing (default false). */
|
|
36
|
+
allowMissing?: boolean;
|
|
37
|
+
/** ToolSource id for the registry (default 'submarine'). */
|
|
38
|
+
id?: string;
|
|
39
|
+
}
|
|
40
|
+
/** Bind the submarine contract to in-process handlers → an InProcessToolSource. */
|
|
41
|
+
export declare function bindSubmarineTools(handlers: Record<string, SubmarineHandler>, opts?: BindSubmarineOptions): InProcessToolSource;
|
|
42
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/submarine/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,MAAM,WAAW,gBAAiB,SAAQ,OAAO;IAC/C,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAQD,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,YAAI,QAAQ,EAAE,OAAO,CAAU,CAAC;AAClE,MAAM,MAAM,kBAAkB,GAAG,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAEtE,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAA+B,CAAC;AAIxG,eAAO,MAAM,eAAe,EAAE,gBAAgB,EAsB7C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAsE,CAAC;AAErH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAE3E;AAED,iGAAiG;AACjG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAOnF;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnF,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,IAAI,GAAE,oBAAyB,GAAG,mBAAmB,CAiBnI"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical submarine-swap tool contract — pay a Lightning invoice from Liquid
|
|
3
|
+
* funds through the KaleidoSwap Boltz /v2 maker (kaleidoswap-maker-rs).
|
|
4
|
+
*
|
|
5
|
+
* The names match kaleido-mcp, which implements them over @kaleidorg/swap-sdk.
|
|
6
|
+
* Hosts with the SDK in-process (desktop sidecar, React Native) bind the same
|
|
7
|
+
* names with `bindSubmarineTools`.
|
|
8
|
+
*
|
|
9
|
+
* Keys and preimages never cross this contract: the host derives the refund key
|
|
10
|
+
* from its wallet mnemonic and persists the swap. `kaleidoswap_submarine_fund`
|
|
11
|
+
* — the only spend — takes nothing but the swap id, so the model cannot alter
|
|
12
|
+
* the amount, asset or lockup address it pays.
|
|
13
|
+
*
|
|
14
|
+
* Pure data — no deps, no fetch, RN-safe.
|
|
15
|
+
*/
|
|
16
|
+
import { InProcessToolSource } from '../tools/in-process.js';
|
|
17
|
+
function t(name, description, properties = {}, required = [], spend = false) {
|
|
18
|
+
return { name, description, spend, requiresConfirmation: spend, parameters: { type: 'object', properties, required } };
|
|
19
|
+
}
|
|
20
|
+
/** Assets a submarine swap can be paid from, as the maker names them. */
|
|
21
|
+
export const SUBMARINE_FROM_ASSETS = ['L-USDT', 'L-BTC'];
|
|
22
|
+
/** Smallest-unit decimals of each source asset (L-USDT: 8, L-BTC: sats). */
|
|
23
|
+
export const SUBMARINE_ASSET_DECIMALS = { 'L-USDT': 8, 'L-BTC': 8 };
|
|
24
|
+
const swapId = { type: 'string', description: 'Swap id returned by kaleidoswap_submarine_create' };
|
|
25
|
+
export const SUBMARINE_TOOLS = [
|
|
26
|
+
t('kaleidoswap_submarine_pairs', 'List what can pay a Lightning invoice through a submarine swap (e.g. L-USDT on Liquid → Lightning BTC): rate, min/max, fees. No args.'),
|
|
27
|
+
t('kaleidoswap_submarine_create', 'Open a submarine swap that pays a Lightning (BOLT11) invoice from Liquid funds. No funds move: returns swap_id and expected_amount (source asset smallest unit). Then confirm with the user and call kaleidoswap_submarine_fund.', {
|
|
28
|
+
invoice: { type: 'string', description: 'BOLT11 Lightning invoice to pay (must carry an amount)' },
|
|
29
|
+
from_asset: { type: 'string', enum: [...SUBMARINE_FROM_ASSETS], description: 'Asset to pay with (default L-USDT)' },
|
|
30
|
+
}, ['invoice']),
|
|
31
|
+
t('kaleidoswap_submarine_fund', 'SPEND: lock the funds for a swap from kaleidoswap_submarine_create. Takes only the swap id — amount, asset and address come from the stored swap. The maker then pays the invoice.', { swap_id: swapId }, ['swap_id'],
|
|
32
|
+
/* spend */ true),
|
|
33
|
+
t('kaleidoswap_submarine_status', 'Status of a submarine swap. "transaction.claimed" = invoice paid, done. A failed funded swap needs a refund.', { swap_id: swapId }, ['swap_id']),
|
|
34
|
+
];
|
|
35
|
+
export const SUBMARINE_SPEND_TOOLS = new Set(SUBMARINE_TOOLS.filter((d) => d.spend).map((d) => d.name));
|
|
36
|
+
export function isSubmarineSpendTool(name) {
|
|
37
|
+
return SUBMARINE_SPEND_TOOLS.has(name);
|
|
38
|
+
}
|
|
39
|
+
export function getSubmarineTool(name) {
|
|
40
|
+
return SUBMARINE_TOOLS.find((d) => d.name === name);
|
|
41
|
+
}
|
|
42
|
+
/** Format a smallest-unit amount of a source asset for display ("52.3 L-USDT", "1,200 sats"). */
|
|
43
|
+
export function formatSubmarineAmount(asset, smallestUnits) {
|
|
44
|
+
const n = Number(smallestUnits);
|
|
45
|
+
if (!Number.isFinite(n))
|
|
46
|
+
return `${String(smallestUnits)} ${asset}`;
|
|
47
|
+
if (asset === 'L-BTC')
|
|
48
|
+
return `${n.toLocaleString('en-US')} sats of L-BTC`;
|
|
49
|
+
const decimals = SUBMARINE_ASSET_DECIMALS[asset] ?? 0;
|
|
50
|
+
const value = n / 10 ** decimals;
|
|
51
|
+
return `${value.toLocaleString('en-US', { maximumFractionDigits: decimals })} ${asset}`;
|
|
52
|
+
}
|
|
53
|
+
/** Bind the submarine contract to in-process handlers → an InProcessToolSource. */
|
|
54
|
+
export function bindSubmarineTools(handlers, opts = {}) {
|
|
55
|
+
const bound = [];
|
|
56
|
+
for (const def of SUBMARINE_TOOLS) {
|
|
57
|
+
const handler = handlers[def.name];
|
|
58
|
+
if (!handler) {
|
|
59
|
+
if (opts.allowMissing)
|
|
60
|
+
continue;
|
|
61
|
+
throw new Error(`bindSubmarineTools: no handler for "${def.name}"`);
|
|
62
|
+
}
|
|
63
|
+
bound.push({
|
|
64
|
+
name: def.name,
|
|
65
|
+
description: def.description,
|
|
66
|
+
parameters: def.parameters,
|
|
67
|
+
requiresConfirmation: def.requiresConfirmation,
|
|
68
|
+
handler,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return new InProcessToolSource(opts.id ?? 'submarine', bound);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/submarine/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { type WalletHandler } from '../wallet/contract.js';
|
|
12
12
|
import { ToolRegistry } from '../tools/registry.js';
|
|
13
|
+
import { type SubmarineHandler } from '../submarine/contract.js';
|
|
13
14
|
export interface SendRecord {
|
|
14
15
|
tool: string;
|
|
15
16
|
to: string;
|
|
@@ -34,6 +35,11 @@ export interface MockWalletOptions {
|
|
|
34
35
|
assets?: Record<string, number>;
|
|
35
36
|
/** Free colored UTXOs on the RLN node (issuance / RGB receive consume one). */
|
|
36
37
|
utxos?: number;
|
|
38
|
+
/** Liquid balances in smallest units (L-USDT: 8 decimals, L-BTC: sats) for submarine swaps. */
|
|
39
|
+
liquid?: {
|
|
40
|
+
'L-USDT': number;
|
|
41
|
+
'L-BTC': number;
|
|
42
|
+
};
|
|
37
43
|
}
|
|
38
44
|
export interface MockRgbAsset {
|
|
39
45
|
asset_id: string;
|
|
@@ -61,18 +67,36 @@ export declare class MockWallet {
|
|
|
61
67
|
assets: Record<string, number>;
|
|
62
68
|
contacts: MockContact[];
|
|
63
69
|
utxos: number;
|
|
70
|
+
liquid: {
|
|
71
|
+
'L-USDT': number;
|
|
72
|
+
'L-BTC': number;
|
|
73
|
+
};
|
|
74
|
+
/** Submarine swaps opened against the mock /v2 maker, by id. */
|
|
75
|
+
submarineSwaps: Record<string, {
|
|
76
|
+
from: 'L-USDT' | 'L-BTC';
|
|
77
|
+
invoice: string;
|
|
78
|
+
expected: number;
|
|
79
|
+
funded: boolean;
|
|
80
|
+
}>;
|
|
64
81
|
/** RGB assets the node knows about (seeded USDT/XAUT + anything issued). */
|
|
65
82
|
rgbAssets: MockRgbAsset[];
|
|
66
83
|
transfers: MockTransfer[];
|
|
67
84
|
sends: SendRecord[];
|
|
85
|
+
private readonly opts;
|
|
68
86
|
constructor(o?: MockWalletOptions);
|
|
69
87
|
private findAsset;
|
|
70
88
|
/** Issue a new RGB asset — mirrors the node: needs a free colored UTXO. */
|
|
71
89
|
issueAsset(args: Record<string, unknown>): MockRgbAsset;
|
|
72
90
|
totalSats(): number;
|
|
91
|
+
/** Back to the constructor state: balances, contacts, UTXOs, issued assets, history. */
|
|
73
92
|
reset(): void;
|
|
74
93
|
private send;
|
|
75
94
|
handlers(): Record<string, WalletHandler>;
|
|
95
|
+
/**
|
|
96
|
+
* The KaleidoSwap /v2 submarine contract against a toy maker: 0.5% fee, the
|
|
97
|
+
* invoice amount read from its BOLT11 human-readable part, L-USDT at `priceUsd`.
|
|
98
|
+
*/
|
|
99
|
+
submarineHandlers(): Record<string, SubmarineHandler>;
|
|
76
100
|
/** Bind the contract tools to this wallet (optionally overriding some — e.g. to inject). */
|
|
77
101
|
registry(overrides?: Partial<Record<string, WalletHandler>>): ToolRegistry;
|
|
78
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-wallet.d.ts","sourceRoot":"","sources":["../../src/testing/mock-wallet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"mock-wallet.d.ts","sourceRoot":"","sources":["../../src/testing/mock-wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { bindWalletTools } from '../wallet/contract.js';
|
|
12
12
|
import { ToolRegistry } from '../tools/registry.js';
|
|
13
|
+
import { bindSubmarineTools } from '../submarine/contract.js';
|
|
13
14
|
export class MockWallet {
|
|
14
15
|
priceUsd;
|
|
15
16
|
failRoute;
|
|
@@ -17,22 +18,29 @@ export class MockWallet {
|
|
|
17
18
|
assets;
|
|
18
19
|
contacts;
|
|
19
20
|
utxos;
|
|
21
|
+
liquid;
|
|
22
|
+
/** Submarine swaps opened against the mock /v2 maker, by id. */
|
|
23
|
+
submarineSwaps = {};
|
|
20
24
|
/** RGB assets the node knows about (seeded USDT/XAUT + anything issued). */
|
|
21
25
|
rgbAssets;
|
|
22
26
|
transfers = [];
|
|
23
27
|
sends = [];
|
|
28
|
+
opts;
|
|
24
29
|
constructor(o = {}) {
|
|
30
|
+
this.opts = o;
|
|
25
31
|
this.priceUsd = o.priceUsd ?? 65_000;
|
|
26
32
|
this.failRoute = o.failRoute ?? false;
|
|
27
|
-
|
|
28
|
-
this.
|
|
29
|
-
this.
|
|
33
|
+
// Copies: the wallet mutates its state, and reset() rebuilds from `o`.
|
|
34
|
+
this.balances = { ...(o.balances ?? { spark: 500_000, rln: 300_000, arkade: 200_000 }) };
|
|
35
|
+
this.assets = { ...(o.assets ?? { USDT: 25_000_000, XAUT: 0 }) };
|
|
36
|
+
this.contacts = o.contacts ? [...o.contacts] : [
|
|
30
37
|
{ name: 'bob', ln_address: 'bob@kaleidoswap.com' },
|
|
31
38
|
{ name: 'alice', ln_address: 'alice@kaleidoswap.com' },
|
|
32
39
|
{ name: 'john', ln_address: 'john.smith@kaleidoswap.com' },
|
|
33
40
|
{ name: 'john', ln_address: 'john.doe@kaleidoswap.com' }, // ambiguous on purpose
|
|
34
41
|
];
|
|
35
42
|
this.utxos = o.utxos ?? 5;
|
|
43
|
+
this.liquid = { ...(o.liquid ?? { 'L-USDT': 100 * 1e8, 'L-BTC': 200_000 }) };
|
|
36
44
|
this.rgbAssets = Object.keys(this.assets).map((ticker) => ({
|
|
37
45
|
asset_id: mockAssetId(ticker),
|
|
38
46
|
ticker,
|
|
@@ -77,9 +85,9 @@ export class MockWallet {
|
|
|
77
85
|
totalSats() {
|
|
78
86
|
return this.balances.spark + this.balances.rln + this.balances.arkade;
|
|
79
87
|
}
|
|
88
|
+
/** Back to the constructor state: balances, contacts, UTXOs, issued assets, history. */
|
|
80
89
|
reset() {
|
|
81
|
-
this
|
|
82
|
-
this.transfers = [];
|
|
90
|
+
Object.assign(this, new MockWallet(this.opts));
|
|
83
91
|
}
|
|
84
92
|
send(tool, rec) {
|
|
85
93
|
if (this.failRoute)
|
|
@@ -164,10 +172,61 @@ export class MockWallet {
|
|
|
164
172
|
},
|
|
165
173
|
};
|
|
166
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* The KaleidoSwap /v2 submarine contract against a toy maker: 0.5% fee, the
|
|
177
|
+
* invoice amount read from its BOLT11 human-readable part, L-USDT at `priceUsd`.
|
|
178
|
+
*/
|
|
179
|
+
submarineHandlers() {
|
|
180
|
+
return {
|
|
181
|
+
kaleidoswap_submarine_pairs: async () => ({
|
|
182
|
+
pairs: [
|
|
183
|
+
{ from: 'L-USDT', to: 'BTC', fees: { percentage: 0.5 }, limits: { minimal: 10 * 1e8, maximal: 1_000 * 1e8 } },
|
|
184
|
+
{ from: 'L-BTC', to: 'BTC', fees: { percentage: 0.5 }, limits: { minimal: 10_000, maximal: 1_000_000 } },
|
|
185
|
+
],
|
|
186
|
+
}),
|
|
187
|
+
kaleidoswap_submarine_create: async ({ invoice, from_asset }) => {
|
|
188
|
+
const from = (from_asset ?? 'L-USDT');
|
|
189
|
+
if (from !== 'L-USDT' && from !== 'L-BTC')
|
|
190
|
+
throw new Error(`Unsupported from_asset "${String(from_asset)}".`);
|
|
191
|
+
const sats = bolt11Sats(String(invoice));
|
|
192
|
+
if (sats == null)
|
|
193
|
+
throw new Error('invalid_invoice: the invoice must be BOLT11 with an amount.');
|
|
194
|
+
const withFee = sats * 1.005;
|
|
195
|
+
const expected = Math.ceil(from === 'L-USDT' ? (withFee / 1e8) * this.priceUsd * 1e8 : withFee);
|
|
196
|
+
const id = `sub${Object.keys(this.submarineSwaps).length + 1}`;
|
|
197
|
+
this.submarineSwaps[id] = { from, invoice: String(invoice), expected, funded: false };
|
|
198
|
+
return { swap_id: id, from_asset: from, expected_amount: String(expected), lockup_address: `tlq1qmock${id}` };
|
|
199
|
+
},
|
|
200
|
+
kaleidoswap_submarine_fund: async ({ swap_id }) => {
|
|
201
|
+
const swap = this.submarineSwaps[String(swap_id)];
|
|
202
|
+
if (!swap)
|
|
203
|
+
throw new Error(`No submarine swap "${String(swap_id)}" was created by this server.`);
|
|
204
|
+
if (swap.funded)
|
|
205
|
+
throw new Error(`Swap ${String(swap_id)} is already funded.`);
|
|
206
|
+
if (this.liquid[swap.from] < swap.expected)
|
|
207
|
+
throw new Error(`Insufficient ${swap.from} balance.`);
|
|
208
|
+
this.liquid[swap.from] -= swap.expected;
|
|
209
|
+
swap.funded = true;
|
|
210
|
+
this.sends.push({ tool: 'kaleidoswap_submarine_fund', to: swap.invoice, asset: swap.from, amount: swap.expected });
|
|
211
|
+
return { funded: true, swap_id, asset: swap.from, amount: String(swap.expected), txid: `mocktx${String(swap_id)}` };
|
|
212
|
+
},
|
|
213
|
+
kaleidoswap_submarine_status: async ({ swap_id }) => {
|
|
214
|
+
const swap = this.submarineSwaps[String(swap_id)];
|
|
215
|
+
if (!swap)
|
|
216
|
+
throw new Error(`invalid_swap_id: "${String(swap_id)}" is not a swap id`);
|
|
217
|
+
const status = swap.funded ? 'transaction.claimed' : 'swap.created';
|
|
218
|
+
return { swap_id, status, done: swap.funded, failed: false, funded: swap.funded };
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
}
|
|
167
222
|
/** Bind the contract tools to this wallet (optionally overriding some — e.g. to inject). */
|
|
168
223
|
registry(overrides) {
|
|
169
224
|
const h = { ...this.handlers(), ...(overrides ?? {}) };
|
|
170
|
-
|
|
225
|
+
const sub = { ...this.submarineHandlers(), ...(overrides ?? {}) };
|
|
226
|
+
return new ToolRegistry([
|
|
227
|
+
bindWalletTools(h, { layers: ['spark', 'rln', 'arkade', 'core'], allowMissing: true }),
|
|
228
|
+
bindSubmarineTools(sub, { allowMissing: true }),
|
|
229
|
+
]);
|
|
171
230
|
}
|
|
172
231
|
}
|
|
173
232
|
/** Deterministic fake RGB contract id per ticker (stable across runs). */
|
|
@@ -177,4 +236,14 @@ function mockAssetId(ticker) {
|
|
|
177
236
|
h = (h * 31 + c.charCodeAt(0)) >>> 0;
|
|
178
237
|
return `rgb:mock-${ticker.toLowerCase()}-${h.toString(36)}`;
|
|
179
238
|
}
|
|
239
|
+
/** Amount in sats from a BOLT11 human-readable part ("lntbs10u…" → 1000), or null. */
|
|
240
|
+
function bolt11Sats(invoice) {
|
|
241
|
+
const m = invoice.toLowerCase().match(/^ln(?:bcrt|tbs|bc|tb)(\d+)([munp])?1/);
|
|
242
|
+
if (!m)
|
|
243
|
+
return null;
|
|
244
|
+
const n = Number(m[1]);
|
|
245
|
+
const mult = { m: 1e5, u: 100, n: 0.1, p: 0.0001 }[m[2] ?? ''] ?? 1e8;
|
|
246
|
+
const sats = n * mult;
|
|
247
|
+
return sats >= 1 ? Math.round(sats) : null;
|
|
248
|
+
}
|
|
180
249
|
//# sourceMappingURL=mock-wallet.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-wallet.js","sourceRoot":"","sources":["../../src/testing/mock-wallet.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mock-wallet.js","sourceRoot":"","sources":["../../src/testing/mock-wallet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAyB,MAAM,0BAA0B,CAAC;AAqCrF,MAAM,OAAO,UAAU;IACrB,QAAQ,CAAS;IACjB,SAAS,CAAU;IACnB,QAAQ,CAAiD;IACzD,MAAM,CAAyB;IAC/B,QAAQ,CAAgB;IACxB,KAAK,CAAS;IACd,MAAM,CAAwC;IAC9C,gEAAgE;IAChE,cAAc,GAAqG,EAAE,CAAC;IACtH,4EAA4E;IAC5E,SAAS,CAAiB;IAC1B,SAAS,GAAmB,EAAE,CAAC;IAC/B,KAAK,GAAiB,EAAE,CAAC;IAER,IAAI,CAAoB;IAEzC,YAAY,CAAC,GAAsB,EAAE;QACnC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QACtC,uEAAuE;QACvE,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACzF,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACjE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE;YAClD,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,4BAA4B,EAAE;YAC1D,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,0BAA0B,EAAE,EAAE,uBAAuB;SAClF,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACzD,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;YAC7B,MAAM;YACN,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;YACnF,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,KAAc;YACtB,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAE;SACpC,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,SAAS,CAAC,GAAY;QAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,2EAA2E;IAC3E,UAAU,CAAC,IAA6B;QACtC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACjG,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAA2B,CAAC;QACrH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACvD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACrG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,kBAAkB,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAiB;YAC1B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;YAC7B,MAAM;YACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC;YACjC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;YACtC,MAAM;YACN,aAAa,EAAE,MAAM;SACtB,CAAC;QACF,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACvI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxE,CAAC;IACD,wFAAwF;IACxF,KAAK;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IAEO,IAAI,CAAC,IAAY,EAAE,GAA0E;QACnG,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChE,IAAI,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,EAAE,eAAe,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACzE,CAAC;IAED,QAAQ;QACN,OAAO;YACL,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACzB,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE;gBAC5B,MAAM,EAAE;oBACN,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;oBAC7D,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;oBAC3J,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;iBAChE;aACF,CAAC;YACF,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClE,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACpF,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpE,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;YACzE,kBAAkB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;YACtE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAG,IAAe,IAAI,KAAK,EAAE,CAAC;YAC5G,YAAY,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YAClG,eAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBAClC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;gBACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC;gBACzE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,OAAO,CAAC,MAAM,oBAAoB,IAAI,6BAA6B,CAAC,CAAC;gBAC3H,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC;YACrB,CAAC;YACD,qBAAqB,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,WAAW,IAAI,EAAE,EAAE,EAAE,CAAC;YAC/F,sBAAsB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YACpG,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YAC9J,eAAe,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7F,cAAc,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE;gBAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC9F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAI,KAAK;oBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtJ,OAAO,GAAG,CAAC;YACb,CAAC;YACD,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC5B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;aAClG,CAAC;YACF,kBAAkB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;gBAChD,MAAM,GAAG,GAAG,QAAQ,IAAI,KAAK,CAAC;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC/D,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpF,CAAC;YACD,gBAAgB,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;gBAClC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;gBACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3D,CAAC;YACD,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;YAClI,CAAC;YACD,cAAc,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC3D,QAAQ,EAAE,YAAY;gBACtB,UAAU;gBACV,QAAQ;gBACR,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;gBACtB,wDAAwD;gBACxD,cAAc,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;aAClI,CAAC;YACF,YAAY,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;gBACvD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,GAAG,UAAU,KAAK,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACpG,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACpE,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,OAAO;YACL,2BAA2B,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBACxC,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE;oBAC7G,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;iBACzG;aACF,CAAC;YACF,4BAA4B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC9D,MAAM,IAAI,GAAG,CAAC,UAAU,IAAI,QAAQ,CAAuB,CAAC;gBAC5D,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC9G,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzC,IAAI,IAAI,IAAI,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;gBACjG,MAAM,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAChG,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/D,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;gBACtF,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;YAChH,CAAC;YACD,0BAA0B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBAChD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;gBACjG,IAAI,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;gBAC/E,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC;gBAClG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;gBACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACtH,CAAC;YACD,4BAA4B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBAClD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClD,IAAI,CAAC,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBACrF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,CAAC;gBACpE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACpF,CAAC;SACF,CAAC;IACJ,CAAC;IAED,4FAA4F;IAC5F,QAAQ,CAAC,SAAkD;QACzD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAmC,CAAC;QACxF,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAsC,CAAC;QACtG,OAAO,IAAI,YAAY,CAAC;YACtB,eAAe,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YACtF,kBAAkB,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;CACF;AAED,0EAA0E;AAC1E,SAAS,WAAW,CAAC,MAAc;IACjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO,YAAY,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,sFAAsF;AACtF,SAAS,UAAU,CAAC,OAAe;IACjC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC9E,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC;IACtE,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;IACtB,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/wallet/confirm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../src/wallet/confirm.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2DH,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CA+CzG"}
|
package/dist/wallet/confirm.js
CHANGED
|
@@ -27,7 +27,7 @@ function isRef(s) {
|
|
|
27
27
|
/** Shorten an address/invoice for speech; leave contact names intact. */
|
|
28
28
|
function shortRef(s) {
|
|
29
29
|
const v = s.trim();
|
|
30
|
-
return isRef(v) ? `${v.slice(0, 6)}…${v.slice(-4)}` : v;
|
|
30
|
+
return isRef(v) && v.length > 12 ? `${v.slice(0, 6)}…${v.slice(-4)}` : v;
|
|
31
31
|
}
|
|
32
32
|
/** " over Spark" suffix for the call's layer (explicit arg wins, else the tool's). */
|
|
33
33
|
function over(name, args) {
|
|
@@ -35,8 +35,26 @@ function over(name, args) {
|
|
|
35
35
|
const label = layer ? LAYER_LABEL[layer] : undefined;
|
|
36
36
|
return label ? ` over ${label}` : '';
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
/** A finite number from a tool arg, else undefined (never NaN in a readback). */
|
|
39
|
+
function num(v) {
|
|
40
|
+
if (typeof v === 'number')
|
|
41
|
+
return Number.isFinite(v) ? v : undefined;
|
|
42
|
+
if (typeof v === 'string' && v.trim() !== '' && Number.isFinite(Number(v)))
|
|
43
|
+
return Number(v);
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
/** A display string from a tool arg, stripped of stray quotes/commas a model may leave in. */
|
|
47
|
+
function label(v) {
|
|
48
|
+
return String(v ?? '').trim().replace(/^[\s'"`,]+|[\s'"`,]+$/g, '') || '?';
|
|
49
|
+
}
|
|
50
|
+
const sats = (v) => {
|
|
51
|
+
const n = num(v);
|
|
52
|
+
return n === undefined ? 'an unspecified amount of sats' : `${fmtNum(n)} sats`;
|
|
53
|
+
};
|
|
54
|
+
const asset = (amount, ticker) => {
|
|
55
|
+
const n = num(amount);
|
|
56
|
+
return n === undefined ? `an unspecified amount of ${label(ticker)}` : `${fmtNum(n)} ${label(ticker)}`;
|
|
57
|
+
};
|
|
40
58
|
/** A spoken confirmation ending in "Confirm?", or null for non-spend tools. */
|
|
41
59
|
export function confirmReadback(call) {
|
|
42
60
|
const { name, arguments: a } = call;
|
|
@@ -60,18 +78,18 @@ export function confirmReadback(call) {
|
|
|
60
78
|
case 'spark_pay_invoice':
|
|
61
79
|
return ask(`Pay Lightning invoice ${shortRef(String(a.invoice ?? ''))}${over(name, a)}`);
|
|
62
80
|
case 'rln_issue_asset': {
|
|
63
|
-
const
|
|
81
|
+
const named = a.name != null && a.ticker != null && label(a.name) !== label(a.ticker) ? ` (${label(a.name)})` : '';
|
|
64
82
|
return a.schema === 'UDA'
|
|
65
|
-
? ask(`Issue unique asset ${
|
|
66
|
-
: ask(`Issue ${asset(a.amount, a.ticker ?? a.name)}${
|
|
83
|
+
? ask(`Issue unique asset ${label(a.ticker ?? a.name)}${named} on RGB`)
|
|
84
|
+
: ask(`Issue ${asset(a.amount, a.ticker ?? a.name)}${named}, a new RGB asset`);
|
|
67
85
|
}
|
|
68
86
|
case 'rln_create_utxos':
|
|
69
|
-
return ask(`Create ${fmtNum(
|
|
87
|
+
return ask(`Create ${fmtNum(num(a.num) ?? 5)} RGB UTXOs on-chain${over(name, a)}`);
|
|
70
88
|
case 'rln_send_btc':
|
|
71
89
|
return ask(`Send ${sats(a.amount_sat)} on-chain to ${to('address')}${over(name, a)}`);
|
|
72
90
|
case 'rln_open_channel': {
|
|
73
91
|
const peer = shortRef(String(a.peer_pubkey_and_addr ?? '').split('@')[0] ?? '');
|
|
74
|
-
const withAsset = a.asset_id != null && a.asset_amount
|
|
92
|
+
const withAsset = a.asset_id != null && num(a.asset_amount) !== undefined ? ` with ${fmtNum(num(a.asset_amount))} of ${shortRef(String(a.asset_id))}` : '';
|
|
75
93
|
return ask(`Open a ${sats(a.capacity_sat)} channel to ${peer}${withAsset}`);
|
|
76
94
|
}
|
|
77
95
|
case 'rln_close_channel':
|
|
@@ -79,7 +97,7 @@ export function confirmReadback(call) {
|
|
|
79
97
|
case 'rln_atomic_taker':
|
|
80
98
|
return ask(`Accept atomic swap ${shortRef(String(a.swapstring ?? ''))} on your node`);
|
|
81
99
|
case 'execute_swap':
|
|
82
|
-
return ask(`Swap ${
|
|
100
|
+
return ask(`Swap ${asset(a.amount, a.from_asset)} for ${label(a.to_asset)}`);
|
|
83
101
|
default:
|
|
84
102
|
// Unknown but spend-flagged tool → a generic, still-honest readback.
|
|
85
103
|
return getWalletTool(name)?.spend ? ask(`Confirm ${name.replace(/_/g, ' ')}`) : null;
|