@mind-your-now/myn 0.7.14 → 0.7.16
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.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/src/client.d.ts +21 -0
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +105 -0
- package/dist/src/client.js.map +1 -1
- package/dist/src/tools/calendar.d.ts.map +1 -1
- package/dist/src/tools/calendar.js +11 -3
- package/dist/src/tools/calendar.js.map +1 -1
- package/dist/src/tools/debrief.d.ts.map +1 -1
- package/dist/src/tools/debrief.js +5 -3
- package/dist/src/tools/debrief.js.map +1 -1
- package/dist/src/tools/household.d.ts.map +1 -1
- package/dist/src/tools/household.js +6 -3
- package/dist/src/tools/household.js.map +1 -1
- package/dist/src/tools/memory.d.ts.map +1 -1
- package/dist/src/tools/memory.js +9 -3
- package/dist/src/tools/memory.js.map +1 -1
- package/dist/src/tools/myn_a2a_pairing.d.ts.map +1 -1
- package/dist/src/tools/myn_a2a_pairing.js +19 -3
- package/dist/src/tools/myn_a2a_pairing.js.map +1 -1
- package/dist/src/tools/planning.js +4 -4
- package/dist/src/tools/planning.js.map +1 -1
- package/dist/src/tools/profile.d.ts.map +1 -1
- package/dist/src/tools/profile.js +11 -8
- package/dist/src/tools/profile.js.map +1 -1
- package/dist/src/tools/syncOnMismatch.d.ts +7 -2
- package/dist/src/tools/syncOnMismatch.d.ts.map +1 -1
- package/dist/src/tools/syncOnMismatch.js +19 -4
- package/dist/src/tools/syncOnMismatch.js.map +1 -1
- package/dist/src/tools/tasks.d.ts +1 -10
- package/dist/src/tools/tasks.d.ts.map +1 -1
- package/dist/src/tools/tasks.js +49 -211
- package/dist/src/tools/tasks.js.map +1 -1
- package/dist/src/tools/timers.d.ts.map +1 -1
- package/dist/src/tools/timers.js +5 -3
- package/dist/src/tools/timers.js.map +1 -1
- package/dist/src/tools/ynab.d.ts +1 -1
- package/dist/src/tools/ynab.d.ts.map +1 -1
- package/dist/src/tools/ynab.js +36 -12
- package/dist/src/tools/ynab.js.map +1 -1
- package/dist/src/validation.d.ts +22 -0
- package/dist/src/validation.d.ts.map +1 -0
- package/dist/src/validation.js +44 -0
- package/dist/src/validation.js.map +1 -0
- package/package.json +2 -2
package/dist/src/tools/tasks.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* myn_tasks tool - Task CRUD, lifecycle, and search
|
|
3
3
|
*/
|
|
4
4
|
import { Type } from '@sinclair/typebox';
|
|
5
|
-
import { jsonResult, errorResult } from '../client.js';
|
|
6
|
-
import {
|
|
5
|
+
import { jsonResult, errorResult, guardedPatch, guardedPost } from '../client.js';
|
|
6
|
+
import { validateUuid } from '../validation.js';
|
|
7
7
|
// Schema definitions
|
|
8
8
|
const PrioritySchema = Type.Union([
|
|
9
9
|
Type.Literal('CRITICAL'),
|
|
@@ -30,13 +30,7 @@ export const TasksInputSchema = Type.Object({
|
|
|
30
30
|
Type.Literal('update'),
|
|
31
31
|
Type.Literal('complete'),
|
|
32
32
|
Type.Literal('archive'),
|
|
33
|
-
Type.Literal('search')
|
|
34
|
-
Type.Literal('share'),
|
|
35
|
-
Type.Literal('share_respond'),
|
|
36
|
-
Type.Literal('unshare'),
|
|
37
|
-
Type.Literal('get_shares'),
|
|
38
|
-
Type.Literal('shared_with_me'),
|
|
39
|
-
Type.Literal('list_schedules')
|
|
33
|
+
Type.Literal('search')
|
|
40
34
|
]),
|
|
41
35
|
// List parameters
|
|
42
36
|
status: Type.Optional(TaskStatusSchema),
|
|
@@ -59,28 +53,11 @@ export const TasksInputSchema = Type.Object({
|
|
|
59
53
|
isAutoScheduled: Type.Optional(Type.Boolean({ description: 'Enable auto-scheduling by the planning system. Use this field name, NOT autoScheduleEnabled.' })),
|
|
60
54
|
autoScheduleEnabled: Type.Optional(Type.Boolean({ description: 'DEPRECATED alias for isAutoScheduled. Prefer isAutoScheduled.' })),
|
|
61
55
|
calendarId: Type.Optional(Type.String({ description: 'Calendar ID to link this task to (e.g. "primary" for default Google Calendar)' })),
|
|
62
|
-
calendarName: Type.Optional(Type.String({ description: 'Calendar name (fuzzy matched to resolve ID). E.g. "family", "work". Use this instead of calendarId when the user refers to a calendar by name.' })),
|
|
63
|
-
scheduleIds: Type.Optional(Type.Array(Type.String({ format: 'uuid' }), { description: 'Schedule IDs to assign to the task. Controls WHEN the planner can place the task. Use list_schedules to find IDs. IMPORTANT: Always assign at least one schedule to avoid midnight scheduling.' })),
|
|
64
|
-
scheduleNames: Type.Optional(Type.Array(Type.String(), { description: 'Schedule names (fuzzy matched to IDs). E.g. ["Morning", "Weekdays"]. Use list_schedules to see available names. IMPORTANT: Always assign schedules — without them, auto-scheduled tasks get placed at midnight.' })),
|
|
65
56
|
// Update specific
|
|
66
57
|
updates: Type.Optional(Type.Record(Type.String(), Type.Unknown())),
|
|
67
58
|
// Search parameters
|
|
68
59
|
query: Type.Optional(Type.String()),
|
|
69
|
-
includeArchived: Type.Optional(Type.Boolean({ default: false }))
|
|
70
|
-
// Share parameters
|
|
71
|
-
memberNames: Type.Optional(Type.Array(Type.String(), { description: 'Names of household members to share with (fuzzy matched). Used by share action.' })),
|
|
72
|
-
memberIds: Type.Optional(Type.Array(Type.String({ format: 'uuid' }), { description: 'UUIDs of household members to share with. Used by share action. Use memberNames instead if you have names.' })),
|
|
73
|
-
shareType: Type.Optional(Type.Union([
|
|
74
|
-
Type.Literal('VIEW'),
|
|
75
|
-
Type.Literal('EDIT'),
|
|
76
|
-
Type.Literal('DELEGATE')
|
|
77
|
-
], { description: 'Share permission level. VIEW=read-only, EDIT=can modify, DELEGATE=transfer ownership. Default: EDIT.' })),
|
|
78
|
-
shareMessage: Type.Optional(Type.String({ description: 'Optional message to include with share invitation.' })),
|
|
79
|
-
shareResponse: Type.Optional(Type.Union([
|
|
80
|
-
Type.Literal('ACCEPT'),
|
|
81
|
-
Type.Literal('DECLINE')
|
|
82
|
-
], { description: 'Response to a pending share. Used by share_respond action.' })),
|
|
83
|
-
memberId: Type.Optional(Type.String({ format: 'uuid', description: 'Single member ID. Used by unshare to revoke a specific member\'s access.' }))
|
|
60
|
+
includeArchived: Type.Optional(Type.Boolean({ default: false }))
|
|
84
61
|
});
|
|
85
62
|
export async function executeTasks(client, input) {
|
|
86
63
|
try {
|
|
@@ -99,18 +76,6 @@ export async function executeTasks(client, input) {
|
|
|
99
76
|
return await archiveTask(client, input);
|
|
100
77
|
case 'search':
|
|
101
78
|
return await searchTasks(client, input);
|
|
102
|
-
case 'share':
|
|
103
|
-
return await shareTask(client, input);
|
|
104
|
-
case 'share_respond':
|
|
105
|
-
return await respondToShare(client, input);
|
|
106
|
-
case 'unshare':
|
|
107
|
-
return await unshareTask(client, input);
|
|
108
|
-
case 'get_shares':
|
|
109
|
-
return await getShares(client, input);
|
|
110
|
-
case 'shared_with_me':
|
|
111
|
-
return await getSharedWithMe(client);
|
|
112
|
-
case 'list_schedules':
|
|
113
|
-
return await listSchedules(client);
|
|
114
79
|
default:
|
|
115
80
|
return errorResult(`Unknown action: ${input.action}`);
|
|
116
81
|
}
|
|
@@ -146,6 +111,9 @@ async function getTask(client, input) {
|
|
|
146
111
|
if (!input.taskId) {
|
|
147
112
|
return errorResult('taskId is required for get action');
|
|
148
113
|
}
|
|
114
|
+
const uuidErr = validateUuid(input.taskId, 'taskId');
|
|
115
|
+
if (uuidErr)
|
|
116
|
+
return errorResult(uuidErr);
|
|
149
117
|
const data = await client.get(`/api/v2/unified-tasks/${input.taskId}`);
|
|
150
118
|
return jsonResult(data);
|
|
151
119
|
}
|
|
@@ -184,92 +152,74 @@ async function createTask(client, input) {
|
|
|
184
152
|
const autoSched = input.isAutoScheduled ?? input.autoScheduleEnabled;
|
|
185
153
|
if (autoSched != null)
|
|
186
154
|
body.isAutoScheduled = autoSched;
|
|
187
|
-
|
|
188
|
-
if (input.calendarName && !input.calendarId) {
|
|
189
|
-
const resolvedCalId = await resolveCalendarId(client, input.calendarName);
|
|
190
|
-
if (!resolvedCalId) {
|
|
191
|
-
return errorResult(`Calendar '${input.calendarName}' not found. Use myn_calendar list_calendars to see available calendars.`);
|
|
192
|
-
}
|
|
193
|
-
body.calendarId = resolvedCalId;
|
|
194
|
-
}
|
|
195
|
-
else if (input.calendarId) {
|
|
155
|
+
if (input.calendarId)
|
|
196
156
|
body.calendarId = input.calendarId;
|
|
197
|
-
}
|
|
198
|
-
// Resolve schedule names to IDs if provided
|
|
199
|
-
let resolvedScheduleIds = input.scheduleIds || [];
|
|
200
|
-
if (input.scheduleNames && input.scheduleNames.length > 0) {
|
|
201
|
-
const result = await resolveScheduleIds(client, input.scheduleNames);
|
|
202
|
-
if (result.notFound.length > 0) {
|
|
203
|
-
return errorResult(`Could not find schedules: ${result.notFound.join(', ')}. Use list_schedules action to see available schedules.`);
|
|
204
|
-
}
|
|
205
|
-
resolvedScheduleIds = [...resolvedScheduleIds, ...result.ids];
|
|
206
|
-
}
|
|
207
|
-
if (resolvedScheduleIds.length > 0) {
|
|
208
|
-
body.scheduleIds = resolvedScheduleIds;
|
|
209
|
-
}
|
|
210
157
|
// Validation: HABIT and CHORE must have recurrenceRule
|
|
211
158
|
if ((input.taskType === 'HABIT' || input.taskType === 'CHORE') && !input.recurrenceRule) {
|
|
212
159
|
return errorResult(`${input.taskType} type requires recurrenceRule`);
|
|
213
160
|
}
|
|
214
161
|
const data = await client.post('/api/v2/unified-tasks', body);
|
|
215
|
-
// Auto-share if memberNames or memberIds provided during creation
|
|
216
|
-
const hasShareTargets = (input.memberNames && input.memberNames.length > 0) || (input.memberIds && input.memberIds.length > 0);
|
|
217
|
-
if (hasShareTargets) {
|
|
218
|
-
let resolvedIds = input.memberIds || [];
|
|
219
|
-
if (input.memberNames && input.memberNames.length > 0) {
|
|
220
|
-
const result = await resolveMemberIds(client, input.memberNames);
|
|
221
|
-
if (result.notFound.length > 0) {
|
|
222
|
-
// Task was created but sharing failed — return both results
|
|
223
|
-
return jsonResult({
|
|
224
|
-
task: data,
|
|
225
|
-
sharing: { success: false, error: `Task created but could not find household members to share with: ${result.notFound.join(', ')}` }
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
resolvedIds = [...resolvedIds, ...result.ids];
|
|
229
|
-
}
|
|
230
|
-
if (resolvedIds.length > 0) {
|
|
231
|
-
try {
|
|
232
|
-
const shareBody = {
|
|
233
|
-
member_ids: resolvedIds,
|
|
234
|
-
share_type: input.shareType || 'EDIT'
|
|
235
|
-
};
|
|
236
|
-
if (input.shareMessage)
|
|
237
|
-
shareBody.message = input.shareMessage;
|
|
238
|
-
const shareResult = await client.post(`/api/v2/unified-tasks/${input.id}/share`, shareBody);
|
|
239
|
-
return jsonResult({ task: data, sharing: { success: true, data: shareResult } });
|
|
240
|
-
}
|
|
241
|
-
catch (shareError) {
|
|
242
|
-
return jsonResult({
|
|
243
|
-
task: data,
|
|
244
|
-
sharing: { success: false, error: shareError instanceof Error ? shareError.message : 'Failed to share task' }
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
162
|
return jsonResult(data);
|
|
250
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* W2: Allowlist of safe fields for task updates.
|
|
166
|
+
* Blocks sensitive fields like ownerId, householdId, createdBy, isLocked.
|
|
167
|
+
*/
|
|
168
|
+
const ALLOWED_UPDATE_FIELDS = new Set([
|
|
169
|
+
'title', 'description', 'priority', 'status', 'startDate', 'endDate',
|
|
170
|
+
'duration', 'projectId', 'recurrenceRule', 'isAutoScheduled', 'autoScheduleEnabled',
|
|
171
|
+
'calendarId', 'location', 'notes', 'tags', 'estimatedMinutes', 'actualMinutes',
|
|
172
|
+
'completedAt', 'archivedAt', 'taskType', 'assignedTo', 'scheduledAt', 'dueDate'
|
|
173
|
+
]);
|
|
251
174
|
async function updateTask(client, input) {
|
|
252
175
|
if (!input.taskId) {
|
|
253
176
|
return errorResult('taskId is required for update action');
|
|
254
177
|
}
|
|
178
|
+
const uuidErr = validateUuid(input.taskId, 'taskId');
|
|
179
|
+
if (uuidErr)
|
|
180
|
+
return errorResult(uuidErr);
|
|
255
181
|
if (!input.updates || Object.keys(input.updates).length === 0) {
|
|
256
182
|
return errorResult('updates object is required for update action');
|
|
257
183
|
}
|
|
258
|
-
|
|
184
|
+
// W2: Filter updates to only allowed fields (mass assignment prevention)
|
|
185
|
+
const filteredUpdates = {};
|
|
186
|
+
const rejectedFields = [];
|
|
187
|
+
for (const [key, value] of Object.entries(input.updates)) {
|
|
188
|
+
if (ALLOWED_UPDATE_FIELDS.has(key)) {
|
|
189
|
+
filteredUpdates[key] = value;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
rejectedFields.push(key);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (Object.keys(filteredUpdates).length === 0) {
|
|
196
|
+
return errorResult(`No valid update fields provided. Rejected fields: ${rejectedFields.join(', ')}. ` +
|
|
197
|
+
`Allowed fields: ${Array.from(ALLOWED_UPDATE_FIELDS).join(', ')}`);
|
|
198
|
+
}
|
|
199
|
+
// MIN-740: read-before-write — automatically reads current stateHash, retries on 409
|
|
200
|
+
const data = await guardedPatch(client, `/api/v2/unified-tasks/${input.taskId}`, filteredUpdates, `/api/v2/unified-tasks/${input.taskId}`);
|
|
259
201
|
return jsonResult(data);
|
|
260
202
|
}
|
|
261
203
|
async function completeTask(client, input) {
|
|
262
204
|
if (!input.taskId) {
|
|
263
205
|
return errorResult('taskId is required for complete action');
|
|
264
206
|
}
|
|
265
|
-
const
|
|
207
|
+
const uuidErr = validateUuid(input.taskId, 'taskId');
|
|
208
|
+
if (uuidErr)
|
|
209
|
+
return errorResult(uuidErr);
|
|
210
|
+
// MIN-740: read-before-write — reads task first to get stateHash
|
|
211
|
+
const data = await guardedPost(client, `/api/v2/unified-tasks/${input.taskId}/complete`, {}, `/api/v2/unified-tasks/${input.taskId}`);
|
|
266
212
|
return jsonResult(data);
|
|
267
213
|
}
|
|
268
214
|
async function archiveTask(client, input) {
|
|
269
215
|
if (!input.taskId) {
|
|
270
216
|
return errorResult('taskId is required for archive action');
|
|
271
217
|
}
|
|
272
|
-
const
|
|
218
|
+
const uuidErr = validateUuid(input.taskId, 'taskId');
|
|
219
|
+
if (uuidErr)
|
|
220
|
+
return errorResult(uuidErr);
|
|
221
|
+
// MIN-740: read-before-write — reads task first to get stateHash
|
|
222
|
+
const data = await guardedPost(client, `/api/v2/unified-tasks/${input.taskId}/archive`, {}, `/api/v2/unified-tasks/${input.taskId}`);
|
|
273
223
|
return jsonResult(data);
|
|
274
224
|
}
|
|
275
225
|
async function searchTasks(client, input) {
|
|
@@ -286,123 +236,11 @@ async function searchTasks(client, input) {
|
|
|
286
236
|
const data = await client.get(`/api/v2/search${queryString}`);
|
|
287
237
|
return jsonResult(data);
|
|
288
238
|
}
|
|
289
|
-
async function listSchedules(client) {
|
|
290
|
-
const data = await client.get('/api/schedules');
|
|
291
|
-
return jsonResult(data);
|
|
292
|
-
}
|
|
293
|
-
/** Resolve schedule names to IDs by fetching available schedules and fuzzy matching. */
|
|
294
|
-
async function resolveScheduleIds(client, names) {
|
|
295
|
-
const data = await client.get('/api/schedules');
|
|
296
|
-
if (!data || !Array.isArray(data)) {
|
|
297
|
-
return { ids: [], notFound: names };
|
|
298
|
-
}
|
|
299
|
-
const ids = [];
|
|
300
|
-
const notFound = [];
|
|
301
|
-
for (const name of names) {
|
|
302
|
-
const nameLower = name.toLowerCase();
|
|
303
|
-
const match = data.find(s => s.name.toLowerCase() === nameLower ||
|
|
304
|
-
s.name.toLowerCase().includes(nameLower) ||
|
|
305
|
-
nameLower.includes(s.name.toLowerCase()));
|
|
306
|
-
if (match) {
|
|
307
|
-
ids.push(match.id);
|
|
308
|
-
}
|
|
309
|
-
else {
|
|
310
|
-
notFound.push(name);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
return { ids, notFound };
|
|
314
|
-
}
|
|
315
|
-
/** Resolve member names to IDs by fetching household members and fuzzy matching. */
|
|
316
|
-
async function resolveMemberIds(client, names) {
|
|
317
|
-
// Get current household
|
|
318
|
-
const household = await client.get('/api/v1/households/current');
|
|
319
|
-
if (!household?.id) {
|
|
320
|
-
return { ids: [], notFound: names };
|
|
321
|
-
}
|
|
322
|
-
const data = await client.get(`/api/v1/households/${household.id}/members`);
|
|
323
|
-
if (!data?.members) {
|
|
324
|
-
return { ids: [], notFound: names };
|
|
325
|
-
}
|
|
326
|
-
const ids = [];
|
|
327
|
-
const notFound = [];
|
|
328
|
-
for (const name of names) {
|
|
329
|
-
const nameLower = name.toLowerCase();
|
|
330
|
-
const match = data.members.find(m => m.name.toLowerCase() === nameLower ||
|
|
331
|
-
m.name.toLowerCase().includes(nameLower) ||
|
|
332
|
-
nameLower.includes(m.name.toLowerCase()) ||
|
|
333
|
-
m.email.toLowerCase().startsWith(nameLower));
|
|
334
|
-
if (match) {
|
|
335
|
-
ids.push(match.id);
|
|
336
|
-
}
|
|
337
|
-
else {
|
|
338
|
-
notFound.push(name);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
return { ids, notFound };
|
|
342
|
-
}
|
|
343
|
-
async function shareTask(client, input) {
|
|
344
|
-
if (!input.taskId) {
|
|
345
|
-
return errorResult('taskId is required for share action');
|
|
346
|
-
}
|
|
347
|
-
let resolvedIds = input.memberIds || [];
|
|
348
|
-
// Resolve names to IDs if memberNames provided
|
|
349
|
-
if (input.memberNames && input.memberNames.length > 0) {
|
|
350
|
-
const result = await resolveMemberIds(client, input.memberNames);
|
|
351
|
-
if (result.notFound.length > 0) {
|
|
352
|
-
return errorResult(`Could not find household members: ${result.notFound.join(', ')}. Use myn_household members action to see available members.`);
|
|
353
|
-
}
|
|
354
|
-
resolvedIds = [...resolvedIds, ...result.ids];
|
|
355
|
-
}
|
|
356
|
-
if (resolvedIds.length === 0) {
|
|
357
|
-
return errorResult('memberNames or memberIds is required for share action. Provide names (fuzzy matched) or UUIDs of household members.');
|
|
358
|
-
}
|
|
359
|
-
const body = {
|
|
360
|
-
member_ids: resolvedIds,
|
|
361
|
-
share_type: input.shareType || 'EDIT'
|
|
362
|
-
};
|
|
363
|
-
if (input.shareMessage)
|
|
364
|
-
body.message = input.shareMessage;
|
|
365
|
-
const data = await client.post(`/api/v2/unified-tasks/${input.taskId}/share`, body);
|
|
366
|
-
return jsonResult(data);
|
|
367
|
-
}
|
|
368
|
-
async function respondToShare(client, input) {
|
|
369
|
-
if (!input.taskId) {
|
|
370
|
-
return errorResult('taskId is required for share_respond action');
|
|
371
|
-
}
|
|
372
|
-
if (!input.shareResponse) {
|
|
373
|
-
return errorResult('shareResponse (ACCEPT or DECLINE) is required for share_respond action');
|
|
374
|
-
}
|
|
375
|
-
const data = await client.post(`/api/v2/unified-tasks/${input.taskId}/share/respond`, {
|
|
376
|
-
response: input.shareResponse
|
|
377
|
-
});
|
|
378
|
-
return jsonResult(data);
|
|
379
|
-
}
|
|
380
|
-
async function unshareTask(client, input) {
|
|
381
|
-
if (!input.taskId) {
|
|
382
|
-
return errorResult('taskId is required for unshare action');
|
|
383
|
-
}
|
|
384
|
-
if (!input.memberId) {
|
|
385
|
-
return errorResult('memberId is required for unshare action');
|
|
386
|
-
}
|
|
387
|
-
const data = await client.delete(`/api/v2/unified-tasks/${input.taskId}/share/${input.memberId}`);
|
|
388
|
-
return jsonResult(data);
|
|
389
|
-
}
|
|
390
|
-
async function getShares(client, input) {
|
|
391
|
-
if (!input.taskId) {
|
|
392
|
-
return errorResult('taskId is required for get_shares action');
|
|
393
|
-
}
|
|
394
|
-
const data = await client.get(`/api/v2/unified-tasks/${input.taskId}/shares`);
|
|
395
|
-
return jsonResult(data);
|
|
396
|
-
}
|
|
397
|
-
async function getSharedWithMe(client) {
|
|
398
|
-
const data = await client.get('/api/v2/unified-tasks/shared-with-me');
|
|
399
|
-
return jsonResult(data);
|
|
400
|
-
}
|
|
401
239
|
export function registerTasksTool(api, client) {
|
|
402
240
|
api.registerTool({
|
|
403
241
|
id: 'myn_tasks',
|
|
404
242
|
name: 'MYN Tasks',
|
|
405
|
-
description: 'Manage tasks, habits, and chores. Actions: list, get, create, update, complete, archive, search
|
|
243
|
+
description: 'Manage tasks, habits, and chores. Actions: list, get, create, update, complete, archive, search.',
|
|
406
244
|
inputSchema: TasksInputSchema,
|
|
407
245
|
async execute(input) {
|
|
408
246
|
return executeTasks(client, input);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timers.d.ts","sourceRoot":"","sources":["../../../src/tools/timers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EA2B5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC;AAE1D,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,GACjB,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;
|
|
1
|
+
{"version":3,"file":"timers.d.ts","sourceRoot":"","sources":["../../../src/tools/timers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EA2B5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC;AAE1D,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,WAAW,GACjB,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;AAgJD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAUrF;AAGD,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;IACT,MAAM,EAAE;QACN,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC"}
|
package/dist/src/tools/timers.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* myn_timers tool - Countdown, alarm, and pomodoro timers
|
|
3
3
|
*/
|
|
4
4
|
import { Type } from '@sinclair/typebox';
|
|
5
|
-
import { jsonResult, errorResult } from '../client.js';
|
|
5
|
+
import { jsonResult, errorResult, guardedPost } from '../client.js';
|
|
6
6
|
export const TimersInputSchema = Type.Object({
|
|
7
7
|
action: Type.Union([
|
|
8
8
|
Type.Literal('create_countdown'),
|
|
@@ -97,7 +97,8 @@ async function cancelTimer(client, input) {
|
|
|
97
97
|
if (!input.timerId) {
|
|
98
98
|
return errorResult('timerId is required for cancel action');
|
|
99
99
|
}
|
|
100
|
-
|
|
100
|
+
// MIN-740: guardedPost reads state hash from timer before cancelling
|
|
101
|
+
const data = await guardedPost(client, `/api/v2/timers/${input.timerId}/cancel`, undefined, `/api/v2/timers/${input.timerId}`);
|
|
101
102
|
return jsonResult(data);
|
|
102
103
|
}
|
|
103
104
|
async function snoozeTimer(client, input) {
|
|
@@ -107,7 +108,8 @@ async function snoozeTimer(client, input) {
|
|
|
107
108
|
const body = {
|
|
108
109
|
snoozeMinutes: input.snoozeMinutes ?? 5
|
|
109
110
|
};
|
|
110
|
-
|
|
111
|
+
// MIN-740: guardedPost reads state hash from timer before snoozing
|
|
112
|
+
const data = await guardedPost(client, `/api/v2/timers/${input.timerId}/snooze`, body, `/api/v2/timers/${input.timerId}`);
|
|
111
113
|
return jsonResult(data);
|
|
112
114
|
}
|
|
113
115
|
async function createPomodoro(client, input) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../src/tools/timers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"timers.js","sourceRoot":"","sources":["../../../src/tools/timers.ts"],"names":[],"mappings":"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"}
|
package/dist/src/tools/ynab.d.ts
CHANGED
|
@@ -44,7 +44,7 @@ export declare const YnabInputSchema: import("@sinclair/typebox").TObject<{
|
|
|
44
44
|
accountId: import("@sinclair/typebox").TString;
|
|
45
45
|
payeeName: import("@sinclair/typebox").TString;
|
|
46
46
|
amount: import("@sinclair/typebox").TNumber;
|
|
47
|
-
categoryName: import("@sinclair/typebox").
|
|
47
|
+
categoryName: import("@sinclair/typebox").TString;
|
|
48
48
|
date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
49
49
|
memo: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
50
50
|
}>>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ynab.d.ts","sourceRoot":"","sources":["../../../src/tools/ynab.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkG1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC;AAuDtD,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,CAiGlG;
|
|
1
|
+
{"version":3,"file":"ynab.d.ts","sourceRoot":"","sources":["../../../src/tools/ynab.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkG1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,CAAC,MAAM,CAAC;AAuDtD,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,CAiGlG;AAggBD,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,CAuBnF"}
|
package/dist/src/tools/ynab.js
CHANGED
|
@@ -91,7 +91,7 @@ export const YnabInputSchema = Type.Object({
|
|
|
91
91
|
accountId: Type.String({ description: 'YNAB account ID.' }),
|
|
92
92
|
payeeName: Type.String({ description: 'Payee name.' }),
|
|
93
93
|
amount: Type.Number({ description: 'Amount in dollars. Negative for expenses.' }),
|
|
94
|
-
categoryName: Type.
|
|
94
|
+
categoryName: Type.String({ description: 'Category name (fuzzy match). REQUIRED — use list_categories to find it.' }),
|
|
95
95
|
date: Type.Optional(Type.String({ description: 'Date YYYY-MM-DD. Defaults to today.' })),
|
|
96
96
|
memo: Type.Optional(Type.String({ description: 'Optional memo.' }))
|
|
97
97
|
}), { description: 'Array of transactions for create_transactions_bulk.' }))
|
|
@@ -327,6 +327,13 @@ async function createTransaction(client, input) {
|
|
|
327
327
|
return errorResult('payeeName or transferToAccount is required for create_transaction.');
|
|
328
328
|
}
|
|
329
329
|
const amountMilliunits = Math.round(input.amount * 1000);
|
|
330
|
+
const isTransfer = !!(payeeId || input.transferToAccount);
|
|
331
|
+
// HARD REQUIREMENT: categoryName is mandatory for non-transfer transactions.
|
|
332
|
+
// This prevents uncategorized transactions that show "This needs a category" in YNAB.
|
|
333
|
+
if (!input.categoryName && !isTransfer) {
|
|
334
|
+
return errorResult('categoryName is REQUIRED for create_transaction. Use list_categories to find the right category first. ' +
|
|
335
|
+
'Only transfers (using transferToAccount) are exempt from this requirement.');
|
|
336
|
+
}
|
|
330
337
|
let categoryId;
|
|
331
338
|
if (input.categoryName) {
|
|
332
339
|
const resolved = await resolveCategoryId(client, input.categoryName);
|
|
@@ -335,10 +342,26 @@ async function createTransaction(client, input) {
|
|
|
335
342
|
}
|
|
336
343
|
categoryId = resolved;
|
|
337
344
|
}
|
|
345
|
+
// DUPLICATE DETECTION: Check for existing transactions with the same amount and date
|
|
346
|
+
// to prevent duplicates when bank sync also imports the transaction.
|
|
347
|
+
const txnDate = input.date || today();
|
|
348
|
+
try {
|
|
349
|
+
const existing = await client.get(`/api/v1/ynab/transactions?sinceDate=${txnDate}`);
|
|
350
|
+
const dupes = (existing?.transactions ?? []).filter(t => !t.deleted && t.amount === amountMilliunits && t.date === txnDate);
|
|
351
|
+
if (dupes.length > 0) {
|
|
352
|
+
const dupeInfo = dupes.map(d => `${d.payee_name} ${d.amount / 1000}`).join(', ');
|
|
353
|
+
return errorResult(`DUPLICATE WARNING: ${dupes.length} existing transaction(s) found with the same amount ($${input.amount}) on ${txnDate}: [${dupeInfo}]. ` +
|
|
354
|
+
'The bank may have already imported this transaction. Verify with list_transactions before creating. ' +
|
|
355
|
+
'If you are certain this is not a duplicate, use create_transactions_bulk with a single entry to bypass this check.');
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
// Non-fatal: proceed if duplicate check fails
|
|
360
|
+
}
|
|
338
361
|
const body = {
|
|
339
362
|
accountId: input.accountId,
|
|
340
363
|
amountMilliunits,
|
|
341
|
-
date:
|
|
364
|
+
date: txnDate
|
|
342
365
|
};
|
|
343
366
|
if (payeeId)
|
|
344
367
|
body.payeeId = payeeId;
|
|
@@ -360,25 +383,24 @@ async function createTransactionsBulk(client, input) {
|
|
|
360
383
|
// Resolve category names and convert amounts for all transactions
|
|
361
384
|
const resolved = [];
|
|
362
385
|
for (const txn of input.transactions) {
|
|
386
|
+
// HARD REQUIREMENT: categoryName is mandatory for each bulk transaction
|
|
387
|
+
if (!txn.categoryName) {
|
|
388
|
+
return errorResult(`categoryName is REQUIRED for transaction "${txn.payeeName}". Use list_categories to find the right category first.`);
|
|
389
|
+
}
|
|
363
390
|
const amountMilliunits = Math.round(txn.amount * 1000);
|
|
364
|
-
|
|
365
|
-
if (
|
|
366
|
-
|
|
367
|
-
if (!id) {
|
|
368
|
-
return errorResult(`Category '${txn.categoryName}' not found for transaction "${txn.payeeName}". Use list_categories to browse.`);
|
|
369
|
-
}
|
|
370
|
-
categoryId = id;
|
|
391
|
+
const id = await resolveCategoryId(client, txn.categoryName);
|
|
392
|
+
if (!id) {
|
|
393
|
+
return errorResult(`Category '${txn.categoryName}' not found for transaction "${txn.payeeName}". Use list_categories to browse.`);
|
|
371
394
|
}
|
|
372
395
|
const entry = {
|
|
373
396
|
accountId: txn.accountId,
|
|
374
397
|
payeeName: txn.payeeName,
|
|
375
398
|
amount: amountMilliunits,
|
|
376
|
-
date: txn.date || today()
|
|
399
|
+
date: txn.date || today(),
|
|
400
|
+
categoryId: id
|
|
377
401
|
};
|
|
378
402
|
if (txn.memo)
|
|
379
403
|
entry.memo = txn.memo;
|
|
380
|
-
if (categoryId)
|
|
381
|
-
entry.categoryId = categoryId;
|
|
382
404
|
resolved.push(entry);
|
|
383
405
|
}
|
|
384
406
|
const data = await client.post('/api/v1/ynab/transactions/bulk', { transactions: resolved });
|
|
@@ -679,6 +701,8 @@ export function registerYnabTool(api, client) {
|
|
|
679
701
|
'Connection: connection_status.',
|
|
680
702
|
'Category Management: create_category_group, create_category, rename_category, move_category (to different group), rename_category_group.',
|
|
681
703
|
'Amounts in dollars (negative=expense). Categories resolved by name (fuzzy match).',
|
|
704
|
+
'CATEGORIZATION: categoryName is REQUIRED for all transactions (enforced by code). ALWAYS call list_categories first to find the most relevant category. Do NOT guess common names like "Groceries" — look at what categories actually exist. If no existing category fits well, suggest creating a new one with create_category. Consider the payee and items to pick the right category (e.g., Dollar General selling cigarettes should use "Cigarettes" not "Groceries"). For mixed purchases, consider split_transaction.',
|
|
705
|
+
'DUPLICATE PREVENTION: Bank-connected accounts auto-import transactions. If you manually create a transaction that the bank also imports, it creates a DUPLICATE that throws off the balance. Before creating: (1) check list_transactions to see if it already exists, (2) create_transaction will reject if a same-amount same-date transaction exists. Only create transactions for manual/cash entries or when you are certain the bank will NOT import it.',
|
|
682
706
|
'CREDIT CARD TIPS: Credit card payment categories track "Available for Payment" which accumulates from budgeted spending on those cards. To zero out/remove available balance from a CC payment category, use set_budget_amount with a NEGATIVE amount (e.g., -76.51 to pull $76.51 out). Setting budget to 0 does NOT remove existing available balance. To move money between categories, negative-budget the source and positive-budget the destination. Always just do what the user asks — don\'t ask for confirmation on straightforward budget operations.'
|
|
683
707
|
].join(' '),
|
|
684
708
|
inputSchema: YnabInputSchema,
|