openclaw-ynabro 2.2.9 → 2.2.10
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 +117 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/ynabro/prompts/match-transactions.md +29 -9
- package/src/index.ts +209 -182
package/README.md
CHANGED
|
@@ -22,17 +22,70 @@ After installation, restart the OpenClaw gateway to load the plugin:
|
|
|
22
22
|
openclaw gateway restart
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
## Tool Access
|
|
26
|
+
|
|
27
|
+
OpenClaw's default `coding` tool profile only exposes core built-in tools. Plugin tools like `ynabro_*` must be explicitly allowed before agents can call them.
|
|
28
|
+
|
|
29
|
+
### Global — all agents (recommended)
|
|
30
|
+
|
|
31
|
+
Adds `openclaw-ynabro` tools to every agent on this gateway:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
openclaw config set tools.alsoAllow '["openclaw-ynabro"]'
|
|
35
|
+
openclaw gateway restart
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
This is the standard pattern used by OpenClaw plugins and the right choice for most installs.
|
|
39
|
+
|
|
40
|
+
### Per-agent — scoped to one agent only
|
|
41
|
+
|
|
42
|
+
If you want ynabro tools available only to a specific dedicated agent (and not your main session or other agents), add `tools.alsoAllow` to that agent's entry in `openclaw.json` instead:
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"agents": {
|
|
47
|
+
"list": [
|
|
48
|
+
{
|
|
49
|
+
"id": "ynabro-matchmaker",
|
|
50
|
+
"tools": {
|
|
51
|
+
"profile": "coding",
|
|
52
|
+
"alsoAllow": ["openclaw-ynabro"]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Or via the CLI:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
openclaw config set tools.alsoAllow '["openclaw-ynabro"]'
|
|
64
|
+
openclaw gateway restart
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Full profile — no restrictions (not recommended)
|
|
68
|
+
|
|
69
|
+
Setting `tools.profile: "full"` removes all tool restrictions for an agent, giving access to every installed plugin — not just ynabro. Only use this if you intentionally want unrestricted tool access:
|
|
70
|
+
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"id": "ynabro-matchmaker",
|
|
74
|
+
"tools": { "profile": "full" }
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
25
78
|
## Available Tools
|
|
26
79
|
|
|
27
|
-
- `ynabro_onboarding_status`
|
|
28
|
-
- `ynabro_setup`
|
|
29
|
-
- `ynabro_save_default_plan`
|
|
30
|
-
- `ynabro_get_pending_transactions`
|
|
31
|
-
- `ynabro_get_recent_transactions`
|
|
32
|
-
- `ynabro_approve_transaction`
|
|
33
|
-
- `ynabro_get_plan_info`
|
|
34
|
-
- `ynabro_get_skill_state`
|
|
35
|
-
- `ynabro_update_skill_state`
|
|
80
|
+
- `ynabro_onboarding_status` — check whether the plugin is fully configured
|
|
81
|
+
- `ynabro_setup` — fetch available YNAB plans for onboarding
|
|
82
|
+
- `ynabro_save_default_plan` — persist the selected plan as the default
|
|
83
|
+
- `ynabro_get_pending_transactions` — fetch all unapproved transactions
|
|
84
|
+
- `ynabro_get_recent_transactions` — fetch recent transactions for context or audit
|
|
85
|
+
- `ynabro_approve_transaction` — approve a specific transaction by ID
|
|
86
|
+
- `ynabro_get_plan_info` — get basic plan metadata
|
|
87
|
+
- `ynabro_get_skill_state` — read persistent skill state (memory, flags)
|
|
88
|
+
- `ynabro_update_skill_state` — merge updates into persistent skill state
|
|
36
89
|
|
|
37
90
|
## Configuration
|
|
38
91
|
|
|
@@ -101,3 +154,58 @@ Run `ynabro_setup` to fetch your available YNAB plans, then `ynabro_save_default
|
|
|
101
154
|
3. `ynabro_save_default_plan` with `{ planId: "<selected-id>" }` — persists the default
|
|
102
155
|
|
|
103
156
|
After onboarding, all plan-dependent tools (`ynabro_get_pending_transactions`, `ynabro_get_recent_transactions`, `ynabro_approve_transaction`, `ynabro_get_plan_info`) resolve the plan automatically — no `planId` parameter required.
|
|
157
|
+
|
|
158
|
+
## Dedicated Agent Setup
|
|
159
|
+
|
|
160
|
+
For YNAB-specific workflows (e.g. transaction review) it is recommended to create a dedicated agent rather than running ynabro tools in your main session. This keeps YNAB context and memory isolated and prevents ynabro tools from appearing in unrelated conversations.
|
|
161
|
+
|
|
162
|
+
### Example: `ynabro-matchmaker`
|
|
163
|
+
|
|
164
|
+
Add the following entry to the `agents.list` array in `~/.openclaw/openclaw.json`:
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
// Unique agent identifier used for routing and CLI commands
|
|
169
|
+
"id": "ynabro-matchmaker",
|
|
170
|
+
|
|
171
|
+
// Internal name used when listing agents via `openclaw agents list`
|
|
172
|
+
"name": "ynabro-matchmaker",
|
|
173
|
+
|
|
174
|
+
// Display name, emoji, and avatar shown in the OpenClaw dashboard
|
|
175
|
+
"identity": {
|
|
176
|
+
"name": "YNABro Matchmaker",
|
|
177
|
+
"emoji": "🔁",
|
|
178
|
+
"avatar": "logo.png"
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
// Isolated workspace — this agent gets its own AGENTS.md, memory,
|
|
182
|
+
// and context files completely separate from your main session
|
|
183
|
+
"workspace": "~/.openclaw/workspace-ynabro-matchmaker",
|
|
184
|
+
|
|
185
|
+
// Isolated session store and auth profiles for this agent
|
|
186
|
+
"agentDir": "~/.openclaw/agents/ynabro-matchmaker/agent",
|
|
187
|
+
|
|
188
|
+
// Skills to inject into the system prompt at session start.
|
|
189
|
+
// match-transactions is provided by the openclaw-ynabro plugin
|
|
190
|
+
// and guides the agent through the transaction review workflow.
|
|
191
|
+
"skills": ["match-transactions"],
|
|
192
|
+
|
|
193
|
+
// Scope ynabro tools to this agent only.
|
|
194
|
+
// Remove this block and use the global option in Tool Access above
|
|
195
|
+
// if you want ynabro tools available across all agents instead.
|
|
196
|
+
"tools": {
|
|
197
|
+
"profile": "coding",
|
|
198
|
+
"alsoAllow": ["openclaw-ynabro"]
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Then restart the gateway to apply:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
openclaw gateway restart
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Once the agent is running, start a conversation and type `/skill:match-transactions` to trigger the transaction review workflow, or say it naturally: _"match my transactions"_.
|
|
210
|
+
|
|
211
|
+
> **Note:** Skills are loaded into the system prompt at session start. If you update a skill or change the agent config, type `/new` in the chat to start a fresh session and pick up the changes.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;;;oBAoGxD,iBAAiB,KAAK,IAAI;;;;;;;;;AAiG5C,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;;;oBAoGxD,iBAAiB,KAAK,IAAI;;;;;;;;;AAiG5C,wBAoSG"}
|
package/dist/index.js
CHANGED
|
@@ -205,7 +205,7 @@ export default definePluginEntry({
|
|
|
205
205
|
}
|
|
206
206
|
return planId;
|
|
207
207
|
}
|
|
208
|
-
api.registerTool({
|
|
208
|
+
api.registerTool((_ctx) => ({
|
|
209
209
|
name: "ynabro_onboarding_status",
|
|
210
210
|
label: "Onboarding Status",
|
|
211
211
|
description: "Check whether YNABro is fully configured. Returns ready status, any missing configuration, and token generation instructions.",
|
|
@@ -214,8 +214,8 @@ export default definePluginEntry({
|
|
|
214
214
|
const status = await checkOnboardingStatus(openClawAdapter);
|
|
215
215
|
return ok(JSON.stringify(status));
|
|
216
216
|
},
|
|
217
|
-
});
|
|
218
|
-
api.registerTool({
|
|
217
|
+
}), { names: ["ynabro_onboarding_status"] });
|
|
218
|
+
api.registerTool((_ctx) => ({
|
|
219
219
|
name: "ynabro_setup",
|
|
220
220
|
label: "Setup YNAB",
|
|
221
221
|
description: "Fetch available YNAB plans for onboarding. Returns a list of plans. " +
|
|
@@ -231,8 +231,8 @@ export default definePluginEntry({
|
|
|
231
231
|
plans: plans.map((p) => ({ id: p.id, name: p.name })),
|
|
232
232
|
}));
|
|
233
233
|
},
|
|
234
|
-
});
|
|
235
|
-
api.registerTool({
|
|
234
|
+
}), { names: ["ynabro_setup"] });
|
|
235
|
+
api.registerTool((_ctx) => ({
|
|
236
236
|
name: "ynabro_save_default_plan",
|
|
237
237
|
label: "Save Default Plan",
|
|
238
238
|
description: "Save a YNAB plan as the default for all subsequent tool calls. " +
|
|
@@ -258,8 +258,8 @@ export default definePluginEntry({
|
|
|
258
258
|
}));
|
|
259
259
|
}
|
|
260
260
|
},
|
|
261
|
-
});
|
|
262
|
-
api.registerTool({
|
|
261
|
+
}), { names: ["ynabro_save_default_plan"] });
|
|
262
|
+
api.registerTool((_ctx) => ({
|
|
263
263
|
name: "ynabro_get_pending_transactions",
|
|
264
264
|
label: "Get Pending Transactions",
|
|
265
265
|
description: "Get all pending (uncategorized) transactions for a plan",
|
|
@@ -281,8 +281,8 @@ export default definePluginEntry({
|
|
|
281
281
|
}));
|
|
282
282
|
}
|
|
283
283
|
},
|
|
284
|
-
});
|
|
285
|
-
api.registerTool({
|
|
284
|
+
}), { names: ["ynabro_get_pending_transactions"] });
|
|
285
|
+
api.registerTool((_ctx) => ({
|
|
286
286
|
name: "ynabro_get_recent_transactions",
|
|
287
287
|
label: "Get Recent Transactions",
|
|
288
288
|
description: "Get recent transactions for a plan",
|
|
@@ -304,8 +304,8 @@ export default definePluginEntry({
|
|
|
304
304
|
}));
|
|
305
305
|
}
|
|
306
306
|
},
|
|
307
|
-
});
|
|
308
|
-
api.registerTool({
|
|
307
|
+
}), { names: ["ynabro_get_recent_transactions"] });
|
|
308
|
+
api.registerTool((_ctx) => ({
|
|
309
309
|
name: "ynabro_approve_transaction",
|
|
310
310
|
label: "Approve Transaction",
|
|
311
311
|
description: "Approve a specific transaction",
|
|
@@ -328,8 +328,8 @@ export default definePluginEntry({
|
|
|
328
328
|
}));
|
|
329
329
|
}
|
|
330
330
|
},
|
|
331
|
-
});
|
|
332
|
-
api.registerTool({
|
|
331
|
+
}), { names: ["ynabro_approve_transaction"] });
|
|
332
|
+
api.registerTool((_ctx) => ({
|
|
333
333
|
name: "ynabro_get_plan_info",
|
|
334
334
|
label: "Get Plan Info",
|
|
335
335
|
description: "Get basic information about a plan",
|
|
@@ -351,8 +351,8 @@ export default definePluginEntry({
|
|
|
351
351
|
}));
|
|
352
352
|
}
|
|
353
353
|
},
|
|
354
|
-
});
|
|
355
|
-
api.registerTool({
|
|
354
|
+
}), { names: ["ynabro_get_plan_info"] });
|
|
355
|
+
api.registerTool((_ctx) => ({
|
|
356
356
|
name: "ynabro_get_skill_state",
|
|
357
357
|
label: "Get Skill State",
|
|
358
358
|
description: "Get the current state for a skill, including memory and auto_approve_enabled flag",
|
|
@@ -362,8 +362,8 @@ export default definePluginEntry({
|
|
|
362
362
|
const result = await getSkillState(p.skillSlug);
|
|
363
363
|
return ok(JSON.stringify(result, null, 2));
|
|
364
364
|
},
|
|
365
|
-
});
|
|
366
|
-
api.registerTool({
|
|
365
|
+
}), { names: ["ynabro_get_skill_state"] });
|
|
366
|
+
api.registerTool((_ctx) => ({
|
|
367
367
|
name: "ynabro_update_skill_state",
|
|
368
368
|
label: "Update Skill State",
|
|
369
369
|
description: "Update the state for a skill — merge partial updates into existing state",
|
|
@@ -373,7 +373,7 @@ export default definePluginEntry({
|
|
|
373
373
|
const result = await updateSkillState(p.skillSlug, p.updates);
|
|
374
374
|
return ok(JSON.stringify(result, null, 2));
|
|
375
375
|
},
|
|
376
|
-
});
|
|
376
|
+
}), { names: ["ynabro_update_skill_state"] });
|
|
377
377
|
},
|
|
378
378
|
});
|
|
379
379
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -59,15 +59,35 @@ Accept replies in these formats:
|
|
|
59
59
|
|
|
60
60
|
Interpret numbers as row numbers from the table.
|
|
61
61
|
|
|
62
|
+
## Batching — All Transactions, 10 at a Time
|
|
63
|
+
|
|
64
|
+
**Never truncate or self-limit the transaction list.** The API returns all unapproved transactions — process every one of them.
|
|
65
|
+
|
|
66
|
+
When there are more than 10 unapproved transactions:
|
|
67
|
+
1. Before page 1, state the exact total: e.g. _"239 transactions to review across 24 pages."_
|
|
68
|
+
2. Present transactions **10 at a time**. Page 1 = items 1–10, page 2 = items 11–20, etc.
|
|
69
|
+
3. Row numbers are **global** and continuous across all pages — never reset to 1 on a new page.
|
|
70
|
+
4. Include this header above each table:
|
|
71
|
+
|
|
72
|
+
> **Page X of N — items FIRST–LAST of TOTAL**
|
|
73
|
+
> Reply with actions for this page and I'll execute them, then move to the next page.
|
|
74
|
+
|
|
75
|
+
5. After the user replies, execute their actions for those rows, then immediately present the next 10 **without waiting to be asked**.
|
|
76
|
+
6. After the final page is actioned, post a summary: total approved / rejected / switched across the whole run, then update skill state.
|
|
77
|
+
|
|
78
|
+
If there are 10 or fewer transactions, present them all in a single table with no pagination header.
|
|
79
|
+
|
|
62
80
|
## Workflow
|
|
63
81
|
|
|
64
|
-
1. Fetch pending and unmatched transactions
|
|
65
|
-
2. Call `
|
|
66
|
-
3.
|
|
67
|
-
4.
|
|
68
|
-
5.
|
|
69
|
-
6.
|
|
70
|
-
7.
|
|
82
|
+
1. Fetch pending and unmatched transactions via `ynabro_get_pending_transactions`.
|
|
83
|
+
2. Call `ynabro_get_skill_state` with `skillSlug: "match-transactions"` and review both the `memory` array and `auto_approve_enabled` flag.
|
|
84
|
+
3. Note the **exact total count**. Calculate page count (ceil(total / 10)). State the total and page count before the first table.
|
|
85
|
+
4. Analyze the first batch of up to 10 transactions (items 1–10) — existing matches and potential new matches (close dates, similar payees, small amount differences).
|
|
86
|
+
5. Present the review table with the page header (if paginating) and Yes/No confidence and recommended actions.
|
|
87
|
+
6. Wait for human reply.
|
|
88
|
+
7. Execute approved actions for that page.
|
|
89
|
+
8. If more pages remain, present the next page immediately (go to step 4).
|
|
90
|
+
9. After all pages are done, update skill state with concise corrections/pitfalls only. If confidence has grown sufficiently after multiple runs, ask the user whether to set `auto_approve_enabled: true`.
|
|
71
91
|
|
|
72
92
|
## Memory Strategy (Minimal Token Usage)
|
|
73
93
|
|
|
@@ -83,7 +103,7 @@ Good examples:
|
|
|
83
103
|
|
|
84
104
|
Avoid storing:
|
|
85
105
|
- Full transaction details
|
|
86
|
-
- Successful matches (they don
|
|
106
|
+
- Successful matches (they don't teach the agent what to avoid)
|
|
87
107
|
- Verbose JSON
|
|
88
108
|
|
|
89
109
|
The goal is a small number of high-signal notes that help the agent avoid previous mistakes while keeping context usage low.
|
|
@@ -97,4 +117,4 @@ The goal is a small number of high-signal notes that help the agent avoid previo
|
|
|
97
117
|
- Prioritize user control until the skill has earned trust through consistent performance.
|
|
98
118
|
- Keep memory entries minimal and focused on corrections.
|
|
99
119
|
|
|
100
|
-
You are here to make YNAB matching reliable through intelligent, learnable review rather than brittle automation.
|
|
120
|
+
You are here to make YNAB matching reliable through intelligent, learnable review rather than brittle automation.
|
package/src/index.ts
CHANGED
|
@@ -264,201 +264,228 @@ export default definePluginEntry({
|
|
|
264
264
|
return planId;
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
-
api.registerTool(
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
label: "Setup YNAB",
|
|
282
|
-
description:
|
|
283
|
-
"Fetch available YNAB plans for onboarding. Returns a list of plans. " +
|
|
284
|
-
"After the user selects one, call ynabro_save_default_plan with the chosen plan ID.",
|
|
285
|
-
parameters: Type.Object({}),
|
|
286
|
-
async execute() {
|
|
287
|
-
const client = getClient();
|
|
288
|
-
const plans = await client.getPlans();
|
|
289
|
-
if (plans.length === 0) {
|
|
290
|
-
return ok(
|
|
291
|
-
JSON.stringify({ error: "No plans found in your YNAB account." }),
|
|
292
|
-
);
|
|
293
|
-
}
|
|
294
|
-
return ok(
|
|
295
|
-
JSON.stringify({
|
|
296
|
-
plans: plans.map((p) => ({ id: p.id, name: p.name })),
|
|
297
|
-
}),
|
|
298
|
-
);
|
|
299
|
-
},
|
|
300
|
-
});
|
|
267
|
+
api.registerTool(
|
|
268
|
+
(_ctx) => ({
|
|
269
|
+
name: "ynabro_onboarding_status",
|
|
270
|
+
label: "Onboarding Status",
|
|
271
|
+
description:
|
|
272
|
+
"Check whether YNABro is fully configured. Returns ready status, any missing configuration, and token generation instructions.",
|
|
273
|
+
parameters: Type.Object({}),
|
|
274
|
+
async execute() {
|
|
275
|
+
const status = await checkOnboardingStatus(openClawAdapter);
|
|
276
|
+
return ok(JSON.stringify(status));
|
|
277
|
+
},
|
|
278
|
+
}),
|
|
279
|
+
{ names: ["ynabro_onboarding_status"] },
|
|
280
|
+
);
|
|
301
281
|
|
|
302
|
-
api.registerTool(
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
const p = params(raw);
|
|
282
|
+
api.registerTool(
|
|
283
|
+
(_ctx) => ({
|
|
284
|
+
name: "ynabro_setup",
|
|
285
|
+
label: "Setup YNAB",
|
|
286
|
+
description:
|
|
287
|
+
"Fetch available YNAB plans for onboarding. Returns a list of plans. " +
|
|
288
|
+
"After the user selects one, call ynabro_save_default_plan with the chosen plan ID.",
|
|
289
|
+
parameters: Type.Object({}),
|
|
290
|
+
async execute() {
|
|
312
291
|
const client = getClient();
|
|
313
292
|
const plans = await client.getPlans();
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
defaultPlanId: p.planId,
|
|
320
|
-
}),
|
|
321
|
-
);
|
|
322
|
-
} catch (_error) {
|
|
323
|
-
const status = await checkOnboardingStatus(openClawAdapter);
|
|
293
|
+
if (plans.length === 0) {
|
|
294
|
+
return ok(
|
|
295
|
+
JSON.stringify({ error: "No plans found in your YNAB account." }),
|
|
296
|
+
);
|
|
297
|
+
}
|
|
324
298
|
return ok(
|
|
325
299
|
JSON.stringify({
|
|
326
|
-
|
|
327
|
-
...status,
|
|
300
|
+
plans: plans.map((p) => ({ id: p.id, name: p.name })),
|
|
328
301
|
}),
|
|
329
302
|
);
|
|
330
|
-
}
|
|
331
|
-
},
|
|
332
|
-
|
|
303
|
+
},
|
|
304
|
+
}),
|
|
305
|
+
{ names: ["ynabro_setup"] },
|
|
306
|
+
);
|
|
333
307
|
|
|
334
|
-
api.registerTool(
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
308
|
+
api.registerTool(
|
|
309
|
+
(_ctx) => ({
|
|
310
|
+
name: "ynabro_save_default_plan",
|
|
311
|
+
label: "Save Default Plan",
|
|
312
|
+
description:
|
|
313
|
+
"Save a YNAB plan as the default for all subsequent tool calls. " +
|
|
314
|
+
"Call ynabro_setup first to get the list of available plan IDs.",
|
|
315
|
+
parameters: saveDefaultPlanSchema,
|
|
316
|
+
async execute(_id, raw) {
|
|
317
|
+
try {
|
|
318
|
+
const p = params(raw);
|
|
319
|
+
const client = getClient();
|
|
320
|
+
const plans = await client.getPlans();
|
|
321
|
+
await setupYnab(client, plans, p.planId as string, openClawAdapter);
|
|
322
|
+
const saved = plans.find((plan) => plan.id === p.planId);
|
|
323
|
+
return ok(
|
|
324
|
+
JSON.stringify({
|
|
325
|
+
message: `Default plan set to: ${saved?.name ?? p.planId}`,
|
|
326
|
+
defaultPlanId: p.planId,
|
|
327
|
+
}),
|
|
328
|
+
);
|
|
329
|
+
} catch (_error) {
|
|
330
|
+
const status = await checkOnboardingStatus(openClawAdapter);
|
|
331
|
+
return ok(
|
|
332
|
+
JSON.stringify({
|
|
333
|
+
error: "onboarding_required",
|
|
334
|
+
...status,
|
|
335
|
+
}),
|
|
336
|
+
);
|
|
337
|
+
}
|
|
338
|
+
},
|
|
339
|
+
}),
|
|
340
|
+
{ names: ["ynabro_save_default_plan"] },
|
|
341
|
+
);
|
|
342
|
+
|
|
343
|
+
api.registerTool(
|
|
344
|
+
(_ctx) => ({
|
|
345
|
+
name: "ynabro_get_pending_transactions",
|
|
346
|
+
label: "Get Pending Transactions",
|
|
347
|
+
description: "Get all pending (uncategorized) transactions for a plan",
|
|
348
|
+
parameters: Type.Object({}),
|
|
349
|
+
async execute() {
|
|
350
|
+
try {
|
|
351
|
+
const [client, planId] = await Promise.all([
|
|
352
|
+
Promise.resolve(getClient()),
|
|
353
|
+
getDefaultPlanId(),
|
|
354
|
+
]);
|
|
355
|
+
const result = await getPendingTransactions(client, planId);
|
|
356
|
+
return ok(JSON.stringify(result, null, 2));
|
|
357
|
+
} catch (_error) {
|
|
358
|
+
const status = await checkOnboardingStatus(openClawAdapter);
|
|
359
|
+
return ok(
|
|
360
|
+
JSON.stringify({
|
|
361
|
+
error: "onboarding_required",
|
|
362
|
+
...status,
|
|
363
|
+
}),
|
|
364
|
+
);
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
}),
|
|
368
|
+
{ names: ["ynabro_get_pending_transactions"] },
|
|
369
|
+
);
|
|
370
|
+
|
|
371
|
+
api.registerTool(
|
|
372
|
+
(_ctx) => ({
|
|
373
|
+
name: "ynabro_get_recent_transactions",
|
|
374
|
+
label: "Get Recent Transactions",
|
|
375
|
+
description: "Get recent transactions for a plan",
|
|
376
|
+
parameters: Type.Object({}),
|
|
377
|
+
async execute() {
|
|
378
|
+
try {
|
|
379
|
+
const [client, planId] = await Promise.all([
|
|
380
|
+
Promise.resolve(getClient()),
|
|
381
|
+
getDefaultPlanId(),
|
|
382
|
+
]);
|
|
383
|
+
const result = await getRecentTransactions(client, planId);
|
|
384
|
+
return ok(JSON.stringify(result, null, 2));
|
|
385
|
+
} catch (_error) {
|
|
386
|
+
const status = await checkOnboardingStatus(openClawAdapter);
|
|
387
|
+
return ok(
|
|
388
|
+
JSON.stringify({
|
|
389
|
+
error: "onboarding_required",
|
|
390
|
+
...status,
|
|
391
|
+
}),
|
|
392
|
+
);
|
|
393
|
+
}
|
|
394
|
+
},
|
|
395
|
+
}),
|
|
396
|
+
{ names: ["ynabro_get_recent_transactions"] },
|
|
397
|
+
);
|
|
358
398
|
|
|
359
|
-
api.registerTool(
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
399
|
+
api.registerTool(
|
|
400
|
+
(_ctx) => ({
|
|
401
|
+
name: "ynabro_approve_transaction",
|
|
402
|
+
label: "Approve Transaction",
|
|
403
|
+
description: "Approve a specific transaction",
|
|
404
|
+
parameters: approveSchema,
|
|
405
|
+
async execute(_id, raw) {
|
|
406
|
+
try {
|
|
407
|
+
const p = params(raw);
|
|
408
|
+
const [client, planId] = await Promise.all([
|
|
409
|
+
Promise.resolve(getClient()),
|
|
410
|
+
getDefaultPlanId(),
|
|
411
|
+
]);
|
|
412
|
+
await approveTransaction(client, planId, p.transactionId as string);
|
|
413
|
+
return ok(JSON.stringify({ success: true }));
|
|
414
|
+
} catch (_error) {
|
|
415
|
+
const status = await checkOnboardingStatus(openClawAdapter);
|
|
416
|
+
return ok(
|
|
417
|
+
JSON.stringify({
|
|
418
|
+
error: "onboarding_required",
|
|
419
|
+
...status,
|
|
420
|
+
}),
|
|
421
|
+
);
|
|
422
|
+
}
|
|
423
|
+
},
|
|
424
|
+
}),
|
|
425
|
+
{ names: ["ynabro_approve_transaction"] },
|
|
426
|
+
);
|
|
427
|
+
|
|
428
|
+
api.registerTool(
|
|
429
|
+
(_ctx) => ({
|
|
430
|
+
name: "ynabro_get_plan_info",
|
|
431
|
+
label: "Get Plan Info",
|
|
432
|
+
description: "Get basic information about a plan",
|
|
433
|
+
parameters: Type.Object({}),
|
|
434
|
+
async execute() {
|
|
435
|
+
try {
|
|
436
|
+
const [client, planId] = await Promise.all([
|
|
437
|
+
Promise.resolve(getClient()),
|
|
438
|
+
getDefaultPlanId(),
|
|
439
|
+
]);
|
|
440
|
+
const result = await getPlanInfo(client, planId);
|
|
441
|
+
return ok(JSON.stringify(result, null, 2));
|
|
442
|
+
} catch (_error) {
|
|
443
|
+
const status = await checkOnboardingStatus(openClawAdapter);
|
|
444
|
+
return ok(
|
|
445
|
+
JSON.stringify({
|
|
446
|
+
error: "onboarding_required",
|
|
447
|
+
...status,
|
|
448
|
+
}),
|
|
449
|
+
);
|
|
450
|
+
}
|
|
451
|
+
},
|
|
452
|
+
}),
|
|
453
|
+
{ names: ["ynabro_get_plan_info"] },
|
|
454
|
+
);
|
|
455
|
+
|
|
456
|
+
api.registerTool(
|
|
457
|
+
(_ctx) => ({
|
|
458
|
+
name: "ynabro_get_skill_state",
|
|
459
|
+
label: "Get Skill State",
|
|
460
|
+
description:
|
|
461
|
+
"Get the current state for a skill, including memory and auto_approve_enabled flag",
|
|
462
|
+
parameters: skillStateSchema,
|
|
463
|
+
async execute(_id, raw) {
|
|
464
|
+
const p = params(raw);
|
|
465
|
+
const result = await getSkillState(p.skillSlug as string);
|
|
371
466
|
return ok(JSON.stringify(result, null, 2));
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
error: "onboarding_required",
|
|
377
|
-
...status,
|
|
378
|
-
}),
|
|
379
|
-
);
|
|
380
|
-
}
|
|
381
|
-
},
|
|
382
|
-
});
|
|
467
|
+
},
|
|
468
|
+
}),
|
|
469
|
+
{ names: ["ynabro_get_skill_state"] },
|
|
470
|
+
);
|
|
383
471
|
|
|
384
|
-
api.registerTool(
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
472
|
+
api.registerTool(
|
|
473
|
+
(_ctx) => ({
|
|
474
|
+
name: "ynabro_update_skill_state",
|
|
475
|
+
label: "Update Skill State",
|
|
476
|
+
description:
|
|
477
|
+
"Update the state for a skill — merge partial updates into existing state",
|
|
478
|
+
parameters: updateSkillStateSchema,
|
|
479
|
+
async execute(_id, raw) {
|
|
391
480
|
const p = params(raw);
|
|
392
|
-
const
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
]);
|
|
396
|
-
await approveTransaction(client, planId, p.transactionId as string);
|
|
397
|
-
return ok(JSON.stringify({ success: true }));
|
|
398
|
-
} catch (_error) {
|
|
399
|
-
const status = await checkOnboardingStatus(openClawAdapter);
|
|
400
|
-
return ok(
|
|
401
|
-
JSON.stringify({
|
|
402
|
-
error: "onboarding_required",
|
|
403
|
-
...status,
|
|
404
|
-
}),
|
|
481
|
+
const result = await updateSkillState(
|
|
482
|
+
p.skillSlug as string,
|
|
483
|
+
p.updates as object,
|
|
405
484
|
);
|
|
406
|
-
}
|
|
407
|
-
},
|
|
408
|
-
});
|
|
409
|
-
|
|
410
|
-
api.registerTool({
|
|
411
|
-
name: "ynabro_get_plan_info",
|
|
412
|
-
label: "Get Plan Info",
|
|
413
|
-
description: "Get basic information about a plan",
|
|
414
|
-
parameters: Type.Object({}),
|
|
415
|
-
async execute() {
|
|
416
|
-
try {
|
|
417
|
-
const [client, planId] = await Promise.all([
|
|
418
|
-
Promise.resolve(getClient()),
|
|
419
|
-
getDefaultPlanId(),
|
|
420
|
-
]);
|
|
421
|
-
const result = await getPlanInfo(client, planId);
|
|
422
485
|
return ok(JSON.stringify(result, null, 2));
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
error: "onboarding_required",
|
|
428
|
-
...status,
|
|
429
|
-
}),
|
|
430
|
-
);
|
|
431
|
-
}
|
|
432
|
-
},
|
|
433
|
-
});
|
|
434
|
-
|
|
435
|
-
api.registerTool({
|
|
436
|
-
name: "ynabro_get_skill_state",
|
|
437
|
-
label: "Get Skill State",
|
|
438
|
-
description:
|
|
439
|
-
"Get the current state for a skill, including memory and auto_approve_enabled flag",
|
|
440
|
-
parameters: skillStateSchema,
|
|
441
|
-
async execute(_id, raw) {
|
|
442
|
-
const p = params(raw);
|
|
443
|
-
const result = await getSkillState(p.skillSlug as string);
|
|
444
|
-
return ok(JSON.stringify(result, null, 2));
|
|
445
|
-
},
|
|
446
|
-
});
|
|
447
|
-
|
|
448
|
-
api.registerTool({
|
|
449
|
-
name: "ynabro_update_skill_state",
|
|
450
|
-
label: "Update Skill State",
|
|
451
|
-
description:
|
|
452
|
-
"Update the state for a skill — merge partial updates into existing state",
|
|
453
|
-
parameters: updateSkillStateSchema,
|
|
454
|
-
async execute(_id, raw) {
|
|
455
|
-
const p = params(raw);
|
|
456
|
-
const result = await updateSkillState(
|
|
457
|
-
p.skillSlug as string,
|
|
458
|
-
p.updates as object,
|
|
459
|
-
);
|
|
460
|
-
return ok(JSON.stringify(result, null, 2));
|
|
461
|
-
},
|
|
462
|
-
});
|
|
486
|
+
},
|
|
487
|
+
}),
|
|
488
|
+
{ names: ["ynabro_update_skill_state"] },
|
|
489
|
+
);
|
|
463
490
|
},
|
|
464
491
|
});
|