@mulmoclaude/core 4.10.0 → 5.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.
@@ -782,8 +782,11 @@ This is the answer whenever the user asks for a collection that syncs with
782
782
  Google Calendar — **not** an `ingest.kind: "agent"` worker and **not** the
783
783
  `google` MCP calendar tools, both of which spend an LLM turn on every refresh to
784
784
  produce what the host produces for free. `map` reads _your_ field name → the
785
- Google event field (`summary`, `start`, `end`, `htmlLink`, `colorId`, `status`);
786
- at least one entry is required. Never map the `primaryKey` — it always holds the
785
+ Google event field — `summary`, `start`, `end`, `description`, `location` and
786
+ `colorId` sync BOTH ways; `htmlLink`, `status`, `updated`, `transparency`,
787
+ `eventType`, `hangoutLink`, `recurringEventId` and `originalStartTime` are
788
+ pull-only, so the pull fills them and the push leaves them alone. At least one
789
+ entry is required. Never map the `primaryKey` — it always holds the
787
790
  Google event id, which is what makes a re-sync update a record instead of
788
791
  duplicating it.
789
792
 
@@ -67,8 +67,26 @@ it isn't, sync silently does nothing until they link it in settings.
67
67
  - `autoPush` — push local edits on the sync schedule, just before each pull.
68
68
  Omit it (the default) and the push stays a button. See "Both directions".
69
69
 
70
- Mappable event fields: `summary`, `start`, `end`, `description`, `location`,
71
- `htmlLink`, `colorId`, `status`.
70
+ Mappable event fields, two-way first: `summary`, `start`, `end`, `description`,
71
+ `location`, `colorId`.
72
+
73
+ Pull-only in this sync — the pull fills them, the push never sends them, so
74
+ Google always wins. Some of these Google would accept a write for
75
+ (`transparency`, and `eventType` at creation); this sync deliberately does not
76
+ send any of them: `htmlLink`, `status`, `updated` (Google's own last-modified
77
+ time),
78
+ `transparency` (`"transparent"` when the event does not consume the attendee's
79
+ time; `""` means opaque), `eventType` (all six Google returns: `default` / `birthday` / `focusTime` /
80
+ `fromGmail` / `outOfOffice` / `workingLocation`), `hangoutLink` (the Meet URL),
81
+ `recurringEventId` and `originalStartTime`.
82
+
83
+ The last two are how a recurring series stays legible. The sync asks Google to
84
+ expand recurrences, so a weekly meeting arrives as one event per occurrence;
85
+ `recurringEventId` names the series each occurrence came from (`""` for a
86
+ one-off), and `originalStartTime` is the slot the occurrence held before anyone
87
+ dragged it — so a moved occurrence reads as a move rather than as a deletion
88
+ plus a new event. Map them when the user asks why one calendar edit produced a
89
+ large batch of record changes.
72
90
 
73
91
  `description` is the event body, and Google stores limited **HTML** in it. It is
74
92
  kept verbatim — mirroring it through a plain-text field and pushing it back would
@@ -149,8 +167,9 @@ What the button does and deliberately does not do:
149
167
  destroyed while it waits — the cost is that the record stays behind Google
150
168
  until someone resolves it, and the host logs which records those are.
151
169
  - Pushes `summary`, `start`, `end`, `description`, `location` and `colorId` —
152
- everything the pull can read except `htmlLink` and `status`, which are
153
- read-only in Google, so a column mapped to either is ignored.
170
+ the two-way half of the list above. A column mapped to one of the pull-only
171
+ fields is ignored by the push rather than rejected, so it keeps mirroring
172
+ Google in one direction.
154
173
 
155
174
  Reasons a record can be reported as skipped:
156
175
 
@@ -505,8 +505,16 @@ export declare const AgentIngestZ: z.ZodObject<{
505
505
  }, z.core.$strip>;
506
506
  /** The Google event fields a collection may pull from. `id` is absent on
507
507
  * purpose — it always lands in the primary field, since upsert-by-event-id
508
- * is what makes the sync idempotent. */
509
- export declare const GOOGLE_CALENDAR_SOURCE_FIELDS: readonly ["summary", "start", "end", "htmlLink", "colorId", "status", "description", "location"];
508
+ * is what makes the sync idempotent.
509
+ *
510
+ * A superset of `PUSHABLE_SOURCE_FIELDS` (`google/pushPlan.ts`), listed with
511
+ * the pushable ones first. Mapping one of the rest gives a PULL-ONLY column
512
+ * that the push filters out — a choice of this sync, not only a Google
513
+ * limitation: `transparency` is writable and `eventType` is writable at
514
+ * creation, yet neither is sent. That is also why
515
+ * widening this enum needs no `.push-state.json` migration: the push baseline
516
+ * (`ShadowEvent`) is keyed off the pushable list, not off this one. */
517
+ export declare const GOOGLE_CALENDAR_SOURCE_FIELDS: readonly ["summary", "start", "end", "description", "location", "colorId", "htmlLink", "status", "recurringEventId", "originalStartTime", "updated", "transparency", "eventType", "hangoutLink"];
510
518
  /** Marks a collection as the destination of the LLM-free Google Calendar
511
519
  * sync (#2095). `map` is collectionField → Google event field, so the user's
512
520
  * collection keeps whatever field names it already uses. */
@@ -516,11 +524,17 @@ export declare const GoogleCalendarSyncZ: z.ZodObject<{
516
524
  summary: "summary";
517
525
  start: "start";
518
526
  end: "end";
519
- htmlLink: "htmlLink";
520
- colorId: "colorId";
521
- status: "status";
522
527
  description: "description";
523
528
  location: "location";
529
+ colorId: "colorId";
530
+ htmlLink: "htmlLink";
531
+ status: "status";
532
+ recurringEventId: "recurringEventId";
533
+ originalStartTime: "originalStartTime";
534
+ updated: "updated";
535
+ transparency: "transparency";
536
+ eventType: "eventType";
537
+ hangoutLink: "hangoutLink";
524
538
  }>>;
525
539
  autoPush: z.ZodOptional<z.ZodBoolean>;
526
540
  }, z.core.$strip>;
@@ -1123,11 +1137,17 @@ declare const CollectionObjectZ: z.ZodObject<{
1123
1137
  summary: "summary";
1124
1138
  start: "start";
1125
1139
  end: "end";
1126
- htmlLink: "htmlLink";
1127
- colorId: "colorId";
1128
- status: "status";
1129
1140
  description: "description";
1130
1141
  location: "location";
1142
+ colorId: "colorId";
1143
+ htmlLink: "htmlLink";
1144
+ status: "status";
1145
+ recurringEventId: "recurringEventId";
1146
+ originalStartTime: "originalStartTime";
1147
+ updated: "updated";
1148
+ transparency: "transparency";
1149
+ eventType: "eventType";
1150
+ hangoutLink: "hangoutLink";
1131
1151
  }>>;
1132
1152
  autoPush: z.ZodOptional<z.ZodBoolean>;
1133
1153
  }, z.core.$strip>>;
@@ -1615,11 +1635,17 @@ export declare const CollectionSchemaZ: z.ZodPreprocess<z.ZodObject<{
1615
1635
  summary: "summary";
1616
1636
  start: "start";
1617
1637
  end: "end";
1618
- htmlLink: "htmlLink";
1619
- colorId: "colorId";
1620
- status: "status";
1621
1638
  description: "description";
1622
1639
  location: "location";
1640
+ colorId: "colorId";
1641
+ htmlLink: "htmlLink";
1642
+ status: "status";
1643
+ recurringEventId: "recurringEventId";
1644
+ originalStartTime: "originalStartTime";
1645
+ updated: "updated";
1646
+ transparency: "transparency";
1647
+ eventType: "eventType";
1648
+ hangoutLink: "hangoutLink";
1623
1649
  }>>;
1624
1650
  autoPush: z.ZodOptional<z.ZodBoolean>;
1625
1651
  }, z.core.$strip>>;
@@ -4,9 +4,9 @@ const require_dist = require("../../../dist-Gj7ygaW2.cjs");
4
4
  const require_root = require("../../../root-BvwBUcol.cjs");
5
5
  const require_relPath = require("../../../relPath-CTAjGdCL.cjs");
6
6
  const require_utils_fetch = require("../../../utils/fetch.cjs");
7
- const require_discovery = require("../../../discovery-DhS4JWzq.cjs");
7
+ const require_discovery = require("../../../discovery-DCMW05Bp.cjs");
8
8
  const require_templatePath = require("../../../templatePath-27vUZowm.cjs");
9
- const require_server = require("../../../server-B__-VpRz.cjs");
9
+ const require_server = require("../../../server-rA9FSkl2.cjs");
10
10
  const require_skill_bridge_index = require("../../../skill-bridge/index.cjs");
11
11
  const require_types = require("../../../types-CNqkLT4M.cjs");
12
12
  let node_fs = require("node:fs");
@@ -2,9 +2,9 @@ import { l as isUnknownArray, t as errorMessage } from "../../../dist-BzoA9pDR.j
2
2
  import { n as writeFileAtomic } from "../../../root-BcS4-Kge.js";
3
3
  import { n as toPosixRelPath } from "../../../relPath-DW8MC8VO.js";
4
4
  import { fetchWithTimeout } from "../../../utils/fetch.js";
5
- import { K as safeRecordId, et as collectionsRegistriesConfigPath, ht as skillsStagingDir, lt as projectSkillsDir, r as loadCollection, rt as getWorkspaceRoot, s as CollectionSchemaZ, st as log, t as acceptParsedSchema } from "../../../discovery-BR8gifOX.js";
5
+ import { K as safeRecordId, et as collectionsRegistriesConfigPath, ht as skillsStagingDir, lt as projectSkillsDir, r as loadCollection, rt as getWorkspaceRoot, s as CollectionSchemaZ, st as log, t as acceptParsedSchema } from "../../../discovery-CBjI1lx9.js";
6
6
  import { t as isSafeActionTemplatePath } from "../../../templatePath-k_WNbL_Q.js";
7
- import { y as ONE_SECOND_MS } from "../../../server-BgPlo-HZ.js";
7
+ import { y as ONE_SECOND_MS } from "../../../server-BMZ_BcPH.js";
8
8
  import { claudeSkillDir, dataSkillDir, mirrorSkillWrite } from "../../../skill-bridge/index.js";
9
9
  import { n as parseRegistryIndex, r as isRecord, t as OFFICIAL_REGISTRY_NAME } from "../../../types-BKVZrtyc.js";
10
10
  import { readFileSync } from "node:fs";
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_root = require("../../root-BvwBUcol.cjs");
3
3
  const require_itemId = require("../../itemId-CGT2J7YK.cjs");
4
- const require_discovery = require("../../discovery-DhS4JWzq.cjs");
4
+ const require_discovery = require("../../discovery-DCMW05Bp.cjs");
5
5
  const require_templatePath = require("../../templatePath-27vUZowm.cjs");
6
- const require_server = require("../../server-B__-VpRz.cjs");
6
+ const require_server = require("../../server-rA9FSkl2.cjs");
7
7
  exports.APP_MANIFEST_FILE = require_discovery.APP_MANIFEST_FILE;
8
8
  exports.BackendUnavailableError = require_discovery.BackendUnavailableError;
9
9
  exports.COLLECTION_ROOT_REQUIRED = require_discovery.COLLECTION_ROOT_REQUIRED;
@@ -1,6 +1,6 @@
1
1
  import { t as canonicalRoot } from "../../root-BcS4-Kge.js";
2
2
  import { U as COMPUTED_TYPES } from "../../itemId-4P9S_ehz.js";
3
- import { $ as collectionChangePayload, A as readItem, B as SCHEMA_FILE, C as CollectionQueryZ, D as generateItemId, E as deleteItem, F as loadAppManifest, G as resolveTemplatePath, H as isUnderRealRoot, I as parseAppManifest, J as BackendUnavailableError, K as safeRecordId, L as sharedItemsPath, M as writeItem, N as APP_MANIFEST_FILE, O as isRegularFile, P as appManifestReason, Q as collectionChangeKey, R as pageFromFullRead, S as compileJsonlQuery, T as MAX_QUERY_ROWS, U as itemFilePath, V as isContainedInRoot, W as resolveDataDir, X as COLLECTION_ROOT_REQUIRED, Y as isBackendUnavailable, _ as dedupeByRecordId, a as toDetail, ct as peekWorkspaceRoot, d as storeFor, dt as setCollectionChangePublisher, ft as setFirestoreAccessor, g as decodeCsvRecordId, h as csvRowToItem, i as resolvePrimaryField, it as hostSupportsSharedCollections, j as resolveCreateItemId, k as listItems, l as collectionWritable, mt as sharedCollectionChangePayload, n as discoverCollections, nt as firestoreHandle, o as toSummary, ot as localCollectionKey, p as MAX_CSV_ROWS, pt as setSharedCollectionsSupport, q as safeSlugName, r as loadCollection, rt as getWorkspaceRoot, s as CollectionSchemaZ, st as log, t as acceptParsedSchema, tt as configureCollectionHost, u as readOnlyRefusal, ut as publishCollectionChange, v as encodeCsvRecordId, w as DEFAULT_QUERY_ROWS, x as compileCsvQuery, y as normalizeCsvValue, z as projectItemFields } from "../../discovery-BR8gifOX.js";
3
+ import { $ as collectionChangePayload, A as readItem, B as SCHEMA_FILE, C as CollectionQueryZ, D as generateItemId, E as deleteItem, F as loadAppManifest, G as resolveTemplatePath, H as isUnderRealRoot, I as parseAppManifest, J as BackendUnavailableError, K as safeRecordId, L as sharedItemsPath, M as writeItem, N as APP_MANIFEST_FILE, O as isRegularFile, P as appManifestReason, Q as collectionChangeKey, R as pageFromFullRead, S as compileJsonlQuery, T as MAX_QUERY_ROWS, U as itemFilePath, V as isContainedInRoot, W as resolveDataDir, X as COLLECTION_ROOT_REQUIRED, Y as isBackendUnavailable, _ as dedupeByRecordId, a as toDetail, ct as peekWorkspaceRoot, d as storeFor, dt as setCollectionChangePublisher, ft as setFirestoreAccessor, g as decodeCsvRecordId, h as csvRowToItem, i as resolvePrimaryField, it as hostSupportsSharedCollections, j as resolveCreateItemId, k as listItems, l as collectionWritable, mt as sharedCollectionChangePayload, n as discoverCollections, nt as firestoreHandle, o as toSummary, ot as localCollectionKey, p as MAX_CSV_ROWS, pt as setSharedCollectionsSupport, q as safeSlugName, r as loadCollection, rt as getWorkspaceRoot, s as CollectionSchemaZ, st as log, t as acceptParsedSchema, tt as configureCollectionHost, u as readOnlyRefusal, ut as publishCollectionChange, v as encodeCsvRecordId, w as DEFAULT_QUERY_ROWS, x as compileCsvQuery, y as normalizeCsvValue, z as projectItemFields } from "../../discovery-CBjI1lx9.js";
4
4
  import { i as isSafeTemplatePath, n as isSafeCustomViewI18nPath, r as isSafeCustomViewPath, t as isSafeActionTemplatePath } from "../../templatePath-k_WNbL_Q.js";
5
- import { A as recordFieldProblem, B as stagedSkillDir, C as applyMutateAction, D as validateCollectionRecords, E as STORE_UNREADABLE, F as buildCollectionActionSeedPrompt, I as promptPathsFor, L as readCustomViewHtml, M as enrichItems, N as runQueryOverRows, O as validateRecordObject, P as buildActionSeedPrompt, R as readCustomViewI18n, S as schemaRelations, T as MAX_RECORD_ISSUES, _ as resolveEvery, a as MAX_UNSELECTIVE_ITEMS, b as computeCollectionIcon, c as deleteCollection, d as computeSuccessor, f as daysInMonth, g as parseCivil, h as maybeSpawnSuccessor, i as MAX_SCHEMA_ISSUES, j as runCollectionQuery, k as compileRecordZ, l as deleteCollectionRefusalMessage, m as isTriggerDue, n as MAX_PUT_ITEMS, o as makeManageCollectionTool, p as formatCivil, r as MAX_PUT_LINT, s as deleteCustomView, t as MAX_ITEMS_FILE_BYTES, u as advanceTriggerDate, v as successorId, w as firstMutateParamProblem, x as buildWorkspaceOntology, z as readSkillTemplate } from "../../server-BgPlo-HZ.js";
5
+ import { A as recordFieldProblem, B as stagedSkillDir, C as applyMutateAction, D as validateCollectionRecords, E as STORE_UNREADABLE, F as buildCollectionActionSeedPrompt, I as promptPathsFor, L as readCustomViewHtml, M as enrichItems, N as runQueryOverRows, O as validateRecordObject, P as buildActionSeedPrompt, R as readCustomViewI18n, S as schemaRelations, T as MAX_RECORD_ISSUES, _ as resolveEvery, a as MAX_UNSELECTIVE_ITEMS, b as computeCollectionIcon, c as deleteCollection, d as computeSuccessor, f as daysInMonth, g as parseCivil, h as maybeSpawnSuccessor, i as MAX_SCHEMA_ISSUES, j as runCollectionQuery, k as compileRecordZ, l as deleteCollectionRefusalMessage, m as isTriggerDue, n as MAX_PUT_ITEMS, o as makeManageCollectionTool, p as formatCivil, r as MAX_PUT_LINT, s as deleteCustomView, t as MAX_ITEMS_FILE_BYTES, u as advanceTriggerDate, v as successorId, w as firstMutateParamProblem, x as buildWorkspaceOntology, z as readSkillTemplate } from "../../server-BMZ_BcPH.js";
6
6
  export { APP_MANIFEST_FILE, BackendUnavailableError, COLLECTION_ROOT_REQUIRED, COMPUTED_TYPES, CollectionQueryZ, CollectionSchemaZ, DEFAULT_QUERY_ROWS, MAX_CSV_ROWS, MAX_ITEMS_FILE_BYTES, MAX_PUT_ITEMS, MAX_PUT_LINT, MAX_QUERY_ROWS, MAX_RECORD_ISSUES, MAX_SCHEMA_ISSUES, MAX_UNSELECTIVE_ITEMS, SCHEMA_FILE, STORE_UNREADABLE, acceptParsedSchema, advanceTriggerDate, appManifestReason, applyMutateAction, buildActionSeedPrompt, buildCollectionActionSeedPrompt, buildWorkspaceOntology, canonicalRoot, collectionChangeKey, collectionChangePayload, collectionWritable, compileCsvQuery, compileJsonlQuery, compileRecordZ, computeCollectionIcon, computeSuccessor, configureCollectionHost, csvRowToItem, daysInMonth, decodeCsvRecordId, dedupeByRecordId, deleteCollection, deleteCollectionRefusalMessage, deleteCustomView, deleteItem, discoverCollections, encodeCsvRecordId, enrichItems, firestoreHandle, firstMutateParamProblem, formatCivil, generateItemId, getWorkspaceRoot, hostSupportsSharedCollections, isBackendUnavailable, isContainedInRoot, isRegularFile, isSafeActionTemplatePath, isSafeCustomViewI18nPath, isSafeCustomViewPath, isSafeTemplatePath, isTriggerDue, isUnderRealRoot, itemFilePath, listItems, loadAppManifest, loadCollection, localCollectionKey, log, makeManageCollectionTool, maybeSpawnSuccessor, normalizeCsvValue, pageFromFullRead, parseAppManifest, parseCivil, peekWorkspaceRoot, projectItemFields, promptPathsFor, publishCollectionChange, readCustomViewHtml, readCustomViewI18n, readItem, readOnlyRefusal, readSkillTemplate, recordFieldProblem, resolveCreateItemId, resolveDataDir, resolveEvery, resolvePrimaryField, resolveTemplatePath, runCollectionQuery, runQueryOverRows, safeRecordId, safeSlugName, schemaRelations, setCollectionChangePublisher, setFirestoreAccessor, setSharedCollectionsSupport, sharedCollectionChangePayload, sharedItemsPath, stagedSkillDir, storeFor, successorId, toDetail, toSummary, validateCollectionRecords, validateRecordObject, writeItem };
@@ -3,8 +3,8 @@ const require_root = require("../root-BvwBUcol.cjs");
3
3
  const require_itemId = require("../itemId-CGT2J7YK.cjs");
4
4
  const require_promptSafety = require("../promptSafety-caJWd1ZQ.cjs");
5
5
  require("../collection/index.cjs");
6
- const require_discovery = require("../discovery-DhS4JWzq.cjs");
7
- const require_server = require("../server-B__-VpRz.cjs");
6
+ const require_discovery = require("../discovery-DCMW05Bp.cjs");
7
+ const require_server = require("../server-rA9FSkl2.cjs");
8
8
  const require_notifier = require("../notifier-B65Mvngb.cjs");
9
9
  let node_fs_promises = require("node:fs/promises");
10
10
  //#region src/collection-watchers/config.ts
@@ -2,8 +2,8 @@ import { t as canonicalRoot } from "../root-BcS4-Kge.js";
2
2
  import { X as fieldText, j as isValidCollectionName } from "../itemId-4P9S_ehz.js";
3
3
  import { E as whenMatches, f as itemIsDone } from "../promptSafety-BpBTh5xO.js";
4
4
  import "../collection/index.js";
5
- import { $ as collectionChangePayload, U as itemFilePath, ct as peekWorkspaceRoot, d as storeFor, mt as sharedCollectionChangePayload, n as discoverCollections, nt as firestoreHandle, r as loadCollection, ut as publishCollectionChange } from "../discovery-BR8gifOX.js";
6
- import { h as maybeSpawnSuccessor, m as isTriggerDue } from "../server-BgPlo-HZ.js";
5
+ import { $ as collectionChangePayload, U as itemFilePath, ct as peekWorkspaceRoot, d as storeFor, mt as sharedCollectionChangePayload, n as discoverCollections, nt as firestoreHandle, r as loadCollection, ut as publishCollectionChange } from "../discovery-CBjI1lx9.js";
6
+ import { h as maybeSpawnSuccessor, m as isTriggerDue } from "../server-BMZ_BcPH.js";
7
7
  import { d as publish, m as updateForPlugin, n as clear, s as listAll } from "../notifier-vAp5t6wL.js";
8
8
  import { access } from "node:fs/promises";
9
9
  //#region src/collection-watchers/config.ts
@@ -2784,11 +2784,17 @@ var GoogleCalendarSyncZ = z.object({
2784
2784
  "summary",
2785
2785
  "start",
2786
2786
  "end",
2787
- "htmlLink",
2787
+ "description",
2788
+ "location",
2788
2789
  "colorId",
2790
+ "htmlLink",
2789
2791
  "status",
2790
- "description",
2791
- "location"
2792
+ "recurringEventId",
2793
+ "originalStartTime",
2794
+ "updated",
2795
+ "transparency",
2796
+ "eventType",
2797
+ "hangoutLink"
2792
2798
  ])).refine((map) => Object.keys(map).length > 0, { message: "map at least one field — a `googleCalendar` sync with an empty map writes records that carry only the event id" }),
2793
2799
  /** Run the push on the sync schedule too, immediately before each pull, so
2794
2800
  * local edits reach Google without anyone pressing a button (#2620).
@@ -3348,4 +3354,4 @@ function toDetail(collection) {
3348
3354
  //#endregion
3349
3355
  export { collectionChangePayload as $, readItem as A, SCHEMA_FILE as B, CollectionQueryZ as C, generateItemId as D, deleteItem as E, loadAppManifest as F, resolveTemplatePath as G, isUnderRealRoot as H, parseAppManifest as I, BackendUnavailableError as J, safeRecordId as K, sharedItemsPath as L, writeItem as M, APP_MANIFEST_FILE as N, isRegularFile as O, appManifestReason as P, collectionChangeKey as Q, pageFromFullRead as R, compileJsonlQuery as S, MAX_QUERY_ROWS as T, itemFilePath as U, isContainedInRoot as V, resolveDataDir as W, COLLECTION_ROOT_REQUIRED as X, isBackendUnavailable as Y, archiveDir as Z, dedupeByRecordId as _, createForwardingLogger as _t, toDetail as a, isPresetSlug as at, queryCsv as b, resolveMutateSet as c, peekWorkspaceRoot as ct, storeFor as d, setCollectionChangePublisher as dt, collectionsRegistriesConfigPath as et, checkpointSqliteDatabase as f, setFirestoreAccessor as ft, decodeCsvRecordId as g, stagingSkillDir as gt, csvRowToItem as h, skillsStagingDir as ht, resolvePrimaryField as i, hostSupportsSharedCollections as it, resolveCreateItemId as j, listItems as k, collectionWritable as l, projectSkillsDir as lt, cacheDir as m, sharedCollectionChangePayload as mt, discoverCollections as n, firestoreHandle as nt, toSummary as o, localCollectionKey as ot, MAX_CSV_ROWS as p, setSharedCollectionsSupport as pt, safeSlugName as q, loadCollection as r, getWorkspaceRoot as rt, CollectionSchemaZ as s, log as st, acceptParsedSchema as t, configureCollectionHost as tt, readOnlyRefusal as u, publishCollectionChange as ut, encodeCsvRecordId as v, createHostSlot as vt, DEFAULT_QUERY_ROWS as w, compileCsvQuery as x, normalizeCsvValue as y, projectItemFields as z };
3350
3356
 
3351
- //# sourceMappingURL=discovery-BR8gifOX.js.map
3357
+ //# sourceMappingURL=discovery-CBjI1lx9.js.map