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,261 +1,4 @@
1
- import{a as f,I as v,b as e,A as o,s as _,f as g,i as b,n as m,r as d,t as x}from"./index-CEcM1R_C.js";import"./ic-tabs-B7QtM_v8.js";import"./ic-empty-state-60l2ePhd.js";import"./ic-icon-xeGTVhVG.js";var y=Object.defineProperty,$=Object.getOwnPropertyDescriptor,l=(i,a,r,t)=>{for(var s=t>1?void 0:t?$(a,r):a,c=i.length-1,u;c>=0;c--)(u=i[c])&&(s=(t?u(a,r,s):u(s))||s);return t&&s&&y(a,r,s),s};const w=[{id:"stt",label:"STT"},{id:"tts",label:"TTS"},{id:"vision",label:"Vision"},{id:"document",label:"Document"},{id:"video",label:"Video"},{id:"link",label:"Link"}],R=25*1024*1024,T=20*1024*1024,h=50*1024*1024;function p(i){const a=new Uint8Array(i),r=32768,t=[];for(let s=0;s<a.length;s+=r)t.push(String.fromCharCode(...a.subarray(s,s+r)));return btoa(t.join(""))}let n=class extends f{constructor(){super(...arguments),this._activeTab="stt",this._processing=!1,this._sttResult=null,this._ttsResult=null,this._audioUrl=null,this._ttsText="",this._ttsVoice="",this._visionResult=null,this._documentResult=null,this._videoResult=null,this._visionPrompt="",this._videoPrompt="",this._linkUrl="",this._linkResult=null,this._loadState="loaded",this._providers=null,this._imagePreviewUrl=null}connectedCallback(){super.connectedCallback(),this._loadProviders()}disconnectedCallback(){super.disconnectedCallback(),this._audioUrl&&(URL.revokeObjectURL(this._audioUrl),this._audioUrl=null),this._imagePreviewUrl&&(URL.revokeObjectURL(this._imagePreviewUrl),this._imagePreviewUrl=null)}async _loadProviders(){if(this.rpcClient)try{const i=await this.rpcClient.call("media.providers");this._providers=i}catch{this._providers=null}}async _handleSttUpload(i){const a=i.target,r=a.files?.[0];if(r){if(r.size>R){v.show("File exceeds 25MB limit","error"),a.value="";return}this._processing=!0,this._sttResult=null;try{const t=await r.arrayBuffer(),s=p(t),c=await this.rpcClient.call("media.test.stt",{audio:s,mimeType:r.type||"audio/wav"});this._sttResult=c}catch(t){const s=t instanceof Error?t.message:String(t);v.show(`STT failed: ${s}`,"error")}finally{this._processing=!1}}}async _handleTtsSynthesize(){if(this._ttsText.trim()){this._processing=!0,this._ttsResult=null,this._audioUrl&&(URL.revokeObjectURL(this._audioUrl),this._audioUrl=null);try{const i=await this.rpcClient.call("media.test.tts",{text:this._ttsText,voice:this._ttsVoice||void 0});this._ttsResult=i;const a=atob(i.audio),r=new Uint8Array(a.length);for(let s=0;s<a.length;s++)r[s]=a.charCodeAt(s);const t=new Blob([r],{type:i.mimeType});this._audioUrl=URL.createObjectURL(t)}catch(i){const a=i instanceof Error?i.message:String(i);v.show(`TTS failed: ${a}`,"error")}finally{this._processing=!1}}}async _handleVisionUpload(i){const a=i.target,r=a.files?.[0];if(r){if(r.size>T){v.show("File exceeds 20MB limit","error"),a.value="";return}this._imagePreviewUrl&&URL.revokeObjectURL(this._imagePreviewUrl),this._imagePreviewUrl=URL.createObjectURL(r),this._processing=!0,this._visionResult=null,this.requestUpdate();try{const t=await r.arrayBuffer(),s=p(t),c=await this.rpcClient.call("media.test.vision",{image:s,mimeType:r.type||"image/jpeg",prompt:this._visionPrompt||void 0});this._visionResult=c}catch(t){const s=t instanceof Error?t.message:String(t);v.show(`Vision analysis failed: ${s}`,"error")}finally{this._processing=!1,a.value=""}}}async _handleDocumentUpload(i){const a=i.target,r=a.files?.[0];if(r){if(r.size>h){v.show("File exceeds 50MB limit","error"),a.value="";return}this._processing=!0,this._documentResult=null;try{const t=await r.arrayBuffer(),s=p(t),c=await this.rpcClient.call("media.test.document",{file:s,mimeType:r.type||"application/octet-stream",fileName:r.name});this._documentResult=c}catch(t){const s=t instanceof Error?t.message:String(t);v.show(`Document extraction failed: ${s}`,"error")}finally{this._processing=!1,a.value=""}}}async _handleVideoUpload(i){const a=i.target,r=a.files?.[0];if(r){if(r.size>h){v.show("File exceeds 50MB limit","error"),a.value="";return}this._processing=!0,this._videoResult=null;try{const t=await r.arrayBuffer(),s=p(t),c=await this.rpcClient.call("media.test.video",{video:s,mimeType:r.type||"video/mp4",prompt:this._videoPrompt||void 0});this._videoResult=c}catch(t){const s=t instanceof Error?t.message:String(t);v.show(`Video analysis failed: ${s}`,"error")}finally{this._processing=!1,a.value=""}}}async _handleLinkTest(){if(this._linkUrl.trim()){this._processing=!0,this._linkResult=null;try{const i=await this.rpcClient.call("media.test.link",{url:this._linkUrl});this._linkResult=i}catch(i){const a=i instanceof Error?i.message:String(i);v.show(`Link processing failed: ${a}`,"error")}finally{this._processing=!1}}}_renderSttProviderInfo(){if(this._providers===null)return e`<div class="provider-info">Provider info unavailable</div>`;if(!this._providers.stt)return e`<div class="provider-info warning">STT not configured -- set integrations.media.transcription in config</div>`;const i=this._providers.stt;return e`<div class="provider-info">Provider: ${i.provider}${i.model?` (${i.model})`:""}</div>`}_renderTtsProviderInfo(){if(this._providers===null)return e`<div class="provider-info">Provider info unavailable</div>`;if(!this._providers.tts)return e`<div class="provider-info warning">TTS not configured -- set integrations.media.tts in config</div>`;const i=this._providers.tts;return e`<div class="provider-info">Provider: ${i.provider}, Voice: ${i.voice}, Format: ${i.format}</div>`}_renderSttTab(){return e`
2
- <div class="card">
3
- <div class="card-title">Speech-to-Text</div>
4
- ${this._renderSttProviderInfo()}
5
- <div class="file-input-wrapper">
6
- <label class="file-label">Upload audio file</label>
7
- <input
8
- type="file"
9
- accept="audio/*,.wav,.mp3,.ogg,.m4a,.webm,.flac"
10
- @change=${this._handleSttUpload}
11
- ?disabled=${this._processing}
12
- />
13
- <div class="file-hint">Max 25MB</div>
14
- </div>
15
- ${this._processing?e`
16
- <div class="spinner-inline">
17
- <ic-loading></ic-loading>
18
- Transcribing...
19
- </div>
20
- `:o}
21
- ${this._sttResult?e`
22
- <div class="result-box">
23
- <div class="result-label">Transcription</div>
24
- <pre class="result-text">${this._sttResult.text}</pre>
25
- <div class="result-meta">
26
- ${this._sttResult.language?e`<span>Language: ${this._sttResult.language}</span>`:o}
27
- ${this._sttResult.durationMs?e`<span>Duration: ${this._sttResult.durationMs}ms</span>`:o}
28
- <span>Provider: ${this._sttResult.provider}</span>
29
- </div>
30
- </div>
31
- `:o}
32
- </div>
33
- `}_renderTtsTab(){return e`
34
- <div class="card">
35
- <div class="card-title">Text-to-Speech</div>
36
- ${this._renderTtsProviderInfo()}
37
- <div class="input-group">
38
- <label class="input-label">Text to synthesize</label>
39
- <textarea
40
- placeholder="Enter text to synthesize..."
41
- .value=${this._ttsText}
42
- @input=${i=>{this._ttsText=i.target.value}}
43
- ?disabled=${this._processing}
44
- ></textarea>
45
- </div>
46
- <div class="input-group">
47
- <label class="input-label">Voice override (optional)</label>
48
- <input
49
- class="text-input"
50
- type="text"
51
- placeholder="Leave empty for default"
52
- .value=${this._ttsVoice}
53
- @input=${i=>{this._ttsVoice=i.target.value}}
54
- ?disabled=${this._processing}
55
- />
56
- </div>
57
- <button
58
- class="btn-primary"
59
- @click=${this._handleTtsSynthesize}
60
- ?disabled=${this._processing||!this._ttsText.trim()}
61
- >
62
- Synthesize
63
- </button>
64
- ${this._processing?e`
65
- <div class="spinner-inline">
66
- <ic-loading></ic-loading>
67
- Synthesizing...
68
- </div>
69
- `:o}
70
- ${this._audioUrl&&this._ttsResult?e`
71
- <div class="audio-player">
72
- <audio controls src=${this._audioUrl}></audio>
73
- <div class="result-meta">
74
- <span>Size: ${(this._ttsResult.sizeBytes/1024).toFixed(1)} KB</span>
75
- <span>Format: ${this._ttsResult.mimeType}</span>
76
- <span>Provider: ${this._ttsResult.provider}</span>
77
- </div>
78
- </div>
79
- `:o}
80
- </div>
81
- `}_renderVisionProviderInfo(){if(this._providers===null)return e`<div class="provider-info">Provider info unavailable</div>`;if(!this._providers.vision)return e`<div class="provider-info warning">Vision not configured -- set integrations.media.vision in config</div>`;const i=this._providers.vision;return e`<div class="provider-info">
82
- Providers: ${i.providers.join(", ")}${i.defaultProvider?` (default: ${i.defaultProvider})`:""}
83
- </div>`}_renderDocumentProviderInfo(){return this._providers===null?e`<div class="provider-info">Provider info unavailable</div>`:this._providers.documentExtraction?.enabled?e`<div class="provider-info">Document extraction enabled</div>`:e`<div class="provider-info warning">Document extraction not configured -- set integrations.media.documentExtraction in config</div>`}_renderVideoProviderInfo(){if(this._providers===null)return e`<div class="provider-info">Provider info unavailable</div>`;const i=this._providers.vision;return i?.videoCapable?.length?e`<div class="provider-info">Video-capable providers: ${i.videoCapable.join(", ")}</div>`:e`<div class="provider-info warning">No video-capable vision provider configured (requires Gemini or compatible)</div>`}_renderVisionTab(){return e`
84
- <div class="card">
85
- <div class="card-title">Vision Analysis</div>
86
- ${this._renderVisionProviderInfo()}
87
- <div class="file-input-wrapper">
88
- <label class="file-label">Upload image</label>
89
- <input
90
- type="file"
91
- accept="image/*,.png,.jpg,.jpeg,.gif,.webp,.bmp"
92
- @change=${this._handleVisionUpload}
93
- ?disabled=${this._processing}
94
- />
95
- <div class="file-hint">Max 20MB</div>
96
- </div>
97
- <div class="input-group">
98
- <label class="input-label">Analysis prompt (optional)</label>
99
- <textarea
100
- placeholder="Describe this image in detail"
101
- .value=${this._visionPrompt}
102
- @input=${i=>{this._visionPrompt=i.target.value}}
103
- ?disabled=${this._processing}
104
- ></textarea>
105
- </div>
106
- ${this._processing?e`
107
- <div class="spinner-inline">
108
- <ic-loading></ic-loading>
109
- Analyzing image...
110
- </div>
111
- `:o}
112
- ${this._imagePreviewUrl?e`
113
- <div class="image-preview">
114
- <img src=${this._imagePreviewUrl} alt="Upload preview" />
115
- </div>
116
- `:o}
117
- ${this._visionResult?e`
118
- <div class="result-box">
119
- <div class="result-label">Analysis</div>
120
- <pre class="result-text">${this._visionResult.description}</pre>
121
- <div class="result-meta">
122
- <span>Provider: ${this._visionResult.provider}</span>
123
- <span>Model: ${this._visionResult.model}</span>
124
- </div>
125
- </div>
126
- `:o}
127
- </div>
128
- `}_renderDocumentTab(){return e`
129
- <div class="card">
130
- <div class="card-title">Document Extraction</div>
131
- ${this._renderDocumentProviderInfo()}
132
- <div class="file-input-wrapper">
133
- <label class="file-label">Upload document</label>
134
- <input
135
- type="file"
136
- accept=".pdf,.csv,.txt,.json,.xml,.html,.md,.doc,.docx,.xls,.xlsx"
137
- @change=${this._handleDocumentUpload}
138
- ?disabled=${this._processing}
139
- />
140
- <div class="file-hint">Max 50MB</div>
141
- </div>
142
- ${this._processing?e`
143
- <div class="spinner-inline">
144
- <ic-loading></ic-loading>
145
- Extracting text...
146
- </div>
147
- `:o}
148
- ${this._documentResult?e`
149
- <div class="result-box">
150
- <div class="result-label">Extracted Text</div>
151
- <pre class="result-text result-text--scrollable">${this._documentResult.text}</pre>
152
- <div class="result-meta">
153
- <span>File: ${this._documentResult.fileName}</span>
154
- <span>Chars: ${this._documentResult.extractedChars.toLocaleString()}</span>
155
- ${this._documentResult.pageCount!=null?e`<span>Pages: ${this._documentResult.pageCount}</span>`:o}
156
- ${this._documentResult.truncated?e`<span class="truncated-badge">Truncated</span>`:o}
157
- <span>Duration: ${this._documentResult.durationMs}ms</span>
158
- </div>
159
- </div>
160
- `:o}
161
- </div>
162
- `}_renderVideoTab(){return e`
163
- <div class="card">
164
- <div class="card-title">Video Analysis</div>
165
- ${this._renderVideoProviderInfo()}
166
- <div class="file-input-wrapper">
167
- <label class="file-label">Upload video</label>
168
- <input
169
- type="file"
170
- accept="video/*,.mp4,.mov,.avi,.webm,.mkv"
171
- @change=${this._handleVideoUpload}
172
- ?disabled=${this._processing}
173
- />
174
- <div class="file-hint">Max 50MB</div>
175
- </div>
176
- <div class="input-group">
177
- <label class="input-label">Analysis prompt (optional)</label>
178
- <textarea
179
- placeholder="Describe this video concisely."
180
- .value=${this._videoPrompt}
181
- @input=${i=>{this._videoPrompt=i.target.value}}
182
- ?disabled=${this._processing}
183
- ></textarea>
184
- </div>
185
- ${this._processing?e`
186
- <div class="spinner-inline">
187
- <ic-loading></ic-loading>
188
- Analyzing video...
189
- </div>
190
- `:o}
191
- ${this._videoResult?e`
192
- <div class="result-box">
193
- <div class="result-label">Analysis</div>
194
- <pre class="result-text">${this._videoResult.description}</pre>
195
- <div class="result-meta">
196
- <span>Provider: ${this._videoResult.provider}</span>
197
- <span>Model: ${this._videoResult.model}</span>
198
- </div>
199
- </div>
200
- `:o}
201
- </div>
202
- `}_renderLinkProviderInfo(){return this._providers===null?e`<div class="provider-info">Provider info unavailable</div>`:this._providers.linkUnderstanding?.enabled?e`<div class="provider-info">Link enrichment enabled (max ${this._providers.linkUnderstanding.maxLinks} links)</div>`:e`<div class="provider-info warning">Link understanding not configured</div>`}_renderLinkTab(){return e`
203
- <div class="card">
204
- <div class="card-title">Link Enrichment</div>
205
- ${this._renderLinkProviderInfo()}
206
- <div class="input-group">
207
- <label class="input-label">Enter URL to process</label>
208
- <input
209
- class="text-input"
210
- type="url"
211
- placeholder="https://example.com/article"
212
- .value=${this._linkUrl}
213
- @input=${i=>{this._linkUrl=i.target.value}}
214
- ?disabled=${this._processing}
215
- />
216
- </div>
217
- <button
218
- class="btn-primary"
219
- @click=${this._handleLinkTest}
220
- ?disabled=${this._processing||!this._linkUrl.trim()}
221
- >
222
- Process Link
223
- </button>
224
- ${this._processing?e`
225
- <div class="spinner-inline">
226
- <ic-loading></ic-loading>
227
- Processing link...
228
- </div>
229
- `:o}
230
- ${this._linkResult?e`
231
- <div class="result-box">
232
- <div class="result-label">Enriched Text</div>
233
- <pre class="result-text result-text--scrollable">${this._linkResult.enrichedText}</pre>
234
- <div class="result-meta">
235
- <span>Links processed: ${this._linkResult.linksProcessed}</span>
236
- </div>
237
- ${this._linkResult.errors.length>0?e`
238
- <div class="provider-info warning" style="margin-top: var(--ic-space-sm);">
239
- Errors: ${this._linkResult.errors.join(", ")}
240
- </div>
241
- `:o}
242
- </div>
243
- `:o}
244
- </div>
245
- `}_renderActiveTab(){switch(this._activeTab){case"stt":return this._renderSttTab();case"tts":return this._renderTtsTab();case"vision":return this._renderVisionTab();case"document":return this._renderDocumentTab();case"video":return this._renderVideoTab();case"link":return this._renderLinkTab();default:return o}}render(){return e`
246
- <div class="header-row">
247
- <div class="header-title">Media Tools</div>
248
- </div>
249
- <ic-tabs
250
- .tabs=${w}
251
- .activeTab=${this._activeTab}
252
- @tab-change=${i=>{this._activeTab=i.detail}}
253
- >
254
- </ic-tabs>
255
- <div class="tab-content">
256
- ${this._renderActiveTab()}
257
- </div>
258
- `}};n.styles=[_,g,b`
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-empty-state-CM3Wbj2f.js";import"./ic-tabs-yBjkWKJH.js";var d=[{id:`stt`,label:`STT`},{id:`tts`,label:`TTS`},{id:`vision`,label:`Vision`},{id:`document`,label:`Document`},{id:`video`,label:`Video`},{id:`link`,label:`Link`}],f=25*1024*1024,p=20*1024*1024,m=50*1024*1024;function h(e){let t=new Uint8Array(e),n=32768,r=[];for(let e=0;e<t.length;e+=n)r.push(String.fromCharCode(...t.subarray(e,e+n)));return btoa(r.join(``))}var g=class extends r{constructor(...e){super(...e),this._activeTab=`stt`,this._processing=!1,this._sttResult=null,this._ttsResult=null,this._audioUrl=null,this._ttsText=``,this._ttsVoice=``,this._visionResult=null,this._documentResult=null,this._videoResult=null,this._visionPrompt=``,this._videoPrompt=``,this._linkUrl=``,this._linkResult=null,this._loadState=`loaded`,this._providers=null,this._imagePreviewUrl=null}static{this.styles=[o,i,n`
259
2
  :host {
260
3
  display: block;
261
4
  }
@@ -493,4 +236,261 @@ import{a as f,I as v,b as e,A as o,s as _,f as g,i as b,n as m,r as d,t as x}fro
493
236
  font-weight: 600;
494
237
  }
495
238
 
496
- `];l([m({attribute:!1})],n.prototype,"rpcClient",2);l([m({attribute:!1})],n.prototype,"apiClient",2);l([d()],n.prototype,"_activeTab",2);l([d()],n.prototype,"_processing",2);l([d()],n.prototype,"_sttResult",2);l([d()],n.prototype,"_ttsResult",2);l([d()],n.prototype,"_audioUrl",2);l([d()],n.prototype,"_ttsText",2);l([d()],n.prototype,"_ttsVoice",2);l([d()],n.prototype,"_visionResult",2);l([d()],n.prototype,"_documentResult",2);l([d()],n.prototype,"_videoResult",2);l([d()],n.prototype,"_visionPrompt",2);l([d()],n.prototype,"_videoPrompt",2);l([d()],n.prototype,"_linkUrl",2);l([d()],n.prototype,"_linkResult",2);l([d()],n.prototype,"_loadState",2);l([d()],n.prototype,"_providers",2);n=l([x("ic-media-test-view")],n);export{n as IcMediaTestView};
239
+ `]}connectedCallback(){super.connectedCallback(),this._loadProviders()}disconnectedCallback(){super.disconnectedCallback(),this._audioUrl&&=(URL.revokeObjectURL(this._audioUrl),null),this._imagePreviewUrl&&=(URL.revokeObjectURL(this._imagePreviewUrl),null)}async _loadProviders(){if(this.rpcClient)try{let e=await this.rpcClient.call(`media.providers`);this._providers=e}catch{this._providers=null}}async _handleSttUpload(e){let t=e.target,n=t.files?.[0];if(n){if(n.size>f){u.show(`File exceeds 25MB limit`,`error`),t.value=``;return}this._processing=!0,this._sttResult=null;try{let e=h(await n.arrayBuffer()),t=await this.rpcClient.call(`media.test.stt`,{audio:e,mimeType:n.type||`audio/wav`});this._sttResult=t}catch(e){let t=e instanceof Error?e.message:String(e);u.show(`STT failed: ${t}`,`error`)}finally{this._processing=!1}}}async _handleTtsSynthesize(){if(this._ttsText.trim()){this._processing=!0,this._ttsResult=null,this._audioUrl&&=(URL.revokeObjectURL(this._audioUrl),null);try{let e=await this.rpcClient.call(`media.test.tts`,{text:this._ttsText,voice:this._ttsVoice||void 0});this._ttsResult=e;let t=atob(e.audio),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);let r=new Blob([n],{type:e.mimeType});this._audioUrl=URL.createObjectURL(r)}catch(e){let t=e instanceof Error?e.message:String(e);u.show(`TTS failed: ${t}`,`error`)}finally{this._processing=!1}}}async _handleVisionUpload(e){let t=e.target,n=t.files?.[0];if(n){if(n.size>p){u.show(`File exceeds 20MB limit`,`error`),t.value=``;return}this._imagePreviewUrl&&URL.revokeObjectURL(this._imagePreviewUrl),this._imagePreviewUrl=URL.createObjectURL(n),this._processing=!0,this._visionResult=null,this.requestUpdate();try{let e=h(await n.arrayBuffer()),t=await this.rpcClient.call(`media.test.vision`,{image:e,mimeType:n.type||`image/jpeg`,prompt:this._visionPrompt||void 0});this._visionResult=t}catch(e){let t=e instanceof Error?e.message:String(e);u.show(`Vision analysis failed: ${t}`,`error`)}finally{this._processing=!1,t.value=``}}}async _handleDocumentUpload(e){let t=e.target,n=t.files?.[0];if(n){if(n.size>m){u.show(`File exceeds 50MB limit`,`error`),t.value=``;return}this._processing=!0,this._documentResult=null;try{let e=h(await n.arrayBuffer()),t=await this.rpcClient.call(`media.test.document`,{file:e,mimeType:n.type||`application/octet-stream`,fileName:n.name});this._documentResult=t}catch(e){let t=e instanceof Error?e.message:String(e);u.show(`Document extraction failed: ${t}`,`error`)}finally{this._processing=!1,t.value=``}}}async _handleVideoUpload(e){let t=e.target,n=t.files?.[0];if(n){if(n.size>m){u.show(`File exceeds 50MB limit`,`error`),t.value=``;return}this._processing=!0,this._videoResult=null;try{let e=h(await n.arrayBuffer()),t=await this.rpcClient.call(`media.test.video`,{video:e,mimeType:n.type||`video/mp4`,prompt:this._videoPrompt||void 0});this._videoResult=t}catch(e){let t=e instanceof Error?e.message:String(e);u.show(`Video analysis failed: ${t}`,`error`)}finally{this._processing=!1,t.value=``}}}async _handleLinkTest(){if(this._linkUrl.trim()){this._processing=!0,this._linkResult=null;try{let e=await this.rpcClient.call(`media.test.link`,{url:this._linkUrl});this._linkResult=e}catch(e){let t=e instanceof Error?e.message:String(e);u.show(`Link processing failed: ${t}`,`error`)}finally{this._processing=!1}}}_renderSttProviderInfo(){if(this._providers===null)return t`<div class="provider-info">Provider info unavailable</div>`;if(!this._providers.stt)return t`<div class="provider-info warning">STT not configured -- set integrations.media.transcription in config</div>`;let e=this._providers.stt;return t`<div class="provider-info">Provider: ${e.provider}${e.model?` (${e.model})`:``}</div>`}_renderTtsProviderInfo(){if(this._providers===null)return t`<div class="provider-info">Provider info unavailable</div>`;if(!this._providers.tts)return t`<div class="provider-info warning">TTS not configured -- set integrations.media.tts in config</div>`;let e=this._providers.tts;return t`<div class="provider-info">Provider: ${e.provider}, Voice: ${e.voice}, Format: ${e.format}</div>`}_renderSttTab(){return t`
240
+ <div class="card">
241
+ <div class="card-title">Speech-to-Text</div>
242
+ ${this._renderSttProviderInfo()}
243
+ <div class="file-input-wrapper">
244
+ <label class="file-label">Upload audio file</label>
245
+ <input
246
+ type="file"
247
+ accept="audio/*,.wav,.mp3,.ogg,.m4a,.webm,.flac"
248
+ @change=${this._handleSttUpload}
249
+ ?disabled=${this._processing}
250
+ />
251
+ <div class="file-hint">Max 25MB</div>
252
+ </div>
253
+ ${this._processing?t`
254
+ <div class="spinner-inline">
255
+ <ic-loading></ic-loading>
256
+ Transcribing...
257
+ </div>
258
+ `:l}
259
+ ${this._sttResult?t`
260
+ <div class="result-box">
261
+ <div class="result-label">Transcription</div>
262
+ <pre class="result-text">${this._sttResult.text}</pre>
263
+ <div class="result-meta">
264
+ ${this._sttResult.language?t`<span>Language: ${this._sttResult.language}</span>`:l}
265
+ ${this._sttResult.durationMs?t`<span>Duration: ${this._sttResult.durationMs}ms</span>`:l}
266
+ <span>Provider: ${this._sttResult.provider}</span>
267
+ </div>
268
+ </div>
269
+ `:l}
270
+ </div>
271
+ `}_renderTtsTab(){return t`
272
+ <div class="card">
273
+ <div class="card-title">Text-to-Speech</div>
274
+ ${this._renderTtsProviderInfo()}
275
+ <div class="input-group">
276
+ <label class="input-label">Text to synthesize</label>
277
+ <textarea
278
+ placeholder="Enter text to synthesize..."
279
+ .value=${this._ttsText}
280
+ @input=${e=>{this._ttsText=e.target.value}}
281
+ ?disabled=${this._processing}
282
+ ></textarea>
283
+ </div>
284
+ <div class="input-group">
285
+ <label class="input-label">Voice override (optional)</label>
286
+ <input
287
+ class="text-input"
288
+ type="text"
289
+ placeholder="Leave empty for default"
290
+ .value=${this._ttsVoice}
291
+ @input=${e=>{this._ttsVoice=e.target.value}}
292
+ ?disabled=${this._processing}
293
+ />
294
+ </div>
295
+ <button
296
+ class="btn-primary"
297
+ @click=${this._handleTtsSynthesize}
298
+ ?disabled=${this._processing||!this._ttsText.trim()}
299
+ >
300
+ Synthesize
301
+ </button>
302
+ ${this._processing?t`
303
+ <div class="spinner-inline">
304
+ <ic-loading></ic-loading>
305
+ Synthesizing...
306
+ </div>
307
+ `:l}
308
+ ${this._audioUrl&&this._ttsResult?t`
309
+ <div class="audio-player">
310
+ <audio controls src=${this._audioUrl}></audio>
311
+ <div class="result-meta">
312
+ <span>Size: ${(this._ttsResult.sizeBytes/1024).toFixed(1)} KB</span>
313
+ <span>Format: ${this._ttsResult.mimeType}</span>
314
+ <span>Provider: ${this._ttsResult.provider}</span>
315
+ </div>
316
+ </div>
317
+ `:l}
318
+ </div>
319
+ `}_renderVisionProviderInfo(){if(this._providers===null)return t`<div class="provider-info">Provider info unavailable</div>`;if(!this._providers.vision)return t`<div class="provider-info warning">Vision not configured -- set integrations.media.vision in config</div>`;let e=this._providers.vision;return t`<div class="provider-info">
320
+ Providers: ${e.providers.join(`, `)}${e.defaultProvider?` (default: ${e.defaultProvider})`:``}
321
+ </div>`}_renderDocumentProviderInfo(){return this._providers===null?t`<div class="provider-info">Provider info unavailable</div>`:this._providers.documentExtraction?.enabled?t`<div class="provider-info">Document extraction enabled</div>`:t`<div class="provider-info warning">Document extraction not configured -- set integrations.media.documentExtraction in config</div>`}_renderVideoProviderInfo(){if(this._providers===null)return t`<div class="provider-info">Provider info unavailable</div>`;let e=this._providers.vision;return e?.videoCapable?.length?t`<div class="provider-info">Video-capable providers: ${e.videoCapable.join(`, `)}</div>`:t`<div class="provider-info warning">No video-capable vision provider configured (requires Gemini or compatible)</div>`}_renderVisionTab(){return t`
322
+ <div class="card">
323
+ <div class="card-title">Vision Analysis</div>
324
+ ${this._renderVisionProviderInfo()}
325
+ <div class="file-input-wrapper">
326
+ <label class="file-label">Upload image</label>
327
+ <input
328
+ type="file"
329
+ accept="image/*,.png,.jpg,.jpeg,.gif,.webp,.bmp"
330
+ @change=${this._handleVisionUpload}
331
+ ?disabled=${this._processing}
332
+ />
333
+ <div class="file-hint">Max 20MB</div>
334
+ </div>
335
+ <div class="input-group">
336
+ <label class="input-label">Analysis prompt (optional)</label>
337
+ <textarea
338
+ placeholder="Describe this image in detail"
339
+ .value=${this._visionPrompt}
340
+ @input=${e=>{this._visionPrompt=e.target.value}}
341
+ ?disabled=${this._processing}
342
+ ></textarea>
343
+ </div>
344
+ ${this._processing?t`
345
+ <div class="spinner-inline">
346
+ <ic-loading></ic-loading>
347
+ Analyzing image...
348
+ </div>
349
+ `:l}
350
+ ${this._imagePreviewUrl?t`
351
+ <div class="image-preview">
352
+ <img src=${this._imagePreviewUrl} alt="Upload preview" />
353
+ </div>
354
+ `:l}
355
+ ${this._visionResult?t`
356
+ <div class="result-box">
357
+ <div class="result-label">Analysis</div>
358
+ <pre class="result-text">${this._visionResult.description}</pre>
359
+ <div class="result-meta">
360
+ <span>Provider: ${this._visionResult.provider}</span>
361
+ <span>Model: ${this._visionResult.model}</span>
362
+ </div>
363
+ </div>
364
+ `:l}
365
+ </div>
366
+ `}_renderDocumentTab(){return t`
367
+ <div class="card">
368
+ <div class="card-title">Document Extraction</div>
369
+ ${this._renderDocumentProviderInfo()}
370
+ <div class="file-input-wrapper">
371
+ <label class="file-label">Upload document</label>
372
+ <input
373
+ type="file"
374
+ accept=".pdf,.csv,.txt,.json,.xml,.html,.md,.doc,.docx,.xls,.xlsx"
375
+ @change=${this._handleDocumentUpload}
376
+ ?disabled=${this._processing}
377
+ />
378
+ <div class="file-hint">Max 50MB</div>
379
+ </div>
380
+ ${this._processing?t`
381
+ <div class="spinner-inline">
382
+ <ic-loading></ic-loading>
383
+ Extracting text...
384
+ </div>
385
+ `:l}
386
+ ${this._documentResult?t`
387
+ <div class="result-box">
388
+ <div class="result-label">Extracted Text</div>
389
+ <pre class="result-text result-text--scrollable">${this._documentResult.text}</pre>
390
+ <div class="result-meta">
391
+ <span>File: ${this._documentResult.fileName}</span>
392
+ <span>Chars: ${this._documentResult.extractedChars.toLocaleString()}</span>
393
+ ${this._documentResult.pageCount==null?l:t`<span>Pages: ${this._documentResult.pageCount}</span>`}
394
+ ${this._documentResult.truncated?t`<span class="truncated-badge">Truncated</span>`:l}
395
+ <span>Duration: ${this._documentResult.durationMs}ms</span>
396
+ </div>
397
+ </div>
398
+ `:l}
399
+ </div>
400
+ `}_renderVideoTab(){return t`
401
+ <div class="card">
402
+ <div class="card-title">Video Analysis</div>
403
+ ${this._renderVideoProviderInfo()}
404
+ <div class="file-input-wrapper">
405
+ <label class="file-label">Upload video</label>
406
+ <input
407
+ type="file"
408
+ accept="video/*,.mp4,.mov,.avi,.webm,.mkv"
409
+ @change=${this._handleVideoUpload}
410
+ ?disabled=${this._processing}
411
+ />
412
+ <div class="file-hint">Max 50MB</div>
413
+ </div>
414
+ <div class="input-group">
415
+ <label class="input-label">Analysis prompt (optional)</label>
416
+ <textarea
417
+ placeholder="Describe this video concisely."
418
+ .value=${this._videoPrompt}
419
+ @input=${e=>{this._videoPrompt=e.target.value}}
420
+ ?disabled=${this._processing}
421
+ ></textarea>
422
+ </div>
423
+ ${this._processing?t`
424
+ <div class="spinner-inline">
425
+ <ic-loading></ic-loading>
426
+ Analyzing video...
427
+ </div>
428
+ `:l}
429
+ ${this._videoResult?t`
430
+ <div class="result-box">
431
+ <div class="result-label">Analysis</div>
432
+ <pre class="result-text">${this._videoResult.description}</pre>
433
+ <div class="result-meta">
434
+ <span>Provider: ${this._videoResult.provider}</span>
435
+ <span>Model: ${this._videoResult.model}</span>
436
+ </div>
437
+ </div>
438
+ `:l}
439
+ </div>
440
+ `}_renderLinkProviderInfo(){return this._providers===null?t`<div class="provider-info">Provider info unavailable</div>`:this._providers.linkUnderstanding?.enabled?t`<div class="provider-info">Link enrichment enabled (max ${this._providers.linkUnderstanding.maxLinks} links)</div>`:t`<div class="provider-info warning">Link understanding not configured</div>`}_renderLinkTab(){return t`
441
+ <div class="card">
442
+ <div class="card-title">Link Enrichment</div>
443
+ ${this._renderLinkProviderInfo()}
444
+ <div class="input-group">
445
+ <label class="input-label">Enter URL to process</label>
446
+ <input
447
+ class="text-input"
448
+ type="url"
449
+ placeholder="https://example.com/article"
450
+ .value=${this._linkUrl}
451
+ @input=${e=>{this._linkUrl=e.target.value}}
452
+ ?disabled=${this._processing}
453
+ />
454
+ </div>
455
+ <button
456
+ class="btn-primary"
457
+ @click=${this._handleLinkTest}
458
+ ?disabled=${this._processing||!this._linkUrl.trim()}
459
+ >
460
+ Process Link
461
+ </button>
462
+ ${this._processing?t`
463
+ <div class="spinner-inline">
464
+ <ic-loading></ic-loading>
465
+ Processing link...
466
+ </div>
467
+ `:l}
468
+ ${this._linkResult?t`
469
+ <div class="result-box">
470
+ <div class="result-label">Enriched Text</div>
471
+ <pre class="result-text result-text--scrollable">${this._linkResult.enrichedText}</pre>
472
+ <div class="result-meta">
473
+ <span>Links processed: ${this._linkResult.linksProcessed}</span>
474
+ </div>
475
+ ${this._linkResult.errors.length>0?t`
476
+ <div class="provider-info warning" style="margin-top: var(--ic-space-sm);">
477
+ Errors: ${this._linkResult.errors.join(`, `)}
478
+ </div>
479
+ `:l}
480
+ </div>
481
+ `:l}
482
+ </div>
483
+ `}_renderActiveTab(){switch(this._activeTab){case`stt`:return this._renderSttTab();case`tts`:return this._renderTtsTab();case`vision`:return this._renderVisionTab();case`document`:return this._renderDocumentTab();case`video`:return this._renderVideoTab();case`link`:return this._renderLinkTab();default:return l}}render(){return t`
484
+ <div class="header-row">
485
+ <div class="header-title">Media Tools</div>
486
+ </div>
487
+ <ic-tabs
488
+ .tabs=${d}
489
+ .activeTab=${this._activeTab}
490
+ @tab-change=${e=>{this._activeTab=e.detail}}
491
+ >
492
+ </ic-tabs>
493
+ <div class="tab-content">
494
+ ${this._renderActiveTab()}
495
+ </div>
496
+ `}};c([s({attribute:!1})],g.prototype,`rpcClient`,void 0),c([s({attribute:!1})],g.prototype,`apiClient`,void 0),c([a()],g.prototype,`_activeTab`,void 0),c([a()],g.prototype,`_processing`,void 0),c([a()],g.prototype,`_sttResult`,void 0),c([a()],g.prototype,`_ttsResult`,void 0),c([a()],g.prototype,`_audioUrl`,void 0),c([a()],g.prototype,`_ttsText`,void 0),c([a()],g.prototype,`_ttsVoice`,void 0),c([a()],g.prototype,`_visionResult`,void 0),c([a()],g.prototype,`_documentResult`,void 0),c([a()],g.prototype,`_videoResult`,void 0),c([a()],g.prototype,`_visionPrompt`,void 0),c([a()],g.prototype,`_videoPrompt`,void 0),c([a()],g.prototype,`_linkUrl`,void 0),c([a()],g.prototype,`_linkResult`,void 0),c([a()],g.prototype,`_loadState`,void 0),c([a()],g.prototype,`_providers`,void 0),g=c([e(`ic-media-test-view`)],g);export{g as IcMediaTestView};