@kaleidorg/mind 0.6.4 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +345 -0
- package/dist/autonomy/risk.js.map +1 -1
- package/dist/autonomy/run-state.d.ts.map +1 -1
- package/dist/autonomy/run-state.js.map +1 -1
- package/dist/autonomy/task-store.d.ts.map +1 -1
- package/dist/autonomy/task-store.js.map +1 -1
- package/dist/bitrefill/contract.js.map +1 -1
- package/dist/context/budget.js.map +1 -1
- package/dist/context/builder.d.ts.map +1 -1
- package/dist/context/builder.js.map +1 -1
- package/dist/context/compress.d.ts.map +1 -1
- package/dist/context/compress.js +1 -0
- package/dist/context/compress.js.map +1 -1
- package/dist/context/rgb-units.d.ts +18 -0
- package/dist/context/rgb-units.d.ts.map +1 -0
- package/dist/context/rgb-units.js +86 -0
- package/dist/context/rgb-units.js.map +1 -0
- package/dist/engine.d.ts +53 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +179 -17
- package/dist/engine.js.map +1 -1
- package/dist/evidence.d.ts +1 -1
- package/dist/evidence.d.ts.map +1 -1
- package/dist/evidence.js.map +1 -1
- package/dist/fastpath/fastpath.d.ts.map +1 -1
- package/dist/fastpath/fastpath.js.map +1 -1
- package/dist/flashnet/contract.js.map +1 -1
- package/dist/funnel.d.ts.map +1 -1
- package/dist/funnel.js +23 -4
- package/dist/funnel.js.map +1 -1
- package/dist/guards.d.ts +63 -0
- package/dist/guards.d.ts.map +1 -0
- package/dist/guards.js +284 -0
- package/dist/guards.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/kaleidoswap/contract.d.ts +3 -4
- package/dist/kaleidoswap/contract.d.ts.map +1 -1
- package/dist/kaleidoswap/contract.js +3 -17
- package/dist/kaleidoswap/contract.js.map +1 -1
- package/dist/knowledge/btc-map.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js.map +1 -1
- package/dist/lsps1/contract.js.map +1 -1
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js.map +1 -1
- package/dist/providers/openai.d.ts +64 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +233 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/types.d.ts +20 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/qvac/assistant.js.map +1 -1
- package/dist/qvac/config.d.ts +7 -7
- package/dist/qvac/config.d.ts.map +1 -1
- package/dist/qvac/config.js +1 -1
- package/dist/qvac/delegate.d.ts +2 -0
- package/dist/qvac/delegate.d.ts.map +1 -1
- package/dist/qvac/delegate.js +2 -0
- package/dist/qvac/delegate.js.map +1 -1
- package/dist/qvac/index.d.ts +2 -0
- package/dist/qvac/index.d.ts.map +1 -1
- package/dist/qvac/index.js +2 -0
- package/dist/qvac/index.js.map +1 -1
- package/dist/qvac/models.d.ts +31 -0
- package/dist/qvac/models.d.ts.map +1 -0
- package/dist/qvac/models.js +80 -0
- package/dist/qvac/models.js.map +1 -0
- package/dist/qvac/parse.d.ts +16 -2
- package/dist/qvac/parse.d.ts.map +1 -1
- package/dist/qvac/parse.js +29 -7
- package/dist/qvac/parse.js.map +1 -1
- package/dist/qvac/provider.d.ts +5 -4
- package/dist/qvac/provider.d.ts.map +1 -1
- package/dist/qvac/provider.js +30 -21
- package/dist/qvac/provider.js.map +1 -1
- package/dist/qvac/stream.d.ts +3 -5
- package/dist/qvac/stream.d.ts.map +1 -1
- package/dist/qvac/stream.js +29 -1
- package/dist/qvac/stream.js.map +1 -1
- package/dist/qvac/tools.d.ts +37 -0
- package/dist/qvac/tools.d.ts.map +1 -0
- package/dist/qvac/tools.js +94 -0
- package/dist/qvac/tools.js.map +1 -0
- package/dist/qvac/voice.js.map +1 -1
- package/dist/rag/retriever.d.ts.map +1 -1
- package/dist/rag/tool.js.map +1 -1
- package/dist/rag/vector-store.d.ts.map +1 -1
- package/dist/rag/vector-store.js.map +1 -1
- package/dist/recipe/issue-asset.d.ts +16 -0
- package/dist/recipe/issue-asset.d.ts.map +1 -0
- package/dist/recipe/issue-asset.js +120 -0
- package/dist/recipe/issue-asset.js.map +1 -0
- package/dist/recipe/runner.d.ts.map +1 -1
- package/dist/recipe/runner.js +1 -0
- package/dist/recipe/runner.js.map +1 -1
- package/dist/recipe/submarine-pay.d.ts +17 -0
- package/dist/recipe/submarine-pay.d.ts.map +1 -0
- package/dist/recipe/submarine-pay.js +79 -0
- package/dist/recipe/submarine-pay.js.map +1 -0
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +1 -1
- package/dist/skills/registry.js.map +1 -1
- package/dist/skills/select.d.ts +20 -0
- package/dist/skills/select.d.ts.map +1 -0
- package/dist/skills/select.js +32 -0
- package/dist/skills/select.js.map +1 -0
- package/dist/submarine/contract.d.ts +42 -0
- package/dist/submarine/contract.d.ts.map +1 -0
- package/dist/submarine/contract.js +73 -0
- package/dist/submarine/contract.js.map +1 -0
- package/dist/testing/index.d.ts +14 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +12 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-wallet.d.ts +103 -0
- package/dist/testing/mock-wallet.d.ts.map +1 -0
- package/dist/testing/mock-wallet.js +249 -0
- package/dist/testing/mock-wallet.js.map +1 -0
- package/dist/testing/scripted-provider.d.ts +17 -0
- package/dist/testing/scripted-provider.d.ts.map +1 -0
- package/dist/testing/scripted-provider.js +26 -0
- package/dist/testing/scripted-provider.js.map +1 -0
- package/dist/tools/in-process.d.ts.map +1 -1
- package/dist/tools/mcp.d.ts.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js.map +1 -1
- package/dist/wallet/confirm.d.ts.map +1 -1
- package/dist/wallet/confirm.js +43 -5
- package/dist/wallet/confirm.js.map +1 -1
- package/dist/wallet/contract.d.ts.map +1 -1
- package/dist/wallet/contract.js +36 -0
- package/dist/wallet/contract.js.map +1 -1
- package/package.json +15 -5
- package/skills/README.md +2 -1
- package/skills/kaleido-node/SKILL.md +63 -0
- package/skills/kaleido-trading/SKILL.md +34 -27
- package/skills/kaleido-trading/references/api.md +61 -0
- package/skills/kaleido-trading/references/assets.md +57 -0
- package/skills/kaleido-trading/references/atomic.md +93 -0
- package/skills/paid-data/SKILL.md +59 -6
- package/skills/rgb-lightning-node/SKILL.md +142 -17
- package/skills/spark-wallet/SKILL.md +1 -0
- package/skills/submarine-swaps/SKILL.md +48 -0
- package/src/context/compress.ts +1 -0
- package/src/context/rgb-units.test.ts +42 -0
- package/src/context/rgb-units.ts +89 -0
- package/src/engine.test.ts +94 -3
- package/src/engine.ts +234 -19
- package/src/funnel.mind.test.ts +4 -2
- package/src/funnel.ts +23 -4
- package/src/guards.test.ts +399 -0
- package/src/guards.ts +299 -0
- package/src/index.ts +40 -1
- package/src/kaleidoswap/contract.test.ts +8 -16
- package/src/kaleidoswap/contract.ts +4 -32
- package/src/providers/openai.test.ts +127 -0
- package/src/providers/openai.ts +282 -0
- package/src/providers/types.ts +22 -0
- package/src/qvac/config.ts +1 -1
- package/src/qvac/delegate.ts +2 -0
- package/src/qvac/index.ts +12 -0
- package/src/qvac/models.ts +98 -0
- package/src/qvac/parse.test.ts +7 -0
- package/src/qvac/parse.ts +38 -3
- package/src/qvac/provider.test.ts +72 -1
- package/src/qvac/provider.ts +40 -27
- package/src/qvac/stream.test.ts +28 -0
- package/src/qvac/stream.ts +33 -6
- package/src/qvac/tools.test.ts +86 -0
- package/src/qvac/tools.ts +116 -0
- package/src/recipe/issue-asset.test.ts +131 -0
- package/src/recipe/issue-asset.ts +123 -0
- package/src/recipe/runner.ts +1 -0
- package/src/recipe/submarine-pay.test.ts +87 -0
- package/src/recipe/submarine-pay.ts +78 -0
- package/src/skills/registry.ts +1 -1
- package/src/skills/select.ts +41 -0
- package/src/submarine/contract.ts +112 -0
- package/src/testing/index.ts +14 -0
- package/src/testing/mock-wallet.ts +278 -0
- package/src/testing/scripted-provider.ts +37 -0
- package/src/wallet/confirm.test.ts +16 -0
- package/src/wallet/confirm.ts +43 -5
- package/src/wallet/contract.test.ts +38 -0
- package/src/wallet/contract.ts +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
# @kaleidorg/mind
|
|
2
|
+
|
|
3
|
+
A local-first reasoning and function-calling engine for Bitcoin wallets. You
|
|
4
|
+
bring a model (usually [QVAC](https://www.npmjs.com/package/@qvac/sdk) running
|
|
5
|
+
on-device) and some tools; `@kaleidorg/mind` runs the agent loop, routes
|
|
6
|
+
requests through skills and recipes, and stops before any spend until your app
|
|
7
|
+
confirms it.
|
|
8
|
+
|
|
9
|
+
- **Pure TypeScript, no runtime dependencies.** It runs in Node, Bare and React
|
|
10
|
+
Native. `@qvac/sdk` is an optional peer and is only imported as types.
|
|
11
|
+
- **One tool contract, many transports.** Wallet tools (`spark_*`, `rln_*`,
|
|
12
|
+
`arkade_*`, `liquid_*` plus router helpers) have fixed names and JSON schemas.
|
|
13
|
+
Bind them to in-process handlers, an MCP server or a CLI. The model sees the
|
|
14
|
+
same tools on every surface.
|
|
15
|
+
- **Confirm-before-spend is built in.** Every tool that moves funds is flagged
|
|
16
|
+
`requiresConfirmation`. The engine calls your `onConfirm` and does not run
|
|
17
|
+
the tool until you approve.
|
|
18
|
+
- **Small-model friendly.** Skills scope each turn to a few tools. Recipes run
|
|
19
|
+
multi-step flows with roughly one inference. A fast path answers simple reads
|
|
20
|
+
with no inference at all.
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm i @kaleidorg/mind @qvac/sdk
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
You need `@qvac/sdk` only to run QVAC models. The engine accepts any
|
|
29
|
+
`LLMProvider`: `@kaleidorg/mind/openai` talks to any OpenAI-compatible server
|
|
30
|
+
(see below), and `@kaleidorg/mind/testing` includes a scripted provider that
|
|
31
|
+
needs no model. To connect MCP servers, also install
|
|
32
|
+
`@modelcontextprotocol/sdk`.
|
|
33
|
+
|
|
34
|
+
| `@qvac/sdk` | Status |
|
|
35
|
+
|---|---|
|
|
36
|
+
| 0.19 – 0.21 | Supported (tested with 0.21.0). There is no P2P delegated inference: QVAC removed `startQVACProvider` / `loadModel({ delegate })` in 0.19. |
|
|
37
|
+
| 0.13.1 – 0.18 | Supported, including P2P delegation (`buildDelegateConfig`, `allowListFirewall`). |
|
|
38
|
+
|
|
39
|
+
The Qwen3.5 model constants used below (`QWEN3_5_*_MULTIMODAL_Q4_K_M`) exist in
|
|
40
|
+
every supported `@qvac/sdk` version (0.13.1+).
|
|
41
|
+
|
|
42
|
+
## Models
|
|
43
|
+
|
|
44
|
+
We recommend Qwen3.5. Qwen3 (0.6B–4B) and Hermes 3 kept mangling the arguments of
|
|
45
|
+
multi-field wallet calls such as `rln_issue_asset`, so they are no longer in the
|
|
46
|
+
catalog; any GGUF still loads by path or Hugging Face URL.
|
|
47
|
+
|
|
48
|
+
| Model | `@qvac/sdk` constant | Download | RAM | Use |
|
|
49
|
+
|---|---|---|---|---|
|
|
50
|
+
| Qwen3.5 0.8B | `QWEN3_5_0_8B_MULTIMODAL_Q4_K_M` | 0.53 GB | ~1.5 GB | Smoke tests only; loops on wallet actions |
|
|
51
|
+
| Qwen3.5 2B | `QWEN3_5_2B_MULTIMODAL_Q4_K_M` | 1.3 GB | ~3 GB | **Default.** All 7 signet RGB wallet tasks passed, 45–150 s per question on an M4 |
|
|
52
|
+
| Qwen3.5 4B | `QWEN3_5_4B_MULTIMODAL_Q4_K_M` | 2.7 GB | ~5 GB | Same correctness, ~2× slower (105–330 s) |
|
|
53
|
+
| Qwen3.5 9B | `QWEN3_5_9B_MULTIMODAL_Q4_K_M` | 5.7 GB | ~9 GB | 16 GB machines; slow for chat (180–690 s) |
|
|
54
|
+
| Qwen3.6 35B-A3B (MoE) | `QWEN3_6_35B_A3B_MULTIMODAL_Q4_K_M` | 22 GB | ~26 GB | 32 GB+ machines |
|
|
55
|
+
|
|
56
|
+
The same list is exported as data from `@kaleidorg/mind/qvac` (`QWEN35_MODELS`,
|
|
57
|
+
`DEFAULT_MODEL_ID`, `DEFAULT_QVAC_MODEL`, `DEFAULT_SMALL_DEVICE_QVAC_MODEL`).
|
|
58
|
+
Only the text weights are loaded; the vision projector is not needed.
|
|
59
|
+
|
|
60
|
+
## Quickstart (5 minutes)
|
|
61
|
+
|
|
62
|
+
This example loads a small GGUF model through QVAC, registers one tool and one
|
|
63
|
+
skill, and runs one turn.
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
// quickstart.ts — run with: npx tsx quickstart.ts
|
|
67
|
+
import { completion, cancel, loadModel, unloadModel, close, QWEN3_5_2B_MULTIMODAL_Q4_K_M } from '@qvac/sdk';
|
|
68
|
+
import { Engine, InProcessToolSource, SkillRegistry, ToolRegistry } from '@kaleidorg/mind';
|
|
69
|
+
import { createQvacProvider } from '@kaleidorg/mind/qvac';
|
|
70
|
+
|
|
71
|
+
// 1. Model: Qwen3.5 2B Q4 (~1.3 GB, cached after the first download).
|
|
72
|
+
const modelId = await loadModel({
|
|
73
|
+
modelSrc: QWEN3_5_2B_MULTIMODAL_Q4_K_M,
|
|
74
|
+
modelConfig: { ctx_size: 4096, tools: true }, // `tools: true` turns on tool calling
|
|
75
|
+
});
|
|
76
|
+
const provider = createQvacProvider({ completion, cancel, getModelId: () => modelId, defaultTemperature: 0.2 });
|
|
77
|
+
|
|
78
|
+
// 2. Tool: a JSON-Schema definition plus a handler that runs in your process.
|
|
79
|
+
const tools = new ToolRegistry([
|
|
80
|
+
new InProcessToolSource('demo', [
|
|
81
|
+
{
|
|
82
|
+
name: 'get_btc_price',
|
|
83
|
+
description: 'Get the current BTC price in a fiat currency.',
|
|
84
|
+
parameters: {
|
|
85
|
+
type: 'object',
|
|
86
|
+
properties: { fiat: { type: 'string', description: "ISO code, e.g. 'EUR'" } },
|
|
87
|
+
required: ['fiat'],
|
|
88
|
+
},
|
|
89
|
+
handler: async ({ fiat }) => ({ fiat, price: 60_000 }),
|
|
90
|
+
},
|
|
91
|
+
]),
|
|
92
|
+
]);
|
|
93
|
+
|
|
94
|
+
// 3. Skill: a SKILL.md playbook that scopes the model to the tools it needs.
|
|
95
|
+
const skills = new SkillRegistry().addMarkdown(`---
|
|
96
|
+
name: price-check
|
|
97
|
+
description: Answer questions about the bitcoin price.
|
|
98
|
+
tools: get_btc_price
|
|
99
|
+
triggers: price, btc, bitcoin
|
|
100
|
+
---
|
|
101
|
+
Call get_btc_price, then answer in one sentence with the number.`);
|
|
102
|
+
|
|
103
|
+
// 4. A turn.
|
|
104
|
+
const question = 'What is bitcoin worth in EUR?';
|
|
105
|
+
const engine = new Engine({ provider, tools });
|
|
106
|
+
// composeSkill picks a skill that can act with these tools, then composes its prompt.
|
|
107
|
+
const { system, allowedTools } = await engine.composeSkill(skills, question, 'You are a concise assistant.');
|
|
108
|
+
const result = await engine.runAgentic(
|
|
109
|
+
[{ role: 'system', content: system }, { role: 'user', content: question }],
|
|
110
|
+
{ allowedTools },
|
|
111
|
+
);
|
|
112
|
+
console.log(result.text); // "Bitcoin is at 60,000 EUR."
|
|
113
|
+
|
|
114
|
+
await unloadModel({ modelId });
|
|
115
|
+
await close();
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
A runnable copy (with a `--mock` mode) is in
|
|
119
|
+
[`examples/node-minimal`](https://github.com/kaleidoswap/kaleido-mind/tree/main/examples/node-minimal).
|
|
120
|
+
|
|
121
|
+
## Models you already serve
|
|
122
|
+
|
|
123
|
+
`createOpenAICompatibleProvider` runs the same engine on any server that speaks
|
|
124
|
+
the OpenAI Chat Completions API with tool calling: Ollama, LM Studio, llama.cpp
|
|
125
|
+
`llama-server`, vLLM, `qvac serve` or a hosted API. It has no dependencies
|
|
126
|
+
(it uses `fetch`).
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
import { createOpenAICompatibleProvider } from '@kaleidorg/mind/openai';
|
|
130
|
+
|
|
131
|
+
const provider = createOpenAICompatibleProvider({
|
|
132
|
+
baseUrl: 'http://localhost:11434/v1', // Ollama
|
|
133
|
+
model: 'qwen3.5:2b',
|
|
134
|
+
apiKey: process.env.OPENAI_API_KEY, // optional; sent as a bearer token
|
|
135
|
+
defaultTemperature: 0.1,
|
|
136
|
+
defaultMaxTokens: 1536,
|
|
137
|
+
});
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
It streams tokens, forwards `toolChoice` as `tool_choice`, reports arguments
|
|
141
|
+
that are not valid JSON as `toolErrors` (so the engine retries once), and
|
|
142
|
+
aborts the request on `signal`. Reasoning deltas (`reasoning_content`) go to
|
|
143
|
+
`onThinking`. Server-specific fields go in `extraBody`.
|
|
144
|
+
|
|
145
|
+
## Subpath exports
|
|
146
|
+
|
|
147
|
+
| Import | What it gives you | Runtime |
|
|
148
|
+
|---|---|---|
|
|
149
|
+
| `@kaleidorg/mind` | `Engine`, `Funnel` (fast-path → recipe → agent), `ToolRegistry`, `InProcessToolSource`, `SkillRegistry`, wallet / KaleidoSwap / LSPS1 / Bitrefill / Flashnet contracts and binders, `confirmReadback`, recipes, memory, RAG, context budgeting, L402 and CLI tool sources | Any (RN-safe) |
|
|
150
|
+
| `@kaleidorg/mind/qvac` | `createQvacProvider`, `toQvacTools`, `consumeRun`, voice (`createQvacVoice`, `runVoiceAssistant`), model configs, delegation helpers | Any; you inject the SDK functions |
|
|
151
|
+
| `@kaleidorg/mind/openai` | `createOpenAICompatibleProvider` for Ollama, LM Studio, llama.cpp, vLLM, hosted APIs | Any with `fetch` |
|
|
152
|
+
| `@kaleidorg/mind/mcp` | `McpToolSource`: tools from an MCP server over stdio or streamable HTTP | Node |
|
|
153
|
+
| `@kaleidorg/mind/skills` | `loadSkillsDir`, `loadSkillFromDir`, `packagedSkillsDir()` (the 14 bundled skills) | Node (fs) |
|
|
154
|
+
| `@kaleidorg/mind/testing` | `MockWallet` (stateful fake wallet bound to the real contract), `scriptedProvider` | Any |
|
|
155
|
+
| `@kaleidorg/mind/logger` | `TurnLogger` for JSONL turn logs with PII masking | Any |
|
|
156
|
+
|
|
157
|
+
React Native hosts can't read skill folders from disk. Bundle them at build time
|
|
158
|
+
with `node node_modules/@kaleidorg/mind/scripts/bundle-skills.mjs --out skills.bundle.json <dirs…>`,
|
|
159
|
+
then load the bundle with `skillsFromBundle()`.
|
|
160
|
+
|
|
161
|
+
## Writing a tool
|
|
162
|
+
|
|
163
|
+
A tool is a `ToolDef` (`name`, `description`, `parameters` as JSON Schema) plus a
|
|
164
|
+
handler. Put tools in a `ToolSource` and give a `ToolRegistry` to the engine.
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
new InProcessToolSource('my-tools', [
|
|
168
|
+
{
|
|
169
|
+
name: 'send_tip',
|
|
170
|
+
description: 'Tip a creator over Lightning.',
|
|
171
|
+
parameters: {
|
|
172
|
+
type: 'object',
|
|
173
|
+
properties: { to: { type: 'string' }, amount_sats: { type: 'number' } },
|
|
174
|
+
required: ['to', 'amount_sats'],
|
|
175
|
+
},
|
|
176
|
+
requiresConfirmation: true, // the engine calls onConfirm first
|
|
177
|
+
handler: async ({ to, amount_sats }) => myWallet.pay(to, amount_sats),
|
|
178
|
+
},
|
|
179
|
+
]);
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Tips for small models:
|
|
183
|
+
|
|
184
|
+
- Keep descriptions short and say when to use the tool.
|
|
185
|
+
- Return compact JSON. Pass `compressToolOutput: true` to `Engine` / `Funnel` to
|
|
186
|
+
trim large results before they reach the model's context.
|
|
187
|
+
- If a handler throws, the engine passes `{ error }` to the model. It never
|
|
188
|
+
crashes the loop.
|
|
189
|
+
|
|
190
|
+
## Writing a skill
|
|
191
|
+
|
|
192
|
+
A skill is a folder with a `SKILL.md`, using the Agent Skills format: YAML
|
|
193
|
+
frontmatter plus a markdown playbook. It can also have `references/*.md` files
|
|
194
|
+
that the model loads on demand through `read_skill_reference`.
|
|
195
|
+
|
|
196
|
+
```markdown
|
|
197
|
+
---
|
|
198
|
+
name: tipping
|
|
199
|
+
description: Tip creators. Use when the user says tip, zap or send a tip.
|
|
200
|
+
tools: resolve_contact, send_tip
|
|
201
|
+
triggers: tip, zap
|
|
202
|
+
---
|
|
203
|
+
1. Resolve the name with resolve_contact.
|
|
204
|
+
2. Call send_tip with the resolved address and the amount in sats.
|
|
205
|
+
Never guess an address.
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
```ts
|
|
209
|
+
import { loadSkillsDir, packagedSkillsDir } from '@kaleidorg/mind/skills';
|
|
210
|
+
const skills = new SkillRegistry([...loadSkillsDir(packagedSkillsDir()), ...loadSkillsDir('./skills')]);
|
|
211
|
+
// Skips skills whose tools the engine's registry lacks (e.g. spark-wallet with
|
|
212
|
+
// no Spark tools), so the model never runs inside a skill it can't act in.
|
|
213
|
+
const { skill, system, allowedTools } = await engine.composeSkill(skills, userText, baseSystem);
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
`skills.select()` alone only scores keywords; prefer `engine.composeSkill()`
|
|
217
|
+
(or `selectAvailableSkill(skills, text, liveToolNames)`). The `Funnel` does this
|
|
218
|
+
for you.
|
|
219
|
+
|
|
220
|
+
## The wallet tool contract
|
|
221
|
+
|
|
222
|
+
`WALLET_TOOLS` is the single source of truth for wallet tool names, schemas and
|
|
223
|
+
spend flags. Use `walletTools({ layers })` to select tools,
|
|
224
|
+
`bindWalletTools(handlers, opts)` to get an `InProcessToolSource`, and
|
|
225
|
+
`isSpendTool(name)` / `SPEND_TOOLS` to check spend flags.
|
|
226
|
+
|
|
227
|
+
| Layer | Tools |
|
|
228
|
+
|---|---|
|
|
229
|
+
| Spark | `spark_get_balance`, `spark_get_address`, `spark_get_onchain_address`, `spark_create_invoice`, `spark_pay_invoice` 🔒, `spark_send` 🔒 |
|
|
230
|
+
| RLN / RGB | `rln_get_node_info`, `rln_get_balances`, `rln_list_assets`, `rln_get_asset_balance`, `rln_list_transfers`, `rln_refresh_transfers`, `rln_get_address`, `rln_list_channels`, `rln_list_payments`, `rln_list_swaps`, `rln_get_swap`, `rln_get_channel_id`, `rln_connect_peer`, `rln_create_ln_invoice`, `rln_create_rgb_invoice`, `rln_pay_invoice` 🔒, `rln_send_asset` 🔒, `rln_send_btc` 🔒, `rln_open_channel` 🔒, `rln_close_channel` 🔒, `rln_atomic_taker` 🔒, `rln_create_utxos` 🔒, `rln_issue_asset` 🔒 |
|
|
231
|
+
| Arkade | `arkade_get_balance`, `arkade_get_address`, `arkade_send` 🔒 |
|
|
232
|
+
| Liquid | `liquid_get_balance`, `liquid_create_invoice`, `liquid_send` 🔒 |
|
|
233
|
+
| Router | `get_balances`, `resolve_contact`, `get_price`, `fiat_to_sats`, `get_swap_quote`, `execute_swap` 🔒, `send_payment` 🔒, `create_invoice` |
|
|
234
|
+
|
|
235
|
+
🔒 = `requiresConfirmation`. `confirmReadback(call)` turns a pending call into a
|
|
236
|
+
deterministic sentence for your confirm sheet, e.g. *"Send 5 USDT to utxob:…ij90
|
|
237
|
+
over RLN. Confirm?"*.
|
|
238
|
+
|
|
239
|
+
### Agent guards
|
|
240
|
+
|
|
241
|
+
The engine and funnel check the model's tool use before anything reaches the
|
|
242
|
+
user:
|
|
243
|
+
|
|
244
|
+
- **Schema validation.** Arguments are checked against the tool's JSON Schema
|
|
245
|
+
(or Zod schema) before `onConfirm`: required fields, types, enums, ranges,
|
|
246
|
+
finite numbers. Invalid calls go back to the model as a tool error and the
|
|
247
|
+
user is never asked. `onConfirm` receives the validated arguments plus a
|
|
248
|
+
`summary` readback.
|
|
249
|
+
- **Repeated calls.** A second identical call (same name and arguments) is not
|
|
250
|
+
re-run; the model gets the earlier result and is told to answer. A third
|
|
251
|
+
forces a final answer with no tools.
|
|
252
|
+
- **Declines end the turn.** When the user declines every call in a turn, the
|
|
253
|
+
run ends with a fixed reply ("Cancelled — you declined: Create 5 RGB UTXOs
|
|
254
|
+
on-chain over RLN. Nothing was sent or changed.") and no further inference.
|
|
255
|
+
The tool result in history is the same for every tool:
|
|
256
|
+
`{ status: 'cancelled_by_user', declined_by: 'user', tool, message }`.
|
|
257
|
+
Turn it off with `endTurnOnDecline: false`.
|
|
258
|
+
- **No empty answers.** If the model runs tools but its answer comes back empty
|
|
259
|
+
(reasoning used the output budget), the engine asks once more without tools,
|
|
260
|
+
then falls back to showing the last tool result.
|
|
261
|
+
- **No made-up payment data.** A final answer containing an invoice, offer,
|
|
262
|
+
address or RGB invoice that no tool returned and the user never typed is
|
|
263
|
+
replaced with a refusal (`guardUngroundedPaymentData`, default on).
|
|
264
|
+
- **Skills that can act.** `engine.composeSkill()` and the funnel skip skills
|
|
265
|
+
whose `requires-tools` are not live and prefer skills with at least one live
|
|
266
|
+
tool. If the request is a wallet action (create an invoice, get an address,
|
|
267
|
+
pay, send) and no exposed tool can do it, the engine answers "I can't do that
|
|
268
|
+
here" without calling the model (`guardMissingTools`, default on).
|
|
269
|
+
|
|
270
|
+
Qwen3.5 reasons before it answers: in our signet runs the 2B model used 80–390
|
|
271
|
+
thinking tokens per turn. Keep `maxThinkingTokens` around 512 and the output cap
|
|
272
|
+
(`defaultMaxTokens`) well above it (we use 1536); a tighter cap cuts the turn
|
|
273
|
+
off before it calls a tool or answers.
|
|
274
|
+
|
|
275
|
+
```ts
|
|
276
|
+
const wallet = bindWalletTools(
|
|
277
|
+
{ rln_list_assets: async () => rln.listAssets(), rln_send_asset: async (a) => rln.sendAsset(a) /* … */ },
|
|
278
|
+
{ layers: ['rln'], includeCore: false, allowMissing: true },
|
|
279
|
+
);
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Tools without a handler are skipped when `allowMissing` is set. The `rln_*`
|
|
283
|
+
names match [kaleido-mcp](https://www.npmjs.com/package/kaleido-mcp), so a
|
|
284
|
+
desktop host can use the MCP server and a mobile host can use in-process
|
|
285
|
+
handlers. `rln_send_asset` and `rln_create_rgb_invoice` take
|
|
286
|
+
`asset` / `amount` / `to` in the contract but `asset_id` / `amount` /
|
|
287
|
+
`recipient_id` in kaleido-mcp. The model always sees the schema of the source
|
|
288
|
+
it is connected to, and the bundled `rgb-lightning-node` skill describes both.
|
|
289
|
+
|
|
290
|
+
## Connecting an MCP server
|
|
291
|
+
|
|
292
|
+
```ts
|
|
293
|
+
import { McpToolSource } from '@kaleidorg/mind/mcp';
|
|
294
|
+
|
|
295
|
+
const kaleido = new McpToolSource({
|
|
296
|
+
id: 'kaleido',
|
|
297
|
+
transport: {
|
|
298
|
+
kind: 'stdio',
|
|
299
|
+
command: 'npx',
|
|
300
|
+
args: ['-y', 'kaleido-mcp'],
|
|
301
|
+
env: { KALEIDO_NETWORK: 'signet', RLN_NODE_URL: 'http://localhost:3001' }, // PATH/HOME are inherited
|
|
302
|
+
},
|
|
303
|
+
allow: ['rln_list_assets', 'rln_get_asset_balance', 'rln_create_rgb_invoice', 'rln_send_asset'],
|
|
304
|
+
});
|
|
305
|
+
await kaleido.connect();
|
|
306
|
+
const tools = new ToolRegistry([kaleido]);
|
|
307
|
+
// … engine.runAgentic(…) …
|
|
308
|
+
await kaleido.close();
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
- `allow` keeps the tool list short, which matters for small models.
|
|
312
|
+
- `denyPrefixes` hides whole groups of tools.
|
|
313
|
+
- For a remote server, use `{ kind: 'http', url, headers }`.
|
|
314
|
+
- Spend tools from the contracts stay confirmation-gated even when they come
|
|
315
|
+
over MCP.
|
|
316
|
+
- `KALEIDO_NETWORK=signet` needs kaleido-mcp 0.3.0 or later. On older versions,
|
|
317
|
+
set `RLN_NODE_URL` and `KALEIDOSWAP_API_URL` explicitly.
|
|
318
|
+
|
|
319
|
+
[`examples/rgb-agent`](https://github.com/kaleidoswap/kaleido-mind/tree/main/examples/rgb-agent)
|
|
320
|
+
is a complete local agent built this way. It checks RGB balances, creates an RGB
|
|
321
|
+
invoice and sends an asset. It also has a mock mode that runs without a node.
|
|
322
|
+
|
|
323
|
+
## Testing without a node, funds or a model
|
|
324
|
+
|
|
325
|
+
```ts
|
|
326
|
+
import { Funnel, issueAssetRecipe } from '@kaleidorg/mind';
|
|
327
|
+
import { MockWallet, scriptedProvider } from '@kaleidorg/mind/testing';
|
|
328
|
+
|
|
329
|
+
const wallet = new MockWallet();
|
|
330
|
+
const funnel = new Funnel({ provider: scriptedProvider(), tools: wallet.registry(), recipes: [issueAssetRecipe] });
|
|
331
|
+
const out = await funnel.runTurn('issue 1000 TICKET tokens called Hackathon Ticket', {
|
|
332
|
+
onConfirm: async () => ({ approved: true }),
|
|
333
|
+
});
|
|
334
|
+
console.log(out.text, wallet.sends);
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## More
|
|
338
|
+
|
|
339
|
+
- [Architecture](https://github.com/kaleidoswap/kaleido-mind/blob/main/docs/ARCHITECTURE.md)
|
|
340
|
+
- [Function calling](https://github.com/kaleidoswap/kaleido-mind/blob/main/docs/FUNCTION_CALLING.md)
|
|
341
|
+
- [Memory and RAG](https://github.com/kaleidoswap/kaleido-mind/blob/main/docs/MEMORY_RAG.md)
|
|
342
|
+
- [Integrating into a host](https://github.com/kaleidoswap/kaleido-mind/blob/main/docs/INTEGRATION.md)
|
|
343
|
+
- [Changelog](https://github.com/kaleidoswap/kaleido-mind/blob/main/CHANGELOG.md)
|
|
344
|
+
|
|
345
|
+
Apache-2.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"risk.js","sourceRoot":"","sources":["../../src/autonomy/risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA2CH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,MAAM;IACxB,cAAc,EAAE,MAAM;IACtB,WAAW,EAAE,EAAE;IACf,mBAAmB,EAAE,CAAC,EAAE,+CAA+C;IACvE,aAAa,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,MAAmB,EACnB,MAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"risk.js","sourceRoot":"","sources":["../../src/autonomy/risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA2CH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,MAAM,EAAE,IAAI;IACZ,gBAAgB,EAAE,MAAM;IACxB,cAAc,EAAE,MAAM;IACtB,WAAW,EAAE,EAAE;IACf,mBAAmB,EAAE,CAAC,EAAE,+CAA+C;IACvE,aAAa,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,UAAU,aAAa,CAC3B,MAAmB,EACnB,MAAkB,EAClB,GAAG,GAAgB,EAAE;IAErB,MAAM,KAAK,GAAG,CAAC,MAAc,EAAe,EAAE,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO;QAChB,oBAAoB,EAAE,KAAK;QAC3B,MAAM;KACP,CAAC,CAAC;IAEH,wCAAwC;IACxC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,yBAAyB,MAAM,CAAC,IAAI,qBAAqB,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC;IAElC,oDAAoD;IACpD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC9D,OAAO,KAAK,CACV,eAAe,OAAO,wCAAwC,MAAM,CAAC,cAAc,MAAM,CAC1F,CAAC;IACJ,CAAC;IAED,sDAAsD;IACtD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;QACzC,IAAI,KAAK,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACpC,OAAO,KAAK,CACV,eAAe,KAAK,mBAAmB,MAAM,CAAC,gBAAgB,cAAc,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,eAAe;IACf,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5E,OAAO,KAAK,CACV,IAAI,MAAM,CAAC,SAAS,kCAAkC,MAAM,CAAC,WAAW,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,IACE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC;QACrD,MAAM,CAAC,aAAa,KAAK,SAAS;QAClC,GAAG,CAAC,UAAU,KAAK,SAAS;QAC5B,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,aAAa,EACtC,CAAC;QACD,OAAO,KAAK,CACV,GAAG,GAAG,CAAC,UAAU,sBAAsB,MAAM,CAAC,aAAa,wBAAwB,CACpF,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,2EAA2E;IAC3E,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACrF,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,oBAAoB,EAAE,KAAK;YAC3B,MAAM,EAAE,IAAI,MAAM,CAAC,SAAS,oBAAoB,MAAM,CAAC,mBAAmB,EAAE;SAC7E,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,oBAAoB,EAAE,IAAI;QAC1B,MAAM,EACJ,MAAM,CAAC,SAAS,KAAK,SAAS;YAC5B,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,wBAAwB,MAAM,CAAC,mBAAmB,uBAAuB;YAC/F,CAAC,CAAC,0CAA0C;KACjD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../../src/autonomy/run-state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,SAAS,EACV,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAW;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;
|
|
1
|
+
{"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../../src/autonomy/run-state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,SAAS,EACV,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAW;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,YAAY,IAAI,GAAE,aAAkB,EAInC;YAEa,OAAO;YAiBP,OAAO;IAIrB,OAAO,CAAC,MAAM;IAgBd,mDAAmD;IAC7C,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BjD;IAEK,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAGxD;IAEK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAGnD;IAEK,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAGrD;IAEK,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,CAGtC;IAEK,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,CAGxC;IAED,OAAO,CAAC,YAAY;CAOrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-state.js","sourceRoot":"","sources":["../../src/autonomy/run-state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,MAAM,SAAS,GAAgB,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;AAC3E,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC;AAWrB,MAAM,OAAO,UAAU;IACb,KAAK,GAA8B,EAAE,CAAC;IACtC,UAAU,GAAoB,EAAE,CAAC;IACjC,UAAU,GAAgB,EAAE,GAAG,SAAS,EAAE,CAAC;IAC3C,QAAQ,GAAG,KAAK,CAAC;IACR,EAAE,CAAY;IACd,SAAS,CAAS;IAClB,GAAG,CAAe;IAEnC,YAAY,
|
|
1
|
+
{"version":3,"file":"run-state.js","sourceRoot":"","sources":["../../src/autonomy/run-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-store.d.ts","sourceRoot":"","sources":["../../src/autonomy/task-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;
|
|
1
|
+
{"version":3,"file":"task-store.d.ts","sourceRoot":"","sources":["../../src/autonomy/task-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAc;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IAEnC,YAAY,IAAI,GAAE,gBAAqB,EAGtC;YAEa,OAAO;YAaP,OAAO;IAIf,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAGjC;IAEK,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAG/C;IAEK,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAM/C;IAEK,MAAM,CACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC,GAClD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAU3B;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOzC;IAEK,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAY1D;IAED,kEAAkE;IAClE,OAAO,CAAC,WAAW;CAcpB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,GAAE;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,QAAQ,EAAE,CA8BlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-store.js","sourceRoot":"","sources":["../../src/autonomy/task-store.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,eAAe,GAMhB,MAAM,YAAY,CAAC;AASpB,MAAM,OAAO,iBAAiB;IACpB,KAAK,GAAgB,EAAE,CAAC;IACxB,QAAQ,GAAG,KAAK,CAAC;IACjB,OAAO,GAAG,CAAC,CAAC;IACH,EAAE,CAAe;IACjB,GAAG,CAAe;IAEnC,YAAY,
|
|
1
|
+
{"version":3,"file":"task-store.js","sourceRoot":"","sources":["../../src/autonomy/task-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/bitrefill/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAa7D,SAAS,CAAC,CACR,IAAY,EACZ,WAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/bitrefill/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAa7D,SAAS,CAAC,CACR,IAAY,EACZ,WAAmB,EACnB,UAAU,GAAU,EAAE,EACtB,QAAQ,GAAa,EAAE,EACvB,KAAK,GAAG,KAAK;IAEb,OAAO;QACL,IAAI;QACJ,WAAW;QACX,KAAK;QACL,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE;KACrD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAuB;IACjD,CAAC,CACC,kBAAkB,EAClB,iQAAiQ,EACjQ;QACE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uEAAuE,EAAE;QAC/G,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yGAAyG,EAAE;QACnJ,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE;KACrF,EACD,CAAC,OAAO,CAAC,CACV;IAED,CAAC,CACC,uBAAuB,EACvB,+MAA+M,EAC/M;QACE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mEAAmE,EAAE;KACjH,EACD,CAAC,YAAY,CAAC,CACf;IAED,CAAC,CACC,uBAAuB,EACvB,gJAAgJ,CACjJ;IAED,CAAC,CACC,0BAA0B,EAC1B,qcAAqc,EACrc;QACE,QAAQ,EAAE;YACR,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,wIAAwI;YACrJ,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC7B;gBACD,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC;aACnD;SACF;QACD,cAAc,EAAE;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iIAAiI;YAC9I,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,CAAC;SACtH;QACD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gGAAgG,EAAE;QAC5I,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wGAAwG,EAAE;QACzJ,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wFAAwF,EAAE;QAChI,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;KAC5G,EACD,CAAC,UAAU,EAAE,gBAAgB,CAAC;IAC9B,WAAW,CAAC,IAAI,CACjB;IAED,CAAC,CACC,uBAAuB,EACvB,iNAAiN,EACjN;QACE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE;KAChG,EACD,CAAC,YAAY,CAAC,CACf;IAED,CAAC,CACC,qBAAqB,EACrB,4RAA4R,EAC5R;QACE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qFAAqF,EAAE;KACjI,EACD,CAAC,UAAU,CAAC,CACb;CACF,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,qBAAqB,GAAgB,IAAI,GAAG,CACvD,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC1D,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACtD,CAAC;AAYD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA0C,EAC1C,IAAI,GAAyB,EAAE;IAE/B,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,YAAY;gBAAE,SAAS;YAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QACtE,CAAC;QACD,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,oBAAoB,EAAE,GAAG,CAAC,oBAAoB;YAC9C,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,WAAW,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/context/budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,SAAiB;IAC3D,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AACxE,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/context/budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,SAAiB;IAC3D,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC;AACxE,CAAC;AAWD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe,EAAE,QAAQ,GAAmB,EAAE;IAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC;IACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC;IACpC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,IAAI,GAAG,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAClC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/context/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,kDAAkD;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qDAAqD;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/context/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,YAAY,CAAC;IACtB,kDAAkD;IAClD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,qDAAqD;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,cAAc;IACb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,qBAAqB,EAAI;IAEtD,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CA2D1D;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/context/builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAuB5D,MAAM,OAAO,cAAc;IACI;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/context/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../../src/context/compress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../../src/context/compress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,kFAAkF;AAClF,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAkClD,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wFAAwF;IACxF,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,OAAO,EAAE,OAAO,CAAC;CAClB;AA4BD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,gBAAqB,GAAG,WAAW,CA+B3F"}
|
package/dist/context/compress.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.js","sourceRoot":"","sources":["../../src/context/compress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,kFAAkF;AAClF,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,aAAa;IACb,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,KAAK;IACL,SAAS;IACT,UAAU;IACV,OAAO;IACP,YAAY;IACZ,SAAS;IACT,aAAa;IACb,SAAS;IACT,SAAS;IACT,QAAQ;IACR,iBAAiB;IACjB,cAAc;IACd,UAAU;IACV,MAAM;IACN,OAAO;IACP,QAAQ;IACR,SAAS;IACT,WAAW;IACX,aAAa;IACb,UAAU;IACV,aAAa;IACb,MAAM;IACN,OAAO;IACP,WAAW;CACZ,CAAC;AAuCF,0GAA0G;AAC1G,SAAS,gBAAgB,CAAC,CAAS;IACjC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"compress.js","sourceRoot":"","sources":["../../src/context/compress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RGB asset balances are raw integers in the asset's own unit, scaled by its
|
|
3
|
+
* `precision`. Nothing in the tool result says so, and small models fill the
|
|
4
|
+
* gap with "satoshis" ("USDT — Balance: 1,000 satoshis").
|
|
5
|
+
*
|
|
6
|
+
* `annotateRgbBalances` adds a `balance_display` next to each asset's
|
|
7
|
+
* `balance` before the result reaches the model ("1,000 USDT").
|
|
8
|
+
* `fixRgbBalanceUnits` corrects a final answer that still labels an asset
|
|
9
|
+
* balance as sats: the number must equal one of that asset's balances and the
|
|
10
|
+
* nearest ticker before it must be that asset's.
|
|
11
|
+
*/
|
|
12
|
+
/** A raw RGB amount in display units, e.g. 1500000 at precision 6 → "1.5". */
|
|
13
|
+
export declare function formatRgbAmount(raw: number, precision: number): string;
|
|
14
|
+
/** Return a copy of `result` where every RGB asset carries `balance_display`. */
|
|
15
|
+
export declare function annotateRgbBalances(result: unknown): unknown;
|
|
16
|
+
/** Relabel asset balances that the answer calls sats, using the tool results it was built from. */
|
|
17
|
+
export declare function fixRgbBalanceUnits(text: string, toolResults: unknown[]): string;
|
|
18
|
+
//# sourceMappingURL=rgb-units.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgb-units.d.ts","sourceRoot":"","sources":["../../src/context/rgb-units.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsBH,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED,iFAAiF;AACjF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAe5D;AAeD,mGAAmG;AACnG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,MAAM,CAkB/E"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RGB asset balances are raw integers in the asset's own unit, scaled by its
|
|
3
|
+
* `precision`. Nothing in the tool result says so, and small models fill the
|
|
4
|
+
* gap with "satoshis" ("USDT — Balance: 1,000 satoshis").
|
|
5
|
+
*
|
|
6
|
+
* `annotateRgbBalances` adds a `balance_display` next to each asset's
|
|
7
|
+
* `balance` before the result reaches the model ("1,000 USDT").
|
|
8
|
+
* `fixRgbBalanceUnits` corrects a final answer that still labels an asset
|
|
9
|
+
* balance as sats: the number must equal one of that asset's balances and the
|
|
10
|
+
* nearest ticker before it must be that asset's.
|
|
11
|
+
*/
|
|
12
|
+
const BALANCE_FIELDS = ['settled', 'spendable', 'future'];
|
|
13
|
+
const isObj = (v) => !!v && typeof v === 'object' && !Array.isArray(v);
|
|
14
|
+
function asAsset(v) {
|
|
15
|
+
if (typeof v.ticker !== 'string' || !v.ticker || !isObj(v.balance))
|
|
16
|
+
return null;
|
|
17
|
+
const amounts = BALANCE_FIELDS.map((k) => v.balance[k]).filter((n) => typeof n === 'number');
|
|
18
|
+
if (!amounts.length)
|
|
19
|
+
return null;
|
|
20
|
+
const precision = typeof v.precision === 'number' && v.precision > 0 ? v.precision : 0;
|
|
21
|
+
return { ticker: v.ticker, precision, amounts };
|
|
22
|
+
}
|
|
23
|
+
/** A raw RGB amount in display units, e.g. 1500000 at precision 6 → "1.5". */
|
|
24
|
+
export function formatRgbAmount(raw, precision) {
|
|
25
|
+
const value = raw / 10 ** precision;
|
|
26
|
+
return value.toLocaleString('en-US', { maximumFractionDigits: precision });
|
|
27
|
+
}
|
|
28
|
+
/** Return a copy of `result` where every RGB asset carries `balance_display`. */
|
|
29
|
+
export function annotateRgbBalances(result) {
|
|
30
|
+
if (Array.isArray(result))
|
|
31
|
+
return result.map(annotateRgbBalances);
|
|
32
|
+
if (!isObj(result))
|
|
33
|
+
return result;
|
|
34
|
+
const out = {};
|
|
35
|
+
for (const [k, v] of Object.entries(result))
|
|
36
|
+
out[k] = annotateRgbBalances(v);
|
|
37
|
+
const asset = asAsset(result);
|
|
38
|
+
if (asset) {
|
|
39
|
+
const balance = result.balance;
|
|
40
|
+
const display = {};
|
|
41
|
+
for (const k of BALANCE_FIELDS) {
|
|
42
|
+
if (typeof balance[k] === 'number')
|
|
43
|
+
display[k] = `${formatRgbAmount(balance[k], asset.precision)} ${asset.ticker}`;
|
|
44
|
+
}
|
|
45
|
+
out.balance_display = display;
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
function collectAssets(value, into) {
|
|
50
|
+
if (Array.isArray(value)) {
|
|
51
|
+
for (const v of value)
|
|
52
|
+
collectAssets(v, into);
|
|
53
|
+
}
|
|
54
|
+
else if (isObj(value)) {
|
|
55
|
+
const asset = asAsset(value);
|
|
56
|
+
if (asset)
|
|
57
|
+
into.push(asset);
|
|
58
|
+
for (const v of Object.values(value))
|
|
59
|
+
collectAssets(v, into);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const AMOUNT_IN_SATS = /(\d[\d,]*(?:\.\d+)?)\s*(?:satoshis|sats?)\b/gi;
|
|
63
|
+
const escapeRe = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
64
|
+
/** Relabel asset balances that the answer calls sats, using the tool results it was built from. */
|
|
65
|
+
export function fixRgbBalanceUnits(text, toolResults) {
|
|
66
|
+
const assets = [];
|
|
67
|
+
for (const r of toolResults)
|
|
68
|
+
collectAssets(r, assets);
|
|
69
|
+
if (!assets.length)
|
|
70
|
+
return text;
|
|
71
|
+
const tickerRe = new RegExp(`\\b(${[...new Set(assets.map((a) => escapeRe(a.ticker)))].join('|')})\\b`, 'g');
|
|
72
|
+
return text.replace(AMOUNT_IN_SATS, (match, num, offset) => {
|
|
73
|
+
let nearest;
|
|
74
|
+
for (const m of text.slice(Math.max(0, offset - 300), offset).matchAll(tickerRe))
|
|
75
|
+
nearest = m[1];
|
|
76
|
+
if (!nearest)
|
|
77
|
+
return match;
|
|
78
|
+
const value = Number(num.replace(/,/g, ''));
|
|
79
|
+
const asset = assets.find((a) => a.ticker === nearest && a.amounts.some((raw) => raw === value || raw / 10 ** a.precision === value));
|
|
80
|
+
if (!asset)
|
|
81
|
+
return match;
|
|
82
|
+
const raw = asset.amounts.find((r) => r === value) ?? value * 10 ** asset.precision;
|
|
83
|
+
return `${formatRgbAmount(raw, asset.precision)} ${asset.ticker}`;
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=rgb-units.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rgb-units.js","sourceRoot":"","sources":["../../src/context/rgb-units.ts"],"names":[],"mappings":"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"}
|