@mind-your-now/myn 0.5.1 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/src/tools/ynab.d.ts +34 -0
- package/dist/src/tools/ynab.d.ts.map +1 -0
- package/dist/src/tools/ynab.js +154 -0
- package/dist/src/tools/ynab.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Mind Your Now - OpenClaw Plugin
|
|
3
3
|
* @mind-your-now/myn
|
|
4
4
|
*
|
|
5
|
-
* Main entry point that registers all
|
|
5
|
+
* Main entry point that registers all 14 MYN tools with the OpenClaw agent.
|
|
6
6
|
*/
|
|
7
7
|
export interface ToolDefinition {
|
|
8
8
|
id: string;
|
|
@@ -61,6 +61,7 @@ export { HouseholdInputSchema } from './src/tools/household.js';
|
|
|
61
61
|
export { ProjectsInputSchema } from './src/tools/projects.js';
|
|
62
62
|
export { PlanningInputSchema } from './src/tools/planning.js';
|
|
63
63
|
export { MynA2APairingInputSchema } from './src/tools/myn_a2a_pairing.js';
|
|
64
|
+
export { YnabInputSchema } from './src/tools/ynab.js';
|
|
64
65
|
export type { TasksInput } from './src/tools/tasks.js';
|
|
65
66
|
export type { BriefingInput } from './src/tools/briefing.js';
|
|
66
67
|
export type { CalendarInput } from './src/tools/calendar.js';
|
|
@@ -74,4 +75,5 @@ export type { HouseholdInput } from './src/tools/household.js';
|
|
|
74
75
|
export type { ProjectsInput } from './src/tools/projects.js';
|
|
75
76
|
export type { PlanningInput } from './src/tools/planning.js';
|
|
76
77
|
export type { MynA2APairingInput } from './src/tools/myn_a2a_pairing.js';
|
|
78
|
+
export type { YnabInput } from './src/tools/ynab.js';
|
|
77
79
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Mind Your Now - OpenClaw Plugin
|
|
3
3
|
* @mind-your-now/myn
|
|
4
4
|
*
|
|
5
|
-
* Main entry point that registers all
|
|
5
|
+
* Main entry point that registers all 14 MYN tools with the OpenClaw agent.
|
|
6
6
|
*/
|
|
7
7
|
import { MynApiClient } from './src/client.js';
|
|
8
8
|
import { registerTasksTool } from './src/tools/tasks.js';
|
|
@@ -18,6 +18,7 @@ import { registerHouseholdTool } from './src/tools/household.js';
|
|
|
18
18
|
import { registerProjectsTool } from './src/tools/projects.js';
|
|
19
19
|
import { registerPlanningTool } from './src/tools/planning.js';
|
|
20
20
|
import { registerA2APairingTool } from './src/tools/myn_a2a_pairing.js';
|
|
21
|
+
import { registerYnabTool } from './src/tools/ynab.js';
|
|
21
22
|
/**
|
|
22
23
|
* Normalize JSON Schema for cross-provider compatibility.
|
|
23
24
|
*
|
|
@@ -125,7 +126,8 @@ export default {
|
|
|
125
126
|
registerProjectsTool(wrappedApi, client);
|
|
126
127
|
registerPlanningTool(wrappedApi, client);
|
|
127
128
|
registerA2APairingTool(wrappedApi, baseUrl);
|
|
128
|
-
|
|
129
|
+
registerYnabTool(wrappedApi, client);
|
|
130
|
+
api.logger.info('[myn] Registered 14 tools: tasks, briefing, calendar, habits, lists, search, timers, memory, profile, household, projects, planning, a2a_pairing, ynab');
|
|
129
131
|
}
|
|
130
132
|
};
|
|
131
133
|
// Re-export types and utilities for advanced usage
|
|
@@ -144,4 +146,5 @@ export { HouseholdInputSchema } from './src/tools/household.js';
|
|
|
144
146
|
export { ProjectsInputSchema } from './src/tools/projects.js';
|
|
145
147
|
export { PlanningInputSchema } from './src/tools/planning.js';
|
|
146
148
|
export { MynA2APairingInputSchema } from './src/tools/myn_a2a_pairing.js';
|
|
149
|
+
export { YnabInputSchema } from './src/tools/ynab.js';
|
|
147
150
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* myn_ynab tool - YNAB budget management
|
|
3
|
+
*/
|
|
4
|
+
import type { MynApiClient } from '../client.js';
|
|
5
|
+
export declare const YnabInputSchema: import("@sinclair/typebox").TObject<{
|
|
6
|
+
action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"budget_overview">, import("@sinclair/typebox").TLiteral<"category_balance">, import("@sinclair/typebox").TLiteral<"account_balances">, import("@sinclair/typebox").TLiteral<"set_category_goal">, import("@sinclair/typebox").TLiteral<"spending_insights">, import("@sinclair/typebox").TLiteral<"upcoming_bills">]>;
|
|
7
|
+
categoryName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
8
|
+
goalType: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
9
|
+
goalTargetDollars: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
10
|
+
goalTargetMonth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
11
|
+
months: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
12
|
+
days: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
13
|
+
}>;
|
|
14
|
+
export type YnabInput = typeof YnabInputSchema.static;
|
|
15
|
+
export declare function executeYnab(client: MynApiClient, input: YnabInput): Promise<{
|
|
16
|
+
success: true;
|
|
17
|
+
data: unknown;
|
|
18
|
+
} | {
|
|
19
|
+
success: false;
|
|
20
|
+
error: string;
|
|
21
|
+
details?: unknown;
|
|
22
|
+
}>;
|
|
23
|
+
interface OpenClawPluginApi {
|
|
24
|
+
registerTool(tool: {
|
|
25
|
+
id: string;
|
|
26
|
+
name: string;
|
|
27
|
+
description: string;
|
|
28
|
+
inputSchema: unknown;
|
|
29
|
+
execute: (input: unknown) => Promise<unknown>;
|
|
30
|
+
}): void;
|
|
31
|
+
}
|
|
32
|
+
export declare function registerYnabTool(api: OpenClawPluginApi, client: MynApiClient): void;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=ynab.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ynab.d.ts","sourceRoot":"","sources":["../../../src/tools/ynab.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,eAAe;;;;;;;;EAmB1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC;AAyCtD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAwBlG;AA2ED,UAAU,iBAAiB;IACzB,YAAY,CAAC,IAAI,EAAE;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/C,GAAG,IAAI,CAAC;CACV;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAUnF"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* myn_ynab tool - YNAB budget management
|
|
3
|
+
*/
|
|
4
|
+
import { Type } from '@sinclair/typebox';
|
|
5
|
+
import { jsonResult, errorResult } from '../client.js';
|
|
6
|
+
export const YnabInputSchema = Type.Object({
|
|
7
|
+
action: Type.Union([
|
|
8
|
+
Type.Literal('budget_overview'),
|
|
9
|
+
Type.Literal('category_balance'),
|
|
10
|
+
Type.Literal('account_balances'),
|
|
11
|
+
Type.Literal('set_category_goal'),
|
|
12
|
+
Type.Literal('spending_insights'),
|
|
13
|
+
Type.Literal('upcoming_bills')
|
|
14
|
+
]),
|
|
15
|
+
// category_balance / set_category_goal parameters
|
|
16
|
+
categoryName: Type.Optional(Type.String({ description: 'Category name to search for (fuzzy match)' })),
|
|
17
|
+
// set_category_goal parameters
|
|
18
|
+
goalType: Type.Optional(Type.String({ description: 'Goal type: TB (Target Balance), TBD (Target Balance by Date), MF (Monthly Funding), NEED (Plan Your Spending)' })),
|
|
19
|
+
goalTargetDollars: Type.Optional(Type.Number({ description: 'Goal target amount in dollars (e.g., 500.00)' })),
|
|
20
|
+
goalTargetMonth: Type.Optional(Type.String({ description: 'Target month in YYYY-MM format (e.g., 2026-06). Required for TBD goals.' })),
|
|
21
|
+
// spending_insights parameters
|
|
22
|
+
months: Type.Optional(Type.Number({ description: 'Number of months to analyze (default: 3)' })),
|
|
23
|
+
// upcoming_bills parameters
|
|
24
|
+
days: Type.Optional(Type.Number({ description: 'Number of days to look ahead for bills (default: 7)' }))
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Convert YNAB milliunits to formatted dollar string.
|
|
28
|
+
* YNAB API returns all monetary amounts in milliunits (÷1000 for dollars).
|
|
29
|
+
*/
|
|
30
|
+
function formatDollars(milliunits) {
|
|
31
|
+
const dollars = milliunits / 1000;
|
|
32
|
+
const abs = Math.abs(dollars);
|
|
33
|
+
const formatted = abs.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
|
|
34
|
+
return dollars < 0 ? `-$${formatted}` : `$${formatted}`;
|
|
35
|
+
}
|
|
36
|
+
/** Known milliunit field names in YNAB API responses */
|
|
37
|
+
const MILLIUNIT_FIELDS = new Set([
|
|
38
|
+
'readyToAssign', 'totalIncome', 'totalBudgeted', 'totalActivity',
|
|
39
|
+
'balance', 'budgeted', 'activity', 'clearedBalance', 'unclearedBalance',
|
|
40
|
+
'goalTarget', 'goalUnderFunded', 'goalOverFunded', 'goalOverallFunded', 'goalOverallLeft',
|
|
41
|
+
'amount', 'total', 'totalSpending'
|
|
42
|
+
]);
|
|
43
|
+
/**
|
|
44
|
+
* Recursively convert milliunit fields to dollar strings in API responses.
|
|
45
|
+
*/
|
|
46
|
+
function convertMilliunits(obj) {
|
|
47
|
+
if (obj === null || obj === undefined)
|
|
48
|
+
return obj;
|
|
49
|
+
if (Array.isArray(obj))
|
|
50
|
+
return obj.map(convertMilliunits);
|
|
51
|
+
if (typeof obj === 'object') {
|
|
52
|
+
const result = {};
|
|
53
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
54
|
+
if (MILLIUNIT_FIELDS.has(key) && typeof value === 'number') {
|
|
55
|
+
result[key] = formatDollars(value);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
result[key] = convertMilliunits(value);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
return obj;
|
|
64
|
+
}
|
|
65
|
+
export async function executeYnab(client, input) {
|
|
66
|
+
try {
|
|
67
|
+
switch (input.action) {
|
|
68
|
+
case 'budget_overview':
|
|
69
|
+
return await getBudgetOverview(client);
|
|
70
|
+
case 'category_balance':
|
|
71
|
+
return await getCategoryBalance(client, input);
|
|
72
|
+
case 'account_balances':
|
|
73
|
+
return await getAccountBalances(client);
|
|
74
|
+
case 'set_category_goal':
|
|
75
|
+
return await setCategoryGoal(client, input);
|
|
76
|
+
case 'spending_insights':
|
|
77
|
+
return await getSpendingInsights(client, input);
|
|
78
|
+
case 'upcoming_bills':
|
|
79
|
+
return await getUpcomingBills(client, input);
|
|
80
|
+
default:
|
|
81
|
+
return errorResult(`Unknown action: ${input.action}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (error instanceof Error) {
|
|
86
|
+
return errorResult(error.message);
|
|
87
|
+
}
|
|
88
|
+
return errorResult('Unknown error occurred');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async function getBudgetOverview(client) {
|
|
92
|
+
const data = await client.get('/api/v1/ynab/budget/overview');
|
|
93
|
+
return jsonResult(convertMilliunits(data));
|
|
94
|
+
}
|
|
95
|
+
async function getCategoryBalance(client, input) {
|
|
96
|
+
if (!input.categoryName) {
|
|
97
|
+
return errorResult('categoryName is required for category_balance action');
|
|
98
|
+
}
|
|
99
|
+
const data = await client.get(`/api/v1/ynab/budget/categories/search?query=${encodeURIComponent(input.categoryName)}`);
|
|
100
|
+
return jsonResult(convertMilliunits(data));
|
|
101
|
+
}
|
|
102
|
+
async function getAccountBalances(client) {
|
|
103
|
+
const data = await client.get('/api/v1/ynab/budget/accounts');
|
|
104
|
+
return jsonResult(convertMilliunits(data));
|
|
105
|
+
}
|
|
106
|
+
async function setCategoryGoal(client, input) {
|
|
107
|
+
if (!input.categoryName) {
|
|
108
|
+
return errorResult('categoryName is required for set_category_goal action');
|
|
109
|
+
}
|
|
110
|
+
if (!input.goalType) {
|
|
111
|
+
return errorResult('goalType is required for set_category_goal action (TB, TBD, MF, NEED)');
|
|
112
|
+
}
|
|
113
|
+
// First find the category by name to get its ID
|
|
114
|
+
const searchResult = await client.get(`/api/v1/ynab/budget/categories/search?query=${encodeURIComponent(input.categoryName)}`);
|
|
115
|
+
if (!searchResult || !searchResult.id) {
|
|
116
|
+
return errorResult(`Category '${input.categoryName}' not found`);
|
|
117
|
+
}
|
|
118
|
+
// Format target month as YYYY-MM-01 if provided
|
|
119
|
+
let goalTargetMonth = input.goalTargetMonth;
|
|
120
|
+
if (goalTargetMonth && !goalTargetMonth.endsWith('-01')) {
|
|
121
|
+
goalTargetMonth = goalTargetMonth + '-01';
|
|
122
|
+
}
|
|
123
|
+
const body = {
|
|
124
|
+
goalType: input.goalType
|
|
125
|
+
};
|
|
126
|
+
if (input.goalTargetDollars != null)
|
|
127
|
+
body.goalTargetDollars = input.goalTargetDollars;
|
|
128
|
+
if (goalTargetMonth)
|
|
129
|
+
body.goalTargetMonth = goalTargetMonth;
|
|
130
|
+
const data = await client.patch(`/api/v1/ynab/budget/categories/${searchResult.id}/goal`, body);
|
|
131
|
+
return jsonResult(convertMilliunits(data));
|
|
132
|
+
}
|
|
133
|
+
async function getSpendingInsights(client, input) {
|
|
134
|
+
const months = input.months || 3;
|
|
135
|
+
const data = await client.get(`/api/v1/ynab/analytics/spending?months=${months}`);
|
|
136
|
+
return jsonResult(convertMilliunits(data));
|
|
137
|
+
}
|
|
138
|
+
async function getUpcomingBills(client, input) {
|
|
139
|
+
const days = input.days || 7;
|
|
140
|
+
const data = await client.get(`/api/v1/ynab/scheduled?days=${days}`);
|
|
141
|
+
return jsonResult(convertMilliunits(data));
|
|
142
|
+
}
|
|
143
|
+
export function registerYnabTool(api, client) {
|
|
144
|
+
api.registerTool({
|
|
145
|
+
id: 'myn_ynab',
|
|
146
|
+
name: 'MYN YNAB',
|
|
147
|
+
description: 'YNAB budget management. Actions: budget_overview, category_balance, account_balances, set_category_goal (TB/TBD/MF/NEED), spending_insights, upcoming_bills.',
|
|
148
|
+
inputSchema: YnabInputSchema,
|
|
149
|
+
async execute(input) {
|
|
150
|
+
return executeYnab(client, input);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=ynab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ynab.js","sourceRoot":"","sources":["../../../src/tools/ynab.ts"],"names":[],"mappings":"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"}
|