@mulmoclaude/core 1.13.0 → 1.14.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 (106) hide show
  1. package/assets/helps/error-recovery.md +12 -1
  2. package/dist/{calendarGrid-CaS9er8i.cjs → calendarGrid-BQYqOCnF.cjs} +8 -9
  3. package/dist/{calendarGrid-CaS9er8i.cjs.map → calendarGrid-BQYqOCnF.cjs.map} +1 -1
  4. package/dist/{calendarGrid-CrGxeCOG.js → calendarGrid-DivcNKkX.js} +8 -9
  5. package/dist/{calendarGrid-CrGxeCOG.js.map → calendarGrid-DivcNKkX.js.map} +1 -1
  6. package/dist/collection/core/schemaZ.d.ts +4 -4
  7. package/dist/collection/index.cjs +4 -4
  8. package/dist/collection/index.js +4 -4
  9. package/dist/collection/registry/server/index.cjs +3 -3
  10. package/dist/collection/registry/server/index.cjs.map +1 -1
  11. package/dist/collection/registry/server/index.js +3 -3
  12. package/dist/collection/registry/server/index.js.map +1 -1
  13. package/dist/collection/server/csvQuery.d.ts +7 -2
  14. package/dist/collection/server/csvStore.d.ts +2 -1
  15. package/dist/collection/server/index.cjs +3 -3
  16. package/dist/collection/server/index.js +3 -3
  17. package/dist/collection-watchers/index.cjs +10 -25
  18. package/dist/collection-watchers/index.cjs.map +1 -1
  19. package/dist/collection-watchers/index.js +10 -25
  20. package/dist/collection-watchers/index.js.map +1 -1
  21. package/dist/{discovery-DAoMnBYM.cjs → discovery-CRDx6TS4.cjs} +52 -32
  22. package/dist/discovery-CRDx6TS4.cjs.map +1 -0
  23. package/dist/{discovery-D-ZJ6a6z.js → discovery-D6p4ITNR.js} +52 -32
  24. package/dist/discovery-D6p4ITNR.js.map +1 -0
  25. package/dist/{dist-21pMsI1a.cjs → dist-CsgSfWwR.cjs} +22 -1
  26. package/dist/{dist-21pMsI1a.cjs.map → dist-CsgSfWwR.cjs.map} +1 -1
  27. package/dist/{dist-DP1FTGnO.js → dist-D8zokgGo.js} +11 -2
  28. package/dist/{dist-DP1FTGnO.js.map → dist-D8zokgGo.js.map} +1 -1
  29. package/dist/feeds/index.cjs +2 -2
  30. package/dist/feeds/index.js +2 -2
  31. package/dist/feeds/server/index.cjs +29 -23
  32. package/dist/feeds/server/index.cjs.map +1 -1
  33. package/dist/feeds/server/index.js +29 -23
  34. package/dist/feeds/server/index.js.map +1 -1
  35. package/dist/google/calendar.d.ts +23 -9
  36. package/dist/google/collectionPush.d.ts +13 -8
  37. package/dist/google/index.cjs +62 -37
  38. package/dist/google/index.cjs.map +1 -1
  39. package/dist/google/index.d.ts +2 -2
  40. package/dist/google/index.js +60 -37
  41. package/dist/google/index.js.map +1 -1
  42. package/dist/{ingestTypes-D1GQdG8e.cjs → ingestTypes-C7IJSqv4.cjs} +2 -2
  43. package/dist/{ingestTypes-D1GQdG8e.cjs.map → ingestTypes-C7IJSqv4.cjs.map} +1 -1
  44. package/dist/{ingestTypes-XReG-li7.js → ingestTypes-DmtDLRmt.js} +2 -2
  45. package/dist/{ingestTypes-XReG-li7.js.map → ingestTypes-DmtDLRmt.js.map} +1 -1
  46. package/dist/notifier/index.cjs +1 -1
  47. package/dist/notifier/index.js +1 -1
  48. package/dist/{notifier-CMFlw74b.js → notifier-Dxh8mEFh.js} +2 -2
  49. package/dist/{notifier-CMFlw74b.js.map → notifier-Dxh8mEFh.js.map} +1 -1
  50. package/dist/{notifier-C3IhYxqh.cjs → notifier-Wc4M24Bi.cjs} +2 -2
  51. package/dist/{notifier-C3IhYxqh.cjs.map → notifier-Wc4M24Bi.cjs.map} +1 -1
  52. package/dist/plugin-vue/index.cjs +4 -2
  53. package/dist/plugin-vue/index.cjs.map +1 -1
  54. package/dist/plugin-vue/index.js +4 -2
  55. package/dist/plugin-vue/index.js.map +1 -1
  56. package/dist/{project-B9NSyr6L.js → project-B0j_Vf_Q.js} +7 -2
  57. package/dist/project-B0j_Vf_Q.js.map +1 -0
  58. package/dist/{project-CCtT_fQr.cjs → project-C1ep9pvo.cjs} +7 -2
  59. package/dist/project-C1ep9pvo.cjs.map +1 -0
  60. package/dist/{promptSafety-FD8cQn3e.cjs → promptSafety-B52GvaJc.cjs} +99 -85
  61. package/dist/promptSafety-B52GvaJc.cjs.map +1 -0
  62. package/dist/{promptSafety-C--op_6a.js → promptSafety-DJgaDjM4.js} +99 -85
  63. package/dist/promptSafety-DJgaDjM4.js.map +1 -0
  64. package/dist/remote-host/index.cjs +2 -1
  65. package/dist/remote-host/index.d.ts +10 -0
  66. package/dist/remote-host/index.js +2 -2
  67. package/dist/remote-host/server/index.cjs +2 -2
  68. package/dist/remote-host/server/index.cjs.map +1 -1
  69. package/dist/remote-host/server/index.js +2 -2
  70. package/dist/remote-host/server/index.js.map +1 -1
  71. package/dist/{remote-host-DkDVxNim.cjs → remote-host-CtQjagPt.cjs} +53 -1
  72. package/dist/remote-host-CtQjagPt.cjs.map +1 -0
  73. package/dist/remote-host-Dba4lF3Z.js +82 -0
  74. package/dist/remote-host-Dba4lF3Z.js.map +1 -0
  75. package/dist/remote-view/index.cjs +6 -4
  76. package/dist/remote-view/index.cjs.map +1 -1
  77. package/dist/remote-view/index.js +6 -4
  78. package/dist/remote-view/index.js.map +1 -1
  79. package/dist/scheduler/index.cjs +1 -1
  80. package/dist/scheduler/index.js +1 -1
  81. package/dist/{server-Ci_A3chZ.js → server-D6EUf3BF.js} +46 -27
  82. package/dist/server-D6EUf3BF.js.map +1 -0
  83. package/dist/{server-B_b0bLSW.cjs → server-D7_oRbTJ.cjs} +46 -27
  84. package/dist/server-D7_oRbTJ.cjs.map +1 -0
  85. package/dist/utils/index.cjs +1 -1
  86. package/dist/utils/index.js +1 -1
  87. package/dist/whisper/index.cjs +2 -6
  88. package/dist/whisper/index.cjs.map +1 -1
  89. package/dist/whisper/index.js +2 -6
  90. package/dist/whisper/index.js.map +1 -1
  91. package/dist/wiki/index.cjs +2 -2
  92. package/dist/wiki/index.cjs.map +1 -1
  93. package/dist/wiki/index.js +2 -2
  94. package/dist/wiki/index.js.map +1 -1
  95. package/package.json +2 -2
  96. package/dist/discovery-D-ZJ6a6z.js.map +0 -1
  97. package/dist/discovery-DAoMnBYM.cjs.map +0 -1
  98. package/dist/project-B9NSyr6L.js.map +0 -1
  99. package/dist/project-CCtT_fQr.cjs.map +0 -1
  100. package/dist/promptSafety-C--op_6a.js.map +0 -1
  101. package/dist/promptSafety-FD8cQn3e.cjs.map +0 -1
  102. package/dist/remote-host-D_BRFHcI.js +0 -36
  103. package/dist/remote-host-D_BRFHcI.js.map +0 -1
  104. package/dist/remote-host-DkDVxNim.cjs.map +0 -1
  105. package/dist/server-B_b0bLSW.cjs.map +0 -1
  106. package/dist/server-Ci_A3chZ.js.map +0 -1
@@ -7,12 +7,12 @@ export { brokerBaseUrl, brokerExchange, brokerRefresh, brokerStart, type BrokerS
7
7
  export { authorizeGoogle, commitLinkedTokens, getGoogleAccessToken, unlinkGoogle, waitForAuthCode, GOOGLE_AUTH_CANCELLED, GOOGLE_CALENDAR_SCOPE, GOOGLE_CALENDARLIST_SCOPE, GOOGLE_TASKS_SCOPE, GOOGLE_DRIVE_FILE_SCOPE, GOOGLE_SCOPES, type AuthorizeGoogleOptions, type RevokeFetch, } from './auth.js';
8
8
  export { createGoogleAuthFlow, googleAuthFlow, type GoogleAuthFlow, type GoogleAuthFlowStatus } from './authFlow.js';
9
9
  export { googleApiError, isGoogleApiError, GoogleApiError, DEFAULT_LIST_MAX_RESULTS, HTTP_FORBIDDEN, MAX_LIST_RESULTS } from './apiClient.js';
10
- export { buildEventPatch, calendarApiError, collectCalendarPages, createCalendarEvent, deleteCalendarEvent, getCalendarColors, canonicalCalendarId, listCalendarEvents, listCalendars, syncCalendarEvents, toCalendarSummary, toEventSummary, updateCalendarEvent, getCalendar, getCalendarEvent, resolveEventSpan, CANCELLED_EVENT_STATUS, HTTP_CONFLICT, HTTP_PRECONDITION_FAILED, type CalendarColorEntry, type CalendarColors, type CalendarEventInput, type CalendarEventSpan, type CalendarEventSummary, type CalendarEventTime, type CalendarListPage, type CalendarSummary, type CalendarSyncResult, type DeleteCalendarEventInput, type FetchedCalendarEvent, type ListEventsInput, type SyncEventsInput, type UpdateCalendarEventInput, } from './calendar.js';
10
+ export { buildEventPatch, calendarApiError, collectCalendarPages, createCalendarEvent, deleteCalendarEvent, getCalendarColors, canonicalCalendarId, listCalendarEvents, listCalendars, syncCalendarEvents, toCalendarMeta, toCalendarSummary, toEventSummary, updateCalendarEvent, getCalendarEvent, getCalendarMeta, resolveEventSpan, CANCELLED_EVENT_STATUS, HTTP_CONFLICT, HTTP_PRECONDITION_FAILED, type CalendarColorEntry, type CalendarColors, type CalendarEventInput, type CalendarEventSpan, type CalendarEventSummary, type CalendarEventTime, type CalendarListPage, type CalendarMeta, type CalendarSummary, type CalendarSyncResult, type DeleteCalendarEventInput, type FetchedCalendarEvent, type ListEventsInput, type SyncEventsInput, type UpdateCalendarEventInput, } from './calendar.js';
11
11
  export { calendarSyncStatePath, claimCalendarSyncIfDue, clearCalendarLastSyncedAt, clearCalendarSyncToken, loadCalendarLastSyncedAt, loadCalendarSyncToken, saveCalendarSyncToken, } from './calendarSyncStore.js';
12
12
  export { calendarSyncDueWindowMs, isCalendarSyncDue } from './calendarSyncDue.js';
13
13
  export { stateLockPath, withCalendarStateLock, liveLockClock, type LockClock } from './calendarStateLock.js';
14
14
  export { calendarPushStatePath, clearCalendarShadow, loadCalendarShadow, mergeShadow, saveCalendarShadow, toShadowEvent, type ShadowEvent, } from './calendarPushState.js';
15
- export { isDeniedAccessRole, isUnpushed, locallyEditedIds, pushCalendarForCollection, pushCollectionNow, unsentLocalEdits, type PushOutcomeKind, type CalendarCollectionPushResult, type CalendarPushDeps, type CalendarPushOutcome, type CalendarWriteTarget, } from './collectionPush.js';
15
+ export { isDeniedAccessRole, isUnpushed, locallyEditedIds, pushCalendarForCollection, pushCollectionNow, reportedAccessRole, unsentLocalEdits, type PushOutcomeKind, type CalendarCollectionPushResult, type CalendarPushDeps, type CalendarPushOutcome, type CalendarWriteTarget, } from './collectionPush.js';
16
16
  export { toGoogleEventTime, zoneSuffixOf } from './pushDateTime.js';
17
17
  export { baselineRecord, bySourceField, conflictingFields, fieldText, isClientSettableEventId, locallyChangedFields, locallyDeletedIds, mayAdoptExisting, planRecord, pushableMap, PUSHABLE_SOURCE_FIELDS, type PushableSourceField, type RecordPlan, } from './pushPlan.js';
18
18
  export { toCollectionDateTime } from './collectionDateTime.js';
@@ -1,10 +1,10 @@
1
- import { t as errorMessage } from "../dist-DP1FTGnO.js";
1
+ import { i as hasStringProp, t as errorMessage } from "../dist-D8zokgGo.js";
2
2
  import { t as truncate } from "../text-CjDbP2O1.js";
3
3
  import { t as writeFileAtomic } from "../atomic-DPpdrJzO.js";
4
4
  import { fetchWithTimeout } from "../utils/fetch.js";
5
- import { l as parseIsoDate, u as parseIsoDateTime } from "../calendarGrid-CrGxeCOG.js";
6
- import { t as mergeIntoExisting } from "../project-B9NSyr6L.js";
7
- import { J as getWorkspaceRoot, d as storeFor, et as createForwardingLogger, n as discoverCollections, tt as createHostSlot } from "../discovery-D-ZJ6a6z.js";
5
+ import { l as parseIsoDate, u as parseIsoDateTime } from "../calendarGrid-DivcNKkX.js";
6
+ import { t as mergeIntoExisting } from "../project-B0j_Vf_Q.js";
7
+ import { J as getWorkspaceRoot, d as storeFor, et as createForwardingLogger, n as discoverCollections, tt as createHostSlot } from "../discovery-D6p4ITNR.js";
8
8
  import { promises } from "node:fs";
9
9
  import path, { join } from "node:path";
10
10
  import { randomBytes, randomUUID } from "node:crypto";
@@ -589,6 +589,7 @@ var CALENDAR_LIST_PAGE_SIZE = 250;
589
589
  var MAX_CALENDAR_LIST_PAGES = 40;
590
590
  var EVENT_SYNC_PAGE_SIZE = 2500;
591
591
  var MAX_EVENT_SYNC_PAGES = 200;
592
+ var CALENDAR_META_PAGE_SIZE = 1;
592
593
  var HTTP_GONE = 410;
593
594
  var EVENT_ABSENT_STATUSES = [404, HTTP_GONE];
594
595
  /** An `If-Match` write whose etag no longer matches — someone else changed the
@@ -800,20 +801,34 @@ async function collectCalendarPages(fetchPage, maxPages = MAX_CALENDAR_LIST_PAGE
800
801
  }
801
802
  return calendars;
802
803
  }
803
- /** The calendars the user has added/subscribed to (primary + secondary +
804
- * shared), each with its id, name and colour, following pagination. Needs the
805
- * calendar-list read scope (GOOGLE_CALENDARLIST_SCOPE). */
806
- /** One calendar's own resource, addressed by id rather than looked up in the
807
- * user's list.
804
+ var toCalendarMeta = (value) => {
805
+ const record = asRecord(value);
806
+ return {
807
+ timeZone: stringField(record, "timeZone"),
808
+ accessRole: stringField(record, "accessRole")
809
+ };
810
+ };
811
+ /** One calendar's zone and the caller's role on it, read by id rather than
812
+ * looked up in the user's list.
808
813
  *
809
814
  * `calendarList` only holds calendars the user has ADDED; a calendar shared
810
- * with them can be readable and writable by id without appearing there. This is
811
- * how a push learns such a calendar's `timeZone`. Note the resource carries no
812
- * `accessRole` — that is a calendarList property — so reachability here says
813
- * nothing about writability. */
814
- async function getCalendar(accessToken, calendarId) {
815
- return toCalendarSummary(await googleRequest(CALENDAR_API_LABEL, accessToken, `${CALENDAR_BASE_URL}/calendars/${encodeURIComponent(canonicalCalendarId(calendarId))}`));
815
+ * with them can be readable and writable by id without appearing there, and a
816
+ * push still needs its zone to send an offset-less `dateTime`.
817
+ *
818
+ * Deliberately `events.list` and NOT `calendars.get`: the latter takes only
819
+ * full-calendar scopes (`calendar`, `calendar.readonly`, `calendar.calendars*`)
820
+ * and this app asks for none of them, so it answers 403 for every account it
821
+ * links (#2735). The events list carries the same `timeZone` — plus the
822
+ * `accessRole` the calendar resource does not have — under `calendar.events`,
823
+ * which the push already holds because it writes with it. Only the envelope is
824
+ * read; the one event asked for is the smallest page Google will serve. */
825
+ async function getCalendarMeta(accessToken, calendarId) {
826
+ const params = new URLSearchParams({ maxResults: String(CALENDAR_META_PAGE_SIZE) });
827
+ return toCalendarMeta(await googleRequest(CALENDAR_API_LABEL, accessToken, `${eventsUrl(calendarId)}?${params.toString()}`));
816
828
  }
829
+ /** The calendars the user has added/subscribed to (primary + secondary +
830
+ * shared), each with its id, name and colour, following pagination. Needs the
831
+ * calendar-list read scope (GOOGLE_CALENDARLIST_SCOPE). */
817
832
  async function listCalendars(accessToken) {
818
833
  return collectCalendarPages(async (pageToken) => {
819
834
  const params = new URLSearchParams({ maxResults: String(CALENDAR_LIST_PAGE_SIZE) });
@@ -864,9 +879,7 @@ async function readLockRaw(lockPath) {
864
879
  function parseLock(raw) {
865
880
  try {
866
881
  const parsed = JSON.parse(raw);
867
- if (typeof parsed !== "object" || parsed === null) return null;
868
- const { holder } = parsed;
869
- return typeof holder === "string" ? { holder } : null;
882
+ return hasStringProp(parsed, "holder") ? { holder: parsed.holder } : null;
870
883
  } catch {
871
884
  return null;
872
885
  }
@@ -1365,7 +1378,7 @@ var PUSHABLE_SOURCE_FIELDS = [
1365
1378
  "description",
1366
1379
  "location"
1367
1380
  ];
1368
- var isPushableSource = (source) => PUSHABLE_SOURCE_FIELDS.includes(source);
1381
+ var isPushableSource = (source) => PUSHABLE_SOURCE_FIELDS.some((field) => field === source);
1369
1382
  /** The subset of a schema's `map` a push can act on: collection field → event field. */
1370
1383
  function pushableMap(map) {
1371
1384
  return Object.fromEntries(Object.entries(map).filter((entry) => isPushableSource(entry[1])));
@@ -1487,21 +1500,28 @@ function locallyDeletedIds(shadow, presentIds) {
1487
1500
  var WRITABLE_ACCESS_ROLES = ["owner", "writer"];
1488
1501
  /** Whether to refuse the whole push before touching a single event.
1489
1502
  *
1490
- * Only on POSITIVE evidence of a non-writable role. An unlisted calendar is
1491
- * unknown and must fall through: hard-denying it would block the feature
1492
- * outright for a calendar the user can in fact write to. Those attempts surface
1493
- * Google's own 403 per record if the write really is not allowed. */
1503
+ * Only on POSITIVE evidence of a non-writable role. A calendar whose role
1504
+ * neither source reported is unknown and must fall through: hard-denying it
1505
+ * would block the feature outright for a calendar the user can in fact write
1506
+ * to. Those attempts surface Google's own 403 per record if the write really is
1507
+ * not allowed. */
1494
1508
  var isDeniedAccessRole = (accessRole) => accessRole !== null && !WRITABLE_ACCESS_ROLES.includes(accessRole);
1509
+ /** A role Google left blank is UNKNOWN, not a denial. `isDeniedAccessRole`
1510
+ * refuses every role it does not recognise — `""` included — so passing an
1511
+ * unreported one straight through would refuse a calendar Google simply said
1512
+ * nothing about. */
1513
+ var reportedAccessRole = (accessRole) => accessRole || null;
1495
1514
  /** Resolve the calendar a schema names, for its writability and its timezone.
1496
1515
  *
1497
- * The list is consulted first because only it reports `accessRole`, which is
1498
- * what lets a read-only calendar be refused with the real reason instead of an
1499
- * opaque per-event 403. `"primary"` is matched on the `primary` flag, not the
1500
- * id — the primary calendar's own id is the account's email address, which never
1501
- * equals the literal the schema declares.
1516
+ * The list is consulted first because it answers for every added calendar in
1517
+ * one call the push already makes. `"primary"` is matched on the `primary`
1518
+ * flag, not the id — the primary calendar's own id is the account's email
1519
+ * address, which never equals the literal the schema declares.
1502
1520
  *
1503
- * A calendar absent from the list is NOT denied: it is fetched by id for its
1504
- * timezone and its role left unknown. A 404 there means the calendar really is
1521
+ * A calendar absent from the list is NOT denied: `calendarList` holds only the
1522
+ * calendars the user has added, so one shared with write access can be missing
1523
+ * from it (Codex review). It is asked about itself instead, which reports the
1524
+ * same zone AND the real role. A 404 there means the calendar is genuinely
1505
1525
  * unreachable, and propagates as a `failed` outcome. */
1506
1526
  async function liveCalendarMeta(accessToken, calendarId) {
1507
1527
  const key = canonicalCalendarId(calendarId);
@@ -1511,10 +1531,13 @@ async function liveCalendarMeta(accessToken, calendarId) {
1511
1531
  accessRole: listed.accessRole,
1512
1532
  timeZone: listed.timeZone
1513
1533
  };
1514
- const direct = await getCalendar(accessToken, calendarId);
1515
- log.info("google", "calendar is not in the user's list — pushing without an up-front role check", { calendarId: key });
1534
+ const direct = await getCalendarMeta(accessToken, calendarId);
1535
+ log.info("google", "calendar is not in the user's list — role read from the calendar itself", {
1536
+ calendarId: key,
1537
+ accessRole: direct.accessRole
1538
+ });
1516
1539
  return {
1517
- accessRole: null,
1540
+ accessRole: reportedAccessRole(direct.accessRole),
1518
1541
  timeZone: direct.timeZone
1519
1542
  };
1520
1543
  }
@@ -1699,9 +1722,9 @@ async function createOrAdopt(ctx, eventId, record) {
1699
1722
  }
1700
1723
  /** A 403 on a write is a permissions answer, but `googleApiError` appends the
1701
1724
  * "is the API enabled for the Cloud project?" hint to every 403 — true for a
1702
- * disabled API, misleading here. Reached when the up-front role check could not
1703
- * run because the calendar is not in the user's list, which is exactly when the
1704
- * user needs the real reason. */
1725
+ * disabled API, misleading here. Reached when the up-front gate let the push
1726
+ * through on an unknown role, which is exactly when the user needs the real
1727
+ * reason. */
1705
1728
  function writeFailure(eventId, error) {
1706
1729
  if (isGoogleApiError(error) && error.status === 403) return {
1707
1730
  kind: "skipped",
@@ -2672,6 +2695,6 @@ async function deleteDriveFile(accessToken, input) {
2672
2695
  await googleRequest(DRIVE_API_LABEL, accessToken, `${DRIVE_FILES_URL}/${encodeURIComponent(input.fileId)}`, { method: "DELETE" });
2673
2696
  }
2674
2697
  //#endregion
2675
- export { CANCELLED_EVENT_STATUS, DEFAULT_LIST_MAX_RESULTS, GOOGLE_AUTH_CANCELLED, GOOGLE_CALENDARLIST_SCOPE, GOOGLE_CALENDAR_SCOPE, GOOGLE_CALENDAR_SYNC_TASK_ID, GOOGLE_DRIVE_FILE_SCOPE, GOOGLE_SCOPES, GOOGLE_TASKS_SCOPE, GoogleApiError, HTTP_CONFLICT, HTTP_FORBIDDEN, HTTP_PRECONDITION_FAILED, MAX_LIST_RESULTS, PROTECTION_UNKNOWN, PUSHABLE_SOURCE_FIELDS, allUnpushed, anySyncedCollectionSurvives, applyPlanFor, assertSafeMimeType, authorizeGoogle, baselineRecord, brokerBaseUrl, brokerExchange, brokerRefresh, brokerStart, buildEventPatch, buildMultipartBody, buildTaskPatch, bySourceField, calendarApiError, calendarPushStatePath, calendarSyncDueWindowMs, calendarSyncStatePath, canonicalCalendarId, canonicalTaskListId, claimCalendarSyncIfDue, classifyDelete, classifyWrite, clearCalendarLastSyncedAt, clearCalendarShadow, clearCalendarSyncToken, clientSecretPresence, collectCalendarPages, commitLinkedTokens, completeTask, configureGoogleHost, conflictingFields, createCalendarEvent, createDriveFile, createGoogleAuthFlow, createTask, deleteCalendarEvent, deleteDriveFile, deleteGoogleTokens, deleteTask, fieldText, findClientSecretPath, getCalendar, getCalendarColors, getCalendarEvent, getGoogleAccessToken, googleApiError, googleAuthFlow, googleCalendarSyncTaskDef, googleConfigDir, googleSecretsDir, googleTokenPath, groupByCalendar, heldBack, isCalendarSyncDue, isClientSettableEventId, isDeniedAccessRole, isGoogleApiError, isIsoDateTimeWithOffset, isTextMimeType, isUnpushed, legacyGoogleTokenPath, listCalendarEvents, listCalendars, listDriveFiles, listTaskLists, listTasks, liveLockClock, loadCalendarLastSyncedAt, loadCalendarShadow, loadCalendarSyncToken, loadClientSecret, loadGoogleTokens, locallyChangedFields, locallyDeletedIds, locallyEditedIds, mayAdoptExisting, mergeGoogleTokens, mergeIntoExisting, mergeShadow, orphanedCalendarId, pickBoundary, planRecord, pullProtectionFor, pullableEvents, pushAndProtect, pushCalendarForCollection, pushCollectionNow, pushableMap, readDriveFile, releaseOrphanedCalendarToken, resolveEventSpan, saveCalendarShadow, saveCalendarSyncToken, saveGoogleTokens, shadowUpdates, stateLockPath, syncCalendarEvents, syncCalendarForCollection, syncCalendarGroup, syncDueCalendarCollections, syncNewCalendarCollections, toCalendarSummary, toCollectionDateTime, toCollectionRecord, toDriveFileSummary, toEventSummary, toGoogleEventTime, toShadowEvent, toTaskListSummary, toTaskSummary, uncompleteTask, unlinkGoogle, unpushedFor, unsentEditGuard, unsentLocalEdits, unsyncedGroups, updateCalendarEvent, updateTask, waitForAuthCode, withCalendarLock, withCalendarStateLock, withKeyedLock, zoneSuffixOf };
2698
+ export { CANCELLED_EVENT_STATUS, DEFAULT_LIST_MAX_RESULTS, GOOGLE_AUTH_CANCELLED, GOOGLE_CALENDARLIST_SCOPE, GOOGLE_CALENDAR_SCOPE, GOOGLE_CALENDAR_SYNC_TASK_ID, GOOGLE_DRIVE_FILE_SCOPE, GOOGLE_SCOPES, GOOGLE_TASKS_SCOPE, GoogleApiError, HTTP_CONFLICT, HTTP_FORBIDDEN, HTTP_PRECONDITION_FAILED, MAX_LIST_RESULTS, PROTECTION_UNKNOWN, PUSHABLE_SOURCE_FIELDS, allUnpushed, anySyncedCollectionSurvives, applyPlanFor, assertSafeMimeType, authorizeGoogle, baselineRecord, brokerBaseUrl, brokerExchange, brokerRefresh, brokerStart, buildEventPatch, buildMultipartBody, buildTaskPatch, bySourceField, calendarApiError, calendarPushStatePath, calendarSyncDueWindowMs, calendarSyncStatePath, canonicalCalendarId, canonicalTaskListId, claimCalendarSyncIfDue, classifyDelete, classifyWrite, clearCalendarLastSyncedAt, clearCalendarShadow, clearCalendarSyncToken, clientSecretPresence, collectCalendarPages, commitLinkedTokens, completeTask, configureGoogleHost, conflictingFields, createCalendarEvent, createDriveFile, createGoogleAuthFlow, createTask, deleteCalendarEvent, deleteDriveFile, deleteGoogleTokens, deleteTask, fieldText, findClientSecretPath, getCalendarColors, getCalendarEvent, getCalendarMeta, getGoogleAccessToken, googleApiError, googleAuthFlow, googleCalendarSyncTaskDef, googleConfigDir, googleSecretsDir, googleTokenPath, groupByCalendar, heldBack, isCalendarSyncDue, isClientSettableEventId, isDeniedAccessRole, isGoogleApiError, isIsoDateTimeWithOffset, isTextMimeType, isUnpushed, legacyGoogleTokenPath, listCalendarEvents, listCalendars, listDriveFiles, listTaskLists, listTasks, liveLockClock, loadCalendarLastSyncedAt, loadCalendarShadow, loadCalendarSyncToken, loadClientSecret, loadGoogleTokens, locallyChangedFields, locallyDeletedIds, locallyEditedIds, mayAdoptExisting, mergeGoogleTokens, mergeIntoExisting, mergeShadow, orphanedCalendarId, pickBoundary, planRecord, pullProtectionFor, pullableEvents, pushAndProtect, pushCalendarForCollection, pushCollectionNow, pushableMap, readDriveFile, releaseOrphanedCalendarToken, reportedAccessRole, resolveEventSpan, saveCalendarShadow, saveCalendarSyncToken, saveGoogleTokens, shadowUpdates, stateLockPath, syncCalendarEvents, syncCalendarForCollection, syncCalendarGroup, syncDueCalendarCollections, syncNewCalendarCollections, toCalendarMeta, toCalendarSummary, toCollectionDateTime, toCollectionRecord, toDriveFileSummary, toEventSummary, toGoogleEventTime, toShadowEvent, toTaskListSummary, toTaskSummary, uncompleteTask, unlinkGoogle, unpushedFor, unsentEditGuard, unsentLocalEdits, unsyncedGroups, updateCalendarEvent, updateTask, waitForAuthCode, withCalendarLock, withCalendarStateLock, withKeyedLock, zoneSuffixOf };
2676
2699
 
2677
2700
  //# sourceMappingURL=index.js.map