@linghun/tui 0.1.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 (692) hide show
  1. package/LICENSE +190 -0
  2. package/dist/agent-completion-finalizer.d.ts +31 -0
  3. package/dist/agent-completion-finalizer.d.ts.map +1 -0
  4. package/dist/agent-completion-finalizer.js +20 -0
  5. package/dist/agent-handoff-safety.d.ts +13 -0
  6. package/dist/agent-handoff-safety.d.ts.map +1 -0
  7. package/dist/agent-handoff-safety.js +43 -0
  8. package/dist/agent-workflow-registry.d.ts +45 -0
  9. package/dist/agent-workflow-registry.d.ts.map +1 -0
  10. package/dist/agent-workflow-registry.js +12 -0
  11. package/dist/architecture-boundary.d.ts +151 -0
  12. package/dist/architecture-boundary.d.ts.map +1 -0
  13. package/dist/architecture-boundary.js +24 -0
  14. package/dist/architecture-runtime.d.ts +56 -0
  15. package/dist/architecture-runtime.d.ts.map +1 -0
  16. package/dist/architecture-runtime.js +18 -0
  17. package/dist/background-control-runtime.d.ts +29 -0
  18. package/dist/background-control-runtime.d.ts.map +1 -0
  19. package/dist/background-control-runtime.js +148 -0
  20. package/dist/bash-subcommand-parser.d.ts +34 -0
  21. package/dist/bash-subcommand-parser.d.ts.map +1 -0
  22. package/dist/bash-subcommand-parser.js +8 -0
  23. package/dist/batch-tool-confirmation.d.ts +18 -0
  24. package/dist/batch-tool-confirmation.d.ts.map +1 -0
  25. package/dist/batch-tool-confirmation.js +100 -0
  26. package/dist/break-cache-runtime.d.ts +40 -0
  27. package/dist/break-cache-runtime.d.ts.map +1 -0
  28. package/dist/break-cache-runtime.js +17 -0
  29. package/dist/btw-runtime.d.ts +45 -0
  30. package/dist/btw-runtime.d.ts.map +1 -0
  31. package/dist/btw-runtime.js +14 -0
  32. package/dist/cache-command-runtime.d.ts +22 -0
  33. package/dist/cache-command-runtime.d.ts.map +1 -0
  34. package/dist/cache-command-runtime.js +33 -0
  35. package/dist/cache-freshness.d.ts +26 -0
  36. package/dist/cache-freshness.d.ts.map +1 -0
  37. package/dist/cache-freshness.js +14 -0
  38. package/dist/capability-runtime.d.ts +75 -0
  39. package/dist/capability-runtime.d.ts.map +1 -0
  40. package/dist/capability-runtime.js +97 -0
  41. package/dist/chunk-2FVEKTKN.js +86 -0
  42. package/dist/chunk-2YL5VKJ5.js +531 -0
  43. package/dist/chunk-3AKXDMVS.js +85 -0
  44. package/dist/chunk-3GCIXKCI.js +221 -0
  45. package/dist/chunk-3LT6OWQ2.js +258 -0
  46. package/dist/chunk-3XNUDLOM.js +91 -0
  47. package/dist/chunk-4EIC5BCT.js +475 -0
  48. package/dist/chunk-4EP3TUFF.js +238 -0
  49. package/dist/chunk-4I2NWBOM.js +117 -0
  50. package/dist/chunk-4K6UB524.js +443 -0
  51. package/dist/chunk-4T5DJW54.js +88 -0
  52. package/dist/chunk-4WHZ6JKD.js +8105 -0
  53. package/dist/chunk-5H7RRF7C.js +6 -0
  54. package/dist/chunk-64MJP6FK.js +558 -0
  55. package/dist/chunk-66BNE332.js +1617 -0
  56. package/dist/chunk-6CI6TKLN.js +50 -0
  57. package/dist/chunk-6RJVTUWI.js +16 -0
  58. package/dist/chunk-6SMM5CMP.js +100 -0
  59. package/dist/chunk-6USL33ZO.js +289 -0
  60. package/dist/chunk-7ZE5JFAZ.js +760 -0
  61. package/dist/chunk-AKPXMCVF.js +1373 -0
  62. package/dist/chunk-AO4CXI37.js +284 -0
  63. package/dist/chunk-APJIC2O5.js +150 -0
  64. package/dist/chunk-B4GQTZMT.js +607 -0
  65. package/dist/chunk-BFVPLGAC.js +93 -0
  66. package/dist/chunk-BOV4K7FP.js +588 -0
  67. package/dist/chunk-CFMSB6ST.js +59 -0
  68. package/dist/chunk-CFXB5SE5.js +502 -0
  69. package/dist/chunk-CRQORMFF.js +32 -0
  70. package/dist/chunk-CRSLDQOA.js +146 -0
  71. package/dist/chunk-CRW3636S.js +214 -0
  72. package/dist/chunk-D3UTL2QX.js +86 -0
  73. package/dist/chunk-D7TCSOAZ.js +331 -0
  74. package/dist/chunk-DDXS2RDZ.js +228 -0
  75. package/dist/chunk-DICVLZHH.js +144 -0
  76. package/dist/chunk-DNQN74CC.js +1186 -0
  77. package/dist/chunk-DTK5NBTV.js +912 -0
  78. package/dist/chunk-E72U7WW7.js +50 -0
  79. package/dist/chunk-EBACIBJP.js +356 -0
  80. package/dist/chunk-ECFLCY5V.js +530 -0
  81. package/dist/chunk-EORRZP3F.js +109 -0
  82. package/dist/chunk-F43AMWLZ.js +115 -0
  83. package/dist/chunk-F46N43MG.js +56 -0
  84. package/dist/chunk-F6TVBCZV.js +51 -0
  85. package/dist/chunk-FRIMDSRU.js +242 -0
  86. package/dist/chunk-FTAEPAVY.js +314 -0
  87. package/dist/chunk-GC55DMZV.js +156 -0
  88. package/dist/chunk-GCMH5P4W.js +422 -0
  89. package/dist/chunk-GDQQNPBP.js +251 -0
  90. package/dist/chunk-GKZYTPN2.js +279 -0
  91. package/dist/chunk-GLWTWEGX.js +272 -0
  92. package/dist/chunk-GMUCSNUD.js +586 -0
  93. package/dist/chunk-GTP2KPLY.js +167 -0
  94. package/dist/chunk-GW5YDCRZ.js +42 -0
  95. package/dist/chunk-H3T4EF5F.js +87 -0
  96. package/dist/chunk-HAEU6OTS.js +381 -0
  97. package/dist/chunk-HQIJGQYU.js +172 -0
  98. package/dist/chunk-HW2TBXVK.js +34 -0
  99. package/dist/chunk-HWD22O6F.js +94 -0
  100. package/dist/chunk-I3NTAIMF.js +280 -0
  101. package/dist/chunk-IN42UISW.js +372 -0
  102. package/dist/chunk-IWUIOLMF.js +82 -0
  103. package/dist/chunk-J7ZE2JKP.js +283 -0
  104. package/dist/chunk-JBLVBO3U.js +109 -0
  105. package/dist/chunk-JDWXC2OQ.js +800 -0
  106. package/dist/chunk-JGDIO2NF.js +74 -0
  107. package/dist/chunk-JHGWGH2C.js +182 -0
  108. package/dist/chunk-JLCPHVBN.js +42 -0
  109. package/dist/chunk-JO5ANTMR.js +6027 -0
  110. package/dist/chunk-JPXSFZFC.js +100 -0
  111. package/dist/chunk-JQCRCDOC.js +1195 -0
  112. package/dist/chunk-K4FSYBSY.js +41 -0
  113. package/dist/chunk-K56D3X7S.js +1225 -0
  114. package/dist/chunk-KI7C6ZOD.js +92 -0
  115. package/dist/chunk-KO64OFSG.js +58 -0
  116. package/dist/chunk-KQJHVJZB.js +227 -0
  117. package/dist/chunk-KTWV5JC5.js +59 -0
  118. package/dist/chunk-L4XXW6Y5.js +374 -0
  119. package/dist/chunk-L5GOCMZP.js +18 -0
  120. package/dist/chunk-LDABZV5V.js +278 -0
  121. package/dist/chunk-LHHKPGLX.js +903 -0
  122. package/dist/chunk-LL7LBRDL.js +60 -0
  123. package/dist/chunk-LQTVYUT3.js +421 -0
  124. package/dist/chunk-LVIM2PA7.js +663 -0
  125. package/dist/chunk-M4AIK2SP.js +215 -0
  126. package/dist/chunk-MLUIOBKL.js +420 -0
  127. package/dist/chunk-MOJL4X4L.js +47 -0
  128. package/dist/chunk-MVONSJEN.js +300 -0
  129. package/dist/chunk-N7G2X2LK.js +709 -0
  130. package/dist/chunk-NKFKOEYX.js +146 -0
  131. package/dist/chunk-NMNOAFFT.js +167 -0
  132. package/dist/chunk-NSIKYD3X.js +74 -0
  133. package/dist/chunk-O7EFPSMC.js +60 -0
  134. package/dist/chunk-O7S3HYE6.js +210 -0
  135. package/dist/chunk-OEYW3JE3.js +262 -0
  136. package/dist/chunk-OF3K3CU5.js +159 -0
  137. package/dist/chunk-OMZYPQVA.js +298 -0
  138. package/dist/chunk-OZMX3E35.js +248 -0
  139. package/dist/chunk-P277M7Z5.js +303 -0
  140. package/dist/chunk-P4CPRJLI.js +65 -0
  141. package/dist/chunk-PBIPV4LD.js +494 -0
  142. package/dist/chunk-PGNALDEH.js +2003 -0
  143. package/dist/chunk-PGWW3DVE.js +157 -0
  144. package/dist/chunk-QB4VWH7W.js +515 -0
  145. package/dist/chunk-QBCGAIU7.js +120 -0
  146. package/dist/chunk-QIU3FJPC.js +99 -0
  147. package/dist/chunk-QLRTQHTR.js +744 -0
  148. package/dist/chunk-QTDGRZMZ.js +171 -0
  149. package/dist/chunk-RBOQJFIZ.js +183 -0
  150. package/dist/chunk-RDGM4RUE.js +178 -0
  151. package/dist/chunk-RM5JDRCW.js +71 -0
  152. package/dist/chunk-RM5QMOFY.js +189 -0
  153. package/dist/chunk-RMLTVKOY.js +588 -0
  154. package/dist/chunk-RVY34HK4.js +79 -0
  155. package/dist/chunk-S3YWTBXL.js +43 -0
  156. package/dist/chunk-SJOS5PM6.js +64 -0
  157. package/dist/chunk-SOPYWTFV.js +90 -0
  158. package/dist/chunk-SQIBPLLV.js +15 -0
  159. package/dist/chunk-SRZIA6B4.js +136 -0
  160. package/dist/chunk-SYBNJZEL.js +250 -0
  161. package/dist/chunk-TFZEFIQT.js +17 -0
  162. package/dist/chunk-THZBFYAH.js +136 -0
  163. package/dist/chunk-TJLC3QAS.js +83 -0
  164. package/dist/chunk-TYF4GJR3.js +598 -0
  165. package/dist/chunk-UDQT5CWK.js +252 -0
  166. package/dist/chunk-UOHZQIVL.js +168 -0
  167. package/dist/chunk-URNQUECO.js +187 -0
  168. package/dist/chunk-UT2TYK2A.js +148 -0
  169. package/dist/chunk-UT5BOJKU.js +190 -0
  170. package/dist/chunk-V7GDHHBL.js +526 -0
  171. package/dist/chunk-VCSRBS47.js +133 -0
  172. package/dist/chunk-VIBENDE3.js +152 -0
  173. package/dist/chunk-VTQL23UM.js +302 -0
  174. package/dist/chunk-W3KHJNSH.js +281 -0
  175. package/dist/chunk-W6NU7ZAV.js +52 -0
  176. package/dist/chunk-WHFDDZHY.js +407 -0
  177. package/dist/chunk-WJWYRBWH.js +48 -0
  178. package/dist/chunk-WKMBK5UP.js +145 -0
  179. package/dist/chunk-WQMSRO4D.js +489 -0
  180. package/dist/chunk-WV6YJGZR.js +81 -0
  181. package/dist/chunk-WVAQYKGL.js +269 -0
  182. package/dist/chunk-X7A22JHP.js +106 -0
  183. package/dist/chunk-XFPNU42I.js +59 -0
  184. package/dist/chunk-YH6UIHNF.js +161 -0
  185. package/dist/chunk-YPQFSFYK.js +19 -0
  186. package/dist/chunk-YTQFOZRZ.js +110 -0
  187. package/dist/chunk-ZJK25VFP.js +506 -0
  188. package/dist/chunk-ZOSK2UEU.js +1555 -0
  189. package/dist/chunk-ZYSN7AWW.js +336 -0
  190. package/dist/chunk-ZZ2CNCXJ.js +282 -0
  191. package/dist/command-panel-runtime.d.ts +33 -0
  192. package/dist/command-panel-runtime.d.ts.map +1 -0
  193. package/dist/command-panel-runtime.js +80 -0
  194. package/dist/compact-cache-command-runtime.d.ts +38 -0
  195. package/dist/compact-cache-command-runtime.d.ts.map +1 -0
  196. package/dist/compact-cache-command-runtime.js +146 -0
  197. package/dist/compact-context.d.ts +35 -0
  198. package/dist/compact-context.d.ts.map +1 -0
  199. package/dist/compact-context.js +16 -0
  200. package/dist/compact-preflight-runtime.d.ts +46 -0
  201. package/dist/compact-preflight-runtime.d.ts.map +1 -0
  202. package/dist/compact-preflight-runtime.js +62 -0
  203. package/dist/connector-runtime.d.ts +72 -0
  204. package/dist/connector-runtime.d.ts.map +1 -0
  205. package/dist/connector-runtime.js +88 -0
  206. package/dist/context-estimator.d.ts +20 -0
  207. package/dist/context-estimator.d.ts.map +1 -0
  208. package/dist/context-estimator.js +18 -0
  209. package/dist/context-window-runtime.d.ts +12 -0
  210. package/dist/context-window-runtime.d.ts.map +1 -0
  211. package/dist/context-window-runtime.js +10 -0
  212. package/dist/deep-compact-runtime.d.ts +53 -0
  213. package/dist/deep-compact-runtime.d.ts.map +1 -0
  214. package/dist/deep-compact-runtime.js +35 -0
  215. package/dist/deferred-tools-catalog.d.ts +52 -0
  216. package/dist/deferred-tools-catalog.d.ts.map +1 -0
  217. package/dist/deferred-tools-catalog.js +42 -0
  218. package/dist/details-status-runtime.d.ts +48 -0
  219. package/dist/details-status-runtime.d.ts.map +1 -0
  220. package/dist/details-status-runtime.js +102 -0
  221. package/dist/evidence-runtime.d.ts +48 -0
  222. package/dist/evidence-runtime.d.ts.map +1 -0
  223. package/dist/evidence-runtime.js +92 -0
  224. package/dist/extension-command-runtime.d.ts +63 -0
  225. package/dist/extension-command-runtime.d.ts.map +1 -0
  226. package/dist/extension-command-runtime.js +67 -0
  227. package/dist/extension-slash-runtime.d.ts +11 -0
  228. package/dist/extension-slash-runtime.d.ts.map +1 -0
  229. package/dist/extension-slash-runtime.js +79 -0
  230. package/dist/external-editor-runtime.d.ts +32 -0
  231. package/dist/external-editor-runtime.d.ts.map +1 -0
  232. package/dist/external-editor-runtime.js +71 -0
  233. package/dist/failure-learning-command-runtime.d.ts +10 -0
  234. package/dist/failure-learning-command-runtime.d.ts.map +1 -0
  235. package/dist/failure-learning-command-runtime.js +78 -0
  236. package/dist/failure-learning-presenter.d.ts +6 -0
  237. package/dist/failure-learning-presenter.d.ts.map +1 -0
  238. package/dist/failure-learning-presenter.js +12 -0
  239. package/dist/failure-learning-runtime.d.ts +39 -0
  240. package/dist/failure-learning-runtime.d.ts.map +1 -0
  241. package/dist/failure-learning-runtime.js +39 -0
  242. package/dist/feature-flag-runtime.d.ts +8 -0
  243. package/dist/feature-flag-runtime.d.ts.map +1 -0
  244. package/dist/feature-flag-runtime.js +12 -0
  245. package/dist/feishu-long-connection-runtime.d.ts +12 -0
  246. package/dist/feishu-long-connection-runtime.d.ts.map +1 -0
  247. package/dist/feishu-long-connection-runtime.js +7 -0
  248. package/dist/final-answer-gate.d.ts +24 -0
  249. package/dist/final-answer-gate.d.ts.map +1 -0
  250. package/dist/final-answer-gate.js +26 -0
  251. package/dist/ghost-text.d.ts +16 -0
  252. package/dist/ghost-text.d.ts.map +1 -0
  253. package/dist/ghost-text.js +8 -0
  254. package/dist/git-branch-runtime.d.ts +14 -0
  255. package/dist/git-branch-runtime.d.ts.map +1 -0
  256. package/dist/git-branch-runtime.js +68 -0
  257. package/dist/git-command-runtime.d.ts +22 -0
  258. package/dist/git-command-runtime.d.ts.map +1 -0
  259. package/dist/git-command-runtime.js +89 -0
  260. package/dist/git-operation-runtime.d.ts +188 -0
  261. package/dist/git-operation-runtime.d.ts.map +1 -0
  262. package/dist/git-operation-runtime.js +45 -0
  263. package/dist/git-runtime.d.ts +113 -0
  264. package/dist/git-runtime.d.ts.map +1 -0
  265. package/dist/git-runtime.js +16 -0
  266. package/dist/git-slash-runtime.d.ts +38 -0
  267. package/dist/git-slash-runtime.d.ts.map +1 -0
  268. package/dist/git-slash-runtime.js +18 -0
  269. package/dist/git-tool-dispatch-runtime.d.ts +108 -0
  270. package/dist/git-tool-dispatch-runtime.d.ts.map +1 -0
  271. package/dist/git-tool-dispatch-runtime.js +25 -0
  272. package/dist/git-tool-runtime.d.ts +64 -0
  273. package/dist/git-tool-runtime.d.ts.map +1 -0
  274. package/dist/git-tool-runtime.js +36 -0
  275. package/dist/guard-wiring.d.ts +67 -0
  276. package/dist/guard-wiring.d.ts.map +1 -0
  277. package/dist/guard-wiring.js +21 -0
  278. package/dist/handoff-session-runtime.d.ts +11 -0
  279. package/dist/handoff-session-runtime.d.ts.map +1 -0
  280. package/dist/handoff-session-runtime.js +36 -0
  281. package/dist/index-result-presenter.d.ts +14 -0
  282. package/dist/index-result-presenter.d.ts.map +1 -0
  283. package/dist/index-result-presenter.js +28 -0
  284. package/dist/index-runtime.d.ts +64 -0
  285. package/dist/index-runtime.d.ts.map +1 -0
  286. package/dist/index-runtime.js +28 -0
  287. package/dist/index-tool-runtime.d.ts +44 -0
  288. package/dist/index-tool-runtime.d.ts.map +1 -0
  289. package/dist/index-tool-runtime.js +24 -0
  290. package/dist/index.d.ts +57 -0
  291. package/dist/index.d.ts.map +1 -0
  292. package/dist/index.js +2346 -0
  293. package/dist/job-agent-command-runtime.d.ts +127 -0
  294. package/dist/job-agent-command-runtime.d.ts.map +1 -0
  295. package/dist/job-agent-command-runtime.js +138 -0
  296. package/dist/job-runner-presenter.d.ts +32 -0
  297. package/dist/job-runner-presenter.d.ts.map +1 -0
  298. package/dist/job-runner-presenter.js +30 -0
  299. package/dist/job-runtime.d.ts +65 -0
  300. package/dist/job-runtime.d.ts.map +1 -0
  301. package/dist/job-runtime.js +88 -0
  302. package/dist/keybinding-runtime.d.ts +29 -0
  303. package/dist/keybinding-runtime.d.ts.map +1 -0
  304. package/dist/keybinding-runtime.js +14 -0
  305. package/dist/log-artifact.d.ts +55 -0
  306. package/dist/log-artifact.d.ts.map +1 -0
  307. package/dist/log-artifact.js +10 -0
  308. package/dist/mcp-index-command-runtime.d.ts +21 -0
  309. package/dist/mcp-index-command-runtime.d.ts.map +1 -0
  310. package/dist/mcp-index-command-runtime.js +18 -0
  311. package/dist/mcp-index-runtime.d.ts +106 -0
  312. package/dist/mcp-index-runtime.d.ts.map +1 -0
  313. package/dist/mcp-index-runtime.js +142 -0
  314. package/dist/mcp-sse-runtime.d.ts +13 -0
  315. package/dist/mcp-sse-runtime.d.ts.map +1 -0
  316. package/dist/mcp-sse-runtime.js +8 -0
  317. package/dist/mcp-stdio-runtime.d.ts +37 -0
  318. package/dist/mcp-stdio-runtime.d.ts.map +1 -0
  319. package/dist/mcp-stdio-runtime.js +15 -0
  320. package/dist/memory-command-runtime.d.ts +37 -0
  321. package/dist/memory-command-runtime.d.ts.map +1 -0
  322. package/dist/memory-command-runtime.js +88 -0
  323. package/dist/memory-eviction-runtime.d.ts +7 -0
  324. package/dist/memory-eviction-runtime.d.ts.map +1 -0
  325. package/dist/memory-eviction-runtime.js +12 -0
  326. package/dist/memory-extraction-runtime.d.ts +40 -0
  327. package/dist/memory-extraction-runtime.d.ts.map +1 -0
  328. package/dist/memory-extraction-runtime.js +20 -0
  329. package/dist/memory-rules-runtime.d.ts +15 -0
  330. package/dist/memory-rules-runtime.d.ts.map +1 -0
  331. package/dist/memory-rules-runtime.js +14 -0
  332. package/dist/meta-scheduler-complexity.d.ts +16 -0
  333. package/dist/meta-scheduler-complexity.d.ts.map +1 -0
  334. package/dist/meta-scheduler-complexity.js +37 -0
  335. package/dist/meta-scheduler-runtime.d.ts +288 -0
  336. package/dist/meta-scheduler-runtime.d.ts.map +1 -0
  337. package/dist/meta-scheduler-runtime.js +17 -0
  338. package/dist/model-command-runtime.d.ts +12 -0
  339. package/dist/model-command-runtime.d.ts.map +1 -0
  340. package/dist/model-command-runtime.js +84 -0
  341. package/dist/model-doctor-runtime.d.ts +81 -0
  342. package/dist/model-doctor-runtime.d.ts.map +1 -0
  343. package/dist/model-doctor-runtime.js +46 -0
  344. package/dist/model-loop-runtime.d.ts +189 -0
  345. package/dist/model-loop-runtime.d.ts.map +1 -0
  346. package/dist/model-loop-runtime.js +141 -0
  347. package/dist/model-prompt-runtime.d.ts +25 -0
  348. package/dist/model-prompt-runtime.d.ts.map +1 -0
  349. package/dist/model-prompt-runtime.js +33 -0
  350. package/dist/model-setup-runtime.d.ts +28 -0
  351. package/dist/model-setup-runtime.d.ts.map +1 -0
  352. package/dist/model-setup-runtime.js +26 -0
  353. package/dist/model-stream-runtime.d.ts +47 -0
  354. package/dist/model-stream-runtime.d.ts.map +1 -0
  355. package/dist/model-stream-runtime.js +136 -0
  356. package/dist/model-tool-runtime.d.ts +114 -0
  357. package/dist/model-tool-runtime.d.ts.map +1 -0
  358. package/dist/model-tool-runtime.js +144 -0
  359. package/dist/natural-command-bridge.d.ts +158 -0
  360. package/dist/natural-command-bridge.d.ts.map +1 -0
  361. package/dist/natural-command-bridge.js +36 -0
  362. package/dist/pending-details-presenter.d.ts +8 -0
  363. package/dist/pending-details-presenter.d.ts.map +1 -0
  364. package/dist/pending-details-presenter.js +12 -0
  365. package/dist/permission-approval-runtime.d.ts +28 -0
  366. package/dist/permission-approval-runtime.d.ts.map +1 -0
  367. package/dist/permission-approval-runtime.js +136 -0
  368. package/dist/permission-continuation-runtime.d.ts +90 -0
  369. package/dist/permission-continuation-runtime.d.ts.map +1 -0
  370. package/dist/permission-continuation-runtime.js +68 -0
  371. package/dist/permission-policy-engine.d.ts +51 -0
  372. package/dist/permission-policy-engine.d.ts.map +1 -0
  373. package/dist/permission-policy-engine.js +12 -0
  374. package/dist/permission-presenter.d.ts +13 -0
  375. package/dist/permission-presenter.d.ts.map +1 -0
  376. package/dist/permission-presenter.js +8 -0
  377. package/dist/persistent-history.d.ts +18 -0
  378. package/dist/persistent-history.d.ts.map +1 -0
  379. package/dist/persistent-history.js +126 -0
  380. package/dist/platform-security.d.ts +4 -0
  381. package/dist/platform-security.d.ts.map +1 -0
  382. package/dist/platform-security.js +10 -0
  383. package/dist/process-command-runtime.d.ts +9 -0
  384. package/dist/process-command-runtime.d.ts.map +1 -0
  385. package/dist/process-command-runtime.js +11 -0
  386. package/dist/process-guard.d.ts +56 -0
  387. package/dist/process-guard.d.ts.map +1 -0
  388. package/dist/process-guard.js +22 -0
  389. package/dist/prompt-command-runtime.d.ts +12 -0
  390. package/dist/prompt-command-runtime.d.ts.map +1 -0
  391. package/dist/prompt-command-runtime.js +10 -0
  392. package/dist/prompt-stash.d.ts +15 -0
  393. package/dist/prompt-stash.d.ts.map +1 -0
  394. package/dist/prompt-stash.js +8 -0
  395. package/dist/provider-circuit-breaker.d.ts +132 -0
  396. package/dist/provider-circuit-breaker.d.ts.map +1 -0
  397. package/dist/provider-circuit-breaker.js +31 -0
  398. package/dist/provider-loop-runtime.d.ts +18 -0
  399. package/dist/provider-loop-runtime.d.ts.map +1 -0
  400. package/dist/provider-loop-runtime.js +16 -0
  401. package/dist/remote-command-runtime.d.ts +47 -0
  402. package/dist/remote-command-runtime.d.ts.map +1 -0
  403. package/dist/remote-command-runtime.js +125 -0
  404. package/dist/remote-inbound-bridge-runtime.d.ts +152 -0
  405. package/dist/remote-inbound-bridge-runtime.d.ts.map +1 -0
  406. package/dist/remote-inbound-bridge-runtime.js +44 -0
  407. package/dist/remote-mcp-presenter.d.ts +5 -0
  408. package/dist/remote-mcp-presenter.d.ts.map +1 -0
  409. package/dist/remote-mcp-presenter.js +10 -0
  410. package/dist/remote-repl-bridge-runtime.d.ts +134 -0
  411. package/dist/remote-repl-bridge-runtime.d.ts.map +1 -0
  412. package/dist/remote-repl-bridge-runtime.js +20 -0
  413. package/dist/remote-transport.d.ts +50 -0
  414. package/dist/remote-transport.d.ts.map +1 -0
  415. package/dist/remote-transport.js +14 -0
  416. package/dist/request-lifecycle-presenter.d.ts +25 -0
  417. package/dist/request-lifecycle-presenter.d.ts.map +1 -0
  418. package/dist/request-lifecycle-presenter.js +22 -0
  419. package/dist/runner-runtime.d.ts +41 -0
  420. package/dist/runner-runtime.d.ts.map +1 -0
  421. package/dist/runner-runtime.js +35 -0
  422. package/dist/runtime-budget.d.ts +38 -0
  423. package/dist/runtime-budget.d.ts.map +1 -0
  424. package/dist/runtime-budget.js +78 -0
  425. package/dist/runtime-path-marker.d.ts +112 -0
  426. package/dist/runtime-path-marker.d.ts.map +1 -0
  427. package/dist/runtime-path-marker.js +18 -0
  428. package/dist/runtime-status-presenter.d.ts +22 -0
  429. package/dist/runtime-status-presenter.d.ts.map +1 -0
  430. package/dist/runtime-status-presenter.js +15 -0
  431. package/dist/runtime-status-snapshot.d.ts +52 -0
  432. package/dist/runtime-status-snapshot.d.ts.map +1 -0
  433. package/dist/runtime-status-snapshot.js +11 -0
  434. package/dist/runtime-utils.d.ts +2 -0
  435. package/dist/runtime-utils.d.ts.map +1 -0
  436. package/dist/runtime-utils.js +6 -0
  437. package/dist/shell/clipboard.d.ts +23 -0
  438. package/dist/shell/clipboard.d.ts.map +1 -0
  439. package/dist/shell/clipboard.js +8 -0
  440. package/dist/shell/components/AgentProgressTree.d.ts +9 -0
  441. package/dist/shell/components/AgentProgressTree.d.ts.map +1 -0
  442. package/dist/shell/components/AgentProgressTree.js +9 -0
  443. package/dist/shell/components/BackgroundTaskOverlay.d.ts +8 -0
  444. package/dist/shell/components/BackgroundTaskOverlay.d.ts.map +1 -0
  445. package/dist/shell/components/BackgroundTaskOverlay.js +8 -0
  446. package/dist/shell/components/BtwPanel.d.ts +16 -0
  447. package/dist/shell/components/BtwPanel.d.ts.map +1 -0
  448. package/dist/shell/components/BtwPanel.js +8 -0
  449. package/dist/shell/components/CommandPanel.d.ts +11 -0
  450. package/dist/shell/components/CommandPanel.d.ts.map +1 -0
  451. package/dist/shell/components/CommandPanel.js +8 -0
  452. package/dist/shell/components/Composer.d.ts +187 -0
  453. package/dist/shell/components/Composer.d.ts.map +1 -0
  454. package/dist/shell/components/Composer.js +99 -0
  455. package/dist/shell/components/ConfigPanel.d.ts +11 -0
  456. package/dist/shell/components/ConfigPanel.d.ts.map +1 -0
  457. package/dist/shell/components/ConfigPanel.js +8 -0
  458. package/dist/shell/components/CtrlOToExpand.d.ts +30 -0
  459. package/dist/shell/components/CtrlOToExpand.d.ts.map +1 -0
  460. package/dist/shell/components/CtrlOToExpand.js +16 -0
  461. package/dist/shell/components/HelpPanel.d.ts +19 -0
  462. package/dist/shell/components/HelpPanel.d.ts.map +1 -0
  463. package/dist/shell/components/HelpPanel.js +8 -0
  464. package/dist/shell/components/HistorySearchPanel.d.ts +14 -0
  465. package/dist/shell/components/HistorySearchPanel.d.ts.map +1 -0
  466. package/dist/shell/components/HistorySearchPanel.js +104 -0
  467. package/dist/shell/components/MessageMarkdown.d.ts +34 -0
  468. package/dist/shell/components/MessageMarkdown.d.ts.map +1 -0
  469. package/dist/shell/components/MessageMarkdown.js +18 -0
  470. package/dist/shell/components/MessageResponse.d.ts +14 -0
  471. package/dist/shell/components/MessageResponse.d.ts.map +1 -0
  472. package/dist/shell/components/MessageResponse.js +6 -0
  473. package/dist/shell/components/MouseInputRouter.d.ts +28 -0
  474. package/dist/shell/components/MouseInputRouter.d.ts.map +1 -0
  475. package/dist/shell/components/MouseInputRouter.js +84 -0
  476. package/dist/shell/components/NotificationStack.d.ts +19 -0
  477. package/dist/shell/components/NotificationStack.d.ts.map +1 -0
  478. package/dist/shell/components/NotificationStack.js +6 -0
  479. package/dist/shell/components/OutputLine.d.ts +19 -0
  480. package/dist/shell/components/OutputLine.d.ts.map +1 -0
  481. package/dist/shell/components/OutputLine.js +38 -0
  482. package/dist/shell/components/ProductBlock.d.ts +10 -0
  483. package/dist/shell/components/ProductBlock.d.ts.map +1 -0
  484. package/dist/shell/components/ProductBlock.js +12 -0
  485. package/dist/shell/components/ScrollViewport.d.ts +43 -0
  486. package/dist/shell/components/ScrollViewport.d.ts.map +1 -0
  487. package/dist/shell/components/ScrollViewport.js +86 -0
  488. package/dist/shell/components/SessionsPanel.d.ts +24 -0
  489. package/dist/shell/components/SessionsPanel.d.ts.map +1 -0
  490. package/dist/shell/components/SessionsPanel.js +8 -0
  491. package/dist/shell/components/ShellApp.d.ts +8 -0
  492. package/dist/shell/components/ShellApp.d.ts.map +1 -0
  493. package/dist/shell/components/ShellApp.js +45 -0
  494. package/dist/shell/components/ShortcutPanel.d.ts +14 -0
  495. package/dist/shell/components/ShortcutPanel.d.ts.map +1 -0
  496. package/dist/shell/components/ShortcutPanel.js +59 -0
  497. package/dist/shell/components/SlashSuggestions.d.ts +24 -0
  498. package/dist/shell/components/SlashSuggestions.d.ts.map +1 -0
  499. package/dist/shell/components/SlashSuggestions.js +7 -0
  500. package/dist/shell/components/StatusFooter.d.ts +30 -0
  501. package/dist/shell/components/StatusFooter.d.ts.map +1 -0
  502. package/dist/shell/components/StatusFooter.js +7 -0
  503. package/dist/shell/components/StatusTray.d.ts +9 -0
  504. package/dist/shell/components/StatusTray.d.ts.map +1 -0
  505. package/dist/shell/components/StatusTray.js +6 -0
  506. package/dist/shell/components/StructuredDiff.d.ts +9 -0
  507. package/dist/shell/components/StructuredDiff.d.ts.map +1 -0
  508. package/dist/shell/components/StructuredDiff.js +7 -0
  509. package/dist/shell/components/TaskListView.d.ts +9 -0
  510. package/dist/shell/components/TaskListView.d.ts.map +1 -0
  511. package/dist/shell/components/TaskListView.js +9 -0
  512. package/dist/shell/components/TaskSuggestionBar.d.ts +15 -0
  513. package/dist/shell/components/TaskSuggestionBar.d.ts.map +1 -0
  514. package/dist/shell/components/TaskSuggestionBar.js +8 -0
  515. package/dist/shell/components/UnseenMessagePill.d.ts +12 -0
  516. package/dist/shell/components/UnseenMessagePill.d.ts.map +1 -0
  517. package/dist/shell/components/UnseenMessagePill.js +6 -0
  518. package/dist/shell/components/WorkflowProgressView.d.ts +9 -0
  519. package/dist/shell/components/WorkflowProgressView.d.ts.map +1 -0
  520. package/dist/shell/components/WorkflowProgressView.js +9 -0
  521. package/dist/shell/components/useAnchoredCursor.d.ts +32 -0
  522. package/dist/shell/components/useAnchoredCursor.d.ts.map +1 -0
  523. package/dist/shell/components/useAnchoredCursor.js +6 -0
  524. package/dist/shell/hooks/useRenderThrottle.d.ts +2 -0
  525. package/dist/shell/hooks/useRenderThrottle.d.ts.map +1 -0
  526. package/dist/shell/hooks/useRenderThrottle.js +35 -0
  527. package/dist/shell/hooks/useScrollBatcher.d.ts +10 -0
  528. package/dist/shell/hooks/useScrollBatcher.d.ts.map +1 -0
  529. package/dist/shell/hooks/useScrollBatcher.js +23 -0
  530. package/dist/shell/hooks/useScrollRuntime.d.ts +2 -0
  531. package/dist/shell/hooks/useScrollRuntime.d.ts.map +1 -0
  532. package/dist/shell/hooks/useScrollRuntime.js +6 -0
  533. package/dist/shell/hyperlink-utils.d.ts +18 -0
  534. package/dist/shell/hyperlink-utils.d.ts.map +1 -0
  535. package/dist/shell/hyperlink-utils.js +8 -0
  536. package/dist/shell/ink-renderer.d.ts +18 -0
  537. package/dist/shell/ink-renderer.d.ts.map +1 -0
  538. package/dist/shell/ink-renderer.js +54 -0
  539. package/dist/shell/models/command-transcript-presenter.d.ts +73 -0
  540. package/dist/shell/models/command-transcript-presenter.d.ts.map +1 -0
  541. package/dist/shell/models/command-transcript-presenter.js +26 -0
  542. package/dist/shell/models/help-panel.d.ts +37 -0
  543. package/dist/shell/models/help-panel.d.ts.map +1 -0
  544. package/dist/shell/models/help-panel.js +10 -0
  545. package/dist/shell/models/permission-elevation.d.ts +65 -0
  546. package/dist/shell/models/permission-elevation.d.ts.map +1 -0
  547. package/dist/shell/models/permission-elevation.js +10 -0
  548. package/dist/shell/models/permission-explanation.d.ts +45 -0
  549. package/dist/shell/models/permission-explanation.d.ts.map +1 -0
  550. package/dist/shell/models/permission-explanation.js +14 -0
  551. package/dist/shell/models/session-panel.d.ts +22 -0
  552. package/dist/shell/models/session-panel.d.ts.map +1 -0
  553. package/dist/shell/models/session-panel.js +18 -0
  554. package/dist/shell/models/task-scroll-state.d.ts +24 -0
  555. package/dist/shell/models/task-scroll-state.d.ts.map +1 -0
  556. package/dist/shell/models/task-scroll-state.js +26 -0
  557. package/dist/shell/models/terminal-input-runtime.d.ts +37 -0
  558. package/dist/shell/models/terminal-input-runtime.d.ts.map +1 -0
  559. package/dist/shell/models/terminal-input-runtime.js +18 -0
  560. package/dist/shell/models/transcript-scroll-state.d.ts +57 -0
  561. package/dist/shell/models/transcript-scroll-state.d.ts.map +1 -0
  562. package/dist/shell/models/transcript-scroll-state.js +12 -0
  563. package/dist/shell/models/transcript-selection-state.d.ts +39 -0
  564. package/dist/shell/models/transcript-selection-state.d.ts.map +1 -0
  565. package/dist/shell/models/transcript-selection-state.js +25 -0
  566. package/dist/shell/models/wheel-acceleration.d.ts +52 -0
  567. package/dist/shell/models/wheel-acceleration.d.ts.map +1 -0
  568. package/dist/shell/models/wheel-acceleration.js +6 -0
  569. package/dist/shell/output-utils.d.ts +22 -0
  570. package/dist/shell/output-utils.d.ts.map +1 -0
  571. package/dist/shell/output-utils.js +12 -0
  572. package/dist/shell/plain-renderer.d.ts +12 -0
  573. package/dist/shell/plain-renderer.d.ts.map +1 -0
  574. package/dist/shell/plain-renderer.js +13 -0
  575. package/dist/shell/progress-views.d.ts +10 -0
  576. package/dist/shell/progress-views.d.ts.map +1 -0
  577. package/dist/shell/progress-views.js +17 -0
  578. package/dist/shell/stdout-flush-barrier.d.ts +39 -0
  579. package/dist/shell/stdout-flush-barrier.d.ts.map +1 -0
  580. package/dist/shell/stdout-flush-barrier.js +10 -0
  581. package/dist/shell/terminal-capability.d.ts +54 -0
  582. package/dist/shell/terminal-capability.d.ts.map +1 -0
  583. package/dist/shell/terminal-capability.js +10 -0
  584. package/dist/shell/terminal-interaction-runtime.d.ts +11 -0
  585. package/dist/shell/terminal-interaction-runtime.d.ts.map +1 -0
  586. package/dist/shell/terminal-interaction-runtime.js +38 -0
  587. package/dist/shell/terminal-state-recovery.d.ts +52 -0
  588. package/dist/shell/terminal-state-recovery.d.ts.map +1 -0
  589. package/dist/shell/terminal-state-recovery.js +11 -0
  590. package/dist/shell/text-utils.d.ts +40 -0
  591. package/dist/shell/text-utils.d.ts.map +1 -0
  592. package/dist/shell/text-utils.js +26 -0
  593. package/dist/shell/theme.d.ts +41 -0
  594. package/dist/shell/theme.d.ts.map +1 -0
  595. package/dist/shell/theme.js +8 -0
  596. package/dist/shell/types.d.ts +784 -0
  597. package/dist/shell/types.d.ts.map +1 -0
  598. package/dist/shell/types.js +0 -0
  599. package/dist/shell/view-model.d.ts +82 -0
  600. package/dist/shell/view-model.d.ts.map +1 -0
  601. package/dist/shell/view-model.js +48 -0
  602. package/dist/slash-command-runtime.d.ts +64 -0
  603. package/dist/slash-command-runtime.d.ts.map +1 -0
  604. package/dist/slash-command-runtime.js +186 -0
  605. package/dist/slash-dispatch.d.ts +48 -0
  606. package/dist/slash-dispatch.d.ts.map +1 -0
  607. package/dist/slash-dispatch.js +53 -0
  608. package/dist/startup-runtime.d.ts +48 -0
  609. package/dist/startup-runtime.d.ts.map +1 -0
  610. package/dist/startup-runtime.js +43 -0
  611. package/dist/terminal-readiness-presenter.d.ts +131 -0
  612. package/dist/terminal-readiness-presenter.d.ts.map +1 -0
  613. package/dist/terminal-readiness-presenter.js +16 -0
  614. package/dist/terminal-readiness-runtime.d.ts +5 -0
  615. package/dist/terminal-readiness-runtime.d.ts.map +1 -0
  616. package/dist/terminal-readiness-runtime.js +15 -0
  617. package/dist/terminal-setup-runtime.d.ts +34 -0
  618. package/dist/terminal-setup-runtime.d.ts.map +1 -0
  619. package/dist/terminal-setup-runtime.js +257 -0
  620. package/dist/tool-output-presenter.d.ts +38 -0
  621. package/dist/tool-output-presenter.d.ts.map +1 -0
  622. package/dist/tool-output-presenter.js +16 -0
  623. package/dist/tool-result-budget.d.ts +42 -0
  624. package/dist/tool-result-budget.d.ts.map +1 -0
  625. package/dist/tool-result-budget.js +11 -0
  626. package/dist/tui-agent-job-runtime.d.ts +38 -0
  627. package/dist/tui-agent-job-runtime.d.ts.map +1 -0
  628. package/dist/tui-agent-job-runtime.js +86 -0
  629. package/dist/tui-context-runtime.d.ts +426 -0
  630. package/dist/tui-context-runtime.d.ts.map +1 -0
  631. package/dist/tui-context-runtime.js +65 -0
  632. package/dist/tui-data-types.d.ts +923 -0
  633. package/dist/tui-data-types.d.ts.map +1 -0
  634. package/dist/tui-data-types.js +0 -0
  635. package/dist/tui-details-runtime.d.ts +25 -0
  636. package/dist/tui-details-runtime.d.ts.map +1 -0
  637. package/dist/tui-details-runtime.js +29 -0
  638. package/dist/tui-memory-runtime.d.ts +33 -0
  639. package/dist/tui-memory-runtime.d.ts.map +1 -0
  640. package/dist/tui-memory-runtime.js +58 -0
  641. package/dist/tui-messages.d.ts +4 -0
  642. package/dist/tui-messages.d.ts.map +1 -0
  643. package/dist/tui-messages.js +6 -0
  644. package/dist/tui-model-runtime.d.ts +30 -0
  645. package/dist/tui-model-runtime.d.ts.map +1 -0
  646. package/dist/tui-model-runtime.js +39 -0
  647. package/dist/tui-output-surface.d.ts +141 -0
  648. package/dist/tui-output-surface.d.ts.map +1 -0
  649. package/dist/tui-output-surface.js +55 -0
  650. package/dist/tui-permission-runtime.d.ts +62 -0
  651. package/dist/tui-permission-runtime.d.ts.map +1 -0
  652. package/dist/tui-permission-runtime.js +24 -0
  653. package/dist/tui-state-runtime.d.ts +21 -0
  654. package/dist/tui-state-runtime.d.ts.map +1 -0
  655. package/dist/tui-state-runtime.js +47 -0
  656. package/dist/turn-continuity-runtime.d.ts +30 -0
  657. package/dist/turn-continuity-runtime.d.ts.map +1 -0
  658. package/dist/turn-continuity-runtime.js +8 -0
  659. package/dist/undo-ring.d.ts +16 -0
  660. package/dist/undo-ring.d.ts.map +1 -0
  661. package/dist/undo-ring.js +12 -0
  662. package/dist/usage-stats-presenter.d.ts +17 -0
  663. package/dist/usage-stats-presenter.d.ts.map +1 -0
  664. package/dist/usage-stats-presenter.js +22 -0
  665. package/dist/user-state-signal-runtime.d.ts +33 -0
  666. package/dist/user-state-signal-runtime.d.ts.map +1 -0
  667. package/dist/user-state-signal-runtime.js +8 -0
  668. package/dist/verification-command-runtime.d.ts +25 -0
  669. package/dist/verification-command-runtime.d.ts.map +1 -0
  670. package/dist/verification-command-runtime.js +51 -0
  671. package/dist/verification-level.d.ts +93 -0
  672. package/dist/verification-level.d.ts.map +1 -0
  673. package/dist/verification-level.js +18 -0
  674. package/dist/workflow-agent-runtime-bridge.d.ts +169 -0
  675. package/dist/workflow-agent-runtime-bridge.d.ts.map +1 -0
  676. package/dist/workflow-agent-runtime-bridge.js +9 -0
  677. package/dist/workflow-command-runtime.d.ts +94 -0
  678. package/dist/workflow-command-runtime.d.ts.map +1 -0
  679. package/dist/workflow-command-runtime.js +114 -0
  680. package/dist/workflow-plan-schema.d.ts +161 -0
  681. package/dist/workflow-plan-schema.d.ts.map +1 -0
  682. package/dist/workflow-plan-schema.js +12 -0
  683. package/dist/workflow-planner-entry.d.ts +52 -0
  684. package/dist/workflow-planner-entry.d.ts.map +1 -0
  685. package/dist/workflow-planner-entry.js +328 -0
  686. package/dist/workflow-task-surface.d.ts +39 -0
  687. package/dist/workflow-task-surface.d.ts.map +1 -0
  688. package/dist/workflow-task-surface.js +7 -0
  689. package/dist/workspace-reference-cache.d.ts +110 -0
  690. package/dist/workspace-reference-cache.d.ts.map +1 -0
  691. package/dist/workspace-reference-cache.js +12 -0
  692. package/package.json +41 -0
@@ -0,0 +1,1186 @@
1
+ import {
2
+ evaluateUserStateSignal
3
+ } from "./chunk-KQJHVJZB.js";
4
+ import {
5
+ LINGHUN_AGENT_CHILD_TURNS_AGENT,
6
+ LINGHUN_AGENT_CHILD_TURNS_BASE,
7
+ LINGHUN_AGENT_CHILD_TURNS_CODE_FACT,
8
+ LINGHUN_AGENT_CHILD_TURNS_VERIFICATION,
9
+ LINGHUN_AGENT_CHILD_TURNS_WORKFLOW,
10
+ LINGHUN_AGENT_TOOL_ROUNDS_AGENT,
11
+ LINGHUN_AGENT_TOOL_ROUNDS_BASE,
12
+ LINGHUN_AGENT_TOOL_ROUNDS_CODE_FACT,
13
+ LINGHUN_AGENT_TOOL_ROUNDS_VERIFICATION,
14
+ LINGHUN_AGENT_TOOL_ROUNDS_WORKFLOW,
15
+ LINGHUN_BACKGROUND_CONCURRENCY_AGENT,
16
+ LINGHUN_BACKGROUND_CONCURRENCY_BASE,
17
+ LINGHUN_BACKGROUND_CONCURRENCY_CODE_FACT,
18
+ LINGHUN_BACKGROUND_CONCURRENCY_VERIFICATION,
19
+ LINGHUN_BACKGROUND_CONCURRENCY_WORKFLOW,
20
+ LINGHUN_MAX_TODO_ONLY_AGENT,
21
+ LINGHUN_MAX_TODO_ONLY_BASE,
22
+ LINGHUN_MAX_TODO_ONLY_CODE_FACT,
23
+ LINGHUN_MAX_TODO_ONLY_VERIFICATION,
24
+ LINGHUN_MAX_TODO_ONLY_WORKFLOW
25
+ } from "./chunk-IWUIOLMF.js";
26
+ import {
27
+ estimateModelMessageChars
28
+ } from "./chunk-WV6YJGZR.js";
29
+
30
+ // src/meta-scheduler-runtime.ts
31
+ function evaluateMetaScheduler(input) {
32
+ const internalEvents = [];
33
+ const directives = [];
34
+ const userStateSignal = input.userStateDecision ?? evaluateUserStateSignal({
35
+ userText: input.userText,
36
+ repeatedFailureCount: (input.lastToolFailure || input.providerFailure || isRiskyVerificationStatus(input.lastVerificationStatus) ? 1 : 0) + countRecentFailureLearning(input.failureLearning),
37
+ events: [
38
+ ...input.lastToolFailure ? [
39
+ {
40
+ kind: "tool_failure",
41
+ summary: `${input.lastToolFailure.toolName}: ${input.lastToolFailure.summary}`
42
+ }
43
+ ] : [],
44
+ ...input.providerFailure ? [
45
+ {
46
+ kind: "provider_failure",
47
+ summary: `${input.providerFailure.provider}/${input.providerFailure.model}: ${input.providerFailure.message}`
48
+ }
49
+ ] : [],
50
+ ...isRiskyVerificationStatus(input.lastVerificationStatus) ? [
51
+ {
52
+ kind: "verification_failure",
53
+ summary: `last verification ${input.lastVerificationStatus}`
54
+ }
55
+ ] : []
56
+ ],
57
+ loading: input.loading,
58
+ activePrompt: input.activePrompt,
59
+ otherPanelOpen: input.otherPanelOpen,
60
+ dismissedUntilMs: input.userStateDismissedUntilMs,
61
+ cooldownUntilMs: input.userStateCooldownUntilMs,
62
+ policyEnabled: input.userStatePolicyEnabled,
63
+ backgroundTasks: input.backgroundTasks,
64
+ nowMs: input.nowMs
65
+ }).decision;
66
+ const userStateDecision = input.userStateDecision ?? userStateSignal;
67
+ const highRiskClaim = typeof input.assistantText === "string" && hasHighRiskCompletionClaim(input.assistantText);
68
+ const toolFailure = Boolean(input.lastToolFailure);
69
+ const providerFailure = Boolean(input.providerFailure);
70
+ const blockedRuntime = hasActiveBlockedWorkflow(input.workflow);
71
+ const pressure = computeContextPressure(
72
+ input.messages,
73
+ input.estimatedContextChars,
74
+ input.contextMaxChars,
75
+ input.triggerChars
76
+ );
77
+ const indexStrategy = classifyIndexStrategy(input.index);
78
+ const capabilityPlan = createCapabilityPlan(input.userText);
79
+ const classification = classifyTaskKind(input.userText, capabilityPlan, {
80
+ consecutiveFailures: input.consecutiveFailures,
81
+ taskDomainSwitched: input.taskDomainSwitched,
82
+ lastVerificationStatus: input.lastVerificationStatus,
83
+ userStatePersistence: input.userStatePersistence,
84
+ failureLearning: input.failureLearning,
85
+ hasActiveProviderFailure: input.hasActiveProviderFailure
86
+ });
87
+ let taskKind = adjustTaskKindForUserState(classification.primary, userStateDecision);
88
+ if (classification.intentUnclear) {
89
+ taskKind = "chat";
90
+ directives.push("\u7528\u6237\u610F\u56FE\u4E0D\u660E\u786E\uFF0C\u5148\u6F84\u6E05\u518D\u64CD\u4F5C");
91
+ internalEvents.push("meta_scheduler:intent_unclear_clarify");
92
+ }
93
+ if (classification.reason) {
94
+ internalEvents.push(`meta_scheduler:classifier_reason=${classification.reason}`);
95
+ }
96
+ const expectedMutating = userStateDecision.interactionPlan.allowImplementationPush && expectsMutatingAction(input.userText, taskKind, capabilityPlan);
97
+ const verificationDomain = classifyVerificationDomain(input.userText, taskKind, expectedMutating);
98
+ const evidenceFreshness = classifyVerificationEvidenceFreshness(input.evidence, input.nowMs);
99
+ const runtimeSignal = summarizeRuntimeSignal(input, evidenceFreshness);
100
+ const includeFailureLearning = hasActiveFailureLearning(input.failureLearning);
101
+ const failureSignal = summarizeFailureSignal(input.failureLearning);
102
+ let preferSourceFirst = shouldPreferSourceFirst(taskKind, indexStrategy) || userStateDecision.interactionPlan.sourceFactsFirst;
103
+ let requireVerification = highRiskClaim || taskKind === "verification" || expectedMutating || isRiskyVerificationStatus(input.lastVerificationStatus) || userStateDecision.verificationPlan.strength === "strengthened" || userStateDecision.verificationPlan.strength === "release";
104
+ if (classification.secondaries.includes("code_fact")) {
105
+ preferSourceFirst = true;
106
+ }
107
+ if (classification.secondaries.includes("verification")) {
108
+ requireVerification = true;
109
+ }
110
+ const surfaceWindowsSafeHint = shouldSurfaceWindowsSafeHint({
111
+ userText: input.userText,
112
+ taskKind,
113
+ expectedMutating,
114
+ blockedRuntime,
115
+ toolFailure,
116
+ providerFailure,
117
+ providerCooldownBlocked: Boolean(input.providerCooldownBlocked || input.routeProviderCooldown)
118
+ });
119
+ const suggestedRole = highRiskClaim ? "verifier" : taskKind === "workflow" || taskKind === "agent" ? "planner" : void 0;
120
+ const recentDeniedCount = input.recentDeniedCount ?? 0;
121
+ const providerPlan = input.providerCooldownBlocked ? "cooldownBlocked" : providerFailure ? "fallbackCandidate" : "keepCurrent";
122
+ const trustScore = input.trustScore ?? 50;
123
+ const consecutiveFailures = input.consecutiveFailures ?? 0;
124
+ const consecutiveSuccesses = input.consecutiveSuccesses ?? 0;
125
+ const taskDomainSwitched = input.taskDomainSwitched ?? false;
126
+ const userStatePersistence = input.userStatePersistence ?? 1;
127
+ const totalTurns = input.totalTurns ?? 0;
128
+ let adjustedUserStateDecision = userStateDecision;
129
+ let adjustedIncludeFailureLearning = includeFailureLearning;
130
+ let adjustedShouldCompact = pressure.shouldCompact;
131
+ let adjustedRequireVerification = requireVerification;
132
+ let adjustedRequireFinalGate = highRiskClaim || userStateDecision.verificationPlan.forbidEarlyPass;
133
+ let adjustedShouldUseRetryGuard = toolFailure || providerFailure;
134
+ let adjustedVerificationStrength = userStateDecision.verificationPlan.strength;
135
+ if (trustScore < 30 && userStateDecision.kind === "neutral") {
136
+ adjustedUserStateDecision = {
137
+ ...userStateDecision,
138
+ kind: "trust_repair",
139
+ interactionPlan: { ...userStateDecision.interactionPlan, sourceFactsFirst: true, explainFirst: true }
140
+ };
141
+ internalEvents.push("meta_scheduler:continuity_trust_repair_escalation");
142
+ }
143
+ if (consecutiveFailures >= 2) {
144
+ adjustedShouldUseRetryGuard = true;
145
+ internalEvents.push("meta_scheduler:continuity_retry_guard_escalation");
146
+ }
147
+ if (consecutiveSuccesses >= 5 && trustScore > 70) {
148
+ adjustedVerificationStrength = "focused";
149
+ adjustedRequireFinalGate = false;
150
+ internalEvents.push("meta_scheduler:continuity_verification_downgrade");
151
+ }
152
+ if (taskDomainSwitched) {
153
+ adjustedIncludeFailureLearning = false;
154
+ internalEvents.push("meta_scheduler:continuity_domain_switch_failure_reset");
155
+ }
156
+ if (userStatePersistence >= 5) {
157
+ directives.push(
158
+ `User state "${userStateDecision.kind}" persisted for ${userStatePersistence} turns; suppressing repeat hints for 5 minutes.`
159
+ );
160
+ internalEvents.push("meta_scheduler:continuity_user_state_cooldown");
161
+ }
162
+ if (totalTurns > 30) {
163
+ adjustedShouldCompact = true;
164
+ internalEvents.push("meta_scheduler:continuity_long_session_compact");
165
+ }
166
+ if (highRiskClaim) {
167
+ directives.push(
168
+ "High-risk completion or verification claims require existing verification/final-answer-gate evidence before PASS."
169
+ );
170
+ internalEvents.push("meta_scheduler:final_answer_gate_required");
171
+ }
172
+ if (toolFailure || providerFailure) {
173
+ directives.push(
174
+ "Tool/provider failures must be captured as failure learning or an explicit degraded state; do not claim completion from a failed turn."
175
+ );
176
+ internalEvents.push("meta_scheduler:failure_learning_required");
177
+ }
178
+ if (pressure.shouldCompact) {
179
+ directives.push(
180
+ "Context is near provider budget; run compact/tool-result artifact flow before sending provider-visible messages."
181
+ );
182
+ internalEvents.push("meta_scheduler:compact_required");
183
+ }
184
+ if (blockedRuntime) {
185
+ directives.push(
186
+ "Blocked/stale agent or workflow state is a hard stop for PASS; require real recovery, cancellation, or explicit degradation."
187
+ );
188
+ internalEvents.push("meta_scheduler:blocked_runtime_stop");
189
+ }
190
+ directives.push(formatIndexStrategyDirective(indexStrategy, input.index));
191
+ const verificationRoute = createVerificationRoute({
192
+ domain: verificationDomain,
193
+ evidenceFreshness,
194
+ lastStatus: input.lastVerificationStatus,
195
+ blockedRuntime,
196
+ runtimeSignal,
197
+ failureSignal,
198
+ resourceCapPressure: runtimeSignal.resourceCapPressure,
199
+ userStateDecision: adjustedUserStateDecision
200
+ });
201
+ directives.push(formatVerificationRouteDirective(verificationRoute));
202
+ directives.push(formatUserStateDirective(adjustedUserStateDecision));
203
+ appendUserStateInternalEvents(internalEvents, adjustedUserStateDecision);
204
+ const policyDecision = createPolicyDecision({
205
+ taskKind,
206
+ riskLevel: classifyRiskLevel({
207
+ highRiskClaim,
208
+ blockedRuntime,
209
+ expectedMutating,
210
+ providerFailure,
211
+ toolFailure,
212
+ pressure: pressure.shouldCompact,
213
+ userStateDecision: adjustedUserStateDecision
214
+ }),
215
+ includeMemory: (input.memoryAcceptedCount ?? 0) > 0,
216
+ includeFailureLearning: adjustedIncludeFailureLearning,
217
+ compactBeforeProvider: adjustedShouldCompact,
218
+ preferSourceFirst,
219
+ preferWorkflow: taskKind === "workflow" && adjustedUserStateDecision.interactionPlan.allowImplementationPush,
220
+ preferAgent: taskKind === "agent" && adjustedUserStateDecision.interactionPlan.allowImplementationPush,
221
+ requireVerification: adjustedRequireVerification,
222
+ requireFinalGate: adjustedRequireFinalGate,
223
+ expectedMutating,
224
+ requireExplicitGate: expectedMutating || blockedRuntime || Boolean(input.pendingApproval),
225
+ providerPlan,
226
+ blockedRuntime,
227
+ toolFailure,
228
+ providerFailure,
229
+ surfaceWindowsSafeHint,
230
+ userState: adjustedUserStateDecision,
231
+ capabilityPlan,
232
+ userStatePersistence,
233
+ permissionSignal: {
234
+ permissionMode: input.permissionMode ?? "default",
235
+ recentDenied: recentDeniedCount > 0,
236
+ recentDeniedCount,
237
+ expectedMutating,
238
+ requireExplicitGate: expectedMutating || blockedRuntime || recentDeniedCount > 0 || Boolean(input.pendingApproval),
239
+ pendingApproval: Boolean(input.pendingApproval)
240
+ },
241
+ modelRouteSignal: {
242
+ role: input.currentRole ?? "executor",
243
+ provider: input.currentProvider ?? "unknown",
244
+ model: input.currentModel ?? "unknown",
245
+ fallback: Boolean(input.routeFallbackUsed || providerPlan === "fallbackCandidate"),
246
+ providerCooldown: Boolean(input.routeProviderCooldown || input.providerCooldownBlocked),
247
+ providerFailure: Boolean(input.routeProviderFailure || providerFailure),
248
+ suggestedRole
249
+ },
250
+ verificationSignal: {
251
+ required: adjustedRequireVerification,
252
+ recommendedLevel: adjustedVerificationStrength === "focused" ? "focused" : classifyVerificationLevel({
253
+ highRiskClaim,
254
+ expectedMutating,
255
+ taskKind,
256
+ blockedRuntime,
257
+ lastStatus: input.lastVerificationStatus,
258
+ userStateDecision: adjustedUserStateDecision
259
+ }),
260
+ route: verificationRoute,
261
+ reason: highRiskClaim ? "high_risk_claim" : taskKind === "verification" ? "requested" : expectedMutating ? "mutating" : "normal",
262
+ ...input.lastVerificationStatus ? { lastStatus: input.lastVerificationStatus } : {}
263
+ },
264
+ runtimeSignal,
265
+ memorySignal: {
266
+ accepted: (input.memoryAcceptedCount ?? 0) > 0,
267
+ acceptedCount: input.memoryAcceptedCount ?? 0,
268
+ candidateCount: input.memoryCandidateCount ?? 0,
269
+ autoLearningActive: Boolean(input.memoryAutoLearningActive)
270
+ },
271
+ failureSignal,
272
+ architectureSignal: {
273
+ cardPresent: Boolean(input.currentArchitectureCard),
274
+ guardReminder: Boolean(input.currentArchitectureCard && (expectedMutating || blockedRuntime)),
275
+ driftPending: Boolean(input.architectureDriftPending)
276
+ },
277
+ platformSignal: {
278
+ platform: input.platform ?? "unknown",
279
+ shellFamily: input.shellFamily ?? "unknown",
280
+ terminalTier: input.terminalCapability?.tier ?? "unknown",
281
+ windowsSafeHint: (input.platform ?? "unknown") === "win32"
282
+ },
283
+ budgetSignal: {
284
+ contextPressure: adjustedShouldCompact,
285
+ usageNearLimit: Boolean(input.roleBudgetStop),
286
+ toolResultBudgetPressure: (input.toolResultBudgetPersistedCount ?? 0) > 0
287
+ }
288
+ });
289
+ return {
290
+ directives,
291
+ policyDecision,
292
+ shouldRunFinalAnswerGate: adjustedRequireFinalGate,
293
+ shouldPreferVerifier: (highRiskClaim || adjustedUserStateDecision.verificationPlan.strength === "release") && evidenceFreshness !== "fresh",
294
+ shouldCaptureFailureLearning: toolFailure || providerFailure,
295
+ shouldUseRetryGuard: adjustedShouldUseRetryGuard,
296
+ shouldCompactBeforeProvider: adjustedShouldCompact,
297
+ shouldStopForBlockedRuntime: blockedRuntime,
298
+ indexStrategy,
299
+ suggestedMaxTodoRounds: computeSuggestedMaxTodoRounds(taskKind),
300
+ suggestedMaxAgentChildTurns: computeSuggestedAgentChildTurns(taskKind),
301
+ suggestedMaxAgentToolRounds: computeSuggestedAgentToolRounds(taskKind),
302
+ suggestedBackgroundConcurrency: computeSuggestedBackgroundConcurrency(taskKind),
303
+ internalEvents
304
+ };
305
+ }
306
+ function computeSuggestedMaxTodoRounds(taskKind) {
307
+ switch (taskKind) {
308
+ case "agent":
309
+ return LINGHUN_MAX_TODO_ONLY_AGENT;
310
+ case "workflow":
311
+ return LINGHUN_MAX_TODO_ONLY_WORKFLOW;
312
+ case "verification":
313
+ return LINGHUN_MAX_TODO_ONLY_VERIFICATION;
314
+ case "code_fact":
315
+ return LINGHUN_MAX_TODO_ONLY_CODE_FACT;
316
+ default:
317
+ return LINGHUN_MAX_TODO_ONLY_BASE;
318
+ }
319
+ }
320
+ function computeSuggestedAgentChildTurns(taskKind) {
321
+ switch (taskKind) {
322
+ case "agent":
323
+ return LINGHUN_AGENT_CHILD_TURNS_AGENT;
324
+ case "workflow":
325
+ return LINGHUN_AGENT_CHILD_TURNS_WORKFLOW;
326
+ case "verification":
327
+ return LINGHUN_AGENT_CHILD_TURNS_VERIFICATION;
328
+ case "code_fact":
329
+ return LINGHUN_AGENT_CHILD_TURNS_CODE_FACT;
330
+ default:
331
+ return LINGHUN_AGENT_CHILD_TURNS_BASE;
332
+ }
333
+ }
334
+ function computeSuggestedAgentToolRounds(taskKind) {
335
+ switch (taskKind) {
336
+ case "agent":
337
+ return LINGHUN_AGENT_TOOL_ROUNDS_AGENT;
338
+ case "workflow":
339
+ return LINGHUN_AGENT_TOOL_ROUNDS_WORKFLOW;
340
+ case "verification":
341
+ return LINGHUN_AGENT_TOOL_ROUNDS_VERIFICATION;
342
+ case "code_fact":
343
+ return LINGHUN_AGENT_TOOL_ROUNDS_CODE_FACT;
344
+ default:
345
+ return LINGHUN_AGENT_TOOL_ROUNDS_BASE;
346
+ }
347
+ }
348
+ function computeSuggestedBackgroundConcurrency(taskKind) {
349
+ switch (taskKind) {
350
+ case "agent":
351
+ return LINGHUN_BACKGROUND_CONCURRENCY_AGENT;
352
+ case "workflow":
353
+ return LINGHUN_BACKGROUND_CONCURRENCY_WORKFLOW;
354
+ case "verification":
355
+ return LINGHUN_BACKGROUND_CONCURRENCY_VERIFICATION;
356
+ case "code_fact":
357
+ return LINGHUN_BACKGROUND_CONCURRENCY_CODE_FACT;
358
+ default:
359
+ return LINGHUN_BACKGROUND_CONCURRENCY_BASE;
360
+ }
361
+ }
362
+ function formatMetaSchedulerDirective(decision) {
363
+ return [
364
+ "MetaSchedulerForModel:",
365
+ ...decision.directives.map((item) => `- ${item}`),
366
+ `- Typed policy route: task ${decision.policyDecision.taskKind}; risk ${decision.policyDecision.riskLevel}; budget ${decision.suggestedMaxTodoRounds} rounds; agent-max-turns ${decision.suggestedMaxAgentChildTurns}; agent-tool-rounds ${decision.suggestedMaxAgentToolRounds}; bg-concurrency ${decision.suggestedBackgroundConcurrency}; provider ${decision.policyDecision.providerPlan}; source-first ${decision.policyDecision.executionPlan.preferSourceFirst ? "yes" : "no"}; verification ${decision.policyDecision.executionPlan.requireVerification ? "required" : "normal"}; explicit-gate ${decision.policyDecision.permissionPlan.requireExplicitGate ? "required" : "normal"}; user-state ${decision.policyDecision.userState.kind}; capability ${decision.policyDecision.capabilitySignal.active ? "candidate" : "none"}.`,
367
+ ...decision.policyDecision.executionPlan.preferAgent || decision.policyDecision.executionPlan.preferWorkflow ? ["- Action: this is an agent/workflow-classified task. Delegate execution via StartAgent or RunWorkflow tools. Do not serial-Todo-plan every step yourself; use the extended planning budget to set up delegation, then call the tool."] : [],
368
+ "- Keep RuntimeStatusForModel, UserStateDecision, capabilitySignal, capabilityPlan, CapabilityExecutionRequest, CapabilityExecutionResult, raw capability payload, interactionPlan, verificationPlan, notificationPlan, confidence, gateId, raw evidence, raw tool_result, and internal scheduler labels out of the user-visible final answer."
369
+ ].join("\n");
370
+ }
371
+ function formatPolicyDecisionSummary(decision, language) {
372
+ const parts = [];
373
+ if (decision.executionPlan.preferSourceFirst) {
374
+ parts.push(language === "en-US" ? "source-first" : "\u6E90\u7801\u4F18\u5148");
375
+ }
376
+ if (decision.executionPlan.requireVerification) {
377
+ parts.push(language === "en-US" ? "verification required" : "\u9700\u8981\u9A8C\u8BC1");
378
+ }
379
+ if (decision.userState.interactionPlan.explainFirst) {
380
+ parts.push(language === "en-US" ? "explain-first" : "\u5148\u89E3\u91CA");
381
+ }
382
+ if (decision.userState.interactionPlan.discussionOnly) {
383
+ parts.push(language === "en-US" ? "discussion-only" : "\u4EC5\u8BA8\u8BBA\u5224\u65AD");
384
+ }
385
+ if (decision.userState.interactionPlan.commandFirst) {
386
+ parts.push(language === "en-US" ? "command-first" : "\u547D\u4EE4\u4F18\u5148");
387
+ }
388
+ if (decision.userState.verificationPlan.strength === "release") {
389
+ parts.push(language === "en-US" ? "release gate" : "\u53D1\u5E03\u95F8\u95E8");
390
+ }
391
+ if (decision.contextPlan.compactBeforeProvider) {
392
+ parts.push(language === "en-US" ? "compact before provider" : "\u5148\u538B\u7F29\u4E0A\u4E0B\u6587");
393
+ }
394
+ if (decision.providerPlan === "fallbackCandidate") {
395
+ parts.push(language === "en-US" ? "fallback candidate ready" : "\u51C6\u5907 fallback \u5019\u9009");
396
+ }
397
+ if (decision.providerPlan === "cooldownBlocked") {
398
+ parts.push(language === "en-US" ? "provider cooldown blocked" : "provider \u51B7\u5374\u963B\u585E");
399
+ }
400
+ if (decision.executionPlan.preferWorkflow) {
401
+ parts.push(language === "en-US" ? "workflow route" : "workflow \u8DEF\u7EBF");
402
+ }
403
+ if (decision.executionPlan.preferAgent) {
404
+ parts.push(language === "en-US" ? "agent route" : "agent \u8DEF\u7EBF");
405
+ }
406
+ if (decision.capabilitySignal.active) {
407
+ parts.push(language === "en-US" ? "capability route" : "capability \u8DEF\u7EBF");
408
+ }
409
+ if (decision.platformSignal.windowsSafeHint) {
410
+ parts.push(language === "en-US" ? "Windows-safe shell" : "Windows \u517C\u5BB9\u547D\u4EE4");
411
+ }
412
+ if (decision.modelRouteSignal.suggestedRole) {
413
+ parts.push(
414
+ language === "en-US" ? `suggest ${decision.modelRouteSignal.suggestedRole}` : `\u5EFA\u8BAE ${decision.modelRouteSignal.suggestedRole}`
415
+ );
416
+ }
417
+ const summary = parts.length > 0 ? parts.join("; ") : language === "en-US" ? "keep current route" : "\u4FDD\u6301\u5F53\u524D\u8DEF\u7EBF";
418
+ return language === "en-US" ? `strategy: ${summary}; task ${decision.taskKind}; risk ${decision.riskLevel}` : `\u7B56\u7565\uFF1A${summary}\uFF1B\u4EFB\u52A1 ${decision.taskKind}\uFF1B\u98CE\u9669 ${decision.riskLevel}`;
419
+ }
420
+ function verifyFailureLearningContract(input) {
421
+ if (!input.decision.shouldCaptureFailureLearning) {
422
+ return { satisfied: true };
423
+ }
424
+ if (input.postTurnRecordCount > input.preTurnRecordCount) {
425
+ return { satisfied: true };
426
+ }
427
+ return {
428
+ satisfied: false,
429
+ reason: `meta-scheduler required failure learning capture for ${input.failureKind} failure but no new record was added; degraded state recorded`
430
+ };
431
+ }
432
+ function hasHighRiskCompletionClaim(text) {
433
+ return /(?:\bPASS\b|\bpassed\b|\bverified\b|\btests?\s+pass(?:ed)?\b|\bfixed\b|\bcompleted\b|已完成|已修复|已验证|验证通过|测试通过|可以进入下一阶段|ready\s+for|可进入)/iu.test(
434
+ text
435
+ );
436
+ }
437
+ function countRecentFailureLearning(state) {
438
+ return state.records.filter(
439
+ (record) => record.status === "active" && record.projectScope === state.projectScope
440
+ ).length;
441
+ }
442
+ function adjustTaskKindForUserState(taskKind, decision) {
443
+ if (decision.kind === "confused" || decision.kind === "strategic_exploration") {
444
+ return "chat";
445
+ }
446
+ return taskKind;
447
+ }
448
+ var DOMAIN_KEYWORD_WEIGHTS = {
449
+ code_fact: [
450
+ ["\u8BFB", 10],
451
+ ["\u5B9A\u4F4D", 10],
452
+ ["\u6E90\u7801", 10],
453
+ ["read", 10],
454
+ ["source", 10],
455
+ ["\u770B", 8],
456
+ ["\u627E", 8],
457
+ ["grep", 8],
458
+ ["search", 8],
459
+ ["\u8C03\u7528\u94FE", 8],
460
+ ["code", 8],
461
+ ["\u5BA1\u8BA1", 8],
462
+ ["review", 8],
463
+ ["\u5206\u6790", 6],
464
+ ["audit", 8],
465
+ ["\u68B3\u7406", 6],
466
+ ["\u67E5\u770B", 6],
467
+ ["inspect", 6],
468
+ ["trace", 6],
469
+ ["\u6587\u4EF6", 6],
470
+ ["file", 4]
471
+ ],
472
+ edit: [
473
+ ["\u4FEE\u6539", 10],
474
+ ["\u4FEE", 10],
475
+ ["\u6539", 10],
476
+ ["fix", 10],
477
+ ["modify", 10],
478
+ ["\u5B9E\u73B0", 8],
479
+ ["\u5199\u5165", 8],
480
+ ["write", 8],
481
+ ["implement", 8],
482
+ ["update", 8],
483
+ ["\u65B0\u589E", 6],
484
+ ["\u521B\u5EFA", 6],
485
+ ["\u5220\u9664", 6],
486
+ ["create", 6],
487
+ ["delete", 6]
488
+ ],
489
+ verification: [
490
+ ["\u6D4B\u8BD5", 10],
491
+ ["\u9A8C\u8BC1", 10],
492
+ ["test", 10],
493
+ ["verify", 10],
494
+ ["typecheck", 8],
495
+ ["lint", 8],
496
+ ["check", 8],
497
+ ["build", 6],
498
+ ["\u68C0\u67E5", 4]
499
+ ],
500
+ agent: [
501
+ ["agent", 10],
502
+ ["\u667A\u80FD\u4F53", 10],
503
+ ["multi-agent", 10],
504
+ ["fork", 8],
505
+ ["\u591A\u5F00", 6],
506
+ ["\u5E76\u884C", 6]
507
+ ],
508
+ workflow: [
509
+ ["workflow", 10],
510
+ ["job", 10],
511
+ ["\u5DE5\u4F5C\u6D41", 10],
512
+ ["\u6D41\u6C34\u7EBF", 6],
513
+ ["\u540E\u53F0", 4],
514
+ ["\u6258\u7BA1", 4]
515
+ ]
516
+ };
517
+ var LATIN_KEYWORD_PATTERNS = /* @__PURE__ */ new Map();
518
+ for (const keywords of Object.values(DOMAIN_KEYWORD_WEIGHTS)) {
519
+ for (const [keyword] of keywords) {
520
+ if (/^[a-zA-Z0-9_-]+$/.test(keyword) && !LATIN_KEYWORD_PATTERNS.has(keyword)) {
521
+ LATIN_KEYWORD_PATTERNS.set(
522
+ keyword,
523
+ new RegExp(
524
+ `\\b${keyword.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\b`,
525
+ "iu"
526
+ )
527
+ );
528
+ }
529
+ }
530
+ }
531
+ function matchKeyword(text, keyword) {
532
+ const pattern = LATIN_KEYWORD_PATTERNS.get(keyword);
533
+ if (pattern) return pattern.test(text);
534
+ return text.includes(keyword);
535
+ }
536
+ function scoreDomain(text, keywords) {
537
+ let maxScore = 0;
538
+ for (const [keyword, weight] of keywords) {
539
+ if (matchKeyword(text, keyword)) {
540
+ maxScore = Math.max(maxScore, weight);
541
+ }
542
+ }
543
+ return maxScore;
544
+ }
545
+ function classifyTaskKind(userText, capabilityPlan = createEmptyCapabilityPlan(), input) {
546
+ const scores = [];
547
+ for (const [domain, keywords] of Object.entries(DOMAIN_KEYWORD_WEIGHTS)) {
548
+ scores.push({
549
+ kind: domain,
550
+ score: scoreDomain(userText, keywords)
551
+ });
552
+ }
553
+ scores.push({
554
+ kind: "capability",
555
+ score: capabilityPlan.route === "capability" ? 15 : 0
556
+ });
557
+ scores.push({ kind: "chat", score: 5 });
558
+ scores.sort((a, b) => b.score - a.score);
559
+ const dominant = scores[0];
560
+ const secondaries = [];
561
+ const reasons = [];
562
+ const consecutiveFailures = input?.consecutiveFailures ?? 0;
563
+ const lastVerificationStatus = input?.lastVerificationStatus;
564
+ const failureLearning = input?.failureLearning;
565
+ if (consecutiveFailures >= 2 && dominant.kind === "edit") {
566
+ reasons.push("\u8FDE\u7EED\u5931\u8D25\u540E\u5F3A\u5236\u6E90\u7801\u4F18\u5148");
567
+ }
568
+ if (lastVerificationStatus === "fail") {
569
+ if (!secondaries.includes("verification")) {
570
+ secondaries.push("verification");
571
+ }
572
+ reasons.push("\u4E0A\u8F6E\u9A8C\u8BC1\u5931\u8D25");
573
+ }
574
+ if (input?.hasActiveProviderFailure) {
575
+ reasons.push("provider \u5386\u53F2\u5931\u8D25\uFF0C\u907F\u514D\u91CD\u538B\u529B\u64CD\u4F5C");
576
+ }
577
+ let primary;
578
+ if (consecutiveFailures >= 2 && dominant.kind === "edit") {
579
+ primary = "code_fact";
580
+ } else {
581
+ primary = dominant.kind;
582
+ }
583
+ const intentUnclear = scores.every((s) => s.score < 10);
584
+ if (intentUnclear && reasons.length === 0) {
585
+ reasons.push("\u610F\u56FE\u6A21\u7CCA\uFF0C\u5EFA\u8BAE\u6A21\u578B\u5148\u6F84\u6E05");
586
+ }
587
+ const primaryScore = primary === "code_fact" && dominant.kind === "edit" ? dominant.score : scores.find((s) => s.kind === primary)?.score ?? 0;
588
+ for (const s of scores) {
589
+ if (s.kind === primary) continue;
590
+ if (s.score >= primaryScore * 0.6 && s.score > 0) {
591
+ if (!secondaries.includes(s.kind)) {
592
+ secondaries.push(s.kind);
593
+ }
594
+ }
595
+ }
596
+ return {
597
+ primary: intentUnclear ? "chat" : primary,
598
+ secondaries,
599
+ intentUnclear,
600
+ reason: reasons.join("; ")
601
+ };
602
+ }
603
+ function expectsMutatingAction(userText, taskKind, capabilityPlan = createEmptyCapabilityPlan()) {
604
+ return taskKind === "edit" || taskKind === "capability" && capabilityPlan.permission !== "read" || /(?:写入|修改|更新|新增|删除|创建|实现|修复|提交|commit|write|edit|modify|update|delete|create|implement|fix)/iu.test(
605
+ userText
606
+ );
607
+ }
608
+ function createCapabilityPlan(userText) {
609
+ const text = userText.trim();
610
+ if (!text) return createEmptyCapabilityPlan();
611
+ const mentionsWorkflowAgentOrJob = /(?:智能体|子智能体|\bagent\b|\bfork\b|multi-agent|多开|工作流|\bworkflow\b|\bjob\b|流水线|后台|background|scheduler|调度)/iu.test(
612
+ text
613
+ );
614
+ if (mentionsWorkflowAgentOrJob) return createEmptyCapabilityPlan();
615
+ const explicitCapability = /(?:\bcapabilit(?:y|ies)\b|能力运行时|外部能力|app bridge|应用桥|应用连接|connector|插件能力|plugin capability)/iu.test(
616
+ text
617
+ );
618
+ const externalApp = /(?:外部软件|外部应用|连接应用|连接软件|第三方软件|第三方应用|desktop bridge|本地应用|画布|画图|表格|spreadsheet|canvas|external app|connect app|app connector|plugin|插件|mcp|http connector|websocket)/iu.test(
619
+ text
620
+ );
621
+ if (!explicitCapability && !externalApp) return createEmptyCapabilityPlan();
622
+ const readOnly = /(?:列表|查看|读取|查询|list|doctor|status|read|inspect|show)/iu.test(text);
623
+ const artifact = /(?:导出|export|artifact|文件|保存|save|生成|create|创建|画图|画布|canvas)/iu.test(text);
624
+ const permission = readOnly && !artifact ? "read" : externalApp ? "external_app" : "write";
625
+ return {
626
+ route: "capability",
627
+ reason: explicitCapability ? "explicit_capability" : "external_app",
628
+ candidateIds: externalApp ? ["mock.canvas.create", "mock.canvas.export"] : ["mock.echo.read"],
629
+ permission,
630
+ riskLevel: permission === "read" ? "low" : "medium"
631
+ };
632
+ }
633
+ function createEmptyCapabilityPlan() {
634
+ return {
635
+ route: "none",
636
+ reason: "none",
637
+ candidateIds: [],
638
+ permission: "read",
639
+ riskLevel: "low"
640
+ };
641
+ }
642
+ function classifyVerificationDomain(userText, taskKind, expectedMutating) {
643
+ if (taskKind === "capability") {
644
+ return "agent_job_workflow";
645
+ }
646
+ if (/(?:provider|model|模型|供应商|baseUrl|api[_-]?key|\bkey\b|env|环境变量|config|配置|doctor|route|路由)/iu.test(
647
+ userText
648
+ )) {
649
+ return "provider_model_config";
650
+ }
651
+ if (/(?:文档|markdown|frontmatter|link|链接|README|docs?\/|\.md\b|交付文档|delivery)/iu.test(
652
+ userText
653
+ )) {
654
+ return "documentation";
655
+ }
656
+ if (/(?:\btui\b.*(?:交互|ui|render|renderer|keyboard|hotkey|面板)|terminal|终端|交互|\bink\b|render|renderer|keyboard|hotkey|快捷键|面板)/iu.test(
657
+ userText
658
+ )) {
659
+ return "tui_interactive";
660
+ }
661
+ if (/(?:智能体|子智能体|\bagent\b|\bfork\b|\bjob\b|workflow|工作流|后台|background|scheduler|调度)/iu.test(
662
+ userText
663
+ )) {
664
+ return "agent_job_workflow";
665
+ }
666
+ if (taskKind === "edit" || expectedMutating || /(?:代码|源码|ts|tsx|js|jsx|test|typecheck|lint|build|diff|实现|修复)/iu.test(userText)) {
667
+ return "code_change";
668
+ }
669
+ return "general";
670
+ }
671
+ function shouldSurfaceWindowsSafeHint(input) {
672
+ if (input.expectedMutating || input.taskKind === "verification") return true;
673
+ if (input.taskKind === "workflow" || input.taskKind === "agent") return true;
674
+ if (input.blockedRuntime || input.toolFailure || input.providerFailure) return true;
675
+ if (input.providerCooldownBlocked) return true;
676
+ return /(?:\bbash\b|\bshell\b|\bcmd\b|powershell|pwsh|terminal|命令行|终端|命令|路径|执行(?:命令|脚本|测试|验证)|运行(?:命令|脚本|测试|验证)|\bpath\b|\bcommand\b|\bexecute\b|\bpnpm\b|\bnpm\b|\bnpx\b|\bnode\b|\bpython\b|\bgit\b|\brun\b\s+(?:test|build|lint|script|command|shell|bash|pnpm|npm|npx|node|python|git))/iu.test(
677
+ input.userText
678
+ );
679
+ }
680
+ function hasActiveFailureLearning(state) {
681
+ return state.records.some(
682
+ (record) => record.status === "active" && record.projectScope === state.projectScope
683
+ );
684
+ }
685
+ function hasActiveProviderFailure(state) {
686
+ return state.records.some(
687
+ (record) => record.status === "active" && record.category === "provider_failure" && record.projectScope === state.projectScope
688
+ );
689
+ }
690
+ function shouldPreferSourceFirst(taskKind, indexStrategy) {
691
+ if (taskKind === "code_fact" || taskKind === "edit" || taskKind === "verification") return true;
692
+ if (taskKind === "capability") return false;
693
+ return indexStrategy !== "ready" && taskKind !== "chat";
694
+ }
695
+ function classifyRiskLevel(input) {
696
+ if (input.highRiskClaim || input.blockedRuntime || input.userStateDecision.kind === "high_stakes_release") {
697
+ return "high";
698
+ }
699
+ if (input.expectedMutating || input.providerFailure || input.toolFailure || input.pressure) {
700
+ return "medium";
701
+ }
702
+ if (input.userStateDecision.kind === "frustrated" || input.userStateDecision.kind === "trust_repair") {
703
+ return "medium";
704
+ }
705
+ return "low";
706
+ }
707
+ function summarizeFailureSignal(state) {
708
+ const active = state.records.filter(
709
+ (record) => record.status === "active" && record.projectScope === state.projectScope
710
+ );
711
+ const categories = [...new Set(active.map((record) => record.category))].sort();
712
+ return {
713
+ activeCount: active.length,
714
+ highSeverityCount: active.filter((record) => record.severity === "high").length,
715
+ mediumSeverityCount: active.filter((record) => record.severity === "medium").length,
716
+ categories
717
+ };
718
+ }
719
+ function createVerificationRoute(input) {
720
+ const commands = applyUserStateVerificationCommands(
721
+ verificationCommandsForDomain(input.domain),
722
+ input.userStateDecision
723
+ );
724
+ const noPassReasons = collectNoPassReasons(input);
725
+ return {
726
+ domain: input.domain,
727
+ commands,
728
+ evidenceFreshness: input.evidenceFreshness,
729
+ conservativeNoPass: noPassReasons.length > 0,
730
+ noPassReasons
731
+ };
732
+ }
733
+ function verificationCommandsForDomain(domain) {
734
+ if (domain === "documentation") {
735
+ return ["markdown", "link", "frontmatter", "sensitive-path", "consistency"];
736
+ }
737
+ if (domain === "tui_interactive") {
738
+ return ["focused-tui-tests", "build", "cli-smoke"];
739
+ }
740
+ if (domain === "provider_model_config") {
741
+ return ["doctor", "provider-smoke", "config-isolation"];
742
+ }
743
+ if (domain === "agent_job_workflow") {
744
+ return [
745
+ "background-state",
746
+ "job-state",
747
+ "agent-state",
748
+ "workflow-state",
749
+ "no-pass-without-verification"
750
+ ];
751
+ }
752
+ if (domain === "code_change") {
753
+ return ["typecheck", "test", "lint", "build", "diff"];
754
+ }
755
+ return ["focused-verification"];
756
+ }
757
+ function applyUserStateVerificationCommands(commands, decision) {
758
+ const next = [...commands];
759
+ if (decision.verificationPlan.requireSourceFacts) {
760
+ next.unshift("source-facts");
761
+ }
762
+ if (decision.verificationPlan.requireDirtyTreeCheck) {
763
+ next.push("dirty-tree");
764
+ next.push("untracked-files");
765
+ }
766
+ if (decision.verificationPlan.requireFocusedTests) {
767
+ next.push("focused-test");
768
+ }
769
+ if (decision.verificationPlan.requireBuild) {
770
+ next.push("build");
771
+ }
772
+ if (decision.verificationPlan.requireStabilityBoundary) {
773
+ next.push("stability-boundary");
774
+ }
775
+ return [...new Set(next)];
776
+ }
777
+ function collectNoPassReasons(input) {
778
+ const reasons = [];
779
+ if (input.domain !== "general" && input.evidenceFreshness !== "fresh") {
780
+ reasons.push(`evidence:${input.evidenceFreshness}`);
781
+ }
782
+ if (input.userStateDecision.verificationPlan.forbidEarlyPass) {
783
+ reasons.push(`user_state:${input.userStateDecision.kind}`);
784
+ }
785
+ if (input.lastStatus && input.lastStatus !== "pass") {
786
+ reasons.push(`verification:${input.lastStatus}`);
787
+ }
788
+ if (input.blockedRuntime || input.runtimeSignal.noPassStates.length > 0) {
789
+ reasons.push(...input.runtimeSignal.noPassStates);
790
+ }
791
+ if (input.runtimeSignal.completedWithoutFreshVerification) {
792
+ reasons.push("completed_without_fresh_verification");
793
+ }
794
+ if (input.failureSignal.activeCount > 0) {
795
+ reasons.push("active_failure_learning");
796
+ }
797
+ if (input.resourceCapPressure) {
798
+ reasons.push("resource_guard_pressure");
799
+ }
800
+ return [...new Set(reasons)];
801
+ }
802
+ function formatVerificationRouteDirective(route) {
803
+ const noPass = route.conservativeNoPass ? ` conservative-no-pass=${route.noPassReasons.join(",")}` : " conservative-no-pass=no";
804
+ return `Verification route: domain=${route.domain}; commands=${route.commands.join("+")}; evidence=${route.evidenceFreshness};${noPass}.`;
805
+ }
806
+ function formatUserStateDirective(decision) {
807
+ return `UserStateDecision: kind=${decision.kind}; confidence=${decision.confidence.toFixed(2)}; interaction=${decision.interactionPlan.route}; verification=${decision.verificationPlan.strength}; detail=${decision.detailPlan.style}; notification=${decision.notificationPlan.quiet ? "quiet" : "normal"}; memoryCandidate=${decision.memoryCandidate.shouldCreate ? "candidate_only" : "none"}.`;
808
+ }
809
+ function appendUserStateInternalEvents(events, decision) {
810
+ if (decision.kind === "neutral") return;
811
+ events.push(`user_state_decision:${decision.kind}`);
812
+ if (decision.verificationPlan.forbidEarlyPass) {
813
+ events.push("user_state:forbid_early_pass");
814
+ }
815
+ if (!decision.interactionPlan.allowImplementationPush) {
816
+ events.push("user_state:no_implementation_push");
817
+ }
818
+ }
819
+ function classifyVerificationLevel(input) {
820
+ if (input.userStateDecision.verificationPlan.strength === "release") return "full";
821
+ if (input.userStateDecision.verificationPlan.strength === "strengthened") return "full";
822
+ if (input.highRiskClaim || input.blockedRuntime) return "full";
823
+ if (input.lastStatus === "fail" || input.lastStatus === "timeout" || input.lastStatus === "stale") {
824
+ return "full";
825
+ }
826
+ if (input.lastStatus === "partial" || input.lastStatus === "cancelled" || input.lastStatus === "skipped") {
827
+ return "focused";
828
+ }
829
+ if (input.expectedMutating || input.taskKind === "verification") return "focused";
830
+ return "basic";
831
+ }
832
+ function isRiskyVerificationStatus(status) {
833
+ return status === "fail" || status === "partial" || status === "stale" || status === "cancelled" || status === "timeout";
834
+ }
835
+ function summarizeRuntimeSignal(input, evidenceFreshness) {
836
+ let runningAgents = 0;
837
+ let runningJobs = 0;
838
+ const agentStates = {
839
+ running: 0,
840
+ completed: 0,
841
+ blocked: 0,
842
+ stale: 0,
843
+ cancelled: 0,
844
+ timeout: 0
845
+ };
846
+ const jobStates = {
847
+ running: 0,
848
+ completed: 0,
849
+ blocked: 0,
850
+ stale: 0,
851
+ cancelled: 0,
852
+ timeout: 0
853
+ };
854
+ const noPassReasonSet = /* @__PURE__ */ new Set();
855
+ for (const task of input.backgroundTasks) {
856
+ const isAgent = task.kind === "agent";
857
+ const isJob = task.kind === "job";
858
+ if (!isAgent && !isJob) continue;
859
+ if (isAgent && task.status === "running") runningAgents++;
860
+ if (isJob && task.status === "running") runningJobs++;
861
+ if (isAgent && task.status in agentStates) {
862
+ agentStates[task.status] += 1;
863
+ }
864
+ if (isJob && task.status in jobStates) {
865
+ jobStates[task.status] += 1;
866
+ }
867
+ if (task.status === "blocked" || task.status === "stale" || task.status === "cancelled" || task.status === "timeout") {
868
+ noPassReasonSet.add(`${task.kind}:${task.status}`);
869
+ }
870
+ if (task.result === "stale" || task.result === "cancelled" || task.result === "timeout") {
871
+ noPassReasonSet.add(`${task.kind}:${task.result}`);
872
+ }
873
+ if (task.status === "completed" && task.result !== "pass") {
874
+ noPassReasonSet.add(`${task.kind}:completed_not_pass`);
875
+ }
876
+ }
877
+ if (input.workflow?.status === "blocked" || input.workflow?.status === "stale" || input.workflow?.status === "cancelled") {
878
+ noPassReasonSet.add(`workflow:${input.workflow.status}`);
879
+ }
880
+ if (input.workflow?.status === "completed") {
881
+ noPassReasonSet.add("workflow:completed_not_pass");
882
+ }
883
+ for (const step of input.workflow?.steps ?? []) {
884
+ if (step.status === "blocked" || step.status === "stale" || step.status === "cancelled") {
885
+ noPassReasonSet.add(`workflow_step:${step.status}`);
886
+ }
887
+ }
888
+ runningAgents = input.activeAgentCount ?? runningAgents;
889
+ runningJobs = input.activeJobCount ?? runningJobs;
890
+ const workflowStatus = input.activeWorkflowStatus ?? normalizeWorkflowRuntimeStatus(input.workflow?.status, input.workflow?.steps);
891
+ const completedWithoutFreshVerification = evidenceFreshness !== "fresh" && (agentStates.completed > 0 || jobStates.completed > 0 || input.workflow?.status === "completed");
892
+ return {
893
+ runningAgents,
894
+ runningJobs,
895
+ ...workflowStatus ? { workflowStatus } : {},
896
+ agentStates,
897
+ jobStates,
898
+ completedWithoutFreshVerification,
899
+ noPassStates: [...noPassReasonSet],
900
+ resourceCapPressure: runningAgents > 0 || runningJobs > 0
901
+ };
902
+ }
903
+ function normalizeWorkflowRuntimeStatus(status, steps) {
904
+ if (status === "blocked") return "blocked";
905
+ if (status === "running") return "running";
906
+ if (steps?.some((step) => step.status === "stale")) return "stale";
907
+ if (steps?.some((step) => step.status === "blocked")) return "blocked";
908
+ return void 0;
909
+ }
910
+ function createPolicyDecision(input) {
911
+ const hints = [];
912
+ if (input.userState.kind === "frustrated" || input.userState.kind === "trust_repair" || input.userState.kind === "high_stakes_release") {
913
+ hints.push({
914
+ id: `user-state-${input.userState.kind}`,
915
+ severity: input.userState.kind === "high_stakes_release" ? "warning" : "info",
916
+ text: {
917
+ "zh-CN": input.userState.kind === "high_stakes_release" ? "\u7B56\u7565\uFF1A\u53D1\u5E03\u98CE\u9669\u8F83\u9AD8\uFF0C\u5148\u505A\u5DE5\u4F5C\u6811\u3001\u6784\u5EFA\u548C\u9A8C\u8BC1\u8FB9\u754C\u68C0\u67E5\u3002" : "\u7B56\u7565\uFF1A\u5148\u6838\u5BF9\u6E90\u7801\u4E8B\u5B9E\uFF0C\u518D\u7ED9\u7ED3\u8BBA\u3002",
918
+ "en-US": input.userState.kind === "high_stakes_release" ? "Strategy: release risk is high; checking worktree, build, and verification boundaries first." : "Strategy: checking source facts before conclusions."
919
+ }
920
+ });
921
+ }
922
+ if (input.userState.kind === "decisive_command") {
923
+ hints.push({
924
+ id: "user-state-command-first",
925
+ severity: "info",
926
+ text: {
927
+ "zh-CN": "\u7B56\u7565\uFF1A\u547D\u4EE4\u4F18\u5148\uFF0C\u51CF\u5C11\u80CC\u666F\u89E3\u91CA\u3002",
928
+ "en-US": "Strategy: command-first; reducing background explanation."
929
+ }
930
+ });
931
+ }
932
+ if (input.userState.kind === "confused") {
933
+ hints.push({
934
+ id: "user-state-explain-first",
935
+ severity: "info",
936
+ text: {
937
+ "zh-CN": "\u7B56\u7565\uFF1A\u5148\u89E3\u91CA\uFF0C\u4E0D\u76F4\u63A5\u63A8\u8FDB\u5B9E\u73B0\u3002",
938
+ "en-US": "Strategy: explain-first; not pushing implementation yet."
939
+ }
940
+ });
941
+ }
942
+ if (input.userState.kind === "strategic_exploration") {
943
+ hints.push({
944
+ id: "user-state-discussion-only",
945
+ severity: "info",
946
+ text: {
947
+ "zh-CN": "\u7B56\u7565\uFF1A\u4FDD\u6301\u8BA8\u8BBA\u548C\u67B6\u6784\u5224\u65AD\uFF0C\u4E0D\u542F\u52A8\u4EE3\u7801\u6267\u884C\u3002",
948
+ "en-US": "Strategy: staying in discussion/architecture judgment; no code execution route."
949
+ }
950
+ });
951
+ }
952
+ if (input.permissionSignal.requireExplicitGate) {
953
+ hints.push({
954
+ id: "permission-risk",
955
+ severity: "warning",
956
+ text: {
957
+ "zh-CN": "\u7B56\u7565\uFF1A\u68C0\u6D4B\u5230\u6743\u9650\u98CE\u9669\uFF0C\u5199\u5165\u524D\u4F1A\u8BF7\u6C42\u786E\u8BA4\u3002",
958
+ "en-US": "Strategy: permission risk detected; write actions will ask before running."
959
+ }
960
+ });
961
+ }
962
+ if (input.platformSignal.windowsSafeHint && input.surfaceWindowsSafeHint) {
963
+ hints.push({
964
+ id: "windows-safe",
965
+ severity: "info",
966
+ text: {
967
+ "zh-CN": "\u7B56\u7565\uFF1AWindows \u73AF\u5883\uFF0C\u4F18\u5148\u4F7F\u7528\u517C\u5BB9\u547D\u4EE4\u3002",
968
+ "en-US": "Strategy: Windows environment; using compatible commands first."
969
+ }
970
+ });
971
+ }
972
+ if (input.preferSourceFirst) {
973
+ hints.push({
974
+ id: "source-first",
975
+ severity: "info",
976
+ text: {
977
+ "zh-CN": "\u7B56\u7565\uFF1A\u6E90\u7801\u4F18\u5148\uFF0C\u5148\u8BFB\u53D6\u5173\u952E\u6587\u4EF6\u3002",
978
+ "en-US": "Strategy: source-first; reading key files before answering."
979
+ }
980
+ });
981
+ }
982
+ if (input.requireVerification) {
983
+ hints.push({
984
+ id: "verification-required",
985
+ severity: input.riskLevel === "high" ? "warning" : "info",
986
+ text: {
987
+ "zh-CN": input.verificationSignal.recommendedLevel === "focused" ? "\u7B56\u7565\uFF1A\u5EFA\u8BAE\u5148\u505A focused verification\u3002" : "\u7B56\u7565\uFF1A\u9AD8\u98CE\u9669\u7ED3\u8BBA\u9700\u8981\u9A8C\u8BC1\u540E\u518D\u8BF4\u901A\u8FC7\u3002",
988
+ "en-US": input.verificationSignal.recommendedLevel === "focused" ? "Strategy: focused verification is recommended before completion." : "Strategy: high-risk claims need verification before PASS."
989
+ }
990
+ });
991
+ }
992
+ if (input.architectureSignal.guardReminder) {
993
+ hints.push({
994
+ id: "architecture-guard",
995
+ severity: "warning",
996
+ text: {
997
+ "zh-CN": "\u7B56\u7565\uFF1A\u5DF2\u6709\u67B6\u6784\u5361\u7247\uFF0C\u5199\u5165\u4F1A\u7EE7\u7EED\u8D70\u67B6\u6784\u8FB9\u754C\u68C0\u67E5\u3002",
998
+ "en-US": "Strategy: architecture card is active; edits keep architecture guard checks."
999
+ }
1000
+ });
1001
+ }
1002
+ if (input.compactBeforeProvider) {
1003
+ hints.push({
1004
+ id: "compact-before-provider",
1005
+ severity: "warning",
1006
+ text: {
1007
+ "zh-CN": "\u7B56\u7565\uFF1A\u4E0A\u4E0B\u6587\u63A5\u8FD1\u4E0A\u9650\uFF0C\u5148\u538B\u7F29\u518D\u8BF7\u6C42\u6A21\u578B\u3002",
1008
+ "en-US": "Strategy: context is near limit; compacting before provider request."
1009
+ }
1010
+ });
1011
+ }
1012
+ if (input.blockedRuntime) {
1013
+ hints.push({
1014
+ id: "blocked-runtime",
1015
+ severity: "warning",
1016
+ text: {
1017
+ "zh-CN": "\u7B56\u7565\uFF1A\u5DF2\u6709\u4EFB\u52A1\u963B\u585E\uFF0C\u5148\u68C0\u67E5 workflow/agent \u72B6\u6001\u3002",
1018
+ "en-US": "Strategy: blocked runtime detected; checking workflow/agent state first."
1019
+ }
1020
+ });
1021
+ }
1022
+ if (input.runtimeSignal.resourceCapPressure) {
1023
+ hints.push({
1024
+ id: "background-occupancy",
1025
+ severity: "info",
1026
+ text: {
1027
+ "zh-CN": "\u7B56\u7565\uFF1A\u5DF2\u6709\u540E\u53F0 agent/job \u5360\u7528\uFF0C\u5148\u907F\u514D\u91CD\u590D\u542F\u52A8\u3002",
1028
+ "en-US": "Strategy: background agent/job is already running; avoiding duplicate starts."
1029
+ }
1030
+ });
1031
+ }
1032
+ if (input.capabilityPlan.route === "capability") {
1033
+ hints.push({
1034
+ id: "capability-route",
1035
+ severity: input.capabilityPlan.riskLevel === "high" ? "warning" : "info",
1036
+ text: {
1037
+ "zh-CN": "\u7B56\u7565\uFF1A\u8BC6\u522B\u4E3A capability \u5019\u9009\uFF1B\u6267\u884C\u4ECD\u8D70\u663E\u5F0F\u547D\u4EE4\u548C\u6743\u9650\u8FB9\u754C\u3002",
1038
+ "en-US": "Strategy: capability candidate detected; execution still uses explicit commands and permission gates."
1039
+ }
1040
+ });
1041
+ }
1042
+ if (input.providerPlan === "fallbackCandidate") {
1043
+ hints.push({
1044
+ id: "provider-fallback",
1045
+ severity: "warning",
1046
+ text: {
1047
+ "zh-CN": "\u7B56\u7565\uFF1AProvider \u6700\u8FD1\u5931\u8D25\uFF0C\u51C6\u5907 fallback \u5019\u9009\u3002",
1048
+ "en-US": "Strategy: provider failure detected; keeping fallback candidate ready."
1049
+ }
1050
+ });
1051
+ }
1052
+ if (input.providerPlan === "cooldownBlocked") {
1053
+ hints.push({
1054
+ id: "provider-cooldown",
1055
+ severity: "warning",
1056
+ text: {
1057
+ "zh-CN": "\u7B56\u7565\uFF1AProvider \u51B7\u5374\u4E2D\uFF0C\u6682\u505C\u672C\u8F6E\u8BF7\u6C42\u3002",
1058
+ "en-US": "Strategy: provider cooldown is active; pausing this request."
1059
+ }
1060
+ });
1061
+ }
1062
+ if (input.includeFailureLearning || input.toolFailure || input.providerFailure) {
1063
+ hints.push({
1064
+ id: "failure-learning",
1065
+ severity: input.riskLevel === "high" ? "warning" : "info",
1066
+ text: {
1067
+ "zh-CN": "\u7B56\u7565\uFF1A\u53C2\u8003\u5386\u53F2\u5931\u8D25\uFF0C\u53EA\u4F5C\u4E3A\u98CE\u9669\u63D0\u793A\u3002",
1068
+ "en-US": "Strategy: using failure lessons as risk hints only."
1069
+ }
1070
+ });
1071
+ }
1072
+ if (input.includeMemory) {
1073
+ hints.push({
1074
+ id: "memory",
1075
+ severity: "info",
1076
+ text: {
1077
+ "zh-CN": "\u7B56\u7565\uFF1A\u5E26\u5165\u5DF2\u63A5\u53D7\u8BB0\u5FC6\u4F5C\u4E3A\u7EA6\u675F\u3002",
1078
+ "en-US": "Strategy: using accepted memory as constraints."
1079
+ }
1080
+ });
1081
+ }
1082
+ return {
1083
+ taskKind: input.taskKind,
1084
+ riskLevel: input.riskLevel,
1085
+ permissionSignal: input.permissionSignal,
1086
+ modelRouteSignal: input.modelRouteSignal,
1087
+ verificationSignal: input.verificationSignal,
1088
+ memorySignal: input.memorySignal,
1089
+ failureSignal: input.failureSignal,
1090
+ architectureSignal: input.architectureSignal,
1091
+ platformSignal: input.platformSignal,
1092
+ budgetSignal: input.budgetSignal,
1093
+ capabilitySignal: {
1094
+ active: input.capabilityPlan.route === "capability",
1095
+ reason: input.capabilityPlan.reason,
1096
+ candidateIds: input.capabilityPlan.candidateIds,
1097
+ permission: input.capabilityPlan.permission,
1098
+ riskLevel: input.capabilityPlan.riskLevel
1099
+ },
1100
+ capabilityPlan: input.capabilityPlan,
1101
+ runtimeSignal: input.runtimeSignal,
1102
+ userState: input.userState,
1103
+ contextPlan: {
1104
+ includeMemory: input.includeMemory,
1105
+ includeFailureLearning: input.includeFailureLearning,
1106
+ compactBeforeProvider: input.compactBeforeProvider
1107
+ },
1108
+ executionPlan: {
1109
+ preferSourceFirst: input.preferSourceFirst,
1110
+ preferWorkflow: input.preferWorkflow,
1111
+ preferAgent: input.preferAgent,
1112
+ requireVerification: input.requireVerification,
1113
+ requireFinalGate: input.requireFinalGate
1114
+ },
1115
+ permissionPlan: {
1116
+ expectedMutating: input.expectedMutating,
1117
+ requireExplicitGate: input.requireExplicitGate
1118
+ },
1119
+ providerPlan: input.providerPlan,
1120
+ hints,
1121
+ userStatePersistence: input.userStatePersistence
1122
+ };
1123
+ }
1124
+ function classifyVerificationEvidenceFreshness(evidence, nowMs = Date.now()) {
1125
+ const passEvidence = evidence.filter(
1126
+ (item) => item.supportsClaims.some(
1127
+ (claim) => /^(?:verification_passed|test_passed|typecheck_passed|build_passed|lint_passed|diff_check_passed|smoke_passed)$/u.test(
1128
+ claim
1129
+ )
1130
+ )
1131
+ );
1132
+ if (passEvidence.length === 0) return "missing";
1133
+ const freshWindowMs = 30 * 60 * 1e3;
1134
+ return passEvidence.some((item) => {
1135
+ const createdAt = Date.parse(item.createdAt);
1136
+ return Number.isFinite(createdAt) && nowMs - createdAt <= freshWindowMs;
1137
+ }) ? "fresh" : "stale";
1138
+ }
1139
+ function computeContextPressure(messages, estimatedContextChars, contextMaxChars, triggerChars) {
1140
+ if (!contextMaxChars || !triggerChars) return { shouldCompact: false };
1141
+ const chars = estimatedContextChars ?? (messages ? estimateModelMessageChars(messages) : 0);
1142
+ return { shouldCompact: chars > Math.min(contextMaxChars, triggerChars) };
1143
+ }
1144
+ function classifyIndexStrategy(index) {
1145
+ if (!index.enabled || index.status === "disabled") return "disabled";
1146
+ if (index.status === "ready" || index.status === "indexing") return "ready";
1147
+ if (index.status === "stale") return "stale";
1148
+ if (index.status === "unknown-project") return "unknown-project";
1149
+ if (index.status === "missing") return "missing";
1150
+ if (index.status === "error") return "error";
1151
+ return index.projectName ? "stale" : "unknown-project";
1152
+ }
1153
+ function formatIndexStrategyDirective(strategy, index) {
1154
+ const project = index.projectName ? ` project=${index.projectName}` : "";
1155
+ if (strategy === "ready") {
1156
+ return `Index strategy:${project} ready/indexing; use index as a locator, then confirm with source before editing or claiming facts.`;
1157
+ }
1158
+ if (strategy === "stale") {
1159
+ return `Index strategy:${project} stale/unknown; prefer refresh or source confirmation before relying on index facts.`;
1160
+ }
1161
+ if (strategy === "unknown-project") {
1162
+ return "Index strategy: unknown project; do not treat index facts as ready, use direct source reads or ask for index repair.";
1163
+ }
1164
+ if (strategy === "disabled") {
1165
+ return "Index strategy: disabled; rely on direct source reads and local search.";
1166
+ }
1167
+ if (strategy === "missing") {
1168
+ return "Index strategy: missing; use direct source reads/local search and suggest /index init fast only when useful.";
1169
+ }
1170
+ return "Index strategy: error; use direct source reads/local search and surface a short degraded index action.";
1171
+ }
1172
+ function hasActiveBlockedWorkflow(workflow) {
1173
+ if (workflow?.status === "blocked") return !workflow.endedAt;
1174
+ if (workflow?.status === "running" && workflow.steps.some((step) => step.status === "blocked" || step.status === "stale")) {
1175
+ return true;
1176
+ }
1177
+ return false;
1178
+ }
1179
+
1180
+ export {
1181
+ evaluateMetaScheduler,
1182
+ formatMetaSchedulerDirective,
1183
+ formatPolicyDecisionSummary,
1184
+ verifyFailureLearningContract,
1185
+ hasActiveProviderFailure
1186
+ };