@tiangong-ai/cli 0.0.42 → 0.0.44

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 (57) hide show
  1. package/AGENTS.md +3 -2
  2. package/README.md +87 -24
  3. package/dist/research/orchestration.js +318 -14
  4. package/dist/research/orchestration.js.map +1 -1
  5. package/dist/research/setup-command.js +13 -1
  6. package/dist/research/setup-command.js.map +1 -1
  7. package/dist/research/workspace/acquisition.d.ts +7 -0
  8. package/dist/research/workspace/acquisition.js +37 -10
  9. package/dist/research/workspace/acquisition.js.map +1 -1
  10. package/dist/research/workspace/audit-bundle.d.ts +18 -0
  11. package/dist/research/workspace/audit-bundle.js +100 -3
  12. package/dist/research/workspace/audit-bundle.js.map +1 -1
  13. package/dist/research/workspace/content-evidence.d.ts +98 -0
  14. package/dist/research/workspace/content-evidence.js +715 -0
  15. package/dist/research/workspace/content-evidence.js.map +1 -0
  16. package/dist/research/workspace/evidence-ledger.d.ts +1 -1
  17. package/dist/research/workspace/evidence-ledger.js +2 -0
  18. package/dist/research/workspace/evidence-ledger.js.map +1 -1
  19. package/dist/research/workspace/executor.d.ts +9 -0
  20. package/dist/research/workspace/executor.js +161 -4
  21. package/dist/research/workspace/executor.js.map +1 -1
  22. package/dist/research/workspace/inference.d.ts +69 -0
  23. package/dist/research/workspace/inference.js +360 -0
  24. package/dist/research/workspace/inference.js.map +1 -0
  25. package/dist/research/workspace/native-activity.js +14 -5
  26. package/dist/research/workspace/native-activity.js.map +1 -1
  27. package/dist/research/workspace/preflight.d.ts +2 -0
  28. package/dist/research/workspace/preflight.js +6 -2
  29. package/dist/research/workspace/preflight.js.map +1 -1
  30. package/dist/research/workspace/projects.js +17 -1
  31. package/dist/research/workspace/projects.js.map +1 -1
  32. package/dist/research/workspace/publication-workflow.d.ts +26 -0
  33. package/dist/research/workspace/publication-workflow.js +314 -3
  34. package/dist/research/workspace/publication-workflow.js.map +1 -1
  35. package/dist/research/workspace/review-executor.d.ts +50 -0
  36. package/dist/research/workspace/review-executor.js +854 -0
  37. package/dist/research/workspace/review-executor.js.map +1 -0
  38. package/dist/research/workspace/runtime.js +194 -45
  39. package/dist/research/workspace/runtime.js.map +1 -1
  40. package/dist/research/workspace/schemas.js +83 -4
  41. package/dist/research/workspace/schemas.js.map +1 -1
  42. package/dist/research/workspace/scientific-review.js +57 -0
  43. package/dist/research/workspace/scientific-review.js.map +1 -1
  44. package/dist/research/workspace/setup-catalog.js +22 -2
  45. package/dist/research/workspace/setup-catalog.js.map +1 -1
  46. package/dist/research/workspace/setup-declarative.d.ts +4 -0
  47. package/dist/research/workspace/setup-declarative.js +16 -1
  48. package/dist/research/workspace/setup-declarative.js.map +1 -1
  49. package/dist/research/workspace/setup-wizard.js +46 -3
  50. package/dist/research/workspace/setup-wizard.js.map +1 -1
  51. package/dist/research/workspace/setup.d.ts +3 -1
  52. package/dist/research/workspace/setup.js +77 -19
  53. package/dist/research/workspace/setup.js.map +1 -1
  54. package/dist/research/workspace/types.d.ts +43 -1
  55. package/dist/research/workspace/workspace.js +62 -5
  56. package/dist/research/workspace/workspace.js.map +1 -1
  57. package/package.json +1 -1
@@ -0,0 +1,69 @@
1
+ import { type EvidenceAtomRecord } from "./content-evidence.js";
2
+ export interface InferenceSnapshot {
3
+ schemaVersion: 1;
4
+ kind: "tiangong-inference-snapshot";
5
+ snapshotId: string;
6
+ snapshotSha256: string;
7
+ projectId: string;
8
+ createdAt: string;
9
+ ledgerHead: string;
10
+ acquisitionSnapshot: {
11
+ snapshotId: string;
12
+ snapshotSha256: string;
13
+ };
14
+ contentSnapshot: {
15
+ snapshotId: string;
16
+ snapshotSha256: string;
17
+ } | null;
18
+ scientificReview: {
19
+ designSha256: string;
20
+ packetSha256: string;
21
+ assessmentSha256: string;
22
+ reviewSha256: string;
23
+ } | null;
24
+ policySha256: string | null;
25
+ sources: Array<{
26
+ id: string;
27
+ title: string;
28
+ sourceType: string | null;
29
+ publicationDate: string | null;
30
+ acquisitionStatus: string | null;
31
+ }>;
32
+ atoms: EvidenceAtomRecord[];
33
+ claims: Array<Record<string, unknown>>;
34
+ designEdges: Array<Record<string, unknown>>;
35
+ artifactSha256s: string[];
36
+ implementationArtifactSha256s: string[];
37
+ environmentLockSha256s: string[];
38
+ gate: {
39
+ decision: "pass";
40
+ reasons: [];
41
+ };
42
+ }
43
+ export interface ClaimEvidenceGraph {
44
+ schemaVersion: 1;
45
+ kind: "tiangong-claim-evidence-graph";
46
+ graphId: string;
47
+ graphSha256: string;
48
+ projectId: string;
49
+ createdAt: string;
50
+ inferenceSnapshotSha256: string;
51
+ analysisSha256: string;
52
+ analysisRunId: string;
53
+ nodes: Array<{
54
+ id: string;
55
+ type: "source" | "atom" | "design-claim" | "finding" | "analysis-run";
56
+ label: string;
57
+ sha256: string | null;
58
+ }>;
59
+ edges: Array<{
60
+ id: string;
61
+ type: "finding-supported-by-atom" | "atom-derived-from-source" | "finding-addresses-design-claim" | "finding-produced-by-analysis-run";
62
+ from: string;
63
+ to: string;
64
+ }>;
65
+ }
66
+ export declare function freezeInferenceSnapshot(root: string, projectId: string): Promise<InferenceSnapshot>;
67
+ export declare function loadCurrentInferenceSnapshot(root: string, projectId: string): Promise<InferenceSnapshot>;
68
+ export declare function freezeClaimEvidenceGraph(root: string, projectId: string, analysis: Record<string, unknown>): Promise<ClaimEvidenceGraph>;
69
+ export declare function loadCurrentClaimEvidenceGraph(root: string, projectId: string): Promise<ClaimEvidenceGraph>;
@@ -0,0 +1,360 @@
1
+ import { chmod, readFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { CliError } from "../../errors.js";
4
+ import { loadBoundAcquisitionDesign } from "./acquisition-routes.js";
5
+ import { loadCurrentEvidenceSnapshot } from "./acquisition.js";
6
+ import { loadCurrentEvidenceContentSnapshot } from "./content-evidence.js";
7
+ import { appendEvidenceLedgerEvent, evidenceLedgerPath } from "./evidence-ledger.js";
8
+ import { readJournal } from "./journal.js";
9
+ import { loadProject } from "./projects.js";
10
+ import { canonicalJson, ensureDirectory, isObject, pathExists, resolveContained, sha256File, sha256Text, workspacePaths, writeTextAtomic, } from "./storage.js";
11
+ const SHA256 = /^[a-f0-9]{64}$/;
12
+ export async function freezeInferenceSnapshot(root, projectId) {
13
+ const currentPath = join(workspacePaths(root).projects, projectId, "outputs", "inference-snapshot.json");
14
+ if (await pathExists(currentPath)) {
15
+ const current = await loadCurrentInferenceSnapshot(root, projectId).catch(() => null);
16
+ if (current)
17
+ return current;
18
+ }
19
+ const [project, acquisition, ledgerEvents] = await Promise.all([
20
+ loadProject(root, projectId),
21
+ loadCurrentEvidenceSnapshot(root, projectId),
22
+ readJournal(evidenceLedgerPath(root, projectId)),
23
+ ]);
24
+ if (acquisition.inferenceGate.decision !== "pass") {
25
+ throw inferenceBlocked(acquisition.inferenceGate.reasons);
26
+ }
27
+ const contentPath = join(workspacePaths(root).projects, projectId, "outputs", "content-snapshot.json");
28
+ const content = (await pathExists(contentPath))
29
+ ? await loadCurrentEvidenceContentSnapshot(root, projectId)
30
+ : null;
31
+ if (project.scientificDesign && !content) {
32
+ throw inferenceError("Top-journal inference requires a frozen typed-content snapshot.", "RESEARCH_EVIDENCE_CONTENT_SNAPSHOT_REQUIRED");
33
+ }
34
+ if (content?.gate.decision === "stop")
35
+ throw inferenceBlocked(content.gate.reasons);
36
+ let scientificReview = null;
37
+ let claims = [];
38
+ let designEdges = [];
39
+ let implementationArtifactSha256s = [];
40
+ let environmentLockSha256s = [];
41
+ if (project.scientificDesign) {
42
+ const gate = project.scientificDesign.gates["evidence-construct"];
43
+ if (gate.status !== "passed" ||
44
+ !gate.packetSha256 ||
45
+ !gate.assessmentSha256 ||
46
+ !gate.reviewSha256) {
47
+ throw inferenceError("Top-journal inference requires a passing evidence-construct review.", "RESEARCH_SCIENTIFIC_GATE_REQUIRED");
48
+ }
49
+ const design = await loadBoundAcquisitionDesign(root, project);
50
+ scientificReview = {
51
+ designSha256: project.scientificDesign.designSha256,
52
+ packetSha256: gate.packetSha256,
53
+ assessmentSha256: gate.assessmentSha256,
54
+ reviewSha256: gate.reviewSha256,
55
+ };
56
+ claims = design.claims;
57
+ designEdges = design.edges;
58
+ implementationArtifactSha256s = sortedUnique(design.identity.modelStructures.map((model) => model.implementationArtifactSha256));
59
+ environmentLockSha256s = sortedUnique(design.identity.modelStructures.map((model) => model.environmentLockSha256));
60
+ }
61
+ const core = {
62
+ schemaVersion: 1,
63
+ kind: "tiangong-inference-snapshot",
64
+ projectId,
65
+ createdAt: new Date().toISOString(),
66
+ ledgerHead: ledgerEvents.at(-1)?.hash ?? "0".repeat(64),
67
+ acquisitionSnapshot: {
68
+ snapshotId: acquisition.snapshotId,
69
+ snapshotSha256: acquisition.snapshotSha256,
70
+ },
71
+ contentSnapshot: content
72
+ ? { snapshotId: content.snapshotId, snapshotSha256: content.snapshotSha256 }
73
+ : null,
74
+ scientificReview,
75
+ policySha256: project.publicationPolicy?.resolvedPolicySha256 ?? null,
76
+ sources: acquisition.sources.map((source) => ({
77
+ id: String(source.id),
78
+ title: typeof source.title === "string" ? source.title : String(source.id),
79
+ sourceType: typeof source.sourceType === "string" ? source.sourceType : null,
80
+ publicationDate: typeof source.publicationDate === "string" ? source.publicationDate : null,
81
+ acquisitionStatus: typeof source.acquisitionStatus === "string" ? source.acquisitionStatus : null,
82
+ })),
83
+ atoms: content?.atoms ?? [],
84
+ claims,
85
+ designEdges,
86
+ artifactSha256s: sortedUnique(acquisition.artifacts.map((artifact) => artifact.sha256)),
87
+ implementationArtifactSha256s,
88
+ environmentLockSha256s,
89
+ gate: { decision: "pass", reasons: [] },
90
+ };
91
+ const snapshotId = `inference-snapshot-${sha256Text(canonicalJson(core)).slice(0, 24)}`;
92
+ const withoutHash = { ...core, snapshotId };
93
+ const snapshot = {
94
+ ...withoutHash,
95
+ snapshotSha256: sha256Text(canonicalJson(withoutHash)),
96
+ };
97
+ const projectRoot = join(workspacePaths(root).projects, projectId);
98
+ const logicalPath = `evidence/inference-snapshots/${snapshot.snapshotSha256}.json`;
99
+ await persistSnapshot(root, projectId, logicalPath, snapshot);
100
+ await writeTextAtomic(currentPath, `${JSON.stringify(snapshot, null, 2)}\n`);
101
+ await appendEvidenceLedgerEvent(root, projectId, "inference.snapshot.frozen", {
102
+ snapshotId,
103
+ snapshotSha256: snapshot.snapshotSha256,
104
+ acquisitionSnapshotSha256: snapshot.acquisitionSnapshot.snapshotSha256,
105
+ contentSnapshotSha256: snapshot.contentSnapshot?.snapshotSha256 ?? null,
106
+ scientificReview: snapshot.scientificReview,
107
+ path: logicalPath,
108
+ atomCount: snapshot.atoms.length,
109
+ claimCount: snapshot.claims.length,
110
+ });
111
+ return snapshot;
112
+ }
113
+ export async function loadCurrentInferenceSnapshot(root, projectId) {
114
+ const projectRoot = join(workspacePaths(root).projects, projectId);
115
+ const currentPath = join(projectRoot, "outputs", "inference-snapshot.json");
116
+ if (!(await pathExists(currentPath))) {
117
+ throw inferenceError("Inference snapshot has not been frozen.", "RESEARCH_INFERENCE_SNAPSHOT_REQUIRED");
118
+ }
119
+ const snapshot = parseInferenceSnapshot(JSON.parse(await readFile(currentPath, "utf8")));
120
+ const { snapshotSha256, ...withoutHash } = snapshot;
121
+ if (sha256Text(canonicalJson(withoutHash)) !== snapshotSha256) {
122
+ throw inferenceError("Inference snapshot hash binding is invalid.", "RESEARCH_INFERENCE_SNAPSHOT_INVALID");
123
+ }
124
+ const immutablePath = resolveContained(projectRoot, `evidence/inference-snapshots/${snapshotSha256}.json`);
125
+ if (!(await pathExists(immutablePath)) ||
126
+ (await sha256File(immutablePath)) !== (await sha256File(currentPath))) {
127
+ throw inferenceError("Inference snapshot is not bound to its immutable copy.", "RESEARCH_INFERENCE_SNAPSHOT_INVALID");
128
+ }
129
+ const acquisition = await loadCurrentEvidenceSnapshot(root, projectId);
130
+ if (acquisition.snapshotId !== snapshot.acquisitionSnapshot.snapshotId ||
131
+ acquisition.snapshotSha256 !== snapshot.acquisitionSnapshot.snapshotSha256) {
132
+ throw inferenceError("Inference snapshot acquisition binding is stale.", "RESEARCH_INFERENCE_SNAPSHOT_STALE");
133
+ }
134
+ if (snapshot.contentSnapshot) {
135
+ const content = await loadCurrentEvidenceContentSnapshot(root, projectId);
136
+ if (content.snapshotId !== snapshot.contentSnapshot.snapshotId ||
137
+ content.snapshotSha256 !== snapshot.contentSnapshot.snapshotSha256) {
138
+ throw inferenceError("Inference snapshot content binding is stale.", "RESEARCH_INFERENCE_SNAPSHOT_STALE");
139
+ }
140
+ }
141
+ const project = await loadProject(root, projectId);
142
+ if (snapshot.scientificReview &&
143
+ (project.scientificDesign?.designSha256 !== snapshot.scientificReview.designSha256 ||
144
+ project.scientificDesign.gates["evidence-construct"].reviewSha256 !==
145
+ snapshot.scientificReview.reviewSha256)) {
146
+ throw inferenceError("Inference snapshot scientific-review binding is stale.", "RESEARCH_INFERENCE_SNAPSHOT_STALE");
147
+ }
148
+ return snapshot;
149
+ }
150
+ export async function freezeClaimEvidenceGraph(root, projectId, analysis) {
151
+ const inference = await loadCurrentInferenceSnapshot(root, projectId);
152
+ const findings = analysis.findings;
153
+ const analysisRun = analysis.analysisRun;
154
+ const atomById = new Map(inference.atoms.map((atom) => [atom.atomId, atom]));
155
+ const sourceById = new Map(inference.sources.map((source) => [source.id, source]));
156
+ const claimById = new Map(inference.claims.flatMap((claim) => typeof claim.id === "string" ? [[claim.id, claim]] : []));
157
+ const nodes = new Map();
158
+ const edges = new Map();
159
+ const addNode = (node) => nodes.set(node.id, node);
160
+ const addEdge = (type, from, to) => {
161
+ const id = `edge-${sha256Text(`${type}:${from}:${to}`).slice(0, 24)}`;
162
+ edges.set(id, { id, type, from, to });
163
+ };
164
+ const runId = String(analysisRun.id);
165
+ addNode({ id: `analysis-run:${runId}`, type: "analysis-run", label: runId, sha256: null });
166
+ for (const finding of findings) {
167
+ const findingId = String(finding.id);
168
+ const findingNodeId = `finding:${findingId}`;
169
+ addNode({
170
+ id: findingNodeId,
171
+ type: "finding",
172
+ label: String(finding.statement),
173
+ sha256: sha256Text(canonicalJson(finding)),
174
+ });
175
+ addEdge("finding-produced-by-analysis-run", findingNodeId, `analysis-run:${runId}`);
176
+ for (const atomId of finding.evidenceAtomIds) {
177
+ const atom = atomById.get(atomId);
178
+ const atomNodeId = `atom:${atomId}`;
179
+ const sourceNodeId = `source:${atom.sourceId}`;
180
+ addNode({ id: atomNodeId, type: "atom", label: atom.statement, sha256: atom.atomSha256 });
181
+ addNode({
182
+ id: sourceNodeId,
183
+ type: "source",
184
+ label: atom.sourceId,
185
+ sha256: sourceById.has(atom.sourceId)
186
+ ? sha256Text(canonicalJson(sourceById.get(atom.sourceId)))
187
+ : null,
188
+ });
189
+ addEdge("finding-supported-by-atom", findingNodeId, atomNodeId);
190
+ addEdge("atom-derived-from-source", atomNodeId, sourceNodeId);
191
+ }
192
+ for (const claimId of finding.claimIds) {
193
+ const claim = claimById.get(claimId);
194
+ const claimNodeId = `design-claim:${claimId}`;
195
+ addNode({
196
+ id: claimNodeId,
197
+ type: "design-claim",
198
+ label: typeof claim.statement === "string" ? claim.statement : claimId,
199
+ sha256: sha256Text(canonicalJson(claim)),
200
+ });
201
+ addEdge("finding-addresses-design-claim", findingNodeId, claimNodeId);
202
+ }
203
+ }
204
+ const analysisPath = join(workspacePaths(root).projects, projectId, "outputs", "analysis.json");
205
+ const core = {
206
+ schemaVersion: 1,
207
+ kind: "tiangong-claim-evidence-graph",
208
+ projectId,
209
+ createdAt: new Date().toISOString(),
210
+ inferenceSnapshotSha256: inference.snapshotSha256,
211
+ analysisSha256: await sha256File(analysisPath),
212
+ analysisRunId: runId,
213
+ nodes: [...nodes.values()].sort((left, right) => left.id.localeCompare(right.id)),
214
+ edges: [...edges.values()].sort((left, right) => left.id.localeCompare(right.id)),
215
+ };
216
+ const graphId = `claim-graph-${sha256Text(canonicalJson(core)).slice(0, 24)}`;
217
+ const withoutHash = { ...core, graphId };
218
+ const graph = {
219
+ ...withoutHash,
220
+ graphSha256: sha256Text(canonicalJson(withoutHash)),
221
+ };
222
+ const projectRoot = join(workspacePaths(root).projects, projectId);
223
+ const logicalPath = `evidence/claim-graphs/${graph.graphSha256}.json`;
224
+ await persistSnapshot(root, projectId, logicalPath, graph);
225
+ await writeTextAtomic(join(projectRoot, "outputs", "claim-evidence-graph.json"), `${JSON.stringify(graph, null, 2)}\n`);
226
+ await appendEvidenceLedgerEvent(root, projectId, "claim-graph.frozen", {
227
+ graphId,
228
+ graphSha256: graph.graphSha256,
229
+ inferenceSnapshotSha256: graph.inferenceSnapshotSha256,
230
+ analysisSha256: graph.analysisSha256,
231
+ path: logicalPath,
232
+ nodeCount: graph.nodes.length,
233
+ edgeCount: graph.edges.length,
234
+ });
235
+ return graph;
236
+ }
237
+ export async function loadCurrentClaimEvidenceGraph(root, projectId) {
238
+ const projectRoot = join(workspacePaths(root).projects, projectId);
239
+ const currentPath = join(projectRoot, "outputs", "claim-evidence-graph.json");
240
+ if (!(await pathExists(currentPath))) {
241
+ throw inferenceError("Claim-Evidence Graph has not been frozen.", "RESEARCH_CLAIM_EVIDENCE_GRAPH_REQUIRED");
242
+ }
243
+ const graph = parseClaimEvidenceGraph(JSON.parse(await readFile(currentPath, "utf8")));
244
+ const { graphSha256, ...withoutHash } = graph;
245
+ if (sha256Text(canonicalJson(withoutHash)) !== graphSha256) {
246
+ throw inferenceError("Claim-Evidence Graph hash binding is invalid.", "RESEARCH_CLAIM_EVIDENCE_GRAPH_INVALID");
247
+ }
248
+ const immutablePath = resolveContained(projectRoot, `evidence/claim-graphs/${graphSha256}.json`);
249
+ if (!(await pathExists(immutablePath)) ||
250
+ (await sha256File(immutablePath)) !== (await sha256File(currentPath))) {
251
+ throw inferenceError("Claim-Evidence Graph is not bound to its immutable copy.", "RESEARCH_CLAIM_EVIDENCE_GRAPH_INVALID");
252
+ }
253
+ const inference = await loadCurrentInferenceSnapshot(root, projectId);
254
+ const analysisPath = join(projectRoot, "outputs", "analysis.json");
255
+ if (graph.projectId !== projectId ||
256
+ graph.inferenceSnapshotSha256 !== inference.snapshotSha256 ||
257
+ !(await pathExists(analysisPath)) ||
258
+ graph.analysisSha256 !== (await sha256File(analysisPath))) {
259
+ throw inferenceError("Claim-Evidence Graph upstream bindings are stale.", "RESEARCH_CLAIM_EVIDENCE_GRAPH_STALE");
260
+ }
261
+ return graph;
262
+ }
263
+ async function persistSnapshot(root, projectId, logicalPath, value) {
264
+ const projectRoot = join(workspacePaths(root).projects, projectId);
265
+ const destination = resolveContained(projectRoot, logicalPath);
266
+ const content = `${JSON.stringify(value, null, 2)}\n`;
267
+ if (await pathExists(destination)) {
268
+ if ((await sha256File(destination)) !== sha256Text(content)) {
269
+ throw inferenceError("Content-addressed inference object drifted.", "RESEARCH_INFERENCE_SNAPSHOT_INVALID");
270
+ }
271
+ return;
272
+ }
273
+ await ensureDirectory(dirname(destination));
274
+ await writeTextAtomic(destination, content, 0o444);
275
+ await chmod(destination, 0o444).catch(() => undefined);
276
+ }
277
+ function parseInferenceSnapshot(value) {
278
+ if (!isObject(value) ||
279
+ value.schemaVersion !== 1 ||
280
+ value.kind !== "tiangong-inference-snapshot" ||
281
+ typeof value.snapshotId !== "string" ||
282
+ typeof value.snapshotSha256 !== "string" ||
283
+ !SHA256.test(value.snapshotSha256) ||
284
+ typeof value.projectId !== "string" ||
285
+ typeof value.createdAt !== "string" ||
286
+ !Number.isFinite(Date.parse(value.createdAt)) ||
287
+ typeof value.ledgerHead !== "string" ||
288
+ !SHA256.test(value.ledgerHead) ||
289
+ !isObject(value.acquisitionSnapshot) ||
290
+ typeof value.acquisitionSnapshot.snapshotId !== "string" ||
291
+ typeof value.acquisitionSnapshot.snapshotSha256 !== "string" ||
292
+ !SHA256.test(value.acquisitionSnapshot.snapshotSha256) ||
293
+ !Array.isArray(value.sources) ||
294
+ !Array.isArray(value.atoms) ||
295
+ !Array.isArray(value.claims) ||
296
+ !Array.isArray(value.designEdges) ||
297
+ !shaArray(value.artifactSha256s) ||
298
+ !shaArray(value.implementationArtifactSha256s) ||
299
+ !shaArray(value.environmentLockSha256s) ||
300
+ !isObject(value.gate) ||
301
+ value.gate.decision !== "pass" ||
302
+ !Array.isArray(value.gate.reasons) ||
303
+ value.gate.reasons.length !== 0) {
304
+ throw inferenceError("Inference snapshot is malformed.", "RESEARCH_INFERENCE_SNAPSHOT_INVALID");
305
+ }
306
+ return value;
307
+ }
308
+ function parseClaimEvidenceGraph(value) {
309
+ if (!isObject(value) ||
310
+ value.schemaVersion !== 1 ||
311
+ value.kind !== "tiangong-claim-evidence-graph" ||
312
+ typeof value.graphId !== "string" ||
313
+ typeof value.graphSha256 !== "string" ||
314
+ !SHA256.test(value.graphSha256) ||
315
+ typeof value.projectId !== "string" ||
316
+ typeof value.createdAt !== "string" ||
317
+ !Number.isFinite(Date.parse(value.createdAt)) ||
318
+ typeof value.inferenceSnapshotSha256 !== "string" ||
319
+ !SHA256.test(value.inferenceSnapshotSha256) ||
320
+ typeof value.analysisSha256 !== "string" ||
321
+ !SHA256.test(value.analysisSha256) ||
322
+ typeof value.analysisRunId !== "string" ||
323
+ !Array.isArray(value.nodes) ||
324
+ !Array.isArray(value.edges) ||
325
+ value.nodes.some((node) => !isObject(node) ||
326
+ typeof node.id !== "string" ||
327
+ !["source", "atom", "design-claim", "finding", "analysis-run"].includes(String(node.type)) ||
328
+ typeof node.label !== "string" ||
329
+ !(node.sha256 === null || (typeof node.sha256 === "string" && SHA256.test(node.sha256)))) ||
330
+ value.edges.some((edge) => !isObject(edge) ||
331
+ typeof edge.id !== "string" ||
332
+ ![
333
+ "finding-supported-by-atom",
334
+ "atom-derived-from-source",
335
+ "finding-addresses-design-claim",
336
+ "finding-produced-by-analysis-run",
337
+ ].includes(String(edge.type)) ||
338
+ typeof edge.from !== "string" ||
339
+ typeof edge.to !== "string")) {
340
+ throw inferenceError("Claim-Evidence Graph is malformed.", "RESEARCH_CLAIM_EVIDENCE_GRAPH_INVALID");
341
+ }
342
+ return value;
343
+ }
344
+ function shaArray(value) {
345
+ return (Array.isArray(value) && value.every((item) => typeof item === "string" && SHA256.test(item)));
346
+ }
347
+ function sortedUnique(values) {
348
+ return [...new Set(values)].sort();
349
+ }
350
+ function inferenceBlocked(reasons) {
351
+ return new CliError("Formal inference is blocked by frozen evidence or content gaps.", {
352
+ code: "RESEARCH_INFERENCE_GATE_BLOCKED",
353
+ exitCode: 3,
354
+ details: { reasons },
355
+ });
356
+ }
357
+ function inferenceError(message, code) {
358
+ return new CliError(message, { code, exitCode: 3 });
359
+ }
360
+ //# sourceMappingURL=inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.js","sourceRoot":"","sources":["../../../src/research/workspace/inference.ts"],"names":[],"mappings":"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"}
@@ -125,17 +125,26 @@ export async function recordNativeResearchActivity(input) {
125
125
  }
126
126
  const stage = active.stage;
127
127
  const kind = String(value.kind);
128
- if ((stage === "discover" && ["download", "file-inspection"].includes(kind)) ||
129
- (stage === "acquire" && ["web-search", "database-search"].includes(kind))) {
128
+ if (stage === "discover" && ["download", "file-inspection"].includes(kind)) {
130
129
  throw activityError(`Native ${kind} activity is not valid during ${stage}.`);
131
130
  }
131
+ const discoveryActivity = ["web-search", "database-search"].includes(kind);
132
+ const routeClasses = discoveryActivity
133
+ ? ["native-discovery"]
134
+ : kind === "browser-navigation"
135
+ ? ["authorized-browser"]
136
+ : ["open-access-download", "authorized-browser"];
132
137
  const route = await resolveAgentAcquisitionRoute({
133
138
  root: input.root,
134
139
  project,
135
140
  routeId: value.acquisitionRouteId,
136
- routeClasses: ["native-discovery"],
137
- activityKind: value.kind,
138
- activityChannel: value.channel,
141
+ routeClasses: [...routeClasses],
142
+ ...(discoveryActivity
143
+ ? {
144
+ activityKind: value.kind,
145
+ activityChannel: value.channel,
146
+ }
147
+ : {}),
139
148
  });
140
149
  const candidateIds = value.candidateIds;
141
150
  const known = new Set((await listEvidenceCandidates(input.root, input.projectId)).map((candidate) => candidate.id));
@@ -1 +1 @@
1
- {"version":3,"file":"native-activity.js","sourceRoot":"","sources":["../../../src/research/workspace/native-activity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-activity.js","sourceRoot":"","sources":["../../../src/research/workspace/native-activity.ts"],"names":[],"mappings":"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"}
@@ -168,6 +168,8 @@ export declare function evaluateProjectPreflight(root: string, question: string,
168
168
  reviewer: {
169
169
  agent: import("./types.js").AgentKind;
170
170
  executionMode: "native-host" | "headless-cli" | undefined;
171
+ transport: import("./types.js").ReviewTransport;
172
+ isolationProvider: "platform-capsule";
171
173
  model: string | null;
172
174
  effort: import("./types.js").AgentReasoningEffort | null;
173
175
  verbosity: import("./types.js").AgentVerbosity | null;
@@ -9,6 +9,8 @@ import { evaluateRequiredResearchCompanions } from "./companion-readiness.js";
9
9
  export const RESEARCH_AGENT_PROTOCOL_OVERHEAD_TOKENS = {
10
10
  codex: 5_000,
11
11
  claude: 12_000,
12
+ workbuddy: 12_000,
13
+ codebuddy: 12_000,
12
14
  };
13
15
  export const RESEARCH_ESTIMATED_BYTES_PER_TOKEN = 3;
14
16
  export const RESEARCH_MAX_REPAIR_SOURCE_BYTES = 32_000;
@@ -109,8 +111,8 @@ export async function evaluateProjectPreflight(root, question, requirements, inp
109
111
  (!config.producer.effort || !config.reviewer.effort)) {
110
112
  gaps.push("explicit-agent-effort-missing");
111
113
  }
112
- const codexRoute = config.producer.agent === "codex" ? config.producer : config.reviewer;
113
- if (config.mode === "production-research" && !codexRoute.verbosity) {
114
+ const codexRoute = [config.producer, config.reviewer].find((route) => route.agent === "codex");
115
+ if (config.mode === "production-research" && codexRoute && !codexRoute.verbosity) {
114
116
  gaps.push("explicit-codex-verbosity-missing");
115
117
  }
116
118
  if (config.mode === "production-research" &&
@@ -333,6 +335,8 @@ export async function evaluateProjectPreflight(root, question, requirements, inp
333
335
  reviewer: {
334
336
  agent: config.reviewer.agent,
335
337
  executionMode: config.reviewer.executionMode,
338
+ transport: config.reviewerExecution.transport,
339
+ isolationProvider: config.reviewerExecution.isolationProvider,
336
340
  model: config.reviewer.model,
337
341
  effort: config.reviewer.effort ?? null,
338
342
  verbosity: config.reviewer.verbosity ?? null,