@jungjaehoon/mama-os 0.24.2 → 0.26.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 (160) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +46 -23
  3. package/dist/agent/agent-loop.d.ts.map +1 -1
  4. package/dist/agent/agent-loop.js +10 -0
  5. package/dist/agent/agent-loop.js.map +1 -1
  6. package/dist/agent/code-act/constants.js +2 -2
  7. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  8. package/dist/agent/code-act/host-bridge.js +91 -4
  9. package/dist/agent/code-act/host-bridge.js.map +1 -1
  10. package/dist/agent/code-act/tool-policy.d.ts +3 -1
  11. package/dist/agent/code-act/tool-policy.d.ts.map +1 -1
  12. package/dist/agent/code-act/tool-policy.js +3 -1
  13. package/dist/agent/code-act/tool-policy.js.map +1 -1
  14. package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
  15. package/dist/agent/code-act/type-definition-generator.js +2 -4
  16. package/dist/agent/code-act/type-definition-generator.js.map +1 -1
  17. package/dist/agent/context-compile-service.d.ts +2 -0
  18. package/dist/agent/context-compile-service.d.ts.map +1 -1
  19. package/dist/agent/context-compile-service.js +26 -7
  20. package/dist/agent/context-compile-service.js.map +1 -1
  21. package/dist/agent/drive-tools.d.ts +53 -0
  22. package/dist/agent/drive-tools.d.ts.map +1 -0
  23. package/dist/agent/drive-tools.js +261 -0
  24. package/dist/agent/drive-tools.js.map +1 -0
  25. package/dist/agent/gateway-tool-executor.d.ts +3 -0
  26. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  27. package/dist/agent/gateway-tool-executor.js +362 -19
  28. package/dist/agent/gateway-tool-executor.js.map +1 -1
  29. package/dist/agent/gateway-tools.md +9 -3
  30. package/dist/agent/tool-registry.d.ts.map +1 -1
  31. package/dist/agent/tool-registry.js +38 -3
  32. package/dist/agent/tool-registry.js.map +1 -1
  33. package/dist/agent/types.d.ts +45 -6
  34. package/dist/agent/types.d.ts.map +1 -1
  35. package/dist/agent/types.js.map +1 -1
  36. package/dist/api/operator-tasks-handler.d.ts.map +1 -1
  37. package/dist/api/operator-tasks-handler.js +23 -1
  38. package/dist/api/operator-tasks-handler.js.map +1 -1
  39. package/dist/cli/commands/start.d.ts +7 -3
  40. package/dist/cli/commands/start.d.ts.map +1 -1
  41. package/dist/cli/commands/start.js +113 -65
  42. package/dist/cli/commands/start.js.map +1 -1
  43. package/dist/cli/config/types.d.ts.map +1 -1
  44. package/dist/cli/config/types.js +7 -3
  45. package/dist/cli/config/types.js.map +1 -1
  46. package/dist/cli/runtime/agent-loop-init.d.ts +2 -0
  47. package/dist/cli/runtime/agent-loop-init.d.ts.map +1 -1
  48. package/dist/cli/runtime/agent-loop-init.js +37 -12
  49. package/dist/cli/runtime/agent-loop-init.js.map +1 -1
  50. package/dist/cli/runtime/api-routes-init.js +3 -3
  51. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  52. package/dist/cli/runtime/envelope-bootstrap.d.ts.map +1 -1
  53. package/dist/cli/runtime/envelope-bootstrap.js +8 -1
  54. package/dist/cli/runtime/envelope-bootstrap.js.map +1 -1
  55. package/dist/cli/runtime/temporal-init.d.ts +28 -0
  56. package/dist/cli/runtime/temporal-init.d.ts.map +1 -0
  57. package/dist/cli/runtime/temporal-init.js +74 -0
  58. package/dist/cli/runtime/temporal-init.js.map +1 -0
  59. package/dist/connectors/drive/index.d.ts +1 -1
  60. package/dist/connectors/drive/index.d.ts.map +1 -1
  61. package/dist/connectors/drive/index.js +100 -56
  62. package/dist/connectors/drive/index.js.map +1 -1
  63. package/dist/connectors/framework/gws-utils.d.ts +3 -0
  64. package/dist/connectors/framework/gws-utils.d.ts.map +1 -1
  65. package/dist/connectors/framework/gws-utils.js +17 -0
  66. package/dist/connectors/framework/gws-utils.js.map +1 -1
  67. package/dist/db/migrations/operator-task-temporal.d.ts +8 -0
  68. package/dist/db/migrations/operator-task-temporal.d.ts.map +1 -0
  69. package/dist/db/migrations/operator-task-temporal.js +209 -0
  70. package/dist/db/migrations/operator-task-temporal.js.map +1 -0
  71. package/dist/envelope/enforcer.d.ts.map +1 -1
  72. package/dist/envelope/enforcer.js +24 -9
  73. package/dist/envelope/enforcer.js.map +1 -1
  74. package/dist/envelope/reactive-config.d.ts +1 -1
  75. package/dist/envelope/reactive-config.d.ts.map +1 -1
  76. package/dist/envelope/reactive-config.js +10 -2
  77. package/dist/envelope/reactive-config.js.map +1 -1
  78. package/dist/envelope/types.d.ts +1 -1
  79. package/dist/envelope/types.d.ts.map +1 -1
  80. package/dist/envelope/types.js.map +1 -1
  81. package/dist/gateways/message-router.d.ts +1 -0
  82. package/dist/gateways/message-router.d.ts.map +1 -1
  83. package/dist/gateways/message-router.js +7 -1
  84. package/dist/gateways/message-router.js.map +1 -1
  85. package/dist/gateways/telegram-media.d.ts +28 -0
  86. package/dist/gateways/telegram-media.d.ts.map +1 -0
  87. package/dist/gateways/telegram-media.js +165 -0
  88. package/dist/gateways/telegram-media.js.map +1 -0
  89. package/dist/gateways/telegram-response-presenter.d.ts +31 -0
  90. package/dist/gateways/telegram-response-presenter.d.ts.map +1 -0
  91. package/dist/gateways/telegram-response-presenter.js +153 -0
  92. package/dist/gateways/telegram-response-presenter.js.map +1 -0
  93. package/dist/gateways/telegram.d.ts +10 -3
  94. package/dist/gateways/telegram.d.ts.map +1 -1
  95. package/dist/gateways/telegram.js +174 -90
  96. package/dist/gateways/telegram.js.map +1 -1
  97. package/dist/gateways/types.d.ts +4 -2
  98. package/dist/gateways/types.d.ts.map +1 -1
  99. package/dist/multi-agent/dashboard-agent-persona.d.ts.map +1 -1
  100. package/dist/multi-agent/dashboard-agent-persona.js +9 -4
  101. package/dist/multi-agent/dashboard-agent-persona.js.map +1 -1
  102. package/dist/operator/action-verifier.d.ts +23 -0
  103. package/dist/operator/action-verifier.d.ts.map +1 -1
  104. package/dist/operator/action-verifier.js +76 -0
  105. package/dist/operator/action-verifier.js.map +1 -1
  106. package/dist/operator/board-reconcile.d.ts.map +1 -1
  107. package/dist/operator/board-reconcile.js +3 -0
  108. package/dist/operator/board-reconcile.js.map +1 -1
  109. package/dist/operator/board-slot-instructions.d.ts +3 -3
  110. package/dist/operator/board-slot-instructions.d.ts.map +1 -1
  111. package/dist/operator/board-slot-instructions.js +17 -8
  112. package/dist/operator/board-slot-instructions.js.map +1 -1
  113. package/dist/operator/briefs.d.ts.map +1 -1
  114. package/dist/operator/briefs.js +3 -0
  115. package/dist/operator/briefs.js.map +1 -1
  116. package/dist/operator/task-ledger.d.ts +134 -8
  117. package/dist/operator/task-ledger.d.ts.map +1 -1
  118. package/dist/operator/task-ledger.js +1166 -65
  119. package/dist/operator/task-ledger.js.map +1 -1
  120. package/dist/operator/task-temporal.d.ts +21 -0
  121. package/dist/operator/task-temporal.d.ts.map +1 -0
  122. package/dist/operator/task-temporal.js +111 -0
  123. package/dist/operator/task-temporal.js.map +1 -0
  124. package/dist/operator/temporal-effect.d.ts +62 -0
  125. package/dist/operator/temporal-effect.d.ts.map +1 -0
  126. package/dist/operator/temporal-effect.js +71 -0
  127. package/dist/operator/temporal-effect.js.map +1 -0
  128. package/dist/operator/temporal-reconcile.d.ts +48 -0
  129. package/dist/operator/temporal-reconcile.d.ts.map +1 -0
  130. package/dist/operator/temporal-reconcile.js +215 -0
  131. package/dist/operator/temporal-reconcile.js.map +1 -0
  132. package/dist/operator/temporal-runtime.d.ts +54 -0
  133. package/dist/operator/temporal-runtime.d.ts.map +1 -0
  134. package/dist/operator/temporal-runtime.js +110 -0
  135. package/dist/operator/temporal-runtime.js.map +1 -0
  136. package/dist/operator/temporal-worker.d.ts +19 -0
  137. package/dist/operator/temporal-worker.d.ts.map +1 -0
  138. package/dist/operator/temporal-worker.js +105 -0
  139. package/dist/operator/temporal-worker.js.map +1 -0
  140. package/dist/operator/worker-run.d.ts +6 -2
  141. package/dist/operator/worker-run.d.ts.map +1 -1
  142. package/dist/operator/worker-run.js +14 -0
  143. package/dist/operator/worker-run.js.map +1 -1
  144. package/dist/operator/workorder-consumer.d.ts +27 -10
  145. package/dist/operator/workorder-consumer.d.ts.map +1 -1
  146. package/dist/operator/workorder-consumer.js +195 -14
  147. package/dist/operator/workorder-consumer.js.map +1 -1
  148. package/dist/operator/workorder-hooks.d.ts +3 -0
  149. package/dist/operator/workorder-hooks.d.ts.map +1 -1
  150. package/dist/operator/workorder-hooks.js +23 -0
  151. package/dist/operator/workorder-hooks.js.map +1 -1
  152. package/dist/operator/workorder-publishers.d.ts +10 -1
  153. package/dist/operator/workorder-publishers.d.ts.map +1 -1
  154. package/dist/operator/workorder-publishers.js +40 -3
  155. package/dist/operator/workorder-publishers.js.map +1 -1
  156. package/package.json +1 -1
  157. package/public/ui/assets/{index-OSgiwL24.js → index-BDXDGEV6.js} +15 -15
  158. package/public/ui/assets/index-po2tN0xq.css +1 -0
  159. package/public/ui/index.html +2 -2
  160. package/public/ui/assets/index-CKOJQYXA.css +0 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /**
3
3
  * DriveConnector — polls Google Drive changes via the gws CLI tool.
4
- * Uses child_process.execSync to call gws CLI commands.
4
+ * Uses short synchronous gws checks during setup and asynchronous calls while polling.
5
5
  * Emits file_change NormalizedItems for files modified in configured folders.
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -11,6 +11,7 @@ const fs_1 = require("fs");
11
11
  const path_1 = require("path");
12
12
  const os_1 = require("os");
13
13
  const gws_utils_js_1 = require("../framework/gws-utils.js");
14
+ const MAX_CHANGE_PAGES_PER_POLL = 2;
14
15
  class DriveConnector {
15
16
  name = 'drive';
16
17
  type = 'api';
@@ -41,7 +42,9 @@ class DriveConnector {
41
42
  this.pageTokens.set(k, v);
42
43
  }
43
44
  }
44
- catch { /* ignore corrupt state */ }
45
+ catch {
46
+ /* ignore corrupt state */
47
+ }
45
48
  }
46
49
  }
47
50
  saveState() {
@@ -116,7 +119,7 @@ class DriveConnector {
116
119
  * Poll changes from a single drive (personal or shared).
117
120
  * Returns items and updates the page token.
118
121
  */
119
- pollDrive(tokenKey, driveId) {
122
+ async pollDrive(tokenKey, driveId) {
120
123
  // Get or initialize page token
121
124
  let pageToken = this.pageTokens.get(tokenKey);
122
125
  if (!pageToken) {
@@ -125,67 +128,103 @@ class DriveConnector {
125
128
  tokenParams.driveId = driveId;
126
129
  tokenParams.supportsAllDrives = true;
127
130
  }
128
- const tokenResult = (0, gws_utils_js_1.execGws)(`drive changes getStartPageToken --params '${JSON.stringify(tokenParams)}'`);
131
+ const tokenResult = (await (0, gws_utils_js_1.execGwsAsync)([
132
+ 'drive',
133
+ 'changes',
134
+ 'getStartPageToken',
135
+ '--params',
136
+ JSON.stringify(tokenParams),
137
+ ]));
129
138
  pageToken = tokenResult.startPageToken;
130
139
  this.pageTokens.set(tokenKey, pageToken);
131
140
  }
132
- const params = {
133
- pageToken,
134
- pageSize: 100,
135
- fields: 'changes(fileId,time,removed,file(name,mimeType,modifiedTime,lastModifyingUser,parents,driveId)),newStartPageToken',
136
- includeRemoved: false,
137
- includeItemsFromAllDrives: true,
138
- supportsAllDrives: true,
139
- };
140
- if (driveId) {
141
- params.driveId = driveId;
142
- }
143
- const changeList = (0, gws_utils_js_1.execGws)(`drive changes list --params '${JSON.stringify(params)}'`);
144
141
  const items = [];
145
- for (const change of changeList.changes) {
146
- if (!change.file)
147
- continue;
148
- const file = change.file;
149
- const parents = file.parents ?? [];
150
- // Match by parent folder or by shared drive ID
151
- let channelName = null;
152
- const folderMatch = this.findChannelByParent(parents);
153
- if (folderMatch) {
154
- channelName = folderMatch[1];
142
+ const visitedPageTokens = new Set();
143
+ let requestPageToken = pageToken;
144
+ let terminalStartPageToken;
145
+ let reachedTerminalPage = false;
146
+ for (let page = 0; page < MAX_CHANGE_PAGES_PER_POLL; page += 1) {
147
+ if (visitedPageTokens.has(requestPageToken)) {
148
+ throw new Error(`Drive changes pagination repeated a page token for ${tokenKey}`);
149
+ }
150
+ visitedPageTokens.add(requestPageToken);
151
+ const params = {
152
+ pageToken: requestPageToken,
153
+ pageSize: 100,
154
+ fields: 'changes(fileId,time,removed,file(name,mimeType,modifiedTime,lastModifyingUser,parents,driveId)),nextPageToken,newStartPageToken',
155
+ includeRemoved: false,
156
+ includeItemsFromAllDrives: true,
157
+ supportsAllDrives: true,
158
+ };
159
+ if (driveId) {
160
+ params.driveId = driveId;
155
161
  }
156
- else if (driveId) {
157
- // For shared drives: use the channel key as channel name
158
- for (const [key, cfg] of Object.entries(this.config.channels)) {
159
- if (cfg.driveId === driveId) {
160
- channelName = cfg.name ?? key;
161
- break;
162
+ const changeList = (await (0, gws_utils_js_1.execGwsAsync)([
163
+ 'drive',
164
+ 'changes',
165
+ 'list',
166
+ '--params',
167
+ JSON.stringify(params),
168
+ ]));
169
+ for (const change of changeList.changes) {
170
+ if (!change.file)
171
+ continue;
172
+ const file = change.file;
173
+ const parents = file.parents ?? [];
174
+ // Match by parent folder or by shared drive ID
175
+ let channelName = null;
176
+ const folderMatch = this.findChannelByParent(parents);
177
+ if (folderMatch) {
178
+ channelName = folderMatch[1];
179
+ }
180
+ else if (driveId) {
181
+ // For shared drives: use the channel key as channel name
182
+ for (const [key, cfg] of Object.entries(this.config.channels)) {
183
+ if (cfg.driveId === driveId) {
184
+ channelName = cfg.name ?? key;
185
+ break;
186
+ }
162
187
  }
163
188
  }
189
+ if (!channelName)
190
+ continue;
191
+ const author = file.lastModifyingUser?.displayName ?? 'unknown';
192
+ items.push({
193
+ source: 'drive',
194
+ sourceId: `${change.fileId}:${change.time}`,
195
+ channel: channelName,
196
+ author,
197
+ content: `modified: ${file.name} (${file.mimeType})`,
198
+ timestamp: new Date(change.time),
199
+ type: 'file_change',
200
+ metadata: {
201
+ fileId: change.fileId,
202
+ fileName: file.name,
203
+ mimeType: file.mimeType,
204
+ modifiedTime: file.modifiedTime,
205
+ parents,
206
+ driveId: driveId || undefined,
207
+ },
208
+ });
164
209
  }
165
- if (!channelName)
166
- continue;
167
- const author = file.lastModifyingUser?.displayName ?? 'unknown';
168
- items.push({
169
- source: 'drive',
170
- sourceId: `${change.fileId}:${change.time}`,
171
- channel: channelName,
172
- author,
173
- content: `modified: ${file.name} (${file.mimeType})`,
174
- timestamp: new Date(change.time),
175
- type: 'file_change',
176
- metadata: {
177
- fileId: change.fileId,
178
- fileName: file.name,
179
- mimeType: file.mimeType,
180
- modifiedTime: file.modifiedTime,
181
- parents,
182
- driveId: driveId || undefined,
183
- },
184
- });
210
+ if (!changeList.nextPageToken) {
211
+ terminalStartPageToken = changeList.newStartPageToken;
212
+ reachedTerminalPage = true;
213
+ break;
214
+ }
215
+ if (visitedPageTokens.has(changeList.nextPageToken)) {
216
+ throw new Error(`Drive changes pagination repeated a page token for ${tokenKey}`);
217
+ }
218
+ requestPageToken = changeList.nextPageToken;
219
+ }
220
+ if (!reachedTerminalPage) {
221
+ this.pageTokens.set(tokenKey, requestPageToken);
222
+ return items;
185
223
  }
186
- if (changeList.newStartPageToken) {
187
- this.pageTokens.set(tokenKey, changeList.newStartPageToken);
224
+ if (typeof terminalStartPageToken !== 'string' || terminalStartPageToken.length === 0) {
225
+ throw new Error(`Drive changes terminal page omitted the new start page token for ${tokenKey}`);
188
226
  }
227
+ this.pageTokens.set(tokenKey, terminalStartPageToken);
189
228
  return items;
190
229
  }
191
230
  async poll(_since) {
@@ -195,14 +234,19 @@ class DriveConnector {
195
234
  // 1. Poll personal drive (for folder-based channels)
196
235
  const hasFolderChannels = Object.values(this.config.channels).some((c) => c.folderId && !c.driveId);
197
236
  if (hasFolderChannels) {
198
- allItems.push(...this.pollDrive('drive'));
237
+ allItems.push(...(await this.pollDrive('drive')));
199
238
  }
200
239
  // 2. Poll each shared drive
201
240
  for (const { driveId, channelKey } of this.getSharedDriveIds()) {
202
241
  try {
203
- allItems.push(...this.pollDrive(`shared:${driveId}`, driveId));
242
+ allItems.push(...(await this.pollDrive(`shared:${driveId}`, driveId)));
204
243
  }
205
244
  catch (err) {
245
+ hadError = true;
246
+ this.lastError =
247
+ err instanceof Error
248
+ ? `Shared drive ${channelKey}: ${err.message}`
249
+ : `Shared drive ${channelKey}: ${String(err)}`;
206
250
  console.error(`[drive] Shared drive ${channelKey} poll error:`, err);
207
251
  }
208
252
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connectors/drive/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connectors/drive/index.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,7 @@ export declare function parseGwsOutput(raw: string): unknown;
7
7
  export declare function execGws(args: string, options?: {
8
8
  maxBuffer?: number;
9
9
  }): unknown;
10
+ export declare function execGwsAsync(args: string[], options?: {
11
+ maxBuffer?: number;
12
+ }): Promise<unknown>;
10
13
  //# sourceMappingURL=gws-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gws-utils.d.ts","sourceRoot":"","sources":["../../../src/connectors/framework/gws-utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASnD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAQ/E"}
1
+ {"version":3,"file":"gws-utils.d.ts","sourceRoot":"","sources":["../../../src/connectors/framework/gws-utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASnD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAQ/E;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/B,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseGwsOutput = parseGwsOutput;
4
4
  exports.execGws = execGws;
5
+ exports.execGwsAsync = execGwsAsync;
5
6
  const child_process_1 = require("child_process");
6
7
  function parseGwsOutput(raw) {
7
8
  const lines = raw.split('\n');
@@ -25,4 +26,20 @@ function execGws(args, options) {
25
26
  });
26
27
  return parseGwsOutput(raw);
27
28
  }
29
+ async function execGwsAsync(args, options) {
30
+ const stdout = await new Promise((resolve, reject) => {
31
+ (0, child_process_1.execFile)('gws', args, {
32
+ encoding: 'utf8',
33
+ maxBuffer: options?.maxBuffer,
34
+ timeout: 60_000,
35
+ }, (error, value) => {
36
+ if (error) {
37
+ reject(error);
38
+ return;
39
+ }
40
+ resolve(value);
41
+ });
42
+ });
43
+ return parseGwsOutput(stdout);
44
+ }
28
45
  //# sourceMappingURL=gws-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gws-utils.js","sourceRoot":"","sources":["../../../src/connectors/framework/gws-utils.ts"],"names":[],"mappings":";;AAEA,wCASC;AAOD,0BAQC;AA1BD,iDAAyC;AAEzC,SAAgB,cAAc,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAC/E,CAAC;IACF,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CAAC,IAAY,EAAE,OAAgC;IACpE,MAAM,GAAG,GAAG,IAAA,wBAAQ,EAAC,OAAO,IAAI,EAAE,EAAE;QAClC,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACH,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"gws-utils.js","sourceRoot":"","sources":["../../../src/connectors/framework/gws-utils.ts"],"names":[],"mappings":";;AAEA,wCASC;AAOD,0BAQC;AAED,oCAuBC;AAnDD,iDAAmD;AAEnD,SAAgB,cAAc,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAC/E,CAAC;IACF,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CAAC,IAAY,EAAE,OAAgC;IACpE,MAAM,GAAG,GAAG,IAAA,wBAAQ,EAAC,OAAO,IAAI,EAAE,EAAE;QAClC,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,OAAO,EAAE,SAAS;QAC7B,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IACH,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,YAAY,CAChC,IAAc,EACd,OAAgC;IAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3D,IAAA,wBAAQ,EACN,KAAK,EACL,IAAI,EACJ;YACE,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,OAAO,EAAE,MAAM;SAChB,EACD,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACf,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { SQLiteDatabase } from '../../sqlite.js';
2
+ /**
3
+ * Adds temporal task storage inside TaskLedger's existing BEGIN IMMEDIATE.
4
+ * This function deliberately owns no transaction so it cannot commit a
5
+ * partially upgraded legacy copy-swap.
6
+ */
7
+ export declare function applyOperatorTaskTemporalMigration(db: SQLiteDatabase): void;
8
+ //# sourceMappingURL=operator-task-temporal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator-task-temporal.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/operator-task-temporal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAatD;;;;GAIG;AACH,wBAAgB,kCAAkC,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAyM3E"}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyOperatorTaskTemporalMigration = applyOperatorTaskTemporalMigration;
4
+ const TEMPORAL_TASK_COLUMNS = [
5
+ ['due_at', 'INTEGER'],
6
+ ['deadline_offset_minutes', 'INTEGER CHECK (deadline_offset_minutes BETWEEN -840 AND 840)'],
7
+ ['revision', 'INTEGER NOT NULL DEFAULT 0 CHECK (revision >= 0)'],
8
+ ['temporal_epoch', 'INTEGER NOT NULL DEFAULT 0 CHECK (temporal_epoch >= 0)'],
9
+ ['temporal_reconciled_occurrence_key', 'TEXT'],
10
+ ['last_temporal_checked_at', 'INTEGER'],
11
+ ['next_temporal_check_at', 'INTEGER'],
12
+ ['last_temporal_attempt_id', 'INTEGER'],
13
+ ];
14
+ /**
15
+ * Adds temporal task storage inside TaskLedger's existing BEGIN IMMEDIATE.
16
+ * This function deliberately owns no transaction so it cannot commit a
17
+ * partially upgraded legacy copy-swap.
18
+ */
19
+ function applyOperatorTaskTemporalMigration(db) {
20
+ const columns = new Set(db.prepare('PRAGMA table_info(operator_tasks)').all().map((column) => column.name));
21
+ for (const [name, definition] of TEMPORAL_TASK_COLUMNS) {
22
+ if (!columns.has(name)) {
23
+ db.exec(`ALTER TABLE operator_tasks ADD COLUMN ${name} ${definition}`);
24
+ }
25
+ }
26
+ db.exec(`
27
+ DROP INDEX IF EXISTS idx_operator_temporal_generations_task_occurrence;
28
+ DROP INDEX IF EXISTS idx_operator_tasks_temporal_candidates;
29
+
30
+ CREATE TABLE IF NOT EXISTS operator_temporal_generations (
31
+ generation_key TEXT PRIMARY KEY,
32
+ task_id INTEGER NOT NULL REFERENCES operator_tasks(id),
33
+ temporal_epoch INTEGER NOT NULL CHECK (temporal_epoch >= 0),
34
+ occurrence_key TEXT NOT NULL,
35
+ check_at INTEGER NOT NULL,
36
+ disposition TEXT NOT NULL DEFAULT 'active'
37
+ CHECK (disposition IN ('active','resolved','final_no_update','deferred','exhausted','superseded')),
38
+ last_workorder_id INTEGER REFERENCES operator_tasks(id),
39
+ reason TEXT,
40
+ created_at INTEGER NOT NULL,
41
+ updated_at INTEGER NOT NULL
42
+ );
43
+
44
+ CREATE TABLE IF NOT EXISTS operator_temporal_effects (
45
+ workorder_attempt_id INTEGER PRIMARY KEY REFERENCES operator_tasks(id),
46
+ task_id INTEGER NOT NULL REFERENCES operator_tasks(id),
47
+ generation_key TEXT NOT NULL REFERENCES operator_temporal_generations(generation_key),
48
+ occurrence_key TEXT NOT NULL,
49
+ outcome TEXT NOT NULL
50
+ CHECK (outcome IN ('resolved','final_no_update','deferred')),
51
+ before_revision INTEGER NOT NULL CHECK (before_revision >= 0),
52
+ after_revision INTEGER NOT NULL CHECK (after_revision >= 0),
53
+ changed_fields TEXT NOT NULL,
54
+ reason TEXT NOT NULL,
55
+ attestation_version INTEGER NOT NULL DEFAULT 0 CHECK (attestation_version IN (0, 1)),
56
+ context_packet_id TEXT NOT NULL,
57
+ context_packet_sha256 TEXT NOT NULL,
58
+ next_temporal_check_at INTEGER,
59
+ created_at INTEGER NOT NULL
60
+ );
61
+
62
+ CREATE INDEX IF NOT EXISTS idx_operator_tasks_temporal_scan_id
63
+ ON operator_tasks(id)
64
+ WHERE kind = 'owner' AND status IN ('pending','in_progress','review','blocked')
65
+ AND (due_at IS NOT NULL OR deadline IS NOT NULL OR next_temporal_check_at IS NOT NULL);
66
+ CREATE INDEX IF NOT EXISTS idx_operator_tasks_temporal_open_event
67
+ ON operator_tasks(source_event_id, id)
68
+ WHERE kind = 'system' AND source_channel = 'workorder:temporal'
69
+ AND status IN ('pending','in_progress');
70
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_operator_temporal_generations_identity
71
+ ON operator_temporal_generations(task_id, temporal_epoch, occurrence_key, check_at);
72
+ CREATE INDEX IF NOT EXISTS idx_operator_temporal_generations_active
73
+ ON operator_temporal_generations(generation_key, last_workorder_id)
74
+ WHERE disposition = 'active' AND last_workorder_id IS NOT NULL;
75
+ CREATE INDEX IF NOT EXISTS idx_operator_temporal_generations_workorder
76
+ ON operator_temporal_generations(last_workorder_id);
77
+ CREATE INDEX IF NOT EXISTS idx_operator_temporal_effects_task_occurrence
78
+ ON operator_temporal_effects(task_id, occurrence_key, created_at);
79
+
80
+ CREATE TRIGGER IF NOT EXISTS trg_operator_tasks_legacy_deadline_write
81
+ AFTER UPDATE OF deadline ON operator_tasks
82
+ WHEN NEW.kind = 'owner'
83
+ AND NEW.deadline IS NOT OLD.deadline
84
+ AND NEW.due_at IS OLD.due_at
85
+ AND NEW.temporal_epoch = OLD.temporal_epoch
86
+ BEGIN
87
+ UPDATE operator_tasks
88
+ SET due_at = NULL,
89
+ deadline_offset_minutes = NULL,
90
+ revision = OLD.revision + 1,
91
+ temporal_epoch = OLD.temporal_epoch + 1,
92
+ temporal_reconciled_occurrence_key = NULL,
93
+ last_temporal_checked_at = NULL,
94
+ next_temporal_check_at = NULL,
95
+ last_temporal_attempt_id = NULL
96
+ WHERE id = NEW.id;
97
+ UPDATE operator_temporal_generations
98
+ SET disposition = 'superseded', reason = 'legacy-deadline-write', updated_at = NEW.updated_at
99
+ WHERE task_id = NEW.id AND disposition = 'active';
100
+ UPDATE operator_tasks
101
+ SET status = 'cancelled', latest_event = 'legacy-deadline-write', updated_at = NEW.updated_at
102
+ WHERE kind = 'system' AND source_channel = 'workorder:temporal'
103
+ AND status IN ('pending','in_progress')
104
+ AND source_event_id IN (
105
+ SELECT generation_key FROM operator_temporal_generations WHERE task_id = NEW.id
106
+ );
107
+ END;
108
+
109
+ CREATE TRIGGER IF NOT EXISTS trg_operator_tasks_legacy_status_write
110
+ AFTER UPDATE OF status ON operator_tasks
111
+ WHEN NEW.kind = 'owner'
112
+ AND NEW.status IS NOT OLD.status
113
+ AND NEW.revision = OLD.revision
114
+ BEGIN
115
+ UPDATE operator_tasks
116
+ SET revision = OLD.revision + 1,
117
+ temporal_epoch = CASE
118
+ WHEN OLD.status IN ('done','cancelled')
119
+ AND NEW.status NOT IN ('done','cancelled')
120
+ THEN OLD.temporal_epoch + 1
121
+ ELSE OLD.temporal_epoch
122
+ END,
123
+ temporal_reconciled_occurrence_key = CASE
124
+ WHEN OLD.status IN ('done','cancelled')
125
+ AND NEW.status NOT IN ('done','cancelled')
126
+ THEN NULL
127
+ ELSE NEW.temporal_reconciled_occurrence_key
128
+ END,
129
+ last_temporal_checked_at = CASE
130
+ WHEN OLD.status IN ('done','cancelled')
131
+ AND NEW.status NOT IN ('done','cancelled')
132
+ THEN NULL
133
+ ELSE NEW.last_temporal_checked_at
134
+ END,
135
+ next_temporal_check_at = CASE
136
+ WHEN OLD.status IN ('done','cancelled')
137
+ AND NEW.status NOT IN ('done','cancelled')
138
+ THEN NULL
139
+ ELSE NEW.next_temporal_check_at
140
+ END,
141
+ last_temporal_attempt_id = CASE
142
+ WHEN OLD.status IN ('done','cancelled')
143
+ AND NEW.status NOT IN ('done','cancelled')
144
+ THEN NULL
145
+ ELSE NEW.last_temporal_attempt_id
146
+ END
147
+ WHERE id = NEW.id;
148
+ UPDATE operator_tasks
149
+ SET status = 'cancelled',
150
+ latest_event = CASE
151
+ WHEN NEW.status IN ('done','cancelled') THEN 'legacy-owner-task-closed'
152
+ ELSE 'legacy-owner-task-reopened'
153
+ END,
154
+ updated_at = NEW.updated_at
155
+ WHERE kind = 'system' AND source_channel = 'workorder:temporal'
156
+ AND status IN ('pending','in_progress')
157
+ AND source_event_id IN (
158
+ SELECT generation_key FROM operator_temporal_generations
159
+ WHERE task_id = NEW.id AND disposition = 'active'
160
+ )
161
+ AND (
162
+ (OLD.status IN ('done','cancelled') AND NEW.status NOT IN ('done','cancelled'))
163
+ OR
164
+ (OLD.status NOT IN ('done','cancelled') AND NEW.status IN ('done','cancelled'))
165
+ );
166
+ UPDATE operator_temporal_generations
167
+ SET disposition = 'superseded',
168
+ reason = CASE
169
+ WHEN NEW.status IN ('done','cancelled') THEN 'legacy-owner-task-closed'
170
+ ELSE 'legacy-owner-task-reopened'
171
+ END,
172
+ updated_at = NEW.updated_at
173
+ WHERE task_id = NEW.id AND disposition = 'active'
174
+ AND (
175
+ (OLD.status IN ('done','cancelled') AND NEW.status NOT IN ('done','cancelled'))
176
+ OR
177
+ (OLD.status NOT IN ('done','cancelled') AND NEW.status IN ('done','cancelled'))
178
+ );
179
+ END;
180
+
181
+ CREATE TRIGGER IF NOT EXISTS trg_operator_tasks_legacy_content_write
182
+ AFTER UPDATE OF title, priority, assignee, latest_event, confirmed ON operator_tasks
183
+ WHEN NEW.kind = 'owner'
184
+ AND NEW.revision = OLD.revision
185
+ AND (
186
+ NEW.title IS NOT OLD.title
187
+ OR NEW.priority IS NOT OLD.priority
188
+ OR NEW.assignee IS NOT OLD.assignee
189
+ OR NEW.latest_event IS NOT OLD.latest_event
190
+ OR NEW.confirmed IS NOT OLD.confirmed
191
+ )
192
+ BEGIN
193
+ UPDATE operator_tasks SET revision = OLD.revision + 1 WHERE id = NEW.id;
194
+ END;
195
+ `);
196
+ const effectColumns = new Set(db.prepare('PRAGMA table_info(operator_temporal_effects)').all().map((column) => column.name));
197
+ if (!effectColumns.has('context_packet_id')) {
198
+ db.exec(`ALTER TABLE operator_temporal_effects ADD COLUMN context_packet_id TEXT`);
199
+ }
200
+ if (!effectColumns.has('context_packet_sha256')) {
201
+ db.exec(`ALTER TABLE operator_temporal_effects ADD COLUMN context_packet_sha256 TEXT`);
202
+ }
203
+ if (!effectColumns.has('attestation_version')) {
204
+ db.exec(`ALTER TABLE operator_temporal_effects
205
+ ADD COLUMN attestation_version INTEGER NOT NULL DEFAULT 0
206
+ CHECK (attestation_version IN (0, 1))`);
207
+ }
208
+ }
209
+ //# sourceMappingURL=operator-task-temporal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operator-task-temporal.js","sourceRoot":"","sources":["../../../src/db/migrations/operator-task-temporal.ts"],"names":[],"mappings":";;AAkBA,gFAyMC;AAzND,MAAM,qBAAqB,GAAG;IAC5B,CAAC,QAAQ,EAAE,SAAS,CAAC;IACrB,CAAC,yBAAyB,EAAE,8DAA8D,CAAC;IAC3F,CAAC,UAAU,EAAE,kDAAkD,CAAC;IAChE,CAAC,gBAAgB,EAAE,wDAAwD,CAAC;IAC5E,CAAC,oCAAoC,EAAE,MAAM,CAAC;IAC9C,CAAC,0BAA0B,EAAE,SAAS,CAAC;IACvC,CAAC,wBAAwB,EAAE,SAAS,CAAC;IACrC,CAAC,0BAA0B,EAAE,SAAS,CAAC;CAC/B,CAAC;AAEX;;;;GAIG;AACH,SAAgB,kCAAkC,CAAC,EAAkB;IACnE,MAAM,OAAO,GAAG,IAAI,GAAG,CACpB,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CACpF,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CACxB,CACF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,qBAAqB,EAAE,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,EAAE,CAAC,IAAI,CAAC,yCAAyC,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyKP,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAEzB,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAC/D,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC/B,CAAC;IACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC5C,EAAE,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAAE,CAAC;QAChD,EAAE,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC9C,EAAE,CAAC,IAAI,CACL;;6CAEuC,CACxC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"enforcer.d.ts","sourceRoot":"","sources":["../../src/envelope/enforcer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,YAAY,CAAC;AAGxD,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,MAAM;aACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAKzD;AAqCD,qBAAa,gBAAgB;IAC3B,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAYnF,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,iBAAiB;IAmDzB,OAAO,CAAC,SAAS;CASlB"}
1
+ {"version":3,"file":"enforcer.d.ts","sourceRoot":"","sources":["../../src/envelope/enforcer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,YAAY,CAAC;AAGxD,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,IAAI,EAAE,MAAM;aACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAKzD;AAgDD,qBAAa,gBAAgB;IAC3B,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAYnF,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,kBAAkB;IAiB1B,OAAO,CAAC,iBAAiB;IAkDzB,OAAO,CAAC,SAAS;CAQlB"}
@@ -19,6 +19,15 @@ const SEND_TOOLS_TO_DESTINATION_KIND = {
19
19
  chatwork_send: 'chatwork',
20
20
  discord_send: 'discord',
21
21
  webchat_send: 'webchat',
22
+ drive_upload: 'drive',
23
+ };
24
+ const DESTINATION_ID_FIELD_BY_TOOL = {
25
+ telegram_send: 'chat_id',
26
+ slack_send: 'channel_id',
27
+ chatwork_send: 'channel_id',
28
+ discord_send: 'channel_id',
29
+ webchat_send: 'session_id',
30
+ drive_upload: 'folderId',
22
31
  };
23
32
  const WRITE_OR_SEND_TOOLS = new Set([
24
33
  'mama_save',
@@ -38,6 +47,7 @@ const WRITE_OR_SEND_TOOLS = new Set([
38
47
  'report_publish',
39
48
  'wiki_publish',
40
49
  'human.correction',
50
+ 'drive_upload',
41
51
  ]);
42
52
  const MEMORY_SCOPED_TOOLS = new Set([
43
53
  'mama_save',
@@ -62,24 +72,26 @@ class EnvelopeEnforcer {
62
72
  expiresAt = (0, expiry_js_1.parseEnvelopeExpiresAt)(envelope.expires_at);
63
73
  }
64
74
  catch {
65
- throw new EnvelopeViolation(`Envelope ${envelope.instance_id} has invalid expires_at ${envelope.expires_at}`, 'invalid_expiry');
75
+ throw new EnvelopeViolation('Envelope expiry is invalid', 'invalid_expiry');
66
76
  }
67
77
  if (expiresAt <= Date.now()) {
68
- throw new EnvelopeViolation(`Envelope ${envelope.instance_id} expired at ${envelope.expires_at}`, 'expired');
78
+ throw new EnvelopeViolation('Envelope has expired', 'expired');
69
79
  }
70
80
  }
71
81
  checkDestination(envelope, toolName, args) {
72
- const destinationKind = SEND_TOOLS_TO_DESTINATION_KIND[toolName];
73
- if (!destinationKind) {
82
+ if (!Object.hasOwn(SEND_TOOLS_TO_DESTINATION_KIND, toolName)) {
74
83
  return;
75
84
  }
76
- const destinationId = getStringArg(args, 'chat_id') ?? getStringArg(args, 'channel_id');
85
+ const destinationToolName = toolName;
86
+ const destinationKind = SEND_TOOLS_TO_DESTINATION_KIND[destinationToolName];
87
+ const destinationField = DESTINATION_ID_FIELD_BY_TOOL[destinationToolName];
88
+ const destinationId = getStringArg(args, destinationField);
77
89
  if (!destinationId) {
78
90
  throw new EnvelopeViolation(`Tool ${toolName} called without destination id`, 'missing_destination');
79
91
  }
80
92
  const allowed = envelope.scope.allowed_destinations.some((destination) => destination.kind === destinationKind && destination.id === destinationId);
81
93
  if (!allowed) {
82
- throw new EnvelopeViolation(`Destination ${destinationKind}:${destinationId} not in envelope.scope.allowed_destinations`, 'destination_out_of_scope', { allowed: envelope.scope.allowed_destinations });
94
+ throw new EnvelopeViolation('Requested destination is outside envelope.scope.allowed_destinations', 'destination_out_of_scope');
83
95
  }
84
96
  }
85
97
  checkRawConnectors(envelope, toolName, args) {
@@ -89,7 +101,7 @@ class EnvelopeEnforcer {
89
101
  }
90
102
  const outOfScope = requestedConnectors.filter((connector) => !envelope.scope.raw_connectors.includes(connector));
91
103
  if (outOfScope.length > 0) {
92
- throw new EnvelopeViolation(`Raw connectors ${outOfScope.join(',')} not in envelope.scope.raw_connectors`, 'connector_out_of_scope', { allowed: envelope.scope.raw_connectors });
104
+ throw new EnvelopeViolation('Requested raw connector is outside envelope.scope.raw_connectors', 'connector_out_of_scope');
93
105
  }
94
106
  }
95
107
  checkMemoryScopes(envelope, toolName, args) {
@@ -115,7 +127,7 @@ class EnvelopeEnforcer {
115
127
  if (toolName === 'context_compile' && isRecord(args) && Array.isArray(args.scopes)) {
116
128
  return;
117
129
  }
118
- throw new EnvelopeViolation('Memory tools must execute with an explicit envelope memory scope', 'memory_scope_out_of_scope', { allowed: envelope.scope.memory_scopes });
130
+ throw new EnvelopeViolation('Memory tools must execute with an explicit envelope memory scope', 'memory_scope_out_of_scope');
119
131
  }
120
132
  const allowedScopeKeys = new Set(envelope.scope.memory_scopes.map((scope) => `${scope.kind}:${scope.id}`));
121
133
  const outOfScope = requestedScopes.some((scope) => !allowedScopeKeys.has(`${scope.kind}:${scope.id}`));
@@ -125,12 +137,15 @@ class EnvelopeEnforcer {
125
137
  }
126
138
  checkTier(envelope, toolName) {
127
139
  if (envelope.tier === 3 && WRITE_OR_SEND_TOOLS.has(toolName)) {
128
- throw new EnvelopeViolation(`Tool ${toolName} not allowed at tier 3 (read-only)`, 'tier_violation', { tier_required: 2, allowed: false });
140
+ throw new EnvelopeViolation(`Tool ${toolName} not allowed at tier 3 (read-only)`, 'tier_violation');
129
141
  }
130
142
  }
131
143
  }
132
144
  exports.EnvelopeEnforcer = EnvelopeEnforcer;
133
145
  function requestedRawConnectorsForTool(toolName, args) {
146
+ if (toolName.startsWith('drive_')) {
147
+ return ['drive'];
148
+ }
134
149
  if (toolName === 'context_compile') {
135
150
  return uniqueStrings([
136
151
  ...(getStringArrayArg(args, 'connectors') ?? []),