@collage-dam/mcp-server 0.1.6 → 0.1.7
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/CHANGELOG.md +54 -0
- package/dist/tools/search/cursor.d.ts +38 -0
- package/dist/tools/search/cursor.d.ts.map +1 -0
- package/dist/tools/search/cursor.js +95 -0
- package/dist/tools/search/cursor.js.map +1 -0
- package/dist/tools/search/facets.d.ts +6 -0
- package/dist/tools/search/facets.d.ts.map +1 -1
- package/dist/tools/search/facets.js +5 -3
- package/dist/tools/search/facets.js.map +1 -1
- package/dist/tools/search/search-assets.d.ts +0 -1
- package/dist/tools/search/search-assets.d.ts.map +1 -1
- package/dist/tools/search/search-assets.js +71 -38
- package/dist/tools/search/search-assets.js.map +1 -1
- package/dist/tools/search/search-collections.d.ts.map +1 -1
- package/dist/tools/search/search-collections.js +48 -17
- package/dist/tools/search/search-collections.js.map +1 -1
- package/dist/tools/search/types.d.ts +58 -0
- package/dist/tools/search/types.d.ts.map +1 -1
- package/dist/tools/search/types.js +46 -0
- package/dist/tools/search/types.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,60 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.7] — 2026-05-22
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **`search_assets` / `search_collections` pagination contract was
|
|
14
|
+
non-functional.** Three stacked symptoms with one root cause; all
|
|
15
|
+
three shipped fixed in this release:
|
|
16
|
+
|
|
17
|
+
1. **`per_page` silently overridden.** Caller requests `per_page: 250`
|
|
18
|
+
on a verbose projection; response returns ~20 hits because the
|
|
19
|
+
response-token budget caps mid-page. The caller had no way to know
|
|
20
|
+
the effective page size.
|
|
21
|
+
2. **`next_cursor` encoded a count, not position.** The cursor the
|
|
22
|
+
response emitted was just the truncation count (e.g. `"29"`).
|
|
23
|
+
Feeding it back did not deterministically continue.
|
|
24
|
+
3. **`total` vs. retrievable mismatch.** Because (2) was non-functional,
|
|
25
|
+
`total - per_page_effective_cap > 0` meant unreachable assets
|
|
26
|
+
through the documented contract — a correctness bug, not a doc
|
|
27
|
+
bug.
|
|
28
|
+
|
|
29
|
+
Fix shape:
|
|
30
|
+
- The response budget is now applied *up front*: `per_page` is
|
|
31
|
+
clamped to the projection's budget-derived max (compact ~60,
|
|
32
|
+
verbose ~20) and the upstream call uses the clamped value. No more
|
|
33
|
+
surprise truncation mid-page in the common case.
|
|
34
|
+
- `next_cursor` is now an opaque base64url-encoded JSON `{ v, p, n }`
|
|
35
|
+
that round-trips the page and the effective per_page. Pass it back
|
|
36
|
+
as `cursor` on the next call. Cursor takes precedence over `page`
|
|
37
|
+
and `per_page` in the input.
|
|
38
|
+
- New response fields: `effective_per_page` (what the upstream
|
|
39
|
+
actually used) and `truncation_reason` (`per_page_clamped` /
|
|
40
|
+
`token_cap` / `null`).
|
|
41
|
+
- When the budget *does* still trigger mid-page (heavy hits), the
|
|
42
|
+
cursor advances by delivered count — no asset is skipped.
|
|
43
|
+
|
|
44
|
+
Reported by Ross 2026-05-14 (per_page symptom); promoted to HIGH and
|
|
45
|
+
scope widened 2026-05-19 after `start_library_health_audit` proved
|
|
46
|
+
the cursor was a no-op. New live contract test
|
|
47
|
+
(`tests/contract/search.contract.test.ts`: cursor advances through
|
|
48
|
+
pages without duplicates or gaps) locks the fix against BREZ.
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
- `next_step_hints` now emits `more_results_available` when a cursor
|
|
52
|
+
exists but no truncation occurred, and `response_truncated` when the
|
|
53
|
+
budget did clamp or cap. Previously surfaced `response_truncated`
|
|
54
|
+
unconditionally on `truncated: true`, which conflated the clamp and
|
|
55
|
+
cap cases. The wording for both points the caller at `next_cursor`
|
|
56
|
+
rather than `page+1`.
|
|
57
|
+
|
|
58
|
+
### Removed
|
|
59
|
+
- `decodePageCursor` (the legacy `"page:N"` base64 cursor) is gone.
|
|
60
|
+
Callers that were decoding the cursor manually should switch to
|
|
61
|
+
treating it as opaque and round-tripping it via the new `cursor`
|
|
62
|
+
input field.
|
|
63
|
+
|
|
10
64
|
## [0.1.6] — 2026-05-21
|
|
11
65
|
|
|
12
66
|
### Fixed
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/** Current cursor version. Bump on incompatible shape changes. */
|
|
2
|
+
export declare const CURSOR_VERSION = 1;
|
|
3
|
+
export interface CursorPayload {
|
|
4
|
+
page: number;
|
|
5
|
+
per_page: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Encode a `(page, per_page)` continuation handle as an opaque
|
|
9
|
+
* base64url string. The opacity is deliberate — callers MUST round-trip
|
|
10
|
+
* the cursor verbatim; the encoding may change without notice.
|
|
11
|
+
*/
|
|
12
|
+
export declare function encodeSearchCursor(payload: CursorPayload): string;
|
|
13
|
+
/**
|
|
14
|
+
* Decode a previously-emitted cursor. Returns `null` if the cursor is
|
|
15
|
+
* malformed, version-mismatched, or otherwise unparseable. Callers
|
|
16
|
+
* should treat a null result as "fall back to page/per_page in the
|
|
17
|
+
* input" rather than as an error.
|
|
18
|
+
*/
|
|
19
|
+
export declare function decodeSearchCursor(cursor: string): CursorPayload | null;
|
|
20
|
+
export declare const PER_HIT_TOKEN_ESTIMATE: {
|
|
21
|
+
readonly compact: 200;
|
|
22
|
+
readonly verbose: 600;
|
|
23
|
+
};
|
|
24
|
+
export type Projection = keyof typeof PER_HIT_TOKEN_ESTIMATE;
|
|
25
|
+
/**
|
|
26
|
+
* Maximum `per_page` the response budget will tolerate for a given
|
|
27
|
+
* projection. Below this, the budget safety-net won't trigger; at or
|
|
28
|
+
* above, it might (and the cursor will reflect the budget-clamped
|
|
29
|
+
* size on continuation).
|
|
30
|
+
*/
|
|
31
|
+
export declare function budgetMaxPerPage(projection: Projection): number;
|
|
32
|
+
/**
|
|
33
|
+
* Compute the page size that will actually be requested upstream and
|
|
34
|
+
* returned to the caller. Caps the caller's requested `per_page` at
|
|
35
|
+
* the projection-specific budget max.
|
|
36
|
+
*/
|
|
37
|
+
export declare function effectivePerPage(requested: number, projection: Projection): number;
|
|
38
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../src/tools/search/cursor.ts"],"names":[],"mappings":"AAuBA,kEAAkE;AAClE,eAAO,MAAM,cAAc,IAAI,CAAC;AAQhC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAOjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CASvE;AAkBD,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,sBAAsB,CAAC;AAE7D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,GACrB,MAAM,CAER"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
// ── Search pagination cursor ─────────────────────────────────────────
|
|
2
|
+
// Encodes the position + page size needed to continue a search through
|
|
3
|
+
// `search_assets` or `search_collections`. Replaces the prior "page:N"
|
|
4
|
+
// string cursor (which encoded position but not page size) and the
|
|
5
|
+
// `String(offset)` shape `applyResponseBudget` was emitting on
|
|
6
|
+
// token-cap truncation (which encoded neither stably).
|
|
7
|
+
//
|
|
8
|
+
// Shape: base64url-encoded JSON `{ v, p, n }`:
|
|
9
|
+
// v — cursor schema version (currently 1; bump on shape changes)
|
|
10
|
+
// p — upstream page number to fetch next
|
|
11
|
+
// n — `per_page` to use on that fetch (the *effective* page size,
|
|
12
|
+
// which is what the budget actually allows for the projection,
|
|
13
|
+
// not the requested page size)
|
|
14
|
+
//
|
|
15
|
+
// Why both `p` and `n`: requesting `per_page: 250` on a verbose
|
|
16
|
+
// projection silently truncates to ~20–29 hits because of the response
|
|
17
|
+
// token budget — and the prior cursor didn't carry forward `n`, so a
|
|
18
|
+
// caller resuming from the cursor would request `per_page: 250` again
|
|
19
|
+
// and re-hit the same cap. By round-tripping the effective `n`, a
|
|
20
|
+
// well-behaved caller stays inside the budget on every page.
|
|
21
|
+
import { z } from 'zod';
|
|
22
|
+
/** Current cursor version. Bump on incompatible shape changes. */
|
|
23
|
+
export const CURSOR_VERSION = 1;
|
|
24
|
+
const CursorPayloadSchema = z.object({
|
|
25
|
+
v: z.literal(1),
|
|
26
|
+
p: z.number().int().min(1),
|
|
27
|
+
n: z.number().int().min(1),
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* Encode a `(page, per_page)` continuation handle as an opaque
|
|
31
|
+
* base64url string. The opacity is deliberate — callers MUST round-trip
|
|
32
|
+
* the cursor verbatim; the encoding may change without notice.
|
|
33
|
+
*/
|
|
34
|
+
export function encodeSearchCursor(payload) {
|
|
35
|
+
const json = JSON.stringify({
|
|
36
|
+
v: CURSOR_VERSION,
|
|
37
|
+
p: payload.page,
|
|
38
|
+
n: payload.per_page,
|
|
39
|
+
});
|
|
40
|
+
return Buffer.from(json, 'utf-8').toString('base64url');
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Decode a previously-emitted cursor. Returns `null` if the cursor is
|
|
44
|
+
* malformed, version-mismatched, or otherwise unparseable. Callers
|
|
45
|
+
* should treat a null result as "fall back to page/per_page in the
|
|
46
|
+
* input" rather than as an error.
|
|
47
|
+
*/
|
|
48
|
+
export function decodeSearchCursor(cursor) {
|
|
49
|
+
try {
|
|
50
|
+
const decoded = Buffer.from(cursor, 'base64url').toString('utf-8');
|
|
51
|
+
const parsed = CursorPayloadSchema.safeParse(JSON.parse(decoded));
|
|
52
|
+
if (!parsed.success)
|
|
53
|
+
return null;
|
|
54
|
+
return { page: parsed.data.p, per_page: parsed.data.n };
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// ── Effective per_page (projection-aware budget pre-cap) ─────────────
|
|
61
|
+
//
|
|
62
|
+
// Per-projection token estimates (chars/4 → token estimate, matching
|
|
63
|
+
// `estimateTokens()` in response-budget.ts). These are *generous* — we'd
|
|
64
|
+
// rather under-request from upstream and trust the safety-net budget
|
|
65
|
+
// check than over-request and hit the cap repeatedly.
|
|
66
|
+
//
|
|
67
|
+
// Compact hit: id, display_file_name, thumbnail_file (presigned S3 URLs
|
|
68
|
+
// run ~500 chars), modified_at, plus JSON structural overhead. ~800
|
|
69
|
+
// chars / ~200 tokens per hit budgeted; real hits vary.
|
|
70
|
+
//
|
|
71
|
+
// Verbose hit: full indexed-field set including tags arrays, breadcrumb
|
|
72
|
+
// arrays, multiple URLs. ~2400 chars / ~600 tokens per hit budgeted.
|
|
73
|
+
import { HARD_CAP_TOKENS } from '../../conventions/response-budget.js';
|
|
74
|
+
export const PER_HIT_TOKEN_ESTIMATE = {
|
|
75
|
+
compact: 200,
|
|
76
|
+
verbose: 600,
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Maximum `per_page` the response budget will tolerate for a given
|
|
80
|
+
* projection. Below this, the budget safety-net won't trigger; at or
|
|
81
|
+
* above, it might (and the cursor will reflect the budget-clamped
|
|
82
|
+
* size on continuation).
|
|
83
|
+
*/
|
|
84
|
+
export function budgetMaxPerPage(projection) {
|
|
85
|
+
return Math.max(1, Math.floor(HARD_CAP_TOKENS / PER_HIT_TOKEN_ESTIMATE[projection]));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Compute the page size that will actually be requested upstream and
|
|
89
|
+
* returned to the caller. Caps the caller's requested `per_page` at
|
|
90
|
+
* the projection-specific budget max.
|
|
91
|
+
*/
|
|
92
|
+
export function effectivePerPage(requested, projection) {
|
|
93
|
+
return Math.min(requested, budgetMaxPerPage(projection));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/tools/search/cursor.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,uEAAuE;AACvE,uEAAuE;AACvE,mEAAmE;AACnE,+DAA+D;AAC/D,uDAAuD;AACvD,EAAE;AACF,+CAA+C;AAC/C,oEAAoE;AACpE,4CAA4C;AAC5C,qEAAqE;AACrE,sEAAsE;AACtE,sCAAsC;AACtC,EAAE;AACF,gEAAgE;AAChE,uEAAuE;AACvE,qEAAqE;AACrE,sEAAsE;AACtE,kEAAkE;AAClE,6DAA6D;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,kEAAkE;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACf,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAOH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC,EAAE,cAAc;QACjB,CAAC,EAAE,OAAO,CAAC,IAAI;QACf,CAAC,EAAE,OAAO,CAAC,QAAQ;KACpB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QACjC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,EAAE;AACF,qEAAqE;AACrE,yEAAyE;AACzE,qEAAqE;AACrE,sDAAsD;AACtD,EAAE;AACF,wEAAwE;AACxE,oEAAoE;AACpE,wDAAwD;AACxD,EAAE;AACF,wEAAwE;AACxE,qEAAqE;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,OAAO,EAAE,GAAG;IACZ,OAAO,EAAE,GAAG;CACJ,CAAC;AAIX;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAsB;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,UAAsB;IAEtB,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -13,6 +13,12 @@ interface HintGeneratorContext {
|
|
|
13
13
|
hasTags: boolean;
|
|
14
14
|
/** Number of hits where `tags` is empty/missing. */
|
|
15
15
|
untaggedCount: number;
|
|
16
|
+
/**
|
|
17
|
+
* True when the response includes a non-null `next_cursor` (i.e.
|
|
18
|
+
* more results exist beyond this page). Used to emit a continuation
|
|
19
|
+
* hint with concrete `suggested_args` the LLM can pass back verbatim.
|
|
20
|
+
*/
|
|
21
|
+
hasNextCursor: boolean;
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
24
|
* Generate structured next-step hints for a `search_assets` response.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../../src/tools/search/facets.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EACV,eAAe,EAEf,YAAY,EACZ,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,EACvC,IAAI,EAAE,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC,EACtD,IAAI,SAAK,GACR,YAAY,CAkCd;AAqCD,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,OAAO,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"facets.d.ts","sourceRoot":"","sources":["../../../src/tools/search/facets.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EACV,eAAe,EAEf,YAAY,EACZ,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,aAAa,CAAC,aAAa,CAAC,EACvC,IAAI,EAAE,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC,EACtD,IAAI,SAAK,GACR,YAAY,CAkCd;AAqCD,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,OAAO,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,oBAAoB,GACxB,kBAAkB,EAAE,CA+BtB;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GACZ,kBAAkB,EAAE,CAWtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC9C,MAAM,CAWR"}
|
|
@@ -97,11 +97,13 @@ export function buildAssetSearchNextSteps(ctx) {
|
|
|
97
97
|
reason: `${ctx.untaggedCount} hit(s) have no tags — consider running the tagging-hygiene audit.`,
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
|
-
if (ctx.
|
|
100
|
+
if (ctx.hasNextCursor) {
|
|
101
101
|
hints.push({
|
|
102
102
|
tool: 'search_assets',
|
|
103
|
-
reason_code: 'response_truncated',
|
|
104
|
-
reason:
|
|
103
|
+
reason_code: ctx.truncated ? 'response_truncated' : 'more_results_available',
|
|
104
|
+
reason: ctx.truncated
|
|
105
|
+
? 'Result page was clamped or capped to fit the response budget. Use the returned next_cursor to continue.'
|
|
106
|
+
: 'More results exist beyond this page. Pass next_cursor back as `cursor` to fetch the next page.',
|
|
105
107
|
});
|
|
106
108
|
}
|
|
107
109
|
if (ctx.found > 1000) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facets.js","sourceRoot":"","sources":["../../../src/tools/search/facets.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"facets.js","sourceRoot":"","sources":["../../../src/tools/search/facets.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,7 +37,6 @@ export declare function runSearchAssets(client: CollageSearchClient, workspaceId
|
|
|
37
37
|
};
|
|
38
38
|
isError?: boolean;
|
|
39
39
|
}>;
|
|
40
|
-
export declare function decodePageCursor(cursor: string): number | null;
|
|
41
40
|
/**
|
|
42
41
|
* Parse a comma-separated `query_by` value and return any tokens that
|
|
43
42
|
* are not in the allowed field set. Empty result = all valid.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-assets.d.ts","sourceRoot":"","sources":["../../../src/tools/search/search-assets.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAa9D,OAAO,EASL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,
|
|
1
|
+
{"version":3,"file":"search-assets.d.ts","sourceRoot":"","sources":["../../../src/tools/search/search-assets.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAa9D,OAAO,EASL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAGxB,MAAM,YAAY,CAAC;AAOpB,eAAO,MAAM,yBAAyB,QAiBxB,CAAC;AAEf,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,MAAM,IAEL,UAAU,OAAO;aAiBtB,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;uBAC3B,kBAAkB,GAAG;QAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;cAClH,OAAO;GAVlB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,iBAAiB,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IACT,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,EAAE,kBAAkB,GAAG;QAAE,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7H,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CA4JD;AAkCD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,GAC3B,MAAM,EAAE,CAOV"}
|
|
@@ -16,6 +16,7 @@ import { searchWorkspaceScoped } from '../../typesense.js';
|
|
|
16
16
|
import { buildAssetFilterClauses, joinFilterClauses, } from './filter-builder.js';
|
|
17
17
|
import { buildAssetSearchNextSteps, buildSearchFacets, countUntagged, } from './facets.js';
|
|
18
18
|
import { CompactAssetHitSchema, DEFAULT_FACET_BY_ASSETS, DEFAULT_MAX_FACET_VALUES, DEFAULT_QUERY_BY_ASSETS, SearchAssetsInputSchema, VALID_QUERY_BY_ASSETS, VerboseAssetHitSchema, } from './types.js';
|
|
19
|
+
import { decodeSearchCursor, effectivePerPage, encodeSearchCursor, } from './cursor.js';
|
|
19
20
|
export const SEARCH_ASSETS_DESCRIPTION = 'Full-text + faceted search over the workspace digital-asset library. ' +
|
|
20
21
|
'Backed by Typesense Cloud; returns hits, facets (tags, file_type, ' +
|
|
21
22
|
'date histogram), pagination cursor, and structured next_step_hints. ' +
|
|
@@ -25,7 +26,14 @@ export const SEARCH_ASSETS_DESCRIPTION = 'Full-text + faceted search over the wo
|
|
|
25
26
|
'created_after/before, modified_after/before. ' +
|
|
26
27
|
'Optional `query_by` (comma-separated, no spaces) overrides the searched ' +
|
|
27
28
|
`field set; valid values are ${VALID_QUERY_BY_ASSETS.join(', ')} — ` +
|
|
28
|
-
'unknown field names are rejected with a VALIDATION error.
|
|
29
|
+
'unknown field names are rejected with a VALIDATION error. ' +
|
|
30
|
+
'Pagination: pass `next_cursor` from the previous response back as ' +
|
|
31
|
+
'`cursor` to fetch the next page. The cursor encodes both page and ' +
|
|
32
|
+
'effective per_page (auto-clamped to fit the response-token budget for ' +
|
|
33
|
+
'the projection — compact ~60/page, verbose ~20/page). `effective_per_page` ' +
|
|
34
|
+
'in the response reflects what was actually used; `truncated` + ' +
|
|
35
|
+
'`truncation_reason` indicate when clamping or budget capping occurred. ' +
|
|
36
|
+
'Read-only.';
|
|
29
37
|
export const SEARCH_ASSETS_COLLECTION = 'digital_assets';
|
|
30
38
|
/**
|
|
31
39
|
* Build the handler for `search_assets`. Accepts a `CollageSearchClient`
|
|
@@ -58,13 +66,25 @@ export async function runSearchAssets(client, workspaceId, input, requestId) {
|
|
|
58
66
|
const includeFields = input.projection === 'compact'
|
|
59
67
|
? 'id,display_file_name,thumbnail_file,modified_at'
|
|
60
68
|
: undefined;
|
|
69
|
+
// Resolve pagination from cursor when present; otherwise from
|
|
70
|
+
// input.page / input.per_page. Cursor takes precedence so that
|
|
71
|
+
// continuing from a previous response is the path of least friction —
|
|
72
|
+
// callers don't have to remember which per_page they originally used.
|
|
73
|
+
const cursorDecoded = input.cursor !== undefined ? decodeSearchCursor(input.cursor) : null;
|
|
74
|
+
const requestedPage = cursorDecoded?.page ?? input.page;
|
|
75
|
+
const requestedPerPage = cursorDecoded?.per_page ?? input.per_page;
|
|
76
|
+
// Clamp per_page to what the projection's response-token budget can
|
|
77
|
+
// realistically carry. The HARD_CAP safety net in applyResponseBudget
|
|
78
|
+
// still runs below as belt-and-suspenders for unusually heavy hits.
|
|
79
|
+
const effPerPage = effectivePerPage(requestedPerPage, input.projection);
|
|
80
|
+
const perPageClamped = effPerPage < requestedPerPage;
|
|
61
81
|
const result = await searchWorkspaceScoped(client, SEARCH_ASSETS_COLLECTION, workspaceId, {
|
|
62
82
|
q: input.q,
|
|
63
83
|
query_by: queryBy,
|
|
64
84
|
...(filterBy.length > 0 ? { filter_by: filterBy } : {}),
|
|
65
85
|
sort_by: input.sort_by,
|
|
66
|
-
page:
|
|
67
|
-
per_page:
|
|
86
|
+
page: requestedPage,
|
|
87
|
+
per_page: effPerPage,
|
|
68
88
|
facet_by: DEFAULT_FACET_BY_ASSETS,
|
|
69
89
|
max_facet_values: DEFAULT_MAX_FACET_VALUES,
|
|
70
90
|
// `'fallback'` runs Typesense's full search pipeline (exact → typo →
|
|
@@ -89,24 +109,51 @@ export async function runSearchAssets(client, workspaceId, input, requestId) {
|
|
|
89
109
|
// skipping them so a single bad index entry doesn't fail the whole
|
|
90
110
|
// response.
|
|
91
111
|
const hits = projectHits(result.hits, input.projection);
|
|
92
|
-
//
|
|
93
|
-
// is
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
-
//
|
|
97
|
-
//
|
|
112
|
+
// Safety-net budget check. With per_page already clamped above, the
|
|
113
|
+
// typical case is no truncation here — but unusually heavy hits
|
|
114
|
+
// (multiple long presigned URLs in one row, very long descriptions)
|
|
115
|
+
// can still cross the line. When that happens, the cursor advances
|
|
116
|
+
// by the *delivered* count rather than a fixed page, so no asset is
|
|
117
|
+
// skipped.
|
|
98
118
|
const budget = applyResponseBudget(hits, {
|
|
99
119
|
serialize: (item) => JSON.stringify(item),
|
|
100
|
-
offset: (
|
|
101
|
-
pageSize:
|
|
120
|
+
offset: (requestedPage - 1) * effPerPage,
|
|
121
|
+
pageSize: effPerPage,
|
|
102
122
|
});
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
?
|
|
107
|
-
:
|
|
108
|
-
?
|
|
123
|
+
const tokenCapped = budget.truncated;
|
|
124
|
+
const truncated = perPageClamped || tokenCapped;
|
|
125
|
+
const truncation_reason = tokenCapped
|
|
126
|
+
? 'token_cap'
|
|
127
|
+
: perPageClamped
|
|
128
|
+
? 'per_page_clamped'
|
|
109
129
|
: null;
|
|
130
|
+
// Total assets we'll have surfaced after this response.
|
|
131
|
+
const seenSoFar = (requestedPage - 1) * effPerPage + budget.data.length;
|
|
132
|
+
const moreAvailable = seenSoFar < result.found;
|
|
133
|
+
// Encode the continuation. When the budget caps mid-page we cannot
|
|
134
|
+
// safely advance the page number because we've delivered only a
|
|
135
|
+
// prefix of the upstream page — so we re-fetch the same page with a
|
|
136
|
+
// smaller per_page so the next call covers the gap.
|
|
137
|
+
let next_cursor = null;
|
|
138
|
+
if (moreAvailable) {
|
|
139
|
+
if (tokenCapped) {
|
|
140
|
+
// Shrink per_page to what just fit, advance to the next page.
|
|
141
|
+
const shrunkPerPage = Math.max(1, budget.data.length);
|
|
142
|
+
const itemsBeforeThisPage = (requestedPage - 1) * effPerPage;
|
|
143
|
+
const nextPage = Math.floor((itemsBeforeThisPage + budget.data.length) / shrunkPerPage) +
|
|
144
|
+
1;
|
|
145
|
+
next_cursor = encodeSearchCursor({
|
|
146
|
+
page: nextPage,
|
|
147
|
+
per_page: shrunkPerPage,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
next_cursor = encodeSearchCursor({
|
|
152
|
+
page: requestedPage + 1,
|
|
153
|
+
per_page: effPerPage,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
110
157
|
const facets = buildSearchFacets(result.facet_counts, budget.data);
|
|
111
158
|
// Count untagged from raw upstream rows (clipped to what survived the
|
|
112
159
|
// budget) — the projected payload strips `tags` when projection=compact,
|
|
@@ -114,17 +161,20 @@ export async function runSearchAssets(client, workspaceId, input, requestId) {
|
|
|
114
161
|
const untagged = countUntagged(result.hits.slice(0, budget.data.length));
|
|
115
162
|
const next_step_hints = buildAssetSearchNextSteps({
|
|
116
163
|
found: result.found,
|
|
117
|
-
truncated
|
|
164
|
+
truncated,
|
|
118
165
|
hasTags: facets.tags.length > 0,
|
|
119
166
|
untaggedCount: untagged,
|
|
167
|
+
hasNextCursor: next_cursor !== null,
|
|
120
168
|
});
|
|
121
169
|
const output = {
|
|
122
170
|
hits: budget.data,
|
|
123
171
|
total: result.found,
|
|
124
|
-
page:
|
|
125
|
-
per_page:
|
|
172
|
+
page: requestedPage,
|
|
173
|
+
per_page: requestedPerPage,
|
|
174
|
+
effective_per_page: effPerPage,
|
|
126
175
|
next_cursor,
|
|
127
|
-
truncated
|
|
176
|
+
truncated,
|
|
177
|
+
truncation_reason,
|
|
128
178
|
facets,
|
|
129
179
|
next_step_hints,
|
|
130
180
|
request_id: requestId,
|
|
@@ -144,23 +194,6 @@ function projectHits(rawHits, projection) {
|
|
|
144
194
|
}
|
|
145
195
|
return out;
|
|
146
196
|
}
|
|
147
|
-
function encodePageCursor(page) {
|
|
148
|
-
return Buffer.from(`page:${page}`, 'utf-8').toString('base64');
|
|
149
|
-
}
|
|
150
|
-
export function decodePageCursor(cursor) {
|
|
151
|
-
try {
|
|
152
|
-
const decoded = Buffer.from(cursor, 'base64').toString('utf-8');
|
|
153
|
-
if (!decoded.startsWith('page:'))
|
|
154
|
-
return null;
|
|
155
|
-
const n = Number(decoded.slice('page:'.length));
|
|
156
|
-
if (!Number.isFinite(n) || n < 1 || !Number.isInteger(n))
|
|
157
|
-
return null;
|
|
158
|
-
return n;
|
|
159
|
-
}
|
|
160
|
-
catch {
|
|
161
|
-
return null;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
197
|
function errorResult(requestId, code, message) {
|
|
165
198
|
const retriable = code === 'UPSTREAM' || code === 'RATE_LIMITED' || code === 'INTERNAL';
|
|
166
199
|
const error = { code, message, retriable };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-assets.js","sourceRoot":"","sources":["../../../src/tools/search/search-assets.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,wEAAwE;AACxE,+DAA+D;AAC/D,uEAAuE;AACvE,uBAAuB;AACvB,EAAE;AACF,gEAAgE;AAChE,mEAAmE;AACnE,uEAAuE;AACvE,qEAAqE;AACrE,8DAA8D;AAC9D,8DAA8D;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"search-assets.js","sourceRoot":"","sources":["../../../src/tools/search/search-assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-collections.d.ts","sourceRoot":"","sources":["../../../src/tools/search/search-collections.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAQ9D,OAAO,EAQL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,
|
|
1
|
+
{"version":3,"file":"search-collections.d.ts","sourceRoot":"","sources":["../../../src/tools/search/search-collections.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAQ9D,OAAO,EAQL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAE7B,MAAM,YAAY,CAAC;AAQpB,eAAO,MAAM,8BAA8B,QAWN,CAAC;AAEtC,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAE1D,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,MAAM,IAEL,UAAU,OAAO;aAiBtB,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;uBAC3B,uBAAuB,GAAG;QAC3C,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;QAC7D,UAAU,EAAE,MAAM,CAAC;KACpB;cACS,OAAO;GAblB;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,sBAAsB,EAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IACT,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,EAAE,uBAAuB,GAAG;QAC3C,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,OAAO,CAAA;SAAE,CAAC;QAC7D,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC,CA6GD"}
|
|
@@ -11,13 +11,18 @@ import { searchWorkspaceScoped } from '../../typesense.js';
|
|
|
11
11
|
import { buildCollectionSearchNextSteps, buildSearchFacets, } from './facets.js';
|
|
12
12
|
import { CollectionHitSchema, DEFAULT_FACET_BY_COLLECTIONS, DEFAULT_MAX_FACET_VALUES, DEFAULT_QUERY_BY_COLLECTIONS, SearchCollectionsInputSchema, VALID_QUERY_BY_COLLECTIONS, } from './types.js';
|
|
13
13
|
import { invalidQueryByFields } from './search-assets.js';
|
|
14
|
+
import { decodeSearchCursor, effectivePerPage, encodeSearchCursor, } from './cursor.js';
|
|
14
15
|
export const SEARCH_COLLECTIONS_DESCRIPTION = 'Full-text search over the workspace dam_collections (Collages) Typesense ' +
|
|
15
16
|
'index. Returns collection hits, a date histogram facet, pagination ' +
|
|
16
17
|
'cursor, and next_step_hints. Useful for discovering existing collections ' +
|
|
17
18
|
'before creating a new one or for narrowing a downstream tag/asset workflow ' +
|
|
18
19
|
'to a specific collection. ' +
|
|
19
20
|
`Optional \`query_by\` (comma-separated, no spaces) — valid values are ${VALID_QUERY_BY_COLLECTIONS.join(', ')}; ` +
|
|
20
|
-
'unknown field names are rejected with a VALIDATION error.
|
|
21
|
+
'unknown field names are rejected with a VALIDATION error. ' +
|
|
22
|
+
'Pagination: pass `next_cursor` from the previous response back as ' +
|
|
23
|
+
'`cursor` to continue. `effective_per_page` reflects the page size ' +
|
|
24
|
+
'actually used; the upstream `per_page` is auto-clamped to fit the ' +
|
|
25
|
+
'response-token budget. Read-only.';
|
|
21
26
|
export const SEARCH_COLLECTIONS_INDEX = 'dam_collections';
|
|
22
27
|
export function buildSearchCollectionsHandler(client, workspaceId) {
|
|
23
28
|
return async (rawInput) => {
|
|
@@ -38,12 +43,18 @@ export async function runSearchCollections(client, workspaceId, input, requestId
|
|
|
38
43
|
}
|
|
39
44
|
}
|
|
40
45
|
const queryBy = input.query_by ?? DEFAULT_QUERY_BY_COLLECTIONS;
|
|
46
|
+
// Cursor takes precedence over page/per_page when present.
|
|
47
|
+
const cursorDecoded = input.cursor !== undefined ? decodeSearchCursor(input.cursor) : null;
|
|
48
|
+
const requestedPage = cursorDecoded?.page ?? input.page;
|
|
49
|
+
const requestedPerPage = cursorDecoded?.per_page ?? input.per_page;
|
|
50
|
+
const effPerPage = effectivePerPage(requestedPerPage, input.projection);
|
|
51
|
+
const perPageClamped = effPerPage < requestedPerPage;
|
|
41
52
|
const result = await searchWorkspaceScoped(client, SEARCH_COLLECTIONS_INDEX, workspaceId, {
|
|
42
53
|
q: input.q,
|
|
43
54
|
query_by: queryBy,
|
|
44
55
|
sort_by: input.sort_by,
|
|
45
|
-
page:
|
|
46
|
-
per_page:
|
|
56
|
+
page: requestedPage,
|
|
57
|
+
per_page: effPerPage,
|
|
47
58
|
facet_by: DEFAULT_FACET_BY_COLLECTIONS,
|
|
48
59
|
max_facet_values: DEFAULT_MAX_FACET_VALUES,
|
|
49
60
|
// See `search-assets.ts` for the rationale on `'fallback'`. Same
|
|
@@ -59,25 +70,48 @@ export async function runSearchCollections(client, workspaceId, input, requestId
|
|
|
59
70
|
const hits = projectCollectionHits(result.hits);
|
|
60
71
|
const budget = applyResponseBudget(hits, {
|
|
61
72
|
serialize: (item) => JSON.stringify(item),
|
|
62
|
-
offset: (
|
|
63
|
-
pageSize:
|
|
73
|
+
offset: (requestedPage - 1) * effPerPage,
|
|
74
|
+
pageSize: effPerPage,
|
|
64
75
|
});
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
?
|
|
69
|
-
:
|
|
70
|
-
?
|
|
76
|
+
const tokenCapped = budget.truncated;
|
|
77
|
+
const truncated = perPageClamped || tokenCapped;
|
|
78
|
+
const truncation_reason = tokenCapped
|
|
79
|
+
? 'token_cap'
|
|
80
|
+
: perPageClamped
|
|
81
|
+
? 'per_page_clamped'
|
|
71
82
|
: null;
|
|
83
|
+
const seenSoFar = (requestedPage - 1) * effPerPage + budget.data.length;
|
|
84
|
+
const moreAvailable = seenSoFar < result.found;
|
|
85
|
+
let next_cursor = null;
|
|
86
|
+
if (moreAvailable) {
|
|
87
|
+
if (tokenCapped) {
|
|
88
|
+
const shrunkPerPage = Math.max(1, budget.data.length);
|
|
89
|
+
const itemsBeforeThisPage = (requestedPage - 1) * effPerPage;
|
|
90
|
+
const nextPage = Math.floor((itemsBeforeThisPage + budget.data.length) / shrunkPerPage) +
|
|
91
|
+
1;
|
|
92
|
+
next_cursor = encodeSearchCursor({
|
|
93
|
+
page: nextPage,
|
|
94
|
+
per_page: shrunkPerPage,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
next_cursor = encodeSearchCursor({
|
|
99
|
+
page: requestedPage + 1,
|
|
100
|
+
per_page: effPerPage,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
72
104
|
const facets = buildSearchFacets(result.facet_counts, []);
|
|
73
105
|
const next_step_hints = buildCollectionSearchNextSteps(result.found);
|
|
74
106
|
const output = {
|
|
75
107
|
hits: budget.data,
|
|
76
108
|
total: result.found,
|
|
77
|
-
page:
|
|
78
|
-
per_page:
|
|
109
|
+
page: requestedPage,
|
|
110
|
+
per_page: requestedPerPage,
|
|
111
|
+
effective_per_page: effPerPage,
|
|
79
112
|
next_cursor,
|
|
80
|
-
truncated
|
|
113
|
+
truncated,
|
|
114
|
+
truncation_reason,
|
|
81
115
|
facets,
|
|
82
116
|
next_step_hints,
|
|
83
117
|
request_id: requestId,
|
|
@@ -96,9 +130,6 @@ function projectCollectionHits(rawHits) {
|
|
|
96
130
|
}
|
|
97
131
|
return out;
|
|
98
132
|
}
|
|
99
|
-
function encodePageCursor(page) {
|
|
100
|
-
return Buffer.from(`page:${page}`, 'utf-8').toString('base64');
|
|
101
|
-
}
|
|
102
133
|
function errorResult(requestId, code, message) {
|
|
103
134
|
const retriable = code === 'UPSTREAM' || code === 'RATE_LIMITED' || code === 'INTERNAL';
|
|
104
135
|
const error = { code, message, retriable };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-collections.js","sourceRoot":"","sources":["../../../src/tools/search/search-collections.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,iEAAiE;AACjE,uEAAuE;AACvE,wEAAwE;AACxE,oEAAoE;AACpE,qEAAqE;AACrE,QAAQ;AAGR,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EACL,8BAA8B,EAC9B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,
|
|
1
|
+
{"version":3,"file":"search-collections.js","sourceRoot":"","sources":["../../../src/tools/search/search-collections.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,12 +105,19 @@ export declare const SearchAssetsInputSchema: z.ZodObject<{
|
|
|
105
105
|
infix: z.ZodOptional<z.ZodEnum<["off", "always", "fallback"]>>;
|
|
106
106
|
/** Optional Typesense `query_by` override. */
|
|
107
107
|
query_by: z.ZodOptional<z.ZodString>;
|
|
108
|
+
/**
|
|
109
|
+
* Continuation cursor from a previous response's `next_cursor`. When
|
|
110
|
+
* provided, overrides `page` and `per_page` from this input. Opaque —
|
|
111
|
+
* round-trip the value verbatim from the previous response.
|
|
112
|
+
*/
|
|
113
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
108
114
|
}, "strip", z.ZodTypeAny, {
|
|
109
115
|
per_page: number;
|
|
110
116
|
page: number;
|
|
111
117
|
sort_by: string;
|
|
112
118
|
q: string;
|
|
113
119
|
projection: "compact" | "verbose";
|
|
120
|
+
cursor?: string | undefined;
|
|
114
121
|
filters?: {
|
|
115
122
|
file_type?: string[] | undefined;
|
|
116
123
|
category_id?: string | number | undefined;
|
|
@@ -128,6 +135,7 @@ export declare const SearchAssetsInputSchema: z.ZodObject<{
|
|
|
128
135
|
per_page?: number | undefined;
|
|
129
136
|
page?: number | undefined;
|
|
130
137
|
sort_by?: string | undefined;
|
|
138
|
+
cursor?: string | undefined;
|
|
131
139
|
q?: string | undefined;
|
|
132
140
|
filters?: {
|
|
133
141
|
file_type?: string[] | undefined;
|
|
@@ -153,18 +161,26 @@ export declare const SearchCollectionsInputSchema: z.ZodObject<{
|
|
|
153
161
|
sort_by: z.ZodDefault<z.ZodString>;
|
|
154
162
|
projection: z.ZodDefault<z.ZodEnum<["compact", "verbose"]>>;
|
|
155
163
|
query_by: z.ZodOptional<z.ZodString>;
|
|
164
|
+
/**
|
|
165
|
+
* Continuation cursor from a previous response's `next_cursor`. When
|
|
166
|
+
* provided, overrides `page` and `per_page` from this input. Opaque —
|
|
167
|
+
* round-trip the value verbatim from the previous response.
|
|
168
|
+
*/
|
|
169
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
156
170
|
}, "strip", z.ZodTypeAny, {
|
|
157
171
|
per_page: number;
|
|
158
172
|
page: number;
|
|
159
173
|
sort_by: string;
|
|
160
174
|
q: string;
|
|
161
175
|
projection: "compact" | "verbose";
|
|
176
|
+
cursor?: string | undefined;
|
|
162
177
|
filters?: {} | undefined;
|
|
163
178
|
query_by?: string | undefined;
|
|
164
179
|
}, {
|
|
165
180
|
per_page?: number | undefined;
|
|
166
181
|
page?: number | undefined;
|
|
167
182
|
sort_by?: string | undefined;
|
|
183
|
+
cursor?: string | undefined;
|
|
168
184
|
q?: string | undefined;
|
|
169
185
|
filters?: {} | undefined;
|
|
170
186
|
projection?: "compact" | "verbose" | undefined;
|
|
@@ -416,12 +432,33 @@ export declare const SearchNextStepHintSchema: z.ZodObject<{
|
|
|
416
432
|
suggested_args?: Record<string, unknown> | undefined;
|
|
417
433
|
}>;
|
|
418
434
|
export type SearchNextStepHint = z.infer<typeof SearchNextStepHintSchema>;
|
|
435
|
+
/**
|
|
436
|
+
* Why a response was truncated relative to what the caller asked for.
|
|
437
|
+
* Always paired with `next_cursor` (or `null` when the result set is
|
|
438
|
+
* fully exhausted). Distinguishes the cases the prior contract
|
|
439
|
+
* conflated under a single `truncated: true`.
|
|
440
|
+
*/
|
|
441
|
+
export declare const TruncationReasonSchema: z.ZodEnum<["per_page_clamped", "token_cap"]>;
|
|
442
|
+
export type TruncationReason = z.infer<typeof TruncationReasonSchema>;
|
|
419
443
|
export declare const SearchAssetsOutputSchema: z.ZodObject<{
|
|
420
444
|
total: z.ZodNumber;
|
|
421
445
|
page: z.ZodNumber;
|
|
422
446
|
per_page: z.ZodNumber;
|
|
447
|
+
/**
|
|
448
|
+
* The page size actually used for the upstream call. Less than or
|
|
449
|
+
* equal to the caller's requested `per_page`. Differs from `per_page`
|
|
450
|
+
* when the request was clamped to the projection's token budget.
|
|
451
|
+
*/
|
|
452
|
+
effective_per_page: z.ZodNumber;
|
|
453
|
+
/**
|
|
454
|
+
* Opaque continuation handle. Pass back as `cursor` on the next call
|
|
455
|
+
* to fetch the next page. `null` when the result set is fully
|
|
456
|
+
* exhausted (no more pages).
|
|
457
|
+
*/
|
|
423
458
|
next_cursor: z.ZodNullable<z.ZodString>;
|
|
424
459
|
truncated: z.ZodDefault<z.ZodBoolean>;
|
|
460
|
+
/** Set when `truncated` is true. Distinguishes clamp vs cap. */
|
|
461
|
+
truncation_reason: z.ZodDefault<z.ZodNullable<z.ZodEnum<["per_page_clamped", "token_cap"]>>>;
|
|
425
462
|
facets: z.ZodObject<{
|
|
426
463
|
tags: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
427
464
|
value: z.ZodString;
|
|
@@ -629,6 +666,8 @@ export declare const SearchAssetsOutputSchema: z.ZodObject<{
|
|
|
629
666
|
page: number;
|
|
630
667
|
truncated: boolean;
|
|
631
668
|
next_cursor: string | null;
|
|
669
|
+
effective_per_page: number;
|
|
670
|
+
truncation_reason: "per_page_clamped" | "token_cap" | null;
|
|
632
671
|
facets: {
|
|
633
672
|
file_type: {
|
|
634
673
|
value: string;
|
|
@@ -694,6 +733,7 @@ export declare const SearchAssetsOutputSchema: z.ZodObject<{
|
|
|
694
733
|
per_page: number;
|
|
695
734
|
page: number;
|
|
696
735
|
next_cursor: string | null;
|
|
736
|
+
effective_per_page: number;
|
|
697
737
|
facets: {
|
|
698
738
|
file_type?: {
|
|
699
739
|
value: string;
|
|
@@ -748,6 +788,7 @@ export declare const SearchAssetsOutputSchema: z.ZodObject<{
|
|
|
748
788
|
breadcrumb: z.ZodNullable<z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>>;
|
|
749
789
|
}, z.ZodTypeAny, "passthrough">)[];
|
|
750
790
|
truncated?: boolean | undefined;
|
|
791
|
+
truncation_reason?: "per_page_clamped" | "token_cap" | null | undefined;
|
|
751
792
|
next_step_hints?: {
|
|
752
793
|
tool: string;
|
|
753
794
|
reason_code: string;
|
|
@@ -760,8 +801,21 @@ export declare const SearchCollectionsOutputSchema: z.ZodObject<{
|
|
|
760
801
|
total: z.ZodNumber;
|
|
761
802
|
page: z.ZodNumber;
|
|
762
803
|
per_page: z.ZodNumber;
|
|
804
|
+
/**
|
|
805
|
+
* The page size actually used for the upstream call. Less than or
|
|
806
|
+
* equal to the caller's requested `per_page`. Differs from `per_page`
|
|
807
|
+
* when the request was clamped to the projection's token budget.
|
|
808
|
+
*/
|
|
809
|
+
effective_per_page: z.ZodNumber;
|
|
810
|
+
/**
|
|
811
|
+
* Opaque continuation handle. Pass back as `cursor` on the next call
|
|
812
|
+
* to fetch the next page. `null` when the result set is fully
|
|
813
|
+
* exhausted (no more pages).
|
|
814
|
+
*/
|
|
763
815
|
next_cursor: z.ZodNullable<z.ZodString>;
|
|
764
816
|
truncated: z.ZodDefault<z.ZodBoolean>;
|
|
817
|
+
/** Set when `truncated` is true. Distinguishes clamp vs cap. */
|
|
818
|
+
truncation_reason: z.ZodDefault<z.ZodNullable<z.ZodEnum<["per_page_clamped", "token_cap"]>>>;
|
|
765
819
|
facets: z.ZodObject<{
|
|
766
820
|
tags: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
767
821
|
value: z.ZodString;
|
|
@@ -888,6 +942,8 @@ export declare const SearchCollectionsOutputSchema: z.ZodObject<{
|
|
|
888
942
|
page: number;
|
|
889
943
|
truncated: boolean;
|
|
890
944
|
next_cursor: string | null;
|
|
945
|
+
effective_per_page: number;
|
|
946
|
+
truncation_reason: "per_page_clamped" | "token_cap" | null;
|
|
891
947
|
facets: {
|
|
892
948
|
file_type: {
|
|
893
949
|
value: string;
|
|
@@ -926,6 +982,7 @@ export declare const SearchCollectionsOutputSchema: z.ZodObject<{
|
|
|
926
982
|
per_page: number;
|
|
927
983
|
page: number;
|
|
928
984
|
next_cursor: string | null;
|
|
985
|
+
effective_per_page: number;
|
|
929
986
|
facets: {
|
|
930
987
|
file_type?: {
|
|
931
988
|
value: string;
|
|
@@ -953,6 +1010,7 @@ export declare const SearchCollectionsOutputSchema: z.ZodObject<{
|
|
|
953
1010
|
created_at: z.ZodNullable<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>>;
|
|
954
1011
|
}, z.ZodTypeAny, "passthrough">[];
|
|
955
1012
|
truncated?: boolean | undefined;
|
|
1013
|
+
truncation_reason?: "per_page_clamped" | "token_cap" | null | undefined;
|
|
956
1014
|
next_step_hints?: {
|
|
957
1015
|
tool: string;
|
|
958
1016
|
reason_code: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/search/types.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,iFAAiF;AACjF,eAAO,MAAM,eAAe,sCAAsC,CAAC;AAInE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,mCAAiC,CAAC;AAC/D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI1D,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,iGAK3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,eAAe,wCAG1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY1B,CAAC;AACZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,6BAA6B,iDAI/B,CAAC;AACZ,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,6BAA6B,CACrC,CAAC;AAMF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAOlC,4EAA4E;;IAE5E,8CAA8C
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/search/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,6 +77,12 @@ export const SearchAssetsInputSchema = z.object({
|
|
|
77
77
|
infix: z.enum(['off', 'always', 'fallback']).optional(),
|
|
78
78
|
/** Optional Typesense `query_by` override. */
|
|
79
79
|
query_by: z.string().min(1).optional(),
|
|
80
|
+
/**
|
|
81
|
+
* Continuation cursor from a previous response's `next_cursor`. When
|
|
82
|
+
* provided, overrides `page` and `per_page` from this input. Opaque —
|
|
83
|
+
* round-trip the value verbatim from the previous response.
|
|
84
|
+
*/
|
|
85
|
+
cursor: z.string().min(1).optional(),
|
|
80
86
|
});
|
|
81
87
|
export const SearchCollectionsInputSchema = z.object({
|
|
82
88
|
q: z.string().default('*'),
|
|
@@ -86,6 +92,12 @@ export const SearchCollectionsInputSchema = z.object({
|
|
|
86
92
|
sort_by: z.string().min(1).default(DEFAULT_SORT_BY),
|
|
87
93
|
projection: ProjectionSchema.default('compact'),
|
|
88
94
|
query_by: z.string().min(1).optional(),
|
|
95
|
+
/**
|
|
96
|
+
* Continuation cursor from a previous response's `next_cursor`. When
|
|
97
|
+
* provided, overrides `page` and `per_page` from this input. Opaque —
|
|
98
|
+
* round-trip the value verbatim from the previous response.
|
|
99
|
+
*/
|
|
100
|
+
cursor: z.string().min(1).optional(),
|
|
89
101
|
});
|
|
90
102
|
// ── Hits (Typesense projections) ─────────────────────────────────────
|
|
91
103
|
/** Compact asset projection — the default `search_assets` shape. */
|
|
@@ -181,12 +193,46 @@ export const SearchNextStepHintSchema = z.object({
|
|
|
181
193
|
suggested_args: z.record(z.unknown()).optional(),
|
|
182
194
|
});
|
|
183
195
|
// ── Outputs ──────────────────────────────────────────────────────────
|
|
196
|
+
/**
|
|
197
|
+
* Why a response was truncated relative to what the caller asked for.
|
|
198
|
+
* Always paired with `next_cursor` (or `null` when the result set is
|
|
199
|
+
* fully exhausted). Distinguishes the cases the prior contract
|
|
200
|
+
* conflated under a single `truncated: true`.
|
|
201
|
+
*/
|
|
202
|
+
export const TruncationReasonSchema = z.enum([
|
|
203
|
+
/**
|
|
204
|
+
* The caller asked for `per_page` larger than the projection's token
|
|
205
|
+
* budget allows; we clamped the upstream request to the budget-derived
|
|
206
|
+
* max. `effective_per_page` reflects the value actually used.
|
|
207
|
+
*/
|
|
208
|
+
'per_page_clamped',
|
|
209
|
+
/**
|
|
210
|
+
* The response budget triggered mid-response despite the up-front
|
|
211
|
+
* `per_page` clamp — usually because some hits are unusually heavy
|
|
212
|
+
* (e.g. long presigned URLs). The hits returned are a prefix; the
|
|
213
|
+
* cursor resumes from the next unseen hit.
|
|
214
|
+
*/
|
|
215
|
+
'token_cap',
|
|
216
|
+
]);
|
|
184
217
|
const SearchResponseBaseSchema = z.object({
|
|
185
218
|
total: z.number().int().nonnegative(),
|
|
186
219
|
page: z.number().int().min(1),
|
|
187
220
|
per_page: z.number().int().min(1),
|
|
221
|
+
/**
|
|
222
|
+
* The page size actually used for the upstream call. Less than or
|
|
223
|
+
* equal to the caller's requested `per_page`. Differs from `per_page`
|
|
224
|
+
* when the request was clamped to the projection's token budget.
|
|
225
|
+
*/
|
|
226
|
+
effective_per_page: z.number().int().min(1),
|
|
227
|
+
/**
|
|
228
|
+
* Opaque continuation handle. Pass back as `cursor` on the next call
|
|
229
|
+
* to fetch the next page. `null` when the result set is fully
|
|
230
|
+
* exhausted (no more pages).
|
|
231
|
+
*/
|
|
188
232
|
next_cursor: z.string().nullable(),
|
|
189
233
|
truncated: z.boolean().default(false),
|
|
234
|
+
/** Set when `truncated` is true. Distinguishes clamp vs cap. */
|
|
235
|
+
truncation_reason: TruncationReasonSchema.nullable().default(null),
|
|
190
236
|
facets: SearchFacetsSchema,
|
|
191
237
|
next_step_hints: z.array(SearchNextStepHintSchema).default([]),
|
|
192
238
|
request_id: z.string(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/search/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/search/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@collage-dam/mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Model Context Protocol (MCP) server for the Collage Digital Asset Management platform. Exposes Collage workspaces — assets, folders, collections, share links, audit prompts — to AI clients (Claude Desktop, Cursor, ChatGPT) through a typed tool surface.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|