@hongmaple0820/med-scale-research-os 0.43.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 (1104) hide show
  1. package/.scale/mcp-servers.yaml +144 -0
  2. package/.scale/skills.json +830 -0
  3. package/.scale/verification.json +52 -0
  4. package/LICENSE +15 -0
  5. package/README.en.md +156 -0
  6. package/README.md +156 -0
  7. package/dist/adapters/AiderAdapter.d.ts +22 -0
  8. package/dist/adapters/AiderAdapter.js +262 -0
  9. package/dist/adapters/AiderAdapter.js.map +1 -0
  10. package/dist/adapters/AntigravityAdapter.d.ts +4 -0
  11. package/dist/adapters/AntigravityAdapter.js +21 -0
  12. package/dist/adapters/AntigravityAdapter.js.map +1 -0
  13. package/dist/adapters/ClaudeCodeAdapter.d.ts +54 -0
  14. package/dist/adapters/ClaudeCodeAdapter.js +185 -0
  15. package/dist/adapters/ClaudeCodeAdapter.js.map +1 -0
  16. package/dist/adapters/ClineAdapter.d.ts +4 -0
  17. package/dist/adapters/ClineAdapter.js +20 -0
  18. package/dist/adapters/ClineAdapter.js.map +1 -0
  19. package/dist/adapters/CodexAdapter.d.ts +15 -0
  20. package/dist/adapters/CodexAdapter.js +160 -0
  21. package/dist/adapters/CodexAdapter.js.map +1 -0
  22. package/dist/adapters/CursorAdapter.d.ts +14 -0
  23. package/dist/adapters/CursorAdapter.js +171 -0
  24. package/dist/adapters/CursorAdapter.js.map +1 -0
  25. package/dist/adapters/DeepSeekTuiAdapter.d.ts +19 -0
  26. package/dist/adapters/DeepSeekTuiAdapter.js +263 -0
  27. package/dist/adapters/DeepSeekTuiAdapter.js.map +1 -0
  28. package/dist/adapters/DoubaoAdapter.d.ts +14 -0
  29. package/dist/adapters/DoubaoAdapter.js +184 -0
  30. package/dist/adapters/DoubaoAdapter.js.map +1 -0
  31. package/dist/adapters/GeminiAdapter.d.ts +14 -0
  32. package/dist/adapters/GeminiAdapter.js +163 -0
  33. package/dist/adapters/GeminiAdapter.js.map +1 -0
  34. package/dist/adapters/GenericProjectAgentAdapter.d.ts +29 -0
  35. package/dist/adapters/GenericProjectAgentAdapter.js +204 -0
  36. package/dist/adapters/GenericProjectAgentAdapter.js.map +1 -0
  37. package/dist/adapters/HermesAdapter.d.ts +14 -0
  38. package/dist/adapters/HermesAdapter.js +163 -0
  39. package/dist/adapters/HermesAdapter.js.map +1 -0
  40. package/dist/adapters/JCodeAdapter.d.ts +4 -0
  41. package/dist/adapters/JCodeAdapter.js +19 -0
  42. package/dist/adapters/JCodeAdapter.js.map +1 -0
  43. package/dist/adapters/KiloCodeAdapter.d.ts +4 -0
  44. package/dist/adapters/KiloCodeAdapter.js +20 -0
  45. package/dist/adapters/KiloCodeAdapter.js.map +1 -0
  46. package/dist/adapters/KimiAdapter.d.ts +14 -0
  47. package/dist/adapters/KimiAdapter.js +183 -0
  48. package/dist/adapters/KimiAdapter.js.map +1 -0
  49. package/dist/adapters/KiroAdapter.d.ts +14 -0
  50. package/dist/adapters/KiroAdapter.js +180 -0
  51. package/dist/adapters/KiroAdapter.js.map +1 -0
  52. package/dist/adapters/OpenClawAdapter.d.ts +14 -0
  53. package/dist/adapters/OpenClawAdapter.js +163 -0
  54. package/dist/adapters/OpenClawAdapter.js.map +1 -0
  55. package/dist/adapters/OpenCodeAdapter.d.ts +14 -0
  56. package/dist/adapters/OpenCodeAdapter.js +172 -0
  57. package/dist/adapters/OpenCodeAdapter.js.map +1 -0
  58. package/dist/adapters/QCoderAdapter.d.ts +14 -0
  59. package/dist/adapters/QCoderAdapter.js +159 -0
  60. package/dist/adapters/QCoderAdapter.js.map +1 -0
  61. package/dist/adapters/QoderAdapter.d.ts +4 -0
  62. package/dist/adapters/QoderAdapter.js +21 -0
  63. package/dist/adapters/QoderAdapter.js.map +1 -0
  64. package/dist/adapters/TraeAdapter.d.ts +14 -0
  65. package/dist/adapters/TraeAdapter.js +159 -0
  66. package/dist/adapters/TraeAdapter.js.map +1 -0
  67. package/dist/adapters/VSCAdapter.d.ts +14 -0
  68. package/dist/adapters/VSCAdapter.js +159 -0
  69. package/dist/adapters/VSCAdapter.js.map +1 -0
  70. package/dist/adapters/WindsurfAdapter.d.ts +14 -0
  71. package/dist/adapters/WindsurfAdapter.js +185 -0
  72. package/dist/adapters/WindsurfAdapter.js.map +1 -0
  73. package/dist/adapters/WorkBuddyAdapter.d.ts +14 -0
  74. package/dist/adapters/WorkBuddyAdapter.js +159 -0
  75. package/dist/adapters/WorkBuddyAdapter.js.map +1 -0
  76. package/dist/adapters/index.d.ts +32 -0
  77. package/dist/adapters/index.js +87 -0
  78. package/dist/adapters/index.js.map +1 -0
  79. package/dist/agents/AgentChannel.d.ts +43 -0
  80. package/dist/agents/AgentChannel.js +136 -0
  81. package/dist/agents/AgentChannel.js.map +1 -0
  82. package/dist/agents/AgentCoordinator.d.ts +29 -0
  83. package/dist/agents/AgentCoordinator.js +136 -0
  84. package/dist/agents/AgentCoordinator.js.map +1 -0
  85. package/dist/agents/AgentDispatcher.d.ts +24 -0
  86. package/dist/agents/AgentDispatcher.js +112 -0
  87. package/dist/agents/AgentDispatcher.js.map +1 -0
  88. package/dist/agents/AgentManager.d.ts +14 -0
  89. package/dist/agents/AgentManager.js +85 -0
  90. package/dist/agents/AgentManager.js.map +1 -0
  91. package/dist/agents/AgentPool.d.ts +59 -0
  92. package/dist/agents/AgentPool.js +192 -0
  93. package/dist/agents/AgentPool.js.map +1 -0
  94. package/dist/agents/AgentRegistry.d.ts +20 -0
  95. package/dist/agents/AgentRegistry.js +36 -0
  96. package/dist/agents/AgentRegistry.js.map +1 -0
  97. package/dist/agents/AgentSourceLoader.d.ts +73 -0
  98. package/dist/agents/AgentSourceLoader.js +103 -0
  99. package/dist/agents/AgentSourceLoader.js.map +1 -0
  100. package/dist/agents/IAgent.d.ts +53 -0
  101. package/dist/agents/IAgent.js +4 -0
  102. package/dist/agents/IAgent.js.map +1 -0
  103. package/dist/agents/LeadershipPresets.d.ts +16 -0
  104. package/dist/agents/LeadershipPresets.js +152 -0
  105. package/dist/agents/LeadershipPresets.js.map +1 -0
  106. package/dist/agents/definitions/debugger.d.ts +2 -0
  107. package/dist/agents/definitions/debugger.js +6 -0
  108. package/dist/agents/definitions/debugger.js.map +1 -0
  109. package/dist/agents/definitions/doc-writer.d.ts +2 -0
  110. package/dist/agents/definitions/doc-writer.js +6 -0
  111. package/dist/agents/definitions/doc-writer.js.map +1 -0
  112. package/dist/agents/definitions/implementer.d.ts +2 -0
  113. package/dist/agents/definitions/implementer.js +6 -0
  114. package/dist/agents/definitions/implementer.js.map +1 -0
  115. package/dist/agents/definitions/planner.d.ts +2 -0
  116. package/dist/agents/definitions/planner.js +6 -0
  117. package/dist/agents/definitions/planner.js.map +1 -0
  118. package/dist/agents/definitions/researcher.d.ts +2 -0
  119. package/dist/agents/definitions/researcher.js +6 -0
  120. package/dist/agents/definitions/researcher.js.map +1 -0
  121. package/dist/agents/definitions/reviewer.d.ts +2 -0
  122. package/dist/agents/definitions/reviewer.js +6 -0
  123. package/dist/agents/definitions/reviewer.js.map +1 -0
  124. package/dist/agents/definitions/security.d.ts +2 -0
  125. package/dist/agents/definitions/security.js +6 -0
  126. package/dist/agents/definitions/security.js.map +1 -0
  127. package/dist/agents/definitions/tester.d.ts +2 -0
  128. package/dist/agents/definitions/tester.js +6 -0
  129. package/dist/agents/definitions/tester.js.map +1 -0
  130. package/dist/agents/index.d.ts +23 -0
  131. package/dist/agents/index.js +44 -0
  132. package/dist/agents/index.js.map +1 -0
  133. package/dist/agents/profiles.d.ts +26 -0
  134. package/dist/agents/profiles.js +197 -0
  135. package/dist/agents/profiles.js.map +1 -0
  136. package/dist/agents/types.d.ts +262 -0
  137. package/dist/agents/types.js +4 -0
  138. package/dist/agents/types.js.map +1 -0
  139. package/dist/api/cli.d.ts +2 -0
  140. package/dist/api/cli.js +6678 -0
  141. package/dist/api/cli.js.map +1 -0
  142. package/dist/api/doctor.d.ts +83 -0
  143. package/dist/api/doctor.js +982 -0
  144. package/dist/api/doctor.js.map +1 -0
  145. package/dist/api/mcp.d.ts +32 -0
  146. package/dist/api/mcp.js +223 -0
  147. package/dist/api/mcp.js.map +1 -0
  148. package/dist/api/medscale.d.ts +2 -0
  149. package/dist/api/medscale.js +20 -0
  150. package/dist/api/medscale.js.map +1 -0
  151. package/dist/api/quickstart.d.ts +86 -0
  152. package/dist/api/quickstart.js +291 -0
  153. package/dist/api/quickstart.js.map +1 -0
  154. package/dist/artifact/fsm.d.ts +41 -0
  155. package/dist/artifact/fsm.js +221 -0
  156. package/dist/artifact/fsm.js.map +1 -0
  157. package/dist/artifact/fsmDefinitions.d.ts +18 -0
  158. package/dist/artifact/fsmDefinitions.js +296 -0
  159. package/dist/artifact/fsmDefinitions.js.map +1 -0
  160. package/dist/artifact/sqliteStore.d.ts +61 -0
  161. package/dist/artifact/sqliteStore.js +381 -0
  162. package/dist/artifact/sqliteStore.js.map +1 -0
  163. package/dist/artifact/store.d.ts +49 -0
  164. package/dist/artifact/store.js +116 -0
  165. package/dist/artifact/store.js.map +1 -0
  166. package/dist/artifact/types.d.ts +535 -0
  167. package/dist/artifact/types.js +74 -0
  168. package/dist/artifact/types.js.map +1 -0
  169. package/dist/bootstrap/DependencyBootstrap.d.ts +112 -0
  170. package/dist/bootstrap/DependencyBootstrap.js +1046 -0
  171. package/dist/bootstrap/DependencyBootstrap.js.map +1 -0
  172. package/dist/bootstrap/DependencyBootstrapRenderer.d.ts +3 -0
  173. package/dist/bootstrap/DependencyBootstrapRenderer.js +138 -0
  174. package/dist/bootstrap/DependencyBootstrapRenderer.js.map +1 -0
  175. package/dist/bridge/PythonBridge.d.ts +80 -0
  176. package/dist/bridge/PythonBridge.js +437 -0
  177. package/dist/bridge/PythonBridge.js.map +1 -0
  178. package/dist/bridge/index.d.ts +2 -0
  179. package/dist/bridge/index.js +7 -0
  180. package/dist/bridge/index.js.map +1 -0
  181. package/dist/bridge/medicalWorkflows.d.ts +29 -0
  182. package/dist/bridge/medicalWorkflows.js +156 -0
  183. package/dist/bridge/medicalWorkflows.js.map +1 -0
  184. package/dist/bridge/types.d.ts +381 -0
  185. package/dist/bridge/types.js +113 -0
  186. package/dist/bridge/types.js.map +1 -0
  187. package/dist/cache/ScanCache.d.ts +41 -0
  188. package/dist/cache/ScanCache.js +120 -0
  189. package/dist/cache/ScanCache.js.map +1 -0
  190. package/dist/capabilities/BrowserCapability.d.ts +30 -0
  191. package/dist/capabilities/BrowserCapability.js +73 -0
  192. package/dist/capabilities/BrowserCapability.js.map +1 -0
  193. package/dist/capabilities/BrowserQACapability.d.ts +165 -0
  194. package/dist/capabilities/BrowserQACapability.js +438 -0
  195. package/dist/capabilities/BrowserQACapability.js.map +1 -0
  196. package/dist/capabilities/CapabilityRegistry.d.ts +17 -0
  197. package/dist/capabilities/CapabilityRegistry.js +65 -0
  198. package/dist/capabilities/CapabilityRegistry.js.map +1 -0
  199. package/dist/capabilities/ComputerCapability.d.ts +28 -0
  200. package/dist/capabilities/ComputerCapability.js +40 -0
  201. package/dist/capabilities/ComputerCapability.js.map +1 -0
  202. package/dist/capabilities/InstalledSkillsIntegration.d.ts +69 -0
  203. package/dist/capabilities/InstalledSkillsIntegration.js +240 -0
  204. package/dist/capabilities/InstalledSkillsIntegration.js.map +1 -0
  205. package/dist/capabilities/SearchCapability.d.ts +46 -0
  206. package/dist/capabilities/SearchCapability.js +88 -0
  207. package/dist/capabilities/SearchCapability.js.map +1 -0
  208. package/dist/capabilities/index.d.ts +6 -0
  209. package/dist/capabilities/index.js +9 -0
  210. package/dist/capabilities/index.js.map +1 -0
  211. package/dist/capabilities/types.d.ts +92 -0
  212. package/dist/capabilities/types.js +7 -0
  213. package/dist/capabilities/types.js.map +1 -0
  214. package/dist/cli/autofixCommands.d.ts +22 -0
  215. package/dist/cli/autofixCommands.js +32 -0
  216. package/dist/cli/autofixCommands.js.map +1 -0
  217. package/dist/cli/cortexCommands.d.ts +71 -0
  218. package/dist/cli/cortexCommands.js +335 -0
  219. package/dist/cli/cortexCommands.js.map +1 -0
  220. package/dist/cli/costCommands.d.ts +13 -0
  221. package/dist/cli/costCommands.js +48 -0
  222. package/dist/cli/costCommands.js.map +1 -0
  223. package/dist/cli/evolutionCommands.d.ts +112 -0
  224. package/dist/cli/evolutionCommands.js +246 -0
  225. package/dist/cli/evolutionCommands.js.map +1 -0
  226. package/dist/cli/gateStatusCommands.d.ts +1 -0
  227. package/dist/cli/gateStatusCommands.js +52 -0
  228. package/dist/cli/gateStatusCommands.js.map +1 -0
  229. package/dist/cli/liteCommands.d.ts +81 -0
  230. package/dist/cli/liteCommands.js +148 -0
  231. package/dist/cli/liteCommands.js.map +1 -0
  232. package/dist/cli/orchCommands.d.ts +43 -0
  233. package/dist/cli/orchCommands.js +135 -0
  234. package/dist/cli/orchCommands.js.map +1 -0
  235. package/dist/cli/phaseCommands.d.ts +248 -0
  236. package/dist/cli/phaseCommands.js +1878 -0
  237. package/dist/cli/phaseCommands.js.map +1 -0
  238. package/dist/cli/promptCommands.d.ts +1 -0
  239. package/dist/cli/promptCommands.js +57 -0
  240. package/dist/cli/promptCommands.js.map +1 -0
  241. package/dist/cli/qaCommands.d.ts +22 -0
  242. package/dist/cli/qaCommands.js +84 -0
  243. package/dist/cli/qaCommands.js.map +1 -0
  244. package/dist/cli/quickstartCommands.d.ts +17 -0
  245. package/dist/cli/quickstartCommands.js +47 -0
  246. package/dist/cli/quickstartCommands.js.map +1 -0
  247. package/dist/cli/runCommand.d.ts +39 -0
  248. package/dist/cli/runCommand.js +113 -0
  249. package/dist/cli/runCommand.js.map +1 -0
  250. package/dist/cli/scoreCommands.d.ts +1 -0
  251. package/dist/cli/scoreCommands.js +112 -0
  252. package/dist/cli/scoreCommands.js.map +1 -0
  253. package/dist/cli/shieldCommands.d.ts +30 -0
  254. package/dist/cli/shieldCommands.js +212 -0
  255. package/dist/cli/shieldCommands.js.map +1 -0
  256. package/dist/cli/targetCommands.d.ts +552 -0
  257. package/dist/cli/targetCommands.js +3173 -0
  258. package/dist/cli/targetCommands.js.map +1 -0
  259. package/dist/cli/tuiCommands.d.ts +7 -0
  260. package/dist/cli/tuiCommands.js +33 -0
  261. package/dist/cli/tuiCommands.js.map +1 -0
  262. package/dist/cli/vibeCommands.d.ts +64 -0
  263. package/dist/cli/vibeCommands.js +221 -0
  264. package/dist/cli/vibeCommands.js.map +1 -0
  265. package/dist/codegraph/CodeIntelligence.d.ts +147 -0
  266. package/dist/codegraph/CodeIntelligence.js +681 -0
  267. package/dist/codegraph/CodeIntelligence.js.map +1 -0
  268. package/dist/config/profiles.d.ts +64 -0
  269. package/dist/config/profiles.js +223 -0
  270. package/dist/config/profiles.js.map +1 -0
  271. package/dist/context/AntiPatternRegistry.d.ts +38 -0
  272. package/dist/context/AntiPatternRegistry.js +203 -0
  273. package/dist/context/AntiPatternRegistry.js.map +1 -0
  274. package/dist/context/CavemanCompressor.d.ts +20 -0
  275. package/dist/context/CavemanCompressor.js +14 -0
  276. package/dist/context/CavemanCompressor.js.map +1 -0
  277. package/dist/context/ContextBudget.d.ts +128 -0
  278. package/dist/context/ContextBudget.js +423 -0
  279. package/dist/context/ContextBudget.js.map +1 -0
  280. package/dist/context/ContextBuilder.d.ts +71 -0
  281. package/dist/context/ContextBuilder.js +372 -0
  282. package/dist/context/ContextBuilder.js.map +1 -0
  283. package/dist/context/ContextCompiler.d.ts +34 -0
  284. package/dist/context/ContextCompiler.js +120 -0
  285. package/dist/context/ContextCompiler.js.map +1 -0
  286. package/dist/context/ProjectAnatomy.d.ts +18 -0
  287. package/dist/context/ProjectAnatomy.js +287 -0
  288. package/dist/context/ProjectAnatomy.js.map +1 -0
  289. package/dist/context/SessionStartSequence.d.ts +54 -0
  290. package/dist/context/SessionStartSequence.js +162 -0
  291. package/dist/context/SessionStartSequence.js.map +1 -0
  292. package/dist/core/ExternalCommand.d.ts +9 -0
  293. package/dist/core/ExternalCommand.js +70 -0
  294. package/dist/core/ExternalCommand.js.map +1 -0
  295. package/dist/core/GbrainRuntime.d.ts +25 -0
  296. package/dist/core/GbrainRuntime.js +270 -0
  297. package/dist/core/GbrainRuntime.js.map +1 -0
  298. package/dist/core/container.d.ts +14 -0
  299. package/dist/core/container.js +35 -0
  300. package/dist/core/container.js.map +1 -0
  301. package/dist/core/eventBus.d.ts +60 -0
  302. package/dist/core/eventBus.js +157 -0
  303. package/dist/core/eventBus.js.map +1 -0
  304. package/dist/core/logger.d.ts +5 -0
  305. package/dist/core/logger.js +51 -0
  306. package/dist/core/logger.js.map +1 -0
  307. package/dist/cortex/GovernanceMetrics.d.ts +66 -0
  308. package/dist/cortex/GovernanceMetrics.js +230 -0
  309. package/dist/cortex/GovernanceMetrics.js.map +1 -0
  310. package/dist/cortex/InstinctExtractor.d.ts +61 -0
  311. package/dist/cortex/InstinctExtractor.js +184 -0
  312. package/dist/cortex/InstinctExtractor.js.map +1 -0
  313. package/dist/cortex/InstinctStore.d.ts +54 -0
  314. package/dist/cortex/InstinctStore.js +266 -0
  315. package/dist/cortex/InstinctStore.js.map +1 -0
  316. package/dist/cortex/ReflexionEngine.d.ts +34 -0
  317. package/dist/cortex/ReflexionEngine.js +157 -0
  318. package/dist/cortex/ReflexionEngine.js.map +1 -0
  319. package/dist/cortex/SessionInjector.d.ts +44 -0
  320. package/dist/cortex/SessionInjector.js +127 -0
  321. package/dist/cortex/SessionInjector.js.map +1 -0
  322. package/dist/cortex/adapters/ClaudeAdapter.d.ts +17 -0
  323. package/dist/cortex/adapters/ClaudeAdapter.js +61 -0
  324. package/dist/cortex/adapters/ClaudeAdapter.js.map +1 -0
  325. package/dist/cortex/adapters/CodexAdapter.d.ts +10 -0
  326. package/dist/cortex/adapters/CodexAdapter.js +52 -0
  327. package/dist/cortex/adapters/CodexAdapter.js.map +1 -0
  328. package/dist/cortex/adapters/CursorAdapter.d.ts +10 -0
  329. package/dist/cortex/adapters/CursorAdapter.js +46 -0
  330. package/dist/cortex/adapters/CursorAdapter.js.map +1 -0
  331. package/dist/cortex/adapters/GeminiAdapter.d.ts +11 -0
  332. package/dist/cortex/adapters/GeminiAdapter.js +48 -0
  333. package/dist/cortex/adapters/GeminiAdapter.js.map +1 -0
  334. package/dist/dashboard/DashboardServer.d.ts +86 -0
  335. package/dist/dashboard/DashboardServer.js +380 -0
  336. package/dist/dashboard/DashboardServer.js.map +1 -0
  337. package/dist/dashboard/MedicalWorkflowData.d.ts +155 -0
  338. package/dist/dashboard/MedicalWorkflowData.js +664 -0
  339. package/dist/dashboard/MedicalWorkflowData.js.map +1 -0
  340. package/dist/dashboard/MetricsAggregator.d.ts +38 -0
  341. package/dist/dashboard/MetricsAggregator.js +99 -0
  342. package/dist/dashboard/MetricsAggregator.js.map +1 -0
  343. package/dist/dashboard/index.d.ts +4 -0
  344. package/dist/dashboard/index.js +3 -0
  345. package/dist/dashboard/index.js.map +1 -0
  346. package/dist/dashboard/server.d.ts +52 -0
  347. package/dist/dashboard/server.js +84 -0
  348. package/dist/dashboard/server.js.map +1 -0
  349. package/dist/env/EnvironmentDoctor.d.ts +66 -0
  350. package/dist/env/EnvironmentDoctor.js +581 -0
  351. package/dist/env/EnvironmentDoctor.js.map +1 -0
  352. package/dist/eval/BenchmarkPublisher.d.ts +25 -0
  353. package/dist/eval/BenchmarkPublisher.js +27 -0
  354. package/dist/eval/BenchmarkPublisher.js.map +1 -0
  355. package/dist/eval/WorkflowEval.d.ts +161 -0
  356. package/dist/eval/WorkflowEval.js +377 -0
  357. package/dist/eval/WorkflowEval.js.map +1 -0
  358. package/dist/evolution/AutoDefectCreator.d.ts +43 -0
  359. package/dist/evolution/AutoDefectCreator.js +157 -0
  360. package/dist/evolution/AutoDefectCreator.js.map +1 -0
  361. package/dist/evolution/BehaviorTracker.d.ts +46 -0
  362. package/dist/evolution/BehaviorTracker.js +67 -0
  363. package/dist/evolution/BehaviorTracker.js.map +1 -0
  364. package/dist/evolution/EvolutionEngine.d.ts +102 -0
  365. package/dist/evolution/EvolutionEngine.js +326 -0
  366. package/dist/evolution/EvolutionEngine.js.map +1 -0
  367. package/dist/evolution/EvolutionEvaluator.d.ts +61 -0
  368. package/dist/evolution/EvolutionEvaluator.js +118 -0
  369. package/dist/evolution/EvolutionEvaluator.js.map +1 -0
  370. package/dist/evolution/LessonValidator.d.ts +36 -0
  371. package/dist/evolution/LessonValidator.js +132 -0
  372. package/dist/evolution/LessonValidator.js.map +1 -0
  373. package/dist/evolution/PatternExtractor.d.ts +40 -0
  374. package/dist/evolution/PatternExtractor.js +83 -0
  375. package/dist/evolution/PatternExtractor.js.map +1 -0
  376. package/dist/evolution/RuleMaturity.d.ts +39 -0
  377. package/dist/evolution/RuleMaturity.js +70 -0
  378. package/dist/evolution/RuleMaturity.js.map +1 -0
  379. package/dist/evolution/SessionLearnings.d.ts +70 -0
  380. package/dist/evolution/SessionLearnings.js +217 -0
  381. package/dist/evolution/SessionLearnings.js.map +1 -0
  382. package/dist/evolution/SkillCreator.d.ts +75 -0
  383. package/dist/evolution/SkillCreator.js +219 -0
  384. package/dist/evolution/SkillCreator.js.map +1 -0
  385. package/dist/fsm/FSMAgentBridge.d.ts +59 -0
  386. package/dist/fsm/FSMAgentBridge.js +193 -0
  387. package/dist/fsm/FSMAgentBridge.js.map +1 -0
  388. package/dist/fsm/index.d.ts +2 -0
  389. package/dist/fsm/index.js +3 -0
  390. package/dist/fsm/index.js.map +1 -0
  391. package/dist/governance/GovernanceRoi.d.ts +30 -0
  392. package/dist/governance/GovernanceRoi.js +102 -0
  393. package/dist/governance/GovernanceRoi.js.map +1 -0
  394. package/dist/governance/ProgressiveGovernance.d.ts +22 -0
  395. package/dist/governance/ProgressiveGovernance.js +159 -0
  396. package/dist/governance/ProgressiveGovernance.js.map +1 -0
  397. package/dist/guardrails/ActiveRedTeam.d.ts +46 -0
  398. package/dist/guardrails/ActiveRedTeam.js +203 -0
  399. package/dist/guardrails/ActiveRedTeam.js.map +1 -0
  400. package/dist/guardrails/DependencyAuditor.d.ts +68 -0
  401. package/dist/guardrails/DependencyAuditor.js +378 -0
  402. package/dist/guardrails/DependencyAuditor.js.map +1 -0
  403. package/dist/guardrails/DetectorEnhanced.d.ts +111 -0
  404. package/dist/guardrails/DetectorEnhanced.js +202 -0
  405. package/dist/guardrails/DetectorEnhanced.js.map +1 -0
  406. package/dist/guardrails/GateEvaluator.d.ts +18 -0
  407. package/dist/guardrails/GateEvaluator.js +129 -0
  408. package/dist/guardrails/GateEvaluator.js.map +1 -0
  409. package/dist/guardrails/Gateway.d.ts +26 -0
  410. package/dist/guardrails/Gateway.js +56 -0
  411. package/dist/guardrails/Gateway.js.map +1 -0
  412. package/dist/guardrails/OWASPDetector.d.ts +58 -0
  413. package/dist/guardrails/OWASPDetector.js +508 -0
  414. package/dist/guardrails/OWASPDetector.js.map +1 -0
  415. package/dist/guardrails/ReviewEnforcer.d.ts +52 -0
  416. package/dist/guardrails/ReviewEnforcer.js +117 -0
  417. package/dist/guardrails/ReviewEnforcer.js.map +1 -0
  418. package/dist/guardrails/advancedDetectors.d.ts +38 -0
  419. package/dist/guardrails/advancedDetectors.js +188 -0
  420. package/dist/guardrails/advancedDetectors.js.map +1 -0
  421. package/dist/guardrails/detectors.d.ts +34 -0
  422. package/dist/guardrails/detectors.js +332 -0
  423. package/dist/guardrails/detectors.js.map +1 -0
  424. package/dist/guardrails/roles.d.ts +4 -0
  425. package/dist/guardrails/roles.js +54 -0
  426. package/dist/guardrails/roles.js.map +1 -0
  427. package/dist/hooks/BugPatternDetector.d.ts +36 -0
  428. package/dist/hooks/BugPatternDetector.js +207 -0
  429. package/dist/hooks/BugPatternDetector.js.map +1 -0
  430. package/dist/hooks/HookDeployer.d.ts +44 -0
  431. package/dist/hooks/HookDeployer.js +144 -0
  432. package/dist/hooks/HookDeployer.js.map +1 -0
  433. package/dist/hooks/HookGeneratorEnhanced.d.ts +67 -0
  434. package/dist/hooks/HookGeneratorEnhanced.js +641 -0
  435. package/dist/hooks/HookGeneratorEnhanced.js.map +1 -0
  436. package/dist/hooks/WorkflowHooksManager.d.ts +30 -0
  437. package/dist/hooks/WorkflowHooksManager.js +160 -0
  438. package/dist/hooks/WorkflowHooksManager.js.map +1 -0
  439. package/dist/hooks/index.d.ts +6 -0
  440. package/dist/hooks/index.js +5 -0
  441. package/dist/hooks/index.js.map +1 -0
  442. package/dist/i18n/Language.d.ts +9 -0
  443. package/dist/i18n/Language.js +38 -0
  444. package/dist/i18n/Language.js.map +1 -0
  445. package/dist/index.d.ts +101 -0
  446. package/dist/index.js +104 -0
  447. package/dist/index.js.map +1 -0
  448. package/dist/knowledge/CerebrumManager.d.ts +25 -0
  449. package/dist/knowledge/CerebrumManager.js +127 -0
  450. package/dist/knowledge/CerebrumManager.js.map +1 -0
  451. package/dist/knowledge/GraphifyKnowledgeBase.d.ts +38 -0
  452. package/dist/knowledge/GraphifyKnowledgeBase.js +409 -0
  453. package/dist/knowledge/GraphifyKnowledgeBase.js.map +1 -0
  454. package/dist/knowledge/KnowledgeBase.d.ts +51 -0
  455. package/dist/knowledge/KnowledgeBase.js +182 -0
  456. package/dist/knowledge/KnowledgeBase.js.map +1 -0
  457. package/dist/knowledge/SQLiteKnowledgeBase.d.ts +29 -0
  458. package/dist/knowledge/SQLiteKnowledgeBase.js +203 -0
  459. package/dist/knowledge/SQLiteKnowledgeBase.js.map +1 -0
  460. package/dist/knowledge/TfidfIndex.d.ts +50 -0
  461. package/dist/knowledge/TfidfIndex.js +177 -0
  462. package/dist/knowledge/TfidfIndex.js.map +1 -0
  463. package/dist/knowledge/UbiquitousLanguageManager.d.ts +49 -0
  464. package/dist/knowledge/UbiquitousLanguageManager.js +133 -0
  465. package/dist/knowledge/UbiquitousLanguageManager.js.map +1 -0
  466. package/dist/memory/MemoryBrain.d.ts +146 -0
  467. package/dist/memory/MemoryBrain.js +679 -0
  468. package/dist/memory/MemoryBrain.js.map +1 -0
  469. package/dist/memory/MemoryFabric.d.ts +130 -0
  470. package/dist/memory/MemoryFabric.js +317 -0
  471. package/dist/memory/MemoryFabric.js.map +1 -0
  472. package/dist/memory/MemoryIntelligence.d.ts +42 -0
  473. package/dist/memory/MemoryIntelligence.js +215 -0
  474. package/dist/memory/MemoryIntelligence.js.map +1 -0
  475. package/dist/memory/MemoryLearning.d.ts +62 -0
  476. package/dist/memory/MemoryLearning.js +209 -0
  477. package/dist/memory/MemoryLearning.js.map +1 -0
  478. package/dist/memory/MemoryProviders.d.ts +165 -0
  479. package/dist/memory/MemoryProviders.js +940 -0
  480. package/dist/memory/MemoryProviders.js.map +1 -0
  481. package/dist/memory/MemoryReview.d.ts +65 -0
  482. package/dist/memory/MemoryReview.js +260 -0
  483. package/dist/memory/MemoryReview.js.map +1 -0
  484. package/dist/memory/index.d.ts +6 -0
  485. package/dist/memory/index.js +7 -0
  486. package/dist/memory/index.js.map +1 -0
  487. package/dist/orchestration/EffectsWiring.d.ts +8 -0
  488. package/dist/orchestration/EffectsWiring.js +87 -0
  489. package/dist/orchestration/EffectsWiring.js.map +1 -0
  490. package/dist/orchestrator/OrchestratorDaemon.d.ts +44 -0
  491. package/dist/orchestrator/OrchestratorDaemon.js +150 -0
  492. package/dist/orchestrator/OrchestratorDaemon.js.map +1 -0
  493. package/dist/orchestrator/PolicyLoader.d.ts +80 -0
  494. package/dist/orchestrator/PolicyLoader.js +229 -0
  495. package/dist/orchestrator/PolicyLoader.js.map +1 -0
  496. package/dist/orchestrator/ReconciliationLoop.d.ts +71 -0
  497. package/dist/orchestrator/ReconciliationLoop.js +266 -0
  498. package/dist/orchestrator/ReconciliationLoop.js.map +1 -0
  499. package/dist/orchestrator/TrackerAdapter.d.ts +60 -0
  500. package/dist/orchestrator/TrackerAdapter.js +147 -0
  501. package/dist/orchestrator/TrackerAdapter.js.map +1 -0
  502. package/dist/orchestrator/WorkspaceManager.d.ts +66 -0
  503. package/dist/orchestrator/WorkspaceManager.js +257 -0
  504. package/dist/orchestrator/WorkspaceManager.js.map +1 -0
  505. package/dist/output/BrandThemeLoader.d.ts +54 -0
  506. package/dist/output/BrandThemeLoader.js +340 -0
  507. package/dist/output/BrandThemeLoader.js.map +1 -0
  508. package/dist/output/GovernanceDashboard.d.ts +59 -0
  509. package/dist/output/GovernanceDashboard.js +281 -0
  510. package/dist/output/GovernanceDashboard.js.map +1 -0
  511. package/dist/output/HTMLArtifactLayer.d.ts +97 -0
  512. package/dist/output/HTMLArtifactLayer.js +576 -0
  513. package/dist/output/HTMLArtifactLayer.js.map +1 -0
  514. package/dist/output/HTMLDocumentRenderer.d.ts +83 -0
  515. package/dist/output/HTMLDocumentRenderer.js +718 -0
  516. package/dist/output/HTMLDocumentRenderer.js.map +1 -0
  517. package/dist/output/UIPrototypeRenderer.d.ts +61 -0
  518. package/dist/output/UIPrototypeRenderer.js +500 -0
  519. package/dist/output/UIPrototypeRenderer.js.map +1 -0
  520. package/dist/output/index.d.ts +10 -0
  521. package/dist/output/index.js +8 -0
  522. package/dist/output/index.js.map +1 -0
  523. package/dist/prompts/PhasePromptRegistry.d.ts +53 -0
  524. package/dist/prompts/PhasePromptRegistry.js +517 -0
  525. package/dist/prompts/PhasePromptRegistry.js.map +1 -0
  526. package/dist/prompts/PromptOptimizer.d.ts +42 -0
  527. package/dist/prompts/PromptOptimizer.js +309 -0
  528. package/dist/prompts/PromptOptimizer.js.map +1 -0
  529. package/dist/prompts/VibeTemplateGallery.d.ts +25 -0
  530. package/dist/prompts/VibeTemplateGallery.js +295 -0
  531. package/dist/prompts/VibeTemplateGallery.js.map +1 -0
  532. package/dist/qa/BrowserDaemon.d.ts +23 -0
  533. package/dist/qa/BrowserDaemon.js +79 -0
  534. package/dist/qa/BrowserDaemon.js.map +1 -0
  535. package/dist/qa/E2ETestOrchestrator.d.ts +14 -0
  536. package/dist/qa/E2ETestOrchestrator.js +19 -0
  537. package/dist/qa/E2ETestOrchestrator.js.map +1 -0
  538. package/dist/review/CrossModelReviewer.d.ts +35 -0
  539. package/dist/review/CrossModelReviewer.js +75 -0
  540. package/dist/review/CrossModelReviewer.js.map +1 -0
  541. package/dist/review/ReviewAggregator.d.ts +13 -0
  542. package/dist/review/ReviewAggregator.js +28 -0
  543. package/dist/review/ReviewAggregator.js.map +1 -0
  544. package/dist/review/reviewCommands.d.ts +15 -0
  545. package/dist/review/reviewCommands.js +24 -0
  546. package/dist/review/reviewCommands.js.map +1 -0
  547. package/dist/routing/LocalModelProvider.d.ts +11 -0
  548. package/dist/routing/LocalModelProvider.js +21 -0
  549. package/dist/routing/LocalModelProvider.js.map +1 -0
  550. package/dist/routing/ModelRouter.d.ts +42 -0
  551. package/dist/routing/ModelRouter.js +94 -0
  552. package/dist/routing/ModelRouter.js.map +1 -0
  553. package/dist/routing/PromptCachePolicy.d.ts +37 -0
  554. package/dist/routing/PromptCachePolicy.js +97 -0
  555. package/dist/routing/PromptCachePolicy.js.map +1 -0
  556. package/dist/runtime/AiOsRuntime.d.ts +485 -0
  557. package/dist/runtime/AiOsRuntime.js +1846 -0
  558. package/dist/runtime/AiOsRuntime.js.map +1 -0
  559. package/dist/runtime/CostAnalyzer.d.ts +53 -0
  560. package/dist/runtime/CostAnalyzer.js +160 -0
  561. package/dist/runtime/CostAnalyzer.js.map +1 -0
  562. package/dist/runtime/CostOptimizer.d.ts +11 -0
  563. package/dist/runtime/CostOptimizer.js +21 -0
  564. package/dist/runtime/CostOptimizer.js.map +1 -0
  565. package/dist/runtime/ExecutionLedger.d.ts +46 -0
  566. package/dist/runtime/ExecutionLedger.js +71 -0
  567. package/dist/runtime/ExecutionLedger.js.map +1 -0
  568. package/dist/runtime/FinalReportGuard.d.ts +16 -0
  569. package/dist/runtime/FinalReportGuard.js +14 -0
  570. package/dist/runtime/FinalReportGuard.js.map +1 -0
  571. package/dist/runtime/ModelUsageLedger.d.ts +101 -0
  572. package/dist/runtime/ModelUsageLedger.js +296 -0
  573. package/dist/runtime/ModelUsageLedger.js.map +1 -0
  574. package/dist/runtime/RuntimeDoctor.d.ts +23 -0
  575. package/dist/runtime/RuntimeDoctor.js +151 -0
  576. package/dist/runtime/RuntimeDoctor.js.map +1 -0
  577. package/dist/runtime/RuntimeEvidenceLedger.d.ts +50 -0
  578. package/dist/runtime/RuntimeEvidenceLedger.js +89 -0
  579. package/dist/runtime/RuntimeEvidenceLedger.js.map +1 -0
  580. package/dist/runtime/SessionLedger.d.ts +53 -0
  581. package/dist/runtime/SessionLedger.js +104 -0
  582. package/dist/runtime/SessionLedger.js.map +1 -0
  583. package/dist/runtime/index.d.ts +7 -0
  584. package/dist/runtime/index.js +8 -0
  585. package/dist/runtime/index.js.map +1 -0
  586. package/dist/setup/SetupVerification.d.ts +42 -0
  587. package/dist/setup/SetupVerification.js +180 -0
  588. package/dist/setup/SetupVerification.js.map +1 -0
  589. package/dist/setup/SetupWizard.d.ts +45 -0
  590. package/dist/setup/SetupWizard.js +216 -0
  591. package/dist/setup/SetupWizard.js.map +1 -0
  592. package/dist/shield/PolicyCompiler.d.ts +70 -0
  593. package/dist/shield/PolicyCompiler.js +540 -0
  594. package/dist/shield/PolicyCompiler.js.map +1 -0
  595. package/dist/shield/ProtectedPaths.d.ts +39 -0
  596. package/dist/shield/ProtectedPaths.js +179 -0
  597. package/dist/shield/ProtectedPaths.js.map +1 -0
  598. package/dist/shield/ShieldProtocol.d.ts +50 -0
  599. package/dist/shield/ShieldProtocol.js +103 -0
  600. package/dist/shield/ShieldProtocol.js.map +1 -0
  601. package/dist/skills/ExternalSkills.d.ts +3 -0
  602. package/dist/skills/ExternalSkills.js +27 -0
  603. package/dist/skills/ExternalSkills.js.map +1 -0
  604. package/dist/skills/GrillingSessionSkill.d.ts +65 -0
  605. package/dist/skills/GrillingSessionSkill.js +113 -0
  606. package/dist/skills/GrillingSessionSkill.js.map +1 -0
  607. package/dist/skills/GrillingTemplates.d.ts +7 -0
  608. package/dist/skills/GrillingTemplates.js +38 -0
  609. package/dist/skills/GrillingTemplates.js.map +1 -0
  610. package/dist/skills/RoleSkills.d.ts +20 -0
  611. package/dist/skills/RoleSkills.js +154 -0
  612. package/dist/skills/RoleSkills.js.map +1 -0
  613. package/dist/skills/SkillCatalog.d.ts +13 -0
  614. package/dist/skills/SkillCatalog.js +184 -0
  615. package/dist/skills/SkillCatalog.js.map +1 -0
  616. package/dist/skills/SkillDiscovery.d.ts +84 -0
  617. package/dist/skills/SkillDiscovery.js +402 -0
  618. package/dist/skills/SkillDiscovery.js.map +1 -0
  619. package/dist/skills/SkillDoctor.d.ts +37 -0
  620. package/dist/skills/SkillDoctor.js +267 -0
  621. package/dist/skills/SkillDoctor.js.map +1 -0
  622. package/dist/skills/SkillExecutor.d.ts +38 -0
  623. package/dist/skills/SkillExecutor.js +237 -0
  624. package/dist/skills/SkillExecutor.js.map +1 -0
  625. package/dist/skills/SkillFrontmatter.d.ts +28 -0
  626. package/dist/skills/SkillFrontmatter.js +152 -0
  627. package/dist/skills/SkillFrontmatter.js.map +1 -0
  628. package/dist/skills/SkillInstaller.d.ts +40 -0
  629. package/dist/skills/SkillInstaller.js +117 -0
  630. package/dist/skills/SkillInstaller.js.map +1 -0
  631. package/dist/skills/SkillMdStandard.d.ts +33 -0
  632. package/dist/skills/SkillMdStandard.js +88 -0
  633. package/dist/skills/SkillMdStandard.js.map +1 -0
  634. package/dist/skills/SkillRadar.d.ts +83 -0
  635. package/dist/skills/SkillRadar.js +404 -0
  636. package/dist/skills/SkillRadar.js.map +1 -0
  637. package/dist/skills/SkillRegistry.d.ts +112 -0
  638. package/dist/skills/SkillRegistry.js +161 -0
  639. package/dist/skills/SkillRegistry.js.map +1 -0
  640. package/dist/skills/SkillRepository.d.ts +71 -0
  641. package/dist/skills/SkillRepository.js +435 -0
  642. package/dist/skills/SkillRepository.js.map +1 -0
  643. package/dist/skills/TriggerEngine.d.ts +43 -0
  644. package/dist/skills/TriggerEngine.js +142 -0
  645. package/dist/skills/TriggerEngine.js.map +1 -0
  646. package/dist/skills/coreSkills.d.ts +6 -0
  647. package/dist/skills/coreSkills.js +41 -0
  648. package/dist/skills/coreSkills.js.map +1 -0
  649. package/dist/skills/index.d.ts +10 -0
  650. package/dist/skills/index.js +12 -0
  651. package/dist/skills/index.js.map +1 -0
  652. package/dist/skills/interop/GStackInterop.d.ts +15 -0
  653. package/dist/skills/interop/GStackInterop.js +34 -0
  654. package/dist/skills/interop/GStackInterop.js.map +1 -0
  655. package/dist/skills/interop/OMCInterop.d.ts +15 -0
  656. package/dist/skills/interop/OMCInterop.js +34 -0
  657. package/dist/skills/interop/OMCInterop.js.map +1 -0
  658. package/dist/skills/routing/SkillGate.d.ts +12 -0
  659. package/dist/skills/routing/SkillGate.js +117 -0
  660. package/dist/skills/routing/SkillGate.js.map +1 -0
  661. package/dist/skills/routing/SkillPlanner.d.ts +8 -0
  662. package/dist/skills/routing/SkillPlanner.js +179 -0
  663. package/dist/skills/routing/SkillPlanner.js.map +1 -0
  664. package/dist/skills/routing/SkillPolicy.d.ts +6 -0
  665. package/dist/skills/routing/SkillPolicy.js +336 -0
  666. package/dist/skills/routing/SkillPolicy.js.map +1 -0
  667. package/dist/skills/routing/SkillRoutingTypes.d.ts +89 -0
  668. package/dist/skills/routing/SkillRoutingTypes.js +2 -0
  669. package/dist/skills/routing/SkillRoutingTypes.js.map +1 -0
  670. package/dist/skills/routing/TaskIntentClassifier.d.ts +6 -0
  671. package/dist/skills/routing/TaskIntentClassifier.js +79 -0
  672. package/dist/skills/routing/TaskIntentClassifier.js.map +1 -0
  673. package/dist/skills/routing/index.d.ts +5 -0
  674. package/dist/skills/routing/index.js +6 -0
  675. package/dist/skills/routing/index.js.map +1 -0
  676. package/dist/tasks/IssueTriageFSM.d.ts +26 -0
  677. package/dist/tasks/IssueTriageFSM.js +107 -0
  678. package/dist/tasks/IssueTriageFSM.js.map +1 -0
  679. package/dist/tasks/TaskEngine.d.ts +97 -0
  680. package/dist/tasks/TaskEngine.js +289 -0
  681. package/dist/tasks/TaskEngine.js.map +1 -0
  682. package/dist/testing/DiffTestSelector.d.ts +22 -0
  683. package/dist/testing/DiffTestSelector.js +114 -0
  684. package/dist/testing/DiffTestSelector.js.map +1 -0
  685. package/dist/testing/index.d.ts +1 -0
  686. package/dist/testing/index.js +3 -0
  687. package/dist/testing/index.js.map +1 -0
  688. package/dist/tools/CommandOutputCompressor.d.ts +28 -0
  689. package/dist/tools/CommandOutputCompressor.js +242 -0
  690. package/dist/tools/CommandOutputCompressor.js.map +1 -0
  691. package/dist/tools/CommandRunLedger.d.ts +77 -0
  692. package/dist/tools/CommandRunLedger.js +111 -0
  693. package/dist/tools/CommandRunLedger.js.map +1 -0
  694. package/dist/tools/RtkRuntime.d.ts +9 -0
  695. package/dist/tools/RtkRuntime.js +43 -0
  696. package/dist/tools/RtkRuntime.js.map +1 -0
  697. package/dist/tools/SafeCommandRunner.d.ts +16 -0
  698. package/dist/tools/SafeCommandRunner.js +83 -0
  699. package/dist/tools/SafeCommandRunner.js.map +1 -0
  700. package/dist/tools/ToolCapabilityRegistry.d.ts +51 -0
  701. package/dist/tools/ToolCapabilityRegistry.js +295 -0
  702. package/dist/tools/ToolCapabilityRegistry.js.map +1 -0
  703. package/dist/tools/ToolEvidenceGate.d.ts +39 -0
  704. package/dist/tools/ToolEvidenceGate.js +117 -0
  705. package/dist/tools/ToolEvidenceGate.js.map +1 -0
  706. package/dist/tools/ToolEvidenceStore.d.ts +58 -0
  707. package/dist/tools/ToolEvidenceStore.js +129 -0
  708. package/dist/tools/ToolEvidenceStore.js.map +1 -0
  709. package/dist/tools/ToolOrchestrator.d.ts +67 -0
  710. package/dist/tools/ToolOrchestrator.js +252 -0
  711. package/dist/tools/ToolOrchestrator.js.map +1 -0
  712. package/dist/tools/ToolPolicy.d.ts +33 -0
  713. package/dist/tools/ToolPolicy.js +172 -0
  714. package/dist/tools/ToolPolicy.js.map +1 -0
  715. package/dist/tools/index.d.ts +7 -0
  716. package/dist/tools/index.js +8 -0
  717. package/dist/tools/index.js.map +1 -0
  718. package/dist/tui/TuiDashboard.d.ts +3 -0
  719. package/dist/tui/TuiDashboard.js +120 -0
  720. package/dist/tui/TuiDashboard.js.map +1 -0
  721. package/dist/version.d.ts +3 -0
  722. package/dist/version.js +15 -0
  723. package/dist/version.js.map +1 -0
  724. package/dist/workflow/AdaptiveWorkflowRouter.d.ts +38 -0
  725. package/dist/workflow/AdaptiveWorkflowRouter.js +214 -0
  726. package/dist/workflow/AdaptiveWorkflowRouter.js.map +1 -0
  727. package/dist/workflow/CommitDiscipline.d.ts +68 -0
  728. package/dist/workflow/CommitDiscipline.js +328 -0
  729. package/dist/workflow/CommitDiscipline.js.map +1 -0
  730. package/dist/workflow/ContextGovernance.d.ts +51 -0
  731. package/dist/workflow/ContextGovernance.js +233 -0
  732. package/dist/workflow/ContextGovernance.js.map +1 -0
  733. package/dist/workflow/CrossRepoOrchestrator.d.ts +92 -0
  734. package/dist/workflow/CrossRepoOrchestrator.js +408 -0
  735. package/dist/workflow/CrossRepoOrchestrator.js.map +1 -0
  736. package/dist/workflow/DiagnosticLoop.d.ts +40 -0
  737. package/dist/workflow/DiagnosticLoop.js +105 -0
  738. package/dist/workflow/DiagnosticLoop.js.map +1 -0
  739. package/dist/workflow/EngineeringStandards.d.ts +212 -0
  740. package/dist/workflow/EngineeringStandards.js +1113 -0
  741. package/dist/workflow/EngineeringStandards.js.map +1 -0
  742. package/dist/workflow/EvidenceStore.d.ts +20 -0
  743. package/dist/workflow/EvidenceStore.js +48 -0
  744. package/dist/workflow/EvidenceStore.js.map +1 -0
  745. package/dist/workflow/EvolutionShadowPromoter.d.ts +46 -0
  746. package/dist/workflow/EvolutionShadowPromoter.js +73 -0
  747. package/dist/workflow/EvolutionShadowPromoter.js.map +1 -0
  748. package/dist/workflow/GateCatalog.d.ts +63 -0
  749. package/dist/workflow/GateCatalog.js +268 -0
  750. package/dist/workflow/GateCatalog.js.map +1 -0
  751. package/dist/workflow/GovernanceLock.d.ts +35 -0
  752. package/dist/workflow/GovernanceLock.js +58 -0
  753. package/dist/workflow/GovernanceLock.js.map +1 -0
  754. package/dist/workflow/GovernanceRoi.d.ts +52 -0
  755. package/dist/workflow/GovernanceRoi.js +204 -0
  756. package/dist/workflow/GovernanceRoi.js.map +1 -0
  757. package/dist/workflow/GovernanceTemplatePacks.d.ts +24 -0
  758. package/dist/workflow/GovernanceTemplatePacks.js +2134 -0
  759. package/dist/workflow/GovernanceTemplatePacks.js.map +1 -0
  760. package/dist/workflow/GovernanceTemplates.d.ts +19 -0
  761. package/dist/workflow/GovernanceTemplates.js +1291 -0
  762. package/dist/workflow/GovernanceTemplates.js.map +1 -0
  763. package/dist/workflow/McpGovernance.d.ts +63 -0
  764. package/dist/workflow/McpGovernance.js +198 -0
  765. package/dist/workflow/McpGovernance.js.map +1 -0
  766. package/dist/workflow/OutOfScopeStore.d.ts +37 -0
  767. package/dist/workflow/OutOfScopeStore.js +164 -0
  768. package/dist/workflow/OutOfScopeStore.js.map +1 -0
  769. package/dist/workflow/PhaseMarkerTracker.d.ts +63 -0
  770. package/dist/workflow/PhaseMarkerTracker.js +291 -0
  771. package/dist/workflow/PhaseMarkerTracker.js.map +1 -0
  772. package/dist/workflow/ResourceGovernance.d.ts +120 -0
  773. package/dist/workflow/ResourceGovernance.js +531 -0
  774. package/dist/workflow/ResourceGovernance.js.map +1 -0
  775. package/dist/workflow/ReviewAnalyzer.d.ts +80 -0
  776. package/dist/workflow/ReviewAnalyzer.js +438 -0
  777. package/dist/workflow/ReviewAnalyzer.js.map +1 -0
  778. package/dist/workflow/ReviewStore.d.ts +36 -0
  779. package/dist/workflow/ReviewStore.js +42 -0
  780. package/dist/workflow/ReviewStore.js.map +1 -0
  781. package/dist/workflow/SecurityAudit.d.ts +27 -0
  782. package/dist/workflow/SecurityAudit.js +294 -0
  783. package/dist/workflow/SecurityAudit.js.map +1 -0
  784. package/dist/workflow/SessionCoordinator.d.ts +103 -0
  785. package/dist/workflow/SessionCoordinator.js +401 -0
  786. package/dist/workflow/SessionCoordinator.js.map +1 -0
  787. package/dist/workflow/SessionPreamble.d.ts +19 -0
  788. package/dist/workflow/SessionPreamble.js +130 -0
  789. package/dist/workflow/SessionPreamble.js.map +1 -0
  790. package/dist/workflow/SessionStateTracker.d.ts +74 -0
  791. package/dist/workflow/SessionStateTracker.js +270 -0
  792. package/dist/workflow/SessionStateTracker.js.map +1 -0
  793. package/dist/workflow/ShipPipeline.d.ts +30 -0
  794. package/dist/workflow/ShipPipeline.js +366 -0
  795. package/dist/workflow/ShipPipeline.js.map +1 -0
  796. package/dist/workflow/TaskArtifactScaffolder.d.ts +69 -0
  797. package/dist/workflow/TaskArtifactScaffolder.js +333 -0
  798. package/dist/workflow/TaskArtifactScaffolder.js.map +1 -0
  799. package/dist/workflow/TaskDependencyGraph.d.ts +73 -0
  800. package/dist/workflow/TaskDependencyGraph.js +245 -0
  801. package/dist/workflow/TaskDependencyGraph.js.map +1 -0
  802. package/dist/workflow/TaskLevelDetector.d.ts +41 -0
  803. package/dist/workflow/TaskLevelDetector.js +219 -0
  804. package/dist/workflow/TaskLevelDetector.js.map +1 -0
  805. package/dist/workflow/TaskMetricsStore.d.ts +49 -0
  806. package/dist/workflow/TaskMetricsStore.js +149 -0
  807. package/dist/workflow/TaskMetricsStore.js.map +1 -0
  808. package/dist/workflow/TaskScoreEngine.d.ts +42 -0
  809. package/dist/workflow/TaskScoreEngine.js +181 -0
  810. package/dist/workflow/TaskScoreEngine.js.map +1 -0
  811. package/dist/workflow/TddLoop.d.ts +49 -0
  812. package/dist/workflow/TddLoop.js +78 -0
  813. package/dist/workflow/TddLoop.js.map +1 -0
  814. package/dist/workflow/UpgradeManager.d.ts +178 -0
  815. package/dist/workflow/UpgradeManager.js +665 -0
  816. package/dist/workflow/UpgradeManager.js.map +1 -0
  817. package/dist/workflow/VerificationCommands.d.ts +36 -0
  818. package/dist/workflow/VerificationCommands.js +123 -0
  819. package/dist/workflow/VerificationCommands.js.map +1 -0
  820. package/dist/workflow/VerificationProfile.d.ts +67 -0
  821. package/dist/workflow/VerificationProfile.js +241 -0
  822. package/dist/workflow/VerificationProfile.js.map +1 -0
  823. package/dist/workflow/VerificationSchema.d.ts +46 -0
  824. package/dist/workflow/VerificationSchema.js +97 -0
  825. package/dist/workflow/VerificationSchema.js.map +1 -0
  826. package/dist/workflow/WorkflowArtifactWriter.d.ts +113 -0
  827. package/dist/workflow/WorkflowArtifactWriter.js +242 -0
  828. package/dist/workflow/WorkflowArtifactWriter.js.map +1 -0
  829. package/dist/workflow/WorkflowEngine.d.ts +83 -0
  830. package/dist/workflow/WorkflowEngine.js +183 -0
  831. package/dist/workflow/WorkflowEngine.js.map +1 -0
  832. package/dist/workflow/WorkflowGuidance.d.ts +30 -0
  833. package/dist/workflow/WorkflowGuidance.js +204 -0
  834. package/dist/workflow/WorkflowGuidance.js.map +1 -0
  835. package/dist/workflow/WorkflowOpenTasks.d.ts +16 -0
  836. package/dist/workflow/WorkflowOpenTasks.js +37 -0
  837. package/dist/workflow/WorkflowOpenTasks.js.map +1 -0
  838. package/dist/workflow/WorkflowOrchestrator.d.ts +59 -0
  839. package/dist/workflow/WorkflowOrchestrator.js +326 -0
  840. package/dist/workflow/WorkflowOrchestrator.js.map +1 -0
  841. package/dist/workflow/WorkflowTemplates.d.ts +38 -0
  842. package/dist/workflow/WorkflowTemplates.js +371 -0
  843. package/dist/workflow/WorkflowTemplates.js.map +1 -0
  844. package/dist/workflow/WorkspaceLifecycle.d.ts +71 -0
  845. package/dist/workflow/WorkspaceLifecycle.js +401 -0
  846. package/dist/workflow/WorkspaceLifecycle.js.map +1 -0
  847. package/dist/workflow/WorkspacePolicy.d.ts +46 -0
  848. package/dist/workflow/WorkspacePolicy.js +141 -0
  849. package/dist/workflow/WorkspacePolicy.js.map +1 -0
  850. package/dist/workflow/WorkspaceSafety.d.ts +9 -0
  851. package/dist/workflow/WorkspaceSafety.js +49 -0
  852. package/dist/workflow/WorkspaceSafety.js.map +1 -0
  853. package/dist/workflow/WorkspaceTopology.d.ts +58 -0
  854. package/dist/workflow/WorkspaceTopology.js +176 -0
  855. package/dist/workflow/WorkspaceTopology.js.map +1 -0
  856. package/dist/workflow/autofix/AutoFixEngine.d.ts +37 -0
  857. package/dist/workflow/autofix/AutoFixEngine.js +169 -0
  858. package/dist/workflow/autofix/AutoFixEngine.js.map +1 -0
  859. package/dist/workflow/autonomous/AutonomousDevLoop.d.ts +88 -0
  860. package/dist/workflow/autonomous/AutonomousDevLoop.js +381 -0
  861. package/dist/workflow/autonomous/AutonomousDevLoop.js.map +1 -0
  862. package/dist/workflow/autonomous/BackgroundHunter.d.ts +74 -0
  863. package/dist/workflow/autonomous/BackgroundHunter.js +220 -0
  864. package/dist/workflow/autonomous/BackgroundHunter.js.map +1 -0
  865. package/dist/workflow/autonomous/WorklogManager.d.ts +50 -0
  866. package/dist/workflow/autonomous/WorklogManager.js +264 -0
  867. package/dist/workflow/autonomous/WorklogManager.js.map +1 -0
  868. package/dist/workflow/autonomous/index.d.ts +3 -0
  869. package/dist/workflow/autonomous/index.js +5 -0
  870. package/dist/workflow/autonomous/index.js.map +1 -0
  871. package/dist/workflow/cognitive/AmbiguityScorer.d.ts +17 -0
  872. package/dist/workflow/cognitive/AmbiguityScorer.js +107 -0
  873. package/dist/workflow/cognitive/AmbiguityScorer.js.map +1 -0
  874. package/dist/workflow/cognitive/ConsensusPlanner.d.ts +26 -0
  875. package/dist/workflow/cognitive/ConsensusPlanner.js +141 -0
  876. package/dist/workflow/cognitive/ConsensusPlanner.js.map +1 -0
  877. package/dist/workflow/cognitive/SocraticQuestioner.d.ts +33 -0
  878. package/dist/workflow/cognitive/SocraticQuestioner.js +276 -0
  879. package/dist/workflow/cognitive/SocraticQuestioner.js.map +1 -0
  880. package/dist/workflow/evolution/LessonExtractor.d.ts +90 -0
  881. package/dist/workflow/evolution/LessonExtractor.js +317 -0
  882. package/dist/workflow/evolution/LessonExtractor.js.map +1 -0
  883. package/dist/workflow/evolution/SelfImproveEngine.d.ts +156 -0
  884. package/dist/workflow/evolution/SelfImproveEngine.js +361 -0
  885. package/dist/workflow/evolution/SelfImproveEngine.js.map +1 -0
  886. package/dist/workflow/execution/RalphEngine.d.ts +54 -0
  887. package/dist/workflow/execution/RalphEngine.js +145 -0
  888. package/dist/workflow/execution/RalphEngine.js.map +1 -0
  889. package/dist/workflow/execution/UltraworkEngine.d.ts +43 -0
  890. package/dist/workflow/execution/UltraworkEngine.js +135 -0
  891. package/dist/workflow/execution/UltraworkEngine.js.map +1 -0
  892. package/dist/workflow/gates/EnhancedGates.d.ts +74 -0
  893. package/dist/workflow/gates/EnhancedGates.js +653 -0
  894. package/dist/workflow/gates/EnhancedGates.js.map +1 -0
  895. package/dist/workflow/gates/GateSystem.d.ts +180 -0
  896. package/dist/workflow/gates/GateSystem.js +1279 -0
  897. package/dist/workflow/gates/GateSystem.js.map +1 -0
  898. package/dist/workflow/gates/MetaGovernanceGates.d.ts +70 -0
  899. package/dist/workflow/gates/MetaGovernanceGates.js +617 -0
  900. package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -0
  901. package/dist/workflow/gates/VisualGate.d.ts +41 -0
  902. package/dist/workflow/gates/VisualGate.js +174 -0
  903. package/dist/workflow/gates/VisualGate.js.map +1 -0
  904. package/dist/workflow/index.d.ts +45 -0
  905. package/dist/workflow/index.js +47 -0
  906. package/dist/workflow/index.js.map +1 -0
  907. package/dist/workflow/qa/E2ETestRunner.d.ts +102 -0
  908. package/dist/workflow/qa/E2ETestRunner.js +227 -0
  909. package/dist/workflow/qa/E2ETestRunner.js.map +1 -0
  910. package/dist/workflow/quality/HonestDelivery.d.ts +19 -0
  911. package/dist/workflow/quality/HonestDelivery.js +77 -0
  912. package/dist/workflow/quality/HonestDelivery.js.map +1 -0
  913. package/dist/workflow/quality/KarpathyEvaluator.d.ts +18 -0
  914. package/dist/workflow/quality/KarpathyEvaluator.js +76 -0
  915. package/dist/workflow/quality/KarpathyEvaluator.js.map +1 -0
  916. package/dist/workflow/types.d.ts +151 -0
  917. package/dist/workflow/types.js +4 -0
  918. package/dist/workflow/types.js.map +1 -0
  919. package/dist/workflows/DAGBuilder.d.ts +52 -0
  920. package/dist/workflows/DAGBuilder.js +169 -0
  921. package/dist/workflows/DAGBuilder.js.map +1 -0
  922. package/dist/workflows/GateParser.d.ts +55 -0
  923. package/dist/workflows/GateParser.js +73 -0
  924. package/dist/workflows/GateParser.js.map +1 -0
  925. package/dist/workflows/WorkflowExecutor.d.ts +56 -0
  926. package/dist/workflows/WorkflowExecutor.js +143 -0
  927. package/dist/workflows/WorkflowExecutor.js.map +1 -0
  928. package/dist/workflows/WorkflowOrchestrator.d.ts +81 -0
  929. package/dist/workflows/WorkflowOrchestrator.js +337 -0
  930. package/dist/workflows/WorkflowOrchestrator.js.map +1 -0
  931. package/dist/workflows/index.d.ts +2 -0
  932. package/dist/workflows/index.js +5 -0
  933. package/dist/workflows/index.js.map +1 -0
  934. package/dist/workflows/presets.d.ts +34 -0
  935. package/dist/workflows/presets.js +224 -0
  936. package/dist/workflows/presets.js.map +1 -0
  937. package/docs/README.md +105 -0
  938. package/docs/guides/DEVELOPMENT_WORKFLOW.md +99 -0
  939. package/docs/guides/GETTING_STARTED.md +93 -0
  940. package/docs/guides/MEDICAL_AGENT_OPERATING_GUIDE.md +61 -0
  941. package/docs/guides/MEDICAL_RESEARCH_DELIVERY.md +217 -0
  942. package/docs/guides/MIGRATION.md +119 -0
  943. package/docs/reference/cli.md +2921 -0
  944. package/docs/start/README.md +79 -0
  945. package/docs/start/agent-governance-demo.md +107 -0
  946. package/docs/start/artifact-lifecycle.md +326 -0
  947. package/docs/start/quickstart.md +191 -0
  948. package/docs/start/workflow-upgrade.md +198 -0
  949. package/docs/workflow/GATES_AND_SCORE.md +89 -0
  950. package/docs/workflow/PROMPT_OPTIMIZATION.md +44 -0
  951. package/docs/workflow/README.md +123 -0
  952. package/docs/workflow/node-library.md +52 -0
  953. package/docs/workflow/templates/api-contract.md +29 -0
  954. package/docs/workflow/templates/architecture-review.md +23 -0
  955. package/docs/workflow/templates/db-change-plan.md +20 -0
  956. package/docs/workflow/templates/docs-impact.md +17 -0
  957. package/docs/workflow/templates/e2e-plan.md +20 -0
  958. package/docs/workflow/templates/explore.md +16 -0
  959. package/docs/workflow/templates/github-actions-scale-preflight.yml +32 -0
  960. package/docs/workflow/templates/mini-prd.md +16 -0
  961. package/docs/workflow/templates/plan.md +37 -0
  962. package/docs/workflow/templates/pre-push-scale-preflight.sh +8 -0
  963. package/docs/workflow/templates/product-smoke.md +61 -0
  964. package/docs/workflow/templates/reality-check.md +28 -0
  965. package/docs/workflow/templates/resource-cleanup.md +17 -0
  966. package/docs/workflow/templates/resource-impact.md +25 -0
  967. package/docs/workflow/templates/review.md +12 -0
  968. package/docs/workflow/templates/runtime.md +23 -0
  969. package/docs/workflow/templates/security-review.md +26 -0
  970. package/docs/workflow/templates/skill-evidence.md +33 -0
  971. package/docs/workflow/templates/skill-plan.md +39 -0
  972. package/docs/workflow/templates/spec.md +17 -0
  973. package/docs/workflow/templates/standards-impact.md +28 -0
  974. package/docs/workflow/templates/summary.md +16 -0
  975. package/docs/workflow/templates/tasks.md +8 -0
  976. package/docs/workflow/templates/ui-spec.md +29 -0
  977. package/docs/workflow/templates/verification.md +20 -0
  978. package/docs/workflow/templates/visual-review.md +20 -0
  979. package/docs/zh/quickstart.md +108 -0
  980. package/examples/demo-projects/agent-governance-demo/CONTEXT.md +14 -0
  981. package/examples/demo-projects/agent-governance-demo/README.md +48 -0
  982. package/examples/demo-projects/agent-governance-demo/docs/CONTEXT-MAP.md +14 -0
  983. package/examples/demo-projects/agent-governance-demo/package.json +22 -0
  984. package/examples/demo-projects/agent-governance-demo/src/oauth-state.ts +39 -0
  985. package/examples/demo-projects/agent-governance-demo/tests/oauth-state.test.ts +52 -0
  986. package/mcp-configs/_INDEX.md +55 -0
  987. package/mcp-configs/context7/config.json +9 -0
  988. package/mcp-configs/fetch/config.json +9 -0
  989. package/mcp-configs/filesystem/config.json +9 -0
  990. package/mcp-configs/github/config.json +11 -0
  991. package/mcp-configs/memory/config.json +9 -0
  992. package/mcp-configs/neon/config.json +11 -0
  993. package/mcp-configs/playwright/config.json +9 -0
  994. package/mcp-configs/postgres/config.json +11 -0
  995. package/mcp-configs/puppeteer/config.json +9 -0
  996. package/mcp-configs/sequential-thinking/config.json +9 -0
  997. package/package.json +113 -0
  998. package/scripts/workflow/lib/gbrain-runtime.mjs +185 -0
  999. package/scripts/workflow/lib/report-output.mjs +107 -0
  1000. package/scripts/workflow/medscale-release-smoke.mjs +338 -0
  1001. package/scripts/workflow/provider-rehearsal.mjs +597 -0
  1002. package/scripts/workflow/setup-smoke.mjs +433 -0
  1003. package/target-research-platform/bridge_runner.py +310 -0
  1004. package/target-research-platform/config.yaml +148 -0
  1005. package/target-research-platform/data/immune_infiltration/ACC.csv +201 -0
  1006. package/target-research-platform/data/immune_infiltration/BLCA.csv +201 -0
  1007. package/target-research-platform/data/immune_infiltration/BRCA.csv +201 -0
  1008. package/target-research-platform/data/immune_infiltration/CESC.csv +201 -0
  1009. package/target-research-platform/data/immune_infiltration/CHOL.csv +201 -0
  1010. package/target-research-platform/data/immune_infiltration/COAD.csv +201 -0
  1011. package/target-research-platform/data/immune_infiltration/DLBC.csv +201 -0
  1012. package/target-research-platform/data/immune_infiltration/ESCA.csv +201 -0
  1013. package/target-research-platform/data/immune_infiltration/GBM.csv +201 -0
  1014. package/target-research-platform/data/immune_infiltration/HNSC.csv +201 -0
  1015. package/target-research-platform/data/immune_infiltration/KICH.csv +201 -0
  1016. package/target-research-platform/data/immune_infiltration/KIRC.csv +201 -0
  1017. package/target-research-platform/data/immune_infiltration/KIRP.csv +201 -0
  1018. package/target-research-platform/data/immune_infiltration/LAML.csv +201 -0
  1019. package/target-research-platform/data/immune_infiltration/LGG.csv +201 -0
  1020. package/target-research-platform/data/immune_infiltration/LIHC.csv +201 -0
  1021. package/target-research-platform/data/immune_infiltration/LUAD.csv +201 -0
  1022. package/target-research-platform/data/immune_infiltration/LUSC.csv +201 -0
  1023. package/target-research-platform/data/immune_infiltration/MESO.csv +201 -0
  1024. package/target-research-platform/data/immune_infiltration/OV.csv +201 -0
  1025. package/target-research-platform/data/immune_infiltration/PAAD.csv +201 -0
  1026. package/target-research-platform/data/immune_infiltration/PCPG.csv +201 -0
  1027. package/target-research-platform/data/immune_infiltration/PRAD.csv +201 -0
  1028. package/target-research-platform/data/immune_infiltration/READ.csv +201 -0
  1029. package/target-research-platform/data/immune_infiltration/SARC.csv +201 -0
  1030. package/target-research-platform/data/immune_infiltration/SKCM.csv +201 -0
  1031. package/target-research-platform/data/immune_infiltration/STAD.csv +201 -0
  1032. package/target-research-platform/data/immune_infiltration/TGCT.csv +201 -0
  1033. package/target-research-platform/data/immune_infiltration/THCA.csv +201 -0
  1034. package/target-research-platform/data/immune_infiltration/THYM.csv +201 -0
  1035. package/target-research-platform/data/immune_infiltration/UCEC.csv +201 -0
  1036. package/target-research-platform/data/immune_infiltration/UCS.csv +201 -0
  1037. package/target-research-platform/data/immune_infiltration/UVM.csv +201 -0
  1038. package/target-research-platform/docs/JSON_SCHEMA.md +352 -0
  1039. package/target-research-platform/docs/PROGRESS_2026-06-09.md +140 -0
  1040. package/target-research-platform/main.py +755 -0
  1041. package/target-research-platform/pyproject.toml +54 -0
  1042. package/target-research-platform/requirements.txt +9 -0
  1043. package/target-research-platform/run_dashboard.py +5 -0
  1044. package/target-research-platform/run_real_medical_workflow.py +28 -0
  1045. package/target-research-platform/scripts/demo_report.py +481 -0
  1046. package/target-research-platform/scripts/generate_evidence_package.py +75 -0
  1047. package/target-research-platform/scripts/prepare_immune_data.py +386 -0
  1048. package/target-research-platform/src/__init__.py +4 -0
  1049. package/target-research-platform/src/analysis/__init__.py +3 -0
  1050. package/target-research-platform/src/analysis/stage1_expression/__init__.py +12 -0
  1051. package/target-research-platform/src/analysis/stage1_expression/immune_correlation.py +366 -0
  1052. package/target-research-platform/src/analysis/stage1_expression/pipeline.py +579 -0
  1053. package/target-research-platform/src/analysis/stage1_expression/survival_analysis.py +382 -0
  1054. package/target-research-platform/src/analysis/stage2_screening/__init__.py +12 -0
  1055. package/target-research-platform/src/analysis/stage2_screening/differential_expression.py +451 -0
  1056. package/target-research-platform/src/analysis/stage2_screening/druggability_score.py +477 -0
  1057. package/target-research-platform/src/analysis/stage2_screening/pipeline.py +822 -0
  1058. package/target-research-platform/src/analysis/stage3_deep_research/__init__.py +12 -0
  1059. package/target-research-platform/src/analysis/stage3_deep_research/competitive_landscape.py +479 -0
  1060. package/target-research-platform/src/analysis/stage3_deep_research/pipeline.py +763 -0
  1061. package/target-research-platform/src/analysis/stage3_deep_research/target_function.py +290 -0
  1062. package/target-research-platform/src/analysis/stage4_business/__init__.py +12 -0
  1063. package/target-research-platform/src/analysis/stage4_business/business_plan.py +816 -0
  1064. package/target-research-platform/src/analysis/stage4_business/milestone_planner.py +844 -0
  1065. package/target-research-platform/src/analysis/stage4_business/pipeline.py +284 -0
  1066. package/target-research-platform/src/api_clients/__init__.py +29 -0
  1067. package/target-research-platform/src/api_clients/aminer_client.py +163 -0
  1068. package/target-research-platform/src/api_clients/base_client.py +186 -0
  1069. package/target-research-platform/src/api_clients/clinicaltrials_client.py +411 -0
  1070. package/target-research-platform/src/api_clients/geo_client.py +1420 -0
  1071. package/target-research-platform/src/api_clients/gtex_client.py +209 -0
  1072. package/target-research-platform/src/api_clients/hpa_client.py +170 -0
  1073. package/target-research-platform/src/api_clients/immune_data_manager.py +247 -0
  1074. package/target-research-platform/src/api_clients/openalex_client.py +86 -0
  1075. package/target-research-platform/src/api_clients/opentargets_client.py +558 -0
  1076. package/target-research-platform/src/api_clients/pubmed_client.py +361 -0
  1077. package/target-research-platform/src/api_clients/tcga_client.py +712 -0
  1078. package/target-research-platform/src/api_clients/timer_client.py +169 -0
  1079. package/target-research-platform/src/dashboard/app.py +2283 -0
  1080. package/target-research-platform/src/dashboard/deliverables.py +710 -0
  1081. package/target-research-platform/src/dashboard/static/artifactPreview.js +96 -0
  1082. package/target-research-platform/src/dashboard/static/index.html +1292 -0
  1083. package/target-research-platform/src/dashboard/status_tracker.py +237 -0
  1084. package/target-research-platform/src/output/__init__.py +42 -0
  1085. package/target-research-platform/src/output/agent_llm_provider.py +171 -0
  1086. package/target-research-platform/src/output/chart_generator.py +550 -0
  1087. package/target-research-platform/src/output/data_exporter.py +215 -0
  1088. package/target-research-platform/src/output/delivery_packager.py +791 -0
  1089. package/target-research-platform/src/output/evidence_package.py +230 -0
  1090. package/target-research-platform/src/output/journal_templates.py +193 -0
  1091. package/target-research-platform/src/output/literature_enricher.py +395 -0
  1092. package/target-research-platform/src/output/literature_reviewer.py +420 -0
  1093. package/target-research-platform/src/output/manuscript_fact_checker.py +279 -0
  1094. package/target-research-platform/src/output/manuscript_generator.py +1189 -0
  1095. package/target-research-platform/src/output/manuscript_quality.py +401 -0
  1096. package/target-research-platform/src/output/medical_skills_bridge.py +140 -0
  1097. package/target-research-platform/src/output/report_generator.py +542 -0
  1098. package/target-research-platform/src/output/usage_envelope.py +193 -0
  1099. package/target-research-platform/src/utils/__init__.py +1 -0
  1100. package/target-research-platform/src/utils/config.py +125 -0
  1101. package/target-research-platform/src/utils/logger.py +71 -0
  1102. package/target-research-platform/src/validators/__init__.py +13 -0
  1103. package/target-research-platform/src/validators/cross_validator.py +394 -0
  1104. package/target-research-platform/src/validators/data_provenance.py +298 -0
@@ -0,0 +1,1846 @@
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from 'node:fs';
2
+ import { dirname, isAbsolute, join, resolve } from 'node:path';
3
+ import { buildContextPack, scanContextBudget, } from '../context/ContextBudget.js';
4
+ import { createGovernanceRoiReport, } from '../governance/GovernanceRoi.js';
5
+ import { evaluateProgressiveGovernance, } from '../governance/ProgressiveGovernance.js';
6
+ import { MemoryFabric, recallMemoryProviders, } from '../memory/index.js';
7
+ import { createSkillPlan, loadSkillRoutingPolicy, } from '../skills/routing/index.js';
8
+ import { routeAdaptiveWorkflow } from '../workflow/AdaptiveWorkflowRouter.js';
9
+ import { collectGovernanceRoi } from '../workflow/GovernanceRoi.js';
10
+ import { proposeShadowRule, buildEvolutionShadowReport, } from '../workflow/EvolutionShadowPromoter.js';
11
+ import { runSafeCommand } from '../tools/SafeCommandRunner.js';
12
+ import { SCALE_ENGINE_VERSION } from '../version.js';
13
+ import { resolveVerificationTargets, } from '../workflow/VerificationProfile.js';
14
+ import { RuntimeEvidenceLedger } from './RuntimeEvidenceLedger.js';
15
+ import { loadRelevantLearnings } from '../evolution/SessionLearnings.js';
16
+ import { collectSessionPreamble } from '../workflow/SessionPreamble.js';
17
+ export async function createAiOsPlan(input) {
18
+ const projectDir = resolve(input.projectDir ?? process.cwd());
19
+ const scaleDir = input.scaleDir ?? '.scale';
20
+ const level = normalizeSkillTaskLevel(input.level);
21
+ const files = input.files ?? [];
22
+ const services = input.services ?? [];
23
+ const taskId = input.taskId;
24
+ const budget = input.budget ?? 8_000;
25
+ const preamble = collectSessionPreamble({ projectDir, scaleDir });
26
+ const sessionLearnings = loadRelevantLearnings({ projectDir, scaleDir, task: input.task, limit: 5 });
27
+ const governance = evaluateProgressiveGovernance({
28
+ task: input.task,
29
+ changedFiles: files,
30
+ requestedMode: input.requestedMode,
31
+ });
32
+ const contextBudget = scanContextBudget({ projectDir, scaleDir, maxTaskTokens: budget });
33
+ const context = buildContextPack({
34
+ projectDir,
35
+ scaleDir,
36
+ task: input.task,
37
+ taskId,
38
+ level,
39
+ files,
40
+ budget,
41
+ });
42
+ const memoryRecall = await recallMemoryProviders({
43
+ projectDir,
44
+ scaleDir,
45
+ query: [input.task, files.join(' ')].filter(Boolean).join('\n'),
46
+ task: input.task,
47
+ files,
48
+ limit: input.memoryTopK ?? 5,
49
+ });
50
+ const memoryPack = await new MemoryFabric({
51
+ projectDir,
52
+ scaleDir,
53
+ knowledgeBase: input.knowledgeBase,
54
+ }).createContextPack({
55
+ task: input.task,
56
+ taskId,
57
+ level,
58
+ files,
59
+ budgetTokens: Math.max(1, Math.floor(budget / 2)),
60
+ knowledgeTopK: input.memoryTopK,
61
+ });
62
+ const skillPolicy = loadSkillRoutingPolicy(projectDir, scaleDir);
63
+ const skillPlan = createSkillPlan({
64
+ taskId: taskId ?? `AIOS-${Date.now()}`,
65
+ taskName: input.task,
66
+ description: input.task,
67
+ level,
68
+ files,
69
+ services,
70
+ policy: skillPolicy,
71
+ });
72
+ const evaluator = createEvaluatorIntelligence({
73
+ task: input.task,
74
+ files,
75
+ governance,
76
+ skillPlan,
77
+ });
78
+ const toolStrategy = createToolStrategyPlan(skillPlan);
79
+ const adaptiveWorkflow = createAdaptiveWorkflow(governance, skillPlan, evaluator, toolStrategy);
80
+ const evolutionShadow = createEvolutionShadowProposals(governance, evaluator);
81
+ const roi = createGovernanceRoiReport({
82
+ taskId,
83
+ contextBudget,
84
+ contextPack: context,
85
+ governance,
86
+ memoryRecall,
87
+ skillPlan,
88
+ });
89
+ return {
90
+ version: SCALE_ENGINE_VERSION,
91
+ generatedAt: new Date().toISOString(),
92
+ task: {
93
+ taskId,
94
+ task: input.task,
95
+ level,
96
+ files,
97
+ services,
98
+ },
99
+ preamble,
100
+ governance,
101
+ adaptiveWorkflow,
102
+ evaluator,
103
+ toolStrategy,
104
+ evolutionShadow,
105
+ context,
106
+ memory: {
107
+ providerOrder: memoryRecall.providerOrder,
108
+ selectedProviders: memoryRecall.selectedProviders,
109
+ fallbackUsed: memoryRecall.fallbackUsed,
110
+ items: memoryRecall.items,
111
+ warnings: memoryRecall.warnings,
112
+ contextPack: memoryPack,
113
+ },
114
+ skillPlan,
115
+ sessionLearnings,
116
+ roi,
117
+ recommendations: recommendations({ governance, context, memoryRecall, skillPlan, evaluator, toolStrategy }),
118
+ };
119
+ }
120
+ export async function createAiOsRun(input) {
121
+ const projectDir = resolve(input.projectDir ?? process.cwd());
122
+ const scaleDir = input.scaleDir ?? '.scale';
123
+ const mode = input.mode ?? 'dry-run';
124
+ const plan = await createAiOsPlan({ ...input, projectDir, scaleDir });
125
+ const generatedAt = new Date().toISOString();
126
+ const runReportPath = resolveRunReportPath(projectDir, scaleDir, plan.task.taskId ?? `AIOS-RUN-${Date.now()}`);
127
+ const steps = buildRunSteps(plan);
128
+ const verification = await runGuardedVerification({
129
+ projectDir,
130
+ scaleDir,
131
+ plan,
132
+ steps,
133
+ commands: input.verificationCommands ?? [],
134
+ timeout: input.commandTimeoutMs,
135
+ allowShell: input.allowShell,
136
+ enabled: mode === 'guarded',
137
+ });
138
+ const failureCandidates = buildFailureLearningCandidates(plan, steps);
139
+ const evidence = summarizeRunEvidence(steps);
140
+ const status = steps.some(step => step.status === 'blocked') ? 'blocked' : 'ready';
141
+ const report = {
142
+ version: SCALE_ENGINE_VERSION,
143
+ generatedAt,
144
+ mode,
145
+ dryRun: mode === 'dry-run',
146
+ status,
147
+ plan,
148
+ steps,
149
+ evidence,
150
+ verification,
151
+ failureLearning: {
152
+ status: failureCandidates.length > 0 ? 'candidate-created' : 'idle',
153
+ candidates: failureCandidates,
154
+ },
155
+ artifacts: {
156
+ runReport: runReportPath,
157
+ },
158
+ governanceRoi: collectGovernanceRoi({ projectDir, scaleDir }),
159
+ nextActions: buildRunNextActions(steps, mode),
160
+ };
161
+ writeAiOsRunReport(runReportPath, report);
162
+ return report;
163
+ }
164
+ export function createAiOsDashboard(input = {}) {
165
+ const projectDir = resolve(input.projectDir ?? process.cwd());
166
+ const scaleDir = input.scaleDir ?? '.scale';
167
+ const runsDir = resolveRunsDir(projectDir, scaleDir);
168
+ const warnings = [];
169
+ const reports = readAiOsRunReports(runsDir, warnings);
170
+ const latestRuns = reports
171
+ .sort((a, b) => Date.parse(b.generatedAt) - Date.parse(a.generatedAt))
172
+ .slice(0, input.limit ?? 10)
173
+ .map(toDashboardRunSummary);
174
+ const summary = {
175
+ totalRuns: reports.length,
176
+ readyRuns: reports.filter(report => report.status === 'ready').length,
177
+ blockedRuns: reports.filter(report => report.status === 'blocked').length,
178
+ dryRunRuns: reports.filter(report => report.mode === 'dry-run').length,
179
+ guardedRuns: reports.filter(report => report.mode === 'guarded').length,
180
+ verificationCommands: reports.reduce((sum, report) => sum + report.verification.commands.length, 0),
181
+ failedVerificationCommands: reports.reduce((sum, report) => sum + report.verification.commands.filter(command => command.status === 'failed').length, 0),
182
+ pendingEvidence: reports.reduce((sum, report) => sum + report.evidence.pending.length, 0),
183
+ failureLearningCandidates: reports.reduce((sum, report) => sum + report.failureLearning.candidates.length, 0),
184
+ };
185
+ const health = summarizeDashboardHealth(summary);
186
+ return {
187
+ version: SCALE_ENGINE_VERSION,
188
+ generatedAt: new Date().toISOString(),
189
+ runsDir,
190
+ summary,
191
+ health,
192
+ latestRuns,
193
+ recommendations: dashboardRecommendations(summary),
194
+ warnings,
195
+ };
196
+ }
197
+ export async function createAiOsBenchmark(input = {}) {
198
+ const projectDir = resolve(input.projectDir ?? process.cwd());
199
+ const scaleDir = input.scaleDir ?? '.scale';
200
+ const scenarios = defaultBenchmarkScenarios(input.budget);
201
+ const results = [];
202
+ for (const scenario of scenarios) {
203
+ const plan = await createAiOsPlan({
204
+ projectDir,
205
+ scaleDir,
206
+ taskId: `BENCH-${scenario.id}`,
207
+ task: scenario.task,
208
+ level: scenario.level,
209
+ files: scenario.files,
210
+ services: scenario.services,
211
+ budget: scenario.budget,
212
+ });
213
+ results.push({
214
+ id: scenario.id,
215
+ task: scenario.task,
216
+ level: scenario.level,
217
+ governanceMode: plan.governance.effectiveMode,
218
+ workflowProfile: plan.adaptiveWorkflow.profile,
219
+ metrics: {
220
+ estimatedTokens: plan.context.totalEstimatedTokens,
221
+ budget: plan.context.task.budget,
222
+ estimatedTokenSavings: plan.context.compiler?.estimatedTokenSavings ?? 0,
223
+ memoryItems: plan.memory.items.length,
224
+ selectedProviders: plan.memory.selectedProviders,
225
+ skillSteps: plan.skillPlan.executionPlan.steps.length,
226
+ requiredSkillSteps: plan.skillPlan.executionPlan.steps.filter(step => step.required).length,
227
+ evaluatorGates: plan.evaluator.gates.length,
228
+ toolStrategySteps: plan.toolStrategy.summary.totalSteps,
229
+ toolStrategyCostUnits: plan.toolStrategy.summary.estimatedCostUnits,
230
+ evolutionProposals: plan.evolutionShadow.summary.totalProposals,
231
+ gates: plan.adaptiveWorkflow.gates.length,
232
+ roiModules: plan.roi.modules.length,
233
+ },
234
+ });
235
+ }
236
+ const summary = summarizeBenchmark(results);
237
+ const generatedAt = new Date().toISOString();
238
+ const benchmarkReport = resolveBenchmarkReportPath(projectDir, scaleDir);
239
+ const report = {
240
+ version: SCALE_ENGINE_VERSION,
241
+ generatedAt,
242
+ scenarios: results,
243
+ summary,
244
+ dashboard: createAiOsDashboard({ projectDir, scaleDir }),
245
+ artifacts: {
246
+ benchmarkReport,
247
+ },
248
+ recommendations: benchmarkRecommendations(summary),
249
+ };
250
+ writeAiOsBenchmarkReport(benchmarkReport, report);
251
+ return report;
252
+ }
253
+ export function createAiOsMigration(input = {}) {
254
+ const projectDir = resolve(input.projectDir ?? process.cwd());
255
+ const scaleDir = input.scaleDir ?? '.scale';
256
+ const scaleRoot = isAbsolute(scaleDir) ? scaleDir : join(projectDir, scaleDir);
257
+ const requiredDirs = [
258
+ join(scaleRoot, 'ai-os'),
259
+ join(scaleRoot, 'ai-os', 'runs'),
260
+ join(scaleRoot, 'ai-os', 'benchmarks'),
261
+ join(scaleRoot, 'ai-os', 'migrations'),
262
+ ];
263
+ const created = [];
264
+ const existing = [];
265
+ for (const dir of requiredDirs) {
266
+ if (existsSync(dir)) {
267
+ existing.push(normalizeProjectPath(projectDir, dir));
268
+ continue;
269
+ }
270
+ mkdirSync(dir, { recursive: true });
271
+ created.push(normalizeProjectPath(projectDir, dir));
272
+ }
273
+ const migrationReport = join(scaleRoot, 'ai-os', 'migrations', 'migration.json');
274
+ const report = {
275
+ version: SCALE_ENGINE_VERSION,
276
+ generatedAt: new Date().toISOString(),
277
+ status: created.length > 0 ? 'migrated' : 'compatible',
278
+ scaleRoot,
279
+ created,
280
+ existing,
281
+ files: {
282
+ migrationReport,
283
+ },
284
+ warnings: [],
285
+ nextActions: created.length > 0
286
+ ? ['Run `scale ai-os run --dry-run --json` to create the first AI OS runtime report.']
287
+ : ['AI OS runtime directories are compatible; continue with run, dashboard, or benchmark commands.'],
288
+ };
289
+ writeFileSync(migrationReport, JSON.stringify(report, null, 2), 'utf-8');
290
+ return report;
291
+ }
292
+ export function createAiOsDoctor(input = {}) {
293
+ const projectDir = resolve(input.projectDir ?? process.cwd());
294
+ const scaleDir = input.scaleDir ?? '.scale';
295
+ const scaleRoot = resolveScaleRoot(projectDir, scaleDir);
296
+ const benchmarkMaxAgeHours = input.benchmarkMaxAgeHours ?? 24;
297
+ const lang = input.lang ?? 'en';
298
+ const warnings = [];
299
+ const dashboard = createAiOsDashboard({ projectDir, scaleDir });
300
+ const benchmark = inspectBenchmarkReport(projectDir, scaleDir, benchmarkMaxAgeHours, warnings);
301
+ const requiredDirs = [
302
+ join(scaleRoot, 'ai-os'),
303
+ join(scaleRoot, 'ai-os', 'runs'),
304
+ join(scaleRoot, 'ai-os', 'benchmarks'),
305
+ join(scaleRoot, 'ai-os', 'migrations'),
306
+ ];
307
+ const missingDirs = requiredDirs.filter(dir => !existsSync(dir)).map(dir => normalizeProjectPath(projectDir, dir));
308
+ const checks = [
309
+ {
310
+ id: 'ai-os-runtime-dirs',
311
+ title: 'AI OS runtime directories',
312
+ status: missingDirs.length === 0 ? 'passed' : 'blocked',
313
+ summary: missingDirs.length === 0
314
+ ? 'Required AI OS runtime directories exist.'
315
+ : `Missing AI OS runtime directories: ${missingDirs.join(', ')}.`,
316
+ evidence: missingDirs.length === 0 ? requiredDirs.map(dir => normalizeProjectPath(projectDir, dir)) : missingDirs,
317
+ },
318
+ {
319
+ id: 'ai-os-run-history',
320
+ title: 'AI OS run history',
321
+ status: dashboard.summary.totalRuns > 0 ? 'passed' : 'warning',
322
+ summary: dashboard.summary.totalRuns > 0
323
+ ? `${dashboard.summary.totalRuns} run report(s), ${dashboard.summary.guardedRuns} guarded.`
324
+ : 'No AI OS run reports found yet.',
325
+ evidence: dashboard.latestRuns.map(run => run.runReport),
326
+ },
327
+ {
328
+ id: 'ai-os-dashboard-health',
329
+ title: 'AI OS dashboard health',
330
+ status: dashboard.health.status === 'blocked'
331
+ ? 'blocked'
332
+ : dashboard.health.status === 'healthy' ? 'passed' : 'warning',
333
+ summary: `${dashboard.health.status} (${dashboard.health.score}): ${dashboard.health.reasons.join('; ')}`,
334
+ evidence: dashboard.health.reasons,
335
+ },
336
+ {
337
+ id: 'ai-os-benchmark',
338
+ title: 'AI OS benchmark evidence',
339
+ status: benchmark.status === 'fresh' ? 'passed' : benchmark.status === 'invalid' ? 'blocked' : 'warning',
340
+ summary: summarizeBenchmarkDoctor(benchmark),
341
+ evidence: [benchmark.reportPath],
342
+ },
343
+ ];
344
+ const summary = {
345
+ totalChecks: checks.length,
346
+ passedChecks: checks.filter(check => check.status === 'passed').length,
347
+ warningChecks: checks.filter(check => check.status === 'warning').length,
348
+ blockedChecks: checks.filter(check => check.status === 'blocked').length,
349
+ };
350
+ const status = summary.blockedChecks > 0
351
+ ? 'blocked'
352
+ : summary.warningChecks > 0 ? 'warning' : 'ready';
353
+ return {
354
+ version: SCALE_ENGINE_VERSION,
355
+ generatedAt: new Date().toISOString(),
356
+ status,
357
+ projectDir,
358
+ scaleRoot,
359
+ dashboard,
360
+ benchmark,
361
+ checks,
362
+ summary,
363
+ warnings: [...warnings, ...dashboard.warnings],
364
+ nextActions: aiOsDoctorNextActions({ status, checks, dashboard, benchmark, lang }),
365
+ };
366
+ }
367
+ export async function createAiOsAdoption(input) {
368
+ const projectDir = resolve(input.projectDir ?? process.cwd());
369
+ const scaleDir = input.scaleDir ?? '.scale';
370
+ const scaleRoot = resolveScaleRoot(projectDir, scaleDir);
371
+ const generatedAt = new Date().toISOString();
372
+ const migration = createAiOsMigration({ projectDir, scaleDir });
373
+ const run = await createAiOsRun({
374
+ ...input,
375
+ projectDir,
376
+ scaleDir,
377
+ taskId: input.taskId ?? `AIOS-ADOPT-${Date.now()}`,
378
+ mode: 'dry-run',
379
+ });
380
+ const benchmark = await createAiOsBenchmark({
381
+ projectDir,
382
+ scaleDir,
383
+ budget: input.budget,
384
+ });
385
+ const doctor = createAiOsDoctor({
386
+ projectDir,
387
+ scaleDir,
388
+ benchmarkMaxAgeHours: input.benchmarkMaxAgeHours,
389
+ lang: input.lang,
390
+ });
391
+ const phases = [
392
+ {
393
+ id: 'migrate',
394
+ status: migration.status === 'migrated' || migration.status === 'compatible' ? 'passed' : 'blocked',
395
+ summary: migration.status === 'migrated'
396
+ ? `Created ${migration.created.length} AI OS runtime path(s).`
397
+ : 'AI OS runtime paths were already compatible.',
398
+ evidence: [migration.files.migrationReport, ...migration.created, ...migration.existing],
399
+ },
400
+ {
401
+ id: 'first-run',
402
+ status: run.status === 'ready' ? 'passed' : 'blocked',
403
+ summary: `Created first ${run.mode} AI OS run report with ${run.steps.length} step(s).`,
404
+ evidence: [run.artifacts.runReport, ...run.evidence.produced],
405
+ },
406
+ {
407
+ id: 'benchmark',
408
+ status: benchmark.summary.scenarios > 0 ? 'passed' : 'blocked',
409
+ summary: `Created AI OS benchmark report with ${benchmark.summary.scenarios} scenario(s).`,
410
+ evidence: [benchmark.artifacts.benchmarkReport],
411
+ },
412
+ {
413
+ id: 'doctor',
414
+ status: doctor.status === 'ready' ? 'passed' : doctor.status === 'warning' ? 'warning' : 'blocked',
415
+ summary: `AI OS doctor status is ${doctor.status}: ${doctor.summary.passedChecks}/${doctor.summary.totalChecks} checks passed.`,
416
+ evidence: doctor.checks.flatMap(check => check.evidence),
417
+ },
418
+ ];
419
+ const status = phases.some(phase => phase.status === 'blocked')
420
+ ? 'blocked'
421
+ : phases.some(phase => phase.status === 'warning') ? 'warning' : 'ready';
422
+ const adoptionReport = resolveAdoptionReportPath(projectDir, scaleDir);
423
+ const report = {
424
+ version: SCALE_ENGINE_VERSION,
425
+ generatedAt,
426
+ status,
427
+ projectDir,
428
+ scaleRoot,
429
+ phases,
430
+ migration,
431
+ run,
432
+ benchmark,
433
+ doctor,
434
+ artifacts: {
435
+ migrationReport: migration.files.migrationReport,
436
+ runReport: run.artifacts.runReport,
437
+ benchmarkReport: benchmark.artifacts.benchmarkReport,
438
+ adoptionReport,
439
+ },
440
+ warnings: [...migration.warnings, ...doctor.warnings],
441
+ nextActions: aiOsAdoptionNextActions(status, input.lang ?? 'en'),
442
+ };
443
+ writeFileSync(adoptionReport, JSON.stringify(report, null, 2), 'utf-8');
444
+ return report;
445
+ }
446
+ export function createAiOsStatus(input = {}) {
447
+ const projectDir = resolve(input.projectDir ?? process.cwd());
448
+ const scaleDir = input.scaleDir ?? '.scale';
449
+ const lang = input.lang ?? 'en';
450
+ const scaleRoot = resolveScaleRoot(projectDir, scaleDir);
451
+ const warnings = [];
452
+ const runsDir = resolveRunsDir(projectDir, scaleDir);
453
+ const runReports = readAiOsRunReports(runsDir, warnings);
454
+ const dashboard = createAiOsDashboard({ projectDir, scaleDir });
455
+ const doctor = createAiOsDoctor({
456
+ projectDir,
457
+ scaleDir,
458
+ benchmarkMaxAgeHours: input.benchmarkMaxAgeHours,
459
+ lang,
460
+ });
461
+ const requiredDirs = [
462
+ join(scaleRoot, 'ai-os'),
463
+ join(scaleRoot, 'ai-os', 'runs'),
464
+ join(scaleRoot, 'ai-os', 'benchmarks'),
465
+ join(scaleRoot, 'ai-os', 'migrations'),
466
+ ];
467
+ const missingDirs = requiredDirs.filter(dir => !existsSync(dir)).map(dir => normalizeProjectPath(projectDir, dir));
468
+ const runEvidence = runReports.map(report => report.artifacts.runReport);
469
+ const verificationEvidence = runReports
470
+ .filter(report => report.verification.commands.length > 0)
471
+ .flatMap(report => [report.artifacts.runReport, ...report.verification.commands.map(command => command.evidenceId)]);
472
+ const verificationRecommendations = buildVerificationRecommendations(projectDir, scaleDir, lang);
473
+ const benchmarkReport = resolveBenchmarkReportPath(projectDir, scaleDir);
474
+ const adoptionReport = resolveAdoptionReportPath(projectDir, scaleDir);
475
+ const intelligence = buildAiOsIntelligenceReport({
476
+ projectDir,
477
+ scaleDir,
478
+ runReports,
479
+ benchmark: readAiOsBenchmarkReport(benchmarkReport, warnings),
480
+ benchmarkStatus: doctor.benchmark.status,
481
+ benchmarkReport,
482
+ lang,
483
+ });
484
+ const checks = [
485
+ {
486
+ id: 'runtime-dirs',
487
+ title: 'Runtime directories',
488
+ status: missingDirs.length === 0 ? 'ready' : 'blocked',
489
+ summary: missingDirs.length === 0
490
+ ? 'AI OS runtime directories exist.'
491
+ : `${missingDirs.length} AI OS runtime director${missingDirs.length === 1 ? 'y is' : 'ies are'} missing.`,
492
+ evidence: missingDirs.length === 0 ? requiredDirs.map(dir => normalizeProjectPath(projectDir, dir)) : missingDirs,
493
+ },
494
+ {
495
+ id: 'plan-evidence',
496
+ title: 'Plan evidence',
497
+ status: runReports.length > 0 ? 'ready' : 'blocked',
498
+ summary: runReports.length > 0
499
+ ? `${runReports.length} run report(s) include embedded AI OS plans.`
500
+ : 'No AI OS plan evidence is persisted through a run report.',
501
+ evidence: runEvidence,
502
+ },
503
+ {
504
+ id: 'run-evidence',
505
+ title: 'Run evidence',
506
+ status: runReports.length > 0 ? 'ready' : 'blocked',
507
+ summary: runReports.length > 0
508
+ ? `${runReports.length} AI OS run report(s) found.`
509
+ : 'No AI OS run reports found.',
510
+ evidence: runEvidence,
511
+ },
512
+ {
513
+ id: 'verification-evidence',
514
+ title: 'Verification evidence',
515
+ status: verificationEvidence.length > 0 ? 'ready' : 'blocked',
516
+ summary: verificationEvidence.length > 0
517
+ ? `${verificationEvidence.length} guarded verification evidence reference(s) found.`
518
+ : 'No guarded verification evidence found.',
519
+ evidence: verificationEvidence,
520
+ },
521
+ {
522
+ id: 'dashboard-health',
523
+ title: 'Dashboard health',
524
+ status: dashboard.health.status === 'healthy'
525
+ ? 'ready'
526
+ : dashboard.health.status === 'empty' || dashboard.health.status === 'blocked' ? 'blocked' : 'warning',
527
+ summary: `${dashboard.health.status} (${dashboard.health.score}): ${dashboard.health.reasons.join('; ')}`,
528
+ evidence: [runsDir],
529
+ },
530
+ {
531
+ id: 'benchmark-evidence',
532
+ title: 'Benchmark evidence',
533
+ status: doctor.benchmark.status === 'fresh' ? 'ready' : doctor.benchmark.status === 'stale' ? 'warning' : 'blocked',
534
+ summary: summarizeBenchmarkDoctor(doctor.benchmark),
535
+ evidence: [benchmarkReport],
536
+ },
537
+ {
538
+ id: 'adoption-evidence',
539
+ title: 'Adoption evidence',
540
+ status: existsSync(adoptionReport) ? 'ready' : 'blocked',
541
+ summary: existsSync(adoptionReport)
542
+ ? 'AI OS adoption report exists.'
543
+ : 'No AI OS adoption report found.',
544
+ evidence: [adoptionReport],
545
+ },
546
+ ];
547
+ const summary = {
548
+ total: checks.length,
549
+ ready: checks.filter(check => check.status === 'ready').length,
550
+ warning: checks.filter(check => check.status === 'warning').length,
551
+ blocked: checks.filter(check => check.status === 'blocked').length,
552
+ };
553
+ const status = summary.blocked > 0 ? 'blocked' : summary.warning > 0 ? 'warning' : 'ready';
554
+ return {
555
+ version: SCALE_ENGINE_VERSION,
556
+ generatedAt: new Date().toISOString(),
557
+ status,
558
+ projectDir,
559
+ scaleRoot,
560
+ checks,
561
+ summary,
562
+ dashboard,
563
+ doctor,
564
+ intelligence,
565
+ verificationRecommendations,
566
+ nextActions: aiOsStatusNextActions(status, checks, lang, verificationRecommendations),
567
+ warnings: [...warnings, ...doctor.warnings],
568
+ };
569
+ }
570
+ function buildAiOsIntelligenceReport(input) {
571
+ const runMemoryItems = input.runReports.flatMap(report => report.plan.memory.items);
572
+ const benchmarkMemoryItems = input.benchmark?.summary.totalMemoryItems ?? 0;
573
+ const runProviders = input.runReports.flatMap(report => report.plan.memory.selectedProviders);
574
+ const benchmarkProviders = input.benchmark?.scenarios.flatMap(scenario => scenario.metrics.selectedProviders) ?? [];
575
+ const selectedProviders = [...new Set([...runProviders, ...benchmarkProviders])].sort();
576
+ const runTokenSavings = input.runReports.reduce((sum, report) => sum + (report.plan.context.compiler?.estimatedTokenSavings ?? 0), 0);
577
+ const benchmarkTokenSavings = input.benchmark?.summary.totalEstimatedTokenSavings ?? 0;
578
+ const estimatedTokenSavings = runTokenSavings + benchmarkTokenSavings;
579
+ const runSkillSteps = input.runReports.reduce((sum, report) => sum + report.plan.skillPlan.executionPlan.steps.length, 0);
580
+ const benchmarkSkillSteps = input.benchmark?.summary.totalSkillSteps ?? 0;
581
+ const skillSteps = runSkillSteps + benchmarkSkillSteps;
582
+ const totalMemoryItems = runMemoryItems.length + benchmarkMemoryItems;
583
+ const memoryQuality = summarizeMemoryQuality(runMemoryItems);
584
+ const contextQuality = summarizeContextQuality(input.runReports);
585
+ const evaluatorQuality = summarizeEvaluatorQuality(input.runReports, input.benchmark);
586
+ const toolStrategyQuality = summarizeToolStrategyQuality(input.runReports, input.benchmark);
587
+ const evolutionQuality = summarizeEvolutionQuality(input.runReports, input.benchmark);
588
+ const contextSignalStatus = contextQuality.compressionRisk === 'high'
589
+ ? 'warning'
590
+ : estimatedTokenSavings > 0 ? 'ready' : input.runReports.length > 0 || input.benchmark ? 'warning' : 'blocked';
591
+ const memoryEvidence = [
592
+ ...runMemoryItems.map(item => `${item.provider}:${item.id}`),
593
+ ...(benchmarkMemoryItems > 0 ? [`benchmark:${input.benchmarkReport}:${benchmarkMemoryItems}`] : []),
594
+ ];
595
+ const contextEvidence = [
596
+ ...input.runReports.map(report => `${report.artifacts.runReport}:saved=${report.plan.context.compiler?.estimatedTokenSavings ?? 0}`),
597
+ ...(input.benchmark ? [`${input.benchmarkReport}:saved=${input.benchmark.summary.totalEstimatedTokenSavings}`] : []),
598
+ ];
599
+ const skillEvidence = [
600
+ ...input.runReports.flatMap(report => report.plan.skillPlan.executionPlan.steps.map(step => `${report.artifacts.runReport}:${step.id}`)),
601
+ ...(input.benchmark ? [`${input.benchmarkReport}:steps=${input.benchmark.summary.totalSkillSteps}`] : []),
602
+ ];
603
+ const evaluatorEvidence = [
604
+ ...input.runReports.flatMap(report => resolveRunEvaluator(report).gates.map(gate => `${report.artifacts.runReport}:${gate.id}`)),
605
+ ...(input.benchmark ? [`${input.benchmarkReport}:evaluator-gates=${input.benchmark.summary.totalEvaluatorGates}`] : []),
606
+ ];
607
+ const toolStrategyEvidence = [
608
+ ...input.runReports.flatMap(report => resolveRunToolStrategy(report).nodes.map(node => `${report.artifacts.runReport}:${node.id}`)),
609
+ ...(input.benchmark ? [`${input.benchmarkReport}:tool-strategy=${input.benchmark.summary.totalToolStrategySteps}`] : []),
610
+ ];
611
+ const evolutionEvidence = [
612
+ ...input.runReports.flatMap(report => (report.plan.evolutionShadow?.proposals ?? []).map(p => `${report.artifacts.runReport}:${p.id}:${p.maturity.stage}`)),
613
+ ...(input.benchmark ? [`${input.benchmarkReport}:evolution-proposals=${input.benchmark.summary.totalEvolutionProposals}`] : []),
614
+ ];
615
+ const benchmarkEvidence = input.benchmark ? [
616
+ `${input.benchmarkReport}:scenarios=${input.benchmark.summary.scenarios}`,
617
+ `${input.benchmarkReport}:memory=${input.benchmark.summary.totalMemoryItems}`,
618
+ `${input.benchmarkReport}:skills=${input.benchmark.summary.totalSkillSteps}`,
619
+ `${input.benchmarkReport}:evaluator-gates=${input.benchmark.summary.totalEvaluatorGates}`,
620
+ `${input.benchmarkReport}:tool-strategy=${input.benchmark.summary.totalToolStrategySteps}`,
621
+ ] : [input.benchmarkReport];
622
+ const signals = [
623
+ {
624
+ id: 'memory-recall',
625
+ status: totalMemoryItems > 0 ? 'ready' : selectedProviders.length > 0 ? 'warning' : 'blocked',
626
+ summary: totalMemoryItems > 0
627
+ ? `${totalMemoryItems} memory item(s) recalled through ${selectedProviders.join(', ') || 'configured providers'}; quality ${memoryQuality.score}/100.`
628
+ : selectedProviders.length > 0
629
+ ? `Memory providers were selected (${selectedProviders.join(', ')}) but no relevant item was recalled.`
630
+ : 'No memory recall evidence found in AI OS runs or benchmarks.',
631
+ evidence: memoryEvidence,
632
+ recommendations: totalMemoryItems > 0
633
+ ? ['Keep recording memory item ids with every run so later context assembly can explain recall.']
634
+ : ['Run an AI OS task that should match durable project memory before claiming memory intelligence.'],
635
+ },
636
+ {
637
+ id: 'context-savings',
638
+ status: contextSignalStatus,
639
+ summary: estimatedTokenSavings > 0
640
+ ? `${estimatedTokenSavings} estimated token(s) saved by context compilation evidence; compression risk ${contextQuality.compressionRisk}.`
641
+ : 'Context compiler evidence exists but has not shown measurable token savings yet.',
642
+ evidence: contextEvidence,
643
+ recommendations: contextQuality.evidenceLossWarnings.length > 0
644
+ ? ['Review omitted evidence-bearing context before claiming the task has enough context.']
645
+ : estimatedTokenSavings > 0
646
+ ? ['Track savings deltas across releases before publishing token reduction claims.']
647
+ : ['Add larger representative tasks to benchmark context slicing and token savings.'],
648
+ },
649
+ {
650
+ id: 'skill-routing',
651
+ status: skillSteps > 0 ? 'ready' : input.runReports.length > 0 || input.benchmark ? 'warning' : 'blocked',
652
+ summary: skillSteps > 0
653
+ ? `${skillSteps} skill routing step(s) planned across runs and benchmark scenarios.`
654
+ : 'No skill routing step evidence found.',
655
+ evidence: skillEvidence,
656
+ recommendations: skillSteps > 0
657
+ ? ['Use skill routing evidence in reviews to check why a skill, MCP, or CLI path was selected.']
658
+ : ['Create a task with files or services that should trigger required skill routing.'],
659
+ },
660
+ {
661
+ id: 'evaluator-intelligence',
662
+ status: evaluatorQuality.requiredGates > 0
663
+ ? evaluatorQuality.averageUncertainty >= 0.7 ? 'warning' : 'ready'
664
+ : input.runReports.length > 0 || input.benchmark ? 'warning' : 'blocked',
665
+ summary: evaluatorQuality.requiredGates > 0
666
+ ? `${evaluatorQuality.requiredGates} evaluator gate(s) required; average uncertainty ${evaluatorQuality.averageUncertainty}.`
667
+ : 'No evaluator gate evidence found for architecture, root-cause, security, or release reasoning.',
668
+ evidence: evaluatorEvidence,
669
+ recommendations: evaluatorQuality.requiredGates > 0
670
+ ? ['Use evaluator gates to force critique, uncertainty logging, and review evidence before promoting reasoning-heavy work.']
671
+ : ['Run a reasoning-heavy AI OS task so evaluator intelligence can prove critique coverage.'],
672
+ },
673
+ {
674
+ id: 'tool-strategy',
675
+ status: toolStrategyQuality.totalSteps > 0
676
+ ? toolStrategyQuality.fallbackCoverage < 1 ? 'warning' : 'ready'
677
+ : input.runReports.length > 0 || input.benchmark ? 'warning' : 'blocked',
678
+ summary: toolStrategyQuality.totalSteps > 0
679
+ ? `${toolStrategyQuality.totalSteps} tool strategy step(s); ${toolStrategyQuality.highRiskSteps} high-risk; fallback coverage ${toolStrategyQuality.fallbackCoverage}.`
680
+ : 'No tool strategy graph found for skills, artifacts, CLI, MCP, or verification steps.',
681
+ evidence: toolStrategyEvidence,
682
+ recommendations: toolStrategyQuality.totalSteps > 0
683
+ ? ['Use tool strategy evidence to review cost, retry, fallback, and side-effect risk before execution.']
684
+ : ['Create a task that triggers skill routing so the AI OS can build a tool strategy graph.'],
685
+ },
686
+ {
687
+ id: 'adaptive-workflow',
688
+ status: input.runReports.some(r => r.plan.adaptiveWorkflow.profile) ? 'ready' : input.runReports.length > 0 || input.benchmark ? 'warning' : 'blocked',
689
+ summary: summarizeAdaptiveWorkflowSignal(input.runReports, input.benchmark),
690
+ evidence: [
691
+ ...input.runReports.map(r => `${r.artifacts.runReport}:profile=${r.plan.adaptiveWorkflow.profile}`),
692
+ ...(input.benchmark ? [`${input.benchmarkReport}:profiles=${input.benchmark.summary.workflowProfiles.join(',')}`] : []),
693
+ ],
694
+ recommendations: input.runReports.some(r => r.plan.adaptiveWorkflow.profile)
695
+ ? ['Use workflow profile distribution to verify that risk signals correctly escalate governance.']
696
+ : ['Run an AI OS task with mixed risk levels to prove adaptive workflow routing.'],
697
+ },
698
+ {
699
+ id: 'evolution-shadow',
700
+ status: evolutionQuality.proposals > 0
701
+ ? evolutionQuality.pendingValidation > 0 ? 'warning' : 'ready'
702
+ : input.runReports.length > 0 || input.benchmark ? 'warning' : 'blocked',
703
+ summary: evolutionQuality.proposals > 0
704
+ ? `${evolutionQuality.proposals} shadow proposal(s); ${evolutionQuality.shadowRules} shadow, ${evolutionQuality.candidateHooks} candidate-hook, ${evolutionQuality.approvedBlocking} approved-blocking.`
705
+ : 'No evolution shadow proposals found. Run tasks with high-risk governance signals or evaluator gates to generate shadow rule candidates.',
706
+ evidence: evolutionEvidence,
707
+ recommendations: evolutionQuality.proposals > 0
708
+ ? ['Review shadow rule proposals and validate before promotion to candidate-hook or approved-blocking.']
709
+ : ['Run a high-risk AI OS task so evolution shadow promotion can propose rules from governance and evaluator signals.'],
710
+ },
711
+ {
712
+ id: 'benchmark-intelligence',
713
+ status: input.benchmark && input.benchmarkStatus === 'fresh'
714
+ ? 'ready'
715
+ : input.benchmark && input.benchmarkStatus === 'stale' ? 'warning' : 'blocked',
716
+ summary: input.benchmark
717
+ ? `${input.benchmark.summary.scenarios} benchmark scenario(s); benchmark status ${input.benchmarkStatus}.`
718
+ : 'No AI OS benchmark report available for intelligence metrics.',
719
+ evidence: benchmarkEvidence,
720
+ recommendations: input.benchmark && input.benchmarkStatus === 'fresh'
721
+ ? ['Use intelligence signals alongside benchmark deltas for release readiness reviews.']
722
+ : ['Run `scale ai-os benchmark --json` to refresh memory/context/skill intelligence metrics.'],
723
+ },
724
+ ];
725
+ const summary = {
726
+ ready: signals.filter(signal => signal.status === 'ready').length,
727
+ warning: signals.filter(signal => signal.status === 'warning').length,
728
+ blocked: signals.filter(signal => signal.status === 'blocked').length,
729
+ totalMemoryItems,
730
+ selectedProviders,
731
+ memoryQuality,
732
+ contextQuality,
733
+ evaluatorQuality,
734
+ toolStrategyQuality,
735
+ evolutionQuality,
736
+ estimatedTokenSavings,
737
+ skillSteps,
738
+ };
739
+ const status = summary.blocked > 0 ? 'blocked' : summary.warning > 0 ? 'warning' : 'ready';
740
+ const nextActions = aiOsIntelligenceNextActions(status, signals, input.lang);
741
+ return { status, summary, signals, nextActions };
742
+ }
743
+ function summarizeContextQuality(runReports) {
744
+ const omitted = runReports.flatMap(report => report.plan.context.omitted.map(item => {
745
+ const section = report.plan.context.sections.find(candidate => candidate.id === item.id);
746
+ return {
747
+ ...item,
748
+ category: section?.category,
749
+ runReport: report.artifacts.runReport,
750
+ };
751
+ }));
752
+ const totalOmittedTokens = omitted.reduce((sum, item) => sum + item.estimatedTokens, 0);
753
+ const highestOmittedTokens = omitted.reduce((max, item) => Math.max(max, item.estimatedTokens), 0);
754
+ const evidenceLossWarnings = omitted
755
+ .filter(item => item.category === 'evidence' || item.id.includes('evidence'))
756
+ .map(item => `${item.id} omitted from ${item.runReport} (${item.estimatedTokens} tokens; ${item.reason}).`);
757
+ const compressionRisk = evidenceLossWarnings.length > 0
758
+ ? 'high'
759
+ : omitted.length > 0 ? 'medium' : 'low';
760
+ return {
761
+ omittedSections: omitted.length,
762
+ totalOmittedTokens,
763
+ evidenceLossWarnings,
764
+ highestOmittedTokens,
765
+ compressionRisk,
766
+ };
767
+ }
768
+ function summarizeEvaluatorQuality(runReports, benchmark) {
769
+ const runEvaluators = runReports.map(resolveRunEvaluator);
770
+ const runGates = runEvaluators.flatMap(evaluator => evaluator.gates);
771
+ const benchmarkGateCount = benchmark?.summary.totalEvaluatorGates ?? 0;
772
+ const uncertaintyScores = runEvaluators.map(evaluator => evaluator.uncertainty.score);
773
+ const gateIds = new Set(runGates.map(gate => gate.id));
774
+ if (benchmarkGateCount > 0)
775
+ gateIds.add('uncertainty-decision-log');
776
+ return {
777
+ requiredGates: runGates.filter(gate => gate.required).length + benchmarkGateCount,
778
+ highRiskPlans: runEvaluators.filter(evaluator => evaluator.riskLevel === 'high').length,
779
+ averageUncertainty: roundMetric(average(uncertaintyScores)),
780
+ gateIds: [...gateIds].sort(),
781
+ };
782
+ }
783
+ function resolveRunEvaluator(report) {
784
+ const plan = report.plan;
785
+ return plan.evaluator ?? createEvaluatorIntelligence({
786
+ task: report.plan.task.task,
787
+ files: report.plan.task.files,
788
+ governance: report.plan.governance,
789
+ skillPlan: report.plan.skillPlan,
790
+ });
791
+ }
792
+ function summarizeToolStrategyQuality(runReports, benchmark) {
793
+ const runStrategies = runReports.map(resolveRunToolStrategy);
794
+ const runSummary = runStrategies.reduce((summary, strategy) => ({
795
+ totalSteps: summary.totalSteps + strategy.summary.totalSteps,
796
+ requiredSteps: summary.requiredSteps + strategy.summary.requiredSteps,
797
+ highRiskSteps: summary.highRiskSteps + strategy.summary.highRiskSteps,
798
+ estimatedCostUnits: summary.estimatedCostUnits + strategy.summary.estimatedCostUnits,
799
+ fallbackCoveredSteps: summary.fallbackCoveredSteps + strategy.summary.fallbackCoveredSteps,
800
+ }), {
801
+ totalSteps: 0,
802
+ requiredSteps: 0,
803
+ highRiskSteps: 0,
804
+ estimatedCostUnits: 0,
805
+ fallbackCoveredSteps: 0,
806
+ });
807
+ const benchmarkSteps = benchmark?.summary.totalToolStrategySteps ?? 0;
808
+ const benchmarkCost = benchmark?.summary.totalToolStrategyCostUnits ?? 0;
809
+ const totalSteps = runSummary.totalSteps + benchmarkSteps;
810
+ const fallbackCoveredSteps = runSummary.fallbackCoveredSteps + benchmarkSteps;
811
+ return {
812
+ totalSteps,
813
+ requiredSteps: runSummary.requiredSteps,
814
+ highRiskSteps: runSummary.highRiskSteps,
815
+ estimatedCostUnits: runSummary.estimatedCostUnits + benchmarkCost,
816
+ fallbackCoverage: totalSteps > 0 ? roundMetric(fallbackCoveredSteps / totalSteps) : 0,
817
+ };
818
+ }
819
+ function resolveRunToolStrategy(report) {
820
+ const plan = report.plan;
821
+ return plan.toolStrategy ?? createToolStrategyPlan(report.plan.skillPlan);
822
+ }
823
+ function summarizeEvolutionQuality(runReports, benchmark) {
824
+ const runProposals = runReports.flatMap(r => r.plan.evolutionShadow?.proposals ?? []);
825
+ const benchmarkProposals = benchmark?.summary.totalEvolutionProposals ?? 0;
826
+ const allProposals = runProposals;
827
+ const stageCount = (stage) => allProposals.filter(p => p.maturity.stage === stage).length;
828
+ return {
829
+ proposals: allProposals.length + benchmarkProposals,
830
+ shadowRules: stageCount('shadow'),
831
+ candidateHooks: stageCount('candidate-hook'),
832
+ approvedBlocking: stageCount('approved-blocking'),
833
+ pendingValidation: allProposals.filter(p => p.maturity.stage === 'shadow' && p.maturity.shadowHits < 10).length,
834
+ };
835
+ }
836
+ function resolveRunEvolutionShadow(report) {
837
+ const plan = report.plan;
838
+ return plan.evolutionShadow ?? buildEvolutionShadowReport([]);
839
+ }
840
+ function summarizeAdaptiveWorkflowSignal(runReports, benchmark) {
841
+ const profiles = runReports.map(r => r.plan.adaptiveWorkflow.profile);
842
+ const benchmarkProfiles = benchmark?.summary.workflowProfiles ?? [];
843
+ const allProfiles = [...profiles, ...benchmarkProfiles];
844
+ if (allProfiles.length === 0)
845
+ return 'No adaptive workflow profile evidence found.';
846
+ const distribution = new Map();
847
+ for (const p of allProfiles)
848
+ distribution.set(p, (distribution.get(p) ?? 0) + 1);
849
+ const parts = [...distribution.entries()].map(([p, n]) => `${p}=${n}`).join(', ');
850
+ const escalated = runReports.filter(r => r.plan.adaptiveWorkflow.escalationReasons.length > 0).length;
851
+ return `${allProfiles.length} run(s) with profile distribution: ${parts}. ${escalated} run(s) had escalation reasons.`;
852
+ }
853
+ function summarizeMemoryQuality(items) {
854
+ if (items.length === 0) {
855
+ return {
856
+ score: 0,
857
+ evidenceBackedItems: 0,
858
+ missingEvidenceItems: 0,
859
+ lowConfidenceItems: 0,
860
+ averageConfidence: 0,
861
+ averageRelevance: 0,
862
+ };
863
+ }
864
+ const evidenceBackedItems = items.filter(item => item.evidencePaths.length > 0).length;
865
+ const missingEvidenceItems = items.length - evidenceBackedItems;
866
+ const lowConfidenceItems = items.filter(item => item.confidence < 0.7).length;
867
+ const averageConfidence = average(items.map(item => clampUnit(item.confidence)));
868
+ const averageRelevance = average(items.map(item => clampUnit(item.score)));
869
+ const evidenceRatio = evidenceBackedItems / items.length;
870
+ const lowConfidenceRatio = lowConfidenceItems / items.length;
871
+ const score = Math.max(0, Math.round((averageConfidence * 40) + (averageRelevance * 30) + (evidenceRatio * 30) - (lowConfidenceRatio * 10)));
872
+ return {
873
+ score,
874
+ evidenceBackedItems,
875
+ missingEvidenceItems,
876
+ lowConfidenceItems,
877
+ averageConfidence: roundMetric(averageConfidence),
878
+ averageRelevance: roundMetric(averageRelevance),
879
+ };
880
+ }
881
+ function average(values) {
882
+ if (values.length === 0)
883
+ return 0;
884
+ return values.reduce((sum, value) => sum + value, 0) / values.length;
885
+ }
886
+ function clampUnit(value) {
887
+ if (!Number.isFinite(value))
888
+ return 0;
889
+ return Math.max(0, Math.min(1, value));
890
+ }
891
+ function roundMetric(value) {
892
+ return Number(value.toFixed(3));
893
+ }
894
+ function aiOsIntelligenceNextActions(status, signals, lang) {
895
+ const actions = [];
896
+ if (signals.some(signal => signal.status === 'ready')) {
897
+ actions.push('Use intelligence signals during release review to prove memory, context, and skill routing gains.');
898
+ }
899
+ if (status === 'ready')
900
+ return actions;
901
+ const blocked = signals.filter(signal => signal.status === 'blocked').map(signal => signal.id);
902
+ if (lang === 'zh') {
903
+ actions.push(`Refresh AI OS intelligence evidence for: ${blocked.join(', ') || 'warning signals'}.`);
904
+ return actions;
905
+ }
906
+ actions.push(`Refresh AI OS intelligence evidence for: ${blocked.join(', ') || 'warning signals'}.`);
907
+ return actions;
908
+ }
909
+ function buildRunSteps(plan) {
910
+ const steps = new Map();
911
+ const upsert = (step) => steps.set(step.id, step);
912
+ upsert({
913
+ id: 'runtime-plan',
914
+ kind: 'plan',
915
+ title: 'Create unified AI OS runtime plan',
916
+ status: 'passed',
917
+ required: true,
918
+ summary: `Governance mode ${plan.governance.effectiveMode}; ${plan.skillPlan.executionPlan.steps.length} skill step(s).`,
919
+ evidence: ['governance', 'context', 'memory', 'skillPlan', 'roi'],
920
+ });
921
+ upsert({
922
+ id: 'context-compiler',
923
+ kind: 'context',
924
+ title: 'Compile task context',
925
+ status: 'passed',
926
+ required: true,
927
+ summary: `${plan.context.totalEstimatedTokens}/${plan.context.task.budget} estimated tokens; saved ${plan.context.compiler?.estimatedTokenSavings ?? 0}.`,
928
+ evidence: ['context.compiler', 'context.includedSections', 'context.omittedSections'],
929
+ dependsOn: ['runtime-plan'],
930
+ });
931
+ upsert({
932
+ id: 'memory-provider-recall',
933
+ kind: 'memory',
934
+ title: 'Recall provider-backed memory',
935
+ status: 'passed',
936
+ required: true,
937
+ summary: `${plan.memory.items.length} recalled item(s); providers ${plan.memory.providerOrder.join(' -> ')}.`,
938
+ evidence: ['memory.providerOrder', 'memory.selectedProviders', 'memory.items'],
939
+ dependsOn: ['runtime-plan'],
940
+ });
941
+ const profile = plan.adaptiveWorkflow.profile;
942
+ for (const gate of plan.adaptiveWorkflow.gates) {
943
+ if (steps.has(gate))
944
+ continue;
945
+ const gateRequired = profile !== 'light';
946
+ upsert({
947
+ id: gate,
948
+ kind: gate === 'runtime-evidence' ? 'evidence' : 'gate',
949
+ title: `Satisfy ${gate} gate`,
950
+ status: 'planned',
951
+ required: gateRequired,
952
+ summary: gateRequired
953
+ ? `Required by ${plan.adaptiveWorkflow.strategy} in ${profile} profile (${plan.adaptiveWorkflow.mode} mode).`
954
+ : `Advisory in ${profile} profile; not blocking completion.`,
955
+ evidence: [`gate.${gate}`],
956
+ dependsOn: ['runtime-plan'],
957
+ });
958
+ }
959
+ for (const skillStep of plan.skillPlan.executionPlan.steps) {
960
+ upsert({
961
+ id: `skill:${skillStep.id}`,
962
+ kind: 'skill',
963
+ title: `${skillStep.kind}: ${skillStep.id}`,
964
+ status: 'planned',
965
+ required: skillStep.required,
966
+ summary: `${skillStep.reason} Fallback: ${skillStep.fallback}.`,
967
+ evidence: [skillStep.evidenceRequired],
968
+ dependsOn: ['skill-evidence'],
969
+ });
970
+ }
971
+ upsert({
972
+ id: 'failure-learning',
973
+ kind: 'learning',
974
+ title: 'Prepare failure learning settlement',
975
+ status: 'planned',
976
+ required: false,
977
+ summary: 'Create lesson or rule candidates only when a gate, verification step, or evidence requirement fails.',
978
+ evidence: ['failureLearning.candidates'],
979
+ dependsOn: ['runtime-evidence'],
980
+ });
981
+ return [...steps.values()];
982
+ }
983
+ async function runGuardedVerification(options) {
984
+ if (!options.enabled || options.commands.length === 0) {
985
+ return { commands: [], allPassed: options.commands.length === 0 };
986
+ }
987
+ const ledger = new RuntimeEvidenceLedger({
988
+ projectDir: options.projectDir,
989
+ scaleDir: options.scaleDir,
990
+ });
991
+ const reports = [];
992
+ for (const [index, command] of options.commands.entries()) {
993
+ const stepId = `verify-command:${index + 1}`;
994
+ let result;
995
+ try {
996
+ result = await runSafeCommand(command, {
997
+ cwd: options.projectDir,
998
+ timeout: options.timeout ?? 120_000,
999
+ allowShell: options.allowShell,
1000
+ });
1001
+ }
1002
+ catch (error) {
1003
+ result = {
1004
+ exitCode: 1,
1005
+ stdout: '',
1006
+ stderr: error instanceof Error ? error.message : String(error),
1007
+ };
1008
+ }
1009
+ const passed = result.exitCode === 0;
1010
+ const evidence = ledger.record({
1011
+ taskId: options.plan.task.taskId,
1012
+ kind: 'command',
1013
+ title: `AI OS verification command ${index + 1}`,
1014
+ status: passed ? 'passed' : 'failed',
1015
+ command,
1016
+ exitCode: result.exitCode,
1017
+ summary: passed
1018
+ ? `Guarded verification command passed: ${command}`
1019
+ : `Guarded verification command failed with exit code ${result.exitCode}: ${command}`,
1020
+ metadata: {
1021
+ aiOsRun: true,
1022
+ stepId,
1023
+ stdoutPreview: truncate(result.stdout),
1024
+ stderrPreview: truncate(result.stderr),
1025
+ },
1026
+ });
1027
+ reports.push({
1028
+ command,
1029
+ status: passed ? 'passed' : 'failed',
1030
+ exitCode: result.exitCode,
1031
+ stdout: result.stdout,
1032
+ stderr: result.stderr,
1033
+ evidenceId: evidence.id,
1034
+ });
1035
+ options.steps.push({
1036
+ id: stepId,
1037
+ kind: 'evidence',
1038
+ title: `Run verification command ${index + 1}`,
1039
+ status: passed ? 'passed' : 'blocked',
1040
+ required: true,
1041
+ summary: passed
1042
+ ? `Command passed and runtime evidence was recorded as ${evidence.id}.`
1043
+ : `Command failed and runtime evidence was recorded as ${evidence.id}.`,
1044
+ evidence: [evidence.id],
1045
+ dependsOn: ['runtime-evidence'],
1046
+ });
1047
+ }
1048
+ const runtimeEvidenceStep = options.steps.find(step => step.id === 'runtime-evidence');
1049
+ if (runtimeEvidenceStep) {
1050
+ const allPassed = reports.every(report => report.status === 'passed');
1051
+ runtimeEvidenceStep.status = allPassed ? 'passed' : 'blocked';
1052
+ runtimeEvidenceStep.summary = allPassed
1053
+ ? `${reports.length} guarded verification command(s) passed and were recorded as runtime evidence.`
1054
+ : `${reports.filter(report => report.status === 'failed').length}/${reports.length} guarded verification command(s) failed.`;
1055
+ runtimeEvidenceStep.evidence = reports.map(report => report.evidenceId);
1056
+ }
1057
+ return {
1058
+ commands: reports,
1059
+ allPassed: reports.every(report => report.status === 'passed'),
1060
+ };
1061
+ }
1062
+ function summarizeRunEvidence(steps) {
1063
+ const required = new Set();
1064
+ const produced = new Set();
1065
+ const pending = new Set();
1066
+ for (const step of steps) {
1067
+ if (step.required) {
1068
+ for (const item of evidenceCategory(step))
1069
+ required.add(item);
1070
+ }
1071
+ if (step.status === 'passed') {
1072
+ for (const item of evidenceCategory(step))
1073
+ produced.add(item);
1074
+ }
1075
+ else if (step.required && step.status === 'planned') {
1076
+ for (const item of evidenceCategory(step))
1077
+ pending.add(item);
1078
+ }
1079
+ }
1080
+ return {
1081
+ required: [...required],
1082
+ produced: [...produced],
1083
+ pending: [...pending],
1084
+ };
1085
+ }
1086
+ function evidenceCategory(step) {
1087
+ if (step.id === 'runtime-plan')
1088
+ return ['ai-os-plan'];
1089
+ if (step.id === 'context-compiler')
1090
+ return ['context-compiler'];
1091
+ if (step.id === 'memory-provider-recall')
1092
+ return ['memory-provider-recall'];
1093
+ if (step.id === 'skill-evidence' || step.kind === 'skill')
1094
+ return ['skill-routing-engine'];
1095
+ if (step.id === 'runtime-evidence' || step.kind === 'evidence')
1096
+ return ['runtime-evidence'];
1097
+ if (step.kind === 'gate')
1098
+ return [`gate:${step.id}`];
1099
+ return [step.id];
1100
+ }
1101
+ function buildFailureLearningCandidates(plan, steps) {
1102
+ const hasBlockedVerification = steps.some(step => step.status === 'blocked' && step.id.startsWith('verify-command:'));
1103
+ const failed = steps.filter(step => step.status === 'blocked' && !(hasBlockedVerification && step.id === 'runtime-evidence'));
1104
+ return failed.map(step => ({
1105
+ id: `AIO-FLC-${safePathSegment(plan.task.taskId ?? step.id)}-${safePathSegment(step.id)}`,
1106
+ source: 'failed-step',
1107
+ title: `Failure learning candidate: ${step.title}`,
1108
+ summary: step.summary,
1109
+ recommendedAction: 'resolve-before-promotion',
1110
+ evidenceRefs: step.evidence,
1111
+ promotable: false,
1112
+ }));
1113
+ }
1114
+ function buildRunNextActions(steps, mode) {
1115
+ const actions = [];
1116
+ for (const step of steps) {
1117
+ if (step.status !== 'planned' || !step.required)
1118
+ continue;
1119
+ if (step.kind === 'skill')
1120
+ actions.push(`Execute required skill step "${step.title}" and attach evidence: ${step.evidence.join(', ')}.`);
1121
+ else if (step.kind === 'evidence')
1122
+ actions.push(`Record runtime evidence for "${step.id}" before claiming completion.`);
1123
+ else if (step.kind === 'gate')
1124
+ actions.push(`Satisfy gate "${step.id}" before ship.`);
1125
+ }
1126
+ if (mode === 'dry-run')
1127
+ actions.push('Re-run with guarded execution only after reviewing the dry-run report.');
1128
+ return actions;
1129
+ }
1130
+ function resolveRunReportPath(projectDir, scaleDir, taskId) {
1131
+ return join(resolveRunsDir(projectDir, scaleDir), `${safePathSegment(taskId)}.json`);
1132
+ }
1133
+ function writeAiOsRunReport(path, report) {
1134
+ const dir = dirname(path);
1135
+ if (dir && !existsSync(dir))
1136
+ mkdirSync(dir, { recursive: true });
1137
+ writeFileSync(path, JSON.stringify(report, null, 2), 'utf-8');
1138
+ }
1139
+ function safePathSegment(value) {
1140
+ return value.replace(/[^a-zA-Z0-9._-]/g, '-').slice(0, 120) || 'ai-os-run';
1141
+ }
1142
+ function truncate(value, max = 1000) {
1143
+ return value.length > max ? `${value.slice(0, max)}...` : value;
1144
+ }
1145
+ function normalizeProjectPath(projectDir, path) {
1146
+ const normalizedProject = resolve(projectDir);
1147
+ const normalizedPath = resolve(path);
1148
+ if (normalizedPath.startsWith(normalizedProject)) {
1149
+ return normalizedPath.slice(normalizedProject.length + 1).replace(/\\/g, '/');
1150
+ }
1151
+ return normalizedPath.replace(/\\/g, '/');
1152
+ }
1153
+ function resolveScaleRoot(projectDir, scaleDir) {
1154
+ return isAbsolute(scaleDir) ? scaleDir : join(projectDir, scaleDir);
1155
+ }
1156
+ function resolveRunsDir(projectDir, scaleDir) {
1157
+ return join(resolveScaleRoot(projectDir, scaleDir), 'ai-os', 'runs');
1158
+ }
1159
+ function resolveBenchmarkReportPath(projectDir, scaleDir) {
1160
+ return join(resolveScaleRoot(projectDir, scaleDir), 'ai-os', 'benchmarks', 'latest.json');
1161
+ }
1162
+ function resolveAdoptionReportPath(projectDir, scaleDir) {
1163
+ return join(resolveScaleRoot(projectDir, scaleDir), 'ai-os', 'adoption.json');
1164
+ }
1165
+ function aiOsAdoptionNextActions(status, lang) {
1166
+ if (lang === 'zh') {
1167
+ if (status === 'ready')
1168
+ return ['AI OS runtime 接入完成;后续真实任务使用 `scale ai-os run --mode guarded`。'];
1169
+ if (status === 'warning')
1170
+ return ['AI OS runtime 已可用但仍有警告;先运行 `scale ai-os doctor --json --lang zh` 处理剩余项。'];
1171
+ return ['AI OS runtime 接入被阻断;查看 adoption report 和 `scale ai-os doctor --json --lang zh` 的失败项。'];
1172
+ }
1173
+ if (status === 'ready')
1174
+ return ['AI OS runtime adoption is complete; use `scale ai-os run --mode guarded` for governed work.'];
1175
+ if (status === 'warning')
1176
+ return ['AI OS runtime is usable with warnings; run `scale ai-os doctor --json --lang en` and resolve remaining items.'];
1177
+ return ['AI OS runtime adoption is blocked; inspect the adoption report and `scale ai-os doctor --json --lang en` failures.'];
1178
+ }
1179
+ function aiOsStatusNextActions(status, checks, lang, verificationRecommendations) {
1180
+ const blocked = new Set(checks.filter(check => check.status === 'blocked').map(check => check.id));
1181
+ const firstVerificationCommand = verificationRecommendations[0]?.command ?? '<command>';
1182
+ if (lang === 'zh') {
1183
+ if (status === 'ready')
1184
+ return ['AI OS 闭环已就绪,可使用 `scale ai-os run --mode guarded` 执行受治理任务。'];
1185
+ if (blocked.has('runtime-dirs') || blocked.has('adoption-evidence')) {
1186
+ return ['运行 `scale ai-os adopt --task "接入 AI OS runtime" --lang zh` 生成运行态、首份 dry-run、benchmark 和 doctor 报告。'];
1187
+ }
1188
+ if (blocked.has('verification-evidence'))
1189
+ return ['运行 `scale ai-os run --mode guarded --verify "<command>"` 生成受治理验证证据。'];
1190
+ if (blocked.has('benchmark-evidence'))
1191
+ return ['运行 `scale ai-os benchmark --json` 生成闭环 benchmark 证据。'];
1192
+ return ['查看 status checks,补齐 blocked 项后重新运行 `scale ai-os status --lang zh`。'];
1193
+ }
1194
+ if (status === 'ready')
1195
+ return ['AI OS closed loop is ready for guarded project work.'];
1196
+ if (blocked.has('runtime-dirs') || blocked.has('adoption-evidence')) {
1197
+ return ['Run `scale ai-os adopt --task "Adopt AI OS runtime" --lang en` to create runtime state, first dry-run, benchmark, and doctor reports.'];
1198
+ }
1199
+ if (blocked.has('verification-evidence'))
1200
+ return [`Run \`scale ai-os run --mode guarded --verify "${escapeCliDoubleQuoted(firstVerificationCommand)}"\` to produce governed verification evidence.`];
1201
+ if (blocked.has('benchmark-evidence'))
1202
+ return ['Run `scale ai-os benchmark --json` to produce closed-loop benchmark evidence.'];
1203
+ return ['Inspect status checks, resolve blocked items, then rerun `scale ai-os status --lang en`.'];
1204
+ }
1205
+ const VERIFICATION_COMMAND_ORDER = ['build', 'lint', 'test', 'smoke', 'coverage'];
1206
+ function buildVerificationRecommendations(projectDir, scaleDir, lang) {
1207
+ const recommendations = [];
1208
+ const seen = new Set();
1209
+ const add = (recommendation) => {
1210
+ const key = `${recommendation.command}\n${recommendation.service ?? ''}`;
1211
+ if (seen.has(key))
1212
+ return;
1213
+ seen.add(key);
1214
+ recommendations.push(recommendation);
1215
+ };
1216
+ try {
1217
+ const resolved = resolveVerificationTargets({ projectDir, scaleDir, service: 'all' });
1218
+ for (const target of resolved.targets) {
1219
+ for (const name of VERIFICATION_COMMAND_ORDER) {
1220
+ const command = target.config[name];
1221
+ if (!command)
1222
+ continue;
1223
+ add({
1224
+ command,
1225
+ source: 'verification-profile',
1226
+ reason: verificationRecommendationReason(name, lang),
1227
+ profile: resolved.profileName,
1228
+ service: target.service?.name,
1229
+ });
1230
+ }
1231
+ }
1232
+ }
1233
+ catch {
1234
+ // Best effort only. Status should not fail just because verification config is invalid.
1235
+ }
1236
+ if (recommendations.length > 0)
1237
+ return recommendations;
1238
+ for (const item of packageScriptVerificationCommands(projectDir)) {
1239
+ add({
1240
+ command: item.command,
1241
+ source: 'package-script',
1242
+ reason: verificationRecommendationReason(item.name, lang),
1243
+ });
1244
+ }
1245
+ if (recommendations.length > 0)
1246
+ return recommendations;
1247
+ return [{
1248
+ command: 'scale preflight --preflight-profile quick --json',
1249
+ source: 'fallback',
1250
+ reason: lang === 'zh'
1251
+ ? '未找到验证矩阵或 package script,先运行 SCALE 快速预检生成基础验证证据。'
1252
+ : 'No verification matrix or package script was found; run SCALE quick preflight as baseline evidence.',
1253
+ }];
1254
+ }
1255
+ function packageScriptVerificationCommands(projectDir) {
1256
+ const packageJsonPath = join(projectDir, 'package.json');
1257
+ if (!existsSync(packageJsonPath))
1258
+ return [];
1259
+ try {
1260
+ const parsed = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
1261
+ const scripts = parsed.scripts ?? {};
1262
+ const commands = [];
1263
+ if (scripts.build)
1264
+ commands.push({ name: 'build', command: 'npm run build' });
1265
+ if (scripts.lint)
1266
+ commands.push({ name: 'lint', command: 'npm run lint' });
1267
+ if (scripts.test)
1268
+ commands.push({ name: 'test', command: 'npm test' });
1269
+ return commands;
1270
+ }
1271
+ catch {
1272
+ return [];
1273
+ }
1274
+ }
1275
+ function verificationRecommendationReason(name, lang) {
1276
+ if (lang === 'zh') {
1277
+ if (name === 'build')
1278
+ return '构建验证可以证明代码仍可编译并生成发布产物。';
1279
+ if (name === 'lint')
1280
+ return 'Lint 验证可以捕获工程规范和静态质量问题。';
1281
+ if (name === 'test')
1282
+ return '测试验证可以证明核心行为没有回归。';
1283
+ if (name === 'smoke')
1284
+ return '冒烟验证可以证明关键产品路径仍可用。';
1285
+ return '覆盖率验证可以补充测试充分性证据。';
1286
+ }
1287
+ if (name === 'build')
1288
+ return 'Build verification proves the code still compiles and produces releasable artifacts.';
1289
+ if (name === 'lint')
1290
+ return 'Lint verification catches engineering-standard and static-quality issues.';
1291
+ if (name === 'test')
1292
+ return 'Test verification proves core behavior did not regress.';
1293
+ if (name === 'smoke')
1294
+ return 'Smoke verification proves critical product paths still work.';
1295
+ return 'Coverage verification adds evidence for test adequacy.';
1296
+ }
1297
+ function escapeCliDoubleQuoted(value) {
1298
+ return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
1299
+ }
1300
+ function inspectBenchmarkReport(projectDir, scaleDir, maxAgeHours, warnings) {
1301
+ const reportPath = resolveBenchmarkReportPath(projectDir, scaleDir);
1302
+ if (!existsSync(reportPath))
1303
+ return { status: 'missing', reportPath };
1304
+ try {
1305
+ const parsed = JSON.parse(readFileSync(reportPath, 'utf-8'));
1306
+ if (!parsed.generatedAt || !parsed.summary || typeof parsed.summary.scenarios !== 'number') {
1307
+ warnings.push(`Invalid AI OS benchmark report: ${reportPath}`);
1308
+ return { status: 'invalid', reportPath };
1309
+ }
1310
+ const generatedAtMs = Date.parse(parsed.generatedAt);
1311
+ const ageHours = Number(((Date.now() - generatedAtMs) / 3_600_000).toFixed(2));
1312
+ const fileAgeHours = Number(((Date.now() - statSync(reportPath).mtimeMs) / 3_600_000).toFixed(2));
1313
+ const effectiveAgeHours = Number.isFinite(ageHours) ? ageHours : fileAgeHours;
1314
+ return {
1315
+ status: effectiveAgeHours <= maxAgeHours ? 'fresh' : 'stale',
1316
+ reportPath,
1317
+ generatedAt: parsed.generatedAt,
1318
+ ageHours: effectiveAgeHours,
1319
+ scenarios: parsed.summary.scenarios,
1320
+ };
1321
+ }
1322
+ catch (error) {
1323
+ warnings.push(`Unreadable AI OS benchmark report: ${reportPath} (${error instanceof Error ? error.message : String(error)})`);
1324
+ return { status: 'invalid', reportPath };
1325
+ }
1326
+ }
1327
+ function readAiOsBenchmarkReport(reportPath, warnings) {
1328
+ if (!existsSync(reportPath))
1329
+ return undefined;
1330
+ try {
1331
+ const parsed = JSON.parse(readFileSync(reportPath, 'utf-8'));
1332
+ if (!parsed || !parsed.summary || !Array.isArray(parsed.scenarios)) {
1333
+ warnings.push(`Ignored invalid AI OS benchmark report: ${reportPath}`);
1334
+ return undefined;
1335
+ }
1336
+ return parsed;
1337
+ }
1338
+ catch (error) {
1339
+ warnings.push(`Ignored unreadable AI OS benchmark report: ${reportPath} (${error instanceof Error ? error.message : String(error)})`);
1340
+ return undefined;
1341
+ }
1342
+ }
1343
+ function summarizeBenchmarkDoctor(benchmark) {
1344
+ if (benchmark.status === 'missing')
1345
+ return 'No AI OS benchmark report found.';
1346
+ if (benchmark.status === 'invalid')
1347
+ return 'AI OS benchmark report is invalid or unreadable.';
1348
+ const age = benchmark.ageHours === undefined ? 'unknown age' : `${benchmark.ageHours}h old`;
1349
+ return `${benchmark.scenarios ?? 0} benchmark scenario(s); ${age}; status ${benchmark.status}.`;
1350
+ }
1351
+ function aiOsDoctorNextActions(input) {
1352
+ if (input.lang === 'zh')
1353
+ return aiOsDoctorNextActionsZh(input);
1354
+ return aiOsDoctorNextActionsEn(input);
1355
+ }
1356
+ function aiOsDoctorNextActionsEn(input) {
1357
+ const actions = [];
1358
+ if (input.checks.some(check => check.id === 'ai-os-runtime-dirs' && check.status === 'blocked')) {
1359
+ actions.push('Run `scale ai-os migrate --json` before using the AI OS beta runtime.');
1360
+ }
1361
+ if (input.dashboard.summary.totalRuns === 0) {
1362
+ actions.push('Run `scale ai-os run --dry-run --json` to create the first AI OS run report.');
1363
+ }
1364
+ if (input.dashboard.summary.blockedRuns > 0) {
1365
+ actions.push('Resolve blocked AI OS runs before claiming the project is ready.');
1366
+ }
1367
+ if (input.benchmark.status === 'missing' || input.benchmark.status === 'stale') {
1368
+ actions.push('Run `scale ai-os benchmark --json` before release or milestone review.');
1369
+ }
1370
+ if (input.status === 'ready')
1371
+ actions.push('AI OS beta runtime is ready for guarded project tasks.');
1372
+ return actions;
1373
+ }
1374
+ function aiOsDoctorNextActionsZh(input) {
1375
+ const actions = [];
1376
+ if (input.checks.some(check => check.id === 'ai-os-runtime-dirs' && check.status === 'blocked')) {
1377
+ actions.push('先运行 `scale ai-os migrate --json`,再接入 AI OS beta runtime。');
1378
+ }
1379
+ if (input.dashboard.summary.totalRuns === 0) {
1380
+ actions.push('运行 `scale ai-os run --dry-run --json` 生成第一份 AI OS 运行报告。');
1381
+ }
1382
+ if (input.dashboard.summary.blockedRuns > 0) {
1383
+ actions.push('先处理 blocked 的 AI OS run,再声明项目运行态就绪。');
1384
+ }
1385
+ if (input.benchmark.status === 'missing' || input.benchmark.status === 'stale') {
1386
+ actions.push('发版或阶段验收前运行 `scale ai-os benchmark --json`。');
1387
+ }
1388
+ if (input.status === 'ready')
1389
+ actions.push('AI OS beta runtime 已可用于 guarded 项目任务。');
1390
+ return actions;
1391
+ }
1392
+ function writeAiOsBenchmarkReport(path, report) {
1393
+ const dir = dirname(path);
1394
+ if (dir && !existsSync(dir))
1395
+ mkdirSync(dir, { recursive: true });
1396
+ writeFileSync(path, JSON.stringify(report, null, 2), 'utf-8');
1397
+ }
1398
+ function readAiOsRunReports(runsDir, warnings) {
1399
+ if (!existsSync(runsDir))
1400
+ return [];
1401
+ return readdirSync(runsDir)
1402
+ .filter(file => file.endsWith('.json'))
1403
+ .flatMap(file => {
1404
+ const path = join(runsDir, file);
1405
+ try {
1406
+ const parsed = JSON.parse(readFileSync(path, 'utf-8'));
1407
+ if (!parsed || !parsed.plan || !parsed.evidence || !parsed.verification) {
1408
+ warnings.push(`Ignored invalid AI OS run report: ${path}`);
1409
+ return [];
1410
+ }
1411
+ return [parsed];
1412
+ }
1413
+ catch (error) {
1414
+ warnings.push(`Ignored unreadable AI OS run report: ${path} (${error instanceof Error ? error.message : String(error)})`);
1415
+ return [];
1416
+ }
1417
+ });
1418
+ }
1419
+ function toDashboardRunSummary(report) {
1420
+ return {
1421
+ taskId: report.plan.task.taskId,
1422
+ task: report.plan.task.task,
1423
+ mode: report.mode,
1424
+ status: report.status,
1425
+ generatedAt: report.generatedAt,
1426
+ runReport: report.artifacts.runReport,
1427
+ verificationCommands: report.verification.commands.length,
1428
+ failedVerificationCommands: report.verification.commands.filter(command => command.status === 'failed').length,
1429
+ pendingEvidence: report.evidence.pending.length,
1430
+ failureLearningCandidates: report.failureLearning.candidates.length,
1431
+ };
1432
+ }
1433
+ function summarizeDashboardHealth(summary) {
1434
+ if (summary.totalRuns === 0) {
1435
+ return { status: 'empty', score: 0, reasons: ['No AI OS run reports found.'] };
1436
+ }
1437
+ const reasons = [];
1438
+ if (summary.blockedRuns > 0)
1439
+ reasons.push(`${summary.blockedRuns} blocked AI OS run(s).`);
1440
+ if (summary.failedVerificationCommands > 0)
1441
+ reasons.push(`${summary.failedVerificationCommands} failed guarded verification command(s).`);
1442
+ if (summary.failureLearningCandidates > 0)
1443
+ reasons.push(`${summary.failureLearningCandidates} failure learning candidate(s) need review.`);
1444
+ const score = Math.max(0, Math.round(((summary.readyRuns / summary.totalRuns) * 100) - (summary.failedVerificationCommands * 10) - (summary.failureLearningCandidates * 5)));
1445
+ if (summary.blockedRuns === summary.totalRuns)
1446
+ return { status: 'blocked', score, reasons };
1447
+ if (reasons.length > 0)
1448
+ return { status: 'attention', score, reasons };
1449
+ return { status: 'healthy', score: 100, reasons: ['All AI OS runs are ready.'] };
1450
+ }
1451
+ function dashboardRecommendations(summary) {
1452
+ const recommendations = [];
1453
+ if (summary.totalRuns === 0) {
1454
+ recommendations.push('Run `scale ai-os run --dry-run` to create the first AI OS execution report.');
1455
+ return recommendations;
1456
+ }
1457
+ if (summary.blockedRuns > 0)
1458
+ recommendations.push('Resolve blocked AI OS run reports before promoting lessons or shipping.');
1459
+ if (summary.failedVerificationCommands > 0)
1460
+ recommendations.push('Inspect failed guarded verification runtime evidence and fix the underlying command or code issue.');
1461
+ if (summary.failureLearningCandidates > 0)
1462
+ recommendations.push('Review failure learning candidates before turning them into durable rules.');
1463
+ if (summary.guardedRuns === 0)
1464
+ recommendations.push('Add guarded verification runs for at least one representative task to validate evidence flow.');
1465
+ return recommendations;
1466
+ }
1467
+ function defaultBenchmarkScenarios(budget = 8_000) {
1468
+ return [
1469
+ {
1470
+ id: 'docs-governance',
1471
+ task: 'Update bilingual governance documentation and keep README, docs map, and strategy aligned',
1472
+ level: 'M',
1473
+ files: ['README.md', 'README.en.md', 'docs/README.md', 'docs/AI_ENGINEERING_OS_POSITIONING.md'],
1474
+ services: ['docs'],
1475
+ budget,
1476
+ },
1477
+ {
1478
+ id: 'security-code-change',
1479
+ task: 'Harden auth token handling and verify runtime evidence for a security-sensitive code change',
1480
+ level: 'L',
1481
+ files: ['src/auth/token.ts', 'src/runtime/AiOsRuntime.ts', 'tests/runtime/aiOsRuntime.test.ts'],
1482
+ services: ['runtime', 'security'],
1483
+ budget,
1484
+ },
1485
+ {
1486
+ id: 'browser-ui-flow',
1487
+ task: 'Verify a browser callback UI flow with screenshots, runtime evidence, and guarded workflow gates',
1488
+ level: 'L',
1489
+ files: ['src/ui/callback.tsx', 'tests/api/aiOsCli.test.ts'],
1490
+ services: ['ui', 'browser'],
1491
+ budget,
1492
+ },
1493
+ ];
1494
+ }
1495
+ function summarizeBenchmark(results) {
1496
+ const totalBudget = results.reduce((sum, result) => sum + result.metrics.budget, 0);
1497
+ const totalEstimatedTokens = results.reduce((sum, result) => sum + result.metrics.estimatedTokens, 0);
1498
+ return {
1499
+ scenarios: results.length,
1500
+ totalEstimatedTokens,
1501
+ totalBudget,
1502
+ totalEstimatedTokenSavings: results.reduce((sum, result) => sum + result.metrics.estimatedTokenSavings, 0),
1503
+ totalMemoryItems: results.reduce((sum, result) => sum + result.metrics.memoryItems, 0),
1504
+ totalSkillSteps: results.reduce((sum, result) => sum + result.metrics.skillSteps, 0),
1505
+ requiredSkillSteps: results.reduce((sum, result) => sum + result.metrics.requiredSkillSteps, 0),
1506
+ totalEvaluatorGates: results.reduce((sum, result) => sum + result.metrics.evaluatorGates, 0),
1507
+ totalToolStrategySteps: results.reduce((sum, result) => sum + result.metrics.toolStrategySteps, 0),
1508
+ totalToolStrategyCostUnits: results.reduce((sum, result) => sum + result.metrics.toolStrategyCostUnits, 0),
1509
+ totalEvolutionProposals: results.reduce((sum, result) => sum + result.metrics.evolutionProposals, 0),
1510
+ governanceModes: [...new Set(results.map(result => result.governanceMode))],
1511
+ workflowProfiles: [...new Set(results.map(result => result.workflowProfile))],
1512
+ averageTokenUtilization: totalBudget > 0 ? Number((totalEstimatedTokens / totalBudget).toFixed(4)) : 0,
1513
+ };
1514
+ }
1515
+ function benchmarkRecommendations(summary) {
1516
+ const recommendations = ['Use benchmark deltas in release notes only after comparing the same scenario set across versions.'];
1517
+ if (summary.totalSkillSteps === 0)
1518
+ recommendations.push('Skill routing did not produce steps; inspect skill policy detection.');
1519
+ if (summary.totalEvaluatorGates === 0)
1520
+ recommendations.push('Evaluator intelligence did not require any critique gate; add reasoning-heavy benchmark scenarios before claiming evaluator coverage.');
1521
+ if (summary.totalToolStrategySteps === 0)
1522
+ recommendations.push('Tool strategy did not build a cost/retry/fallback graph; inspect skill execution plan coverage.');
1523
+ if (summary.averageTokenUtilization > 0.9)
1524
+ recommendations.push('Context utilization is high; lower budgets or improve relevance filtering before scaling.');
1525
+ if (!summary.governanceModes.includes('critical') && !summary.governanceModes.includes('expanded')) {
1526
+ recommendations.push('Add at least one high-risk benchmark scenario before claiming adaptive governance coverage.');
1527
+ }
1528
+ return recommendations;
1529
+ }
1530
+ function createAdaptiveWorkflow(governance, skillPlan, evaluator, toolStrategy) {
1531
+ const routerResult = routeAdaptiveWorkflow({ governance, evaluator, toolStrategy });
1532
+ const gates = new Set();
1533
+ gates.add('context-compiler');
1534
+ gates.add('memory-provider-recall');
1535
+ if (skillPlan.required || skillPlan.executionPlan.steps.length > 0)
1536
+ gates.add('skill-evidence');
1537
+ gates.add('runtime-evidence');
1538
+ if (routerResult.profile === 'strict' || routerResult.profile === 'critical')
1539
+ gates.add('impact-analysis');
1540
+ if (routerResult.profile === 'critical')
1541
+ gates.add('security-review');
1542
+ for (const gate of evaluator.gates)
1543
+ gates.add(gate.id);
1544
+ for (const override of routerResult.gateOverrides)
1545
+ gates.add(override.gateId);
1546
+ const requiredBehaviors = new Set(governance.requiredBehaviors);
1547
+ for (const constraint of routerResult.behavioralConstraints) {
1548
+ if (constraint.required)
1549
+ requiredBehaviors.add(constraint.description);
1550
+ }
1551
+ return {
1552
+ strategy: 'risk-adaptive-runtime-v1',
1553
+ profile: routerResult.profile,
1554
+ escalationReasons: routerResult.escalationReasons,
1555
+ mode: governance.effectiveMode,
1556
+ requiredBehaviors: Array.from(requiredBehaviors),
1557
+ gates: Array.from(gates),
1558
+ exitCriteria: routerResult.exitCriteria,
1559
+ };
1560
+ }
1561
+ function createEvaluatorIntelligence(input) {
1562
+ const haystack = `${input.task} ${input.files.join(' ')} ${input.governance.signals.map(signal => signal.id).join(' ')}`.toLowerCase();
1563
+ const gates = [];
1564
+ const addGate = (gate) => {
1565
+ if (gates.some(existing => existing.id === gate.id))
1566
+ return;
1567
+ gates.push(gate);
1568
+ };
1569
+ if (/architecture|architectural|design|strategy|boundary|refactor|runtime|platform|framework|架构|方案|设计|边界|平台/.test(haystack)) {
1570
+ addGate({
1571
+ id: 'architecture-critique',
1572
+ required: input.governance.effectiveMode !== 'minimal',
1573
+ reason: 'Architecture, runtime, platform, or design decisions need an explicit critique before implementation claims.',
1574
+ evidence: matchingEvidence(input.files, /architecture|runtime|framework|docs|readme|src/i),
1575
+ });
1576
+ }
1577
+ if (/root cause|diagnose|debug|failure|incident|postmortem|regression|blocked|根因|排查|故障|事故|回归/.test(haystack)) {
1578
+ addGate({
1579
+ id: 'root-cause-review',
1580
+ required: true,
1581
+ reason: 'Failure diagnosis or root-cause work needs an alternate hypothesis check before closing.',
1582
+ evidence: matchingEvidence(input.files, /test|runtime|debug|log|src|docs/i),
1583
+ });
1584
+ }
1585
+ if (input.governance.signals.some(signal => signal.id === 'critical-risk-domain' || signal.id === 'critical-file-path')) {
1586
+ addGate({
1587
+ id: 'security-threat-model',
1588
+ required: true,
1589
+ reason: 'Critical auth, data, production, or destructive risk requires threat-model review evidence.',
1590
+ evidence: input.governance.signals.flatMap(signal => signal.evidence).slice(0, 12),
1591
+ });
1592
+ }
1593
+ if (/release|publish|deploy|migration|rollback|version|changelog|npm|ci|发版|发布|部署|迁移|回滚/.test(haystack)) {
1594
+ addGate({
1595
+ id: 'release-readiness-review',
1596
+ required: true,
1597
+ reason: 'Release, deployment, migration, or rollback work needs readiness and rollback evidence.',
1598
+ evidence: matchingEvidence(input.files, /package|changelog|release|deploy|migration|workflow|github/i),
1599
+ });
1600
+ }
1601
+ const drivers = evaluatorUncertaintyDrivers(input, gates);
1602
+ const uncertaintyScore = evaluatorUncertaintyScore(input, gates, drivers);
1603
+ if (gates.length > 0 || uncertaintyScore >= 0.45) {
1604
+ addGate({
1605
+ id: 'uncertainty-decision-log',
1606
+ required: uncertaintyScore >= 0.45 || input.governance.effectiveMode === 'critical',
1607
+ reason: 'The agent must record uncertainty, rejected alternatives, and evidence gaps before completion.',
1608
+ evidence: drivers,
1609
+ });
1610
+ }
1611
+ const riskLevel = uncertaintyScore >= 0.7
1612
+ ? 'high'
1613
+ : uncertaintyScore >= 0.4 || gates.some(gate => gate.required) ? 'medium' : 'low';
1614
+ return {
1615
+ strategy: 'evaluator-intelligence-v1',
1616
+ required: gates.some(gate => gate.required),
1617
+ riskLevel,
1618
+ uncertainty: {
1619
+ score: uncertaintyScore,
1620
+ threshold: 0.45,
1621
+ drivers,
1622
+ },
1623
+ gates,
1624
+ recommendations: evaluatorRecommendations(gates, riskLevel),
1625
+ };
1626
+ }
1627
+ function createToolStrategyPlan(skillPlan) {
1628
+ const nodes = skillPlan.executionPlan.steps.map(step => {
1629
+ const risks = toolStepRisks(step.id, step.kind);
1630
+ return {
1631
+ id: `${step.kind}:${step.id}`,
1632
+ kind: step.kind,
1633
+ required: step.required,
1634
+ cost: {
1635
+ units: toolStepCostUnits(step.id, step.kind, step.required, risks),
1636
+ timeRisk: risks.timeRisk,
1637
+ sideEffectRisk: risks.sideEffectRisk,
1638
+ },
1639
+ retry: toolStepRetry(step.id, step.kind, risks),
1640
+ fallback: step.fallback,
1641
+ evidence: [step.evidenceRequired],
1642
+ };
1643
+ });
1644
+ const edges = buildToolStrategyEdges(nodes);
1645
+ const summary = {
1646
+ totalSteps: nodes.length,
1647
+ requiredSteps: nodes.filter(node => node.required).length,
1648
+ highRiskSteps: nodes.filter(node => node.cost.timeRisk === 'high' || node.cost.sideEffectRisk === 'high').length,
1649
+ estimatedCostUnits: nodes.reduce((sum, node) => sum + node.cost.units, 0),
1650
+ fallbackCoveredSteps: nodes.filter(node => node.fallback.trim().length > 0).length,
1651
+ };
1652
+ return {
1653
+ strategy: 'tool-strategy-v1',
1654
+ nodes,
1655
+ edges,
1656
+ summary,
1657
+ recommendations: toolStrategyRecommendations(summary),
1658
+ };
1659
+ }
1660
+ function createEvolutionShadowProposals(governance, evaluator) {
1661
+ const proposals = [];
1662
+ // Propose shadow rules from governance risk signals (escalated modes)
1663
+ for (const signal of governance.signals) {
1664
+ if (signal.mode === 'expanded' || signal.mode === 'critical') {
1665
+ proposals.push(proposeShadowRule({
1666
+ title: `Governance signal: ${signal.id}`,
1667
+ description: `Shadow rule from governance signal "${signal.id}" (mode=${signal.mode}). ${signal.reason}`,
1668
+ source: 'failure-learning',
1669
+ sourceEvidenceIds: signal.evidence.length > 0 ? signal.evidence : [signal.id],
1670
+ pattern: signal.id,
1671
+ enforcement: signal.mode === 'critical' ? 'hook' : 'prompt',
1672
+ rollback: `Remove shadow rule for governance signal "${signal.id}" if false positive rate exceeds threshold.`,
1673
+ }));
1674
+ }
1675
+ }
1676
+ // Propose shadow rules from high-risk evaluator gates
1677
+ for (const gate of evaluator.gates) {
1678
+ if (gate.required && (gate.id === 'security-threat-model' || gate.id === 'root-cause-review')) {
1679
+ proposals.push(proposeShadowRule({
1680
+ title: `Evaluator gate: ${gate.id}`,
1681
+ description: `Shadow rule from required evaluator gate "${gate.id}". ${gate.reason}`,
1682
+ source: 'lesson-extraction',
1683
+ sourceEvidenceIds: [gate.id],
1684
+ pattern: gate.id,
1685
+ enforcement: 'prompt',
1686
+ rollback: `Remove shadow rule for evaluator gate "${gate.id}" if it does not reduce defect recurrence.`,
1687
+ }));
1688
+ }
1689
+ }
1690
+ return buildEvolutionShadowReport(proposals);
1691
+ }
1692
+ function toolStepRisks(id, kind) {
1693
+ const normalized = id.toLowerCase();
1694
+ if (/desktop|cua|deploy|publish|release|migration|rollback|delete|drop|external|cli/.test(normalized)) {
1695
+ return { timeRisk: 'high', sideEffectRisk: 'high' };
1696
+ }
1697
+ if (/browser|e2e|playwright|screenshot|visual|security|threat|audit/.test(normalized)) {
1698
+ return { timeRisk: 'medium', sideEffectRisk: kind === 'verification' ? 'medium' : 'low' };
1699
+ }
1700
+ if (kind === 'artifact')
1701
+ return { timeRisk: 'low', sideEffectRisk: 'low' };
1702
+ if (kind === 'verification')
1703
+ return { timeRisk: 'medium', sideEffectRisk: 'medium' };
1704
+ return { timeRisk: 'medium', sideEffectRisk: 'low' };
1705
+ }
1706
+ function toolStepCostUnits(id, kind, required, risks) {
1707
+ let units = kind === 'artifact' ? 1 : kind === 'verification' ? 2 : 3;
1708
+ if (required)
1709
+ units += 1;
1710
+ if (risks.timeRisk === 'medium')
1711
+ units += 1;
1712
+ if (risks.timeRisk === 'high')
1713
+ units += 2;
1714
+ if (risks.sideEffectRisk === 'high')
1715
+ units += 2;
1716
+ if (/browser|e2e|desktop|external|cli|security|audit/i.test(id))
1717
+ units += 1;
1718
+ return units;
1719
+ }
1720
+ function toolStepRetry(id, kind, risks) {
1721
+ if (risks.sideEffectRisk === 'high')
1722
+ return { maxAttempts: 1, backoff: 'manual-review' };
1723
+ if (kind === 'verification')
1724
+ return { maxAttempts: /browser|e2e|playwright|network/i.test(id) ? 2 : 1, backoff: 'linear' };
1725
+ if (kind === 'skill')
1726
+ return { maxAttempts: 1, backoff: 'manual-review' };
1727
+ return { maxAttempts: 1, backoff: 'none' };
1728
+ }
1729
+ function buildToolStrategyEdges(nodes) {
1730
+ const edges = [];
1731
+ const skillNodes = nodes.filter(node => node.kind === 'skill');
1732
+ const artifactNodes = nodes.filter(node => node.kind === 'artifact');
1733
+ const verificationNodes = nodes.filter(node => node.kind === 'verification');
1734
+ for (const artifact of artifactNodes) {
1735
+ for (const skill of skillNodes.filter(node => node.required || artifact.required)) {
1736
+ edges.push({ from: skill.id, to: artifact.id, reason: 'Skill execution must leave artifact evidence when both are required or review-relevant.' });
1737
+ }
1738
+ }
1739
+ for (const verification of verificationNodes) {
1740
+ for (const artifact of artifactNodes.filter(node => node.required)) {
1741
+ edges.push({ from: artifact.id, to: verification.id, reason: 'Required artifacts should exist before verification evidence is accepted.' });
1742
+ }
1743
+ }
1744
+ return edges;
1745
+ }
1746
+ function toolStrategyRecommendations(summary) {
1747
+ if (summary.totalSteps === 0)
1748
+ return ['No tool strategy required; standard verification is enough for this task.'];
1749
+ const recommendations = ['Execute required tool strategy nodes before claiming task completion.'];
1750
+ if (summary.highRiskSteps > 0)
1751
+ recommendations.push('High-risk tool steps require manual review or explicit safe-mode evidence before retry.');
1752
+ if (summary.fallbackCoveredSteps < summary.totalSteps)
1753
+ recommendations.push('Fill fallback policy gaps before autonomous execution.');
1754
+ return recommendations;
1755
+ }
1756
+ function matchingEvidence(files, pattern) {
1757
+ return files.filter(file => pattern.test(file)).slice(0, 12);
1758
+ }
1759
+ function evaluatorUncertaintyDrivers(input, gates) {
1760
+ const drivers = new Set();
1761
+ if (input.governance.effectiveMode === 'critical')
1762
+ drivers.add('critical-governance-mode');
1763
+ if (input.governance.effectiveMode === 'expanded')
1764
+ drivers.add('expanded-governance-mode');
1765
+ if (input.files.length >= 6)
1766
+ drivers.add('wide-file-scope');
1767
+ if (input.skillPlan.executionPlan.steps.some(step => step.required))
1768
+ drivers.add('required-skill-evidence');
1769
+ for (const gate of gates)
1770
+ drivers.add(gate.id);
1771
+ if (/unknown|uncertain|maybe|assume|guess|可能|不确定|假设/.test(input.task.toLowerCase()))
1772
+ drivers.add('explicit-uncertainty-language');
1773
+ return [...drivers];
1774
+ }
1775
+ function evaluatorUncertaintyScore(input, gates, drivers) {
1776
+ let score = 0.15;
1777
+ if (input.governance.effectiveMode === 'standard')
1778
+ score += 0.1;
1779
+ if (input.governance.effectiveMode === 'expanded')
1780
+ score += 0.25;
1781
+ if (input.governance.effectiveMode === 'critical')
1782
+ score += 0.4;
1783
+ score += Math.min(0.2, input.files.length * 0.025);
1784
+ score += Math.min(0.2, gates.filter(gate => gate.required).length * 0.08);
1785
+ if (input.skillPlan.executionPlan.steps.some(step => step.required))
1786
+ score += 0.08;
1787
+ if (drivers.includes('explicit-uncertainty-language'))
1788
+ score += 0.12;
1789
+ return roundMetric(clampUnit(score));
1790
+ }
1791
+ function evaluatorRecommendations(gates, riskLevel) {
1792
+ if (gates.length === 0)
1793
+ return ['No evaluator gate required; keep lightweight verification evidence for low-risk work.'];
1794
+ const recommendations = ['Record evaluator evidence before promoting reasoning-heavy implementation or release claims.'];
1795
+ if (riskLevel === 'high')
1796
+ recommendations.push('Require reviewer sign-off for uncertainty, rejected alternatives, and rollback or mitigation path.');
1797
+ if (gates.some(gate => gate.id === 'root-cause-review'))
1798
+ recommendations.push('List competing root-cause hypotheses and why each was accepted or rejected.');
1799
+ if (gates.some(gate => gate.id === 'security-threat-model'))
1800
+ recommendations.push('Attach threat model or security-review evidence before guarded completion.');
1801
+ return recommendations;
1802
+ }
1803
+ function recommendations(options) {
1804
+ const output = [];
1805
+ if (options.context.compiler?.estimatedTokenSavings) {
1806
+ output.push(`Keep context compiler active; estimated savings ${options.context.compiler.estimatedTokenSavings} tokens for this task pack.`);
1807
+ }
1808
+ if (options.memoryRecall.items.length === 0) {
1809
+ output.push('No memory recall result found; continue with local evidence and settle reusable knowledge after verification.');
1810
+ }
1811
+ if (options.skillPlan.executionPlan.steps.length > 0) {
1812
+ output.push(`Follow ${options.skillPlan.executionPlan.steps.length} skill routing step(s) and record evidence before ship.`);
1813
+ }
1814
+ if (options.governance.effectiveMode === 'critical') {
1815
+ output.push('Critical workflow mode requires security review and rollback or disable strategy.');
1816
+ }
1817
+ if (options.evaluator.required) {
1818
+ output.push(`Evaluator intelligence requires ${options.evaluator.gates.length} critique gate(s); record uncertainty and review evidence before promotion.`);
1819
+ }
1820
+ if (options.toolStrategy.summary.totalSteps > 0) {
1821
+ output.push(`Tool strategy planner created ${options.toolStrategy.summary.totalSteps} cost/retry/fallback node(s); execute required nodes with evidence.`);
1822
+ }
1823
+ return output;
1824
+ }
1825
+ export async function buildCostRoiEstimate(projectDir) {
1826
+ const { CostAnalyzer } = await import('./CostAnalyzer.js');
1827
+ const analyzer = new CostAnalyzer();
1828
+ const records = analyzer.loadRecords();
1829
+ const breakdown = analyzer.analyze(records);
1830
+ const suggestions = analyzer.suggestOptimizations(breakdown);
1831
+ const lines = [
1832
+ '\n--- ROI Estimate ---',
1833
+ ` Governance cost (est.): $${breakdown.total.cost.toFixed(2)}/month`,
1834
+ ` Estimated defect prevention value: $${(breakdown.total.cost * 50).toFixed(2)}/month`,
1835
+ ` Net estimated ROI: ${((breakdown.total.cost * 50 - breakdown.total.cost) / Math.max(0.01, breakdown.total.cost)).toFixed(0)}x`,
1836
+ ` Potential savings: $${suggestions.reduce((s, sug) => s + sug.estimatedMonthlySavings, 0).toFixed(2)}/month`,
1837
+ ];
1838
+ return lines.join('\n');
1839
+ }
1840
+ function normalizeSkillTaskLevel(value) {
1841
+ const normalized = String(value ?? 'M').trim().toUpperCase();
1842
+ if (normalized === 'S' || normalized === 'M' || normalized === 'L' || normalized === 'CRITICAL')
1843
+ return normalized;
1844
+ throw new Error(`Invalid task level "${String(value)}"; expected S, M, L, or CRITICAL.`);
1845
+ }
1846
+ //# sourceMappingURL=AiOsRuntime.js.map