@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.
- package/dist/agent/agent-loop.d.ts.map +1 -1
- package/dist/agent/agent-loop.js +9 -11
- package/dist/agent/agent-loop.js.map +1 -1
- package/dist/agent/code-act/constants.d.ts +4 -1
- package/dist/agent/code-act/constants.d.ts.map +1 -1
- package/dist/agent/code-act/constants.js +34 -97
- package/dist/agent/code-act/constants.js.map +1 -1
- package/dist/agent/code-act/host-bridge.d.ts +2 -1
- package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
- package/dist/agent/code-act/host-bridge.js +227 -29
- package/dist/agent/code-act/host-bridge.js.map +1 -1
- package/dist/agent/code-act/sandbox.d.ts +1 -0
- package/dist/agent/code-act/sandbox.d.ts.map +1 -1
- package/dist/agent/code-act/sandbox.js +33 -6
- package/dist/agent/code-act/sandbox.js.map +1 -1
- package/dist/agent/code-act/tool-catalog.d.ts +28 -0
- package/dist/agent/code-act/tool-catalog.d.ts.map +1 -0
- package/dist/agent/code-act/tool-catalog.js +146 -0
- package/dist/agent/code-act/tool-catalog.js.map +1 -0
- package/dist/agent/code-act/tool-policy.d.ts +2 -1
- package/dist/agent/code-act/tool-policy.d.ts.map +1 -1
- package/dist/agent/code-act/tool-policy.js +2 -1
- package/dist/agent/code-act/tool-policy.js.map +1 -1
- package/dist/agent/code-act/type-definition-generator.d.ts +6 -0
- package/dist/agent/code-act/type-definition-generator.d.ts.map +1 -1
- package/dist/agent/code-act/type-definition-generator.js +40 -21
- package/dist/agent/code-act/type-definition-generator.js.map +1 -1
- package/dist/agent/gateway-tool-executor.d.ts +6 -0
- package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
- package/dist/agent/gateway-tool-executor.js +102 -58
- package/dist/agent/gateway-tool-executor.js.map +1 -1
- package/dist/agent/gateway-tools.md +7 -7
- package/dist/agent/tool-registry.d.ts.map +1 -1
- package/dist/agent/tool-registry.js +22 -13
- package/dist/agent/tool-registry.js.map +1 -1
- package/dist/api/graph-api-types.d.ts +3 -0
- package/dist/api/graph-api-types.d.ts.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +7 -0
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/runtime/code-act-executor.d.ts.map +1 -1
- package/dist/cli/runtime/code-act-executor.js +5 -0
- package/dist/cli/runtime/code-act-executor.js.map +1 -1
- package/dist/connectors/kagemusha/query-tools.d.ts +57 -0
- package/dist/connectors/kagemusha/query-tools.d.ts.map +1 -1
- package/dist/connectors/kagemusha/query-tools.js +247 -0
- package/dist/connectors/kagemusha/query-tools.js.map +1 -1
- package/dist/connectors/private-connector-policy.d.ts +32 -6
- package/dist/connectors/private-connector-policy.d.ts.map +1 -1
- package/dist/connectors/private-connector-policy.js +40 -5
- package/dist/connectors/private-connector-policy.js.map +1 -1
- package/dist/connectors/trello/query-tools.d.ts +148 -16
- package/dist/connectors/trello/query-tools.d.ts.map +1 -1
- package/dist/connectors/trello/query-tools.js +453 -65
- package/dist/connectors/trello/query-tools.js.map +1 -1
- package/dist/mcp/code-act-api-client.d.ts +1 -0
- package/dist/mcp/code-act-api-client.d.ts.map +1 -1
- package/dist/mcp/code-act-api-client.js.map +1 -1
- package/dist/mcp/code-act-server.js +8 -6
- package/dist/mcp/code-act-server.js.map +1 -1
- package/dist/mcp/code-act-terminal-transport.d.ts +2 -0
- package/dist/mcp/code-act-terminal-transport.d.ts.map +1 -1
- package/dist/mcp/code-act-terminal-transport.js +18 -6
- package/dist/mcp/code-act-terminal-transport.js.map +1 -1
- package/dist/multi-agent/agent-process-manager.d.ts.map +1 -1
- package/dist/multi-agent/agent-process-manager.js +1 -5
- package/dist/multi-agent/agent-process-manager.js.map +1 -1
- package/dist/operator/board-read-views.d.ts +49 -0
- package/dist/operator/board-read-views.d.ts.map +1 -0
- package/dist/operator/board-read-views.js +207 -0
- package/dist/operator/board-read-views.js.map +1 -0
- package/dist/operator/task-ledger.d.ts +85 -0
- package/dist/operator/task-ledger.d.ts.map +1 -1
- package/dist/operator/task-ledger.js +128 -0
- package/dist/operator/task-ledger.js.map +1 -1
- package/dist/operator/task-list-views.d.ts +91 -0
- package/dist/operator/task-list-views.d.ts.map +1 -0
- package/dist/operator/task-list-views.js +483 -0
- package/dist/operator/task-list-views.js.map +1 -0
- package/dist/operator/workorder-consumer.js +1 -1
- package/dist/operator/workorder-consumer.js.map +1 -1
- package/dist/sqlite.d.ts +7 -0
- package/dist/sqlite.d.ts.map +1 -1
- package/dist/sqlite.js +8 -0
- package/dist/sqlite.js.map +1 -1
- 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.
|
|
22
|
-
exports.
|
|
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
|
-
|
|
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
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
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
|
|
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
|
|
225
|
-
const
|
|
226
|
-
const
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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
|
|
242
|
-
|
|
243
|
-
|
|
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
|
|
252
|
-
const
|
|
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
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
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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"}
|