@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.
Files changed (239) hide show
  1. package/AGENTS.md +17 -6
  2. package/README.md +577 -55
  3. package/dist/data/builtins.js +33 -5
  4. package/dist/data/builtins.js.map +1 -1
  5. package/dist/data/catalog.js +46 -0
  6. package/dist/data/catalog.js.map +1 -1
  7. package/dist/data/commands.js +15 -1
  8. package/dist/data/commands.js.map +1 -1
  9. package/dist/data/connectors/airnow-hourly-observations.js +60 -10
  10. package/dist/data/connectors/airnow-hourly-observations.js.map +1 -1
  11. package/dist/data/connectors/epa-eis-records.js +16 -2
  12. package/dist/data/connectors/epa-eis-records.js.map +1 -1
  13. package/dist/data/connectors/gdelt-doc-search.js +54 -18
  14. package/dist/data/connectors/gdelt-doc-search.js.map +1 -1
  15. package/dist/data/connectors/gdelt-file-feeds.js +20 -11
  16. package/dist/data/connectors/gdelt-file-feeds.js.map +1 -1
  17. package/dist/data/connectors/gdelt-web-ngrams.d.ts +2 -0
  18. package/dist/data/connectors/gdelt-web-ngrams.js +350 -0
  19. package/dist/data/connectors/gdelt-web-ngrams.js.map +1 -0
  20. package/dist/data/connectors/gdelt-web-ngrams.schemas.d.ts +188 -0
  21. package/dist/data/connectors/gdelt-web-ngrams.schemas.js +138 -0
  22. package/dist/data/connectors/gdelt-web-ngrams.schemas.js.map +1 -0
  23. package/dist/data/connectors/nasa-firms-fire.js +4 -0
  24. package/dist/data/connectors/nasa-firms-fire.js.map +1 -1
  25. package/dist/data/connectors/open-meteo-air-quality.js +27 -22
  26. package/dist/data/connectors/open-meteo-air-quality.js.map +1 -1
  27. package/dist/data/connectors/open-meteo-air-quality.schemas.d.ts +4 -1
  28. package/dist/data/connectors/open-meteo-air-quality.schemas.js +21 -1
  29. package/dist/data/connectors/open-meteo-air-quality.schemas.js.map +1 -1
  30. package/dist/data/connectors/open-meteo-flood.js +28 -23
  31. package/dist/data/connectors/open-meteo-flood.js.map +1 -1
  32. package/dist/data/connectors/open-meteo-flood.schemas.d.ts +4 -1
  33. package/dist/data/connectors/open-meteo-flood.schemas.js +21 -1
  34. package/dist/data/connectors/open-meteo-flood.schemas.js.map +1 -1
  35. package/dist/data/connectors/open-meteo-historical-weather.js +26 -21
  36. package/dist/data/connectors/open-meteo-historical-weather.js.map +1 -1
  37. package/dist/data/connectors/open-meteo-historical-weather.schemas.d.ts +4 -1
  38. package/dist/data/connectors/open-meteo-historical-weather.schemas.js +21 -1
  39. package/dist/data/connectors/open-meteo-historical-weather.schemas.js.map +1 -1
  40. package/dist/data/connectors/openaq-air-quality.js +50 -12
  41. package/dist/data/connectors/openaq-air-quality.js.map +1 -1
  42. package/dist/data/connectors/openaq-air-quality.schemas.d.ts +0 -4
  43. package/dist/data/connectors/openaq-air-quality.schemas.js +2 -2
  44. package/dist/data/connectors/openaq-air-quality.schemas.js.map +1 -1
  45. package/dist/data/connectors/youtube-public-content.js +76 -6
  46. package/dist/data/connectors/youtube-public-content.js.map +1 -1
  47. package/dist/data/connectors/youtube-public-content.schemas.d.ts +63 -3
  48. package/dist/data/connectors/youtube-public-content.schemas.js +56 -2
  49. package/dist/data/connectors/youtube-public-content.schemas.js.map +1 -1
  50. package/dist/data/contracts.d.ts +22 -1
  51. package/dist/data/runtime/bounded-http.d.ts +2 -0
  52. package/dist/data/runtime/bounded-http.js +221 -59
  53. package/dist/data/runtime/bounded-http.js.map +1 -1
  54. package/dist/data/runtime/execute.d.ts +2 -0
  55. package/dist/data/runtime/execute.js +82 -60
  56. package/dist/data/runtime/execute.js.map +1 -1
  57. package/dist/data/runtime/http-timing.d.ts +15 -0
  58. package/dist/data/runtime/http-timing.js +59 -0
  59. package/dist/data/runtime/http-timing.js.map +1 -0
  60. package/dist/data/runtime/http-transport.d.ts +1 -0
  61. package/dist/data/runtime/http-transport.js +27 -0
  62. package/dist/data/runtime/http-transport.js.map +1 -0
  63. package/dist/data/schemas/catalog.v1.json +46 -0
  64. package/dist/data/schemas/discovery.v1.json +12 -0
  65. package/dist/data/schemas/error.v1.json +1 -0
  66. package/dist/data/schemas/manifest.v1.json +19 -1
  67. package/dist/research/orchestration.js +341 -28
  68. package/dist/research/orchestration.js.map +1 -1
  69. package/dist/research/setup-command.js +37 -6
  70. package/dist/research/setup-command.js.map +1 -1
  71. package/dist/research/workspace/acquisition-routes.d.ts +1 -1
  72. package/dist/research/workspace/acquisition-routes.js +2 -11
  73. package/dist/research/workspace/acquisition-routes.js.map +1 -1
  74. package/dist/research/workspace/artifact-read-audit.d.ts +16 -0
  75. package/dist/research/workspace/artifact-read-audit.js +176 -0
  76. package/dist/research/workspace/artifact-read-audit.js.map +1 -0
  77. package/dist/research/workspace/artifact-trace.d.ts +12 -0
  78. package/dist/research/workspace/artifact-trace.js +109 -0
  79. package/dist/research/workspace/artifact-trace.js.map +1 -0
  80. package/dist/research/workspace/artifact-view-mcp.d.ts +75 -0
  81. package/dist/research/workspace/artifact-view-mcp.js +214 -0
  82. package/dist/research/workspace/artifact-view-mcp.js.map +1 -0
  83. package/dist/research/workspace/artifact-views.d.ts +100 -0
  84. package/dist/research/workspace/artifact-views.js +395 -0
  85. package/dist/research/workspace/artifact-views.js.map +1 -0
  86. package/dist/research/workspace/audit-bundle.d.ts +4 -0
  87. package/dist/research/workspace/audit-bundle.js +130 -11
  88. package/dist/research/workspace/audit-bundle.js.map +1 -1
  89. package/dist/research/workspace/broker.js +25 -4
  90. package/dist/research/workspace/broker.js.map +1 -1
  91. package/dist/research/workspace/constants.d.ts +1 -0
  92. package/dist/research/workspace/constants.js +1 -0
  93. package/dist/research/workspace/constants.js.map +1 -1
  94. package/dist/research/workspace/content-evidence.d.ts +1 -0
  95. package/dist/research/workspace/content-evidence.js +1 -1
  96. package/dist/research/workspace/content-evidence.js.map +1 -1
  97. package/dist/research/workspace/credentials.js +2 -1
  98. package/dist/research/workspace/credentials.js.map +1 -1
  99. package/dist/research/workspace/data-evidence-adapter.d.ts +71 -0
  100. package/dist/research/workspace/data-evidence-adapter.js +269 -59
  101. package/dist/research/workspace/data-evidence-adapter.js.map +1 -1
  102. package/dist/research/workspace/data-evidence-view.d.ts +58 -0
  103. package/dist/research/workspace/data-evidence-view.js +411 -0
  104. package/dist/research/workspace/data-evidence-view.js.map +1 -0
  105. package/dist/research/workspace/evidence-ledger.js +32 -29
  106. package/dist/research/workspace/evidence-ledger.js.map +1 -1
  107. package/dist/research/workspace/evidence.d.ts +28 -0
  108. package/dist/research/workspace/evidence.js +48 -0
  109. package/dist/research/workspace/evidence.js.map +1 -1
  110. package/dist/research/workspace/executor.d.ts +32 -2
  111. package/dist/research/workspace/executor.js +286 -42
  112. package/dist/research/workspace/executor.js.map +1 -1
  113. package/dist/research/workspace/investigation-attempt.d.ts +159 -0
  114. package/dist/research/workspace/investigation-attempt.js +619 -0
  115. package/dist/research/workspace/investigation-attempt.js.map +1 -0
  116. package/dist/research/workspace/investigation-audit.d.ts +20 -0
  117. package/dist/research/workspace/investigation-audit.js +306 -0
  118. package/dist/research/workspace/investigation-audit.js.map +1 -0
  119. package/dist/research/workspace/investigation-candidate.d.ts +84 -0
  120. package/dist/research/workspace/investigation-candidate.js +156 -0
  121. package/dist/research/workspace/investigation-candidate.js.map +1 -0
  122. package/dist/research/workspace/investigation-certification.d.ts +39 -0
  123. package/dist/research/workspace/investigation-certification.js +152 -0
  124. package/dist/research/workspace/investigation-certification.js.map +1 -0
  125. package/dist/research/workspace/investigation-close.d.ts +47 -0
  126. package/dist/research/workspace/investigation-close.js +153 -0
  127. package/dist/research/workspace/investigation-close.js.map +1 -0
  128. package/dist/research/workspace/investigation-lineage.d.ts +8 -0
  129. package/dist/research/workspace/investigation-lineage.js +10 -0
  130. package/dist/research/workspace/investigation-lineage.js.map +1 -0
  131. package/dist/research/workspace/investigation-observer.d.ts +22 -0
  132. package/dist/research/workspace/investigation-observer.js +122 -0
  133. package/dist/research/workspace/investigation-observer.js.map +1 -0
  134. package/dist/research/workspace/investigation-promotion.d.ts +129 -0
  135. package/dist/research/workspace/investigation-promotion.js +316 -0
  136. package/dist/research/workspace/investigation-promotion.js.map +1 -0
  137. package/dist/research/workspace/investigation-requirements.d.ts +5 -0
  138. package/dist/research/workspace/investigation-requirements.js +32 -0
  139. package/dist/research/workspace/investigation-requirements.js.map +1 -0
  140. package/dist/research/workspace/investigation-resources.d.ts +12 -0
  141. package/dist/research/workspace/investigation-resources.js +78 -0
  142. package/dist/research/workspace/investigation-resources.js.map +1 -0
  143. package/dist/research/workspace/investigation-source-export.d.ts +6 -0
  144. package/dist/research/workspace/investigation-source-export.js +68 -0
  145. package/dist/research/workspace/investigation-source-export.js.map +1 -0
  146. package/dist/research/workspace/investigation-store.d.ts +9 -0
  147. package/dist/research/workspace/investigation-store.js +55 -0
  148. package/dist/research/workspace/investigation-store.js.map +1 -0
  149. package/dist/research/workspace/investigation.d.ts +424 -0
  150. package/dist/research/workspace/investigation.js +716 -0
  151. package/dist/research/workspace/investigation.js.map +1 -0
  152. package/dist/research/workspace/native-process-supervisor.d.ts +1 -0
  153. package/dist/research/workspace/native-process-supervisor.js +97 -0
  154. package/dist/research/workspace/native-process-supervisor.js.map +1 -0
  155. package/dist/research/workspace/native-run.d.ts +150 -0
  156. package/dist/research/workspace/native-run.js +879 -0
  157. package/dist/research/workspace/native-run.js.map +1 -0
  158. package/dist/research/workspace/preflight.d.ts +11 -2
  159. package/dist/research/workspace/preflight.js +28 -20
  160. package/dist/research/workspace/preflight.js.map +1 -1
  161. package/dist/research/workspace/project-authority.js +2 -0
  162. package/dist/research/workspace/project-authority.js.map +1 -1
  163. package/dist/research/workspace/project-budget.d.ts +41 -0
  164. package/dist/research/workspace/project-budget.js +265 -0
  165. package/dist/research/workspace/project-budget.js.map +1 -0
  166. package/dist/research/workspace/project-mutations.d.ts +1 -1
  167. package/dist/research/workspace/project-mutations.js +29 -3
  168. package/dist/research/workspace/project-mutations.js.map +1 -1
  169. package/dist/research/workspace/projects.d.ts +66 -0
  170. package/dist/research/workspace/projects.js +182 -3
  171. package/dist/research/workspace/projects.js.map +1 -1
  172. package/dist/research/workspace/provider-budget.d.ts +3 -0
  173. package/dist/research/workspace/provider-budget.js +45 -0
  174. package/dist/research/workspace/provider-budget.js.map +1 -0
  175. package/dist/research/workspace/provider-state.d.ts +1 -0
  176. package/dist/research/workspace/provider-state.js +20 -0
  177. package/dist/research/workspace/provider-state.js.map +1 -0
  178. package/dist/research/workspace/publication-lineage.d.ts +34 -0
  179. package/dist/research/workspace/publication-lineage.js +165 -0
  180. package/dist/research/workspace/publication-lineage.js.map +1 -0
  181. package/dist/research/workspace/publication-workflow.d.ts +24 -0
  182. package/dist/research/workspace/publication-workflow.js +118 -14
  183. package/dist/research/workspace/publication-workflow.js.map +1 -1
  184. package/dist/research/workspace/request-provenance.d.ts +67 -0
  185. package/dist/research/workspace/request-provenance.js +115 -0
  186. package/dist/research/workspace/request-provenance.js.map +1 -0
  187. package/dist/research/workspace/review-executor.d.ts +6 -1
  188. package/dist/research/workspace/review-executor.js +39 -14
  189. package/dist/research/workspace/review-executor.js.map +1 -1
  190. package/dist/research/workspace/runtime.d.ts +64 -1
  191. package/dist/research/workspace/runtime.js +359 -112
  192. package/dist/research/workspace/runtime.js.map +1 -1
  193. package/dist/research/workspace/sanitization.js +1 -1
  194. package/dist/research/workspace/sanitization.js.map +1 -1
  195. package/dist/research/workspace/schema-compatibility.d.ts +5 -0
  196. package/dist/research/workspace/schema-compatibility.js +55 -0
  197. package/dist/research/workspace/schema-compatibility.js.map +1 -0
  198. package/dist/research/workspace/scientific-amendment.d.ts +103 -0
  199. package/dist/research/workspace/scientific-amendment.js +537 -0
  200. package/dist/research/workspace/scientific-amendment.js.map +1 -0
  201. package/dist/research/workspace/scientific-design.js +8 -17
  202. package/dist/research/workspace/scientific-design.js.map +1 -1
  203. package/dist/research/workspace/scientific-fulfillment-audit.d.ts +21 -0
  204. package/dist/research/workspace/scientific-fulfillment-audit.js +217 -0
  205. package/dist/research/workspace/scientific-fulfillment-audit.js.map +1 -0
  206. package/dist/research/workspace/scientific-fulfillment.d.ts +130 -0
  207. package/dist/research/workspace/scientific-fulfillment.js +553 -0
  208. package/dist/research/workspace/scientific-fulfillment.js.map +1 -0
  209. package/dist/research/workspace/scientific-review-execution.js +236 -75
  210. package/dist/research/workspace/scientific-review-execution.js.map +1 -1
  211. package/dist/research/workspace/scientific-review.d.ts +6 -1
  212. package/dist/research/workspace/scientific-review.js +228 -52
  213. package/dist/research/workspace/scientific-review.js.map +1 -1
  214. package/dist/research/workspace/setup-catalog.js +3 -3
  215. package/dist/research/workspace/setup-release.d.ts +22 -0
  216. package/dist/research/workspace/setup-release.js +426 -0
  217. package/dist/research/workspace/setup-release.js.map +1 -0
  218. package/dist/research/workspace/setup-runtime-integrity.d.ts +2 -0
  219. package/dist/research/workspace/setup-runtime-integrity.js +31 -0
  220. package/dist/research/workspace/setup-runtime-integrity.js.map +1 -0
  221. package/dist/research/workspace/setup-upgrade.d.ts +17 -0
  222. package/dist/research/workspace/setup-upgrade.js +784 -0
  223. package/dist/research/workspace/setup-upgrade.js.map +1 -0
  224. package/dist/research/workspace/setup.d.ts +31 -39
  225. package/dist/research/workspace/setup.js +220 -17
  226. package/dist/research/workspace/setup.js.map +1 -1
  227. package/dist/research/workspace/task-acceptance.d.ts +17 -2
  228. package/dist/research/workspace/task-acceptance.js +106 -10
  229. package/dist/research/workspace/task-acceptance.js.map +1 -1
  230. package/dist/research/workspace/task-audit.d.ts +5 -1
  231. package/dist/research/workspace/task-audit.js +70 -5
  232. package/dist/research/workspace/task-audit.js.map +1 -1
  233. package/dist/research/workspace/task-contract.d.ts +4 -1
  234. package/dist/research/workspace/task-contract.js +26 -5
  235. package/dist/research/workspace/task-contract.js.map +1 -1
  236. package/dist/research/workspace/types.d.ts +50 -3
  237. package/dist/research/workspace/workspace.js +34 -4
  238. package/dist/research/workspace/workspace.js.map +1 -1
  239. 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 applyResearchSetupPlan(planPath: string, options?: ApplyResearchSetupOptions): Promise<{
179
- schemaVersion: 1;
180
- plan: ResearchSetupPlan;
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
- schemaVersion: 1;
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
- validateLicenseAcceptances(selected, input.acceptedLicenseIds);
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: input.acceptedLicenseIds,
370
+ acceptedLicenseIds,
340
371
  credentialEnvironment: Object.fromEntries(prior.credentialSources.map((credential) => [credential.id, credential.fromEnvironment])),
341
372
  settings: prior.settings,
342
- agentRoutes: prior.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 = await mkdtemp(join(tmpdir(), "tiangong-research-npm-cache-"));
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(plan, sourceId, runner, setupInstallerEnvironment));
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
- await rm(installerCacheDirectory, { recursive: true, force: true });
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 updateAvailable = drift.length > 0 || cliVersionDrift !== null;
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: updateAvailable
1770
- ? "Use the active exact CLI release to create, review, and apply a replacement immutable plan; upgrade never runs a floating CLI or Skills update."
1771
- : "No catalog migration is required. Installed tree drift is reported separately by setup status/doctor.",
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: agent === "codex" ? "codex" : agent === "claude" ? "claude" : `${agent}-native-host`,
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.v2" ||
3135
- manifest.file !== artifactPath ||
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",