@mind-your-now/myn 0.4.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.
Files changed (86) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +318 -0
  3. package/dist/index.d.ts +77 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +147 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/client.d.ts +40 -0
  8. package/dist/src/client.d.ts.map +1 -0
  9. package/dist/src/client.js +95 -0
  10. package/dist/src/client.js.map +1 -0
  11. package/dist/src/tools/briefing.d.ts +44 -0
  12. package/dist/src/tools/briefing.d.ts.map +1 -0
  13. package/dist/src/tools/briefing.js +116 -0
  14. package/dist/src/tools/briefing.js.map +1 -0
  15. package/dist/src/tools/calendar.d.ts +56 -0
  16. package/dist/src/tools/calendar.d.ts.map +1 -0
  17. package/dist/src/tools/calendar.js +206 -0
  18. package/dist/src/tools/calendar.js.map +1 -0
  19. package/dist/src/tools/capabilityHash.d.ts +26 -0
  20. package/dist/src/tools/capabilityHash.d.ts.map +1 -0
  21. package/dist/src/tools/capabilityHash.js +48 -0
  22. package/dist/src/tools/capabilityHash.js.map +1 -0
  23. package/dist/src/tools/habits.d.ts +43 -0
  24. package/dist/src/tools/habits.d.ts.map +1 -0
  25. package/dist/src/tools/habits.js +123 -0
  26. package/dist/src/tools/habits.js.map +1 -0
  27. package/dist/src/tools/household.d.ts +44 -0
  28. package/dist/src/tools/household.d.ts.map +1 -0
  29. package/dist/src/tools/household.js +146 -0
  30. package/dist/src/tools/household.js.map +1 -0
  31. package/dist/src/tools/lists.d.ts +45 -0
  32. package/dist/src/tools/lists.d.ts.map +1 -0
  33. package/dist/src/tools/lists.js +167 -0
  34. package/dist/src/tools/lists.js.map +1 -0
  35. package/dist/src/tools/memory.d.ts +45 -0
  36. package/dist/src/tools/memory.d.ts.map +1 -0
  37. package/dist/src/tools/memory.js +131 -0
  38. package/dist/src/tools/memory.js.map +1 -0
  39. package/dist/src/tools/myn_a2a_pairing.d.ts +42 -0
  40. package/dist/src/tools/myn_a2a_pairing.d.ts.map +1 -0
  41. package/dist/src/tools/myn_a2a_pairing.js +166 -0
  42. package/dist/src/tools/myn_a2a_pairing.js.map +1 -0
  43. package/dist/src/tools/planning.d.ts +56 -0
  44. package/dist/src/tools/planning.d.ts.map +1 -0
  45. package/dist/src/tools/planning.js +94 -0
  46. package/dist/src/tools/planning.js.map +1 -0
  47. package/dist/src/tools/profile.d.ts +47 -0
  48. package/dist/src/tools/profile.d.ts.map +1 -0
  49. package/dist/src/tools/profile.js +125 -0
  50. package/dist/src/tools/profile.js.map +1 -0
  51. package/dist/src/tools/projects.d.ts +45 -0
  52. package/dist/src/tools/projects.d.ts.map +1 -0
  53. package/dist/src/tools/projects.js +106 -0
  54. package/dist/src/tools/projects.js.map +1 -0
  55. package/dist/src/tools/search.d.ts +46 -0
  56. package/dist/src/tools/search.d.ts.map +1 -0
  57. package/dist/src/tools/search.js +93 -0
  58. package/dist/src/tools/search.js.map +1 -0
  59. package/dist/src/tools/syncOnMismatch.d.ts +48 -0
  60. package/dist/src/tools/syncOnMismatch.d.ts.map +1 -0
  61. package/dist/src/tools/syncOnMismatch.js +94 -0
  62. package/dist/src/tools/syncOnMismatch.js.map +1 -0
  63. package/dist/src/tools/tasks.d.ts +52 -0
  64. package/dist/src/tools/tasks.d.ts.map +1 -0
  65. package/dist/src/tools/tasks.js +200 -0
  66. package/dist/src/tools/tasks.js.map +1 -0
  67. package/dist/src/tools/timers.d.ts +48 -0
  68. package/dist/src/tools/timers.d.ts.map +1 -0
  69. package/dist/src/tools/timers.js +138 -0
  70. package/dist/src/tools/timers.js.map +1 -0
  71. package/openclaw.plugin.json +30 -0
  72. package/package.json +74 -0
  73. package/skills/myn/SKILL.md +54 -0
  74. package/skills/myn/references/authentication.md +83 -0
  75. package/skills/myn/references/briefing-api.md +187 -0
  76. package/skills/myn/references/calendar-api.md +139 -0
  77. package/skills/myn/references/habits-api.md +257 -0
  78. package/skills/myn/references/household-api.md +175 -0
  79. package/skills/myn/references/lists-api.md +180 -0
  80. package/skills/myn/references/memory-api.md +95 -0
  81. package/skills/myn/references/planning-api.md +191 -0
  82. package/skills/myn/references/profile-api.md +148 -0
  83. package/skills/myn/references/projects-api.md +127 -0
  84. package/skills/myn/references/search-api.md +97 -0
  85. package/skills/myn/references/tasks-api.md +187 -0
  86. package/skills/myn/references/timers-api.md +171 -0
@@ -0,0 +1,45 @@
1
+ /**
2
+ * myn_memory tool - Agent memory remember/recall/forget
3
+ */
4
+ import type { MynApiClient } from '../client.js';
5
+ export declare const MemoryInputSchema: import("@sinclair/typebox").TObject<{
6
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"remember">, import("@sinclair/typebox").TLiteral<"recall">, import("@sinclair/typebox").TLiteral<"forget">, import("@sinclair/typebox").TLiteral<"search">]>;
7
+ content: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
+ category: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"user_preference">, import("@sinclair/typebox").TLiteral<"work_context">, import("@sinclair/typebox").TLiteral<"personal_info">, import("@sinclair/typebox").TLiteral<"decision">, import("@sinclair/typebox").TLiteral<"insight">, import("@sinclair/typebox").TLiteral<"routine">]>>;
9
+ tags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
10
+ importance: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"low">, import("@sinclair/typebox").TLiteral<"medium">, import("@sinclair/typebox").TLiteral<"high">, import("@sinclair/typebox").TLiteral<"critical">]>>;
11
+ expiresAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
12
+ memoryId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
+ query: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
14
+ filterCategory: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
15
+ filterTags: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
16
+ limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
17
+ }>;
18
+ export type MemoryInput = typeof MemoryInputSchema.static;
19
+ export declare function executeMemory(client: MynApiClient, input: MemoryInput): Promise<{
20
+ success: true;
21
+ data: unknown;
22
+ } | {
23
+ success: false;
24
+ error: string;
25
+ details?: unknown;
26
+ }>;
27
+ export declare function registerMemoryTool(api: OpenClawPluginApi, client: MynApiClient): void;
28
+ interface OpenClawPluginApi {
29
+ registerTool(tool: {
30
+ id: string;
31
+ name: string;
32
+ description: string;
33
+ inputSchema: unknown;
34
+ execute: (input: unknown) => Promise<unknown>;
35
+ }): void;
36
+ logger: {
37
+ debug(message: string): void;
38
+ info(message: string): void;
39
+ warn(message: string): void;
40
+ error(message: string): void;
41
+ };
42
+ pluginConfig?: Record<string, unknown>;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/tools/memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAgC5B,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,CAoBlG;AAkGD,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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * myn_memory tool - Agent memory remember/recall/forget
3
+ */
4
+ import { Type } from '@sinclair/typebox';
5
+ import { jsonResult, errorResult } from '../client.js';
6
+ export const MemoryInputSchema = Type.Object({
7
+ action: Type.Union([
8
+ Type.Literal('remember'),
9
+ Type.Literal('recall'),
10
+ Type.Literal('forget'),
11
+ Type.Literal('search')
12
+ ]),
13
+ // remember parameters
14
+ content: Type.Optional(Type.String({ minLength: 1, description: 'Memory content to store' })),
15
+ category: Type.Optional(Type.Union([
16
+ Type.Literal('user_preference'),
17
+ Type.Literal('work_context'),
18
+ Type.Literal('personal_info'),
19
+ Type.Literal('decision'),
20
+ Type.Literal('insight'),
21
+ Type.Literal('routine')
22
+ ])),
23
+ tags: Type.Optional(Type.Array(Type.String())),
24
+ importance: Type.Optional(Type.Union([
25
+ Type.Literal('low'),
26
+ Type.Literal('medium'),
27
+ Type.Literal('high'),
28
+ Type.Literal('critical')
29
+ ])),
30
+ expiresAt: Type.Optional(Type.String({ format: 'date-time', description: 'Optional expiration date' })),
31
+ // recall/forget parameters
32
+ memoryId: Type.Optional(Type.String({ format: 'uuid' })),
33
+ // search parameters
34
+ query: Type.Optional(Type.String()),
35
+ filterCategory: Type.Optional(Type.String()),
36
+ filterTags: Type.Optional(Type.Array(Type.String())),
37
+ limit: Type.Optional(Type.Number({ default: 10 }))
38
+ });
39
+ export async function executeMemory(client, input) {
40
+ try {
41
+ switch (input.action) {
42
+ case 'remember':
43
+ return await remember(client, input);
44
+ case 'recall':
45
+ return await recall(client, input);
46
+ case 'forget':
47
+ return await forget(client, input);
48
+ case 'search':
49
+ return await searchMemories(client, input);
50
+ default:
51
+ return errorResult(`Unknown action: ${input.action}`);
52
+ }
53
+ }
54
+ catch (error) {
55
+ if (error instanceof Error) {
56
+ return errorResult(error.message);
57
+ }
58
+ return errorResult('Unknown error occurred');
59
+ }
60
+ }
61
+ async function remember(_client, input) {
62
+ if (!input.content) {
63
+ return errorResult('content is required for remember action');
64
+ }
65
+ // The backend does not expose a POST /api/v1/customers/memories endpoint.
66
+ // Memories are created automatically through the AI conversation system (Kaia).
67
+ // To persist a memory, include it naturally in the conversation context so
68
+ // the backend's AI service stores it on your behalf.
69
+ return errorResult('Direct memory creation is not supported. Memories are created ' +
70
+ 'automatically through conversations with the AI assistant. ' +
71
+ 'To store a memory, mention it in conversation context.');
72
+ }
73
+ async function recall(client, input) {
74
+ // The backend only supports GET /api/v1/customers/memories (list all).
75
+ // There is no GET /api/v1/customers/memories/{memoryId} endpoint.
76
+ const data = await client.get('/api/v1/customers/memories');
77
+ if (input.memoryId) {
78
+ // Filter client-side for a specific memory
79
+ const memories = Array.isArray(data) ? data : [];
80
+ const match = memories.find(m => m.memoryId === input.memoryId);
81
+ if (!match) {
82
+ return errorResult(`Memory not found: ${input.memoryId}`);
83
+ }
84
+ return jsonResult(match);
85
+ }
86
+ return jsonResult(data);
87
+ }
88
+ async function forget(client, input) {
89
+ if (!input.memoryId) {
90
+ return errorResult('memoryId is required for forget action');
91
+ }
92
+ await client.delete(`/api/v1/customers/memories/${input.memoryId}`);
93
+ return jsonResult({
94
+ deleted: true,
95
+ memoryId: input.memoryId
96
+ });
97
+ }
98
+ async function searchMemories(client, input) {
99
+ // The backend has no /api/v1/customers/memories/search endpoint.
100
+ // Fetch all memories and filter client-side.
101
+ const data = await client.get('/api/v1/customers/memories');
102
+ let results = Array.isArray(data) ? data : [];
103
+ // Client-side filtering
104
+ if (input.query) {
105
+ const q = input.query.toLowerCase();
106
+ results = results.filter(m => m.content?.toLowerCase().includes(q) ||
107
+ m.tags?.some(t => t.toLowerCase().includes(q)));
108
+ }
109
+ if (input.filterCategory) {
110
+ results = results.filter(m => m.category === input.filterCategory);
111
+ }
112
+ if (input.filterTags && input.filterTags.length > 0) {
113
+ results = results.filter(m => input.filterTags.every(tag => m.tags?.includes(tag)));
114
+ }
115
+ if (input.limit) {
116
+ results = results.slice(0, input.limit);
117
+ }
118
+ return jsonResult({ results, total: results.length });
119
+ }
120
+ export function registerMemoryTool(api, client) {
121
+ api.registerTool({
122
+ id: 'myn_memory',
123
+ name: 'MYN Memory',
124
+ description: 'Store and retrieve agent memories. Actions: remember, recall, forget, search.',
125
+ inputSchema: MemoryInputSchema,
126
+ async execute(input) {
127
+ return executeMemory(client, input);
128
+ }
129
+ });
130
+ }
131
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/tools/memory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KACvB,CAAC;IACF,sBAAsB;IACtB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAC7F,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;KACxB,CAAC,CAAC;IACH,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;KACzB,CAAC,CAAC;IACH,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC,CAAC;IACvG,2BAA2B;IAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,oBAAoB;IACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IACnC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5C,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;CACnD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAoB,EACpB,KAAkB;IAElB,IAAI,CAAC;QACH,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,UAAU;gBACb,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACvC,KAAK,QAAQ;gBACX,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrC,KAAK,QAAQ;gBACX,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrC,KAAK,QAAQ;gBACX,OAAO,MAAM,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC7C;gBACE,OAAO,WAAW,CAAC,mBAAoB,KAA4B,CAAC,MAAM,EAAE,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,OAAqB,EAAE,KAAkB;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,WAAW,CAAC,yCAAyC,CAAC,CAAC;IAChE,CAAC;IAED,0EAA0E;IAC1E,gFAAgF;IAChF,2EAA2E;IAC3E,qDAAqD;IACrD,OAAO,WAAW,CAChB,gEAAgE;QAChE,6DAA6D;QAC7D,wDAAwD,CACzD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,MAAoB,EAAE,KAAkB;IAC5D,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAU3B,4BAA4B,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,WAAW,CAAC,qBAAqB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,MAAoB,EAAE,KAAkB;IAC5D,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,wCAAwC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,CAAC,MAAM,CAAC,8BAA8B,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEpE,OAAO,UAAU,CAAC;QAChB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAoB,EAAE,KAAkB;IACpE,iEAAiE;IACjE,6CAA6C;IAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAS3B,4BAA4B,CAAC,CAAC;IAEhC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAE9C,wBAAwB;IACxB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC/C,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,cAAc,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3B,KAAK,CAAC,UAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CACtD,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAsB,EAAE,MAAoB;IAC7E,GAAG,CAAC,YAAY,CAAC;QACf,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE,iBAAiB;QAC9B,KAAK,CAAC,OAAO,CAAC,KAAc;YAC1B,OAAO,aAAa,CAAC,MAAM,EAAE,KAAoB,CAAC,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * myn_a2a_pairing tool — Pair OpenClaw with MYN/Kaia via the A2A protocol.
3
+ *
4
+ * MIN-734: openclaw-a2a-lite-v1
5
+ *
6
+ * This tool uses direct fetch() calls because A2A authentication uses a
7
+ * separate key mechanism (X-Agent-Key) from the standard API key (X-API-KEY).
8
+ */
9
+ export declare const MynA2APairingInputSchema: import("@sinclair/typebox").TObject<{
10
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"redeem_invite">, import("@sinclair/typebox").TLiteral<"ping">, import("@sinclair/typebox").TLiteral<"send_message">, import("@sinclair/typebox").TLiteral<"get_agent_card">]>;
11
+ /** X-Agent-Key value for authenticated A2A requests (after pairing) */
12
+ agentKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
+ inviteCode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
14
+ agentName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
15
+ displayName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
16
+ outboundEndpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
17
+ capabilities: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TAny>>;
18
+ intent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"chat">, import("@sinclair/typebox").TLiteral<"briefing">, import("@sinclair/typebox").TLiteral<"ping">]>>;
19
+ message: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ conversationId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
21
+ }>;
22
+ export type MynA2APairingInput = typeof MynA2APairingInputSchema.static;
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
+ /**
33
+ * Register the A2A pairing tool with the plugin API.
34
+ * @param baseUrl - The MYN API base URL from plugin config (e.g. https://api.mindyournow.com)
35
+ */
36
+ export declare function registerA2APairingTool(api: OpenClawPluginApi, baseUrl: string): void;
37
+ /**
38
+ * Execute a MYN A2A pairing action.
39
+ */
40
+ export declare function myn_a2a_pairing(input: MynA2APairingInput, configuredBaseUrl?: string): Promise<unknown>;
41
+ export {};
42
+ //# sourceMappingURL=myn_a2a_pairing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"myn_a2a_pairing.d.ts","sourceRoot":"","sources":["../../../src/tools/myn_a2a_pairing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,eAAO,MAAM,wBAAwB;;IAOnC,uEAAuE;;;;;;;;;;EAYvE,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,OAAO,wBAAwB,CAAC,MAAM,CAAC;AAGxE,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;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAoBpF;AAWD;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA4G7G"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * myn_a2a_pairing tool — Pair OpenClaw with MYN/Kaia via the A2A protocol.
3
+ *
4
+ * MIN-734: openclaw-a2a-lite-v1
5
+ *
6
+ * This tool uses direct fetch() calls because A2A authentication uses a
7
+ * separate key mechanism (X-Agent-Key) from the standard API key (X-API-KEY).
8
+ */
9
+ import { Type } from '@sinclair/typebox';
10
+ import { errorResult, jsonResult } from '../client.js';
11
+ import { computeCapabilityHash } from './capabilityHash.js';
12
+ import { checkAndSync } from './syncOnMismatch.js';
13
+ export const MynA2APairingInputSchema = Type.Object({
14
+ action: Type.Union([
15
+ Type.Literal('redeem_invite'),
16
+ Type.Literal('ping'),
17
+ Type.Literal('send_message'),
18
+ Type.Literal('get_agent_card'),
19
+ ]),
20
+ /** X-Agent-Key value for authenticated A2A requests (after pairing) */
21
+ agentKey: Type.Optional(Type.String({ description: 'Agent key from redeem_invite response' })),
22
+ // redeem_invite fields
23
+ inviteCode: Type.Optional(Type.String({ description: 'Invite code from MYN Settings (e.g. ABC-12345)' })),
24
+ agentName: Type.Optional(Type.String({ description: 'Lowercase alphanumeric agent name (e.g. "openclaw")' })),
25
+ displayName: Type.Optional(Type.String()),
26
+ outboundEndpoint: Type.Optional(Type.String({ description: 'HTTPS URL where MYN calls this agent (optional — use "none" if not available)' })),
27
+ capabilities: Type.Optional(Type.Array(Type.Any(), { description: 'Capability objects for the manifest' })),
28
+ // send_message fields
29
+ intent: Type.Optional(Type.Union([Type.Literal('chat'), Type.Literal('briefing'), Type.Literal('ping')])),
30
+ message: Type.Optional(Type.String()),
31
+ conversationId: Type.Optional(Type.String()),
32
+ });
33
+ /**
34
+ * Register the A2A pairing tool with the plugin API.
35
+ * @param baseUrl - The MYN API base URL from plugin config (e.g. https://api.mindyournow.com)
36
+ */
37
+ export function registerA2APairingTool(api, baseUrl) {
38
+ api.registerTool({
39
+ id: 'myn_a2a_pairing',
40
+ name: 'MYN A2A Pairing',
41
+ description: `Pair OpenClaw with MYN/Kaia via A2A protocol. The MYN API URL is already configured — do NOT guess or change it.
42
+
43
+ IMPORTANT: If this tool returns an error, STOP IMMEDIATELY and report the error to the user. Do NOT retry with different URLs or parameters. Do NOT try to discover endpoints. The configuration is correct; errors mean something else is wrong.
44
+
45
+ Actions:
46
+ - redeem_invite: Redeem an invite code. Required: inviteCode, agentName. Optional: outboundEndpoint, displayName, capabilities.
47
+ - ping: Ping MYN after pairing. Required: agentKey.
48
+ - send_message: Send a message. Required: agentKey, message.
49
+ - get_agent_card: Fetch MYN's agent card (no auth needed).
50
+
51
+ For redeem_invite, use agentName "openclaw" and outboundEndpoint "none" if no public endpoint is available.`,
52
+ inputSchema: MynA2APairingInputSchema,
53
+ async execute(input) {
54
+ return myn_a2a_pairing(input, baseUrl);
55
+ }
56
+ });
57
+ }
58
+ async function a2aFetch(url, options) {
59
+ const response = await fetch(url, options);
60
+ if (!response.ok) {
61
+ const text = await response.text().catch(() => response.statusText);
62
+ throw new Error(`HTTP ${response.status}: ${text}`);
63
+ }
64
+ return response.status === 204 ? null : response.json();
65
+ }
66
+ /**
67
+ * Execute a MYN A2A pairing action.
68
+ */
69
+ export async function myn_a2a_pairing(input, configuredBaseUrl) {
70
+ const base = (configuredBaseUrl ?? 'https://api.mindyournow.com').replace(/\/$/, '');
71
+ const caps = input.capabilities ?? [];
72
+ try {
73
+ switch (input.action) {
74
+ case 'get_agent_card': {
75
+ const data = await a2aFetch(`${base}/.well-known/agent.json`, { method: 'GET' });
76
+ return jsonResult(data);
77
+ }
78
+ case 'redeem_invite': {
79
+ if (!input.inviteCode || !input.agentName) {
80
+ return errorResult('STOP: inviteCode and agentName are required. Do not retry — ask the user for the missing values.');
81
+ }
82
+ const manifest = {
83
+ schemaVersion: '1.0',
84
+ agentInfo: { name: input.agentName, version: '1.0.0' },
85
+ capabilities: caps,
86
+ };
87
+ const capabilityHash = computeCapabilityHash(manifest);
88
+ const body = {
89
+ inviteCode: input.inviteCode,
90
+ agentName: input.agentName,
91
+ displayName: input.displayName ?? input.agentName,
92
+ outboundEndpoint: input.outboundEndpoint || 'none',
93
+ capabilityHash,
94
+ capabilityManifest: manifest,
95
+ };
96
+ const data = await a2aFetch(`${base}/api/v1/agent/redeem-invite`, {
97
+ method: 'POST',
98
+ headers: { 'Content-Type': 'application/json' },
99
+ body: JSON.stringify(body),
100
+ });
101
+ return jsonResult({
102
+ ...data,
103
+ capabilityHash,
104
+ note: 'Store mynInboundKey securely — use it as agentKey in future calls.',
105
+ });
106
+ }
107
+ case 'ping': {
108
+ if (!input.agentKey)
109
+ return errorResult('STOP: agentKey is required for ping. This comes from the redeem_invite response (mynInboundKey).');
110
+ const pingData = await a2aFetch(`${base}/a2a/message`, {
111
+ method: 'POST',
112
+ headers: { 'Content-Type': 'application/json', 'X-Agent-Key': input.agentKey },
113
+ body: JSON.stringify({ from: input.agentName ?? 'openclaw', intent: 'ping' }),
114
+ });
115
+ // Ping responses also carry capabilityUpdatePending — sync if flagged
116
+ if (caps.length > 0) {
117
+ const pingManifest = {
118
+ schemaVersion: '1.0',
119
+ agentInfo: { name: input.agentName ?? 'openclaw', version: '1.0.0' },
120
+ capabilities: caps,
121
+ };
122
+ checkAndSync(pingData, base, input.agentKey, pingManifest);
123
+ }
124
+ return jsonResult(pingData);
125
+ }
126
+ case 'send_message': {
127
+ if (!input.agentKey)
128
+ return errorResult('STOP: agentKey is required for send_message.');
129
+ if (!input.message)
130
+ return errorResult('STOP: message is required for send_message.');
131
+ const msgBody = {
132
+ from: input.agentName ?? 'openclaw',
133
+ intent: input.intent ?? 'chat',
134
+ message: input.message,
135
+ };
136
+ if (input.conversationId)
137
+ msgBody.conversationId = input.conversationId;
138
+ const manifest = caps.length > 0 ? {
139
+ schemaVersion: '1.0',
140
+ agentInfo: { name: input.agentName ?? 'openclaw', version: '1.0.0' },
141
+ capabilities: caps,
142
+ } : null;
143
+ if (manifest) {
144
+ msgBody.capabilityHash = computeCapabilityHash(manifest);
145
+ }
146
+ const data = await a2aFetch(`${base}/a2a/message`, {
147
+ method: 'POST',
148
+ headers: { 'Content-Type': 'application/json', 'X-Agent-Key': input.agentKey },
149
+ body: JSON.stringify(msgBody),
150
+ });
151
+ // Auto-sync capabilities when server signals a hash mismatch — MIN-734
152
+ if (manifest) {
153
+ checkAndSync(data, base, input.agentKey, manifest);
154
+ }
155
+ return jsonResult(data);
156
+ }
157
+ default:
158
+ return errorResult(`Unknown action: ${input.action}`);
159
+ }
160
+ }
161
+ catch (err) {
162
+ const msg = err instanceof Error ? err.message : String(err);
163
+ return errorResult(`STOP: A2A request failed: ${msg}. Do NOT retry with different URLs — the API URL is pre-configured. Report this error to the user.`);
164
+ }
165
+ }
166
+ //# sourceMappingURL=myn_a2a_pairing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"myn_a2a_pairing.js","sourceRoot":"","sources":["../../../src/tools/myn_a2a_pairing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * myn_planning tool - AI planning and scheduling
3
+ */
4
+ import type { MynApiClient } from '../client.js';
5
+ export declare const PlanningInputSchema: import("@sinclair/typebox").TObject<{
6
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"plan">, import("@sinclair/typebox").TLiteral<"schedule_all">, import("@sinclair/typebox").TLiteral<"reschedule">]>;
7
+ goal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
+ constraints: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
9
+ availableHours: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
10
+ preferredTimes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
11
+ avoidTimes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
12
+ deadline: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
+ priority: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"CRITICAL">, import("@sinclair/typebox").TLiteral<"OPPORTUNITY_NOW">, import("@sinclair/typebox").TLiteral<"OVER_THE_HORIZON">]>>;
14
+ }>>;
15
+ tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
16
+ title: import("@sinclair/typebox").TString;
17
+ estimatedDuration: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
18
+ dependsOn: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
19
+ fixedTime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ }>>>;
21
+ date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
22
+ respectExisting: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
23
+ bufferMinutes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
24
+ taskIds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
25
+ reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
26
+ targetDate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
27
+ spreadOverDays: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
28
+ }>;
29
+ export type PlanningInput = typeof PlanningInputSchema.static;
30
+ export declare function executePlanning(client: MynApiClient, input: PlanningInput): Promise<{
31
+ success: true;
32
+ data: unknown;
33
+ } | {
34
+ success: false;
35
+ error: string;
36
+ details?: unknown;
37
+ }>;
38
+ export declare function registerPlanningTool(api: OpenClawPluginApi, client: MynApiClient): void;
39
+ interface OpenClawPluginApi {
40
+ registerTool(tool: {
41
+ id: string;
42
+ name: string;
43
+ description: string;
44
+ inputSchema: unknown;
45
+ execute: (input: unknown) => Promise<unknown>;
46
+ }): void;
47
+ logger: {
48
+ debug(message: string): void;
49
+ info(message: string): void;
50
+ warn(message: string): void;
51
+ error(message: string): void;
52
+ };
53
+ pluginConfig?: Record<string, unknown>;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=planning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../src/tools/planning.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;EAkC9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC;AAE9D,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,aAAa,GACnB,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,CAkBlG;AA8BD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAUvF;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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * myn_planning tool - AI planning and scheduling
3
+ */
4
+ import { Type } from '@sinclair/typebox';
5
+ import { jsonResult, errorResult } from '../client.js';
6
+ export const PlanningInputSchema = Type.Object({
7
+ action: Type.Union([
8
+ Type.Literal('plan'),
9
+ Type.Literal('schedule_all'),
10
+ Type.Literal('reschedule')
11
+ ]),
12
+ // plan parameters
13
+ goal: Type.Optional(Type.String({ description: 'What you want to accomplish' })),
14
+ constraints: Type.Optional(Type.Object({
15
+ availableHours: Type.Optional(Type.Number()),
16
+ preferredTimes: Type.Optional(Type.Array(Type.String())),
17
+ avoidTimes: Type.Optional(Type.Array(Type.String())),
18
+ deadline: Type.Optional(Type.String({ format: 'date-time' })),
19
+ priority: Type.Optional(Type.Union([
20
+ Type.Literal('CRITICAL'),
21
+ Type.Literal('OPPORTUNITY_NOW'),
22
+ Type.Literal('OVER_THE_HORIZON')
23
+ ]))
24
+ })),
25
+ tasks: Type.Optional(Type.Array(Type.Object({
26
+ title: Type.String(),
27
+ estimatedDuration: Type.Optional(Type.Number()), // in minutes
28
+ dependsOn: Type.Optional(Type.Array(Type.String())),
29
+ fixedTime: Type.Optional(Type.String({ format: 'date-time' }))
30
+ }))),
31
+ // schedule_all parameters
32
+ date: Type.Optional(Type.String({ format: 'date' })),
33
+ respectExisting: Type.Optional(Type.Boolean({ default: true })),
34
+ bufferMinutes: Type.Optional(Type.Number({ default: 15 })),
35
+ // reschedule parameters
36
+ taskIds: Type.Optional(Type.Array(Type.String({ format: 'uuid' }))),
37
+ reason: Type.Optional(Type.String()),
38
+ targetDate: Type.Optional(Type.String({ format: 'date' })),
39
+ spreadOverDays: Type.Optional(Type.Number({ default: 1 }))
40
+ });
41
+ export async function executePlanning(client, input) {
42
+ try {
43
+ switch (input.action) {
44
+ case 'plan':
45
+ return await createPlan(client, input);
46
+ case 'schedule_all':
47
+ return await scheduleAll(client, input);
48
+ case 'reschedule':
49
+ return await reschedule(client, input);
50
+ default:
51
+ return errorResult(`Unknown action: ${input.action}`);
52
+ }
53
+ }
54
+ catch (error) {
55
+ if (error instanceof Error) {
56
+ return errorResult(error.message);
57
+ }
58
+ return errorResult('Unknown error occurred');
59
+ }
60
+ }
61
+ async function createPlan(client, _input) {
62
+ // Triggers the AI planning engine to plan/schedule tasks for the current user.
63
+ // The backend PlanningController at GET /planning/plan handles this automatically
64
+ // based on the authenticated user's tasks — no request body is needed.
65
+ const data = await client.get('/planning/plan');
66
+ return jsonResult({ result: data });
67
+ }
68
+ async function scheduleAll(client, _input) {
69
+ // Auto-schedules all eligible tasks (today or past start date, not completed,
70
+ // not OVER_THE_HORIZON/PARKING_LOT) for the authenticated user, then triggers planning.
71
+ // The backend PlanningController at GET /planning/scheduleAll handles this automatically.
72
+ const data = await client.get('/planning/scheduleAll');
73
+ return jsonResult({ result: data });
74
+ }
75
+ async function reschedule(client, input) {
76
+ // "Kick the can" — reschedules overdue/today tasks into the future based on priority.
77
+ // Optionally pass rebalance=true to redistribute all uncompleted tasks evenly.
78
+ // The backend PlanningController at GET /planning/kickTheCan handles this automatically.
79
+ const rebalance = input.spreadOverDays && input.spreadOverDays > 1 ? 'true' : 'false';
80
+ const data = await client.get(`/planning/kickTheCan?rebalance=${rebalance}`);
81
+ return jsonResult(data);
82
+ }
83
+ export function registerPlanningTool(api, client) {
84
+ api.registerTool({
85
+ id: 'myn_planning',
86
+ name: 'MYN Planning',
87
+ description: 'AI-powered planning and scheduling. Actions: plan, schedule_all, reschedule.',
88
+ inputSchema: PlanningInputSchema,
89
+ async execute(input) {
90
+ return executePlanning(client, input);
91
+ }
92
+ });
93
+ }
94
+ //# sourceMappingURL=planning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.js","sourceRoot":"","sources":["../../../src/tools/planning.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * myn_profile tool - User info, goals, and preferences
3
+ */
4
+ import type { MynApiClient } from '../client.js';
5
+ export declare const ProfileInputSchema: import("@sinclair/typebox").TObject<{
6
+ action: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"get_info">, import("@sinclair/typebox").TLiteral<"get_goals">, import("@sinclair/typebox").TLiteral<"update_goals">, import("@sinclair/typebox").TLiteral<"preferences">]>;
7
+ goals: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
8
+ id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
9
+ title: import("@sinclair/typebox").TString;
10
+ description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
11
+ targetDate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
12
+ priority: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"low">, import("@sinclair/typebox").TLiteral<"medium">, import("@sinclair/typebox").TLiteral<"high">]>>;
13
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"paused">, import("@sinclair/typebox").TLiteral<"abandoned">]>>;
14
+ }>>>;
15
+ goalId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
16
+ preferenceKey: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
17
+ preferenceValue: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
18
+ preferenceCategory: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"notifications">, import("@sinclair/typebox").TLiteral<"display">, import("@sinclair/typebox").TLiteral<"ai">, import("@sinclair/typebox").TLiteral<"privacy">, import("@sinclair/typebox").TLiteral<"integrations">]>>;
19
+ }>;
20
+ export type ProfileInput = typeof ProfileInputSchema.static;
21
+ export declare function executeProfile(client: MynApiClient, input: ProfileInput): Promise<{
22
+ success: true;
23
+ data: unknown;
24
+ } | {
25
+ success: false;
26
+ error: string;
27
+ details?: unknown;
28
+ }>;
29
+ export declare function registerProfileTool(api: OpenClawPluginApi, client: MynApiClient): void;
30
+ interface OpenClawPluginApi {
31
+ registerTool(tool: {
32
+ id: string;
33
+ name: string;
34
+ description: string;
35
+ inputSchema: unknown;
36
+ execute: (input: unknown) => Promise<unknown>;
37
+ }): void;
38
+ logger: {
39
+ debug(message: string): void;
40
+ info(message: string): void;
41
+ warn(message: string): void;
42
+ error(message: string): void;
43
+ };
44
+ pluginConfig?: Record<string, unknown>;
45
+ }
46
+ export {};
47
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/tools/profile.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;EAoC7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,OAAO,kBAAkB,CAAC,MAAM,CAAC;AAE5D,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,YAAY,GAClB,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,CAoBlG;AA2GD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAUtF;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"}