agentic-engineering-harness 0.8.1 → 0.8.3
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/README.md +8 -0
- package/dist/agents/config.js +7 -5
- package/dist/agents/config.js.map +1 -1
- package/dist/agents/outputContracts.d.ts +1 -1
- package/dist/agents/permissions.d.ts +3 -2
- package/dist/agents/permissions.js +4 -4
- package/dist/agents/permissions.js.map +1 -1
- package/dist/agents/routing.js +1 -1
- package/dist/agents/routing.js.map +1 -1
- package/dist/agents/types.d.ts +15 -0
- package/dist/audit/intent.d.ts +12 -1
- package/dist/audit/intent.js +44 -13
- package/dist/audit/intent.js.map +1 -1
- package/dist/audit/intentDecision.d.ts +67 -0
- package/dist/audit/intentDecision.js +100 -0
- package/dist/audit/intentDecision.js.map +1 -0
- package/dist/audit/run.d.ts +3 -0
- package/dist/audit/run.js +1 -2
- package/dist/audit/run.js.map +1 -1
- package/dist/context/budget.d.ts +20 -0
- package/dist/context/budget.js +39 -0
- package/dist/context/budget.js.map +1 -1
- package/dist/context/gateway.js +73 -19
- package/dist/context/gateway.js.map +1 -1
- package/dist/context/preflight.d.ts +9 -2
- package/dist/context/preflight.js +30 -10
- package/dist/context/preflight.js.map +1 -1
- package/dist/context/projectors/index.d.ts +1 -0
- package/dist/context/projectors/index.js +1 -0
- package/dist/context/projectors/index.js.map +1 -1
- package/dist/context/projectors/informational.d.ts +48 -0
- package/dist/context/projectors/informational.js +154 -0
- package/dist/context/projectors/informational.js.map +1 -0
- package/dist/context/repository/map.js +1 -1
- package/dist/context/repository/map.js.map +1 -1
- package/dist/context/transport.d.ts +33 -1
- package/dist/context/transport.js +127 -23
- package/dist/context/transport.js.map +1 -1
- package/dist/context/types.d.ts +4 -4
- package/dist/core/config.js +13 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/run.js +0 -2
- package/dist/core/run.js.map +1 -1
- package/dist/core/types.d.ts +9 -0
- package/dist/entry.js +15 -8
- package/dist/entry.js.map +1 -1
- package/dist/evals/fullStack.js +6 -2
- package/dist/evals/fullStack.js.map +1 -1
- package/dist/informational/answer.d.ts +41 -0
- package/dist/informational/answer.js +160 -0
- package/dist/informational/answer.js.map +1 -0
- package/dist/informational/evidence.d.ts +47 -0
- package/dist/informational/evidence.js +228 -0
- package/dist/informational/evidence.js.map +1 -0
- package/dist/issues/intake.d.ts +1 -1
- package/dist/main.js +4 -1
- package/dist/main.js.map +1 -1
- package/dist/operations/change.js +0 -2
- package/dist/operations/change.js.map +1 -1
- package/dist/operations/completion.js +2 -0
- package/dist/operations/completion.js.map +1 -1
- package/dist/operations/controller.js +7 -3
- package/dist/operations/controller.js.map +1 -1
- package/dist/operations/evidence.d.ts +22 -0
- package/dist/operations/evidence.js +38 -0
- package/dist/operations/evidence.js.map +1 -0
- package/dist/operations/mcp.d.ts +7 -0
- package/dist/operations/mcp.js +78 -12
- package/dist/operations/mcp.js.map +1 -1
- package/dist/operations/state.d.ts +5 -0
- package/dist/operations/state.js.map +1 -1
- package/dist/paseo/deterministicSession.d.ts +10 -2
- package/dist/paseo/deterministicSession.js +39 -5
- package/dist/paseo/deterministicSession.js.map +1 -1
- package/dist/paseo/launchSpec.d.ts +2 -0
- package/dist/paseo/launchSpec.js +5 -5
- package/dist/paseo/launchSpec.js.map +1 -1
- package/dist/paseo/start.d.ts +1 -1
- package/dist/paseo/start.js +7 -1
- package/dist/paseo/start.js.map +1 -1
- package/dist/providers/engram.js +7 -3
- package/dist/providers/engram.js.map +1 -1
- package/dist/validators/external.js +7 -1
- package/dist/validators/external.js.map +1 -1
- package/dist/workers/agentPrompt.d.ts +2 -0
- package/dist/workers/agentPrompt.js +13 -15
- package/dist/workers/agentPrompt.js.map +1 -1
- package/dist/workers/direct.js +10 -4
- package/dist/workers/direct.js.map +1 -1
- package/dist/workers/paseo.js +13 -4
- package/dist/workers/paseo.js.map +1 -1
- package/dist/workers/podman.js +10 -4
- package/dist/workers/podman.js.map +1 -1
- package/docs/ARCHITECTURE.md +40 -0
- package/docs/CONTEXT_EFFICIENCY.md +48 -2
- package/docs/EVALS.md +12 -0
- package/docs/OPERATION_SUPERVISION.md +14 -0
- package/docs/PASEO.md +35 -1
- package/docs/VALIDATION.md +8 -0
- package/package.json +1 -1
- package/presets/agents/default.jsonc +3 -3
- package/presets/agents/orchestration.jsonc +1 -0
- package/templates/project.yaml +10 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/projectors/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/projectors/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { InformationalContextBudget } from "../budget.js";
|
|
2
|
+
import type { UserFacingClaim } from "../../operations/evidence.js";
|
|
3
|
+
export interface InformationalProjectionSourceInput {
|
|
4
|
+
path: string;
|
|
5
|
+
ref: string;
|
|
6
|
+
sha256: string;
|
|
7
|
+
fileSha256?: string;
|
|
8
|
+
relevance: string;
|
|
9
|
+
content: string;
|
|
10
|
+
}
|
|
11
|
+
export interface InformationalProjectedSource {
|
|
12
|
+
path: string;
|
|
13
|
+
ref: string;
|
|
14
|
+
sha256: string;
|
|
15
|
+
fileSha256?: string;
|
|
16
|
+
relevance: string;
|
|
17
|
+
summary: string;
|
|
18
|
+
}
|
|
19
|
+
export interface InformationalProjectionMetrics {
|
|
20
|
+
rawEvidenceTokens: number;
|
|
21
|
+
legacyPayloadTokens: number;
|
|
22
|
+
projectedPayloadTokens: number;
|
|
23
|
+
informationalPayloadTokens: number;
|
|
24
|
+
duplicatePayloadTokensAvoided: number;
|
|
25
|
+
sourceCount: number;
|
|
26
|
+
projectedSourceCount: number;
|
|
27
|
+
deferredSourceCount: number;
|
|
28
|
+
targetTokens: number;
|
|
29
|
+
softLimitTokens: number;
|
|
30
|
+
exceptionalTokens: number;
|
|
31
|
+
headroomAttempted: boolean;
|
|
32
|
+
headroomApplied: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface InformationalContextProjection {
|
|
35
|
+
claims: UserFacingClaim[];
|
|
36
|
+
sources: InformationalProjectedSource[];
|
|
37
|
+
summary: string;
|
|
38
|
+
human: string;
|
|
39
|
+
metrics: InformationalProjectionMetrics;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Project repository evidence into a lead-sized informational result. Raw
|
|
43
|
+
* source bytes are intentionally absent; every claim and source points to a
|
|
44
|
+
* live repository-relative evidence ref instead.
|
|
45
|
+
*/
|
|
46
|
+
export declare function projectInformationalContext(request: string, provider: string, input: InformationalProjectionSourceInput[], budget: InformationalContextBudget): InformationalContextProjection;
|
|
47
|
+
/** Deterministic estimate of the exact former lead-visible representation from main. */
|
|
48
|
+
export declare function estimateLegacyInformationalTokens(input: InformationalProjectionSourceInput[], provider?: string): number;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { estimateTokens } from "../estimator.js";
|
|
2
|
+
import { sha256 } from "../provenance.js";
|
|
3
|
+
/**
|
|
4
|
+
* Project repository evidence into a lead-sized informational result. Raw
|
|
5
|
+
* source bytes are intentionally absent; every claim and source points to a
|
|
6
|
+
* live repository-relative evidence ref instead.
|
|
7
|
+
*/
|
|
8
|
+
export function projectInformationalContext(request, provider, input, budget) {
|
|
9
|
+
const unique = deduplicateSources(input);
|
|
10
|
+
const projectedSources = unique.map((source) => ({
|
|
11
|
+
path: source.path,
|
|
12
|
+
ref: source.ref,
|
|
13
|
+
sha256: source.sha256,
|
|
14
|
+
...(source.fileSha256 ? { fileSha256: source.fileSha256 } : {}),
|
|
15
|
+
relevance: source.relevance,
|
|
16
|
+
summary: summarizeSource(source.content, request, budget.sourceSummaryTokens)
|
|
17
|
+
}));
|
|
18
|
+
const sourceCount = unique.length;
|
|
19
|
+
const rawEvidenceTokens = unique.reduce((sum, source) => sum + estimateTokens(source.content), 0);
|
|
20
|
+
const baseClaims = [
|
|
21
|
+
{ text: `The answer is grounded in a bounded read-only repository context containing ${sourceCount} source file(s).`, source: "repository-context", verified: true, evidenceRefs: unique.map((source) => source.ref), priority: 80 },
|
|
22
|
+
{ text: "No engineering operation, audit report, findings, TaskContract, or delivery artifact was created for this informational request.", source: "repository-context", verified: true, priority: 100 }
|
|
23
|
+
];
|
|
24
|
+
const sources = fitSources(projectedSources, baseClaims, provider, budget);
|
|
25
|
+
const claims = baseClaims.map((claim) => ({ ...claim, evidenceRefs: claim.evidenceRefs?.filter((ref) => sources.some((source) => source.ref === ref)) }));
|
|
26
|
+
const summary = summarizeProjection(sources, request, budget.exceptionalTokens);
|
|
27
|
+
const human = [
|
|
28
|
+
"INFORMATIONAL — repository-grounded answer (no engineering lifecycle created).",
|
|
29
|
+
sources.length ? `The compact projection contains ${sources.length} verified source summary(ies); deeper source detail is available by explicit evidence reference.` : "No readable matching source was available; no implementation claim is asserted.",
|
|
30
|
+
"Evidence provenance: repository-context. Source details remain available by reference and are retrieved only when needed."
|
|
31
|
+
].join("\n\n");
|
|
32
|
+
const projectedAnswer = { intent: "informational", provenance: ["repository-context"], inspected: { provider, fileCount: sourceCount, bounded: true }, claims, sources, summary, human };
|
|
33
|
+
const projectedPayloadTokens = estimateTokens(JSON.stringify(projectedAnswer));
|
|
34
|
+
const informationalPayloadTokens = projectedPayloadTokens + estimateTokens("Bounded repository-grounded informational answer available in structuredContent.");
|
|
35
|
+
const legacyPayloadTokens = estimateLegacyInformationalTokens(input, provider);
|
|
36
|
+
return {
|
|
37
|
+
claims,
|
|
38
|
+
sources,
|
|
39
|
+
summary,
|
|
40
|
+
human,
|
|
41
|
+
metrics: {
|
|
42
|
+
rawEvidenceTokens,
|
|
43
|
+
legacyPayloadTokens,
|
|
44
|
+
projectedPayloadTokens,
|
|
45
|
+
informationalPayloadTokens,
|
|
46
|
+
duplicatePayloadTokensAvoided: Math.max(0, legacyPayloadTokens - informationalPayloadTokens),
|
|
47
|
+
sourceCount,
|
|
48
|
+
projectedSourceCount: sources.length,
|
|
49
|
+
deferredSourceCount: sources.filter((source) => source.summary.startsWith("Summary deferred")).length,
|
|
50
|
+
targetTokens: budget.targetTokens,
|
|
51
|
+
softLimitTokens: budget.softLimitTokens,
|
|
52
|
+
exceptionalTokens: budget.exceptionalTokens,
|
|
53
|
+
headroomAttempted: false,
|
|
54
|
+
headroomApplied: false
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Deterministic estimate of the exact former lead-visible representation from main. */
|
|
59
|
+
export function estimateLegacyInformationalTokens(input, provider = "filesystem") {
|
|
60
|
+
const sources = [];
|
|
61
|
+
let totalBytes = 0;
|
|
62
|
+
for (const source of input.slice(0, 8)) {
|
|
63
|
+
if (totalBytes >= 20_000)
|
|
64
|
+
break;
|
|
65
|
+
const excerpt = source.content.slice(0, Math.min(4_000, 20_000 - totalBytes));
|
|
66
|
+
if (!excerpt)
|
|
67
|
+
continue;
|
|
68
|
+
totalBytes += Buffer.byteLength(excerpt, "utf8");
|
|
69
|
+
sources.push({ path: source.path, excerpt, sha256: sha256(excerpt) });
|
|
70
|
+
}
|
|
71
|
+
const claims = [
|
|
72
|
+
{ text: `The answer is grounded in a bounded read-only repository context containing ${sources.length} source file(s).`, source: "repository-context", verified: true },
|
|
73
|
+
{ text: "No engineering operation, audit report, findings, TaskContract, or delivery artifact was created for this informational request.", source: "repository-context", verified: true }
|
|
74
|
+
];
|
|
75
|
+
const pathLines = sources.length ? sources.map((source) => `- ${source.path}`).join("\n") : "- No matching readable source file was available; repository-map metadata was still consulted.";
|
|
76
|
+
const excerptText = sources.slice(0, 4).map((source) => `\n${source.path}:\n${compactExcerpt(source.excerpt)}`).join("\n");
|
|
77
|
+
const human = [
|
|
78
|
+
"INFORMATIONAL — repository-grounded answer (no engineering lifecycle created).",
|
|
79
|
+
`I used the bounded repository-context surface to orient this explanation. Relevant files:\n${pathLines}`,
|
|
80
|
+
sources.length ? `The selected source excerpts are the evidence for the explanation; they are repository context, not audit findings.${excerptText}` : "The repository context map did not expose a readable matching source file, so no implementation claim is asserted.",
|
|
81
|
+
"Evidence provenance: repository-context. This answer is explanatory, not an evaluation of correctness or safety."
|
|
82
|
+
].join("\n\n");
|
|
83
|
+
return estimateTokens(JSON.stringify({ intent: "informational", provenance: ["repository-context"], inspected: { provider, files: sources.map((source) => source.path), bounded: true }, claims, sources, human }));
|
|
84
|
+
}
|
|
85
|
+
function deduplicateSources(input) {
|
|
86
|
+
const seen = new Set();
|
|
87
|
+
const result = [];
|
|
88
|
+
for (const source of input) {
|
|
89
|
+
const key = `${source.path}\u0000${source.sha256}`;
|
|
90
|
+
if (seen.has(key))
|
|
91
|
+
continue;
|
|
92
|
+
seen.add(key);
|
|
93
|
+
result.push(source);
|
|
94
|
+
}
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
function summarizeSource(content, request, maxTokens) {
|
|
98
|
+
const terms = request.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().split(/[^a-z0-9]+/).filter((term) => term.length >= 3);
|
|
99
|
+
const lines = content.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
|
|
100
|
+
const relevant = lines.filter((line) => terms.some((term) => line.toLowerCase().includes(term)));
|
|
101
|
+
const structural = lines.filter((line) => /^(export|import|class|interface|type|function|async function|const|let|enum|public|private|protected)\b/.test(line));
|
|
102
|
+
const selected = [...new Set([...relevant, ...structural, ...lines.slice(0, 2)])].map((line) => truncate(line, 260));
|
|
103
|
+
const bounded = fitTokenLines(selected, maxTokens);
|
|
104
|
+
return bounded ? `Implementation signals: ${bounded}` : "No concise implementation signal was available; use the evidence reference for a targeted source read.";
|
|
105
|
+
}
|
|
106
|
+
function fitSources(sources, claims, provider, budget) {
|
|
107
|
+
let selected = [...sources];
|
|
108
|
+
if (estimateProjectionTokens(selected, claims, provider) > budget.exceptionalTokens) {
|
|
109
|
+
// Keep every reference addressable. Defer prose so a summary budget can
|
|
110
|
+
// never make an otherwise relevant source unreachable.
|
|
111
|
+
selected = selected.map((source) => ({ ...source, summary: "Summary deferred; retrieve this evidence reference for targeted detail." }));
|
|
112
|
+
}
|
|
113
|
+
if (estimateProjectionTokens(selected, claims, provider) > budget.softLimitTokens) {
|
|
114
|
+
selected = selected.map((source) => ({ ...source, summary: fitTokenLines(source.summary.split(/\r?\n/), Math.min(96, budget.sourceSummaryTokens)) }));
|
|
115
|
+
}
|
|
116
|
+
return selected;
|
|
117
|
+
}
|
|
118
|
+
function summarizeProjection(sources, request, maxTokens) {
|
|
119
|
+
if (!sources.length)
|
|
120
|
+
return "The repository context map did not expose a readable matching source file.";
|
|
121
|
+
const question = request.trim().replace(/\s+/g, " ");
|
|
122
|
+
const text = `The bounded repository inspection selected ${sources.length} relevant source file(s) for “${truncate(question, 180)}”. ${sources.map((source) => `${source.path}: ${source.summary.replace(/\n/g, " ")}`).join(" ")}`;
|
|
123
|
+
return fitTokenLines([text], Math.min(maxTokens, 280));
|
|
124
|
+
}
|
|
125
|
+
function estimateProjectionTokens(sources, claims, provider) {
|
|
126
|
+
return estimateTokens(JSON.stringify({ intent: "informational", provenance: ["repository-context"], inspected: { provider, fileCount: sources.length, bounded: true }, claims, sources, summary: summarizeProjection(sources, "repository question", 280) }));
|
|
127
|
+
}
|
|
128
|
+
function fitTokenLines(lines, maxTokens) {
|
|
129
|
+
const selected = [];
|
|
130
|
+
let used = 0;
|
|
131
|
+
for (const line of lines) {
|
|
132
|
+
const remaining = maxTokens - used;
|
|
133
|
+
if (remaining <= 0)
|
|
134
|
+
break;
|
|
135
|
+
const clipped = truncateByTokens(line, remaining);
|
|
136
|
+
if (!clipped)
|
|
137
|
+
break;
|
|
138
|
+
selected.push(clipped);
|
|
139
|
+
used += estimateTokens(`${clipped}\n`);
|
|
140
|
+
}
|
|
141
|
+
return selected.join("\n");
|
|
142
|
+
}
|
|
143
|
+
function truncateByTokens(value, maxTokens) {
|
|
144
|
+
if (estimateTokens(value) <= maxTokens)
|
|
145
|
+
return value;
|
|
146
|
+
const maxChars = Math.max(1, maxTokens * 4 - 3);
|
|
147
|
+
return `${value.slice(0, maxChars)}…`;
|
|
148
|
+
}
|
|
149
|
+
function truncate(value, maxCharacters) { return value.length <= maxCharacters ? value : `${value.slice(0, maxCharacters - 1)}…`; }
|
|
150
|
+
function compactExcerpt(content) {
|
|
151
|
+
const lines = content.split(/\r?\n/).filter((line) => line.trim()).slice(0, 18);
|
|
152
|
+
return lines.join("\n").slice(0, 1_200);
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=informational.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"informational.js","sourceRoot":"","sources":["../../../src/context/projectors/informational.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export async function buildRepositoryContextMap(root, config, request = {}) {
|
|
|
8
8
|
return { ...rendered, map: graph };
|
|
9
9
|
}
|
|
10
10
|
async function filesystemContextMap(root) {
|
|
11
|
-
const ignored = new Set([".git", "node_modules", "dist", ".harness", ".config"]);
|
|
11
|
+
const ignored = new Set([".git", "node_modules", "dist", ".harness", ".config", ".aeh-test-results", "coverage", ".vitest", ".cache"]);
|
|
12
12
|
const files = [];
|
|
13
13
|
async function visit(directory) {
|
|
14
14
|
if (files.length >= 5_000)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../src/context/repository/map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAA4B,MAAM,aAAa,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAY,EAAE,MAA4B,EAAE,UAAiC,EAAE;IAC7H,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAgB,EAAE,SAAS,IAAI,yBAAyB,CAAC,IAAI,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACtJ,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,IAAI,KAAK,CAAC,CAAC;IAClG,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAAY;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IAAC,MAAM,KAAK,GAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../src/context/repository/map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAA4B,MAAM,aAAa,CAAC;AAE5E,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAY,EAAE,MAA4B,EAAE,UAAiC,EAAE;IAC7H,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAgB,EAAE,SAAS,IAAI,yBAAyB,CAAC,IAAI,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACtJ,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,WAAW,IAAI,KAAK,CAAC,CAAC;IAClG,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAAY;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAmB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAAC,MAAM,KAAK,GAAa,EAAE,CAAC;IACnK,KAAK,UAAU,KAAK,CAAC,SAAiB;QACpC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK;YAAE,OAAO;QAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAgC,CAAC,EAAE,CAAC;YACvH,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;iBAC1C,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7F,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK;gBAAE,OAAO;QACpC,CAAC;IACH,CAAC;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAC3G,CAAC;AACD,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
import type { HarnessProjectConfig } from "../core/types.js";
|
|
2
|
-
import type { AgentExecutionSelection } from "../agents/types.js";
|
|
2
|
+
import type { AgentExecutionSelection, ContextCapabilityRequirement, RuntimeCapabilities } from "../agents/types.js";
|
|
3
3
|
import { runProcess } from "../utils/process.js";
|
|
4
|
+
export interface ResolvedContextCapabilityRequirements {
|
|
5
|
+
repositoryMap: ContextCapabilityRequirement;
|
|
6
|
+
semanticRetrieval: ContextCapabilityRequirement;
|
|
7
|
+
rawRetrieval: ContextCapabilityRequirement;
|
|
8
|
+
compression: ContextCapabilityRequirement;
|
|
9
|
+
source: "agent-contract" | "coordinator-default" | "project-default";
|
|
10
|
+
}
|
|
11
|
+
export interface TransportCapabilities {
|
|
12
|
+
mcpProjection: boolean;
|
|
13
|
+
localMcpProjection: boolean;
|
|
14
|
+
directRuntimeConfig: boolean;
|
|
15
|
+
reasons: string[];
|
|
16
|
+
}
|
|
4
17
|
export interface EffectiveContextCapabilities {
|
|
5
18
|
contextGateway: boolean;
|
|
6
19
|
repositoryMap: boolean;
|
|
@@ -11,7 +24,23 @@ export interface EffectiveContextCapabilities {
|
|
|
11
24
|
context: boolean;
|
|
12
25
|
headroom: boolean;
|
|
13
26
|
};
|
|
27
|
+
requirements: ResolvedContextCapabilityRequirements;
|
|
28
|
+
runtimeCapabilities: RuntimeCapabilities;
|
|
29
|
+
transportCapabilities: TransportCapabilities;
|
|
30
|
+
requiredByProject: {
|
|
31
|
+
semanticRetrieval: boolean;
|
|
32
|
+
rawRetrieval: boolean;
|
|
33
|
+
repositoryMap: boolean;
|
|
34
|
+
compression: boolean;
|
|
35
|
+
};
|
|
36
|
+
requiredByExecutionContract: {
|
|
37
|
+
semanticRetrieval: boolean;
|
|
38
|
+
rawRetrieval: boolean;
|
|
39
|
+
repositoryMap: boolean;
|
|
40
|
+
compression: boolean;
|
|
41
|
+
};
|
|
14
42
|
readinessRequirements: string[];
|
|
43
|
+
degradations: string[];
|
|
15
44
|
reasons: string[];
|
|
16
45
|
}
|
|
17
46
|
export interface TransportProbe {
|
|
@@ -24,6 +53,9 @@ export interface PodmanSerenaProbe {
|
|
|
24
53
|
exposesSerena: boolean;
|
|
25
54
|
message: string;
|
|
26
55
|
}
|
|
56
|
+
export declare function resolveContextCapabilityRequirements(config: HarnessProjectConfig, selection: AgentExecutionSelection): ResolvedContextCapabilityRequirements;
|
|
57
|
+
export declare function runtimeCapabilitiesFor(selection: AgentExecutionSelection): RuntimeCapabilities;
|
|
58
|
+
export declare function transportCapabilitiesFor(config: HarnessProjectConfig, selection: AgentExecutionSelection): TransportCapabilities;
|
|
27
59
|
/** Resolve effective capabilities without touching external runtimes. */
|
|
28
60
|
export declare function staticContextCapabilities(config: HarnessProjectConfig, selection: AgentExecutionSelection): EffectiveContextCapabilities;
|
|
29
61
|
export declare function resolveContextTransportCapabilities(root: string, config: HarnessProjectConfig, selection: AgentExecutionSelection, probe?: TransportProbe & {
|
|
@@ -1,44 +1,148 @@
|
|
|
1
1
|
import { commandExists, runProcess } from "../utils/process.js";
|
|
2
|
+
/**
|
|
3
|
+
* Runtime defaults are an adapter registry, not policy. Context code consumes
|
|
4
|
+
* capabilities from this registry and from the selected execution contract;
|
|
5
|
+
* it never treats a runtime name as proof that MCP is available.
|
|
6
|
+
*/
|
|
7
|
+
const RUNTIME_CAPABILITY_REGISTRY = {
|
|
8
|
+
opencode: { mcp: true, stdioMcp: true, localMcp: true, runtimeConfigInjection: true, nativeToolProjection: true },
|
|
9
|
+
// Codex supports local stdio MCP. AEH's direct adapter does not currently
|
|
10
|
+
// inject project-scoped config, while Paseo projects MCP into the session.
|
|
11
|
+
codex: { mcp: true, stdioMcp: true, localMcp: true, runtimeConfigInjection: false, nativeToolProjection: true }
|
|
12
|
+
};
|
|
13
|
+
const TRANSPORT_CAPABILITY_REGISTRY = {
|
|
14
|
+
paseo: { mcpProjection: true, localMcpProjection: true, directRuntimeConfig: false },
|
|
15
|
+
direct: { mcpProjection: true, localMcpProjection: true, directRuntimeConfig: true },
|
|
16
|
+
podman: { mcpProjection: false, localMcpProjection: false, directRuntimeConfig: false },
|
|
17
|
+
none: { mcpProjection: false, localMcpProjection: false, directRuntimeConfig: false }
|
|
18
|
+
};
|
|
19
|
+
export function resolveContextCapabilityRequirements(config, selection) {
|
|
20
|
+
const configured = selection.contextRequirements;
|
|
21
|
+
const coordinator = selection.role === "orchestrator" || selection.role === "coordinator";
|
|
22
|
+
const semanticConfigured = Boolean(config.context?.semanticRetrieval?.provider && config.context.semanticRetrieval.provider !== "none");
|
|
23
|
+
const semanticDefault = semanticConfigured && config.context?.semanticRetrieval?.required !== false ? "REQUIRED" : "OPTIONAL";
|
|
24
|
+
const compressionConfigured = Boolean(config.context?.compression?.provider && config.context.compression.provider !== "none");
|
|
25
|
+
const defaults = coordinator
|
|
26
|
+
? { repositoryMap: "FORBIDDEN", semanticRetrieval: "FORBIDDEN", rawRetrieval: "FORBIDDEN", compression: "OPTIONAL" }
|
|
27
|
+
: {
|
|
28
|
+
repositoryMap: "OPTIONAL",
|
|
29
|
+
semanticRetrieval: semanticDefault,
|
|
30
|
+
rawRetrieval: "OPTIONAL",
|
|
31
|
+
compression: compressionConfigured && config.context?.compression?.required !== false ? "REQUIRED" : "OPTIONAL"
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
repositoryMap: configured?.repositoryMap ?? defaults.repositoryMap ?? "OPTIONAL",
|
|
35
|
+
semanticRetrieval: configured?.semanticRetrieval ?? defaults.semanticRetrieval ?? "OPTIONAL",
|
|
36
|
+
rawRetrieval: configured?.rawRetrieval ?? defaults.rawRetrieval ?? "OPTIONAL",
|
|
37
|
+
compression: configured?.compression ?? defaults.compression ?? "OPTIONAL",
|
|
38
|
+
source: configured ? "agent-contract" : coordinator ? "coordinator-default" : "project-default"
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function runtimeCapabilitiesFor(selection) {
|
|
42
|
+
return { ...(RUNTIME_CAPABILITY_REGISTRY[selection.runtimeAdapter] ?? {}), ...(selection.runtimeCapabilities ?? {}) };
|
|
43
|
+
}
|
|
44
|
+
export function transportCapabilitiesFor(config, selection) {
|
|
45
|
+
const transport = effectiveTransport(config, selection);
|
|
46
|
+
const runtime = runtimeCapabilitiesFor(selection);
|
|
47
|
+
const registered = TRANSPORT_CAPABILITY_REGISTRY[transport] ?? { mcpProjection: false, localMcpProjection: false, directRuntimeConfig: false };
|
|
48
|
+
const reasons = [];
|
|
49
|
+
if (runtime.mcp !== true)
|
|
50
|
+
reasons.push(`runtime '${selection.runtimeName}' does not declare MCP capability`);
|
|
51
|
+
if (runtime.stdioMcp !== true)
|
|
52
|
+
reasons.push(`runtime '${selection.runtimeName}' does not declare stdio MCP capability`);
|
|
53
|
+
if (runtime.localMcp !== true)
|
|
54
|
+
reasons.push(`runtime '${selection.runtimeName}' does not declare local MCP capability`);
|
|
55
|
+
if (!registered.mcpProjection || !registered.localMcpProjection)
|
|
56
|
+
reasons.push(`transport '${transport}' does not project local MCP servers`);
|
|
57
|
+
if (transport === "direct" && runtime.runtimeConfigInjection !== true)
|
|
58
|
+
reasons.push(`direct runtime adapter '${selection.runtimeName}' does not inject project MCP configuration`);
|
|
59
|
+
if (transport === "paseo" && runtime.nativeToolProjection !== true)
|
|
60
|
+
reasons.push(`runtime '${selection.runtimeName}' does not declare native MCP projection through Paseo`);
|
|
61
|
+
return { ...registered, directRuntimeConfig: registered.directRuntimeConfig && runtime.runtimeConfigInjection === true, reasons };
|
|
62
|
+
}
|
|
2
63
|
/** Resolve effective capabilities without touching external runtimes. */
|
|
3
64
|
export function staticContextCapabilities(config, selection) {
|
|
4
|
-
const
|
|
65
|
+
const requirements = resolveContextCapabilityRequirements(config, selection);
|
|
66
|
+
const runtimeCapabilities = runtimeCapabilitiesFor(selection);
|
|
67
|
+
const transportCapabilities = transportCapabilitiesFor(config, selection);
|
|
5
68
|
const semanticConfigured = Boolean(config.context?.semanticRetrieval?.provider && config.context.semanticRetrieval.provider !== "none");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const semanticRetrieval =
|
|
10
|
-
const authorizedRetrieval =
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
69
|
+
const rawConfigured = Boolean(config.context);
|
|
70
|
+
const repositoryMapConfigured = config.context?.repositoryMap?.enabled !== false;
|
|
71
|
+
const semanticAvailableBySurface = semanticConfigured && requirements.semanticRetrieval !== "FORBIDDEN" && transportCapabilities.reasons.length === 0;
|
|
72
|
+
const semanticRetrieval = semanticAvailableBySurface;
|
|
73
|
+
const authorizedRetrieval = rawConfigured && requirements.rawRetrieval !== "FORBIDDEN" && transportCapabilities.reasons.length === 0;
|
|
74
|
+
const repositoryMap = repositoryMapConfigured && requirements.repositoryMap !== "FORBIDDEN";
|
|
75
|
+
const requiredByProject = {
|
|
76
|
+
semanticRetrieval: semanticConfigured && config.context?.semanticRetrieval?.required !== false,
|
|
77
|
+
rawRetrieval: false,
|
|
78
|
+
repositoryMap: false,
|
|
79
|
+
compression: Boolean(config.context?.compression?.provider && config.context.compression.provider !== "none" && config.context.compression.required !== false)
|
|
80
|
+
};
|
|
81
|
+
const requiredByExecutionContract = {
|
|
82
|
+
semanticRetrieval: requirements.semanticRetrieval === "REQUIRED",
|
|
83
|
+
rawRetrieval: requirements.rawRetrieval === "REQUIRED",
|
|
84
|
+
repositoryMap: requirements.repositoryMap === "REQUIRED",
|
|
85
|
+
compression: requirements.compression === "REQUIRED"
|
|
86
|
+
};
|
|
87
|
+
const reasons = [...transportCapabilities.reasons];
|
|
88
|
+
const degradations = [];
|
|
14
89
|
if (!semanticConfigured)
|
|
15
|
-
reasons.push("semantic retrieval is
|
|
16
|
-
if (
|
|
17
|
-
reasons.push("
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
reasons.push(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
90
|
+
reasons.push("semantic retrieval is not configured for this project");
|
|
91
|
+
if (requirements.semanticRetrieval === "FORBIDDEN")
|
|
92
|
+
reasons.push("execution contract forbids semantic repository retrieval");
|
|
93
|
+
if (requirements.rawRetrieval === "FORBIDDEN")
|
|
94
|
+
reasons.push("execution contract forbids raw context retrieval");
|
|
95
|
+
if (requirements.repositoryMap === "FORBIDDEN")
|
|
96
|
+
reasons.push("execution contract forbids repository-map context");
|
|
97
|
+
if (semanticConfigured && requirements.semanticRetrieval !== "FORBIDDEN" && !semanticRetrieval && !requiredByProject.semanticRetrieval)
|
|
98
|
+
degradations.push("Serena unavailable; bounded repository-map/raw context fallback is active");
|
|
99
|
+
const readinessRequirements = [];
|
|
25
100
|
if (semanticRetrieval)
|
|
26
101
|
readinessRequirements.push("Serena MCP initialize/tools/list readiness");
|
|
27
102
|
if (authorizedRetrieval)
|
|
28
103
|
readinessRequirements.push("AEH context MCP authorization and source-hash verification");
|
|
29
|
-
return {
|
|
104
|
+
return {
|
|
105
|
+
contextGateway: true,
|
|
106
|
+
repositoryMap,
|
|
107
|
+
semanticRetrieval,
|
|
108
|
+
authorizedRetrieval,
|
|
109
|
+
mcpServers: { serena: semanticRetrieval, context: authorizedRetrieval, headroom: false },
|
|
110
|
+
requirements,
|
|
111
|
+
runtimeCapabilities,
|
|
112
|
+
transportCapabilities,
|
|
113
|
+
requiredByProject,
|
|
114
|
+
requiredByExecutionContract,
|
|
115
|
+
readinessRequirements,
|
|
116
|
+
degradations,
|
|
117
|
+
reasons
|
|
118
|
+
};
|
|
30
119
|
}
|
|
31
120
|
export async function resolveContextTransportCapabilities(root, config, selection, probe = {}) {
|
|
32
121
|
const capabilities = staticContextCapabilities(config, selection);
|
|
33
122
|
const semanticConfigured = Boolean(config.context?.semanticRetrieval?.provider && config.context.semanticRetrieval.provider !== "none");
|
|
123
|
+
if (probe.mode === "live" && semanticConfigured && capabilities.semanticRetrieval) {
|
|
124
|
+
const { SerenaSemanticProvider } = await import("./repository/serena.js");
|
|
125
|
+
const health = await new SerenaSemanticProvider().doctor(root);
|
|
126
|
+
if (!health.ok) {
|
|
127
|
+
capabilities.semanticRetrieval = false;
|
|
128
|
+
capabilities.mcpServers.serena = false;
|
|
129
|
+
capabilities.reasons.push(`Serena readiness failed: ${health.message}`);
|
|
130
|
+
if (!capabilities.requiredByProject.semanticRetrieval || !capabilities.requiredByExecutionContract.semanticRetrieval)
|
|
131
|
+
capabilities.degradations.push(`Serena unavailable; explicit fallback: ${health.message}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
34
134
|
if (probe.mode === "live" && effectiveTransport(config, selection) === "podman" && config.security?.sandbox?.image) {
|
|
35
135
|
const live = await probePodmanSerena(root, config.security.sandbox.image, probe);
|
|
36
136
|
capabilities.reasons.push(`live Podman probe: ${live.message}`);
|
|
37
137
|
if (!live.available || !live.imagePresent || !live.exposesSerena)
|
|
38
138
|
capabilities.readinessRequirements.push("pre-provisioned Podman image with Serena executable");
|
|
39
139
|
}
|
|
40
|
-
|
|
41
|
-
|
|
140
|
+
// Project `required=true` is scoped by the contract: it cannot force the
|
|
141
|
+
// coordinator or an OPTIONAL/FORBIDDEN worker surface to use Serena. An
|
|
142
|
+
// explicit execution-contract REQUIRED, however, is independently binding.
|
|
143
|
+
const required = capabilities.requiredByExecutionContract.semanticRetrieval;
|
|
144
|
+
if (required && !capabilities.semanticRetrieval) {
|
|
145
|
+
throw new Error(`UNSUPPORTED_CAPABILITY: Serena semantic retrieval is required by the execution contract, but is unavailable for transport '${effectiveTransport(config, selection)}' and runtime '${selection.runtimeName}'. ${capabilities.reasons.join("; ")}`);
|
|
42
146
|
}
|
|
43
147
|
return capabilities;
|
|
44
148
|
}
|
|
@@ -57,7 +161,7 @@ export async function probePodmanSerena(root, image, probe = {}) {
|
|
|
57
161
|
: { available: true, imagePresent: true, exposesSerena: false, message: "configured Podman image does not expose Serena" };
|
|
58
162
|
}
|
|
59
163
|
function effectiveTransport(config, selection) {
|
|
60
|
-
return selection.transport === "inherit" ? (config.orchestration?.provider ?? "none") : selection.transport;
|
|
164
|
+
return !selection.transport || selection.transport === "inherit" ? (config.orchestration?.provider ?? "none") : selection.transport;
|
|
61
165
|
}
|
|
62
166
|
function quote(value) { return `'${value.replaceAll("'", "'\\''")}'`; }
|
|
63
167
|
//# sourceMappingURL=transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/context/transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/context/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/context/types.d.ts
CHANGED
|
@@ -147,12 +147,12 @@ export declare const contextFragmentSchema: z.ZodObject<{
|
|
|
147
147
|
memory: "memory";
|
|
148
148
|
validation: "validation";
|
|
149
149
|
source: "source";
|
|
150
|
-
skill: "skill";
|
|
151
|
-
operation: "operation";
|
|
152
150
|
instruction: "instruction";
|
|
153
151
|
"execution-envelope": "execution-envelope";
|
|
154
152
|
"agent-charter": "agent-charter";
|
|
153
|
+
skill: "skill";
|
|
155
154
|
diff: "diff";
|
|
155
|
+
operation: "operation";
|
|
156
156
|
handoff: "handoff";
|
|
157
157
|
"tool-output": "tool-output";
|
|
158
158
|
"repository-map": "repository-map";
|
|
@@ -192,12 +192,12 @@ export declare const contextEnvelopeSchema: z.ZodObject<{
|
|
|
192
192
|
memory: "memory";
|
|
193
193
|
validation: "validation";
|
|
194
194
|
source: "source";
|
|
195
|
-
skill: "skill";
|
|
196
|
-
operation: "operation";
|
|
197
195
|
instruction: "instruction";
|
|
198
196
|
"execution-envelope": "execution-envelope";
|
|
199
197
|
"agent-charter": "agent-charter";
|
|
198
|
+
skill: "skill";
|
|
200
199
|
diff: "diff";
|
|
200
|
+
operation: "operation";
|
|
201
201
|
handoff: "handoff";
|
|
202
202
|
"tool-output": "tool-output";
|
|
203
203
|
"repository-map": "repository-map";
|
package/dist/core/config.js
CHANGED
|
@@ -21,6 +21,19 @@ const contextBudgetSchema = z.object({ inputTokens: z.number().int().positive().
|
|
|
21
21
|
const contextSchema = z.object({
|
|
22
22
|
mode: z.enum(["observe", "enforce"]).optional(),
|
|
23
23
|
budgets: z.object({ default: contextBudgetSchema.optional(), agents: z.record(z.string(), contextBudgetSchema).optional(), phases: z.record(z.string(), contextBudgetSchema).optional() }).optional(),
|
|
24
|
+
informational: z.object({ targetTokens: z.number().int().positive().optional(), softLimitTokens: z.number().int().positive().optional(), exceptionalTokens: z.number().int().positive().optional(), maxSources: z.number().int().positive().optional(), sourceSummaryTokens: z.number().int().positive().optional(), maxInitialBytesPerSource: z.number().int().positive().optional(), maxInitialBytesTotal: z.number().int().positive().optional() }).optional().superRefine((value, ctx) => {
|
|
25
|
+
const target = value?.targetTokens ?? 8_000;
|
|
26
|
+
const soft = value?.softLimitTokens ?? 12_000;
|
|
27
|
+
const exceptional = value?.exceptionalTokens ?? 15_000;
|
|
28
|
+
if (soft < target)
|
|
29
|
+
ctx.addIssue({ code: "custom", path: ["softLimitTokens"], message: "informational softLimitTokens must be >= targetTokens" });
|
|
30
|
+
if (exceptional < soft)
|
|
31
|
+
ctx.addIssue({ code: "custom", path: ["exceptionalTokens"], message: "informational exceptionalTokens must be >= softLimitTokens" });
|
|
32
|
+
const perSource = value?.maxInitialBytesPerSource ?? 4_000;
|
|
33
|
+
const total = value?.maxInitialBytesTotal ?? 20_000;
|
|
34
|
+
if (total < perSource)
|
|
35
|
+
ctx.addIssue({ code: "custom", path: ["maxInitialBytesTotal"], message: "informational maxInitialBytesTotal must be >= maxInitialBytesPerSource" });
|
|
36
|
+
}),
|
|
24
37
|
repositoryMap: z.object({ enabled: z.boolean().optional(), tokenBudget: z.number().int().positive().optional(), maxGraphHops: z.number().int().positive().optional() }).optional(),
|
|
25
38
|
semanticRetrieval: z.object({ provider: z.string().min(1).optional(), required: z.boolean().optional(), editing: z.boolean().optional() }).optional(),
|
|
26
39
|
compression: z.object({ provider: z.string().min(1).optional(), required: z.boolean().optional(), minTokens: z.number().int().positive().optional(), reversible: z.boolean().optional(), command: z.string().min(1).optional() }).optional(),
|