@tiangong-ai/cli 0.0.60 → 0.0.62
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 +17 -6
- package/README.md +577 -55
- package/dist/data/builtins.js +33 -5
- package/dist/data/builtins.js.map +1 -1
- package/dist/data/catalog.js +46 -0
- package/dist/data/catalog.js.map +1 -1
- package/dist/data/commands.js +15 -1
- package/dist/data/commands.js.map +1 -1
- package/dist/data/connectors/airnow-hourly-observations.js +60 -10
- package/dist/data/connectors/airnow-hourly-observations.js.map +1 -1
- package/dist/data/connectors/epa-eis-records.js +16 -2
- package/dist/data/connectors/epa-eis-records.js.map +1 -1
- package/dist/data/connectors/gdelt-doc-search.js +54 -18
- package/dist/data/connectors/gdelt-doc-search.js.map +1 -1
- package/dist/data/connectors/gdelt-file-feeds.js +20 -11
- package/dist/data/connectors/gdelt-file-feeds.js.map +1 -1
- package/dist/data/connectors/gdelt-web-ngrams.d.ts +2 -0
- package/dist/data/connectors/gdelt-web-ngrams.js +350 -0
- package/dist/data/connectors/gdelt-web-ngrams.js.map +1 -0
- package/dist/data/connectors/gdelt-web-ngrams.schemas.d.ts +188 -0
- package/dist/data/connectors/gdelt-web-ngrams.schemas.js +138 -0
- package/dist/data/connectors/gdelt-web-ngrams.schemas.js.map +1 -0
- package/dist/data/connectors/nasa-firms-fire.js +4 -0
- package/dist/data/connectors/nasa-firms-fire.js.map +1 -1
- package/dist/data/connectors/open-meteo-air-quality.js +27 -22
- package/dist/data/connectors/open-meteo-air-quality.js.map +1 -1
- package/dist/data/connectors/open-meteo-air-quality.schemas.d.ts +4 -1
- package/dist/data/connectors/open-meteo-air-quality.schemas.js +21 -1
- package/dist/data/connectors/open-meteo-air-quality.schemas.js.map +1 -1
- package/dist/data/connectors/open-meteo-flood.js +28 -23
- package/dist/data/connectors/open-meteo-flood.js.map +1 -1
- package/dist/data/connectors/open-meteo-flood.schemas.d.ts +4 -1
- package/dist/data/connectors/open-meteo-flood.schemas.js +21 -1
- package/dist/data/connectors/open-meteo-flood.schemas.js.map +1 -1
- package/dist/data/connectors/open-meteo-historical-weather.js +26 -21
- package/dist/data/connectors/open-meteo-historical-weather.js.map +1 -1
- package/dist/data/connectors/open-meteo-historical-weather.schemas.d.ts +4 -1
- package/dist/data/connectors/open-meteo-historical-weather.schemas.js +21 -1
- package/dist/data/connectors/open-meteo-historical-weather.schemas.js.map +1 -1
- package/dist/data/connectors/openaq-air-quality.js +50 -12
- package/dist/data/connectors/openaq-air-quality.js.map +1 -1
- package/dist/data/connectors/openaq-air-quality.schemas.d.ts +0 -4
- package/dist/data/connectors/openaq-air-quality.schemas.js +2 -2
- package/dist/data/connectors/openaq-air-quality.schemas.js.map +1 -1
- package/dist/data/connectors/youtube-public-content.js +76 -6
- package/dist/data/connectors/youtube-public-content.js.map +1 -1
- package/dist/data/connectors/youtube-public-content.schemas.d.ts +63 -3
- package/dist/data/connectors/youtube-public-content.schemas.js +56 -2
- package/dist/data/connectors/youtube-public-content.schemas.js.map +1 -1
- package/dist/data/contracts.d.ts +22 -1
- package/dist/data/runtime/bounded-http.d.ts +2 -0
- package/dist/data/runtime/bounded-http.js +221 -59
- package/dist/data/runtime/bounded-http.js.map +1 -1
- package/dist/data/runtime/execute.d.ts +2 -0
- package/dist/data/runtime/execute.js +82 -60
- package/dist/data/runtime/execute.js.map +1 -1
- package/dist/data/runtime/http-timing.d.ts +15 -0
- package/dist/data/runtime/http-timing.js +59 -0
- package/dist/data/runtime/http-timing.js.map +1 -0
- package/dist/data/runtime/http-transport.d.ts +1 -0
- package/dist/data/runtime/http-transport.js +27 -0
- package/dist/data/runtime/http-transport.js.map +1 -0
- package/dist/data/schemas/catalog.v1.json +46 -0
- package/dist/data/schemas/discovery.v1.json +12 -0
- package/dist/data/schemas/error.v1.json +1 -0
- package/dist/data/schemas/manifest.v1.json +19 -1
- package/dist/research/orchestration.js +341 -28
- package/dist/research/orchestration.js.map +1 -1
- package/dist/research/setup-command.js +37 -6
- package/dist/research/setup-command.js.map +1 -1
- package/dist/research/workspace/acquisition-routes.d.ts +1 -1
- package/dist/research/workspace/acquisition-routes.js +2 -11
- package/dist/research/workspace/acquisition-routes.js.map +1 -1
- package/dist/research/workspace/artifact-read-audit.d.ts +16 -0
- package/dist/research/workspace/artifact-read-audit.js +176 -0
- package/dist/research/workspace/artifact-read-audit.js.map +1 -0
- package/dist/research/workspace/artifact-trace.d.ts +12 -0
- package/dist/research/workspace/artifact-trace.js +109 -0
- package/dist/research/workspace/artifact-trace.js.map +1 -0
- package/dist/research/workspace/artifact-view-mcp.d.ts +75 -0
- package/dist/research/workspace/artifact-view-mcp.js +214 -0
- package/dist/research/workspace/artifact-view-mcp.js.map +1 -0
- package/dist/research/workspace/artifact-views.d.ts +100 -0
- package/dist/research/workspace/artifact-views.js +395 -0
- package/dist/research/workspace/artifact-views.js.map +1 -0
- package/dist/research/workspace/audit-bundle.d.ts +4 -0
- package/dist/research/workspace/audit-bundle.js +130 -11
- package/dist/research/workspace/audit-bundle.js.map +1 -1
- package/dist/research/workspace/broker.js +25 -4
- package/dist/research/workspace/broker.js.map +1 -1
- package/dist/research/workspace/constants.d.ts +1 -0
- package/dist/research/workspace/constants.js +1 -0
- package/dist/research/workspace/constants.js.map +1 -1
- package/dist/research/workspace/content-evidence.d.ts +1 -0
- package/dist/research/workspace/content-evidence.js +1 -1
- package/dist/research/workspace/content-evidence.js.map +1 -1
- package/dist/research/workspace/credentials.js +2 -1
- package/dist/research/workspace/credentials.js.map +1 -1
- package/dist/research/workspace/data-evidence-adapter.d.ts +71 -0
- package/dist/research/workspace/data-evidence-adapter.js +269 -59
- package/dist/research/workspace/data-evidence-adapter.js.map +1 -1
- package/dist/research/workspace/data-evidence-view.d.ts +58 -0
- package/dist/research/workspace/data-evidence-view.js +411 -0
- package/dist/research/workspace/data-evidence-view.js.map +1 -0
- package/dist/research/workspace/evidence-ledger.js +32 -29
- package/dist/research/workspace/evidence-ledger.js.map +1 -1
- package/dist/research/workspace/evidence.d.ts +28 -0
- package/dist/research/workspace/evidence.js +48 -0
- package/dist/research/workspace/evidence.js.map +1 -1
- package/dist/research/workspace/executor.d.ts +32 -2
- package/dist/research/workspace/executor.js +286 -42
- package/dist/research/workspace/executor.js.map +1 -1
- package/dist/research/workspace/investigation-attempt.d.ts +159 -0
- package/dist/research/workspace/investigation-attempt.js +619 -0
- package/dist/research/workspace/investigation-attempt.js.map +1 -0
- package/dist/research/workspace/investigation-audit.d.ts +20 -0
- package/dist/research/workspace/investigation-audit.js +306 -0
- package/dist/research/workspace/investigation-audit.js.map +1 -0
- package/dist/research/workspace/investigation-candidate.d.ts +84 -0
- package/dist/research/workspace/investigation-candidate.js +156 -0
- package/dist/research/workspace/investigation-candidate.js.map +1 -0
- package/dist/research/workspace/investigation-certification.d.ts +39 -0
- package/dist/research/workspace/investigation-certification.js +152 -0
- package/dist/research/workspace/investigation-certification.js.map +1 -0
- package/dist/research/workspace/investigation-close.d.ts +47 -0
- package/dist/research/workspace/investigation-close.js +153 -0
- package/dist/research/workspace/investigation-close.js.map +1 -0
- package/dist/research/workspace/investigation-lineage.d.ts +8 -0
- package/dist/research/workspace/investigation-lineage.js +10 -0
- package/dist/research/workspace/investigation-lineage.js.map +1 -0
- package/dist/research/workspace/investigation-observer.d.ts +22 -0
- package/dist/research/workspace/investigation-observer.js +122 -0
- package/dist/research/workspace/investigation-observer.js.map +1 -0
- package/dist/research/workspace/investigation-promotion.d.ts +129 -0
- package/dist/research/workspace/investigation-promotion.js +316 -0
- package/dist/research/workspace/investigation-promotion.js.map +1 -0
- package/dist/research/workspace/investigation-requirements.d.ts +5 -0
- package/dist/research/workspace/investigation-requirements.js +32 -0
- package/dist/research/workspace/investigation-requirements.js.map +1 -0
- package/dist/research/workspace/investigation-resources.d.ts +12 -0
- package/dist/research/workspace/investigation-resources.js +78 -0
- package/dist/research/workspace/investigation-resources.js.map +1 -0
- package/dist/research/workspace/investigation-source-export.d.ts +6 -0
- package/dist/research/workspace/investigation-source-export.js +68 -0
- package/dist/research/workspace/investigation-source-export.js.map +1 -0
- package/dist/research/workspace/investigation-store.d.ts +9 -0
- package/dist/research/workspace/investigation-store.js +55 -0
- package/dist/research/workspace/investigation-store.js.map +1 -0
- package/dist/research/workspace/investigation.d.ts +424 -0
- package/dist/research/workspace/investigation.js +716 -0
- package/dist/research/workspace/investigation.js.map +1 -0
- package/dist/research/workspace/native-process-supervisor.d.ts +1 -0
- package/dist/research/workspace/native-process-supervisor.js +97 -0
- package/dist/research/workspace/native-process-supervisor.js.map +1 -0
- package/dist/research/workspace/native-run.d.ts +150 -0
- package/dist/research/workspace/native-run.js +879 -0
- package/dist/research/workspace/native-run.js.map +1 -0
- package/dist/research/workspace/preflight.d.ts +11 -2
- package/dist/research/workspace/preflight.js +28 -20
- package/dist/research/workspace/preflight.js.map +1 -1
- package/dist/research/workspace/project-authority.js +2 -0
- package/dist/research/workspace/project-authority.js.map +1 -1
- package/dist/research/workspace/project-budget.d.ts +41 -0
- package/dist/research/workspace/project-budget.js +265 -0
- package/dist/research/workspace/project-budget.js.map +1 -0
- package/dist/research/workspace/project-mutations.d.ts +1 -1
- package/dist/research/workspace/project-mutations.js +29 -3
- package/dist/research/workspace/project-mutations.js.map +1 -1
- package/dist/research/workspace/projects.d.ts +66 -0
- package/dist/research/workspace/projects.js +182 -3
- package/dist/research/workspace/projects.js.map +1 -1
- package/dist/research/workspace/provider-budget.d.ts +3 -0
- package/dist/research/workspace/provider-budget.js +45 -0
- package/dist/research/workspace/provider-budget.js.map +1 -0
- package/dist/research/workspace/provider-state.d.ts +1 -0
- package/dist/research/workspace/provider-state.js +20 -0
- package/dist/research/workspace/provider-state.js.map +1 -0
- package/dist/research/workspace/publication-lineage.d.ts +34 -0
- package/dist/research/workspace/publication-lineage.js +165 -0
- package/dist/research/workspace/publication-lineage.js.map +1 -0
- package/dist/research/workspace/publication-workflow.d.ts +24 -0
- package/dist/research/workspace/publication-workflow.js +118 -14
- package/dist/research/workspace/publication-workflow.js.map +1 -1
- package/dist/research/workspace/request-provenance.d.ts +67 -0
- package/dist/research/workspace/request-provenance.js +115 -0
- package/dist/research/workspace/request-provenance.js.map +1 -0
- package/dist/research/workspace/review-executor.d.ts +6 -1
- package/dist/research/workspace/review-executor.js +39 -14
- package/dist/research/workspace/review-executor.js.map +1 -1
- package/dist/research/workspace/runtime.d.ts +64 -1
- package/dist/research/workspace/runtime.js +359 -112
- package/dist/research/workspace/runtime.js.map +1 -1
- package/dist/research/workspace/sanitization.js +1 -1
- package/dist/research/workspace/sanitization.js.map +1 -1
- package/dist/research/workspace/schema-compatibility.d.ts +5 -0
- package/dist/research/workspace/schema-compatibility.js +55 -0
- package/dist/research/workspace/schema-compatibility.js.map +1 -0
- package/dist/research/workspace/scientific-amendment.d.ts +103 -0
- package/dist/research/workspace/scientific-amendment.js +537 -0
- package/dist/research/workspace/scientific-amendment.js.map +1 -0
- package/dist/research/workspace/scientific-design.js +8 -17
- package/dist/research/workspace/scientific-design.js.map +1 -1
- package/dist/research/workspace/scientific-fulfillment-audit.d.ts +21 -0
- package/dist/research/workspace/scientific-fulfillment-audit.js +217 -0
- package/dist/research/workspace/scientific-fulfillment-audit.js.map +1 -0
- package/dist/research/workspace/scientific-fulfillment.d.ts +130 -0
- package/dist/research/workspace/scientific-fulfillment.js +553 -0
- package/dist/research/workspace/scientific-fulfillment.js.map +1 -0
- package/dist/research/workspace/scientific-review-execution.js +236 -75
- package/dist/research/workspace/scientific-review-execution.js.map +1 -1
- package/dist/research/workspace/scientific-review.d.ts +6 -1
- package/dist/research/workspace/scientific-review.js +228 -52
- package/dist/research/workspace/scientific-review.js.map +1 -1
- package/dist/research/workspace/setup-catalog.js +3 -3
- package/dist/research/workspace/setup-release.d.ts +22 -0
- package/dist/research/workspace/setup-release.js +426 -0
- package/dist/research/workspace/setup-release.js.map +1 -0
- package/dist/research/workspace/setup-runtime-integrity.d.ts +2 -0
- package/dist/research/workspace/setup-runtime-integrity.js +31 -0
- package/dist/research/workspace/setup-runtime-integrity.js.map +1 -0
- package/dist/research/workspace/setup-upgrade.d.ts +17 -0
- package/dist/research/workspace/setup-upgrade.js +784 -0
- package/dist/research/workspace/setup-upgrade.js.map +1 -0
- package/dist/research/workspace/setup.d.ts +31 -39
- package/dist/research/workspace/setup.js +220 -17
- package/dist/research/workspace/setup.js.map +1 -1
- package/dist/research/workspace/task-acceptance.d.ts +17 -2
- package/dist/research/workspace/task-acceptance.js +106 -10
- package/dist/research/workspace/task-acceptance.js.map +1 -1
- package/dist/research/workspace/task-audit.d.ts +5 -1
- package/dist/research/workspace/task-audit.js +70 -5
- package/dist/research/workspace/task-audit.js.map +1 -1
- package/dist/research/workspace/task-contract.d.ts +4 -1
- package/dist/research/workspace/task-contract.js +26 -5
- package/dist/research/workspace/task-contract.js.map +1 -1
- package/dist/research/workspace/types.d.ts +50 -3
- package/dist/research/workspace/workspace.js +34 -4
- package/dist/research/workspace/workspace.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-upgrade.js","sourceRoot":"","sources":["../../../src/research/workspace/setup-upgrade.ts"],"names":[],"mappings":"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"}
|
|
@@ -84,8 +84,17 @@ export interface ResearchSetupPlan {
|
|
|
84
84
|
target: string;
|
|
85
85
|
reason: string;
|
|
86
86
|
}>;
|
|
87
|
+
upgrade?: ResearchSetupUpgradeBinding;
|
|
87
88
|
planSha256: string;
|
|
88
89
|
}
|
|
90
|
+
export interface ResearchSetupUpgradeBinding {
|
|
91
|
+
schemaVersion: 1;
|
|
92
|
+
cliRuntimeSha256: string;
|
|
93
|
+
parentPlanSha256: string;
|
|
94
|
+
parentRuntimeLockSha256: string;
|
|
95
|
+
parentConfigSha256: string;
|
|
96
|
+
parentMarkerSha256: string;
|
|
97
|
+
}
|
|
89
98
|
export interface ResearchSetupState {
|
|
90
99
|
schemaVersion: 1;
|
|
91
100
|
planSha256: string;
|
|
@@ -126,6 +135,8 @@ export interface ResearchSetupPlanInput {
|
|
|
126
135
|
declarativeConfigurationSha256?: string;
|
|
127
136
|
environment?: NodeJS.ProcessEnv;
|
|
128
137
|
targetRoots?: Partial<Record<ResearchSetupAgent, string>>;
|
|
138
|
+
/** Internal candidate creation; never a public bypass of plan verification. */
|
|
139
|
+
upgrade?: ResearchSetupUpgradeBinding;
|
|
129
140
|
}
|
|
130
141
|
export interface SetupCommandResult {
|
|
131
142
|
exitCode: number;
|
|
@@ -146,6 +157,16 @@ export interface ApplyResearchSetupOptions {
|
|
|
146
157
|
sleeper?: (milliseconds: number) => Promise<unknown>;
|
|
147
158
|
executor?: DoctorOptions["executor"];
|
|
148
159
|
skipDoctor?: boolean;
|
|
160
|
+
upgradeCheckpoint?: (point: string) => Promise<void>;
|
|
161
|
+
/** Setup-upgrade preparation only; no public CLI flag exposes these paths. */
|
|
162
|
+
sourceCacheWorkspace?: string;
|
|
163
|
+
installerCacheDirectory?: string;
|
|
164
|
+
}
|
|
165
|
+
export interface ApplyResearchSetupResult {
|
|
166
|
+
schemaVersion: 1;
|
|
167
|
+
plan: ResearchSetupPlan;
|
|
168
|
+
state: ResearchSetupState;
|
|
169
|
+
report: Awaited<ReturnType<typeof doctorResearchSetup>> | null;
|
|
149
170
|
}
|
|
150
171
|
export type ResearchSetupCompanionInput = {
|
|
151
172
|
workspace: string;
|
|
@@ -169,30 +190,16 @@ export interface RunResearchSetupCompanionOptions {
|
|
|
169
190
|
}
|
|
170
191
|
export declare function createResearchSetupPlan(input: ResearchSetupPlanInput): Promise<ResearchSetupPlan>;
|
|
171
192
|
export declare function loadAndVerifyResearchSetupPlan(planPath: string): Promise<ResearchSetupPlan>;
|
|
193
|
+
export declare function loadHashVerifiedResearchSetupPlan(planPath: string): Promise<ResearchSetupPlan>;
|
|
172
194
|
export declare function createResearchSetupUpgradePlan(input: {
|
|
173
195
|
workspace: string;
|
|
174
196
|
acceptedLicenseIds: string[];
|
|
175
197
|
confirmUpgrade: boolean;
|
|
176
198
|
environment?: NodeJS.ProcessEnv;
|
|
177
199
|
}): Promise<ResearchSetupPlan>;
|
|
178
|
-
export declare function
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
state: ResearchSetupState;
|
|
182
|
-
report: null;
|
|
183
|
-
} | {
|
|
184
|
-
schemaVersion: 1;
|
|
185
|
-
plan: ResearchSetupPlan;
|
|
186
|
-
state: ResearchSetupState;
|
|
187
|
-
report: Record<string, unknown> & {
|
|
188
|
-
readiness: "READY" | "BLOCKED";
|
|
189
|
-
researchReadiness: "READY" | "BLOCKED";
|
|
190
|
-
preprocessingReadiness: SetupDomainReadiness;
|
|
191
|
-
acquisitionReadiness: SetupDomainReadiness;
|
|
192
|
-
authoringReadiness: SetupDomainReadiness;
|
|
193
|
-
overallReadiness: "READY" | "PARTIALLY_READY" | "BLOCKED";
|
|
194
|
-
};
|
|
195
|
-
}>;
|
|
200
|
+
export declare function researchSetupUpgradeCandidatePath(plan: ResearchSetupPlan): string;
|
|
201
|
+
export declare function assertUpgradeParent(plan: ResearchSetupPlan): Promise<ResearchSetupPlan>;
|
|
202
|
+
export declare function applyResearchSetupPlan(planPath: string, options?: ApplyResearchSetupOptions): Promise<ApplyResearchSetupResult>;
|
|
196
203
|
export declare function inspectResearchSetupStatus(workspace: string, environment?: NodeJS.ProcessEnv): Promise<{
|
|
197
204
|
schemaVersion: 1;
|
|
198
205
|
workspace: string;
|
|
@@ -327,29 +334,14 @@ export declare function retryResearchSetup(input: {
|
|
|
327
334
|
step: string;
|
|
328
335
|
clearStaleLock?: boolean;
|
|
329
336
|
options?: ApplyResearchSetupOptions;
|
|
330
|
-
}): Promise<
|
|
331
|
-
|
|
332
|
-
plan: ResearchSetupPlan;
|
|
333
|
-
state: ResearchSetupState;
|
|
334
|
-
report: null;
|
|
335
|
-
} | {
|
|
336
|
-
schemaVersion: 1;
|
|
337
|
-
plan: ResearchSetupPlan;
|
|
338
|
-
state: ResearchSetupState;
|
|
339
|
-
report: Record<string, unknown> & {
|
|
340
|
-
readiness: "READY" | "BLOCKED";
|
|
341
|
-
researchReadiness: "READY" | "BLOCKED";
|
|
342
|
-
preprocessingReadiness: SetupDomainReadiness;
|
|
343
|
-
acquisitionReadiness: SetupDomainReadiness;
|
|
344
|
-
authoringReadiness: SetupDomainReadiness;
|
|
345
|
-
overallReadiness: "READY" | "PARTIALLY_READY" | "BLOCKED";
|
|
346
|
-
};
|
|
347
|
-
}>;
|
|
348
|
-
export declare function checkResearchSetupUpdates(workspace: string, environment?: NodeJS.ProcessEnv): Promise<{
|
|
337
|
+
}): Promise<ApplyResearchSetupResult>;
|
|
338
|
+
export declare function checkResearchSetupUpdates(workspace: string, environment?: NodeJS.ProcessEnv, candidateVersion?: string): Promise<{
|
|
349
339
|
schemaVersion: 1;
|
|
350
340
|
workspace: string;
|
|
351
341
|
checkedAt: string;
|
|
352
|
-
updateAvailable: boolean;
|
|
342
|
+
updateAvailable: boolean | null;
|
|
343
|
+
releaseCandidate: import("./setup-release.js").ResearchCliReleaseInspection | null;
|
|
344
|
+
candidateUpgradeCommand: string | null;
|
|
353
345
|
cliVersionDrift: {
|
|
354
346
|
planned: string;
|
|
355
347
|
active: string;
|
|
@@ -528,9 +520,9 @@ declare function runAcademicPaperCompanion(input: {
|
|
|
528
520
|
source?: never;
|
|
529
521
|
validation?: never;
|
|
530
522
|
} | {
|
|
523
|
+
error?: never;
|
|
531
524
|
artifactCommitted?: never;
|
|
532
525
|
sourcesTried?: never;
|
|
533
|
-
error?: never;
|
|
534
526
|
schemaVersion: 1;
|
|
535
527
|
kind: "research-setup-companion-result";
|
|
536
528
|
status: "complete";
|
|
@@ -7,6 +7,8 @@ import { setTimeout as sleep } from "node:timers/promises";
|
|
|
7
7
|
import { CliError } from "../../errors.js";
|
|
8
8
|
import { loadCapabilityDeclarations } from "./capabilities.js";
|
|
9
9
|
import { inspectResearchContext } from "./context.js";
|
|
10
|
+
import { inspectExactResearchCliRelease } from "./setup-release.js";
|
|
11
|
+
import { researchSetupRuntimeSha256, assertResearchSetupRuntimeIntegrity, } from "./setup-runtime-integrity.js";
|
|
10
12
|
import { inspectCapabilityCredentialEnvironment, loadCapabilityCredentialMapForIds, reconcileCapabilityCredentialEnvironment, setCapabilityCredentialValue, } from "./credentials.js";
|
|
11
13
|
import { configureExternalSkillProfile, configureTiangongDatabaseCapability, doctorExternalCapabilities, EXTERNAL_SKILL_CONTEXT_PROFILE, EXTERNAL_SKILL_MEDIA_PROFILE, EXTERNAL_SKILL_PROFILE, reconcileSetupManagedCapabilities, } from "./external-skills.js";
|
|
12
14
|
import { appendJournalEvent } from "./journal.js";
|
|
@@ -16,7 +18,7 @@ import { configuredResearchSecrets, isSensitiveEnvironmentName, sanitizeResearch
|
|
|
16
18
|
import { inspectResearchSetupCatalog, RESEARCH_SETUP_CREDENTIALS, RESEARCH_SETUP_INSTALLER, RESEARCH_SETUP_SETTINGS, RESEARCH_SETUP_SKILLS, resolveSetupSkills, setupSkill, setupSource, setupTargetRoot, verifyResearchSetupRuntimeContract, } from "./setup-catalog.js";
|
|
17
19
|
import { inspectResearchSetupInstructionRouting, isResearchSetupInstructionRoutingPlan, planResearchSetupInstructionRouting, reconcileResearchSetupInstructionRouting, } from "./setup-instructions.js";
|
|
18
20
|
import { acquireFileLock, canonicalJson, ensureDirectory, fileSize, hashRegularTree, isObject, pathExists, REGULAR_TREE_HASH_ALGORITHM, readJsonFile, sha256File, sha256Text, workspacePaths, writeJsonAtomic, writeTextAtomic, } from "./storage.js";
|
|
19
|
-
import { packageRoot, packageVersion, RESEARCH_PACKAGE_NAME } from "./constants.js";
|
|
21
|
+
import { packageRoot, packageVersion, RESEARCH_PACKAGE_NAME, SETUP_UPGRADING_MARKER, } from "./constants.js";
|
|
20
22
|
import { inspectReviewerBridgeStatus } from "./review-executor.js";
|
|
21
23
|
import { exactResearchCliCommand, pinResearchCliCommand, researchSetupApplyCommand, researchSetupRetryCommand, } from "./setup-invocation.js";
|
|
22
24
|
import { doctorResearchWorkspace, initializeResearchWorkspace, loadWorkspaceConfig, } from "./workspace.js";
|
|
@@ -213,6 +215,7 @@ export async function createResearchSetupPlan(input) {
|
|
|
213
215
|
agentSmokeCost: input.agentSmoke === true,
|
|
214
216
|
},
|
|
215
217
|
mutations: setupMutations(root, targets, selected, instructionRouting),
|
|
218
|
+
...(input.upgrade ? { upgrade: input.upgrade } : {}),
|
|
216
219
|
};
|
|
217
220
|
const plan = {
|
|
218
221
|
...unsigned,
|
|
@@ -222,6 +225,13 @@ export async function createResearchSetupPlan(input) {
|
|
|
222
225
|
await ensureDirectory(paths.control);
|
|
223
226
|
const release = await acquireFileLock(paths.setupLock, setupLockPayload(plan.planSha256));
|
|
224
227
|
try {
|
|
228
|
+
if (plan.upgrade) {
|
|
229
|
+
await assertUpgradeParent(plan);
|
|
230
|
+
const candidatePath = researchSetupUpgradeCandidatePath(plan);
|
|
231
|
+
await assertNoSymlinkedExistingPath(dirname(candidatePath), root);
|
|
232
|
+
await writeJsonAtomic(candidatePath, plan, 0o444);
|
|
233
|
+
return plan;
|
|
234
|
+
}
|
|
225
235
|
if ((await pathExists(paths.setupPlan)) && !input.replacePlan) {
|
|
226
236
|
throw setupError({
|
|
227
237
|
code: "RESEARCH_SETUP_PLAN_EXISTS",
|
|
@@ -275,7 +285,7 @@ export async function loadAndVerifyResearchSetupPlan(planPath) {
|
|
|
275
285
|
assertPlanMatchesCatalog(plan);
|
|
276
286
|
return plan;
|
|
277
287
|
}
|
|
278
|
-
async function loadHashVerifiedResearchSetupPlan(planPath) {
|
|
288
|
+
export async function loadHashVerifiedResearchSetupPlan(planPath) {
|
|
279
289
|
if (!isAbsolute(planPath)) {
|
|
280
290
|
throw setupError({
|
|
281
291
|
code: "RESEARCH_SETUP_PLAN_INVALID",
|
|
@@ -327,7 +337,28 @@ export async function createResearchSetupUpgradePlan(input) {
|
|
|
327
337
|
}
|
|
328
338
|
const prior = await loadHashVerifiedResearchSetupPlan(workspacePaths(root).setupPlan);
|
|
329
339
|
const selected = resolveSetupSkills(prior.selection.skillIds);
|
|
330
|
-
|
|
340
|
+
const acceptedLicenseIds = [
|
|
341
|
+
...new Set([
|
|
342
|
+
...input.acceptedLicenseIds,
|
|
343
|
+
...prior.acceptedLicenses
|
|
344
|
+
.filter((accepted) => selected.some((skill) => skill.id === accepted.skillId && skill.license.id === accepted.licenseId))
|
|
345
|
+
.map((accepted) => accepted.licenseId),
|
|
346
|
+
]),
|
|
347
|
+
];
|
|
348
|
+
validateLicenseAcceptances(selected, acceptedLicenseIds);
|
|
349
|
+
const paths = workspacePaths(root);
|
|
350
|
+
for (const path of [paths.runtimeLock, paths.config, paths.marker]) {
|
|
351
|
+
await assertNoSymlinkedExistingPath(path, root);
|
|
352
|
+
}
|
|
353
|
+
const currentConfig = await loadWorkspaceConfig(root);
|
|
354
|
+
const upgrade = {
|
|
355
|
+
schemaVersion: 1,
|
|
356
|
+
cliRuntimeSha256: await researchSetupRuntimeSha256(),
|
|
357
|
+
parentPlanSha256: prior.planSha256,
|
|
358
|
+
parentRuntimeLockSha256: await sha256File(paths.runtimeLock),
|
|
359
|
+
parentConfigSha256: await sha256File(paths.config),
|
|
360
|
+
parentMarkerSha256: await sha256File(paths.marker),
|
|
361
|
+
};
|
|
331
362
|
return createResearchSetupPlan({
|
|
332
363
|
workspace: root,
|
|
333
364
|
name: prior.workspace.name,
|
|
@@ -336,10 +367,18 @@ export async function createResearchSetupUpgradePlan(input) {
|
|
|
336
367
|
skillIds: prior.selection.skillIds.filter((id) => !BRAVE_PROFILE_SKILLS[prior.selection.evidenceProfile].includes(id)),
|
|
337
368
|
scope: prior.install.scope,
|
|
338
369
|
agents: prior.install.agents,
|
|
339
|
-
acceptedLicenseIds
|
|
370
|
+
acceptedLicenseIds,
|
|
340
371
|
credentialEnvironment: Object.fromEntries(prior.credentialSources.map((credential) => [credential.id, credential.fromEnvironment])),
|
|
341
372
|
settings: prior.settings,
|
|
342
|
-
agentRoutes:
|
|
373
|
+
agentRoutes: {
|
|
374
|
+
producerAgent: currentConfig.producer.agent,
|
|
375
|
+
reviewerAgent: currentConfig.reviewer.agent,
|
|
376
|
+
producerModel: currentConfig.producer.model,
|
|
377
|
+
reviewerModel: currentConfig.reviewer.model,
|
|
378
|
+
producerPricing: currentConfig.producer.pricing ?? null,
|
|
379
|
+
reviewerPricing: currentConfig.reviewer.pricing ?? null,
|
|
380
|
+
},
|
|
381
|
+
reviewerExecution: currentConfig.reviewerExecution,
|
|
343
382
|
liveChecks: prior.checks.live,
|
|
344
383
|
allowSyntheticUnstructureUpload: prior.checks.allowSyntheticUnstructureUpload,
|
|
345
384
|
agentSmoke: prior.checks.agentSmoke,
|
|
@@ -347,12 +386,40 @@ export async function createResearchSetupUpgradePlan(input) {
|
|
|
347
386
|
confirmGlobalMutation: prior.install.scope === "global",
|
|
348
387
|
confirmAgentSmokeCost: prior.checks.agentSmoke,
|
|
349
388
|
replacePlan: true,
|
|
389
|
+
upgrade,
|
|
350
390
|
targetRoots: Object.fromEntries(prior.install.targets.map((target) => [target.agent, target.root])),
|
|
351
391
|
...(input.environment === undefined ? {} : { environment: input.environment }),
|
|
352
392
|
});
|
|
353
393
|
}
|
|
394
|
+
export function researchSetupUpgradeCandidatePath(plan) {
|
|
395
|
+
return join(workspacePaths(plan.workspace.path).control, "setup-candidates", `${plan.planSha256}.json`);
|
|
396
|
+
}
|
|
397
|
+
export async function assertUpgradeParent(plan) {
|
|
398
|
+
const paths = workspacePaths(plan.workspace.path);
|
|
399
|
+
const prior = await loadHashVerifiedResearchSetupPlan(paths.setupPlan);
|
|
400
|
+
if (!plan.upgrade ||
|
|
401
|
+
prior.planSha256 !== plan.upgrade.parentPlanSha256 ||
|
|
402
|
+
(await sha256File(paths.runtimeLock)) !== plan.upgrade.parentRuntimeLockSha256 ||
|
|
403
|
+
(await sha256File(paths.config)) !== plan.upgrade.parentConfigSha256 ||
|
|
404
|
+
(await sha256File(paths.marker)) !== plan.upgrade.parentMarkerSha256) {
|
|
405
|
+
throw setupError({
|
|
406
|
+
code: "RESEARCH_SETUP_UPGRADE_CONFLICT",
|
|
407
|
+
step: "upgrade-parent",
|
|
408
|
+
reason: "The active generation changed after this upgrade was planned.",
|
|
409
|
+
minimumAction: "Inspect the current setup and create a new reviewed upgrade candidate.",
|
|
410
|
+
retryCommand: `tiangong-ai research setup status --workspace ${plan.workspace.path} --json`,
|
|
411
|
+
exitCode: 3,
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
return prior;
|
|
415
|
+
}
|
|
354
416
|
export async function applyResearchSetupPlan(planPath, options = {}) {
|
|
355
417
|
const plan = await loadAndVerifyResearchSetupPlan(resolve(planPath));
|
|
418
|
+
if (plan.upgrade) {
|
|
419
|
+
await assertResearchSetupRuntimeIntegrity(plan.upgrade.cliRuntimeSha256);
|
|
420
|
+
const { applyManagedSetupUpgrade } = await import("./setup-upgrade.js");
|
|
421
|
+
return applyManagedSetupUpgrade(plan, options);
|
|
422
|
+
}
|
|
356
423
|
const root = plan.workspace.path;
|
|
357
424
|
const paths = workspacePaths(root);
|
|
358
425
|
const environment = options.environment ?? process.env;
|
|
@@ -360,7 +427,10 @@ export async function applyResearchSetupPlan(planPath, options = {}) {
|
|
|
360
427
|
const release = await acquireFileLock(paths.setupLock, setupLockPayload(plan.planSha256));
|
|
361
428
|
let installerCacheDirectory;
|
|
362
429
|
try {
|
|
363
|
-
installerCacheDirectory =
|
|
430
|
+
installerCacheDirectory =
|
|
431
|
+
options.installerCacheDirectory ??
|
|
432
|
+
(await mkdtemp(join(tmpdir(), "tiangong-research-npm-cache-")));
|
|
433
|
+
await ensureDirectory(installerCacheDirectory);
|
|
364
434
|
}
|
|
365
435
|
catch (error) {
|
|
366
436
|
await release();
|
|
@@ -420,7 +490,9 @@ export async function applyResearchSetupPlan(planPath, options = {}) {
|
|
|
420
490
|
const sourceDirectories = new Map();
|
|
421
491
|
for (const sourceId of requiredSourceIds) {
|
|
422
492
|
try {
|
|
423
|
-
sourceDirectories.set(sourceId, await ensureSetupSourceCheckout(
|
|
493
|
+
sourceDirectories.set(sourceId, await ensureSetupSourceCheckout(options.sourceCacheWorkspace
|
|
494
|
+
? { ...plan, workspace: { ...plan.workspace, path: options.sourceCacheWorkspace } }
|
|
495
|
+
: plan, sourceId, runner, setupInstallerEnvironment));
|
|
424
496
|
}
|
|
425
497
|
catch (error) {
|
|
426
498
|
throw await annotateSetupSourceCheckoutFailure(error, plan, sourceId);
|
|
@@ -562,7 +634,8 @@ export async function applyResearchSetupPlan(planPath, options = {}) {
|
|
|
562
634
|
}
|
|
563
635
|
finally {
|
|
564
636
|
try {
|
|
565
|
-
|
|
637
|
+
if (!options.installerCacheDirectory)
|
|
638
|
+
await rm(installerCacheDirectory, { recursive: true, force: true });
|
|
566
639
|
}
|
|
567
640
|
finally {
|
|
568
641
|
await release();
|
|
@@ -572,6 +645,42 @@ export async function applyResearchSetupPlan(planPath, options = {}) {
|
|
|
572
645
|
export async function inspectResearchSetupStatus(workspace, environment = process.env) {
|
|
573
646
|
const requestedRoot = requireAbsoluteWorkspace(resolve(workspace));
|
|
574
647
|
const requestedPaths = workspacePaths(requestedRoot);
|
|
648
|
+
const marker = (await pathExists(requestedPaths.marker))
|
|
649
|
+
? await readJsonFile(requestedPaths.marker, "Research workspace marker")
|
|
650
|
+
: null;
|
|
651
|
+
if (isObject(marker) && marker.kind === SETUP_UPGRADING_MARKER) {
|
|
652
|
+
const candidateHash = marker.setupUpgradePlanSha256;
|
|
653
|
+
let recovery = {};
|
|
654
|
+
if (typeof candidateHash === "string" && /^[a-f0-9]{64}$/.test(candidateHash)) {
|
|
655
|
+
const planPath = join(requestedPaths.control, "setup-candidates", `${candidateHash}.json`);
|
|
656
|
+
const candidate = await loadHashVerifiedResearchSetupPlan(planPath).catch(() => null);
|
|
657
|
+
const canonicalRoot = await realpath(requestedRoot).catch(() => requestedRoot);
|
|
658
|
+
if (candidate?.upgrade &&
|
|
659
|
+
candidate.planSha256 === candidateHash &&
|
|
660
|
+
candidate.workspace.path === canonicalRoot) {
|
|
661
|
+
recovery = {
|
|
662
|
+
planPath,
|
|
663
|
+
retryCommand: researchSetupApplyCommand({ version: candidate.cli.version, planPath }),
|
|
664
|
+
rollbackCommand: exactResearchCliCommand([
|
|
665
|
+
"research",
|
|
666
|
+
"setup",
|
|
667
|
+
"upgrade",
|
|
668
|
+
"--rollback",
|
|
669
|
+
"--candidate",
|
|
670
|
+
planPath,
|
|
671
|
+
"--workspace",
|
|
672
|
+
canonicalRoot,
|
|
673
|
+
"--json",
|
|
674
|
+
], candidate.cli.version),
|
|
675
|
+
};
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
throw new CliError("Complete or roll back the recorded setup upgrade before inspecting readiness.", {
|
|
679
|
+
code: "RESEARCH_SETUP_UPGRADE_PENDING",
|
|
680
|
+
exitCode: 3,
|
|
681
|
+
details: recovery,
|
|
682
|
+
});
|
|
683
|
+
}
|
|
575
684
|
const plan = await loadAndVerifyResearchSetupPlan(requestedPaths.setupPlan);
|
|
576
685
|
const canonicalRequestedRoot = await realpath(requestedRoot).catch(() => requestedRoot);
|
|
577
686
|
if (canonicalRequestedRoot !== plan.workspace.path) {
|
|
@@ -1726,7 +1835,7 @@ export async function retryResearchSetup(input) {
|
|
|
1726
1835
|
}).catch(() => undefined);
|
|
1727
1836
|
return applyResearchSetupPlan(paths.setupPlan, input.options);
|
|
1728
1837
|
}
|
|
1729
|
-
export async function checkResearchSetupUpdates(workspace, environment = process.env) {
|
|
1838
|
+
export async function checkResearchSetupUpdates(workspace, environment = process.env, candidateVersion) {
|
|
1730
1839
|
const root = requireAbsoluteWorkspace(resolve(workspace));
|
|
1731
1840
|
const plan = await loadHashVerifiedResearchSetupPlan(workspacePaths(root).setupPlan);
|
|
1732
1841
|
const catalog = await inspectResearchSetupCatalog({
|
|
@@ -1753,12 +1862,37 @@ export async function checkResearchSetupUpdates(workspace, environment = process
|
|
|
1753
1862
|
const cliVersionDrift = plan.cli.version === packageVersion()
|
|
1754
1863
|
? null
|
|
1755
1864
|
: { planned: plan.cli.version, active: packageVersion() };
|
|
1756
|
-
const
|
|
1865
|
+
const releaseCandidate = candidateVersion === undefined
|
|
1866
|
+
? null
|
|
1867
|
+
: await inspectExactResearchCliRelease(candidateVersion, {
|
|
1868
|
+
installedVersion: plan.cli.version,
|
|
1869
|
+
environment,
|
|
1870
|
+
});
|
|
1871
|
+
const candidateUpgradeCommand = releaseCandidate?.status === "newer"
|
|
1872
|
+
? exactResearchCliCommand([
|
|
1873
|
+
"research",
|
|
1874
|
+
"setup",
|
|
1875
|
+
"upgrade",
|
|
1876
|
+
"--plan",
|
|
1877
|
+
"--confirm-upgrade",
|
|
1878
|
+
"--workspace",
|
|
1879
|
+
root,
|
|
1880
|
+
"--json",
|
|
1881
|
+
], releaseCandidate.requestedVersion).replace(/^npx /, "npx --registry=https://registry.npmjs.org --@tiangong-ai:registry=https://registry.npmjs.org --strict-ssl=true ")
|
|
1882
|
+
: null;
|
|
1883
|
+
const localUpdateAvailable = drift.length > 0 || cliVersionDrift !== null;
|
|
1884
|
+
const updateAvailable = localUpdateAvailable || releaseCandidate?.status === "newer"
|
|
1885
|
+
? true
|
|
1886
|
+
: releaseCandidate?.status === "unavailable"
|
|
1887
|
+
? null
|
|
1888
|
+
: false;
|
|
1757
1889
|
return {
|
|
1758
1890
|
schemaVersion: 1,
|
|
1759
1891
|
workspace: root,
|
|
1760
1892
|
checkedAt: new Date().toISOString(),
|
|
1761
1893
|
updateAvailable,
|
|
1894
|
+
releaseCandidate,
|
|
1895
|
+
candidateUpgradeCommand,
|
|
1762
1896
|
cliVersionDrift,
|
|
1763
1897
|
drift,
|
|
1764
1898
|
currentInstaller: RESEARCH_SETUP_INSTALLER,
|
|
@@ -1766,9 +1900,13 @@ export async function checkResearchSetupUpdates(workspace, environment = process
|
|
|
1766
1900
|
policy: {
|
|
1767
1901
|
automaticUpdate: false,
|
|
1768
1902
|
floatingUpdate: false,
|
|
1769
|
-
minimumAction:
|
|
1770
|
-
? "
|
|
1771
|
-
:
|
|
1903
|
+
minimumAction: releaseCandidate?.status === "unavailable"
|
|
1904
|
+
? "Exact release metadata is unavailable. Preserve the active generation and retry the same explicit candidate check when access is restored; local catalog drift is reported separately."
|
|
1905
|
+
: updateAvailable
|
|
1906
|
+
? "Use the active exact CLI release to create, review, and apply a replacement immutable plan; upgrade never runs a floating CLI or Skills update."
|
|
1907
|
+
: releaseCandidate === null
|
|
1908
|
+
? "No local catalog migration is required; no external release was checked. Pass an explicitly reviewed candidate version to check it. Installed tree drift is reported separately by setup status/doctor."
|
|
1909
|
+
: "The checked exact release is not newer and no local catalog migration is required. Installed tree drift is reported separately by setup status/doctor.",
|
|
1772
1910
|
},
|
|
1773
1911
|
};
|
|
1774
1912
|
}
|
|
@@ -1905,7 +2043,8 @@ function parseResearchSetupPlan(value) {
|
|
|
1905
2043
|
typeof mutation.target !== "string" ||
|
|
1906
2044
|
typeof mutation.reason !== "string") ||
|
|
1907
2045
|
typeof value.planSha256 !== "string" ||
|
|
1908
|
-
!/^[0-9a-f]{64}$/.test(value.planSha256)
|
|
2046
|
+
!/^[0-9a-f]{64}$/.test(value.planSha256) ||
|
|
2047
|
+
(value.upgrade !== undefined && !validUpgradeBinding(value.upgrade))) {
|
|
1909
2048
|
throw setupError({
|
|
1910
2049
|
code: "RESEARCH_SETUP_PLAN_INVALID",
|
|
1911
2050
|
step: "plan-validation",
|
|
@@ -1917,6 +2056,19 @@ function parseResearchSetupPlan(value) {
|
|
|
1917
2056
|
}
|
|
1918
2057
|
return value;
|
|
1919
2058
|
}
|
|
2059
|
+
function validUpgradeBinding(value) {
|
|
2060
|
+
if (!isObject(value) || value.schemaVersion !== 1)
|
|
2061
|
+
return false;
|
|
2062
|
+
const keys = [
|
|
2063
|
+
"cliRuntimeSha256",
|
|
2064
|
+
"parentPlanSha256",
|
|
2065
|
+
"parentRuntimeLockSha256",
|
|
2066
|
+
"parentConfigSha256",
|
|
2067
|
+
"parentMarkerSha256",
|
|
2068
|
+
];
|
|
2069
|
+
return (Object.keys(value).length === keys.length + 1 &&
|
|
2070
|
+
keys.every((key) => typeof value[key] === "string" && /^[0-9a-f]{64}$/.test(String(value[key]))));
|
|
2071
|
+
}
|
|
1920
2072
|
function assertPlanMatchesCatalog(plan) {
|
|
1921
2073
|
const selected = resolveSetupSkills(plan.selection.skillIds);
|
|
1922
2074
|
if (canonicalJson(plan.selection.skillIds) !== canonicalJson(selected.map((skill) => skill.id))) {
|
|
@@ -2345,7 +2497,16 @@ function setupAgentRoute(current, agent, executionMode, plannedModel, plannedPri
|
|
|
2345
2497
|
return {
|
|
2346
2498
|
agent,
|
|
2347
2499
|
executionMode,
|
|
2348
|
-
binary:
|
|
2500
|
+
binary: sameAgent
|
|
2501
|
+
? current.binary
|
|
2502
|
+
: agent === "codex"
|
|
2503
|
+
? "codex"
|
|
2504
|
+
: agent === "claude"
|
|
2505
|
+
? "claude"
|
|
2506
|
+
: `${agent}-native-host`,
|
|
2507
|
+
...(sameAgent && current.wrapperTargetBinary !== undefined
|
|
2508
|
+
? { wrapperTargetBinary: current.wrapperTargetBinary }
|
|
2509
|
+
: {}),
|
|
2349
2510
|
model: plannedModel ?? (sameAgent ? current.model : null),
|
|
2350
2511
|
effort: sameAgent ? (current.effort ?? "low") : "low",
|
|
2351
2512
|
...(agent === "codex" ? { verbosity: sameAgent ? (current.verbosity ?? "low") : "low" } : {}),
|
|
@@ -3131,12 +3292,30 @@ async function runAcademicPaperCompanion(input) {
|
|
|
3131
3292
|
throw companionArtifactError(input.root, "The result metadata does not bind the committed PDF bytes.");
|
|
3132
3293
|
}
|
|
3133
3294
|
const manifest = await readJsonFile(manifestPath, "Paper manifest");
|
|
3134
|
-
if (manifest.schema_version !== "academic-paper-download.artifact.
|
|
3135
|
-
manifest.
|
|
3295
|
+
if (manifest.schema_version !== "academic-paper-download.artifact.v3") {
|
|
3296
|
+
throw companionArtifactError(input.root, "The PDF manifest must use the pinned adapter's identity-verified artifact.v3 contract; legacy structural-only metadata does not establish document identity.");
|
|
3297
|
+
}
|
|
3298
|
+
if (manifest.file !== artifactPath ||
|
|
3136
3299
|
manifest.sha256 !== artifactSha256 ||
|
|
3137
3300
|
manifest.size !== artifactInfo.size) {
|
|
3138
3301
|
throw companionArtifactError(input.root, "The manifest does not bind the exact committed PDF.");
|
|
3139
3302
|
}
|
|
3303
|
+
const identity = manifest.identity;
|
|
3304
|
+
const resolvedDoi = normalizedCompanionDoi(manifest.doi);
|
|
3305
|
+
if (!resolvedDoi ||
|
|
3306
|
+
normalizedCompanionDoi(result.doi) !== resolvedDoi ||
|
|
3307
|
+
(doi && normalizedCompanionDoi(doi) !== resolvedDoi) ||
|
|
3308
|
+
manifest.identity_status !== "matched" ||
|
|
3309
|
+
result.identity_status !== "matched" ||
|
|
3310
|
+
!isObject(result.identity) ||
|
|
3311
|
+
!isObject(identity) ||
|
|
3312
|
+
identity.schema_version !== "academic-paper-download.identity.v1" ||
|
|
3313
|
+
identity.status !== "matched" ||
|
|
3314
|
+
!isObject(identity.requested) ||
|
|
3315
|
+
normalizedCompanionDoi(identity.requested.doi) !== resolvedDoi ||
|
|
3316
|
+
canonicalJson(result.identity) !== canonicalJson(identity)) {
|
|
3317
|
+
throw companionArtifactError(input.root, "The pinned adapter's document identity does not bind the requested or resolved DOI and exact manifest.");
|
|
3318
|
+
}
|
|
3140
3319
|
await verifyPdfEnvelope(artifactPath, artifactInfo.size, input.root);
|
|
3141
3320
|
const manifestSha256 = await sha256File(manifestPath);
|
|
3142
3321
|
await appendJournalEvent(workspacePaths(input.root).journal, "research.setup.companion.paper.completed", "workspace", {
|
|
@@ -3145,6 +3324,7 @@ async function runAcademicPaperCompanion(input) {
|
|
|
3145
3324
|
skillTreeSha256: input.skill.expectedTreeSha256,
|
|
3146
3325
|
sourceRef: setupSource(input.skill.sourceId).immutableRef,
|
|
3147
3326
|
querySha256: sha256Text(doi ?? title),
|
|
3327
|
+
documentIdentityStatus: "matched",
|
|
3148
3328
|
source: typeof manifest.source === "string" ? manifest.source : null,
|
|
3149
3329
|
artifact: { sha256: artifactSha256, bytes: artifactInfo.size },
|
|
3150
3330
|
manifest: { sha256: manifestSha256, bytes: manifestInfo.size },
|
|
@@ -3162,6 +3342,7 @@ async function runAcademicPaperCompanion(input) {
|
|
|
3162
3342
|
provenance: companionProvenance(input.plan, input.skill),
|
|
3163
3343
|
validation: [
|
|
3164
3344
|
"pinned-adapter-pypdf",
|
|
3345
|
+
"pinned-adapter-pdf-identity",
|
|
3165
3346
|
"pdf-header",
|
|
3166
3347
|
"pdf-eof",
|
|
3167
3348
|
"size",
|
|
@@ -3171,6 +3352,28 @@ async function runAcademicPaperCompanion(input) {
|
|
|
3171
3352
|
next: "Admit the exact PDF or a derived hash-bound view as a declared research input.",
|
|
3172
3353
|
};
|
|
3173
3354
|
}
|
|
3355
|
+
function normalizedCompanionDoi(value) {
|
|
3356
|
+
if (typeof value !== "string")
|
|
3357
|
+
return null;
|
|
3358
|
+
let raw = value.trim();
|
|
3359
|
+
// Match the pinned Python adapter's urllib.parse.unquote behavior: literal
|
|
3360
|
+
// percent signs survive, encoded URLs are unwrapped after one decoding pass,
|
|
3361
|
+
// and URL path segments are not rewritten by WHATWG URL normalization.
|
|
3362
|
+
const unquote = (text) => text.replace(/(?:%[0-9a-f]{2})+/gi, (sequence) => Buffer.from(sequence.replaceAll("%", ""), "hex").toString("utf8"));
|
|
3363
|
+
const urlPrefix = /^(?:https?:\/\/)?(?:dx\.)?doi\.org\//i;
|
|
3364
|
+
if (urlPrefix.test(raw)) {
|
|
3365
|
+
raw = unquote(raw
|
|
3366
|
+
.replace(urlPrefix, "")
|
|
3367
|
+
.replace(/[\t\r\n]/g, "")
|
|
3368
|
+
.split(/[?#]/, 1)[0]
|
|
3369
|
+
.replace(/^\/+/, ""));
|
|
3370
|
+
}
|
|
3371
|
+
else {
|
|
3372
|
+
raw = unquote(raw).replace(/^(?:(?:https?:\/\/)?(?:dx\.)?doi\.org\/|doi:\s*)/i, "");
|
|
3373
|
+
}
|
|
3374
|
+
raw = raw.trim().toLowerCase();
|
|
3375
|
+
return /^10\.\d{4,9}\/\S+$/.test(raw) && !/[\u0000-\u001f]/.test(raw) ? raw : null;
|
|
3376
|
+
}
|
|
3174
3377
|
function safeAcademicPaperRuntimeErrorCode(value) {
|
|
3175
3378
|
const allowed = new Set([
|
|
3176
3379
|
"python_incompatible",
|