comisai 1.0.23 → 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 (106) hide show
  1. package/node_modules/@comis/agent/dist/executor/pi-executor.js +17 -0
  2. package/node_modules/@comis/agent/dist/index.d.ts +2 -1
  3. package/node_modules/@comis/agent/dist/index.js +1 -1
  4. package/node_modules/@comis/agent/dist/model/auth-storage-adapter.d.ts +21 -0
  5. package/node_modules/@comis/agent/dist/model/auth-storage-adapter.js +15 -1
  6. package/node_modules/@comis/agent/dist/model/model-registry-adapter.d.ts +46 -0
  7. package/node_modules/@comis/agent/dist/model/model-registry-adapter.js +108 -0
  8. package/node_modules/@comis/agent/package.json +1 -1
  9. package/node_modules/@comis/channels/package.json +1 -1
  10. package/node_modules/@comis/cli/package.json +1 -1
  11. package/node_modules/@comis/core/dist/bootstrap.js +5 -0
  12. package/node_modules/@comis/core/dist/config/env-layer.d.ts +31 -0
  13. package/node_modules/@comis/core/dist/config/env-layer.js +41 -0
  14. package/node_modules/@comis/core/dist/config/layered.d.ts +9 -0
  15. package/node_modules/@comis/core/dist/config/layered.js +11 -0
  16. package/node_modules/@comis/core/package.json +1 -1
  17. package/node_modules/@comis/daemon/dist/daemon.js +3 -0
  18. package/node_modules/@comis/daemon/dist/wiring/setup-agents.js +15 -3
  19. package/node_modules/@comis/daemon/package.json +1 -1
  20. package/node_modules/@comis/gateway/package.json +1 -1
  21. package/node_modules/@comis/infra/package.json +1 -1
  22. package/node_modules/@comis/memory/package.json +1 -1
  23. package/node_modules/@comis/scheduler/package.json +1 -1
  24. package/node_modules/@comis/shared/package.json +1 -1
  25. package/node_modules/@comis/skills/package.json +1 -1
  26. package/node_modules/@comis/web/dist/assets/{agent-detail-BG9MGWWj.js → agent-detail-ru-AhppM.js} +270 -270
  27. package/node_modules/@comis/web/dist/assets/agent-editor-hjwRuFVp.js +2173 -0
  28. package/node_modules/@comis/web/dist/assets/{agent-list-LHCJ4rw2.js → agent-list-6Uotjatr.js} +170 -170
  29. package/node_modules/@comis/web/dist/assets/{approvals-q9VH_IKr.js → approvals-C-K6hN2U.js} +13 -13
  30. package/node_modules/@comis/web/dist/assets/billing-view-CxysXH0p.js +375 -0
  31. package/node_modules/@comis/web/dist/assets/{channel-detail-CaInesJM.js → channel-detail-BBCKtmne.js} +265 -265
  32. package/node_modules/@comis/web/dist/assets/channel-list-FkfeOLBQ.js +323 -0
  33. package/node_modules/@comis/web/dist/assets/{chat-console-CNmzl0JW.js → chat-console-BumBaIgO.js} +243 -246
  34. package/node_modules/@comis/web/dist/assets/{config-editor-DX4ITw6y.js → config-editor-C9BSwHGy.js} +477 -477
  35. package/node_modules/@comis/web/dist/assets/{context-dag-browser-BwiaF5tf.js → context-dag-browser-BHm00mJD.js} +105 -105
  36. package/node_modules/@comis/web/dist/assets/{context-engine-BZ5Am6hA.js → context-engine-BENY3pWE.js} +136 -136
  37. package/node_modules/@comis/web/dist/assets/decorate-BvWYovGE.js +38 -0
  38. package/node_modules/@comis/web/dist/assets/{delivery-view-OfBZof-m.js → delivery-view-BCnkPsAp.js} +134 -134
  39. package/node_modules/@comis/web/dist/assets/{diagnostics-view-YFwCxgr2.js → diagnostics-view-C_jQFG2H.js} +82 -82
  40. package/node_modules/@comis/web/dist/assets/directive-BOYXJ-K-.js +1 -0
  41. package/node_modules/@comis/web/dist/assets/{extract-variables-BM5qyK-s.js → extract-variables-B7-Doo7l.js} +39 -39
  42. package/node_modules/@comis/web/dist/assets/{ic-array-editor-B7m6x7-S.js → ic-array-editor-BLoEyeLS.js} +29 -29
  43. package/node_modules/@comis/web/dist/assets/{ic-breadcrumb-CUMpp3BL.js → ic-breadcrumb-DqN6G3gc.js} +16 -16
  44. package/node_modules/@comis/web/dist/assets/{ic-budget-segment-bar-BtJ6x5mN.js → ic-budget-segment-bar-zLsMzjDO.js} +20 -20
  45. package/node_modules/@comis/web/dist/assets/ic-chat-message-FdQcZsSQ.js +352 -0
  46. package/node_modules/@comis/web/dist/assets/{ic-confirm-dialog-CCDbB04e.js → ic-confirm-dialog-DGlPbV1T.js} +26 -26
  47. package/node_modules/@comis/web/dist/assets/{ic-connection-dot-CnT1b8xr.js → ic-connection-dot-BgYiK2N4.js} +13 -13
  48. package/node_modules/@comis/web/dist/assets/ic-data-table-CKIvr-ag.js +277 -0
  49. package/node_modules/@comis/web/dist/assets/ic-delivery-row-B3YwjjuM.js +67 -0
  50. package/node_modules/@comis/web/dist/assets/{ic-detail-panel-BF83r-if.js → ic-detail-panel-DiCe4hLr.js} +27 -27
  51. package/node_modules/@comis/web/dist/assets/{ic-empty-state-60l2ePhd.js → ic-empty-state-CM3Wbj2f.js} +19 -19
  52. package/node_modules/@comis/web/dist/assets/ic-graph-canvas-ByRjij68.js +359 -0
  53. package/node_modules/@comis/web/dist/assets/ic-icon-BGNCCPpZ.js +33 -0
  54. package/node_modules/@comis/web/dist/assets/{ic-layer-waterfall-COvEYMg5.js → ic-layer-waterfall-WkaFyu-l.js} +18 -18
  55. package/node_modules/@comis/web/dist/assets/ic-relative-time-B3UAnTqg.js +12 -0
  56. package/node_modules/@comis/web/dist/assets/{ic-search-input-CSOxY9g7.js → ic-search-input-B02AGw1i.js} +22 -22
  57. package/node_modules/@comis/web/dist/assets/{ic-select-Ce-Raudx.js → ic-select-BqfZISjw.js} +29 -29
  58. package/node_modules/@comis/web/dist/assets/ic-tabs-yBjkWKJH.js +95 -0
  59. package/node_modules/@comis/web/dist/assets/ic-tag-CvMVQFRR.js +33 -0
  60. package/node_modules/@comis/web/dist/assets/{ic-time-range-picker-CypCT68y.js → ic-time-range-picker-DXbYeBmY.js} +31 -31
  61. package/node_modules/@comis/web/dist/assets/{ic-tool-call-7MaXSsCW.js → ic-tool-call-DMPHsLyx.js} +51 -51
  62. package/node_modules/@comis/web/dist/assets/index-CVEaS9aY.css +2 -0
  63. package/node_modules/@comis/web/dist/assets/index-FLPhHz8p.js +2792 -0
  64. package/node_modules/@comis/web/dist/assets/{mcp-management-BNZPnpDn.js → mcp-management-5jyScQis.js} +209 -209
  65. package/node_modules/@comis/web/dist/assets/{media-config-BBvTYxOX.js → media-config-J9oT9PPs.js} +154 -154
  66. package/node_modules/@comis/web/dist/assets/{media-test-BkK3RCRK.js → media-test-DGTCtM8-.js} +259 -259
  67. package/node_modules/@comis/web/dist/assets/{memory-inspector-1hDGCGat.js → memory-inspector-D5Re9ptG.js} +450 -450
  68. package/node_modules/@comis/web/dist/assets/{message-center-CXefwsUu.js → message-center-cRLK6ZmG.js} +290 -290
  69. package/node_modules/@comis/web/dist/assets/{models-C1qcU_j3.js → models-D5vu07MR.js} +371 -371
  70. package/node_modules/@comis/web/dist/assets/observability-types-D0tkwElU.js +1 -0
  71. package/node_modules/@comis/web/dist/assets/{observe-view-C0VBhX4C.js → observe-view-CalNNEmd.js} +399 -399
  72. package/node_modules/@comis/web/dist/assets/pipeline-builder-DUYDGwZf.js +1495 -0
  73. package/node_modules/@comis/web/dist/assets/{pipeline-history-DkfOQ6SW.js → pipeline-history-BAO8brOe.js} +124 -124
  74. package/node_modules/@comis/web/dist/assets/{pipeline-history-detail-hyHgD0ai.js → pipeline-history-detail-DectIoQt.js} +65 -65
  75. package/node_modules/@comis/web/dist/assets/{pipeline-list-BPW8hV-q.js → pipeline-list-BHlaBKww.js} +227 -227
  76. package/node_modules/@comis/web/dist/assets/{pipeline-monitor-Bip16T7e.js → pipeline-monitor-BhtpNEHf.js} +298 -298
  77. package/node_modules/@comis/web/dist/assets/{scheduler-BGgwKd06.js → scheduler-VafN_8xi.js} +486 -486
  78. package/node_modules/@comis/web/dist/assets/{security-D15st4xx.js → security-QQXMRTlo.js} +389 -389
  79. package/node_modules/@comis/web/dist/assets/{session-detail-SGEYNJ0M.js → session-detail-BpZ_8Yih.js} +294 -294
  80. package/node_modules/@comis/web/dist/assets/session-key-parser-Dkqcj2Ss.js +1 -0
  81. package/node_modules/@comis/web/dist/assets/session-list-DfCm8Cec.js +231 -0
  82. package/node_modules/@comis/web/dist/assets/{setup-wizard-nT0tz9QP.js → setup-wizard-C-z477CG.js} +486 -494
  83. package/node_modules/@comis/web/dist/assets/{skills-D8yVfSUy.js → skills-BCOGPf6s.js} +329 -329
  84. package/node_modules/@comis/web/dist/assets/{subagents-HHXMeHYo.js → subagents-l-auUraL.js} +74 -74
  85. package/node_modules/@comis/web/dist/assets/{workspace-manager-BQlr10iH.js → workspace-manager-DlvBixiq.js} +236 -236
  86. package/node_modules/@comis/web/dist/index.html +3 -2
  87. package/node_modules/@comis/web/package.json +1 -1
  88. package/package.json +15 -15
  89. package/node_modules/@comis/web/dist/assets/agent-editor-C26Q_xCs.js +0 -2173
  90. package/node_modules/@comis/web/dist/assets/billing-view-CtYvBqTE.js +0 -375
  91. package/node_modules/@comis/web/dist/assets/channel-list-B8dj3O9a.js +0 -323
  92. package/node_modules/@comis/web/dist/assets/directive-DoeGSK_T.js +0 -1
  93. package/node_modules/@comis/web/dist/assets/ic-chat-message-CFyDJd0z.js +0 -352
  94. package/node_modules/@comis/web/dist/assets/ic-data-table-CKUNTxHw.js +0 -277
  95. package/node_modules/@comis/web/dist/assets/ic-delivery-row-GP5Fkygs.js +0 -67
  96. package/node_modules/@comis/web/dist/assets/ic-graph-canvas-C8FuSMe1.js +0 -359
  97. package/node_modules/@comis/web/dist/assets/ic-icon-xeGTVhVG.js +0 -33
  98. package/node_modules/@comis/web/dist/assets/ic-relative-time-3FqpjeAI.js +0 -12
  99. package/node_modules/@comis/web/dist/assets/ic-tabs-B7QtM_v8.js +0 -95
  100. package/node_modules/@comis/web/dist/assets/ic-tag-CPPUnDLF.js +0 -33
  101. package/node_modules/@comis/web/dist/assets/index-CEcM1R_C.js +0 -2830
  102. package/node_modules/@comis/web/dist/assets/index-CIJFuItj.css +0 -1
  103. package/node_modules/@comis/web/dist/assets/observability-types-D7jUtSde.js +0 -1
  104. package/node_modules/@comis/web/dist/assets/pipeline-builder-DcUUIrm0.js +0 -1496
  105. package/node_modules/@comis/web/dist/assets/session-key-parser-DPORMVyU.js +0 -1
  106. package/node_modules/@comis/web/dist/assets/session-list-6ybUTxbY.js +0 -231
@@ -1,172 +1,4 @@
1
- import{a as v,S as f,b as a,I as p,A as u,s as _,f as w,i as z,n as g,r as l,t as y}from"./index-CEcM1R_C.js";import"./ic-data-table-CKUNTxHw.js";import"./ic-tag-CPPUnDLF.js";import"./ic-search-input-CSOxY9g7.js";import"./ic-confirm-dialog-CCDbB04e.js";import"./ic-empty-state-60l2ePhd.js";import"./ic-icon-xeGTVhVG.js";var x=Object.defineProperty,$=Object.getOwnPropertyDescriptor,n=(e,t,o,i)=>{for(var r=i>1?void 0:i?$(t,o):t,d=e.length-1,c;d>=0;d--)(c=e[d])&&(r=(i?c(t,o,r):c(r))||r);return i&&r&&x(t,o,r),r};const C={active:"success",idle:"info",suspended:"warning",error:"error"},k={active:"Active",idle:"Idle",suspended:"Suspended",error:"Error"},S=[{value:"active",label:"Active",color:"var(--ic-success)"},{value:"idle",label:"Idle",color:"var(--ic-info)"},{value:"suspended",label:"Suspended",color:"var(--ic-warning)"},{value:"error",label:"Error",color:"var(--ic-error)"}],A=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"}),T={minimal:"Read and write only. Safest option for restricted environments.",coding:"Common tools including web, memory, and file operations.",messaging:"Optimized for chat and messaging workflows.",supervisor:"Extended tools for agent orchestration and oversight.",full:"All available tools. Best for autonomous agents with broad capabilities."};let s=class extends v{constructor(){super(...arguments),this.apiClient=null,this.rpcClient=null,this.eventDispatcher=null,this._sse=null,this._reloadDebounce=null,this._agents=[],this._loadState="loading",this._error="",this._deleteTarget=null,this._actionPending="",this._searchQuery="",this._statusFilters=new Set,this._wizardOpen=!1,this._wizardStep=1,this._wizardError="",this._wizardCreating=!1,this._wizardAgentId="",this._wizardAgentName="",this._wizardProvider="anthropic",this._wizardModel="",this._wizardToolProfile="full",this._catalogProviders=[]}connectedCallback(){super.connectedCallback(),this._initSse(),this.rpcClient&&this._loadModelCatalog()}updated(e){e.has("apiClient")&&this.apiClient&&this._loadAgents(),e.has("rpcClient")&&this.rpcClient&&this._catalogProviders.length===0&&this._loadModelCatalog(),e.has("eventDispatcher")&&this.eventDispatcher&&!this._sse&&this._initSse()}disconnectedCallback(){super.disconnectedCallback(),this._reloadDebounce!==null&&(clearTimeout(this._reloadDebounce),this._reloadDebounce=null)}_initSse(){!this.eventDispatcher||this._sse||(this._sse=new f(this,this.eventDispatcher,{"observability:token_usage":()=>{this._scheduleReload()},"agent:hot_added":()=>{this._scheduleReload()},"agent:hot_removed":()=>{this._scheduleReload()}}))}_scheduleReload(e=300){this._reloadDebounce!==null&&clearTimeout(this._reloadDebounce),this._reloadDebounce=setTimeout(()=>{this._reloadDebounce=null,this._loadAgents()},e)}async _loadModelCatalog(){if(this.rpcClient)try{const e=await this.rpcClient.call("models.list");e.providers&&(this._catalogProviders=e.providers)}catch{}}_budgetColor(e){return e>=90?"var(--ic-error)":e>=70?"var(--ic-warning)":"var(--ic-success)"}_getColumns(){return[{key:"status",label:"Status",sortable:!0,width:"100px",render:(e,t)=>{const o=C[t.status]??"default",i=k[t.status]??t.status;return a`<ic-tag variant=${o}>${i}</ic-tag>`}},{key:"name",label:"Name",sortable:!0,render:(e,t)=>a`<span>${t.name??t.id}</span>`},{key:"model",label:"Model",sortable:!0,render:(e,t)=>a`<span style="font-family: ui-monospace, monospace; font-size: 0.8125rem; white-space: nowrap;">${t.model}</span>`},{key:"messagesToday",label:"Messages",sortable:!0,render:e=>a`<span style="font-family: ui-monospace, monospace; text-align: right; width: 100%; display: block;">${new Intl.NumberFormat("en-US").format(e)}</span>`},{key:"costToday",label:"Cost",sortable:!0,render:e=>{const t=e;return a`<span style="font-family: ui-monospace, monospace; text-align: right; width: 100%; display: block;">${t>0?A.format(t):"--"}</span>`}},{key:"budgetUtilization",label:"Budget",sortable:!0,render:e=>{const t=Math.min(100,Math.max(0,e));return t===0?a`<span style="font-family: ui-monospace, monospace; text-align: right; width: 100%; display: block;">--</span>`:a`
2
- <div style="display: flex; align-items: center; gap: 6px; width: 100%;">
3
- <div style="flex: 1; height: 4px; background: var(--ic-surface-2, #1f2937); border-radius: 2px; overflow: hidden;">
4
- <div style="height: 100%; border-radius: 2px; width: ${t}%; background: ${this._budgetColor(t)};"></div>
5
- </div>
6
- <span style="font-size: 0.75rem; font-family: ui-monospace, monospace; color: var(--ic-text-muted); min-width: 2.5rem; text-align: right;">${t}%</span>
7
- </div>
8
- `}},{key:"_actions",label:"Actions",sortable:!1,render:(e,t)=>{const o=t.suspended||t.status==="suspended",i=o?"play":"pause",r=o?"Resume agent":"Suspend agent",d="display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; background: transparent; border: 1px solid transparent; border-radius: 0.25rem; color: #9ca3af; cursor: pointer;";return a`
9
- <div style="display: flex; gap: 4px; justify-content: flex-end;">
10
- <button style=${d} aria-label="Configure ${t.id}" @click=${c=>{c.stopPropagation(),this._navigate(`agents/${t.id}/edit`)}}>
11
- <ic-icon name="settings" size="16px" color="#9ca3af"></ic-icon>
12
- </button>
13
- <button style=${d} aria-label=${r} @click=${c=>{c.stopPropagation(),this._handleSuspendResume(t,c)}}>
14
- <ic-icon name=${i} size="16px" color="#9ca3af"></ic-icon>
15
- </button>
16
- <button style=${d} aria-label="Delete ${t.id}" @click=${c=>{c.stopPropagation(),this._handleDeleteClick(t,c)}}>
17
- <ic-icon name="trash" size="16px" color="#f87171"></ic-icon>
18
- </button>
19
- </div>
20
- `}}]}async _loadAgents(){if(this.apiClient){this._loadState="loading",this._error="";try{const e=await this.apiClient.getAgents();this._agents=e.map(t=>({...t,costToday:0,budgetUtilization:0,suspended:t.status==="suspended",messagesToday:t.messagesToday??0})),this._loadState="loaded",this._enrichAgents(e).then(t=>{this._agents=t}).catch(()=>{})}catch(e){this._error=e instanceof Error?e.message:"Failed to load agents",this._loadState="error"}}}async _enrichAgents(e){if(!this.rpcClient||e.length===0)return e.map(r=>({...r,costToday:0,budgetUtilization:0,suspended:r.status==="suspended",messagesToday:r.messagesToday??0}));const t=e.slice(0,50),o=await Promise.allSettled(t.map(r=>this.rpcClient.call("obs.billing.byAgent",{agentId:r.id}))),i=new Map;for(let r=0;r<t.length;r++){const d=o[r];d.status==="fulfilled"&&d.value&&i.set(t[r].id,d.value)}return e.map(r=>{const d=i.get(r.id);let c=0;const h=d?.budgetUsed;h?.perDay?.used!==void 0&&h.perDay.limit&&(c=Math.round(h.perDay.used/h.perDay.limit*100));const m=Number(d?.costToday??d?.totalCost??0),b=Number(d?.messagesToday??r.messagesToday??0);return{...r,costToday:m,budgetUtilization:c,suspended:r.status==="suspended",messagesToday:b}})}_getFilteredAgents(){let e=this._agents;if(this._searchQuery){const t=this._searchQuery.toLowerCase();e=e.filter(o=>o.id.toLowerCase().includes(t)||(o.name??"").toLowerCase().includes(t))}return this._statusFilters.size>0&&(e=e.filter(t=>this._statusFilters.has(t.status))),e}_navigate(e){this.dispatchEvent(new CustomEvent("navigate",{detail:e,bubbles:!0,composed:!0}))}_handleSearch(e){this._searchQuery=e.detail}_handleFilterChange(e){this._statusFilters=e.detail.selected}async _handleSuspendResume(e,t){if(t.stopPropagation(),!this.rpcClient||this._actionPending)return;this._actionPending=e.id;const o=e.suspended||e.status==="suspended",i=o?"agents.resume":"agents.suspend",r=o?"resumed":"suspended";try{await this.rpcClient.call(i,{agentId:e.id}),p.show(`Agent ${e.id} ${r}`,"success"),await this._loadAgents()}catch(d){p.show(`Failed to ${o?"resume":"suspend"} agent: ${d instanceof Error?d.message:"Unknown error"}`,"error")}finally{this._actionPending=""}}_handleDeleteClick(e,t){t.stopPropagation(),this._deleteTarget=e}async _confirmDelete(){if(!this.rpcClient||!this._deleteTarget)return;const e=this._deleteTarget.id;this._deleteTarget=null;try{await this.rpcClient.call("agents.delete",{agentId:e}),p.show(`Agent ${e} deleted`,"success"),await this._loadAgents()}catch(t){p.show(`Failed to delete agent: ${t instanceof Error?t.message:"Unknown error"}`,"error")}}_cancelDelete(){this._deleteTarget=null}_openWizard(){this._wizardOpen=!0,this._wizardStep=1,this._wizardError="",this._wizardCreating=!1,this._wizardAgentId="",this._wizardAgentName="",this._wizardProvider="anthropic",this._wizardModel="",this._wizardToolProfile="full",this._catalogProviders.length===0&&this._loadModelCatalog(),this.updateComplete.then(()=>{this.shadowRoot?.querySelector(".wizard-dialog")?.showModal()})}_closeWizard(){this.shadowRoot?.querySelector(".wizard-dialog")?.close(),this._wizardOpen=!1}_wizardNext(){if(this._wizardStep===1){if(!this._wizardAgentId.match(/^[a-zA-Z0-9-]{3,50}$/)){this._wizardError="Agent ID must be 3-50 characters (letters, numbers, hyphens).";return}this._wizardError="",this._wizardStep=2}else if(this._wizardStep===2){if(!this._wizardModel.trim()){this._wizardError="Please select a model.";return}this._wizardError="",this._wizardStep=3}}_wizardBack(){this._wizardError="",this._wizardStep===2?this._wizardStep=1:this._wizardStep===3&&(this._wizardStep=2)}async _wizardCreate(){if(!(!this.rpcClient||this._wizardCreating)){this._wizardCreating=!0,this._wizardError="";try{await this.rpcClient.call("agents.create",{agentId:this._wizardAgentId,config:{name:this._wizardAgentName||void 0,provider:this._wizardProvider,model:this._wizardModel,skills:{toolPolicy:{profile:this._wizardToolProfile}}}}),p.show(`Agent ${this._wizardAgentId} created`,"success"),this._closeWizard(),this._navigate(`agents/${this._wizardAgentId}/edit`),await this._loadAgents()}catch(e){this._wizardError=e instanceof Error?e.message:"Failed to create agent"}finally{this._wizardCreating=!1}}}render(){return a`
21
- <div class="page-header" role="region" aria-label="Agents">
22
- <h1 class="page-title">Agents</h1>
23
- <button class="create-btn" @click=${this._openWizard}>
24
- <ic-icon name="plus" size="16px"></ic-icon>
25
- Create Agent
26
- </button>
27
- </div>
28
- ${this._renderContent()}
29
- ${this._deleteTarget?a`
30
- <ic-confirm-dialog
31
- open
32
- variant="danger"
33
- title="Delete Agent"
34
- message=${`Are you sure you want to delete agent ${this._deleteTarget.id}? This cannot be undone.`}
35
- confirmLabel="Delete"
36
- @confirm=${this._confirmDelete}
37
- @cancel=${this._cancelDelete}
38
- ></ic-confirm-dialog>
39
- `:u}
40
- ${this._wizardOpen?this._renderWizard():u}
41
- `}_renderContent(){switch(this._loadState){case"loading":return a`<ic-skeleton-view variant="list"></ic-skeleton-view>`;case"error":return a`
42
- <div class="error-container">
43
- <div class="error-message">${this._error}</div>
44
- <button class="retry-btn" @click=${()=>this._loadAgents()}>Retry</button>
45
- </div>
46
- `;case"loaded":return this._agents.length===0?a`
47
- <ic-empty-state
48
- icon="users"
49
- message="No agents configured"
50
- description="Create your first agent to start processing messages."
51
- >
52
- <button class="create-btn" @click=${this._openWizard}>
53
- <ic-icon name="plus" size="16px"></ic-icon>
54
- Create Agent
55
- </button>
56
- </ic-empty-state>
57
- `:this._renderTable()}}_renderTable(){const e=this._getFilteredAgents(),t=this._getColumns();return a`
58
- <div class="toolbar">
59
- <ic-search-input
60
- placeholder="Search agents..."
61
- @search=${this._handleSearch}
62
- ></ic-search-input>
63
- <ic-filter-chips
64
- .options=${S}
65
- .selected=${this._statusFilters}
66
- @filter-change=${this._handleFilterChange}
67
- ></ic-filter-chips>
68
- </div>
69
- <ic-data-table
70
- .columns=${t}
71
- .rows=${e}
72
- emptyMessage="No agents match your filters"
73
- @row-click=${o=>{this._navigate(`agents/${o.detail.id}`)}}
74
- ></ic-data-table>
75
- `}_renderWizard(){return a`
76
- <dialog class="wizard-dialog" @close=${this._closeWizard}>
77
- <div class="wizard-content">
78
- <div class="wizard-header">
79
- <h2 class="wizard-title">Create Agent</h2>
80
- <button class="wizard-close" @click=${this._closeWizard}>\u2715</button>
81
- </div>
82
-
83
- <div class="wizard-steps">
84
- ${[1,2,3].map(e=>a`
85
- <span
86
- class="step-dot ${e===this._wizardStep?"step-dot--active":""} ${e<this._wizardStep?"step-dot--done":""}"
87
- ></span>
88
- `)}
89
- <span class="step-label">Step ${this._wizardStep} of 3</span>
90
- </div>
91
-
92
- ${this._wizardError?a`<div class="wizard-error">${this._wizardError}</div>`:u}
93
-
94
- ${this._renderWizardStep()}
95
-
96
- <div class="wizard-footer">
97
- ${this._wizardStep>1?a`<button class="wizard-btn wizard-btn--secondary" @click=${this._wizardBack}>Back</button>`:a`<button class="wizard-btn wizard-btn--secondary" @click=${this._closeWizard}>Cancel</button>`}
98
- ${this._wizardStep<3?a`<button class="wizard-btn wizard-btn--primary" @click=${this._wizardNext}>Next</button>`:a`<button
99
- class="wizard-btn wizard-btn--primary"
100
- ?disabled=${this._wizardCreating}
101
- @click=${this._wizardCreate}
102
- >${this._wizardCreating?"Creating...":"Create Agent"}</button>`}
103
- </div>
104
- </div>
105
- </dialog>
106
- `}_renderWizardStep(){switch(this._wizardStep){case 1:return a`
107
- <div class="wizard-field">
108
- <label for="wizard-id">Agent ID</label>
109
- <input
110
- id="wizard-id"
111
- type="text"
112
- .value=${this._wizardAgentId}
113
- @input=${e=>{this._wizardAgentId=e.target.value}}
114
- placeholder="my-agent"
115
- required
116
- />
117
- <div class="hint">3-50 characters. Letters, numbers, and hyphens only.</div>
118
- </div>
119
- <div class="wizard-field">
120
- <label for="wizard-name">Display Name</label>
121
- <input
122
- id="wizard-name"
123
- type="text"
124
- .value=${this._wizardAgentName}
125
- @input=${e=>{this._wizardAgentName=e.target.value}}
126
- placeholder="My Agent (optional)"
127
- />
128
- </div>
129
- `;case 2:{const e=this._catalogProviders.length>0?this._catalogProviders.map(i=>({value:i.name,label:i.name.charAt(0).toUpperCase()+i.name.slice(1)})):[{value:"anthropic",label:"Anthropic"}],o=(this._catalogProviders.find(i=>i.name===this._wizardProvider)?.models??[]).map(i=>({id:i.modelId,label:i.displayName||i.modelId}));return a`
130
- <div class="wizard-field">
131
- <label for="wizard-provider">Provider</label>
132
- <select
133
- id="wizard-provider"
134
- .value=${this._wizardProvider}
135
- @change=${i=>{this._wizardProvider=i.target.value,this._wizardModel=""}}
136
- >
137
- ${e.map(i=>a`<option value=${i.value} ?selected=${i.value===this._wizardProvider}>${i.label}</option>`)}
138
- </select>
139
- </div>
140
- <div class="wizard-field">
141
- <label for="wizard-model">Model</label>
142
- <select
143
- id="wizard-model"
144
- .value=${this._wizardModel}
145
- @change=${i=>{this._wizardModel=i.target.value}}
146
- required
147
- >
148
- <option value="" disabled ?selected=${!this._wizardModel}>Select a model...</option>
149
- ${o.map(i=>a`<option value=${i.id} ?selected=${this._wizardModel===i.id}>${i.label}</option>`)}
150
- </select>
151
- <div class="hint">Model to use for this agent.</div>
152
- </div>
153
- `}case 3:return a`
154
- <div class="wizard-field">
155
- <label for="wizard-tools">Tool Policy Profile</label>
156
- <select
157
- id="wizard-tools"
158
- .value=${this._wizardToolProfile}
159
- @change=${e=>{this._wizardToolProfile=e.target.value}}
160
- >
161
- <option value="minimal">Minimal</option>
162
- <option value="coding">Coding</option>
163
- <option value="messaging">Messaging</option>
164
- <option value="supervisor">Supervisor</option>
165
- <option value="full">Full</option>
166
- </select>
167
- <div class="profile-desc">${T[this._wizardToolProfile]??""}</div>
168
- </div>
169
- `}}};s.styles=[_,w,z`
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,i as d}from"./index-FLPhHz8p.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-data-table-CKIvr-ag.js";import"./ic-search-input-B02AGw1i.js";import"./ic-icon-BGNCCPpZ.js";import"./ic-empty-state-CM3Wbj2f.js";var f={active:`success`,idle:`info`,suspended:`warning`,error:`error`},p={active:`Active`,idle:`Idle`,suspended:`Suspended`,error:`Error`},m=[{value:`active`,label:`Active`,color:`var(--ic-success)`},{value:`idle`,label:`Idle`,color:`var(--ic-info)`},{value:`suspended`,label:`Suspended`,color:`var(--ic-warning)`},{value:`error`,label:`Error`,color:`var(--ic-error)`}],h=new Intl.NumberFormat(`en-US`,{style:`currency`,currency:`USD`}),g={minimal:`Read and write only. Safest option for restricted environments.`,coding:`Common tools including web, memory, and file operations.`,messaging:`Optimized for chat and messaging workflows.`,supervisor:`Extended tools for agent orchestration and oversight.`,full:`All available tools. Best for autonomous agents with broad capabilities.`},_=class extends r{constructor(...e){super(...e),this.apiClient=null,this.rpcClient=null,this.eventDispatcher=null,this._sse=null,this._reloadDebounce=null,this._agents=[],this._loadState=`loading`,this._error=``,this._deleteTarget=null,this._actionPending=``,this._searchQuery=``,this._statusFilters=new Set,this._wizardOpen=!1,this._wizardStep=1,this._wizardError=``,this._wizardCreating=!1,this._wizardAgentId=``,this._wizardAgentName=``,this._wizardProvider=`anthropic`,this._wizardModel=``,this._wizardToolProfile=`full`,this._catalogProviders=[]}static{this.styles=[o,i,n`
170
2
  :host {
171
3
  display: block;
172
4
  }
@@ -501,4 +333,172 @@ import{a as v,S as f,b as a,I as p,A as u,s as _,f as w,i as z,n as g,r as l,t a
501
333
  opacity: 0.5;
502
334
  cursor: not-allowed;
503
335
  }
504
- `];n([g({attribute:!1})],s.prototype,"apiClient",2);n([g({attribute:!1})],s.prototype,"rpcClient",2);n([g({attribute:!1})],s.prototype,"eventDispatcher",2);n([l()],s.prototype,"_agents",2);n([l()],s.prototype,"_loadState",2);n([l()],s.prototype,"_error",2);n([l()],s.prototype,"_deleteTarget",2);n([l()],s.prototype,"_actionPending",2);n([l()],s.prototype,"_searchQuery",2);n([l()],s.prototype,"_statusFilters",2);n([l()],s.prototype,"_wizardOpen",2);n([l()],s.prototype,"_wizardStep",2);n([l()],s.prototype,"_wizardError",2);n([l()],s.prototype,"_wizardCreating",2);n([l()],s.prototype,"_wizardAgentId",2);n([l()],s.prototype,"_wizardAgentName",2);n([l()],s.prototype,"_wizardProvider",2);n([l()],s.prototype,"_wizardModel",2);n([l()],s.prototype,"_wizardToolProfile",2);n([l()],s.prototype,"_catalogProviders",2);s=n([y("ic-agent-list")],s);export{s as IcAgentList};
336
+ `]}connectedCallback(){super.connectedCallback(),this._initSse(),this.rpcClient&&this._loadModelCatalog()}updated(e){e.has(`apiClient`)&&this.apiClient&&this._loadAgents(),e.has(`rpcClient`)&&this.rpcClient&&this._catalogProviders.length===0&&this._loadModelCatalog(),e.has(`eventDispatcher`)&&this.eventDispatcher&&!this._sse&&this._initSse()}disconnectedCallback(){super.disconnectedCallback(),this._reloadDebounce!==null&&(clearTimeout(this._reloadDebounce),this._reloadDebounce=null)}_initSse(){!this.eventDispatcher||this._sse||(this._sse=new d(this,this.eventDispatcher,{"observability:token_usage":()=>{this._scheduleReload()},"agent:hot_added":()=>{this._scheduleReload()},"agent:hot_removed":()=>{this._scheduleReload()}}))}_scheduleReload(e=300){this._reloadDebounce!==null&&clearTimeout(this._reloadDebounce),this._reloadDebounce=setTimeout(()=>{this._reloadDebounce=null,this._loadAgents()},e)}async _loadModelCatalog(){if(this.rpcClient)try{let e=await this.rpcClient.call(`models.list`);e.providers&&(this._catalogProviders=e.providers)}catch{}}_budgetColor(e){return e>=90?`var(--ic-error)`:e>=70?`var(--ic-warning)`:`var(--ic-success)`}_getColumns(){return[{key:`status`,label:`Status`,sortable:!0,width:`100px`,render:(e,n)=>t`<ic-tag variant=${f[n.status]??`default`}>${p[n.status]??n.status}</ic-tag>`},{key:`name`,label:`Name`,sortable:!0,render:(e,n)=>t`<span>${n.name??n.id}</span>`},{key:`model`,label:`Model`,sortable:!0,render:(e,n)=>t`<span style="font-family: ui-monospace, monospace; font-size: 0.8125rem; white-space: nowrap;">${n.model}</span>`},{key:`messagesToday`,label:`Messages`,sortable:!0,render:e=>t`<span style="font-family: ui-monospace, monospace; text-align: right; width: 100%; display: block;">${new Intl.NumberFormat(`en-US`).format(e)}</span>`},{key:`costToday`,label:`Cost`,sortable:!0,render:e=>{let n=e;return t`<span style="font-family: ui-monospace, monospace; text-align: right; width: 100%; display: block;">${n>0?h.format(n):`--`}</span>`}},{key:`budgetUtilization`,label:`Budget`,sortable:!0,render:e=>{let n=Math.min(100,Math.max(0,e));return n===0?t`<span style="font-family: ui-monospace, monospace; text-align: right; width: 100%; display: block;">--</span>`:t`
337
+ <div style="display: flex; align-items: center; gap: 6px; width: 100%;">
338
+ <div style="flex: 1; height: 4px; background: var(--ic-surface-2, #1f2937); border-radius: 2px; overflow: hidden;">
339
+ <div style="height: 100%; border-radius: 2px; width: ${n}%; background: ${this._budgetColor(n)};"></div>
340
+ </div>
341
+ <span style="font-size: 0.75rem; font-family: ui-monospace, monospace; color: var(--ic-text-muted); min-width: 2.5rem; text-align: right;">${n}%</span>
342
+ </div>
343
+ `}},{key:`_actions`,label:`Actions`,sortable:!1,render:(e,n)=>{let r=n.suspended||n.status===`suspended`,i=r?`play`:`pause`,a=r?`Resume agent`:`Suspend agent`,o=`display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; background: transparent; border: 1px solid transparent; border-radius: 0.25rem; color: #9ca3af; cursor: pointer;`;return t`
344
+ <div style="display: flex; gap: 4px; justify-content: flex-end;">
345
+ <button style=${o} aria-label="Configure ${n.id}" @click=${e=>{e.stopPropagation(),this._navigate(`agents/${n.id}/edit`)}}>
346
+ <ic-icon name="settings" size="16px" color="#9ca3af"></ic-icon>
347
+ </button>
348
+ <button style=${o} aria-label=${a} @click=${e=>{e.stopPropagation(),this._handleSuspendResume(n,e)}}>
349
+ <ic-icon name=${i} size="16px" color="#9ca3af"></ic-icon>
350
+ </button>
351
+ <button style=${o} aria-label="Delete ${n.id}" @click=${e=>{e.stopPropagation(),this._handleDeleteClick(n,e)}}>
352
+ <ic-icon name="trash" size="16px" color="#f87171"></ic-icon>
353
+ </button>
354
+ </div>
355
+ `}}]}async _loadAgents(){if(this.apiClient){this._loadState=`loading`,this._error=``;try{let e=await this.apiClient.getAgents();this._agents=e.map(e=>({...e,costToday:0,budgetUtilization:0,suspended:e.status===`suspended`,messagesToday:e.messagesToday??0})),this._loadState=`loaded`,this._enrichAgents(e).then(e=>{this._agents=e}).catch(()=>{})}catch(e){this._error=e instanceof Error?e.message:`Failed to load agents`,this._loadState=`error`}}}async _enrichAgents(e){if(!this.rpcClient||e.length===0)return e.map(e=>({...e,costToday:0,budgetUtilization:0,suspended:e.status===`suspended`,messagesToday:e.messagesToday??0}));let t=e.slice(0,50),n=await Promise.allSettled(t.map(e=>this.rpcClient.call(`obs.billing.byAgent`,{agentId:e.id}))),r=new Map;for(let e=0;e<t.length;e++){let i=n[e];i.status===`fulfilled`&&i.value&&r.set(t[e].id,i.value)}return e.map(e=>{let t=r.get(e.id),n=0,i=t?.budgetUsed;i?.perDay?.used!==void 0&&i.perDay.limit&&(n=Math.round(i.perDay.used/i.perDay.limit*100));let a=Number(t?.costToday??t?.totalCost??0),o=Number(t?.messagesToday??e.messagesToday??0);return{...e,costToday:a,budgetUtilization:n,suspended:e.status===`suspended`,messagesToday:o}})}_getFilteredAgents(){let e=this._agents;if(this._searchQuery){let t=this._searchQuery.toLowerCase();e=e.filter(e=>e.id.toLowerCase().includes(t)||(e.name??``).toLowerCase().includes(t))}return this._statusFilters.size>0&&(e=e.filter(e=>this._statusFilters.has(e.status))),e}_navigate(e){this.dispatchEvent(new CustomEvent(`navigate`,{detail:e,bubbles:!0,composed:!0}))}_handleSearch(e){this._searchQuery=e.detail}_handleFilterChange(e){this._statusFilters=e.detail.selected}async _handleSuspendResume(e,t){if(t.stopPropagation(),!this.rpcClient||this._actionPending)return;this._actionPending=e.id;let n=e.suspended||e.status===`suspended`,r=n?`agents.resume`:`agents.suspend`,i=n?`resumed`:`suspended`;try{await this.rpcClient.call(r,{agentId:e.id}),u.show(`Agent ${e.id} ${i}`,`success`),await this._loadAgents()}catch(e){u.show(`Failed to ${n?`resume`:`suspend`} agent: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}finally{this._actionPending=``}}_handleDeleteClick(e,t){t.stopPropagation(),this._deleteTarget=e}async _confirmDelete(){if(!this.rpcClient||!this._deleteTarget)return;let e=this._deleteTarget.id;this._deleteTarget=null;try{await this.rpcClient.call(`agents.delete`,{agentId:e}),u.show(`Agent ${e} deleted`,`success`),await this._loadAgents()}catch(e){u.show(`Failed to delete agent: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}}_cancelDelete(){this._deleteTarget=null}_openWizard(){this._wizardOpen=!0,this._wizardStep=1,this._wizardError=``,this._wizardCreating=!1,this._wizardAgentId=``,this._wizardAgentName=``,this._wizardProvider=`anthropic`,this._wizardModel=``,this._wizardToolProfile=`full`,this._catalogProviders.length===0&&this._loadModelCatalog(),this.updateComplete.then(()=>{(this.shadowRoot?.querySelector(`.wizard-dialog`))?.showModal()})}_closeWizard(){(this.shadowRoot?.querySelector(`.wizard-dialog`))?.close(),this._wizardOpen=!1}_wizardNext(){if(this._wizardStep===1){if(!this._wizardAgentId.match(/^[a-zA-Z0-9-]{3,50}$/)){this._wizardError=`Agent ID must be 3-50 characters (letters, numbers, hyphens).`;return}this._wizardError=``,this._wizardStep=2}else if(this._wizardStep===2){if(!this._wizardModel.trim()){this._wizardError=`Please select a model.`;return}this._wizardError=``,this._wizardStep=3}}_wizardBack(){this._wizardError=``,this._wizardStep===2?this._wizardStep=1:this._wizardStep===3&&(this._wizardStep=2)}async _wizardCreate(){if(!(!this.rpcClient||this._wizardCreating)){this._wizardCreating=!0,this._wizardError=``;try{await this.rpcClient.call(`agents.create`,{agentId:this._wizardAgentId,config:{name:this._wizardAgentName||void 0,provider:this._wizardProvider,model:this._wizardModel,skills:{toolPolicy:{profile:this._wizardToolProfile}}}}),u.show(`Agent ${this._wizardAgentId} created`,`success`),this._closeWizard(),this._navigate(`agents/${this._wizardAgentId}/edit`),await this._loadAgents()}catch(e){this._wizardError=e instanceof Error?e.message:`Failed to create agent`}finally{this._wizardCreating=!1}}}render(){return t`
356
+ <div class="page-header" role="region" aria-label="Agents">
357
+ <h1 class="page-title">Agents</h1>
358
+ <button class="create-btn" @click=${this._openWizard}>
359
+ <ic-icon name="plus" size="16px"></ic-icon>
360
+ Create Agent
361
+ </button>
362
+ </div>
363
+ ${this._renderContent()}
364
+ ${this._deleteTarget?t`
365
+ <ic-confirm-dialog
366
+ open
367
+ variant="danger"
368
+ title="Delete Agent"
369
+ message=${`Are you sure you want to delete agent ${this._deleteTarget.id}? This cannot be undone.`}
370
+ confirmLabel="Delete"
371
+ @confirm=${this._confirmDelete}
372
+ @cancel=${this._cancelDelete}
373
+ ></ic-confirm-dialog>
374
+ `:l}
375
+ ${this._wizardOpen?this._renderWizard():l}
376
+ `}_renderContent(){switch(this._loadState){case`loading`:return t`<ic-skeleton-view variant="list"></ic-skeleton-view>`;case`error`:return t`
377
+ <div class="error-container">
378
+ <div class="error-message">${this._error}</div>
379
+ <button class="retry-btn" @click=${()=>this._loadAgents()}>Retry</button>
380
+ </div>
381
+ `;case`loaded`:return this._agents.length===0?t`
382
+ <ic-empty-state
383
+ icon="users"
384
+ message="No agents configured"
385
+ description="Create your first agent to start processing messages."
386
+ >
387
+ <button class="create-btn" @click=${this._openWizard}>
388
+ <ic-icon name="plus" size="16px"></ic-icon>
389
+ Create Agent
390
+ </button>
391
+ </ic-empty-state>
392
+ `:this._renderTable()}}_renderTable(){let e=this._getFilteredAgents(),n=this._getColumns();return t`
393
+ <div class="toolbar">
394
+ <ic-search-input
395
+ placeholder="Search agents..."
396
+ @search=${this._handleSearch}
397
+ ></ic-search-input>
398
+ <ic-filter-chips
399
+ .options=${m}
400
+ .selected=${this._statusFilters}
401
+ @filter-change=${this._handleFilterChange}
402
+ ></ic-filter-chips>
403
+ </div>
404
+ <ic-data-table
405
+ .columns=${n}
406
+ .rows=${e}
407
+ emptyMessage="No agents match your filters"
408
+ @row-click=${e=>{this._navigate(`agents/${e.detail.id}`)}}
409
+ ></ic-data-table>
410
+ `}_renderWizard(){return t`
411
+ <dialog class="wizard-dialog" @close=${this._closeWizard}>
412
+ <div class="wizard-content">
413
+ <div class="wizard-header">
414
+ <h2 class="wizard-title">Create Agent</h2>
415
+ <button class="wizard-close" @click=${this._closeWizard}>\u2715</button>
416
+ </div>
417
+
418
+ <div class="wizard-steps">
419
+ ${[1,2,3].map(e=>t`
420
+ <span
421
+ class="step-dot ${e===this._wizardStep?`step-dot--active`:``} ${e<this._wizardStep?`step-dot--done`:``}"
422
+ ></span>
423
+ `)}
424
+ <span class="step-label">Step ${this._wizardStep} of 3</span>
425
+ </div>
426
+
427
+ ${this._wizardError?t`<div class="wizard-error">${this._wizardError}</div>`:l}
428
+
429
+ ${this._renderWizardStep()}
430
+
431
+ <div class="wizard-footer">
432
+ ${this._wizardStep>1?t`<button class="wizard-btn wizard-btn--secondary" @click=${this._wizardBack}>Back</button>`:t`<button class="wizard-btn wizard-btn--secondary" @click=${this._closeWizard}>Cancel</button>`}
433
+ ${this._wizardStep<3?t`<button class="wizard-btn wizard-btn--primary" @click=${this._wizardNext}>Next</button>`:t`<button
434
+ class="wizard-btn wizard-btn--primary"
435
+ ?disabled=${this._wizardCreating}
436
+ @click=${this._wizardCreate}
437
+ >${this._wizardCreating?`Creating...`:`Create Agent`}</button>`}
438
+ </div>
439
+ </div>
440
+ </dialog>
441
+ `}_renderWizardStep(){switch(this._wizardStep){case 1:return t`
442
+ <div class="wizard-field">
443
+ <label for="wizard-id">Agent ID</label>
444
+ <input
445
+ id="wizard-id"
446
+ type="text"
447
+ .value=${this._wizardAgentId}
448
+ @input=${e=>{this._wizardAgentId=e.target.value}}
449
+ placeholder="my-agent"
450
+ required
451
+ />
452
+ <div class="hint">3-50 characters. Letters, numbers, and hyphens only.</div>
453
+ </div>
454
+ <div class="wizard-field">
455
+ <label for="wizard-name">Display Name</label>
456
+ <input
457
+ id="wizard-name"
458
+ type="text"
459
+ .value=${this._wizardAgentName}
460
+ @input=${e=>{this._wizardAgentName=e.target.value}}
461
+ placeholder="My Agent (optional)"
462
+ />
463
+ </div>
464
+ `;case 2:{let e=this._catalogProviders.length>0?this._catalogProviders.map(e=>({value:e.name,label:e.name.charAt(0).toUpperCase()+e.name.slice(1)})):[{value:`anthropic`,label:`Anthropic`}],n=(this._catalogProviders.find(e=>e.name===this._wizardProvider)?.models??[]).map(e=>({id:e.modelId,label:e.displayName||e.modelId}));return t`
465
+ <div class="wizard-field">
466
+ <label for="wizard-provider">Provider</label>
467
+ <select
468
+ id="wizard-provider"
469
+ .value=${this._wizardProvider}
470
+ @change=${e=>{this._wizardProvider=e.target.value,this._wizardModel=``}}
471
+ >
472
+ ${e.map(e=>t`<option value=${e.value} ?selected=${e.value===this._wizardProvider}>${e.label}</option>`)}
473
+ </select>
474
+ </div>
475
+ <div class="wizard-field">
476
+ <label for="wizard-model">Model</label>
477
+ <select
478
+ id="wizard-model"
479
+ .value=${this._wizardModel}
480
+ @change=${e=>{this._wizardModel=e.target.value}}
481
+ required
482
+ >
483
+ <option value="" disabled ?selected=${!this._wizardModel}>Select a model...</option>
484
+ ${n.map(e=>t`<option value=${e.id} ?selected=${this._wizardModel===e.id}>${e.label}</option>`)}
485
+ </select>
486
+ <div class="hint">Model to use for this agent.</div>
487
+ </div>
488
+ `}case 3:return t`
489
+ <div class="wizard-field">
490
+ <label for="wizard-tools">Tool Policy Profile</label>
491
+ <select
492
+ id="wizard-tools"
493
+ .value=${this._wizardToolProfile}
494
+ @change=${e=>{this._wizardToolProfile=e.target.value}}
495
+ >
496
+ <option value="minimal">Minimal</option>
497
+ <option value="coding">Coding</option>
498
+ <option value="messaging">Messaging</option>
499
+ <option value="supervisor">Supervisor</option>
500
+ <option value="full">Full</option>
501
+ </select>
502
+ <div class="profile-desc">${g[this._wizardToolProfile]??``}</div>
503
+ </div>
504
+ `}}};c([s({attribute:!1})],_.prototype,`apiClient`,void 0),c([s({attribute:!1})],_.prototype,`rpcClient`,void 0),c([s({attribute:!1})],_.prototype,`eventDispatcher`,void 0),c([a()],_.prototype,`_agents`,void 0),c([a()],_.prototype,`_loadState`,void 0),c([a()],_.prototype,`_error`,void 0),c([a()],_.prototype,`_deleteTarget`,void 0),c([a()],_.prototype,`_actionPending`,void 0),c([a()],_.prototype,`_searchQuery`,void 0),c([a()],_.prototype,`_statusFilters`,void 0),c([a()],_.prototype,`_wizardOpen`,void 0),c([a()],_.prototype,`_wizardStep`,void 0),c([a()],_.prototype,`_wizardError`,void 0),c([a()],_.prototype,`_wizardCreating`,void 0),c([a()],_.prototype,`_wizardAgentId`,void 0),c([a()],_.prototype,`_wizardAgentName`,void 0),c([a()],_.prototype,`_wizardProvider`,void 0),c([a()],_.prototype,`_wizardModel`,void 0),c([a()],_.prototype,`_wizardToolProfile`,void 0),c([a()],_.prototype,`_catalogProviders`,void 0),_=c([e(`ic-agent-list`)],_);export{_ as IcAgentList};
@@ -1,15 +1,4 @@
1
- import{a as n,b as d,s as l,i as v,t as p}from"./index-CEcM1R_C.js";var m=Object.getOwnPropertyDescriptor,u=(i,a,s,c)=>{for(var e=c>1?void 0:c?m(a,s):a,t=i.length-1,o;t>=0;t--)(o=i[t])&&(e=o(e)||e);return e};let r=class extends n{_navigateToSecurity(){window.location.hash="#security"}render(){return d`
2
- <div class="redirect-container">
3
- <div class="redirect-title">Approvals Moved</div>
4
- <div class="redirect-desc">
5
- Approvals have been merged into the Security view. Use the
6
- "Pending Approvals" and "Approval Rules" tabs to manage approvals.
7
- </div>
8
- <button class="redirect-btn" @click=${()=>this._navigateToSecurity()}>
9
- Go to Security
10
- </button>
11
- </div>
12
- `}};r.styles=[l,v`
1
+ import{c as e,f as t,h as n,l as r,r as i,t as a}from"./decorate-BvWYovGE.js";var o=class extends r{static{this.styles=[i,n`
13
2
  :host {
14
3
  display: block;
15
4
  }
@@ -51,4 +40,15 @@ import{a as n,b as d,s as l,i as v,t as p}from"./index-CEcM1R_C.js";var m=Object
51
40
  .redirect-btn:hover {
52
41
  opacity: 0.9;
53
42
  }
54
- `];r=u([p("ic-approvals-view")],r);export{r as IcApprovalsView};
43
+ `]}_navigateToSecurity(){window.location.hash=`#security`}render(){return t`
44
+ <div class="redirect-container">
45
+ <div class="redirect-title">Approvals Moved</div>
46
+ <div class="redirect-desc">
47
+ Approvals have been merged into the Security view. Use the
48
+ "Pending Approvals" and "Approval Rules" tabs to manage approvals.
49
+ </div>
50
+ <button class="redirect-btn" @click=${()=>this._navigateToSecurity()}>
51
+ Go to Security
52
+ </button>
53
+ </div>
54
+ `}};o=a([e(`ic-approvals-view`)],o);export{o as IcApprovalsView};