comisai 1.0.24 → 1.0.26

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 (192) hide show
  1. package/node_modules/@comis/agent/dist/bootstrap/sections/tool-descriptions.js +130 -10
  2. package/node_modules/@comis/agent/dist/bootstrap/sections/tooling-sections.d.ts +1 -1
  3. package/node_modules/@comis/agent/dist/bootstrap/sections/tooling-sections.js +9 -2
  4. package/node_modules/@comis/agent/dist/bridge/bridge-metrics.d.ts +8 -0
  5. package/node_modules/@comis/agent/dist/bridge/bridge-metrics.js +2 -0
  6. package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.d.ts +29 -0
  7. package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.js +242 -2
  8. package/node_modules/@comis/agent/dist/bridge/thinking-block-hash-invariant.d.ts +210 -0
  9. package/node_modules/@comis/agent/dist/bridge/thinking-block-hash-invariant.js +566 -0
  10. package/node_modules/@comis/agent/dist/context-engine/context-engine.js +8 -6
  11. package/node_modules/@comis/agent/dist/context-engine/signature-replay-scrubber.d.ts +51 -30
  12. package/node_modules/@comis/agent/dist/context-engine/signature-replay-scrubber.js +109 -36
  13. package/node_modules/@comis/agent/dist/executor/executor-context-engine-setup.js +5 -1
  14. package/node_modules/@comis/agent/dist/executor/executor-post-execution.js +22 -20
  15. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.d.ts +2 -0
  16. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.js +111 -15
  17. package/node_modules/@comis/agent/dist/executor/executor-response-filter.d.ts +20 -17
  18. package/node_modules/@comis/agent/dist/executor/executor-response-filter.js +132 -52
  19. package/node_modules/@comis/agent/dist/executor/executor-tool-assembly.js +16 -3
  20. package/node_modules/@comis/agent/dist/executor/model-retry.d.ts +14 -0
  21. package/node_modules/@comis/agent/dist/executor/model-retry.js +72 -1
  22. package/node_modules/@comis/agent/dist/executor/pi-executor.d.ts +3 -0
  23. package/node_modules/@comis/agent/dist/executor/pi-executor.js +68 -9
  24. package/node_modules/@comis/agent/dist/executor/post-batch-continuation.d.ts +82 -0
  25. package/node_modules/@comis/agent/dist/executor/post-batch-continuation.js +200 -0
  26. package/node_modules/@comis/agent/dist/executor/stream-wrappers/request-body-injector.js +1 -9
  27. package/node_modules/@comis/agent/dist/executor/tool-deferral.d.ts +37 -2
  28. package/node_modules/@comis/agent/dist/executor/tool-deferral.js +45 -3
  29. package/node_modules/@comis/agent/dist/executor/tool-parallelism.js +0 -1
  30. package/node_modules/@comis/agent/dist/executor/types.d.ts +11 -2
  31. package/node_modules/@comis/agent/dist/index.d.ts +3 -1
  32. package/node_modules/@comis/agent/dist/index.js +2 -0
  33. package/node_modules/@comis/agent/dist/model/last-known-model.d.ts +36 -0
  34. package/node_modules/@comis/agent/dist/model/last-known-model.js +49 -0
  35. package/node_modules/@comis/agent/dist/model/model-registry-adapter.d.ts +16 -4
  36. package/node_modules/@comis/agent/dist/model/model-registry-adapter.js +65 -21
  37. package/node_modules/@comis/agent/dist/planner/types.d.ts +0 -2
  38. package/node_modules/@comis/agent/dist/session/comis-session-manager.d.ts +10 -0
  39. package/node_modules/@comis/agent/dist/session/comis-session-manager.js +5 -0
  40. package/node_modules/@comis/agent/dist/spawn/pi-mono-adapters.js +7 -0
  41. package/node_modules/@comis/agent/package.json +1 -1
  42. package/node_modules/@comis/channels/package.json +1 -1
  43. package/node_modules/@comis/cli/dist/client/rpc-client.js +6 -1
  44. package/node_modules/@comis/cli/dist/commands/doctor.js +5 -3
  45. package/node_modules/@comis/cli/dist/commands/health.js +5 -2
  46. package/node_modules/@comis/cli/dist/wizard/json-output.js +7 -3
  47. package/node_modules/@comis/cli/dist/wizard/steps/11-daemon-start.js +130 -0
  48. package/node_modules/@comis/cli/package.json +1 -1
  49. package/node_modules/@comis/core/dist/bootstrap.js +5 -0
  50. package/node_modules/@comis/core/dist/config/env-layer.d.ts +31 -0
  51. package/node_modules/@comis/core/dist/config/env-layer.js +41 -0
  52. package/node_modules/@comis/core/dist/config/immutable-keys.d.ts +2 -2
  53. package/node_modules/@comis/core/dist/config/immutable-keys.js +8 -3
  54. package/node_modules/@comis/core/dist/config/layered.d.ts +9 -0
  55. package/node_modules/@comis/core/dist/config/layered.js +11 -0
  56. package/node_modules/@comis/core/dist/config/managed-sections.d.ts +43 -4
  57. package/node_modules/@comis/core/dist/config/managed-sections.js +100 -6
  58. package/node_modules/@comis/core/dist/config/schema-agent.d.ts +39 -0
  59. package/node_modules/@comis/core/dist/config/schema-agent.js +14 -0
  60. package/node_modules/@comis/core/dist/config/schema.d.ts +4 -0
  61. package/node_modules/@comis/core/dist/config/schema.js +14 -0
  62. package/node_modules/@comis/core/dist/domain/execution-graph.d.ts +1 -1
  63. package/node_modules/@comis/core/dist/event-bus/events-agent.d.ts +17 -2
  64. package/node_modules/@comis/core/dist/exports/config.d.ts +2 -2
  65. package/node_modules/@comis/core/dist/exports/config.js +1 -1
  66. package/node_modules/@comis/core/package.json +1 -1
  67. package/node_modules/@comis/daemon/dist/daemon.d.ts +22 -0
  68. package/node_modules/@comis/daemon/dist/daemon.js +45 -0
  69. package/node_modules/@comis/daemon/dist/rpc/agent-handlers.d.ts +5 -2
  70. package/node_modules/@comis/daemon/dist/rpc/agent-handlers.js +80 -1
  71. package/node_modules/@comis/daemon/dist/rpc/agent-inline-workspace.d.ts +67 -0
  72. package/node_modules/@comis/daemon/dist/rpc/agent-inline-workspace.js +139 -0
  73. package/node_modules/@comis/daemon/dist/rpc/model-handlers.d.ts +3 -0
  74. package/node_modules/@comis/daemon/dist/rpc/model-handlers.js +29 -5
  75. package/node_modules/@comis/daemon/dist/rpc/probe-provider-auth.d.ts +30 -0
  76. package/node_modules/@comis/daemon/dist/rpc/probe-provider-auth.js +59 -0
  77. package/node_modules/@comis/daemon/dist/rpc/provider-handlers.d.ts +37 -0
  78. package/node_modules/@comis/daemon/dist/rpc/provider-handlers.js +330 -0
  79. package/node_modules/@comis/daemon/dist/rpc/rpc-dispatch.js +18 -1
  80. package/node_modules/@comis/daemon/dist/setup-docker-restart-warn.d.ts +4 -0
  81. package/node_modules/@comis/daemon/dist/setup-docker-restart-warn.js +30 -0
  82. package/node_modules/@comis/daemon/dist/wiring/setup-agents.d.ts +3 -1
  83. package/node_modules/@comis/daemon/dist/wiring/setup-agents.js +28 -2
  84. package/node_modules/@comis/daemon/dist/wiring/setup-cross-session.js +1 -0
  85. package/node_modules/@comis/daemon/dist/wiring/setup-tools.js +7 -4
  86. package/node_modules/@comis/daemon/package.json +1 -1
  87. package/node_modules/@comis/gateway/package.json +1 -1
  88. package/node_modules/@comis/infra/dist/index.d.ts +1 -0
  89. package/node_modules/@comis/infra/dist/index.js +2 -0
  90. package/node_modules/@comis/infra/dist/runtime/is-docker.d.ts +1 -0
  91. package/node_modules/@comis/infra/dist/runtime/is-docker.js +25 -0
  92. package/node_modules/@comis/infra/package.json +1 -1
  93. package/node_modules/@comis/memory/package.json +1 -1
  94. package/node_modules/@comis/scheduler/package.json +1 -1
  95. package/node_modules/@comis/shared/package.json +1 -1
  96. package/node_modules/@comis/skills/dist/bridge/tool-metadata-registry.js +1 -3
  97. package/node_modules/@comis/skills/dist/builtin/platform/admin-manage-factory.js +24 -1
  98. package/node_modules/@comis/skills/dist/builtin/platform/agents-manage-tool.d.ts +53 -7
  99. package/node_modules/@comis/skills/dist/builtin/platform/agents-manage-tool.js +218 -24
  100. package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.d.ts +4 -1
  101. package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.js +16 -1
  102. package/node_modules/@comis/skills/dist/builtin/platform/index.d.ts +1 -1
  103. package/node_modules/@comis/skills/dist/builtin/platform/index.js +1 -1
  104. package/node_modules/@comis/skills/dist/builtin/platform/providers-manage-tool.d.ts +56 -0
  105. package/node_modules/@comis/skills/dist/builtin/platform/providers-manage-tool.js +203 -0
  106. package/node_modules/@comis/skills/dist/index.d.ts +1 -1
  107. package/node_modules/@comis/skills/dist/index.js +2 -2
  108. package/node_modules/@comis/skills/dist/policy/tool-policy.js +0 -1
  109. package/node_modules/@comis/skills/package.json +1 -1
  110. package/node_modules/@comis/web/dist/assets/{agent-detail-BG9MGWWj.js → agent-detail-DqL6Artv.js} +270 -270
  111. package/node_modules/@comis/web/dist/assets/agent-editor-CNM_h94Y.js +2173 -0
  112. package/node_modules/@comis/web/dist/assets/{agent-list-LHCJ4rw2.js → agent-list-Dbh-xD_F.js} +170 -170
  113. package/node_modules/@comis/web/dist/assets/{approvals-q9VH_IKr.js → approvals-C-K6hN2U.js} +13 -13
  114. package/node_modules/@comis/web/dist/assets/billing-view-C1DmtyzK.js +375 -0
  115. package/node_modules/@comis/web/dist/assets/{channel-detail-CaInesJM.js → channel-detail-CtCH22N1.js} +265 -265
  116. package/node_modules/@comis/web/dist/assets/channel-list-C7xXn-60.js +323 -0
  117. package/node_modules/@comis/web/dist/assets/{chat-console-CNmzl0JW.js → chat-console-C51pjFwk.js} +243 -246
  118. package/node_modules/@comis/web/dist/assets/{config-editor-DX4ITw6y.js → config-editor-BLArYRB7.js} +477 -477
  119. package/node_modules/@comis/web/dist/assets/{context-dag-browser-BwiaF5tf.js → context-dag-browser-fuyMinNI.js} +105 -105
  120. package/node_modules/@comis/web/dist/assets/{context-engine-BZ5Am6hA.js → context-engine-Bngf2bH0.js} +136 -136
  121. package/node_modules/@comis/web/dist/assets/decorate-BvWYovGE.js +38 -0
  122. package/node_modules/@comis/web/dist/assets/{delivery-view-OfBZof-m.js → delivery-view-C80hucxX.js} +134 -134
  123. package/node_modules/@comis/web/dist/assets/{diagnostics-view-YFwCxgr2.js → diagnostics-view-Cl4VbHZ6.js} +82 -82
  124. package/node_modules/@comis/web/dist/assets/directive-BOYXJ-K-.js +1 -0
  125. package/node_modules/@comis/web/dist/assets/{extract-variables-BM5qyK-s.js → extract-variables-B7-Doo7l.js} +39 -39
  126. package/node_modules/@comis/web/dist/assets/{ic-array-editor-B7m6x7-S.js → ic-array-editor-BLoEyeLS.js} +29 -29
  127. package/node_modules/@comis/web/dist/assets/{ic-breadcrumb-CUMpp3BL.js → ic-breadcrumb-DqN6G3gc.js} +16 -16
  128. package/node_modules/@comis/web/dist/assets/{ic-budget-segment-bar-BtJ6x5mN.js → ic-budget-segment-bar-zLsMzjDO.js} +20 -20
  129. package/node_modules/@comis/web/dist/assets/ic-chat-message-ByFUoMm6.js +352 -0
  130. package/node_modules/@comis/web/dist/assets/{ic-confirm-dialog-CCDbB04e.js → ic-confirm-dialog-DGlPbV1T.js} +26 -26
  131. package/node_modules/@comis/web/dist/assets/{ic-connection-dot-CnT1b8xr.js → ic-connection-dot-C4nDHgY2.js} +13 -13
  132. package/node_modules/@comis/web/dist/assets/ic-data-table-CKIvr-ag.js +277 -0
  133. package/node_modules/@comis/web/dist/assets/ic-delivery-row-B3YwjjuM.js +67 -0
  134. package/node_modules/@comis/web/dist/assets/{ic-detail-panel-BF83r-if.js → ic-detail-panel-DiCe4hLr.js} +27 -27
  135. package/node_modules/@comis/web/dist/assets/{ic-empty-state-60l2ePhd.js → ic-empty-state-CM3Wbj2f.js} +19 -19
  136. package/node_modules/@comis/web/dist/assets/ic-graph-canvas-ByRjij68.js +359 -0
  137. package/node_modules/@comis/web/dist/assets/ic-icon-BGNCCPpZ.js +33 -0
  138. package/node_modules/@comis/web/dist/assets/{ic-layer-waterfall-COvEYMg5.js → ic-layer-waterfall-WkaFyu-l.js} +18 -18
  139. package/node_modules/@comis/web/dist/assets/ic-relative-time-B3UAnTqg.js +12 -0
  140. package/node_modules/@comis/web/dist/assets/{ic-search-input-CSOxY9g7.js → ic-search-input-B02AGw1i.js} +22 -22
  141. package/node_modules/@comis/web/dist/assets/{ic-select-Ce-Raudx.js → ic-select-BqfZISjw.js} +29 -29
  142. package/node_modules/@comis/web/dist/assets/ic-tabs-yBjkWKJH.js +95 -0
  143. package/node_modules/@comis/web/dist/assets/ic-tag-CvMVQFRR.js +33 -0
  144. package/node_modules/@comis/web/dist/assets/{ic-time-range-picker-CypCT68y.js → ic-time-range-picker-DXbYeBmY.js} +31 -31
  145. package/node_modules/@comis/web/dist/assets/{ic-tool-call-7MaXSsCW.js → ic-tool-call-Bh5kq-yY.js} +51 -51
  146. package/node_modules/@comis/web/dist/assets/index-BBkuC-EU.js +2792 -0
  147. package/node_modules/@comis/web/dist/assets/index-CVEaS9aY.css +2 -0
  148. package/node_modules/@comis/web/dist/assets/{mcp-management-BNZPnpDn.js → mcp-management-DB-phOo7.js} +209 -209
  149. package/node_modules/@comis/web/dist/assets/{media-config-BBvTYxOX.js → media-config-CRqZ1ZUH.js} +154 -154
  150. package/node_modules/@comis/web/dist/assets/{media-test-BkK3RCRK.js → media-test-C9vE20Oy.js} +259 -259
  151. package/node_modules/@comis/web/dist/assets/{memory-inspector-1hDGCGat.js → memory-inspector-CeqfnxMZ.js} +450 -450
  152. package/node_modules/@comis/web/dist/assets/{message-center-CXefwsUu.js → message-center-Daup7Mof.js} +290 -290
  153. package/node_modules/@comis/web/dist/assets/{models-C1qcU_j3.js → models-DLYnEU8E.js} +371 -371
  154. package/node_modules/@comis/web/dist/assets/observability-types-D0tkwElU.js +1 -0
  155. package/node_modules/@comis/web/dist/assets/{observe-view-C0VBhX4C.js → observe-view-BTSt_PO5.js} +399 -399
  156. package/node_modules/@comis/web/dist/assets/pipeline-builder-DknfzyLt.js +1495 -0
  157. package/node_modules/@comis/web/dist/assets/{pipeline-history-DkfOQ6SW.js → pipeline-history-JnHZdeU_.js} +124 -124
  158. package/node_modules/@comis/web/dist/assets/{pipeline-history-detail-hyHgD0ai.js → pipeline-history-detail-Dg4knsEb.js} +65 -65
  159. package/node_modules/@comis/web/dist/assets/{pipeline-list-BPW8hV-q.js → pipeline-list-AEnibjsp.js} +227 -227
  160. package/node_modules/@comis/web/dist/assets/{pipeline-monitor-Bip16T7e.js → pipeline-monitor-DG7RbIOO.js} +298 -298
  161. package/node_modules/@comis/web/dist/assets/{scheduler-BGgwKd06.js → scheduler-uL1fYKAT.js} +486 -486
  162. package/node_modules/@comis/web/dist/assets/{security-D15st4xx.js → security-C3DywRLH.js} +389 -389
  163. package/node_modules/@comis/web/dist/assets/{session-detail-SGEYNJ0M.js → session-detail-BtqCNWXV.js} +294 -294
  164. package/node_modules/@comis/web/dist/assets/session-key-parser-Dkqcj2Ss.js +1 -0
  165. package/node_modules/@comis/web/dist/assets/session-list-CJXWa2XT.js +231 -0
  166. package/node_modules/@comis/web/dist/assets/{setup-wizard-nT0tz9QP.js → setup-wizard-ywn7oJvu.js} +486 -494
  167. package/node_modules/@comis/web/dist/assets/{skills-D8yVfSUy.js → skills-DX0KYnWD.js} +329 -329
  168. package/node_modules/@comis/web/dist/assets/{subagents-HHXMeHYo.js → subagents-B8p5YJEB.js} +74 -74
  169. package/node_modules/@comis/web/dist/assets/{workspace-manager-BQlr10iH.js → workspace-manager-CgzNIrw1.js} +236 -236
  170. package/node_modules/@comis/web/dist/index.html +3 -2
  171. package/node_modules/@comis/web/package.json +1 -1
  172. package/package.json +15 -15
  173. package/node_modules/@comis/skills/dist/builtin/platform/agents-list-tool.d.ts +0 -19
  174. package/node_modules/@comis/skills/dist/builtin/platform/agents-list-tool.js +0 -39
  175. package/node_modules/@comis/web/dist/assets/agent-editor-C26Q_xCs.js +0 -2173
  176. package/node_modules/@comis/web/dist/assets/billing-view-CtYvBqTE.js +0 -375
  177. package/node_modules/@comis/web/dist/assets/channel-list-B8dj3O9a.js +0 -323
  178. package/node_modules/@comis/web/dist/assets/directive-DoeGSK_T.js +0 -1
  179. package/node_modules/@comis/web/dist/assets/ic-chat-message-CFyDJd0z.js +0 -352
  180. package/node_modules/@comis/web/dist/assets/ic-data-table-CKUNTxHw.js +0 -277
  181. package/node_modules/@comis/web/dist/assets/ic-delivery-row-GP5Fkygs.js +0 -67
  182. package/node_modules/@comis/web/dist/assets/ic-graph-canvas-C8FuSMe1.js +0 -359
  183. package/node_modules/@comis/web/dist/assets/ic-icon-xeGTVhVG.js +0 -33
  184. package/node_modules/@comis/web/dist/assets/ic-relative-time-3FqpjeAI.js +0 -12
  185. package/node_modules/@comis/web/dist/assets/ic-tabs-B7QtM_v8.js +0 -95
  186. package/node_modules/@comis/web/dist/assets/ic-tag-CPPUnDLF.js +0 -33
  187. package/node_modules/@comis/web/dist/assets/index-CEcM1R_C.js +0 -2830
  188. package/node_modules/@comis/web/dist/assets/index-CIJFuItj.css +0 -1
  189. package/node_modules/@comis/web/dist/assets/observability-types-D7jUtSde.js +0 -1
  190. package/node_modules/@comis/web/dist/assets/pipeline-builder-DcUUIrm0.js +0 -1496
  191. package/node_modules/@comis/web/dist/assets/session-key-parser-DPORMVyU.js +0 -1
  192. package/node_modules/@comis/web/dist/assets/session-list-6ybUTxbY.js +0 -231
@@ -1,126 +1,4 @@
1
- import{a as h,I as p,b as a,A as u,s as m,f as b,i as g,n as v,r as c,t as _}from"./index-CEcM1R_C.js";import"./ic-breadcrumb-CUMpp3BL.js";import"./ic-confirm-dialog-CCDbB04e.js";import"./ic-empty-state-60l2ePhd.js";import"./ic-icon-xeGTVhVG.js";var f=Object.defineProperty,x=Object.getOwnPropertyDescriptor,n=(e,t,r,o)=>{for(var i=o>1?void 0:o?x(t,r):t,l=e.length-1,d;l>=0;l--)(d=e[l])&&(i=(o?d(t,r,i):d(i))||i);return o&&i&&f(t,r,i),i};const w={completed:"#22c55e",failed:"#ef4444"};function $(e){if(!e)return"Never";const t=Date.now()-e;if(t<0)return"just now";const r=Math.floor(t/1e3);if(r<60)return"just now";const o=Math.floor(r/60);if(o<60)return`${o}m ago`;const i=Math.floor(o/60);if(i<24)return`${i}h ago`;const l=Math.floor(i/24);return l<30?`${l}d ago`:new Date(e).toISOString().slice(0,10)}let s=class extends h{constructor(){super(...arguments),this.rpcClient=null,this._rpcStatusUnsub=null,this._runs=[],this._loading=!0,this._sortField="date",this._sortDir="desc",this._deleteTarget=null}get _breadcrumbs(){return[{label:"Pipelines",route:"pipelines"},{label:"History"}]}disconnectedCallback(){super.disconnectedCallback(),this._rpcStatusUnsub?.(),this._rpcStatusUnsub=null}updated(e){e.has("rpcClient")&&this.rpcClient&&(this._rpcStatusUnsub?.(),this.rpcClient.status==="connected"?this._loadRuns():this._rpcStatusUnsub=this.rpcClient.onStatusChange(t=>{t==="connected"&&(this._rpcStatusUnsub=null,this._loadRuns())}))}async _loadRuns(){this._loading=!0;try{const e=await this.rpcClient?.call("graph.runs",{});this._runs=e?.runs??[]}catch{this._runs=[]}this._loading=!1}get _sorted(){return[...this._runs].sort((e,t)=>{let r=0;switch(this._sortField){case"name":r=e.name.localeCompare(t.name);break;case"status":r=e.status.localeCompare(t.status);break;case"nodeCount":r=e.nodeCount-t.nodeCount;break;case"date":r=e.date.localeCompare(t.date);break}return this._sortDir==="asc"?r:-r})}_handleSort(e){this._sortField===e?this._sortDir=this._sortDir==="asc"?"desc":"asc":(this._sortField=e,this._sortDir=e==="name"?"asc":"desc")}_sortArrow(e){return this._sortField!==e?"":this._sortDir==="asc"?"▲":"▼"}_sortArrowClass(e){return this._sortField===e?"sort-arrow sort-arrow--active":"sort-arrow"}_navigateToDetail(e){window.location.hash=`#/pipelines/history/${e.graphId}`}_handleDeleteClick(e,t){t.stopPropagation(),this._deleteTarget=e}async _confirmDelete(){if(!this._deleteTarget)return;const e=this._deleteTarget;this._deleteTarget=null;try{await this.rpcClient?.call("graph.deleteRun",{graphId:e.graphId}),this._runs=this._runs.filter(t=>t.graphId!==e.graphId),p.show(`Deleted "${e.name}"`,"success")}catch(t){p.show(`Failed to delete: ${t instanceof Error?t.message:"Unknown error"}`,"error")}}_cancelDelete(){this._deleteTarget=null}_renderStatusDot(e){const t=w[e]??"#6b7280",r=e.charAt(0).toUpperCase()+e.slice(1);return a`<span class="status-text">
2
- <span class="status-dot" style="--dot-color: ${t}"></span>
3
- ${r}
4
- </span>`}_dateToRelative(e){const t=new Date(e).getTime();return $(t)}render(){return a`
5
- <ic-breadcrumb .items=${this._breadcrumbs}
6
- @navigate=${e=>this.dispatchEvent(new CustomEvent("navigate",{detail:e.detail,bubbles:!0,composed:!0}))}
7
- ></ic-breadcrumb>
8
-
9
- <div class="page-header" role="region" aria-label="Pipeline History">
10
- <h1 class="page-title">Pipeline History</h1>
11
- </div>
12
-
13
- ${this._renderContent()}
14
- ${this._deleteTarget?a`
15
- <ic-confirm-dialog
16
- open
17
- variant="danger"
18
- title="Delete Run"
19
- message=${`Delete run "${this._deleteTarget.name}"? This cannot be undone.`}
20
- confirmLabel="Delete"
21
- @confirm=${this._confirmDelete}
22
- @cancel=${this._cancelDelete}
23
- ></ic-confirm-dialog>
24
- `:u}
25
- `}_renderContent(){if(this._loading)return a`<ic-skeleton-view variant="list"></ic-skeleton-view>`;if(this._runs.length===0)return a`
26
- <ic-empty-state
27
- icon="git-branch"
28
- message="No pipeline runs yet"
29
- description="Run a pipeline to see results here."
30
- >
31
- <button
32
- class="action-btn"
33
- style="padding: 8px 16px; width: auto; height: auto; border: 1px solid var(--ic-border, #374151); color: var(--ic-text, #f3f4f6);"
34
- @click=${()=>{window.location.hash="#/pipelines/new"}}
35
- >
36
- New Pipeline
37
- </button>
38
- </ic-empty-state>
39
- `;const e=this._sorted;return a`
40
- ${this._renderTable(e)}
41
- ${this._renderMobileList(e)}
42
- `}_renderTable(e){return a`
43
- <div class="grid-table" role="table">
44
- <div class="grid-header" role="row">
45
- <div class="cell" role="columnheader" @click=${()=>this._handleSort("name")}>
46
- Name
47
- <span class=${this._sortArrowClass("name")}>${this._sortArrow("name")}</span>
48
- </div>
49
- <div class="cell" role="columnheader" @click=${()=>this._handleSort("status")}>
50
- Status
51
- <span class=${this._sortArrowClass("status")}>${this._sortArrow("status")}</span>
52
- </div>
53
- <div class="cell" role="columnheader" @click=${()=>this._handleSort("nodeCount")}>
54
- Nodes
55
- <span class=${this._sortArrowClass("nodeCount")}>${this._sortArrow("nodeCount")}</span>
56
- </div>
57
- <div class="cell" role="columnheader" @click=${()=>this._handleSort("date")}>
58
- Date
59
- <span class=${this._sortArrowClass("date")}>${this._sortArrow("date")}</span>
60
- </div>
61
- <div class="cell actions-header" role="columnheader">Actions</div>
62
- </div>
63
- ${e.map(t=>this._renderRow(t))}
64
- </div>
65
- `}_renderRow(e){return a`
66
- <div class="grid-row" role="row" @click=${()=>this._navigateToDetail(e)}>
67
- <div class="cell" role="cell">
68
- <span class="run-name">${e.name}</span>
69
- </div>
70
- <div class="cell" role="cell">
71
- ${this._renderStatusDot(e.status)}
72
- </div>
73
- <div class="cell" role="cell">${e.nodeCount}</div>
74
- <div class="cell dim-text" role="cell">${this._dateToRelative(e.date)}</div>
75
- <div class="cell actions-cell" role="cell">
76
- <button
77
- class="action-btn"
78
- aria-label="View ${e.name}"
79
- @click=${t=>{t.stopPropagation(),this._navigateToDetail(e)}}
80
- >
81
- <ic-icon name="eye" size="16px"></ic-icon>
82
- </button>
83
- <button
84
- class="action-btn action-btn--danger"
85
- aria-label="Delete ${e.name}"
86
- @click=${t=>this._handleDeleteClick(e,t)}
87
- >
88
- <ic-icon name="trash" size="16px"></ic-icon>
89
- </button>
90
- </div>
91
- </div>
92
- `}_renderMobileList(e){return a`
93
- <div class="mobile-list">
94
- ${e.map(t=>a`
95
- <div class="mobile-card" @click=${()=>this._navigateToDetail(t)}>
96
- <div class="card-header">
97
- <span class="card-label">${t.name}</span>
98
- ${this._renderStatusDot(t.status)}
99
- </div>
100
- <div class="card-meta">
101
- <span>${t.nodeCount} nodes</span>
102
- <span>${this._dateToRelative(t.date)}</span>
103
- </div>
104
- <div class="card-actions">
105
- <button
106
- class="action-btn"
107
- aria-label="View ${t.name}"
108
- @click=${r=>{r.stopPropagation(),this._navigateToDetail(t)}}
109
- >
110
- <ic-icon name="eye" size="16px"></ic-icon>
111
- </button>
112
- <button
113
- class="action-btn action-btn--danger"
114
- aria-label="Delete ${t.name}"
115
- @click=${r=>this._handleDeleteClick(t,r)}
116
- >
117
- <ic-icon name="trash" size="16px"></ic-icon>
118
- </button>
119
- </div>
120
- </div>
121
- `)}
122
- </div>
123
- `}};s.styles=[m,b,g`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-BBkuC-EU.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";var d={completed:`#22c55e`,failed:`#ef4444`};function f(e){if(!e)return`Never`;let t=Date.now()-e;if(t<0)return`just now`;let n=Math.floor(t/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:new Date(e).toISOString().slice(0,10)}var p=class extends r{constructor(...e){super(...e),this.rpcClient=null,this._rpcStatusUnsub=null,this._runs=[],this._loading=!0,this._sortField=`date`,this._sortDir=`desc`,this._deleteTarget=null}static{this.styles=[o,i,n`
124
2
  :host {
125
3
  display: block;
126
4
  }
@@ -314,4 +192,126 @@ import{a as h,I as p,b as a,A as u,s as m,f as b,i as g,n as v,r as c,t as _}fro
314
192
  justify-content: flex-end;
315
193
  }
316
194
  }
317
- `];n([v({attribute:!1})],s.prototype,"rpcClient",2);n([c()],s.prototype,"_runs",2);n([c()],s.prototype,"_loading",2);n([c()],s.prototype,"_sortField",2);n([c()],s.prototype,"_sortDir",2);n([c()],s.prototype,"_deleteTarget",2);s=n([_("ic-pipeline-history")],s);export{s as IcPipelineHistory};
195
+ `]}get _breadcrumbs(){return[{label:`Pipelines`,route:`pipelines`},{label:`History`}]}disconnectedCallback(){super.disconnectedCallback(),this._rpcStatusUnsub?.(),this._rpcStatusUnsub=null}updated(e){e.has(`rpcClient`)&&this.rpcClient&&(this._rpcStatusUnsub?.(),this.rpcClient.status===`connected`?this._loadRuns():this._rpcStatusUnsub=this.rpcClient.onStatusChange(e=>{e===`connected`&&(this._rpcStatusUnsub=null,this._loadRuns())}))}async _loadRuns(){this._loading=!0;try{let e=await this.rpcClient?.call(`graph.runs`,{});this._runs=e?.runs??[]}catch{this._runs=[]}this._loading=!1}get _sorted(){return[...this._runs].sort((e,t)=>{let n=0;switch(this._sortField){case`name`:n=e.name.localeCompare(t.name);break;case`status`:n=e.status.localeCompare(t.status);break;case`nodeCount`:n=e.nodeCount-t.nodeCount;break;case`date`:n=e.date.localeCompare(t.date);break}return this._sortDir===`asc`?n:-n})}_handleSort(e){this._sortField===e?this._sortDir=this._sortDir===`asc`?`desc`:`asc`:(this._sortField=e,this._sortDir=e===`name`?`asc`:`desc`)}_sortArrow(e){return this._sortField===e?this._sortDir===`asc`?`▲`:`▼`:``}_sortArrowClass(e){return this._sortField===e?`sort-arrow sort-arrow--active`:`sort-arrow`}_navigateToDetail(e){window.location.hash=`#/pipelines/history/${e.graphId}`}_handleDeleteClick(e,t){t.stopPropagation(),this._deleteTarget=e}async _confirmDelete(){if(!this._deleteTarget)return;let e=this._deleteTarget;this._deleteTarget=null;try{await this.rpcClient?.call(`graph.deleteRun`,{graphId:e.graphId}),this._runs=this._runs.filter(t=>t.graphId!==e.graphId),u.show(`Deleted "${e.name}"`,`success`)}catch(e){u.show(`Failed to delete: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}}_cancelDelete(){this._deleteTarget=null}_renderStatusDot(e){return t`<span class="status-text">
196
+ <span class="status-dot" style="--dot-color: ${d[e]??`#6b7280`}"></span>
197
+ ${e.charAt(0).toUpperCase()+e.slice(1)}
198
+ </span>`}_dateToRelative(e){return f(new Date(e).getTime())}render(){return t`
199
+ <ic-breadcrumb .items=${this._breadcrumbs}
200
+ @navigate=${e=>this.dispatchEvent(new CustomEvent(`navigate`,{detail:e.detail,bubbles:!0,composed:!0}))}
201
+ ></ic-breadcrumb>
202
+
203
+ <div class="page-header" role="region" aria-label="Pipeline History">
204
+ <h1 class="page-title">Pipeline History</h1>
205
+ </div>
206
+
207
+ ${this._renderContent()}
208
+ ${this._deleteTarget?t`
209
+ <ic-confirm-dialog
210
+ open
211
+ variant="danger"
212
+ title="Delete Run"
213
+ message=${`Delete run "${this._deleteTarget.name}"? This cannot be undone.`}
214
+ confirmLabel="Delete"
215
+ @confirm=${this._confirmDelete}
216
+ @cancel=${this._cancelDelete}
217
+ ></ic-confirm-dialog>
218
+ `:l}
219
+ `}_renderContent(){if(this._loading)return t`<ic-skeleton-view variant="list"></ic-skeleton-view>`;if(this._runs.length===0)return t`
220
+ <ic-empty-state
221
+ icon="git-branch"
222
+ message="No pipeline runs yet"
223
+ description="Run a pipeline to see results here."
224
+ >
225
+ <button
226
+ class="action-btn"
227
+ style="padding: 8px 16px; width: auto; height: auto; border: 1px solid var(--ic-border, #374151); color: var(--ic-text, #f3f4f6);"
228
+ @click=${()=>{window.location.hash=`#/pipelines/new`}}
229
+ >
230
+ New Pipeline
231
+ </button>
232
+ </ic-empty-state>
233
+ `;let e=this._sorted;return t`
234
+ ${this._renderTable(e)}
235
+ ${this._renderMobileList(e)}
236
+ `}_renderTable(e){return t`
237
+ <div class="grid-table" role="table">
238
+ <div class="grid-header" role="row">
239
+ <div class="cell" role="columnheader" @click=${()=>this._handleSort(`name`)}>
240
+ Name
241
+ <span class=${this._sortArrowClass(`name`)}>${this._sortArrow(`name`)}</span>
242
+ </div>
243
+ <div class="cell" role="columnheader" @click=${()=>this._handleSort(`status`)}>
244
+ Status
245
+ <span class=${this._sortArrowClass(`status`)}>${this._sortArrow(`status`)}</span>
246
+ </div>
247
+ <div class="cell" role="columnheader" @click=${()=>this._handleSort(`nodeCount`)}>
248
+ Nodes
249
+ <span class=${this._sortArrowClass(`nodeCount`)}>${this._sortArrow(`nodeCount`)}</span>
250
+ </div>
251
+ <div class="cell" role="columnheader" @click=${()=>this._handleSort(`date`)}>
252
+ Date
253
+ <span class=${this._sortArrowClass(`date`)}>${this._sortArrow(`date`)}</span>
254
+ </div>
255
+ <div class="cell actions-header" role="columnheader">Actions</div>
256
+ </div>
257
+ ${e.map(e=>this._renderRow(e))}
258
+ </div>
259
+ `}_renderRow(e){return t`
260
+ <div class="grid-row" role="row" @click=${()=>this._navigateToDetail(e)}>
261
+ <div class="cell" role="cell">
262
+ <span class="run-name">${e.name}</span>
263
+ </div>
264
+ <div class="cell" role="cell">
265
+ ${this._renderStatusDot(e.status)}
266
+ </div>
267
+ <div class="cell" role="cell">${e.nodeCount}</div>
268
+ <div class="cell dim-text" role="cell">${this._dateToRelative(e.date)}</div>
269
+ <div class="cell actions-cell" role="cell">
270
+ <button
271
+ class="action-btn"
272
+ aria-label="View ${e.name}"
273
+ @click=${t=>{t.stopPropagation(),this._navigateToDetail(e)}}
274
+ >
275
+ <ic-icon name="eye" size="16px"></ic-icon>
276
+ </button>
277
+ <button
278
+ class="action-btn action-btn--danger"
279
+ aria-label="Delete ${e.name}"
280
+ @click=${t=>this._handleDeleteClick(e,t)}
281
+ >
282
+ <ic-icon name="trash" size="16px"></ic-icon>
283
+ </button>
284
+ </div>
285
+ </div>
286
+ `}_renderMobileList(e){return t`
287
+ <div class="mobile-list">
288
+ ${e.map(e=>t`
289
+ <div class="mobile-card" @click=${()=>this._navigateToDetail(e)}>
290
+ <div class="card-header">
291
+ <span class="card-label">${e.name}</span>
292
+ ${this._renderStatusDot(e.status)}
293
+ </div>
294
+ <div class="card-meta">
295
+ <span>${e.nodeCount} nodes</span>
296
+ <span>${this._dateToRelative(e.date)}</span>
297
+ </div>
298
+ <div class="card-actions">
299
+ <button
300
+ class="action-btn"
301
+ aria-label="View ${e.name}"
302
+ @click=${t=>{t.stopPropagation(),this._navigateToDetail(e)}}
303
+ >
304
+ <ic-icon name="eye" size="16px"></ic-icon>
305
+ </button>
306
+ <button
307
+ class="action-btn action-btn--danger"
308
+ aria-label="Delete ${e.name}"
309
+ @click=${t=>this._handleDeleteClick(e,t)}
310
+ >
311
+ <ic-icon name="trash" size="16px"></ic-icon>
312
+ </button>
313
+ </div>
314
+ </div>
315
+ `)}
316
+ </div>
317
+ `}};c([s({attribute:!1})],p.prototype,`rpcClient`,void 0),c([a()],p.prototype,`_runs`,void 0),c([a()],p.prototype,`_loading`,void 0),c([a()],p.prototype,`_sortField`,void 0),c([a()],p.prototype,`_sortDir`,void 0),c([a()],p.prototype,`_deleteTarget`,void 0),p=c([e(`ic-pipeline-history`)],p);export{p as IcPipelineHistory};
@@ -1,67 +1,4 @@
1
- import{a as h,I as p,b as n,A as v,s as g,f as b,i as x,n as f,r as l,t as _}from"./index-CEcM1R_C.js";import{o as m,r as u}from"./ic-chat-message-CFyDJd0z.js";import"./ic-breadcrumb-CUMpp3BL.js";import"./ic-confirm-dialog-CCDbB04e.js";import"./ic-icon-xeGTVhVG.js";import"./directive-DoeGSK_T.js";var y=Object.defineProperty,w=Object.getOwnPropertyDescriptor,c=(e,r,s,a)=>{for(var t=a>1?void 0:a?w(r,s):r,o=e.length-1,d;o>=0;o--)(d=e[o])&&(t=(a?d(r,s,t):d(t))||t);return a&&t&&y(r,s,t),t};const $={completed:"#22c55e",failed:"#ef4444"};function C(e){if(!e)return"Never";const r=Date.now()-e;if(r<0)return"just now";const s=Math.floor(r/1e3);if(s<60)return"just now";const a=Math.floor(s/60);if(a<60)return`${a}m ago`;const t=Math.floor(a/60);if(t<24)return`${t}h ago`;const o=Math.floor(t/24);return o<30?`${o}d ago`:new Date(e).toISOString().slice(0,10)}function D(e){return e.replace(/_/g," ").replace(/\b\w/g,r=>r.toUpperCase())}let i=class extends h{constructor(){super(...arguments),this.rpcClient=null,this.graphId="",this._rpcStatusUnsub=null,this._detail=null,this._loading=!0,this._error=!1,this._showDeleteConfirm=!1}get _breadcrumbs(){return[{label:"Pipelines",route:"pipelines"},{label:"History",route:"pipelines/history"},{label:this._detail?.name??this.graphId}]}disconnectedCallback(){super.disconnectedCallback(),this._rpcStatusUnsub?.(),this._rpcStatusUnsub=null}updated(e){(e.has("rpcClient")||e.has("graphId"))&&this.rpcClient&&this.graphId&&(this._rpcStatusUnsub?.(),this.rpcClient.status==="connected"?this._loadDetail():this._rpcStatusUnsub=this.rpcClient.onStatusChange(r=>{r==="connected"&&(this._rpcStatusUnsub=null,this._loadDetail())}))}async _loadDetail(){this._loading=!0,this._error=!1;try{const e=await this.rpcClient?.call("graph.runDetail",{graphId:this.graphId});e?this._detail=e:this._error=!0}catch{this._error=!0}this._loading=!1}async _confirmDelete(){this._showDeleteConfirm=!1;try{await this.rpcClient?.call("graph.deleteRun",{graphId:this.graphId}),p.show("Run deleted","success"),window.location.hash="#/pipelines/history"}catch(e){p.show(`Failed to delete: ${e instanceof Error?e.message:"Unknown error"}`,"error")}}render(){return n`
2
- <ic-breadcrumb .items=${this._breadcrumbs}
3
- @navigate=${e=>this.dispatchEvent(new CustomEvent("navigate",{detail:e.detail,bubbles:!0,composed:!0}))}
4
- ></ic-breadcrumb>
5
-
6
- ${this._renderContent()}
7
-
8
- <ic-confirm-dialog
9
- ?open=${this._showDeleteConfirm}
10
- variant="danger"
11
- title="Delete Run"
12
- message=${`Delete run "${this._detail?.name??this.graphId}"? This cannot be undone.`}
13
- confirmLabel="Delete"
14
- @confirm=${this._confirmDelete}
15
- @cancel=${()=>{this._showDeleteConfirm=!1}}
16
- ></ic-confirm-dialog>
17
- `}_renderContent(){if(this._loading)return n`<ic-skeleton-view variant="detail"></ic-skeleton-view>`;if(this._error||!this._detail)return n`
18
- <div class="not-found">
19
- <p>Run not found.</p>
20
- <a href="#/pipelines/history">Back to History</a>
21
- </div>
22
- `;const e=this._detail,r=new Date(e.date).getTime(),s=$[e.status]??"#6b7280",a=e.status.charAt(0).toUpperCase()+e.status.slice(1);return n`
23
- <div class="meta-header">
24
- <div class="meta-info">
25
- <h2 class="meta-name">${e.name}</h2>
26
- <div class="meta-details">
27
- <span class="meta-detail">
28
- <span class="status-text">
29
- <span class="status-dot" style="--dot-color: ${s}"></span>
30
- ${a}
31
- </span>
32
- </span>
33
- <span class="meta-detail">${C(r)}</span>
34
- <span class="meta-detail">${e.nodes.length} nodes</span>
35
- </div>
36
- </div>
37
- <button
38
- class="delete-btn"
39
- @click=${()=>{this._showDeleteConfirm=!0}}
40
- >
41
- <ic-icon name="trash" size="14px"></ic-icon>
42
- Delete Run
43
- </button>
44
- </div>
45
-
46
- <div class="node-accordion">
47
- ${e.nodes.map((t,o)=>n`
48
- <details class="node-section" ?open=${o===0}>
49
- <summary>${D(t.nodeId)}</summary>
50
- <div class="node-content">
51
- ${t.output?m(u(t.output)):n`<p class="no-output">No output</p>`}
52
- ${t.artifacts.length>0?t.artifacts.map(d=>n`
53
- <details class="artifact-section">
54
- <summary>${d.filename}</summary>
55
- <div class="artifact-content">
56
- ${m(u(d.content))}
57
- </div>
58
- </details>
59
- `):v}
60
- </div>
61
- </details>
62
- `)}
63
- </div>
64
- `}};i.styles=[g,b,x`
1
+ import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-BBkuC-EU.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-icon-BGNCCPpZ.js";import{n as d,t as f}from"./ic-chat-message-ByFUoMm6.js";var p={completed:`#22c55e`,failed:`#ef4444`};function m(e){if(!e)return`Never`;let t=Date.now()-e;if(t<0)return`just now`;let n=Math.floor(t/1e3);if(n<60)return`just now`;let r=Math.floor(n/60);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<30?`${a}d ago`:new Date(e).toISOString().slice(0,10)}function h(e){return e.replace(/_/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}var g=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.graphId=``,this._rpcStatusUnsub=null,this._detail=null,this._loading=!0,this._error=!1,this._showDeleteConfirm=!1}static{this.styles=[o,i,n`
65
2
  :host {
66
3
  display: block;
67
4
  }
@@ -284,4 +221,67 @@ import{a as h,I as p,b as n,A as v,s as g,f as b,i as x,n as f,r as l,t as _}fro
284
221
  color: var(--ic-accent, #3b82f6);
285
222
  text-decoration: underline;
286
223
  }
287
- `];c([f({attribute:!1})],i.prototype,"rpcClient",2);c([f({type:String})],i.prototype,"graphId",2);c([l()],i.prototype,"_detail",2);c([l()],i.prototype,"_loading",2);c([l()],i.prototype,"_error",2);c([l()],i.prototype,"_showDeleteConfirm",2);i=c([_("ic-pipeline-history-detail")],i);export{i as IcPipelineHistoryDetail};
224
+ `]}get _breadcrumbs(){return[{label:`Pipelines`,route:`pipelines`},{label:`History`,route:`pipelines/history`},{label:this._detail?.name??this.graphId}]}disconnectedCallback(){super.disconnectedCallback(),this._rpcStatusUnsub?.(),this._rpcStatusUnsub=null}updated(e){(e.has(`rpcClient`)||e.has(`graphId`))&&this.rpcClient&&this.graphId&&(this._rpcStatusUnsub?.(),this.rpcClient.status===`connected`?this._loadDetail():this._rpcStatusUnsub=this.rpcClient.onStatusChange(e=>{e===`connected`&&(this._rpcStatusUnsub=null,this._loadDetail())}))}async _loadDetail(){this._loading=!0,this._error=!1;try{let e=await this.rpcClient?.call(`graph.runDetail`,{graphId:this.graphId});e?this._detail=e:this._error=!0}catch{this._error=!0}this._loading=!1}async _confirmDelete(){this._showDeleteConfirm=!1;try{await this.rpcClient?.call(`graph.deleteRun`,{graphId:this.graphId}),u.show(`Run deleted`,`success`),window.location.hash=`#/pipelines/history`}catch(e){u.show(`Failed to delete: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}}render(){return t`
225
+ <ic-breadcrumb .items=${this._breadcrumbs}
226
+ @navigate=${e=>this.dispatchEvent(new CustomEvent(`navigate`,{detail:e.detail,bubbles:!0,composed:!0}))}
227
+ ></ic-breadcrumb>
228
+
229
+ ${this._renderContent()}
230
+
231
+ <ic-confirm-dialog
232
+ ?open=${this._showDeleteConfirm}
233
+ variant="danger"
234
+ title="Delete Run"
235
+ message=${`Delete run "${this._detail?.name??this.graphId}"? This cannot be undone.`}
236
+ confirmLabel="Delete"
237
+ @confirm=${this._confirmDelete}
238
+ @cancel=${()=>{this._showDeleteConfirm=!1}}
239
+ ></ic-confirm-dialog>
240
+ `}_renderContent(){if(this._loading)return t`<ic-skeleton-view variant="detail"></ic-skeleton-view>`;if(this._error||!this._detail)return t`
241
+ <div class="not-found">
242
+ <p>Run not found.</p>
243
+ <a href="#/pipelines/history">Back to History</a>
244
+ </div>
245
+ `;let e=this._detail,n=new Date(e.date).getTime(),r=p[e.status]??`#6b7280`,i=e.status.charAt(0).toUpperCase()+e.status.slice(1);return t`
246
+ <div class="meta-header">
247
+ <div class="meta-info">
248
+ <h2 class="meta-name">${e.name}</h2>
249
+ <div class="meta-details">
250
+ <span class="meta-detail">
251
+ <span class="status-text">
252
+ <span class="status-dot" style="--dot-color: ${r}"></span>
253
+ ${i}
254
+ </span>
255
+ </span>
256
+ <span class="meta-detail">${m(n)}</span>
257
+ <span class="meta-detail">${e.nodes.length} nodes</span>
258
+ </div>
259
+ </div>
260
+ <button
261
+ class="delete-btn"
262
+ @click=${()=>{this._showDeleteConfirm=!0}}
263
+ >
264
+ <ic-icon name="trash" size="14px"></ic-icon>
265
+ Delete Run
266
+ </button>
267
+ </div>
268
+
269
+ <div class="node-accordion">
270
+ ${e.nodes.map((e,n)=>t`
271
+ <details class="node-section" ?open=${n===0}>
272
+ <summary>${h(e.nodeId)}</summary>
273
+ <div class="node-content">
274
+ ${e.output?d(f(e.output)):t`<p class="no-output">No output</p>`}
275
+ ${e.artifacts.length>0?e.artifacts.map(e=>t`
276
+ <details class="artifact-section">
277
+ <summary>${e.filename}</summary>
278
+ <div class="artifact-content">
279
+ ${d(f(e.content))}
280
+ </div>
281
+ </details>
282
+ `):l}
283
+ </div>
284
+ </details>
285
+ `)}
286
+ </div>
287
+ `}};c([s({attribute:!1})],g.prototype,`rpcClient`,void 0),c([s({type:String})],g.prototype,`graphId`,void 0),c([a()],g.prototype,`_detail`,void 0),c([a()],g.prototype,`_loading`,void 0),c([a()],g.prototype,`_error`,void 0),c([a()],g.prototype,`_showDeleteConfirm`,void 0),g=c([e(`ic-pipeline-history-detail`)],g);export{g as IcPipelineHistoryDetail};