@jungjaehoon/mama-os 0.61.2 → 0.63.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 (165) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +1 -1
  3. package/dist/api/drive-actions.d.ts +12 -0
  4. package/dist/api/drive-actions.d.ts.map +1 -0
  5. package/dist/api/drive-actions.js +322 -0
  6. package/dist/api/drive-actions.js.map +1 -0
  7. package/dist/api/report-source-actions.d.ts.map +1 -1
  8. package/dist/api/report-source-actions.js +15 -7
  9. package/dist/api/report-source-actions.js.map +1 -1
  10. package/dist/api/security-events.d.ts +26 -0
  11. package/dist/api/security-events.d.ts.map +1 -1
  12. package/dist/api/security-events.js +107 -24
  13. package/dist/api/security-events.js.map +1 -1
  14. package/dist/api/source-actions.d.ts.map +1 -1
  15. package/dist/api/source-actions.js +7 -7
  16. package/dist/api/source-actions.js.map +1 -1
  17. package/dist/api/stored-source-reader.d.ts.map +1 -1
  18. package/dist/api/stored-source-reader.js +3 -0
  19. package/dist/api/stored-source-reader.js.map +1 -1
  20. package/dist/api/trello-actions.d.ts +15 -0
  21. package/dist/api/trello-actions.d.ts.map +1 -0
  22. package/dist/api/trello-actions.js +130 -0
  23. package/dist/api/trello-actions.js.map +1 -0
  24. package/dist/api/viewer-data.d.ts +77 -0
  25. package/dist/api/viewer-data.d.ts.map +1 -1
  26. package/dist/api/viewer-data.js +116 -0
  27. package/dist/api/viewer-data.js.map +1 -1
  28. package/dist/api/viewer-server.d.ts +1 -1
  29. package/dist/api/viewer-server.d.ts.map +1 -1
  30. package/dist/api/viewer-server.js +87 -3
  31. package/dist/api/viewer-server.js.map +1 -1
  32. package/dist/api/work-actions.d.ts +3 -0
  33. package/dist/api/work-actions.d.ts.map +1 -1
  34. package/dist/api/work-actions.js +23 -15
  35. package/dist/api/work-actions.js.map +1 -1
  36. package/dist/backfill/format.d.ts +105 -0
  37. package/dist/backfill/format.d.ts.map +1 -0
  38. package/dist/backfill/format.js +314 -0
  39. package/dist/backfill/format.js.map +1 -0
  40. package/dist/backfill/push.d.ts +63 -0
  41. package/dist/backfill/push.d.ts.map +1 -0
  42. package/dist/backfill/push.js +221 -0
  43. package/dist/backfill/push.js.map +1 -0
  44. package/dist/cli/commands/backfill.d.ts +12 -0
  45. package/dist/cli/commands/backfill.d.ts.map +1 -0
  46. package/dist/cli/commands/backfill.js +67 -0
  47. package/dist/cli/commands/backfill.js.map +1 -0
  48. package/dist/cli/commands/daemon.d.ts +2 -1
  49. package/dist/cli/commands/daemon.d.ts.map +1 -1
  50. package/dist/cli/commands/daemon.js +55 -14
  51. package/dist/cli/commands/daemon.js.map +1 -1
  52. package/dist/cli/commands/init.d.ts.map +1 -1
  53. package/dist/cli/commands/init.js +4 -2
  54. package/dist/cli/commands/init.js.map +1 -1
  55. package/dist/cli/index.js +18 -1
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/cli/runtime/claude-caller-config.d.ts +6 -1
  58. package/dist/cli/runtime/claude-caller-config.d.ts.map +1 -1
  59. package/dist/cli/runtime/claude-caller-config.js +3 -1
  60. package/dist/cli/runtime/claude-caller-config.js.map +1 -1
  61. package/dist/connectors/framework/gws-utils.d.ts +6 -3
  62. package/dist/connectors/framework/gws-utils.d.ts.map +1 -1
  63. package/dist/connectors/framework/gws-utils.js +35 -6
  64. package/dist/connectors/framework/gws-utils.js.map +1 -1
  65. package/dist/connectors/index.d.ts +0 -1
  66. package/dist/connectors/index.d.ts.map +1 -1
  67. package/dist/connectors/index.js +1 -5
  68. package/dist/connectors/index.js.map +1 -1
  69. package/dist/connectors/slack/index.d.ts +2 -0
  70. package/dist/connectors/slack/index.d.ts.map +1 -1
  71. package/dist/connectors/slack/index.js +83 -39
  72. package/dist/connectors/slack/index.js.map +1 -1
  73. package/dist/connectors/trello/action-line.d.ts +13 -0
  74. package/dist/connectors/trello/action-line.d.ts.map +1 -0
  75. package/dist/connectors/trello/action-line.js +118 -0
  76. package/dist/connectors/trello/action-line.js.map +1 -0
  77. package/dist/connectors/trello/actions.d.ts +27 -0
  78. package/dist/connectors/trello/actions.d.ts.map +1 -0
  79. package/dist/connectors/trello/actions.js +35 -0
  80. package/dist/connectors/trello/actions.js.map +1 -0
  81. package/dist/connectors/trello/api.d.ts +23 -0
  82. package/dist/connectors/trello/api.d.ts.map +1 -0
  83. package/dist/connectors/trello/api.js +102 -0
  84. package/dist/connectors/trello/api.js.map +1 -0
  85. package/dist/connectors/trello/index.d.ts +63 -31
  86. package/dist/connectors/trello/index.d.ts.map +1 -1
  87. package/dist/connectors/trello/index.js +165 -246
  88. package/dist/connectors/trello/index.js.map +1 -1
  89. package/dist/gateways/discord.d.ts +4 -0
  90. package/dist/gateways/discord.d.ts.map +1 -1
  91. package/dist/gateways/discord.js +7 -3
  92. package/dist/gateways/discord.js.map +1 -1
  93. package/dist/gateways/slack.d.ts +4 -0
  94. package/dist/gateways/slack.d.ts.map +1 -1
  95. package/dist/gateways/slack.js +7 -3
  96. package/dist/gateways/slack.js.map +1 -1
  97. package/dist/gateways/telegram-message-ledger.d.ts +5 -0
  98. package/dist/gateways/telegram-message-ledger.d.ts.map +1 -1
  99. package/dist/gateways/telegram-message-ledger.js +8 -1
  100. package/dist/gateways/telegram-message-ledger.js.map +1 -1
  101. package/dist/gateways/telegram.d.ts +4 -0
  102. package/dist/gateways/telegram.d.ts.map +1 -1
  103. package/dist/gateways/telegram.js +7 -5
  104. package/dist/gateways/telegram.js.map +1 -1
  105. package/dist/replay/replay-source-catalog.d.ts.map +1 -1
  106. package/dist/replay/replay-source-catalog.js +5 -45
  107. package/dist/replay/replay-source-catalog.js.map +1 -1
  108. package/dist/replay/trello-import.d.ts +1 -8
  109. package/dist/replay/trello-import.d.ts.map +1 -1
  110. package/dist/replay/trello-import.js +16 -103
  111. package/dist/replay/trello-import.js.map +1 -1
  112. package/dist/runtime/action-surface.d.ts +4 -1
  113. package/dist/runtime/action-surface.d.ts.map +1 -1
  114. package/dist/runtime/action-surface.js +30 -1
  115. package/dist/runtime/action-surface.js.map +1 -1
  116. package/dist/runtime/config.d.ts +5 -0
  117. package/dist/runtime/config.d.ts.map +1 -1
  118. package/dist/runtime/config.js +10 -1
  119. package/dist/runtime/config.js.map +1 -1
  120. package/dist/runtime/connectors.d.ts +0 -1
  121. package/dist/runtime/connectors.d.ts.map +1 -1
  122. package/dist/runtime/connectors.js +0 -1
  123. package/dist/runtime/connectors.js.map +1 -1
  124. package/dist/runtime/egress-proxy.d.ts +15 -0
  125. package/dist/runtime/egress-proxy.d.ts.map +1 -0
  126. package/dist/runtime/egress-proxy.js +176 -0
  127. package/dist/runtime/egress-proxy.js.map +1 -0
  128. package/dist/runtime/native-session.d.ts +7 -0
  129. package/dist/runtime/native-session.d.ts.map +1 -1
  130. package/dist/runtime/native-session.js +8 -1
  131. package/dist/runtime/native-session.js.map +1 -1
  132. package/dist/runtime/outbound-attempts.d.ts +18 -0
  133. package/dist/runtime/outbound-attempts.d.ts.map +1 -0
  134. package/dist/runtime/outbound-attempts.js +98 -0
  135. package/dist/runtime/outbound-attempts.js.map +1 -0
  136. package/dist/runtime/owner-runtime.d.ts +9 -0
  137. package/dist/runtime/owner-runtime.d.ts.map +1 -1
  138. package/dist/runtime/owner-runtime.js +8 -0
  139. package/dist/runtime/owner-runtime.js.map +1 -1
  140. package/dist/runtime/owner-system-prompt.d.ts.map +1 -1
  141. package/dist/runtime/owner-system-prompt.js +6 -1
  142. package/dist/runtime/owner-system-prompt.js.map +1 -1
  143. package/dist/runtime/record-orders.d.ts.map +1 -1
  144. package/dist/runtime/record-orders.js +33 -13
  145. package/dist/runtime/record-orders.js.map +1 -1
  146. package/dist/runtime/stimulus-delivery.d.ts +15 -0
  147. package/dist/runtime/stimulus-delivery.d.ts.map +1 -1
  148. package/dist/runtime/stimulus-delivery.js +29 -2
  149. package/dist/runtime/stimulus-delivery.js.map +1 -1
  150. package/dist/runtime/turn-orders.d.ts.map +1 -1
  151. package/dist/runtime/turn-orders.js +6 -2
  152. package/dist/runtime/turn-orders.js.map +1 -1
  153. package/package.json +2 -2
  154. package/public/viewer/js/modules/graph.js +169 -957
  155. package/public/viewer/js/modules/memory-timeline.js +215 -0
  156. package/public/viewer/js/utils/api.js +7 -26
  157. package/public/viewer/log-viewer.html +7 -3
  158. package/public/viewer/operator/operator.css +1 -1
  159. package/public/viewer/operator/operator.js +5428 -5685
  160. package/public/viewer/src/modules/graph.ts +185 -1132
  161. package/public/viewer/src/modules/memory-timeline.ts +272 -0
  162. package/public/viewer/src/types/global.d.ts +1 -1
  163. package/public/viewer/src/utils/api.ts +43 -47
  164. package/public/viewer/viewer.css +257 -7
  165. package/public/viewer/viewer.html +68 -292
package/CHANGELOG.md CHANGED
@@ -5,6 +5,112 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.63.0] - 2026-10-04
9
+
10
+ ### Added
11
+
12
+ - The viewer's memory tab is a timeline of what was saved. Pick a period (today, 7 days, 30 days
13
+ or one day, in the owner's time zone); the list goes by day, then kind (owner rules, learned
14
+ rules, decisions, facts, work updates), then work item with its updates (opened, updated,
15
+ withdrawn). Kind chips keep their counts while one kind is shown, the text search runs on the
16
+ server, and each record says which turn wrote it: owner chat, source update or report. Served by
17
+ `/api/memory/timeline`; an explicit window covers at most 31 days.
18
+ - Picking a record draws that record and its direct links only (`/api/graph/neighbors`): the
19
+ source messages it rests on, what it builds on and what it replaced. The legend names every dot
20
+ and line in plain words with counts, and the detail panel shows the text and its evidence.
21
+ - The owner agent has `memory.read:timeline` (mama-core 5.4.0), so "what did you save this week"
22
+ can be answered in chat.
23
+
24
+ ### Changed
25
+
26
+ - The turn reminder and the record order name open work by the statuses `work.list` accepts
27
+ (pending, in_progress, review or blocked). Waiting on an owner decision is judged from each
28
+ item's latest record, since no status marks it. The words "open" and "waiting" read as statuses,
29
+ and `work.list` refused them.
30
+ - A refused tool call names the allowed fields and the expected shape (mama-core 5.4.0).
31
+
32
+ ### Removed
33
+
34
+ - From the memory tab: the whole-graph load (up to 2,000 nodes), the topic and outcome filters,
35
+ graph search, the Save outcome control (the read-only viewer refuses its route), the Export
36
+ buttons (no route served them), and the confidence and similar-decision rows.
37
+
38
+ ### Fixed
39
+
40
+ - The memory list on a desktop window no longer keeps the full width set by the phone layout.
41
+
42
+ ## [0.62.0] - 2026-10-04
43
+
44
+ ### Added
45
+
46
+ - Backfill a past period as complete history. `mama-backfill/1` is the file format: items with
47
+ their revisions in event order, each citing exact source ids, plus mentions grouped by their
48
+ stated reason, links (also from existing work), lessons and wiki pages. `mama backfill <file>`
49
+ pushes it through the owner actions with the daemon stopped and judges nothing; a re-run replays
50
+ its receipts and an edited payload is refused. Existing work is bounded by its first revision
51
+ after the period, so the later state stays current and `asOf` inside the period answers from the
52
+ backfill. An existing wiki page takes section appends and keeps its evidence ids. Guide:
53
+ `docs/guides/backfill.md`.
54
+ - `work.revise` accepts `appliesUntil`. The full report picks changes by event time and names
55
+ work written since the last report about earlier events as late recordings. `mama replay` takes
56
+ `--from` and `--until`.
57
+ - `trello.read` reads the current Trello state live, from granted boards only: boards, cards (a
58
+ board or one list), one card with its checklists and latest actions, and search. A Trello failure
59
+ is the action's error; nothing is cached.
60
+ - `drive.read` reads Google Drive live (shared drives, browse, a file by id or link, name and
61
+ content search) and `drive.download` saves a file, exporting Docs, Sheets and Slides as docx,
62
+ xlsx and pptx. Nothing from Drive is stored and the Drive change poller stays off.
63
+ - `delivery.interrupted_notice` gives the notice for a cut-off owner turn in the owner's words.
64
+ Telegram posts it as a reply to the message that was cut off.
65
+ - `agent.max_turn_ms` (default one hour) caps a whole owner turn.
66
+
67
+ ### Changed
68
+
69
+ - An owner turn stops only after `agent.timeout` without progress (default ten minutes) or after
70
+ `agent.max_turn_ms` in all. Every CLI event and tool use counts as progress, and a long turn keeps
71
+ its session. It used to stop at a fixed limit however much work was still arriving.
72
+ - The Trello poller stores every board action, in the same shape as the history import, instead of
73
+ diffing open-card snapshots, so comments, attachments, due dates, copies and archive reach the
74
+ history. An edited comment becomes its action's next revision. The snapshot state file is gone.
75
+ - Imported Trello actions are stored as readable lines (card, list, who and what changed) instead
76
+ of their JSON. The whole action stays in the item metadata. The replay window shows the stored
77
+ line.
78
+ - `source.recent` and `source.search` return the stored channel value as `channel` and the
79
+ display name as `channelName`, so a listed channel works as the `source.search` filter.
80
+ - The record procedure takes a work item's project name from its project page, written exactly; a
81
+ channel says where a message came from, not which project it is about.
82
+ - The Tasks page is read-only, as the viewer is: it shows the status as a badge and says that
83
+ changes go through the messenger.
84
+ - Memory search keeps short Korean, Japanese and Chinese words, counts and acronyms, and ranks the
85
+ strongest text match first (mama-core 5.3.0). It used to drop every word of two characters or
86
+ fewer and list its weakest text matches first.
87
+
88
+ ### Fixed
89
+
90
+ - Slack replies posted only in a thread are collected. The poll read the channel history only, so
91
+ such a reply was never seen. It now reads replies for threads with new activity in the last 30
92
+ days.
93
+ - An input parked uncertain after a cut-off turn is closed once what it still owes has a place:
94
+ an answer delivered for an owner message, a record check for a delta or record order, the next
95
+ report tick for a report. It used to stay claimed forever.
96
+ - Startup no longer fails when `delivery.interrupted_notice` is set. Route validation treated
97
+ every key under `delivery` as a messenger route.
98
+
99
+ ### Security
100
+
101
+ - An agent's outbound attempts reach the owner as security alerts. A shell call that runs a
102
+ network client, a package install, a git remote operation, an upload tool or an HTTP or socket
103
+ script is recorded in `security-events.jsonl` and sent through `delivery.security_alerts`. A send
104
+ always alerts; plain attempts within a minute are grouped. Nothing is blocked, and web fetch and
105
+ web search stay open.
106
+ - The Claude owner's shell sandbox network goes through a proxy MAMA runs on loopback. It refuses
107
+ every connection, as the empty sandbox allowlist did, and reports each attempt with its
108
+ destination. A direct socket that ignores the proxy is still refused by the sandbox, and only the
109
+ command layer reports it: a script that opens a socket inside its own code, behind a command that
110
+ is not recognised as outbound, reaches the owner with no alert and no destination.
111
+ `docs/rebuild/egress-alerts.md` lists each path out and what sees it.
112
+ - `mama replay` and `mama backfill` refuse to run while the daemon runs.
113
+
8
114
  ## [0.61.2] - 2026-10-01
9
115
 
10
116
  No changes. The release tag follows the mama-os version, and v0.61.1 exists; this release ships
package/README.md CHANGED
@@ -4,7 +4,7 @@ One owner agent on Claude or Codex watches connected work, keeps task revisions
4
4
  answers on Telegram, publishes reports and a board, and recalls corrections.
5
5
  [mama-core](../mama-core/README.md) supplies the shared engine.
6
6
 
7
- Current manifest: **0.61.2**. This README describes the unreleased `rebuild/owner-flow` source.
7
+ Current manifest: **0.63.0**. This README describes the unreleased `rebuild/owner-flow` source.
8
8
  Use [owner setup](../../docs/start/owner-setup.md) with Node.js 22.13+ and pnpm.
9
9
 
10
10
  ## Start and operate
@@ -0,0 +1,12 @@
1
+ import type { ActionRegistration } from '@jungjaehoon/mama-core';
2
+ import { type GwsCallOptions } from '../connectors/framework/gws-utils.js';
3
+ export type GwsCall = (args: string[], options?: GwsCallOptions) => Promise<unknown>;
4
+ export interface DriveActionPorts {
5
+ ownerPrincipalId: string;
6
+ downloadsDir?: string;
7
+ gws?: GwsCall;
8
+ }
9
+ /** A file or folder id from an id or a Drive/Docs link, as cards and messages carry them. */
10
+ export declare function driveId(value: unknown, field: string): string;
11
+ export declare function driveActionRegistrations(ports: DriveActionPorts): ActionRegistration[];
12
+ //# sourceMappingURL=drive-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-actions.d.ts","sourceRoot":"","sources":["../../src/api/drive-actions.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAiB,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGzF,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAErF,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAiDD,6FAA6F;AAC7F,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAa7D;AAsBD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,kBAAkB,EAAE,CAwQtF"}
@@ -0,0 +1,322 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.driveId = driveId;
4
+ exports.driveActionRegistrations = driveActionRegistrations;
5
+ /**
6
+ * drive.read and drive.download — Google Drive read live, as Kagemusha reads it, through the gws
7
+ * CLI the calendar connector already uses (its keyring holds the credential). Nothing from Drive
8
+ * is stored. Drive has no running connector (its change poller stays off), so the gws call is a
9
+ * port instead of the connector registry trello.read uses.
10
+ */
11
+ const node_fs_1 = require("node:fs");
12
+ const node_path_1 = require("node:path");
13
+ const gws_utils_js_1 = require("../connectors/framework/gws-utils.js");
14
+ const attachment_actions_js_1 = require("./attachment-actions.js");
15
+ const FOLDER = 'application/vnd.google-apps.folder';
16
+ const FILE_FIELDS = 'id,name,mimeType,size,modifiedTime,lastModifyingUser(displayName),parents,driveId,webViewLink';
17
+ const LIST_BUFFER = 16 * 1024 * 1024;
18
+ const BROWSE_MAX = 100;
19
+ // alt=media refuses Google-native files (fileNotDownloadable); these three export to the formats
20
+ // the file readers in help("files") open.
21
+ const EXPORTS = {
22
+ 'application/vnd.google-apps.document': {
23
+ mimeType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
24
+ extension: '.docx',
25
+ },
26
+ 'application/vnd.google-apps.spreadsheet': {
27
+ mimeType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
28
+ extension: '.xlsx',
29
+ },
30
+ 'application/vnd.google-apps.presentation': {
31
+ mimeType: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
32
+ extension: '.pptx',
33
+ },
34
+ };
35
+ function invalid(message) {
36
+ const error = new Error(message);
37
+ error.name = 'invalid_input';
38
+ return error;
39
+ }
40
+ function ownerOnly(action, access, ownerPrincipalId) {
41
+ if (access.principalId === ownerPrincipalId)
42
+ return;
43
+ const error = new Error(`${action} is the owner's; no Drive grant exists for other principals`);
44
+ error.name = 'drive_out_of_scope';
45
+ throw error;
46
+ }
47
+ /** A file or folder id from an id or a Drive/Docs link, as cards and messages carry them. */
48
+ function driveId(value, field) {
49
+ if (typeof value !== 'string' || value.trim() === '')
50
+ throw invalid(`${field} is required`);
51
+ const text = value.trim();
52
+ if (!text.includes('://')) {
53
+ if (/^[\w-]+$/.test(text))
54
+ return text;
55
+ throw invalid(`${field} must be a Drive id or link`);
56
+ }
57
+ if (/\/d\/e\//.test(text))
58
+ throw invalid(`${field} is a published link, which carries no file id`);
59
+ const found = /\/(?:d|folders)\/([\w-]+)/.exec(text)?.[1] ?? /[?&]id=([\w-]+)/.exec(text)?.[1] ?? null;
60
+ if (found === null)
61
+ throw invalid(`${field} names no Drive file: ${text}`);
62
+ return found;
63
+ }
64
+ /** A free-text value inside a Drive query string literal. */
65
+ function quoted(value) {
66
+ return `'${value.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`;
67
+ }
68
+ function fileView(file) {
69
+ return {
70
+ id: file.id,
71
+ name: file.name,
72
+ type: file.mimeType,
73
+ folder: file.mimeType === FOLDER,
74
+ size: file.size === undefined ? null : Number(file.size),
75
+ modified: file.modifiedTime ?? null,
76
+ modifiedBy: file.lastModifyingUser?.displayName ?? null,
77
+ drive: file.driveId ?? null,
78
+ parents: file.parents ?? [],
79
+ link: file.webViewLink ?? null,
80
+ };
81
+ }
82
+ function driveActionRegistrations(ports) {
83
+ const gws = ports.gws ?? gws_utils_js_1.execGwsAsync;
84
+ /**
85
+ * Pages until `max` entries or the end, because Drive may return short or empty pages before
86
+ * the end. `incomplete` is Drive's own incompleteSearch: some drives were not searched.
87
+ */
88
+ const list = async (params, max) => {
89
+ const files = [];
90
+ let incomplete = false;
91
+ let pageToken;
92
+ do {
93
+ const page = (await gws([
94
+ 'drive',
95
+ 'files',
96
+ 'list',
97
+ '--params',
98
+ JSON.stringify({
99
+ ...params,
100
+ pageSize: max - files.length,
101
+ ...(pageToken === undefined ? {} : { pageToken }),
102
+ corpora: 'allDrives',
103
+ supportsAllDrives: true,
104
+ includeItemsFromAllDrives: true,
105
+ fields: `nextPageToken,incompleteSearch,files(${FILE_FIELDS})`,
106
+ }),
107
+ ], { maxBuffer: LIST_BUFFER }));
108
+ files.push(...page.files);
109
+ incomplete ||= page.incompleteSearch === true;
110
+ pageToken = page.nextPageToken;
111
+ } while (pageToken !== undefined && files.length < max);
112
+ return { files, more: pageToken !== undefined, incomplete };
113
+ };
114
+ const metadata = async (id) => (await gws([
115
+ 'drive',
116
+ 'files',
117
+ 'get',
118
+ '--params',
119
+ JSON.stringify({ fileId: id, supportsAllDrives: true, fields: FILE_FIELDS }),
120
+ ]));
121
+ return [
122
+ {
123
+ contract: {
124
+ name: 'drive.read',
125
+ readsConnector: { fixed: 'drive' },
126
+ summary: 'Read Google Drive live. drives lists the shared drives; browse lists a folder (folder: a folder id, a shared drive id, a folder link or "root" for My Drive; path walks subfolders by name; name keeps entries with a word in their name starting with it), at most 100 entries; file reads one file by id or Drive/Docs link (name, type, size, modified time and editor, link); search finds files by name or content across all drives (text; limit up to 50), newest first, with more when further results exist. incomplete means Drive did not search every drive. Nothing is stored; fetch a file with drive.download.',
127
+ inputSchema: {
128
+ type: 'object',
129
+ additionalProperties: false,
130
+ required: ['view'],
131
+ properties: {
132
+ view: { type: 'string', enum: ['drives', 'browse', 'file', 'search'] },
133
+ folder: {
134
+ type: 'string',
135
+ minLength: 1,
136
+ description: 'Folder id, shared drive id, folder link or "root".',
137
+ },
138
+ path: {
139
+ type: 'string',
140
+ minLength: 1,
141
+ description: 'Subfolder names under folder, e.g. "2026/October".',
142
+ },
143
+ name: {
144
+ type: 'string',
145
+ minLength: 1,
146
+ description: 'The start of a word in the entry names (Drive matches word beginnings), e.g. "draft".',
147
+ },
148
+ file: {
149
+ type: 'string',
150
+ minLength: 1,
151
+ description: 'File id or a Drive/Docs link.',
152
+ },
153
+ text: {
154
+ type: 'string',
155
+ minLength: 1,
156
+ description: 'The start of a word in a file name, or words in its content, e.g. "feedback".',
157
+ },
158
+ limit: {
159
+ type: 'integer',
160
+ minimum: 1,
161
+ maximum: 50,
162
+ description: 'Search results; defaults to 20.',
163
+ },
164
+ },
165
+ },
166
+ examples: [
167
+ { title: 'Shared drives', input: { view: 'drives' } },
168
+ { title: 'A file behind a link', input: { view: 'file', file: 'drive-link-or-id' } },
169
+ { title: 'Find by name', input: { view: 'search', text: 'feedback' } },
170
+ ],
171
+ },
172
+ exec: async (input, context) => {
173
+ ownerOnly('drive.read', context.access, ports.ownerPrincipalId);
174
+ const values = input;
175
+ switch (values.view) {
176
+ case 'drives': {
177
+ const drives = [];
178
+ let pageToken;
179
+ do {
180
+ const page = (await gws([
181
+ 'drive',
182
+ 'drives',
183
+ 'list',
184
+ '--params',
185
+ JSON.stringify({
186
+ pageSize: 100,
187
+ ...(pageToken === undefined ? {} : { pageToken }),
188
+ fields: 'nextPageToken,drives(id,name)',
189
+ }),
190
+ ]));
191
+ drives.push(...page.drives);
192
+ pageToken = page.nextPageToken;
193
+ } while (pageToken !== undefined);
194
+ return { drives };
195
+ }
196
+ case 'browse': {
197
+ let folder = driveId(values.folder, 'folder');
198
+ const path = typeof values.path === 'string' ? values.path : undefined;
199
+ for (const segment of (path ?? '').split('/').filter(Boolean)) {
200
+ const { files: found } = await list({
201
+ q: `${quoted(folder)} in parents and name = ${quoted(segment)} and mimeType = '${FOLDER}' and trashed = false`,
202
+ }, 2);
203
+ if (found.length === 0)
204
+ throw invalid(`No folder named "${segment}" in ${folder}`);
205
+ if (found.length > 1) {
206
+ throw invalid(`Two folders named "${segment}" in ${folder} (${found.map((entry) => entry.id).join(', ')}); browse ${folder} and choose one`);
207
+ }
208
+ folder = found[0].id;
209
+ }
210
+ const name = typeof values.name === 'string' ? values.name : undefined;
211
+ const listed = await list({
212
+ q: `${quoted(folder)} in parents and trashed = false${name === undefined ? '' : ` and name contains ${quoted(name)}`}`,
213
+ orderBy: 'folder,name',
214
+ }, BROWSE_MAX + 1);
215
+ if (listed.files.length > BROWSE_MAX) {
216
+ throw invalid(`Folder ${folder} has more than ${BROWSE_MAX} entries; narrow it with name or path`);
217
+ }
218
+ return {
219
+ folder,
220
+ entries: listed.files.map(fileView),
221
+ incomplete: listed.incomplete,
222
+ };
223
+ }
224
+ case 'file':
225
+ return { file: fileView(await metadata(driveId(values.file, 'file'))) };
226
+ case 'search': {
227
+ if (typeof values.text !== 'string')
228
+ throw invalid('drive.read search needs text');
229
+ const text = quoted(values.text);
230
+ const found = await list({
231
+ q: `(name contains ${text} or fullText contains ${text}) and trashed = false`,
232
+ orderBy: 'modifiedTime desc',
233
+ }, values.limit === undefined ? 20 : Number(values.limit));
234
+ return {
235
+ files: found.files.map(fileView),
236
+ more: found.more,
237
+ incomplete: found.incomplete,
238
+ };
239
+ }
240
+ default:
241
+ throw invalid('drive.read view must be drives, browse, file or search');
242
+ }
243
+ },
244
+ },
245
+ {
246
+ contract: {
247
+ name: 'drive.download',
248
+ readsConnector: { fixed: 'drive' },
249
+ summary: 'Fetch one Google Drive file (file: id or Drive/Docs link) into the daemon downloads directory (read-only for you) and return its saved path and size. Google Docs, Sheets and Slides are exported as docx, xlsx and pptx; folders and other Google-native types are refused.',
250
+ inputSchema: {
251
+ type: 'object',
252
+ additionalProperties: false,
253
+ required: ['file'],
254
+ properties: {
255
+ file: {
256
+ type: 'string',
257
+ minLength: 1,
258
+ description: 'File id or a Drive/Docs link.',
259
+ },
260
+ },
261
+ },
262
+ examples: [{ title: 'Fetch a linked file', input: { file: 'drive-link-or-id' } }],
263
+ },
264
+ exec: async (input, context) => {
265
+ ownerOnly('drive.download', context.access, ports.ownerPrincipalId);
266
+ if (!ports.downloadsDir?.trim())
267
+ throw new Error('Downloads directory is not configured');
268
+ const file = await metadata(driveId(input.file, 'file'));
269
+ const exported = EXPORTS[file.mimeType];
270
+ if (exported === undefined && file.mimeType.startsWith('application/vnd.google-apps.')) {
271
+ throw invalid(`${file.name} is a ${file.mimeType}, which drive.download cannot fetch`);
272
+ }
273
+ const targetDir = (0, node_path_1.join)(ports.downloadsDir, 'drive');
274
+ (0, node_fs_1.mkdirSync)(targetDir, { recursive: true, mode: 0o700 });
275
+ const name = exported === undefined || (0, node_path_1.extname)(file.name).toLowerCase() === exported.extension
276
+ ? file.name
277
+ : `${file.name}${exported.extension}`;
278
+ const targetPath = (0, node_path_1.join)(targetDir, `${(0, attachment_actions_js_1.safeFileName)(file.id)}_${(0, attachment_actions_js_1.safeFileName)(name)}`);
279
+ try {
280
+ await gws(exported === undefined
281
+ ? [
282
+ 'drive',
283
+ 'files',
284
+ 'get',
285
+ '--params',
286
+ JSON.stringify({ fileId: file.id, alt: 'media', supportsAllDrives: true }),
287
+ '--output',
288
+ targetPath,
289
+ ]
290
+ : [
291
+ 'drive',
292
+ 'files',
293
+ 'export',
294
+ '--params',
295
+ JSON.stringify({ fileId: file.id, mimeType: exported.mimeType }),
296
+ '--output',
297
+ targetPath,
298
+ ], { timeoutMs: 120_000 });
299
+ const size = (0, node_fs_1.statSync)(targetPath).size;
300
+ // An export has no size of its own to compare; a stored file must arrive whole.
301
+ if (exported === undefined && file.size !== undefined && size !== Number(file.size)) {
302
+ throw new Error(`Downloaded ${file.id} is ${size} bytes; Drive lists ${file.size}`);
303
+ }
304
+ return {
305
+ file: file.id,
306
+ name: file.name,
307
+ type: file.mimeType,
308
+ exportedAs: exported?.mimeType ?? null,
309
+ path: targetPath,
310
+ size,
311
+ };
312
+ }
313
+ catch (error) {
314
+ // A failed, cut-off or short download must not stay where a whole file would be.
315
+ (0, node_fs_1.rmSync)(targetPath, { force: true });
316
+ throw error;
317
+ }
318
+ },
319
+ },
320
+ ];
321
+ }
322
+ //# sourceMappingURL=drive-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drive-actions.js","sourceRoot":"","sources":["../../src/api/drive-actions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"report-source-actions.d.ts","sourceRoot":"","sources":["../../src/api/report-source-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAiaF,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,eAAe,GAAG,kBAAkB,EAAE,CAE5F"}
1
+ {"version":3,"file":"report-source-actions.d.ts","sourceRoot":"","sources":["../../src/api/report-source-actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAK9D,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AA4aF,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,eAAe,GAAG,kBAAkB,EAAE,CAE5F"}
@@ -76,7 +76,7 @@ function recentAction(ports) {
76
76
  return {
77
77
  contract: {
78
78
  name: 'source.recent',
79
- summary: 'See which channels changed since a time, then read the ones that matter. Without channels it lists every granted channel that changed: its key, change count and latest line; with channels (keys from that list) it returns their latest perChannel lines with observation refs to open with source.read. since takes epoch milliseconds, an ISO time or a duration such as "24h ago", and defaults to 24 hours. failedConnectors names sources whose last poll failed, so a failure is not read as no change. It reads the stored index, not the live provider; more channels than cap or more than 20,000 changes fails as invalid input, so narrow since.',
79
+ summary: 'See which channels changed since a time, then read the ones that matter. Without channels it lists every granted channel that changed: channel (the stored value source.search filters on), channelName when the source names it, key, change count and latest line; with channels (keys from that list) it returns their latest perChannel lines with observation refs to open with source.read. since takes epoch milliseconds, an ISO time or a duration such as "24h ago", and defaults to 24 hours. failedConnectors names sources whose last poll failed, so a failure is not read as no change. It reads the stored index, not the live provider; more channels than cap or more than 20,000 changes fails as invalid input, so narrow since.',
80
80
  inputSchema: {
81
81
  type: 'object',
82
82
  additionalProperties: false,
@@ -93,7 +93,7 @@ function recentAction(ports) {
93
93
  minItems: 1,
94
94
  maxItems: 10,
95
95
  items: { type: 'string', minLength: 1 },
96
- description: 'Channel keys from the list to read lines from, e.g. ["chat:room-a"].',
96
+ description: 'Channel keys (key, not channel) from the list to read lines from, e.g. ["chat:room-a"].',
97
97
  },
98
98
  perChannel: {
99
99
  type: 'integer',
@@ -147,12 +147,17 @@ function recentAction(ports) {
147
147
  for (const row of visible) {
148
148
  const metadata = decodeMetadata(row.metadata_json);
149
149
  const source = String(row.source_connector);
150
+ // channel is the stored value that grants and source.search filter on; the display name
151
+ // rides beside it, so a listed channel can be passed to source.search as it is.
150
152
  const channelKey = String(row.channel ?? '');
151
- const label = typeof metadata.channelName === 'string' ? metadata.channelName : channelKey || source;
153
+ const channelName = typeof metadata.channelName === 'string' && metadata.channelName !== channelKey
154
+ ? metadata.channelName
155
+ : undefined;
152
156
  const key = `${source}:${channelKey}`;
153
157
  const group = groups.get(key) ?? {
154
158
  source,
155
- channel: label,
159
+ channel: channelKey,
160
+ ...(channelName === undefined ? {} : { channelName }),
156
161
  key,
157
162
  count: 0,
158
163
  latest: null,
@@ -225,24 +230,27 @@ function recentAction(ports) {
225
230
  // The cap bounds the channel list; a read of named channels returns only those.
226
231
  if (requested === null && groups.size > Number(cap))
227
232
  throw invalidInput(`source.recent found changes in ${groups.size} channels, more than cap ${cap}; narrow since or cap`);
228
- const sorted = [...groups.values()].sort((a, b) => a.source.localeCompare(b.source) || a.channel.localeCompare(b.channel));
233
+ const sorted = [...groups.values()].sort((a, b) => a.source.localeCompare(b.source) ||
234
+ (a.channelName ?? a.channel).localeCompare(b.channelName ?? b.channel));
229
235
  return {
230
236
  since: new Date(since).toISOString(),
231
237
  cap: Number(cap),
232
238
  scanned: visible.length,
233
239
  channels: requested === null
234
- ? sorted.map(({ source, channel, key, count, latest }) => ({
240
+ ? sorted.map(({ source, channel, channelName, key, count, latest }) => ({
235
241
  source,
236
242
  channel,
243
+ ...(channelName === undefined ? {} : { channelName }),
237
244
  key,
238
245
  count,
239
246
  latest,
240
247
  }))
241
248
  : sorted
242
249
  .filter((group) => requested.has(group.key))
243
- .map(({ source, channel, key, count, lines }) => ({
250
+ .map(({ source, channel, channelName, key, count, lines }) => ({
244
251
  source,
245
252
  channel,
253
+ ...(channelName === undefined ? {} : { channelName }),
246
254
  key,
247
255
  count,
248
256
  lines,
@@ -1 +1 @@
1
- {"version":3,"file":"report-source-actions.js","sourceRoot":"","sources":["../../src/api/report-source-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report-source-actions.js","sourceRoot":"","sources":["../../src/api/report-source-actions.ts"],"names":[],"mappings":"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"}