@tea-agent/loop-agent 0.39.3 → 0.40.0-beta.1

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 (217) hide show
  1. package/CHANGELOG.md +133 -92
  2. package/dist/adapters/context-transfer/optional-pi-handoff.js +31 -0
  3. package/dist/adapters/context-transfer/pi-session.js +61 -0
  4. package/dist/build-stamp.json +3 -3
  5. package/dist/cli/command-definitions.js +12 -0
  6. package/dist/cli/program.js +23 -1
  7. package/dist/commands/dag-artifact.js +284 -0
  8. package/dist/commands/dag-context.js +184 -0
  9. package/dist/commands/dag-rerun.js +206 -1
  10. package/dist/executors/dag-pi-executor.js +108 -19
  11. package/dist/executors/pi-executor.js +4 -2
  12. package/dist/executors/pi-sdk-executor.js +49 -1
  13. package/dist/executors/pi-writer-tool-policy.js +57 -1
  14. package/dist/executors/shell-executor.js +42 -2
  15. package/dist/executors/workspace-write-snapshot.js +68 -0
  16. package/dist/{worker → infrastructure}/console/app-data.js +4 -0
  17. package/dist/infrastructure/console/artifact-revision-store.js +430 -0
  18. package/dist/infrastructure/console/context-export-store.js +160 -0
  19. package/dist/infrastructure/console/dir-lock.js +132 -0
  20. package/dist/infrastructure/harness/artifact-store.js +10 -1
  21. package/dist/infrastructure/harness/atomic-write.js +35 -2
  22. package/dist/shared/context-transfer/artifact-revision.js +172 -0
  23. package/dist/shared/context-transfer.js +418 -0
  24. package/dist/shared/operator/capabilities.js +14 -0
  25. package/dist/shared/operator/safe-run-summary.js +1 -0
  26. package/dist/shared/path-safety.js +93 -0
  27. package/dist/shared/preview.js +28 -4
  28. package/dist/task/config-types.js +10 -0
  29. package/dist/task/source-prepare/fragment-inventory.js +1 -14
  30. package/dist/worker/console/chat/chat-event-store.js +77 -7
  31. package/dist/worker/console/chat/context-panel.js +7 -0
  32. package/dist/worker/console/chat/deferred-turn.js +12 -0
  33. package/dist/worker/console/chat/pi-runtime.js +331 -18
  34. package/dist/worker/console/chat/provider-error.js +98 -0
  35. package/dist/worker/console/chat/resource-preferences-store.js +1 -1
  36. package/dist/worker/console/chat/routes.js +389 -56
  37. package/dist/worker/console/chat/session-stats.js +179 -0
  38. package/dist/worker/console/chat/session-store.js +94 -64
  39. package/dist/worker/console/chat/todos.js +115 -0
  40. package/dist/worker/console/chat/tool-preview.js +42 -0
  41. package/dist/worker/console/chat/turn-process.js +20 -55
  42. package/dist/worker/console/chat/user-questions.js +266 -0
  43. package/dist/worker/console/chat/workspace-landing.js +79 -0
  44. package/dist/worker/console/console-update-runtime.js +1 -1
  45. package/dist/worker/console/context-transfer-diagnostics.js +198 -0
  46. package/dist/worker/console/dag-confirmation.js +1 -1
  47. package/dist/worker/console/dag-execution-receipt.js +1 -1
  48. package/dist/worker/console/doctor.js +1 -1
  49. package/dist/worker/console/draft-store.js +1 -1
  50. package/dist/worker/console/human-gate-token.js +1 -1
  51. package/dist/worker/console/index.js +3 -3
  52. package/dist/worker/console/interview/assessment.js +1 -1
  53. package/dist/worker/console/interview/session.js +1 -1
  54. package/dist/worker/console/native-directory-picker.js +13 -0
  55. package/dist/worker/console/operation-runner.js +45 -4
  56. package/dist/worker/console/operation-sse.js +1 -1
  57. package/dist/worker/console/operation-wait.js +1 -1
  58. package/dist/worker/console/operator-actions.js +104 -3
  59. package/dist/worker/console/operator-surface-health.js +1 -1
  60. package/dist/worker/console/operator-user-error.js +128 -0
  61. package/dist/worker/console/routes.js +927 -8
  62. package/dist/worker/console/security.js +39 -4
  63. package/dist/worker/console/server.js +532 -187
  64. package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-CTx1TrNa.js → abnfDiagram-N423BO3Z-CpWvwARc.js} +1 -1
  65. package/dist/worker/console/static/assets/{arc-B4i9cVxX.js → arc-DctXgO-g.js} +1 -1
  66. package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-BAXE8_Rl.js → architectureDiagram-T3A2C74G-D4mIkoQl.js} +1 -1
  67. package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-C5Xh59at.js → blockDiagram-VBNYF7ZC-ClG0--KO.js} +1 -1
  68. package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-B_asOzAu.js → c4Diagram-5PPSVZJV-CwdLk78T.js} +1 -1
  69. package/dist/worker/console/static/assets/channel-C9VQZ-ru.js +1 -0
  70. package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-wRO_iRNc.js → chunk-2GRJ4B5K-DKczcu-O.js} +1 -1
  71. package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-ByOaSh_G.js → chunk-2Q5K7J3B-BV6F-vBI.js} +1 -1
  72. package/dist/worker/console/static/assets/{chunk-5RXB4S5H-DjLzudan.js → chunk-5RXB4S5H-DtojVnvA.js} +1 -1
  73. package/dist/worker/console/static/assets/{chunk-5VM5RSS4-JCNGkXYT.js → chunk-5VM5RSS4-BjDQRGnO.js} +1 -1
  74. package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-BhrPXXMZ.js → chunk-6Q2QTUOP-I0fV6ngU.js} +1 -1
  75. package/dist/worker/console/static/assets/{chunk-GF5L2VYU-TJ5JuEBT.js → chunk-GF5L2VYU-BM8C-mmC.js} +1 -1
  76. package/dist/worker/console/static/assets/{chunk-JWPE2WC7-VVthn_mD.js → chunk-JWPE2WC7-BEK-a15e.js} +1 -1
  77. package/dist/worker/console/static/assets/{chunk-KBJHAD2P-D60-Mny4.js → chunk-KBJHAD2P-CQsg_fSR.js} +1 -1
  78. package/dist/worker/console/static/assets/{chunk-RYQCIY6F-zXv7aVye.js → chunk-RYQCIY6F-B-BcaUm3.js} +1 -1
  79. package/dist/worker/console/static/assets/{chunk-XXDRQBXY-By9VQoi1.js → chunk-XXDRQBXY-D1Bu08fg.js} +1 -1
  80. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-BsCkw5MF.js +1 -0
  81. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-BsCkw5MF.js +1 -0
  82. package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-C4zQLe-M.js → cose-bilkent-JH36ORCC-q8nwtxBR.js} +1 -1
  83. package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-wh5N2ReN.js → cynefin-VYW2F7L2-CruhpURw.js} +1 -1
  84. package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-Dlu5wIqs.js → cynefinDiagram-MW4NZA55-CJne6iYF.js} +1 -1
  85. package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-CrDgthc6.js → dagre-VZM6K2ZE-CbeLvBU5.js} +1 -1
  86. package/dist/worker/console/static/assets/{diagram-7IWD3JNH-zN1clg27.js → diagram-7IWD3JNH-DmCxH1Pe.js} +1 -1
  87. package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-BN-o7J7-.js → diagram-B4RE2ZJO-DJ5OYhtC.js} +1 -1
  88. package/dist/worker/console/static/assets/{diagram-LBJQPF4R-C8SuPt0d.js → diagram-LBJQPF4R-B-UN-hln.js} +1 -1
  89. package/dist/worker/console/static/assets/{diagram-Q27KOJAE-BoizuHbZ.js → diagram-Q27KOJAE-CcEro8Ey.js} +1 -1
  90. package/dist/worker/console/static/assets/{diagram-UB23O5K3-BzUzXixG.js → diagram-UB23O5K3-BBBzDden.js} +1 -1
  91. package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-Ev3lA4Cf.js → ebnfDiagram-BXEA7PRR-xKEyH-oo.js} +1 -1
  92. package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-GALUzRbs.js → erDiagram-JOGREHBK-C7xl63VC.js} +1 -1
  93. package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-CZJN65Sb.js → flowDiagram-UKHOOZJN-nthQQ9nR.js} +1 -1
  94. package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-JLB9OESl.js → ganttDiagram-PKOTCBZU-CWN5mE33.js} +1 -1
  95. package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-CcvCr4GD.js → gitGraphDiagram-DS77QQ5N-Wn86tQ6N.js} +1 -1
  96. package/dist/worker/console/static/assets/index-D-0NVyMk.css +1 -0
  97. package/dist/worker/console/static/assets/index-gwyOxQiS.js +407 -0
  98. package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-HG5z7aVg.js → infoDiagram-6WML65LV-_WQymGtW.js} +1 -1
  99. package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-BHEu9chR.js → ishikawaDiagram-WSZJBQD7-COBeivBm.js} +1 -1
  100. package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-Cp_Up8-a.js → journeyDiagram-NVQOT4AX-CwGOJl3Q.js} +1 -1
  101. package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-DvVeY-em.js → kanban-definition-27J2QSJJ-Ci0CJ5Vi.js} +1 -1
  102. package/dist/worker/console/static/assets/{linear-aGmcjgTn.js → linear-CPjMq6vN.js} +1 -1
  103. package/dist/worker/console/static/assets/{mermaid.core-Biyo-tqA.js → mermaid.core-Z0wGoe0b.js} +5 -5
  104. package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-DyxY2pIb.js → mindmap-definition-FAOFIHXS-dISked0d.js} +1 -1
  105. package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-CkdGuc50.js → pegDiagram-VL7TDLO6-BJxgof7Y.js} +1 -1
  106. package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-NNQI9xVR.js → pieDiagram-7S7Q4E2Y-CIblU8eW.js} +1 -1
  107. package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-PAJkuz_G.js → quadrantDiagram-CIZ2JOQS-vwYiqh8E.js} +1 -1
  108. package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-ZwrQod0O.js → railroadDiagram-AXF67PYL-_iOsVeFm.js} +1 -1
  109. package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-D3ZfrzM2.js → requirementDiagram-LRYGKXZP-Dk0MLxO_.js} +1 -1
  110. package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-DDGFmWk5.js → sankeyDiagram-W5VNT64P-Dx7HtLVW.js} +1 -1
  111. package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-DO6mmXTA.js → sequenceDiagram-SI44F4Z6-DRuWjlpL.js} +1 -1
  112. package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-DMbCQiJt.js → sizeCapture-X5ZJPWSS-Bhy9DQAA.js} +1 -1
  113. package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-Di_YUEfC.js → stateDiagram-OKZ733FA-DAx9twnU.js} +1 -1
  114. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-Dmdf8cGy.js +1 -0
  115. package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-Bn2PphNJ.js → swimlanes-SLNWSIFB-okMlvVrM.js} +2 -2
  116. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-W1IcAFff.js +8 -0
  117. package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-DPh8pRsp.js → timeline-definition-Z64GVDOM-DXqCKe37.js} +1 -1
  118. package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-GMfl26pW.js → vennDiagram-T6HMQDX7-CeIUkwBh.js} +1 -1
  119. package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-DTlmVrmF.js → wardleyDiagram-T6FBY63Y-BP76BKTN.js} +1 -1
  120. package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-YGBjKAS5.js → xychartDiagram-ELKLHX3M-BpVI0OpF.js} +1 -1
  121. package/dist/worker/console/static/index.html +7 -2
  122. package/dist/worker/console/static-src/app/console-types.js +29 -4
  123. package/dist/worker/console/static-src/app/useConsoleShell.js +30 -12
  124. package/dist/worker/console/static-src/app/useOperatorActions.js +36 -6
  125. package/dist/worker/console/static-src/app/useRecoveryConsole.js +10 -11
  126. package/dist/worker/console/static-src/app/useRunProgress.js +2 -1
  127. package/dist/worker/console/static-src/app/useTaskWizard.js +2 -2
  128. package/dist/worker/console/static-src/night/useNightBoard.js +8 -5
  129. package/dist/worker/console/static-src/operator-chat/chat-sse-events.js +141 -8
  130. package/dist/worker/console/static-src/operator-chat/compaction-message.js +79 -0
  131. package/dist/worker/console/static-src/operator-chat/details-dag-actions.js +122 -0
  132. package/dist/worker/console/static-src/operator-chat/refs.js +3 -0
  133. package/dist/worker/console/static-src/operator-chat/runtime-selection-labels.js +27 -0
  134. package/dist/worker/console/static-src/operator-chat/spatial-overlay.js +1 -2
  135. package/dist/worker/console/static-src/operator-chat/turn-stream-controller.js +25 -0
  136. package/dist/worker/console/static-src/operator-chat/turn-submission.js +3 -2
  137. package/dist/worker/console/static-src/operator-chat/useChatSessions.js +181 -87
  138. package/dist/worker/console/static-src/operator-chat/useChatStream.js +159 -44
  139. package/dist/worker/console/static-src/operator-chat/useChatThread.js +177 -8
  140. package/dist/worker/console/static-src/operator-chat/useRepoBrowser.js +63 -9
  141. package/dist/worker/console/static-src/operator-chat/useWorkspaceBrowserGate.js +4 -0
  142. package/dist/worker/console/static-src/operator-chat/workspace-layout-mode.js +3 -3
  143. package/dist/worker/console/static-src/shell/useWorkspaces.js +299 -0
  144. package/dist/worker/console/static-src/shell/workspace-route.js +339 -0
  145. package/dist/worker/console/workspace-context.js +260 -0
  146. package/dist/worker/console/workspace-registry.js +214 -0
  147. package/dist/worker/continuation/worker-continuation.js +278 -0
  148. package/dist/worker/observe/health.js +1 -1
  149. package/dist/worker/observe/node-transparency.js +572 -0
  150. package/dist/worker/observe/routes.js +51 -1
  151. package/dist/worker/observe/server.js +4 -0
  152. package/dist/worker/observe/static/api.js +94 -10
  153. package/dist/worker/observe/static/app.js +18 -70
  154. package/dist/worker/observe/static/dag-context-reason-labels.d.ts +9 -0
  155. package/dist/worker/observe/static/dag-context-reason-labels.js +120 -0
  156. package/dist/worker/observe/static/index.html +1 -1
  157. package/dist/worker/observe/static/inspect-workspace.js +307 -0
  158. package/dist/worker/observe/static/operator-chrome.css +145 -20
  159. package/dist/worker/observe/static/operator-chrome.d.ts +20 -3
  160. package/dist/worker/observe/static/operator-chrome.js +330 -100
  161. package/dist/worker/observe/static/router.d.ts +46 -0
  162. package/dist/worker/observe/static/router.js +25 -1
  163. package/dist/worker/observe/static/state.d.ts +50 -0
  164. package/dist/worker/observe/static/state.js +175 -1
  165. package/dist/worker/observe/static/styles.css +1039 -128
  166. package/dist/worker/observe/static/views/dag-inspector.js +1218 -60
  167. package/dist/worker/observe/static/views/dag.js +2 -1
  168. package/dist/worker/observe/static/views/dashboard.js +6 -4
  169. package/dist/worker/observe/static/views/night.js +2 -2
  170. package/dist/worker/observe/static/views/pool.js +1 -0
  171. package/dist/worker/observe/static/views/run.js +3 -1
  172. package/dist/worker/observe/static/views/session-timeline.js +75 -10
  173. package/dist/worker/observe/static/views/task.js +1 -1
  174. package/dist/worker/pool/attempt-lease.js +97 -66
  175. package/dist/worker/pool/begin-attempt-with-lease.js +1 -0
  176. package/dist/worker/pool/reconcile.js +46 -1
  177. package/dist/worker/pool/run-store.js +2 -0
  178. package/dist/worker/pool/state-projection.js +2 -0
  179. package/dist/workflows/dag/artifact-bindings.js +149 -0
  180. package/dist/workflows/dag/artifact-revision-schema-registry.js +31 -0
  181. package/dist/workflows/dag/backend-test-pytest-collection.js +11 -10
  182. package/dist/workflows/dag/backend-test-writer-completeness.js +7 -12
  183. package/dist/workflows/dag/context-receipt.js +305 -0
  184. package/dist/workflows/dag/context-transfer/context-bundle.js +423 -0
  185. package/dist/workflows/dag/context-transfer/operator-actions.js +61 -0
  186. package/dist/workflows/dag/context-transfer/renderers.js +93 -0
  187. package/dist/workflows/dag/dynamic-runtime/map.js +1 -0
  188. package/dist/workflows/dag/frontend-implementation-contract.js +1 -89
  189. package/dist/workflows/dag/init-hybrid.js +178 -47
  190. package/dist/workflows/dag/interrupt-request.js +3 -3
  191. package/dist/workflows/dag/lifecycle.js +3 -3
  192. package/dist/workflows/dag/node-execution.js +112 -27
  193. package/dist/workflows/dag/path-safety.js +1 -0
  194. package/dist/workflows/dag/prompt.js +29 -4
  195. package/dist/workflows/dag/rerun-plan.js +272 -0
  196. package/dist/workflows/dag/rerun-run.js +390 -12
  197. package/dist/workflows/dag/skill-snapshot.js +1 -0
  198. package/dist/workflows/dag/types.js +203 -8
  199. package/docs/README.md +1 -0
  200. package/docs/architecture/runtime-boundaries.md +6 -6
  201. package/docs/operations/local-development-environment.md +21 -0
  202. package/docs/templates/agent-dag.schema.json +50 -0
  203. package/docs/templates/backend-test-dag.json +265 -237
  204. package/harness.json +3 -3
  205. package/package.json +5 -1
  206. package/skills/loop-agent/references/command-reference.md +6 -0
  207. package/dist/worker/console/static/assets/channel-Dj_4Moei.js +0 -1
  208. package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-C0YYAyCa.js +0 -1
  209. package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-C0YYAyCa.js +0 -1
  210. package/dist/worker/console/static/assets/index-CW88Fjbw.js +0 -406
  211. package/dist/worker/console/static/assets/index-DP0ZJl39.css +0 -1
  212. package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-DrdDvela.js +0 -1
  213. package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-DPkEAULl.js +0 -8
  214. package/dist/worker/console/static-src/operator-chat/activity-rail-presentation.js +0 -73
  215. package/dist/worker/console/static-src/operator-chat/useActivityRailTransition.js +0 -59
  216. /package/dist/{worker → infrastructure}/console/operation-store.js +0 -0
  217. /package/dist/{worker → infrastructure}/console/repo-fingerprint.js +0 -0
@@ -70,8 +70,14 @@ body {
70
70
  color: var(--ink);
71
71
  /* Keep system-ui first for shell contract tests; Chinese fonts follow. */
72
72
  font-family:
73
- system-ui, -apple-system, "Segoe UI", "PingFang SC", "Hiragino Sans GB",
74
- "Noto Sans SC", BlinkMacSystemFont, sans-serif;
73
+ system-ui,
74
+ -apple-system,
75
+ "Segoe UI",
76
+ "PingFang SC",
77
+ "Hiragino Sans GB",
78
+ "Noto Sans SC",
79
+ BlinkMacSystemFont,
80
+ sans-serif;
75
81
  font-size: 14px;
76
82
  line-height: 1.5;
77
83
  }
@@ -948,10 +954,9 @@ td:first-child,
948
954
  }
949
955
  .feature-decision-row {
950
956
  display: grid;
951
- grid-template-columns: minmax(120px, 0.9fr) minmax(88px, 0.55fr) minmax(
952
- 0,
953
- 1.6fr
954
- ) auto;
957
+ grid-template-columns:
958
+ minmax(120px, 0.9fr) minmax(88px, 0.55fr) minmax(0, 1.6fr)
959
+ auto;
955
960
  align-items: center;
956
961
  gap: var(--space-3);
957
962
  padding: 12px 14px;
@@ -1245,12 +1250,14 @@ body.is-resizing-dag-graph {
1245
1250
  color: var(--body);
1246
1251
  cursor: pointer;
1247
1252
  }
1248
- .dag-inspector-close:hover,
1253
+ .dag-inspector-close:hover:not(:disabled),
1249
1254
  .dag-inspector-close:focus-visible {
1250
1255
  border-color: var(--orange);
1251
1256
  color: var(--orange-active);
1252
1257
  background: var(--orange-soft);
1253
1258
  outline: none;
1259
+ box-shadow: none;
1260
+ transform: none;
1254
1261
  }
1255
1262
  .dag-inspector-tabs {
1256
1263
  display: flex;
@@ -1261,13 +1268,17 @@ body.is-resizing-dag-graph {
1261
1268
  border: 1px solid var(--hairline);
1262
1269
  border-radius: var(--radius-pill);
1263
1270
  background: var(--surface);
1264
- width: fit-content;
1271
+ width: 100%;
1265
1272
  max-width: 100%;
1266
- flex-wrap: wrap;
1273
+ flex-wrap: nowrap;
1274
+ overflow-x: auto;
1275
+ overscroll-behavior-x: contain;
1276
+ scrollbar-width: thin;
1267
1277
  }
1268
1278
  .dag-inspector-tab {
1279
+ flex: 0 0 auto;
1269
1280
  min-height: 30px;
1270
- padding: 0 12px;
1281
+ padding: 0 8px;
1271
1282
  border: 1px solid transparent;
1272
1283
  border-radius: var(--radius-pill);
1273
1284
  background: transparent;
@@ -1276,15 +1287,21 @@ body.is-resizing-dag-graph {
1276
1287
  font-weight: 700;
1277
1288
  cursor: pointer;
1278
1289
  }
1279
- .dag-inspector-tab:hover,
1290
+ .dag-inspector-tab:hover:not(:disabled),
1280
1291
  .dag-inspector-tab:focus-visible {
1281
1292
  color: var(--ink);
1293
+ background: transparent;
1294
+ border-color: transparent;
1282
1295
  outline: none;
1296
+ box-shadow: none;
1283
1297
  }
1284
- .dag-inspector-tab[aria-selected="true"] {
1298
+ .dag-inspector-tab[aria-selected="true"],
1299
+ .dag-inspector-tab[aria-selected="true"]:hover,
1300
+ .dag-inspector-tab[aria-selected="true"]:focus-visible {
1285
1301
  border-color: transparent;
1286
1302
  background: var(--ink);
1287
1303
  color: #fff;
1304
+ box-shadow: none;
1288
1305
  }
1289
1306
  .dag-inspector-content {
1290
1307
  min-height: 0;
@@ -1892,9 +1909,15 @@ body.is-resizing-dag-graph {
1892
1909
  .process-timeline-toolbar {
1893
1910
  display: flex;
1894
1911
  flex-wrap: wrap;
1912
+ align-items: center;
1895
1913
  gap: 8px;
1896
1914
  margin-bottom: var(--space-2);
1897
1915
  }
1916
+ .process-timeline-filter-group {
1917
+ display: inline-flex;
1918
+ flex-wrap: wrap;
1919
+ gap: 4px;
1920
+ }
1898
1921
  .process-timeline-toggle {
1899
1922
  min-height: 28px;
1900
1923
  padding: 0 10px;
@@ -2240,6 +2263,152 @@ body.is-resizing-dag-graph {
2240
2263
  color: var(--danger, #b42318);
2241
2264
  font-size: 13px;
2242
2265
  }
2266
+ .node-transparency-root {
2267
+ display: flex;
2268
+ flex-direction: column;
2269
+ gap: var(--space-3);
2270
+ }
2271
+ .node-transparency-omission {
2272
+ padding: var(--space-3);
2273
+ border: 1px solid var(--hairline);
2274
+ border-left: 3px solid var(--orange);
2275
+ border-radius: var(--radius-md);
2276
+ background: var(--orange-soft);
2277
+ }
2278
+ .node-transparency-omission h4,
2279
+ .node-transparency-omission p {
2280
+ margin: 0;
2281
+ }
2282
+ .node-transparency-omission p {
2283
+ margin-top: var(--space-2);
2284
+ }
2285
+ .node-artifact-inventory {
2286
+ margin-bottom: var(--space-3);
2287
+ }
2288
+ .node-artifact-card {
2289
+ margin-top: var(--space-3);
2290
+ padding: var(--space-3);
2291
+ border: 1px solid var(--hairline);
2292
+ border-radius: var(--radius-md);
2293
+ background: var(--surface-2, #f3f1ec);
2294
+ }
2295
+ .node-artifact-card.is-consumed {
2296
+ border-left: 3px solid var(--blue, #2563eb);
2297
+ }
2298
+ .artifact-content-preview {
2299
+ overflow: hidden;
2300
+ margin-top: 10px;
2301
+ border: 1px solid var(--hairline);
2302
+ border-radius: 9px;
2303
+ background: var(--surface);
2304
+ }
2305
+ .artifact-content-preview > summary {
2306
+ display: flex;
2307
+ align-items: center;
2308
+ gap: 7px;
2309
+ min-height: 36px;
2310
+ padding: 0 10px;
2311
+ color: var(--body);
2312
+ font-size: 11px;
2313
+ font-weight: 800;
2314
+ cursor: pointer;
2315
+ list-style: none;
2316
+ }
2317
+ .artifact-content-preview > summary::-webkit-details-marker {
2318
+ display: none;
2319
+ }
2320
+ .artifact-content-preview > summary::after {
2321
+ margin-left: auto;
2322
+ font-size: 14px;
2323
+ content: "⌄";
2324
+ transition: transform var(--transition-fast);
2325
+ }
2326
+ .artifact-content-preview[open] > summary::after {
2327
+ transform: rotate(180deg);
2328
+ }
2329
+ .artifact-content-preview > summary:hover,
2330
+ .artifact-content-preview > summary:focus-visible {
2331
+ background: var(--canvas-soft);
2332
+ color: var(--ink);
2333
+ outline: none;
2334
+ }
2335
+ .artifact-content-preview > summary i {
2336
+ color: var(--orange-active);
2337
+ font-size: 15px;
2338
+ }
2339
+ .artifact-content-preview-body {
2340
+ padding: 10px;
2341
+ border-top: 1px solid var(--hairline);
2342
+ background: color-mix(in srgb, var(--canvas-soft) 52%, var(--surface));
2343
+ }
2344
+ .artifact-content-preview-body > :first-child {
2345
+ margin-top: 0;
2346
+ }
2347
+ .artifact-content-preview-body > :last-child {
2348
+ margin-bottom: 0;
2349
+ }
2350
+ .artifact-content-preview-meta {
2351
+ display: flex;
2352
+ align-items: baseline;
2353
+ justify-content: space-between;
2354
+ gap: 10px;
2355
+ margin-bottom: 8px;
2356
+ color: var(--muted);
2357
+ font-size: 9px;
2358
+ }
2359
+ .artifact-content-preview-meta code {
2360
+ min-width: 0;
2361
+ overflow-wrap: anywhere;
2362
+ color: var(--ink);
2363
+ font-size: 10px;
2364
+ }
2365
+ .artifact-content-preview-code,
2366
+ .artifact-content-preview-document {
2367
+ max-height: 320px;
2368
+ overflow: auto;
2369
+ overscroll-behavior: contain;
2370
+ border: 1px solid color-mix(in srgb, var(--hairline) 78%, transparent);
2371
+ border-radius: 7px;
2372
+ background: var(--surface);
2373
+ }
2374
+ .artifact-content-preview-code {
2375
+ margin: 0;
2376
+ padding: 10px;
2377
+ white-space: pre-wrap;
2378
+ word-break: break-word;
2379
+ font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
2380
+ font-size: 10px;
2381
+ line-height: 1.55;
2382
+ }
2383
+ .artifact-content-preview-document {
2384
+ padding: 10px;
2385
+ }
2386
+ .artifact-content-preview-error,
2387
+ .artifact-content-preview-unavailable,
2388
+ .artifact-content-preview-note {
2389
+ margin: 0;
2390
+ font-size: 10px;
2391
+ line-height: 1.5;
2392
+ }
2393
+ .artifact-content-preview-error {
2394
+ color: var(--danger, #b42318);
2395
+ }
2396
+ .artifact-content-preview-unavailable,
2397
+ .artifact-content-preview-note {
2398
+ color: var(--muted);
2399
+ }
2400
+ .artifact-content-preview-note {
2401
+ margin-top: 7px;
2402
+ }
2403
+ .artifact-content-preview-full-cta {
2404
+ display: flex;
2405
+ align-items: center;
2406
+ gap: 6px;
2407
+ margin: 7px 0 0;
2408
+ font-size: 10px;
2409
+ line-height: 1.5;
2410
+ color: var(--muted);
2411
+ }
2243
2412
  .spec-evidence-summary {
2244
2413
  margin: var(--space-2) 0 0;
2245
2414
  color: var(--body);
@@ -3582,9 +3751,6 @@ button.copy-command:focus-visible {
3582
3751
  flex-direction: column;
3583
3752
  min-height: 0;
3584
3753
  }
3585
- #dag-inspector-panel-prompt-restart:has(.prompt-restart-panel.is-readonly) {
3586
- overflow: hidden;
3587
- }
3588
3754
  .prompt-restart-panel,
3589
3755
  .prompt-restart-box {
3590
3756
  display: flex;
@@ -3654,144 +3820,880 @@ button.copy-command:focus-visible {
3654
3820
  font-size: 12px;
3655
3821
  line-height: 1.5;
3656
3822
  }
3657
- .prompt-restart-field {
3823
+
3824
+ .dag-inspector-content[data-inspector-tab="prompt-restart"] {
3658
3825
  display: flex;
3659
3826
  flex-direction: column;
3660
- gap: 6px;
3661
- min-width: 0;
3827
+ gap: 14px;
3828
+ background: color-mix(in srgb, var(--canvas-soft) 72%, var(--surface));
3662
3829
  }
3663
- .prompt-restart-field.is-hidden,
3664
- .prompt-restart-prompt-card.is-hidden {
3665
- display: none;
3830
+ .dag-action-page-intro,
3831
+ .dag-action-card,
3832
+ .dag-action-export-zone {
3833
+ flex: 0 0 auto;
3666
3834
  }
3667
- .prompt-restart-label {
3668
- color: var(--ink);
3669
- font-size: 12px;
3670
- font-weight: 700;
3671
- letter-spacing: 0.01em;
3835
+ .dag-action-page-intro {
3836
+ display: flex;
3837
+ align-items: flex-start;
3838
+ justify-content: space-between;
3839
+ gap: 16px;
3840
+ padding: 2px 2px 4px;
3672
3841
  }
3673
- .prompt-restart-hint {
3842
+ .dag-action-page-intro h4,
3843
+ .dag-action-page-intro p {
3674
3844
  margin: 0;
3675
- color: var(--muted);
3676
- font-size: 12px;
3677
- line-height: 1.45;
3678
3845
  }
3679
- .prompt-restart-candidate-select {
3680
- display: block;
3681
- width: 100%;
3682
- min-width: 0;
3846
+ .dag-action-page-intro h4 {
3847
+ margin-top: 2px;
3848
+ font-size: 19px;
3849
+ line-height: 1.25;
3683
3850
  }
3684
- .prompt-restart-candidate-select .custom-select-trigger {
3685
- width: 100%;
3851
+ .dag-action-page-intro p {
3852
+ margin-top: 5px;
3853
+ color: var(--body);
3854
+ font-size: 12px;
3686
3855
  }
3687
- .prompt-restart-candidate-select .custom-select-menu {
3688
- z-index: 6;
3856
+ .dag-action-eyebrow {
3857
+ display: block;
3858
+ color: var(--orange-active);
3859
+ font-size: 9px;
3860
+ font-weight: 800;
3861
+ letter-spacing: 0.13em;
3862
+ text-transform: uppercase;
3689
3863
  }
3690
- .prompt-restart-mode-switch {
3691
- display: flex;
3692
- width: fit-content;
3693
- max-width: 100%;
3694
- gap: 4px;
3695
- padding: 4px;
3864
+ .dag-action-node-state {
3865
+ flex: 0 0 auto;
3866
+ padding: 4px 8px;
3696
3867
  border: 1px solid var(--hairline);
3697
3868
  border-radius: var(--radius-pill);
3698
3869
  background: var(--surface);
3699
- }
3700
- #dag-inspector-panel-prompt-restart button.prompt-restart-mode-option,
3701
- .prompt-restart-mode-option {
3702
- appearance: none;
3703
- display: inline-flex;
3704
- align-items: center;
3705
- justify-content: center;
3706
- flex: 0 0 auto;
3707
- width: auto;
3708
- min-height: 30px;
3709
- height: 30px;
3710
- padding: 0 12px;
3711
- border: 1px solid transparent;
3712
- border-radius: var(--radius-pill);
3713
- background: transparent;
3714
3870
  color: var(--muted);
3715
- font-size: 12px;
3716
- font-weight: 700;
3717
- line-height: 1;
3718
- letter-spacing: 0;
3719
- white-space: nowrap;
3720
- box-shadow: none;
3721
- transform: none;
3722
- cursor: pointer;
3723
- }
3724
- #dag-inspector-panel-prompt-restart button.prompt-restart-mode-option:hover,
3725
- #dag-inspector-panel-prompt-restart button.prompt-restart-mode-option:focus-visible,
3726
- .prompt-restart-mode-option:hover,
3727
- .prompt-restart-mode-option:focus-visible {
3728
- color: var(--ink);
3729
- background: var(--surface-muted);
3730
- border-color: transparent;
3731
- outline: none;
3732
- box-shadow: none;
3733
- transform: none;
3734
- }
3735
- #dag-inspector-panel-prompt-restart button.prompt-restart-mode-option.is-selected,
3736
- .prompt-restart-mode-option.is-selected {
3737
- background: var(--ink);
3738
- color: #fff;
3739
- border-color: transparent;
3871
+ font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
3872
+ font-size: 9px;
3873
+ font-weight: 800;
3874
+ letter-spacing: 0.05em;
3875
+ text-transform: uppercase;
3740
3876
  }
3741
- .prompt-restart-prompt-card {
3742
- display: flex;
3743
- flex-direction: column;
3744
- min-width: 0;
3877
+ .dag-action-card {
3745
3878
  overflow: hidden;
3746
3879
  border: 1px solid var(--hairline);
3747
- border-radius: var(--radius-lg);
3880
+ border-radius: 13px;
3748
3881
  background: var(--surface);
3882
+ box-shadow: 0 4px 14px rgb(38 37 30 / 4%);
3749
3883
  }
3750
- .prompt-restart-prompt-head {
3751
- display: flex;
3752
- align-items: flex-start;
3753
- justify-content: space-between;
3754
- gap: var(--space-3);
3755
- padding: 10px 12px;
3884
+ .dag-action-card-header {
3885
+ display: grid;
3886
+ grid-template-columns: 38px minmax(0, 1fr);
3887
+ gap: 12px;
3888
+ align-items: start;
3889
+ padding: 14px 15px;
3756
3890
  border-bottom: 1px solid var(--hairline);
3757
- background: var(--canvas-soft);
3891
+ background: color-mix(in srgb, var(--canvas-soft) 68%, var(--surface));
3758
3892
  }
3759
- .prompt-restart-prompt-titles {
3760
- display: flex;
3761
- flex-wrap: wrap;
3762
- align-items: center;
3763
- gap: 6px 8px;
3764
- min-width: 0;
3893
+ .dag-action-card-icon {
3894
+ display: grid;
3895
+ place-items: center;
3896
+ width: 38px;
3897
+ height: 38px;
3898
+ border: 1px solid color-mix(in srgb, var(--orange) 24%, var(--hairline));
3899
+ border-radius: 10px;
3900
+ background: var(--orange-soft);
3901
+ color: var(--orange-active);
3902
+ font-size: 19px;
3765
3903
  }
3766
- .prompt-restart-prompt-title {
3767
- color: var(--ink);
3768
- font-size: 13px;
3769
- font-weight: 700;
3770
- line-height: 1.3;
3904
+ .dag-action-card-copy h4,
3905
+ .dag-action-card-copy p {
3906
+ margin: 0;
3771
3907
  }
3772
- .prompt-restart-prompt-badge {
3773
- padding: 2px 8px;
3774
- border-radius: var(--radius-pill);
3775
- background: var(--surface-muted);
3776
- color: var(--muted);
3777
- font-size: 11px;
3778
- font-weight: 700;
3908
+ .dag-action-card-copy h4 {
3909
+ margin-top: 2px;
3910
+ font-size: 14px;
3911
+ line-height: 1.35;
3779
3912
  }
3780
- .prompt-restart-prompt-meta {
3781
- flex-basis: 100%;
3782
- color: var(--muted);
3913
+ .dag-action-card-copy p {
3914
+ margin-top: 4px;
3915
+ color: var(--body);
3783
3916
  font-size: 11px;
3784
- line-height: 1.3;
3917
+ line-height: 1.5;
3785
3918
  }
3786
- .prompt-restart-copy-icon {
3787
- flex: 0 0 auto;
3788
- margin-top: 1px;
3919
+ .dag-action-card-body {
3920
+ display: grid;
3921
+ gap: 12px;
3922
+ padding: 14px 15px;
3789
3923
  }
3790
- .prompt-restart-prompt-actions {
3791
- display: flex;
3792
- align-items: center;
3793
- gap: 6px;
3794
- flex: 0 0 auto;
3924
+ .dag-action-availability {
3925
+ display: grid;
3926
+ grid-template-columns: 20px minmax(0, 1fr);
3927
+ gap: 9px;
3928
+ align-items: start;
3929
+ padding: 11px 12px;
3930
+ border: 1px solid var(--hairline);
3931
+ border-radius: 10px;
3932
+ background: var(--canvas-soft);
3933
+ color: var(--body);
3934
+ }
3935
+ .dag-action-availability > i {
3936
+ margin-top: 1px;
3937
+ color: var(--muted);
3938
+ font-size: 17px;
3939
+ }
3940
+ .dag-action-availability strong,
3941
+ .dag-action-availability p {
3942
+ display: block;
3943
+ margin: 0;
3944
+ }
3945
+ .dag-action-availability strong {
3946
+ color: var(--ink);
3947
+ font-size: 12px;
3948
+ }
3949
+ .dag-action-availability p {
3950
+ margin-top: 3px;
3951
+ font-size: 11px;
3952
+ line-height: 1.5;
3953
+ }
3954
+ .dag-action-reason-copy {
3955
+ color: var(--ink);
3956
+ }
3957
+ .dag-action-availability code {
3958
+ display: inline-block;
3959
+ margin-top: 7px;
3960
+ padding: 2px 6px;
3961
+ border-radius: 5px;
3962
+ background: color-mix(in srgb, var(--ink) 6%, transparent);
3963
+ font-size: 9px;
3964
+ }
3965
+ .dag-action-availability.is-ready {
3966
+ border-color: color-mix(in srgb, var(--green) 28%, var(--hairline));
3967
+ background: color-mix(in srgb, var(--green) 6%, var(--surface));
3968
+ }
3969
+ .dag-action-availability.is-ready > i {
3970
+ color: var(--green);
3971
+ }
3972
+ .dag-action-availability.is-blocked {
3973
+ border-color: color-mix(in srgb, var(--red) 25%, var(--hairline));
3974
+ background: color-mix(in srgb, var(--red) 5%, var(--surface));
3975
+ }
3976
+ .dag-action-availability.is-blocked > i {
3977
+ color: var(--red);
3978
+ }
3979
+ .dag-action-form {
3980
+ display: grid;
3981
+ gap: 12px;
3982
+ padding-top: 2px;
3983
+ }
3984
+ .dag-action-field-label {
3985
+ color: var(--ink);
3986
+ font-size: 11px;
3987
+ font-weight: 800;
3988
+ }
3989
+ .dag-action-form select,
3990
+ .dag-action-form textarea,
3991
+ .dag-action-file-input {
3992
+ border: 1px solid var(--hairline-strong);
3993
+ border-radius: 9px;
3994
+ background: var(--surface);
3995
+ color: var(--ink);
3996
+ }
3997
+ .dag-action-form select {
3998
+ min-height: 38px;
3999
+ padding: 0 10px;
4000
+ }
4001
+ .dag-action-form textarea {
4002
+ padding: 9px 10px;
4003
+ }
4004
+ .dag-action-form select:focus-visible,
4005
+ .dag-action-form textarea:focus-visible,
4006
+ .dag-action-file-input:focus-visible {
4007
+ border-color: var(--orange);
4008
+ outline: 2px solid color-mix(in srgb, var(--orange) 18%, transparent);
4009
+ outline-offset: 1px;
4010
+ }
4011
+ .dag-action-file-input {
4012
+ width: 100%;
4013
+ padding: 5px;
4014
+ font-size: 11px;
4015
+ }
4016
+ .dag-action-file-input::file-selector-button {
4017
+ min-height: 30px;
4018
+ margin-right: 9px;
4019
+ padding: 0 10px;
4020
+ border: 1px solid var(--hairline);
4021
+ border-radius: 7px;
4022
+ background: var(--canvas-soft);
4023
+ color: var(--ink);
4024
+ font-weight: 700;
4025
+ cursor: pointer;
4026
+ }
4027
+ .dag-action-primary,
4028
+ .dag-action-secondary {
4029
+ min-height: 39px;
4030
+ padding: 0 14px;
4031
+ border-radius: 9px;
4032
+ font-weight: 800;
4033
+ }
4034
+ .dag-action-primary {
4035
+ border: 1px solid var(--orange-active);
4036
+ background: var(--orange);
4037
+ color: #fff;
4038
+ box-shadow: 0 4px 12px color-mix(in srgb, var(--orange) 18%, transparent);
4039
+ }
4040
+ .dag-action-primary:hover:not(:disabled),
4041
+ .dag-action-primary:focus-visible {
4042
+ background: var(--orange-active);
4043
+ outline: none;
4044
+ box-shadow:
4045
+ 0 4px 12px color-mix(in srgb, var(--orange) 18%, transparent),
4046
+ 0 0 0 3px color-mix(in srgb, var(--orange) 15%, transparent);
4047
+ }
4048
+ .dag-action-secondary {
4049
+ border: 1px solid var(--hairline-strong);
4050
+ background: var(--surface);
4051
+ color: var(--ink);
4052
+ }
4053
+ .dag-action-secondary:hover:not(:disabled),
4054
+ .dag-action-secondary:focus-visible {
4055
+ border-color: var(--ink);
4056
+ outline: none;
4057
+ }
4058
+ .dag-action-disclosure {
4059
+ overflow: hidden;
4060
+ min-width: 0;
4061
+ max-width: 100%;
4062
+ border: 1px solid var(--hairline);
4063
+ border-radius: 10px;
4064
+ background: var(--surface);
4065
+ }
4066
+ .dag-action-disclosure summary {
4067
+ display: flex;
4068
+ align-items: center;
4069
+ gap: 6px;
4070
+ min-width: 0;
4071
+ padding: 10px 12px;
4072
+ color: var(--body);
4073
+ font-size: 11px;
4074
+ font-weight: 800;
4075
+ cursor: pointer;
4076
+ list-style: none;
4077
+ }
4078
+ .dag-action-disclosure summary::-webkit-details-marker {
4079
+ display: none;
4080
+ }
4081
+ .dag-action-disclosure summary::after {
4082
+ margin-left: auto;
4083
+ font-size: 15px;
4084
+ font-weight: 700;
4085
+ content: "⌄";
4086
+ transition: transform var(--transition-fast);
4087
+ }
4088
+ .dag-action-disclosure[open] summary::after {
4089
+ transform: rotate(180deg);
4090
+ }
4091
+ .dag-action-disclosure[open] summary {
4092
+ background: color-mix(in srgb, var(--orange) 5%, var(--surface));
4093
+ color: var(--ink);
4094
+ }
4095
+ .dag-action-disclosure summary:hover,
4096
+ .dag-action-disclosure summary:focus-visible {
4097
+ background: var(--canvas-soft);
4098
+ color: var(--ink);
4099
+ outline: none;
4100
+ }
4101
+ .dag-action-disclosure-body {
4102
+ display: grid;
4103
+ gap: 12px;
4104
+ min-width: 0;
4105
+ max-width: 100%;
4106
+ padding: 12px;
4107
+ border-top: 1px solid var(--hairline);
4108
+ }
4109
+ .dag-action-export-zone {
4110
+ display: grid;
4111
+ gap: 12px;
4112
+ margin-top: 4px;
4113
+ padding-top: 16px;
4114
+ border-top: 1px dashed var(--hairline-strong);
4115
+ }
4116
+ .dag-action-export-divider span,
4117
+ .dag-action-export-divider p {
4118
+ margin: 0;
4119
+ }
4120
+ .dag-action-export-divider span {
4121
+ color: var(--ink);
4122
+ font-size: 12px;
4123
+ font-weight: 800;
4124
+ }
4125
+ .dag-action-export-divider p {
4126
+ margin-top: 2px;
4127
+ color: var(--muted);
4128
+ font-size: 11px;
4129
+ }
4130
+
4131
+ .context-export-box,
4132
+ .artifact-revision-box {
4133
+ margin-bottom: 0;
4134
+ }
4135
+
4136
+ .context-export-box {
4137
+ container-type: inline-size;
4138
+ gap: 18px;
4139
+ padding: 18px;
4140
+ border: 1px solid var(--hairline);
4141
+ border-radius: 14px;
4142
+ background: color-mix(in srgb, var(--canvas-soft) 78%, var(--surface));
4143
+ }
4144
+ .context-export-heading {
4145
+ display: flex;
4146
+ align-items: flex-start;
4147
+ justify-content: space-between;
4148
+ gap: 18px;
4149
+ }
4150
+ .context-export-heading h4,
4151
+ .context-export-heading p {
4152
+ margin: 0;
4153
+ }
4154
+ .context-export-heading h4 {
4155
+ margin-top: 3px;
4156
+ font-size: 18px;
4157
+ line-height: 1.25;
4158
+ }
4159
+ .context-export-heading p {
4160
+ margin-top: 6px;
4161
+ max-width: 58ch;
4162
+ color: var(--body);
4163
+ font-size: 13px;
4164
+ }
4165
+ .context-export-eyebrow {
4166
+ color: var(--orange-active);
4167
+ font-size: 10px;
4168
+ font-weight: 800;
4169
+ letter-spacing: 0.14em;
4170
+ text-transform: uppercase;
4171
+ }
4172
+ .context-export-invariant {
4173
+ flex: 0 0 auto;
4174
+ padding: 6px 9px;
4175
+ border: 1px solid color-mix(in srgb, var(--green) 26%, var(--hairline));
4176
+ border-radius: var(--radius-pill);
4177
+ background: color-mix(in srgb, var(--green) 8%, var(--surface));
4178
+ color: var(--green);
4179
+ font-size: 11px;
4180
+ font-weight: 700;
4181
+ white-space: nowrap;
4182
+ }
4183
+ .context-export-workspace {
4184
+ display: grid;
4185
+ grid-template-columns: minmax(0, 1.25fr) minmax(230px, 0.75fr);
4186
+ gap: 16px;
4187
+ align-items: start;
4188
+ }
4189
+ .context-export-controls {
4190
+ display: grid;
4191
+ gap: 16px;
4192
+ }
4193
+ .context-export-fieldset {
4194
+ min-width: 0;
4195
+ margin: 0;
4196
+ padding: 0;
4197
+ border: 0;
4198
+ }
4199
+ .context-export-fieldset legend {
4200
+ margin-bottom: 8px;
4201
+ padding: 0;
4202
+ color: var(--ink);
4203
+ font-size: 12px;
4204
+ font-weight: 800;
4205
+ }
4206
+ .context-export-target-grid,
4207
+ .context-export-profile-grid {
4208
+ display: grid;
4209
+ grid-template-columns: repeat(2, minmax(0, 1fr));
4210
+ gap: 8px;
4211
+ }
4212
+ .context-export-choice,
4213
+ .context-export-profile-choice {
4214
+ display: grid;
4215
+ grid-template-columns: auto minmax(0, 1fr);
4216
+ align-items: start;
4217
+ gap: 9px;
4218
+ min-width: 0;
4219
+ padding: 11px;
4220
+ border: 1px solid var(--hairline);
4221
+ border-radius: 10px;
4222
+ background: var(--surface);
4223
+ cursor: pointer;
4224
+ transition:
4225
+ border-color var(--transition-fast),
4226
+ box-shadow var(--transition-fast),
4227
+ background var(--transition-fast);
4228
+ }
4229
+ .context-export-choice {
4230
+ grid-template-columns: auto 20px minmax(0, 1fr);
4231
+ }
4232
+ .context-export-choice:hover,
4233
+ .context-export-profile-choice:hover {
4234
+ border-color: var(--hairline-strong);
4235
+ background: var(--canvas-soft);
4236
+ }
4237
+ .context-export-choice:has(input:checked),
4238
+ .context-export-profile-choice:has(input:checked) {
4239
+ border-color: color-mix(in srgb, var(--orange) 58%, var(--hairline));
4240
+ background: var(--orange-soft);
4241
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--orange) 16%, transparent);
4242
+ }
4243
+ .context-export-profile-choice.is-risk:has(input:checked) {
4244
+ border-color: color-mix(in srgb, var(--red) 58%, var(--hairline));
4245
+ background: color-mix(in srgb, var(--red) 7%, var(--surface));
4246
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--red) 15%, transparent);
4247
+ }
4248
+ .context-export-choice input,
4249
+ .context-export-profile-choice input {
4250
+ width: 15px;
4251
+ height: 15px;
4252
+ margin: 2px 0 0;
4253
+ accent-color: var(--orange);
4254
+ }
4255
+ .context-export-profile-choice.is-risk input {
4256
+ accent-color: var(--red);
4257
+ }
4258
+ .context-export-choice:has(input:focus-visible),
4259
+ .context-export-profile-choice:has(input:focus-visible) {
4260
+ outline: 2px solid color-mix(in srgb, var(--orange) 60%, transparent);
4261
+ outline-offset: 2px;
4262
+ }
4263
+ .context-export-choice > i {
4264
+ margin-top: 1px;
4265
+ color: var(--orange-active);
4266
+ font-size: 18px;
4267
+ line-height: 1;
4268
+ }
4269
+ .context-export-choice-copy {
4270
+ display: grid;
4271
+ gap: 3px;
4272
+ min-width: 0;
4273
+ }
4274
+ .context-export-choice-copy strong,
4275
+ .context-export-choice-copy small {
4276
+ display: block;
4277
+ }
4278
+ .context-export-choice-copy strong {
4279
+ font-size: 12px;
4280
+ line-height: 1.35;
4281
+ }
4282
+ .context-export-choice-copy small {
4283
+ color: var(--muted);
4284
+ font-size: 11px;
4285
+ line-height: 1.45;
4286
+ }
4287
+ .context-export-profile-title {
4288
+ display: flex;
4289
+ flex-wrap: wrap;
4290
+ align-items: center;
4291
+ gap: 6px;
4292
+ }
4293
+ .context-export-profile-badge {
4294
+ padding: 1px 6px;
4295
+ border-radius: var(--radius-pill);
4296
+ font-size: 9px;
4297
+ font-weight: 800;
4298
+ }
4299
+ .context-export-profile-badge.is-redacted {
4300
+ background: color-mix(in srgb, var(--green) 12%, var(--surface));
4301
+ color: var(--green);
4302
+ }
4303
+ .context-export-profile-badge.is-raw {
4304
+ background: color-mix(in srgb, var(--red) 11%, var(--surface));
4305
+ color: var(--red);
4306
+ }
4307
+
4308
+ .context-export-raw-ack {
4309
+ display: grid;
4310
+ grid-template-columns: auto minmax(0, 1fr);
4311
+ align-items: start;
4312
+ gap: 9px;
4313
+ padding: 11px;
4314
+ border: 1px solid color-mix(in srgb, var(--red) 38%, var(--hairline));
4315
+ border-radius: 10px;
4316
+ background: color-mix(in srgb, var(--red) 6%, var(--surface));
4317
+ color: var(--ink);
4318
+ cursor: pointer;
4319
+ }
4320
+ .context-export-raw-ack[hidden] {
4321
+ display: none;
4322
+ }
4323
+ .context-export-raw-ack input {
4324
+ width: 15px;
4325
+ height: 15px;
4326
+ margin: 2px 0 0;
4327
+ accent-color: var(--red);
4328
+ }
4329
+ .context-export-raw-ack span {
4330
+ display: grid;
4331
+ gap: 2px;
4332
+ }
4333
+ .context-export-raw-ack strong {
4334
+ font-size: 12px;
4335
+ }
4336
+ .context-export-raw-ack small {
4337
+ color: var(--body);
4338
+ font-size: 11px;
4339
+ line-height: 1.45;
4340
+ }
4341
+ .context-export-ticket {
4342
+ position: relative;
4343
+ overflow: hidden;
4344
+ min-width: 0;
4345
+ padding: 16px 16px 14px 20px;
4346
+ border-radius: 13px;
4347
+ background: var(--ink);
4348
+ color: #fff;
4349
+ box-shadow: 0 10px 24px rgb(38 37 30 / 12%);
4350
+ }
4351
+ .context-export-ticket::before {
4352
+ position: absolute;
4353
+ top: 0;
4354
+ bottom: 0;
4355
+ left: 0;
4356
+ width: 5px;
4357
+ background: var(--orange);
4358
+ content: "";
4359
+ }
4360
+ .context-export-ticket-top {
4361
+ display: flex;
4362
+ align-items: center;
4363
+ justify-content: space-between;
4364
+ gap: 8px;
4365
+ padding-bottom: 12px;
4366
+ border-bottom: 1px dashed rgb(255 255 255 / 22%);
4367
+ }
4368
+ .context-export-ticket-type,
4369
+ .context-export-ticket-safety,
4370
+ .context-export-ticket-label {
4371
+ font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
4372
+ font-size: 9px;
4373
+ font-weight: 800;
4374
+ letter-spacing: 0.1em;
4375
+ }
4376
+ .context-export-ticket-type {
4377
+ color: rgb(255 255 255 / 58%);
4378
+ }
4379
+ .context-export-ticket-safety {
4380
+ padding: 3px 6px;
4381
+ border-radius: var(--radius-pill);
4382
+ background: color-mix(in srgb, var(--green) 36%, transparent);
4383
+ color: #c9f4df;
4384
+ letter-spacing: 0.04em;
4385
+ }
4386
+ .context-export-ticket-safety.is-risk {
4387
+ background: color-mix(in srgb, var(--red) 45%, transparent);
4388
+ color: #ffd7e1;
4389
+ }
4390
+ .context-export-ticket-label {
4391
+ display: block;
4392
+ margin-top: 16px;
4393
+ color: rgb(255 255 255 / 52%);
4394
+ }
4395
+ .context-export-ticket-title {
4396
+ display: block;
4397
+ margin-top: 4px;
4398
+ font-size: 17px;
4399
+ line-height: 1.3;
4400
+ }
4401
+ .context-export-ticket-rows {
4402
+ display: grid;
4403
+ grid-template-columns: 42px minmax(0, 1fr);
4404
+ gap: 8px 10px;
4405
+ margin: 16px 0 0;
4406
+ font-size: 11px;
4407
+ line-height: 1.45;
4408
+ }
4409
+ .context-export-ticket-rows dt {
4410
+ color: rgb(255 255 255 / 48%);
4411
+ }
4412
+ .context-export-ticket-rows dd {
4413
+ min-width: 0;
4414
+ margin: 0;
4415
+ color: rgb(255 255 255 / 86%);
4416
+ overflow-wrap: anywhere;
4417
+ }
4418
+ .context-export-ticket-rows dd.is-mono {
4419
+ font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
4420
+ font-size: 10px;
4421
+ }
4422
+ .context-export-ticket-foot {
4423
+ margin: 16px 0 0;
4424
+ padding-top: 11px;
4425
+ border-top: 1px dashed rgb(255 255 255 / 22%);
4426
+ color: rgb(255 255 255 / 52%);
4427
+ font-size: 10px;
4428
+ line-height: 1.5;
4429
+ }
4430
+ .context-export-box > .prompt-restart-actions {
4431
+ justify-content: flex-end;
4432
+ }
4433
+ .context-export-submit {
4434
+ min-height: 40px;
4435
+ padding: 0 16px;
4436
+ border: 1px solid var(--orange-active);
4437
+ border-radius: 9px;
4438
+ background: var(--orange);
4439
+ color: #fff;
4440
+ font-weight: 800;
4441
+ box-shadow: 0 5px 14px color-mix(in srgb, var(--orange) 22%, transparent);
4442
+ }
4443
+ .context-export-submit:hover:not(:disabled),
4444
+ .context-export-submit:focus-visible {
4445
+ background: var(--orange-active);
4446
+ outline: none;
4447
+ box-shadow:
4448
+ 0 5px 14px color-mix(in srgb, var(--orange) 22%, transparent),
4449
+ 0 0 0 3px color-mix(in srgb, var(--orange) 18%, transparent);
4450
+ }
4451
+ .context-export-box > .prompt-restart-status:not(:empty) {
4452
+ padding: 10px 12px;
4453
+ border: 1px solid var(--hairline);
4454
+ border-radius: 9px;
4455
+ background: var(--surface);
4456
+ }
4457
+
4458
+ .node-lineage-intro {
4459
+ padding: var(--space-3);
4460
+ border: 1px solid color-mix(in srgb, var(--blue) 24%, var(--hairline));
4461
+ border-left: 3px solid var(--blue);
4462
+ border-radius: var(--radius-md);
4463
+ background: color-mix(in srgb, var(--blue) 6%, var(--surface));
4464
+ }
4465
+ .node-lineage-intro h4,
4466
+ .node-lineage-intro p {
4467
+ margin: 0;
4468
+ }
4469
+ .node-lineage-intro p {
4470
+ margin-top: var(--space-2);
4471
+ }
4472
+
4473
+ @container (max-width: 680px) {
4474
+ .context-export-workspace {
4475
+ grid-template-columns: minmax(0, 1fr);
4476
+ }
4477
+ }
4478
+
4479
+ @media (max-width: 760px) {
4480
+ .dag-action-page-intro {
4481
+ align-items: stretch;
4482
+ flex-direction: column;
4483
+ }
4484
+ .dag-action-node-state {
4485
+ align-self: flex-start;
4486
+ }
4487
+ .dag-action-card-header {
4488
+ grid-template-columns: 34px minmax(0, 1fr);
4489
+ padding: 12px;
4490
+ }
4491
+ .dag-action-card-icon {
4492
+ width: 34px;
4493
+ height: 34px;
4494
+ }
4495
+ .dag-action-card-body {
4496
+ padding: 12px;
4497
+ }
4498
+ .context-export-heading {
4499
+ align-items: stretch;
4500
+ flex-direction: column;
4501
+ }
4502
+ .context-export-invariant {
4503
+ align-self: flex-start;
4504
+ }
4505
+ .context-export-workspace {
4506
+ grid-template-columns: minmax(0, 1fr);
4507
+ }
4508
+ .context-export-target-grid,
4509
+ .context-export-profile-grid {
4510
+ grid-template-columns: minmax(0, 1fr);
4511
+ }
4512
+ .context-export-box > .prompt-restart-actions {
4513
+ justify-content: stretch;
4514
+ }
4515
+ .context-export-submit {
4516
+ width: 100%;
4517
+ }
4518
+ }
4519
+
4520
+ @media (prefers-reduced-motion: reduce) {
4521
+ .dag-action-disclosure summary::after,
4522
+ .context-export-choice,
4523
+ .context-export-profile-choice {
4524
+ transition: none;
4525
+ }
4526
+ }
4527
+
4528
+ .artifact-revision-plan {
4529
+ display: grid;
4530
+ gap: 10px;
4531
+ margin-top: 12px;
4532
+ }
4533
+ .prompt-restart-field {
4534
+ display: flex;
4535
+ flex-direction: column;
4536
+ gap: 6px;
4537
+ min-width: 0;
4538
+ max-width: 100%;
4539
+ }
4540
+ .prompt-restart-field.is-hidden,
4541
+ .prompt-restart-prompt-card.is-hidden {
4542
+ display: none;
4543
+ }
4544
+ .prompt-restart-label {
4545
+ color: var(--ink);
4546
+ font-size: 12px;
4547
+ font-weight: 700;
4548
+ letter-spacing: 0.01em;
4549
+ }
4550
+ .prompt-restart-hint {
4551
+ margin: 0;
4552
+ color: var(--muted);
4553
+ font-size: 12px;
4554
+ line-height: 1.45;
4555
+ }
4556
+ .prompt-restart-candidate-select {
4557
+ display: block;
4558
+ width: 100%;
4559
+ min-width: 0;
4560
+ }
4561
+ .prompt-restart-candidate-select .custom-select-trigger {
4562
+ width: 100%;
4563
+ }
4564
+ .prompt-restart-candidate-select .custom-select-menu {
4565
+ z-index: 6;
4566
+ }
4567
+ .prompt-restart-mode-switch {
4568
+ display: flex;
4569
+ width: fit-content;
4570
+ max-width: 100%;
4571
+ gap: 4px;
4572
+ padding: 4px;
4573
+ border: 1px solid var(--hairline);
4574
+ border-radius: var(--radius-pill);
4575
+ background: var(--surface);
4576
+ }
4577
+ #dag-inspector-panel-prompt-restart button.prompt-restart-mode-option,
4578
+ .prompt-restart-mode-option {
4579
+ appearance: none;
4580
+ display: inline-flex;
4581
+ align-items: center;
4582
+ justify-content: center;
4583
+ flex: 0 0 auto;
4584
+ width: auto;
4585
+ min-height: 30px;
4586
+ height: 30px;
4587
+ padding: 0 12px;
4588
+ border: 1px solid transparent;
4589
+ border-radius: var(--radius-pill);
4590
+ background: transparent;
4591
+ color: var(--muted);
4592
+ font-size: 12px;
4593
+ font-weight: 700;
4594
+ line-height: 1;
4595
+ letter-spacing: 0;
4596
+ white-space: nowrap;
4597
+ box-shadow: none;
4598
+ transform: none;
4599
+ cursor: pointer;
4600
+ }
4601
+ #dag-inspector-panel-prompt-restart button.prompt-restart-mode-option:hover,
4602
+ #dag-inspector-panel-prompt-restart button.prompt-restart-mode-option:focus-visible,
4603
+ .prompt-restart-mode-option:hover,
4604
+ .prompt-restart-mode-option:focus-visible {
4605
+ color: var(--ink);
4606
+ background: var(--surface-muted);
4607
+ border-color: transparent;
4608
+ outline: none;
4609
+ box-shadow: none;
4610
+ transform: none;
4611
+ }
4612
+ #dag-inspector-panel-prompt-restart button.prompt-restart-mode-option.is-selected,
4613
+ .prompt-restart-mode-option.is-selected {
4614
+ background: var(--ink);
4615
+ color: #fff;
4616
+ border-color: transparent;
4617
+ }
4618
+ .prompt-restart-prompt-card {
4619
+ display: flex;
4620
+ flex-direction: column;
4621
+ min-width: 0;
4622
+ max-width: 100%;
4623
+ overflow: hidden;
4624
+ border: 1px solid var(--hairline);
4625
+ border-radius: var(--radius-lg);
4626
+ background: var(--surface);
4627
+ }
4628
+ .prompt-restart-prompt-head {
4629
+ display: flex;
4630
+ align-items: flex-start;
4631
+ justify-content: space-between;
4632
+ gap: var(--space-3);
4633
+ min-width: 0;
4634
+ padding: 10px 12px;
4635
+ border-bottom: 1px solid var(--hairline);
4636
+ background: var(--canvas-soft);
4637
+ }
4638
+ .prompt-restart-prompt-titles {
4639
+ display: flex;
4640
+ flex-wrap: wrap;
4641
+ align-items: center;
4642
+ gap: 6px 8px;
4643
+ min-width: 0;
4644
+ }
4645
+ .prompt-restart-prompt-title {
4646
+ color: var(--ink);
4647
+ font-size: 13px;
4648
+ font-weight: 700;
4649
+ line-height: 1.3;
4650
+ }
4651
+ .prompt-restart-prompt-badge {
4652
+ padding: 2px 8px;
4653
+ border-radius: var(--radius-pill);
4654
+ background: var(--surface-muted);
4655
+ color: var(--muted);
4656
+ font-size: 11px;
4657
+ font-weight: 700;
4658
+ }
4659
+ .prompt-restart-prompt-meta {
4660
+ flex-basis: 100%;
4661
+ color: var(--muted);
4662
+ font-size: 11px;
4663
+ line-height: 1.3;
4664
+ }
4665
+ .prompt-restart-prompt-head > :first-child {
4666
+ min-width: 0;
4667
+ overflow-wrap: anywhere;
4668
+ }
4669
+ .prompt-restart-copy-button {
4670
+ flex: 0 0 auto;
4671
+ gap: 6px;
4672
+ width: auto;
4673
+ min-width: 0;
4674
+ height: 32px;
4675
+ padding: 0 10px;
4676
+ border-color: color-mix(in srgb, var(--orange) 32%, var(--hairline));
4677
+ background: var(--orange-soft);
4678
+ color: var(--orange-active);
4679
+ font-size: 11px;
4680
+ font-weight: 800;
4681
+ white-space: nowrap;
4682
+ }
4683
+ .prompt-restart-copy-button:hover {
4684
+ border-color: color-mix(in srgb, var(--orange) 54%, var(--hairline));
4685
+ background: color-mix(in srgb, var(--orange) 13%, var(--surface));
4686
+ }
4687
+ .prompt-restart-copy-button.is-copied {
4688
+ border-color: color-mix(in srgb, var(--green) 36%, var(--hairline));
4689
+ background: color-mix(in srgb, var(--green) 9%, var(--surface));
4690
+ color: var(--green);
4691
+ }
4692
+ .prompt-restart-prompt-actions {
4693
+ display: flex;
4694
+ align-items: center;
4695
+ gap: 6px;
4696
+ flex: 0 0 auto;
3795
4697
  }
3796
4698
  #dag-inspector-panel-prompt-restart button.prompt-restart-prompt-fold,
3797
4699
  .prompt-restart-prompt-fold {
@@ -3824,9 +4726,13 @@ button.copy-command:focus-visible {
3824
4726
  display: none;
3825
4727
  }
3826
4728
  .prompt-restart-readonly {
4729
+ box-sizing: border-box;
4730
+ width: 100%;
4731
+ min-width: 0;
4732
+ max-width: 100%;
3827
4733
  margin: 0;
3828
4734
  padding: 14px 16px;
3829
- overflow: auto;
4735
+ overflow-y: auto;
3830
4736
  background: var(--canvas-soft);
3831
4737
  color: var(--ink);
3832
4738
  font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
@@ -3834,6 +4740,8 @@ button.copy-command:focus-visible {
3834
4740
  line-height: 1.65;
3835
4741
  white-space: pre-wrap;
3836
4742
  overflow-wrap: anywhere;
4743
+ overflow-x: hidden;
4744
+ word-break: break-word;
3837
4745
  tab-size: 2;
3838
4746
  }
3839
4747
  .prompt-restart-panel.is-readonly .prompt-restart-readonly {
@@ -3846,6 +4754,8 @@ button.copy-command:focus-visible {
3846
4754
  }
3847
4755
  .prompt-restart-textarea {
3848
4756
  width: 100%;
4757
+ min-width: 0;
4758
+ max-width: 100%;
3849
4759
  min-height: 8rem;
3850
4760
  resize: vertical;
3851
4761
  box-sizing: border-box;
@@ -3859,7 +4769,8 @@ button.copy-command:focus-visible {
3859
4769
  line-height: 1.65;
3860
4770
  white-space: pre-wrap;
3861
4771
  overflow-wrap: anywhere;
3862
- overflow-x: auto;
4772
+ word-break: break-word;
4773
+ overflow-x: hidden;
3863
4774
  }
3864
4775
  .prompt-restart-textarea-work {
3865
4776
  min-height: 10rem;