airmcp 1.0.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 (186) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +645 -0
  3. package/dist/calendar/prompts.d.ts +2 -0
  4. package/dist/calendar/prompts.js +43 -0
  5. package/dist/calendar/prompts.js.map +1 -0
  6. package/dist/calendar/scripts.d.ts +20 -0
  7. package/dist/calendar/scripts.js +286 -0
  8. package/dist/calendar/scripts.js.map +1 -0
  9. package/dist/calendar/tools.d.ts +3 -0
  10. package/dist/calendar/tools.js +252 -0
  11. package/dist/calendar/tools.js.map +1 -0
  12. package/dist/cli/doctor.d.ts +7 -0
  13. package/dist/cli/doctor.js +157 -0
  14. package/dist/cli/doctor.js.map +1 -0
  15. package/dist/cli/init.d.ts +8 -0
  16. package/dist/cli/init.js +179 -0
  17. package/dist/cli/init.js.map +1 -0
  18. package/dist/contacts/scripts.d.ts +22 -0
  19. package/dist/contacts/scripts.js +220 -0
  20. package/dist/contacts/scripts.js.map +1 -0
  21. package/dist/contacts/tools.d.ts +3 -0
  22. package/dist/contacts/tools.js +173 -0
  23. package/dist/contacts/tools.js.map +1 -0
  24. package/dist/cross/prompts.d.ts +2 -0
  25. package/dist/cross/prompts.js +802 -0
  26. package/dist/cross/prompts.js.map +1 -0
  27. package/dist/cross/tools.d.ts +7 -0
  28. package/dist/cross/tools.js +81 -0
  29. package/dist/cross/tools.js.map +1 -0
  30. package/dist/finder/scripts.d.ts +8 -0
  31. package/dist/finder/scripts.js +127 -0
  32. package/dist/finder/scripts.js.map +1 -0
  33. package/dist/finder/tools.d.ts +3 -0
  34. package/dist/finder/tools.js +134 -0
  35. package/dist/finder/tools.js.map +1 -0
  36. package/dist/index.d.ts +2 -0
  37. package/dist/index.js +252 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/intelligence/tools.d.ts +3 -0
  40. package/dist/intelligence/tools.js +210 -0
  41. package/dist/intelligence/tools.js.map +1 -0
  42. package/dist/mail/scripts.d.ts +11 -0
  43. package/dist/mail/scripts.js +256 -0
  44. package/dist/mail/scripts.js.map +1 -0
  45. package/dist/mail/tools.d.ts +3 -0
  46. package/dist/mail/tools.js +188 -0
  47. package/dist/mail/tools.js.map +1 -0
  48. package/dist/maps/scripts.d.ts +6 -0
  49. package/dist/maps/scripts.js +61 -0
  50. package/dist/maps/scripts.js.map +1 -0
  51. package/dist/maps/tools.d.ts +3 -0
  52. package/dist/maps/tools.js +109 -0
  53. package/dist/maps/tools.js.map +1 -0
  54. package/dist/messages/scripts.d.ts +6 -0
  55. package/dist/messages/scripts.js +140 -0
  56. package/dist/messages/scripts.js.map +1 -0
  57. package/dist/messages/tools.d.ts +3 -0
  58. package/dist/messages/tools.js +105 -0
  59. package/dist/messages/tools.js.map +1 -0
  60. package/dist/music/scripts.d.ts +13 -0
  61. package/dist/music/scripts.js +218 -0
  62. package/dist/music/scripts.js.map +1 -0
  63. package/dist/music/tools.d.ts +3 -0
  64. package/dist/music/tools.js +205 -0
  65. package/dist/music/tools.js.map +1 -0
  66. package/dist/notes/prompts.d.ts +2 -0
  67. package/dist/notes/prompts.js +47 -0
  68. package/dist/notes/prompts.js.map +1 -0
  69. package/dist/notes/scripts.d.ts +15 -0
  70. package/dist/notes/scripts.js +348 -0
  71. package/dist/notes/scripts.js.map +1 -0
  72. package/dist/notes/tools.d.ts +3 -0
  73. package/dist/notes/tools.js +317 -0
  74. package/dist/notes/tools.js.map +1 -0
  75. package/dist/photos/scripts.d.ts +7 -0
  76. package/dist/photos/scripts.js +142 -0
  77. package/dist/photos/scripts.js.map +1 -0
  78. package/dist/photos/tools.d.ts +3 -0
  79. package/dist/photos/tools.js +158 -0
  80. package/dist/photos/tools.js.map +1 -0
  81. package/dist/podcasts/scripts.d.ts +6 -0
  82. package/dist/podcasts/scripts.js +116 -0
  83. package/dist/podcasts/scripts.js.map +1 -0
  84. package/dist/podcasts/tools.d.ts +3 -0
  85. package/dist/podcasts/tools.js +96 -0
  86. package/dist/podcasts/tools.js.map +1 -0
  87. package/dist/reminders/prompts.d.ts +2 -0
  88. package/dist/reminders/prompts.js +40 -0
  89. package/dist/reminders/prompts.js.map +1 -0
  90. package/dist/reminders/scripts.d.ts +21 -0
  91. package/dist/reminders/scripts.js +208 -0
  92. package/dist/reminders/scripts.js.map +1 -0
  93. package/dist/reminders/tools.d.ts +3 -0
  94. package/dist/reminders/tools.js +269 -0
  95. package/dist/reminders/tools.js.map +1 -0
  96. package/dist/safari/scripts.d.ts +12 -0
  97. package/dist/safari/scripts.js +203 -0
  98. package/dist/safari/scripts.js.map +1 -0
  99. package/dist/safari/tools.d.ts +3 -0
  100. package/dist/safari/tools.js +188 -0
  101. package/dist/safari/tools.js.map +1 -0
  102. package/dist/screen/scripts.d.ts +26 -0
  103. package/dist/screen/scripts.js +115 -0
  104. package/dist/screen/scripts.js.map +1 -0
  105. package/dist/screen/tools.d.ts +3 -0
  106. package/dist/screen/tools.js +168 -0
  107. package/dist/screen/tools.js.map +1 -0
  108. package/dist/semantic/embeddings.d.ts +12 -0
  109. package/dist/semantic/embeddings.js +101 -0
  110. package/dist/semantic/embeddings.js.map +1 -0
  111. package/dist/semantic/service.d.ts +68 -0
  112. package/dist/semantic/service.js +257 -0
  113. package/dist/semantic/service.js.map +1 -0
  114. package/dist/semantic/store.d.ts +56 -0
  115. package/dist/semantic/store.js +107 -0
  116. package/dist/semantic/store.js.map +1 -0
  117. package/dist/semantic/tools.d.ts +10 -0
  118. package/dist/semantic/tools.js +102 -0
  119. package/dist/semantic/tools.js.map +1 -0
  120. package/dist/shared/config.d.ts +41 -0
  121. package/dist/shared/config.js +152 -0
  122. package/dist/shared/config.js.map +1 -0
  123. package/dist/shared/esc.d.ts +10 -0
  124. package/dist/shared/esc.js +35 -0
  125. package/dist/shared/esc.js.map +1 -0
  126. package/dist/shared/hitl-guard.d.ts +8 -0
  127. package/dist/shared/hitl-guard.js +39 -0
  128. package/dist/shared/hitl-guard.js.map +1 -0
  129. package/dist/shared/hitl.d.ts +16 -0
  130. package/dist/shared/hitl.js +131 -0
  131. package/dist/shared/hitl.js.map +1 -0
  132. package/dist/shared/jxa.d.ts +1 -0
  133. package/dist/shared/jxa.js +52 -0
  134. package/dist/shared/jxa.js.map +1 -0
  135. package/dist/shared/modules.d.ts +2 -0
  136. package/dist/shared/modules.js +43 -0
  137. package/dist/shared/modules.js.map +1 -0
  138. package/dist/shared/prompt.d.ts +11 -0
  139. package/dist/shared/prompt.js +8 -0
  140. package/dist/shared/prompt.js.map +1 -0
  141. package/dist/shared/registry.d.ts +9 -0
  142. package/dist/shared/registry.js +2 -0
  143. package/dist/shared/registry.js.map +1 -0
  144. package/dist/shared/resources.d.ts +14 -0
  145. package/dist/shared/resources.js +222 -0
  146. package/dist/shared/resources.js.map +1 -0
  147. package/dist/shared/result.d.ts +23 -0
  148. package/dist/shared/result.js +19 -0
  149. package/dist/shared/result.js.map +1 -0
  150. package/dist/shared/setup.d.ts +3 -0
  151. package/dist/shared/setup.js +53 -0
  152. package/dist/shared/setup.js.map +1 -0
  153. package/dist/shared/share-guard.d.ts +30 -0
  154. package/dist/shared/share-guard.js +60 -0
  155. package/dist/shared/share-guard.js.map +1 -0
  156. package/dist/shared/swift.d.ts +2 -0
  157. package/dist/shared/swift.js +73 -0
  158. package/dist/shared/swift.js.map +1 -0
  159. package/dist/shortcuts/prompts.d.ts +2 -0
  160. package/dist/shortcuts/prompts.js +148 -0
  161. package/dist/shortcuts/prompts.js.map +1 -0
  162. package/dist/shortcuts/scripts.d.ts +10 -0
  163. package/dist/shortcuts/scripts.js +115 -0
  164. package/dist/shortcuts/scripts.js.map +1 -0
  165. package/dist/shortcuts/tools.d.ts +14 -0
  166. package/dist/shortcuts/tools.js +230 -0
  167. package/dist/shortcuts/tools.js.map +1 -0
  168. package/dist/system/scripts.d.ts +17 -0
  169. package/dist/system/scripts.js +257 -0
  170. package/dist/system/scripts.js.map +1 -0
  171. package/dist/system/tools.d.ts +3 -0
  172. package/dist/system/tools.js +333 -0
  173. package/dist/system/tools.js.map +1 -0
  174. package/dist/tv/scripts.d.ts +6 -0
  175. package/dist/tv/scripts.js +121 -0
  176. package/dist/tv/scripts.js.map +1 -0
  177. package/dist/tv/tools.d.ts +3 -0
  178. package/dist/tv/tools.js +95 -0
  179. package/dist/tv/tools.js.map +1 -0
  180. package/dist/ui/scripts.d.ts +24 -0
  181. package/dist/ui/scripts.js +345 -0
  182. package/dist/ui/scripts.js.map +1 -0
  183. package/dist/ui/tools.d.ts +3 -0
  184. package/dist/ui/tools.js +145 -0
  185. package/dist/ui/tools.js.map +1 -0
  186. package/package.json +101 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cross/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { AirMcpConfig } from "../shared/config.js";
3
+ /**
4
+ * Cross-module tools that leverage MCP Sampling to delegate
5
+ * intelligence to the client's LLM — no API keys needed.
6
+ */
7
+ export declare function registerCrossTools(mcpServer: McpServer, config: AirMcpConfig): void;
@@ -0,0 +1,81 @@
1
+ import { z } from "zod";
2
+ import { ok, err } from "../shared/result.js";
3
+ import { buildSnapshot } from "../shared/resources.js";
4
+ import { isModuleEnabled } from "../shared/config.js";
5
+ /**
6
+ * Cross-module tools that leverage MCP Sampling to delegate
7
+ * intelligence to the client's LLM — no API keys needed.
8
+ */
9
+ export function registerCrossTools(mcpServer, config) {
10
+ const lowServer = mcpServer.server;
11
+ const enabled = (mod) => isModuleEnabled(config, mod);
12
+ mcpServer.registerTool("summarize_context", {
13
+ title: "Summarize Context",
14
+ description: "Collect context from all enabled Apple apps and ask the client's LLM to produce a concise briefing. " +
15
+ "Uses MCP Sampling — works with any LLM the client is using. No API keys required.",
16
+ inputSchema: {
17
+ focus: z
18
+ .string()
19
+ .optional()
20
+ .describe("Optional focus area (e.g. 'meetings', 'overdue tasks', 'project X')"),
21
+ },
22
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
23
+ }, async ({ focus }) => {
24
+ // 1. Build context snapshot directly
25
+ let snapshotText;
26
+ try {
27
+ snapshotText = await buildSnapshot(enabled, "standard");
28
+ }
29
+ catch (e) {
30
+ return err(`Failed to build context snapshot: ${e instanceof Error ? e.message : String(e)}`);
31
+ }
32
+ if (!snapshotText || snapshotText === "{}") {
33
+ return err("Context snapshot is empty. Are any modules enabled?");
34
+ }
35
+ // 2. Use MCP Sampling to ask the client's LLM for a summary
36
+ const systemPrompt = [
37
+ "You are a personal assistant summarizing a user's Apple ecosystem context.",
38
+ "Be concise and actionable. Prioritize time-sensitive items.",
39
+ "Format: short paragraphs, no bullet points exceeding 5 items.",
40
+ focus ? `Focus especially on: ${focus}` : "",
41
+ ]
42
+ .filter(Boolean)
43
+ .join(" ");
44
+ try {
45
+ const result = await lowServer.createMessage({
46
+ messages: [
47
+ {
48
+ role: "user",
49
+ content: {
50
+ type: "text",
51
+ text: `Here is my current Apple ecosystem context:\n\n${snapshotText}\n\nPlease give me a concise briefing of what I need to know right now.`,
52
+ },
53
+ },
54
+ ],
55
+ systemPrompt,
56
+ maxTokens: 500,
57
+ modelPreferences: {
58
+ speedPriority: 0.8,
59
+ intelligencePriority: 0.5,
60
+ costPriority: 0.8,
61
+ },
62
+ });
63
+ const text = result.content.type === "text"
64
+ ? result.content.text
65
+ : JSON.stringify(result.content);
66
+ return ok({ briefing: text, model: result.model });
67
+ }
68
+ catch (e) {
69
+ const msg = e instanceof Error ? e.message : String(e);
70
+ if (msg.includes("not supported") || msg.includes("sampling") || msg.includes("Method not found")) {
71
+ return ok({
72
+ briefing: null,
73
+ fallback: "Client does not support MCP Sampling. Returning raw context snapshot.",
74
+ snapshot: JSON.parse(snapshotText),
75
+ });
76
+ }
77
+ return err(`Sampling failed: ${msg}`);
78
+ }
79
+ });
80
+ }
81
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/cross/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function searchFilesScript(folder: string, query: string, limit: number): string;
2
+ export declare function getFileInfoScript(path: string): string;
3
+ export declare function setTagsScript(path: string, tags: string[]): string;
4
+ export declare function recentFilesScript(folder: string, days: number, limit: number): string;
5
+ export declare function listDirectoryScript(path: string, limit: number): string;
6
+ export declare function moveFileScript(source: string, destination: string): string;
7
+ export declare function trashFileScript(path: string): string;
8
+ export declare function createFolderScript(path: string): string;
@@ -0,0 +1,127 @@
1
+ // JXA scripts for Finder automation (file search, tags, info).
2
+ import { esc, escJxaShell } from "../shared/esc.js";
3
+ export function searchFilesScript(folder, query, limit) {
4
+ return `
5
+ const app = Application.currentApplication();
6
+ app.includeStandardAdditions = true;
7
+ const results = app.doShellScript('mdfind -onlyin "${escJxaShell(folder)}" "${escJxaShell(query)}" | head -${limit}');
8
+ const paths = results.split(/[\\r\\n]+/).filter(p => p.length > 0);
9
+ const Finder = Application('Finder');
10
+ const result = paths.map(p => {
11
+ try {
12
+ const item = Finder.items.whose({url: 'file://' + encodeURI(p)})()[0];
13
+ if (!item) return {path: p, name: p.split('/').pop()};
14
+ return {
15
+ path: p,
16
+ name: item.name(),
17
+ kind: item.kind(),
18
+ size: item.size(),
19
+ modificationDate: item.modificationDate().toISOString()
20
+ };
21
+ } catch(e) {
22
+ return {path: p, name: p.split('/').pop()};
23
+ }
24
+ });
25
+ JSON.stringify({total: paths.length, files: result});
26
+ `;
27
+ }
28
+ export function getFileInfoScript(path) {
29
+ return `
30
+ const app = Application.currentApplication();
31
+ app.includeStandardAdditions = true;
32
+ const Finder = Application('Finder');
33
+ const posixFile = Path('${esc(path)}');
34
+ const item = Finder.items[posixFile.toString()];
35
+ const tags = (function() {
36
+ try {
37
+ const output = app.doShellScript('mdls -name kMDItemUserTags -raw "${escJxaShell(path)}"');
38
+ if (output.includes('null')) return [];
39
+ return output.replace(/[()\\n\\t]/g, '').split(',').map(t => t.trim().replace(/"/g, '')).filter(t => t);
40
+ } catch(e) { return []; }
41
+ })();
42
+ JSON.stringify({
43
+ path: '${esc(path)}',
44
+ name: item.name(),
45
+ kind: item.kind(),
46
+ size: item.size(),
47
+ creationDate: item.creationDate().toISOString(),
48
+ modificationDate: item.modificationDate().toISOString(),
49
+ tags: tags
50
+ });
51
+ `;
52
+ }
53
+ export function setTagsScript(path, tags) {
54
+ const tagArgs = tags.map((t) => `'${esc(t)}'`).join(", ");
55
+ return `
56
+ const app = Application.currentApplication();
57
+ app.includeStandardAdditions = true;
58
+ ObjC.import('Foundation');
59
+ const url = $.NSURL.fileURLWithPath('${esc(path)}');
60
+ const tagArray = $.NSArray.arrayWithArray([${tagArgs}]);
61
+ url.setResourceValueForKeyError(tagArray, 'NSURLTagNamesKey', null);
62
+ JSON.stringify({path: '${esc(path)}', tags: [${tagArgs}]});
63
+ `;
64
+ }
65
+ export function recentFilesScript(folder, days, limit) {
66
+ return `
67
+ const app = Application.currentApplication();
68
+ app.includeStandardAdditions = true;
69
+ const dateStr = new Date(Date.now() - ${days} * 86400000).toISOString().split('T')[0];
70
+ const results = app.doShellScript('mdfind -onlyin "${escJxaShell(folder)}" "kMDItemContentModificationDate >= $time.iso(' + dateStr + ')" | head -${limit}');
71
+ const paths = results.split(/[\\r\\n]+/).filter(p => p.length > 0);
72
+ const result = paths.map(p => ({path: p, name: p.split('/').pop()}));
73
+ JSON.stringify({total: paths.length, files: result});
74
+ `;
75
+ }
76
+ export function listDirectoryScript(path, limit) {
77
+ return `
78
+ const app = Application.currentApplication();
79
+ app.includeStandardAdditions = true;
80
+ const output = app.doShellScript('ls -1 "${escJxaShell(path)}" | head -${limit}');
81
+ const names = output.split(/[\\r\\n]+/).filter(n => n.length > 0);
82
+ const Finder = Application('Finder');
83
+ const result = names.map(name => {
84
+ try {
85
+ const fullPath = '${esc(path)}' + '/' + name;
86
+ const posixFile = Path(fullPath);
87
+ const item = Finder.items[posixFile.toString()];
88
+ return {
89
+ name: name,
90
+ kind: item.kind(),
91
+ size: item.size(),
92
+ modificationDate: item.modificationDate().toISOString()
93
+ };
94
+ } catch(e) {
95
+ return {name: name, kind: 'unknown'};
96
+ }
97
+ });
98
+ JSON.stringify({total: names.length, returned: result.length, items: result});
99
+ `;
100
+ }
101
+ export function moveFileScript(source, destination) {
102
+ return `
103
+ const app = Application.currentApplication();
104
+ app.includeStandardAdditions = true;
105
+ app.doShellScript('mv "${escJxaShell(source)}" "${escJxaShell(destination)}"');
106
+ JSON.stringify({moved: true, source: '${esc(source)}', destination: '${esc(destination)}'});
107
+ `;
108
+ }
109
+ export function trashFileScript(path) {
110
+ return `
111
+ const Finder = Application('Finder');
112
+ const posixFile = Path('${esc(path)}');
113
+ const item = Finder.items[posixFile.toString()];
114
+ const name = item.name();
115
+ Finder.delete(item);
116
+ JSON.stringify({trashed: true, name: name, path: '${esc(path)}'});
117
+ `;
118
+ }
119
+ export function createFolderScript(path) {
120
+ return `
121
+ const app = Application.currentApplication();
122
+ app.includeStandardAdditions = true;
123
+ app.doShellScript('mkdir -p "${escJxaShell(path)}"');
124
+ JSON.stringify({created: true, path: '${esc(path)}'});
125
+ `;
126
+ }
127
+ //# sourceMappingURL=scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/finder/scripts.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAE/D,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,KAAa,EAAE,KAAa;IAC5E,OAAO;;;yDAGgD,WAAW,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,aAAa,KAAK;;;;;;;;;;;;;;;;;;;GAmBnH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO;;;;8BAIqB,GAAG,CAAC,IAAI,CAAC;;;;6EAIsC,WAAW,CAAC,IAAI,CAAC;;;;;;eAM/E,GAAG,CAAC,IAAI,CAAC;;;;;;;;GAQrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAc;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,OAAO;;;;2CAIkC,GAAG,CAAC,IAAI,CAAC;iDACH,OAAO;;6BAE3B,GAAG,CAAC,IAAI,CAAC,aAAa,OAAO;GACvD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,IAAY,EAAE,KAAa;IAC3E,OAAO;;;4CAGmC,IAAI;yDACS,WAAW,CAAC,MAAM,CAAC,4EAA4E,KAAK;;;;GAI1J,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,KAAa;IAC7D,OAAO;;;+CAGsC,WAAW,CAAC,IAAI,CAAC,aAAa,KAAK;;;;;4BAKtD,GAAG,CAAC,IAAI,CAAC;;;;;;;;;;;;;;GAclC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,WAAmB;IAChE,OAAO;;;6BAGoB,WAAW,CAAC,MAAM,CAAC,MAAM,WAAW,CAAC,WAAW,CAAC;4CAClC,GAAG,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,WAAW,CAAC;GACxF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO;;8BAEqB,GAAG,CAAC,IAAI,CAAC;;;;wDAIiB,GAAG,CAAC,IAAI,CAAC;GAC9D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO;;;mCAG0B,WAAW,CAAC,IAAI,CAAC;4CACR,GAAG,CAAC,IAAI,CAAC;GAClD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { AirMcpConfig } from "../shared/config.js";
3
+ export declare function registerFinderTools(server: McpServer, _config: AirMcpConfig): void;
@@ -0,0 +1,134 @@
1
+ import { z } from "zod";
2
+ import { runJxa } from "../shared/jxa.js";
3
+ import { ok, err } from "../shared/result.js";
4
+ import { searchFilesScript, getFileInfoScript, setTagsScript, recentFilesScript, listDirectoryScript, moveFileScript, trashFileScript, createFolderScript, } from "./scripts.js";
5
+ export function registerFinderTools(server, _config) {
6
+ server.registerTool("search_files", {
7
+ title: "Search Files",
8
+ description: "Search files using Spotlight (mdfind). Searches file names and content.",
9
+ inputSchema: {
10
+ query: z.string().describe("Search query (Spotlight syntax)"),
11
+ folder: z.string().min(1).optional().default("~").describe("Folder to search in (default: home)"),
12
+ limit: z.number().int().min(1).max(200).optional().default(50).describe("Max results (default: 50)"),
13
+ },
14
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
15
+ }, async ({ query, folder, limit }) => {
16
+ try {
17
+ return ok(await runJxa(searchFilesScript(folder, query, limit)));
18
+ }
19
+ catch (e) {
20
+ return err(`Failed to search files: ${e instanceof Error ? e.message : String(e)}`);
21
+ }
22
+ });
23
+ server.registerTool("get_file_info", {
24
+ title: "Get File Info",
25
+ description: "Get detailed file information including size, dates, kind, and tags.",
26
+ inputSchema: {
27
+ path: z.string().min(1).describe("Absolute file path"),
28
+ },
29
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
30
+ }, async ({ path }) => {
31
+ try {
32
+ return ok(await runJxa(getFileInfoScript(path)));
33
+ }
34
+ catch (e) {
35
+ return err(`Failed to get file info: ${e instanceof Error ? e.message : String(e)}`);
36
+ }
37
+ });
38
+ server.registerTool("set_file_tags", {
39
+ title: "Set File Tags",
40
+ description: "Set Finder tags on a file. Replaces all existing tags.",
41
+ inputSchema: {
42
+ path: z.string().min(1).describe("Absolute file path"),
43
+ tags: z.array(z.string()).describe("Array of tag names to set"),
44
+ },
45
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
46
+ }, async ({ path, tags }) => {
47
+ try {
48
+ return ok(await runJxa(setTagsScript(path, tags)));
49
+ }
50
+ catch (e) {
51
+ return err(`Failed to set tags: ${e instanceof Error ? e.message : String(e)}`);
52
+ }
53
+ });
54
+ server.registerTool("recent_files", {
55
+ title: "Recent Files",
56
+ description: "Find recently modified files in a folder using Spotlight.",
57
+ inputSchema: {
58
+ folder: z.string().min(1).optional().default("~").describe("Folder to search (default: home)"),
59
+ days: z.number().int().min(1).max(365).optional().default(7).describe("Modified within N days (default: 7)"),
60
+ limit: z.number().int().min(1).max(200).optional().default(30).describe("Max results (default: 30)"),
61
+ },
62
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
63
+ }, async ({ folder, days, limit }) => {
64
+ try {
65
+ return ok(await runJxa(recentFilesScript(folder, days, limit)));
66
+ }
67
+ catch (e) {
68
+ return err(`Failed to find recent files: ${e instanceof Error ? e.message : String(e)}`);
69
+ }
70
+ });
71
+ server.registerTool("list_directory", {
72
+ title: "List Directory",
73
+ description: "List files and folders in a directory with metadata (kind, size, modification date).",
74
+ inputSchema: {
75
+ path: z.string().min(1).describe("Absolute directory path"),
76
+ limit: z.number().int().min(1).max(500).optional().default(100).describe("Max items to return (default: 100)"),
77
+ },
78
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
79
+ }, async ({ path, limit }) => {
80
+ try {
81
+ return ok(await runJxa(listDirectoryScript(path, limit)));
82
+ }
83
+ catch (e) {
84
+ return err(`Failed to list directory: ${e instanceof Error ? e.message : String(e)}`);
85
+ }
86
+ });
87
+ server.registerTool("move_file", {
88
+ title: "Move File",
89
+ description: "Move or rename a file or folder to a new location.",
90
+ inputSchema: {
91
+ source: z.string().min(1).describe("Absolute path of the file or folder to move"),
92
+ destination: z.string().min(1).describe("Absolute destination path"),
93
+ },
94
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: false },
95
+ }, async ({ source, destination }) => {
96
+ try {
97
+ return ok(await runJxa(moveFileScript(source, destination)));
98
+ }
99
+ catch (e) {
100
+ return err(`Failed to move file: ${e instanceof Error ? e.message : String(e)}`);
101
+ }
102
+ });
103
+ server.registerTool("trash_file", {
104
+ title: "Trash File",
105
+ description: "Move a file or folder to the Trash using Finder.",
106
+ inputSchema: {
107
+ path: z.string().min(1).describe("Absolute path of the file or folder to trash"),
108
+ },
109
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
110
+ }, async ({ path }) => {
111
+ try {
112
+ return ok(await runJxa(trashFileScript(path)));
113
+ }
114
+ catch (e) {
115
+ return err(`Failed to trash file: ${e instanceof Error ? e.message : String(e)}`);
116
+ }
117
+ });
118
+ server.registerTool("create_directory", {
119
+ title: "Create Directory",
120
+ description: "Create a new directory (and intermediate directories if needed).",
121
+ inputSchema: {
122
+ path: z.string().min(1).describe("Absolute path of the folder to create"),
123
+ },
124
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
125
+ }, async ({ path }) => {
126
+ try {
127
+ return ok(await runJxa(createFolderScript(path)));
128
+ }
129
+ catch (e) {
130
+ return err(`Failed to create folder: ${e instanceof Error ? e.message : String(e)}`);
131
+ }
132
+ });
133
+ }
134
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/finder/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};