@tiangong-ai/cli 0.0.27 → 0.0.28
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/AGENTS.md +1 -1
- package/README.md +83 -35
- package/dist/research/orchestration.js +38 -0
- package/dist/research/orchestration.js.map +1 -1
- package/dist/research/setup-command.js +1 -1
- package/dist/research/setup-command.js.map +1 -1
- package/dist/research/workspace/broker.d.ts +5 -0
- package/dist/research/workspace/broker.js +98 -9
- package/dist/research/workspace/broker.js.map +1 -1
- package/dist/research/workspace/capabilities.js +32 -11
- package/dist/research/workspace/capabilities.js.map +1 -1
- package/dist/research/workspace/credentials.d.ts +6 -1
- package/dist/research/workspace/credentials.js +16 -2
- package/dist/research/workspace/credentials.js.map +1 -1
- package/dist/research/workspace/executor.js +43 -3
- package/dist/research/workspace/executor.js.map +1 -1
- package/dist/research/workspace/external-skills.d.ts +31 -0
- package/dist/research/workspace/external-skills.js +161 -13
- package/dist/research/workspace/external-skills.js.map +1 -1
- package/dist/research/workspace/preflight.d.ts +34 -2
- package/dist/research/workspace/preflight.js +76 -21
- package/dist/research/workspace/preflight.js.map +1 -1
- package/dist/research/workspace/runtime.js +135 -50
- package/dist/research/workspace/runtime.js.map +1 -1
- package/dist/research/workspace/schemas.d.ts +4 -0
- package/dist/research/workspace/schemas.js +29 -3
- package/dist/research/workspace/schemas.js.map +1 -1
- package/dist/research/workspace/setup-catalog.d.ts +3 -2
- package/dist/research/workspace/setup-catalog.js +22 -1
- package/dist/research/workspace/setup-catalog.js.map +1 -1
- package/dist/research/workspace/setup-wizard.js +15 -6
- package/dist/research/workspace/setup-wizard.js.map +1 -1
- package/dist/research/workspace/setup.d.ts +4 -0
- package/dist/research/workspace/setup.js +84 -36
- package/dist/research/workspace/setup.js.map +1 -1
- package/dist/research/workspace/types.d.ts +2 -0
- package/dist/research/workspace/workspace.d.ts +2 -1
- package/dist/research/workspace/workspace.js +62 -13
- package/dist/research/workspace/workspace.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { loadCapabilityDeclarations, verifyCapabilities } from "./capabilities.js";
|
|
2
2
|
import { hasPublicInternetCapability } from "./external-skills.js";
|
|
3
|
+
import { schemaForStage } from "./schemas.js";
|
|
3
4
|
import { canonicalJson, sha256Text } from "./storage.js";
|
|
4
5
|
import { loadWorkspaceConfig, verifyDoctorAttestation } from "./workspace.js";
|
|
5
6
|
export const RESEARCH_AGENT_PROTOCOL_OVERHEAD_TOKENS = {
|
|
@@ -8,9 +9,11 @@ export const RESEARCH_AGENT_PROTOCOL_OVERHEAD_TOKENS = {
|
|
|
8
9
|
};
|
|
9
10
|
export const RESEARCH_ESTIMATED_BYTES_PER_TOKEN = 3;
|
|
10
11
|
export const RESEARCH_MAX_REPAIR_SOURCE_BYTES = 32_000;
|
|
11
|
-
export const
|
|
12
|
+
export const RESEARCH_CODEX_STRUCTURED_OUTPUT_MAX_TURNS = 2;
|
|
13
|
+
export const RESEARCH_CLAUDE_STRUCTURED_OUTPUT_MAX_TURNS = 3;
|
|
12
14
|
export const RESEARCH_BROKER_MAX_TURNS = 6;
|
|
13
15
|
export const RESEARCH_REPAIR_MAX_TURNS = 1;
|
|
16
|
+
const RESEARCH_PREFLIGHT_PROMPT_ALLOWANCE_TOKENS = 3_000;
|
|
14
17
|
export async function evaluateProjectPreflight(root, question, requirements, inputPlan) {
|
|
15
18
|
const config = await loadWorkspaceConfig(root);
|
|
16
19
|
const capabilities = await loadCapabilityDeclarations(root);
|
|
@@ -21,6 +24,7 @@ export async function evaluateProjectPreflight(root, question, requirements, inp
|
|
|
21
24
|
.map((capability) => ({
|
|
22
25
|
id: capability.id,
|
|
23
26
|
allowedHosts: capability.allowedHosts,
|
|
27
|
+
endpoint: capability.http?.endpoint ?? null,
|
|
24
28
|
accept: capability.http?.accept ?? null,
|
|
25
29
|
maxResponseBytes: capability.http?.maxResponseBytes ?? null,
|
|
26
30
|
maxItems: capability.http?.maxItems ?? null,
|
|
@@ -83,7 +87,14 @@ export async function evaluateProjectPreflight(root, question, requirements, inp
|
|
|
83
87
|
gaps.push(`package-output-repair-reservation-exceeds-${stage}:${outputAndRepairReservation}/${tokens}`);
|
|
84
88
|
}
|
|
85
89
|
}
|
|
86
|
-
const
|
|
90
|
+
const stageContextTokenReservations = {
|
|
91
|
+
analyze: config.budget.maxOutputTokens,
|
|
92
|
+
synthesize: config.budget.maxOutputTokens * 2,
|
|
93
|
+
review: config.budget.maxInputContextTokens + config.budget.maxOutputTokens * 3,
|
|
94
|
+
};
|
|
95
|
+
const producerStructuredOutputMaxTurns = researchStructuredOutputMaxTurns(config.producer);
|
|
96
|
+
const reviewerStructuredOutputMaxTurns = researchStructuredOutputMaxTurns(config.reviewer);
|
|
97
|
+
const embeddedStageContextReservation = stageContextTokenReservations.synthesize;
|
|
87
98
|
if (embeddedStageContextReservation > config.budget.maxInputContextTokens) {
|
|
88
99
|
gaps.push(`embedded-stage-context-reservation-exceeds-total:${embeddedStageContextReservation}/${config.budget.maxInputContextTokens}`);
|
|
89
100
|
}
|
|
@@ -100,17 +111,26 @@ export async function evaluateProjectPreflight(root, question, requirements, inp
|
|
|
100
111
|
const maxTurns = {
|
|
101
112
|
discover: networkCapabilities.length
|
|
102
113
|
? RESEARCH_BROKER_MAX_TURNS
|
|
103
|
-
:
|
|
104
|
-
analyze:
|
|
105
|
-
synthesize:
|
|
106
|
-
review:
|
|
114
|
+
: producerStructuredOutputMaxTurns,
|
|
115
|
+
analyze: producerStructuredOutputMaxTurns,
|
|
116
|
+
synthesize: producerStructuredOutputMaxTurns,
|
|
117
|
+
review: reviewerStructuredOutputMaxTurns,
|
|
107
118
|
repair: RESEARCH_REPAIR_MAX_TURNS,
|
|
108
119
|
};
|
|
120
|
+
const schemaTokens = Object.fromEntries(["discover", "analyze", "synthesize", "review"].map((stage) => [
|
|
121
|
+
stage,
|
|
122
|
+
Math.ceil(Buffer.byteLength(JSON.stringify(schemaForStage(stage, null, stage === "discover" && networkCapabilities.length === 0
|
|
123
|
+
? { inputOnlyProvenanceIds: inputPlan?.inputs.map((input) => input.id) ?? [] }
|
|
124
|
+
: {})), "utf8") / RESEARCH_ESTIMATED_BYTES_PER_TOKEN),
|
|
125
|
+
]));
|
|
126
|
+
const capabilityDocumentationReservation = networkCapabilities.length
|
|
127
|
+
? config.budget.maxInputContextTokens
|
|
128
|
+
: 0;
|
|
109
129
|
const preCallTokenReservations = {
|
|
110
|
-
discover: estimatedStageTokenReservation(config.producer, estimatedInputContextTokens, maxTurns.discover, config, config.budget.maxBrokerContextTokens *
|
|
111
|
-
analyze: estimatedStageTokenReservation(config.producer, config.budget.maxOutputTokens,
|
|
112
|
-
synthesize: estimatedStageTokenReservation(config.producer, config.budget.maxOutputTokens * 2,
|
|
113
|
-
review: estimatedStageTokenReservation(config.reviewer,
|
|
130
|
+
discover: estimatedStageTokenReservation(config.producer, estimatedInputContextTokens + capabilityDocumentationReservation, schemaTokens.discover, maxTurns.discover, config, config.budget.maxBrokerContextTokens * config.budget.maxBrokerCalls),
|
|
131
|
+
analyze: estimatedStageTokenReservation(config.producer, config.budget.maxOutputTokens, schemaTokens.analyze, producerStructuredOutputMaxTurns, config),
|
|
132
|
+
synthesize: estimatedStageTokenReservation(config.producer, config.budget.maxOutputTokens * 2, schemaTokens.synthesize, producerStructuredOutputMaxTurns, config),
|
|
133
|
+
review: estimatedStageTokenReservation(config.reviewer, stageContextTokenReservations.review, schemaTokens.review, reviewerStructuredOutputMaxTurns, config),
|
|
114
134
|
};
|
|
115
135
|
for (const [stage, reservation] of Object.entries(preCallTokenReservations)) {
|
|
116
136
|
const configured = packageTokens[stage];
|
|
@@ -162,13 +182,18 @@ export async function evaluateProjectPreflight(root, question, requirements, inp
|
|
|
162
182
|
maxTokens: config.budget.maxTokens,
|
|
163
183
|
maxCostUsd: config.budget.maxCostUsd,
|
|
164
184
|
maxWallSeconds: config.budget.maxWallSeconds,
|
|
185
|
+
packageMaxTokens: config.budget.packageMaxTokens,
|
|
165
186
|
confirmationCostUsd: config.budget.confirmationCostUsd,
|
|
166
187
|
confirmationRequired: config.budget.maxCostUsd > config.budget.confirmationCostUsd,
|
|
167
188
|
estimatedMaxCostUsd,
|
|
168
189
|
maxBrokerContextTokens: config.budget.maxBrokerContextTokens,
|
|
190
|
+
maxBrokerCalls: config.budget.maxBrokerCalls,
|
|
191
|
+
maxOutputTokens: config.budget.maxOutputTokens,
|
|
192
|
+
maxRepairTokens: config.budget.maxRepairTokens,
|
|
169
193
|
estimatedInputContextTokens,
|
|
170
194
|
maxInputContextTokens: config.budget.maxInputContextTokens,
|
|
171
195
|
embeddedStageContextReservation,
|
|
196
|
+
stageContextTokenReservations,
|
|
172
197
|
recommendedDiscoverOutputTokens,
|
|
173
198
|
outputTokenLimitEnforcement: {
|
|
174
199
|
producer: "post-execution",
|
|
@@ -201,17 +226,47 @@ export async function evaluateProjectPreflight(root, question, requirements, inp
|
|
|
201
226
|
};
|
|
202
227
|
return { ...result, preflightSha256: sha256Text(canonicalJson(result)) };
|
|
203
228
|
}
|
|
204
|
-
function
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
return (
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
229
|
+
export function researchStructuredOutputMaxTurns(route) {
|
|
230
|
+
return route.agent === "claude"
|
|
231
|
+
? RESEARCH_CLAUDE_STRUCTURED_OUTPUT_MAX_TURNS
|
|
232
|
+
: RESEARCH_CODEX_STRUCTURED_OUTPUT_MAX_TURNS;
|
|
233
|
+
}
|
|
234
|
+
function estimatedStageTokenReservation(route, embeddedContextTokens, schemaTokens, primaryMaxTurns, config, potentialToolContextTokens = 0) {
|
|
235
|
+
return calculateAgentCallTokenReservation({
|
|
236
|
+
route,
|
|
237
|
+
primaryPayloadTokens: embeddedContextTokens + schemaTokens + RESEARCH_PREFLIGHT_PROMPT_ALLOWANCE_TOKENS,
|
|
238
|
+
repairPayloadTokens: schemaTokens +
|
|
239
|
+
Math.ceil((RESEARCH_MAX_REPAIR_SOURCE_BYTES + 2_048) / RESEARCH_ESTIMATED_BYTES_PER_TOKEN),
|
|
240
|
+
maxTurns: primaryMaxTurns,
|
|
241
|
+
maxOutputTokens: config.budget.maxOutputTokens,
|
|
242
|
+
maxToolContextTokens: potentialToolContextTokens,
|
|
243
|
+
maxRepairTokens: config.budget.maxRepairTokens,
|
|
244
|
+
reserveRepair: true,
|
|
245
|
+
}).totalTokens;
|
|
246
|
+
}
|
|
247
|
+
export function calculateAgentCallTokenReservation(input) {
|
|
248
|
+
const protocolOverhead = RESEARCH_AGENT_PROTOCOL_OVERHEAD_TOKENS[input.route.agent];
|
|
249
|
+
const alreadyUsedTokens = input.alreadyUsedTokens ?? 0;
|
|
250
|
+
const estimatedCallInputTokensPerTurn = protocolOverhead + input.primaryPayloadTokens;
|
|
251
|
+
const estimatedCallInputTokens = estimatedCallInputTokensPerTurn * input.maxTurns;
|
|
252
|
+
const potentialRepairTokens = input.reserveRepair
|
|
253
|
+
? (protocolOverhead + input.repairPayloadTokens) * RESEARCH_REPAIR_MAX_TURNS +
|
|
254
|
+
input.maxRepairTokens
|
|
255
|
+
: 0;
|
|
256
|
+
return {
|
|
257
|
+
alreadyUsedTokens,
|
|
258
|
+
maxTurns: input.maxTurns,
|
|
259
|
+
estimatedCallInputTokensPerTurn,
|
|
260
|
+
estimatedCallInputTokens,
|
|
261
|
+
outputTokens: input.maxOutputTokens,
|
|
262
|
+
potentialToolContextTokens: input.maxToolContextTokens,
|
|
263
|
+
potentialRepairTokens,
|
|
264
|
+
totalTokens: alreadyUsedTokens +
|
|
265
|
+
estimatedCallInputTokens +
|
|
266
|
+
input.maxToolContextTokens +
|
|
267
|
+
input.maxOutputTokens +
|
|
268
|
+
potentialRepairTokens,
|
|
269
|
+
};
|
|
215
270
|
}
|
|
216
271
|
export function reservedAgentPackageCost(route, tokens, config) {
|
|
217
272
|
if (!route.pricing)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/research/workspace/preflight.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/research/workspace/preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,8 @@ import { loadProjectEvidenceReceipts, stageProjectEvidence } from "./evidence.js
|
|
|
8
8
|
import { executeAgent } from "./executor.js";
|
|
9
9
|
import { requiredDiscoveryCapabilityIds } from "./external-skills.js";
|
|
10
10
|
import { renderInputLineContext } from "./input-plan.js";
|
|
11
|
-
import { appendJournalEvent, verifyJournal } from "./journal.js";
|
|
12
|
-
import {
|
|
11
|
+
import { appendJournalEvent, readJournal, verifyJournal } from "./journal.js";
|
|
12
|
+
import { calculateAgentCallTokenReservation, RESEARCH_BROKER_MAX_TURNS, RESEARCH_ESTIMATED_BYTES_PER_TOKEN, RESEARCH_MAX_REPAIR_SOURCE_BYTES, RESEARCH_REPAIR_MAX_TURNS, researchStructuredOutputMaxTurns, reservedAgentPackageCost, } from "./preflight.js";
|
|
13
13
|
import { listProjects, loadProject, nextReadyPackage, packageById, refreshProject, saveProject, } from "./projects.js";
|
|
14
14
|
import { configuredResearchSecrets, sanitizeResearchRecord, sanitizeResearchText, } from "./sanitization.js";
|
|
15
15
|
import { parseStructuredStageOutput, schemaForStage, StructuredOutputError } from "./schemas.js";
|
|
@@ -145,7 +145,7 @@ async function executeWorkPackage(root, projectId, packageId, config, options, r
|
|
|
145
145
|
options,
|
|
146
146
|
requestId,
|
|
147
147
|
purpose: "primary",
|
|
148
|
-
prompt: packagePrompt(project, workPackage, capsule.inputManifest, capsule.stagedSkills, capsule.capabilityDocumentation, capsule.reviewPacketSha256, capsule.contextBundle, capsule.contextBundleContent, stageContextContent),
|
|
148
|
+
prompt: packagePrompt(project, workPackage, capsule.inputManifest, capsule.stagedSkills, capsule.capabilityDocumentation, capsule.reviewPacketSha256, capsule.contextBundle, capsule.contextBundleContent, stageContextContent, config.budget.maxBrokerCalls),
|
|
149
149
|
brokerUrl: primaryBrokerUrl,
|
|
150
150
|
inputOnlyProvenance,
|
|
151
151
|
maxOutputTokens: Math.min(config.budget.maxOutputTokens, reservation.tokens),
|
|
@@ -414,7 +414,7 @@ async function createCapsule(root, project, workPackage, runId, config) {
|
|
|
414
414
|
const stagedSkills = await stageLockedCapabilities(root, join(capsuleProject, "skills"));
|
|
415
415
|
const capabilityDocumentation = await buildCapabilityDocumentation(capsuleProject, stagedSkills, config.budget.maxInputContextTokens * RESEARCH_ESTIMATED_BYTES_PER_TOKEN);
|
|
416
416
|
const reviewEvidenceContext = workPackage.stage === "review"
|
|
417
|
-
? await writeReviewEvidenceContext(root, project.id, capsuleProject, contextBundleContent, evidenceReceipts)
|
|
417
|
+
? await writeReviewEvidenceContext(root, project.id, capsuleProject, contextBundleContent, evidenceReceipts, config.budget.maxInputContextTokens * RESEARCH_ESTIMATED_BYTES_PER_TOKEN)
|
|
418
418
|
: null;
|
|
419
419
|
const reviewPacket = reviewEvidenceContext
|
|
420
420
|
? await writeReviewPacket(root, capsuleProject, project, inputManifest, evidenceReceipts, reviewEvidenceContext.persistent)
|
|
@@ -518,11 +518,17 @@ async function writeReviewPacket(root, capsuleProject, project, inputManifest, e
|
|
|
518
518
|
const record = await persistReviewPacket(root, project.id, completePacket, packetSha256);
|
|
519
519
|
return { sha256: packetSha256, record };
|
|
520
520
|
}
|
|
521
|
-
async function writeReviewEvidenceContext(root, projectId, capsuleProject, inputContextBundle, evidenceReceipts) {
|
|
522
|
-
const
|
|
521
|
+
async function writeReviewEvidenceContext(root, projectId, capsuleProject, inputContextBundle, evidenceReceipts, maxBytes) {
|
|
522
|
+
const header = [
|
|
523
523
|
"TIANGONG REVIEW EVIDENCE CONTEXT v1",
|
|
524
|
-
"The following are
|
|
525
|
-
|
|
524
|
+
"The following are deterministic excerpts from hash-verified bounded views. Full objects and original bounded contexts remain bound in the review packet.",
|
|
525
|
+
].join("\n");
|
|
526
|
+
const views = [
|
|
527
|
+
{
|
|
528
|
+
prefix: "--- LOCAL INPUT CONTEXT BUNDLE ---\n--- BEGIN BOUNDED REVIEW EXCERPT ---\n",
|
|
529
|
+
content: inputContextBundle.trimEnd(),
|
|
530
|
+
suffix: "\n--- END BOUNDED REVIEW EXCERPT ---",
|
|
531
|
+
},
|
|
526
532
|
];
|
|
527
533
|
const seen = new Set();
|
|
528
534
|
for (const receipt of [...evidenceReceipts].sort((left, right) => left.attemptId.localeCompare(right.attemptId))) {
|
|
@@ -533,17 +539,42 @@ async function writeReviewEvidenceContext(root, projectId, capsuleProject, input
|
|
|
533
539
|
const content = reviewableTextContentType(receipt.contentType)
|
|
534
540
|
? await readFile(resolveContained(capsuleProject, receipt.contextLocator), "utf8")
|
|
535
541
|
: "[Binary bounded view omitted from model context; verify the bound file mechanically.]";
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
542
|
+
views.push({
|
|
543
|
+
prefix: [
|
|
544
|
+
`--- BROKER RECEIPT ${receipt.attemptId} ---`,
|
|
545
|
+
`metadata: ${JSON.stringify(metadata)}`,
|
|
546
|
+
"--- BEGIN BOUNDED REVIEW EXCERPT ---",
|
|
547
|
+
"",
|
|
548
|
+
].join("\n"),
|
|
549
|
+
content: content.trimEnd(),
|
|
550
|
+
suffix: "\n--- END BOUNDED REVIEW EXCERPT ---",
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
const fixedContent = [header, ...views.map((view) => `${view.prefix}${view.suffix}`)].join("\n\n");
|
|
554
|
+
const fixedBytes = Buffer.byteLength(`${fixedContent}\n`, "utf8");
|
|
555
|
+
if (fixedBytes > maxBytes) {
|
|
556
|
+
throw new CliError("Review evidence metadata exceeds the configured context budget.", {
|
|
557
|
+
code: "RESEARCH_REVIEW_CONTEXT_BUDGET_EXCEEDED",
|
|
558
|
+
exitCode: 3,
|
|
559
|
+
details: { fixedBytes, maxBytes, views: views.length },
|
|
560
|
+
});
|
|
543
561
|
}
|
|
562
|
+
const contentBudgetPerView = Math.floor((maxBytes - fixedBytes) / views.length);
|
|
563
|
+
const sections = [
|
|
564
|
+
header,
|
|
565
|
+
...views.map((view) => `${view.prefix}${boundedUtf8ReviewExcerpt(view.content, contentBudgetPerView)}${view.suffix}`),
|
|
566
|
+
];
|
|
544
567
|
const logicalPath = "inputs/review-evidence-context.txt";
|
|
545
568
|
const path = resolveContained(capsuleProject, logicalPath);
|
|
546
569
|
const content = `${sections.join("\n\n")}\n`;
|
|
570
|
+
const actualBytes = Buffer.byteLength(content, "utf8");
|
|
571
|
+
if (actualBytes > maxBytes) {
|
|
572
|
+
throw new CliError("Review evidence context exceeded its deterministic byte budget.", {
|
|
573
|
+
code: "RESEARCH_REVIEW_CONTEXT_BUDGET_EXCEEDED",
|
|
574
|
+
exitCode: 3,
|
|
575
|
+
details: { actualBytes, maxBytes },
|
|
576
|
+
});
|
|
577
|
+
}
|
|
547
578
|
await writeTextAtomic(path, content);
|
|
548
579
|
const capsule = await fileRecord(path, logicalPath);
|
|
549
580
|
const persistentLogicalPath = `review/contexts/${capsule.sha256}.txt`;
|
|
@@ -569,6 +600,29 @@ async function writeReviewEvidenceContext(root, projectId, capsuleProject, input
|
|
|
569
600
|
function reviewableTextContentType(contentType) {
|
|
570
601
|
return /^(?:text\/|application\/(?:[^;]+\+)?(?:json|xml|javascript|xhtml\+xml|csv))(?:;|$)/i.test(contentType);
|
|
571
602
|
}
|
|
603
|
+
function boundedUtf8ReviewExcerpt(value, maxBytes) {
|
|
604
|
+
if (Buffer.byteLength(value, "utf8") <= maxBytes)
|
|
605
|
+
return value;
|
|
606
|
+
const suffix = "\n[TRUNCATED: the full object and original bounded context remain hash-bound in the persistent review packet.]";
|
|
607
|
+
const suffixBytes = Buffer.byteLength(suffix, "utf8");
|
|
608
|
+
if (maxBytes <= suffixBytes)
|
|
609
|
+
return utf8Prefix(suffix, maxBytes);
|
|
610
|
+
return `${utf8Prefix(value, maxBytes - suffixBytes)}${suffix}`;
|
|
611
|
+
}
|
|
612
|
+
function utf8Prefix(value, maxBytes) {
|
|
613
|
+
if (maxBytes <= 0)
|
|
614
|
+
return "";
|
|
615
|
+
let bytes = 0;
|
|
616
|
+
let result = "";
|
|
617
|
+
for (const character of value) {
|
|
618
|
+
const characterBytes = Buffer.byteLength(character, "utf8");
|
|
619
|
+
if (bytes + characterBytes > maxBytes)
|
|
620
|
+
break;
|
|
621
|
+
result += character;
|
|
622
|
+
bytes += characterBytes;
|
|
623
|
+
}
|
|
624
|
+
return result;
|
|
625
|
+
}
|
|
572
626
|
async function persistReviewPacket(root, projectId, packet, packetSha256) {
|
|
573
627
|
const logicalPath = `review/packets/${packetSha256}.json`;
|
|
574
628
|
const path = resolveContained(projectRoot(root, projectId), logicalPath);
|
|
@@ -712,7 +766,7 @@ function agentRequest(input) {
|
|
|
712
766
|
? RESEARCH_REPAIR_MAX_TURNS
|
|
713
767
|
: input.brokerUrl
|
|
714
768
|
? RESEARCH_BROKER_MAX_TURNS
|
|
715
|
-
:
|
|
769
|
+
: researchStructuredOutputMaxTurns(input.route);
|
|
716
770
|
return {
|
|
717
771
|
route: input.route,
|
|
718
772
|
prompt: input.prompt,
|
|
@@ -729,7 +783,7 @@ function agentRequest(input) {
|
|
|
729
783
|
maxTurns,
|
|
730
784
|
maxOutputTokens: input.maxOutputTokens,
|
|
731
785
|
maxToolContextTokens: input.brokerUrl
|
|
732
|
-
? input.config.budget.maxBrokerContextTokens *
|
|
786
|
+
? input.config.budget.maxBrokerContextTokens * input.config.budget.maxBrokerCalls
|
|
733
787
|
: 0,
|
|
734
788
|
maxCostUsd: input.maxCostUsd,
|
|
735
789
|
expectedRuntime: input.expectedRuntime,
|
|
@@ -764,6 +818,14 @@ async function materializeAndValidateStageOutput(root, project, capsuleProject,
|
|
|
764
818
|
: parsed.fileContent;
|
|
765
819
|
await writeTextAtomic(destination, fileContent);
|
|
766
820
|
await validateOutputShape(root, project, workPackage, destination, reviewPacketSha256);
|
|
821
|
+
if (parsed.normalizations.length > 0) {
|
|
822
|
+
await appendJournalEvent(workspacePaths(root).journal, "package.output.normalized", project.id, {
|
|
823
|
+
projectId: project.id,
|
|
824
|
+
packageId: workPackage.id,
|
|
825
|
+
stage: workPackage.stage,
|
|
826
|
+
normalizations: parsed.normalizations,
|
|
827
|
+
});
|
|
828
|
+
}
|
|
767
829
|
}
|
|
768
830
|
async function validateAndImportOutputs(root, project, workPackage, capsuleProject, config, reviewPacketSha256) {
|
|
769
831
|
const admitted = [];
|
|
@@ -998,10 +1060,41 @@ async function assertEvidenceCoverage(root, project) {
|
|
|
998
1060
|
const gaps = [...computed.mechanicalGaps];
|
|
999
1061
|
const requiredCapabilities = requiredDiscoveryCapabilityIds(await loadCapabilityDeclarations(root));
|
|
1000
1062
|
const exercisedCapabilities = new Set((await loadProjectEvidenceReceipts(root, project.id)).map((receipt) => receipt.capabilityId));
|
|
1063
|
+
const journalEvents = await readJournal(workspacePaths(root).journal);
|
|
1064
|
+
const attemptedCapabilities = new Map();
|
|
1065
|
+
for (const event of journalEvents) {
|
|
1066
|
+
if (event.scope !== project.id || event.type !== "capability.fetch.attempted")
|
|
1067
|
+
continue;
|
|
1068
|
+
const capabilityId = event.payload.capabilityId;
|
|
1069
|
+
if (typeof capabilityId !== "string")
|
|
1070
|
+
continue;
|
|
1071
|
+
const current = attemptedCapabilities.get(capabilityId) ?? {
|
|
1072
|
+
attempts: 0,
|
|
1073
|
+
failureKinds: new Set(),
|
|
1074
|
+
};
|
|
1075
|
+
current.attempts += 1;
|
|
1076
|
+
attemptedCapabilities.set(capabilityId, current);
|
|
1077
|
+
}
|
|
1078
|
+
for (const event of journalEvents) {
|
|
1079
|
+
if (event.scope !== project.id || event.type !== "capability.fetch.failed")
|
|
1080
|
+
continue;
|
|
1081
|
+
const capabilityId = event.payload.capabilityId;
|
|
1082
|
+
const failureKind = event.payload.failureKind;
|
|
1083
|
+
if (typeof capabilityId !== "string" || typeof failureKind !== "string")
|
|
1084
|
+
continue;
|
|
1085
|
+
attemptedCapabilities.get(capabilityId)?.failureKinds.add(failureKind);
|
|
1086
|
+
}
|
|
1001
1087
|
for (const capabilityId of requiredCapabilities) {
|
|
1002
|
-
if (
|
|
1088
|
+
if (exercisedCapabilities.has(capabilityId))
|
|
1089
|
+
continue;
|
|
1090
|
+
const attempted = attemptedCapabilities.get(capabilityId);
|
|
1091
|
+
if (!attempted) {
|
|
1003
1092
|
gaps.push(`required discovery capability was not exercised: ${capabilityId}`);
|
|
1093
|
+
continue;
|
|
1004
1094
|
}
|
|
1095
|
+
const failureKinds = [...attempted.failureKinds].sort();
|
|
1096
|
+
const detail = failureKinds.length ? `; failure kinds: ${failureKinds.join(", ")}` : "";
|
|
1097
|
+
gaps.push(`required discovery capability produced no admissible receipt after ${attempted.attempts} attempt(s): ${capabilityId}${detail}`);
|
|
1005
1098
|
}
|
|
1006
1099
|
if (canonicalJson(declared.dimensions) !== canonicalJson(computed.dimensions) ||
|
|
1007
1100
|
canonicalJson(declared.sourceTypes) !== canonicalJson(computed.sourceTypes) ||
|
|
@@ -1144,7 +1237,6 @@ async function stageContextForPackage(capsuleProject, workPackage, config) {
|
|
|
1144
1237
|
? ["outputs/evidence.json", "outputs/analysis.json"]
|
|
1145
1238
|
: workPackage.stage === "review"
|
|
1146
1239
|
? [
|
|
1147
|
-
"inputs/review-packet.json",
|
|
1148
1240
|
"inputs/review-evidence-context.txt",
|
|
1149
1241
|
"outputs/evidence.json",
|
|
1150
1242
|
"outputs/analysis.json",
|
|
@@ -1157,26 +1249,33 @@ async function stageContextForPackage(capsuleProject, workPackage, config) {
|
|
|
1157
1249
|
sections.push(`### ${logicalPath}\n${content.trimEnd()}`);
|
|
1158
1250
|
}
|
|
1159
1251
|
const bundled = sections.join("\n\n");
|
|
1160
|
-
const estimatedTokens = Math.ceil(Buffer.byteLength(bundled, "utf8") /
|
|
1161
|
-
|
|
1252
|
+
const estimatedTokens = Math.ceil(Buffer.byteLength(bundled, "utf8") / RESEARCH_ESTIMATED_BYTES_PER_TOKEN);
|
|
1253
|
+
const maxStageContextTokens = workPackage.stage === "review"
|
|
1254
|
+
? config.budget.maxInputContextTokens + config.budget.maxOutputTokens * 3
|
|
1255
|
+
: workPackage.stage === "synthesize"
|
|
1256
|
+
? config.budget.maxOutputTokens * 2
|
|
1257
|
+
: workPackage.stage === "analyze"
|
|
1258
|
+
? config.budget.maxOutputTokens
|
|
1259
|
+
: 0;
|
|
1260
|
+
if (estimatedTokens > maxStageContextTokens) {
|
|
1162
1261
|
throw new CliError(`Admitted stage context exceeds the configured input context limit for ${workPackage.id}.`, {
|
|
1163
1262
|
code: "RESEARCH_INPUT_CONTEXT_BUDGET_EXCEEDED",
|
|
1164
1263
|
exitCode: 3,
|
|
1165
1264
|
details: {
|
|
1166
1265
|
packageId: workPackage.id,
|
|
1167
1266
|
estimatedTokens,
|
|
1168
|
-
|
|
1267
|
+
maxStageContextTokens,
|
|
1169
1268
|
},
|
|
1170
1269
|
});
|
|
1171
1270
|
}
|
|
1172
1271
|
return bundled;
|
|
1173
1272
|
}
|
|
1174
|
-
function packagePrompt(project, workPackage, inputs, stagedSkills, capabilityDocumentation, reviewPacketSha256, contextBundle, contextBundleContent, stageContextContent) {
|
|
1273
|
+
function packagePrompt(project, workPackage, inputs, stagedSkills, capabilityDocumentation, reviewPacketSha256, contextBundle, contextBundleContent, stageContextContent, maxBrokerCalls) {
|
|
1175
1274
|
const stageInstructions = {
|
|
1176
1275
|
discover: "Return the evidence object defined by the supplied JSON Schema. Cite only declared inputs or broker receipts. Each source.id is your concise evidence label; it must not be reused as provenance.id. For declared inputs, provenance must use the exact id and path shown in the declared input manifest, with locator=path. Every declared input binds an exact registered full source, so fullTextAvailable=true even when fullTextStaged=false; that flag means the producer receives only its bounded context while independent review binds both the verified full-file hash and the exact bounded review view. For broker evidence, provenance.id must be the exact receipt attemptId and locator must be the receipt locator (not contextLocator); use contextLocator only to inspect the bounded view. Include source type, retrieval metadata, an excerpt or JSON Pointer when available, quality, applicability, coverage dimensions, limitations, and an honest coverage assessment. A partial dimension is usable but incomplete; missing means no admitted source covers it. coverage.gaps records qualitative limitations and does not alone force an insufficient decision. The CLI mechanically derives local-input full-text availability, sourceTypes, counts, date range, sourceIds, and the pass/insufficient decision from admitted sources and declared minimums. Never place credentials or sensitive URL parameters in any field.",
|
|
1177
1276
|
analyze: "Use only the complete embedded admitted evidence below and return the schema-defined analysis object. Every finding must cite admitted evidence source IDs and state uncertainty and applicability.",
|
|
1178
|
-
synthesize: "Use only the complete embedded admitted evidence and findings below. Return the schema-defined object whose reportMarkdown separates supported conclusions, uncertainty, limitations, and next actions.",
|
|
1179
|
-
review: `Independently inspect the complete embedded
|
|
1277
|
+
synthesize: "Use only the complete embedded admitted evidence and findings below. Return the schema-defined object whose reportMarkdown separates supported conclusions, uncertainty, limitations, and next actions. Use real Markdown line breaks encoded exactly once for JSON; never place literal /n or double-escaped \\n markers in reportMarkdown. When the admitted publication-date range is narrower than the requested range, state the exact admitted range and missing interval prominently in the opening summary.",
|
|
1278
|
+
review: `Independently inspect the complete embedded artifacts and globally bounded evidence excerpts. The CLI has already verified every bound full evidence object's size and SHA-256 and persistently stored the complete review packet; its hash is schema-bound even though the packet metadata is not duplicated in model context. Do not claim to have read beyond the embedded excerpts. Return the schema-defined review bound to packetSha256 ${reviewPacketSha256 ?? "unavailable"}. Use pass only when every material claim is traceable within the admitted evidence and clearly scoped to its limitations.`,
|
|
1180
1279
|
close: "No agent action is allowed for mechanical closure.",
|
|
1181
1280
|
};
|
|
1182
1281
|
const prompt = [
|
|
@@ -1192,7 +1291,7 @@ function packagePrompt(project, workPackage, inputs, stagedSkills, capabilityDoc
|
|
|
1192
1291
|
? "The exact capability manifest and each staged external SKILL.md are embedded below. Use this documentation directly; filesystem tools are disabled."
|
|
1193
1292
|
: "Capability files are provenance-bound but are not available as execution tools in this stage.",
|
|
1194
1293
|
workPackage.stage === "discover"
|
|
1195
|
-
?
|
|
1294
|
+
? `Use the broker only, with at most ${maxBrokerCalls} total fetch_candidate_source calls. Prefer broad, high-yield queries and stop querying once the declared coverage minimums are met. Do not execute a staged Skill's curl/CLI examples or read provider environment variables. Invoke fetch_candidate_source with the manifest capability ID and obey its exact declared HTTP method. GET capabilities use only declared query parameters; POST capabilities require request_body containing only the documented non-secret request JSON. Never place API keys, tokens, authorization data, cookies, or other credential-like fields in request_body. The broker injects the sole declared logical credential, disables caching for credentialed requests, and never persists the POST body (only its hash). The tool result includes the exact bounded context together with its receipt and remaining call budget; use that inline context and its provenance fields. Exercise every manifest capability with requiredForDiscovery=true, or the mechanical coverage gate will stop downstream work.`
|
|
1196
1295
|
: "Use only the complete embedded stage context; no tools or additional source reads are allowed.",
|
|
1197
1296
|
stageInstructions[workPackage.stage],
|
|
1198
1297
|
"Do not write stage output files directly. Your final response must be only the JSON object required by the supplied output schema; the CLI will validate and atomically materialize it.",
|
|
@@ -1219,31 +1318,17 @@ function repairPrompt(workPackage, raw, error) {
|
|
|
1219
1318
|
function assertPreCallTokenReservation(project, workPackage, config, request, alreadyUsedTokens, reserveRepair) {
|
|
1220
1319
|
const schemaBytes = Buffer.byteLength(JSON.stringify(request.outputSchema), "utf8");
|
|
1221
1320
|
const promptBytes = Buffer.byteLength(request.prompt, "utf8");
|
|
1222
|
-
const
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
const repairTokens = reserveRepair
|
|
1227
|
-
? (protocolOverhead +
|
|
1228
|
-
Math.ceil((schemaBytes + RESEARCH_MAX_REPAIR_SOURCE_BYTES + 2_048) /
|
|
1229
|
-
RESEARCH_ESTIMATED_BYTES_PER_TOKEN)) *
|
|
1230
|
-
RESEARCH_REPAIR_MAX_TURNS +
|
|
1231
|
-
config.budget.maxRepairTokens
|
|
1232
|
-
: 0;
|
|
1233
|
-
const reservation = {
|
|
1234
|
-
alreadyUsedTokens,
|
|
1321
|
+
const reservation = calculateAgentCallTokenReservation({
|
|
1322
|
+
route: request.route,
|
|
1323
|
+
primaryPayloadTokens: Math.ceil((schemaBytes + promptBytes) / RESEARCH_ESTIMATED_BYTES_PER_TOKEN),
|
|
1324
|
+
repairPayloadTokens: Math.ceil((schemaBytes + RESEARCH_MAX_REPAIR_SOURCE_BYTES + 2_048) / RESEARCH_ESTIMATED_BYTES_PER_TOKEN),
|
|
1235
1325
|
maxTurns: request.maxTurns,
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
callInputTokens +
|
|
1243
|
-
potentialToolContextTokens +
|
|
1244
|
-
request.maxOutputTokens +
|
|
1245
|
-
repairTokens,
|
|
1246
|
-
};
|
|
1326
|
+
maxOutputTokens: request.maxOutputTokens,
|
|
1327
|
+
maxToolContextTokens: request.maxToolContextTokens ?? 0,
|
|
1328
|
+
maxRepairTokens: config.budget.maxRepairTokens,
|
|
1329
|
+
reserveRepair,
|
|
1330
|
+
alreadyUsedTokens,
|
|
1331
|
+
});
|
|
1247
1332
|
const packageMaxTokens = config.budget.packageMaxTokens[workPackage.stage];
|
|
1248
1333
|
const projectRemainingTokens = Math.max(0, config.budget.maxTokens - project.usage.tokens);
|
|
1249
1334
|
if (reservation.totalTokens > packageMaxTokens ||
|