@tiangong-ai/cli 0.0.19 → 0.0.21

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.
Files changed (58) hide show
  1. package/AGENTS.md +8 -2
  2. package/README.md +209 -4
  3. package/dist/cli.js +2 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/research/commands.js +6 -0
  6. package/dist/research/commands.js.map +1 -1
  7. package/dist/research/orchestration.d.ts +3 -0
  8. package/dist/research/orchestration.js +391 -0
  9. package/dist/research/orchestration.js.map +1 -0
  10. package/dist/research/workspace/broker.d.ts +5 -0
  11. package/dist/research/workspace/broker.js +729 -0
  12. package/dist/research/workspace/broker.js.map +1 -0
  13. package/dist/research/workspace/capabilities.d.ts +10 -0
  14. package/dist/research/workspace/capabilities.js +356 -0
  15. package/dist/research/workspace/capabilities.js.map +1 -0
  16. package/dist/research/workspace/constants.d.ts +8 -0
  17. package/dist/research/workspace/constants.js +41 -0
  18. package/dist/research/workspace/constants.js.map +1 -0
  19. package/dist/research/workspace/context.d.ts +3 -0
  20. package/dist/research/workspace/context.js +77 -0
  21. package/dist/research/workspace/context.js.map +1 -0
  22. package/dist/research/workspace/evidence.d.ts +32 -0
  23. package/dist/research/workspace/evidence.js +235 -0
  24. package/dist/research/workspace/evidence.js.map +1 -0
  25. package/dist/research/workspace/executor.d.ts +22 -0
  26. package/dist/research/workspace/executor.js +926 -0
  27. package/dist/research/workspace/executor.js.map +1 -0
  28. package/dist/research/workspace/input-plan.d.ts +5 -0
  29. package/dist/research/workspace/input-plan.js +319 -0
  30. package/dist/research/workspace/input-plan.js.map +1 -0
  31. package/dist/research/workspace/journal.d.ts +7 -0
  32. package/dist/research/workspace/journal.js +105 -0
  33. package/dist/research/workspace/journal.js.map +1 -0
  34. package/dist/research/workspace/preflight.d.ts +108 -0
  35. package/dist/research/workspace/preflight.js +261 -0
  36. package/dist/research/workspace/preflight.js.map +1 -0
  37. package/dist/research/workspace/projects.d.ts +12 -0
  38. package/dist/research/workspace/projects.js +514 -0
  39. package/dist/research/workspace/projects.js.map +1 -0
  40. package/dist/research/workspace/runtime.d.ts +31 -0
  41. package/dist/research/workspace/runtime.js +1637 -0
  42. package/dist/research/workspace/runtime.js.map +1 -0
  43. package/dist/research/workspace/sanitization.d.ts +5 -0
  44. package/dist/research/workspace/sanitization.js +72 -0
  45. package/dist/research/workspace/sanitization.js.map +1 -0
  46. package/dist/research/workspace/schemas.d.ts +17 -0
  47. package/dist/research/workspace/schemas.js +342 -0
  48. package/dist/research/workspace/schemas.js.map +1 -0
  49. package/dist/research/workspace/storage.d.ts +25 -0
  50. package/dist/research/workspace/storage.js +222 -0
  51. package/dist/research/workspace/storage.js.map +1 -0
  52. package/dist/research/workspace/types.d.ts +341 -0
  53. package/dist/research/workspace/types.js +2 -0
  54. package/dist/research/workspace/types.js.map +1 -0
  55. package/dist/research/workspace/workspace.d.ts +23 -0
  56. package/dist/research/workspace/workspace.js +702 -0
  57. package/dist/research/workspace/workspace.js.map +1 -0
  58. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/research/workspace/executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ProjectInput, ProjectInputPlanEntry, VerifiedProjectInputPlan } from "./types.js";
2
+ export declare function readAndVerifyProjectInputPlan(inputPlanPath: string): Promise<VerifiedProjectInputPlan>;
3
+ export declare function reverifyProjectInputPlan(plan: VerifiedProjectInputPlan): Promise<VerifiedProjectInputPlan>;
4
+ export declare function projectInputsFromPlan(plan: VerifiedProjectInputPlan, addedAt: string): ProjectInput[];
5
+ export declare function renderInputLineContext(path: string, ranges: NonNullable<ProjectInputPlanEntry["contextRanges"]>): Promise<string>;
@@ -0,0 +1,319 @@
1
+ import { lstat, readFile } from "node:fs/promises";
2
+ import { isAbsolute, resolve, sep } from "node:path";
3
+ import { CliError } from "../../errors.js";
4
+ import { RESEARCH_CONTROL_DIRECTORY } from "./constants.js";
5
+ import { canonicalJson, fileSize, sha256File, sha256Text } from "./storage.js";
6
+ const REQUIREMENT_ID_PATTERN = /^[a-z0-9][a-z0-9._:-]{0,127}$/;
7
+ export async function readAndVerifyProjectInputPlan(inputPlanPath) {
8
+ if (!isAbsolute(inputPlanPath) || resolve(inputPlanPath) !== inputPlanPath) {
9
+ throw new CliError("--input-plan must be an absolute JSON file path.", {
10
+ code: "RESEARCH_INPUT_PLAN_INVALID",
11
+ exitCode: 2,
12
+ });
13
+ }
14
+ const info = await lstat(inputPlanPath).catch(() => undefined);
15
+ if (!info?.isFile() || info.isSymbolicLink()) {
16
+ throw new CliError("Research input plan must be a regular JSON file.", {
17
+ code: "RESEARCH_INPUT_PLAN_INVALID",
18
+ exitCode: 2,
19
+ });
20
+ }
21
+ let parsed;
22
+ try {
23
+ parsed = JSON.parse(await readFile(inputPlanPath, "utf8"));
24
+ }
25
+ catch {
26
+ throw new CliError("Research input plan is missing or invalid JSON.", {
27
+ code: "RESEARCH_INPUT_PLAN_INVALID",
28
+ exitCode: 2,
29
+ });
30
+ }
31
+ if (!isProjectInputPlan(parsed)) {
32
+ throw new CliError("Research input plan has an unsupported shape.", {
33
+ code: "RESEARCH_INPUT_PLAN_INVALID",
34
+ exitCode: 2,
35
+ });
36
+ }
37
+ const normalized = {
38
+ schemaVersion: 1,
39
+ inputs: parsed.inputs.map(normalizeInputPlanEntry).sort(compareInputPlanEntries),
40
+ };
41
+ const inputs = [];
42
+ const hashes = new Set();
43
+ const contextHashes = new Set();
44
+ for (const entry of normalized.inputs) {
45
+ const verified = await verifyInputPlanEntry(entry);
46
+ if (hashes.has(verified.sha256)) {
47
+ throw new CliError("Research input plan cannot count the same content more than once.", {
48
+ code: "RESEARCH_INPUT_PLAN_DUPLICATE",
49
+ exitCode: 2,
50
+ details: { sha256: verified.sha256 },
51
+ });
52
+ }
53
+ hashes.add(verified.sha256);
54
+ if (verified.contextSha256 && contextHashes.has(verified.contextSha256)) {
55
+ throw new CliError("Research input plan cannot reuse the same bounded context.", {
56
+ code: "RESEARCH_INPUT_PLAN_DUPLICATE",
57
+ exitCode: 2,
58
+ details: { sha256: verified.contextSha256 },
59
+ });
60
+ }
61
+ if (verified.contextSha256)
62
+ contextHashes.add(verified.contextSha256);
63
+ inputs.push(verified);
64
+ }
65
+ inputs.sort((left, right) => left.id.localeCompare(right.id));
66
+ return {
67
+ schemaVersion: 1,
68
+ sha256: sha256Text(canonicalJson(normalized)),
69
+ inputs,
70
+ };
71
+ }
72
+ export async function reverifyProjectInputPlan(plan) {
73
+ const normalized = {
74
+ schemaVersion: 1,
75
+ inputs: plan.inputs
76
+ .map((entry) => normalizeInputPlanEntry({
77
+ path: entry.path,
78
+ contextPath: entry.contextPath ?? null,
79
+ contextRanges: entry.contextRanges ?? null,
80
+ role: entry.role,
81
+ dimensions: entry.dimensions,
82
+ sourceType: entry.sourceType,
83
+ fullText: entry.fullText,
84
+ publicationDate: entry.publicationDate,
85
+ }))
86
+ .sort(compareInputPlanEntries),
87
+ };
88
+ const planSha256 = sha256Text(canonicalJson(normalized));
89
+ if (planSha256 !== plan.sha256) {
90
+ throw new CliError("Research input plan metadata changed before project admission.", {
91
+ code: "RESEARCH_INPUT_PLAN_CHANGED",
92
+ exitCode: 3,
93
+ });
94
+ }
95
+ const inputs = [];
96
+ const hashes = new Set();
97
+ const contextHashes = new Set();
98
+ for (const entry of normalized.inputs) {
99
+ const verified = await verifyInputPlanEntry(entry);
100
+ const expected = plan.inputs.find((candidate) => candidate.id === verified.id);
101
+ if (!expected ||
102
+ expected.sha256 !== verified.sha256 ||
103
+ expected.bytes !== verified.bytes ||
104
+ expected.contextSha256 !== verified.contextSha256 ||
105
+ expected.contextBytes !== verified.contextBytes ||
106
+ (verified.contextSha256 !== null && contextHashes.has(verified.contextSha256)) ||
107
+ hashes.has(verified.sha256)) {
108
+ throw new CliError("Research input plan content changed before project admission.", {
109
+ code: "RESEARCH_INPUT_PLAN_CHANGED",
110
+ exitCode: 3,
111
+ });
112
+ }
113
+ hashes.add(verified.sha256);
114
+ if (verified.contextSha256)
115
+ contextHashes.add(verified.contextSha256);
116
+ inputs.push(verified);
117
+ }
118
+ inputs.sort((left, right) => left.id.localeCompare(right.id));
119
+ return { schemaVersion: 1, sha256: planSha256, inputs };
120
+ }
121
+ export function projectInputsFromPlan(plan, addedAt) {
122
+ return plan.inputs.map((entry) => ({
123
+ id: entry.id,
124
+ role: entry.role,
125
+ path: entry.path,
126
+ sha256: entry.sha256,
127
+ bytes: entry.bytes,
128
+ ...((entry.contextPath || entry.contextRanges?.length) &&
129
+ entry.contextSha256 &&
130
+ entry.contextBytes !== null
131
+ ? {
132
+ ...(entry.contextPath ? { contextPath: entry.contextPath } : {}),
133
+ contextSha256: entry.contextSha256,
134
+ contextBytes: entry.contextBytes,
135
+ }
136
+ : {}),
137
+ ...(entry.contextRanges && entry.contextRanges.length
138
+ ? { contextRanges: entry.contextRanges.map((range) => ({ ...range })) }
139
+ : {}),
140
+ addedAt,
141
+ }));
142
+ }
143
+ function isProjectInputPlan(value) {
144
+ if (!value || typeof value !== "object" || Array.isArray(value))
145
+ return false;
146
+ const candidate = value;
147
+ return (candidate.schemaVersion === 1 &&
148
+ Array.isArray(candidate.inputs) &&
149
+ candidate.inputs.length > 0 &&
150
+ candidate.inputs.every(isProjectInputPlanEntry));
151
+ }
152
+ function isProjectInputPlanEntry(value) {
153
+ if (!value || typeof value !== "object" || Array.isArray(value))
154
+ return false;
155
+ const candidate = value;
156
+ return (typeof candidate.path === "string" &&
157
+ (candidate.contextPath === undefined ||
158
+ candidate.contextPath === null ||
159
+ typeof candidate.contextPath === "string") &&
160
+ (candidate.contextRanges === undefined ||
161
+ candidate.contextRanges === null ||
162
+ (Array.isArray(candidate.contextRanges) &&
163
+ candidate.contextRanges.length > 0 &&
164
+ candidate.contextRanges.length <= 128 &&
165
+ candidate.contextRanges.every(isInputLineRange))) &&
166
+ (candidate.role === "primary" ||
167
+ candidate.role === "reference" ||
168
+ candidate.role === "replication") &&
169
+ Array.isArray(candidate.dimensions) &&
170
+ candidate.dimensions.length > 0 &&
171
+ candidate.dimensions.every((item) => typeof item === "string") &&
172
+ typeof candidate.sourceType === "string" &&
173
+ typeof candidate.fullText === "boolean" &&
174
+ (candidate.publicationDate === null || typeof candidate.publicationDate === "string"));
175
+ }
176
+ function normalizeInputPlanEntry(entry) {
177
+ const dimensions = [...new Set(entry.dimensions.map(normalizeRequirementId))].sort();
178
+ const sourceType = normalizeRequirementId(entry.sourceType);
179
+ if (dimensions.length === 0 ||
180
+ dimensions.some((item) => !REQUIREMENT_ID_PATTERN.test(item)) ||
181
+ !REQUIREMENT_ID_PATTERN.test(sourceType) ||
182
+ !validDate(entry.publicationDate)) {
183
+ throw new CliError("Research input plan contains invalid coverage metadata.", {
184
+ code: "RESEARCH_INPUT_PLAN_INVALID",
185
+ exitCode: 2,
186
+ });
187
+ }
188
+ const contextRanges = entry.contextRanges
189
+ ? [...entry.contextRanges]
190
+ .map((range) => ({ ...range }))
191
+ .sort((left, right) => left.startLine - right.startLine || left.endLine - right.endLine)
192
+ : null;
193
+ if (entry.contextPath && contextRanges) {
194
+ throw new CliError("Use either contextPath or contextRanges for a research input, not both.", {
195
+ code: "RESEARCH_INPUT_PLAN_INVALID",
196
+ exitCode: 2,
197
+ });
198
+ }
199
+ if (contextRanges?.some((range, index) => index > 0 && range.startLine <= contextRanges[index - 1].endLine)) {
200
+ throw new CliError("Research input context line ranges must not overlap.", {
201
+ code: "RESEARCH_INPUT_PLAN_INVALID",
202
+ exitCode: 2,
203
+ });
204
+ }
205
+ return {
206
+ ...entry,
207
+ contextPath: entry.contextPath ?? null,
208
+ contextRanges,
209
+ dimensions,
210
+ sourceType,
211
+ };
212
+ }
213
+ async function verifyInputPlanEntry(entry) {
214
+ const source = await verifyRegularInputFile(entry.path);
215
+ const context = entry.contextPath
216
+ ? await verifyRegularInputFile(entry.contextPath)
217
+ : entry.contextRanges
218
+ ? await verifiedLineContext(entry.path, entry.contextRanges)
219
+ : null;
220
+ const stableSource = await verifyRegularInputFile(entry.path);
221
+ if (stableSource.sha256 !== source.sha256 || stableSource.bytes !== source.bytes) {
222
+ throw new CliError("A research input changed while its context was being verified.", {
223
+ code: "RESEARCH_INPUT_PLAN_CHANGED",
224
+ exitCode: 3,
225
+ });
226
+ }
227
+ if (context &&
228
+ (entry.contextPath === entry.path ||
229
+ context.sha256 === source.sha256 ||
230
+ context.bytes >= source.bytes)) {
231
+ throw new CliError("A bounded input context must be distinct from and smaller than its full evidence file.", { code: "RESEARCH_INPUT_PLAN_INVALID", exitCode: 2 });
232
+ }
233
+ return {
234
+ ...entry,
235
+ id: `input-${source.sha256.slice(0, 16)}`,
236
+ sha256: source.sha256,
237
+ bytes: source.bytes,
238
+ contextSha256: context?.sha256 ?? null,
239
+ contextBytes: context?.bytes ?? null,
240
+ };
241
+ }
242
+ export async function renderInputLineContext(path, ranges) {
243
+ const lines = (await readFile(path, "utf8")).replaceAll("\r\n", "\n").split("\n");
244
+ const selected = [];
245
+ for (const range of ranges) {
246
+ if (range.endLine > lines.length) {
247
+ throw new CliError("A research input context line range exceeds the source file.", {
248
+ code: "RESEARCH_INPUT_PLAN_INVALID",
249
+ exitCode: 2,
250
+ });
251
+ }
252
+ selected.push(...lines.slice(range.startLine - 1, range.endLine));
253
+ }
254
+ return `${selected.join("\n")}\n`;
255
+ }
256
+ async function verifiedLineContext(path, ranges) {
257
+ const content = await renderInputLineContext(path, ranges);
258
+ return { sha256: sha256Text(content), bytes: Buffer.byteLength(content, "utf8") };
259
+ }
260
+ async function verifyRegularInputFile(path) {
261
+ if (!isAbsolute(path) || resolve(path) !== path) {
262
+ throw new CliError("Every research input plan path must be absolute.", {
263
+ code: "RESEARCH_INPUT_PLAN_INVALID",
264
+ exitCode: 2,
265
+ });
266
+ }
267
+ if (path.split(sep).includes(RESEARCH_CONTROL_DIRECTORY)) {
268
+ throw new CliError("Research input plans cannot reference a research control directory.", {
269
+ code: "RESEARCH_INPUT_PLAN_INVALID",
270
+ exitCode: 2,
271
+ });
272
+ }
273
+ const before = await lstat(path).catch(() => undefined);
274
+ if (!before?.isFile() || before.isSymbolicLink()) {
275
+ throw new CliError("Every research input plan path must be a regular file.", {
276
+ code: "RESEARCH_INPUT_PLAN_INVALID",
277
+ exitCode: 2,
278
+ });
279
+ }
280
+ const sha256 = await sha256File(path);
281
+ const after = await lstat(path).catch(() => undefined);
282
+ if (!after?.isFile() ||
283
+ after.isSymbolicLink() ||
284
+ before.size !== after.size ||
285
+ before.mtimeMs !== after.mtimeMs) {
286
+ throw new CliError("A research input changed while its plan was being verified.", {
287
+ code: "RESEARCH_INPUT_PLAN_CHANGED",
288
+ exitCode: 3,
289
+ });
290
+ }
291
+ return { sha256, bytes: await fileSize(path) };
292
+ }
293
+ function normalizeRequirementId(value) {
294
+ return value
295
+ .trim()
296
+ .toLowerCase()
297
+ .replace(/[^a-z0-9._:-]+/g, "-");
298
+ }
299
+ function isInputLineRange(value) {
300
+ if (!value || typeof value !== "object" || Array.isArray(value))
301
+ return false;
302
+ const range = value;
303
+ return (Number.isInteger(range.startLine) &&
304
+ Number(range.startLine) >= 1 &&
305
+ Number.isInteger(range.endLine) &&
306
+ Number(range.endLine) >= Number(range.startLine));
307
+ }
308
+ function compareInputPlanEntries(left, right) {
309
+ return left.path.localeCompare(right.path);
310
+ }
311
+ function validDate(value) {
312
+ if (value === null)
313
+ return true;
314
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(value))
315
+ return false;
316
+ const timestamp = Date.parse(`${value}T00:00:00.000Z`);
317
+ return Number.isFinite(timestamp) && new Date(timestamp).toISOString().slice(0, 10) === value;
318
+ }
319
+ //# sourceMappingURL=input-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-plan.js","sourceRoot":"","sources":["../../../src/research/workspace/input-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { JournalEvent } from "./types.js";
2
+ export declare function appendJournalEvent(journalPath: string, type: string, scope: string, payload: Record<string, unknown>): Promise<JournalEvent>;
3
+ export declare function readJournal(journalPath: string): Promise<JournalEvent[]>;
4
+ export declare function verifyJournal(journalPath: string): Promise<{
5
+ events: number;
6
+ head: string;
7
+ }>;
@@ -0,0 +1,105 @@
1
+ import { appendFile, readFile } from "node:fs/promises";
2
+ import { CliError } from "../../errors.js";
3
+ import { sanitizeResearchRecord } from "./sanitization.js";
4
+ import { canonicalJson, pathExists, sha256Text } from "./storage.js";
5
+ const GENESIS_HASH = "0".repeat(64);
6
+ const journalQueues = new Map();
7
+ export async function appendJournalEvent(journalPath, type, scope, payload) {
8
+ const previousWrite = journalQueues.get(journalPath) ?? Promise.resolve();
9
+ let releaseWrite = () => undefined;
10
+ const currentWrite = new Promise((resolvePromise) => {
11
+ releaseWrite = resolvePromise;
12
+ });
13
+ const queuedWrite = previousWrite.catch(() => undefined).then(() => currentWrite);
14
+ journalQueues.set(journalPath, queuedWrite);
15
+ await previousWrite.catch(() => undefined);
16
+ try {
17
+ return await appendJournalEventNow(journalPath, type, scope, payload);
18
+ }
19
+ finally {
20
+ releaseWrite();
21
+ if (journalQueues.get(journalPath) === queuedWrite)
22
+ journalQueues.delete(journalPath);
23
+ }
24
+ }
25
+ async function appendJournalEventNow(journalPath, type, scope, payload) {
26
+ const events = await readJournal(journalPath);
27
+ verifyJournalEvents(events);
28
+ const previous = events.at(-1);
29
+ const unsigned = {
30
+ schemaVersion: 1,
31
+ sequence: events.length + 1,
32
+ timestamp: new Date().toISOString(),
33
+ type,
34
+ scope,
35
+ payload: sanitizeResearchRecord(payload),
36
+ previousHash: previous?.hash ?? GENESIS_HASH,
37
+ };
38
+ const event = { ...unsigned, hash: sha256Text(canonicalJson(unsigned)) };
39
+ await appendFile(journalPath, `${JSON.stringify(event)}\n`, { encoding: "utf8", mode: 0o600 });
40
+ return event;
41
+ }
42
+ export async function readJournal(journalPath) {
43
+ if (!(await pathExists(journalPath)))
44
+ return [];
45
+ const content = await readFile(journalPath, "utf8");
46
+ if (!content.trim())
47
+ return [];
48
+ return content
49
+ .split(/\r?\n/)
50
+ .filter((line) => line.trim())
51
+ .map((line, index) => {
52
+ try {
53
+ return JSON.parse(line);
54
+ }
55
+ catch (error) {
56
+ throw new CliError(`Research journal line ${index + 1} is invalid JSON.`, {
57
+ code: "RESEARCH_JOURNAL_INVALID",
58
+ exitCode: 2,
59
+ details: { error: String(error) },
60
+ });
61
+ }
62
+ });
63
+ }
64
+ export async function verifyJournal(journalPath) {
65
+ const events = await readJournal(journalPath);
66
+ verifyJournalEvents(events);
67
+ return { events: events.length, head: events.at(-1)?.hash ?? GENESIS_HASH };
68
+ }
69
+ function verifyJournalEvents(events) {
70
+ let previousHash = GENESIS_HASH;
71
+ for (const [index, event] of events.entries()) {
72
+ if (event.schemaVersion !== 1 ||
73
+ event.sequence !== index + 1 ||
74
+ event.previousHash !== previousHash ||
75
+ typeof event.timestamp !== "string" ||
76
+ typeof event.type !== "string" ||
77
+ typeof event.scope !== "string" ||
78
+ !event.payload ||
79
+ typeof event.payload !== "object" ||
80
+ Array.isArray(event.payload)) {
81
+ throw new CliError(`Research journal event ${index + 1} is malformed.`, {
82
+ code: "RESEARCH_JOURNAL_INVALID",
83
+ exitCode: 2,
84
+ });
85
+ }
86
+ const unsigned = {
87
+ schemaVersion: event.schemaVersion,
88
+ sequence: event.sequence,
89
+ timestamp: event.timestamp,
90
+ type: event.type,
91
+ scope: event.scope,
92
+ payload: event.payload,
93
+ previousHash: event.previousHash,
94
+ };
95
+ const expected = sha256Text(canonicalJson(unsigned));
96
+ if (event.hash !== expected) {
97
+ throw new CliError(`Research journal event ${event.sequence} failed its hash check.`, {
98
+ code: "RESEARCH_JOURNAL_TAMPERED",
99
+ exitCode: 2,
100
+ });
101
+ }
102
+ previousHash = event.hash;
103
+ }
104
+ }
105
+ //# sourceMappingURL=journal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journal.js","sourceRoot":"","sources":["../../../src/research/workspace/journal.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import type { AgentRoute, ProjectEvidenceRequirements, VerifiedProjectInputPlan, WorkspaceConfig } from "./types.js";
2
+ export declare const RESEARCH_AGENT_PROTOCOL_OVERHEAD_TOKENS: Record<AgentRoute["agent"], number>;
3
+ export declare const RESEARCH_ESTIMATED_BYTES_PER_TOKEN = 3;
4
+ export declare const RESEARCH_MAX_REPAIR_SOURCE_BYTES = 32000;
5
+ export declare const RESEARCH_STRUCTURED_OUTPUT_MAX_TURNS = 2;
6
+ export declare const RESEARCH_BROKER_MAX_TURNS = 6;
7
+ export declare const RESEARCH_REPAIR_MAX_TURNS = 1;
8
+ export declare function evaluateProjectPreflight(root: string, question: string, requirements: ProjectEvidenceRequirements | null, inputPlan: VerifiedProjectInputPlan | null): Promise<{
9
+ preflightSha256: string;
10
+ schemaVersion: 1;
11
+ mode: import("./types.js").ResearchMode;
12
+ questionSha256: string;
13
+ evidenceRequirements: ProjectEvidenceRequirements | null;
14
+ capabilities: {
15
+ id: string;
16
+ allowedHosts: string[];
17
+ accept: string | null;
18
+ maxResponseBytes: number | null;
19
+ maxItems: number | null;
20
+ coverage: {
21
+ dimensions: string[];
22
+ sourceTypes: string[];
23
+ fullText: boolean;
24
+ publicationDates: boolean;
25
+ } | null;
26
+ }[];
27
+ inputPlan: {
28
+ sha256: string;
29
+ inputs: {
30
+ id: string;
31
+ role: "primary" | "reference" | "replication";
32
+ sha256: string;
33
+ bytes: number;
34
+ contextSha256: string | null;
35
+ contextBytes: number | null;
36
+ contextRanges: import("./types.js").ProjectInputLineRange[] | null;
37
+ dimensions: string[];
38
+ sourceType: string;
39
+ fullText: boolean;
40
+ publicationDate: string | null;
41
+ }[];
42
+ } | null;
43
+ capabilityVerification: {
44
+ status: "verified" | "drifted";
45
+ checked: number;
46
+ errors: string[];
47
+ };
48
+ doctorAttestation: {
49
+ status: "invalid" | "verified" | "drifted" | "missing" | "expired";
50
+ errors: string[];
51
+ attestationSha256: string | null;
52
+ checkedAt: string | null;
53
+ expiresAt: string | null;
54
+ } | null;
55
+ gaps: string[];
56
+ budget: {
57
+ tokenReservation: number;
58
+ wallReservation: number;
59
+ maxTokens: number;
60
+ maxCostUsd: number;
61
+ maxWallSeconds: number;
62
+ confirmationCostUsd: number;
63
+ confirmationRequired: boolean;
64
+ estimatedMaxCostUsd: number | null;
65
+ maxBrokerContextTokens: number;
66
+ estimatedInputContextTokens: number;
67
+ maxInputContextTokens: number;
68
+ embeddedStageContextReservation: number;
69
+ recommendedDiscoverOutputTokens: number | null;
70
+ outputTokenLimitEnforcement: {
71
+ producer: string;
72
+ reviewer: string;
73
+ };
74
+ preCallTokenReservations: {
75
+ discover: number;
76
+ analyze: number;
77
+ synthesize: number;
78
+ review: number;
79
+ };
80
+ maxTurns: {
81
+ discover: number;
82
+ analyze: number;
83
+ synthesize: number;
84
+ review: number;
85
+ repair: number;
86
+ };
87
+ };
88
+ executionPolicy: {
89
+ producer: {
90
+ agent: import("./types.js").AgentKind;
91
+ model: string | null;
92
+ effort: import("./types.js").AgentReasoningEffort | null;
93
+ verbosity: import("./types.js").AgentVerbosity | null;
94
+ wrapperTargetPinned: boolean;
95
+ turnLimitEnforcement: string;
96
+ };
97
+ reviewer: {
98
+ agent: import("./types.js").AgentKind;
99
+ model: string | null;
100
+ effort: import("./types.js").AgentReasoningEffort | null;
101
+ verbosity: import("./types.js").AgentVerbosity | null;
102
+ wrapperTargetPinned: boolean;
103
+ turnLimitEnforcement: string;
104
+ };
105
+ };
106
+ readyToInitialize: boolean;
107
+ }>;
108
+ export declare function reservedAgentPackageCost(route: AgentRoute, tokens: number, config: Pick<WorkspaceConfig, "budget">): number;