@jungjaehoon/mama-os 0.47.0 → 0.48.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 (86) hide show
  1. package/dist/agent/agent-loop.d.ts.map +1 -1
  2. package/dist/agent/agent-loop.js +9 -11
  3. package/dist/agent/agent-loop.js.map +1 -1
  4. package/dist/agent/code-act/constants.d.ts +4 -1
  5. package/dist/agent/code-act/constants.d.ts.map +1 -1
  6. package/dist/agent/code-act/constants.js +34 -97
  7. package/dist/agent/code-act/constants.js.map +1 -1
  8. package/dist/agent/code-act/host-bridge.d.ts +2 -1
  9. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  10. package/dist/agent/code-act/host-bridge.js +227 -29
  11. package/dist/agent/code-act/host-bridge.js.map +1 -1
  12. package/dist/agent/code-act/sandbox.d.ts +1 -0
  13. package/dist/agent/code-act/sandbox.d.ts.map +1 -1
  14. package/dist/agent/code-act/sandbox.js +33 -6
  15. package/dist/agent/code-act/sandbox.js.map +1 -1
  16. package/dist/agent/code-act/tool-catalog.d.ts +28 -0
  17. package/dist/agent/code-act/tool-catalog.d.ts.map +1 -0
  18. package/dist/agent/code-act/tool-catalog.js +146 -0
  19. package/dist/agent/code-act/tool-catalog.js.map +1 -0
  20. package/dist/agent/code-act/tool-policy.d.ts +2 -1
  21. package/dist/agent/code-act/tool-policy.d.ts.map +1 -1
  22. package/dist/agent/code-act/tool-policy.js +2 -1
  23. package/dist/agent/code-act/tool-policy.js.map +1 -1
  24. package/dist/agent/code-act/type-definition-generator.d.ts +6 -0
  25. package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
  26. package/dist/agent/code-act/type-definition-generator.js +40 -21
  27. package/dist/agent/code-act/type-definition-generator.js.map +1 -1
  28. package/dist/agent/gateway-tool-executor.d.ts +6 -0
  29. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  30. package/dist/agent/gateway-tool-executor.js +102 -58
  31. package/dist/agent/gateway-tool-executor.js.map +1 -1
  32. package/dist/agent/gateway-tools.md +7 -7
  33. package/dist/agent/tool-registry.d.ts.map +1 -1
  34. package/dist/agent/tool-registry.js +22 -13
  35. package/dist/agent/tool-registry.js.map +1 -1
  36. package/dist/api/graph-api-types.d.ts +3 -0
  37. package/dist/api/graph-api-types.d.ts.map +1 -1
  38. package/dist/cli/commands/start.d.ts.map +1 -1
  39. package/dist/cli/commands/start.js +7 -0
  40. package/dist/cli/commands/start.js.map +1 -1
  41. package/dist/cli/runtime/code-act-executor.d.ts.map +1 -1
  42. package/dist/cli/runtime/code-act-executor.js +5 -0
  43. package/dist/cli/runtime/code-act-executor.js.map +1 -1
  44. package/dist/connectors/kagemusha/query-tools.d.ts +57 -0
  45. package/dist/connectors/kagemusha/query-tools.d.ts.map +1 -1
  46. package/dist/connectors/kagemusha/query-tools.js +247 -0
  47. package/dist/connectors/kagemusha/query-tools.js.map +1 -1
  48. package/dist/connectors/private-connector-policy.d.ts +32 -6
  49. package/dist/connectors/private-connector-policy.d.ts.map +1 -1
  50. package/dist/connectors/private-connector-policy.js +40 -5
  51. package/dist/connectors/private-connector-policy.js.map +1 -1
  52. package/dist/connectors/trello/query-tools.d.ts +148 -16
  53. package/dist/connectors/trello/query-tools.d.ts.map +1 -1
  54. package/dist/connectors/trello/query-tools.js +453 -65
  55. package/dist/connectors/trello/query-tools.js.map +1 -1
  56. package/dist/mcp/code-act-api-client.d.ts +1 -0
  57. package/dist/mcp/code-act-api-client.d.ts.map +1 -1
  58. package/dist/mcp/code-act-api-client.js.map +1 -1
  59. package/dist/mcp/code-act-server.js +8 -6
  60. package/dist/mcp/code-act-server.js.map +1 -1
  61. package/dist/mcp/code-act-terminal-transport.d.ts +2 -0
  62. package/dist/mcp/code-act-terminal-transport.d.ts.map +1 -1
  63. package/dist/mcp/code-act-terminal-transport.js +18 -6
  64. package/dist/mcp/code-act-terminal-transport.js.map +1 -1
  65. package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
  66. package/dist/multi-agent/agent-process-manager.js +1 -5
  67. package/dist/multi-agent/agent-process-manager.js.map +1 -1
  68. package/dist/operator/board-read-views.d.ts +49 -0
  69. package/dist/operator/board-read-views.d.ts.map +1 -0
  70. package/dist/operator/board-read-views.js +207 -0
  71. package/dist/operator/board-read-views.js.map +1 -0
  72. package/dist/operator/task-ledger.d.ts +85 -0
  73. package/dist/operator/task-ledger.d.ts.map +1 -1
  74. package/dist/operator/task-ledger.js +128 -0
  75. package/dist/operator/task-ledger.js.map +1 -1
  76. package/dist/operator/task-list-views.d.ts +91 -0
  77. package/dist/operator/task-list-views.d.ts.map +1 -0
  78. package/dist/operator/task-list-views.js +483 -0
  79. package/dist/operator/task-list-views.js.map +1 -0
  80. package/dist/operator/workorder-consumer.js +1 -1
  81. package/dist/operator/workorder-consumer.js.map +1 -1
  82. package/dist/sqlite.d.ts +7 -0
  83. package/dist/sqlite.d.ts.map +1 -1
  84. package/dist/sqlite.js +8 -0
  85. package/dist/sqlite.js.map +1 -1
  86. package/package.json +2 -1
@@ -18,11 +18,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.resolveTrelloQueryAuth = resolveTrelloQueryAuth;
19
19
  exports.clearTrelloSnapshotCache = clearTrelloSnapshotCache;
20
20
  exports.getTrelloKanban = getTrelloKanban;
21
- exports.searchTrelloCards = searchTrelloCards;
22
- exports.getTrelloCard = getTrelloCard;
21
+ exports.getTrelloBoardsOverview = getTrelloBoardsOverview;
22
+ exports.getTrelloListCards = getTrelloListCards;
23
+ exports.searchTrelloBoardCards = searchTrelloBoardCards;
24
+ exports.getTrelloCardDetail = getTrelloCardDetail;
25
+ const node_crypto_1 = require("node:crypto");
23
26
  const config_loader_js_1 = require("../config-loader.js");
24
27
  const BASE_URL = 'https://api.trello.com/1';
25
28
  const FETCH_TIMEOUT_MS = 15_000;
29
+ /** Progressive page bounds shared by the Trello cards/search facades (Task C). */
30
+ const RECORD_DEFAULT_LIMIT = 25;
31
+ const RECORD_MAX_LIMIT = 50;
32
+ const DESC_DEFAULT_LIMIT = 1000;
33
+ const DESC_MAX_LIMIT = 4000;
34
+ const CHECKLIST_DEFAULT_LIMIT = 10;
35
+ const CHECKLIST_MAX_LIMIT = 25;
36
+ const ITEM_DEFAULT_LIMIT = 20;
37
+ const ITEM_MAX_LIMIT = 50;
26
38
  /** Loud, no-fallback auth resolution via the connector contract:
27
39
  * config.auth.token ?? env[tokenName ?? 'TRELLO_TOKEN'], "apiKey:token". */
28
40
  function resolveTrelloQueryAuth(deps = {}) {
@@ -88,6 +100,45 @@ let snapshotCache = null;
88
100
  function clearTrelloSnapshotCache() {
89
101
  snapshotCache = null;
90
102
  }
103
+ /**
104
+ * A stable identity of the CURRENT authorization: the credentials and the sorted
105
+ * configured board allowlist (id + display name). It is a one-way hash, so tokens
106
+ * are never exposed, yet a changed token, a removed/added board, or a renamed
107
+ * board all mint a different value. Cache reuse and cursor continuation require
108
+ * the SAME fingerprint, so cached cards are never re-served under new auth.
109
+ */
110
+ function authFingerprint(auth) {
111
+ const boards = [...auth.boardNames.entries()].sort((left, right) => left[0] < right[0] ? -1 : left[0] > right[0] ? 1 : 0);
112
+ return (0, node_crypto_1.createHash)('sha256')
113
+ .update(JSON.stringify([auth.apiKey, auth.token, boards]))
114
+ .digest('base64url')
115
+ .slice(0, 22);
116
+ }
117
+ /**
118
+ * The current cached snapshot WITHOUT triggering a fresh fetch. Progressive
119
+ * continuations (cards/search cursors) read the exact snapshot their first page
120
+ * observed - even after the 45s fresh-read TTL - as long as it is still present.
121
+ * Once the cache is replaced or cleared the continuation is rejected and the
122
+ * caller restarts, because a page 2 drawn from a different snapshot could skip
123
+ * or repeat cards.
124
+ */
125
+ function peekTrelloSnapshot() {
126
+ return snapshotCache;
127
+ }
128
+ /** Stable identity of one cached snapshot: its observation instant plus board
129
+ * and per-list card structure. A refresh replaces the cache wholesale and mints
130
+ * a new id, which is exactly what invalidates an in-flight cursor. */
131
+ function snapshotId(snapshot) {
132
+ const shape = snapshot.boards.map((board) => [
133
+ board.boardId,
134
+ board.status,
135
+ board.lists.map((list) => [list.id, list.name, list.cards.length]),
136
+ ]);
137
+ return (0, node_crypto_1.createHash)('sha256')
138
+ .update(`${snapshot.at}:${JSON.stringify(shape)}`)
139
+ .digest('base64url')
140
+ .slice(0, 22);
141
+ }
91
142
  /** Fetch all boards' open cards + member rosters IN PARALLEL, cached briefly.
92
143
  * A single unreadable board degrades to an empty snapshot for that board only,
93
144
  * never sinking the whole read - but it is now MARKED 'failed' instead of being
@@ -97,9 +148,13 @@ function clearTrelloSnapshotCache() {
97
148
  * Roster resolution is optional enrichment (the poller treats it the same way):
98
149
  * losing member names degrades naming, never card coverage. */
99
150
  async function fetchBoardSnapshots(auth, fetchFn) {
100
- if (snapshotCache && Date.now() - snapshotCache.at < SNAPSHOT_TTL_MS) {
151
+ const authFp = authFingerprint(auth);
152
+ if (snapshotCache &&
153
+ snapshotCache.authFp === authFp &&
154
+ Date.now() - snapshotCache.at < SNAPSHOT_TTL_MS) {
101
155
  // Cached snapshots keep their ORIGINAL observation time and per-board status:
102
- // a degraded read must not re-serve as a fresh successful one for 45s.
156
+ // a degraded read must not re-serve as a fresh successful one for 45s. Reuse
157
+ // ALSO requires the same authorization - a token or allowlist change refetches.
103
158
  return snapshotCache;
104
159
  }
105
160
  const boards = await Promise.all([...auth.boardNames].map(async ([boardId, boardName]) => {
@@ -124,7 +179,7 @@ async function fetchBoardSnapshots(auth, fetchFn) {
124
179
  }
125
180
  return { boardId, boardName, lists, roster, status, rosterDegraded };
126
181
  }));
127
- snapshotCache = { at: Date.now(), boards };
182
+ snapshotCache = { at: Date.now(), authFp, boards };
128
183
  return snapshotCache;
129
184
  }
130
185
  function snapshotCard(snap, listName, card) {
@@ -139,27 +194,6 @@ function snapshotCard(snap, listName, card) {
139
194
  lastActivity: card.dateLastActivity,
140
195
  };
141
196
  }
142
- /** Board-scan substring match: Trello's /search tokenizes on word boundaries
143
- * and misses CJK substrings and underscore compounds (e.g. 'エルデリーゼ',
144
- * 'ex_1055003'), which is most of this board vocabulary. Scanning the cached
145
- * parallel snapshot and filtering locally is the reliable path (the same
146
- * reason Kagemusha's agent leans on its full-kanban scan). */
147
- async function scanBoardsForCards(query, limit, auth, fetchFn) {
148
- const needle = query.toLowerCase();
149
- const matches = [];
150
- for (const snap of (await fetchBoardSnapshots(auth, fetchFn)).boards) {
151
- for (const list of snap.lists) {
152
- for (const card of list.cards) {
153
- if (matches.length >= limit)
154
- return matches;
155
- if (card.name.toLowerCase().includes(needle)) {
156
- matches.push(snapshotCard(snap, list.name, card));
157
- }
158
- }
159
- }
160
- }
161
- return matches;
162
- }
163
197
  /**
164
198
  * Full LIVE kanban snapshot across the configured boards - the primary answer tool
165
199
  * for whole-project status. ONE call replaces a search per card: every open card
@@ -211,45 +245,233 @@ async function getTrelloKanban(input = {}, deps = {}) {
211
245
  };
212
246
  }
213
247
  /**
214
- * Search cards across the configured boards, LIVE. Returns current list,
215
- * labels (revision round / artist), and assignee names per card. Tries
216
- * Trello's /search first (fast for ASCII terms), then fills up from a
217
- * board scan with local substring matching (reliable for CJK names).
248
+ * Progressive overview: every configured board and its lists with stable ids and
249
+ * open-card COUNTS - no card arrays. This is the entry point; a caller then reads
250
+ * one list's cards with `getTrelloListCards`. `readVersion` names the snapshot to
251
+ * pass back through a cards/search cursor.
218
252
  */
219
- async function searchTrelloCards(input, deps = {}) {
253
+ async function getTrelloBoardsOverview(deps = {}) {
254
+ const auth = resolveTrelloQueryAuth(deps);
255
+ const fetchFn = deps.fetchFn ?? fetch;
256
+ const snapshot = await fetchBoardSnapshots(auth, fetchFn);
257
+ const boards = snapshot.boards.map((snap) => ({
258
+ boardId: snap.boardId,
259
+ board: snap.boardName,
260
+ status: snap.status,
261
+ rosterDegraded: snap.rosterDegraded,
262
+ lists: snap.lists.map((list) => ({
263
+ listId: list.id,
264
+ list: list.name,
265
+ count: list.cards.length,
266
+ })),
267
+ }));
268
+ return {
269
+ boards,
270
+ observedAt: new Date(snapshot.at).toISOString(),
271
+ cacheAgeMs: Math.max(0, Date.now() - snapshot.at),
272
+ readVersion: snapshotId(snapshot),
273
+ complete: boards.length > 0 && boards.every((board) => board.status === 'ok'),
274
+ };
275
+ }
276
+ function encodeRecordCursor(payload) {
277
+ return Buffer.from(JSON.stringify(payload), 'utf8').toString('base64url');
278
+ }
279
+ /** Resolve the snapshot a page reads AND the CURRENT authorization. Authorization
280
+ * is re-resolved on EVERY page (P1: PR #262): a disabled connector or unreadable
281
+ * config throws here before any cached field is returned. A cursor pins the EXACT
282
+ * cached snapshot and rejects if it is gone, replaced, or fetched under a
283
+ * different authorization; a first page fetches (refreshing on TTL or auth). */
284
+ async function resolvePageSnapshot(cursor, scope, deps) {
285
+ const auth = resolveTrelloQueryAuth(deps);
286
+ const fetchFn = deps.fetchFn ?? fetch;
287
+ if (cursor) {
288
+ const snapshot = peekTrelloSnapshot();
289
+ if (!snapshot) {
290
+ throw new Error('trello cursor snapshot is no longer cached; restart the read from the overview.');
291
+ }
292
+ // Authorization is re-checked against the cache: a changed token or a changed
293
+ // board allowlist rejects the continuation rather than filtering old cards.
294
+ if (snapshot.authFp !== authFingerprint(auth)) {
295
+ throw new Error('trello authorization changed since this cursor was issued; restart the read from the overview.');
296
+ }
297
+ const id = snapshotId(snapshot);
298
+ if (id !== cursor.snapshotId || cursor.scope !== scope) {
299
+ throw new Error('trello cursor belongs to a replaced snapshot or a different scope; restart the read.');
300
+ }
301
+ return { snapshot, id, auth };
302
+ }
303
+ const snapshot = await fetchBoardSnapshots(auth, fetchFn);
304
+ return { snapshot, id: snapshotId(snapshot), auth };
305
+ }
306
+ function decodeRecordCursor(raw) {
307
+ if (raw === undefined)
308
+ return null;
309
+ if (typeof raw !== 'string' || raw.length === 0 || raw.length > 2048) {
310
+ throw new Error('trello cursor is malformed; restart the read.');
311
+ }
312
+ let parsed;
313
+ try {
314
+ parsed = JSON.parse(Buffer.from(raw, 'base64url').toString('utf8'));
315
+ }
316
+ catch {
317
+ throw new Error('trello cursor is malformed; restart the read.');
318
+ }
319
+ if (!parsed ||
320
+ typeof parsed !== 'object' ||
321
+ parsed.v !== 1 ||
322
+ typeof parsed.snapshotId !== 'string' ||
323
+ typeof parsed.scope !== 'string' ||
324
+ !Number.isSafeInteger(parsed.offset) ||
325
+ parsed.offset < 0) {
326
+ throw new Error('trello cursor is malformed; restart the read.');
327
+ }
328
+ return parsed;
329
+ }
330
+ function boundedRecordLimit(value) {
331
+ if (value === undefined)
332
+ return RECORD_DEFAULT_LIMIT;
333
+ if (!Number.isInteger(value) || value < 1 || value > RECORD_MAX_LIMIT) {
334
+ throw new Error(`limit must be an integer from 1 to ${RECORD_MAX_LIMIT}.`);
335
+ }
336
+ return value;
337
+ }
338
+ /**
339
+ * One bounded page of a single list's open cards, drawn from the cached snapshot.
340
+ * Every card in the list is reachable by walking `nextCursor` - past the old
341
+ * 100-card kanban ceiling. The cursor is pinned to the snapshot and (boardId,
342
+ * listId); a replaced/expired snapshot is rejected with restart guidance.
343
+ */
344
+ async function getTrelloListCards(input, deps = {}) {
345
+ const boardId = (input.boardId ?? '').trim();
346
+ const listId = (input.listId ?? '').trim();
347
+ if (!boardId || !listId) {
348
+ throw new Error('trello cards view requires boardId and listId from the overview.');
349
+ }
350
+ const scope = `cards:${boardId}:${listId}`;
351
+ const cursor = decodeRecordCursor(input.cursor);
352
+ const limit = boundedRecordLimit(input.limit);
353
+ const { snapshot, id, auth } = await resolvePageSnapshot(cursor, scope, deps);
354
+ // Authorize against the CURRENT allowlist before touching the snapshot: never
355
+ // disclose a board's cards from an old snapshot just because it was cached.
356
+ if (!auth.boardNames.has(boardId)) {
357
+ throw new Error(`trello board '${boardId}' is not configured/authorized.`);
358
+ }
359
+ const board = snapshot.boards.find((b) => b.boardId === boardId);
360
+ if (!board) {
361
+ throw new Error(`trello board '${boardId}' is not configured/authorized.`);
362
+ }
363
+ const observedAt = new Date(snapshot.at).toISOString();
364
+ const cacheAgeMs = Math.max(0, Date.now() - snapshot.at);
365
+ const coverage = { status: board.status, rosterDegraded: board.rosterDegraded };
366
+ if (board.status === 'failed') {
367
+ // A failed board read contributed NO cards; absence here is not an empty list.
368
+ // The display name is unknown (the read failed), so only the id echoes back.
369
+ return {
370
+ boardId,
371
+ listId,
372
+ board: board.boardName,
373
+ list: '',
374
+ cards: [],
375
+ total: 0,
376
+ returned: 0,
377
+ nextCursor: null,
378
+ observedAt,
379
+ cacheAgeMs,
380
+ readVersion: id,
381
+ coverage,
382
+ };
383
+ }
384
+ // Bind by the REAL Trello list id, never by display name: two lists on one board
385
+ // can share a name, and a name lookup would collapse them onto the first match.
386
+ const list = board.lists.find((entry) => entry.id === listId);
387
+ if (!list) {
388
+ throw new Error(`trello list '${listId}' is not present on board '${boardId}'.`);
389
+ }
390
+ const offset = cursor?.offset ?? 0;
391
+ if (offset > list.cards.length) {
392
+ throw new Error('trello cursor is past the end of the list; restart the read.');
393
+ }
394
+ const slice = list.cards
395
+ .slice(offset, offset + limit)
396
+ .map((card) => snapshotCard(board, list.name, card));
397
+ const nextOffset = offset + slice.length;
398
+ return {
399
+ boardId,
400
+ listId,
401
+ board: board.boardName,
402
+ list: list.name,
403
+ cards: slice,
404
+ total: list.cards.length,
405
+ returned: slice.length,
406
+ nextCursor: nextOffset < list.cards.length
407
+ ? encodeRecordCursor({ v: 1, snapshotId: id, scope, offset: nextOffset })
408
+ : null,
409
+ observedAt,
410
+ cacheAgeMs,
411
+ readVersion: id,
412
+ coverage,
413
+ };
414
+ }
415
+ /**
416
+ * Progressive search over the cached board snapshot with local substring match -
417
+ * an HONEST full match total and stable paging, not the old 20-result cap. A
418
+ * failed board keeps `complete:false` so a missing match is never read as absent.
419
+ * Local substring scan is deliberate: Trello's /search tokenizes on word
420
+ * boundaries and misses CJK substrings and underscore compounds (e.g.
421
+ * 'エルデリーゼ', 'ex_1055003'), which is most of this board vocabulary.
422
+ */
423
+ async function searchTrelloBoardCards(input, deps = {}) {
220
424
  const query = (input.query ?? '').trim();
221
425
  if (!query) {
222
426
  throw new Error('trello_search requires a non-empty query');
223
427
  }
224
- const limit = Math.max(1, Math.min(20, Math.floor(input.limit ?? 10)));
225
- const auth = resolveTrelloQueryAuth(deps);
226
- const fetchFn = deps.fetchFn ?? fetch;
227
- const result = await trelloGet('/search', {
228
- query,
229
- modelTypes: 'cards',
230
- cards_limit: String(limit),
231
- card_fields: 'name,due,dateLastActivity,labels',
232
- card_list: 'true',
233
- card_members: 'true',
234
- card_board: 'true',
235
- ...(auth.boardNames.size > 0 ? { idBoards: [...auth.boardNames.keys()].join(',') } : {}),
236
- }, auth, fetchFn);
237
- const fromSearch = (result.cards ?? []).map((card) => summarize(card, auth.boardNames));
238
- if (fromSearch.length >= limit || auth.boardNames.size === 0) {
239
- return fromSearch.slice(0, limit);
428
+ const scope = `search:${query.toLowerCase()}`;
429
+ const cursor = decodeRecordCursor(input.cursor);
430
+ const limit = boundedRecordLimit(input.limit);
431
+ const { snapshot, id } = await resolvePageSnapshot(cursor, scope, deps);
432
+ const needle = query.toLowerCase();
433
+ const matches = [];
434
+ for (const board of snapshot.boards) {
435
+ for (const list of board.lists) {
436
+ for (const card of list.cards) {
437
+ if (card.name.toLowerCase().includes(needle)) {
438
+ matches.push(snapshotCard(board, list.name, card));
439
+ }
440
+ }
441
+ }
240
442
  }
241
- const seen = new Set(fromSearch.map((c) => c.cardId));
242
- const scanned = (await scanBoardsForCards(query, limit, auth, fetchFn)).filter((c) => !seen.has(c.cardId));
243
- return [...fromSearch, ...scanned].slice(0, limit);
244
- }
245
- /** Full card detail, LIVE: description head, members, labels, checklists. */
246
- async function getTrelloCard(input, deps = {}) {
247
- const cardId = (input.cardId ?? '').trim();
248
- if (!cardId || !/^[A-Za-z0-9]+$/.test(cardId)) {
249
- throw new Error('trello_card requires a cardId (from trello_search results)');
443
+ const offset = cursor?.offset ?? 0;
444
+ if (offset > matches.length) {
445
+ throw new Error('trello cursor is past the end of the matches; restart the read.');
250
446
  }
251
- const auth = resolveTrelloQueryAuth(deps);
252
- const fetchFn = deps.fetchFn ?? fetch;
447
+ const slice = matches.slice(offset, offset + limit);
448
+ const nextOffset = offset + slice.length;
449
+ const boards = snapshot.boards.map((snap) => ({
450
+ boardId: snap.boardId,
451
+ board: snap.boardName,
452
+ status: snap.status,
453
+ rosterDegraded: snap.rosterDegraded,
454
+ }));
455
+ return {
456
+ query,
457
+ cards: slice,
458
+ total: matches.length,
459
+ returned: slice.length,
460
+ nextCursor: nextOffset < matches.length
461
+ ? encodeRecordCursor({ v: 1, snapshotId: id, scope, offset: nextOffset })
462
+ : null,
463
+ observedAt: new Date(snapshot.at).toISOString(),
464
+ cacheAgeMs: Math.max(0, Date.now() - snapshot.at),
465
+ readVersion: id,
466
+ coverage: {
467
+ boards,
468
+ complete: boards.length > 0 && boards.every((board) => board.status === 'ok'),
469
+ },
470
+ };
471
+ }
472
+ /** One raw card fetch, gated by the SAME board allowlist list/search obey. Returns
473
+ * null-free fields only after the returned board.id is a configured board. */
474
+ async function fetchAuthorizedCard(cardId, auth, fetchFn) {
253
475
  const card = await trelloGet(`/cards/${cardId}`, {
254
476
  fields: 'name,desc,due,dateLastActivity,labels',
255
477
  members: 'true',
@@ -259,15 +481,181 @@ async function getTrelloCard(input, deps = {}) {
259
481
  checklists: 'all',
260
482
  checkItem_fields: 'name,state',
261
483
  }, auth, fetchFn);
262
- return {
263
- ...summarize(card, auth.boardNames),
264
- description: (card.desc ?? '').slice(0, 1000),
265
- checklists: (card.checklists ?? []).slice(0, 10).map((cl) => ({
484
+ // Authorization BEFORE any field is returned: an empty configured set grants no
485
+ // board, and a token-accessible card outside the configured boards is refused
486
+ // generically - no title, board, or contents leak through an unconfigured card.
487
+ const boardId = card.board?.id;
488
+ if (auth.boardNames.size === 0 || !boardId || !auth.boardNames.has(boardId)) {
489
+ throw new Error('trello card is not available in an authorized board');
490
+ }
491
+ return card;
492
+ }
493
+ /** Stable version of the authorized fetched card content; survives sectioned
494
+ * reads and changes if the live card's text/checklists/items change. */
495
+ function cardContentVersion(card) {
496
+ const shape = {
497
+ name: card.name,
498
+ desc: card.desc ?? '',
499
+ due: card.due ?? null,
500
+ labels: (card.labels ?? []).map((l) => l.name),
501
+ checklists: (card.checklists ?? []).map((cl) => ({
502
+ id: cl.id ?? null,
266
503
  name: cl.name,
267
- items: (cl.checkItems ?? [])
268
- .slice(0, 30)
269
- .map((it) => ({ name: it.name, complete: it.state === 'complete' })),
504
+ items: (cl.checkItems ?? []).map((it) => ({ name: it.name, state: it.state })),
270
505
  })),
271
506
  };
507
+ return (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(shape)).digest('base64url').slice(0, 22);
508
+ }
509
+ /** A section continuation (offset > 0) must echo the readVersion; a changed card is rejected. */
510
+ function assertCardVersion(supplied, current, offset) {
511
+ if (offset > 0 && supplied === undefined) {
512
+ throw new Error('trello_card continuation (offset > 0) requires the readVersion from the previous section read; restart from offset 0.');
513
+ }
514
+ if (supplied !== undefined && supplied !== current) {
515
+ throw new Error('trello_card content changed since this readVersion was issued; restart the read from offset 0.');
516
+ }
517
+ }
518
+ function nonNegInt(value, field) {
519
+ if (value === undefined)
520
+ return 0;
521
+ if (!Number.isInteger(value) || value < 0) {
522
+ throw new Error(`trello_card ${field} must be a non-negative integer.`);
523
+ }
524
+ return value;
525
+ }
526
+ function boundedInt(value, field, fallback, max) {
527
+ if (value === undefined)
528
+ return fallback;
529
+ if (!Number.isInteger(value) || value < 1 || value > max) {
530
+ throw new Error(`trello_card ${field} must be an integer from 1 to ${max}.`);
531
+ }
532
+ return value;
533
+ }
534
+ /**
535
+ * The ONE deterministic key a checklist is addressed by, used identically when
536
+ * `checklists` emits headers and when `checklist_items` resolves them. A real
537
+ * Trello id (present) is used as-is; an ABSENT id falls back to an `idx:<n>`
538
+ * namespace keyed by the checklist's absolute position, which can never be
539
+ * confused with a Trello hex id - so every returned header id resolves back to
540
+ * its own items instead of an undefined-id lookup that could never match.
541
+ */
542
+ function checklistKey(checklist, index) {
543
+ return checklist.id ?? `idx:${index}`;
544
+ }
545
+ /**
546
+ * Sectioned card detail. `summary` (default) is metadata plus description length
547
+ * and checklist/item counts; `description` pages the text by Unicode CODE POINTS
548
+ * (offset/limit); `checklists` pages whole checklist headers by RECORD; and
549
+ * `checklist_items` pages whole item records of one checklist. Every long tail is
550
+ * reachable through the returned continuation - nothing is silently sliced. The
551
+ * board allowlist is enforced before ANY field is returned; list/search/detail
552
+ * all agree on the same configured boards.
553
+ */
554
+ async function getTrelloCardDetail(input, deps = {}) {
555
+ const cardId = (input.cardId ?? '').trim();
556
+ if (!cardId || !/^[A-Za-z0-9]+$/.test(cardId)) {
557
+ throw new Error('trello_card requires a cardId (from trello_search results)');
558
+ }
559
+ const section = input.section ?? 'summary';
560
+ if (!['summary', 'description', 'checklists', 'checklist_items'].includes(section)) {
561
+ throw new Error('trello_card section must be one of summary|description|checklists|checklist_items.');
562
+ }
563
+ const auth = resolveTrelloQueryAuth(deps);
564
+ const fetchFn = deps.fetchFn ?? fetch;
565
+ // Authorize (board allowlist) BEFORE any field is disclosed, THEN version.
566
+ const card = await fetchAuthorizedCard(cardId, auth, fetchFn);
567
+ const readVersion = cardContentVersion(card);
568
+ const checklists = card.checklists ?? [];
569
+ if (section === 'summary') {
570
+ const base = summarize(card, auth.boardNames);
571
+ return {
572
+ cardId,
573
+ section: 'summary',
574
+ name: base.name,
575
+ board: base.board,
576
+ list: base.list,
577
+ labels: base.labels,
578
+ assignees: base.assignees,
579
+ due: base.due,
580
+ lastActivity: base.lastActivity,
581
+ descriptionLength: Array.from(card.desc ?? '').length,
582
+ checklistCount: checklists.length,
583
+ itemCount: checklists.reduce((sum, cl) => sum + (cl.checkItems?.length ?? 0), 0),
584
+ readVersion,
585
+ };
586
+ }
587
+ if (section === 'description') {
588
+ const points = Array.from(card.desc ?? '');
589
+ const offset = nonNegInt(input.offset, 'offset');
590
+ assertCardVersion(input.readVersion, readVersion, offset);
591
+ const limit = boundedInt(input.limit, 'limit', DESC_DEFAULT_LIMIT, DESC_MAX_LIMIT);
592
+ const start = Math.min(offset, points.length);
593
+ const slice = points.slice(start, start + limit);
594
+ const end = start + slice.length;
595
+ const nextOffset = end < points.length ? end : null;
596
+ return {
597
+ cardId,
598
+ section: 'description',
599
+ content: slice.join(''),
600
+ offset,
601
+ limit,
602
+ total: points.length,
603
+ nextOffset,
604
+ complete: nextOffset === null,
605
+ readVersion,
606
+ };
607
+ }
608
+ if (section === 'checklists') {
609
+ const offset = nonNegInt(input.offset, 'offset');
610
+ assertCardVersion(input.readVersion, readVersion, offset);
611
+ const limit = boundedInt(input.limit, 'limit', CHECKLIST_DEFAULT_LIMIT, CHECKLIST_MAX_LIMIT);
612
+ const slice = checklists.slice(offset, offset + limit).map((cl, index) => ({
613
+ id: checklistKey(cl, offset + index),
614
+ name: cl.name,
615
+ itemCount: cl.checkItems?.length ?? 0,
616
+ completeCount: (cl.checkItems ?? []).filter((it) => it.state === 'complete').length,
617
+ }));
618
+ const nextOffset = offset + slice.length < checklists.length ? offset + slice.length : null;
619
+ return {
620
+ cardId,
621
+ section: 'checklists',
622
+ checklists: slice,
623
+ offset,
624
+ limit,
625
+ total: checklists.length,
626
+ nextOffset,
627
+ readVersion,
628
+ };
629
+ }
630
+ // checklist_items
631
+ const checklistId = (input.checklistId ?? '').trim();
632
+ if (!checklistId) {
633
+ throw new Error('trello_card section checklist_items requires checklistId.');
634
+ }
635
+ // Resolve by the SAME deterministic key the headers emit, so an absent-id
636
+ // checklist (addressed as idx:<n>) reaches its items too.
637
+ const checklist = checklists.find((cl, index) => checklistKey(cl, index) === checklistId);
638
+ if (!checklist) {
639
+ throw new Error(`trello_card unknown checklistId '${checklistId}' on this card.`);
640
+ }
641
+ const items = checklist.checkItems ?? [];
642
+ const offset = nonNegInt(input.offset, 'offset');
643
+ assertCardVersion(input.readVersion, readVersion, offset);
644
+ const limit = boundedInt(input.limit, 'limit', ITEM_DEFAULT_LIMIT, ITEM_MAX_LIMIT);
645
+ const slice = items
646
+ .slice(offset, offset + limit)
647
+ .map((it) => ({ name: it.name, complete: it.state === 'complete' }));
648
+ const nextOffset = offset + slice.length < items.length ? offset + slice.length : null;
649
+ return {
650
+ cardId,
651
+ section: 'checklist_items',
652
+ checklistId,
653
+ items: slice,
654
+ offset,
655
+ limit,
656
+ total: items.length,
657
+ nextOffset,
658
+ readVersion,
659
+ };
272
660
  }
273
661
  //# sourceMappingURL=query-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-tools.js","sourceRoot":"","sources":["../../../src/connectors/trello/query-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-tools.js","sourceRoot":"","sources":["../../../src/connectors/trello/query-tools.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export interface CodeActApiResponse {
18
18
  code?: string;
19
19
  }>;
20
20
  hostToolsInvoked?: string[];
21
+ untrustedExternalEvidence?: boolean;
21
22
  toolCalls?: {
22
23
  name: string;
23
24
  input: Record<string, unknown>;