2sagaco48 1.0.0

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 (365) hide show
  1. package/diagnostics.mjs +141 -0
  2. package/dist/compute.worker-j5ahIpF-.js +1 -0
  3. package/dist/graph.worker-DG6iGCB9.js +1 -0
  4. package/dist/index.html +2314 -0
  5. package/flatten-guide.md +248 -0
  6. package/index.html +12 -0
  7. package/package.json +38 -0
  8. package/src/App.orig.tsx +204 -0
  9. package/src/App.orig1.tsx +27 -0
  10. package/src/App.orig2.tsx +25 -0
  11. package/src/App.tsx +3 -0
  12. package/src/BaseApp.tsx +18 -0
  13. package/src/INTEGRATION_LEDGER.md +22 -0
  14. package/src/PERSIST_CANARY.orig.txt +1 -0
  15. package/src/PERSIST_CANARY.txt +1 -0
  16. package/src/REGRESSION_LEDGER.md +651 -0
  17. package/src/TEMPLATE_PIPELINE_AUDIT.md +208 -0
  18. package/src/WILLIAMS_PERSONA_GUIDE.md +62 -0
  19. package/src/chat/VeritasChat.tsx +69 -0
  20. package/src/chat/synthesis.ts +31 -0
  21. package/src/chat/tier.ts +45 -0
  22. package/src/components/AdaptersPage.orig.tsx +99 -0
  23. package/src/components/AdaptersPage.tsx +3 -0
  24. package/src/components/AdversarialPanel.tsx +136 -0
  25. package/src/components/AnchorBaselinePanel.tsx +75 -0
  26. package/src/components/AnswerPanel.tsx +60 -0
  27. package/src/components/ArtifactPanel.tsx +43 -0
  28. package/src/components/ChatApp.orig.tsx +1582 -0
  29. package/src/components/ChatApp.orig1.tsx +722 -0
  30. package/src/components/ChatApp.tsx +95 -0
  31. package/src/components/ChatAugmentPanels.tsx +73 -0
  32. package/src/components/CitationLedgerPanel.tsx +313 -0
  33. package/src/components/ComputeSandboxPanel.tsx +130 -0
  34. package/src/components/ConfigPanel.tsx +110 -0
  35. package/src/components/ControlPlanePage.tsx +195 -0
  36. package/src/components/CreativeTreeLifePage.tsx +234 -0
  37. package/src/components/CreativeTreeOfLifePanel.tsx +149 -0
  38. package/src/components/DebugTracePanel.tsx +137 -0
  39. package/src/components/DeepReasoningTrace.tsx +48 -0
  40. package/src/components/EntitySheetPanel.tsx +51 -0
  41. package/src/components/FailureModesPanel.tsx +104 -0
  42. package/src/components/GBSDashboard.tsx +239 -0
  43. package/src/components/GraphView.tsx +116 -0
  44. package/src/components/HUD.tsx +125 -0
  45. package/src/components/HypothesisPanel.tsx +67 -0
  46. package/src/components/InnovationGenomeEngine.tsx +792 -0
  47. package/src/components/InnovationPersonaGuide.tsx +348 -0
  48. package/src/components/InnovationPersonaPanel.tsx +289 -0
  49. package/src/components/LiveResourceHUD.tsx +109 -0
  50. package/src/components/LongWriterPanel.tsx +112 -0
  51. package/src/components/MainPipelineV10Bridge.tsx +72 -0
  52. package/src/components/MarkdownLite.tsx +63 -0
  53. package/src/components/MemoryInspector.tsx +38 -0
  54. package/src/components/MemoryMonitor.tsx +52 -0
  55. package/src/components/MemoryStressPanel.tsx +176 -0
  56. package/src/components/ModulesPage.tsx +171 -0
  57. package/src/components/PipelineDebugConsole.orig.tsx +1856 -0
  58. package/src/components/PipelineDebugConsole.tsx +3 -0
  59. package/src/components/PreFlightHUD.tsx +67 -0
  60. package/src/components/PrismaFetchTracePanel.tsx +87 -0
  61. package/src/components/ReportOSPanel.tsx +165 -0
  62. package/src/components/ResourceEstimatorPage.tsx +327 -0
  63. package/src/components/RichText.tsx +181 -0
  64. package/src/components/SagaOsPanel.tsx +605 -0
  65. package/src/components/SagaOsReference.tsx +421 -0
  66. package/src/components/SagaOsV2Panel.tsx +594 -0
  67. package/src/components/SagaStyleTab.tsx +382 -0
  68. package/src/components/SageBlueprintPanel.tsx +416 -0
  69. package/src/components/SharedChatInput.tsx +77 -0
  70. package/src/components/StatFinancePanel.tsx +190 -0
  71. package/src/components/StylePersonaPanel.tsx +128 -0
  72. package/src/components/TemplatesPage.tsx +300 -0
  73. package/src/components/TestPanel.tsx +63 -0
  74. package/src/components/TraceLog.tsx +89 -0
  75. package/src/components/V15CalibrationAugment.tsx +1134 -0
  76. package/src/components/V15CalibrationDialog.tsx +1871 -0
  77. package/src/components/V15Overlay.orig.tsx +120 -0
  78. package/src/components/V15Overlay.tsx +4 -0
  79. package/src/components/V15OverlayWrapper.tsx +362 -0
  80. package/src/components/V15Toggle.tsx +34 -0
  81. package/src/console/DiagnosticRecoveryPanel.tsx +358 -0
  82. package/src/console/EngineeringConsole.tsx +103 -0
  83. package/src/console/FictionSystemPanels.tsx +882 -0
  84. package/src/console/InspectorPanels.tsx +254 -0
  85. package/src/console/ManuscriptGraderPanel.tsx +182 -0
  86. package/src/console/RecursiveReviserPanel.tsx +245 -0
  87. package/src/console/SeedControlPanel.tsx +135 -0
  88. package/src/console/StoryControllerPanel.tsx +443 -0
  89. package/src/console/engineBridge.ts +258 -0
  90. package/src/console/gemini.ts +106 -0
  91. package/src/console/grading.ts +250 -0
  92. package/src/console/util.ts +45 -0
  93. package/src/fiction/continuity.ts +372 -0
  94. package/src/fiction/crash-protection.ts +111 -0
  95. package/src/fiction/diagnostics.ts +208 -0
  96. package/src/fiction/diff.ts +74 -0
  97. package/src/fiction/entity-state-machine.ts +214 -0
  98. package/src/fiction/nive-engine.ts +404 -0
  99. package/src/fiction/pipeline-selftest.ts +132 -0
  100. package/src/fiction/seed-control.ts +193 -0
  101. package/src/fiction/story-engine.ts +326 -0
  102. package/src/fiction/types.ts +68 -0
  103. package/src/flatten-guide.md +379 -0
  104. package/src/index.css +14 -0
  105. package/src/index.orig.css +13 -0
  106. package/src/lib/academic-sources.base.ts +188 -0
  107. package/src/lib/academic-sources.orig.ts +28 -0
  108. package/src/lib/academic-sources.ts +10 -0
  109. package/src/lib/advanced-math.ts +119 -0
  110. package/src/lib/adversarial-engine.base.ts +409 -0
  111. package/src/lib/adversarial-engine.ts +82 -0
  112. package/src/lib/ai-revision.ts +623 -0
  113. package/src/lib/app-state.tsx +426 -0
  114. package/src/lib/artifact-registry.ts +97 -0
  115. package/src/lib/artifacts.ts +180 -0
  116. package/src/lib/atlas-dr.ts +167 -0
  117. package/src/lib/browser-mtls.ts +127 -0
  118. package/src/lib/browser-queue.ts +221 -0
  119. package/src/lib/browser-search-scraper.base.ts +382 -0
  120. package/src/lib/browser-search-scraper.orig.ts +90 -0
  121. package/src/lib/browser-search-scraper.ts +10 -0
  122. package/src/lib/calc-interceptor.ts +82 -0
  123. package/src/lib/citation-lane-tap.ts +78 -0
  124. package/src/lib/citation-ledger-store.ts +369 -0
  125. package/src/lib/citation-ledger.ts +203 -0
  126. package/src/lib/compute-sandbox.ts +215 -0
  127. package/src/lib/compute.worker.ts +153 -0
  128. package/src/lib/connectors/gemini.ts +120 -0
  129. package/src/lib/connectors/jina.ts +233 -0
  130. package/src/lib/connectors/marketdata.ts +51 -0
  131. package/src/lib/connectors/prismafetch.base.ts +175 -0
  132. package/src/lib/connectors/prismafetch.ts +1 -0
  133. package/src/lib/connectors/serpapi.ts +65 -0
  134. package/src/lib/connectors/wikidata.ts +44 -0
  135. package/src/lib/constraints.ts +331 -0
  136. package/src/lib/continuation-detector.base.ts +153 -0
  137. package/src/lib/continuation-detector.ts +48 -0
  138. package/src/lib/contradraft.ts +168 -0
  139. package/src/lib/cors-proxy.ts +120 -0
  140. package/src/lib/coverage.ts +81 -0
  141. package/src/lib/debug/architecture-prescription.ts +556 -0
  142. package/src/lib/debug/covea-repair.ts +543 -0
  143. package/src/lib/debug/helios-ground.ts +319 -0
  144. package/src/lib/debug/intent-decomposer.ts +281 -0
  145. package/src/lib/debug/intent-lattice.ts +349 -0
  146. package/src/lib/debug/pipeline-diagnosis.ts +1149 -0
  147. package/src/lib/debug/pipeline-trace-bus.ts +424 -0
  148. package/src/lib/debug/prompt-forge.ts +678 -0
  149. package/src/lib/debug/repair-sites.ts +513 -0
  150. package/src/lib/debug/research-phase.ts +266 -0
  151. package/src/lib/debug/retrieval-context.ts +76 -0
  152. package/src/lib/debug/retrieval-hardener.ts +142 -0
  153. package/src/lib/debug/scraper-debug-runner.ts +576 -0
  154. package/src/lib/debug/scraper-forensics.ts +418 -0
  155. package/src/lib/debug/scraper-lane-roadmap.ts +136 -0
  156. package/src/lib/debug/self-test.ts +415 -0
  157. package/src/lib/debug/step-attribution.ts +211 -0
  158. package/src/lib/debug/template-rubric.ts +301 -0
  159. package/src/lib/debug/unified-innovation.ts +126 -0
  160. package/src/lib/debug/veritas-hybrid-scraper.ts +335 -0
  161. package/src/lib/defense-registry.ts +104 -0
  162. package/src/lib/defenses.ts +162 -0
  163. package/src/lib/deterministic-citation-ledger.ts +174 -0
  164. package/src/lib/elo-registry.base.ts +117 -0
  165. package/src/lib/elo-registry.ts +1 -0
  166. package/src/lib/entity-resolver.ts +291 -0
  167. package/src/lib/failure-modes.ts +267 -0
  168. package/src/lib/feature-registry.ts +69 -0
  169. package/src/lib/flaw-registry.ts +143 -0
  170. package/src/lib/flaws/_template.ts +52 -0
  171. package/src/lib/flaws/builtins.ts +63 -0
  172. package/src/lib/flaws/finance.ts +169 -0
  173. package/src/lib/flaws/fixers.ts +10 -0
  174. package/src/lib/flaws/index.ts +32 -0
  175. package/src/lib/flaws/legal.ts +157 -0
  176. package/src/lib/flaws/medical.ts +188 -0
  177. package/src/lib/flaws/original-defenses-pack.ts +81 -0
  178. package/src/lib/flaws/sample-declarative-pack.json +38 -0
  179. package/src/lib/flaws/selftest.ts +201 -0
  180. package/src/lib/flaws/software-extended.ts +125 -0
  181. package/src/lib/flaws/software-rn-webgl.ts +182 -0
  182. package/src/lib/flaws/statistics-advanced.ts +46 -0
  183. package/src/lib/flaws/statistics.ts +61 -0
  184. package/src/lib/gbse/config.ts +20 -0
  185. package/src/lib/gbse/engine.ts +226 -0
  186. package/src/lib/gbse/graph.ts +118 -0
  187. package/src/lib/gbse/graph.worker.ts +21 -0
  188. package/src/lib/gbse/tests.ts +117 -0
  189. package/src/lib/gbse/tiers.ts +65 -0
  190. package/src/lib/gbse/types.ts +94 -0
  191. package/src/lib/innovation-genome-engine-v2.orig.ts +1001 -0
  192. package/src/lib/innovation-genome-engine-v2.ts +3 -0
  193. package/src/lib/innovation-genome-engine.orig.ts +330 -0
  194. package/src/lib/innovation-genome-engine.ts +3 -0
  195. package/src/lib/innovation-genome-v10.orig.ts +314 -0
  196. package/src/lib/innovation-genome-v10.ts +2 -0
  197. package/src/lib/innovation-genome-v3.orig.ts +2015 -0
  198. package/src/lib/innovation-genome-v3.ts +2 -0
  199. package/src/lib/innovation-genome-v4.orig.ts +1959 -0
  200. package/src/lib/innovation-genome-v4.ts +2 -0
  201. package/src/lib/innovation-genome-v5.orig.ts +1210 -0
  202. package/src/lib/innovation-genome-v5.ts +2 -0
  203. package/src/lib/innovation-genome-v7.orig.ts +2549 -0
  204. package/src/lib/innovation-genome-v7.ts +2 -0
  205. package/src/lib/innovation-genome-v8.orig.ts +1485 -0
  206. package/src/lib/innovation-genome-v8.ts +2 -0
  207. package/src/lib/innovation-genome-v9.orig.ts +643 -0
  208. package/src/lib/innovation-genome-v9.ts +2 -0
  209. package/src/lib/jina.base.ts +293 -0
  210. package/src/lib/jina.ts +1 -0
  211. package/src/lib/live-telemetry.ts +61 -0
  212. package/src/lib/longwriter.ts +84 -0
  213. package/src/lib/manuscript-grade-v2.ts +298 -0
  214. package/src/lib/memory-governor.ts +173 -0
  215. package/src/lib/memory-stress-tests.ts +248 -0
  216. package/src/lib/model-intelligence.ts +48 -0
  217. package/src/lib/model-rotator.ts +75 -0
  218. package/src/lib/models.orig.ts +513 -0
  219. package/src/lib/models.ts +151 -0
  220. package/src/lib/n-deep.base.ts +592 -0
  221. package/src/lib/n-deep.ts +51 -0
  222. package/src/lib/nih-simulator.ts +56 -0
  223. package/src/lib/nih-vulnerability-fixes.ts +460 -0
  224. package/src/lib/omega-templates.base.ts +294 -0
  225. package/src/lib/omega-templates.ts +225 -0
  226. package/src/lib/omni-nexus.ts +64 -0
  227. package/src/lib/oracle-adapters.ts +67 -0
  228. package/src/lib/oracle-registry.ts +163 -0
  229. package/src/lib/orchestrator.ts +357 -0
  230. package/src/lib/output-boundary.ts +235 -0
  231. package/src/lib/overrides/vite-native-chaos-harness.ts +154 -0
  232. package/src/lib/overrides/vite-native-contract-plane.ts +245 -0
  233. package/src/lib/overrides/vite-native-doctor-plane.ts +208 -0
  234. package/src/lib/overrides/vite-native-knowledge-store.ts +267 -0
  235. package/src/lib/overrides/vite-native-policy-plane.ts +190 -0
  236. package/src/lib/overrides/vite-native-replay-plane.ts +197 -0
  237. package/src/lib/overrides/vite-native-runtime-plane.ts +106 -0
  238. package/src/lib/overrides/vite-native-scraper.ts +848 -0
  239. package/src/lib/overrides/vite-native-selftest-functional.ts +217 -0
  240. package/src/lib/overrides/vite-native-selftest.ts +183 -0
  241. package/src/lib/overrides/vite-native-snapshot-plane.ts +123 -0
  242. package/src/lib/philosophy-toolkit.ts +75 -0
  243. package/src/lib/pipeline.orig.ts +659 -0
  244. package/src/lib/pipeline.ts +42 -0
  245. package/src/lib/precache.ts +128 -0
  246. package/src/lib/py-sandbox.ts +205 -0
  247. package/src/lib/quality-score.ts +96 -0
  248. package/src/lib/quant-engine.ts +231 -0
  249. package/src/lib/quant-lib.ts +80 -0
  250. package/src/lib/reportos.ts +175 -0
  251. package/src/lib/research-os.ts +306 -0
  252. package/src/lib/resource-estimator.ts +114 -0
  253. package/src/lib/rpm-governor.ts +93 -0
  254. package/src/lib/runtime-estimator.ts +135 -0
  255. package/src/lib/sage/empty-space-v6.ts +560 -0
  256. package/src/lib/sage/empty-space-v7.ts +222 -0
  257. package/src/lib/sage/empty-space.ts +733 -0
  258. package/src/lib/sage/engine.ts +786 -0
  259. package/src/lib/sage/index.ts +17 -0
  260. package/src/lib/sage/judge.ts +246 -0
  261. package/src/lib/sage/prng.ts +53 -0
  262. package/src/lib/sage/reality-grounding.ts +380 -0
  263. package/src/lib/sage/repetition.ts +151 -0
  264. package/src/lib/sage/saga-os-v2-engines.ts +1870 -0
  265. package/src/lib/sage/saga-os-v2.ts +274 -0
  266. package/src/lib/sage/saga-os-v3-core.ts +1491 -0
  267. package/src/lib/sage/saga-os-v3-release.ts +739 -0
  268. package/src/lib/sage/saga-os-v4-aureate.ts +1161 -0
  269. package/src/lib/sage/saga-os-v4.ts +212 -0
  270. package/src/lib/sage/saga-os-v5.ts +205 -0
  271. package/src/lib/sage/saga-os-v6.ts +346 -0
  272. package/src/lib/sage/saga-os-v7.ts +314 -0
  273. package/src/lib/sage/saga-os-v8.ts +505 -0
  274. package/src/lib/sage/saga-os.ts +329 -0
  275. package/src/lib/sage/taxonomy.ts +403 -0
  276. package/src/lib/sage/unified-roll.ts +524 -0
  277. package/src/lib/sage/worked-sketches.ts +44 -0
  278. package/src/lib/sage.ts +166 -0
  279. package/src/lib/scraper-debug-bus.ts +53 -0
  280. package/src/lib/scraper-enhanced.orig.ts +153 -0
  281. package/src/lib/scraper-enhanced.ts +10 -0
  282. package/src/lib/scraper-hardener.base.orig.ts +155 -0
  283. package/src/lib/scraper-hardener.base.ts +317 -0
  284. package/src/lib/scraper-hardener.ts +1 -0
  285. package/src/lib/scraper-palisade/palisade-adjudicator.orig.ts +419 -0
  286. package/src/lib/scraper-palisade/palisade-adjudicator.ts +13 -0
  287. package/src/lib/scraper-vnext/arbiter-omega.orig.ts +688 -0
  288. package/src/lib/scraper-vnext/arbiter-omega.ts +13 -0
  289. package/src/lib/scraper-vnext/canonical-portfolio-augments.ts +479 -0
  290. package/src/lib/scraper-vnext/canonical-portfolio-orchestrator.orig.ts +1529 -0
  291. package/src/lib/scraper-vnext/canonical-portfolio-orchestrator.ts +13 -0
  292. package/src/lib/scraper-vnext/conclave-omega.ts +1830 -0
  293. package/src/lib/scraper-vnext/content-extractor-v2.ts +226 -0
  294. package/src/lib/scraper-vnext/diagnostics-suite.ts +36 -0
  295. package/src/lib/scraper-vnext/epistemic-packer.ts +97 -0
  296. package/src/lib/scraper-vnext/fusion-v2.ts +65 -0
  297. package/src/lib/scraper-vnext/hydra-reader.orig.ts +1216 -0
  298. package/src/lib/scraper-vnext/hydra-reader.ts +13 -0
  299. package/src/lib/scraper-vnext/native-scraper-browser-vnext.orig.ts +91 -0
  300. package/src/lib/scraper-vnext/native-scraper-browser-vnext.ts +13 -0
  301. package/src/lib/scraper-vnext/nexus-consensus.orig.ts +905 -0
  302. package/src/lib/scraper-vnext/nexus-consensus.ts +13 -0
  303. package/src/lib/scraper-vnext/portfolio-consensus-adjudicator.ts +804 -0
  304. package/src/lib/scraper-vnext/portfolio-consensus-memory.ts +377 -0
  305. package/src/lib/scraper-vnext/portfolio-terminal-governor.ts +548 -0
  306. package/src/lib/scraper-vnext/query-strategist.orig.ts +224 -0
  307. package/src/lib/scraper-vnext/query-strategist.ts +423 -0
  308. package/src/lib/scraper-vnext/retrieval-accelerator.ts +708 -0
  309. package/src/lib/scraper-vnext/retrieval-audit-augments.ts +477 -0
  310. package/src/lib/scraper-vnext/retrieval-control-plane.ts +904 -0
  311. package/src/lib/scraper-vnext/retrieval-policy-augments.ts +358 -0
  312. package/src/lib/scraper-vnext/safe-fetch-v2.ts +157 -0
  313. package/src/lib/scraper-vnext/sentinel-omega.ts +56 -0
  314. package/src/lib/scraper-vnext/sentinel-orchestrator.ts +69 -0
  315. package/src/lib/scraper-vnext/sibyl-oracle.orig.ts +413 -0
  316. package/src/lib/scraper-vnext/sibyl-oracle.ts +13 -0
  317. package/src/lib/scraper-vnext/smart-read-v2.ts +55 -0
  318. package/src/lib/scraper-vnext/spa-rescue-bridge.ts +608 -0
  319. package/src/lib/scraper-vnext/strata-engine.orig.ts +2666 -0
  320. package/src/lib/scraper-vnext/strata-engine.ts +13 -0
  321. package/src/lib/scraper-vnext/structured-source-adapter.orig.ts +369 -0
  322. package/src/lib/scraper-vnext/structured-source-adapter.ts +34 -0
  323. package/src/lib/scraper-vnext/terminal-complete.ts +224 -0
  324. package/src/lib/scraper-vnext/terminal-final.ts +277 -0
  325. package/src/lib/scraper-vnext/terminal-saturation.ts +345 -0
  326. package/src/lib/scraper-vnext/terminal-wire.ts +425 -0
  327. package/src/lib/scraper-vnext/vanguard-titanium.orig.ts +467 -0
  328. package/src/lib/scraper-vnext/vanguard-titanium.ts +17 -0
  329. package/src/lib/search-cache.ts +138 -0
  330. package/src/lib/sloop-runner.base.ts +223 -0
  331. package/src/lib/sloop-runner.ts +104 -0
  332. package/src/lib/sloop.ts +114 -0
  333. package/src/lib/small-model-adapters.ts +82 -0
  334. package/src/lib/sscp.ts +86 -0
  335. package/src/lib/system-map.ts +54 -0
  336. package/src/lib/uni-node.ts +86 -0
  337. package/src/lib/universal-rigor-guard.ts +433 -0
  338. package/src/lib/v15-gate-testbed.ts +274 -0
  339. package/src/lib/v15-gemini.base.ts +89 -0
  340. package/src/lib/v15-gemini.ts +1 -0
  341. package/src/lib/v15-grounding.orig.ts +241 -0
  342. package/src/lib/v15-grounding.ts +79 -0
  343. package/src/lib/v15-pipeline.base.ts +769 -0
  344. package/src/lib/v15-pipeline.orig.ts +1154 -0
  345. package/src/lib/v15-pipeline.ts +674 -0
  346. package/src/lib/v15-questions.ts +64 -0
  347. package/src/lib/v15-rate-limiter.orig.ts +91 -0
  348. package/src/lib/v15-rate-limiter.ts +48 -0
  349. package/src/lib/v15-state.base.ts +87 -0
  350. package/src/lib/v15-state.ts +28 -0
  351. package/src/lib/visual-table-generator.tsx +207 -0
  352. package/src/lib/wasm-runtime.ts +133 -0
  353. package/src/lib/williams-persona-guide.ts +265 -0
  354. package/src/lib/williams-style.base.ts +464 -0
  355. package/src/lib/williams-style.ts +59 -0
  356. package/src/lib/worker-pool.ts +96 -0
  357. package/src/lib/writing-tiers.ts +125 -0
  358. package/src/main.orig.tsx +10 -0
  359. package/src/main.tsx +10 -0
  360. package/src/utils/cn.orig.ts +6 -0
  361. package/src/utils/cn.ts +6 -0
  362. package/src/vite-env.d.ts +1 -0
  363. package/tsconfig.json +31 -0
  364. package/unify.mjs +537 -0
  365. package/vite.config.ts +18 -0
@@ -0,0 +1,424 @@
1
+ /**
2
+ * pipeline-trace-bus.ts — NET-NEW WORKSPACE MODULE (Type C seam)
3
+ * ===========================================================================
4
+ * Durable, dependency-free recorder for every observable event the VERITAS
5
+ * V15 / GBSE pipeline emits.
6
+ *
7
+ * WHAT THIS IS AND IS NOT
8
+ * -----------------------
9
+ * This module records ONLY events that actually fired. It never synthesises,
10
+ * interpolates, or infers a stage that did not emit. If the pipeline is silent
11
+ * for a phase, the phase is absent from the trace — that absence is itself a
12
+ * finding, not something to paper over.
13
+ *
14
+ * OBSERVABILITY SOURCES (all three are real, verified against package source)
15
+ * 1. `onProgress(s: string)` — threaded by `runV15OnQuestion` through every
16
+ * stage: grounding, best-of-N, HDIG, CoVe, adversarial preflight, depth-N
17
+ * repair, adversarial red-team, repair accept/reject, polish, citation
18
+ * audit. Intercepted in the `src/lib/v15-pipeline.ts` seam.
19
+ * 2. `scraper-debug-bus` — every scraper lane (vanguard, hydra, nexus, sibyl,
20
+ * strata, palisade, arbiter, vnext, academic) emits timestamped lines.
21
+ * 3. `outcome.*` — the returned object carries passHistory, coveReport,
22
+ * adversarialPreview, candidates (best-of-N), citationAudit (with the
23
+ * stage each source was FIRST admitted at), guardScore, judgeScore.
24
+ *
25
+ * NON-INTERCEPTABLE (documented in flatten-guide.md §9)
26
+ * `groundQuestion` is called RELATIVELY by the pipeline, so it cannot be
27
+ * wrapped. Retrieval is therefore observed via (1) and (2), not by wrapping.
28
+ * ===========================================================================
29
+ */
30
+
31
+ export type PhaseId =
32
+ | "init"
33
+ | "genome"
34
+ | "grounding"
35
+ | "bestofn"
36
+ | "draft"
37
+ | "hdig"
38
+ | "reground"
39
+ | "cove"
40
+ | "adv-preflight"
41
+ | "repair"
42
+ | "adversarial"
43
+ | "adv-repair"
44
+ | "polish"
45
+ | "citation"
46
+ | "judge"
47
+ | "covea"
48
+ | "done"
49
+ | "error"
50
+ | "other";
51
+
52
+ export interface PhaseMeta {
53
+ id: PhaseId;
54
+ label: string;
55
+ color: string;
56
+ /** What this phase is responsible for — shown in the console. */
57
+ role: string;
58
+ }
59
+
60
+ export const PHASES: PhaseMeta[] = [
61
+ { id: "init", label: "Init", color: "#64748b", role: "Profile resolution, model pool, rate-limit budget." },
62
+ { id: "genome", label: "Innovation Genome", color: "#a855f7", role: "v3–v10 creative/compliance plane; injects discovery directive into the question." },
63
+ { id: "grounding", label: "Grounding", color: "#0ea5e9", role: "Template-directed or single-query web retrieval into the citation ledger." },
64
+ { id: "bestofn", label: "Best-of-N", color: "#14b8a6", role: "N distinct outlines generated, scored by density; winner expanded to full draft." },
65
+ { id: "draft", label: "Draft", color: "#22c55e", role: "Full-length generation against the evidence block + style directives." },
66
+ { id: "hdig", label: "HDIG", color: "#06b6d4", role: "Hypothesis-driven iterative grounding — targeted re-search on detected gaps." },
67
+ { id: "reground", label: "Re-ground", color: "#0891b2", role: "Stage-triggered supplemental retrieval." },
68
+ { id: "cove", label: "CoVe", color: "#f59e0b", role: "Chain-of-Verification: plan questions, answer them INDEPENDENTLY, cross-check." },
69
+ { id: "adv-preflight", label: "Adv Preflight", color: "#fb923c", role: "Pre-N-Deep red team; blocking defects become mandatory constraints." },
70
+ { id: "repair", label: "Depth Repair", color: "#8b5cf6", role: "N-Deep localized patch passes; each accepted only on score+severity improvement." },
71
+ { id: "adversarial", label: "Adversarial", color: "#ef4444", role: "Full red-team critique; defect list + verdict." },
72
+ { id: "adv-repair", label: "Adv Repair", color: "#dc2626", role: "Monotonic repair pass — rejected if it would drop the guard score." },
73
+ { id: "polish", label: "Polish", color: "#ec4899", role: "Structure/scaffolding fix without content change; rejected on score drop." },
74
+ { id: "citation", label: "Citation Audit", color: "#3b82f6", role: "Tag census: trusted / untrusted / missing, then entailment verification." },
75
+ { id: "judge", label: "Judge Panel", color: "#eab308", role: "Multi-model panel scoring; excluded judges recorded with reason." },
76
+ { id: "covea", label: "COVEA Repair", color: "#7c3aed", role: "Targeted post-completion CoVe + adversarial repair (workspace-added, sentence-scoped, ≤20% total edit budget)." },
77
+ { id: "done", label: "Done", color: "#10b981", role: "Terminal." },
78
+ { id: "error", label: "Error", color: "#b91c1c", role: "Caught failure — pipeline continued or aborted." },
79
+ { id: "other", label: "Other", color: "#94a3b8", role: "Unclassified emission." },
80
+ ];
81
+
82
+ export const PHASE_MAP: Record<PhaseId, PhaseMeta> = Object.fromEntries(
83
+ PHASES.map((p) => [p.id, p])
84
+ ) as Record<PhaseId, PhaseMeta>;
85
+
86
+ /**
87
+ * Classifier — maps a raw onProgress string to a phase.
88
+ * Patterns are taken VERBATIM from the emitting call sites in
89
+ * `v15-pipeline.orig.ts`. Order matters: most specific first.
90
+ */
91
+ const CLASSIFIERS: Array<[RegExp, PhaseId]> = [
92
+ [/^\[Innovation Genome/i, "genome"],
93
+ [/best-of-N:/i, "bestofn"],
94
+ [/^HDIG/i, "hdig"],
95
+ [/^Re-ground \(/i, "reground"],
96
+ [/^CoVe:/i, "cove"],
97
+ [/adversarial preflight|adv-preflight/i, "adv-preflight"],
98
+ [/adversarial repair/i, "adv-repair"],
99
+ [/adversarial ·|adversarial red-team|adversarial engine|adversarial:/i, "adversarial"],
100
+ [/^depth \d+:/i, "repair"],
101
+ [/^polish/i, "polish"],
102
+ [/citation audit|entailment/i, "citation"],
103
+ [/judging|judge panel|judges excluded/i, "judge"],
104
+ [/template-directed grounding|web grounding|^grounded |^grounding|grounded via|grounding unavailable|grounded \[/i, "grounding"],
105
+ [/^drafting/i, "draft"],
106
+ [/^done$/i, "done"],
107
+ [/unavailable|failed|error/i, "error"],
108
+ ];
109
+
110
+ export function classifyProgress(message: string): PhaseId {
111
+ for (const [re, id] of CLASSIFIERS) if (re.test(message)) return id;
112
+ return "other";
113
+ }
114
+
115
+ export interface TraceEvent {
116
+ seq: number;
117
+ ts: number;
118
+ /** ms since run start */
119
+ dt: number;
120
+ phase: PhaseId;
121
+ source: "progress" | "scraper" | "outcome" | "system";
122
+ /** scraper lane name, when source === "scraper" */
123
+ lane?: string;
124
+ message: string;
125
+ }
126
+
127
+ export interface PassRecord {
128
+ index: number;
129
+ guardScore: number;
130
+ accepted: boolean;
131
+ note: string;
132
+ textLength?: number;
133
+ critical?: number;
134
+ major?: number;
135
+ }
136
+
137
+ export interface SourceRecord {
138
+ stage: string;
139
+ title?: string;
140
+ url?: string;
141
+ snippet?: string;
142
+ }
143
+
144
+ export interface RunRecord {
145
+ id: string;
146
+ mode: "v15" | "baseline" | "external";
147
+ question: string;
148
+ /** question as MUTATED by the genome directive, if it was mutated */
149
+ effectiveQuestion?: string;
150
+ startedAt: number;
151
+ endedAt?: number;
152
+ status: "running" | "complete" | "failed";
153
+ events: TraceEvent[];
154
+ /** Per-phase aggregate: count + wall time occupied */
155
+ phaseStats: Partial<Record<PhaseId, { count: number; firstDt: number; lastDt: number }>>;
156
+ passes: PassRecord[];
157
+ sources: SourceRecord[];
158
+ /** Raw request options, secrets redacted */
159
+ input?: Record<string, unknown>;
160
+ /** Raw outcome object, large strings truncated for the UI */
161
+ output?: Record<string, unknown>;
162
+ finalText?: string;
163
+ draftText?: string;
164
+ guardScore?: number;
165
+ judgeScore?: number | null;
166
+ error?: string;
167
+ // Turn-4 additions — all optional, populated by the v15-pipeline wrapper.
168
+ /** COVEA repair pass artefact (targeted CoVe + adversarial repair). */
169
+ covea?: unknown;
170
+ /** Genome v1 + v2 + v10 snapshot injected into this run. */
171
+ genome?: unknown;
172
+ /** Independent prewriting research, completed before report generation. */
173
+ research?: unknown;
174
+ /** Original text BEFORE COVEA repair — needed for attribution + diff view. */
175
+ preCoveaText?: string;
176
+ }
177
+
178
+ const HISTORY_MAX = 25;
179
+ const EVENT_MAX = 4000;
180
+
181
+ let runs: RunRecord[] = [];
182
+ let activeId: string | null = null;
183
+ let seqCounter = 0;
184
+ const listeners = new Set<() => void>();
185
+
186
+ function notify() {
187
+ for (const cb of listeners) {
188
+ try {
189
+ cb();
190
+ } catch {
191
+ /* fail-open per subscriber */
192
+ }
193
+ }
194
+ }
195
+
196
+ export function subscribeTrace(cb: () => void): () => void {
197
+ listeners.add(cb);
198
+ return () => listeners.delete(cb);
199
+ }
200
+
201
+ export function getRuns(): RunRecord[] {
202
+ return runs;
203
+ }
204
+
205
+ export function getActiveRun(): RunRecord | null {
206
+ return runs.find((r) => r.id === activeId) ?? null;
207
+ }
208
+
209
+ export function clearRuns(): void {
210
+ runs = [];
211
+ activeId = null;
212
+ notify();
213
+ }
214
+
215
+ function redact(v: unknown): unknown {
216
+ if (typeof v !== "object" || v === null) return v;
217
+ const out: Record<string, unknown> = {};
218
+ for (const [k, val] of Object.entries(v as Record<string, unknown>)) {
219
+ if (/key|token|secret|password|auth/i.test(k)) {
220
+ out[k] = typeof val === "string" && val.length > 0 ? `«redacted:${val.length}ch»` : "«redacted»";
221
+ } else if (typeof val === "function") {
222
+ out[k] = `«fn ${(val as Function).name || "anonymous"}»`;
223
+ } else if (typeof val === "string" && val.length > 4000) {
224
+ out[k] = `${val.slice(0, 4000)}\n…«truncated ${val.length - 4000} chars»`;
225
+ } else if (typeof val === "object" && val !== null) {
226
+ try {
227
+ const j = JSON.stringify(val);
228
+ out[k] = j.length > 6000 ? `«object ${j.length}b — truncated»` : (val as unknown);
229
+ } catch {
230
+ out[k] = "«uncloneable»";
231
+ }
232
+ } else {
233
+ out[k] = val;
234
+ }
235
+ }
236
+ return out;
237
+ }
238
+
239
+ export function startRun(mode: RunRecord["mode"], question: string, input?: unknown): string {
240
+ const id = `run_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 7)}`;
241
+ const rec: RunRecord = {
242
+ id,
243
+ mode,
244
+ question,
245
+ startedAt: Date.now(),
246
+ status: "running",
247
+ events: [],
248
+ phaseStats: {},
249
+ passes: [],
250
+ sources: [],
251
+ input: redact(input) as Record<string, unknown>,
252
+ };
253
+ runs = [rec, ...runs].slice(0, HISTORY_MAX);
254
+ activeId = id;
255
+ pushEvent(id, "system", "init", `run started · mode=${mode} · q="${question.slice(0, 120)}"`);
256
+ notify();
257
+ return id;
258
+ }
259
+
260
+ export function pushEvent(
261
+ runId: string | null,
262
+ source: TraceEvent["source"],
263
+ phase: PhaseId,
264
+ message: string,
265
+ lane?: string
266
+ ): void {
267
+ const rec = runs.find((r) => r.id === (runId ?? activeId));
268
+ if (!rec) return;
269
+ const dt = Date.now() - rec.startedAt;
270
+ const ev: TraceEvent = { seq: ++seqCounter, ts: Date.now(), dt, phase, source, lane, message };
271
+ rec.events.push(ev);
272
+ if (rec.events.length > EVENT_MAX) rec.events = rec.events.slice(-EVENT_MAX);
273
+
274
+ const st = rec.phaseStats[phase] ?? { count: 0, firstDt: dt, lastDt: dt };
275
+ st.count += 1;
276
+ st.lastDt = dt;
277
+ rec.phaseStats[phase] = st;
278
+
279
+ // Structured extraction from known emission formats — parsed, never guessed.
280
+ // "depth 3: guard 8.42 (best-so-far 8.10 @ pass 2) · 14 canonical + 3 testbed"
281
+ const depthM = /^depth (\d+): guard ([\d.]+)/.exec(message);
282
+ if (depthM) {
283
+ rec.passes.push({
284
+ index: Number(depthM[1]),
285
+ guardScore: Number(depthM[2]),
286
+ accepted: true,
287
+ note: message,
288
+ });
289
+ }
290
+ // "depth 3: accepted 2 localized patch(es) · guard 8.10→8.42 · crit/major 1/3→0/1"
291
+ const acceptM = /^depth (\d+): accepted (\d+) localized patch/.exec(message);
292
+ if (acceptM) {
293
+ const sev = /crit\/major (\d+)\/(\d+)→(\d+)\/(\d+)/.exec(message);
294
+ rec.passes.push({
295
+ index: Number(acceptM[1]),
296
+ guardScore: Number(/→([\d.]+)/.exec(message)?.[1] ?? 0),
297
+ accepted: true,
298
+ note: `accepted ${acceptM[2]} patch(es)`,
299
+ critical: sev ? Number(sev[3]) : undefined,
300
+ major: sev ? Number(sev[4]) : undefined,
301
+ });
302
+ }
303
+ if (/rejected localized patches|repair: rejected|polish: rejected/.test(message)) {
304
+ rec.passes.push({ index: rec.passes.length, guardScore: NaN, accepted: false, note: message });
305
+ }
306
+
307
+ notify();
308
+ }
309
+
310
+ export function attachScraperLine(lane: string, message: string): void {
311
+ if (!activeId) return;
312
+ pushEvent(activeId, "scraper", "grounding", message, lane);
313
+ }
314
+
315
+ export function finishRun(runId: string, outcome: unknown, error?: unknown): void {
316
+ const rec = runs.find((r) => r.id === runId);
317
+ if (!rec) return;
318
+ rec.endedAt = Date.now();
319
+ rec.status = error ? "failed" : "complete";
320
+ if (error) rec.error = error instanceof Error ? error.message : String(error);
321
+
322
+ const o = outcome as Record<string, any> | undefined;
323
+ if (o) {
324
+ rec.output = redact(o) as Record<string, unknown>;
325
+ rec.finalText = typeof o.fixed === "string" && o.fixed ? o.fixed : (o.draft ?? "");
326
+ rec.draftText = typeof o.draft === "string" ? o.draft : undefined;
327
+ rec.guardScore = typeof o.guardScore === "number" ? o.guardScore : undefined;
328
+ rec.judgeScore = typeof o.judgeScore === "number" ? o.judgeScore : null;
329
+
330
+ // passHistory is authoritative — overrides the string-parsed approximation.
331
+ if (Array.isArray(o.passHistory) && o.passHistory.length > 0) {
332
+ rec.passes = o.passHistory.map((p: any, i: number) => ({
333
+ index: i + 1,
334
+ guardScore: Number(p?.guardScore ?? p?.score ?? NaN),
335
+ accepted: p?.accepted !== false,
336
+ note: String(p?.note ?? p?.label ?? `pass ${i + 1}`),
337
+ textLength: typeof p?.text === "string" ? p.text.length : undefined,
338
+ }));
339
+ }
340
+ // citationAudit carries the stage each source was FIRST admitted at.
341
+ const entries = o?.citationAudit?.entries;
342
+ if (Array.isArray(entries)) {
343
+ rec.sources = entries
344
+ .filter((e: any) => e?.url)
345
+ .map((e: any) => ({
346
+ stage: String(e.stage ?? "unknown"),
347
+ title: e.title,
348
+ url: e.url,
349
+ snippet: typeof e.snippet === "string" ? e.snippet.slice(0, 600) : undefined,
350
+ }));
351
+ }
352
+ }
353
+ pushEvent(runId, "system", error ? "error" : "done", error ? `run failed: ${rec.error}` : "run complete");
354
+ if (activeId === runId) activeId = null;
355
+ notify();
356
+ }
357
+
358
+ /** Attach a genome snapshot to the active or specified run. */
359
+ export function attachGenome(runId: string | null, genome: unknown): void {
360
+ const rec = runs.find((r) => r.id === (runId ?? activeId));
361
+ if (!rec) return;
362
+ rec.genome = genome;
363
+ notify();
364
+ }
365
+
366
+ export function attachResearch(runId: string | null, research: unknown): void {
367
+ const rec = runs.find((r) => r.id === (runId ?? activeId));
368
+ if (!rec) return;
369
+ rec.research = research;
370
+ notify();
371
+ }
372
+
373
+ /** Attach a COVEA repair result and mark preCoveaText for diffing. */
374
+ export function attachCovea(runId: string | null, preText: string, covea: unknown): void {
375
+ const rec = runs.find((r) => r.id === (runId ?? activeId));
376
+ if (!rec) return;
377
+ rec.preCoveaText = preText;
378
+ rec.covea = covea;
379
+ // Update finalText to reflect the repaired text if the covea result has one.
380
+ const c = covea as { repairedDraft?: string } | undefined;
381
+ if (c?.repairedDraft && typeof c.repairedDraft === "string") rec.finalText = c.repairedDraft;
382
+ notify();
383
+ }
384
+
385
+ /** Register an output produced OUTSIDE this app (paste-in analysis). */
386
+ export function registerExternalRun(question: string, text: string): string {
387
+ const id = startRun("external", question);
388
+ const rec = runs.find((r) => r.id === id)!;
389
+ rec.finalText = text;
390
+ rec.status = "complete";
391
+ rec.endedAt = Date.now();
392
+ pushEvent(id, "system", "done", `external output registered · ${text.length} chars`);
393
+ activeId = null;
394
+ notify();
395
+ return id;
396
+ }
397
+
398
+ /** Full deterministic export — this is the artefact you hand to another LLM. */
399
+ export function exportRun(run: RunRecord): string {
400
+ return JSON.stringify(
401
+ {
402
+ schema: "veritas.pipeline-trace/1",
403
+ exportedAt: new Date().toISOString(),
404
+ run: {
405
+ id: run.id,
406
+ mode: run.mode,
407
+ status: run.status,
408
+ question: run.question,
409
+ durationMs: (run.endedAt ?? Date.now()) - run.startedAt,
410
+ guardScore: run.guardScore,
411
+ judgeScore: run.judgeScore,
412
+ phaseStats: run.phaseStats,
413
+ passes: run.passes,
414
+ sources: run.sources,
415
+ events: run.events.map((e) => ({ dt: e.dt, phase: e.phase, source: e.source, lane: e.lane, message: e.message })),
416
+ input: run.input,
417
+ output: run.output,
418
+ finalText: run.finalText,
419
+ },
420
+ },
421
+ null,
422
+ 2
423
+ );
424
+ }