@mulmoclaude/core 4.10.0 → 5.0.1

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.
@@ -5,7 +5,7 @@ import { n as writeFileAtomic } from "../root-BcS4-Kge.js";
5
5
  import { fetchWithTimeout } from "../utils/fetch.js";
6
6
  import { d as parseIsoDate, f as parseIsoDateTime } from "../itemId-4P9S_ehz.js";
7
7
  import { t as mergeIntoExisting } from "../project-B0j_Vf_Q.js";
8
- import { _t as createForwardingLogger, d as storeFor, n as discoverCollections, rt as getWorkspaceRoot, vt as createHostSlot } from "../discovery-BR8gifOX.js";
8
+ import { _t as createForwardingLogger, d as storeFor, n as discoverCollections, rt as getWorkspaceRoot, vt as createHostSlot } from "../discovery-CBjI1lx9.js";
9
9
  import { t as mulmoConfigDir } from "../paths-CkJxNZ7T.js";
10
10
  import { promises } from "node:fs";
11
11
  import path, { join } from "node:path";
@@ -629,7 +629,13 @@ var toEventSummary = (value) => {
629
629
  status: stringField(record, "status"),
630
630
  colorId: stringField(record, "colorId"),
631
631
  description: stringField(record, "description"),
632
- location: stringField(record, "location")
632
+ location: stringField(record, "location"),
633
+ recurringEventId: stringField(record, "recurringEventId"),
634
+ originalStartTime: eventTime$1(record.originalStartTime),
635
+ updated: stringField(record, "updated"),
636
+ transparency: stringField(record, "transparency"),
637
+ eventType: stringField(record, "eventType"),
638
+ hangoutLink: stringField(record, "hangoutLink")
633
639
  };
634
640
  };
635
641
  var toCalendarSummary = (value) => {
@@ -1435,10 +1441,14 @@ function toCollectionRecord(event, map, primaryKey, fields) {
1435
1441
  }
1436
1442
  //#endregion
1437
1443
  //#region src/google/pushPlan.ts
1438
- /** The event fields Google lets a caller write. `htmlLink` and `status` are
1439
- * read-only, so a record column mapped to either is ignored here rather than
1440
- * rejected — the mapping was authored for the pull, and a push has no business
1441
- * invalidating it. */
1444
+ /** The event fields Google lets a caller write — a SUBSET of what the pull can
1445
+ * read (`GOOGLE_CALENDAR_SOURCE_FIELDS`). A column mapped to one of the
1446
+ * pull-only fields is ignored here rather than rejected: the mapping was
1447
+ * authored for the pull, and a push has no business invalidating it.
1448
+ *
1449
+ * `satisfies` is what keeps the two lists honest. A field pushable but not
1450
+ * pullable could never have its baseline rebuilt from a pull, so "unchanged"
1451
+ * would stop meaning anything — this fails the build instead of shipping. */
1442
1452
  var PUSHABLE_SOURCE_FIELDS = [
1443
1453
  "summary",
1444
1454
  "start",
@@ -1496,13 +1506,28 @@ var comparableText = (value) => {
1496
1506
  const text = fieldText(value);
1497
1507
  return SECONDLESS_DATETIME_RE.test(text) ? `${text}${WHOLE_MINUTE}` : text;
1498
1508
  };
1509
+ /** The event fields a baseline does NOT carry, because none of them is pushable
1510
+ * — the baseline exists to answer "did the local side change a field we could
1511
+ * send?", and a pull-only field is by definition not one.
1512
+ *
1513
+ * Typed as the exact complement of `ShadowEvent` + `id`, so a field added to
1514
+ * `CalendarEventSummary` without being made pushable must be zeroed here or
1515
+ * the build fails. */
1516
+ var UNPUSHABLE_EVENT_FIELDS = {
1517
+ htmlLink: "",
1518
+ status: "",
1519
+ recurringEventId: "",
1520
+ originalStartTime: "",
1521
+ updated: "",
1522
+ transparency: "",
1523
+ eventType: "",
1524
+ hangoutLink: ""
1525
+ };
1499
1526
  /** A baseline shaped as the event it came from, so the comparison can run
1500
- * through the very projection that wrote the record. `htmlLink`/`status` are
1501
- * never pushable, so their absence from the baseline cannot matter. */
1527
+ * through the very projection that wrote the record. */
1502
1528
  var asEventSummary = (eventId, shadow) => ({
1503
1529
  id: eventId,
1504
- htmlLink: "",
1505
- status: "",
1530
+ ...UNPUSHABLE_EVENT_FIELDS,
1506
1531
  ...shadow
1507
1532
  });
1508
1533
  /** What the record WOULD hold if nobody had edited it since the baseline.