@ggui-ai/registry-core 0.4.0-rc.0 → 0.5.0-rc.1
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/impls/memory-registry-storage.d.ts.map +1 -1
- package/dist/impls/memory-registry-storage.js +8 -0
- package/dist/interfaces/registry-storage.d.ts +14 -6
- package/dist/interfaces/registry-storage.d.ts.map +1 -1
- package/dist/ops/search.d.ts +6 -8
- package/dist/ops/search.d.ts.map +1 -1
- package/dist/ops/search.js +6 -11
- package/dist/testing/registry-storage-contract.d.ts.map +1 -1
- package/dist/testing/registry-storage-contract.js +75 -0
- package/dist/types.d.ts +14 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -8
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-registry-storage.d.ts","sourceRoot":"","sources":["../../src/impls/memory-registry-storage.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAC;AAK3C,wBAAgB,uBAAuB,IAAI,eAAe,
|
|
1
|
+
{"version":3,"file":"memory-registry-storage.d.ts","sourceRoot":"","sources":["../../src/impls/memory-registry-storage.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAC;AAK3C,wBAAgB,uBAAuB,IAAI,eAAe,CAmHzD"}
|
|
@@ -17,6 +17,14 @@ export function inMemoryRegistryStorage() {
|
|
|
17
17
|
},
|
|
18
18
|
async scanArtifacts(filter) {
|
|
19
19
|
const rows = Array.from(metadata.values()).filter((row) => rowMatchesFilter(row, filter));
|
|
20
|
+
if (filter.order === 'recent') {
|
|
21
|
+
// Newest first, globally correct across the offset-cursor chain
|
|
22
|
+
// because the FULL result set is ordered before slicing.
|
|
23
|
+
// ISO-8601 strings compare lexicographically === chronologically;
|
|
24
|
+
// artifactId tie-break keeps the cursor chain deterministic.
|
|
25
|
+
rows.sort((a, b) => b.publishedAt.localeCompare(a.publishedAt) ||
|
|
26
|
+
a.artifactId.localeCompare(b.artifactId));
|
|
27
|
+
}
|
|
20
28
|
const limit = clampLimit(filter.limit);
|
|
21
29
|
const offset = parseCursor(filter.cursor);
|
|
22
30
|
const page = rows.slice(offset, offset + limit);
|
|
@@ -32,8 +32,10 @@
|
|
|
32
32
|
* failure (caller decides retry).
|
|
33
33
|
* - {@link scanArtifacts} returns rows in arbitrary order
|
|
34
34
|
* (backing-store scan order; memory insertion order; filesystem
|
|
35
|
-
* directory order)
|
|
36
|
-
*
|
|
35
|
+
* directory order) UNLESS the filter carries `order: 'recent'` — then
|
|
36
|
+
* rows MUST come back ordered by `publishedAt` descending (newest
|
|
37
|
+
* first), globally correct across the full cursor chain. Without an
|
|
38
|
+
* `order`, consumers MUST treat ordering as non-deterministic.
|
|
37
39
|
*
|
|
38
40
|
* **Failure mode:**
|
|
39
41
|
* - Transport-level failures (store throttling, disk full) throw.
|
|
@@ -45,7 +47,9 @@
|
|
|
45
47
|
* - Contract test {@link registryStorageContract} covers:
|
|
46
48
|
* round-trip preservation, idempotent {@link putArtifactMetadata},
|
|
47
49
|
* `putArtifactVersionIfAbsent` rejects on collision, missing returns
|
|
48
|
-
* null, `listAuthorKeys` returns only keys for the queried subject
|
|
50
|
+
* null, `listAuthorKeys` returns only keys for the queried subject,
|
|
51
|
+
* and `order: 'recent'` newest-first ordering (single page + across
|
|
52
|
+
* the cursor chain).
|
|
49
53
|
*/
|
|
50
54
|
import type { ArtifactScanFilter, ArtifactVersionRow, ArtifactsMetadataRow, AuthorKeyRow, CompiledBlobRow } from '../types.js';
|
|
51
55
|
/**
|
|
@@ -81,9 +85,13 @@ export interface RegistryStorage {
|
|
|
81
85
|
/**
|
|
82
86
|
* Scan the metadata-row family with paginated cursor + post-fetch
|
|
83
87
|
* filter. The filter is applied per-row; impls MAY push it down
|
|
84
|
-
* (
|
|
85
|
-
* `limit` is treated as a per-page ceiling; consumers may
|
|
86
|
-
* via `nextCursor` for multi-page reads.
|
|
88
|
+
* (a backing-store index when available) or run it in-memory after a
|
|
89
|
+
* wide scan. `limit` is treated as a per-page ceiling; consumers may
|
|
90
|
+
* iterate via `nextCursor` for multi-page reads.
|
|
91
|
+
*
|
|
92
|
+
* When `filter.order` is `'recent'`, rows MUST be returned newest
|
|
93
|
+
* first by `publishedAt`, globally correct across the full cursor
|
|
94
|
+
* chain — see the Obligations section above.
|
|
87
95
|
*/
|
|
88
96
|
scanArtifacts(filter: ArtifactScanFilter): Promise<{
|
|
89
97
|
readonly rows: readonly ArtifactsMetadataRow[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-storage.d.ts","sourceRoot":"","sources":["../../src/interfaces/registry-storage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"registry-storage.d.ts","sourceRoot":"","sources":["../../src/interfaces/registry-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBACX,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAQ3C;AAED,MAAM,WAAW,eAAe;IAE9B,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC9E,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D;;;;;;;;;;OAUG;IACH,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC;QACjD,QAAQ,CAAC,IAAI,EAAE,SAAS,oBAAoB,EAAE,CAAC;QAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC,CAAC;IAGH,kBAAkB,CAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACtC;;;;;;;;;;;;;;;;;OAiBG;IACH,oBAAoB,CAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAC1C;;;;;OAKG;IACH,0BAA0B,CACxB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IACnE,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGxE;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgDG;IACH,oBAAoB,CAClB,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,eAAe,GACvB,OAAO,CACN;QAAE,EAAE,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAA;KAAE,GACxC;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAA;KAAE,CAC1C,CAAC;IAGF,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC3E;;;;;;OAMG;IACH,YAAY,CACV,GAAG,EAAE,YAAY,EACjB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;CACnE"}
|
package/dist/ops/search.d.ts
CHANGED
|
@@ -22,15 +22,13 @@ export interface SearchArtifactsInput {
|
|
|
22
22
|
/**
|
|
23
23
|
* Optional sort. `'recent'` orders results by `publishedAt` DESC; any
|
|
24
24
|
* other string is a 400. Default (omitted) is impl-defined ordering —
|
|
25
|
-
* memory insertion order, filesystem directory order, or
|
|
26
|
-
* order. See {@link SearchSort} for the full enum.
|
|
25
|
+
* memory insertion order, filesystem directory order, or the backing
|
|
26
|
+
* store's scan order. See {@link SearchSort} for the full enum.
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* correct
|
|
32
|
-
* page-local. A DDB GSI on `publishedAt` is the proper fix and is
|
|
33
|
-
* planned as a follow-up.
|
|
28
|
+
* Ordering is served by the storage layer: the op forwards the sort
|
|
29
|
+
* as `order` on the scan filter, and every
|
|
30
|
+
* {@link RegistryStorage.scanArtifacts} impl MUST return a
|
|
31
|
+
* globally-correct newest-first order across the full cursor chain.
|
|
34
32
|
*/
|
|
35
33
|
readonly sort?: string;
|
|
36
34
|
}
|
package/dist/ops/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/ops/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAIV,eAAe,EACf,cAAc,EAGf,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAKzE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/ops/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAIV,eAAe,EACf,cAAc,EAGf,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAKzE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAEvF,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAsFhC"}
|
package/dist/ops/search.js
CHANGED
|
@@ -53,6 +53,7 @@ export async function searchArtifacts(input, deps) {
|
|
|
53
53
|
author: nonEmpty(input.author),
|
|
54
54
|
limit,
|
|
55
55
|
cursor: nonEmpty(input.cursor),
|
|
56
|
+
order: sort,
|
|
56
57
|
};
|
|
57
58
|
let page;
|
|
58
59
|
try {
|
|
@@ -71,17 +72,11 @@ export async function searchArtifacts(input, deps) {
|
|
|
71
72
|
continue;
|
|
72
73
|
visibleRows.push(row);
|
|
73
74
|
}
|
|
74
|
-
// `sort=recent
|
|
75
|
-
//
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
const
|
|
79
|
-
? [...visibleRows].sort((a, b) =>
|
|
80
|
-
// ISO-8601 strings compare lexicographically === chronologically.
|
|
81
|
-
// DESC: later (greater) publishedAt comes first.
|
|
82
|
-
b.publishedAt.localeCompare(a.publishedAt))
|
|
83
|
-
: visibleRows;
|
|
84
|
-
const results = sortedRows.map(rowToEntry);
|
|
75
|
+
// `sort=recent` ordering is served by the storage layer (the filter
|
|
76
|
+
// carries `order: 'recent'`); rows arrive newest-first and are
|
|
77
|
+
// emitted verbatim — no re-sort here, so page order and cursor order
|
|
78
|
+
// cannot diverge.
|
|
79
|
+
const results = visibleRows.map(rowToEntry);
|
|
85
80
|
return {
|
|
86
81
|
ok: true,
|
|
87
82
|
status: 200,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry-storage-contract.d.ts","sourceRoot":"","sources":["../../src/testing/registry-storage-contract.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAsHzE,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,eAAe,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"registry-storage-contract.d.ts","sourceRoot":"","sources":["../../src/testing/registry-storage-contract.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAsHzE,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,eAAe,GAAG,IAAI,CA+ZhF"}
|
|
@@ -161,6 +161,81 @@ export function registryStorageContract(makeStorage) {
|
|
|
161
161
|
const page = await storage.scanArtifacts({ tag: 'map' });
|
|
162
162
|
expect(page.rows.map((r) => r.artifactId)).toEqual(['@a/x']);
|
|
163
163
|
});
|
|
164
|
+
it('order: recent returns rows newest-first by publishedAt', async () => {
|
|
165
|
+
const storage = makeStorage();
|
|
166
|
+
await storage.putArtifactMetadata(makeMetadata({ artifactId: '@a/old', publishedAt: '2026-01-01T00:00:00.000Z' }));
|
|
167
|
+
await storage.putArtifactMetadata(makeMetadata({ artifactId: '@a/new', publishedAt: '2026-05-01T00:00:00.000Z' }));
|
|
168
|
+
await storage.putArtifactMetadata(makeMetadata({ artifactId: '@a/mid', publishedAt: '2026-03-01T00:00:00.000Z' }));
|
|
169
|
+
const page = await storage.scanArtifacts({ order: 'recent' });
|
|
170
|
+
expect(page.rows.map((r) => r.artifactId)).toEqual([
|
|
171
|
+
'@a/new',
|
|
172
|
+
'@a/mid',
|
|
173
|
+
'@a/old',
|
|
174
|
+
]);
|
|
175
|
+
});
|
|
176
|
+
it('order: recent stays globally correct across the cursor chain', async () => {
|
|
177
|
+
const storage = makeStorage();
|
|
178
|
+
// Insert deliberately OUT of publish order so insertion order
|
|
179
|
+
// cannot masquerade as recency order.
|
|
180
|
+
const stamps = [
|
|
181
|
+
'2026-01-01T00:00:00.000Z',
|
|
182
|
+
'2026-05-01T00:00:00.000Z',
|
|
183
|
+
'2026-03-01T00:00:00.000Z',
|
|
184
|
+
'2026-04-01T00:00:00.000Z',
|
|
185
|
+
'2026-02-01T00:00:00.000Z',
|
|
186
|
+
];
|
|
187
|
+
for (const [i, publishedAt] of stamps.entries()) {
|
|
188
|
+
await storage.putArtifactMetadata(makeMetadata({ artifactId: `@a/p${String(i)}`, publishedAt }));
|
|
189
|
+
}
|
|
190
|
+
// Walk the FULL cursor chain with a page size smaller than the
|
|
191
|
+
// row count — the concatenation must be one globally-descending
|
|
192
|
+
// sequence (per-page recency is exactly the defect this
|
|
193
|
+
// obligation exists to rule out).
|
|
194
|
+
const collected = [];
|
|
195
|
+
let cursor;
|
|
196
|
+
let hops = 0;
|
|
197
|
+
do {
|
|
198
|
+
const page = await storage.scanArtifacts({
|
|
199
|
+
order: 'recent',
|
|
200
|
+
limit: 2,
|
|
201
|
+
cursor,
|
|
202
|
+
});
|
|
203
|
+
collected.push(...page.rows.map((r) => r.publishedAt));
|
|
204
|
+
cursor = page.nextCursor;
|
|
205
|
+
hops++;
|
|
206
|
+
if (hops > 10)
|
|
207
|
+
throw new Error('cursor chain did not terminate');
|
|
208
|
+
} while (cursor !== undefined);
|
|
209
|
+
expect(collected).toHaveLength(stamps.length);
|
|
210
|
+
expect(collected).toEqual([...stamps].sort((a, b) => b.localeCompare(a)));
|
|
211
|
+
});
|
|
212
|
+
it('order: recent composes with filter dimensions', async () => {
|
|
213
|
+
const storage = makeStorage();
|
|
214
|
+
await storage.putArtifactMetadata(makeMetadata({
|
|
215
|
+
artifactId: '@a/old-gadget',
|
|
216
|
+
kind: 'gadget',
|
|
217
|
+
publishedAt: '2026-01-01T00:00:00.000Z',
|
|
218
|
+
}));
|
|
219
|
+
await storage.putArtifactMetadata(makeMetadata({
|
|
220
|
+
artifactId: '@a/bp',
|
|
221
|
+
kind: 'blueprint',
|
|
222
|
+
hook: undefined,
|
|
223
|
+
publishedAt: '2026-04-01T00:00:00.000Z',
|
|
224
|
+
}));
|
|
225
|
+
await storage.putArtifactMetadata(makeMetadata({
|
|
226
|
+
artifactId: '@a/new-gadget',
|
|
227
|
+
kind: 'gadget',
|
|
228
|
+
publishedAt: '2026-03-01T00:00:00.000Z',
|
|
229
|
+
}));
|
|
230
|
+
const page = await storage.scanArtifacts({
|
|
231
|
+
order: 'recent',
|
|
232
|
+
kind: 'gadget',
|
|
233
|
+
});
|
|
234
|
+
expect(page.rows.map((r) => r.artifactId)).toEqual([
|
|
235
|
+
'@a/new-gadget',
|
|
236
|
+
'@a/old-gadget',
|
|
237
|
+
]);
|
|
238
|
+
});
|
|
164
239
|
it('filters by q (substring of name / description / tags)', async () => {
|
|
165
240
|
const storage = makeStorage();
|
|
166
241
|
await storage.putArtifactMetadata(makeMetadata({
|
package/dist/types.d.ts
CHANGED
|
@@ -249,14 +249,11 @@ export interface SearchResponse {
|
|
|
249
249
|
* uses its scan order. Callers MUST opt in to a deterministic order
|
|
250
250
|
* via this field.
|
|
251
251
|
*
|
|
252
|
-
*
|
|
253
|
-
*
|
|
254
|
-
*
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
* page-local — clients paginating with `cursor` see per-page recency,
|
|
258
|
-
* not global. A secondary index on `publishedAt` is the proper fix
|
|
259
|
-
* and is planned as a follow-up.
|
|
252
|
+
* Ordering is served by the storage layer: the search op forwards the
|
|
253
|
+
* sort as {@link ArtifactScanFilter.order}, and every
|
|
254
|
+
* {@link RegistryStorage} impl MUST return a globally-correct
|
|
255
|
+
* newest-first order across the full cursor chain — not merely within
|
|
256
|
+
* one page.
|
|
260
257
|
*/
|
|
261
258
|
export declare const SEARCH_SORT_OPTIONS: readonly ["recent"];
|
|
262
259
|
export type SearchSort = (typeof SEARCH_SORT_OPTIONS)[number];
|
|
@@ -459,6 +456,15 @@ export interface ArtifactScanFilter {
|
|
|
459
456
|
readonly author?: string;
|
|
460
457
|
readonly limit?: number;
|
|
461
458
|
readonly cursor?: string;
|
|
459
|
+
/**
|
|
460
|
+
* Optional result ordering. `'recent'` requires implementations to
|
|
461
|
+
* return rows ordered by {@link ArtifactsMetadataRow.publishedAt}
|
|
462
|
+
* descending (newest first), globally correct across the full
|
|
463
|
+
* cursor chain — not merely within one page. Combines with every
|
|
464
|
+
* other filter dimension (the ordered listing is filtered, not the
|
|
465
|
+
* other way around). Omitted → impl-defined ordering.
|
|
466
|
+
*/
|
|
467
|
+
readonly order?: SearchSort;
|
|
462
468
|
}
|
|
463
469
|
/**
|
|
464
470
|
* Closed enum for `GET /pkg/{scope}/{name}` list-versions responses.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAG,WAAoB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,CAAC;AAElD;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,OAAO,qBAAqB,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAID;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,sEAAsE;IACtE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -18,14 +18,11 @@ export const ARTIFACTS_METADATA_SK = 'metadata#';
|
|
|
18
18
|
* uses its scan order. Callers MUST opt in to a deterministic order
|
|
19
19
|
* via this field.
|
|
20
20
|
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* page-local — clients paginating with `cursor` see per-page recency,
|
|
27
|
-
* not global. A secondary index on `publishedAt` is the proper fix
|
|
28
|
-
* and is planned as a follow-up.
|
|
21
|
+
* Ordering is served by the storage layer: the search op forwards the
|
|
22
|
+
* sort as {@link ArtifactScanFilter.order}, and every
|
|
23
|
+
* {@link RegistryStorage} impl MUST return a globally-correct
|
|
24
|
+
* newest-first order across the full cursor chain — not merely within
|
|
25
|
+
* one page.
|
|
29
26
|
*/
|
|
30
27
|
export const SEARCH_SORT_OPTIONS = ['recent'];
|
|
31
28
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ggui-ai/registry-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0-rc.1",
|
|
4
4
|
"description": "Pure-TypeScript registry operations and storage interfaces for the ggui marketplace. No I/O, no HTTP — operations take typed inputs plus a storage deps bag and return discriminated-union results.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ggui",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"esbuild": "0.25.12",
|
|
45
45
|
"oxc-parser": "^0.131.0",
|
|
46
46
|
"zod": "^4.3.6",
|
|
47
|
-
"@ggui-ai/
|
|
48
|
-
"@ggui-ai/
|
|
49
|
-
"@ggui-ai/protocol": "0.
|
|
47
|
+
"@ggui-ai/gadget-signing": "0.5.0-rc.1",
|
|
48
|
+
"@ggui-ai/artifact-manifest": "0.5.0-rc.1",
|
|
49
|
+
"@ggui-ai/protocol": "0.5.0-rc.1"
|
|
50
50
|
},
|
|
51
51
|
"peerDependenciesMeta": {
|
|
52
52
|
"vitest": {
|