airmcp 1.6.1 → 1.9.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.
- package/README.md +4 -4
- package/dist/apps/tools.d.ts +5 -0
- package/dist/apps/tools.js +167 -0
- package/dist/apps/tools.js.map +1 -0
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/keynote/scripts.d.ts +9 -0
- package/dist/keynote/scripts.js +77 -0
- package/dist/keynote/scripts.js.map +1 -0
- package/dist/keynote/tools.d.ts +3 -0
- package/dist/keynote/tools.js +144 -0
- package/dist/keynote/tools.js.map +1 -0
- package/dist/maps/api.d.ts +17 -0
- package/dist/maps/api.js +50 -0
- package/dist/maps/api.js.map +1 -0
- package/dist/maps/tools.js +32 -0
- package/dist/maps/tools.js.map +1 -1
- package/dist/music/scripts.d.ts +4 -0
- package/dist/music/scripts.js +45 -1
- package/dist/music/scripts.js.map +1 -1
- package/dist/music/tools.js +64 -1
- package/dist/music/tools.js.map +1 -1
- package/dist/numbers/scripts.d.ts +9 -0
- package/dist/numbers/scripts.js +80 -0
- package/dist/numbers/scripts.js.map +1 -0
- package/dist/numbers/tools.d.ts +3 -0
- package/dist/numbers/tools.js +151 -0
- package/dist/numbers/tools.js.map +1 -0
- package/dist/pages/scripts.d.ts +7 -0
- package/dist/pages/scripts.js +39 -0
- package/dist/pages/scripts.js.map +1 -0
- package/dist/pages/tools.d.ts +3 -0
- package/dist/pages/tools.js +111 -0
- package/dist/pages/tools.js.map +1 -0
- package/dist/shared/config.d.ts +1 -1
- package/dist/shared/config.js +4 -0
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/iwork.d.ts +10 -0
- package/dist/shared/iwork.js +48 -0
- package/dist/shared/iwork.js.map +1 -0
- package/dist/shared/modules.js +8 -0
- package/dist/shared/modules.js.map +1 -1
- package/dist/skills/builtins/inbox-triage.yaml +15 -0
- package/dist/skills/builtins/meeting-action-items.yaml +18 -0
- package/dist/skills/builtins/morning-briefing.yaml +15 -0
- package/dist/skills/executor.d.ts +22 -0
- package/dist/skills/executor.js +251 -0
- package/dist/skills/executor.js.map +1 -0
- package/dist/skills/index.d.ts +2 -0
- package/dist/skills/index.js +21 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/loader.d.ts +9 -0
- package/dist/skills/loader.js +74 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/register.d.ts +6 -0
- package/dist/skills/register.js +62 -0
- package/dist/skills/register.js.map +1 -0
- package/dist/skills/types.d.ts +82 -0
- package/dist/skills/types.js +16 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/system/scripts.d.ts +10 -0
- package/dist/system/scripts.js +117 -0
- package/dist/system/scripts.js.map +1 -1
- package/dist/system/tools.js +193 -1
- package/dist/system/tools.js.map +1 -1
- package/dist/weather/api.d.ts +18 -0
- package/dist/weather/api.js +100 -0
- package/dist/weather/api.js.map +1 -0
- package/dist/weather/tools.d.ts +3 -0
- package/dist/weather/tools.js +56 -0
- package/dist/weather/tools.js.map +1 -0
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# AirMCP
|
|
2
2
|
|
|
3
|
-
MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and
|
|
3
|
+
MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, Podcasts, Weather, Pages, Numbers, and Keynote. Connect any AI to your Mac.
|
|
4
4
|
|
|
5
5
|
> Available in multiple languages at the [project landing page](https://heznpc.github.io/AirMCP/).
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
9
|
+
- **220 tools** (22 modules) — Apple app CRUD + system control + Apple Intelligence + UI Automation + Screen Capture + Maps + Podcasts + Weather + iWork (Pages/Numbers/Keynote) + dynamic shortcuts
|
|
10
|
+
- **30 prompts** — per-app workflows (notes, calendar, reminders, shortcuts) + cross-module + developer workflows
|
|
11
11
|
- **11 MCP resources** — Notes, Calendar, Reminders live data URIs
|
|
12
12
|
- **JXA + Swift bridge** — JXA for basic automation, EventKit/PhotoKit for advanced features
|
|
13
13
|
- **Recurring events/reminders** — EventKit recurrence rules (macOS 26+ Swift bridge)
|
|
@@ -521,7 +521,7 @@ Or edit `~/.config/airmcp/config.json` directly:
|
|
|
521
521
|
| `npx airmcp init` | Interactive setup wizard |
|
|
522
522
|
| `npx airmcp doctor` | Diagnose installation issues |
|
|
523
523
|
| `npx airmcp` | Start MCP server (stdio, default) |
|
|
524
|
-
| `npx airmcp --full` | Start with all
|
|
524
|
+
| `npx airmcp --full` | Start with all 22 modules enabled |
|
|
525
525
|
| `npx airmcp --http` | Start as HTTP server (port 3847) |
|
|
526
526
|
|
|
527
527
|
## Configuration
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// MCP Apps — interactive UI views for Calendar and Music.
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { registerAppTool, registerAppResource, RESOURCE_MIME_TYPE } from "@modelcontextprotocol/ext-apps/server";
|
|
4
|
+
import { runJxa } from "../shared/jxa.js";
|
|
5
|
+
import { listEventsScript } from "../calendar/scripts.js";
|
|
6
|
+
import { nowPlayingScript } from "../music/scripts.js";
|
|
7
|
+
const CALENDAR_WEEK_HTML = `<!DOCTYPE html>
|
|
8
|
+
<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
9
|
+
<style>
|
|
10
|
+
*{box-sizing:border-box;margin:0;padding:0}
|
|
11
|
+
body{font-family:var(--font-sans,system-ui,-apple-system,sans-serif);background:var(--color-background-primary,#fff);color:var(--color-text-primary,#111)}
|
|
12
|
+
.header{padding:16px;font-size:18px;font-weight:600;border-bottom:1px solid var(--color-border-primary,#e5e5e5)}
|
|
13
|
+
.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--color-border-primary,#e5e5e5)}
|
|
14
|
+
.day{background:var(--color-background-primary,#fff);min-height:120px;padding:8px}
|
|
15
|
+
.day-hdr{font-size:11px;font-weight:600;color:var(--color-text-secondary,#888);text-transform:uppercase;letter-spacing:.5px}
|
|
16
|
+
.day-num{font-size:20px;font-weight:700;margin:2px 0 6px}
|
|
17
|
+
.ev{background:#007aff;color:#fff;border-radius:4px;padding:2px 6px;font-size:11px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}
|
|
18
|
+
.today{background:var(--color-background-secondary,#f5f5f5)}
|
|
19
|
+
.today .day-num{color:#007aff}
|
|
20
|
+
.loading{display:flex;align-items:center;justify-content:center;height:200px;color:var(--color-text-secondary,#999)}
|
|
21
|
+
</style></head><body>
|
|
22
|
+
<div class="header" id="hdr">Calendar</div>
|
|
23
|
+
<div id="content"><div class="loading">Loading events\u2026</div></div>
|
|
24
|
+
<script type="module">
|
|
25
|
+
import{App}from"https://esm.sh/@modelcontextprotocol/ext-apps@1.2.2";
|
|
26
|
+
const app=new App({name:"AirMCP Calendar",version:"1.0.0"});
|
|
27
|
+
app.onhostcontextchanged=ctx=>{
|
|
28
|
+
if(ctx.styles?.variables)Object.entries(ctx.styles.variables).forEach(([k,v])=>document.documentElement.style.setProperty(k,v));
|
|
29
|
+
};
|
|
30
|
+
app.ontoolresult=r=>{try{
|
|
31
|
+
const t=r.content?.find(c=>c.type==="text")?.text;
|
|
32
|
+
if(t)render(JSON.parse(t));
|
|
33
|
+
}catch(e){document.getElementById("content").innerHTML='<div class="loading">Error</div>'}};
|
|
34
|
+
function render(d){
|
|
35
|
+
const{weekStart,events}=d,s=new Date(weekStart),days=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],
|
|
36
|
+
today=new Date().toISOString().slice(0,10);
|
|
37
|
+
document.getElementById("hdr").textContent="Week of "+s.toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"});
|
|
38
|
+
let h='<div class="grid">';
|
|
39
|
+
for(let i=0;i<7;i++){
|
|
40
|
+
const dd=new Date(s);dd.setDate(dd.getDate()+i);
|
|
41
|
+
const ds=dd.toISOString().slice(0,10),isT=ds===today;
|
|
42
|
+
const de=(events||[]).filter(e=>e.startDate&&e.startDate.startsWith(ds));
|
|
43
|
+
h+='<div class="day'+(isT?" today":"")+'"><div class="day-hdr">'+days[i]+'</div><div class="day-num">'+dd.getDate()+"</div>";
|
|
44
|
+
for(const e of de){const tm=e.allDay?"":e.startDate.slice(11,16)+" ";h+='<div class="ev" title="'+esc(e.summary)+'">'+tm+esc(e.summary)+"</div>"}
|
|
45
|
+
h+="</div>"}
|
|
46
|
+
h+="</div>";document.getElementById("content").innerHTML=h}
|
|
47
|
+
function esc(s){const d=document.createElement("div");d.textContent=s||"";return d.innerHTML}
|
|
48
|
+
await app.connect();
|
|
49
|
+
</script></body></html>`;
|
|
50
|
+
const MUSIC_PLAYER_HTML = `<!DOCTYPE html>
|
|
51
|
+
<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
|
|
52
|
+
<style>
|
|
53
|
+
*{box-sizing:border-box;margin:0;padding:0}
|
|
54
|
+
body{font-family:var(--font-sans,system-ui,-apple-system,sans-serif);background:var(--color-background-primary,#1a1a1a);color:var(--color-text-primary,#fff);display:flex;align-items:center;justify-content:center;min-height:200px;padding:24px}
|
|
55
|
+
.player{text-align:center;width:100%;max-width:360px}
|
|
56
|
+
.art{width:180px;height:180px;border-radius:16px;background:var(--color-background-secondary,#333);margin:0 auto 16px;display:flex;align-items:center;justify-content:center;font-size:56px}
|
|
57
|
+
.name{font-size:18px;font-weight:700;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
58
|
+
.artist{font-size:14px;color:var(--color-text-secondary,#aaa);margin-bottom:2px}
|
|
59
|
+
.album{font-size:12px;color:var(--color-text-tertiary,#777);margin-bottom:12px}
|
|
60
|
+
.state{display:inline-block;font-size:11px;color:var(--color-text-secondary,#aaa);text-transform:capitalize;background:rgba(255,255,255,.1);padding:2px 10px;border-radius:10px;margin-bottom:12px}
|
|
61
|
+
.bar-wrap{width:100%;height:4px;background:rgba(255,255,255,.15);border-radius:2px;margin-bottom:6px;overflow:hidden}
|
|
62
|
+
.bar{height:100%;background:#007aff;border-radius:2px;transition:width .3s}
|
|
63
|
+
.time{display:flex;justify-content:space-between;font-size:11px;color:var(--color-text-secondary,#888)}
|
|
64
|
+
.stopped{color:var(--color-text-secondary,#888);font-size:15px}
|
|
65
|
+
</style></head><body>
|
|
66
|
+
<div class="player" id="p"><div class="stopped">No track playing</div></div>
|
|
67
|
+
<script type="module">
|
|
68
|
+
import{App}from"https://esm.sh/@modelcontextprotocol/ext-apps@1.2.2";
|
|
69
|
+
const app=new App({name:"AirMCP Music",version:"1.0.0"});
|
|
70
|
+
app.onhostcontextchanged=ctx=>{
|
|
71
|
+
if(ctx.styles?.variables)Object.entries(ctx.styles.variables).forEach(([k,v])=>document.documentElement.style.setProperty(k,v));
|
|
72
|
+
};
|
|
73
|
+
app.ontoolresult=r=>{try{
|
|
74
|
+
const t=r.content?.find(c=>c.type==="text")?.text;
|
|
75
|
+
if(t)render(JSON.parse(t));
|
|
76
|
+
}catch(e){}};
|
|
77
|
+
function fmt(s){const m=Math.floor(s/60),sec=Math.floor(s%60);return m+":"+String(sec).padStart(2,"0")}
|
|
78
|
+
function render(d){
|
|
79
|
+
const el=document.getElementById("p");
|
|
80
|
+
if(d.playerState==="stopped"||!d.track){el.innerHTML='<div class="stopped">No track playing</div>';return}
|
|
81
|
+
const t=d.track,pct=t.duration>0?(t.playerPosition/t.duration*100):0;
|
|
82
|
+
el.innerHTML=
|
|
83
|
+
'<div class="art">\\u266B</div>'+
|
|
84
|
+
'<div class="name">'+esc(t.name)+'</div>'+
|
|
85
|
+
'<div class="artist">'+esc(t.artist)+'</div>'+
|
|
86
|
+
'<div class="album">'+esc(t.album)+'</div>'+
|
|
87
|
+
'<div class="state">'+d.playerState+'</div>'+
|
|
88
|
+
'<div class="bar-wrap"><div class="bar" style="width:'+pct+'%"></div></div>'+
|
|
89
|
+
'<div class="time"><span>'+fmt(t.playerPosition||0)+'</span><span>'+fmt(t.duration||0)+'</span></div>'}
|
|
90
|
+
function esc(s){const d=document.createElement("div");d.textContent=s||"";return d.innerHTML}
|
|
91
|
+
await app.connect();
|
|
92
|
+
</script></body></html>`;
|
|
93
|
+
function getWeekMonday(dateStr) {
|
|
94
|
+
const d = dateStr ? new Date(dateStr + "T00:00:00") : new Date();
|
|
95
|
+
const day = d.getDay();
|
|
96
|
+
const diff = d.getDate() - day + (day === 0 ? -6 : 1);
|
|
97
|
+
d.setDate(diff);
|
|
98
|
+
// Use local date parts — toISOString() returns UTC which shifts dates in UTC+ timezones
|
|
99
|
+
const yyyy = d.getFullYear();
|
|
100
|
+
const mm = String(d.getMonth() + 1).padStart(2, "0");
|
|
101
|
+
const dd = String(d.getDate()).padStart(2, "0");
|
|
102
|
+
return `${yyyy}-${mm}-${dd}`;
|
|
103
|
+
}
|
|
104
|
+
export function registerApps(server, opts) {
|
|
105
|
+
if (!opts.calendar && !opts.music)
|
|
106
|
+
return;
|
|
107
|
+
if (opts.calendar) {
|
|
108
|
+
// Calendar Week View
|
|
109
|
+
registerAppTool(server, "calendar_week_view", {
|
|
110
|
+
title: "Calendar Week View",
|
|
111
|
+
description: "Display an interactive calendar week view showing events for a 7-day period.",
|
|
112
|
+
inputSchema: {
|
|
113
|
+
startDate: z.string().optional().describe("Start date (YYYY-MM-DD). Defaults to current week's Monday."),
|
|
114
|
+
},
|
|
115
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
116
|
+
_meta: { ui: { resourceUri: "ui://airmcp/calendar-week" } },
|
|
117
|
+
}, async ({ startDate }) => {
|
|
118
|
+
const weekStart = getWeekMonday(startDate);
|
|
119
|
+
const weekEnd = new Date(weekStart);
|
|
120
|
+
weekEnd.setDate(weekEnd.getDate() + 7);
|
|
121
|
+
const endStr = weekEnd.toISOString().slice(0, 10);
|
|
122
|
+
const raw = await runJxa(listEventsScript(weekStart, endStr, 50, 0));
|
|
123
|
+
const parsed = typeof raw === "string" ? JSON.parse(raw) : raw;
|
|
124
|
+
return {
|
|
125
|
+
content: [{
|
|
126
|
+
type: "text",
|
|
127
|
+
text: JSON.stringify({ weekStart, events: parsed.events ?? [] }),
|
|
128
|
+
}],
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
registerAppResource(server, "Calendar Week View", "ui://airmcp/calendar-week", { description: "Interactive calendar week grid" }, async () => ({
|
|
132
|
+
contents: [{
|
|
133
|
+
uri: "ui://airmcp/calendar-week",
|
|
134
|
+
mimeType: RESOURCE_MIME_TYPE,
|
|
135
|
+
text: CALENDAR_WEEK_HTML,
|
|
136
|
+
_meta: { ui: { csp: { resourceDomains: ["https://esm.sh"] } } },
|
|
137
|
+
}],
|
|
138
|
+
}));
|
|
139
|
+
} // calendar
|
|
140
|
+
if (opts.music) {
|
|
141
|
+
// Music Player
|
|
142
|
+
registerAppTool(server, "music_player", {
|
|
143
|
+
title: "Music Player",
|
|
144
|
+
description: "Display an interactive music player showing the currently playing track.",
|
|
145
|
+
inputSchema: {},
|
|
146
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
147
|
+
_meta: { ui: { resourceUri: "ui://airmcp/music-player" } },
|
|
148
|
+
}, async () => {
|
|
149
|
+
const data = await runJxa(nowPlayingScript());
|
|
150
|
+
return {
|
|
151
|
+
content: [{
|
|
152
|
+
type: "text",
|
|
153
|
+
text: typeof data === "string" ? data : JSON.stringify(data),
|
|
154
|
+
}],
|
|
155
|
+
};
|
|
156
|
+
});
|
|
157
|
+
registerAppResource(server, "Music Player", "ui://airmcp/music-player", { description: "Interactive music player view" }, async () => ({
|
|
158
|
+
contents: [{
|
|
159
|
+
uri: "ui://airmcp/music-player",
|
|
160
|
+
mimeType: RESOURCE_MIME_TYPE,
|
|
161
|
+
text: MUSIC_PLAYER_HTML,
|
|
162
|
+
_meta: { ui: { csp: { resourceDomains: ["https://esm.sh"] } } },
|
|
163
|
+
}],
|
|
164
|
+
}));
|
|
165
|
+
} // music
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/apps/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -23,6 +23,8 @@ import { registerCrossTools } from "./cross/tools.js";
|
|
|
23
23
|
import { registerSemanticTools } from "./semantic/tools.js";
|
|
24
24
|
import { registerResources } from "./shared/resources.js";
|
|
25
25
|
import { registerSetupTools } from "./shared/setup.js";
|
|
26
|
+
import { registerSkillEngine } from "./skills/index.js";
|
|
27
|
+
import { registerApps } from "./apps/tools.js";
|
|
26
28
|
import { parseConfig, isModuleEnabled, getOsVersion, NPM_PACKAGE_NAME } from "./shared/config.js";
|
|
27
29
|
import { MODULE_REGISTRY } from "./shared/modules.js";
|
|
28
30
|
import { registerDynamicShortcutTools } from "./shortcuts/tools.js";
|
|
@@ -105,6 +107,13 @@ async function createServer() {
|
|
|
105
107
|
registerResources(server, config);
|
|
106
108
|
// Setup & diagnostics
|
|
107
109
|
registerSetupTools(server, config);
|
|
110
|
+
// Personal Skills Engine (YAML-based workflows)
|
|
111
|
+
await registerSkillEngine(server);
|
|
112
|
+
// MCP Apps — interactive UI views (Calendar week, Music player)
|
|
113
|
+
registerApps(server, {
|
|
114
|
+
calendar: enabled.includes("calendar"),
|
|
115
|
+
music: enabled.includes("music"),
|
|
116
|
+
});
|
|
108
117
|
// get_workflow: expose prompt handlers as a tool for autonomous agents (Cowork, etc.)
|
|
109
118
|
server.registerTool("get_workflow", {
|
|
110
119
|
title: "Get Workflow",
|
|
@@ -170,7 +179,7 @@ async function main() {
|
|
|
170
179
|
res.json({
|
|
171
180
|
name: NPM_PACKAGE_NAME,
|
|
172
181
|
version: pkg.version,
|
|
173
|
-
description: "MCP server for the entire Apple ecosystem —
|
|
182
|
+
description: "MCP server for the entire Apple ecosystem — 220 tools, 30 prompts across 22 modules. macOS only.",
|
|
174
183
|
transport: { type: "streamable-http", url: "/mcp" },
|
|
175
184
|
capabilities: {
|
|
176
185
|
tools: true,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,8CAA8C;AAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,KAAK,MAAM;QACzB,CAAC,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC;QAC/B,CAAC,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAE,GAAsC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAE,GAAwC,CAAC,SAAS,EAAE,CAAC,CAAC;IACpI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAwB,CAAC;AAE5G,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;AAC7B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;AAEjC,mEAAmE;AACnE,IAAI,UAAU,GAAsB,IAAI,CAAC;AACzC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;IAChC,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,KAAK,aAAa,MAAM,CAAC,IAAI,CAAC,OAAO,aAAa,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AACtI,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACxC,CAAC;AAED,+BAA+B;AAC/B,SAAS,MAAM;IACb,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,UAAU,GAAG,IAAI,CAAC;QAClB,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AACD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5D,KAAK,UAAU,YAAY;IACzB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC,CAAC;IAEH,mDAAmD;IACnD,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC9C,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QAClC,IAAI,GAAG,CAAC,eAAe,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC5E,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,oBAAoB,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC;QACzE,CAAC;aAAM,IAAI,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1B,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;gBAAE,gBAAgB,GAAG,IAAI,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,uCAAuC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,4BAA4B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE/D,0EAA0E;IAC1E,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,YAAY,GAAG,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,YAAY,YAAY,oCAAoC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,0DAA0D;IAC1D,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,gBAAgB;IAChB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,sBAAsB;IACtB,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,sFAAsF;IACtF,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,yFAAyF;YACzF,oFAAoF;QACtF,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YACtF,IAAI,EAAE,CAAC;iBACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBAClB,QAAQ,EAAE;iBACV,QAAQ,CAAC,qCAAqC,CAAC;SACnD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACvB,8DAA8D;QAC9D,MAAM,OAAO,GAAI,MAAc,CAAC,kBAAoF,CAAC;QACrH,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC,mBAAmB,IAAI,iBAAiB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5E,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,2BAA2B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAE1F,KAAK,UAAU,IAAI;IACjB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;QAClD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAExB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyC,CAAC;QACpE,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,4CAA4C;QACpF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAElD,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,eAAe,EAAE,CAAC;gBAC/C,IAAI,GAAG,GAAG,UAAU,GAAG,gBAAgB,EAAE,CAAC;oBACxC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACrC,IAAI,SAAS;wBAAE,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;oBACnC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACtB,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,yBAAyB;QAE5C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC;QAEzD,yEAAyE;QACzE,GAAG,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC7C,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,WAAW,EAAE,kGAAkG;gBAC/G,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE;gBACnD,YAAY,EAAE;oBACZ,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,IAAI;iBAChB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAClC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;gBAEtE,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3C,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC3C,MAAM,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBACnE,OAAO;gBACT,CAAC;gBAED,IAAI,SAAS,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,2CAA2C,EAAE;wBAC7E,EAAE,EAAE,IAAI;qBACT,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,IAAI,UAAU,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;oBACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,gDAAgD,EAAE;wBAClF,EAAE,EAAE,IAAI;qBACT,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;gBAED,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;oBAClD,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;oBACtC,oBAAoB,EAAE,CAAC,EAAE,EAAE,EAAE;wBAC3B,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;wBAC9B,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBACtC,CAAC;oBACD,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE;wBACtB,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBACtB,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC7B,CAAC;iBACF,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;gBACpC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE;wBAClD,EAAE,EAAE,IAAI;qBACT,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACjC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;gBACtE,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;oBACjE,OAAO;gBACT,CAAC;gBACD,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3C,MAAM,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YACpC,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;gBACtE,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;oBACjE,OAAO;gBACT,CAAC;gBACD,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC3C,MAAM,UAAU,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,KAAK,CAAC,6CAA6C,IAAI,uBAAuB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,oBAAoB,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;QAC9O,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,iDAAiD,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,oBAAoB,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,gBAAgB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACvN,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function listDocumentsScript(): string;
|
|
2
|
+
export declare function createDocumentScript(): string;
|
|
3
|
+
export declare function listSlidesScript(documentName: string): string;
|
|
4
|
+
export declare function getSlideScript(documentName: string, slideNumber: number): string;
|
|
5
|
+
export declare function addSlideScript(documentName: string): string;
|
|
6
|
+
export declare function setPresenterNotesScript(documentName: string, slideNumber: number, notes: string): string;
|
|
7
|
+
export declare function exportPdfScript(documentName: string, outputPath: string): string;
|
|
8
|
+
export declare function startSlideshowScript(documentName: string, fromSlide: number): string;
|
|
9
|
+
export declare function closeDocumentScript(documentName: string, saving: boolean): string;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { esc } from "../shared/esc.js";
|
|
2
|
+
import { iworkDocLookup, iworkListDocumentsScript, iworkCreateDocumentScript, iworkExportPdfScript, iworkCloseDocumentScript, } from "../shared/iwork.js";
|
|
3
|
+
export function listDocumentsScript() {
|
|
4
|
+
return iworkListDocumentsScript("Keynote");
|
|
5
|
+
}
|
|
6
|
+
export function createDocumentScript() {
|
|
7
|
+
return iworkCreateDocumentScript("Keynote");
|
|
8
|
+
}
|
|
9
|
+
export function listSlidesScript(documentName) {
|
|
10
|
+
return `
|
|
11
|
+
const Keynote = Application('Keynote');
|
|
12
|
+
${iworkDocLookup("Keynote", documentName)}
|
|
13
|
+
const slides = docs[0].slides();
|
|
14
|
+
const result = slides.map((s, i) => ({
|
|
15
|
+
number: i + 1,
|
|
16
|
+
skipped: s.skipped(),
|
|
17
|
+
title: (function() { try { return s.defaultTitleItem().objectText(); } catch(e) { return null; } })(),
|
|
18
|
+
body: (function() { try { return s.defaultBodyItem().objectText(); } catch(e) { return null; } })(),
|
|
19
|
+
presenterNotes: s.presenterNotes()
|
|
20
|
+
}));
|
|
21
|
+
JSON.stringify({total: result.length, slides: result});
|
|
22
|
+
`;
|
|
23
|
+
}
|
|
24
|
+
export function getSlideScript(documentName, slideNumber) {
|
|
25
|
+
const idx = slideNumber - 1;
|
|
26
|
+
return `
|
|
27
|
+
const Keynote = Application('Keynote');
|
|
28
|
+
${iworkDocLookup("Keynote", documentName)}
|
|
29
|
+
const slide = docs[0].slides[${idx}];
|
|
30
|
+
if (!slide) throw new Error('Slide ${slideNumber} not found');
|
|
31
|
+
const textItems = slide.textItems();
|
|
32
|
+
const texts = textItems.map(t => ({objectText: t.objectText()}));
|
|
33
|
+
JSON.stringify({
|
|
34
|
+
number: ${slideNumber},
|
|
35
|
+
skipped: slide.skipped(),
|
|
36
|
+
presenterNotes: slide.presenterNotes(),
|
|
37
|
+
textItems: texts
|
|
38
|
+
});
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
export function addSlideScript(documentName) {
|
|
42
|
+
return `
|
|
43
|
+
const Keynote = Application('Keynote');
|
|
44
|
+
${iworkDocLookup("Keynote", documentName)}
|
|
45
|
+
const slide = Keynote.Slide();
|
|
46
|
+
docs[0].slides.push(slide);
|
|
47
|
+
const total = docs[0].slides.length;
|
|
48
|
+
JSON.stringify({added: true, slideNumber: total});
|
|
49
|
+
`;
|
|
50
|
+
}
|
|
51
|
+
export function setPresenterNotesScript(documentName, slideNumber, notes) {
|
|
52
|
+
const idx = slideNumber - 1;
|
|
53
|
+
return `
|
|
54
|
+
const Keynote = Application('Keynote');
|
|
55
|
+
${iworkDocLookup("Keynote", documentName)}
|
|
56
|
+
const slide = docs[0].slides[${idx}];
|
|
57
|
+
if (!slide) throw new Error('Slide ${slideNumber} not found');
|
|
58
|
+
slide.presenterNotes = '${esc(notes)}';
|
|
59
|
+
JSON.stringify({updated: true, slideNumber: ${slideNumber}});
|
|
60
|
+
`;
|
|
61
|
+
}
|
|
62
|
+
export function exportPdfScript(documentName, outputPath) {
|
|
63
|
+
return iworkExportPdfScript("Keynote", documentName, outputPath);
|
|
64
|
+
}
|
|
65
|
+
export function startSlideshowScript(documentName, fromSlide) {
|
|
66
|
+
const idx = fromSlide - 1;
|
|
67
|
+
return `
|
|
68
|
+
const Keynote = Application('Keynote');
|
|
69
|
+
${iworkDocLookup("Keynote", documentName)}
|
|
70
|
+
Keynote.start(docs[0], {from: docs[0].slides[${idx}]});
|
|
71
|
+
JSON.stringify({started: true, fromSlide: ${fromSlide}});
|
|
72
|
+
`;
|
|
73
|
+
}
|
|
74
|
+
export function closeDocumentScript(documentName, saving) {
|
|
75
|
+
return iworkCloseDocumentScript("Keynote", documentName, saving);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=scripts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../src/keynote/scripts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,UAAU,mBAAmB;IACjC,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACnD,OAAO;;MAEH,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC;;;;;;;;;;GAU1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,YAAoB,EAAE,WAAmB;IACtE,MAAM,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC;IAC5B,OAAO;;MAEH,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC;mCACV,GAAG;yCACG,WAAW;;;;gBAIpC,WAAW;;;;;GAKxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,OAAO;;MAEH,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC;;;;;GAK1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,YAAoB,EAAE,WAAmB,EAAE,KAAa;IAC9F,MAAM,GAAG,GAAG,WAAW,GAAG,CAAC,CAAC;IAC5B,OAAO;;MAEH,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC;mCACV,GAAG;yCACG,WAAW;8BACtB,GAAG,CAAC,KAAK,CAAC;kDACU,WAAW;GAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,YAAoB,EAAE,UAAkB;IACtE,OAAO,oBAAoB,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,YAAoB,EAAE,SAAiB;IAC1E,MAAM,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC;IAC1B,OAAO;;MAEH,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC;mDACM,GAAG;gDACN,SAAS;GACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB,EAAE,MAAe;IACvE,OAAO,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { runJxa } from "../shared/jxa.js";
|
|
3
|
+
import { ok, toolError } from "../shared/result.js";
|
|
4
|
+
import { listDocumentsScript, createDocumentScript, listSlidesScript, getSlideScript, addSlideScript, setPresenterNotesScript, exportPdfScript, startSlideshowScript, closeDocumentScript, } from "./scripts.js";
|
|
5
|
+
export function registerKeynoteTools(server, _config) {
|
|
6
|
+
server.registerTool("keynote_list_documents", {
|
|
7
|
+
title: "List Keynote Documents",
|
|
8
|
+
description: "List all open Keynote presentations.",
|
|
9
|
+
inputSchema: {},
|
|
10
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
11
|
+
}, async () => {
|
|
12
|
+
try {
|
|
13
|
+
return ok(await runJxa(listDocumentsScript()));
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
return toolError("list Keynote documents", e);
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
server.registerTool("keynote_create_document", {
|
|
20
|
+
title: "Create Keynote Presentation",
|
|
21
|
+
description: "Create a new blank Keynote presentation.",
|
|
22
|
+
inputSchema: {},
|
|
23
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
24
|
+
}, async () => {
|
|
25
|
+
try {
|
|
26
|
+
return ok(await runJxa(createDocumentScript()));
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
return toolError("create Keynote presentation", e);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
server.registerTool("keynote_list_slides", {
|
|
33
|
+
title: "List Keynote Slides",
|
|
34
|
+
description: "List all slides in a Keynote presentation with title, body preview, and presenter notes.",
|
|
35
|
+
inputSchema: {
|
|
36
|
+
document: z.string().describe("Document name"),
|
|
37
|
+
},
|
|
38
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
39
|
+
}, async ({ document }) => {
|
|
40
|
+
try {
|
|
41
|
+
return ok(await runJxa(listSlidesScript(document)));
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
return toolError("list Keynote slides", e);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
server.registerTool("keynote_get_slide", {
|
|
48
|
+
title: "Get Keynote Slide",
|
|
49
|
+
description: "Get detailed content of a specific slide including all text items and presenter notes.",
|
|
50
|
+
inputSchema: {
|
|
51
|
+
document: z.string().describe("Document name"),
|
|
52
|
+
slideNumber: z.number().int().min(1).describe("Slide number (1-based)"),
|
|
53
|
+
},
|
|
54
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
55
|
+
}, async ({ document, slideNumber }) => {
|
|
56
|
+
try {
|
|
57
|
+
return ok(await runJxa(getSlideScript(document, slideNumber)));
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
return toolError("get Keynote slide", e);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
server.registerTool("keynote_add_slide", {
|
|
64
|
+
title: "Add Keynote Slide",
|
|
65
|
+
description: "Add a new slide to a Keynote presentation.",
|
|
66
|
+
inputSchema: {
|
|
67
|
+
document: z.string().describe("Document name"),
|
|
68
|
+
},
|
|
69
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
70
|
+
}, async ({ document }) => {
|
|
71
|
+
try {
|
|
72
|
+
return ok(await runJxa(addSlideScript(document)));
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
return toolError("add Keynote slide", e);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
server.registerTool("keynote_set_presenter_notes", {
|
|
79
|
+
title: "Set Keynote Presenter Notes",
|
|
80
|
+
description: "Set presenter notes on a specific slide.",
|
|
81
|
+
inputSchema: {
|
|
82
|
+
document: z.string().describe("Document name"),
|
|
83
|
+
slideNumber: z.number().int().min(1).describe("Slide number (1-based)"),
|
|
84
|
+
notes: z.string().describe("Presenter notes text"),
|
|
85
|
+
},
|
|
86
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
87
|
+
}, async ({ document, slideNumber, notes }) => {
|
|
88
|
+
try {
|
|
89
|
+
return ok(await runJxa(setPresenterNotesScript(document, slideNumber, notes)));
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
return toolError("set Keynote presenter notes", e);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
server.registerTool("keynote_export_pdf", {
|
|
96
|
+
title: "Export Keynote to PDF",
|
|
97
|
+
description: "Export a Keynote presentation to PDF.",
|
|
98
|
+
inputSchema: {
|
|
99
|
+
document: z.string().describe("Document name"),
|
|
100
|
+
outputPath: z.string().describe("Absolute output path for the PDF file"),
|
|
101
|
+
},
|
|
102
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
103
|
+
}, async ({ document, outputPath }) => {
|
|
104
|
+
try {
|
|
105
|
+
return ok(await runJxa(exportPdfScript(document, outputPath)));
|
|
106
|
+
}
|
|
107
|
+
catch (e) {
|
|
108
|
+
return toolError("export Keynote to PDF", e);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
server.registerTool("keynote_start_slideshow", {
|
|
112
|
+
title: "Start Keynote Slideshow",
|
|
113
|
+
description: "Start playing a Keynote slideshow from a specific slide.",
|
|
114
|
+
inputSchema: {
|
|
115
|
+
document: z.string().describe("Document name"),
|
|
116
|
+
fromSlide: z.number().int().min(1).optional().default(1).describe("Start from slide number (default: 1)"),
|
|
117
|
+
},
|
|
118
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
119
|
+
}, async ({ document, fromSlide }) => {
|
|
120
|
+
try {
|
|
121
|
+
return ok(await runJxa(startSlideshowScript(document, fromSlide)));
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
return toolError("start Keynote slideshow", e);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
server.registerTool("keynote_close_document", {
|
|
128
|
+
title: "Close Keynote Document",
|
|
129
|
+
description: "Close an open Keynote presentation, optionally saving changes.",
|
|
130
|
+
inputSchema: {
|
|
131
|
+
document: z.string().describe("Document name"),
|
|
132
|
+
saving: z.boolean().optional().default(true).describe("Save before closing (default: true)"),
|
|
133
|
+
},
|
|
134
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: false },
|
|
135
|
+
}, async ({ document, saving }) => {
|
|
136
|
+
try {
|
|
137
|
+
return ok(await runJxa(closeDocumentScript(document, saving)));
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
return toolError("close Keynote document", e);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/keynote/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare function fetchGeocode(query: string, count?: number): Promise<{
|
|
2
|
+
total: any;
|
|
3
|
+
results: any;
|
|
4
|
+
}>;
|
|
5
|
+
export declare function fetchReverseGeocode(latitude: number, longitude: number): Promise<{
|
|
6
|
+
name: any;
|
|
7
|
+
displayName: any;
|
|
8
|
+
latitude: number;
|
|
9
|
+
longitude: number;
|
|
10
|
+
address: {
|
|
11
|
+
road: any;
|
|
12
|
+
city: any;
|
|
13
|
+
state: any;
|
|
14
|
+
country: any;
|
|
15
|
+
postcode: any;
|
|
16
|
+
};
|
|
17
|
+
}>;
|
package/dist/maps/api.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Geocoding API clients — Open-Meteo (forward) + Nominatim (reverse).
|
|
2
|
+
const GEOCODE_URL = "https://geocoding-api.open-meteo.com/v1/search";
|
|
3
|
+
const REVERSE_URL = "https://nominatim.openstreetmap.org/reverse";
|
|
4
|
+
export async function fetchGeocode(query, count = 5) {
|
|
5
|
+
const params = new URLSearchParams({ name: query, count: String(count), language: "en", format: "json" });
|
|
6
|
+
const res = await fetch(`${GEOCODE_URL}?${params}`);
|
|
7
|
+
if (!res.ok)
|
|
8
|
+
throw new Error(`Geocoding API error: ${res.status} ${res.statusText}`);
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
10
|
+
const data = await res.json();
|
|
11
|
+
const results = (data.results ?? []).map((r) => ({
|
|
12
|
+
name: r.name,
|
|
13
|
+
latitude: r.latitude,
|
|
14
|
+
longitude: r.longitude,
|
|
15
|
+
country: r.country,
|
|
16
|
+
countryCode: r.country_code,
|
|
17
|
+
admin1: r.admin1 ?? null,
|
|
18
|
+
elevation: r.elevation ?? null,
|
|
19
|
+
timezone: r.timezone ?? null,
|
|
20
|
+
population: r.population ?? null,
|
|
21
|
+
}));
|
|
22
|
+
return { total: results.length, results };
|
|
23
|
+
}
|
|
24
|
+
export async function fetchReverseGeocode(latitude, longitude) {
|
|
25
|
+
const params = new URLSearchParams({ lat: String(latitude), lon: String(longitude), format: "json" });
|
|
26
|
+
const res = await fetch(`${REVERSE_URL}?${params}`, {
|
|
27
|
+
headers: { "User-Agent": "AirMCP/1.9 (MCP Server)" },
|
|
28
|
+
});
|
|
29
|
+
if (!res.ok)
|
|
30
|
+
throw new Error(`Reverse geocoding error: ${res.status} ${res.statusText}`);
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
32
|
+
const data = await res.json();
|
|
33
|
+
if (data.error)
|
|
34
|
+
throw new Error(`Reverse geocoding: ${data.error}`);
|
|
35
|
+
const addr = data.address ?? {};
|
|
36
|
+
return {
|
|
37
|
+
name: data.name ?? null,
|
|
38
|
+
displayName: data.display_name ?? null,
|
|
39
|
+
latitude: parseFloat(data.lat),
|
|
40
|
+
longitude: parseFloat(data.lon),
|
|
41
|
+
address: {
|
|
42
|
+
road: addr.road ?? null,
|
|
43
|
+
city: addr.city ?? addr.town ?? addr.village ?? null,
|
|
44
|
+
state: addr.state ?? null,
|
|
45
|
+
country: addr.country ?? null,
|
|
46
|
+
postcode: addr.postcode ?? null,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/maps/api.ts"],"names":[],"mappings":"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"}
|