@orion-agents/orion-code 0.3.2 → 0.3.4

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 (778) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +46 -18
  3. package/README.zh-CN.md +36 -16
  4. package/dist/runtime/agent-runtime-controller.d.ts +1 -0
  5. package/dist/runtime/agent-runtime-controller.js +92 -41
  6. package/dist/runtime/capability-receipt-journal.js +1 -1
  7. package/dist/runtime/durable-tool-receipt-reader.js +1 -1
  8. package/dist/runtime/legacy-thread-materializer.js +2 -2
  9. package/dist/runtime/orion-runtime-v1.d.ts +2 -1
  10. package/dist/runtime/orion-runtime-v1.js +18 -16
  11. package/dist/runtime/orion-session-runner.d.ts +2 -0
  12. package/dist/runtime/orion-session-runner.js +12 -4
  13. package/dist/runtime/product-bootstrap.d.ts +6 -0
  14. package/dist/runtime/product-bootstrap.js +389 -337
  15. package/dist/runtime/product-orion-runtime.d.ts +5 -0
  16. package/dist/runtime/product-orion-runtime.js +2 -0
  17. package/dist/runtime/release-receipts.d.ts +7 -3
  18. package/dist/runtime/release-receipts.js +79 -1
  19. package/dist/runtime/step-snapshot.d.ts +12 -0
  20. package/dist/runtime/step-snapshot.js +14 -1
  21. package/dist/runtime/subagent-thread-runtime.js +1 -1
  22. package/dist/runtime/thread-event-store.d.ts +10 -1
  23. package/dist/runtime/thread-event-store.js +48 -12
  24. package/dist/runtime/thread-projection.d.ts +19 -0
  25. package/dist/runtime/thread-projection.js +12 -0
  26. package/dist/runtime/thread-runtime.d.ts +2 -2
  27. package/dist/runtime/thread-runtime.js +2 -2
  28. package/dist/runtime/thread-session-index.d.ts +17 -1
  29. package/dist/runtime/thread-session-index.js +89 -6
  30. package/dist/runtime/thread-session-view.d.ts +4 -1
  31. package/dist/runtime/thread-session-view.js +5 -2
  32. package/dist/runtime/thread-ui-adapter.js +10 -3
  33. package/dist/runtime/tool-gateway.js +1 -0
  34. package/dist/runtime/turn-commit.js +1 -1
  35. package/dist/runtime/ui-events.d.ts +3 -0
  36. package/dist/runtime/workspace-runtime-kernel.d.ts +67 -0
  37. package/dist/runtime/workspace-runtime-kernel.js +148 -0
  38. package/dist/services/global-config.d.ts +2 -0
  39. package/dist/services/global-config.js +7 -1
  40. package/dist/services/provider-resilience/coordinator.d.ts +3 -1
  41. package/dist/services/provider-resilience/coordinator.js +23 -1
  42. package/dist/services/provider-resilience/request-gate.js +7 -2
  43. package/dist/services/redaction.js +19 -2
  44. package/dist/services/settings-coordinator.d.ts +3 -1
  45. package/dist/services/settings-coordinator.js +40 -8
  46. package/dist/services/settings-document-repository.d.ts +8 -1
  47. package/dist/services/settings-document-repository.js +22 -1
  48. package/dist/tui-ui/transcript-inspector-layout.js +13 -6
  49. package/dist/web/event-hub.d.ts +2 -0
  50. package/dist/web/event-hub.js +43 -6
  51. package/dist/web/file-read-service.d.ts +2 -0
  52. package/dist/web/file-read-service.js +39 -12
  53. package/dist/web/git-read-model-service.js +7 -0
  54. package/dist/web/protocol.d.ts +51 -3
  55. package/dist/web/protocol.js +38 -2
  56. package/dist/web/review-service.d.ts +1 -0
  57. package/dist/web/review-service.js +1 -0
  58. package/dist/web/server.js +30 -6
  59. package/dist/web/session-runtime-registry.d.ts +124 -0
  60. package/dist/web/session-runtime-registry.js +448 -0
  61. package/dist/web/terminal-manager.js +23 -4
  62. package/dist/web/terminal-server.js +35 -6
  63. package/dist/web/workbench-controller.d.ts +27 -3
  64. package/dist/web/workbench-controller.js +557 -134
  65. package/dist/web/workspace-mutation-arbiter.d.ts +54 -0
  66. package/dist/web/workspace-mutation-arbiter.js +267 -0
  67. package/dist/web-client/assets/{DiffViewer-eaQNsnCh.js → DiffViewer-D6mG729y.js} +1 -1
  68. package/dist/web-client/assets/FilesPanel-CCDoAZ1J.js +2 -0
  69. package/dist/web-client/assets/{GitPanel-CnU4XVr7.js → GitPanel-DtNgiH7A.js} +1 -1
  70. package/dist/web-client/assets/ReviewPanel-CKEBSt6P.js +1 -0
  71. package/dist/web-client/assets/{TerminalPanel-Q5mSSsoK.js → TerminalPanel-CNxMaBLp.js} +14 -14
  72. package/dist/web-client/assets/index-BBvNg3By.css +1 -0
  73. package/dist/web-client/assets/index-C6TDJwMC.js +17 -0
  74. package/dist/web-client/index.html +4 -4
  75. package/docs/architecture/v0.3.3-web-api.yaml +3205 -0
  76. package/docs/architecture/v0.3.4-stabilization-contract.md +32 -0
  77. package/docs/migration/v0.3.2-to-v0.3.3.md +62 -0
  78. package/docs/migration/v0.3.3-to-v0.3.4.md +36 -0
  79. package/docs/plan/v0.3.3-plan.md +1113 -0
  80. package/docs/plan/v0.3.4-stabilization-plan.md +89 -0
  81. package/docs/test/v0.3.3-web-workbench-e2e-plan.md +79 -0
  82. package/docs/test/v0.3.4-stabilization-e2e-plan.md +54 -0
  83. package/npm-shrinkwrap.json +25 -25
  84. package/package.json +10 -1
  85. package/dist/cli.d.ts.map +0 -1
  86. package/dist/cli.js.map +0 -1
  87. package/dist/commands/context-commands.d.ts.map +0 -1
  88. package/dist/commands/context-commands.js.map +0 -1
  89. package/dist/commands/context-tool-command-handlers.d.ts.map +0 -1
  90. package/dist/commands/context-tool-command-handlers.js.map +0 -1
  91. package/dist/commands/core-command-handlers.d.ts.map +0 -1
  92. package/dist/commands/core-command-handlers.js.map +0 -1
  93. package/dist/commands/diagnostic-command-handlers.d.ts.map +0 -1
  94. package/dist/commands/diagnostic-command-handlers.js.map +0 -1
  95. package/dist/commands/diagnostic-commands.d.ts.map +0 -1
  96. package/dist/commands/diagnostic-commands.js.map +0 -1
  97. package/dist/commands/index.d.ts.map +0 -1
  98. package/dist/commands/index.js.map +0 -1
  99. package/dist/commands/model-command-handlers.d.ts.map +0 -1
  100. package/dist/commands/model-command-handlers.js.map +0 -1
  101. package/dist/commands/model-commands.d.ts.map +0 -1
  102. package/dist/commands/model-commands.js.map +0 -1
  103. package/dist/commands/parser.d.ts.map +0 -1
  104. package/dist/commands/parser.js.map +0 -1
  105. package/dist/commands/registry.d.ts.map +0 -1
  106. package/dist/commands/registry.js.map +0 -1
  107. package/dist/commands/session-command-handlers.d.ts.map +0 -1
  108. package/dist/commands/session-command-handlers.js.map +0 -1
  109. package/dist/commands/session-commands.d.ts.map +0 -1
  110. package/dist/commands/session-commands.js.map +0 -1
  111. package/dist/commands/system-commands.d.ts.map +0 -1
  112. package/dist/commands/system-commands.js.map +0 -1
  113. package/dist/commands/target-command.d.ts.map +0 -1
  114. package/dist/commands/target-command.js.map +0 -1
  115. package/dist/commands/tool-commands.d.ts.map +0 -1
  116. package/dist/commands/tool-commands.js.map +0 -1
  117. package/dist/commands/types.d.ts.map +0 -1
  118. package/dist/commands/types.js.map +0 -1
  119. package/dist/commands/workflow-command-handlers.d.ts.map +0 -1
  120. package/dist/commands/workflow-command-handlers.js.map +0 -1
  121. package/dist/commands/workflow-commands.d.ts.map +0 -1
  122. package/dist/commands/workflow-commands.js.map +0 -1
  123. package/dist/core/checkpoint.d.ts.map +0 -1
  124. package/dist/core/checkpoint.js.map +0 -1
  125. package/dist/core/cost-tracker.d.ts.map +0 -1
  126. package/dist/core/cost-tracker.js.map +0 -1
  127. package/dist/core/security-warning.d.ts.map +0 -1
  128. package/dist/core/security-warning.js.map +0 -1
  129. package/dist/core/strategy-tracker.d.ts.map +0 -1
  130. package/dist/core/strategy-tracker.js.map +0 -1
  131. package/dist/core/tool-artifacts.d.ts.map +0 -1
  132. package/dist/core/tool-artifacts.js.map +0 -1
  133. package/dist/core/warn-dedup.d.ts.map +0 -1
  134. package/dist/core/warn-dedup.js.map +0 -1
  135. package/dist/framework/agent-mode.d.ts.map +0 -1
  136. package/dist/framework/agent-mode.js.map +0 -1
  137. package/dist/framework/external-assertion.d.ts.map +0 -1
  138. package/dist/framework/external-assertion.js.map +0 -1
  139. package/dist/framework/index.d.ts.map +0 -1
  140. package/dist/framework/index.js.map +0 -1
  141. package/dist/framework/loop-budget-contract.d.ts.map +0 -1
  142. package/dist/framework/loop-budget-contract.js.map +0 -1
  143. package/dist/framework/prompt.d.ts.map +0 -1
  144. package/dist/framework/prompt.js.map +0 -1
  145. package/dist/framework/query.d.ts.map +0 -1
  146. package/dist/framework/query.js.map +0 -1
  147. package/dist/framework/stop-decision.d.ts.map +0 -1
  148. package/dist/framework/stop-decision.js.map +0 -1
  149. package/dist/framework/store.d.ts.map +0 -1
  150. package/dist/framework/store.js.map +0 -1
  151. package/dist/framework/tool-call-orchestrator.d.ts.map +0 -1
  152. package/dist/framework/tool-call-orchestrator.js.map +0 -1
  153. package/dist/framework/tool-serializer.d.ts.map +0 -1
  154. package/dist/framework/tool-serializer.js.map +0 -1
  155. package/dist/framework/tool-state.d.ts.map +0 -1
  156. package/dist/framework/tool-state.js.map +0 -1
  157. package/dist/framework/tool.d.ts.map +0 -1
  158. package/dist/framework/tool.js.map +0 -1
  159. package/dist/harness/assembler.d.ts.map +0 -1
  160. package/dist/harness/assembler.js.map +0 -1
  161. package/dist/harness/capability-profile.d.ts.map +0 -1
  162. package/dist/harness/capability-profile.js.map +0 -1
  163. package/dist/harness/capsule.d.ts.map +0 -1
  164. package/dist/harness/capsule.js.map +0 -1
  165. package/dist/harness/compact-benchmark-corpus.d.ts.map +0 -1
  166. package/dist/harness/compact-benchmark-corpus.js.map +0 -1
  167. package/dist/harness/context-harness.d.ts.map +0 -1
  168. package/dist/harness/context-harness.js.map +0 -1
  169. package/dist/harness/contract.d.ts.map +0 -1
  170. package/dist/harness/contract.js.map +0 -1
  171. package/dist/harness/drift-guard.d.ts.map +0 -1
  172. package/dist/harness/drift-guard.js.map +0 -1
  173. package/dist/harness/evidence.d.ts.map +0 -1
  174. package/dist/harness/evidence.js.map +0 -1
  175. package/dist/harness/index.d.ts.map +0 -1
  176. package/dist/harness/index.js.map +0 -1
  177. package/dist/harness/intent.d.ts.map +0 -1
  178. package/dist/harness/intent.js.map +0 -1
  179. package/dist/harness/ledger.d.ts.map +0 -1
  180. package/dist/harness/ledger.js.map +0 -1
  181. package/dist/harness/progress-controller.d.ts.map +0 -1
  182. package/dist/harness/progress-controller.js.map +0 -1
  183. package/dist/harness/state.d.ts.map +0 -1
  184. package/dist/harness/state.js.map +0 -1
  185. package/dist/harness/stop-controller.d.ts.map +0 -1
  186. package/dist/harness/stop-controller.js.map +0 -1
  187. package/dist/harness/turn-summary.d.ts.map +0 -1
  188. package/dist/harness/turn-summary.js.map +0 -1
  189. package/dist/harness/types.d.ts.map +0 -1
  190. package/dist/harness/types.js.map +0 -1
  191. package/dist/harness/verification.d.ts.map +0 -1
  192. package/dist/harness/verification.js.map +0 -1
  193. package/dist/index.d.ts.map +0 -1
  194. package/dist/index.js.map +0 -1
  195. package/dist/memory/embeddings.d.ts.map +0 -1
  196. package/dist/memory/embeddings.js.map +0 -1
  197. package/dist/memory/entrypoint.d.ts.map +0 -1
  198. package/dist/memory/entrypoint.js.map +0 -1
  199. package/dist/memory/index.d.ts.map +0 -1
  200. package/dist/memory/index.js.map +0 -1
  201. package/dist/memory/prompt-context.d.ts.map +0 -1
  202. package/dist/memory/prompt-context.js.map +0 -1
  203. package/dist/memory/prompts.d.ts.map +0 -1
  204. package/dist/memory/prompts.js.map +0 -1
  205. package/dist/memory/relevant-finder.d.ts.map +0 -1
  206. package/dist/memory/relevant-finder.js.map +0 -1
  207. package/dist/memory/semantic-config.d.ts.map +0 -1
  208. package/dist/memory/semantic-config.js.map +0 -1
  209. package/dist/memory/semantic-search.d.ts.map +0 -1
  210. package/dist/memory/semantic-search.js.map +0 -1
  211. package/dist/memory/storage.d.ts.map +0 -1
  212. package/dist/memory/storage.js.map +0 -1
  213. package/dist/memory/store.d.ts.map +0 -1
  214. package/dist/memory/store.js.map +0 -1
  215. package/dist/memory/team-paths.d.ts.map +0 -1
  216. package/dist/memory/team-paths.js.map +0 -1
  217. package/dist/memory/types.d.ts.map +0 -1
  218. package/dist/memory/types.js.map +0 -1
  219. package/dist/memory/validation.d.ts.map +0 -1
  220. package/dist/memory/validation.js.map +0 -1
  221. package/dist/memory/vector-store.d.ts.map +0 -1
  222. package/dist/memory/vector-store.js.map +0 -1
  223. package/dist/migration/command.d.ts.map +0 -1
  224. package/dist/migration/command.js.map +0 -1
  225. package/dist/migration/index.d.ts.map +0 -1
  226. package/dist/migration/index.js.map +0 -1
  227. package/dist/migration/migrate.d.ts.map +0 -1
  228. package/dist/migration/migrate.js.map +0 -1
  229. package/dist/migration/types.d.ts.map +0 -1
  230. package/dist/migration/types.js.map +0 -1
  231. package/dist/print-ui/launch.d.ts.map +0 -1
  232. package/dist/print-ui/launch.js.map +0 -1
  233. package/dist/product/environment.d.ts.map +0 -1
  234. package/dist/product/environment.js.map +0 -1
  235. package/dist/product/identity.d.ts.map +0 -1
  236. package/dist/product/identity.js.map +0 -1
  237. package/dist/product/index.d.ts.map +0 -1
  238. package/dist/product/index.js.map +0 -1
  239. package/dist/product/paths.d.ts.map +0 -1
  240. package/dist/product/paths.js.map +0 -1
  241. package/dist/product/version.d.ts.map +0 -1
  242. package/dist/product/version.js.map +0 -1
  243. package/dist/runtime/agent-loop.d.ts.map +0 -1
  244. package/dist/runtime/agent-loop.js.map +0 -1
  245. package/dist/runtime/agent-runtime-controller.d.ts.map +0 -1
  246. package/dist/runtime/agent-runtime-controller.js.map +0 -1
  247. package/dist/runtime/agent-runtime-protocol.d.ts.map +0 -1
  248. package/dist/runtime/agent-runtime-protocol.js.map +0 -1
  249. package/dist/runtime/agent-runtime-runner.d.ts.map +0 -1
  250. package/dist/runtime/agent-runtime-runner.js.map +0 -1
  251. package/dist/runtime/agent-status.d.ts.map +0 -1
  252. package/dist/runtime/agent-status.js.map +0 -1
  253. package/dist/runtime/aggregate-tool-presenter.d.ts.map +0 -1
  254. package/dist/runtime/aggregate-tool-presenter.js.map +0 -1
  255. package/dist/runtime/batch-read-service.d.ts.map +0 -1
  256. package/dist/runtime/batch-read-service.js.map +0 -1
  257. package/dist/runtime/builtin-tool-provider.d.ts.map +0 -1
  258. package/dist/runtime/builtin-tool-provider.js.map +0 -1
  259. package/dist/runtime/capabilities/compiler.d.ts.map +0 -1
  260. package/dist/runtime/capabilities/compiler.js.map +0 -1
  261. package/dist/runtime/capabilities/index.d.ts.map +0 -1
  262. package/dist/runtime/capabilities/index.js.map +0 -1
  263. package/dist/runtime/capabilities/types.d.ts.map +0 -1
  264. package/dist/runtime/capabilities/types.js.map +0 -1
  265. package/dist/runtime/capability-receipt-journal.d.ts.map +0 -1
  266. package/dist/runtime/capability-receipt-journal.js.map +0 -1
  267. package/dist/runtime/capability-step-factory.d.ts.map +0 -1
  268. package/dist/runtime/capability-step-factory.js.map +0 -1
  269. package/dist/runtime/compact-transaction.d.ts.map +0 -1
  270. package/dist/runtime/compact-transaction.js.map +0 -1
  271. package/dist/runtime/composer/buffer.d.ts.map +0 -1
  272. package/dist/runtime/composer/buffer.js.map +0 -1
  273. package/dist/runtime/composer/grapheme.d.ts.map +0 -1
  274. package/dist/runtime/composer/grapheme.js.map +0 -1
  275. package/dist/runtime/composer/history.d.ts.map +0 -1
  276. package/dist/runtime/composer/history.js.map +0 -1
  277. package/dist/runtime/composer/layout.d.ts.map +0 -1
  278. package/dist/runtime/composer/layout.js.map +0 -1
  279. package/dist/runtime/core-tools/descriptors.d.ts.map +0 -1
  280. package/dist/runtime/core-tools/descriptors.js.map +0 -1
  281. package/dist/runtime/durable-tool-receipt-reader.d.ts.map +0 -1
  282. package/dist/runtime/durable-tool-receipt-reader.js.map +0 -1
  283. package/dist/runtime/first-party-core-provider.d.ts.map +0 -1
  284. package/dist/runtime/first-party-core-provider.js.map +0 -1
  285. package/dist/runtime/first-party-long-tail-provider.d.ts.map +0 -1
  286. package/dist/runtime/first-party-long-tail-provider.js.map +0 -1
  287. package/dist/runtime/first-party-tool-services.d.ts.map +0 -1
  288. package/dist/runtime/first-party-tool-services.js.map +0 -1
  289. package/dist/runtime/first-party-tool-universe.d.ts.map +0 -1
  290. package/dist/runtime/first-party-tool-universe.js.map +0 -1
  291. package/dist/runtime/goal-lifecycle-v2.d.ts.map +0 -1
  292. package/dist/runtime/goal-lifecycle-v2.js.map +0 -1
  293. package/dist/runtime/goal-runtime-coordinator.d.ts.map +0 -1
  294. package/dist/runtime/goal-runtime-coordinator.js.map +0 -1
  295. package/dist/runtime/goals/completion-audit.d.ts.map +0 -1
  296. package/dist/runtime/goals/completion-audit.js.map +0 -1
  297. package/dist/runtime/goals/evidence.d.ts.map +0 -1
  298. package/dist/runtime/goals/evidence.js.map +0 -1
  299. package/dist/runtime/goals/objective.d.ts.map +0 -1
  300. package/dist/runtime/goals/objective.js.map +0 -1
  301. package/dist/runtime/goals/presentation.d.ts.map +0 -1
  302. package/dist/runtime/goals/presentation.js.map +0 -1
  303. package/dist/runtime/goals/types.d.ts.map +0 -1
  304. package/dist/runtime/goals/types.js.map +0 -1
  305. package/dist/runtime/harness-confluence.d.ts.map +0 -1
  306. package/dist/runtime/harness-confluence.js.map +0 -1
  307. package/dist/runtime/harness-eval.d.ts.map +0 -1
  308. package/dist/runtime/harness-eval.js.map +0 -1
  309. package/dist/runtime/harness-metrics.d.ts.map +0 -1
  310. package/dist/runtime/harness-metrics.js.map +0 -1
  311. package/dist/runtime/legacy-session-importer.d.ts.map +0 -1
  312. package/dist/runtime/legacy-session-importer.js.map +0 -1
  313. package/dist/runtime/legacy-thread-materializer.d.ts.map +0 -1
  314. package/dist/runtime/legacy-thread-materializer.js.map +0 -1
  315. package/dist/runtime/long-tail-tools/descriptors.d.ts.map +0 -1
  316. package/dist/runtime/long-tail-tools/descriptors.js.map +0 -1
  317. package/dist/runtime/loop-budget.d.ts.map +0 -1
  318. package/dist/runtime/loop-budget.js.map +0 -1
  319. package/dist/runtime/mcp/first-party-mcp-adapter.d.ts.map +0 -1
  320. package/dist/runtime/mcp/first-party-mcp-adapter.js.map +0 -1
  321. package/dist/runtime/mcp/first-party-mcp-config.d.ts.map +0 -1
  322. package/dist/runtime/mcp/first-party-mcp-config.js.map +0 -1
  323. package/dist/runtime/mcp/index.d.ts.map +0 -1
  324. package/dist/runtime/mcp/index.js.map +0 -1
  325. package/dist/runtime/mcp/lazy-mcp-runtime.d.ts.map +0 -1
  326. package/dist/runtime/mcp/lazy-mcp-runtime.js.map +0 -1
  327. package/dist/runtime/mcp/types.d.ts.map +0 -1
  328. package/dist/runtime/mcp/types.js.map +0 -1
  329. package/dist/runtime/model-coordinator.d.ts.map +0 -1
  330. package/dist/runtime/model-coordinator.js.map +0 -1
  331. package/dist/runtime/orion-runtime-v1.d.ts.map +0 -1
  332. package/dist/runtime/orion-runtime-v1.js.map +0 -1
  333. package/dist/runtime/orion-session-runner.d.ts.map +0 -1
  334. package/dist/runtime/orion-session-runner.js.map +0 -1
  335. package/dist/runtime/plan-review.d.ts.map +0 -1
  336. package/dist/runtime/plan-review.js.map +0 -1
  337. package/dist/runtime/product-bootstrap.d.ts.map +0 -1
  338. package/dist/runtime/product-bootstrap.js.map +0 -1
  339. package/dist/runtime/product-orion-runtime.d.ts.map +0 -1
  340. package/dist/runtime/product-orion-runtime.js.map +0 -1
  341. package/dist/runtime/prompts/index.d.ts.map +0 -1
  342. package/dist/runtime/prompts/index.js.map +0 -1
  343. package/dist/runtime/prompts/prompt-registry.d.ts.map +0 -1
  344. package/dist/runtime/prompts/prompt-registry.js.map +0 -1
  345. package/dist/runtime/prompts/types.d.ts.map +0 -1
  346. package/dist/runtime/prompts/types.js.map +0 -1
  347. package/dist/runtime/protocol/canonical.d.ts.map +0 -1
  348. package/dist/runtime/protocol/canonical.js.map +0 -1
  349. package/dist/runtime/protocol/index.d.ts.map +0 -1
  350. package/dist/runtime/protocol/index.js.map +0 -1
  351. package/dist/runtime/protocol/runtime-protocol-v1.d.ts.map +0 -1
  352. package/dist/runtime/protocol/runtime-protocol-v1.js.map +0 -1
  353. package/dist/runtime/release-receipts.d.ts.map +0 -1
  354. package/dist/runtime/release-receipts.js.map +0 -1
  355. package/dist/runtime/resource-scope.d.ts.map +0 -1
  356. package/dist/runtime/resource-scope.js.map +0 -1
  357. package/dist/runtime/rich-text/ansi-parser.d.ts.map +0 -1
  358. package/dist/runtime/rich-text/ansi-parser.js.map +0 -1
  359. package/dist/runtime/rich-text/layout.d.ts.map +0 -1
  360. package/dist/runtime/rich-text/layout.js.map +0 -1
  361. package/dist/runtime/rich-text/markdown-parser.d.ts.map +0 -1
  362. package/dist/runtime/rich-text/markdown-parser.js.map +0 -1
  363. package/dist/runtime/rich-text/sanitizer.d.ts.map +0 -1
  364. package/dist/runtime/rich-text/sanitizer.js.map +0 -1
  365. package/dist/runtime/rich-text/types.d.ts.map +0 -1
  366. package/dist/runtime/rich-text/types.js.map +0 -1
  367. package/dist/runtime/runtime-event-buffer.d.ts.map +0 -1
  368. package/dist/runtime/runtime-event-buffer.js.map +0 -1
  369. package/dist/runtime/runtime-services.d.ts.map +0 -1
  370. package/dist/runtime/runtime-services.js.map +0 -1
  371. package/dist/runtime/session-composer-control.d.ts.map +0 -1
  372. package/dist/runtime/session-composer-control.js.map +0 -1
  373. package/dist/runtime/session-history-recovery.d.ts.map +0 -1
  374. package/dist/runtime/session-history-recovery.js.map +0 -1
  375. package/dist/runtime/skills/bounded-lru-cache.d.ts.map +0 -1
  376. package/dist/runtime/skills/bounded-lru-cache.js.map +0 -1
  377. package/dist/runtime/skills/filesystem-skill-provider.d.ts.map +0 -1
  378. package/dist/runtime/skills/filesystem-skill-provider.js.map +0 -1
  379. package/dist/runtime/skills/index.d.ts.map +0 -1
  380. package/dist/runtime/skills/index.js.map +0 -1
  381. package/dist/runtime/skills/lazy-skill-runtime.d.ts.map +0 -1
  382. package/dist/runtime/skills/lazy-skill-runtime.js.map +0 -1
  383. package/dist/runtime/skills/types.d.ts.map +0 -1
  384. package/dist/runtime/skills/types.js.map +0 -1
  385. package/dist/runtime/step-snapshot.d.ts.map +0 -1
  386. package/dist/runtime/step-snapshot.js.map +0 -1
  387. package/dist/runtime/subagent-thread-runtime.d.ts.map +0 -1
  388. package/dist/runtime/subagent-thread-runtime.js.map +0 -1
  389. package/dist/runtime/subagents/budget.d.ts.map +0 -1
  390. package/dist/runtime/subagents/budget.js.map +0 -1
  391. package/dist/runtime/subagents/child-executor-guard.d.ts.map +0 -1
  392. package/dist/runtime/subagents/child-executor-guard.js.map +0 -1
  393. package/dist/runtime/subagents/context-builder.d.ts.map +0 -1
  394. package/dist/runtime/subagents/context-builder.js.map +0 -1
  395. package/dist/runtime/subagents/index.d.ts.map +0 -1
  396. package/dist/runtime/subagents/index.js.map +0 -1
  397. package/dist/runtime/subagents/parent-step-fork.d.ts.map +0 -1
  398. package/dist/runtime/subagents/parent-step-fork.js.map +0 -1
  399. package/dist/runtime/subagents/policy.d.ts.map +0 -1
  400. package/dist/runtime/subagents/policy.js.map +0 -1
  401. package/dist/runtime/subagents/presets.d.ts.map +0 -1
  402. package/dist/runtime/subagents/presets.js.map +0 -1
  403. package/dist/runtime/subagents/production.d.ts.map +0 -1
  404. package/dist/runtime/subagents/production.js.map +0 -1
  405. package/dist/runtime/subagents/provider-gate.d.ts.map +0 -1
  406. package/dist/runtime/subagents/provider-gate.js.map +0 -1
  407. package/dist/runtime/subagents/receipt-journal.d.ts.map +0 -1
  408. package/dist/runtime/subagents/receipt-journal.js.map +0 -1
  409. package/dist/runtime/subagents/research-artifact.d.ts.map +0 -1
  410. package/dist/runtime/subagents/research-artifact.js.map +0 -1
  411. package/dist/runtime/subagents/research-citation.d.ts.map +0 -1
  412. package/dist/runtime/subagents/research-citation.js.map +0 -1
  413. package/dist/runtime/subagents/research-contract.d.ts.map +0 -1
  414. package/dist/runtime/subagents/research-contract.js.map +0 -1
  415. package/dist/runtime/subagents/research-quality.d.ts.map +0 -1
  416. package/dist/runtime/subagents/research-quality.js.map +0 -1
  417. package/dist/runtime/subagents/research-renderer.d.ts.map +0 -1
  418. package/dist/runtime/subagents/research-renderer.js.map +0 -1
  419. package/dist/runtime/subagents/research-types.d.ts.map +0 -1
  420. package/dist/runtime/subagents/research-types.js.map +0 -1
  421. package/dist/runtime/subagents/result-parser.d.ts.map +0 -1
  422. package/dist/runtime/subagents/result-parser.js.map +0 -1
  423. package/dist/runtime/subagents/runner.d.ts.map +0 -1
  424. package/dist/runtime/subagents/runner.js.map +0 -1
  425. package/dist/runtime/subagents/runtime-contract.d.ts.map +0 -1
  426. package/dist/runtime/subagents/runtime-contract.js.map +0 -1
  427. package/dist/runtime/subagents/runtime-integration.d.ts.map +0 -1
  428. package/dist/runtime/subagents/runtime-integration.js.map +0 -1
  429. package/dist/runtime/subagents/supervisor.d.ts.map +0 -1
  430. package/dist/runtime/subagents/supervisor.js.map +0 -1
  431. package/dist/runtime/subagents/tool.d.ts.map +0 -1
  432. package/dist/runtime/subagents/tool.js.map +0 -1
  433. package/dist/runtime/subagents/types.d.ts.map +0 -1
  434. package/dist/runtime/subagents/types.js.map +0 -1
  435. package/dist/runtime/subagents/web-research-adapter.d.ts.map +0 -1
  436. package/dist/runtime/subagents/web-research-adapter.js.map +0 -1
  437. package/dist/runtime/task-context-service.d.ts.map +0 -1
  438. package/dist/runtime/task-context-service.js.map +0 -1
  439. package/dist/runtime/thread-admission.d.ts.map +0 -1
  440. package/dist/runtime/thread-admission.js.map +0 -1
  441. package/dist/runtime/thread-compact-persistence.d.ts.map +0 -1
  442. package/dist/runtime/thread-compact-persistence.js.map +0 -1
  443. package/dist/runtime/thread-event-store.d.ts.map +0 -1
  444. package/dist/runtime/thread-event-store.js.map +0 -1
  445. package/dist/runtime/thread-projection.d.ts.map +0 -1
  446. package/dist/runtime/thread-projection.js.map +0 -1
  447. package/dist/runtime/thread-runtime.d.ts.map +0 -1
  448. package/dist/runtime/thread-runtime.js.map +0 -1
  449. package/dist/runtime/thread-session-index.d.ts.map +0 -1
  450. package/dist/runtime/thread-session-index.js.map +0 -1
  451. package/dist/runtime/thread-session-view.d.ts.map +0 -1
  452. package/dist/runtime/thread-session-view.js.map +0 -1
  453. package/dist/runtime/thread-tool-journal.d.ts.map +0 -1
  454. package/dist/runtime/thread-tool-journal.js.map +0 -1
  455. package/dist/runtime/thread-ui-adapter.d.ts.map +0 -1
  456. package/dist/runtime/thread-ui-adapter.js.map +0 -1
  457. package/dist/runtime/tool-detail-repository.d.ts.map +0 -1
  458. package/dist/runtime/tool-detail-repository.js.map +0 -1
  459. package/dist/runtime/tool-gateway.d.ts.map +0 -1
  460. package/dist/runtime/tool-gateway.js.map +0 -1
  461. package/dist/runtime/tool-output-presentation.d.ts.map +0 -1
  462. package/dist/runtime/tool-output-presentation.js.map +0 -1
  463. package/dist/runtime/tool-receipt-validator.d.ts.map +0 -1
  464. package/dist/runtime/tool-receipt-validator.js.map +0 -1
  465. package/dist/runtime/turn-commit.d.ts.map +0 -1
  466. package/dist/runtime/turn-commit.js.map +0 -1
  467. package/dist/runtime/turn-controller.d.ts.map +0 -1
  468. package/dist/runtime/turn-controller.js.map +0 -1
  469. package/dist/runtime/ui-events.d.ts.map +0 -1
  470. package/dist/runtime/ui-events.js.map +0 -1
  471. package/dist/runtime/ui-view-model.d.ts.map +0 -1
  472. package/dist/runtime/ui-view-model.js.map +0 -1
  473. package/dist/services/atomic-write.d.ts.map +0 -1
  474. package/dist/services/atomic-write.js.map +0 -1
  475. package/dist/services/auth/auth.d.ts.map +0 -1
  476. package/dist/services/auth/auth.js.map +0 -1
  477. package/dist/services/auth/aws.d.ts.map +0 -1
  478. package/dist/services/auth/aws.js.map +0 -1
  479. package/dist/services/auth/index.d.ts.map +0 -1
  480. package/dist/services/auth/index.js.map +0 -1
  481. package/dist/services/auto-fix/autoFixConfig.d.ts.map +0 -1
  482. package/dist/services/auto-fix/autoFixConfig.js.map +0 -1
  483. package/dist/services/auto-fix/autoFixHook.d.ts.map +0 -1
  484. package/dist/services/auto-fix/autoFixHook.js.map +0 -1
  485. package/dist/services/auto-fix/autoFixRunner.d.ts.map +0 -1
  486. package/dist/services/auto-fix/autoFixRunner.js.map +0 -1
  487. package/dist/services/auto-fix/index.d.ts.map +0 -1
  488. package/dist/services/auto-fix/index.js.map +0 -1
  489. package/dist/services/bounded-response.d.ts.map +0 -1
  490. package/dist/services/bounded-response.js.map +0 -1
  491. package/dist/services/commit-plan.d.ts.map +0 -1
  492. package/dist/services/commit-plan.js.map +0 -1
  493. package/dist/services/compact/auto-compact.d.ts.map +0 -1
  494. package/dist/services/compact/auto-compact.js.map +0 -1
  495. package/dist/services/compact/compact.d.ts.map +0 -1
  496. package/dist/services/compact/compact.js.map +0 -1
  497. package/dist/services/compact/coordinator.d.ts.map +0 -1
  498. package/dist/services/compact/coordinator.js.map +0 -1
  499. package/dist/services/compact/fingerprint.d.ts.map +0 -1
  500. package/dist/services/compact/fingerprint.js.map +0 -1
  501. package/dist/services/compact/index.d.ts.map +0 -1
  502. package/dist/services/compact/index.js.map +0 -1
  503. package/dist/services/compact/planner.d.ts.map +0 -1
  504. package/dist/services/compact/planner.js.map +0 -1
  505. package/dist/services/compact/semantic-summary.d.ts.map +0 -1
  506. package/dist/services/compact/semantic-summary.js.map +0 -1
  507. package/dist/services/compact/summary-generator.d.ts.map +0 -1
  508. package/dist/services/compact/summary-generator.js.map +0 -1
  509. package/dist/services/compact/tool-call-groups.d.ts.map +0 -1
  510. package/dist/services/compact/tool-call-groups.js.map +0 -1
  511. package/dist/services/concurrent-sessions.d.ts.map +0 -1
  512. package/dist/services/concurrent-sessions.js.map +0 -1
  513. package/dist/services/config-dir.d.ts.map +0 -1
  514. package/dist/services/config-dir.js.map +0 -1
  515. package/dist/services/config.d.ts.map +0 -1
  516. package/dist/services/config.js.map +0 -1
  517. package/dist/services/diagnostic-tracking/diagnosticTracking.d.ts.map +0 -1
  518. package/dist/services/diagnostic-tracking/diagnosticTracking.js.map +0 -1
  519. package/dist/services/diagnostic-tracking/formatter.d.ts.map +0 -1
  520. package/dist/services/diagnostic-tracking/formatter.js.map +0 -1
  521. package/dist/services/diagnostic-tracking/index.d.ts.map +0 -1
  522. package/dist/services/diagnostic-tracking/index.js.map +0 -1
  523. package/dist/services/diagnostic-tracking/types.d.ts.map +0 -1
  524. package/dist/services/diagnostic-tracking/types.js.map +0 -1
  525. package/dist/services/doctor.d.ts.map +0 -1
  526. package/dist/services/doctor.js.map +0 -1
  527. package/dist/services/effort.d.ts.map +0 -1
  528. package/dist/services/effort.js.map +0 -1
  529. package/dist/services/file-context.d.ts.map +0 -1
  530. package/dist/services/file-context.js.map +0 -1
  531. package/dist/services/file-glob.d.ts.map +0 -1
  532. package/dist/services/file-glob.js.map +0 -1
  533. package/dist/services/file-lock.d.ts.map +0 -1
  534. package/dist/services/file-lock.js.map +0 -1
  535. package/dist/services/format.d.ts.map +0 -1
  536. package/dist/services/format.js.map +0 -1
  537. package/dist/services/global-config.d.ts.map +0 -1
  538. package/dist/services/global-config.js.map +0 -1
  539. package/dist/services/goal-storage.d.ts.map +0 -1
  540. package/dist/services/goal-storage.js.map +0 -1
  541. package/dist/services/llm.d.ts.map +0 -1
  542. package/dist/services/llm.js.map +0 -1
  543. package/dist/services/mcp/index.d.ts.map +0 -1
  544. package/dist/services/mcp/index.js.map +0 -1
  545. package/dist/services/mcp/transports.d.ts.map +0 -1
  546. package/dist/services/mcp/transports.js.map +0 -1
  547. package/dist/services/memory.d.ts.map +0 -1
  548. package/dist/services/memory.js.map +0 -1
  549. package/dist/services/model-catalog.d.ts.map +0 -1
  550. package/dist/services/model-catalog.js.map +0 -1
  551. package/dist/services/model-client-pool.d.ts.map +0 -1
  552. package/dist/services/model-client-pool.js.map +0 -1
  553. package/dist/services/model-context.d.ts.map +0 -1
  554. package/dist/services/model-context.js.map +0 -1
  555. package/dist/services/model-registry.d.ts.map +0 -1
  556. package/dist/services/model-registry.js.map +0 -1
  557. package/dist/services/project-instructions.d.ts.map +0 -1
  558. package/dist/services/project-instructions.js.map +0 -1
  559. package/dist/services/prompt-context.d.ts.map +0 -1
  560. package/dist/services/prompt-context.js.map +0 -1
  561. package/dist/services/provider-diagnostics.d.ts.map +0 -1
  562. package/dist/services/provider-diagnostics.js.map +0 -1
  563. package/dist/services/provider-resilience/circuit-breaker.d.ts.map +0 -1
  564. package/dist/services/provider-resilience/circuit-breaker.js.map +0 -1
  565. package/dist/services/provider-resilience/coordinator.d.ts.map +0 -1
  566. package/dist/services/provider-resilience/coordinator.js.map +0 -1
  567. package/dist/services/provider-resilience/error-classifier.d.ts.map +0 -1
  568. package/dist/services/provider-resilience/error-classifier.js.map +0 -1
  569. package/dist/services/provider-resilience/index.d.ts.map +0 -1
  570. package/dist/services/provider-resilience/index.js.map +0 -1
  571. package/dist/services/provider-resilience/request-gate.d.ts.map +0 -1
  572. package/dist/services/provider-resilience/request-gate.js.map +0 -1
  573. package/dist/services/provider-resilience/stream-recovery.d.ts.map +0 -1
  574. package/dist/services/provider-resilience/stream-recovery.js.map +0 -1
  575. package/dist/services/provider-resilience/types.d.ts.map +0 -1
  576. package/dist/services/provider-resilience/types.js.map +0 -1
  577. package/dist/services/redaction.d.ts.map +0 -1
  578. package/dist/services/redaction.js.map +0 -1
  579. package/dist/services/safe-project-reader.d.ts.map +0 -1
  580. package/dist/services/safe-project-reader.js.map +0 -1
  581. package/dist/services/session-index.d.ts.map +0 -1
  582. package/dist/services/session-index.js.map +0 -1
  583. package/dist/services/session-memory/index.d.ts.map +0 -1
  584. package/dist/services/session-memory/index.js.map +0 -1
  585. package/dist/services/session-memory/prompts.d.ts.map +0 -1
  586. package/dist/services/session-memory/prompts.js.map +0 -1
  587. package/dist/services/session-memory/sessionMemory.d.ts.map +0 -1
  588. package/dist/services/session-memory/sessionMemory.js.map +0 -1
  589. package/dist/services/session-storage.d.ts.map +0 -1
  590. package/dist/services/session-storage.js.map +0 -1
  591. package/dist/services/settings-coordinator.d.ts.map +0 -1
  592. package/dist/services/settings-coordinator.js.map +0 -1
  593. package/dist/services/settings-document-repository.d.ts.map +0 -1
  594. package/dist/services/settings-document-repository.js.map +0 -1
  595. package/dist/services/smart-routing.d.ts.map +0 -1
  596. package/dist/services/smart-routing.js.map +0 -1
  597. package/dist/services/storage-maintenance.d.ts.map +0 -1
  598. package/dist/services/storage-maintenance.js.map +0 -1
  599. package/dist/services/tool-allowlist.d.ts.map +0 -1
  600. package/dist/services/tool-allowlist.js.map +0 -1
  601. package/dist/services/usage-state.d.ts.map +0 -1
  602. package/dist/services/usage-state.js.map +0 -1
  603. package/dist/services/verification-profile.d.ts.map +0 -1
  604. package/dist/services/verification-profile.js.map +0 -1
  605. package/dist/services/web-search-adapters.d.ts.map +0 -1
  606. package/dist/services/web-search-adapters.js.map +0 -1
  607. package/dist/services/web-search-mcp.d.ts.map +0 -1
  608. package/dist/services/web-search-mcp.js.map +0 -1
  609. package/dist/services/web-search-provider.d.ts.map +0 -1
  610. package/dist/services/web-search-provider.js.map +0 -1
  611. package/dist/services/workspace-containment.d.ts.map +0 -1
  612. package/dist/services/workspace-containment.js.map +0 -1
  613. package/dist/services/workspace-diff.d.ts.map +0 -1
  614. package/dist/services/workspace-diff.js.map +0 -1
  615. package/dist/services/workspace-registry.d.ts.map +0 -1
  616. package/dist/services/workspace-registry.js.map +0 -1
  617. package/dist/services/workspace-state.d.ts.map +0 -1
  618. package/dist/services/workspace-state.js.map +0 -1
  619. package/dist/services/yaml-config.d.ts.map +0 -1
  620. package/dist/services/yaml-config.js.map +0 -1
  621. package/dist/terminal-ui/completion.d.ts.map +0 -1
  622. package/dist/terminal-ui/completion.js.map +0 -1
  623. package/dist/terminal-ui/editor.d.ts.map +0 -1
  624. package/dist/terminal-ui/editor.js.map +0 -1
  625. package/dist/terminal-ui/launch.d.ts.map +0 -1
  626. package/dist/terminal-ui/launch.js.map +0 -1
  627. package/dist/terminal-ui/output-queue.d.ts.map +0 -1
  628. package/dist/terminal-ui/output-queue.js.map +0 -1
  629. package/dist/terminal-ui/raw-editor.d.ts.map +0 -1
  630. package/dist/terminal-ui/raw-editor.js.map +0 -1
  631. package/dist/tools/_validate.d.ts.map +0 -1
  632. package/dist/tools/_validate.js.map +0 -1
  633. package/dist/tools/bash_security.d.ts.map +0 -1
  634. package/dist/tools/bash_security.js.map +0 -1
  635. package/dist/tools/core/common.d.ts.map +0 -1
  636. package/dist/tools/core/common.js.map +0 -1
  637. package/dist/tools/core/edit-file.d.ts.map +0 -1
  638. package/dist/tools/core/edit-file.js.map +0 -1
  639. package/dist/tools/core/exec-command.d.ts.map +0 -1
  640. package/dist/tools/core/exec-command.js.map +0 -1
  641. package/dist/tools/core/glob.d.ts.map +0 -1
  642. package/dist/tools/core/glob.js.map +0 -1
  643. package/dist/tools/core/grep.d.ts.map +0 -1
  644. package/dist/tools/core/grep.js.map +0 -1
  645. package/dist/tools/core/index.d.ts.map +0 -1
  646. package/dist/tools/core/index.js.map +0 -1
  647. package/dist/tools/core/list-files.d.ts.map +0 -1
  648. package/dist/tools/core/list-files.js.map +0 -1
  649. package/dist/tools/core/read-file.d.ts.map +0 -1
  650. package/dist/tools/core/read-file.js.map +0 -1
  651. package/dist/tools/core/write-file.d.ts.map +0 -1
  652. package/dist/tools/core/write-file.js.map +0 -1
  653. package/dist/tools/git.d.ts.map +0 -1
  654. package/dist/tools/git.js.map +0 -1
  655. package/dist/tools/lsp.d.ts.map +0 -1
  656. package/dist/tools/lsp.js.map +0 -1
  657. package/dist/tools/sandbox.d.ts.map +0 -1
  658. package/dist/tools/sandbox.js.map +0 -1
  659. package/dist/tools/todo.d.ts.map +0 -1
  660. package/dist/tools/todo.js.map +0 -1
  661. package/dist/tools/web.d.ts.map +0 -1
  662. package/dist/tools/web.js.map +0 -1
  663. package/dist/tui-core/frame.d.ts.map +0 -1
  664. package/dist/tui-core/frame.js.map +0 -1
  665. package/dist/tui-core/input-parser.d.ts.map +0 -1
  666. package/dist/tui-core/input-parser.js.map +0 -1
  667. package/dist/tui-core/style.d.ts.map +0 -1
  668. package/dist/tui-core/style.js.map +0 -1
  669. package/dist/tui-core/terminal-writer.d.ts.map +0 -1
  670. package/dist/tui-core/terminal-writer.js.map +0 -1
  671. package/dist/tui-ui/chrome-view-model.d.ts.map +0 -1
  672. package/dist/tui-ui/chrome-view-model.js.map +0 -1
  673. package/dist/tui-ui/inline-surface.d.ts.map +0 -1
  674. package/dist/tui-ui/inline-surface.js.map +0 -1
  675. package/dist/tui-ui/input-ownership.d.ts.map +0 -1
  676. package/dist/tui-ui/input-ownership.js.map +0 -1
  677. package/dist/tui-ui/launch.d.ts.map +0 -1
  678. package/dist/tui-ui/launch.js.map +0 -1
  679. package/dist/tui-ui/layout.d.ts.map +0 -1
  680. package/dist/tui-ui/layout.js.map +0 -1
  681. package/dist/tui-ui/pickers.d.ts.map +0 -1
  682. package/dist/tui-ui/pickers.js.map +0 -1
  683. package/dist/tui-ui/pixel-mascot.d.ts.map +0 -1
  684. package/dist/tui-ui/pixel-mascot.js.map +0 -1
  685. package/dist/tui-ui/render-scheduler.d.ts.map +0 -1
  686. package/dist/tui-ui/render-scheduler.js.map +0 -1
  687. package/dist/tui-ui/runner.d.ts.map +0 -1
  688. package/dist/tui-ui/runner.js.map +0 -1
  689. package/dist/tui-ui/state.d.ts.map +0 -1
  690. package/dist/tui-ui/state.js.map +0 -1
  691. package/dist/tui-ui/terminal-image.d.ts.map +0 -1
  692. package/dist/tui-ui/terminal-image.js.map +0 -1
  693. package/dist/tui-ui/theme-profile.d.ts.map +0 -1
  694. package/dist/tui-ui/theme-profile.js.map +0 -1
  695. package/dist/tui-ui/theme.d.ts.map +0 -1
  696. package/dist/tui-ui/theme.js.map +0 -1
  697. package/dist/tui-ui/transcript-cache.d.ts.map +0 -1
  698. package/dist/tui-ui/transcript-cache.js.map +0 -1
  699. package/dist/tui-ui/transcript-inspector-layout.d.ts.map +0 -1
  700. package/dist/tui-ui/transcript-inspector-layout.js.map +0 -1
  701. package/dist/tui-ui/transcript-inspector-surface.d.ts.map +0 -1
  702. package/dist/tui-ui/transcript-inspector-surface.js.map +0 -1
  703. package/dist/tui-ui/transcript-inspector.d.ts.map +0 -1
  704. package/dist/tui-ui/transcript-inspector.js.map +0 -1
  705. package/dist/tui-ui/transcript-layout.d.ts.map +0 -1
  706. package/dist/tui-ui/transcript-layout.js.map +0 -1
  707. package/dist/ui/box.d.ts.map +0 -1
  708. package/dist/ui/box.js.map +0 -1
  709. package/dist/ui/command-panel.d.ts.map +0 -1
  710. package/dist/ui/command-panel.js.map +0 -1
  711. package/dist/ui/file-completion.d.ts.map +0 -1
  712. package/dist/ui/file-completion.js.map +0 -1
  713. package/dist/ui/markdown.d.ts.map +0 -1
  714. package/dist/ui/markdown.js.map +0 -1
  715. package/dist/ui/multiline-input.d.ts.map +0 -1
  716. package/dist/ui/multiline-input.js.map +0 -1
  717. package/dist/ui/progress.d.ts.map +0 -1
  718. package/dist/ui/progress.js.map +0 -1
  719. package/dist/ui/shared/command-palette.d.ts.map +0 -1
  720. package/dist/ui/shared/command-palette.js.map +0 -1
  721. package/dist/ui/shared/command-suggestions.d.ts.map +0 -1
  722. package/dist/ui/shared/command-suggestions.js.map +0 -1
  723. package/dist/ui/shared/input-frame.d.ts.map +0 -1
  724. package/dist/ui/shared/input-frame.js.map +0 -1
  725. package/dist/ui/shared/text.d.ts.map +0 -1
  726. package/dist/ui/shared/text.js.map +0 -1
  727. package/dist/ui/shared/types.d.ts.map +0 -1
  728. package/dist/ui/shared/types.js.map +0 -1
  729. package/dist/ui/status-bar.d.ts.map +0 -1
  730. package/dist/ui/status-bar.js.map +0 -1
  731. package/dist/ui/stream-markdown.d.ts.map +0 -1
  732. package/dist/ui/stream-markdown.js.map +0 -1
  733. package/dist/ui/suggestions.d.ts.map +0 -1
  734. package/dist/ui/suggestions.js.map +0 -1
  735. package/dist/ui/tool-preview.d.ts.map +0 -1
  736. package/dist/ui/tool-preview.js.map +0 -1
  737. package/dist/ui/user-input.d.ts.map +0 -1
  738. package/dist/ui/user-input.js.map +0 -1
  739. package/dist/utils/debug-log.d.ts.map +0 -1
  740. package/dist/utils/debug-log.js.map +0 -1
  741. package/dist/utils/errors.d.ts.map +0 -1
  742. package/dist/utils/errors.js.map +0 -1
  743. package/dist/utils/json.d.ts.map +0 -1
  744. package/dist/utils/json.js.map +0 -1
  745. package/dist/utils/mask.d.ts.map +0 -1
  746. package/dist/utils/mask.js.map +0 -1
  747. package/dist/utils/observability.d.ts.map +0 -1
  748. package/dist/utils/observability.js.map +0 -1
  749. package/dist/utils/token-estimate.d.ts.map +0 -1
  750. package/dist/utils/token-estimate.js.map +0 -1
  751. package/dist/web/errors.d.ts.map +0 -1
  752. package/dist/web/errors.js.map +0 -1
  753. package/dist/web/event-hub.d.ts.map +0 -1
  754. package/dist/web/event-hub.js.map +0 -1
  755. package/dist/web/file-read-service.d.ts.map +0 -1
  756. package/dist/web/file-read-service.js.map +0 -1
  757. package/dist/web/git-read-model-service.d.ts.map +0 -1
  758. package/dist/web/git-read-model-service.js.map +0 -1
  759. package/dist/web/index.d.ts.map +0 -1
  760. package/dist/web/index.js.map +0 -1
  761. package/dist/web/launch.d.ts.map +0 -1
  762. package/dist/web/launch.js.map +0 -1
  763. package/dist/web/protocol.d.ts.map +0 -1
  764. package/dist/web/protocol.js.map +0 -1
  765. package/dist/web/review-service.d.ts.map +0 -1
  766. package/dist/web/review-service.js.map +0 -1
  767. package/dist/web/server.d.ts.map +0 -1
  768. package/dist/web/server.js.map +0 -1
  769. package/dist/web/terminal-manager.d.ts.map +0 -1
  770. package/dist/web/terminal-manager.js.map +0 -1
  771. package/dist/web/terminal-server.d.ts.map +0 -1
  772. package/dist/web/terminal-server.js.map +0 -1
  773. package/dist/web/workbench-controller.d.ts.map +0 -1
  774. package/dist/web/workbench-controller.js.map +0 -1
  775. package/dist/web-client/assets/FilesPanel-DYs1MhoM.js +0 -2
  776. package/dist/web-client/assets/ReviewPanel-BDxG670T.js +0 -1
  777. package/dist/web-client/assets/index-BWV5sIvw.css +0 -1
  778. package/dist/web-client/assets/index-VVUKj6FE.js +0 -17
@@ -0,0 +1,54 @@
1
+ import type { WorkspaceMutationCoordinatorV1 } from '../runtime/step-snapshot';
2
+ export type WorkspaceMutationPhaseV1 = 'queued' | 'running' | 'completed' | 'failed' | 'cancelled';
3
+ export interface WorkspaceMutationStateV1 {
4
+ readonly workspaceId: string;
5
+ readonly invocationId: string;
6
+ readonly phase: WorkspaceMutationPhaseV1;
7
+ readonly queuePosition?: number;
8
+ }
9
+ export interface WorkspaceMutationAdmissionV1 {
10
+ readonly workspaceId: string;
11
+ readonly invocationId: string;
12
+ readonly baselineRevision: string;
13
+ readonly readCurrentRevision: () => string | Promise<string>;
14
+ readonly abortSignal?: AbortSignal;
15
+ }
16
+ export interface WorkspaceMutationArbiterOptionsV1 {
17
+ readonly onStateChanged?: (state: WorkspaceMutationStateV1) => void;
18
+ }
19
+ /**
20
+ * FIFO admission for side-effecting tool execution in one Workspace.
21
+ *
22
+ * Callers capture a target-specific revision before joining the queue. The
23
+ * revision is checked again only after the entry reaches the head, ensuring a
24
+ * stale edit never executes after another Session changed its target. Queues
25
+ * for different Workspaces remain independent.
26
+ */
27
+ export declare class WorkspaceMutationArbiterV1 implements WorkspaceMutationCoordinatorV1 {
28
+ private readonly options;
29
+ private readonly queues;
30
+ private readonly preparing;
31
+ private closed;
32
+ constructor(options?: WorkspaceMutationArbiterOptionsV1);
33
+ runWorkspaceMutation<T>(input: {
34
+ readonly workspaceId: string;
35
+ readonly invocationId: string;
36
+ readonly toolName: string;
37
+ readonly args: Readonly<Record<string, unknown>>;
38
+ readonly abortSignal?: AbortSignal;
39
+ }, operation: () => T | Promise<T>): Promise<T>;
40
+ run<T>(admission: WorkspaceMutationAdmissionV1, operation: () => T | Promise<T>): Promise<T>;
41
+ snapshot(workspaceId?: string): readonly WorkspaceMutationStateV1[];
42
+ close(reason?: string): void;
43
+ private startHead;
44
+ private finishHead;
45
+ private publishQueue;
46
+ private publish;
47
+ private find;
48
+ private assertOpen;
49
+ }
50
+ export declare class WorkspaceMutationArbiterError extends Error {
51
+ readonly code: 'workspace_mutation_cancelled' | 'workspace_mutation_conflict' | 'workspace_mutation_duplicate';
52
+ constructor(code: 'workspace_mutation_cancelled' | 'workspace_mutation_conflict' | 'workspace_mutation_duplicate', message: string);
53
+ }
54
+ //# sourceMappingURL=workspace-mutation-arbiter.d.ts.map
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkspaceMutationArbiterError = exports.WorkspaceMutationArbiterV1 = void 0;
4
+ const crypto_1 = require("crypto");
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ /**
8
+ * FIFO admission for side-effecting tool execution in one Workspace.
9
+ *
10
+ * Callers capture a target-specific revision before joining the queue. The
11
+ * revision is checked again only after the entry reaches the head, ensuring a
12
+ * stale edit never executes after another Session changed its target. Queues
13
+ * for different Workspaces remain independent.
14
+ */
15
+ class WorkspaceMutationArbiterV1 {
16
+ constructor(options = {}) {
17
+ this.options = options;
18
+ this.queues = new Map();
19
+ this.preparing = new Set();
20
+ this.closed = false;
21
+ }
22
+ async runWorkspaceMutation(input, operation) {
23
+ this.assertOpen();
24
+ const invocationId = input.invocationId.trim();
25
+ if (!invocationId || this.preparing.has(invocationId) || this.find(invocationId)) {
26
+ throw new WorkspaceMutationArbiterError('workspace_mutation_duplicate', 'Workspace mutation invocationId is already queued or running.');
27
+ }
28
+ this.preparing.add(invocationId);
29
+ try {
30
+ const baselineRevision = await mutationTargetRevision(input);
31
+ this.preparing.delete(invocationId);
32
+ return await this.run({
33
+ workspaceId: input.workspaceId,
34
+ invocationId,
35
+ baselineRevision,
36
+ readCurrentRevision: () => mutationTargetRevision(input),
37
+ abortSignal: input.abortSignal,
38
+ }, operation);
39
+ }
40
+ finally {
41
+ this.preparing.delete(invocationId);
42
+ }
43
+ }
44
+ run(admission, operation) {
45
+ this.assertOpen();
46
+ const workspaceId = admission.workspaceId.trim();
47
+ const invocationId = admission.invocationId.trim();
48
+ if (!workspaceId || !invocationId || !admission.baselineRevision.trim()) {
49
+ throw new Error('Workspace mutation identity and baseline revision must not be empty.');
50
+ }
51
+ if (admission.abortSignal?.aborted) {
52
+ return Promise.reject(new WorkspaceMutationArbiterError('workspace_mutation_cancelled', 'Workspace mutation was cancelled before admission.'));
53
+ }
54
+ if (this.preparing.has(invocationId) || this.find(invocationId)) {
55
+ throw new WorkspaceMutationArbiterError('workspace_mutation_duplicate', 'Workspace mutation invocationId is already queued or running.');
56
+ }
57
+ let resolve;
58
+ let reject;
59
+ const result = new Promise((resolvePromise, rejectPromise) => {
60
+ resolve = resolvePromise;
61
+ reject = rejectPromise;
62
+ });
63
+ const entry = {
64
+ admission: Object.freeze({ ...admission, workspaceId, invocationId }),
65
+ operation,
66
+ resolve,
67
+ reject,
68
+ running: false,
69
+ };
70
+ const queue = this.queues.get(workspaceId) ?? [];
71
+ queue.push(entry);
72
+ this.queues.set(workspaceId, queue);
73
+ this.publishQueue(workspaceId);
74
+ if (queue.length === 1)
75
+ void this.startHead(workspaceId);
76
+ return result;
77
+ }
78
+ snapshot(workspaceId) {
79
+ const states = [];
80
+ for (const [candidate, queue] of this.queues) {
81
+ if (workspaceId && workspaceId !== candidate)
82
+ continue;
83
+ queue.forEach((entry, index) => states.push(Object.freeze({
84
+ workspaceId: candidate,
85
+ invocationId: entry.admission.invocationId,
86
+ phase: entry.running ? 'running' : 'queued',
87
+ ...(entry.running ? {} : { queuePosition: waitingPosition(queue, index) }),
88
+ })));
89
+ }
90
+ return Object.freeze(states);
91
+ }
92
+ close(reason = 'Workspace mutation arbiter closed') {
93
+ if (this.closed)
94
+ return;
95
+ this.closed = true;
96
+ for (const [workspaceId, queue] of this.queues) {
97
+ for (const entry of queue) {
98
+ if (entry.running)
99
+ continue;
100
+ entry.reject(new WorkspaceMutationArbiterError('workspace_mutation_cancelled', reason));
101
+ this.publish(entry, 'cancelled');
102
+ }
103
+ this.queues.set(workspaceId, queue.filter(entry => entry.running));
104
+ }
105
+ }
106
+ async startHead(workspaceId) {
107
+ const queue = this.queues.get(workspaceId);
108
+ const entry = queue?.[0];
109
+ if (!queue || !entry || entry.running)
110
+ return;
111
+ if (this.closed || entry.admission.abortSignal?.aborted) {
112
+ this.finishHead(workspaceId, entry, new WorkspaceMutationArbiterError('workspace_mutation_cancelled', 'Workspace mutation was cancelled while queued.'));
113
+ return;
114
+ }
115
+ entry.running = true;
116
+ this.publish(entry, 'running');
117
+ try {
118
+ const revision = await entry.admission.readCurrentRevision();
119
+ if (revision !== entry.admission.baselineRevision) {
120
+ throw new WorkspaceMutationArbiterError('workspace_mutation_conflict', 'The mutation target changed while this Session waited for Workspace admission.');
121
+ }
122
+ const result = await entry.operation();
123
+ entry.resolve(result);
124
+ this.publish(entry, 'completed');
125
+ this.finishHead(workspaceId, entry);
126
+ }
127
+ catch (error) {
128
+ entry.reject(error);
129
+ this.publish(entry, error instanceof WorkspaceMutationArbiterError &&
130
+ error.code === 'workspace_mutation_cancelled'
131
+ ? 'cancelled'
132
+ : 'failed');
133
+ this.finishHead(workspaceId, entry);
134
+ }
135
+ }
136
+ finishHead(workspaceId, entry, earlyError) {
137
+ const queue = this.queues.get(workspaceId);
138
+ if (!queue || queue[0] !== entry)
139
+ return;
140
+ if (earlyError) {
141
+ entry.reject(earlyError);
142
+ this.publish(entry, earlyError instanceof WorkspaceMutationArbiterError &&
143
+ earlyError.code === 'workspace_mutation_cancelled'
144
+ ? 'cancelled'
145
+ : 'failed');
146
+ }
147
+ queue.shift();
148
+ if (queue.length === 0)
149
+ this.queues.delete(workspaceId);
150
+ else {
151
+ this.publishQueue(workspaceId);
152
+ void this.startHead(workspaceId);
153
+ }
154
+ }
155
+ publishQueue(workspaceId) {
156
+ const queue = this.queues.get(workspaceId) ?? [];
157
+ queue.forEach((entry, index) => {
158
+ if (!entry.running)
159
+ this.publish(entry, 'queued', waitingPosition(queue, index));
160
+ });
161
+ }
162
+ publish(entry, phase, queuePosition) {
163
+ this.options.onStateChanged?.(Object.freeze({
164
+ workspaceId: entry.admission.workspaceId,
165
+ invocationId: entry.admission.invocationId,
166
+ phase,
167
+ ...(queuePosition === undefined ? {} : { queuePosition }),
168
+ }));
169
+ }
170
+ find(invocationId) {
171
+ for (const queue of this.queues.values()) {
172
+ const entry = queue.find(candidate => candidate.admission.invocationId === invocationId);
173
+ if (entry)
174
+ return entry;
175
+ }
176
+ return undefined;
177
+ }
178
+ assertOpen() {
179
+ if (this.closed) {
180
+ throw new WorkspaceMutationArbiterError('workspace_mutation_cancelled', 'Workspace mutation arbiter is closed.');
181
+ }
182
+ }
183
+ }
184
+ exports.WorkspaceMutationArbiterV1 = WorkspaceMutationArbiterV1;
185
+ function waitingPosition(queue, index) {
186
+ return index + (queue[0]?.running ? 0 : 1);
187
+ }
188
+ async function mutationTargetRevision(input) {
189
+ if ((input.toolName !== 'edit_file' && input.toolName !== 'write_file') ||
190
+ typeof input.args.path !== 'string' ||
191
+ !input.args.path.trim()) {
192
+ return 'serialized-workspace-mutation-v1';
193
+ }
194
+ const root = (0, path_1.resolve)(input.workspaceId);
195
+ const target = (0, path_1.resolve)(root, input.args.path);
196
+ const traversal = (0, path_1.relative)(root, target);
197
+ if (traversal === '..' || traversal.startsWith(`..${pathSeparator()}`)) {
198
+ return `outside-workspace:${digestText(target)}`;
199
+ }
200
+ for (let attempt = 0; attempt < 2; attempt += 1) {
201
+ try {
202
+ const before = fileIdentity(target);
203
+ if (before.kind !== 'file')
204
+ return digestText(JSON.stringify(before));
205
+ const digest = (0, crypto_1.createHash)('sha256');
206
+ for await (const chunk of (0, fs_1.createReadStream)(target))
207
+ digest.update(chunk);
208
+ const after = fileIdentity(target);
209
+ if (JSON.stringify(before) === JSON.stringify(after)) {
210
+ return digestText(JSON.stringify({ identity: after, content: digest.digest('hex') }));
211
+ }
212
+ }
213
+ catch (error) {
214
+ const code = errorCode(error);
215
+ if (code === 'ENOENT')
216
+ return digestText('missing');
217
+ return digestText(`unreadable:${code}`);
218
+ }
219
+ }
220
+ return digestText(`unstable:${Date.now()}`);
221
+ }
222
+ function fileIdentity(target) {
223
+ try {
224
+ const stat = (0, fs_1.lstatSync)(target, { bigint: true });
225
+ if (stat.isSymbolicLink()) {
226
+ return Object.freeze({
227
+ kind: 'symlink',
228
+ target: (0, fs_1.readlinkSync)(target),
229
+ mtimeNs: stat.mtimeNs.toString(),
230
+ ctimeNs: stat.ctimeNs.toString(),
231
+ });
232
+ }
233
+ return Object.freeze({
234
+ kind: stat.isFile() ? 'file' : stat.isDirectory() ? 'directory' : 'other',
235
+ dev: stat.dev.toString(),
236
+ ino: stat.ino.toString(),
237
+ size: stat.size.toString(),
238
+ mtimeNs: stat.mtimeNs.toString(),
239
+ ctimeNs: stat.ctimeNs.toString(),
240
+ });
241
+ }
242
+ catch (error) {
243
+ if (errorCode(error) === 'ENOENT')
244
+ return Object.freeze({ kind: 'missing' });
245
+ return Object.freeze({ kind: 'unreadable', code: errorCode(error) });
246
+ }
247
+ }
248
+ function digestText(value) {
249
+ return (0, crypto_1.createHash)('sha256').update(value).digest('hex');
250
+ }
251
+ function errorCode(error) {
252
+ return typeof error === 'object' && error !== null && 'code' in error
253
+ ? String(error.code)
254
+ : 'UNKNOWN';
255
+ }
256
+ function pathSeparator() {
257
+ return process.platform === 'win32' ? '\\' : '/';
258
+ }
259
+ class WorkspaceMutationArbiterError extends Error {
260
+ constructor(code, message) {
261
+ super(message);
262
+ this.code = code;
263
+ this.name = 'WorkspaceMutationArbiterError';
264
+ }
265
+ }
266
+ exports.WorkspaceMutationArbiterError = WorkspaceMutationArbiterError;
267
+ //# sourceMappingURL=workspace-mutation-arbiter.js.map
@@ -1,4 +1,4 @@
1
- import{r as u,j as s,I as N}from"./index-VVUKj6FE.js";function v(t){const n=[];let i;for(const r of t)r.startsWith("@@")?(i&&n.push(i),i={title:r,lines:[r]}):i&&i.lines.push(r);return i&&n.push(i),n}function D(t,n){const i={schemaVersion:1,type:"review_context",repositoryRevision:t.repositoryRevision,path:t.path,hunk:n.title},r=n.lines.join(`
1
+ import{r as u,j as s,I as N}from"./index-C6TDJwMC.js";function v(t){const n=[];let i;for(const r of t)r.startsWith("@@")?(i&&n.push(i),i={title:r,lines:[r]}):i&&i.lines.push(r);return i&&n.push(i),n}function D(t,n){const i={schemaVersion:1,type:"review_context",repositoryRevision:t.repositoryRevision,path:t.path,hunk:n.title},r=n.lines.join(`
2
2
  `).slice(0,12e3);return[`请审阅 ${t.path} 的这个 diff hunk,并指出正确性、安全性和测试风险:`,"","```review_context",JSON.stringify(i,null,2),"```","","```diff",r,"```"].join(`
3
3
  `)}function H({page:t,loading:n=!1,onLoadMore:i,onSendToComposer:r}){const a=u.useMemo(()=>v(t.lines),[t.lines]),[m,h]=u.useState(0),[f,p]=u.useState(!1),[x,k]=u.useState(!1),[b,y]=u.useState(""),d=Math.min(m,Math.max(0,a.length-1)),c=a[d];u.useEffect(()=>{h(0),p(!1),y("")},[t.fileId,t.repositoryRevision]);const j=(e,l)=>{let o=l;if(e.key==="ArrowRight"||e.key==="ArrowDown")o=(l+1)%a.length;else if(e.key==="ArrowLeft"||e.key==="ArrowUp")o=(l-1+a.length)%a.length;else if(e.key==="Home")o=0;else if(e.key==="End")o=a.length-1;else return;e.preventDefault(),h(o);const w=e.currentTarget.parentElement;window.requestAnimationFrame(()=>w?.querySelector(`[data-hunk-index="${o}"]`)?.focus())};return t.binary?s.jsxs("div",{className:"resource-empty compact",children:[s.jsx(N,{name:"code"}),s.jsx("strong",{children:"二进制差异"}),s.jsx("p",{children:"只展示变更事实,不返回 binary patch。"})]}):s.jsxs("div",{className:"diff-viewer",children:[s.jsxs("header",{children:[s.jsx("strong",{title:t.path,children:t.path}),s.jsx("span",{children:t.truncated?"受限预览":`${t.lines.length} 行`})]}),a.length>1?s.jsx("div",{className:"diff-hunk-nav",role:"tablist","aria-label":"Diff hunks",children:a.map((e,l)=>s.jsx("button",{type:"button",role:"tab","data-hunk-index":l,"aria-selected":d===l,tabIndex:d===l?0:-1,onClick:()=>h(l),onKeyDown:o=>j(o,l),children:e.title||`Hunk ${l+1}`},`${e.title}-${l}`))}):null,s.jsxs("div",{className:"diff-actions","aria-label":"Diff 显示选项",children:[c?s.jsx("button",{type:"button",className:"text-button","aria-expanded":!f,onClick:()=>p(e=>!e),children:f?"展开 Hunk":"折叠 Hunk"}):null,s.jsx("button",{type:"button",className:"text-button","aria-pressed":x,onClick:()=>k(e=>!e),children:"显示空白字符"}),c?s.jsx("button",{type:"button",className:"text-button",onClick:()=>{$(c.lines.join(`
4
4
  `),y)},children:"复制 Hunk"}):null]}),f?null:s.jsx("pre",{className:"diff-lines",tabIndex:0,"aria-label":`Diff ${t.path}`,children:(c?.lines??t.lines).map((e,l)=>s.jsxs("span",{className:e.startsWith("+")?"addition":e.startsWith("-")?"deletion":"",children:[S(e,x)||" ",`
@@ -0,0 +1,2 @@
1
+ import{r as c,j as e,I as C,s as I,W as ee}from"./index-C6TDJwMC.js";function ae({workspaceId:s,refreshEpoch:l,actions:i}){const[r,a]=c.useState({}),[m,j]=c.useState(new Set(["workspace-root"])),[o,f]=c.useState(null),[h,d]=c.useState(""),[N,$]=c.useState(null),[J,E]=c.useState(!1),[T,R]=c.useState(""),[B,g]=c.useState(""),[D,U]=c.useState(""),[M,X]=c.useState(!1),[K,Y]=c.useState("1"),[O,L]=c.useState({}),[P,F]=c.useState(""),W=c.useRef(null),x=c.useRef(0),k=c.useRef(0),w=async(t,n=!1,y=x.current)=>{if(y!==x.current)return;const p=r[t],v=n?p?.nextCursor:void 0;if(!(n&&!v)){a(u=>({...u,[t]:{items:p?.items??[],nextCursor:p?.nextCursor??null,revision:p?.revision??"",loading:!0}}));try{const u=await i.listFiles(t,v??void 0);if(y!==x.current)return;a(b=>({...b,[t]:{items:n?se(b[t]?.items??[],u.items):u.items,nextCursor:u.nextCursor,revision:u.revision,loading:!1}}))}catch(u){if(y!==x.current)return;if(n&&V(u)){g("目录已变化,已重新载入第一页。"),w(t,!1,y);return}a(b=>({...b,[t]:{items:b[t]?.items??[],nextCursor:b[t]?.nextCursor??null,revision:b[t]?.revision??"",loading:!1,error:G(u)}}))}}},_=async(t=x.current)=>{try{const n=await i.gitStatus();if(t!==x.current)return;L(re(n)),F(n.nextCursor?"Git 装饰仅显示首批 200 个变更;在 Git 面板继续分页查看。":"")}catch(n){if(t!==x.current)return;L({}),F(`Git 状态装饰不可用:${G(n)}`)}};c.useEffect(()=>{const t=x.current+1;x.current=t,k.current+=1,a({}),j(new Set(["workspace-root"])),f(null),d(""),$(null),E(!1),R(""),g(""),L({}),F(""),s&&(w("workspace-root",!1,t),_(t))},[l,s]);const S=async(t,n=!1,y=!1,p=x.current,v=k.current+1)=>{if(p===x.current&&!(!t.readable||t.sensitive||z(t))){k.current=v,f(t),R(""),n||(d(""),$(null),E(!1)),y||g("");try{const u=await i.readFileContent(t.id,n?N??void 0:void 0);if(p!==x.current||v!==k.current)return;E(u.binary),d(b=>n?`${b}${u.content??""}`:u.content??""),$(u.nextCursor),y&&g("文件已变化,已从第一页重新载入。")}catch(u){if(p!==x.current||v!==k.current)return;if(n&&V(u)){await S(t,!1,!0,p,v);return}R(G(u))}}},A=t=>{const n=new Set(m);n.has(t)?n.delete(t):(n.add(t),r[t]||w(t)),j(n)},Z=c.useMemo(()=>Object.values(r).flatMap(t=>t.items),[r]),Q=D.trim()?Z.filter(t=>t.name.toLocaleLowerCase().includes(D.toLocaleLowerCase())):null;return e.jsxs("div",{className:"work-resource-panel files-panel",children:[e.jsxs("div",{className:"resource-toolbar",children:[e.jsxs("label",{className:"resource-search",children:[e.jsx("span",{className:"sr-only",children:"搜索已加载文件"}),e.jsx(C,{name:"search",size:14}),e.jsx("input",{type:"search",value:D,onChange:t=>U(t.target.value),placeholder:"搜索已加载文件"})]}),e.jsx("button",{type:"button",className:"icon-button","aria-label":"刷新文件树",onClick:()=>{w("workspace-root"),_()},children:e.jsx(C,{name:"refresh",size:15})})]}),e.jsxs("div",{className:"files-layout",children:[e.jsxs("section",{className:"file-tree","aria-label":"工作区文件",children:[P?e.jsx("p",{className:"resource-hint",role:"status",children:P}):null,Q?e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"resource-hint",children:"搜索仅覆盖已加载的目录和文件。"}),e.jsx("ul",{role:"list",className:"file-node-list search-results",children:Q.map(t=>e.jsx(H,{node:t,depth:0,expanded:!1,selected:o?.id===t.id,gitLabels:O[t.displayPath]??[],onToggle:A,onSelect:n=>{S(n)}},t.id))})]}):e.jsx(q,{parentId:"workspace-root",depth:0,directories:r,expanded:m,selectedId:o?.id,gitDecorations:O,onToggle:A,onSelect:t=>{S(t)},onLoadMore:t=>{w(t,!0)}})]}),e.jsxs("section",{className:"file-preview","aria-label":"文件预览",children:[B?e.jsx("p",{className:"resource-notice",role:"status",children:B}):null,o?e.jsxs(e.Fragment,{children:[e.jsxs("header",{children:[e.jsx("strong",{children:o.name}),e.jsx("span",{children:ne(o.sizeBytes??0)})]}),T?e.jsx("p",{className:"resource-error",role:"alert",children:T}):J?e.jsxs("div",{className:"resource-empty",children:[e.jsx(C,{name:"code"}),e.jsx("strong",{children:"二进制文件"}),e.jsx("p",{children:"出于安全和性能考虑,只显示元数据。"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"file-preview-actions",children:[e.jsxs("label",{children:[e.jsx("span",{className:"sr-only",children:"跳到行"}),e.jsx("input",{type:"number",min:"1",value:K,"aria-label":"跳到行",onChange:t=>Y(t.target.value)})]}),e.jsx("button",{type:"button",className:"text-button",onClick:()=>ie(W.current,K),children:"跳转"}),e.jsx("button",{type:"button",className:"text-button",onClick:()=>{le(h,g)},children:"复制"}),e.jsx("button",{type:"button",className:"text-button","aria-pressed":M,onClick:()=>X(t=>!t),children:"自动换行"})]}),e.jsx("pre",{ref:W,tabIndex:0,className:`file-code-view ${M?"wrap":""}`,"aria-label":`文件内容 ${o.name}`,children:I(h).split(`
2
+ `).map((t,n)=>e.jsxs("span",{className:"file-code-line","data-line":n+1,children:[e.jsx("span",{className:"file-line-number","aria-hidden":"true",children:n+1}),e.jsx("span",{className:"file-line-content",children:t||" "})]},n))})]}),N?e.jsx("button",{type:"button",className:"secondary-button",onClick:()=>{S(o,!0)},children:"加载更多内容"}):null]}):e.jsxs("div",{className:"resource-empty",children:[e.jsx(C,{name:"workspace"}),e.jsx("strong",{children:"选择文件预览"}),e.jsx("p",{children:"敏感文件、工作区外链接和二进制正文不会返回浏览器。"})]})]})]})]})}function q({parentId:s,depth:l,directories:i,expanded:r,selectedId:a,gitDecorations:m,onToggle:j,onSelect:o,onLoadMore:f}){const h=i[s];return h?h.error?e.jsx("p",{className:"resource-error",role:"alert",children:h.error}):e.jsxs("ul",{role:"list",className:"file-node-list",children:[h.items.map(d=>{const N=r.has(d.id);return e.jsxs("li",{children:[e.jsx(H,{node:d,depth:l,expanded:N,selected:a===d.id,gitLabels:m[d.displayPath]??[],onToggle:j,onSelect:o}),z(d)&&N?e.jsx(q,{parentId:d.id,depth:l+1,directories:i,expanded:r,selectedId:a,gitDecorations:m,onToggle:j,onSelect:o,onLoadMore:f}):null]},d.id)}),h.loading?e.jsx("li",{className:"resource-loading",children:"正在读取…"}):null,h.nextCursor?e.jsx("li",{children:e.jsx("button",{type:"button",className:"text-button",onClick:()=>f(s),children:"加载更多"})}):null]}):e.jsx("p",{className:"resource-loading",children:"正在读取…"})}function H({node:s,depth:l,expanded:i,selected:r,gitLabels:a,onToggle:m,onSelect:j}){const o=s.sensitive||!s.readable,f=z(s);return e.jsxs("button",{type:"button",className:`file-node ${r?"selected":""} ${o?"blocked":""}`,style:{paddingInlineStart:`${8+l*15}px`},"aria-expanded":f?i:void 0,"aria-label":`${te(s)} ${s.name}${o?",不可读取":""}${a.length?`,Git ${a.join("、")}`:""}`,onClick:()=>f?m(s.id):j(s),disabled:o,children:[e.jsx(C,{name:f?"workspace":"code",size:14}),e.jsx("span",{children:s.name}),s.kind==="symlink"?e.jsx("small",{children:"链接"}):null,s.sensitive?e.jsx("small",{children:"敏感"}):null,a.length?e.jsx("small",{className:"file-git-status",title:`Git ${a.join("、")}`,children:a.join(" · ")}):null]})}function te(s){return s.kind==="directory"?"目录":s.kind==="symlink"?s.targetKind==="directory"?"符号链接目录":"符号链接":"文件"}function z(s){return s.kind==="directory"||s.kind==="symlink"&&s.targetKind==="directory"}function se(s,l){const i=new Map(s.map(r=>[r.id,r]));for(const r of l)i.set(r.id,r);return[...i.values()]}function re(s){if(!s.isRepository)return{};const l=new Map,i=(r,a)=>{const m=r.replace(/\\/gu,"/").replace(/^\.\//u,"");if(!m)return;const j=l.get(m)??new Set;j.add(a),l.set(m,j);const o=m.split("/");for(let f=1;f<o.length;f+=1){const h=o.slice(0,f).join("/"),d=l.get(h)??new Set;d.add("含变更"),l.set(h,d)}};return s.conflicted.forEach(r=>i(r.path,"冲突")),s.staged.forEach(r=>i(r.path,"已暂存")),s.unstaged.forEach(r=>i(r.path,"未暂存")),s.untracked.forEach(r=>i(r.path,"未跟踪")),Object.fromEntries([...l].map(([r,a])=>[r,Object.freeze([...a])]))}function ne(s){return s<1024?`${s} B`:s<1048576?`${(s/1024).toFixed(1)} KB`:`${(s/1048576).toFixed(1)} MB`}function V(s){return s instanceof ee&&s.code==="file_revision_conflict"}function ie(s,l){const i=Number(l);!s||!Number.isSafeInteger(i)||i<1||(s.querySelector(`[data-line="${i}"]`)?.scrollIntoView({block:"center"}),s.focus())}async function le(s,l){try{await navigator.clipboard.writeText(s),l("已复制当前加载的文件内容。")}catch{l("浏览器未允许复制,请手动选择文本。")}}function G(s){return s instanceof Error?s.message:"文件请求失败。"}export{ae as FilesPanel};
@@ -1 +1 @@
1
- import{r as d,j as e,I as g,W as _}from"./index-VVUKj6FE.js";import{D as W}from"./DiffViewer-eaQNsnCh.js";function K({workspaceId:c,refreshEpoch:m,actions:u,onSendToComposer:o}){const[a,I]=d.useState(null),[j,k]=d.useState(null),[G,y]=d.useState(null),[v,N]=d.useState(null),[R,h]=d.useState(!1),[w,f]=d.useState(""),[E,p]=d.useState(""),n=d.useRef(0),x=d.useRef(0),b=async(t=n.current)=>{if(t===n.current){h(!0),f("");try{const[s,l]=await Promise.all([u.gitStatus(),u.gitLog()]);if(t!==n.current)return;I(s),k(l),y(null),N(null)}catch(s){if(t!==n.current)return;f(S(s))}finally{t===n.current&&h(!1)}}},$=()=>{const t=n.current+1;n.current=t,x.current+=1,p(""),b(t)};d.useEffect(()=>{const t=n.current+1;n.current=t,x.current+=1,I(null),k(null),y(null),N(null),f(""),p(""),c&&b(t)},[m,c]);const M=async(t,s,l=n.current,r=x.current+1)=>{if(l===n.current){x.current=r,s||(y(t),N(null)),h(!0),f("");try{const i=await u.gitDiff(t.fileId,s);if(l!==n.current||r!==x.current||i.fileId!==t.fileId)return;y(t),N(D=>s&&D&&D.fileId===i.fileId?{...i,lines:[...D.lines,...i.lines]}:i)}catch(i){if(l!==n.current||r!==x.current)return;if(L(i)){p("仓库已变化,已重新载入 Git 状态。"),await b(l);return}f(S(i))}finally{l===n.current&&r===x.current&&h(!1)}}},z=async()=>{const t=a?.nextCursor;if(!t||!a)return;const s=n.current,l=a.repositoryRevision;h(!0),f("");try{const r=await u.gitStatus(t);if(s!==n.current)return;if(r.repositoryRevision!==l)throw A();I(i=>!i||i.repositoryRevision!==l?i:{...r,conflicted:C(i.conflicted,r.conflicted),staged:C(i.staged,r.staged),unstaged:C(i.unstaged,r.unstaged),untracked:C(i.untracked,r.untracked)})}catch(r){if(s!==n.current)return;if(L(r)){p("仓库已变化,已重新载入 Git 状态。"),await b(s);return}f(S(r))}finally{s===n.current&&h(!1)}},F=async()=>{const t=j?.nextCursor;if(!t||!j)return;const s=n.current,l=j.repositoryRevision;h(!0),f("");try{const r=await u.gitLog(t);if(s!==n.current)return;if(r.repositoryRevision!==l)throw A();k(i=>!i||i.repositoryRevision!==l?i:{...r,items:V(i.items,r.items)})}catch(r){if(s!==n.current)return;if(L(r)){p("提交历史已变化,已重新载入第一页。"),await b(s);return}f(S(r))}finally{s===n.current&&h(!1)}};if(w&&!a)return e.jsx(H,{message:w,onRetry:$});if(!a)return e.jsx("p",{className:"resource-loading",children:"正在读取 Git 状态…"});if(!a.isRepository)return e.jsxs("div",{className:"resource-empty",children:[e.jsx(g,{name:"branch"}),e.jsx("strong",{children:"当前项目不是 Git 仓库"}),e.jsx("p",{children:"文件和 Agent 仍可使用;Git 面板保持只读空状态。"})]});const P=[{label:"冲突",tone:"conflict",items:a.conflicted},{label:"已暂存",tone:"staged",items:a.staged},{label:"未暂存",tone:"unstaged",items:a.unstaged},{label:"未跟踪",tone:"untracked",items:a.untracked}];return e.jsxs("div",{className:"work-resource-panel git-panel",children:[e.jsxs("div",{className:"git-summary",children:[e.jsxs("div",{children:[e.jsx(g,{name:"branch",size:15}),e.jsx("strong",{children:a.detached?`detached ${a.head??""}`:a.branch||"HEAD"})]}),e.jsxs("span",{children:[a.upstream||"无 upstream",a.ahead||a.behind?` · ↑${a.ahead} ↓${a.behind}`:""]}),e.jsx("button",{type:"button",className:"icon-button","aria-label":"刷新 Git 状态",onClick:$,disabled:R,children:e.jsx(g,{name:"refresh",size:15})})]}),E?e.jsx("p",{className:"resource-notice",role:"status",children:E}):null,w?e.jsx("p",{className:"resource-error",role:"alert",children:w}):null,e.jsxs("div",{className:"git-layout",children:[e.jsxs("section",{className:"git-changes","aria-label":"Git 变更",children:[a.clean?e.jsxs("div",{className:"resource-empty compact",children:[e.jsx(g,{name:"check"}),e.jsx("strong",{children:"工作区干净"})]}):P.map(t=>t.items.length?e.jsxs("div",{className:"git-group",children:[e.jsxs("h3",{children:[t.label," ",e.jsx("span",{children:t.items.length})]}),t.items.map(s=>e.jsxs("button",{type:"button",className:G?.fileId===s.fileId?"selected":"",onClick:()=>{M(s)},children:[e.jsx("span",{className:`git-status-code ${t.tone}`,children:s.indexStatus.trim()||s.worktreeStatus.trim()||"?"}),e.jsx("span",{title:s.path,children:s.path})]},`${t.label}:${s.fileId}`))]},t.label):null),a.nextCursor?e.jsx("button",{type:"button",className:"text-button resource-load-more",onClick:()=>{z()},disabled:R,children:"加载更多变更"}):null,e.jsxs("div",{className:"git-history",children:[e.jsx("h3",{children:"提交历史"}),j?.items.map(t=>e.jsxs("article",{children:[e.jsx("code",{children:t.shortId}),e.jsx("strong",{children:t.subject}),e.jsxs("span",{children:[t.authorName," · ",new Date(t.authoredAt).toLocaleDateString("zh-CN")]})]},t.id)),j?.nextCursor?e.jsx("button",{type:"button",className:"text-button resource-load-more",onClick:()=>{F()},disabled:R,children:"加载更多提交"}):null]})]}),e.jsx("section",{className:"git-diff","aria-label":"Git Diff",children:v?e.jsx(W,{page:v,loading:R,onLoadMore:v.nextCursor&&G?()=>{M(G,v.nextCursor??void 0)}:void 0,onSendToComposer:o}):e.jsxs("div",{className:"resource-empty",children:[e.jsx(g,{name:"code"}),e.jsx("strong",{children:"选择变更查看 Diff"}),e.jsx("p",{children:"Diff 来自受限 Git read model,不解析对话或工具输出。"})]})})]})]})}function H({message:c,onRetry:m}){return e.jsxs("div",{className:"resource-empty",role:"alert",children:[e.jsx(g,{name:"warning"}),e.jsx("strong",{children:"Git 状态读取失败"}),e.jsx("p",{children:c}),e.jsx("button",{type:"button",className:"secondary-button",onClick:m,children:"重试"})]})}function S(c){return c instanceof Error?c.message:"Git 请求失败。"}function L(c){return c instanceof _&&c.code==="git_revision_conflict"}function A(){return new _("仓库版本已变化。",409,"git_revision_conflict")}function C(c,m){const u=new Map(c.map(o=>[o.fileId,o]));for(const o of m)u.set(o.fileId,o);return[...u.values()]}function V(c,m){const u=new Map(c.map(o=>[o.id,o]));for(const o of m)u.set(o.id,o);return[...u.values()]}export{K as GitPanel};
1
+ import{r as d,j as e,I as g,W as _}from"./index-C6TDJwMC.js";import{D as W}from"./DiffViewer-D6mG729y.js";function K({workspaceId:c,refreshEpoch:m,actions:u,onSendToComposer:o}){const[a,I]=d.useState(null),[j,k]=d.useState(null),[G,y]=d.useState(null),[v,N]=d.useState(null),[R,h]=d.useState(!1),[w,f]=d.useState(""),[E,p]=d.useState(""),n=d.useRef(0),x=d.useRef(0),b=async(t=n.current)=>{if(t===n.current){h(!0),f("");try{const[s,l]=await Promise.all([u.gitStatus(),u.gitLog()]);if(t!==n.current)return;I(s),k(l),y(null),N(null)}catch(s){if(t!==n.current)return;f(S(s))}finally{t===n.current&&h(!1)}}},$=()=>{const t=n.current+1;n.current=t,x.current+=1,p(""),b(t)};d.useEffect(()=>{const t=n.current+1;n.current=t,x.current+=1,I(null),k(null),y(null),N(null),f(""),p(""),c&&b(t)},[m,c]);const M=async(t,s,l=n.current,r=x.current+1)=>{if(l===n.current){x.current=r,s||(y(t),N(null)),h(!0),f("");try{const i=await u.gitDiff(t.fileId,s);if(l!==n.current||r!==x.current||i.fileId!==t.fileId)return;y(t),N(D=>s&&D&&D.fileId===i.fileId?{...i,lines:[...D.lines,...i.lines]}:i)}catch(i){if(l!==n.current||r!==x.current)return;if(L(i)){p("仓库已变化,已重新载入 Git 状态。"),await b(l);return}f(S(i))}finally{l===n.current&&r===x.current&&h(!1)}}},z=async()=>{const t=a?.nextCursor;if(!t||!a)return;const s=n.current,l=a.repositoryRevision;h(!0),f("");try{const r=await u.gitStatus(t);if(s!==n.current)return;if(r.repositoryRevision!==l)throw A();I(i=>!i||i.repositoryRevision!==l?i:{...r,conflicted:C(i.conflicted,r.conflicted),staged:C(i.staged,r.staged),unstaged:C(i.unstaged,r.unstaged),untracked:C(i.untracked,r.untracked)})}catch(r){if(s!==n.current)return;if(L(r)){p("仓库已变化,已重新载入 Git 状态。"),await b(s);return}f(S(r))}finally{s===n.current&&h(!1)}},F=async()=>{const t=j?.nextCursor;if(!t||!j)return;const s=n.current,l=j.repositoryRevision;h(!0),f("");try{const r=await u.gitLog(t);if(s!==n.current)return;if(r.repositoryRevision!==l)throw A();k(i=>!i||i.repositoryRevision!==l?i:{...r,items:V(i.items,r.items)})}catch(r){if(s!==n.current)return;if(L(r)){p("提交历史已变化,已重新载入第一页。"),await b(s);return}f(S(r))}finally{s===n.current&&h(!1)}};if(w&&!a)return e.jsx(H,{message:w,onRetry:$});if(!a)return e.jsx("p",{className:"resource-loading",children:"正在读取 Git 状态…"});if(!a.isRepository)return e.jsxs("div",{className:"resource-empty",children:[e.jsx(g,{name:"branch"}),e.jsx("strong",{children:"当前项目不是 Git 仓库"}),e.jsx("p",{children:"文件和 Agent 仍可使用;Git 面板保持只读空状态。"})]});const P=[{label:"冲突",tone:"conflict",items:a.conflicted},{label:"已暂存",tone:"staged",items:a.staged},{label:"未暂存",tone:"unstaged",items:a.unstaged},{label:"未跟踪",tone:"untracked",items:a.untracked}];return e.jsxs("div",{className:"work-resource-panel git-panel",children:[e.jsxs("div",{className:"git-summary",children:[e.jsxs("div",{children:[e.jsx(g,{name:"branch",size:15}),e.jsx("strong",{children:a.detached?`detached ${a.head??""}`:a.branch||"HEAD"})]}),e.jsxs("span",{children:[a.upstream||"无 upstream",a.ahead||a.behind?` · ↑${a.ahead} ↓${a.behind}`:""]}),e.jsx("button",{type:"button",className:"icon-button","aria-label":"刷新 Git 状态",onClick:$,disabled:R,children:e.jsx(g,{name:"refresh",size:15})})]}),E?e.jsx("p",{className:"resource-notice",role:"status",children:E}):null,w?e.jsx("p",{className:"resource-error",role:"alert",children:w}):null,e.jsxs("div",{className:"git-layout",children:[e.jsxs("section",{className:"git-changes","aria-label":"Git 变更",children:[a.clean?e.jsxs("div",{className:"resource-empty compact",children:[e.jsx(g,{name:"check"}),e.jsx("strong",{children:"工作区干净"})]}):P.map(t=>t.items.length?e.jsxs("div",{className:"git-group",children:[e.jsxs("h3",{children:[t.label," ",e.jsx("span",{children:t.items.length})]}),t.items.map(s=>e.jsxs("button",{type:"button",className:G?.fileId===s.fileId?"selected":"",onClick:()=>{M(s)},children:[e.jsx("span",{className:`git-status-code ${t.tone}`,children:s.indexStatus.trim()||s.worktreeStatus.trim()||"?"}),e.jsx("span",{title:s.path,children:s.path})]},`${t.label}:${s.fileId}`))]},t.label):null),a.nextCursor?e.jsx("button",{type:"button",className:"text-button resource-load-more",onClick:()=>{z()},disabled:R,children:"加载更多变更"}):null,e.jsxs("div",{className:"git-history",children:[e.jsx("h3",{children:"提交历史"}),j?.items.map(t=>e.jsxs("article",{children:[e.jsx("code",{children:t.shortId}),e.jsx("strong",{children:t.subject}),e.jsxs("span",{children:[t.authorName," · ",new Date(t.authoredAt).toLocaleDateString("zh-CN")]})]},t.id)),j?.nextCursor?e.jsx("button",{type:"button",className:"text-button resource-load-more",onClick:()=>{F()},disabled:R,children:"加载更多提交"}):null]})]}),e.jsx("section",{className:"git-diff","aria-label":"Git Diff",children:v?e.jsx(W,{page:v,loading:R,onLoadMore:v.nextCursor&&G?()=>{M(G,v.nextCursor??void 0)}:void 0,onSendToComposer:o}):e.jsxs("div",{className:"resource-empty",children:[e.jsx(g,{name:"code"}),e.jsx("strong",{children:"选择变更查看 Diff"}),e.jsx("p",{children:"Diff 来自受限 Git read model,不解析对话或工具输出。"})]})})]})]})}function H({message:c,onRetry:m}){return e.jsxs("div",{className:"resource-empty",role:"alert",children:[e.jsx(g,{name:"warning"}),e.jsx("strong",{children:"Git 状态读取失败"}),e.jsx("p",{children:c}),e.jsx("button",{type:"button",className:"secondary-button",onClick:m,children:"重试"})]})}function S(c){return c instanceof Error?c.message:"Git 请求失败。"}function L(c){return c instanceof _&&c.code==="git_revision_conflict"}function A(){return new _("仓库版本已变化。",409,"git_revision_conflict")}function C(c,m){const u=new Map(c.map(o=>[o.fileId,o]));for(const o of m)u.set(o.fileId,o);return[...u.values()]}function V(c,m){const u=new Map(c.map(o=>[o.id,o]));for(const o of m)u.set(o.id,o);return[...u.values()]}export{K as GitPanel};
@@ -0,0 +1 @@
1
+ import{r,j as e,I as o,W as E}from"./index-C6TDJwMC.js";import{D as F}from"./DiffViewer-D6mG729y.js";function L({workspaceId:c,refreshEpoch:$,actions:w,onSendToComposer:D}){const[t,b]=r.useState(null),[v,f]=r.useState(null),[h,x]=r.useState(null),[C,j]=r.useState(!1),[m,u]=r.useState(""),[I,g]=r.useState(""),n=r.useRef(0),i=r.useRef(0),N=async(s=n.current)=>{if(s===n.current){j(!0),u("");try{const l=await w.review();if(s!==n.current)return;b(l),f(null),x(null)}catch(l){if(s!==n.current)return;u(k(l))}finally{s===n.current&&j(!1)}}},S=()=>{const s=n.current+1;n.current=s,i.current+=1,g(""),N(s)};r.useEffect(()=>{const s=n.current+1;n.current=s,i.current+=1,b(null),f(null),x(null),u(""),g(""),c&&N(s)},[$,c]);const R=async(s,l,d=n.current,p=i.current+1)=>{if(d===n.current){i.current=p,l||(f(s),x(null)),j(!0),u("");try{const a=await w.gitDiff(s.fileId,l);if(d!==n.current||p!==i.current||a.fileId!==s.fileId)return;f(s),x(y=>l&&y&&y.fileId===a.fileId?{...a,lines:[...y.lines,...a.lines]}:a)}catch(a){if(d!==n.current||p!==i.current)return;if(z(a)){g("仓库已变化,已重新建立审阅快照。"),await N(d);return}u(k(a))}finally{d===n.current&&p===i.current&&j(!1)}}};return!t&&!m?e.jsx("p",{className:"resource-loading",children:"正在建立审阅快照…"}):t?e.jsxs("div",{className:"work-resource-panel review-panel",children:[e.jsxs("div",{className:"review-summary",children:[e.jsxs("div",{children:[e.jsx("span",{className:`review-score ${t.clean?"clean":"changed"}`,children:t.clean?e.jsx(o,{name:"check"}):e.jsx(o,{name:"edit"})}),e.jsxs("div",{children:[e.jsx("strong",{children:t.clean?"没有待审阅变更":`${t.totalChangedFiles} 个变更文件`}),e.jsxs("span",{children:[t.truncated?"当前显示 · ":"",t.stagedCount," staged · ",t.unstagedCount," unstaged ·"," ",t.untrackedCount," untracked · ",t.conflictCount," conflict"]})]})]}),e.jsx("button",{type:"button",className:"icon-button","aria-label":"刷新审阅快照",disabled:C,onClick:S,children:e.jsx(o,{name:"refresh",size:15})})]}),t.truncated?e.jsxs("p",{className:"resource-notice",role:"status",children:["当前显示 ",t.changedFiles.length," / ",t.totalChangedFiles," ","个变更文件;分类计数仅覆盖当前显示范围。"]}):null,I?e.jsx("p",{className:"resource-notice",role:"status",children:I}):null,m?e.jsx("p",{className:"resource-error",role:"alert",children:m}):null,e.jsxs("div",{className:"review-layout",children:[e.jsxs("section",{className:"review-files","aria-label":"待审阅文件",children:[t.changedFiles.map(s=>e.jsxs("button",{type:"button",className:v?.fileId===s.fileId?"selected":"",onClick:()=>{R(s)},children:[e.jsx(o,{name:"code",size:14}),e.jsx("span",{title:s.path,children:s.path}),e.jsx("small",{children:`${s.indexStatus}${s.worktreeStatus}`.trim()||"?"})]},s.fileId)),e.jsxs("div",{className:"review-verification",children:[e.jsx("h3",{children:"验证证据"}),t.verification.length?t.verification.map(s=>e.jsxs("article",{children:[e.jsx("span",{className:`state-dot state-${s.state}`,"aria-hidden":"true"}),e.jsxs("div",{children:[e.jsx("strong",{children:s.toolName}),e.jsxs("small",{children:[s.state," · ",s.outputBytes," B",s.hasArtifact?" · artifact":""]})]})]},`${s.callId}:${s.toolName}`)):e.jsx("p",{className:"muted-copy",children:"当前没有持久化验证结果。"})]})]}),e.jsx("section",{className:"review-diff","aria-label":"审阅 Diff",children:h?e.jsx(F,{page:h,loading:C,onLoadMore:h.nextCursor&&v?()=>{R(v,h.nextCursor??void 0)}:void 0,onSendToComposer:D}):e.jsxs("div",{className:"resource-empty",children:[e.jsx(o,{name:"edit"}),e.jsx("strong",{children:"选择文件开始审阅"}),e.jsx("p",{children:"你可以把某个 Hunk 作为草稿送回对话,提交前仍由你确认。"})]})})]})]}):e.jsxs("div",{className:"resource-empty",role:"alert",children:[e.jsx(o,{name:"warning"}),e.jsx("strong",{children:"无法读取审阅快照"}),e.jsx("p",{children:m}),e.jsx("button",{type:"button",className:"secondary-button",onClick:S,children:"重试"})]})}function k(c){return c instanceof Error?c.message:"审阅请求失败。"}function z(c){return c instanceof E&&c.code==="git_revision_conflict"}export{L as ReviewPanel};