@cat-factory/agents 0.6.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/LICENSE +21 -0
- package/dist/agents/AiAgentExecutor.d.ts +72 -0
- package/dist/agents/AiAgentExecutor.d.ts.map +1 -0
- package/dist/agents/AiAgentExecutor.js +125 -0
- package/dist/agents/AiAgentExecutor.js.map +1 -0
- package/dist/agents/acceptance-prompts.d.ts +29 -0
- package/dist/agents/acceptance-prompts.d.ts.map +1 -0
- package/dist/agents/acceptance-prompts.js +112 -0
- package/dist/agents/acceptance-prompts.js.map +1 -0
- package/dist/agents/agent-catalog.d.ts +6 -0
- package/dist/agents/agent-catalog.d.ts.map +1 -0
- package/dist/agents/agent-catalog.js +197 -0
- package/dist/agents/agent-catalog.js.map +1 -0
- package/dist/agents/agent-configs.d.ts +17 -0
- package/dist/agents/agent-configs.d.ts.map +1 -0
- package/dist/agents/agent-configs.js +66 -0
- package/dist/agents/agent-configs.js.map +1 -0
- package/dist/agents/agent-routing.d.ts +57 -0
- package/dist/agents/agent-routing.d.ts.map +1 -0
- package/dist/agents/agent-routing.js +41 -0
- package/dist/agents/agent-routing.js.map +1 -0
- package/dist/agents/business-logic-prompts.d.ts +28 -0
- package/dist/agents/business-logic-prompts.d.ts.map +1 -0
- package/dist/agents/business-logic-prompts.js +96 -0
- package/dist/agents/business-logic-prompts.js.map +1 -0
- package/dist/agents/catalog.d.ts +6 -0
- package/dist/agents/catalog.d.ts.map +1 -0
- package/dist/agents/catalog.js +168 -0
- package/dist/agents/catalog.js.map +1 -0
- package/dist/agents/ci-gate.d.ts +2 -0
- package/dist/agents/ci-gate.d.ts.map +1 -0
- package/dist/agents/ci-gate.js +33 -0
- package/dist/agents/ci-gate.js.map +1 -0
- package/dist/agents/companion-prompts.d.ts +4 -0
- package/dist/agents/companion-prompts.d.ts.map +1 -0
- package/dist/agents/companion-prompts.js +27 -0
- package/dist/agents/companion-prompts.js.map +1 -0
- package/dist/agents/companions.d.ts +20 -0
- package/dist/agents/companions.d.ts.map +1 -0
- package/dist/agents/companions.js +38 -0
- package/dist/agents/companions.js.map +1 -0
- package/dist/agents/kinds/companions.d.ts +20 -0
- package/dist/agents/kinds/companions.d.ts.map +1 -0
- package/dist/agents/kinds/companions.js +39 -0
- package/dist/agents/kinds/companions.js.map +1 -0
- package/dist/agents/kinds/configs.d.ts +17 -0
- package/dist/agents/kinds/configs.d.ts.map +1 -0
- package/dist/agents/kinds/configs.js +66 -0
- package/dist/agents/kinds/configs.js.map +1 -0
- package/dist/agents/kinds/read-only.d.ts +13 -0
- package/dist/agents/kinds/read-only.d.ts.map +1 -0
- package/dist/agents/kinds/read-only.js +32 -0
- package/dist/agents/kinds/read-only.js.map +1 -0
- package/dist/agents/kinds/registry.d.ts +70 -0
- package/dist/agents/kinds/registry.d.ts.map +1 -0
- package/dist/agents/kinds/registry.js +51 -0
- package/dist/agents/kinds/registry.js.map +1 -0
- package/dist/agents/kinds/traits.d.ts +60 -0
- package/dist/agents/kinds/traits.d.ts.map +1 -0
- package/dist/agents/kinds/traits.js +123 -0
- package/dist/agents/kinds/traits.js.map +1 -0
- package/dist/agents/kinds/versions.d.ts +46 -0
- package/dist/agents/kinds/versions.d.ts.map +1 -0
- package/dist/agents/kinds/versions.js +22 -0
- package/dist/agents/kinds/versions.js.map +1 -0
- package/dist/agents/mock-prompts.d.ts +12 -0
- package/dist/agents/mock-prompts.d.ts.map +1 -0
- package/dist/agents/mock-prompts.js +61 -0
- package/dist/agents/mock-prompts.js.map +1 -0
- package/dist/agents/prompt-fragments.d.ts +17 -0
- package/dist/agents/prompt-fragments.d.ts.map +1 -0
- package/dist/agents/prompt-fragments.js +33 -0
- package/dist/agents/prompt-fragments.js.map +1 -0
- package/dist/agents/prompt-shared.d.ts +7 -0
- package/dist/agents/prompt-shared.d.ts.map +1 -0
- package/dist/agents/prompt-shared.js +10 -0
- package/dist/agents/prompt-shared.js.map +1 -0
- package/dist/agents/prompt-versions.d.ts +48 -0
- package/dist/agents/prompt-versions.d.ts.map +1 -0
- package/dist/agents/prompt-versions.js +55 -0
- package/dist/agents/prompt-versions.js.map +1 -0
- package/dist/agents/prompts/acceptance.d.ts +29 -0
- package/dist/agents/prompts/acceptance.d.ts.map +1 -0
- package/dist/agents/prompts/acceptance.js +112 -0
- package/dist/agents/prompts/acceptance.js.map +1 -0
- package/dist/agents/prompts/business-logic.d.ts +28 -0
- package/dist/agents/prompts/business-logic.d.ts.map +1 -0
- package/dist/agents/prompts/business-logic.js +98 -0
- package/dist/agents/prompts/business-logic.js.map +1 -0
- package/dist/agents/prompts/clarity.d.ts +10 -0
- package/dist/agents/prompts/clarity.d.ts.map +1 -0
- package/dist/agents/prompts/clarity.js +40 -0
- package/dist/agents/prompts/clarity.js.map +1 -0
- package/dist/agents/prompts/companion.d.ts +4 -0
- package/dist/agents/prompts/companion.d.ts.map +1 -0
- package/dist/agents/prompts/companion.js +61 -0
- package/dist/agents/prompts/companion.js.map +1 -0
- package/dist/agents/prompts/delivery-contract.d.ts +2 -0
- package/dist/agents/prompts/delivery-contract.d.ts.map +1 -0
- package/dist/agents/prompts/delivery-contract.js +33 -0
- package/dist/agents/prompts/delivery-contract.js.map +1 -0
- package/dist/agents/prompts/mock.d.ts +12 -0
- package/dist/agents/prompts/mock.d.ts.map +1 -0
- package/dist/agents/prompts/mock.js +61 -0
- package/dist/agents/prompts/mock.js.map +1 -0
- package/dist/agents/prompts/requirements.d.ts +13 -0
- package/dist/agents/prompts/requirements.d.ts.map +1 -0
- package/dist/agents/prompts/requirements.js +45 -0
- package/dist/agents/prompts/requirements.js.map +1 -0
- package/dist/agents/prompts/roles.d.ts +16 -0
- package/dist/agents/prompts/roles.d.ts.map +1 -0
- package/dist/agents/prompts/roles.js +74 -0
- package/dist/agents/prompts/roles.js.map +1 -0
- package/dist/agents/prompts/shared.d.ts +19 -0
- package/dist/agents/prompts/shared.d.ts.map +1 -0
- package/dist/agents/prompts/shared.js +25 -0
- package/dist/agents/prompts/shared.js.map +1 -0
- package/dist/agents/prompts/standard-templates.generated.d.ts +36 -0
- package/dist/agents/prompts/standard-templates.generated.d.ts.map +1 -0
- package/dist/agents/prompts/standard-templates.generated.js +122 -0
- package/dist/agents/prompts/standard-templates.generated.js.map +1 -0
- package/dist/agents/prompts/standard.d.ts +36 -0
- package/dist/agents/prompts/standard.d.ts.map +1 -0
- package/dist/agents/prompts/standard.js +208 -0
- package/dist/agents/prompts/standard.js.map +1 -0
- package/dist/agents/prompts/testing.d.ts +12 -0
- package/dist/agents/prompts/testing.d.ts.map +1 -0
- package/dist/agents/prompts/testing.js +94 -0
- package/dist/agents/prompts/testing.js.map +1 -0
- package/dist/agents/read-only.d.ts +13 -0
- package/dist/agents/read-only.d.ts.map +1 -0
- package/dist/agents/read-only.js +29 -0
- package/dist/agents/read-only.js.map +1 -0
- package/dist/agents/registry.d.ts +70 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +51 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/runtime/executor.d.ts +72 -0
- package/dist/agents/runtime/executor.d.ts.map +1 -0
- package/dist/agents/runtime/executor.js +125 -0
- package/dist/agents/runtime/executor.js.map +1 -0
- package/dist/agents/runtime/fragments.d.ts +17 -0
- package/dist/agents/runtime/fragments.d.ts.map +1 -0
- package/dist/agents/runtime/fragments.js +33 -0
- package/dist/agents/runtime/fragments.js.map +1 -0
- package/dist/agents/runtime/routing.d.ts +57 -0
- package/dist/agents/runtime/routing.d.ts.map +1 -0
- package/dist/agents/runtime/routing.js +41 -0
- package/dist/agents/runtime/routing.js.map +1 -0
- package/dist/agents/runtime/web-search.d.ts +43 -0
- package/dist/agents/runtime/web-search.d.ts.map +1 -0
- package/dist/agents/runtime/web-search.js +102 -0
- package/dist/agents/runtime/web-search.js.map +1 -0
- package/dist/agents/standard-prompt-templates.generated.d.ts +36 -0
- package/dist/agents/standard-prompt-templates.generated.d.ts.map +1 -0
- package/dist/agents/standard-prompt-templates.generated.js +122 -0
- package/dist/agents/standard-prompt-templates.generated.js.map +1 -0
- package/dist/agents/standard-prompts.d.ts +36 -0
- package/dist/agents/standard-prompts.d.ts.map +1 -0
- package/dist/agents/standard-prompts.js +202 -0
- package/dist/agents/standard-prompts.js.map +1 -0
- package/dist/agents/test-prompts.d.ts +12 -0
- package/dist/agents/test-prompts.d.ts.map +1 -0
- package/dist/agents/test-prompts.js +92 -0
- package/dist/agents/test-prompts.js.map +1 -0
- package/dist/agents/traits.d.ts +56 -0
- package/dist/agents/traits.d.ts.map +1 -0
- package/dist/agents/traits.js +100 -0
- package/dist/agents/traits.js.map +1 -0
- package/dist/agents/web-search.d.ts +43 -0
- package/dist/agents/web-search.d.ts.map +1 -0
- package/dist/agents/web-search.js +102 -0
- package/dist/agents/web-search.js.map +1 -0
- package/dist/fragmentLibrary/DeterministicFragmentSelector.d.ts +10 -0
- package/dist/fragmentLibrary/DeterministicFragmentSelector.d.ts.map +1 -0
- package/dist/fragmentLibrary/DeterministicFragmentSelector.js +12 -0
- package/dist/fragmentLibrary/DeterministicFragmentSelector.js.map +1 -0
- package/dist/fragmentLibrary/FragmentLibraryService.d.ts +55 -0
- package/dist/fragmentLibrary/FragmentLibraryService.d.ts.map +1 -0
- package/dist/fragmentLibrary/FragmentLibraryService.js +203 -0
- package/dist/fragmentLibrary/FragmentLibraryService.js.map +1 -0
- package/dist/fragmentLibrary/FragmentSourceService.d.ts +51 -0
- package/dist/fragmentLibrary/FragmentSourceService.d.ts.map +1 -0
- package/dist/fragmentLibrary/FragmentSourceService.js +181 -0
- package/dist/fragmentLibrary/FragmentSourceService.js.map +1 -0
- package/dist/fragmentLibrary/LlmFragmentSelector.d.ts +21 -0
- package/dist/fragmentLibrary/LlmFragmentSelector.d.ts.map +1 -0
- package/dist/fragmentLibrary/LlmFragmentSelector.js +87 -0
- package/dist/fragmentLibrary/LlmFragmentSelector.js.map +1 -0
- package/dist/fragmentLibrary/fragment-catalog.d.ts +43 -0
- package/dist/fragmentLibrary/fragment-catalog.d.ts.map +1 -0
- package/dist/fragmentLibrary/fragment-catalog.js +129 -0
- package/dist/fragmentLibrary/fragment-catalog.js.map +1 -0
- package/dist/fragmentLibrary/fragment-source.logic.d.ts +34 -0
- package/dist/fragmentLibrary/fragment-source.logic.d.ts.map +1 -0
- package/dist/fragmentLibrary/fragment-source.logic.js +172 -0
- package/dist/fragmentLibrary/fragment-source.logic.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/cache.d.ts +22 -0
- package/dist/providers/cache.d.ts.map +1 -0
- package/dist/providers/cache.js +64 -0
- package/dist/providers/cache.js.map +1 -0
- package/dist/providers/endpoints.d.ts +8 -0
- package/dist/providers/endpoints.d.ts.map +1 -0
- package/dist/providers/endpoints.js +23 -0
- package/dist/providers/endpoints.js.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +6 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/instrumented.d.ts +28 -0
- package/dist/providers/instrumented.d.ts.map +1 -0
- package/dist/providers/instrumented.js +147 -0
- package/dist/providers/instrumented.js.map +1 -0
- package/dist/providers/registry.d.ts +26 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +32 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/resolvers.d.ts +58 -0
- package/dist/providers/resolvers.d.ts.map +1 -0
- package/dist/providers/resolvers.js +78 -0
- package/dist/providers/resolvers.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/** Built-in catalog fragment → resolved entry at the `builtin` tier. */
|
|
2
|
+
function builtinToEntry(fragment) {
|
|
3
|
+
return {
|
|
4
|
+
id: fragment.id,
|
|
5
|
+
version: fragment.version,
|
|
6
|
+
title: fragment.title,
|
|
7
|
+
category: fragment.category ?? null,
|
|
8
|
+
summary: fragment.summary,
|
|
9
|
+
body: fragment.body,
|
|
10
|
+
appliesTo: fragment.appliesTo ?? null,
|
|
11
|
+
tags: fragment.tags ?? null,
|
|
12
|
+
source: fragment.source ?? null,
|
|
13
|
+
tier: 'builtin',
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/** Managed record → resolved entry at its owner's tier. */
|
|
17
|
+
function recordToEntry(record, tier) {
|
|
18
|
+
return {
|
|
19
|
+
id: record.fragmentId,
|
|
20
|
+
version: record.version,
|
|
21
|
+
title: record.title,
|
|
22
|
+
category: record.category,
|
|
23
|
+
summary: record.summary,
|
|
24
|
+
body: record.body,
|
|
25
|
+
appliesTo: record.appliesTo,
|
|
26
|
+
tags: record.tags,
|
|
27
|
+
source: record.sourceId && record.sourcePath !== null && record.sourceSha !== null
|
|
28
|
+
? { sourceId: record.sourceId, path: record.sourcePath, sha: record.sourceSha }
|
|
29
|
+
: null,
|
|
30
|
+
tier,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Merge the three tiers into one catalog. Later tiers override earlier ones by
|
|
35
|
+
* stable id (workspace > account > built-in); a tombstoned record at any tier
|
|
36
|
+
* *suppresses* the id outright. Returns live entries sorted by id.
|
|
37
|
+
*/
|
|
38
|
+
export function mergeCatalog(builtins, accountRows, workspaceRows) {
|
|
39
|
+
const byId = new Map();
|
|
40
|
+
for (const b of builtins)
|
|
41
|
+
byId.set(b.id, builtinToEntry(b));
|
|
42
|
+
applyTier(byId, accountRows, 'account');
|
|
43
|
+
applyTier(byId, workspaceRows, 'workspace');
|
|
44
|
+
return [...byId.values()].sort((a, b) => a.id.localeCompare(b.id));
|
|
45
|
+
}
|
|
46
|
+
function applyTier(byId, rows, tier) {
|
|
47
|
+
for (const row of rows) {
|
|
48
|
+
if (row.deletedAt !== null) {
|
|
49
|
+
byId.delete(row.fragmentId); // tombstone: suppress the inherited/own entry
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
byId.set(row.fragmentId, recordToEntry(row, tier));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/** Reduce a resolved entry to the metadata the selector reasons over (no body). */
|
|
57
|
+
export function toSelectable(entry) {
|
|
58
|
+
const out = {
|
|
59
|
+
id: entry.id,
|
|
60
|
+
title: entry.title,
|
|
61
|
+
summary: entry.summary,
|
|
62
|
+
};
|
|
63
|
+
if (entry.category)
|
|
64
|
+
out.category = entry.category;
|
|
65
|
+
if (entry.tags && entry.tags.length)
|
|
66
|
+
out.tags = entry.tags;
|
|
67
|
+
if (entry.appliesTo)
|
|
68
|
+
out.appliesTo = entry.appliesTo;
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
/** A resolved entry → the wire {@link PromptFragment} (+ tier handled by caller). */
|
|
72
|
+
export function entryToFragment(entry) {
|
|
73
|
+
const fragment = {
|
|
74
|
+
id: entry.id,
|
|
75
|
+
version: entry.version,
|
|
76
|
+
title: entry.title,
|
|
77
|
+
category: entry.category ?? '',
|
|
78
|
+
summary: entry.summary,
|
|
79
|
+
body: entry.body,
|
|
80
|
+
};
|
|
81
|
+
if (entry.appliesTo)
|
|
82
|
+
fragment.appliesTo = entry.appliesTo;
|
|
83
|
+
if (entry.tags && entry.tags.length)
|
|
84
|
+
fragment.tags = entry.tags;
|
|
85
|
+
if (entry.source)
|
|
86
|
+
fragment.source = entry.source;
|
|
87
|
+
return fragment;
|
|
88
|
+
}
|
|
89
|
+
/** Whether a fragment's `appliesTo` gate admits this run's block type / agent kind. */
|
|
90
|
+
function passesAppliesTo(candidate, context) {
|
|
91
|
+
const applies = candidate.appliesTo;
|
|
92
|
+
if (!applies)
|
|
93
|
+
return true;
|
|
94
|
+
if (applies.blockTypes && !applies.blockTypes.includes(context.blockType))
|
|
95
|
+
return false;
|
|
96
|
+
if (applies.agentKinds && !applies.agentKinds.includes(context.agentKind))
|
|
97
|
+
return false;
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The deterministic fallback selector (ADR 0006 §5): keep every candidate whose
|
|
102
|
+
* `appliesTo` gate admits the run, then — when any candidate carries tags —
|
|
103
|
+
* prefer those whose tags intersect the run's signals (block type, title,
|
|
104
|
+
* description, prior outputs). With no tags anywhere, the gate alone decides, so
|
|
105
|
+
* an offline/test run is fully deterministic and never blocks.
|
|
106
|
+
*/
|
|
107
|
+
export function selectDeterministic(candidates, context) {
|
|
108
|
+
const admitted = candidates.filter((c) => passesAppliesTo(c, context));
|
|
109
|
+
const haystack = [
|
|
110
|
+
context.blockType,
|
|
111
|
+
context.blockTitle,
|
|
112
|
+
context.blockDescription,
|
|
113
|
+
...context.signals,
|
|
114
|
+
]
|
|
115
|
+
.join(' ')
|
|
116
|
+
.toLowerCase();
|
|
117
|
+
const anyTagged = admitted.some((c) => c.tags && c.tags.length > 0);
|
|
118
|
+
if (!anyTagged)
|
|
119
|
+
return admitted.map((c) => c.id);
|
|
120
|
+
const tagMatched = admitted.filter((c) => {
|
|
121
|
+
if (!c.tags || c.tags.length === 0)
|
|
122
|
+
return true; // untagged fragments stay broadly applicable
|
|
123
|
+
return c.tags.some((tag) => haystack.includes(tag.toLowerCase()));
|
|
124
|
+
});
|
|
125
|
+
// If tag filtering excluded everything, fall back to the gate-admitted set so a
|
|
126
|
+
// run still gets its applicable standards rather than nothing.
|
|
127
|
+
return (tagMatched.length > 0 ? tagMatched : admitted).map((c) => c.id);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=fragment-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragment-catalog.js","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { FragmentAppliesTo } from '@cat-factory/kernel';
|
|
2
|
+
/** A fragment parsed from a Markdown file's frontmatter + body. */
|
|
3
|
+
export interface ParsedFragmentFile {
|
|
4
|
+
/** Explicit id from frontmatter (used to *shadow* a built-in); else undefined. */
|
|
5
|
+
id?: string;
|
|
6
|
+
title: string;
|
|
7
|
+
category?: string;
|
|
8
|
+
summary: string;
|
|
9
|
+
body: string;
|
|
10
|
+
tags?: string[];
|
|
11
|
+
appliesTo?: FragmentAppliesTo;
|
|
12
|
+
}
|
|
13
|
+
/** Slugify a repo file path into a stable, id-safe token (e.g. `backend/err.md` → `backend-err`). */
|
|
14
|
+
export declare function slugFromPath(path: string): string;
|
|
15
|
+
/** Whether a listing entry is a Markdown file we should parse. */
|
|
16
|
+
export declare function isMarkdownFile(name: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Stable digest of a source's file listing — sorted `path:sha` pairs hashed with
|
|
19
|
+
* FNV-1a. Stored as the source's `lastSyncedSha`; comparing it against a fresh
|
|
20
|
+
* listing is the cheap change check the resync badge uses, no per-file reads.
|
|
21
|
+
*/
|
|
22
|
+
export declare function digestListing(entries: {
|
|
23
|
+
path: string;
|
|
24
|
+
sha: string;
|
|
25
|
+
}[]): string;
|
|
26
|
+
/**
|
|
27
|
+
* Parse a Markdown guideline file. Frontmatter is the leading `--- … ---` block
|
|
28
|
+
* (a small YAML subset: `key: value`, inline `[a, b]` arrays, and nested
|
|
29
|
+
* `appliesTo`). Tolerant: a missing title defaults to a humanised filename, a
|
|
30
|
+
* missing summary to the first body line, so a sparse file still imports.
|
|
31
|
+
* Returns null only when there is no usable body at all.
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseFragmentMarkdown(path: string, content: string): ParsedFragmentFile | null;
|
|
34
|
+
//# sourceMappingURL=fragment-source.logic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragment-source.logic.d.ts","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-source.logic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAkB5D,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,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;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAY9E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAwB9F"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// Pure logic for repo-sourced fragments (ADR 0006 §4): parse one Markdown file
|
|
2
|
+
// with YAML frontmatter into a fragment, plus the small helpers the sync flow
|
|
3
|
+
// needs (slugging an id from a path, digesting a directory listing for the
|
|
4
|
+
// cheap "changed?" check). No I/O lives here so it is unit-testable.
|
|
5
|
+
const BLOCK_TYPES = [
|
|
6
|
+
'frontend',
|
|
7
|
+
'service',
|
|
8
|
+
'api',
|
|
9
|
+
'database',
|
|
10
|
+
'queue',
|
|
11
|
+
'integration',
|
|
12
|
+
'external',
|
|
13
|
+
'environment',
|
|
14
|
+
];
|
|
15
|
+
/** Slugify a repo file path into a stable, id-safe token (e.g. `backend/err.md` → `backend-err`). */
|
|
16
|
+
export function slugFromPath(path) {
|
|
17
|
+
return (path
|
|
18
|
+
.replace(/\.md$/i, '')
|
|
19
|
+
.toLowerCase()
|
|
20
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
21
|
+
.replace(/^-+|-+$/g, '') || 'fragment');
|
|
22
|
+
}
|
|
23
|
+
/** Whether a listing entry is a Markdown file we should parse. */
|
|
24
|
+
export function isMarkdownFile(name) {
|
|
25
|
+
return /\.md$/i.test(name);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Stable digest of a source's file listing — sorted `path:sha` pairs hashed with
|
|
29
|
+
* FNV-1a. Stored as the source's `lastSyncedSha`; comparing it against a fresh
|
|
30
|
+
* listing is the cheap change check the resync badge uses, no per-file reads.
|
|
31
|
+
*/
|
|
32
|
+
export function digestListing(entries) {
|
|
33
|
+
const joined = entries
|
|
34
|
+
.map((e) => `${e.path}:${e.sha}`)
|
|
35
|
+
.sort()
|
|
36
|
+
.join('\n');
|
|
37
|
+
// FNV-1a (32-bit), hex. Sufficient for change detection (not cryptographic).
|
|
38
|
+
let hash = 0x811c9dc5;
|
|
39
|
+
for (let i = 0; i < joined.length; i++) {
|
|
40
|
+
hash ^= joined.charCodeAt(i);
|
|
41
|
+
hash = Math.imul(hash, 0x01000193);
|
|
42
|
+
}
|
|
43
|
+
return (hash >>> 0).toString(16).padStart(8, '0');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parse a Markdown guideline file. Frontmatter is the leading `--- … ---` block
|
|
47
|
+
* (a small YAML subset: `key: value`, inline `[a, b]` arrays, and nested
|
|
48
|
+
* `appliesTo`). Tolerant: a missing title defaults to a humanised filename, a
|
|
49
|
+
* missing summary to the first body line, so a sparse file still imports.
|
|
50
|
+
* Returns null only when there is no usable body at all.
|
|
51
|
+
*/
|
|
52
|
+
export function parseFragmentMarkdown(path, content) {
|
|
53
|
+
const { frontmatter, body } = splitFrontmatter(content);
|
|
54
|
+
const fm = parseSimpleYaml(frontmatter);
|
|
55
|
+
const trimmedBody = body.trim();
|
|
56
|
+
const fallbackTitle = humanise(path);
|
|
57
|
+
const title = str(fm.title) ?? fallbackTitle;
|
|
58
|
+
const summary = str(fm.summary) ?? firstLine(trimmedBody) ?? title;
|
|
59
|
+
if (!trimmedBody && !summary)
|
|
60
|
+
return null;
|
|
61
|
+
const appliesTo = parseAppliesTo(fm.appliesTo);
|
|
62
|
+
const parsed = {
|
|
63
|
+
title,
|
|
64
|
+
summary,
|
|
65
|
+
body: trimmedBody || summary,
|
|
66
|
+
};
|
|
67
|
+
const id = str(fm.id);
|
|
68
|
+
if (id)
|
|
69
|
+
parsed.id = id;
|
|
70
|
+
const category = str(fm.category);
|
|
71
|
+
if (category)
|
|
72
|
+
parsed.category = category;
|
|
73
|
+
const tags = strArray(fm.tags);
|
|
74
|
+
if (tags.length)
|
|
75
|
+
parsed.tags = tags;
|
|
76
|
+
if (appliesTo)
|
|
77
|
+
parsed.appliesTo = appliesTo;
|
|
78
|
+
return parsed;
|
|
79
|
+
}
|
|
80
|
+
// --- internals ------------------------------------------------------------
|
|
81
|
+
function splitFrontmatter(content) {
|
|
82
|
+
// Tolerate a leading BOM/whitespace before the opening fence.
|
|
83
|
+
const match = content.match(/^?\s*---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
|
|
84
|
+
if (!match)
|
|
85
|
+
return { frontmatter: '', body: content };
|
|
86
|
+
return { frontmatter: match[1] ?? '', body: match[2] ?? '' };
|
|
87
|
+
}
|
|
88
|
+
/** A deliberately small YAML subset: top-level `key: value` and one nested map. */
|
|
89
|
+
function parseSimpleYaml(text) {
|
|
90
|
+
const out = {};
|
|
91
|
+
const lines = text.split(/\r?\n/);
|
|
92
|
+
let nestedKey = null;
|
|
93
|
+
let nested = null;
|
|
94
|
+
for (const raw of lines) {
|
|
95
|
+
if (!raw.trim() || raw.trim().startsWith('#'))
|
|
96
|
+
continue;
|
|
97
|
+
const indented = /^\s+/.test(raw);
|
|
98
|
+
const colon = raw.indexOf(':');
|
|
99
|
+
if (colon === -1)
|
|
100
|
+
continue;
|
|
101
|
+
const key = raw.slice(0, colon).trim();
|
|
102
|
+
const value = raw.slice(colon + 1).trim();
|
|
103
|
+
if (indented && nested) {
|
|
104
|
+
nested[key] = parseScalarOrArray(value);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (value === '') {
|
|
108
|
+
// Opens a nested map (e.g. `appliesTo:`).
|
|
109
|
+
nestedKey = key;
|
|
110
|
+
nested = {};
|
|
111
|
+
out[key] = nested;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
nestedKey = null;
|
|
115
|
+
nested = null;
|
|
116
|
+
out[key] = parseScalarOrArray(value);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
void nestedKey;
|
|
120
|
+
return out;
|
|
121
|
+
}
|
|
122
|
+
function parseScalarOrArray(value) {
|
|
123
|
+
const inline = value.match(/^\[(.*)\]$/);
|
|
124
|
+
if (inline) {
|
|
125
|
+
return inline[1]
|
|
126
|
+
.split(',')
|
|
127
|
+
.map((s) => unquote(s.trim()))
|
|
128
|
+
.filter((s) => s.length > 0);
|
|
129
|
+
}
|
|
130
|
+
return unquote(value);
|
|
131
|
+
}
|
|
132
|
+
function unquote(s) {
|
|
133
|
+
if ((s.startsWith('"') && s.endsWith('"')) || (s.startsWith("'") && s.endsWith("'"))) {
|
|
134
|
+
return s.slice(1, -1);
|
|
135
|
+
}
|
|
136
|
+
return s;
|
|
137
|
+
}
|
|
138
|
+
function str(value) {
|
|
139
|
+
return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
|
|
140
|
+
}
|
|
141
|
+
function strArray(value) {
|
|
142
|
+
if (Array.isArray(value))
|
|
143
|
+
return value.map((v) => String(v).trim()).filter(Boolean);
|
|
144
|
+
const single = str(value);
|
|
145
|
+
return single ? [single] : [];
|
|
146
|
+
}
|
|
147
|
+
function parseAppliesTo(value) {
|
|
148
|
+
if (!value || typeof value !== 'object')
|
|
149
|
+
return undefined;
|
|
150
|
+
const obj = value;
|
|
151
|
+
const blockTypes = strArray(obj.blockTypes).filter((t) => BLOCK_TYPES.includes(t));
|
|
152
|
+
const agentKinds = strArray(obj.agentKinds);
|
|
153
|
+
const out = {};
|
|
154
|
+
if (blockTypes.length)
|
|
155
|
+
out.blockTypes = blockTypes;
|
|
156
|
+
if (agentKinds.length)
|
|
157
|
+
out.agentKinds = agentKinds;
|
|
158
|
+
return out.blockTypes || out.agentKinds ? out : undefined;
|
|
159
|
+
}
|
|
160
|
+
function firstLine(body) {
|
|
161
|
+
const line = body
|
|
162
|
+
.split(/\r?\n/)
|
|
163
|
+
.map((l) => l.replace(/^[#>\-*\s]+/, '').trim())
|
|
164
|
+
.find((l) => l.length > 0);
|
|
165
|
+
return line ? line.slice(0, 200) : undefined;
|
|
166
|
+
}
|
|
167
|
+
function humanise(path) {
|
|
168
|
+
const base = path.split('/').pop() ?? path;
|
|
169
|
+
const stem = base.replace(/\.md$/i, '').replace(/[-_]+/g, ' ').trim();
|
|
170
|
+
return stem ? stem.charAt(0).toUpperCase() + stem.slice(1) : 'Fragment';
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=fragment-source.logic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragment-source.logic.js","sourceRoot":"","sources":["../../src/fragmentLibrary/fragment-source.logic.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export { AiAgentExecutor, type AiAgentExecutorDependencies } from './agents/runtime/executor.js';
|
|
2
|
+
export { type InlineWebSearchOptions, DEFAULT_INLINE_WEB_SEARCH_KINDS, DEFAULT_INLINE_WEB_SEARCH_MAX_USES, webResearchGuidanceFor, inlineWebSearchOptionsFromEnv, providerWebSearchTools, } from './agents/runtime/web-search.js';
|
|
3
|
+
export { type AgentModelConfig, type AgentRouting, type StepModelResolvers, type StepModelInputs, resolveAgentConfig, resolveStepModelRef, resolveInlineModelRef, } from './agents/runtime/routing.js';
|
|
4
|
+
export { systemPromptFor, userPromptFor } from './agents/catalog.js';
|
|
5
|
+
export { TASK_ESTIMATOR_AGENT_KIND } from './agents/prompts/roles.js';
|
|
6
|
+
export { type AgentKindDefinition, registerAgentKind, registerAgentKinds, registeredAgentKind, registeredAgentKinds, registeredKindRequiresContainer, registeredConfigContributions, clearRegisteredAgentKinds, } from './agents/kinds/registry.js';
|
|
7
|
+
export { type AgentTrait, type AgentTraitDefinition, CODE_AWARE_TRAIT, SPEC_AWARE_TRAIT, SPEC_AWARE_GUIDANCE, STANDARD_AGENT_TRAITS, registerAgentTrait, registerAgentTraits, registeredAgentTrait, clearRegisteredAgentTraits, assignAgentTraits, clearAssignedAgentTraits, traitsFor, hasTrait, traitGuidanceFor, } from './agents/kinds/traits.js';
|
|
8
|
+
export { TESTER_ENVIRONMENT_CONFIG_ID, PLAYWRIGHT_E2E_TARGET_CONFIG_ID, configContributionsFor, configContributionCatalog, } from './agents/kinds/configs.js';
|
|
9
|
+
export { isTestingKind, testingSystemPrompt, testerEnvironmentSection, } from './agents/prompts/testing.js';
|
|
10
|
+
export { REVIEW_SYSTEM_PROMPT, REWORK_SYSTEM_PROMPT } from './agents/prompts/requirements.js';
|
|
11
|
+
export { CLARITY_REVIEW_SYSTEM_PROMPT, CLARITY_REWORK_SYSTEM_PROMPT, } from './agents/prompts/clarity.js';
|
|
12
|
+
export { type VersionedPrompt, type PromptId, PROMPT_VERSIONS, promptVersion, promptVersionLabel, } from './agents/kinds/versions.js';
|
|
13
|
+
export { composeSystemPrompt, composeBlockSystemPrompt, type ComposableBlock, } from './agents/runtime/fragments.js';
|
|
14
|
+
export { type StandardPhase, STANDARD_PHASES, STANDARD_PHASE_BY_KIND, phaseForKind, standardSystemPrompt, renderStandardUserPrompt, } from './agents/prompts/standard.js';
|
|
15
|
+
export { type AcceptanceAgentKind, ACCEPTANCE_AGENT_KINDS, acceptanceSystemPrompt, isAcceptanceKind, testApproachSection, } from './agents/prompts/acceptance.js';
|
|
16
|
+
export { type CompanionDefinition, COMPANIONS, isCompanionKind, companionFor, companionTargets, } from './agents/kinds/companions.js';
|
|
17
|
+
export { companionSystemPrompt } from './agents/prompts/companion.js';
|
|
18
|
+
export { READ_ONLY_AGENT_KINDS, READ_ONLY_GUARDRAIL, isReadOnlyAgentKind, } from './agents/kinds/read-only.js';
|
|
19
|
+
export { MOCK_AGENT_KIND, isMockKind, mockSystemPrompt } from './agents/prompts/mock.js';
|
|
20
|
+
export { type BusinessLogicAgentKind, BUSINESS_LOGIC_AGENT_KINDS, BUSINESS_DOCUMENTER_KIND, BUSINESS_REVIEWER_KIND, BUSINESS_LOGIC_DOCS_DIR, isBusinessLogicKind, businessLogicSystemPrompt, } from './agents/prompts/business-logic.js';
|
|
21
|
+
export { PLATFORM_DELIVERY_CONTRACT } from './agents/prompts/delivery-contract.js';
|
|
22
|
+
export { FINAL_ANSWER_IN_REPLY, STANDARDS_FOOTER } from './agents/prompts/shared.js';
|
|
23
|
+
export { CompositeModelProvider, InstrumentedModelProvider, catFactoryObservability, type InlineObservabilityContext, type ModelResolver, type ProviderRegistry, anthropicResolver, baseProviderRegistry, cloudflareRestResolver, openAiCompatibleResolver, openAiResolver, DEEPSEEK_BASE_URL, DEFAULT_OPENAI_COMPATIBLE_BASE_URLS, MOONSHOT_BASE_URL, OPENAI_BASE_URL, OPENROUTER_BASE_URL, QWEN_BASE_URL, type CachePolicy, cachedTokensFromUsage, inlineCacheProviderOptions, promptCacheParams, providerCachePolicy, } from './providers/index.js';
|
|
24
|
+
export { FragmentLibraryService, type FragmentLibraryServiceDependencies, } from './fragmentLibrary/FragmentLibraryService.js';
|
|
25
|
+
export { FragmentSourceService, type FragmentSourceServiceDependencies, type ResolveFragmentInstallationId, } from './fragmentLibrary/FragmentSourceService.js';
|
|
26
|
+
export { DeterministicFragmentSelector } from './fragmentLibrary/DeterministicFragmentSelector.js';
|
|
27
|
+
export { LlmFragmentSelector, type LlmFragmentSelectorDependencies, } from './fragmentLibrary/LlmFragmentSelector.js';
|
|
28
|
+
export { type ResolvedCatalogEntry, mergeCatalog, toSelectable, entryToFragment, selectDeterministic, } from './fragmentLibrary/fragment-catalog.js';
|
|
29
|
+
export * as fragmentSourceLogic from './fragmentLibrary/fragment-source.logic.js';
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export { AiAgentExecutor } from './agents/runtime/executor.js';
|
|
2
|
+
export { DEFAULT_INLINE_WEB_SEARCH_KINDS, DEFAULT_INLINE_WEB_SEARCH_MAX_USES, webResearchGuidanceFor, inlineWebSearchOptionsFromEnv, providerWebSearchTools, } from './agents/runtime/web-search.js';
|
|
3
|
+
export { resolveAgentConfig, resolveStepModelRef, resolveInlineModelRef, } from './agents/runtime/routing.js';
|
|
4
|
+
export { systemPromptFor, userPromptFor } from './agents/catalog.js';
|
|
5
|
+
export { TASK_ESTIMATOR_AGENT_KIND } from './agents/prompts/roles.js';
|
|
6
|
+
// Installation-level extension point for custom agent kinds (mirrors the model-provider
|
|
7
|
+
// registry seam): a deployment registers extra kinds at startup and the prompt catalog +
|
|
8
|
+
// the Worker's executor routing pick them up.
|
|
9
|
+
export { registerAgentKind, registerAgentKinds, registeredAgentKind, registeredAgentKinds, registeredKindRequiresContainer, registeredConfigContributions, clearRegisteredAgentKinds, } from './agents/kinds/registry.js';
|
|
10
|
+
// Agent capability traits (standard + custom). `code-aware` gates the engine's folding
|
|
11
|
+
// of the service's best-practice fragments; `spec-aware` appends the in-repo-spec guidance.
|
|
12
|
+
export { CODE_AWARE_TRAIT, SPEC_AWARE_TRAIT, SPEC_AWARE_GUIDANCE, STANDARD_AGENT_TRAITS, registerAgentTrait, registerAgentTraits, registeredAgentTrait, clearRegisteredAgentTraits, assignAgentTraits, clearAssignedAgentTraits, traitsFor, hasTrait, traitGuidanceFor, } from './agents/kinds/traits.js';
|
|
13
|
+
// Agent configuration-contribution catalog (the descriptors surfaced on task
|
|
14
|
+
// creation / inspector, frozen once the contributing step runs).
|
|
15
|
+
export { TESTER_ENVIRONMENT_CONFIG_ID, PLAYWRIGHT_E2E_TARGET_CONFIG_ID, configContributionsFor, configContributionCatalog, } from './agents/kinds/configs.js';
|
|
16
|
+
// Tester / Fixer track prompts + helpers.
|
|
17
|
+
export { isTestingKind, testingSystemPrompt, testerEnvironmentSection, } from './agents/prompts/testing.js';
|
|
18
|
+
// Requirements-review prompt text + its versioned-prompt registry.
|
|
19
|
+
export { REVIEW_SYSTEM_PROMPT, REWORK_SYSTEM_PROMPT } from './agents/prompts/requirements.js';
|
|
20
|
+
// Clarity-review (bug-report triage) prompt text.
|
|
21
|
+
export { CLARITY_REVIEW_SYSTEM_PROMPT, CLARITY_REWORK_SYSTEM_PROMPT, } from './agents/prompts/clarity.js';
|
|
22
|
+
export { PROMPT_VERSIONS, promptVersion, promptVersionLabel, } from './agents/kinds/versions.js';
|
|
23
|
+
export { composeSystemPrompt, composeBlockSystemPrompt, } from './agents/runtime/fragments.js';
|
|
24
|
+
export { STANDARD_PHASES, STANDARD_PHASE_BY_KIND, phaseForKind, standardSystemPrompt, renderStandardUserPrompt, } from './agents/prompts/standard.js';
|
|
25
|
+
export { ACCEPTANCE_AGENT_KINDS, acceptanceSystemPrompt, isAcceptanceKind, testApproachSection, } from './agents/prompts/acceptance.js';
|
|
26
|
+
export { COMPANIONS, isCompanionKind, companionFor, companionTargets, } from './agents/kinds/companions.js';
|
|
27
|
+
export { companionSystemPrompt } from './agents/prompts/companion.js';
|
|
28
|
+
export { READ_ONLY_AGENT_KINDS, READ_ONLY_GUARDRAIL, isReadOnlyAgentKind, } from './agents/kinds/read-only.js';
|
|
29
|
+
export { MOCK_AGENT_KIND, isMockKind, mockSystemPrompt } from './agents/prompts/mock.js';
|
|
30
|
+
export { BUSINESS_LOGIC_AGENT_KINDS, BUSINESS_DOCUMENTER_KIND, BUSINESS_REVIEWER_KIND, BUSINESS_LOGIC_DOCS_DIR, isBusinessLogicKind, businessLogicSystemPrompt, } from './agents/prompts/business-logic.js';
|
|
31
|
+
export { PLATFORM_DELIVERY_CONTRACT } from './agents/prompts/delivery-contract.js';
|
|
32
|
+
export { FINAL_ANSWER_IN_REPLY, STANDARDS_FOOTER } from './agents/prompts/shared.js';
|
|
33
|
+
// The generic AI provisioning facade: a mixable provider registry + the base,
|
|
34
|
+
// runtime-neutral resolvers. Optional/heavier backends ship as their own packages
|
|
35
|
+
// (e.g. @cat-factory/provider-bedrock) and are mixed into a CompositeModelProvider.
|
|
36
|
+
export { CompositeModelProvider, InstrumentedModelProvider, catFactoryObservability, anthropicResolver, baseProviderRegistry, cloudflareRestResolver, openAiCompatibleResolver, openAiResolver, DEEPSEEK_BASE_URL, DEFAULT_OPENAI_COMPATIBLE_BASE_URLS, MOONSHOT_BASE_URL, OPENAI_BASE_URL, OPENROUTER_BASE_URL, QWEN_BASE_URL, cachedTokensFromUsage, inlineCacheProviderOptions, promptCacheParams, providerCachePolicy, } from './providers/index.js';
|
|
37
|
+
export { FragmentLibraryService, } from './fragmentLibrary/FragmentLibraryService.js';
|
|
38
|
+
export { FragmentSourceService, } from './fragmentLibrary/FragmentSourceService.js';
|
|
39
|
+
export { DeterministicFragmentSelector } from './fragmentLibrary/DeterministicFragmentSelector.js';
|
|
40
|
+
export { LlmFragmentSelector, } from './fragmentLibrary/LlmFragmentSelector.js';
|
|
41
|
+
export { mergeCatalog, toSelectable, entryToFragment, selectDeterministic, } from './fragmentLibrary/fragment-catalog.js';
|
|
42
|
+
export * as fragmentSourceLogic from './fragmentLibrary/fragment-source.logic.js';
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type CachePolicy = 'auto-prefix' | 'explicit-anthropic' | 'none';
|
|
2
|
+
/** How `provider` caches prompt prefixes. The single source of truth for both paths. */
|
|
3
|
+
export declare function providerCachePolicy(provider: string): CachePolicy;
|
|
4
|
+
/**
|
|
5
|
+
* Extra OpenAI Chat Completions params that route a multi-turn conversation to the
|
|
6
|
+
* same cached prefix, for the in-container proxy path. Only OpenAI documents a
|
|
7
|
+
* routing key (`prompt_cache_key`); DeepSeek/Qwen cache automatically on the prefix
|
|
8
|
+
* with no param (so we send none rather than risk a strict endpoint rejecting an
|
|
9
|
+
* unknown field), and Anthropic's cache is explicit (handled on the inline path).
|
|
10
|
+
* `cacheKey` should be stable per conversation (e.g. the execution id).
|
|
11
|
+
*/
|
|
12
|
+
export declare function promptCacheParams(provider: string, cacheKey: string | null | undefined): Record<string, unknown>;
|
|
13
|
+
/**
|
|
14
|
+
* Vercel-AI `providerOptions` that enable prompt caching for the inline path. Only
|
|
15
|
+
* Anthropic needs an explicit opt-in (cache the system + tools prefix as ephemeral);
|
|
16
|
+
* the auto-prefix providers need nothing beyond a stable prompt. Empty when the
|
|
17
|
+
* provider caches automatically or not at all.
|
|
18
|
+
*/
|
|
19
|
+
export declare function inlineCacheProviderOptions(provider: string): Record<string, unknown>;
|
|
20
|
+
/** The cached-input-token count a provider reports in its usage, across the field names they use. */
|
|
21
|
+
export declare function cachedTokensFromUsage(usage: unknown): number;
|
|
22
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/providers/cache.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,WAAW,GAInB,aAAa,GAEb,oBAAoB,GAEpB,MAAM,CAAA;AAEV,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAWjE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGzB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKpF;AAED,qGAAqG;AACrG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAY5D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// Prompt-caching policy, shared by BOTH AI-call paths so they treat a provider the
|
|
2
|
+
// same way: the in-container path (Pi → the LLM proxy, OpenAI Chat Completions over
|
|
3
|
+
// HTTP) and the inline path (the Vercel AI SDK via the ModelProvider port). A
|
|
4
|
+
// container agent re-sends its whole growing prompt every turn, so on the providers
|
|
5
|
+
// that cache it the stable prefix should be a cache hit rather than re-billed input
|
|
6
|
+
// — but only if we (a) keep the prefix byte-stable and (b) give the provider the
|
|
7
|
+
// hint it needs. This module is the single source of truth for "how does provider X
|
|
8
|
+
// cache", so neither path hard-codes provider ids.
|
|
9
|
+
/** How `provider` caches prompt prefixes. The single source of truth for both paths. */
|
|
10
|
+
export function providerCachePolicy(provider) {
|
|
11
|
+
switch (provider) {
|
|
12
|
+
case 'openai':
|
|
13
|
+
case 'deepseek':
|
|
14
|
+
case 'qwen':
|
|
15
|
+
return 'auto-prefix';
|
|
16
|
+
case 'anthropic':
|
|
17
|
+
return 'explicit-anthropic';
|
|
18
|
+
default:
|
|
19
|
+
return 'none';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Extra OpenAI Chat Completions params that route a multi-turn conversation to the
|
|
24
|
+
* same cached prefix, for the in-container proxy path. Only OpenAI documents a
|
|
25
|
+
* routing key (`prompt_cache_key`); DeepSeek/Qwen cache automatically on the prefix
|
|
26
|
+
* with no param (so we send none rather than risk a strict endpoint rejecting an
|
|
27
|
+
* unknown field), and Anthropic's cache is explicit (handled on the inline path).
|
|
28
|
+
* `cacheKey` should be stable per conversation (e.g. the execution id).
|
|
29
|
+
*/
|
|
30
|
+
export function promptCacheParams(provider, cacheKey) {
|
|
31
|
+
if (cacheKey && provider === 'openai')
|
|
32
|
+
return { prompt_cache_key: cacheKey };
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Vercel-AI `providerOptions` that enable prompt caching for the inline path. Only
|
|
37
|
+
* Anthropic needs an explicit opt-in (cache the system + tools prefix as ephemeral);
|
|
38
|
+
* the auto-prefix providers need nothing beyond a stable prompt. Empty when the
|
|
39
|
+
* provider caches automatically or not at all.
|
|
40
|
+
*/
|
|
41
|
+
export function inlineCacheProviderOptions(provider) {
|
|
42
|
+
if (providerCachePolicy(provider) === 'explicit-anthropic') {
|
|
43
|
+
return { anthropic: { cacheControl: { type: 'ephemeral' } } };
|
|
44
|
+
}
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
/** The cached-input-token count a provider reports in its usage, across the field names they use. */
|
|
48
|
+
export function cachedTokensFromUsage(usage) {
|
|
49
|
+
if (typeof usage !== 'object' || usage === null)
|
|
50
|
+
return 0;
|
|
51
|
+
const u = usage;
|
|
52
|
+
// OpenAI: prompt_tokens_details.cached_tokens. DeepSeek: prompt_cache_hit_tokens.
|
|
53
|
+
const details = u.prompt_tokens_details;
|
|
54
|
+
if (typeof details === 'object' && details !== null) {
|
|
55
|
+
const cached = details.cached_tokens;
|
|
56
|
+
if (typeof cached === 'number' && cached >= 0)
|
|
57
|
+
return cached;
|
|
58
|
+
}
|
|
59
|
+
const hit = u.prompt_cache_hit_tokens;
|
|
60
|
+
if (typeof hit === 'number' && hit >= 0)
|
|
61
|
+
return hit;
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/providers/cache.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,oFAAoF;AACpF,8EAA8E;AAC9E,oFAAoF;AACpF,oFAAoF;AACpF,iFAAiF;AACjF,oFAAoF;AACpF,mDAAmD;AAYnD,wFAAwF;AACxF,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,aAAa,CAAA;QACtB,KAAK,WAAW;YACd,OAAO,oBAAoB,CAAA;QAC7B;YACE,OAAO,MAAM,CAAA;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,QAAmC;IAEnC,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAA;IAC5E,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,IAAI,mBAAmB,CAAC,QAAQ,CAAC,KAAK,oBAAoB,EAAE,CAAC;QAC3D,OAAO,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAA;IAC/D,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,CAAA;IACzD,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,kFAAkF;IAClF,MAAM,OAAO,GAAG,CAAC,CAAC,qBAAqB,CAAA;IACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,MAAM,GAAI,OAAmC,CAAC,aAAa,CAAA;QACjE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC;YAAE,OAAO,MAAM,CAAA;IAC9D,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,uBAAuB,CAAA;IACrC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,GAAG,CAAA;IACnD,OAAO,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const QWEN_BASE_URL = "https://dashscope-intl.aliyuncs.com/compatible-mode/v1";
|
|
2
|
+
export declare const DEEPSEEK_BASE_URL = "https://api.deepseek.com/v1";
|
|
3
|
+
export declare const MOONSHOT_BASE_URL = "https://api.moonshot.ai/v1";
|
|
4
|
+
export declare const OPENAI_BASE_URL = "https://api.openai.com/v1";
|
|
5
|
+
export declare const OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1";
|
|
6
|
+
/** Built-in base URLs for the OpenAI-compatible providers, keyed by provider id. */
|
|
7
|
+
export declare const DEFAULT_OPENAI_COMPATIBLE_BASE_URLS: Readonly<Record<string, string>>;
|
|
8
|
+
//# sourceMappingURL=endpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/providers/endpoints.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,2DAA2D,CAAA;AACrF,eAAO,MAAM,iBAAiB,gCAAgC,CAAA;AAC9D,eAAO,MAAM,iBAAiB,+BAA+B,CAAA;AAC7D,eAAO,MAAM,eAAe,8BAA8B,CAAA;AAI1D,eAAO,MAAM,mBAAmB,iCAAiC,CAAA;AAEjE,oFAAoF;AACpF,eAAO,MAAM,mCAAmC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMhF,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// The OpenAI-compatible chat endpoints behind the direct-provider flavours.
|
|
2
|
+
// DashScope (Alibaba/Qwen), DeepSeek and Moonshot (Kimi) all expose the OpenAI
|
|
3
|
+
// `/chat/completions` shape, so both the Vercel-AI model provider and the container
|
|
4
|
+
// LLM proxy resolve them from the same base URLs and keys — one source of truth for
|
|
5
|
+
// "where does provider X live". Each is overridable per deployment (a self-hosted
|
|
6
|
+
// gateway, a regional endpoint, or a local stub in tests).
|
|
7
|
+
export const QWEN_BASE_URL = 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1';
|
|
8
|
+
export const DEEPSEEK_BASE_URL = 'https://api.deepseek.com/v1';
|
|
9
|
+
export const MOONSHOT_BASE_URL = 'https://api.moonshot.ai/v1';
|
|
10
|
+
export const OPENAI_BASE_URL = 'https://api.openai.com/v1';
|
|
11
|
+
// OpenRouter is a single OpenAI-compatible gateway to 300+ models. LiteLLM has NO
|
|
12
|
+
// built-in default: it is an operator-hosted gateway, so its base URL comes from the
|
|
13
|
+
// deployment's LITELLM_BASE_URL override (there is no public endpoint to default to).
|
|
14
|
+
export const OPENROUTER_BASE_URL = 'https://openrouter.ai/api/v1';
|
|
15
|
+
/** Built-in base URLs for the OpenAI-compatible providers, keyed by provider id. */
|
|
16
|
+
export const DEFAULT_OPENAI_COMPATIBLE_BASE_URLS = {
|
|
17
|
+
qwen: QWEN_BASE_URL,
|
|
18
|
+
deepseek: DEEPSEEK_BASE_URL,
|
|
19
|
+
moonshot: MOONSHOT_BASE_URL,
|
|
20
|
+
openai: OPENAI_BASE_URL,
|
|
21
|
+
openrouter: OPENROUTER_BASE_URL,
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=endpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/providers/endpoints.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,+EAA+E;AAC/E,oFAAoF;AACpF,oFAAoF;AACpF,kFAAkF;AAClF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,aAAa,GAAG,wDAAwD,CAAA;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAG,6BAA6B,CAAA;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,4BAA4B,CAAA;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CAAA;AAC1D,kFAAkF;AAClF,qFAAqF;AACrF,sFAAsF;AACtF,MAAM,CAAC,MAAM,mBAAmB,GAAG,8BAA8B,CAAA;AAEjE,oFAAoF;AACpF,MAAM,CAAC,MAAM,mCAAmC,GAAqC;IACnF,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,iBAAiB;IAC3B,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,eAAe;IACvB,UAAU,EAAE,mBAAmB;CAChC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { CompositeModelProvider, type ModelResolver, type ProviderRegistry } from './registry.js';
|
|
2
|
+
export { InstrumentedModelProvider, catFactoryObservability, type InlineObservabilityContext, } from './instrumented.js';
|
|
3
|
+
export { anthropicResolver, baseProviderRegistry, cloudflareRestResolver, openAiCompatibleResolver, openAiResolver, } from './resolvers.js';
|
|
4
|
+
export { DEEPSEEK_BASE_URL, DEFAULT_OPENAI_COMPATIBLE_BASE_URLS, MOONSHOT_BASE_URL, OPENAI_BASE_URL, OPENROUTER_BASE_URL, QWEN_BASE_URL, } from './endpoints.js';
|
|
5
|
+
export { type CachePolicy, cachedTokensFromUsage, inlineCacheProviderOptions, promptCacheParams, providerCachePolicy, } from './cache.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACjG,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,KAAK,0BAA0B,GAChC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,iBAAiB,EACjB,mCAAmC,EACnC,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,KAAK,WAAW,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { CompositeModelProvider } from './registry.js';
|
|
2
|
+
export { InstrumentedModelProvider, catFactoryObservability, } from './instrumented.js';
|
|
3
|
+
export { anthropicResolver, baseProviderRegistry, cloudflareRestResolver, openAiCompatibleResolver, openAiResolver, } from './resolvers.js';
|
|
4
|
+
export { DEEPSEEK_BASE_URL, DEFAULT_OPENAI_COMPATIBLE_BASE_URLS, MOONSHOT_BASE_URL, OPENAI_BASE_URL, OPENROUTER_BASE_URL, QWEN_BASE_URL, } from './endpoints.js';
|
|
5
|
+
export { cachedTokensFromUsage, inlineCacheProviderOptions, promptCacheParams, providerCachePolicy, } from './cache.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA6C,MAAM,eAAe,CAAA;AACjG,OAAO,EACL,yBAAyB,EACzB,uBAAuB,GAExB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,GACf,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,iBAAiB,EACjB,mCAAmC,EACnC,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAEL,qBAAqB,EACrB,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAA"}
|