@mgcrea/mcp-apple-core 1.15.0 → 1.17.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/dist/index.d.ts CHANGED
@@ -3,26 +3,6 @@ import { DatabaseSync } from "node:sqlite";
3
3
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
5
5
  import { JSONRPCMessage } from "@modelcontextprotocol/sdk/types.js";
6
- //#region src/build-info.d.ts
7
- type PackageIdentity = {
8
- name: string;
9
- version: string;
10
- };
11
- type BuildInfo = PackageIdentity & {
12
- gitCommit: string;
13
- gitCommitDate: string;
14
- };
15
- /**
16
- * Read a package's own name and version at startup, so they are always accurate
17
- * rather than baked in at build time.
18
- *
19
- * Callers pass their own `new URL("../package.json", import.meta.url)`: resolving
20
- * it here would find *this* package, not theirs. The git fields stay with the
21
- * caller too, because `__GIT_COMMIT__` is substituted by whichever bundler build
22
- * compiles the file that mentions it.
23
- */
24
- declare const readPackageIdentity: (packageJsonUrl: URL, fallback: PackageIdentity) => PackageIdentity;
25
- //#endregion
26
6
  //#region src/errors.d.ts
27
7
  /**
28
8
  * Error taxonomy shared by every Apple-app server.
@@ -105,6 +85,119 @@ declare class ProtocolError extends AppleAutomationError {
105
85
  declare class PreconditionError extends AppleAutomationError {
106
86
  readonly name: string;
107
87
  }
88
+ /**
89
+ * A date argument could not be read.
90
+ *
91
+ * Refusing is the whole point. The alternative — which is what Mail, Messages
92
+ * and Notes did — is `Date.parse` returning `NaN`, node:sqlite binding it as
93
+ * `NULL`, and the query matching nothing: an empty result that looks like an
94
+ * answer. The message lists the accepted forms because the caller is usually a
95
+ * model that guessed, and the fix is to show it the grammar.
96
+ */
97
+ declare class InvalidDateError extends AppleAutomationError {
98
+ readonly name: string;
99
+ constructor(field: string, raw: string, reason: string);
100
+ }
101
+ //#endregion
102
+ //#region src/ax.d.ts
103
+ type AxCall = {
104
+ /** Tool name, e.g. `apple_desktop_find_elements`. */
105
+ readonly tool: string;
106
+ readonly args: Record<string, unknown>;
107
+ };
108
+ type AxChannel = {
109
+ /**
110
+ * Call one desktop tool and return its parsed JSON body.
111
+ *
112
+ * Calls are serialised. The wire is one socket carrying newline-delimited
113
+ * JSON-RPC, and the driver's handle store is shared mutable state on the other
114
+ * end, so overlapping two walks would interleave both.
115
+ */
116
+ call(request: AxCall): Promise<unknown>;
117
+ close(): void;
118
+ };
119
+ /**
120
+ * The app is there and said no, or stopped answering.
121
+ *
122
+ * Distinct from the null `openAxChannel` returns, which means there is no app
123
+ * to ask — see the note there on why those two must not collapse.
124
+ */
125
+ declare class AxChannelError extends AppleAutomationError {
126
+ readonly name: string;
127
+ constructor(surface: SurfaceContext, message: string);
128
+ }
129
+ /**
130
+ * Open the channel, or return null when this server is not hosted by the app.
131
+ *
132
+ * Null and a throw are different answers and the difference is the whole
133
+ * contract: null means "there is no app here, use your other lane", a throw
134
+ * means "there is an app and it said no", which a caller must report rather
135
+ * than paper over.
136
+ */
137
+ declare const openAxChannel: (surface: SurfaceContext, env?: NodeJS.ProcessEnv) => AxChannel | null;
138
+ /**
139
+ * Whether a person touched the machine while a sequence was running.
140
+ *
141
+ * Driving an interface is the one capability here that COMPETES with whoever is
142
+ * using the Mac: a keystroke goes to whatever is frontmost and a click goes to a
143
+ * screen point, so somebody typing during a paste does not slow it down, it
144
+ * corrupts it.
145
+ *
146
+ * The comparison is what makes this work. `secondsSinceInput` on its own cannot
147
+ * tell "they typed just before we started" from "they typed into the middle of
148
+ * it" — but a sequence that ran for five seconds and ends with two seconds since
149
+ * the last input knows the input landed inside it.
150
+ *
151
+ * **This exists because of a misdiagnosis, not a theory.** Two runs of the Maps
152
+ * lane were blamed on interference and turned out to be bugs in the lane; one
153
+ * was blamed on the lane and turned out to be interference. Neither could be
154
+ * told apart from the outside, and a failure that names the wrong cause sends
155
+ * the next hour in the wrong direction.
156
+ */
157
+ type Interference = {
158
+ /** True when input arrived after the sequence began. */
159
+ disturbed: boolean;
160
+ secondsSinceInput: number;
161
+ elapsedSeconds: number;
162
+ };
163
+ type InterferenceWatch = {
164
+ check(): Promise<Interference | null>;
165
+ };
166
+ /**
167
+ * Start watching. `check()` answers for the span since this call.
168
+ *
169
+ * Returns null from `check()` when the question could not be asked at all,
170
+ * which is not the same as "undisturbed" and must not be reported as it.
171
+ */
172
+ declare const watchInterference: (channel: AxChannel) => InterferenceWatch;
173
+ /**
174
+ * The sentence to append to a failure, or "" when nothing useful can be said.
175
+ *
176
+ * Deliberately says nothing when the machine was quiet: a failure that reads
177
+ * "nobody touched it" invites the reader to stop looking, and the point of this
178
+ * is to send them to the RIGHT place rather than to reassure them.
179
+ */
180
+ declare const interferenceNote: (found: Interference | null) => string;
181
+ //#endregion
182
+ //#region src/build-info.d.ts
183
+ type PackageIdentity = {
184
+ name: string;
185
+ version: string;
186
+ };
187
+ type BuildInfo = PackageIdentity & {
188
+ gitCommit: string;
189
+ gitCommitDate: string;
190
+ };
191
+ /**
192
+ * Read a package's own name and version at startup, so they are always accurate
193
+ * rather than baked in at build time.
194
+ *
195
+ * Callers pass their own `new URL("../package.json", import.meta.url)`: resolving
196
+ * it here would find *this* package, not theirs. The git fields stay with the
197
+ * caller too, because `__GIT_COMMIT__` is substituted by whichever bundler build
198
+ * compiles the file that mentions it.
199
+ */
200
+ declare const readPackageIdentity: (packageJsonUrl: URL, fallback: PackageIdentity) => PackageIdentity;
108
201
  //#endregion
109
202
  //#region src/osascript.d.ts
110
203
  type Logger = {
@@ -309,6 +402,112 @@ declare const BaseConfigSchema: z.ZodObject<{
309
402
  */
310
403
  declare const parseConfig: <T extends z.ZodType>(schema: T, raw: Record<string, unknown>) => z.infer<T>;
311
404
  //#endregion
405
+ //#region src/dates.d.ts
406
+ /**
407
+ * The one grammar every surface reads its date arguments with.
408
+ *
409
+ * ## Why it is here
410
+ *
411
+ * This shipped as three copies. Reminders wrote it, Calendar repeated it
412
+ * verbatim, and Safari repeated it again with signed offsets and `yesterday`
413
+ * added — that third copy's header says outright that three is the trigger for
414
+ * hoisting and that the copies had already diverged. Meanwhile Mail, Messages
415
+ * and Notes never got a grammar at all: they called `Date.parse` or
416
+ * `new Date()` directly, which is where the bugs were.
417
+ *
418
+ * They were not small bugs, and they were all the same shape — a date argument
419
+ * that produced a confident, plausible, wrong answer:
420
+ *
421
+ * - `Date.parse("last week")` is `NaN`, node:sqlite binds `NaN` as `NULL`,
422
+ * and `date_received >= NULL` matches nothing. A model that wrote a date in
423
+ * words got zero results and no error.
424
+ * - `new Date("2026-08-20")` is UTC midnight but `new Date("2026-08-20T00:00")`
425
+ * is LOCAL midnight, so two spellings a tool description treated as the
426
+ * same thing bounded a query an hour or five apart.
427
+ * - `"2026-02-30T09:00"` silently became 2 March, because the rollover guard
428
+ * existed on the date branch and not on the date-time one.
429
+ *
430
+ * ## The rule
431
+ *
432
+ * 1. `YYYY-MM-DD` names a **local calendar day**. As a start bound it is local
433
+ * 00:00 of that day; as an end bound it is local 00:00 of the NEXT day, and
434
+ * every consumer compares with `<`. So `to: "2026-08-20"` includes all of
435
+ * the 20th and nothing of the 21st. Resolving it to midnight of the same day
436
+ * is how an end bound quietly excludes the day it names.
437
+ * 2. `YYYY-MM-DD[T ]HH:MM[:SS]` is local wall-clock; with `Z` or `±HH:MM` it is
438
+ * the instant named. A timed bound is used as given, and is exclusive at the
439
+ * end edge like everything else.
440
+ * 3. Relative forms: `±N m|h|d|w`, `today` / `yesterday` / `tomorrow` with an
441
+ * optional `HH:MM`, and `next|last <weekday>`. Days and weeks are calendar
442
+ * arithmetic; hours and minutes are elapsed time. That split is not
443
+ * cosmetic — reversing it drifts every bound by an hour twice a year.
444
+ * 4. Anything else, an empty string, or an instant that does not exist
445
+ * (`2026-02-30`, `T25:00`, `T09:60`) throws `InvalidDateError`. **Nothing
446
+ * here ever returns `NaN`**, because a `NaN` reaches SQLite as `NULL` and a
447
+ * `NULL` bound is an empty result rather than a complaint.
448
+ *
449
+ * The forward-only surfaces inherit the backward forms too. A reminder cannot
450
+ * be due `-7d`, but accepting it costs nothing and refusing it in one surface
451
+ * while accepting it in another is exactly the drift this file replaces.
452
+ */
453
+ type DateKind = "allDay" | "timed";
454
+ type ParsedDate = {
455
+ kind: DateKind;
456
+ /** The absolute instant, for comparisons and for range bounds. */
457
+ at: Date;
458
+ /**
459
+ * ISO-8601 **with an explicit offset**, e.g. `2026-08-20T09:00:00+02:00`.
460
+ *
461
+ * Always carries the offset so the value is unambiguous once it leaves this
462
+ * process — a bare local string reinterpreted in another zone is the silent
463
+ * failure this module exists to prevent.
464
+ */
465
+ iso: string;
466
+ /** Echoed back in tool results so a caller can see how its input was read. */
467
+ raw: string;
468
+ };
469
+ /**
470
+ * Local wall-clock time rendered with its offset.
471
+ *
472
+ * Deliberately not `toISOString()`, which converts to UTC and would report a
473
+ * 09:00 bound as `07:00Z` — correct as an instant, but unreadable in a tool
474
+ * result whose purpose is confirming what the caller asked for.
475
+ */
476
+ declare const toLocalIso: (d: Date) => string;
477
+ /** Local midnight on the given calendar day. */
478
+ declare const startOfLocalDay: (d: Date) => Date;
479
+ /**
480
+ * The last representable instant of the given calendar day, local.
481
+ *
482
+ * Kept for surfaces that genuinely want an inclusive edge. It is NOT what an
483
+ * end bound resolves to — see `parseBound`.
484
+ */
485
+ declare const endOfLocalDay: (d: Date) => Date;
486
+ /** Calendar-aware day arithmetic: same wall-clock time, n days later. */
487
+ declare const addLocalDays: (d: Date, n: number) => Date;
488
+ /**
489
+ * Parse one date argument.
490
+ *
491
+ * @param field Named in the error, so a failure says *which* argument was bad.
492
+ * @param raw The caller's string.
493
+ * @param now Injected for hermetic tests, mirroring `loadConfig(env)`.
494
+ */
495
+ declare const parseDate: (field: string, raw: string, now?: Date) => ParsedDate;
496
+ /**
497
+ * Parse a bound for a range filter.
498
+ *
499
+ * A bare day names the WHOLE day, so which instant it resolves to depends on
500
+ * which edge it is. The start edge is that day's local midnight. The end edge
501
+ * is the NEXT day's local midnight, and every caller compares with `<` — which
502
+ * makes the bound exclusive and the named day fully included.
503
+ *
504
+ * The alternative, 23:59:59.999, was what two of the three copies did, and it
505
+ * is wrong twice: it drops the last millisecond of the day, and more to the
506
+ * point it invites the `<=` that then drops the whole day when somebody writes
507
+ * midnight instead.
508
+ */
509
+ declare const parseBound: (field: string, raw: string, edge: "start" | "end", now?: Date) => Date;
510
+ //#endregion
312
511
  //#region src/facade.d.ts
313
512
  type LazyToolsOptions = {
314
513
  /** Surface id as in surfaces.json, e.g. "mail". Prefixes every facade name. */
@@ -700,5 +899,5 @@ declare const limitArg: z.ZodOptional<z.ZodNumber>;
700
899
  declare const resolveLimit: (limit: number | undefined, maxResults: number, fallback?: number) => number;
701
900
  declare const confirmArg: z.ZodLiteral<true>;
702
901
  //#endregion
703
- export { type Aggregation, AppBusyError, AppNotRunningError, AppleAutomationError, BaseConfigSchema, type Bucket, type BuildInfo, CORE_DATA_EPOCH_OFFSET, type CodeConfidence, type CodeMatch, type ExecImpl, type ExtractOptions, type FileFacts, IndexUnavailableError, type JxaEnvelope, type LazyToolsOptions, type Logger, type OpenOptions, type OpenedStore, type OsascriptOptions, type OsascriptRunner, OsascriptTimeoutError, type PackageIdentity, PlatformError, PreconditionError, type Projected, type PromptContext, ProtocolError, RESOURCE_SCHEME, type ReadOnlyMode, type ResourceReader, SchemaDriftError, type StdioServerOptions, type StoreFacts, type SurfaceContext, type SurfaceResourceOptions, TccDeniedError, type ToolResult, type WorkflowPrompt, WritesDisabledError, assertStaticScript, columnsOf, compact, confirmArg, createOsascriptRunner, describeAggregation, describeStore, detectEpoch, escapeLike, extractCode, fail, fingerprintSchema, groupByArg, inspectFile, limitArg, mapOsaError, ok, okText, openReadOnly, parseBool, parseConfig, parseIntOpt, parseList, project, promptArg, readPackageIdentity, registerSurfaceResources, registerWorkflowPrompt, requiredPromptArg, resolveLimit, runStdioServer, selectArg, surfaceUri, tableMap, toFailure, toFileUri, trimToolListing, trimmed, withBusyRetry, withLazyTools, withTrimmedListing, wrap, wrapResult };
902
+ export { type Aggregation, AppBusyError, AppNotRunningError, AppleAutomationError, type AxCall, type AxChannel, AxChannelError, BaseConfigSchema, type Bucket, type BuildInfo, CORE_DATA_EPOCH_OFFSET, type CodeConfidence, type CodeMatch, type DateKind, type ExecImpl, type ExtractOptions, type FileFacts, IndexUnavailableError, type Interference, type InterferenceWatch, InvalidDateError, type JxaEnvelope, type LazyToolsOptions, type Logger, type OpenOptions, type OpenedStore, type OsascriptOptions, type OsascriptRunner, OsascriptTimeoutError, type PackageIdentity, type ParsedDate, PlatformError, PreconditionError, type Projected, type PromptContext, ProtocolError, RESOURCE_SCHEME, type ReadOnlyMode, type ResourceReader, SchemaDriftError, type StdioServerOptions, type StoreFacts, type SurfaceContext, type SurfaceResourceOptions, TccDeniedError, type ToolResult, type WorkflowPrompt, WritesDisabledError, addLocalDays, assertStaticScript, columnsOf, compact, confirmArg, createOsascriptRunner, describeAggregation, describeStore, detectEpoch, endOfLocalDay, escapeLike, extractCode, fail, fingerprintSchema, groupByArg, inspectFile, interferenceNote, limitArg, mapOsaError, ok, okText, openAxChannel, openReadOnly, parseBool, parseBound, parseConfig, parseDate, parseIntOpt, parseList, project, promptArg, readPackageIdentity, registerSurfaceResources, registerWorkflowPrompt, requiredPromptArg, resolveLimit, runStdioServer, selectArg, startOfLocalDay, surfaceUri, tableMap, toFailure, toFileUri, toLocalIso, trimToolListing, trimmed, watchInterference, withBusyRetry, withLazyTools, withTrimmedListing, wrap, wrapResult };
704
903
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/build-info.ts","../src/errors.ts","../src/osascript.ts","../src/cli.ts","../src/codes.ts","../src/config.ts","../src/facade.ts","../src/fs.ts","../src/listing.ts","../src/prompts.ts","../src/query.ts","../src/resources.ts","../src/schema.ts","../src/sqlite.ts","../src/tools.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/errors.ts","../src/ax.ts","../src/build-info.ts","../src/osascript.ts","../src/cli.ts","../src/codes.ts","../src/config.ts","../src/dates.ts","../src/facade.ts","../src/fs.ts","../src/listing.ts","../src/prompts.ts","../src/query.ts","../src/resources.ts","../src/schema.ts","../src/sqlite.ts","../src/tools.ts"],"mappings":"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"}