@rubytech/create-maxy-code 0.1.474 → 0.1.476

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 (138) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/storage-broker/dist/cf-exec.d.ts.map +1 -1
  3. package/payload/platform/lib/storage-broker/dist/cf-exec.js +3 -2
  4. package/payload/platform/lib/storage-broker/dist/cf-exec.js.map +1 -1
  5. package/payload/platform/lib/storage-broker/src/cf-exec.ts +3 -2
  6. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +18 -9
  7. package/payload/platform/plugins/cloudflare/skills/calendar-site/template/schema.sql +13 -3
  8. package/payload/platform/plugins/docs/references/calendar-booking.md +2 -2
  9. package/payload/platform/plugins/docs/references/google-guide.md +15 -6
  10. package/payload/platform/plugins/google/.claude-plugin/plugin.json +1 -1
  11. package/payload/platform/plugins/google/PLUGIN.md +60 -12
  12. package/payload/platform/plugins/google/mcp/dist/__tests__/account-audit.test.d.ts +2 -0
  13. package/payload/platform/plugins/google/mcp/dist/__tests__/account-audit.test.d.ts.map +1 -0
  14. package/payload/platform/plugins/google/mcp/dist/__tests__/account-audit.test.js +229 -0
  15. package/payload/platform/plugins/google/mcp/dist/__tests__/account-audit.test.js.map +1 -0
  16. package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.js +9 -9
  17. package/payload/platform/plugins/google/mcp/dist/__tests__/account-register.test.js.map +1 -1
  18. package/payload/platform/plugins/google/mcp/dist/__tests__/consent-url-redirect.test.d.ts +2 -0
  19. package/payload/platform/plugins/google/mcp/dist/__tests__/consent-url-redirect.test.d.ts.map +1 -0
  20. package/payload/platform/plugins/google/mcp/dist/__tests__/consent-url-redirect.test.js +17 -0
  21. package/payload/platform/plugins/google/mcp/dist/__tests__/consent-url-redirect.test.js.map +1 -0
  22. package/payload/platform/plugins/google/mcp/dist/__tests__/loopback-listener.test.d.ts +2 -0
  23. package/payload/platform/plugins/google/mcp/dist/__tests__/loopback-listener.test.d.ts.map +1 -0
  24. package/payload/platform/plugins/google/mcp/dist/__tests__/loopback-listener.test.js +146 -0
  25. package/payload/platform/plugins/google/mcp/dist/__tests__/loopback-listener.test.js.map +1 -0
  26. package/payload/platform/plugins/google/mcp/dist/__tests__/pending-redirect.test.d.ts +2 -0
  27. package/payload/platform/plugins/google/mcp/dist/__tests__/pending-redirect.test.d.ts.map +1 -0
  28. package/payload/platform/plugins/google/mcp/dist/__tests__/pending-redirect.test.js +19 -0
  29. package/payload/platform/plugins/google/mcp/dist/__tests__/pending-redirect.test.js.map +1 -0
  30. package/payload/platform/plugins/google/mcp/dist/__tests__/register-redirect-chain.test.d.ts +2 -0
  31. package/payload/platform/plugins/google/mcp/dist/__tests__/register-redirect-chain.test.d.ts.map +1 -0
  32. package/payload/platform/plugins/google/mcp/dist/__tests__/register-redirect-chain.test.js +41 -0
  33. package/payload/platform/plugins/google/mcp/dist/__tests__/register-redirect-chain.test.js.map +1 -0
  34. package/payload/platform/plugins/google/mcp/dist/auth/account-audit.d.ts +44 -0
  35. package/payload/platform/plugins/google/mcp/dist/auth/account-audit.d.ts.map +1 -0
  36. package/payload/platform/plugins/google/mcp/dist/auth/account-audit.js +112 -0
  37. package/payload/platform/plugins/google/mcp/dist/auth/account-audit.js.map +1 -0
  38. package/payload/platform/plugins/google/mcp/dist/auth/loopback-listener.d.ts +17 -0
  39. package/payload/platform/plugins/google/mcp/dist/auth/loopback-listener.d.ts.map +1 -0
  40. package/payload/platform/plugins/google/mcp/dist/auth/loopback-listener.js +143 -0
  41. package/payload/platform/plugins/google/mcp/dist/auth/loopback-listener.js.map +1 -0
  42. package/payload/platform/plugins/google/mcp/dist/auth/pending-store.d.ts +9 -0
  43. package/payload/platform/plugins/google/mcp/dist/auth/pending-store.d.ts.map +1 -1
  44. package/payload/platform/plugins/google/mcp/dist/auth/pending-store.js.map +1 -1
  45. package/payload/platform/plugins/google/mcp/dist/index.js +73 -5
  46. package/payload/platform/plugins/google/mcp/dist/index.js.map +1 -1
  47. package/payload/platform/plugins/google/mcp/dist/scripts/account-audit.d.ts +2 -0
  48. package/payload/platform/plugins/google/mcp/dist/scripts/account-audit.d.ts.map +1 -0
  49. package/payload/platform/plugins/google/mcp/dist/scripts/account-audit.js +37 -0
  50. package/payload/platform/plugins/google/mcp/dist/scripts/account-audit.js.map +1 -0
  51. package/payload/platform/plugins/google/mcp/dist/tools/account-register.d.ts +20 -4
  52. package/payload/platform/plugins/google/mcp/dist/tools/account-register.d.ts.map +1 -1
  53. package/payload/platform/plugins/google/mcp/dist/tools/account-register.js +19 -9
  54. package/payload/platform/plugins/google/mcp/dist/tools/account-register.js.map +1 -1
  55. package/payload/platform/plugins/google/references/auth.md +93 -14
  56. package/payload/platform/plugins/scheduling/PLUGIN.md +2 -2
  57. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/booking-reconcile.test.js +158 -23
  58. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/booking-reconcile.test.js.map +1 -1
  59. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/booking-schema-migration.test.d.ts +2 -0
  60. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/booking-schema-migration.test.d.ts.map +1 -0
  61. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/booking-schema-migration.test.js +200 -0
  62. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/booking-schema-migration.test.js.map +1 -0
  63. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-sync-provision.test.d.ts +2 -0
  64. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-sync-provision.test.d.ts.map +1 -0
  65. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-sync-provision.test.js +309 -0
  66. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/connector-sync-provision.test.js.map +1 -0
  67. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/d1-command.test.js +219 -19
  68. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/d1-command.test.js.map +1 -1
  69. package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.d.ts +94 -11
  70. package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.d.ts.map +1 -1
  71. package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.js +106 -22
  72. package/payload/platform/plugins/scheduling/mcp/dist/lib/booking-reconcile.js.map +1 -1
  73. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-sync-provision.d.ts +109 -0
  74. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-sync-provision.d.ts.map +1 -0
  75. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-sync-provision.js +213 -0
  76. package/payload/platform/plugins/scheduling/mcp/dist/lib/connector-sync-provision.js.map +1 -0
  77. package/payload/platform/plugins/scheduling/mcp/dist/lib/d1-command.d.ts +80 -8
  78. package/payload/platform/plugins/scheduling/mcp/dist/lib/d1-command.d.ts.map +1 -1
  79. package/payload/platform/plugins/scheduling/mcp/dist/lib/d1-command.js +202 -8
  80. package/payload/platform/plugins/scheduling/mcp/dist/lib/d1-command.js.map +1 -1
  81. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.d.ts +6 -4
  82. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.d.ts.map +1 -1
  83. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +334 -142
  84. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
  85. package/payload/platform/services/claude-session-manager/dist/activity-rows.d.ts +21 -3
  86. package/payload/platform/services/claude-session-manager/dist/activity-rows.d.ts.map +1 -1
  87. package/payload/platform/services/claude-session-manager/dist/activity-rows.js +6 -2
  88. package/payload/platform/services/claude-session-manager/dist/activity-rows.js.map +1 -1
  89. package/payload/platform/services/claude-session-manager/dist/fs-watcher.d.ts.map +1 -1
  90. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js +43 -5
  91. package/payload/platform/services/claude-session-manager/dist/fs-watcher.js.map +1 -1
  92. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts +9 -0
  93. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -1
  94. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +78 -0
  95. package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -1
  96. package/payload/server/{chunk-Y6V45R6M.js → chunk-LBCMFD4O.js} +173 -29
  97. package/payload/server/maxy-edge.js +1 -1
  98. package/payload/server/public/activity.html +6 -6
  99. package/payload/server/public/assets/{AdminLoginScreens-B44KbEuC.js → AdminLoginScreens-DximwPlS.js} +1 -1
  100. package/payload/server/public/assets/{AdminShell-BjxV2qkb.js → AdminShell-BehbH-Oa.js} +1 -1
  101. package/payload/server/public/assets/{Checkbox-DSeZNGNA.js → Checkbox-DM-eHqOS.js} +1 -1
  102. package/payload/server/public/assets/activity-hDwUeQd6.js +1 -0
  103. package/payload/server/public/assets/{admin-B4LpTCur.js → admin-CAkDnGdk.js} +1 -1
  104. package/payload/server/public/assets/{browser-CEFvaWwI.js → browser-DXl8hOoi.js} +1 -1
  105. package/payload/server/public/assets/{calendar-B3zo6V34.js → calendar-DP6hn4-6.js} +1 -1
  106. package/payload/server/public/assets/chat-DhOfVGYM.js +1 -0
  107. package/payload/server/public/assets/chevron-left-DYNBoLii.js +1 -0
  108. package/payload/server/public/assets/data-bq8fTo_s.js +1 -0
  109. package/payload/server/public/assets/{graph-RaOrnSf2.js → graph-CHcYoEJ5.js} +1 -1
  110. package/payload/server/public/assets/{graph-labels-GlTEIYJj.js → graph-labels-CZykslZM.js} +1 -1
  111. package/payload/server/public/assets/{maximize-2-CHDa8p5h.js → maximize-2-31AZEcMS.js} +1 -1
  112. package/payload/server/public/assets/{operator-DtqHY4jV.js → operator-BGGpdsO_.js} +1 -1
  113. package/payload/server/public/assets/{page-CkhFj8GQ.js → page-BloC6ygA.js} +1 -1
  114. package/payload/server/public/assets/{page-DxnWgPtd.js → page-DOeiiqbR.js} +1 -1
  115. package/payload/server/public/assets/{public-D5TUfQ3I.js → public-CGgO6IZv.js} +1 -1
  116. package/payload/server/public/assets/{rotate-ccw-BJjVAQQY.js → rotate-ccw-BlAi6iFg.js} +1 -1
  117. package/payload/server/public/assets/{tasks-CM9pYYG1.js → tasks-C1giFRRL.js} +1 -1
  118. package/payload/server/public/assets/{time-entry-format-C5RYEYjM.js → time-entry-format-CiUUQdq7.js} +1 -1
  119. package/payload/server/public/assets/{triangle-alert-DLfIsuo_.js → triangle-alert-CVqKuLoa.js} +1 -1
  120. package/payload/server/public/assets/{useCopyFeedback-7yKeiAzV.js → useCopyFeedback-ksyUe_g1.js} +1 -1
  121. package/payload/server/public/assets/{useSelectionMode-CWlh6AEq.js → useSelectionMode-BPrBkdTd.js} +1 -1
  122. package/payload/server/public/assets/{useSubAccountSwitcher-B2n9QPVI.css → useSubAccountSwitcher-K4kYeN6i.css} +1 -1
  123. package/payload/server/public/assets/{useVoiceRecorder-j3ZArZ2H.js → useVoiceRecorder-CTXP8oTW.js} +1 -1
  124. package/payload/server/public/browser.html +5 -5
  125. package/payload/server/public/calendar.html +6 -6
  126. package/payload/server/public/chat.html +12 -12
  127. package/payload/server/public/data.html +11 -11
  128. package/payload/server/public/graph.html +11 -11
  129. package/payload/server/public/index.html +14 -14
  130. package/payload/server/public/operator.html +14 -14
  131. package/payload/server/public/public.html +12 -12
  132. package/payload/server/public/tasks.html +5 -5
  133. package/payload/server/server.js +547 -423
  134. package/payload/server/public/assets/activity-CdipMTDp.js +0 -1
  135. package/payload/server/public/assets/chat-5tJdo9i_.js +0 -1
  136. package/payload/server/public/assets/chevron-left-BJllrPBj.js +0 -1
  137. package/payload/server/public/assets/data-Du79EgR-.js +0 -1
  138. /package/payload/server/public/assets/{useSubAccountSwitcher-CBlKgwms.js → useSubAccountSwitcher-DzgzTRRn.js} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy-code",
3
- "version": "0.1.474",
3
+ "version": "0.1.476",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy-code": "./dist/index.js"
@@ -1 +1 @@
1
- {"version":3,"file":"cf-exec.d.ts","sourceRoot":"","sources":["../src/cf-exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cf-exec.d.ts","sourceRoot":"","sources":["../src/cf-exec.ts"],"names":[],"mappings":"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"}
@@ -136,8 +136,9 @@ function makeCfExec(cred, run = defaultRun, fetchFn = defaultFetch) {
136
136
  CLOUDFLARE_ACCOUNT_ID: cred.accountId,
137
137
  };
138
138
  // Resolve wrangler via `npx`, never bare: the brand server PATH carries no
139
- // global wrangler, only `npx wrangler` resolves the same proven form the
140
- // scheduling plugin's buildD1Command uses (Task 1661). Bare `wrangler` ENOENTs.
139
+ // global wrangler, only `npx wrangler` resolves (Task 1661). Bare `wrangler`
140
+ // ENOENTs. The scheduling plugin's buildD1Command used to be the reference for
141
+ // this form; Task 1805 retired it by moving that path off wrangler entirely.
141
142
  return {
142
143
  async d1List() {
143
144
  const { stdout } = await run("npx", ["wrangler", "d1", "list", "--json"], env);
@@ -1 +1 @@
1
- {"version":3,"file":"cf-exec.js","sourceRoot":"","sources":["../src/cf-exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cf-exec.js","sourceRoot":"","sources":["../src/cf-exec.ts"],"names":[],"mappings":"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"}
@@ -219,8 +219,9 @@ export function makeCfExec(
219
219
  } as Record<string, string>;
220
220
 
221
221
  // Resolve wrangler via `npx`, never bare: the brand server PATH carries no
222
- // global wrangler, only `npx wrangler` resolves the same proven form the
223
- // scheduling plugin's buildD1Command uses (Task 1661). Bare `wrangler` ENOENTs.
222
+ // global wrangler, only `npx wrangler` resolves (Task 1661). Bare `wrangler`
223
+ // ENOENTs. The scheduling plugin's buildD1Command used to be the reference for
224
+ // this form; Task 1805 retired it by moving that path off wrangler entirely.
224
225
  return {
225
226
  async d1List() {
226
227
  const { stdout } = await run("npx", ["wrangler", "d1", "list", "--json"], env);
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: platform-architecture
3
3
  description: Use when grounding any documented-surface claim about what Maxy ships — plugins, skills, specialists, install/deploy flows, internals. This is the install catalogue, not evidence of what is enabled on the current account. For install state on this account, call `capabilities-here`; for documented surface, cite the `Source:` URL inline.
4
- content-hash: sha256:87a32054a533d5a60538763ef209f3b3e9d64d70f677d91507dbada9d1006609
4
+ content-hash: sha256:fa437825011cbcc1e2d5a13a3d16226ad0d1935a8856ad8fc478d04d16be49d3
5
5
  brand: maxy-code
6
6
  product-name: Maxy
7
7
  ---
@@ -2228,14 +2228,23 @@ force Google's annual third-party security assessment. Calendar is only a
2228
2228
  `google-account-register` returns a consent URL. Relay it to the user: they open
2229
2229
  it on any device, sign in, and approve.
2230
2230
 
2231
- Their browser then lands on a page that **fails to load**. That is expected, not
2232
- a fault — the vendor app is a Desktop client, so Google redirects to a loopback
2233
- address on the user's own device where nothing is listening. The address bar
2234
- carries the code. Ask them to copy it and pass it to
2231
+ What happens next depends on where they approved.
2232
+
2233
+ **If they approved on the machine this install runs on**, the connection
2234
+ completes by itself and their browser shows a page naming the connected account.
2235
+ Nothing is pasted. That page asks them to return to the chat and say so — do
2236
+ that, then call `google-account-register-poll` to confirm.
2237
+
2238
+ **If they approved on another device**, such as a phone, their browser lands on
2239
+ a page that **fails to load**. That is expected, not a fault: the vendor app is
2240
+ a Desktop client, so Google redirects to a loopback address on the install, and
2241
+ a phone has no route to it. The address bar still carries the code. Ask them to
2242
+ copy the **whole URL** from the address bar and pass it to
2235
2243
  `google-account-register-submit`, which completes the connection.
2236
2244
 
2237
- If they paste the whole `code=...` fragment, or a value containing `%2F`, the
2238
- tool handles it. `google-account-register-poll` reports the outcome at any point.
2245
+ Paste the entire URL — the tool pulls the code out. A bare code, a `code=...`
2246
+ fragment, and a value containing `%2F` all work too.
2247
+ `google-account-register-poll` reports the outcome at any point.
2239
2248
 
2240
2249
  The register tool does not block and does not wait. A second register while one
2241
2250
  is already live is refused rather than overwriting it; that refusal names how
@@ -2454,9 +2463,9 @@ This usually completes within a couple of minutes of the booking.
2454
2463
  Bookings are reconciled on a cycle and the system audits itself each run. In the device logs:
2455
2464
 
2456
2465
  - `[calendar-booking]` lines trace one booking through submit, write, notify, and done.
2457
- - `[calendar-reconcile]` lines report two health numbers per account: `pendingUnreconciled` (bookings captured but not yet turned into meetings) and `orphanMeetings` (booking meetings with no matching saved booking).
2466
+ - `[calendar-reconcile]` lines report three health numbers per account: `eligibleExamined` (bookings the check looked at), `pendingUnreconciled` (bookings captured but not yet turned into meetings) and `orphanMeetings` (booking meetings with no matching saved booking). Entries that only block out a slot are not counted — they are not bookings and never become meetings.
2458
2467
 
2459
- A `pendingUnreconciled` number that stays above zero across several runs means the reconcile step is stuck and is worth investigating. To read them: `journalctl --user -u <brand-service> | grep -E '\[calendar-booking\]|\[calendar-reconcile\]'`, then filter by one booking id for its full story. The edge half of a booking (before your device sees it) is in the Cloudflare Pages function logs.
2468
+ A `pendingUnreconciled` number that stays above zero across several runs means those bookings are failing to turn into meetings, and the `attempt=` number on the matching `[calendar-booking]` lines says how many times each has been tried. A booking whose meeting is deleted is picked up again automatically on the next run. To read them: `journalctl --user -u <brand-service> | grep -E '\[calendar-booking\]|\[calendar-reconcile\]'`, then filter by one booking id for its full story. The edge half of a booking (before your device sees it) is in the Cloudflare Pages function logs.
2460
2469
 
2461
2470
  ## When your real calendar lives elsewhere
2462
2471
 
@@ -1,7 +1,8 @@
1
1
  -- D1 schema for the booking site (calendar-site skill).
2
2
  -- One row per public booking submission. Captured at the edge so a submission
3
- -- survives a brief Pi outage; the platform reconcile pass later reads accepted,
4
- -- unswept rows and writes each into Neo4j as a :Meeting.
3
+ -- survives a brief Pi outage; the platform reconcile pass later reads eligible
4
+ -- rows (kind='booking') whose meeting is absent and writes each into Neo4j as a
5
+ -- :Meeting.
5
6
  CREATE TABLE IF NOT EXISTS bookings (
6
7
  id INTEGER PRIMARY KEY AUTOINCREMENT,
7
8
  bookingId TEXT UNIQUE NOT NULL,
@@ -12,7 +13,16 @@ CREATE TABLE IF NOT EXISTS bookings (
12
13
  note TEXT,
13
14
  status TEXT NOT NULL DEFAULT 'accepted',
14
15
  createdAt TEXT NOT NULL,
15
- swept INTEGER NOT NULL DEFAULT 0
16
+ swept INTEGER NOT NULL DEFAULT 0,
17
+ -- Task 1806 — 'booking' is a row that must become a :Meeting; 'block' only
18
+ -- reserves a slot and has no meeting by design. The reconcile sweep and its
19
+ -- audit both qualify on this, so a block row is never counted as a backlog
20
+ -- and never reconciled into a meeting.
21
+ kind TEXT NOT NULL DEFAULT 'booking',
22
+ -- Task 1807 — count of sweep claims for this row. Incremented before each
23
+ -- write attempt, so a row being retried and failing is distinguishable in the
24
+ -- journal from one never attempted. Never a gate; nothing reads it to decide.
25
+ attempts INTEGER NOT NULL DEFAULT 0
16
26
  );
17
27
 
18
28
  CREATE INDEX IF NOT EXISTS bookings_unswept ON bookings (status, swept);
@@ -49,9 +49,9 @@ This usually completes within a couple of minutes of the booking.
49
49
  Bookings are reconciled on a cycle and the system audits itself each run. In the device logs:
50
50
 
51
51
  - `[calendar-booking]` lines trace one booking through submit, write, notify, and done.
52
- - `[calendar-reconcile]` lines report two health numbers per account: `pendingUnreconciled` (bookings captured but not yet turned into meetings) and `orphanMeetings` (booking meetings with no matching saved booking).
52
+ - `[calendar-reconcile]` lines report three health numbers per account: `eligibleExamined` (bookings the check looked at), `pendingUnreconciled` (bookings captured but not yet turned into meetings) and `orphanMeetings` (booking meetings with no matching saved booking). Entries that only block out a slot are not counted — they are not bookings and never become meetings.
53
53
 
54
- A `pendingUnreconciled` number that stays above zero across several runs means the reconcile step is stuck and is worth investigating. To read them: `journalctl --user -u <brand-service> | grep -E '\[calendar-booking\]|\[calendar-reconcile\]'`, then filter by one booking id for its full story. The edge half of a booking (before your device sees it) is in the Cloudflare Pages function logs.
54
+ A `pendingUnreconciled` number that stays above zero across several runs means those bookings are failing to turn into meetings, and the `attempt=` number on the matching `[calendar-booking]` lines says how many times each has been tried. A booking whose meeting is deleted is picked up again automatically on the next run. To read them: `journalctl --user -u <brand-service> | grep -E '\[calendar-booking\]|\[calendar-reconcile\]'`, then filter by one booking id for its full story. The edge half of a booking (before your device sees it) is in the Cloudflare Pages function logs.
55
55
 
56
56
  ## When your real calendar lives elsewhere
57
57
 
@@ -14,14 +14,23 @@ force Google's annual third-party security assessment. Calendar is only a
14
14
  `google-account-register` returns a consent URL. Relay it to the user: they open
15
15
  it on any device, sign in, and approve.
16
16
 
17
- Their browser then lands on a page that **fails to load**. That is expected, not
18
- a fault — the vendor app is a Desktop client, so Google redirects to a loopback
19
- address on the user's own device where nothing is listening. The address bar
20
- carries the code. Ask them to copy it and pass it to
17
+ What happens next depends on where they approved.
18
+
19
+ **If they approved on the machine this install runs on**, the connection
20
+ completes by itself and their browser shows a page naming the connected account.
21
+ Nothing is pasted. That page asks them to return to the chat and say so — do
22
+ that, then call `google-account-register-poll` to confirm.
23
+
24
+ **If they approved on another device**, such as a phone, their browser lands on
25
+ a page that **fails to load**. That is expected, not a fault: the vendor app is
26
+ a Desktop client, so Google redirects to a loopback address on the install, and
27
+ a phone has no route to it. The address bar still carries the code. Ask them to
28
+ copy the **whole URL** from the address bar and pass it to
21
29
  `google-account-register-submit`, which completes the connection.
22
30
 
23
- If they paste the whole `code=...` fragment, or a value containing `%2F`, the
24
- tool handles it. `google-account-register-poll` reports the outcome at any point.
31
+ Paste the entire URL — the tool pulls the code out. A bare code, a `code=...`
32
+ fragment, and a value containing `%2F` all work too.
33
+ `google-account-register-poll` reports the outcome at any point.
25
34
 
26
35
  The register tool does not block and does not wait. A second register while one
27
36
  is already live is refused rather than overwriting it; that refusal names how
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "google",
3
- "description": "Live Google Calendar for one account via the Google Calendar API v3 — read plus control. Per-account OAuth authorization-code + PKCE against a Desktop client whose id and secret ship in brand config; the plugin mints the consent URL and exchanges the code in-process, and nothing in platform/ui participates. One account can connect several Google accounts; every operational tool takes an optional account selector (the email address) and refuses ambiguously when two or more are connected and none is named. There is deliberately no Gmail surface — mail runs on the `email` plugin's IMAP/SMTP path, and Gmail's restricted scopes would force Google's annual third-party security assessment, whereas Calendar is only a sensitive scope. Tools — google-account-register / google-account-register-submit / google-account-register-poll: connect a Google Calendar (returns a consent URL; the user approves, lands on a page that fails to load by design, and pastes the code back to submit); google-calendar-list: events in the next rangeDays days, recurring series expanded; google-calendar-event: one event by id; google-calendar-create / google-calendar-update / google-calendar-cancel: control events, attendees notified, update changes only the fields named; google-calendar-respond: accept, decline or tentatively accept an invitation, leaving other attendees' responses untouched; google-calendar-freebusy: busy blocks for this or named calendars; google-account-info: auth state for one connected Google account; google-account-list: every connected Google account with its own status.",
3
+ "description": "Live Google Calendar for one account via the Google Calendar API v3 — read plus control. Per-account OAuth authorization-code + PKCE against a Desktop client whose id and secret ship in brand config; the plugin mints the consent URL and exchanges the code in-process, and nothing in platform/ui participates. One account can connect several Google accounts; every operational tool takes an optional account selector (the email address) and refuses ambiguously when two or more are connected and none is named. There is deliberately no Gmail surface — mail runs on the `email` plugin's IMAP/SMTP path, and Gmail's restricted scopes would force Google's annual third-party security assessment, whereas Calendar is only a sensitive scope. Tools — google-account-register / google-account-register-submit / google-account-register-poll: connect a Google Calendar (returns a consent URL; approving on the install machine completes by itself and the browser confirms it, while approving on another device lands on a page that fails to load by design and the user pastes the address-bar URL back to submit); google-calendar-list: events in the next rangeDays days, recurring series expanded; google-calendar-event: one event by id; google-calendar-create / google-calendar-update / google-calendar-cancel: control events, attendees notified, update changes only the fields named; google-calendar-respond: accept, decline or tentatively accept an invitation, leaving other attendees' responses untouched; google-calendar-freebusy: busy blocks for this or named calendars; google-account-info: auth state for one connected Google account; google-account-list: every connected Google account with its own status.",
4
4
  "version": "0.1.0",
5
5
  "author": {
6
6
  "name": "Rubytech LLC"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: google
3
- description: Live Google Calendar for one account via the Google Calendar API v3 — read plus control. Per-account OAuth authorization-code + PKCE against a Desktop client whose id and secret ship in brand config; the plugin mints the consent URL and exchanges the code in-process, and nothing in platform/ui participates. One account can connect several Google accounts; every operational tool takes an optional account selector (the email address) and refuses ambiguously when two or more are connected and none is named. There is deliberately no Gmail surface — mail runs on the `email` plugin's IMAP/SMTP path, and Gmail's restricted scopes would force Google's annual third-party security assessment, whereas Calendar is only a sensitive scope. Tools — google-account-register / google-account-register-submit / google-account-register-poll: connect a Google Calendar (returns a consent URL; the user approves, lands on a page that fails to load by design, and pastes the code back to submit); google-calendar-list: events in the next rangeDays days, recurring series expanded; google-calendar-event: one event by id; google-calendar-create / google-calendar-update / google-calendar-cancel: control events, attendees notified, update changes only the fields named; google-calendar-respond: accept, decline or tentatively accept an invitation, leaving other attendees' responses untouched; google-calendar-freebusy: busy blocks for this or named calendars; google-account-info: auth state for one connected Google account; google-account-list: every connected Google account with its own status.
3
+ description: Live Google Calendar for one account via the Google Calendar API v3 — read plus control. Per-account OAuth authorization-code + PKCE against a Desktop client whose id and secret ship in brand config; the plugin mints the consent URL and exchanges the code in-process, and nothing in platform/ui participates. One account can connect several Google accounts; every operational tool takes an optional account selector (the email address) and refuses ambiguously when two or more are connected and none is named. There is deliberately no Gmail surface — mail runs on the `email` plugin's IMAP/SMTP path, and Gmail's restricted scopes would force Google's annual third-party security assessment, whereas Calendar is only a sensitive scope. Tools — google-account-register / google-account-register-submit / google-account-register-poll: connect a Google Calendar (returns a consent URL; approving on the install machine completes by itself and the browser confirms it, while approving on another device lands on a page that fails to load by design and the user pastes the address-bar URL back to submit); google-calendar-list: events in the next rangeDays days, recurring series expanded; google-calendar-event: one event by id; google-calendar-create / google-calendar-update / google-calendar-cancel: control events, attendees notified, update changes only the fields named; google-calendar-respond: accept, decline or tentatively accept an invitation, leaving other attendees' responses untouched; google-calendar-freebusy: busy blocks for this or named calendars; google-account-info: auth state for one connected Google account; google-account-list: every connected Google account with its own status.
4
4
  tools:
5
5
  - name: google-account-register
6
6
  publicAllowlist: false
@@ -78,19 +78,27 @@ The vendor app is a **Desktop (installed app)** client, the one type whose
78
78
  secret Google sanctions shipping in distributed software. Its id and secret come
79
79
  from `brand.json` and are stamped by the installer together or not at all.
80
80
 
81
- `google-account-register` mints the PKCE pair, persists it single-slot per
82
- account, and returns a consent URL whose redirect is the IP literal
83
- `http://127.0.0.1:8571` never `localhost`, since Google's port-agnostic
84
- loopback matching applies only to the literal. The user opens the URL on any
85
- device and approves, then lands on a page that **fails to load by design**
86
- (nothing listens there) and copies the `code` from the address bar.
87
- `google-account-register-submit` exchanges it in-process with the stored
88
- verifier, resolves the account's email from its primary calendar, and writes
89
- encrypted tokens. `google-account-register-poll` reports the outcome from local
90
- state.
81
+ `google-account-register` mints the PKCE pair, binds a single-shot listener on
82
+ `127.0.0.1` at an OS-assigned port, and returns a consent URL carrying that
83
+ port. The host is always the IP literal, never `localhost` Google's
84
+ port-agnostic loopback matching applies only to the literal.
85
+
86
+ Consent on the install's own machine reaches that listener, which verifies
87
+ `state`, completes the exchange, and renders a page naming the account. Consent
88
+ on another device cannot reach it, so the redirect fails to load and the user
89
+ pastes the address-bar URL into `google-account-register-submit`. Both paths
90
+ exchange in-process with the stored verifier, resolve the email from the primary
91
+ calendar, and write encrypted tokens. `google-account-register-poll` reports the
92
+ outcome from local state.
93
+
94
+ The pending entry stores the redirect it issued, because the port varies per
95
+ registration and Google compares the exchange's `redirect_uri` byte for byte
96
+ against the one that issued the code. A failed bind falls back to
97
+ `http://127.0.0.1:8571`, leaving the paste path exactly as it was.
91
98
 
92
99
  Token refresh also runs in-process against Google. Nothing in `platform/ui`
93
- participates in Google OAuth.
100
+ mints, exchanges or refreshes a Google credential; its only Google surface is the
101
+ standing pending audit below, which reads a file's age and never decrypts.
94
102
 
95
103
  ## Scope
96
104
 
@@ -111,6 +119,46 @@ is why they are declared in the self-named `${FOO}` form (see
111
119
  `clientSecretConfigured`; either reading `false` on a brand that ships both is
112
120
  the mis-stamp signature.
113
121
 
122
+ ## Observability
123
+
124
+ Two failures here emit no event and do not reproduce on demand: a registration
125
+ the operator abandons, and a refresh token that expires. Nothing touches either;
126
+ they simply stop being true at some future date. Two standing audits report them
127
+ without anything polling.
128
+
129
+ | Audit | Where it runs | Interval | Per-finding line | Heartbeat |
130
+ |---|---|---|---|---|
131
+ | Stranded pending registration | in-process in `platform/ui` | 5 min | `[google-oauth] op=pending-stranded account=<id> ageSec=<N>` | `[google-oauth] op=pending-audit scanned=<N> stranded=<M>` |
132
+ | Refresh-token TTL | spawned `mcp/dist/scripts/account-audit.js` | 1 hour | `[google-account-audit] account=<id> email=<addr> refreshTtlDays=<D> status=<ok\|expiring\|expired>` | `[google-account-audit] op=heartbeat accounts=<N> ok=<A> expiring=<B> expired=<C>` |
133
+
134
+ They run on different mechanisms deliberately. The pending audit needs no
135
+ decrypt — file age alone is conclusive — so it runs in-process and stays
136
+ independent of whether any spawn is healthy. The refresh audit must decrypt the
137
+ token blob with the per-account key, so it runs where `TokenStore` lives.
138
+
139
+ **The heartbeat is the point.** Each audit emits its heartbeat on every cycle,
140
+ including cycles that find nothing, because an audit that has stopped running is
141
+ otherwise indistinguishable from one reporting all-clear. The absence of a
142
+ heartbeat over more than one interval is the documented signal that the audit is
143
+ down — not silence meaning healthy. A failed pending cycle logs
144
+ `op=pending-audit-error`, deliberately a different token from the heartbeat so a
145
+ broken cycle can never be counted as a clean one.
146
+
147
+ `refreshTtlDays` is days left on Google's 180-day **inactivity** revocation
148
+ clock, measured from `lastRefresh`. Google publishes no refresh-token expiry and
149
+ the stored blob holds none, so this is the only bounded, locally-computable
150
+ clock. It does not predict the user revoking access or changing their password,
151
+ neither of which is observable from here. A connection holding no refresh token
152
+ at all reports `expired` with zero days regardless of how recently it was
153
+ written, because it dies when its access token lapses about an hour out.
154
+
155
+ Diagnostic path:
156
+
157
+ ```
158
+ ~/<brand>-code/platform/scripts/logs-read.sh --tail server 200 \
159
+ | grep -E '\[google-oauth\]|\[google-account-audit\]'
160
+ ```
161
+
114
162
  ## Out of scope
115
163
 
116
164
  Gmail (stays on IMAP/SMTP), Contacts, Drive/Docs, push notification channels,
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=account-audit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-audit.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/account-audit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Refresh-TTL audit (Task 1773).
3
+ *
4
+ * The audit exists because a refresh token expiring emits no event and does not
5
+ * reproduce on demand — nothing touches the account, it simply stops working at
6
+ * some future date. So every test here drives the audit ALONE. None of them call
7
+ * a register or poll path first: that is the path that already worked, and a test
8
+ * that primes it proves nothing about the audit.
9
+ */
10
+ import { strict as assert } from "node:assert";
11
+ import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
12
+ import { tmpdir } from "node:os";
13
+ import { join } from "node:path";
14
+ import { test } from "node:test";
15
+ import { TokenStore } from "../auth/token-store.js";
16
+ import { REFRESH_EXPIRING_THRESHOLD_DAYS, REFRESH_INACTIVITY_LIMIT_DAYS, auditConnectedAccounts, classifyRefresh, runAccountAudit, } from "../auth/account-audit.js";
17
+ const DAY_MS = 86_400_000;
18
+ const ACCOUNT_A = "aaaaaaaa-1111-4111-8111-aaaaaaaaaaaa";
19
+ const ACCOUNT_B = "bbbbbbbb-2222-4222-8222-bbbbbbbbbbbb";
20
+ function freshDir() {
21
+ return mkdtempSync(join(tmpdir(), "google-audit-"));
22
+ }
23
+ /** Write a real encrypted token blob through TokenStore, then rewrite it with a
24
+ * chosen lastRefresh — the audit must read the stored value, not a live clock. */
25
+ function seedAccount(accountsDir, accountId, email, opts, nowMs) {
26
+ const store = new TokenStore(accountId, accountsDir, email);
27
+ store.writeBlobForTest({
28
+ accessToken: "at",
29
+ refreshToken: opts.refreshToken,
30
+ accessTokenExpiry: nowMs + 3_600_000,
31
+ lastRefresh: nowMs - opts.lastRefreshAgeDays * DAY_MS,
32
+ email,
33
+ scopes: ["https://www.googleapis.com/auth/calendar"],
34
+ });
35
+ }
36
+ test("classifyRefresh: a healthy recently-refreshed token is ok", () => {
37
+ const now = Date.now();
38
+ const r = classifyRefresh({
39
+ accessToken: "at",
40
+ refreshToken: "rt",
41
+ accessTokenExpiry: now,
42
+ lastRefresh: now - 3 * DAY_MS,
43
+ email: "a@example.com",
44
+ scopes: [],
45
+ }, now);
46
+ assert.equal(r.status, "ok");
47
+ assert.equal(r.refreshTtlDays, REFRESH_INACTIVITY_LIMIT_DAYS - 3);
48
+ });
49
+ test("classifyRefresh: inside the expiring threshold is expiring, not ok", () => {
50
+ const now = Date.now();
51
+ // 175 days idle leaves 5 days of the 180-day inactivity clock.
52
+ const r = classifyRefresh({
53
+ accessToken: "at",
54
+ refreshToken: "rt",
55
+ accessTokenExpiry: now,
56
+ lastRefresh: now - 175 * DAY_MS,
57
+ email: "a@example.com",
58
+ scopes: [],
59
+ }, now);
60
+ assert.equal(r.refreshTtlDays, 5);
61
+ assert.equal(r.status, "expiring");
62
+ assert.ok(r.refreshTtlDays <= REFRESH_EXPIRING_THRESHOLD_DAYS);
63
+ });
64
+ test("classifyRefresh: past the inactivity limit is expired", () => {
65
+ const now = Date.now();
66
+ const r = classifyRefresh({
67
+ accessToken: "at",
68
+ refreshToken: "rt",
69
+ accessTokenExpiry: now,
70
+ lastRefresh: now - 200 * DAY_MS,
71
+ email: "a@example.com",
72
+ scopes: [],
73
+ }, now);
74
+ assert.equal(r.status, "expired");
75
+ assert.ok(r.refreshTtlDays <= 0);
76
+ });
77
+ test("classifyRefresh: no refresh token at all is expired with zero days", () => {
78
+ const now = Date.now();
79
+ // A connection Google issued no refresh token for dies with its access token,
80
+ // about an hour out. It is not 'ok' merely because it was just written.
81
+ const r = classifyRefresh({
82
+ accessToken: "at",
83
+ refreshToken: null,
84
+ accessTokenExpiry: now,
85
+ lastRefresh: now,
86
+ email: "a@example.com",
87
+ scopes: [],
88
+ }, now);
89
+ assert.equal(r.status, "expired");
90
+ assert.equal(r.refreshTtlDays, 0);
91
+ });
92
+ test("classifyRefresh: a lastRefresh in the future never exceeds the documented limit", () => {
93
+ // A device whose clock ran ahead, or a blob restored from such a host. Without
94
+ // the clamp this reports e.g. refreshTtlDays=200, a value the module documents
95
+ // as impossible.
96
+ const now = Date.now();
97
+ const r = classifyRefresh({
98
+ accessToken: "at",
99
+ refreshToken: "rt",
100
+ accessTokenExpiry: now,
101
+ lastRefresh: now + 20 * DAY_MS,
102
+ email: "a@example.com",
103
+ scopes: [],
104
+ }, now);
105
+ assert.equal(r.refreshTtlDays, REFRESH_INACTIVITY_LIMIT_DAYS);
106
+ assert.equal(r.status, "ok");
107
+ });
108
+ test("an email carrying whitespace cannot split the audit line into bogus fields", () => {
109
+ const dir = freshDir();
110
+ const now = Date.now();
111
+ const lines = [];
112
+ try {
113
+ const store = new TokenStore(ACCOUNT_A, dir, "spacey@example.com");
114
+ store.writeBlobForTest({
115
+ accessToken: "at",
116
+ refreshToken: "rt",
117
+ accessTokenExpiry: now + 3_600_000,
118
+ lastRefresh: now,
119
+ email: "bad id@example.com",
120
+ scopes: [],
121
+ });
122
+ runAccountAudit(dir, now, (l) => lines.push(l));
123
+ const line = lines.find((l) => l.includes("refreshTtlDays="));
124
+ assert.ok(line);
125
+ // status must remain the LAST field and parse cleanly: an unescaped space
126
+ // would push `status=` out of position for any k=v reader.
127
+ const fields = Object.fromEntries(line.split(" ").slice(1).map((p) => p.split("=")));
128
+ assert.equal(fields.status, "ok");
129
+ assert.equal(fields.refreshTtlDays, String(REFRESH_INACTIVITY_LIMIT_DAYS));
130
+ assert.equal(fields.email, "bad_id@example.com");
131
+ }
132
+ finally {
133
+ rmSync(dir, { recursive: true, force: true });
134
+ }
135
+ });
136
+ test("auditConnectedAccounts reports every connected account across accounts", () => {
137
+ const dir = freshDir();
138
+ const now = Date.now();
139
+ try {
140
+ seedAccount(dir, ACCOUNT_A, "one@example.com", { lastRefreshAgeDays: 1, refreshToken: "rt" }, now);
141
+ seedAccount(dir, ACCOUNT_A, "two@example.com", { lastRefreshAgeDays: 175, refreshToken: "rt" }, now);
142
+ seedAccount(dir, ACCOUNT_B, "three@example.com", { lastRefreshAgeDays: 0, refreshToken: null }, now);
143
+ const rows = auditConnectedAccounts(dir, now);
144
+ assert.equal(rows.length, 3);
145
+ const byEmail = new Map(rows.map((r) => [r.email, r]));
146
+ assert.equal(byEmail.get("one@example.com")?.status, "ok");
147
+ assert.equal(byEmail.get("two@example.com")?.status, "expiring");
148
+ assert.equal(byEmail.get("three@example.com")?.status, "expired");
149
+ assert.equal(byEmail.get("one@example.com")?.accountId, ACCOUNT_A);
150
+ assert.equal(byEmail.get("three@example.com")?.accountId, ACCOUNT_B);
151
+ }
152
+ finally {
153
+ rmSync(dir, { recursive: true, force: true });
154
+ }
155
+ });
156
+ test("one unreadable blob does not blind the scan", () => {
157
+ const dir = freshDir();
158
+ const now = Date.now();
159
+ try {
160
+ seedAccount(dir, ACCOUNT_A, "good@example.com", { lastRefreshAgeDays: 1, refreshToken: "rt" }, now);
161
+ // Corrupt ciphertext under the same account — decrypt will throw.
162
+ const badDir = join(dir, ACCOUNT_A, "secrets", "google", "accounts", "bad@example.com");
163
+ mkdirSync(badDir, { recursive: true });
164
+ writeFileSync(join(badDir, "tokens.enc"), "not:validciphertext");
165
+ const rows = auditConnectedAccounts(dir, now);
166
+ // The healthy account still reports; the corrupt one is skipped, not fatal.
167
+ assert.ok(rows.some((r) => r.email === "good@example.com" && r.status === "ok"));
168
+ }
169
+ finally {
170
+ rmSync(dir, { recursive: true, force: true });
171
+ }
172
+ });
173
+ test("non-uuid directories under accountsDir are ignored", () => {
174
+ const dir = freshDir();
175
+ const now = Date.now();
176
+ try {
177
+ mkdirSync(join(dir, "not-an-account", "secrets", "google", "accounts", "x@example.com"), {
178
+ recursive: true,
179
+ });
180
+ assert.deepEqual(auditConnectedAccounts(dir, now), []);
181
+ }
182
+ finally {
183
+ rmSync(dir, { recursive: true, force: true });
184
+ }
185
+ });
186
+ test("a missing accounts directory yields no rows and does not throw", () => {
187
+ assert.deepEqual(auditConnectedAccounts(join(tmpdir(), "google-audit-absent-dir"), Date.now()), []);
188
+ });
189
+ test("runAccountAudit emits one line per account plus a heartbeat", () => {
190
+ const dir = freshDir();
191
+ const now = Date.now();
192
+ const lines = [];
193
+ try {
194
+ seedAccount(dir, ACCOUNT_A, "one@example.com", { lastRefreshAgeDays: 1, refreshToken: "rt" }, now);
195
+ seedAccount(dir, ACCOUNT_A, "two@example.com", { lastRefreshAgeDays: 175, refreshToken: "rt" }, now);
196
+ runAccountAudit(dir, now, (l) => lines.push(l));
197
+ const perAccount = lines.filter((l) => l.includes("account=") && !l.includes("op=heartbeat"));
198
+ assert.equal(perAccount.length, 2);
199
+ assert.ok(perAccount.some((l) => l.includes("[google-account-audit]") &&
200
+ l.includes(`account=${ACCOUNT_A}`) &&
201
+ l.includes("email=two@example.com") &&
202
+ l.includes("refreshTtlDays=5") &&
203
+ l.includes("status=expiring")), `expected an expiring line, got: ${perAccount.join(" | ")}`);
204
+ const heartbeat = lines.filter((l) => l.includes("op=heartbeat"));
205
+ assert.equal(heartbeat.length, 1);
206
+ assert.ok(heartbeat[0].includes("accounts=2"));
207
+ assert.ok(heartbeat[0].includes("ok=1"));
208
+ assert.ok(heartbeat[0].includes("expiring=1"));
209
+ assert.ok(heartbeat[0].includes("expired=0"));
210
+ }
211
+ finally {
212
+ rmSync(dir, { recursive: true, force: true });
213
+ }
214
+ });
215
+ test("the heartbeat is emitted on a cycle that finds nothing", () => {
216
+ // This is the whole point of the heartbeat: an audit that stopped running must
217
+ // not be indistinguishable from an audit reporting all-clear.
218
+ const dir = freshDir();
219
+ const lines = [];
220
+ try {
221
+ runAccountAudit(dir, Date.now(), (l) => lines.push(l));
222
+ assert.equal(lines.length, 1);
223
+ assert.ok(lines[0].includes("[google-account-audit] op=heartbeat accounts=0"));
224
+ }
225
+ finally {
226
+ rmSync(dir, { recursive: true, force: true });
227
+ }
228
+ });
229
+ //# sourceMappingURL=account-audit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-audit.test.js","sourceRoot":"","sources":["../../src/__tests__/account-audit.test.ts"],"names":[],"mappings":"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"}