comisai 1.0.16 → 1.0.17

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 (90) 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/dist/wizard/non-interactive.js +1 -0
  4. package/node_modules/@comis/cli/dist/wizard/steps/01-detect-existing.js +4 -0
  5. package/node_modules/@comis/cli/dist/wizard/steps/07-gateway.js +9 -0
  6. package/node_modules/@comis/cli/dist/wizard/steps/10-write-config.js +2 -0
  7. package/node_modules/@comis/cli/dist/wizard/steps/12-finish.js +5 -2
  8. package/node_modules/@comis/cli/dist/wizard/types.d.ts +1 -0
  9. package/node_modules/@comis/cli/package.json +1 -1
  10. package/node_modules/@comis/core/dist/config/schema-gateway.d.ts +17 -2
  11. package/node_modules/@comis/core/dist/config/schema-gateway.js +11 -0
  12. package/node_modules/@comis/core/dist/config/schema.d.ts +60 -57
  13. package/node_modules/@comis/core/package.json +1 -1
  14. package/node_modules/@comis/daemon/dist/wiring/setup-gateway.js +34 -6
  15. package/node_modules/@comis/daemon/package.json +1 -1
  16. package/node_modules/@comis/gateway/package.json +1 -1
  17. package/node_modules/@comis/infra/package.json +1 -1
  18. package/node_modules/@comis/memory/package.json +1 -1
  19. package/node_modules/@comis/scheduler/package.json +1 -1
  20. package/node_modules/@comis/shared/package.json +1 -1
  21. package/node_modules/@comis/skills/package.json +1 -1
  22. package/node_modules/@comis/web/dist/android-chrome-192x192.png +0 -0
  23. package/node_modules/@comis/web/dist/android-chrome-512x512.png +0 -0
  24. package/node_modules/@comis/web/dist/apple-touch-icon.png +0 -0
  25. package/node_modules/@comis/web/dist/assets/agent-detail-BG9MGWWj.js +615 -0
  26. package/node_modules/@comis/web/dist/assets/agent-editor-C26Q_xCs.js +2173 -0
  27. package/node_modules/@comis/web/dist/assets/agent-list-LHCJ4rw2.js +504 -0
  28. package/node_modules/@comis/web/dist/assets/approvals-q9VH_IKr.js +54 -0
  29. package/node_modules/@comis/web/dist/assets/billing-view-CtYvBqTE.js +375 -0
  30. package/node_modules/@comis/web/dist/assets/channel-detail-CaInesJM.js +681 -0
  31. package/node_modules/@comis/web/dist/assets/channel-list-B8dj3O9a.js +323 -0
  32. package/node_modules/@comis/web/dist/assets/chat-console-CNmzl0JW.js +943 -0
  33. package/node_modules/@comis/web/dist/assets/config-editor-DX4ITw6y.js +1374 -0
  34. package/node_modules/@comis/web/dist/assets/context-dag-browser-BwiaF5tf.js +393 -0
  35. package/node_modules/@comis/web/dist/assets/context-engine-BZ5Am6hA.js +393 -0
  36. package/node_modules/@comis/web/dist/assets/delivery-view-OfBZof-m.js +392 -0
  37. package/node_modules/@comis/web/dist/assets/diagnostics-view-YFwCxgr2.js +231 -0
  38. package/node_modules/@comis/web/dist/assets/directive-DoeGSK_T.js +1 -0
  39. package/node_modules/@comis/web/dist/assets/extract-variables-BM5qyK-s.js +149 -0
  40. package/node_modules/@comis/web/dist/assets/ic-array-editor-B7m6x7-S.js +118 -0
  41. package/node_modules/@comis/web/dist/assets/ic-breadcrumb-CUMpp3BL.js +75 -0
  42. package/node_modules/@comis/web/dist/assets/ic-budget-segment-bar-BtJ6x5mN.js +64 -0
  43. package/node_modules/@comis/web/dist/assets/ic-chat-message-CFyDJd0z.js +352 -0
  44. package/node_modules/@comis/web/dist/assets/ic-confirm-dialog-CCDbB04e.js +110 -0
  45. package/node_modules/@comis/web/dist/assets/ic-connection-dot-CnT1b8xr.js +54 -0
  46. package/node_modules/@comis/web/dist/assets/ic-data-table-CKUNTxHw.js +277 -0
  47. package/node_modules/@comis/web/dist/assets/ic-delivery-row-GP5Fkygs.js +67 -0
  48. package/node_modules/@comis/web/dist/assets/ic-detail-panel-BF83r-if.js +116 -0
  49. package/node_modules/@comis/web/dist/assets/ic-empty-state-60l2ePhd.js +52 -0
  50. package/node_modules/@comis/web/dist/assets/ic-graph-canvas-C8FuSMe1.js +359 -0
  51. package/node_modules/@comis/web/dist/assets/ic-icon-xeGTVhVG.js +33 -0
  52. package/node_modules/@comis/web/dist/assets/ic-layer-waterfall-COvEYMg5.js +69 -0
  53. package/node_modules/@comis/web/dist/assets/ic-relative-time-3FqpjeAI.js +12 -0
  54. package/node_modules/@comis/web/dist/assets/ic-search-input-CSOxY9g7.js +92 -0
  55. package/node_modules/@comis/web/dist/assets/ic-select-Ce-Raudx.js +127 -0
  56. package/node_modules/@comis/web/dist/assets/ic-tabs-B7QtM_v8.js +95 -0
  57. package/node_modules/@comis/web/dist/assets/ic-tag-CPPUnDLF.js +33 -0
  58. package/node_modules/@comis/web/dist/assets/ic-time-range-picker-CypCT68y.js +93 -0
  59. package/node_modules/@comis/web/dist/assets/ic-tool-call-7MaXSsCW.js +146 -0
  60. package/node_modules/@comis/web/dist/assets/index-CEcM1R_C.js +2830 -0
  61. package/node_modules/@comis/web/dist/assets/index-CIJFuItj.css +1 -0
  62. package/node_modules/@comis/web/dist/assets/mcp-management-BNZPnpDn.js +582 -0
  63. package/node_modules/@comis/web/dist/assets/media-config-BBvTYxOX.js +314 -0
  64. package/node_modules/@comis/web/dist/assets/media-test-BkK3RCRK.js +496 -0
  65. package/node_modules/@comis/web/dist/assets/memory-inspector-1hDGCGat.js +1139 -0
  66. package/node_modules/@comis/web/dist/assets/message-center-CXefwsUu.js +785 -0
  67. package/node_modules/@comis/web/dist/assets/models-C1qcU_j3.js +894 -0
  68. package/node_modules/@comis/web/dist/assets/observability-types-D7jUtSde.js +1 -0
  69. package/node_modules/@comis/web/dist/assets/observe-view-C0VBhX4C.js +814 -0
  70. package/node_modules/@comis/web/dist/assets/pipeline-builder-DcUUIrm0.js +1496 -0
  71. package/node_modules/@comis/web/dist/assets/pipeline-history-DkfOQ6SW.js +317 -0
  72. package/node_modules/@comis/web/dist/assets/pipeline-history-detail-hyHgD0ai.js +287 -0
  73. package/node_modules/@comis/web/dist/assets/pipeline-list-BPW8hV-q.js +518 -0
  74. package/node_modules/@comis/web/dist/assets/pipeline-monitor-Bip16T7e.js +972 -0
  75. package/node_modules/@comis/web/dist/assets/scheduler-BGgwKd06.js +1182 -0
  76. package/node_modules/@comis/web/dist/assets/security-D15st4xx.js +1224 -0
  77. package/node_modules/@comis/web/dist/assets/session-detail-SGEYNJ0M.js +632 -0
  78. package/node_modules/@comis/web/dist/assets/session-key-parser-DPORMVyU.js +1 -0
  79. package/node_modules/@comis/web/dist/assets/session-list-6ybUTxbY.js +231 -0
  80. package/node_modules/@comis/web/dist/assets/setup-wizard-nT0tz9QP.js +853 -0
  81. package/node_modules/@comis/web/dist/assets/skills-D8yVfSUy.js +1051 -0
  82. package/node_modules/@comis/web/dist/assets/subagents-HHXMeHYo.js +193 -0
  83. package/node_modules/@comis/web/dist/assets/workspace-manager-BQlr10iH.js +785 -0
  84. package/node_modules/@comis/web/dist/comis-logo.png +0 -0
  85. package/node_modules/@comis/web/dist/favicon-16x16.png +0 -0
  86. package/node_modules/@comis/web/dist/favicon-32x32.png +0 -0
  87. package/node_modules/@comis/web/dist/favicon.ico +0 -0
  88. package/node_modules/@comis/web/dist/index.html +17 -0
  89. package/node_modules/@comis/web/package.json +29 -0
  90. package/package.json +15 -13
@@ -0,0 +1,277 @@
1
+ import{s as _,f as x,i as y,n as c,r as g,a as f,b as d,A as p,t as m}from"./index-CEcM1R_C.js";var w=Object.defineProperty,k=Object.getOwnPropertyDescriptor,n=(t,e,r,s)=>{for(var a=s>1?void 0:s?k(e,r):e,i=t.length-1,h;i>=0;i--)(h=t[i])&&(a=(s?h(e,r,a):h(a))||a);return s&&a&&w(e,r,a),a};let o=class extends f{constructor(){super(...arguments),this.columns=[],this.rows=[],this.pageSize=25,this.selectable=!1,this.emptyMessage="No data",this.resizable=!1,this.expandable=!1,this.expandRenderer=null,this._sortKey="",this._sortDir="asc",this._page=0,this._selectedIds=new Set,this._columnWidths=new Map,this._expandedIds=new Set,this._resizing=null,this._boundPointerMove=this._handlePointerMove.bind(this),this._boundPointerUp=this._handlePointerUp.bind(this)}_getRowId(t){if(this.columns.length===0)return"";const e=this.columns[0].key;return String(t[e]??"")}_getCellValue(t,e){return t[e]}_getSortedRows(){const t=[...this.rows];return this._sortKey?t.sort((e,r)=>{const s=this._getCellValue(e,this._sortKey),a=this._getCellValue(r,this._sortKey);let i;return typeof s=="number"&&typeof a=="number"?i=s-a:i=String(s??"").localeCompare(String(a??"")),this._sortDir==="asc"?i:-i}):t}_getPagedRows(){const t=this._getSortedRows(),e=this._page*this.pageSize;return t.slice(e,e+this.pageSize)}_getTotalPages(){return Math.max(1,Math.ceil(this.rows.length/this.pageSize))}_handleSort(t){t.sortable&&(this._sortKey===t.key?this._sortDir=this._sortDir==="asc"?"desc":"asc":(this._sortKey=t.key,this._sortDir="asc"))}_handleRowClick(t,e){const r=e.target.tagName;r==="INPUT"||r==="BUTTON"||this.dispatchEvent(new CustomEvent("row-click",{detail:t,bubbles:!0}))}_handleRowKeydown(t,e){if(e.key==="Enter"||e.key===" ")e.preventDefault(),this.dispatchEvent(new CustomEvent("row-click",{detail:t,bubbles:!0}));else if(e.key==="ArrowDown"||e.key==="ArrowUp"){e.preventDefault();const r=e.currentTarget,s=e.key==="ArrowDown"?r.nextElementSibling:r.previousElementSibling;s?.classList.contains("grid-row")&&s.focus()}}_handleCheckboxChange(t,e){e.stopPropagation();const r=this._getRowId(t),s=new Set(this._selectedIds);s.has(r)?s.delete(r):s.add(r),this._selectedIds=s,this.dispatchEvent(new CustomEvent("selection-change",{detail:[...this._selectedIds],bubbles:!0}))}_handleSelectAll(t){t.stopPropagation();const e=this._getPagedRows(),r=e.every(a=>this._selectedIds.has(this._getRowId(a))),s=new Set(this._selectedIds);if(r)for(const a of e)s.delete(this._getRowId(a));else for(const a of e)s.add(this._getRowId(a));this._selectedIds=s,this.dispatchEvent(new CustomEvent("selection-change",{detail:[...this._selectedIds],bubbles:!0}))}_handlePrev(){this._page>0&&this._page--}_handleNext(){this._page<this._getTotalPages()-1&&this._page++}_sortArrowClass(t){return this._sortKey===t.key?"sort-indicator sorted":"sort-indicator"}_sortArrow(t){return this._sortKey!==t.key?"":this._sortDir==="asc"?"▲":"▼"}_handleResizeStart(t,e){e.preventDefault(),e.stopPropagation();const r=e.target.parentElement,s=this._columnWidths.get(t.key)??r.offsetWidth;this._resizing={key:t.key,startX:e.clientX,startWidth:s},document.addEventListener("pointermove",this._boundPointerMove),document.addEventListener("pointerup",this._boundPointerUp)}_handlePointerMove(t){if(!this._resizing)return;const e=t.clientX-this._resizing.startX,r=Math.max(50,this._resizing.startWidth+e),s=new Map(this._columnWidths);s.set(this._resizing.key,r),this._columnWidths=s}_handlePointerUp(){this._resizing=null,document.removeEventListener("pointermove",this._boundPointerMove),document.removeEventListener("pointerup",this._boundPointerUp)}_toggleExpand(t,e){e.stopPropagation();const r=this._getRowId(t),s=new Set(this._expandedIds);s.has(r)?s.delete(r):s.add(r),this._expandedIds=s}_getColumnStyle(t){const e=this._columnWidths.get(t.key);return e?`width: ${e}px; flex: none;`:""}render(){if(this.rows.length===0)return d`
2
+ <div class="table-container">
3
+ <div class="empty-message">${this.emptyMessage}</div>
4
+ </div>
5
+ `;const t=this._getPagedRows(),e=this._getTotalPages(),r=this._page*this.pageSize+1,s=Math.min(r+this.pageSize-1,this.rows.length),a=t.length>0&&t.every(i=>this._selectedIds.has(this._getRowId(i)));return d`
6
+ <div class="table-container">
7
+ <div class="table-wrapper">
8
+ <div role="grid">
9
+ <div class="grid-header" role="row">
10
+ ${this.expandable?d`<div class="expand-cell header-cell" role="columnheader"></div>`:p}
11
+ ${this.selectable?d`
12
+ <div class="checkbox-cell header-cell" role="columnheader">
13
+ <input
14
+ type="checkbox"
15
+ .checked=${a}
16
+ @change=${this._handleSelectAll}
17
+ aria-label="Select all rows"
18
+ />
19
+ </div>
20
+ `:p}
21
+ ${this.columns.map(i=>d`
22
+ <div
23
+ class="header-cell ${i.sortable?"sortable":""} ${this._sortKey===i.key?"sorted":""}"
24
+ role="columnheader"
25
+ aria-sort=${this._sortKey===i.key?this._sortDir==="asc"?"ascending":"descending":"none"}
26
+ style=${this._getColumnStyle(i)}
27
+ @click=${()=>this._handleSort(i)}
28
+ >
29
+ ${i.label}
30
+ <span class=${this._sortArrowClass(i)}>${this._sortArrow(i)}</span>
31
+ ${this.resizable?d`<div class="resize-handle" @pointerdown=${h=>this._handleResizeStart(i,h)}></div>`:p}
32
+ </div>
33
+ `)}
34
+ </div>
35
+ ${t.map(i=>{const h=this._getRowId(i),u=this._expandedIds.has(h);return d`
36
+ <div class="grid-row focusable" role="row" tabindex="0"
37
+ @click=${l=>this._handleRowClick(i,l)}
38
+ @keydown=${l=>this._handleRowKeydown(i,l)}>
39
+ ${this.expandable?d`
40
+ <div class="expand-cell cell" role="cell">
41
+ <button
42
+ class="expand-btn ${u?"expand-btn--open":""}"
43
+ aria-expanded=${u?"true":"false"}
44
+ aria-label=${u?"Collapse row":"Expand row"}
45
+ @click=${l=>this._toggleExpand(i,l)}
46
+ >\u25B6</button>
47
+ </div>
48
+ `:p}
49
+ ${this.selectable?d`
50
+ <div class="checkbox-cell cell" role="cell">
51
+ <input
52
+ type="checkbox"
53
+ .checked=${this._selectedIds.has(this._getRowId(i))}
54
+ @change=${l=>this._handleCheckboxChange(i,l)}
55
+ aria-label="Select row"
56
+ />
57
+ </div>
58
+ `:p}
59
+ ${this.columns.map(l=>{const v=this._getCellValue(i,l.key),b=l.render?l.render(v,i):v;return d`<div class="cell" role="cell" style=${this._getColumnStyle(l)}>${b}</div>`})}
60
+ </div>
61
+ ${u&&this.expandRenderer?d`<div class="expanded-content" role="region" aria-label="Row details">${this.expandRenderer(i)}</div>`:p}
62
+ `})}
63
+ </div>
64
+ </div>
65
+ <div class="pagination">
66
+ <span class="pagination-info">${r}-${s} of ${this.rows.length}</span>
67
+ <div class="pagination-controls">
68
+ <button
69
+ class="page-btn"
70
+ ?disabled=${this._page===0}
71
+ @click=${this._handlePrev}
72
+ aria-label="Previous page"
73
+ >
74
+ Prev
75
+ </button>
76
+ <button
77
+ class="page-btn"
78
+ ?disabled=${this._page>=e-1}
79
+ @click=${this._handleNext}
80
+ aria-label="Next page"
81
+ >
82
+ Next
83
+ </button>
84
+ </div>
85
+ </div>
86
+ </div>
87
+ `}};o.styles=[_,x,y`
88
+ :host {
89
+ display: block;
90
+ }
91
+
92
+ .table-container {
93
+ background: var(--ic-surface);
94
+ border: 1px solid var(--ic-border);
95
+ border-radius: var(--ic-radius-lg);
96
+ overflow: hidden;
97
+ }
98
+
99
+ .table-wrapper {
100
+ overflow-x: auto;
101
+ overflow-y: auto;
102
+ max-height: var(--table-max-height, none);
103
+ }
104
+
105
+ .grid-header {
106
+ display: flex;
107
+ background: var(--ic-bg);
108
+ position: sticky;
109
+ top: 0;
110
+ z-index: 1;
111
+ }
112
+
113
+ .header-cell {
114
+ padding: var(--ic-space-sm) var(--ic-space-md);
115
+ text-transform: uppercase;
116
+ font-size: var(--ic-text-xs);
117
+ color: var(--ic-text-muted);
118
+ letter-spacing: 0.05em;
119
+ font-weight: 600;
120
+ text-align: left;
121
+ white-space: nowrap;
122
+ user-select: none;
123
+ flex: 1;
124
+ min-width: 0;
125
+ position: relative;
126
+ }
127
+
128
+ .header-cell.sortable {
129
+ cursor: pointer;
130
+ }
131
+
132
+ .header-cell.sortable:hover {
133
+ color: var(--ic-text);
134
+ }
135
+
136
+ .header-cell.sorted {
137
+ color: var(--ic-accent);
138
+ }
139
+
140
+ .sort-indicator {
141
+ display: inline-block;
142
+ margin-left: 4px;
143
+ font-size: 10px;
144
+ }
145
+
146
+ .grid-row {
147
+ display: flex;
148
+ border-top: 1px solid var(--ic-border);
149
+ cursor: pointer;
150
+ transition: background var(--ic-transition);
151
+ }
152
+
153
+ .grid-row:hover {
154
+ background: var(--ic-surface-2);
155
+ }
156
+
157
+ .cell {
158
+ padding: var(--ic-space-sm) var(--ic-space-md);
159
+ color: var(--ic-text);
160
+ font-size: var(--ic-text-sm);
161
+ flex: 1;
162
+ min-width: 0;
163
+ overflow: hidden;
164
+ text-overflow: ellipsis;
165
+ }
166
+
167
+ .checkbox-cell {
168
+ width: 40px;
169
+ flex: none;
170
+ text-align: center;
171
+ display: flex;
172
+ align-items: center;
173
+ justify-content: center;
174
+ }
175
+
176
+ .expand-cell {
177
+ width: 36px;
178
+ flex: none;
179
+ display: flex;
180
+ align-items: center;
181
+ justify-content: center;
182
+ }
183
+
184
+ .expand-btn {
185
+ background: none;
186
+ border: none;
187
+ color: var(--ic-text-dim);
188
+ cursor: pointer;
189
+ padding: 4px;
190
+ font-size: 12px;
191
+ transition: transform 0.15s;
192
+ line-height: 1;
193
+ }
194
+
195
+ .expand-btn:hover {
196
+ color: var(--ic-text);
197
+ }
198
+
199
+ .expand-btn--open {
200
+ transform: rotate(90deg);
201
+ }
202
+
203
+ .expanded-content {
204
+ border-top: 1px solid var(--ic-border);
205
+ padding: var(--ic-space-md);
206
+ background: var(--ic-bg);
207
+ font-size: var(--ic-text-sm);
208
+ }
209
+
210
+ input[type="checkbox"] {
211
+ accent-color: var(--ic-accent);
212
+ cursor: pointer;
213
+ }
214
+
215
+ /* Resize handle */
216
+ .resize-handle {
217
+ position: absolute;
218
+ right: 0;
219
+ top: 0;
220
+ bottom: 0;
221
+ width: 4px;
222
+ cursor: col-resize;
223
+ background: transparent;
224
+ z-index: 2;
225
+ }
226
+
227
+ .resize-handle:hover {
228
+ background: var(--ic-border);
229
+ }
230
+
231
+ .pagination {
232
+ display: flex;
233
+ align-items: center;
234
+ justify-content: space-between;
235
+ padding: var(--ic-space-sm) var(--ic-space-md);
236
+ border-top: 1px solid var(--ic-border);
237
+ font-size: var(--ic-text-sm);
238
+ color: var(--ic-text-muted);
239
+ }
240
+
241
+ .pagination-info {
242
+ font-size: var(--ic-text-xs);
243
+ }
244
+
245
+ .pagination-controls {
246
+ display: flex;
247
+ gap: var(--ic-space-sm);
248
+ }
249
+
250
+ .page-btn {
251
+ background: transparent;
252
+ border: none;
253
+ color: var(--ic-text-muted);
254
+ cursor: pointer;
255
+ padding: var(--ic-space-xs) var(--ic-space-sm);
256
+ border-radius: var(--ic-radius-sm);
257
+ font-family: inherit;
258
+ font-size: var(--ic-text-sm);
259
+ transition: color var(--ic-transition);
260
+ }
261
+
262
+ .page-btn:hover:not(:disabled) {
263
+ color: var(--ic-text);
264
+ }
265
+
266
+ .page-btn:disabled {
267
+ opacity: 0.4;
268
+ cursor: not-allowed;
269
+ }
270
+
271
+ .empty-message {
272
+ padding: var(--ic-space-xl);
273
+ text-align: center;
274
+ color: var(--ic-text-muted);
275
+ font-size: var(--ic-text-sm);
276
+ }
277
+ `];n([c({type:Array})],o.prototype,"columns",2);n([c({type:Array})],o.prototype,"rows",2);n([c({type:Number})],o.prototype,"pageSize",2);n([c({type:Boolean})],o.prototype,"selectable",2);n([c()],o.prototype,"emptyMessage",2);n([c({type:Boolean})],o.prototype,"resizable",2);n([c({type:Boolean})],o.prototype,"expandable",2);n([c({attribute:!1})],o.prototype,"expandRenderer",2);n([g()],o.prototype,"_sortKey",2);n([g()],o.prototype,"_sortDir",2);n([g()],o.prototype,"_page",2);n([g()],o.prototype,"_selectedIds",2);n([g()],o.prototype,"_columnWidths",2);n([g()],o.prototype,"_expandedIds",2);o=n([m("ic-data-table")],o);
@@ -0,0 +1,67 @@
1
+ import{w as o,s as u,f as p,i as h,n as m,a as f,A as n,b as d,t as w}from"./index-CEcM1R_C.js";import"./ic-tag-CPPUnDLF.js";import"./ic-relative-time-3FqpjeAI.js";var y=Object.defineProperty,k=Object.getOwnPropertyDescriptor,v=(e,t,r,l)=>{for(var s=l>1?void 0:l?k(t,r):t,c=e.length-1,a;c>=0;c--)(a=e[c])&&(s=(l?a(t,r,s):a(s))||s);return l&&s&&y(t,r,s),s};const g=o`<path d="M20 6L9 17l-5-5" stroke="var(--ic-success)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>`,b=o`<path d="M18 6L6 18M6 6l12 12" stroke="var(--ic-error)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>`,_=o`<circle cx="12" cy="12" r="10" stroke="var(--ic-warning)" stroke-width="2" fill="none"/><path d="M12 6v6l4 2" stroke="var(--ic-warning)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" fill="none"/>`;let i=class extends f{constructor(){super(...arguments),this.trace=null}_handleClick(){this.trace&&this.dispatchEvent(new CustomEvent("trace-click",{detail:this.trace.traceId,bubbles:!0,composed:!0}))}_handleKeyDown(e){(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this._handleClick())}_renderStatusIcon(){if(!this.trace)return n;const t={success:{icon:g,label:"Success"},failed:{icon:b,label:"Failed"},timeout:{icon:_,label:"Timeout"}}[this.trace.status];return t?d`
2
+ <svg
3
+ class="status-icon"
4
+ viewBox="0 0 24 24"
5
+ aria-label=${t.label}
6
+ role="img"
7
+ >${t.icon}</svg>
8
+ `:n}render(){if(!this.trace)return n;const e=this.trace,t=e.messagePreview.length>40?e.messagePreview.slice(0,40)+"...":e.messagePreview,r=e.latencyMs!=null?`${e.latencyMs}ms`:"--";return d`
9
+ <div
10
+ class="row"
11
+ role="row"
12
+ tabindex="0"
13
+ @click=${this._handleClick}
14
+ @keydown=${this._handleKeyDown}
15
+ >
16
+ <div class="cell" role="cell">
17
+ <ic-relative-time .timestamp=${e.timestamp}></ic-relative-time>
18
+ </div>
19
+ <div class="cell" role="cell">
20
+ <ic-tag variant=${e.channelType}>${e.channelType}</ic-tag>
21
+ </div>
22
+ <div class="cell cell-message" role="cell">${t}</div>
23
+ <div class="cell" role="cell">${this._renderStatusIcon()}</div>
24
+ <div class="cell cell-latency" role="cell">${r}</div>
25
+ <div class="cell" role="cell">${e.stepCount}</div>
26
+ </div>
27
+ `}};i.styles=[u,p,h`
28
+ :host {
29
+ display: contents;
30
+ }
31
+
32
+ .row {
33
+ display: contents;
34
+ cursor: pointer;
35
+ }
36
+
37
+ .row:hover .cell {
38
+ background: var(--ic-surface-2, #1f2937);
39
+ }
40
+
41
+ .cell {
42
+ padding: var(--ic-space-xs) var(--ic-space-sm);
43
+ display: flex;
44
+ align-items: center;
45
+ font-size: var(--ic-text-sm);
46
+ border-bottom: 1px solid var(--ic-border);
47
+ transition: background var(--ic-transition);
48
+ }
49
+
50
+ .cell-message {
51
+ color: var(--ic-text-dim);
52
+ overflow: hidden;
53
+ text-overflow: ellipsis;
54
+ white-space: nowrap;
55
+ max-width: 20rem;
56
+ }
57
+
58
+ .cell-latency {
59
+ font-family: var(--ic-font-mono, ui-monospace, monospace);
60
+ }
61
+
62
+ .status-icon {
63
+ width: 20px;
64
+ height: 20px;
65
+ flex-shrink: 0;
66
+ }
67
+ `];v([m({attribute:!1})],i.prototype,"trace",2);i=v([w("ic-delivery-row")],i);
@@ -0,0 +1,116 @@
1
+ import{s as c,f as p,i as h,n as d,a as v,A as f,b as u,t as b}from"./index-CEcM1R_C.js";var y=Object.defineProperty,m=Object.getOwnPropertyDescriptor,a=(e,t,r,i)=>{for(var n=i>1?void 0:i?m(t,r):t,l=e.length-1,s;l>=0;l--)(s=e[l])&&(n=(i?s(t,r,n):s(n))||n);return i&&n&&y(t,r,n),n};let o=class extends v{constructor(){super(...arguments),this.open=!1,this.panelTitle="Detail",this.width="min(32rem, 90vw)",this._boundKeyHandler=null}updated(e){e.has("open")&&(this.open?(this._boundKeyHandler=t=>this._handleKeyDown(t),document.addEventListener("keydown",this._boundKeyHandler),this.updateComplete.then(()=>{this.shadowRoot?.querySelector(".close-btn")?.focus()})):this._boundKeyHandler&&(document.removeEventListener("keydown",this._boundKeyHandler),this._boundKeyHandler=null))}disconnectedCallback(){super.disconnectedCallback(),this._boundKeyHandler&&(document.removeEventListener("keydown",this._boundKeyHandler),this._boundKeyHandler=null)}_handleKeyDown(e){e.key==="Escape"&&(e.preventDefault(),this._fireClose())}_handleOverlayClick(){this._fireClose()}_fireClose(){this.dispatchEvent(new CustomEvent("close",{bubbles:!0}))}render(){return this.open?u`
2
+ <div class="overlay" @click=${this._handleOverlayClick}></div>
3
+ <div
4
+ class="panel"
5
+ role="complementary"
6
+ aria-label=${this.panelTitle}
7
+ style="width: ${this.width}"
8
+ >
9
+ <div class="panel-header">
10
+ <h2 class="panel-title">${this.panelTitle}</h2>
11
+ <button
12
+ class="close-btn"
13
+ @click=${this._fireClose}
14
+ aria-label="Close panel"
15
+ >
16
+ &#x2715;
17
+ </button>
18
+ </div>
19
+ <div class="panel-body">
20
+ <slot></slot>
21
+ </div>
22
+ <div class="panel-footer">
23
+ <slot name="footer"></slot>
24
+ </div>
25
+ </div>
26
+ `:f}};o.styles=[c,p,h`
27
+ :host {
28
+ display: contents;
29
+ }
30
+
31
+ .overlay {
32
+ position: fixed;
33
+ inset: 0;
34
+ background: rgba(0, 0, 0, 0.5);
35
+ z-index: 9998;
36
+ }
37
+
38
+ .panel {
39
+ position: fixed;
40
+ top: 0;
41
+ right: 0;
42
+ bottom: 0;
43
+ background: var(--ic-surface);
44
+ border-left: 1px solid var(--ic-border);
45
+ z-index: 9999;
46
+ display: flex;
47
+ flex-direction: column;
48
+ box-shadow: var(--ic-shadow-lg);
49
+ animation: slide-in var(--ic-transition-slow) ease-out;
50
+ }
51
+
52
+ @keyframes slide-in {
53
+ from {
54
+ transform: translateX(100%);
55
+ }
56
+ to {
57
+ transform: translateX(0);
58
+ }
59
+ }
60
+
61
+ @media (prefers-reduced-motion: reduce) {
62
+ .panel {
63
+ animation: none;
64
+ }
65
+ }
66
+
67
+ .panel-header {
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: space-between;
71
+ padding: var(--ic-space-md) var(--ic-space-lg);
72
+ border-bottom: 1px solid var(--ic-border);
73
+ flex-shrink: 0;
74
+ }
75
+
76
+ .panel-title {
77
+ font-size: var(--ic-text-lg);
78
+ font-weight: 600;
79
+ color: var(--ic-text);
80
+ margin: 0;
81
+ }
82
+
83
+ .close-btn {
84
+ background: transparent;
85
+ border: none;
86
+ color: var(--ic-text-muted);
87
+ cursor: pointer;
88
+ padding: var(--ic-space-xs);
89
+ border-radius: var(--ic-radius-sm);
90
+ font-size: var(--ic-text-lg);
91
+ font-family: inherit;
92
+ line-height: 1;
93
+ transition: color var(--ic-transition);
94
+ }
95
+
96
+ .close-btn:hover {
97
+ color: var(--ic-text);
98
+ }
99
+
100
+ .panel-body {
101
+ flex: 1;
102
+ overflow-y: auto;
103
+ padding: var(--ic-space-lg);
104
+ }
105
+
106
+ .panel-footer {
107
+ border-top: 1px solid var(--ic-border);
108
+ padding: var(--ic-space-md) var(--ic-space-lg);
109
+ flex-shrink: 0;
110
+ }
111
+
112
+ /* Hide footer slot wrapper when no content slotted */
113
+ .panel-footer:empty {
114
+ display: none;
115
+ }
116
+ `];a([d({type:Boolean,reflect:!0})],o.prototype,"open",2);a([d()],o.prototype,"panelTitle",2);a([d()],o.prototype,"width",2);o=a([b("ic-detail-panel")],o);
@@ -0,0 +1,52 @@
1
+ import{s as d,f as v,i as g,n as p,a as f,A as m,b as n,t as x}from"./index-CEcM1R_C.js";import"./ic-icon-xeGTVhVG.js";var y=Object.defineProperty,h=Object.getOwnPropertyDescriptor,a=(l,i,c,t)=>{for(var e=t>1?void 0:t?h(i,c):i,r=l.length-1,o;r>=0;r--)(o=l[r])&&(e=(t?o(i,c,e):o(e))||e);return t&&e&&y(i,c,e),e};let s=class extends f{constructor(){super(...arguments),this.message="No items to display",this.description="",this.icon=""}render(){return n`
2
+ <div class="container">
3
+ ${this.icon?n`
4
+ <div class="icon-area">
5
+ <ic-icon
6
+ name=${this.icon}
7
+ size="48px"
8
+ color="var(--ic-text-dim)"
9
+ ></ic-icon>
10
+ </div>
11
+ `:m}
12
+ <p class="message">${this.message}</p>
13
+ ${this.description?n`<p class="description">${this.description}</p>`:m}
14
+ <div class="action-area">
15
+ <slot></slot>
16
+ </div>
17
+ </div>
18
+ `}};s.styles=[d,v,g`
19
+ :host {
20
+ display: block;
21
+ }
22
+
23
+ .container {
24
+ display: flex;
25
+ flex-direction: column;
26
+ align-items: center;
27
+ justify-content: center;
28
+ padding: var(--ic-space-2xl) var(--ic-space-md);
29
+ text-align: center;
30
+ gap: var(--ic-space-sm);
31
+ }
32
+
33
+ .icon-area {
34
+ margin-bottom: var(--ic-space-xs);
35
+ }
36
+
37
+ .message {
38
+ color: var(--ic-text-muted);
39
+ font-size: var(--ic-text-base);
40
+ margin: 0;
41
+ }
42
+
43
+ .description {
44
+ color: var(--ic-text-dim);
45
+ font-size: var(--ic-text-sm);
46
+ margin: 0;
47
+ }
48
+
49
+ .action-area {
50
+ margin-top: var(--ic-space-sm);
51
+ }
52
+ `];a([p()],s.prototype,"message",2);a([p()],s.prototype,"description",2);a([p()],s.prototype,"icon",2);s=a([x("ic-empty-state")],s);