comisai 1.0.24 → 1.0.25

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 (98) hide show
  1. package/node_modules/@comis/agent/package.json +1 -1
  2. package/node_modules/@comis/channels/package.json +1 -1
  3. package/node_modules/@comis/cli/package.json +1 -1
  4. package/node_modules/@comis/core/dist/bootstrap.js +5 -0
  5. package/node_modules/@comis/core/dist/config/env-layer.d.ts +31 -0
  6. package/node_modules/@comis/core/dist/config/env-layer.js +41 -0
  7. package/node_modules/@comis/core/dist/config/layered.d.ts +9 -0
  8. package/node_modules/@comis/core/dist/config/layered.js +11 -0
  9. package/node_modules/@comis/core/package.json +1 -1
  10. package/node_modules/@comis/daemon/dist/daemon.js +3 -0
  11. package/node_modules/@comis/daemon/package.json +1 -1
  12. package/node_modules/@comis/gateway/package.json +1 -1
  13. package/node_modules/@comis/infra/package.json +1 -1
  14. package/node_modules/@comis/memory/package.json +1 -1
  15. package/node_modules/@comis/scheduler/package.json +1 -1
  16. package/node_modules/@comis/shared/package.json +1 -1
  17. package/node_modules/@comis/skills/package.json +1 -1
  18. package/node_modules/@comis/web/dist/assets/{agent-detail-BG9MGWWj.js → agent-detail-ru-AhppM.js} +270 -270
  19. package/node_modules/@comis/web/dist/assets/agent-editor-hjwRuFVp.js +2173 -0
  20. package/node_modules/@comis/web/dist/assets/{agent-list-LHCJ4rw2.js → agent-list-6Uotjatr.js} +170 -170
  21. package/node_modules/@comis/web/dist/assets/{approvals-q9VH_IKr.js → approvals-C-K6hN2U.js} +13 -13
  22. package/node_modules/@comis/web/dist/assets/billing-view-CxysXH0p.js +375 -0
  23. package/node_modules/@comis/web/dist/assets/{channel-detail-CaInesJM.js → channel-detail-BBCKtmne.js} +265 -265
  24. package/node_modules/@comis/web/dist/assets/channel-list-FkfeOLBQ.js +323 -0
  25. package/node_modules/@comis/web/dist/assets/{chat-console-CNmzl0JW.js → chat-console-BumBaIgO.js} +243 -246
  26. package/node_modules/@comis/web/dist/assets/{config-editor-DX4ITw6y.js → config-editor-C9BSwHGy.js} +477 -477
  27. package/node_modules/@comis/web/dist/assets/{context-dag-browser-BwiaF5tf.js → context-dag-browser-BHm00mJD.js} +105 -105
  28. package/node_modules/@comis/web/dist/assets/{context-engine-BZ5Am6hA.js → context-engine-BENY3pWE.js} +136 -136
  29. package/node_modules/@comis/web/dist/assets/decorate-BvWYovGE.js +38 -0
  30. package/node_modules/@comis/web/dist/assets/{delivery-view-OfBZof-m.js → delivery-view-BCnkPsAp.js} +134 -134
  31. package/node_modules/@comis/web/dist/assets/{diagnostics-view-YFwCxgr2.js → diagnostics-view-C_jQFG2H.js} +82 -82
  32. package/node_modules/@comis/web/dist/assets/directive-BOYXJ-K-.js +1 -0
  33. package/node_modules/@comis/web/dist/assets/{extract-variables-BM5qyK-s.js → extract-variables-B7-Doo7l.js} +39 -39
  34. package/node_modules/@comis/web/dist/assets/{ic-array-editor-B7m6x7-S.js → ic-array-editor-BLoEyeLS.js} +29 -29
  35. package/node_modules/@comis/web/dist/assets/{ic-breadcrumb-CUMpp3BL.js → ic-breadcrumb-DqN6G3gc.js} +16 -16
  36. package/node_modules/@comis/web/dist/assets/{ic-budget-segment-bar-BtJ6x5mN.js → ic-budget-segment-bar-zLsMzjDO.js} +20 -20
  37. package/node_modules/@comis/web/dist/assets/ic-chat-message-FdQcZsSQ.js +352 -0
  38. package/node_modules/@comis/web/dist/assets/{ic-confirm-dialog-CCDbB04e.js → ic-confirm-dialog-DGlPbV1T.js} +26 -26
  39. package/node_modules/@comis/web/dist/assets/{ic-connection-dot-CnT1b8xr.js → ic-connection-dot-BgYiK2N4.js} +13 -13
  40. package/node_modules/@comis/web/dist/assets/ic-data-table-CKIvr-ag.js +277 -0
  41. package/node_modules/@comis/web/dist/assets/ic-delivery-row-B3YwjjuM.js +67 -0
  42. package/node_modules/@comis/web/dist/assets/{ic-detail-panel-BF83r-if.js → ic-detail-panel-DiCe4hLr.js} +27 -27
  43. package/node_modules/@comis/web/dist/assets/{ic-empty-state-60l2ePhd.js → ic-empty-state-CM3Wbj2f.js} +19 -19
  44. package/node_modules/@comis/web/dist/assets/ic-graph-canvas-ByRjij68.js +359 -0
  45. package/node_modules/@comis/web/dist/assets/ic-icon-BGNCCPpZ.js +33 -0
  46. package/node_modules/@comis/web/dist/assets/{ic-layer-waterfall-COvEYMg5.js → ic-layer-waterfall-WkaFyu-l.js} +18 -18
  47. package/node_modules/@comis/web/dist/assets/ic-relative-time-B3UAnTqg.js +12 -0
  48. package/node_modules/@comis/web/dist/assets/{ic-search-input-CSOxY9g7.js → ic-search-input-B02AGw1i.js} +22 -22
  49. package/node_modules/@comis/web/dist/assets/{ic-select-Ce-Raudx.js → ic-select-BqfZISjw.js} +29 -29
  50. package/node_modules/@comis/web/dist/assets/ic-tabs-yBjkWKJH.js +95 -0
  51. package/node_modules/@comis/web/dist/assets/ic-tag-CvMVQFRR.js +33 -0
  52. package/node_modules/@comis/web/dist/assets/{ic-time-range-picker-CypCT68y.js → ic-time-range-picker-DXbYeBmY.js} +31 -31
  53. package/node_modules/@comis/web/dist/assets/{ic-tool-call-7MaXSsCW.js → ic-tool-call-DMPHsLyx.js} +51 -51
  54. package/node_modules/@comis/web/dist/assets/index-CVEaS9aY.css +2 -0
  55. package/node_modules/@comis/web/dist/assets/index-FLPhHz8p.js +2792 -0
  56. package/node_modules/@comis/web/dist/assets/{mcp-management-BNZPnpDn.js → mcp-management-5jyScQis.js} +209 -209
  57. package/node_modules/@comis/web/dist/assets/{media-config-BBvTYxOX.js → media-config-J9oT9PPs.js} +154 -154
  58. package/node_modules/@comis/web/dist/assets/{media-test-BkK3RCRK.js → media-test-DGTCtM8-.js} +259 -259
  59. package/node_modules/@comis/web/dist/assets/{memory-inspector-1hDGCGat.js → memory-inspector-D5Re9ptG.js} +450 -450
  60. package/node_modules/@comis/web/dist/assets/{message-center-CXefwsUu.js → message-center-cRLK6ZmG.js} +290 -290
  61. package/node_modules/@comis/web/dist/assets/{models-C1qcU_j3.js → models-D5vu07MR.js} +371 -371
  62. package/node_modules/@comis/web/dist/assets/observability-types-D0tkwElU.js +1 -0
  63. package/node_modules/@comis/web/dist/assets/{observe-view-C0VBhX4C.js → observe-view-CalNNEmd.js} +399 -399
  64. package/node_modules/@comis/web/dist/assets/pipeline-builder-DUYDGwZf.js +1495 -0
  65. package/node_modules/@comis/web/dist/assets/{pipeline-history-DkfOQ6SW.js → pipeline-history-BAO8brOe.js} +124 -124
  66. package/node_modules/@comis/web/dist/assets/{pipeline-history-detail-hyHgD0ai.js → pipeline-history-detail-DectIoQt.js} +65 -65
  67. package/node_modules/@comis/web/dist/assets/{pipeline-list-BPW8hV-q.js → pipeline-list-BHlaBKww.js} +227 -227
  68. package/node_modules/@comis/web/dist/assets/{pipeline-monitor-Bip16T7e.js → pipeline-monitor-BhtpNEHf.js} +298 -298
  69. package/node_modules/@comis/web/dist/assets/{scheduler-BGgwKd06.js → scheduler-VafN_8xi.js} +486 -486
  70. package/node_modules/@comis/web/dist/assets/{security-D15st4xx.js → security-QQXMRTlo.js} +389 -389
  71. package/node_modules/@comis/web/dist/assets/{session-detail-SGEYNJ0M.js → session-detail-BpZ_8Yih.js} +294 -294
  72. package/node_modules/@comis/web/dist/assets/session-key-parser-Dkqcj2Ss.js +1 -0
  73. package/node_modules/@comis/web/dist/assets/session-list-DfCm8Cec.js +231 -0
  74. package/node_modules/@comis/web/dist/assets/{setup-wizard-nT0tz9QP.js → setup-wizard-C-z477CG.js} +486 -494
  75. package/node_modules/@comis/web/dist/assets/{skills-D8yVfSUy.js → skills-BCOGPf6s.js} +329 -329
  76. package/node_modules/@comis/web/dist/assets/{subagents-HHXMeHYo.js → subagents-l-auUraL.js} +74 -74
  77. package/node_modules/@comis/web/dist/assets/{workspace-manager-BQlr10iH.js → workspace-manager-DlvBixiq.js} +236 -236
  78. package/node_modules/@comis/web/dist/index.html +3 -2
  79. package/node_modules/@comis/web/package.json +1 -1
  80. package/package.json +15 -15
  81. package/node_modules/@comis/web/dist/assets/agent-editor-C26Q_xCs.js +0 -2173
  82. package/node_modules/@comis/web/dist/assets/billing-view-CtYvBqTE.js +0 -375
  83. package/node_modules/@comis/web/dist/assets/channel-list-B8dj3O9a.js +0 -323
  84. package/node_modules/@comis/web/dist/assets/directive-DoeGSK_T.js +0 -1
  85. package/node_modules/@comis/web/dist/assets/ic-chat-message-CFyDJd0z.js +0 -352
  86. package/node_modules/@comis/web/dist/assets/ic-data-table-CKUNTxHw.js +0 -277
  87. package/node_modules/@comis/web/dist/assets/ic-delivery-row-GP5Fkygs.js +0 -67
  88. package/node_modules/@comis/web/dist/assets/ic-graph-canvas-C8FuSMe1.js +0 -359
  89. package/node_modules/@comis/web/dist/assets/ic-icon-xeGTVhVG.js +0 -33
  90. package/node_modules/@comis/web/dist/assets/ic-relative-time-3FqpjeAI.js +0 -12
  91. package/node_modules/@comis/web/dist/assets/ic-tabs-B7QtM_v8.js +0 -95
  92. package/node_modules/@comis/web/dist/assets/ic-tag-CPPUnDLF.js +0 -33
  93. package/node_modules/@comis/web/dist/assets/index-CEcM1R_C.js +0 -2830
  94. package/node_modules/@comis/web/dist/assets/index-CIJFuItj.css +0 -1
  95. package/node_modules/@comis/web/dist/assets/observability-types-D7jUtSde.js +0 -1
  96. package/node_modules/@comis/web/dist/assets/pipeline-builder-DcUUIrm0.js +0 -1496
  97. package/node_modules/@comis/web/dist/assets/session-key-parser-DPORMVyU.js +0 -1
  98. 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-FLPhHz8p.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-FLPhHz8p.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-FdQcZsSQ.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};