@cat-factory/agents 0.165.0 → 0.166.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/fragmentLibrary/FragmentSourceService.d.ts +4 -1
- package/dist/fragmentLibrary/FragmentSourceService.d.ts.map +1 -1
- package/dist/fragmentLibrary/FragmentSourceService.js +23 -5
- package/dist/fragmentLibrary/FragmentSourceService.js.map +1 -1
- package/dist/fragmentLibrary/fragment-catalog.d.ts +5 -0
- package/dist/fragmentLibrary/fragment-catalog.d.ts.map +1 -1
- package/dist/fragmentLibrary/fragment-catalog.js +6 -1
- package/dist/fragmentLibrary/fragment-catalog.js.map +1 -1
- package/dist/fragmentLibrary/fragment-source.logic.d.ts +13 -0
- package/dist/fragmentLibrary/fragment-source.logic.d.ts.map +1 -1
- package/dist/fragmentLibrary/fragment-source.logic.js +32 -0
- package/dist/fragmentLibrary/fragment-source.logic.js.map +1 -1
- package/package.json +5 -5
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { FragmentOwnerKind, FragmentSource, FragmentSourceStatus, FragmentSyncResult, LinkFragmentSourceInput } from '@cat-factory/kernel';
|
|
2
|
-
import type { Clock, IdGenerator } from '@cat-factory/kernel';
|
|
2
|
+
import type { Clock, IdGenerator, Logger } from '@cat-factory/kernel';
|
|
3
3
|
import type { GitHubClient } from '@cat-factory/kernel';
|
|
4
4
|
import type { FragmentSourceRepository, PromptFragmentRepository } from '@cat-factory/kernel';
|
|
5
5
|
/**
|
|
@@ -23,6 +23,8 @@ export interface FragmentSourceServiceDependencies {
|
|
|
23
23
|
* Absent (tests) ⇒ no cache to keep coherent.
|
|
24
24
|
*/
|
|
25
25
|
invalidateCatalog?: (ownerKind: FragmentOwnerKind, ownerId: string) => Promise<void>;
|
|
26
|
+
/** Where a file this sync declines to import is named; absent (tests) ⇒ the skip is silent. */
|
|
27
|
+
logger?: Logger;
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
28
30
|
* Repo-sourced fragments (ADR 0006 §3, §6): link a repo directory of Markdown
|
|
@@ -39,6 +41,7 @@ export interface FragmentSourceServiceDependencies {
|
|
|
39
41
|
*/
|
|
40
42
|
export declare class FragmentSourceService {
|
|
41
43
|
private readonly deps;
|
|
44
|
+
private readonly log;
|
|
42
45
|
constructor(deps: FragmentSourceServiceDependencies);
|
|
43
46
|
/** Linked sources for a tier + their last-synced state. */
|
|
44
47
|
list(ownerKind: FragmentOwnerKind, ownerId: string): Promise<FragmentSource[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FragmentSourceService.d.ts","sourceRoot":"","sources":["../../src/fragmentLibrary/FragmentSourceService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"FragmentSourceService.d.ts","sourceRoot":"","sources":["../../src/fragmentLibrary/FragmentSourceService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,qBAAqB,CAAA;AACzE,OAAO,KAAK,EAEV,wBAAwB,EAExB,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAY5B;;;;;GAKG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAC1C,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;AAE3B,MAAM,WAAW,iCAAiC;IAChD,wBAAwB,EAAE,wBAAwB,CAAA;IAClD,wBAAwB,EAAE,wBAAwB,CAAA;IAClD,YAAY,EAAE,YAAY,CAAA;IAC1B,qBAAqB,EAAE,6BAA6B,CAAA;IACpD,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,KAAK,CAAA;IACZ;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpF,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAE5B,YAA6B,IAAI,EAAE,iCAAiC,EAEnE;IAED,2DAA2D;IACrD,IAAI,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAGnF;IAED,qFAAqF;IAC/E,IAAI,CACR,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,cAAc,CAAC,CAiBzB;IAED,gEAAgE;IAC1D,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3F;IAED;;;;;OAKG;IACG,IAAI,CACR,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,kBAAkB,CAAC,CA0D7B;IAED;;;;;;OAMG;IACG,MAAM,CACV,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC,CAI/B;YAIa,OAAO;IAmBrB,uFAAuF;YACzE,mBAAmB;IAUjC;;;OAGG;YACW,YAAY;IAc1B;;;;OAIG;YACW,SAAS;CAsExB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { MAX_FRAGMENT_ID_LENGTH } from '@cat-factory/contracts';
|
|
2
|
+
import { NotFoundError, ValidationError, assertFound, noopLogger } from '@cat-factory/kernel';
|
|
3
|
+
import { isMarkdownFile, mintSourcedFragmentId, parseFragmentMarkdown, } from './fragment-source.logic.js';
|
|
3
4
|
import { normalizeDirPath, probeRepoSourceStatus, syncRepoSource, } from '../repoSourceSync/repo-source-sync.js';
|
|
4
5
|
/**
|
|
5
6
|
* Repo-sourced fragments (ADR 0006 §3, §6): link a repo directory of Markdown
|
|
@@ -16,8 +17,10 @@ import { normalizeDirPath, probeRepoSourceStatus, syncRepoSource, } from '../rep
|
|
|
16
17
|
*/
|
|
17
18
|
export class FragmentSourceService {
|
|
18
19
|
deps;
|
|
20
|
+
log;
|
|
19
21
|
constructor(deps) {
|
|
20
22
|
this.deps = deps;
|
|
23
|
+
this.log = deps.logger ?? noopLogger;
|
|
21
24
|
}
|
|
22
25
|
/** Linked sources for a tier + their last-synced state. */
|
|
23
26
|
async list(ownerKind, ownerId) {
|
|
@@ -165,9 +168,24 @@ export class FragmentSourceService {
|
|
|
165
168
|
const parsed = parseFragmentMarkdown(entry.path, file.content);
|
|
166
169
|
if (!parsed)
|
|
167
170
|
return null;
|
|
168
|
-
//
|
|
169
|
-
//
|
|
170
|
-
|
|
171
|
+
// An explicit frontmatter `id` *shadows* a built-in/inherited fragment (ADR 0006), so it is
|
|
172
|
+
// the author's own choice and is never rewritten to fit: one over the ceiling declines the
|
|
173
|
+
// FILE and says so, where quietly shortening it would produce a fragment that shadows nothing
|
|
174
|
+
// and reads, from the library, exactly like the one the author asked for. Declining leaves any
|
|
175
|
+
// prior alive, the same disposition an unparseable file gets.
|
|
176
|
+
const explicitId = parsed.id?.trim();
|
|
177
|
+
if (explicitId && explicitId.length > MAX_FRAGMENT_ID_LENGTH) {
|
|
178
|
+
this.log.warn('Skipped a fragment source file whose declared id is over the id ceiling', {
|
|
179
|
+
sourceId: source.id,
|
|
180
|
+
path: entry.path,
|
|
181
|
+
idLength: explicitId.length,
|
|
182
|
+
maxIdLength: MAX_FRAGMENT_ID_LENGTH,
|
|
183
|
+
});
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
// Sourced ids are namespaced so two sources can't collide, and bounded so the id this mints is
|
|
187
|
+
// one the public catalog can publish and a public create can name back.
|
|
188
|
+
const fragmentId = explicitId || mintSourcedFragmentId(source.id, entry.path);
|
|
171
189
|
// Match the existing row by the id THIS file produces, not by path — so a rename
|
|
172
190
|
// (new path, same explicit id) still inherits the fragment's version + createdAt,
|
|
173
191
|
// while a genuinely new id (a fresh file, or a file whose explicit id changed) starts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FragmentSourceService.js","sourceRoot":"","sources":["../../src/fragmentLibrary/FragmentSourceService.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"FragmentSourceService.js","sourceRoot":"","sources":["../../src/fragmentLibrary/FragmentSourceService.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,11 @@ export interface CatalogBriefScope {
|
|
|
19
19
|
* stable id (workspace > account > built-in); a tombstoned record at any tier
|
|
20
20
|
* *suppresses* the id outright. Returns live entries sorted by id.
|
|
21
21
|
*
|
|
22
|
+
* Sorted by CODE UNIT rather than `localeCompare`, which is ICU- and locale-dependent: workerd and
|
|
23
|
+
* Node would order the same catalog differently for the same workspace, and `/api/v1` pages this
|
|
24
|
+
* list with a keyset cursor whose sort key is the id. A cursor is only sound while the order it
|
|
25
|
+
* was minted under is the order the next page is read in.
|
|
26
|
+
*
|
|
22
27
|
* `scope` is the resolving workspace and its account, needed only to place a
|
|
23
28
|
* `builtin`-tier entry's generated-brief scope (see {@link CatalogBriefScope}); a managed
|
|
24
29
|
* row carries its own owner, so an override's brief follows the row, not the reader.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment-catalog.d.ts","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAmC,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAS/D,YAAY,EAAE,oBAAoB,EAAE,CAAA;AAEpC;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AA+DD
|
|
1
|
+
{"version":3,"file":"fragment-catalog.d.ts","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAmC,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAChG,OAAO,KAAK,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAS/D,YAAY,EAAE,oBAAoB,EAAE,CAAA;AAEpC;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AA+DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,EAAE,EAC1B,WAAW,EAAE,oBAAoB,EAAE,EACnC,aAAa,EAAE,oBAAoB,EAAE,EACrC,KAAK,EAAE,iBAAiB,GACvB,oBAAoB,EAAE,CAMxB;AAgBD,mFAAmF;AACnF,wBAAgB,YAAY,CAAC,KAAK,EAAE,oBAAoB,GAAG,kBAAkB,CAU5E;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,cAAc,CAkB3E;AAcD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,EAAE,wBAAwB,GAChC,MAAM,EAAE,CAqBV"}
|
|
@@ -56,6 +56,11 @@ function recordToEntry(record, tier) {
|
|
|
56
56
|
* stable id (workspace > account > built-in); a tombstoned record at any tier
|
|
57
57
|
* *suppresses* the id outright. Returns live entries sorted by id.
|
|
58
58
|
*
|
|
59
|
+
* Sorted by CODE UNIT rather than `localeCompare`, which is ICU- and locale-dependent: workerd and
|
|
60
|
+
* Node would order the same catalog differently for the same workspace, and `/api/v1` pages this
|
|
61
|
+
* list with a keyset cursor whose sort key is the id. A cursor is only sound while the order it
|
|
62
|
+
* was minted under is the order the next page is read in.
|
|
63
|
+
*
|
|
59
64
|
* `scope` is the resolving workspace and its account, needed only to place a
|
|
60
65
|
* `builtin`-tier entry's generated-brief scope (see {@link CatalogBriefScope}); a managed
|
|
61
66
|
* row carries its own owner, so an override's brief follows the row, not the reader.
|
|
@@ -66,7 +71,7 @@ export function mergeCatalog(builtins, accountRows, workspaceRows, scope) {
|
|
|
66
71
|
byId.set(b.id, builtinToEntry(b, scope));
|
|
67
72
|
applyTier(byId, accountRows, 'account');
|
|
68
73
|
applyTier(byId, workspaceRows, 'workspace');
|
|
69
|
-
return [...byId.values()].sort((a, b) => a.id.
|
|
74
|
+
return [...byId.values()].sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
|
|
70
75
|
}
|
|
71
76
|
function applyTier(byId, rows, tier) {
|
|
72
77
|
for (const row of rows) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment-catalog.js","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-catalog.ts"],"names":[],"mappings":"AA0BA,SAAS,iBAAiB,CAAC,KAAwB;IAIjD,OAAO,KAAK,CAAC,SAAS;QACpB,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE;QACpD,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,CAAA;AAC5D,CAAC;AAED,wEAAwE;AACxE,SAAS,cAAc,CAAC,QAAwB,EAAE,KAAwB;IACxE,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,IAAI;QACnC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,IAAI;QAC7B,UAAU,EAAE,iBAAiB,CAAC,KAAK,CAAC;QACpC,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI;QACrC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM,IAAI,IAAI;QAC/B,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,IAAI;QACzC,iBAAiB,EAAE,IAAI;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,IAAI;QACvC,IAAI,EAAE,SAAS;KAChB,CAAA;AACH,CAAC;AAED,2DAA2D;AAC3D,SAAS,aAAa,CAAC,MAA4B,EAAE,IAAkB;IACrE,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,UAAU;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,uFAAuF;QACvF,6EAA6E;QAC7E,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,uFAAuF;QACvF,iFAAiF;QACjF,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;QACpE,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EACJ,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI;YACxE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE;YAC/E,CAAC,CAAC,IAAI;QACV,WAAW,EACT,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI;YAC/C,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE;YAChE,CAAC,CAAC,IAAI;QACV,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,IAAI;KACL,CAAA;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"fragment-catalog.js","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,19 @@ export interface ParsedFragmentFile {
|
|
|
21
21
|
export declare function slugFromPath(path: string): string;
|
|
22
22
|
/** Whether a listing entry is a Markdown file we should parse. */
|
|
23
23
|
export declare function isMarkdownFile(name: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* The id a repo-sourced file gets when it declares none: `src:<sourceId>:<slug>`, namespaced so
|
|
26
|
+
* two sources cannot collide (an explicit frontmatter `id` instead SHADOWS a built-in, ADR 0006).
|
|
27
|
+
*
|
|
28
|
+
* Bounded by {@link MAX_FRAGMENT_ID_LENGTH}, which is what keeps the id the public catalog
|
|
29
|
+
* publishes one the public create can name back. A deep directory of guidelines reaches that
|
|
30
|
+
* ceiling on ordinary paths, so the over-long case truncates the slug and appends a digest of the
|
|
31
|
+
* whole of it: truncation ALONE would be the wrong shape here, because sibling files in a deep tree
|
|
32
|
+
* share their leading path and differ in the filename, which is exactly the half a prefix cut
|
|
33
|
+
* throws away. The prefix is `src:` plus a minted source id (~36 chars), so the readable head keeps
|
|
34
|
+
* the bulk of the budget.
|
|
35
|
+
*/
|
|
36
|
+
export declare function mintSourcedFragmentId(sourceId: string, path: string): string;
|
|
24
37
|
/**
|
|
25
38
|
* Parse a Markdown guideline file. Frontmatter is the leading `--- … ---` block
|
|
26
39
|
* (a small YAML subset: `key: value`, inline `[a, b]` arrays, and nested
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment-source.logic.d.ts","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-source.logic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fragment-source.logic.d.ts","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-source.logic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAoB5D,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,CAAC,EAAE,iBAAiB,CAAA;CAC9B;AAED,qGAAqG;AACrG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED,kEAAkE;AAClE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAKD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAM5E;AAYD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CA0B9F"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { MAX_FRAGMENT_ID_LENGTH } from '@cat-factory/contracts';
|
|
1
2
|
import { parseSimpleYaml, splitFrontmatter, str, strArray } from '../repoSourceSync/frontmatter.js';
|
|
2
3
|
// Pure logic for repo-sourced fragments (ADR 0006 §4): parse one Markdown file
|
|
3
4
|
// with YAML frontmatter into a fragment, plus the small helpers the sync flow
|
|
@@ -26,6 +27,37 @@ export function slugFromPath(path) {
|
|
|
26
27
|
export function isMarkdownFile(name) {
|
|
27
28
|
return /\.md$/i.test(name);
|
|
28
29
|
}
|
|
30
|
+
/** Digest length the truncating branch of {@link mintSourcedFragmentId} reserves: `-` + 8 hex. */
|
|
31
|
+
const PATH_DIGEST_CHARS = 9;
|
|
32
|
+
/**
|
|
33
|
+
* The id a repo-sourced file gets when it declares none: `src:<sourceId>:<slug>`, namespaced so
|
|
34
|
+
* two sources cannot collide (an explicit frontmatter `id` instead SHADOWS a built-in, ADR 0006).
|
|
35
|
+
*
|
|
36
|
+
* Bounded by {@link MAX_FRAGMENT_ID_LENGTH}, which is what keeps the id the public catalog
|
|
37
|
+
* publishes one the public create can name back. A deep directory of guidelines reaches that
|
|
38
|
+
* ceiling on ordinary paths, so the over-long case truncates the slug and appends a digest of the
|
|
39
|
+
* whole of it: truncation ALONE would be the wrong shape here, because sibling files in a deep tree
|
|
40
|
+
* share their leading path and differ in the filename, which is exactly the half a prefix cut
|
|
41
|
+
* throws away. The prefix is `src:` plus a minted source id (~36 chars), so the readable head keeps
|
|
42
|
+
* the bulk of the budget.
|
|
43
|
+
*/
|
|
44
|
+
export function mintSourcedFragmentId(sourceId, path) {
|
|
45
|
+
const prefix = `src:${sourceId}:`;
|
|
46
|
+
const slug = slugFromPath(path);
|
|
47
|
+
if (prefix.length + slug.length <= MAX_FRAGMENT_ID_LENGTH)
|
|
48
|
+
return prefix + slug;
|
|
49
|
+
const head = slug.slice(0, MAX_FRAGMENT_ID_LENGTH - prefix.length - PATH_DIGEST_CHARS);
|
|
50
|
+
return `${prefix}${head}-${digest(slug)}`;
|
|
51
|
+
}
|
|
52
|
+
/** FNV-1a/32 as 8 hex chars: a stable, dependency-free disambiguator, never a security claim. */
|
|
53
|
+
function digest(value) {
|
|
54
|
+
let hash = 0x811c9dc5;
|
|
55
|
+
for (let i = 0; i < value.length; i++) {
|
|
56
|
+
hash ^= value.charCodeAt(i);
|
|
57
|
+
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
58
|
+
}
|
|
59
|
+
return hash.toString(16).padStart(8, '0');
|
|
60
|
+
}
|
|
29
61
|
/**
|
|
30
62
|
* Parse a Markdown guideline file. Frontmatter is the leading `--- … ---` block
|
|
31
63
|
* (a small YAML subset: `key: value`, inline `[a, b]` arrays, and nested
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment-source.logic.js","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-source.logic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fragment-source.logic.js","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-source.logic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAG/D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAEnG,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,yEAAyE;AACzE,0EAA0E;AAE1E,MAAM,WAAW,GAAsB;IACrC,UAAU;IACV,SAAS;IACT,KAAK;IACL,UAAU;IACV,OAAO;IACP,aAAa;IACb,UAAU;IACV,aAAa;CACd,CAAA;AAqBD,qGAAqG;AACrG,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,CACL,IAAI;SACD,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,UAAU,CACzC,CAAA;AACH,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,kGAAkG;AAClG,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAE3B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,IAAY;IAClE,MAAM,MAAM,GAAG,OAAO,QAAQ,GAAG,CAAA;IACjC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,sBAAsB;QAAE,OAAO,MAAM,GAAG,IAAI,CAAA;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAA;IACtF,OAAO,GAAG,MAAM,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;AAC3C,CAAC;AAED,iGAAiG;AACjG,SAAS,MAAM,CAAC,KAAa;IAC3B,IAAI,IAAI,GAAG,UAAU,CAAA;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,OAAe;IACjE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACvD,MAAM,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,CAAA;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAE/B,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,aAAa,CAAA;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,KAAK,CAAA;IAClE,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzC,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAuB;QACjC,KAAK;QACL,OAAO;QACP,IAAI,EAAE,WAAW,IAAI,OAAO;KAC7B,CAAA;IACD,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACrB,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAC3B,IAAI,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;IACjC,IAAI,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAA;IACnC,IAAI,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAA;IAC3C,OAAO,MAAM,CAAA;AACf,CAAC;AAED,6EAA6E;AAE7E,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACzD,MAAM,GAAG,GAAG,KAAgC,CAAA;IAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAClG,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAgB,CAAA;IAC1D,MAAM,GAAG,GAAsB,EAAE,CAAA;IACjC,IAAI,UAAU,CAAC,MAAM;QAAE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAA;IAClD,IAAI,UAAU,CAAC,MAAM;QAAE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAA;IAClD,OAAO,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3D,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,IAAI,GAAG,IAAI;SACd,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC5B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAA;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACrE,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;AACzE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/agents",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.166.0",
|
|
4
4
|
"description": "Agent catalog, routing, prompts and fragment library for the Agent Architecture Board.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"@ai-sdk/openai": "^4.0.60",
|
|
29
29
|
"@ai-sdk/openai-compatible": "^3.0.44",
|
|
30
30
|
"@ai-sdk/provider": "^4.0.10",
|
|
31
|
-
"@cat-factory/contracts": "0.
|
|
32
|
-
"@cat-factory/kernel": "0.346.
|
|
33
|
-
"@cat-factory/prompt-fragments": "1.1.
|
|
31
|
+
"@cat-factory/contracts": "0.354.0",
|
|
32
|
+
"@cat-factory/kernel": "0.346.2",
|
|
33
|
+
"@cat-factory/prompt-fragments": "1.1.46",
|
|
34
34
|
"@openrouter/ai-sdk-provider": "^3.0.0",
|
|
35
35
|
"ai": "^7.0.93",
|
|
36
36
|
"handlebars": "^4.7.9",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"valibot": "^1.4.2"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@cat-factory/caching": "0.20.
|
|
41
|
+
"@cat-factory/caching": "0.20.84",
|
|
42
42
|
"typescript": "7.0.2",
|
|
43
43
|
"vitest": "^4.1.11"
|
|
44
44
|
},
|