create-walle 0.9.21 → 0.9.23

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 (500) hide show
  1. package/README.md +27 -5
  2. package/package.json +2 -2
  3. package/template/CLAUDE.md +2 -2
  4. package/template/LICENSE +1 -1
  5. package/template/bin/ctm-dev-cleanup.js +24 -3
  6. package/template/bin/ctm-launch.sh +13 -0
  7. package/template/bin/dev.sh +156 -18
  8. package/template/bin/node-bin.sh +84 -0
  9. package/template/bin/pin-node.sh +51 -0
  10. package/template/claude-task-manager/api-prompts.js +1203 -182
  11. package/template/claude-task-manager/api-reviews.js +109 -15
  12. package/template/claude-task-manager/approval-agent.js +1360 -280
  13. package/template/claude-task-manager/bin/restart-ctm.sh +64 -23
  14. package/template/claude-task-manager/bin/storage-migration-supervisor.js +338 -0
  15. package/template/claude-task-manager/db.js +4417 -295
  16. package/template/claude-task-manager/docs/app-update-refresh-protocol.md +69 -0
  17. package/template/claude-task-manager/docs/approval-ai-refinement.md +138 -0
  18. package/template/claude-task-manager/docs/approval-rescue-loop.md +74 -0
  19. package/template/claude-task-manager/docs/codex-operational-warning-health.md +107 -0
  20. package/template/claude-task-manager/docs/codex-resume-state-guard-design.md +17 -12
  21. package/template/claude-task-manager/docs/codex-terminal-render-controller-handoff.md +311 -0
  22. package/template/claude-task-manager/docs/coding-agent-hooks-architecture.md +418 -0
  23. package/template/claude-task-manager/docs/conversation-import-freshness.md +20 -0
  24. package/template/claude-task-manager/docs/google-workspace-auth-health.md +77 -0
  25. package/template/claude-task-manager/docs/image-paste-ux.md +13 -0
  26. package/template/claude-task-manager/docs/ipad-web-preview.md +88 -0
  27. package/template/claude-task-manager/docs/main-loop-offload-architecture.md +66 -0
  28. package/template/claude-task-manager/docs/microsoft-dev-tunnel-phone-access-design.md +274 -519
  29. package/template/claude-task-manager/docs/mobile-live-streaming.md +27 -5
  30. package/template/claude-task-manager/docs/mobile-remote-submission-lifecycle.md +69 -0
  31. package/template/claude-task-manager/docs/phone-access-design.md +53 -15
  32. package/template/claude-task-manager/docs/phone-passkey-identity.md +122 -0
  33. package/template/claude-task-manager/docs/phone-setup.md +3 -0
  34. package/template/claude-task-manager/docs/prompt-editing-tree-design.md +25 -1
  35. package/template/claude-task-manager/docs/remote-desktop-access-design.md +268 -0
  36. package/template/claude-task-manager/docs/restart-lifecycle-architecture.md +95 -0
  37. package/template/claude-task-manager/docs/runtime-work-control-plane.md +53 -0
  38. package/template/claude-task-manager/docs/session-interactive-wait-surfaces.md +38 -0
  39. package/template/claude-task-manager/docs/session-needs-you-dismissal.md +84 -0
  40. package/template/claude-task-manager/docs/session-render-state-management-design.md +91 -3
  41. package/template/claude-task-manager/docs/session-standup-command-center-design.md +25 -1
  42. package/template/claude-task-manager/docs/session-title-authority.md +32 -0
  43. package/template/claude-task-manager/docs/session-workspace-binding.md +33 -0
  44. package/template/claude-task-manager/docs/skill-intent-resolution-design.md +72 -0
  45. package/template/claude-task-manager/docs/walle-mcp-supervisor-health.md +86 -0
  46. package/template/claude-task-manager/docs/walle-relay-phone-access-design.md +24 -15
  47. package/template/claude-task-manager/docs/walle-session-history-hydration.md +114 -0
  48. package/template/claude-task-manager/docs/walle-session-input-queue.md +104 -0
  49. package/template/claude-task-manager/docs/walle-session-model-catalog.md +90 -0
  50. package/template/claude-task-manager/docs/walle-session-model-preferences.md +15 -6
  51. package/template/claude-task-manager/git-utils.js +897 -27
  52. package/template/claude-task-manager/lib/agent-capabilities.js +33 -0
  53. package/template/claude-task-manager/lib/agent-cli-cache.js +37 -7
  54. package/template/claude-task-manager/lib/agent-hooks-installer.js +26 -2
  55. package/template/claude-task-manager/lib/agent-presets.js +17 -1
  56. package/template/claude-task-manager/lib/all-sessions-query.js +108 -0
  57. package/template/claude-task-manager/lib/approval-ai-refinement.js +488 -0
  58. package/template/claude-task-manager/lib/approval-self-adapt.js +168 -0
  59. package/template/claude-task-manager/lib/async-semaphore.js +44 -0
  60. package/template/claude-task-manager/lib/auth-context.js +5 -0
  61. package/template/claude-task-manager/lib/auth-rate-limit.js +47 -4
  62. package/template/claude-task-manager/lib/auth-rules.js +29 -2
  63. package/template/claude-task-manager/lib/auto-approval-verifier.js +129 -16
  64. package/template/claude-task-manager/lib/background-llm.js +144 -17
  65. package/template/claude-task-manager/lib/branch-inventory.js +212 -0
  66. package/template/claude-task-manager/lib/claude-desktop-sessions.js +15 -3
  67. package/template/claude-task-manager/lib/coalesce-sync-frames.js +151 -0
  68. package/template/claude-task-manager/lib/codex-launch-health.js +762 -0
  69. package/template/claude-task-manager/lib/codex-transcript-pager.js +51 -0
  70. package/template/claude-task-manager/lib/codex-zst.js +124 -0
  71. package/template/claude-task-manager/lib/coding-agent-models.js +233 -30
  72. package/template/claude-task-manager/lib/connection-health.js +232 -0
  73. package/template/claude-task-manager/lib/conversation-blob-parser.js +42 -0
  74. package/template/claude-task-manager/lib/conversation-tail-merge.js +89 -26
  75. package/template/claude-task-manager/lib/ctm-session-context-api.js +39 -10
  76. package/template/claude-task-manager/lib/cursor-conversation-store.js +354 -0
  77. package/template/claude-task-manager/lib/db-owner-worker-client.js +315 -0
  78. package/template/claude-task-manager/lib/document-review.js +141 -6
  79. package/template/claude-task-manager/lib/escalation-review.js +152 -0
  80. package/template/claude-task-manager/lib/graceful-shutdown.js +159 -0
  81. package/template/claude-task-manager/lib/headless-term-service.js +678 -0
  82. package/template/claude-task-manager/lib/heavy-worker-fallback.js +38 -0
  83. package/template/claude-task-manager/lib/jsonl-conversation-parser.js +542 -0
  84. package/template/claude-task-manager/lib/jsonl-range-reader.js +112 -0
  85. package/template/claude-task-manager/lib/main-db-census.js +216 -0
  86. package/template/claude-task-manager/lib/message-pagination.js +106 -4
  87. package/template/claude-task-manager/lib/microsoft-dev-tunnel-setup.js +750 -26
  88. package/template/claude-task-manager/lib/mobile-auth-api.js +274 -7
  89. package/template/claude-task-manager/lib/mobile-auth-store.js +592 -10
  90. package/template/claude-task-manager/lib/mobile-notification-dispatcher.js +15 -0
  91. package/template/claude-task-manager/lib/model-overview-brain-fallback.js +311 -0
  92. package/template/claude-task-manager/lib/model-overview-cache.js +141 -0
  93. package/template/claude-task-manager/lib/models-health-routing-notice.js +126 -0
  94. package/template/claude-task-manager/lib/node-pin-guard.js +93 -0
  95. package/template/claude-task-manager/lib/perf-tracker.js +242 -6
  96. package/template/claude-task-manager/lib/permission-match.js +76 -0
  97. package/template/claude-task-manager/lib/permission-sync.js +133 -20
  98. package/template/claude-task-manager/lib/process-title.js +35 -0
  99. package/template/claude-task-manager/lib/prompt-executions-query.js +25 -0
  100. package/template/claude-task-manager/lib/prompt-index-disk-cache.js +44 -0
  101. package/template/claude-task-manager/lib/prompt-intent.js +132 -0
  102. package/template/claude-task-manager/lib/provider-user-context.js +34 -0
  103. package/template/claude-task-manager/lib/read-pool-client.js +313 -0
  104. package/template/claude-task-manager/lib/readpool-breaker.js +31 -0
  105. package/template/claude-task-manager/lib/recent-sessions-breaker.js +12 -0
  106. package/template/claude-task-manager/lib/remote-feedback-client.js +72 -0
  107. package/template/claude-task-manager/lib/remote-relay-protocol.js +37 -4
  108. package/template/claude-task-manager/lib/remote-relay-store.js +159 -0
  109. package/template/claude-task-manager/lib/remote-submission-observer.js +278 -0
  110. package/template/claude-task-manager/lib/restart-guard.js +109 -0
  111. package/template/claude-task-manager/lib/restore-interruption-detector.js +439 -0
  112. package/template/claude-task-manager/lib/restore-policy.js +13 -0
  113. package/template/claude-task-manager/lib/restore-resume-batch.js +74 -0
  114. package/template/claude-task-manager/lib/restore-runtime.js +68 -0
  115. package/template/claude-task-manager/lib/restore-storm.js +34 -0
  116. package/template/claude-task-manager/lib/resume-cwd.js +36 -0
  117. package/template/claude-task-manager/lib/resume-preflight.js +313 -0
  118. package/template/claude-task-manager/lib/runtime-work-registry.js +444 -0
  119. package/template/claude-task-manager/lib/sanitize-openai-auth.js +31 -0
  120. package/template/claude-task-manager/lib/scheduler.js +21 -1
  121. package/template/claude-task-manager/lib/scrollback-snapshot-store.js +159 -0
  122. package/template/claude-task-manager/lib/serial-task-queue.js +64 -0
  123. package/template/claude-task-manager/lib/server-listeners.js +239 -0
  124. package/template/claude-task-manager/lib/session-capture.js +42 -7
  125. package/template/claude-task-manager/lib/session-content-backfill.js +131 -0
  126. package/template/claude-task-manager/lib/session-history.js +388 -43
  127. package/template/claude-task-manager/lib/session-host-manager.js +287 -0
  128. package/template/claude-task-manager/lib/session-image-refs.js +209 -0
  129. package/template/claude-task-manager/lib/session-jobs.js +399 -59
  130. package/template/claude-task-manager/lib/session-prompt-index.js +137 -0
  131. package/template/claude-task-manager/lib/session-restore.js +53 -0
  132. package/template/claude-task-manager/lib/session-standup.js +123 -23
  133. package/template/claude-task-manager/lib/session-state-bus.js +14 -0
  134. package/template/claude-task-manager/lib/session-stream.js +64 -16
  135. package/template/claude-task-manager/lib/session-timeline-summary.js +260 -0
  136. package/template/claude-task-manager/lib/session-token-usage.js +494 -0
  137. package/template/claude-task-manager/lib/session-workspace-binding.js +356 -0
  138. package/template/claude-task-manager/lib/setup-network-config.js +9 -0
  139. package/template/claude-task-manager/lib/size-cap.js +45 -0
  140. package/template/claude-task-manager/lib/size-cap.test.js +62 -0
  141. package/template/claude-task-manager/lib/skill-autocomplete.js +180 -1
  142. package/template/claude-task-manager/lib/skill-intent-resolver.js +304 -0
  143. package/template/claude-task-manager/lib/sqlite-driver.js +19 -3
  144. package/template/claude-task-manager/lib/standup-attention.js +7 -3
  145. package/template/claude-task-manager/lib/status-authority.js +39 -0
  146. package/template/claude-task-manager/lib/status-hooks.js +4 -0
  147. package/template/claude-task-manager/lib/storage-migration.js +235 -0
  148. package/template/claude-task-manager/lib/structured-capture.js +298 -0
  149. package/template/claude-task-manager/lib/sync-io-census.js +163 -0
  150. package/template/claude-task-manager/lib/tailscale-setup.js +6 -0
  151. package/template/claude-task-manager/lib/terminal-activity-evidence.js +33 -0
  152. package/template/claude-task-manager/lib/terminal-choice.js +364 -0
  153. package/template/claude-task-manager/lib/terminal-control-sanitize.js +17 -0
  154. package/template/claude-task-manager/lib/terminal-fingerprint.js +48 -0
  155. package/template/claude-task-manager/lib/terminal-output-flush.js +84 -0
  156. package/template/claude-task-manager/lib/timeline-order.js +122 -0
  157. package/template/claude-task-manager/lib/transcript-store.js +348 -43
  158. package/template/claude-task-manager/lib/transport-security.js +84 -1
  159. package/template/claude-task-manager/lib/wait-state.js +184 -0
  160. package/template/claude-task-manager/lib/walle-client.js +47 -5
  161. package/template/claude-task-manager/lib/walle-ctm-history.js +564 -4
  162. package/template/claude-task-manager/lib/walle-external-actions.js +135 -16
  163. package/template/claude-task-manager/lib/walle-history-hydration.js +46 -0
  164. package/template/claude-task-manager/lib/walle-native-health.js +403 -0
  165. package/template/claude-task-manager/lib/walle-repair.js +701 -0
  166. package/template/claude-task-manager/lib/walle-session-cache.js +109 -0
  167. package/template/claude-task-manager/lib/walle-session-context.js +57 -21
  168. package/template/claude-task-manager/lib/walle-session-model-catalog.js +34 -0
  169. package/template/claude-task-manager/lib/walle-supervisor.js +539 -63
  170. package/template/claude-task-manager/lib/walle-transcript.js +52 -0
  171. package/template/claude-task-manager/lib/worktree-active-sync.js +11 -7
  172. package/template/claude-task-manager/lib/worktree-cwd.js +32 -1
  173. package/template/claude-task-manager/package.json +1 -1
  174. package/template/claude-task-manager/prompt-harvest.js +89 -66
  175. package/template/claude-task-manager/providers/claude-code.js +51 -3
  176. package/template/claude-task-manager/providers/cursor.js +140 -45
  177. package/template/claude-task-manager/public/css/reviews.css +551 -61
  178. package/template/claude-task-manager/public/css/setup.css +191 -0
  179. package/template/claude-task-manager/public/css/walle-session.css +865 -10
  180. package/template/claude-task-manager/public/css/walle.css +154 -0
  181. package/template/claude-task-manager/public/designs/ai-providers-consolidation-v2.html +830 -0
  182. package/template/claude-task-manager/public/index.html +18516 -2058
  183. package/template/claude-task-manager/public/ipad.html +363 -0
  184. package/template/claude-task-manager/public/js/document-review-links.js +301 -0
  185. package/template/claude-task-manager/public/js/image-normalize.js +69 -36
  186. package/template/claude-task-manager/public/js/message-renderer.js +1265 -77
  187. package/template/claude-task-manager/public/js/prompts.js +66 -29
  188. package/template/claude-task-manager/public/js/reviews.js +901 -133
  189. package/template/claude-task-manager/public/js/session-activity-utils.js +11 -1
  190. package/template/claude-task-manager/public/js/session-search-utils.js +94 -10
  191. package/template/claude-task-manager/public/js/session-status-precedence.js +23 -5
  192. package/template/claude-task-manager/public/js/setup.js +1273 -176
  193. package/template/claude-task-manager/public/js/stream-view.js +691 -73
  194. package/template/claude-task-manager/public/js/terminal-reconciler.js +210 -0
  195. package/template/claude-task-manager/public/js/walle-session.js +2455 -158
  196. package/template/claude-task-manager/public/js/walle.js +455 -28
  197. package/template/claude-task-manager/public/m/app.css +2909 -262
  198. package/template/claude-task-manager/public/m/app.js +6601 -398
  199. package/template/claude-task-manager/public/m/claim.html +224 -17
  200. package/template/claude-task-manager/public/m/index.html +117 -21
  201. package/template/claude-task-manager/public/m/sw.js +3 -1
  202. package/template/claude-task-manager/public/manifest.json +2 -2
  203. package/template/claude-task-manager/public/prompts.html +30 -14
  204. package/template/claude-task-manager/queue-engine.js +507 -28
  205. package/template/claude-task-manager/scripts/repair-claude-session-images.js +27 -8
  206. package/template/claude-task-manager/server.js +14341 -2197
  207. package/template/claude-task-manager/session-integrity.js +160 -18
  208. package/template/claude-task-manager/session-search-ranking.js +1 -0
  209. package/template/claude-task-manager/session-utils.js +25 -5
  210. package/template/claude-task-manager/workers/approval-blocklist.js +96 -6
  211. package/template/claude-task-manager/workers/approval-widget-validator.js +14 -8
  212. package/template/claude-task-manager/workers/conversation-import-worker.js +11 -50
  213. package/template/claude-task-manager/workers/db-owner-worker.js +386 -0
  214. package/template/claude-task-manager/workers/harvest-worker.js +9 -55
  215. package/template/claude-task-manager/workers/headless-term-worker.js +9 -530
  216. package/template/claude-task-manager/workers/read-pool-worker.js +387 -0
  217. package/template/claude-task-manager/workers/scrollback-worker.js +11 -72
  218. package/template/claude-task-manager/workers/session-host-process.js +146 -0
  219. package/template/claude-task-manager/workers/session-integrity-worker.js +10 -54
  220. package/template/claude-task-manager/workers/state-detectors/base.js +18 -1
  221. package/template/claude-task-manager/workers/state-detectors/claude-code.js +182 -9
  222. package/template/claude-task-manager/workers/state-detectors/codex.js +150 -2
  223. package/template/claude-task-manager/workers/state-detectors/cursor.js +127 -0
  224. package/template/claude-task-manager/workers/state-detectors/gemini.js +21 -0
  225. package/template/claude-task-manager/workers/state-detectors/index.js +29 -0
  226. package/template/claude-task-manager/workers/state-detectors/opencode.js +103 -0
  227. package/template/docs/design/markdown-review-pane.md +206 -0
  228. package/template/docs/designs/2026-05-17-portkey-gateway-provider-ux.md +129 -38
  229. package/template/docs/designs/2026-05-20-mobile-worktree-finish-command.md +27 -0
  230. package/template/docs/designs/2026-05-22-ai-configuration-consolidation.md +248 -0
  231. package/template/docs/designs/ai-configuration-consolidation-mock.html +812 -0
  232. package/template/docs/private-memory-and-pii-policy.md +69 -0
  233. package/template/package.json +2 -1
  234. package/template/scripts/check-private-data.js +201 -0
  235. package/template/shared/sqlite-owner-guard.js +30 -0
  236. package/template/shared/sqlite-owner-write-queue.js +225 -0
  237. package/template/shared/sqlite-storage-policy.js +111 -0
  238. package/template/shared/sqlite-write-lock.js +428 -0
  239. package/template/wall-e/agent-runners/claude-code.js +5 -0
  240. package/template/wall-e/agent.js +166 -22
  241. package/template/wall-e/api-walle.js +524 -70
  242. package/template/wall-e/auth/provider-flows.js +11 -1
  243. package/template/wall-e/bin/walle-mcp-stdio.js +341 -17
  244. package/template/wall-e/brain.js +1614 -141
  245. package/template/wall-e/chat/attachment-blocks.js +96 -0
  246. package/template/wall-e/chat/attachments.js +2 -1
  247. package/template/wall-e/chat/capability-resolver.js +7 -7
  248. package/template/wall-e/chat/context-messages.js +28 -0
  249. package/template/wall-e/chat/conversation-frame.js +630 -0
  250. package/template/wall-e/chat/provider-messages.js +125 -0
  251. package/template/wall-e/chat.js +1002 -233
  252. package/template/wall-e/coding/acceptance-contract.js +170 -0
  253. package/template/wall-e/coding/acp-adapter.js +1 -1
  254. package/template/wall-e/coding/agent-catalog.js +3 -0
  255. package/template/wall-e/coding/artifact-store.js +93 -0
  256. package/template/wall-e/coding/capability-router.js +120 -0
  257. package/template/wall-e/coding/coding-run-controller.js +423 -0
  258. package/template/wall-e/coding/compaction-service.js +157 -12
  259. package/template/wall-e/coding/frontend-verification.js +258 -0
  260. package/template/wall-e/coding/lifecycle-hooks.js +75 -0
  261. package/template/wall-e/coding/local-preview-contract.js +157 -0
  262. package/template/wall-e/coding/permission-service.js +57 -13
  263. package/template/wall-e/coding/prompt-bundle.js +19 -1
  264. package/template/wall-e/coding/prompt-section-registry.js +227 -0
  265. package/template/wall-e/coding/provider-compat.js +15 -0
  266. package/template/wall-e/coding/runtime-events.js +224 -0
  267. package/template/wall-e/coding/runtime-mode.js +3 -0
  268. package/template/wall-e/coding/side-git-snapshot.js +160 -4
  269. package/template/wall-e/coding/snapshot-service.js +143 -1
  270. package/template/wall-e/coding/stream-processor.js +388 -34
  271. package/template/wall-e/coding/task-tool.js +141 -4
  272. package/template/wall-e/coding/tool-execution-controller.js +365 -0
  273. package/template/wall-e/coding/tool-registry.js +43 -5
  274. package/template/wall-e/coding/user-hooks.js +217 -0
  275. package/template/wall-e/coding-orchestrator.js +1330 -221
  276. package/template/wall-e/coding-prompts.js +20 -4
  277. package/template/wall-e/context/context-builder.js +15 -2
  278. package/template/wall-e/decision/confidence.js +1 -1
  279. package/template/wall-e/docs/coding-acceptance-contract.md +41 -0
  280. package/template/wall-e/docs/external-action-controller.md +26 -6
  281. package/template/wall-e/docs/telemetry-lifecycle.md +8 -2
  282. package/template/wall-e/embeddings.js +591 -53
  283. package/template/wall-e/external-action-controller.js +12 -0
  284. package/template/wall-e/http/auth.js +1 -0
  285. package/template/wall-e/http/chat-api.js +46 -11
  286. package/template/wall-e/http/model-admin.js +836 -34
  287. package/template/wall-e/lib/boot-profile.js +88 -0
  288. package/template/wall-e/lib/event-loop-monitor.js +93 -0
  289. package/template/wall-e/lib/service-health.js +194 -0
  290. package/template/wall-e/llm/anthropic.js +130 -5
  291. package/template/wall-e/llm/client.js +266 -63
  292. package/template/wall-e/llm/default-fallback.js +382 -0
  293. package/template/wall-e/llm/health.js +19 -0
  294. package/template/wall-e/llm/message-guard.js +78 -0
  295. package/template/wall-e/llm/model-catalog.js +252 -1
  296. package/template/wall-e/llm/openai.js +26 -4
  297. package/template/wall-e/llm/portkey-sync.js +654 -0
  298. package/template/wall-e/llm/provider-error.js +30 -2
  299. package/template/wall-e/llm/registry.js +5 -1
  300. package/template/wall-e/llm/request-compat.js +67 -0
  301. package/template/wall-e/loops/backfill.js +79 -23
  302. package/template/wall-e/loops/brain-optimize.js +67 -0
  303. package/template/wall-e/loops/ingest.js +25 -10
  304. package/template/wall-e/loops/question-digest.js +160 -0
  305. package/template/wall-e/loops/reflect.js +6 -4
  306. package/template/wall-e/loops/think.js +39 -12
  307. package/template/wall-e/mcp-server.js +318 -36
  308. package/template/wall-e/memory/ctm-context-client.js +52 -14
  309. package/template/wall-e/memory/ctm-operational-context.js +237 -0
  310. package/template/wall-e/memory/ctm-prompt-executions-client.js +128 -0
  311. package/template/wall-e/memory/ctm-session-context.js +111 -63
  312. package/template/wall-e/prompts/coding/deepseek.txt +3 -0
  313. package/template/wall-e/prompts/coding/gemini.txt +6 -0
  314. package/template/wall-e/prompts/coding/gpt.txt +6 -0
  315. package/template/wall-e/prompts/coding/local.txt +7 -0
  316. package/template/wall-e/runtime/decision-hooks.js +115 -0
  317. package/template/wall-e/runtime/devbox-gateway.js +82 -8
  318. package/template/wall-e/runtime/prompt-manifest.js +86 -0
  319. package/template/wall-e/runtime/tool-executor.js +269 -0
  320. package/template/wall-e/runtime/tool-result-envelope.js +138 -0
  321. package/template/wall-e/runtime/transcript-projection.js +60 -0
  322. package/template/wall-e/runtime/walle-runtime.js +224 -0
  323. package/template/wall-e/scripts/db-optimize/migrate.js +162 -0
  324. package/template/wall-e/scripts/db-optimize/recall-eval.js +117 -0
  325. package/template/wall-e/server.js +15 -0
  326. package/template/wall-e/session-files.js +9 -0
  327. package/template/wall-e/skills/_bundled/google-calendar/run.js +1 -1
  328. package/template/wall-e/skills/_bundled/gws-workspace/run.js +1 -1
  329. package/template/wall-e/skills/_bundled/slack-mentions/run.js +76 -6
  330. package/template/wall-e/skills/claude-code-reader.js +7 -3
  331. package/template/wall-e/skills/script-skill-runner.js +10 -0
  332. package/template/wall-e/skills/skill-planner.js +38 -0
  333. package/template/wall-e/tools/builtin-middleware.js +19 -9
  334. package/template/wall-e/tools/local-tools.js +1428 -16
  335. package/template/wall-e/tools/permission-checker.js +73 -5
  336. package/template/wall-e/tools/question-manager.js +117 -7
  337. package/template/wall-e/training/harvester.js +12 -28
  338. package/template/wall-e/training/replay.js +25 -80
  339. package/template/website/index.html +10 -10
  340. package/template/wall-e/eval/ab-test.js +0 -203
  341. package/template/wall-e/eval/agent-runner.js +0 -772
  342. package/template/wall-e/eval/agent-scorer.js +0 -461
  343. package/template/wall-e/eval/aggregator.js +0 -414
  344. package/template/wall-e/eval/allowed-test-commands.js +0 -34
  345. package/template/wall-e/eval/benchmark-generator.js +0 -113
  346. package/template/wall-e/eval/benchmarks/chat-eval.json +0 -1662
  347. package/template/wall-e/eval/benchmarks/chat.json +0 -82
  348. package/template/wall-e/eval/benchmarks/coding-agent-real.json +0 -1
  349. package/template/wall-e/eval/benchmarks/coding-agent.json +0 -1581
  350. package/template/wall-e/eval/benchmarks/coding.json +0 -122
  351. package/template/wall-e/eval/benchmarks/memory-retrieval.json +0 -234
  352. package/template/wall-e/eval/benchmarks/reasoning.json +0 -82
  353. package/template/wall-e/eval/benchmarks/swebench-lite-30.json +0 -212
  354. package/template/wall-e/eval/benchmarks.js +0 -669
  355. package/template/wall-e/eval/cc-replay.js +0 -719
  356. package/template/wall-e/eval/chat-eval.js +0 -525
  357. package/template/wall-e/eval/check-keys.js +0 -15
  358. package/template/wall-e/eval/check-providers.js +0 -42
  359. package/template/wall-e/eval/codex-cli-baseline.js +0 -669
  360. package/template/wall-e/eval/coding-agent-real.js +0 -570
  361. package/template/wall-e/eval/context-compactor.js +0 -251
  362. package/template/wall-e/eval/debug-agent003.js +0 -68
  363. package/template/wall-e/eval/diagnostics.js +0 -216
  364. package/template/wall-e/eval/eval-orchestrator.js +0 -642
  365. package/template/wall-e/eval/evaluate.js +0 -202
  366. package/template/wall-e/eval/evaluator.js +0 -373
  367. package/template/wall-e/eval/exporter.js +0 -212
  368. package/template/wall-e/eval/fixtures/express-basic/package.json +0 -9
  369. package/template/wall-e/eval/fixtures/express-basic/server.js +0 -115
  370. package/template/wall-e/eval/fixtures/express-basic/test.js +0 -83
  371. package/template/wall-e/eval/fixtures/express-buggy/package.json +0 -9
  372. package/template/wall-e/eval/fixtures/express-buggy/server.js +0 -113
  373. package/template/wall-e/eval/fixtures/express-buggy/test.js +0 -83
  374. package/template/wall-e/eval/fixtures/express-buggy-items/package.json +0 -9
  375. package/template/wall-e/eval/fixtures/express-buggy-items/server.js +0 -112
  376. package/template/wall-e/eval/fixtures/express-buggy-items/test.js +0 -83
  377. package/template/wall-e/eval/fixtures/express-buggy-search/package.json +0 -9
  378. package/template/wall-e/eval/fixtures/express-buggy-search/server.js +0 -121
  379. package/template/wall-e/eval/fixtures/express-buggy-search/test.js +0 -83
  380. package/template/wall-e/eval/fixtures/express-rename-data/data.js +0 -34
  381. package/template/wall-e/eval/fixtures/express-rename-data/package.json +0 -9
  382. package/template/wall-e/eval/fixtures/express-rename-data/server.js +0 -97
  383. package/template/wall-e/eval/fixtures/express-rename-data/test.js +0 -88
  384. package/template/wall-e/eval/fixtures/express-xss/package.json +0 -12
  385. package/template/wall-e/eval/fixtures/express-xss/server.js +0 -90
  386. package/template/wall-e/eval/fixtures/express-xss/test.js +0 -67
  387. package/template/wall-e/eval/fixtures/express-xss/views/profile.ejs +0 -9
  388. package/template/wall-e/eval/fixtures/fullstack-app/config/default.js +0 -9
  389. package/template/wall-e/eval/fixtures/fullstack-app/config/test.js +0 -13
  390. package/template/wall-e/eval/fixtures/fullstack-app/package.json +0 -11
  391. package/template/wall-e/eval/fixtures/fullstack-app/public/css/style.css +0 -137
  392. package/template/wall-e/eval/fixtures/fullstack-app/public/index.html +0 -46
  393. package/template/wall-e/eval/fixtures/fullstack-app/public/js/app.js +0 -121
  394. package/template/wall-e/eval/fixtures/fullstack-app/public/js/auth.js +0 -71
  395. package/template/wall-e/eval/fixtures/fullstack-app/public/js/items.js +0 -80
  396. package/template/wall-e/eval/fixtures/fullstack-app/public/js/users.js +0 -46
  397. package/template/wall-e/eval/fixtures/fullstack-app/public/login.html +0 -45
  398. package/template/wall-e/eval/fixtures/fullstack-app/public/register.html +0 -38
  399. package/template/wall-e/eval/fixtures/fullstack-app/scripts/migrate.js +0 -23
  400. package/template/wall-e/eval/fixtures/fullstack-app/scripts/seed.js +0 -46
  401. package/template/wall-e/eval/fixtures/fullstack-app/server/db.js +0 -99
  402. package/template/wall-e/eval/fixtures/fullstack-app/server/index.js +0 -94
  403. package/template/wall-e/eval/fixtures/fullstack-app/server/middleware/auth.js +0 -19
  404. package/template/wall-e/eval/fixtures/fullstack-app/server/middleware/logger.js +0 -19
  405. package/template/wall-e/eval/fixtures/fullstack-app/server/router.js +0 -50
  406. package/template/wall-e/eval/fixtures/fullstack-app/server/routes/auth.js +0 -69
  407. package/template/wall-e/eval/fixtures/fullstack-app/server/routes/health.js +0 -23
  408. package/template/wall-e/eval/fixtures/fullstack-app/server/routes/items.js +0 -88
  409. package/template/wall-e/eval/fixtures/fullstack-app/server/routes/users.js +0 -75
  410. package/template/wall-e/eval/fixtures/fullstack-app/server/test.js +0 -198
  411. package/template/wall-e/eval/fixtures/fullstack-app/server/utils/response.js +0 -34
  412. package/template/wall-e/eval/fixtures/fullstack-app/server/utils/validate.js +0 -26
  413. package/template/wall-e/eval/fixtures/fullstack-app/server.js +0 -8
  414. package/template/wall-e/eval/fixtures/fullstack-app/test.js +0 -12
  415. package/template/wall-e/eval/fixtures/monorepo-basic/package.json +0 -8
  416. package/template/wall-e/eval/fixtures/monorepo-basic/packages/api/data.js +0 -58
  417. package/template/wall-e/eval/fixtures/monorepo-basic/packages/api/middleware.js +0 -46
  418. package/template/wall-e/eval/fixtures/monorepo-basic/packages/api/package.json +0 -8
  419. package/template/wall-e/eval/fixtures/monorepo-basic/packages/api/routes.js +0 -64
  420. package/template/wall-e/eval/fixtures/monorepo-basic/packages/api/server.js +0 -56
  421. package/template/wall-e/eval/fixtures/monorepo-basic/packages/api/test.js +0 -116
  422. package/template/wall-e/eval/fixtures/monorepo-basic/packages/cli/commands.js +0 -61
  423. package/template/wall-e/eval/fixtures/monorepo-basic/packages/cli/index.js +0 -62
  424. package/template/wall-e/eval/fixtures/monorepo-basic/packages/cli/output.js +0 -43
  425. package/template/wall-e/eval/fixtures/monorepo-basic/packages/cli/package.json +0 -11
  426. package/template/wall-e/eval/fixtures/monorepo-basic/packages/cli/test.js +0 -44
  427. package/template/wall-e/eval/fixtures/monorepo-basic/packages/shared/formatters.js +0 -43
  428. package/template/wall-e/eval/fixtures/monorepo-basic/packages/shared/index.js +0 -12
  429. package/template/wall-e/eval/fixtures/monorepo-basic/packages/shared/package.json +0 -5
  430. package/template/wall-e/eval/fixtures/monorepo-basic/packages/shared/test.js +0 -55
  431. package/template/wall-e/eval/fixtures/monorepo-basic/packages/shared/validators.js +0 -29
  432. package/template/wall-e/eval/fixtures/monorepo-basic/test.js +0 -46
  433. package/template/wall-e/eval/fixtures/node-cli/index.js +0 -78
  434. package/template/wall-e/eval/fixtures/node-cli/package.json +0 -10
  435. package/template/wall-e/eval/fixtures/node-cli/test.js +0 -57
  436. package/template/wall-e/eval/fixtures/node-typed/package.json +0 -8
  437. package/template/wall-e/eval/fixtures/node-typed/src/handlers.js +0 -31
  438. package/template/wall-e/eval/fixtures/node-typed/src/utils.js +0 -33
  439. package/template/wall-e/eval/fixtures/node-typed/test.js +0 -36
  440. package/template/wall-e/eval/fixtures/python-flask/app.py +0 -14
  441. package/template/wall-e/eval/fixtures/python-flask/requirements.txt +0 -2
  442. package/template/wall-e/eval/fixtures/python-flask/test_app.py +0 -25
  443. package/template/wall-e/eval/fixtures/wall-e-subset/brain.js +0 -105
  444. package/template/wall-e/eval/fixtures/wall-e-subset/eval/aggregator.js +0 -101
  445. package/template/wall-e/eval/fixtures/wall-e-subset/eval/benchmarks/chat.json +0 -20
  446. package/template/wall-e/eval/fixtures/wall-e-subset/eval/benchmarks/coding.json +0 -32
  447. package/template/wall-e/eval/fixtures/wall-e-subset/eval/benchmarks.js +0 -64
  448. package/template/wall-e/eval/fixtures/wall-e-subset/eval/fixtures/simple-project/package.json +0 -6
  449. package/template/wall-e/eval/fixtures/wall-e-subset/eval/fixtures/simple-project/server.js +0 -31
  450. package/template/wall-e/eval/fixtures/wall-e-subset/eval/fixtures/simple-project/test.js +0 -18
  451. package/template/wall-e/eval/fixtures/wall-e-subset/eval/fixtures/simple-project/utils.js +0 -34
  452. package/template/wall-e/eval/fixtures/wall-e-subset/eval/runner.js +0 -104
  453. package/template/wall-e/eval/fixtures/wall-e-subset/eval/scorer.js +0 -73
  454. package/template/wall-e/eval/fixtures/wall-e-subset/eval/test.js +0 -134
  455. package/template/wall-e/eval/fixtures/wall-e-subset/llm/client.js +0 -99
  456. package/template/wall-e/eval/fixtures/wall-e-subset/llm/providers.js +0 -63
  457. package/template/wall-e/eval/fixtures/wall-e-subset/llm/test.js +0 -70
  458. package/template/wall-e/eval/fixtures/wall-e-subset/package.json +0 -10
  459. package/template/wall-e/eval/fixtures/wall-e-subset/test.js +0 -86
  460. package/template/wall-e/eval/harvester.js +0 -685
  461. package/template/wall-e/eval/head-to-head.js +0 -388
  462. package/template/wall-e/eval/humaneval-adapter.js +0 -321
  463. package/template/wall-e/eval/list-models.js +0 -31
  464. package/template/wall-e/eval/livecodebench-adapter.js +0 -291
  465. package/template/wall-e/eval/mail-integration.js +0 -443
  466. package/template/wall-e/eval/manifest.js +0 -186
  467. package/template/wall-e/eval/meta-harness/adapters/coding-agent.js +0 -57
  468. package/template/wall-e/eval/meta-harness/bootstrap-snapshot.js +0 -149
  469. package/template/wall-e/eval/meta-harness/candidate-store.js +0 -117
  470. package/template/wall-e/eval/meta-harness/cli.js +0 -86
  471. package/template/wall-e/eval/meta-harness/domain-spec.js +0 -154
  472. package/template/wall-e/eval/meta-harness/domains/coding-agent.domain.json +0 -84
  473. package/template/wall-e/eval/meta-harness/examples/env-bootstrap-candidate.js +0 -29
  474. package/template/wall-e/eval/meta-harness/experience-store.js +0 -174
  475. package/template/wall-e/eval/meta-harness/frontier.js +0 -96
  476. package/template/wall-e/eval/meta-harness/harness-interface.js +0 -90
  477. package/template/wall-e/eval/meta-harness/leakage-guard.js +0 -80
  478. package/template/wall-e/eval/meta-harness/optimizer.js +0 -207
  479. package/template/wall-e/eval/meta-harness/proposer-runner.js +0 -110
  480. package/template/wall-e/eval/meta-harness/reporting.js +0 -58
  481. package/template/wall-e/eval/meta-harness/telemetry.js +0 -27
  482. package/template/wall-e/eval/meta-harness/validation.js +0 -81
  483. package/template/wall-e/eval/promoter.js +0 -228
  484. package/template/wall-e/eval/provider-normalizer.js +0 -33
  485. package/template/wall-e/eval/replay.js +0 -395
  486. package/template/wall-e/eval/run-agent-benchmarks.js +0 -386
  487. package/template/wall-e/eval/run-codex-cli-baseline.js +0 -177
  488. package/template/wall-e/eval/run-coding-agent-real.js +0 -187
  489. package/template/wall-e/eval/run-eval.js +0 -435
  490. package/template/wall-e/eval/run-model-comparison.js +0 -142
  491. package/template/wall-e/eval/session-evaluator.js +0 -187
  492. package/template/wall-e/eval/session-miner.js +0 -207
  493. package/template/wall-e/eval/session-retrieval-benchmark.js +0 -150
  494. package/template/wall-e/eval/session-transcripts.js +0 -509
  495. package/template/wall-e/eval/shadow.js +0 -161
  496. package/template/wall-e/eval/swebench-adapter.js +0 -345
  497. package/template/wall-e/eval/swebench-docker.js +0 -192
  498. package/template/wall-e/eval/train.py +0 -320
  499. package/template/wall-e/eval/trainer.js +0 -232
  500. package/template/wall-e/eval/weekly-eval-loop.js +0 -241
@@ -468,6 +468,80 @@ body.walle-composer-resizing {
468
468
  outline: none;
469
469
  }
470
470
 
471
+ .walle-history-loading-state {
472
+ margin: auto;
473
+ width: min(420px, calc(100% - 32px));
474
+ padding: 22px 22px 20px;
475
+ border: 1px solid rgba(122,162,247,0.26);
476
+ border-radius: 10px;
477
+ background:
478
+ linear-gradient(180deg, rgba(36,40,59,0.92), rgba(26,27,38,0.86)),
479
+ var(--bg-card, #24283b);
480
+ box-shadow: 0 18px 46px rgba(0,0,0,0.18), inset 0 1px 0 rgba(255,255,255,0.03);
481
+ text-align: left;
482
+ user-select: none;
483
+ }
484
+ .walle-history-loading-badge {
485
+ display: inline-flex;
486
+ align-items: center;
487
+ gap: 7px;
488
+ margin-bottom: 12px;
489
+ padding: 4px 9px;
490
+ border-radius: 999px;
491
+ border: 1px solid rgba(122,162,247,0.28);
492
+ background: rgba(122,162,247,0.10);
493
+ color: #9ab5ff;
494
+ font-size: 11px;
495
+ font-weight: 700;
496
+ letter-spacing: 0.02em;
497
+ text-transform: uppercase;
498
+ }
499
+ .walle-history-loading-spinner {
500
+ width: 10px;
501
+ height: 10px;
502
+ border-radius: 50%;
503
+ border: 2px solid rgba(154,181,255,0.25);
504
+ border-top-color: #9ab5ff;
505
+ animation: walle-history-spin 0.85s linear infinite;
506
+ }
507
+ .walle-history-loading-title {
508
+ color: var(--fg, #c0caf5);
509
+ font-size: 16px;
510
+ font-weight: 700;
511
+ line-height: 1.3;
512
+ margin-bottom: 6px;
513
+ }
514
+ .walle-history-loading-copy {
515
+ color: var(--fg-muted, #8f98c7);
516
+ font-size: 13px;
517
+ line-height: 1.45;
518
+ }
519
+ .walle-history-loading-skeleton {
520
+ display: flex;
521
+ flex-direction: column;
522
+ gap: 8px;
523
+ margin-top: 16px;
524
+ }
525
+ .walle-history-loading-line {
526
+ display: block;
527
+ height: 8px;
528
+ border-radius: 999px;
529
+ background: linear-gradient(90deg, rgba(122,162,247,0.08), rgba(122,162,247,0.22), rgba(122,162,247,0.08));
530
+ background-size: 180% 100%;
531
+ animation: walle-history-sheen 1.4s ease-in-out infinite;
532
+ }
533
+ .walle-history-loading-line:nth-child(1) { width: 88%; }
534
+ .walle-history-loading-line:nth-child(2) { width: 68%; animation-delay: 0.12s; }
535
+ .walle-history-loading-line:nth-child(3) { width: 78%; animation-delay: 0.24s; }
536
+
537
+ @keyframes walle-history-spin {
538
+ to { transform: rotate(360deg); }
539
+ }
540
+ @keyframes walle-history-sheen {
541
+ 0% { background-position: 130% 0; }
542
+ 100% { background-position: -60% 0; }
543
+ }
544
+
471
545
  .walle-msg {
472
546
  display: flex;
473
547
  gap: 10px;
@@ -549,6 +623,69 @@ body.walle-composer-resizing {
549
623
  font-size: 11px;
550
624
  color: var(--fg-dim, #565f89);
551
625
  }
626
+ .walle-msg-actions {
627
+ display: inline-flex;
628
+ align-items: center;
629
+ gap: 4px;
630
+ margin-left: 4px;
631
+ opacity: 0;
632
+ transition: opacity 120ms ease;
633
+ }
634
+ .walle-msg:hover .walle-msg-actions,
635
+ .walle-msg:focus-within .walle-msg-actions {
636
+ opacity: 1;
637
+ }
638
+ .walle-msg-action,
639
+ .walle-branch-btn {
640
+ height: 22px;
641
+ border: 1px solid rgba(122,162,247,0.28);
642
+ border-radius: 4px;
643
+ background: rgba(26,27,38,0.72);
644
+ color: var(--accent, #7aa2f7);
645
+ font-size: 11px;
646
+ font-weight: 600;
647
+ line-height: 20px;
648
+ padding: 0 7px;
649
+ cursor: pointer;
650
+ }
651
+ .walle-msg-action:hover,
652
+ .walle-msg-action:focus-visible,
653
+ .walle-branch-btn:hover,
654
+ .walle-branch-btn:focus-visible {
655
+ border-color: rgba(122,162,247,0.68);
656
+ background: rgba(65,72,104,0.78);
657
+ color: var(--fg, #c0caf5);
658
+ outline: none;
659
+ }
660
+ .walle-msg-action.danger {
661
+ color: var(--red, #f7768e);
662
+ border-color: rgba(247,118,142,0.28);
663
+ }
664
+ .walle-msg-action.danger:hover,
665
+ .walle-msg-action.danger:focus-visible {
666
+ border-color: rgba(247,118,142,0.7);
667
+ }
668
+ .walle-branch-nav {
669
+ display: inline-flex;
670
+ align-items: center;
671
+ gap: 2px;
672
+ margin-right: 2px;
673
+ }
674
+ .walle-branch-btn {
675
+ width: 22px;
676
+ padding: 0;
677
+ }
678
+ .walle-branch-btn:disabled {
679
+ opacity: 0.42;
680
+ cursor: default;
681
+ }
682
+ .walle-branch-label {
683
+ min-width: 32px;
684
+ text-align: center;
685
+ font-size: 11px;
686
+ font-weight: 700;
687
+ color: var(--fg-dim, #565f89);
688
+ }
552
689
  .walle-msg-model {
553
690
  font-size: 10px;
554
691
  background: rgba(167,139,250,0.15);
@@ -661,6 +798,41 @@ body.walle-composer-resizing {
661
798
  margin: 6px 0;
662
799
  color: var(--fg-dim, #565f89);
663
800
  }
801
+ .walle-edit-card {
802
+ border: 1px solid rgba(122,162,247,0.34);
803
+ background: rgba(26,27,38,0.56);
804
+ border-radius: 6px;
805
+ padding: 8px;
806
+ }
807
+ .walle-edit-input {
808
+ width: 100%;
809
+ min-height: 86px;
810
+ resize: vertical;
811
+ border: 1px solid var(--border, #3b4261);
812
+ border-radius: 5px;
813
+ background: rgba(15,17,26,0.78);
814
+ color: var(--fg, #c0caf5);
815
+ font: inherit;
816
+ line-height: 1.5;
817
+ padding: 8px 10px;
818
+ outline: none;
819
+ }
820
+ .walle-edit-input:focus {
821
+ border-color: var(--accent, #7aa2f7);
822
+ box-shadow: 0 0 0 2px rgba(122,162,247,0.18);
823
+ }
824
+ .walle-edit-hint {
825
+ margin-top: 6px;
826
+ font-size: 11px;
827
+ line-height: 1.35;
828
+ color: var(--fg-dim, #565f89);
829
+ }
830
+ .walle-edit-actions {
831
+ display: flex;
832
+ justify-content: flex-end;
833
+ gap: 8px;
834
+ margin-top: 8px;
835
+ }
664
836
 
665
837
  /* --- Tool cards (Sprint 2: per-tool left-rail color for fast scannability) --- */
666
838
  .walle-tool-card {
@@ -688,16 +860,24 @@ body.walle-composer-resizing {
688
860
  .walle-tool-card[data-tool-name="think"] { border-left-color: #e0af68; }
689
861
  .walle-tool-card[data-tool-name="search_memories"] { border-left-color: #bb9af7; }
690
862
  .walle-tool-header {
863
+ width: 100%;
691
864
  display: flex;
692
865
  align-items: center;
693
866
  gap: 6px;
694
867
  padding: 6px 10px;
868
+ border: 0;
869
+ background: transparent;
870
+ color: inherit;
871
+ font: inherit;
872
+ text-align: left;
695
873
  cursor: pointer;
696
874
  user-select: none;
697
875
  transition: background 0.15s;
698
876
  }
699
- .walle-tool-header:hover {
877
+ .walle-tool-header:hover,
878
+ .walle-tool-header:focus-visible {
700
879
  background: rgba(255,255,255,0.03);
880
+ outline: none;
701
881
  }
702
882
  .walle-tool-arrow {
703
883
  font-size: 10px;
@@ -752,24 +932,100 @@ body.walle-composer-resizing {
752
932
  background: rgba(247,118,142,0.15);
753
933
  color: #f7768e;
754
934
  }
755
- .walle-tool-output {
935
+ .walle-tool-output,
936
+ .walle-tool-detail {
756
937
  display: none;
757
938
  padding: 8px 10px;
758
939
  border-top: 1px solid var(--border, #3b4261);
759
- background: #16161e;
940
+ background: linear-gradient(180deg, rgba(22,22,30,0.96), rgba(18,19,28,0.98));
760
941
  font-size: 12px;
761
942
  line-height: 1.45;
762
- font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
763
- white-space: pre-wrap;
764
- word-break: break-word;
765
- max-height: 220px;
766
- overflow-y: auto;
767
943
  color: var(--fg, #c0caf5);
768
944
  }
769
945
  .walle-tool-output:empty { display: none !important; }
770
- .walle-tool-card[data-expanded="true"] .walle-tool-output {
946
+ .walle-tool-card[data-expanded="true"] .walle-tool-output,
947
+ .walle-tool-card[data-expanded="true"] > .walle-tool-detail,
948
+ .walle-live-activity-item[open] > .walle-tool-detail {
771
949
  display: block;
772
950
  }
951
+ .walle-tool-detail-meta {
952
+ display: flex;
953
+ flex-wrap: wrap;
954
+ gap: 6px;
955
+ margin-bottom: 7px;
956
+ }
957
+ .walle-tool-detail-chip {
958
+ display: inline-flex;
959
+ align-items: center;
960
+ min-height: 20px;
961
+ padding: 1px 7px;
962
+ border: 1px solid rgba(122,162,247,0.18);
963
+ border-radius: 999px;
964
+ background: rgba(122,162,247,0.08);
965
+ color: var(--fg-dim, #565f89);
966
+ font-size: 10px;
967
+ font-weight: 700;
968
+ letter-spacing: 0.02em;
969
+ text-transform: uppercase;
970
+ }
971
+ .walle-tool-detail-chip.name {
972
+ color: #a78bfa;
973
+ }
974
+ .walle-tool-detail-chip.done {
975
+ border-color: rgba(158,206,106,0.28);
976
+ background: rgba(158,206,106,0.10);
977
+ color: #9ece6a;
978
+ }
979
+ .walle-tool-detail-chip.working {
980
+ border-color: rgba(224,175,104,0.32);
981
+ background: rgba(224,175,104,0.12);
982
+ color: #e0af68;
983
+ }
984
+ .walle-tool-detail-chip.error {
985
+ border-color: rgba(247,118,142,0.34);
986
+ background: rgba(247,118,142,0.12);
987
+ color: #f7768e;
988
+ }
989
+ .walle-tool-detail-summary {
990
+ margin: 2px 0 8px;
991
+ color: var(--fg, #c0caf5);
992
+ font-size: 12px;
993
+ }
994
+ .walle-tool-detail-section {
995
+ margin-top: 8px;
996
+ }
997
+ .walle-tool-detail-label {
998
+ margin-bottom: 4px;
999
+ color: var(--fg-dim, #565f89);
1000
+ font-size: 10px;
1001
+ font-weight: 800;
1002
+ letter-spacing: 0.08em;
1003
+ text-transform: uppercase;
1004
+ }
1005
+ .walle-tool-detail-pre {
1006
+ margin: 0;
1007
+ padding: 10px 12px;
1008
+ border: 1px solid rgba(122,162,247,0.18);
1009
+ border-radius: 7px;
1010
+ background:
1011
+ linear-gradient(180deg, rgba(15,17,26,0.95), rgba(12,14,22,0.96)),
1012
+ radial-gradient(circle at 0 0, rgba(122,162,247,0.12), transparent 34%);
1013
+ color: var(--fg, #c0caf5);
1014
+ font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
1015
+ font-size: 12px;
1016
+ line-height: 1.55;
1017
+ white-space: pre-wrap;
1018
+ word-break: break-word;
1019
+ overflow: auto;
1020
+ max-height: 260px;
1021
+ }
1022
+ .walle-tool-detail-pre.output {
1023
+ max-height: 320px;
1024
+ }
1025
+ .walle-tool-detail-empty {
1026
+ color: var(--fg-dim, #565f89);
1027
+ font-size: 12px;
1028
+ }
773
1029
 
774
1030
  .walle-live-activity {
775
1031
  margin: 10px 0 8px;
@@ -804,12 +1060,38 @@ body.walle-composer-resizing {
804
1060
  gap: 5px;
805
1061
  margin-top: 7px;
806
1062
  }
1063
+ .walle-live-activity-item {
1064
+ display: block;
1065
+ }
1066
+ .walle-live-activity-item > summary {
1067
+ list-style: none;
1068
+ }
1069
+ .walle-live-activity-item > summary::-webkit-details-marker {
1070
+ display: none;
1071
+ }
807
1072
  .walle-live-activity-row {
808
1073
  display: grid;
809
- grid-template-columns: 8px minmax(0, 1fr) auto;
1074
+ grid-template-columns: 12px 8px minmax(0, 1fr) auto;
810
1075
  align-items: center;
811
1076
  gap: 8px;
812
1077
  min-height: 22px;
1078
+ border-radius: 5px;
1079
+ cursor: pointer;
1080
+ padding: 1px 2px;
1081
+ }
1082
+ .walle-live-activity-row:hover,
1083
+ .walle-live-activity-row:focus-visible,
1084
+ .walle-live-activity-item[open] > .walle-live-activity-row {
1085
+ background: rgba(255,255,255,0.035);
1086
+ outline: none;
1087
+ }
1088
+ .walle-live-activity-arrow {
1089
+ color: var(--fg-dim, #565f89);
1090
+ font-size: 9px;
1091
+ transition: transform 0.16s ease;
1092
+ }
1093
+ .walle-live-activity-item[open] .walle-live-activity-arrow {
1094
+ transform: rotate(90deg);
813
1095
  }
814
1096
  .walle-live-activity-dot {
815
1097
  width: 7px;
@@ -862,6 +1144,37 @@ body.walle-composer-resizing {
862
1144
  .walle-live-activity-row.error .walle-live-activity-meta {
863
1145
  color: #f7768e;
864
1146
  }
1147
+ .walle-live-activity-hidden {
1148
+ display: grid;
1149
+ gap: 5px;
1150
+ }
1151
+ .walle-live-activity-hidden[hidden] {
1152
+ display: none !important;
1153
+ }
1154
+ .walle-live-activity-more {
1155
+ width: max-content;
1156
+ max-width: 100%;
1157
+ border: 0;
1158
+ border-radius: 999px;
1159
+ padding: 2px 7px;
1160
+ background: rgba(122,162,247,0.08);
1161
+ color: var(--fg-dim, #565f89);
1162
+ font: inherit;
1163
+ font-size: 11px;
1164
+ font-weight: 700;
1165
+ cursor: pointer;
1166
+ }
1167
+ .walle-live-activity-more:hover,
1168
+ .walle-live-activity-more:focus-visible {
1169
+ background: rgba(122,162,247,0.16);
1170
+ color: var(--fg, #c0caf5);
1171
+ outline: none;
1172
+ }
1173
+ .walle-live-activity-detail {
1174
+ margin: 3px 0 5px 20px;
1175
+ border: 1px solid rgba(122,162,247,0.16);
1176
+ border-radius: 8px;
1177
+ }
865
1178
 
866
1179
  .walle-tool-group {
867
1180
  background: var(--bg, #1a1b26);
@@ -974,6 +1287,388 @@ body.walle-composer-resizing {
974
1287
  .walle-composer-attachments {
975
1288
  display: flex;
976
1289
  }
1290
+ .walle-queue-preview {
1291
+ display: none;
1292
+ }
1293
+ .walle-workbar-slot {
1294
+ flex: 0 0 auto;
1295
+ padding: 0 16px;
1296
+ background:
1297
+ linear-gradient(180deg, rgba(15,19,36,0), rgba(15,19,36,0.26)),
1298
+ var(--bg, #1a1b26);
1299
+ }
1300
+ .walle-workbar {
1301
+ margin: 0 0 8px;
1302
+ border: 1px solid rgba(122,162,247,0.24);
1303
+ border-radius: 14px;
1304
+ background:
1305
+ radial-gradient(circle at 18px 10px, rgba(245,158,11,0.18), transparent 140px),
1306
+ linear-gradient(135deg, rgba(22,28,49,0.96), rgba(19,22,38,0.94));
1307
+ box-shadow: 0 12px 32px rgba(0,0,0,0.24), inset 0 1px 0 rgba(255,255,255,0.04);
1308
+ color: var(--fg, #c0caf5);
1309
+ display: grid;
1310
+ grid-template-columns: minmax(0, auto) minmax(0, 1fr) auto;
1311
+ gap: 10px;
1312
+ align-items: center;
1313
+ padding: 8px 10px;
1314
+ }
1315
+ .walle-workbar.expanded {
1316
+ grid-template-columns: 1fr auto;
1317
+ }
1318
+ .walle-workbar-rail {
1319
+ display: flex;
1320
+ align-items: center;
1321
+ gap: 6px;
1322
+ min-width: 0;
1323
+ flex-wrap: wrap;
1324
+ }
1325
+ .walle-workbar-kicker {
1326
+ color: #f6c177;
1327
+ font-size: 10px;
1328
+ font-weight: 900;
1329
+ letter-spacing: 0.14em;
1330
+ }
1331
+ .walle-work-chip {
1332
+ display: inline-flex;
1333
+ align-items: center;
1334
+ height: 22px;
1335
+ padding: 0 8px;
1336
+ border: 1px solid rgba(122,162,247,0.22);
1337
+ border-radius: 999px;
1338
+ background: rgba(122,162,247,0.09);
1339
+ color: #b9c8ff;
1340
+ font-size: 11px;
1341
+ font-weight: 800;
1342
+ white-space: nowrap;
1343
+ }
1344
+ .walle-work-chip.active { color: #bbf7d0; border-color: rgba(34,197,94,0.34); background: rgba(34,197,94,0.12); }
1345
+ .walle-work-chip.shell { color: #fde68a; border-color: rgba(245,158,11,0.34); background: rgba(245,158,11,0.11); }
1346
+ .walle-work-chip.agent { color: #a5f3fc; border-color: rgba(34,211,238,0.30); background: rgba(34,211,238,0.10); }
1347
+ .walle-work-chip.tool { color: #bfdbfe; border-color: rgba(96,165,250,0.30); background: rgba(96,165,250,0.10); }
1348
+ .walle-work-chip.skill { color: #ddd6fe; border-color: rgba(167,139,250,0.30); background: rgba(167,139,250,0.10); }
1349
+ .walle-work-chip.queued { color: #fed7aa; border-color: rgba(251,146,60,0.30); background: rgba(251,146,60,0.10); }
1350
+ .walle-work-chip.done,
1351
+ .walle-work-chip.isolated {
1352
+ color: var(--fg-dim, #7f849c);
1353
+ border-color: rgba(127,132,156,0.22);
1354
+ background: rgba(127,132,156,0.08);
1355
+ }
1356
+ .walle-workbar-summary {
1357
+ min-width: 0;
1358
+ overflow: hidden;
1359
+ text-overflow: ellipsis;
1360
+ white-space: nowrap;
1361
+ color: var(--fg, #c0caf5);
1362
+ font-size: 12px;
1363
+ font-weight: 650;
1364
+ }
1365
+ .walle-workbar-actions {
1366
+ display: inline-flex;
1367
+ align-items: center;
1368
+ gap: 6px;
1369
+ justify-self: end;
1370
+ }
1371
+ .walle-workbar-actions button,
1372
+ .walle-work-row-actions button {
1373
+ height: 28px;
1374
+ padding: 0 10px;
1375
+ border: 1px solid rgba(122,162,247,0.34);
1376
+ border-radius: 9px;
1377
+ background: rgba(122,162,247,0.12);
1378
+ color: var(--fg, #c0caf5);
1379
+ font-size: 11px;
1380
+ font-weight: 800;
1381
+ cursor: pointer;
1382
+ }
1383
+ .walle-workbar-actions button:hover,
1384
+ .walle-workbar-actions button:focus-visible,
1385
+ .walle-work-row-actions button:hover,
1386
+ .walle-work-row-actions button:focus-visible {
1387
+ border-color: rgba(122,162,247,0.72);
1388
+ outline: none;
1389
+ }
1390
+ .walle-workbar-actions button.danger,
1391
+ .walle-workbar-stop,
1392
+ .walle-work-row-actions button.danger {
1393
+ border-color: rgba(247,118,142,0.38);
1394
+ background: rgba(247,118,142,0.12);
1395
+ color: #fecdd3;
1396
+ }
1397
+ .walle-work-drawer {
1398
+ grid-column: 1 / -1;
1399
+ margin-top: 2px;
1400
+ padding-top: 10px;
1401
+ border-top: 1px solid rgba(122,162,247,0.16);
1402
+ }
1403
+ .walle-work-drawer-head {
1404
+ display: flex;
1405
+ align-items: baseline;
1406
+ justify-content: space-between;
1407
+ gap: 10px;
1408
+ margin-bottom: 8px;
1409
+ }
1410
+ .walle-work-drawer-head strong {
1411
+ font-size: 12px;
1412
+ letter-spacing: 0.02em;
1413
+ }
1414
+ .walle-work-drawer-head span {
1415
+ color: var(--fg-dim, #565f89);
1416
+ font-size: 11px;
1417
+ }
1418
+ .walle-work-group {
1419
+ display: grid;
1420
+ gap: 6px;
1421
+ margin-top: 8px;
1422
+ }
1423
+ .walle-work-group-title {
1424
+ color: #f6c177;
1425
+ font-size: 10px;
1426
+ font-weight: 900;
1427
+ letter-spacing: 0.12em;
1428
+ text-transform: uppercase;
1429
+ }
1430
+ .walle-work-row {
1431
+ display: grid;
1432
+ grid-template-columns: 10px minmax(0, 1fr) auto;
1433
+ align-items: center;
1434
+ gap: 9px;
1435
+ padding: 9px;
1436
+ border: 1px solid rgba(122,162,247,0.14);
1437
+ border-radius: 11px;
1438
+ background: rgba(12,15,29,0.42);
1439
+ }
1440
+ .walle-work-row.completed {
1441
+ opacity: 0.72;
1442
+ }
1443
+ .walle-work-dot {
1444
+ width: 8px;
1445
+ height: 8px;
1446
+ border-radius: 999px;
1447
+ background: #a3e635;
1448
+ box-shadow: 0 0 0 4px rgba(163,230,53,0.08);
1449
+ }
1450
+ .walle-work-row.failed .walle-work-dot,
1451
+ .walle-work-row.cancelled .walle-work-dot,
1452
+ .walle-work-row.stopped .walle-work-dot {
1453
+ background: #f7768e;
1454
+ box-shadow: 0 0 0 4px rgba(247,118,142,0.10);
1455
+ }
1456
+ .walle-work-row.completed .walle-work-dot {
1457
+ background: #7aa2f7;
1458
+ box-shadow: 0 0 0 4px rgba(122,162,247,0.08);
1459
+ }
1460
+ .walle-work-row-body {
1461
+ display: grid;
1462
+ gap: 2px;
1463
+ min-width: 0;
1464
+ }
1465
+ .walle-work-row-title,
1466
+ .walle-work-row-preview {
1467
+ overflow: hidden;
1468
+ text-overflow: ellipsis;
1469
+ white-space: nowrap;
1470
+ }
1471
+ .walle-work-row-title {
1472
+ font-size: 12px;
1473
+ font-weight: 800;
1474
+ }
1475
+ .walle-work-row-meta,
1476
+ .walle-work-row-preview,
1477
+ .walle-work-empty {
1478
+ color: var(--fg-dim, #7f849c);
1479
+ font-size: 11px;
1480
+ }
1481
+ .walle-work-focus {
1482
+ outline: 2px solid rgba(245,158,11,0.75);
1483
+ outline-offset: 3px;
1484
+ }
1485
+ .walle-queued-card {
1486
+ display: flex;
1487
+ align-items: center;
1488
+ justify-content: space-between;
1489
+ gap: 12px;
1490
+ padding: 9px 10px;
1491
+ border: 1px solid rgba(245,158,11,0.34);
1492
+ border-left: 3px solid #f59e0b;
1493
+ border-radius: 8px;
1494
+ background: rgba(245,158,11,0.08);
1495
+ }
1496
+ .walle-queued-body {
1497
+ min-width: 0;
1498
+ }
1499
+ .walle-queued-label {
1500
+ color: #fbbf24;
1501
+ font-size: 10px;
1502
+ font-weight: 800;
1503
+ letter-spacing: 0;
1504
+ text-transform: uppercase;
1505
+ }
1506
+ .walle-queued-title {
1507
+ margin-top: 2px;
1508
+ color: var(--fg, #c0caf5);
1509
+ font-size: 12px;
1510
+ font-weight: 650;
1511
+ overflow: hidden;
1512
+ text-overflow: ellipsis;
1513
+ white-space: nowrap;
1514
+ }
1515
+ .walle-queued-reason {
1516
+ margin-top: 2px;
1517
+ color: var(--fg-dim, #565f89);
1518
+ font-size: 11px;
1519
+ line-height: 1.35;
1520
+ }
1521
+ .walle-queued-actions {
1522
+ display: flex;
1523
+ align-items: center;
1524
+ gap: 6px;
1525
+ flex-shrink: 0;
1526
+ }
1527
+ .walle-queued-actions button {
1528
+ height: 26px;
1529
+ padding: 0 9px;
1530
+ border: 1px solid rgba(122,162,247,0.34);
1531
+ border-radius: 7px;
1532
+ background: rgba(122,162,247,0.10);
1533
+ color: var(--fg, #c0caf5);
1534
+ font-size: 11px;
1535
+ font-weight: 700;
1536
+ cursor: pointer;
1537
+ }
1538
+ .walle-queued-actions button:hover,
1539
+ .walle-queued-actions button:focus-visible {
1540
+ border-color: rgba(122,162,247,0.70);
1541
+ outline: none;
1542
+ }
1543
+ .walle-queued-actions button.danger {
1544
+ border-color: rgba(247,118,142,0.34);
1545
+ background: rgba(247,118,142,0.10);
1546
+ color: #fca5a5;
1547
+ }
1548
+
1549
+ /* ── Inline queued-prompt bubbles (pinned to the bottom of the message list) ── */
1550
+ .walle-pending-queue {
1551
+ order: 9999; /* flex column → always render last, even while Wall-E streams */
1552
+ display: flex;
1553
+ flex-direction: column;
1554
+ gap: 12px;
1555
+ margin-top: 2px;
1556
+ }
1557
+ .walle-pending-queue::before {
1558
+ content: "";
1559
+ display: block;
1560
+ border-top: 1px dashed var(--border, #3b4261);
1561
+ opacity: 0.6;
1562
+ margin: 2px 8px 0;
1563
+ }
1564
+ .walle-msg-pending {
1565
+ opacity: 0.74;
1566
+ border-left: 2px dashed rgba(122, 162, 247, 0.55);
1567
+ background: rgba(122, 162, 247, 0.05);
1568
+ }
1569
+ .walle-msg-pending.sending {
1570
+ opacity: 0.9;
1571
+ border-left-style: solid;
1572
+ }
1573
+ .walle-msg-pending[draggable="true"] { cursor: grab; }
1574
+ .walle-msg-pending.dragging {
1575
+ opacity: 0.4;
1576
+ cursor: grabbing;
1577
+ border-left-color: #7aa2f7;
1578
+ }
1579
+ .walle-pending-badge {
1580
+ font-size: 10px;
1581
+ font-weight: 700;
1582
+ letter-spacing: 0.03em;
1583
+ text-transform: uppercase;
1584
+ color: #7aa2f7;
1585
+ background: rgba(122, 162, 247, 0.12);
1586
+ border-radius: 999px;
1587
+ padding: 1px 7px;
1588
+ margin-left: 6px;
1589
+ }
1590
+ .walle-pending-actions {
1591
+ margin-left: auto;
1592
+ display: inline-flex;
1593
+ gap: 4px;
1594
+ }
1595
+ .walle-pending-action {
1596
+ border: 1px solid var(--border, #3b4261);
1597
+ background: transparent;
1598
+ color: var(--text-dim, #a9b1d6);
1599
+ border-radius: 5px;
1600
+ width: 22px;
1601
+ height: 20px;
1602
+ font-size: 12px;
1603
+ line-height: 1;
1604
+ cursor: pointer;
1605
+ padding: 0;
1606
+ }
1607
+ .walle-pending-action:hover,
1608
+ .walle-pending-action:focus-visible {
1609
+ border-color: #7aa2f7;
1610
+ color: #c0caf5;
1611
+ outline: none;
1612
+ }
1613
+ .walle-pending-action.danger:hover,
1614
+ .walle-pending-action.danger:focus-visible {
1615
+ border-color: rgba(247, 118, 142, 0.6);
1616
+ color: #fca5a5;
1617
+ }
1618
+ .walle-pending-content {
1619
+ white-space: pre-wrap;
1620
+ word-break: break-word;
1621
+ }
1622
+
1623
+ /* ── Thin one-line queue status above the composer (replaces the yellow card) ── */
1624
+ .walle-queue-status {
1625
+ display: flex;
1626
+ align-items: center;
1627
+ gap: 10px;
1628
+ padding: 5px 10px;
1629
+ border: 1px solid rgba(122, 162, 247, 0.28);
1630
+ background: rgba(122, 162, 247, 0.07);
1631
+ border-radius: 7px;
1632
+ font-size: 12px;
1633
+ color: var(--text-dim, #a9b1d6);
1634
+ }
1635
+ .walle-queue-status.waiting {
1636
+ border-color: rgba(245, 158, 11, 0.4);
1637
+ background: rgba(245, 158, 11, 0.08);
1638
+ color: #fcd34d;
1639
+ }
1640
+ .walle-queue-status-label {
1641
+ flex: 1;
1642
+ min-width: 0;
1643
+ overflow: hidden;
1644
+ text-overflow: ellipsis;
1645
+ white-space: nowrap;
1646
+ }
1647
+ .walle-queue-status-actions {
1648
+ display: inline-flex;
1649
+ gap: 6px;
1650
+ flex: 0 0 auto;
1651
+ }
1652
+ .walle-queue-status-btn {
1653
+ border: 1px solid var(--border, #3b4261);
1654
+ background: rgba(122, 162, 247, 0.10);
1655
+ color: #c0caf5;
1656
+ border-radius: 5px;
1657
+ padding: 2px 9px;
1658
+ font-size: 11px;
1659
+ font-weight: 600;
1660
+ cursor: pointer;
1661
+ }
1662
+ .walle-queue-status-btn:hover,
1663
+ .walle-queue-status-btn:focus-visible {
1664
+ border-color: #7aa2f7;
1665
+ outline: none;
1666
+ }
1667
+ .walle-queue-status-btn.danger {
1668
+ border-color: rgba(247, 118, 142, 0.34);
1669
+ background: rgba(247, 118, 142, 0.10);
1670
+ color: #fca5a5;
1671
+ }
977
1672
  .walle-composer-shell {
978
1673
  width: 100%;
979
1674
  min-width: 0;
@@ -1079,6 +1774,31 @@ body.walle-composer-resizing {
1079
1774
  height: 100%;
1080
1775
  object-fit: cover;
1081
1776
  }
1777
+ .walle-attachment-thumb--pending {
1778
+ cursor: progress;
1779
+ display: flex;
1780
+ align-items: center;
1781
+ justify-content: center;
1782
+ }
1783
+ .walle-attachment-thumb--pending:hover,
1784
+ .walle-attachment-thumb--pending:focus-visible {
1785
+ border-color: var(--border, #3b4261);
1786
+ box-shadow: none;
1787
+ }
1788
+ .walle-attachment-spinner {
1789
+ width: 18px;
1790
+ height: 18px;
1791
+ border-radius: 50%;
1792
+ border: 2px solid rgba(122, 162, 247, 0.25);
1793
+ border-top-color: #7aa2f7;
1794
+ animation: walle-attachment-spin 0.7s linear infinite;
1795
+ }
1796
+ @keyframes walle-attachment-spin {
1797
+ to { transform: rotate(360deg); }
1798
+ }
1799
+ @media (prefers-reduced-motion: reduce) {
1800
+ .walle-attachment-spinner { animation-duration: 1.6s; }
1801
+ }
1082
1802
  .walle-attachment-token {
1083
1803
  position: absolute;
1084
1804
  left: 3px;
@@ -1244,6 +1964,23 @@ body.walle-composer-resizing {
1244
1964
  min-height: 48px;
1245
1965
  max-height: 32vh;
1246
1966
  }
1967
+ .walle-workbar-slot {
1968
+ padding: 0 10px;
1969
+ }
1970
+ .walle-workbar {
1971
+ grid-template-columns: 1fr auto;
1972
+ gap: 8px;
1973
+ }
1974
+ .walle-workbar-summary {
1975
+ grid-column: 1 / -1;
1976
+ white-space: normal;
1977
+ }
1978
+ .walle-work-row {
1979
+ grid-template-columns: 10px minmax(0, 1fr);
1980
+ }
1981
+ .walle-work-row-actions {
1982
+ grid-column: 2;
1983
+ }
1247
1984
  .walle-send-btn {
1248
1985
  min-height: 40px;
1249
1986
  padding: 8px 13px;
@@ -1508,6 +2245,62 @@ html[data-theme="light"] .walle-composer-shell:focus-within {
1508
2245
  0 8px 22px rgba(34,49,73,0.08),
1509
2246
  inset 0 1px 0 rgba(255,255,255,0.72);
1510
2247
  }
2248
+ html[data-theme="light"] .walle-queued-card {
2249
+ background: rgba(146,64,14,0.06);
2250
+ border-color: rgba(146,64,14,0.22);
2251
+ border-left-color: #b45309;
2252
+ }
2253
+ html[data-theme="light"] .walle-workbar-slot {
2254
+ background: var(--bg);
2255
+ }
2256
+ html[data-theme="light"] .walle-workbar {
2257
+ background:
2258
+ radial-gradient(circle at 18px 10px, rgba(180,83,9,0.10), transparent 150px),
2259
+ linear-gradient(135deg, rgba(255,255,255,0.96), rgba(246,248,252,0.94));
2260
+ border-color: rgba(59,102,224,0.20);
2261
+ box-shadow: 0 12px 28px rgba(34,49,73,0.10), inset 0 1px 0 rgba(255,255,255,0.9);
2262
+ }
2263
+ html[data-theme="light"] .walle-workbar-kicker,
2264
+ html[data-theme="light"] .walle-work-group-title {
2265
+ color: #92400e;
2266
+ }
2267
+ html[data-theme="light"] .walle-work-chip {
2268
+ background: rgba(59,102,224,0.06);
2269
+ color: #334155;
2270
+ }
2271
+ html[data-theme="light"] .walle-work-chip.active { color: #166534; background: rgba(22,163,74,0.08); border-color: rgba(22,163,74,0.22); }
2272
+ html[data-theme="light"] .walle-work-chip.shell { color: #92400e; background: rgba(180,83,9,0.08); border-color: rgba(180,83,9,0.22); }
2273
+ html[data-theme="light"] .walle-work-chip.done,
2274
+ html[data-theme="light"] .walle-work-chip.isolated {
2275
+ color: #64748b;
2276
+ background: rgba(100,116,139,0.06);
2277
+ }
2278
+ html[data-theme="light"] .walle-work-row {
2279
+ background: rgba(255,255,255,0.66);
2280
+ border-color: rgba(59,102,224,0.14);
2281
+ }
2282
+ html[data-theme="light"] .walle-workbar-actions button,
2283
+ html[data-theme="light"] .walle-work-row-actions button {
2284
+ background: rgba(59,102,224,0.08);
2285
+ color: var(--accent);
2286
+ }
2287
+ html[data-theme="light"] .walle-workbar-actions button.danger,
2288
+ html[data-theme="light"] .walle-workbar-stop,
2289
+ html[data-theme="light"] .walle-work-row-actions button.danger {
2290
+ background: rgba(185,28,28,0.08);
2291
+ color: var(--red);
2292
+ }
2293
+ html[data-theme="light"] .walle-queued-label {
2294
+ color: #92400e;
2295
+ }
2296
+ html[data-theme="light"] .walle-queued-actions button {
2297
+ background: rgba(59,102,224,0.08);
2298
+ color: var(--accent);
2299
+ }
2300
+ html[data-theme="light"] .walle-queued-actions button.danger {
2301
+ background: rgba(185,28,28,0.08);
2302
+ color: var(--red);
2303
+ }
1511
2304
  html[data-theme="light"] .walle-md-toolbar {
1512
2305
  border-bottom-color: var(--border);
1513
2306
  }
@@ -1525,11 +2318,52 @@ html[data-theme="light"] .walle-model-picker-menu,
1525
2318
  html[data-theme="light"] .walle-tool-card,
1526
2319
  html[data-theme="light"] .walle-tool-group,
1527
2320
  html[data-theme="light"] .walle-empty-chip,
2321
+ html[data-theme="light"] .walle-history-loading-state,
1528
2322
  html[data-theme="light"] .walle-input,
2323
+ html[data-theme="light"] .walle-edit-card,
1529
2324
  html[data-theme="light"] .walle-session-header .model-select,
1530
2325
  html[data-theme="light"] .walle-model-picker-btn {
1531
2326
  background: var(--bg-card);
1532
2327
  }
2328
+ html[data-theme="light"] .walle-history-loading-state {
2329
+ border-color: rgba(37,99,235,0.18);
2330
+ background:
2331
+ linear-gradient(180deg, rgba(255,255,255,0.94), rgba(246,248,252,0.92)),
2332
+ var(--bg-card);
2333
+ box-shadow: 0 18px 38px rgba(34,49,73,0.10), inset 0 1px 0 rgba(255,255,255,0.9);
2334
+ }
2335
+ html[data-theme="light"] .walle-history-loading-badge {
2336
+ border-color: rgba(37,99,235,0.22);
2337
+ background: rgba(37,99,235,0.07);
2338
+ color: #2454c6;
2339
+ }
2340
+ html[data-theme="light"] .walle-history-loading-spinner {
2341
+ border-color: rgba(37,99,235,0.18);
2342
+ border-top-color: #2563eb;
2343
+ }
2344
+ html[data-theme="light"] .walle-history-loading-copy {
2345
+ color: var(--fg-muted);
2346
+ }
2347
+ html[data-theme="light"] .walle-history-loading-line {
2348
+ background: linear-gradient(90deg, rgba(37,99,235,0.06), rgba(37,99,235,0.18), rgba(37,99,235,0.06));
2349
+ background-size: 180% 100%;
2350
+ }
2351
+ html[data-theme="light"] .walle-edit-input {
2352
+ background: var(--bg-input);
2353
+ color: var(--fg);
2354
+ }
2355
+ html[data-theme="light"] .walle-msg-action,
2356
+ html[data-theme="light"] .walle-branch-btn {
2357
+ background: rgba(255,255,255,0.88);
2358
+ color: var(--accent);
2359
+ }
2360
+ html[data-theme="light"] .walle-msg-action:hover,
2361
+ html[data-theme="light"] .walle-msg-action:focus-visible,
2362
+ html[data-theme="light"] .walle-branch-btn:hover,
2363
+ html[data-theme="light"] .walle-branch-btn:focus-visible {
2364
+ background: var(--bg-hover);
2365
+ color: var(--fg);
2366
+ }
1533
2367
  html[data-theme="light"] .walle-msg[data-walle-role="assistant"] {
1534
2368
  background: rgba(146,64,14,0.045);
1535
2369
  border-left-color: rgba(146,64,14,0.28);
@@ -1539,11 +2373,32 @@ html[data-theme="light"] .walle-msg-body code {
1539
2373
  }
1540
2374
  html[data-theme="light"] .walle-msg-body pre,
1541
2375
  html[data-theme="light"] .walle-tool-output,
2376
+ html[data-theme="light"] .walle-tool-detail,
1542
2377
  html[data-theme="light"] .walle-tool-group-body,
1543
2378
  html[data-theme="light"] .walle-perm-detail code {
1544
2379
  background: #f1f3f6;
1545
2380
  border: 1px solid rgba(15,23,42,0.06);
1546
2381
  }
2382
+ html[data-theme="light"] .walle-tool-detail-pre {
2383
+ background:
2384
+ linear-gradient(180deg, rgba(255,255,255,0.96), rgba(248,250,252,0.98)),
2385
+ radial-gradient(circle at 0 0, rgba(37,99,235,0.08), transparent 34%);
2386
+ border-color: rgba(15,23,42,0.10);
2387
+ color: #1e293b;
2388
+ }
2389
+ html[data-theme="light"] .walle-live-activity-row:hover,
2390
+ html[data-theme="light"] .walle-live-activity-row:focus-visible,
2391
+ html[data-theme="light"] .walle-live-activity-item[open] > .walle-live-activity-row {
2392
+ background: rgba(15,23,42,0.045);
2393
+ }
2394
+ html[data-theme="light"] .walle-live-activity-more {
2395
+ background: rgba(37,99,235,0.08);
2396
+ }
2397
+ html[data-theme="light"] .walle-live-activity-more:hover,
2398
+ html[data-theme="light"] .walle-live-activity-more:focus-visible {
2399
+ background: rgba(37,99,235,0.14);
2400
+ color: var(--fg);
2401
+ }
1547
2402
  html[data-theme="light"] .walle-msg-body th {
1548
2403
  background: var(--bg-lighter);
1549
2404
  }