comisai 1.0.15 → 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 (124) hide show
  1. package/node_modules/@comis/agent/dist/bootstrap/types.d.ts +1 -1
  2. package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.js +12 -11
  3. package/node_modules/@comis/agent/dist/context-engine/constants.d.ts +11 -0
  4. package/node_modules/@comis/agent/dist/context-engine/constants.js +11 -0
  5. package/node_modules/@comis/agent/dist/context-engine/index.d.ts +1 -1
  6. package/node_modules/@comis/agent/dist/context-engine/index.js +1 -1
  7. package/node_modules/@comis/agent/dist/context-engine/llm-compaction.js +32 -18
  8. package/node_modules/@comis/agent/dist/executor/cache-break-diff-writer.d.ts +2 -0
  9. package/node_modules/@comis/agent/dist/executor/cache-break-diff-writer.js +36 -0
  10. package/node_modules/@comis/agent/dist/executor/executor-post-execution.d.ts +12 -0
  11. package/node_modules/@comis/agent/dist/executor/executor-post-execution.js +117 -27
  12. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.d.ts +1 -0
  13. package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.js +16 -4
  14. package/node_modules/@comis/agent/dist/executor/executor-stream-setup.js +17 -1
  15. package/node_modules/@comis/agent/dist/executor/executor-tool-assembly.js +27 -1
  16. package/node_modules/@comis/agent/dist/executor/session-snapshot-cleanup.js +3 -1
  17. package/node_modules/@comis/agent/dist/executor/stream-wrappers/index.d.ts +2 -0
  18. package/node_modules/@comis/agent/dist/executor/stream-wrappers/index.js +2 -0
  19. package/node_modules/@comis/agent/dist/executor/stream-wrappers/request-body-injector.d.ts +9 -0
  20. package/node_modules/@comis/agent/dist/executor/stream-wrappers/request-body-injector.js +65 -3
  21. package/node_modules/@comis/agent/dist/executor/stream-wrappers/stub-filter-injector.d.ts +28 -0
  22. package/node_modules/@comis/agent/dist/executor/stream-wrappers/stub-filter-injector.js +63 -0
  23. package/node_modules/@comis/agent/dist/executor/tool-deferral.d.ts +18 -1
  24. package/node_modules/@comis/agent/dist/executor/tool-deferral.js +275 -133
  25. package/node_modules/@comis/agent/dist/executor/ttl-guard.d.ts +6 -0
  26. package/node_modules/@comis/agent/dist/executor/ttl-guard.js +8 -0
  27. package/node_modules/@comis/agent/package.json +1 -1
  28. package/node_modules/@comis/channels/dist/shared/typing-controller.d.ts +7 -0
  29. package/node_modules/@comis/channels/dist/shared/typing-controller.js +33 -0
  30. package/node_modules/@comis/channels/package.json +1 -1
  31. package/node_modules/@comis/cli/dist/commands/daemon.js +116 -28
  32. package/node_modules/@comis/cli/dist/wizard/non-interactive.js +1 -0
  33. package/node_modules/@comis/cli/dist/wizard/steps/01-detect-existing.js +4 -0
  34. package/node_modules/@comis/cli/dist/wizard/steps/07-gateway.js +9 -0
  35. package/node_modules/@comis/cli/dist/wizard/steps/10-write-config.js +2 -0
  36. package/node_modules/@comis/cli/dist/wizard/steps/12-finish.js +5 -2
  37. package/node_modules/@comis/cli/dist/wizard/types.d.ts +1 -0
  38. package/node_modules/@comis/cli/package.json +1 -1
  39. package/node_modules/@comis/core/dist/config/schema-agent.d.ts +10 -0
  40. package/node_modules/@comis/core/dist/config/schema-agent.js +8 -0
  41. package/node_modules/@comis/core/dist/config/schema-gateway.d.ts +17 -2
  42. package/node_modules/@comis/core/dist/config/schema-gateway.js +11 -0
  43. package/node_modules/@comis/core/dist/config/schema-skills.d.ts +16 -2
  44. package/node_modules/@comis/core/dist/config/schema-skills.js +9 -2
  45. package/node_modules/@comis/core/dist/config/schema.d.ts +66 -60
  46. package/node_modules/@comis/core/package.json +1 -1
  47. package/node_modules/@comis/daemon/dist/wiring/setup-gateway.js +34 -6
  48. package/node_modules/@comis/daemon/package.json +1 -1
  49. package/node_modules/@comis/gateway/package.json +1 -1
  50. package/node_modules/@comis/infra/package.json +1 -1
  51. package/node_modules/@comis/memory/package.json +1 -1
  52. package/node_modules/@comis/scheduler/package.json +1 -1
  53. package/node_modules/@comis/shared/package.json +1 -1
  54. package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.d.ts +1 -1
  55. package/node_modules/@comis/skills/package.json +1 -1
  56. package/node_modules/@comis/web/dist/android-chrome-192x192.png +0 -0
  57. package/node_modules/@comis/web/dist/android-chrome-512x512.png +0 -0
  58. package/node_modules/@comis/web/dist/apple-touch-icon.png +0 -0
  59. package/node_modules/@comis/web/dist/assets/agent-detail-BG9MGWWj.js +615 -0
  60. package/node_modules/@comis/web/dist/assets/agent-editor-C26Q_xCs.js +2173 -0
  61. package/node_modules/@comis/web/dist/assets/agent-list-LHCJ4rw2.js +504 -0
  62. package/node_modules/@comis/web/dist/assets/approvals-q9VH_IKr.js +54 -0
  63. package/node_modules/@comis/web/dist/assets/billing-view-CtYvBqTE.js +375 -0
  64. package/node_modules/@comis/web/dist/assets/channel-detail-CaInesJM.js +681 -0
  65. package/node_modules/@comis/web/dist/assets/channel-list-B8dj3O9a.js +323 -0
  66. package/node_modules/@comis/web/dist/assets/chat-console-CNmzl0JW.js +943 -0
  67. package/node_modules/@comis/web/dist/assets/config-editor-DX4ITw6y.js +1374 -0
  68. package/node_modules/@comis/web/dist/assets/context-dag-browser-BwiaF5tf.js +393 -0
  69. package/node_modules/@comis/web/dist/assets/context-engine-BZ5Am6hA.js +393 -0
  70. package/node_modules/@comis/web/dist/assets/delivery-view-OfBZof-m.js +392 -0
  71. package/node_modules/@comis/web/dist/assets/diagnostics-view-YFwCxgr2.js +231 -0
  72. package/node_modules/@comis/web/dist/assets/directive-DoeGSK_T.js +1 -0
  73. package/node_modules/@comis/web/dist/assets/extract-variables-BM5qyK-s.js +149 -0
  74. package/node_modules/@comis/web/dist/assets/ic-array-editor-B7m6x7-S.js +118 -0
  75. package/node_modules/@comis/web/dist/assets/ic-breadcrumb-CUMpp3BL.js +75 -0
  76. package/node_modules/@comis/web/dist/assets/ic-budget-segment-bar-BtJ6x5mN.js +64 -0
  77. package/node_modules/@comis/web/dist/assets/ic-chat-message-CFyDJd0z.js +352 -0
  78. package/node_modules/@comis/web/dist/assets/ic-confirm-dialog-CCDbB04e.js +110 -0
  79. package/node_modules/@comis/web/dist/assets/ic-connection-dot-CnT1b8xr.js +54 -0
  80. package/node_modules/@comis/web/dist/assets/ic-data-table-CKUNTxHw.js +277 -0
  81. package/node_modules/@comis/web/dist/assets/ic-delivery-row-GP5Fkygs.js +67 -0
  82. package/node_modules/@comis/web/dist/assets/ic-detail-panel-BF83r-if.js +116 -0
  83. package/node_modules/@comis/web/dist/assets/ic-empty-state-60l2ePhd.js +52 -0
  84. package/node_modules/@comis/web/dist/assets/ic-graph-canvas-C8FuSMe1.js +359 -0
  85. package/node_modules/@comis/web/dist/assets/ic-icon-xeGTVhVG.js +33 -0
  86. package/node_modules/@comis/web/dist/assets/ic-layer-waterfall-COvEYMg5.js +69 -0
  87. package/node_modules/@comis/web/dist/assets/ic-relative-time-3FqpjeAI.js +12 -0
  88. package/node_modules/@comis/web/dist/assets/ic-search-input-CSOxY9g7.js +92 -0
  89. package/node_modules/@comis/web/dist/assets/ic-select-Ce-Raudx.js +127 -0
  90. package/node_modules/@comis/web/dist/assets/ic-tabs-B7QtM_v8.js +95 -0
  91. package/node_modules/@comis/web/dist/assets/ic-tag-CPPUnDLF.js +33 -0
  92. package/node_modules/@comis/web/dist/assets/ic-time-range-picker-CypCT68y.js +93 -0
  93. package/node_modules/@comis/web/dist/assets/ic-tool-call-7MaXSsCW.js +146 -0
  94. package/node_modules/@comis/web/dist/assets/index-CEcM1R_C.js +2830 -0
  95. package/node_modules/@comis/web/dist/assets/index-CIJFuItj.css +1 -0
  96. package/node_modules/@comis/web/dist/assets/mcp-management-BNZPnpDn.js +582 -0
  97. package/node_modules/@comis/web/dist/assets/media-config-BBvTYxOX.js +314 -0
  98. package/node_modules/@comis/web/dist/assets/media-test-BkK3RCRK.js +496 -0
  99. package/node_modules/@comis/web/dist/assets/memory-inspector-1hDGCGat.js +1139 -0
  100. package/node_modules/@comis/web/dist/assets/message-center-CXefwsUu.js +785 -0
  101. package/node_modules/@comis/web/dist/assets/models-C1qcU_j3.js +894 -0
  102. package/node_modules/@comis/web/dist/assets/observability-types-D7jUtSde.js +1 -0
  103. package/node_modules/@comis/web/dist/assets/observe-view-C0VBhX4C.js +814 -0
  104. package/node_modules/@comis/web/dist/assets/pipeline-builder-DcUUIrm0.js +1496 -0
  105. package/node_modules/@comis/web/dist/assets/pipeline-history-DkfOQ6SW.js +317 -0
  106. package/node_modules/@comis/web/dist/assets/pipeline-history-detail-hyHgD0ai.js +287 -0
  107. package/node_modules/@comis/web/dist/assets/pipeline-list-BPW8hV-q.js +518 -0
  108. package/node_modules/@comis/web/dist/assets/pipeline-monitor-Bip16T7e.js +972 -0
  109. package/node_modules/@comis/web/dist/assets/scheduler-BGgwKd06.js +1182 -0
  110. package/node_modules/@comis/web/dist/assets/security-D15st4xx.js +1224 -0
  111. package/node_modules/@comis/web/dist/assets/session-detail-SGEYNJ0M.js +632 -0
  112. package/node_modules/@comis/web/dist/assets/session-key-parser-DPORMVyU.js +1 -0
  113. package/node_modules/@comis/web/dist/assets/session-list-6ybUTxbY.js +231 -0
  114. package/node_modules/@comis/web/dist/assets/setup-wizard-nT0tz9QP.js +853 -0
  115. package/node_modules/@comis/web/dist/assets/skills-D8yVfSUy.js +1051 -0
  116. package/node_modules/@comis/web/dist/assets/subagents-HHXMeHYo.js +193 -0
  117. package/node_modules/@comis/web/dist/assets/workspace-manager-BQlr10iH.js +785 -0
  118. package/node_modules/@comis/web/dist/comis-logo.png +0 -0
  119. package/node_modules/@comis/web/dist/favicon-16x16.png +0 -0
  120. package/node_modules/@comis/web/dist/favicon-32x32.png +0 -0
  121. package/node_modules/@comis/web/dist/favicon.ico +0 -0
  122. package/node_modules/@comis/web/dist/index.html +17 -0
  123. package/node_modules/@comis/web/package.json +29 -0
  124. package/package.json +15 -13
@@ -0,0 +1,1139 @@
1
+ import{s as f,f as _,i as y,n as m,a as x,b as i,t as $,A as h,r as n}from"./index-CEcM1R_C.js";import"./ic-data-table-CKUNTxHw.js";import"./ic-tag-CPPUnDLF.js";import"./ic-relative-time-3FqpjeAI.js";import"./ic-search-input-CSOxY9g7.js";import"./ic-detail-panel-BF83r-if.js";import"./ic-confirm-dialog-CCDbB04e.js";var C=Object.defineProperty,S=Object.getOwnPropertyDescriptor,w=(e,t,r,c)=>{for(var a=c>1?void 0:c?S(t,r):t,d=e.length-1,l;d>=0;d--)(l=e[d])&&(a=(c?l(t,r,a):l(a))||a);return c&&a&&C(t,r,a),a};let u=class extends x{constructor(){super(...arguments),this.entries=[],this.selectable=!1}_hasScores(){return this.entries.some(e=>e.score!==void 0&&e.score!==null)}_getColumns(){const e=[];return this._hasScores()&&e.push({key:"score",label:"Score",sortable:!0,render:t=>{const r=t;return r==null?"":i`<span class="score-cell">${r.toFixed(3)}</span>`}}),e.push({key:"content",label:"Content",sortable:!1,render:t=>i`<span class="content-cell">${String(t??"")}</span>`},{key:"memoryType",label:"Type",sortable:!0,render:t=>{const r=this._typeVariant(String(t??""));return i`<ic-tag variant=${r}>${t}</ic-tag>`}},{key:"trustLevel",label:"Trust",sortable:!0,render:t=>{const r=this._trustVariant(String(t??""));return i`<ic-tag variant=${r}>${t}</ic-tag>`}},{key:"agentId",label:"Agent",sortable:!0},{key:"createdAt",label:"Age",sortable:!0,render:t=>{const r=t;return r?i`<ic-relative-time .timestamp=${r}></ic-relative-time>`:""}}),e}_typeVariant(e){const t=(e??"").toLowerCase();return t==="working"||t==="episodic"?"info":t==="semantic"?"success":t==="procedural"?"warning":"default"}_trustVariant(e){const t=(e??"").toLowerCase();return t==="system"?"success":t==="learned"?"info":t==="external"?"warning":"default"}_handleRowClick(e){this.dispatchEvent(new CustomEvent("detail-requested",{detail:e.detail,bubbles:!0,composed:!0}))}_handleSelectionChange(e){this.dispatchEvent(new CustomEvent("selection-change",{detail:e.detail,bubbles:!0,composed:!0}))}render(){const e=this._getColumns();return i`
2
+ <ic-data-table
3
+ .columns=${e}
4
+ .rows=${this.entries}
5
+ ?selectable=${this.selectable}
6
+ emptyMessage="No memory entries found"
7
+ @row-click=${this._handleRowClick}
8
+ @selection-change=${this._handleSelectionChange}
9
+ ></ic-data-table>
10
+ `}};u.styles=[f,_,y`
11
+ :host {
12
+ display: block;
13
+ }
14
+
15
+ .score-cell {
16
+ font-family: var(--ic-font-mono);
17
+ color: var(--ic-warning);
18
+ font-size: var(--ic-text-xs);
19
+ }
20
+
21
+ .content-cell {
22
+ max-width: 24rem;
23
+ overflow: hidden;
24
+ text-overflow: ellipsis;
25
+ white-space: nowrap;
26
+ }
27
+ `];w([m({attribute:!1})],u.prototype,"entries",2);w([m({type:Boolean})],u.prototype,"selectable",2);u=w([$("ic-memory-table")],u);var E=Object.defineProperty,T=Object.getOwnPropertyDescriptor,k=(e,t,r,c)=>{for(var a=c>1?void 0:c?T(t,r):t,d=e.length-1,l;d>=0;d--)(l=e[d])&&(a=(c?l(t,r,a):l(a))||a);return c&&a&&E(t,r,a),a};let v=class extends x{constructor(){super(...arguments),this.entry=null}_typeVariant(e){const t=(e??"").toLowerCase();return t==="working"||t==="episodic"?"info":t==="semantic"?"success":t==="procedural"?"warning":"default"}_trustVariant(e){const t=(e??"").toLowerCase();return t==="system"?"success":t==="learned"?"info":t==="external"?"warning":"default"}_formatTimestamp(e){return new Date(e).toLocaleString(void 0,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}_handleDelete(){this.entry&&this.dispatchEvent(new CustomEvent("delete-requested",{detail:this.entry.id,bubbles:!0,composed:!0}))}_handleClose(){this.dispatchEvent(new CustomEvent("close",{bubbles:!0,composed:!0}))}render(){if(!this.entry)return i`<div class="empty-state">No entry selected</div>`;const e=this.entry;return i`
28
+ <!-- ID -->
29
+ <div class="detail-section">
30
+ <div class="detail-label">ID</div>
31
+ <div class="detail-id">${e.id}</div>
32
+ </div>
33
+
34
+ <!-- Score (only if present) -->
35
+ ${e.score!==void 0&&e.score!==null?i`
36
+ <div class="detail-section">
37
+ <div class="detail-label">Relevance Score</div>
38
+ <div class="score-display">${e.score.toFixed(4)}</div>
39
+ </div>
40
+ `:h}
41
+
42
+ <!-- Content -->
43
+ <div class="detail-section">
44
+ <div class="detail-label">Content</div>
45
+ <div class="content-block">${e.content}</div>
46
+ </div>
47
+
48
+ <!-- Classification -->
49
+ <div class="detail-section">
50
+ <div class="detail-label">Classification</div>
51
+ <div class="badges-row">
52
+ <ic-tag variant=${this._typeVariant(e.memoryType)}>${e.memoryType}</ic-tag>
53
+ <ic-tag variant=${this._trustVariant(e.trustLevel)}>${e.trustLevel}</ic-tag>
54
+ </div>
55
+ </div>
56
+
57
+ <!-- Agent -->
58
+ <div class="detail-section">
59
+ <div class="detail-label">Agent</div>
60
+ <div class="detail-value">${e.agentId}</div>
61
+ </div>
62
+
63
+ <!-- Source (if available) -->
64
+ ${e.source?i`
65
+ <div class="detail-section">
66
+ <div class="detail-label">Source</div>
67
+ <div class="detail-value">${e.source}</div>
68
+ </div>
69
+ `:h}
70
+
71
+ <!-- Tags (if present) -->
72
+ ${e.tags&&e.tags.length>0?i`
73
+ <div class="detail-section">
74
+ <div class="detail-label">Tags</div>
75
+ <div class="tags-list">
76
+ ${e.tags.map(t=>i`<ic-tag variant="default">${t}</ic-tag>`)}
77
+ </div>
78
+ </div>
79
+ `:h}
80
+
81
+ <!-- Embedding status -->
82
+ <div class="detail-section">
83
+ <div class="detail-label">Embedding</div>
84
+ <div class="embedding-status">
85
+ ${e.hasEmbedding?i`
86
+ <span class="embedding-icon embedding-icon--yes">&#x2713;</span>
87
+ <span>Indexed</span>
88
+ ${e.embeddingDims?i`<span class="embedding-dims">(${e.embeddingDims} dims)</span>`:h}
89
+ `:i`
90
+ <span class="embedding-icon embedding-icon--no">&#x2717;</span>
91
+ <span>Not indexed</span>
92
+ `}
93
+ </div>
94
+ </div>
95
+
96
+ <!-- Created timestamp -->
97
+ <div class="detail-section">
98
+ <div class="detail-label">Created</div>
99
+ <div class="timestamp-value">${this._formatTimestamp(e.createdAt)}</div>
100
+ </div>
101
+
102
+ <!-- Updated timestamp (if exists) -->
103
+ ${e.updatedAt?i`
104
+ <div class="detail-section">
105
+ <div class="detail-label">Updated</div>
106
+ <div class="timestamp-value">${this._formatTimestamp(e.updatedAt)}</div>
107
+ </div>
108
+ `:h}
109
+
110
+ <!-- Delete button -->
111
+ <div class="detail-section">
112
+ <button class="delete-btn" @click=${this._handleDelete}>
113
+ Delete Entry
114
+ </button>
115
+ </div>
116
+ `}};v.styles=[f,_,y`
117
+ :host {
118
+ display: block;
119
+ }
120
+
121
+ .detail-section {
122
+ margin-bottom: var(--ic-space-lg);
123
+ }
124
+
125
+ .detail-label {
126
+ font-size: var(--ic-text-xs);
127
+ font-weight: 600;
128
+ color: var(--ic-text-dim);
129
+ text-transform: uppercase;
130
+ letter-spacing: 0.05em;
131
+ margin-bottom: var(--ic-space-xs);
132
+ }
133
+
134
+ .detail-value {
135
+ font-size: var(--ic-text-sm);
136
+ color: var(--ic-text);
137
+ line-height: 1.5;
138
+ }
139
+
140
+ .detail-id {
141
+ font-family: var(--ic-font-mono);
142
+ font-size: var(--ic-text-xs);
143
+ color: var(--ic-text-muted);
144
+ background: var(--ic-bg);
145
+ padding: var(--ic-space-xs) var(--ic-space-sm);
146
+ border-radius: var(--ic-radius-sm);
147
+ word-break: break-all;
148
+ }
149
+
150
+ .score-display {
151
+ font-family: var(--ic-font-mono);
152
+ font-size: var(--ic-text-2xl);
153
+ font-weight: 700;
154
+ color: var(--ic-warning);
155
+ }
156
+
157
+ .content-block {
158
+ background: var(--ic-bg);
159
+ border: 1px solid var(--ic-border);
160
+ border-radius: var(--ic-radius-md);
161
+ padding: var(--ic-space-md);
162
+ font-size: var(--ic-text-sm);
163
+ color: var(--ic-text);
164
+ line-height: 1.6;
165
+ white-space: pre-wrap;
166
+ word-break: break-word;
167
+ max-height: 16rem;
168
+ overflow-y: auto;
169
+ }
170
+
171
+ .badges-row {
172
+ display: flex;
173
+ gap: var(--ic-space-sm);
174
+ flex-wrap: wrap;
175
+ }
176
+
177
+ .tags-list {
178
+ display: flex;
179
+ gap: var(--ic-space-xs);
180
+ flex-wrap: wrap;
181
+ }
182
+
183
+ .embedding-status {
184
+ display: flex;
185
+ align-items: center;
186
+ gap: var(--ic-space-sm);
187
+ font-size: var(--ic-text-sm);
188
+ }
189
+
190
+ .embedding-icon {
191
+ font-size: var(--ic-text-base);
192
+ }
193
+
194
+ .embedding-icon--yes {
195
+ color: var(--ic-success);
196
+ }
197
+
198
+ .embedding-icon--no {
199
+ color: var(--ic-text-dim);
200
+ }
201
+
202
+ .embedding-dims {
203
+ color: var(--ic-text-muted);
204
+ font-family: var(--ic-font-mono);
205
+ font-size: var(--ic-text-xs);
206
+ }
207
+
208
+ .timestamp-value {
209
+ font-size: var(--ic-text-sm);
210
+ color: var(--ic-text);
211
+ }
212
+
213
+ .delete-btn {
214
+ width: 100%;
215
+ padding: var(--ic-space-sm) var(--ic-space-md);
216
+ background: transparent;
217
+ border: 1px solid var(--ic-error);
218
+ border-radius: var(--ic-radius-md);
219
+ color: var(--ic-error);
220
+ font-size: var(--ic-text-sm);
221
+ font-family: inherit;
222
+ cursor: pointer;
223
+ transition: background var(--ic-transition), color var(--ic-transition);
224
+ }
225
+
226
+ .delete-btn:hover {
227
+ background: var(--ic-error);
228
+ color: var(--ic-text);
229
+ }
230
+
231
+ .empty-state {
232
+ color: var(--ic-text-dim);
233
+ font-size: var(--ic-text-sm);
234
+ text-align: center;
235
+ padding: var(--ic-space-xl);
236
+ }
237
+ `];k([m({attribute:!1})],v.prototype,"entry",2);v=k([$("ic-memory-detail")],v);var F=Object.defineProperty,D=Object.getOwnPropertyDescriptor,o=(e,t,r,c)=>{for(var a=c>1?void 0:c?D(t,r):t,d=e.length-1,l;d>=0;d--)(l=e[d])&&(a=(c?l(t,r,a):l(a))||a);return c&&a&&F(t,r,a),a};const b=["working","episodic","semantic","procedural"],g=["system","learned","external"];let s=class extends x{constructor(){super(...arguments),this.apiClient=null,this.rpcClient=null,this._mode="search",this._query="",this._results=[],this._loading=!1,this._searched=!1,this._error="",this._stats=null,this._statsLoaded=!1,this._selectedEntry=null,this._selectedIds=[],this._typeFilter=new Set(b),this._trustFilter=new Set(g),this._agentFilter="",this._dateFrom="",this._dateTo="",this._browseOffset=0,this._browseLimit=25,this._total=0,this._agents=[],this._confirmOpen=!1,this._createOpen=!1,this._createContent="",this._createTags="",this._createTrustLevel="learned",this._createProvenance="",this._createSubmitting=!1,this._createMessage="",this._createMessageType="success",this._embeddingStats=null,this._embeddingLoading=!1,this._flushDialogOpen=!1,this._flushAgentId="",this._flushSubmitting=!1}connectedCallback(){super.connectedCallback()}updated(e){e.has("apiClient")&&this.apiClient&&(this._loadStats(),this._loadAgents()),e.has("rpcClient")&&this.rpcClient&&this._loadEmbeddingStats()}_normalizeEntry(e){return{id:String(e.id??""),content:String(e.content??""),memoryType:String(e.memoryType??e.type??"unknown"),trustLevel:String(e.trustLevel??e.trust??"unknown"),agentId:String(e.agentId??"unknown"),tenantId:String(e.tenantId??"default"),source:typeof e.source=="string"?e.source:void 0,tags:Array.isArray(e.tags)?e.tags:void 0,score:typeof e.score=="number"?e.score:void 0,hasEmbedding:!!(e.hasEmbedding??!1),embeddingDims:typeof e.embeddingDims=="number"?e.embeddingDims:void 0,createdAt:typeof e.createdAt=="number"?e.createdAt:Date.now(),updatedAt:typeof e.updatedAt=="number"?e.updatedAt:void 0}}async _loadStats(){if(this.apiClient)try{const t=await this.apiClient.getMemoryStats(),r=typeof t.stats=="object"&&t.stats!==null?t.stats:t;this._stats={totalEntries:r.totalEntries??0,totalSessions:r.totalSessions??0,embeddedEntries:r.embeddedEntries??0,dbSizeBytes:r.dbSizeBytes??0,byType:r.byType,byTrustLevel:r.byTrustLevel,byAgent:r.byAgent,oldestCreatedAt:r.oldestCreatedAt},this._statsLoaded=!0}catch{this._statsLoaded=!0}}async _loadAgents(){if(this.apiClient)try{const e=await this.apiClient.getAgents();this._agents=e.map(t=>t.id)}catch{}}async _loadEmbeddingStats(){if(!(!this.rpcClient||this._embeddingLoading)){this._embeddingLoading=!0;try{const e=await this.rpcClient.call("memory.embeddingCache");this._embeddingStats=e}catch{}finally{this._embeddingLoading=!1}}}async _search(){const e=this._query.trim();if(!(!e||!this.apiClient||this._loading)){this._loading=!0,this._error="",this._selectedIds=[];try{const t=await this.apiClient.searchMemory(e,50);this._results=t.map(r=>this._normalizeEntry(r)),this._searched=!0}catch(t){this._error=t instanceof Error&&!t.message.startsWith("Request failed")?t.message:"Search failed. Please try again.",this._results=[]}finally{this._loading=!1}}}async _browse(){if(!(!this.apiClient||this._loading)){this._loading=!0,this._error="",this._selectedIds=[];try{const e={offset:this._browseOffset,limit:this._browseLimit};this._typeFilter.size<b.length&&(e.type=[...this._typeFilter].join(",")),this._trustFilter.size<g.length&&(e.trust=[...this._trustFilter].join(",")),this._agentFilter&&(e.agentId=this._agentFilter),this._dateFrom&&(e.from=new Date(this._dateFrom).getTime()),this._dateTo&&(e.to=new Date(this._dateTo).getTime());const t=await this.apiClient.browseMemory(e);this._results=t.entries.map(r=>this._normalizeEntry(r)),this._total=t.total,this._searched=!0}catch(e){this._error=e instanceof Error&&!e.message.startsWith("Request failed")?e.message:"Browse failed. Please try again.",this._results=[]}finally{this._loading=!1}}}_applyFilters(e){return e.filter(t=>{if(!this._typeFilter.has(t.memoryType)||!this._trustFilter.has(t.trustLevel)||this._agentFilter&&t.agentId!==this._agentFilter)return!1;if(this._dateFrom){const r=new Date(this._dateFrom).getTime();if(t.createdAt<r)return!1}if(this._dateTo){const r=new Date(this._dateTo).getTime()+864e5;if(t.createdAt>r)return!1}return!0})}_getFilteredResults(){return this._mode==="search"?this._applyFilters(this._results):this._results}_toggleTypeFilter(e){const t=new Set(this._typeFilter);t.has(e)?t.delete(e):t.add(e),this._typeFilter=t}_toggleTrustFilter(e){const t=new Set(this._trustFilter);t.has(e)?t.delete(e):t.add(e),this._trustFilter=t}_handleModeChange(e){this._mode!==e&&(this._mode=e,this._results=[],this._searched=!1,this._error="",this._selectedIds=[],this._browseOffset=0,e==="browse"&&this._browse())}_handleSearchEvent(e){this._query=e.detail,this._query.trim()&&this._search()}_handleDetailRequested(e){this._selectedEntry=e.detail}_handleDetailClose(){this._selectedEntry=null}_handleSelectionChange(e){this._selectedIds=e.detail}_handleAgentFilterChange(e){this._agentFilter=e.target.value,this._mode==="browse"&&(this._browseOffset=0,this._browse())}_handleDateFromChange(e){this._dateFrom=e.target.value,this._mode==="browse"&&(this._browseOffset=0,this._browse())}_handleDateToChange(e){this._dateTo=e.target.value,this._mode==="browse"&&(this._browseOffset=0,this._browse())}_toggleCreateForm(){this._createOpen=!this._createOpen,this._createOpen||(this._createContent="",this._createTags="",this._createTrustLevel="learned",this._createProvenance="",this._createMessage="")}async _submitCreate(){const e=this._createContent.trim();if(!(!e||!this.rpcClient||this._createSubmitting)){this._createSubmitting=!0,this._createMessage="";try{const t=this._createTags.split(",").map(r=>r.trim()).filter(Boolean);this._createProvenance.trim()&&t.push(`provenance:${this._createProvenance.trim()}`),await this.rpcClient.call("memory.store",{content:e,tags:t.length>0?t:void 0,trustLevel:this._createTrustLevel}),this._createMessage="Memory entry created successfully.",this._createMessageType="success",this._createContent="",this._createTags="",this._createProvenance="",this._loadStats(),this._mode==="browse"&&this._browse()}catch(t){this._createMessage=t instanceof Error?t.message:"Failed to create memory entry.",this._createMessageType="error"}finally{this._createSubmitting=!1}}}_openFlushDialog(){this._flushAgentId="",this._flushDialogOpen=!0}async _confirmFlush(){if(this._flushDialogOpen=!1,!(!this.rpcClient||this._flushSubmitting)){this._flushSubmitting=!0;try{await this.rpcClient.call("memory.flush",{agent_id:this._flushAgentId||void 0}),this._loadStats(),this._results=[],this._searched=!1,this._mode==="browse"&&this._browse()}catch(e){this._error=e instanceof Error?e.message:"Flush failed. Please try again."}finally{this._flushSubmitting=!1}}}_cancelFlush(){this._flushDialogOpen=!1}_handleBulkDelete(){this._confirmOpen=!0}async _confirmBulkDelete(){if(this._confirmOpen=!1,!(!this.apiClient||this._selectedIds.length===0))try{await this.apiClient.deleteMemoryBulk(this._selectedIds);const e=new Set(this._selectedIds);this._results=this._results.filter(t=>!e.has(t.id)),this._selectedIds=[],this._loadStats()}catch(e){this._error=e instanceof Error?e.message:"Delete failed. Please try again."}}_cancelBulkDelete(){this._confirmOpen=!1}async _handleExport(e){if(this.apiClient)try{const t=await this.apiClient.exportMemory(e),r=new Blob([t],{type:"application/jsonl"}),c=URL.createObjectURL(r),a=document.createElement("a");a.href=c,a.download=`memory-export-${Date.now()}.jsonl`,a.click(),URL.revokeObjectURL(c)}catch(t){this._error=t instanceof Error?t.message:"Export failed. Please try again."}}_handleExportAll(){this._handleExport()}_handleExportSelected(){this._handleExport(this._selectedIds)}async _handleEntryDeleted(e){if(!this.apiClient)return;const t=e.detail;try{await this.apiClient.deleteMemory(t),this._results=this._results.filter(r=>r.id!==t),this._selectedEntry=null,this._loadStats()}catch(r){this._error=r instanceof Error?r.message:"Delete failed. Please try again."}}_handleBrowsePrev(){this._browseOffset=Math.max(0,this._browseOffset-this._browseLimit),this._browse()}_handleBrowseNext(){this._browseOffset+=this._browseLimit,this._browse()}_formatBytes(e){if(e===0)return"0 B";const t=["B","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(1024));return`${(e/Math.pow(1024,r)).toFixed(r===0?0:1)} ${t[r]}`}_formatNumber(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}_formatRelativeTime(e){const r=Date.now()-e,c=Math.floor(r/1e3),a=Math.floor(c/60),d=Math.floor(a/60),l=Math.floor(d/24);if(l>365){const p=Math.floor(l/365);return`${p} year${p!==1?"s":""} ago`}if(l>30){const p=Math.floor(l/30);return`${p} month${p!==1?"s":""} ago`}return l>0?`${l} day${l!==1?"s":""} ago`:d>0?`${d} hour${d!==1?"s":""} ago`:a>0?`${a} min${a!==1?"s":""} ago`:"just now"}_formatFullDate(e){return new Date(e).toLocaleString()}_renderAgentChart(){const e=this._stats?.byAgent;if(!e)return h;const t=Object.entries(e).sort(([,d],[,l])=>l-d);if(t.length===0)return h;const r=t[0][1],c=t.slice(0,10),a=t.length-c.length;return i`
238
+ <div class="agent-chart">
239
+ <div class="agent-chart-title">Entries by Agent</div>
240
+ ${c.map(([d,l])=>i`
241
+ <div class="bar-container">
242
+ <div class="bar-label" title=${d}>${d}</div>
243
+ <div class="bar-track">
244
+ <div
245
+ class="bar-fill"
246
+ style="width: ${r>0?l/r*100:0}%"
247
+ ></div>
248
+ </div>
249
+ <div class="bar-value">${this._formatNumber(l)}</div>
250
+ </div>
251
+ `)}
252
+ ${a>0?i`<div class="agent-chart-overflow">and ${a} more</div>`:h}
253
+ </div>
254
+ `}_renderEmbeddingSection(){if(!this._embeddingStats)return h;const e=this._embeddingStats,t=e.circuitBreaker.state,r=t==="closed"?"success":t==="halfOpen"?"warning":t==="open"?"error":"default",c=t==="closed"?"Closed (Healthy)":t==="halfOpen"?"Half-Open (Recovering)":t==="open"?"Open (Failing)":"Unknown",a=e.vecAvailable?"success":"error",d=e.vecAvailable?"Active":"Unavailable";if(!e.enabled)return i`
255
+ <div class="embedding-section">
256
+ <div class="section-heading">Embedding Infrastructure</div>
257
+ <div class="embedding-disabled">
258
+ <span>Embedding cache not configured</span>
259
+ <span>Vec: <ic-tag variant=${a}>${d}</ic-tag></span>
260
+ <span>CB: <ic-tag variant=${r}>${c}</ic-tag></span>
261
+ </div>
262
+ </div>
263
+ `;const l=e.l1?(e.l1.hitRate*100).toFixed(1)+"%":"N/A",p=e.l1?`${e.l1.entries}/${e.l1.maxEntries}`:"N/A";return i`
264
+ <div class="embedding-section">
265
+ <div class="section-heading">Embedding Infrastructure</div>
266
+ <div class="stats-row">
267
+ <ic-stat-card label="Provider" value=${e.provider??"N/A"}></ic-stat-card>
268
+ <ic-stat-card label="L1 Hit Rate" value=${l}></ic-stat-card>
269
+ <ic-stat-card label="L1 Entries" value=${p}></ic-stat-card>
270
+ <ic-stat-card label="Vector Search" value=${d}></ic-stat-card>
271
+ </div>
272
+ <div class="stats-row">
273
+ <ic-stat-card label="L1 Hits" value=${this._formatNumber(e.l1?.hits??0)}></ic-stat-card>
274
+ <ic-stat-card label="L1 Misses" value=${this._formatNumber(e.l1?.misses??0)}></ic-stat-card>
275
+ <ic-stat-card label="Circuit Breaker" value=${c}></ic-stat-card>
276
+ </div>
277
+ </div>
278
+ `}render(){const e=this._getFilteredResults();return i`
279
+ <div class="page-header">Memory Inspector</div>
280
+
281
+ <!-- Stat cards -->
282
+ ${this._statsLoaded&&this._stats?i`
283
+ <div class="stats-row">
284
+ <ic-stat-card
285
+ label="Total Entries"
286
+ value=${this._formatNumber(this._stats.totalEntries)}
287
+ ></ic-stat-card>
288
+ <ic-stat-card
289
+ label="Sessions"
290
+ value=${this._formatNumber(this._stats.totalSessions)}
291
+ ></ic-stat-card>
292
+ <ic-stat-card
293
+ label="Vectors"
294
+ value=${this._formatNumber(this._stats.embeddedEntries)}
295
+ ></ic-stat-card>
296
+ <ic-stat-card
297
+ label="DB Size"
298
+ value=${this._formatBytes(this._stats.dbSizeBytes)}
299
+ ></ic-stat-card>
300
+ ${this._stats.oldestCreatedAt!=null?i`
301
+ <ic-stat-card
302
+ label="Oldest Entry"
303
+ value=${this._formatRelativeTime(this._stats.oldestCreatedAt)}
304
+ title=${this._formatFullDate(this._stats.oldestCreatedAt)}
305
+ ></ic-stat-card>
306
+ `:h}
307
+ </div>
308
+ ${this._stats.byType||this._stats.byTrustLevel?i`
309
+ <div class="stats-row">
310
+ ${this._stats.byType?Object.entries(this._stats.byType).map(([t,r])=>i`
311
+ <ic-stat-card label=${t} value=${this._formatNumber(r)}></ic-stat-card>
312
+ `):h}
313
+ ${this._stats.byTrustLevel?Object.entries(this._stats.byTrustLevel).map(([t,r])=>i`
314
+ <ic-stat-card label=${"Trust: "+t} value=${this._formatNumber(r)}></ic-stat-card>
315
+ `):h}
316
+ </div>
317
+ `:h}
318
+ ${this._renderAgentChart()}
319
+ `:h}
320
+
321
+ <!-- Embedding Infrastructure -->
322
+ ${this._renderEmbeddingSection()}
323
+
324
+ <!-- Creation form -->
325
+ <button class="create-toggle" @click=${this._toggleCreateForm}>
326
+ ${this._createOpen?"- Hide Create Form":"+ Create Entry"}
327
+ </button>
328
+
329
+ ${this._createOpen?i`
330
+ <div class="create-form">
331
+ <div class="create-form-title">Create Memory Entry</div>
332
+
333
+ <div class="create-field">
334
+ <label class="create-label">Content *</label>
335
+ <textarea
336
+ class="create-textarea"
337
+ placeholder="Memory content..."
338
+ .value=${this._createContent}
339
+ @input=${t=>{this._createContent=t.target.value}}
340
+ ></textarea>
341
+ </div>
342
+
343
+ <div class="create-field">
344
+ <label class="create-label">Tags</label>
345
+ <input
346
+ class="create-input"
347
+ type="text"
348
+ placeholder="tag1, tag2, ..."
349
+ .value=${this._createTags}
350
+ @input=${t=>{this._createTags=t.target.value}}
351
+ />
352
+ </div>
353
+
354
+ <div class="create-field">
355
+ <label class="create-label">Trust Level</label>
356
+ <select
357
+ class="create-select"
358
+ .value=${this._createTrustLevel}
359
+ @change=${t=>{this._createTrustLevel=t.target.value}}
360
+ >
361
+ <option value="learned">learned</option>
362
+ <option value="external">external</option>
363
+ </select>
364
+ </div>
365
+
366
+ <div class="create-field">
367
+ <label class="create-label">Provenance</label>
368
+ <input
369
+ class="create-input"
370
+ type="text"
371
+ placeholder="Source description (optional)"
372
+ .value=${this._createProvenance}
373
+ @input=${t=>{this._createProvenance=t.target.value}}
374
+ />
375
+ </div>
376
+
377
+ <div class="create-actions">
378
+ <button
379
+ class="create-submit"
380
+ ?disabled=${!this._createContent.trim()||this._createSubmitting}
381
+ @click=${this._submitCreate}
382
+ >
383
+ ${this._createSubmitting?"Creating...":"Create"}
384
+ </button>
385
+ </div>
386
+
387
+ ${this._createMessage?i`<div class="create-message create-message--${this._createMessageType}">${this._createMessage}</div>`:h}
388
+ </div>
389
+ `:h}
390
+
391
+ <!-- Mode toggle + search bar + flush -->
392
+ <div class="toolbar">
393
+ <div class="mode-toggle">
394
+ <button
395
+ class="mode-btn"
396
+ ?data-active=${this._mode==="search"}
397
+ @click=${()=>this._handleModeChange("search")}
398
+ >
399
+ Search
400
+ </button>
401
+ <button
402
+ class="mode-btn"
403
+ ?data-active=${this._mode==="browse"}
404
+ @click=${()=>this._handleModeChange("browse")}
405
+ >
406
+ Browse All
407
+ </button>
408
+ </div>
409
+ ${this._mode==="search"?i`
410
+ <div class="search-wrapper">
411
+ <ic-search-input
412
+ placeholder="Search memories by content, topic, or keyword..."
413
+ .value=${this._query}
414
+ @search=${this._handleSearchEvent}
415
+ ></ic-search-input>
416
+ </div>
417
+ `:h}
418
+ <div class="toolbar-right">
419
+ <span class="filter-label">Flush scope:</span>
420
+ <select
421
+ class="filter-select"
422
+ .value=${this._flushAgentId}
423
+ @change=${t=>{this._flushAgentId=t.target.value}}
424
+ >
425
+ <option value="">All Agents</option>
426
+ ${this._agents.map(t=>i`<option value=${t}>${t}</option>`)}
427
+ </select>
428
+ <button class="flush-btn" @click=${this._openFlushDialog}>Flush Memory</button>
429
+ </div>
430
+ </div>
431
+
432
+ <!-- Filters row -->
433
+ <div class="filters-row">
434
+ <div class="filter-group">
435
+ <span class="filter-label">Type:</span>
436
+ ${b.map(t=>i`
437
+ <label class="filter-checkbox">
438
+ <input
439
+ type="checkbox"
440
+ .checked=${this._typeFilter.has(t)}
441
+ @change=${()=>this._toggleTypeFilter(t)}
442
+ />
443
+ ${t}
444
+ </label>
445
+ `)}
446
+ </div>
447
+
448
+ <div class="filter-group">
449
+ <span class="filter-label">Trust:</span>
450
+ ${g.map(t=>i`
451
+ <label class="filter-checkbox">
452
+ <input
453
+ type="checkbox"
454
+ .checked=${this._trustFilter.has(t)}
455
+ @change=${()=>this._toggleTrustFilter(t)}
456
+ />
457
+ ${t}
458
+ </label>
459
+ `)}
460
+ </div>
461
+
462
+ <div class="filter-group">
463
+ <span class="filter-label">Agent:</span>
464
+ <select
465
+ class="filter-select"
466
+ .value=${this._agentFilter}
467
+ @change=${this._handleAgentFilterChange}
468
+ >
469
+ <option value="">All</option>
470
+ ${this._agents.map(t=>i`<option value=${t}>${t}</option>`)}
471
+ </select>
472
+ </div>
473
+
474
+ <div class="filter-group">
475
+ <span class="filter-label">Date:</span>
476
+ <input
477
+ type="date"
478
+ class="filter-date"
479
+ .value=${this._dateFrom}
480
+ @change=${this._handleDateFromChange}
481
+ />
482
+ <span class="filter-label">to</span>
483
+ <input
484
+ type="date"
485
+ class="filter-date"
486
+ .value=${this._dateTo}
487
+ @change=${this._handleDateToChange}
488
+ />
489
+ </div>
490
+ </div>
491
+
492
+ <!-- Error -->
493
+ ${this._error?i`<div class="error-message">${this._error}</div>`:h}
494
+
495
+ <!-- Bulk actions bar -->
496
+ ${this._selectedIds.length>0?i`
497
+ <div class="bulk-bar">
498
+ <span class="bulk-count">${this._selectedIds.length} selected</span>
499
+ <button class="bulk-btn bulk-btn--delete" @click=${this._handleBulkDelete}>
500
+ Delete Selected
501
+ </button>
502
+ <button class="bulk-btn bulk-btn--export" @click=${this._handleExportSelected}>
503
+ Export Selected
504
+ </button>
505
+ </div>
506
+ `:h}
507
+
508
+ <!-- Results area -->
509
+ ${this._loading?i`
510
+ <div class="state-container">
511
+ <div class="loading-spinner"></div>
512
+ </div>
513
+ `:this._searched?i`
514
+ <!-- Results header -->
515
+ <div class="results-header">
516
+ <span class="result-count">
517
+ ${e.length} result${e.length!==1?"s":""}
518
+ ${this._mode==="browse"&&this._total>0?i` of ${this._total}`:h}
519
+ </span>
520
+ <button class="export-btn" @click=${this._handleExportAll}>
521
+ Export JSONL
522
+ </button>
523
+ </div>
524
+
525
+ <ic-memory-table
526
+ .entries=${e}
527
+ ?selectable=${!0}
528
+ @detail-requested=${this._handleDetailRequested}
529
+ @selection-change=${this._handleSelectionChange}
530
+ ></ic-memory-table>
531
+
532
+ <!-- Browse pagination controls -->
533
+ ${this._mode==="browse"?i`
534
+ <div class="browse-controls">
535
+ <span class="browse-info">
536
+ ${this._browseOffset+1}-${Math.min(this._browseOffset+this._browseLimit,this._total)}
537
+ of ${this._total}
538
+ </span>
539
+ <div class="browse-nav">
540
+ <button
541
+ class="browse-btn"
542
+ ?disabled=${this._browseOffset===0}
543
+ @click=${this._handleBrowsePrev}
544
+ >
545
+ Prev
546
+ </button>
547
+ <button
548
+ class="browse-btn"
549
+ ?disabled=${this._browseOffset+this._browseLimit>=this._total}
550
+ @click=${this._handleBrowseNext}
551
+ >
552
+ Next
553
+ </button>
554
+ </div>
555
+ </div>
556
+ `:h}
557
+ `:i`
558
+ <div class="empty-state">
559
+ <div>Search your agent's memory</div>
560
+ <div class="empty-hint">
561
+ Enter a query to find stored memories by content or semantic similarity
562
+ </div>
563
+ </div>
564
+ `}
565
+
566
+ <!-- Detail panel -->
567
+ <ic-detail-panel
568
+ ?open=${this._selectedEntry!==null}
569
+ panelTitle="Memory Entry"
570
+ @close=${this._handleDetailClose}
571
+ >
572
+ <ic-memory-detail
573
+ .entry=${this._selectedEntry}
574
+ @delete-requested=${this._handleEntryDeleted}
575
+ @close=${this._handleDetailClose}
576
+ ></ic-memory-detail>
577
+ </ic-detail-panel>
578
+
579
+ <!-- Confirm dialog for bulk delete -->
580
+ <ic-confirm-dialog
581
+ ?open=${this._confirmOpen}
582
+ title="Delete Memories"
583
+ message="Are you sure you want to delete ${this._selectedIds.length} selected ${this._selectedIds.length===1?"entry":"entries"}? This cannot be undone."
584
+ confirmLabel="Delete"
585
+ variant="danger"
586
+ @confirm=${this._confirmBulkDelete}
587
+ @cancel=${this._cancelBulkDelete}
588
+ ></ic-confirm-dialog>
589
+
590
+ <!-- Flush confirm dialog -->
591
+ <ic-confirm-dialog
592
+ ?open=${this._flushDialogOpen}
593
+ title="Flush Memory"
594
+ .message=${"This will permanently delete "+(this._flushAgentId?`all memory entries for agent "${this._flushAgentId}"`:"ALL memory entries")+". This cannot be undone."}
595
+ confirmLabel="Flush"
596
+ variant="danger"
597
+ @confirm=${this._confirmFlush}
598
+ @cancel=${this._cancelFlush}
599
+ ></ic-confirm-dialog>
600
+ `}};s.styles=[f,_,y`
601
+ :host {
602
+ display: block;
603
+ }
604
+
605
+ .page-header {
606
+ font-size: var(--ic-text-lg);
607
+ font-weight: 600;
608
+ color: var(--ic-text);
609
+ margin-bottom: var(--ic-space-md);
610
+ }
611
+
612
+ /* Stats row */
613
+ .stats-row {
614
+ display: flex;
615
+ gap: var(--ic-space-md);
616
+ flex-wrap: wrap;
617
+ margin-bottom: var(--ic-space-lg);
618
+ }
619
+
620
+ /* Mode toggle + search bar */
621
+ .toolbar {
622
+ display: flex;
623
+ gap: var(--ic-space-md);
624
+ align-items: center;
625
+ margin-bottom: var(--ic-space-md);
626
+ }
627
+
628
+ .mode-toggle {
629
+ display: flex;
630
+ background: var(--ic-surface);
631
+ border: 1px solid var(--ic-border);
632
+ border-radius: var(--ic-radius-md);
633
+ overflow: hidden;
634
+ flex-shrink: 0;
635
+ }
636
+
637
+ .mode-btn {
638
+ padding: var(--ic-space-sm) var(--ic-space-md);
639
+ background: transparent;
640
+ border: none;
641
+ color: var(--ic-text-muted);
642
+ font-size: var(--ic-text-sm);
643
+ font-family: inherit;
644
+ cursor: pointer;
645
+ transition: background var(--ic-transition), color var(--ic-transition);
646
+ white-space: nowrap;
647
+ }
648
+
649
+ .mode-btn:hover {
650
+ color: var(--ic-text);
651
+ }
652
+
653
+ .mode-btn[data-active] {
654
+ background: var(--ic-accent);
655
+ color: var(--ic-text);
656
+ }
657
+
658
+ .search-wrapper {
659
+ flex: 1;
660
+ }
661
+
662
+ /* Filters row */
663
+ .filters-row {
664
+ display: flex;
665
+ align-items: center;
666
+ gap: var(--ic-space-md);
667
+ margin-bottom: var(--ic-space-md);
668
+ flex-wrap: wrap;
669
+ }
670
+
671
+ .filter-group {
672
+ display: flex;
673
+ align-items: center;
674
+ gap: var(--ic-space-sm);
675
+ }
676
+
677
+ .filter-label {
678
+ font-size: var(--ic-text-xs);
679
+ color: var(--ic-text-dim);
680
+ font-weight: 500;
681
+ text-transform: uppercase;
682
+ letter-spacing: 0.03em;
683
+ white-space: nowrap;
684
+ }
685
+
686
+ .filter-checkbox {
687
+ display: flex;
688
+ align-items: center;
689
+ gap: 4px;
690
+ cursor: pointer;
691
+ font-size: var(--ic-text-sm);
692
+ color: var(--ic-text-muted);
693
+ }
694
+
695
+ .filter-checkbox input {
696
+ accent-color: var(--ic-accent);
697
+ }
698
+
699
+ .filter-select {
700
+ background: var(--ic-surface-2);
701
+ border: 1px solid var(--ic-border);
702
+ border-radius: var(--ic-radius-md);
703
+ padding: var(--ic-space-xs) var(--ic-space-sm);
704
+ color: var(--ic-text);
705
+ font-size: var(--ic-text-sm);
706
+ font-family: inherit;
707
+ cursor: pointer;
708
+ }
709
+
710
+ .filter-date {
711
+ background: var(--ic-surface-2);
712
+ border: 1px solid var(--ic-border);
713
+ border-radius: var(--ic-radius-md);
714
+ padding: var(--ic-space-xs) var(--ic-space-sm);
715
+ color: var(--ic-text);
716
+ font-size: var(--ic-text-sm);
717
+ font-family: inherit;
718
+ }
719
+
720
+ /* Results header */
721
+ .results-header {
722
+ display: flex;
723
+ align-items: center;
724
+ justify-content: space-between;
725
+ margin-bottom: var(--ic-space-sm);
726
+ }
727
+
728
+ .result-count {
729
+ font-size: var(--ic-text-sm);
730
+ color: var(--ic-text-muted);
731
+ }
732
+
733
+ .export-btn {
734
+ padding: var(--ic-space-xs) var(--ic-space-md);
735
+ background: transparent;
736
+ border: 1px solid var(--ic-border);
737
+ border-radius: var(--ic-radius-md);
738
+ color: var(--ic-text-muted);
739
+ font-size: var(--ic-text-sm);
740
+ font-family: inherit;
741
+ cursor: pointer;
742
+ transition: color var(--ic-transition), border-color var(--ic-transition);
743
+ }
744
+
745
+ .export-btn:hover {
746
+ color: var(--ic-text);
747
+ border-color: var(--ic-text-dim);
748
+ }
749
+
750
+ /* Bulk actions bar */
751
+ .bulk-bar {
752
+ display: flex;
753
+ align-items: center;
754
+ gap: var(--ic-space-md);
755
+ padding: var(--ic-space-sm) var(--ic-space-md);
756
+ background: var(--ic-surface);
757
+ border: 1px solid var(--ic-accent);
758
+ border-radius: var(--ic-radius-md);
759
+ margin-bottom: var(--ic-space-md);
760
+ }
761
+
762
+ .bulk-count {
763
+ font-size: var(--ic-text-sm);
764
+ color: var(--ic-text);
765
+ font-weight: 500;
766
+ }
767
+
768
+ .bulk-btn {
769
+ padding: var(--ic-space-xs) var(--ic-space-md);
770
+ border-radius: var(--ic-radius-md);
771
+ font-size: var(--ic-text-sm);
772
+ font-family: inherit;
773
+ cursor: pointer;
774
+ border: none;
775
+ transition: background var(--ic-transition);
776
+ }
777
+
778
+ .bulk-btn--delete {
779
+ background: var(--ic-error);
780
+ color: var(--ic-text);
781
+ }
782
+
783
+ .bulk-btn--delete:hover {
784
+ background: color-mix(in srgb, var(--ic-error) 85%, black);
785
+ }
786
+
787
+ .bulk-btn--export {
788
+ background: var(--ic-surface-2);
789
+ color: var(--ic-text-muted);
790
+ border: 1px solid var(--ic-border);
791
+ }
792
+
793
+ .bulk-btn--export:hover {
794
+ color: var(--ic-text);
795
+ }
796
+
797
+ /* Browse pagination controls */
798
+ .browse-controls {
799
+ display: flex;
800
+ align-items: center;
801
+ justify-content: space-between;
802
+ margin-top: var(--ic-space-md);
803
+ }
804
+
805
+ .browse-info {
806
+ font-size: var(--ic-text-sm);
807
+ color: var(--ic-text-muted);
808
+ }
809
+
810
+ .browse-nav {
811
+ display: flex;
812
+ gap: var(--ic-space-sm);
813
+ }
814
+
815
+ .browse-btn {
816
+ padding: var(--ic-space-xs) var(--ic-space-md);
817
+ background: transparent;
818
+ border: 1px solid var(--ic-border);
819
+ border-radius: var(--ic-radius-md);
820
+ color: var(--ic-text-muted);
821
+ font-size: var(--ic-text-sm);
822
+ font-family: inherit;
823
+ cursor: pointer;
824
+ transition: color var(--ic-transition), border-color var(--ic-transition);
825
+ }
826
+
827
+ .browse-btn:hover:not(:disabled) {
828
+ color: var(--ic-text);
829
+ border-color: var(--ic-text-dim);
830
+ }
831
+
832
+ .browse-btn:disabled {
833
+ opacity: 0.4;
834
+ cursor: not-allowed;
835
+ }
836
+
837
+ /* Loading / Error */
838
+ .state-container {
839
+ display: flex;
840
+ align-items: center;
841
+ justify-content: center;
842
+ padding: var(--ic-space-2xl);
843
+ color: var(--ic-text-dim);
844
+ font-size: var(--ic-text-sm);
845
+ }
846
+
847
+ .loading-spinner {
848
+ width: 1.5rem;
849
+ height: 1.5rem;
850
+ border: 2px solid var(--ic-border);
851
+ border-top-color: var(--ic-accent);
852
+ border-radius: 50%;
853
+ animation: spin 0.8s linear infinite;
854
+ }
855
+
856
+ @keyframes spin {
857
+ to {
858
+ transform: rotate(360deg);
859
+ }
860
+ }
861
+
862
+ .error-message {
863
+ color: var(--ic-error);
864
+ font-size: var(--ic-text-sm);
865
+ padding: var(--ic-space-md);
866
+ background: color-mix(in srgb, var(--ic-error) 8%, transparent);
867
+ border: 1px solid color-mix(in srgb, var(--ic-error) 30%, transparent);
868
+ border-radius: var(--ic-radius-md);
869
+ margin-bottom: var(--ic-space-md);
870
+ }
871
+
872
+ .empty-state {
873
+ text-align: center;
874
+ padding: var(--ic-space-2xl);
875
+ color: var(--ic-text-dim);
876
+ font-size: var(--ic-text-sm);
877
+ }
878
+
879
+ .empty-hint {
880
+ font-size: var(--ic-text-xs);
881
+ color: var(--ic-text-dim);
882
+ margin-top: var(--ic-space-xs);
883
+ }
884
+
885
+ /* By-agent bar chart */
886
+ .agent-chart {
887
+ margin-bottom: var(--ic-space-lg);
888
+ }
889
+
890
+ .agent-chart-title {
891
+ font-size: var(--ic-text-sm);
892
+ font-weight: 500;
893
+ color: var(--ic-text-muted);
894
+ text-transform: uppercase;
895
+ letter-spacing: 0.03em;
896
+ margin-bottom: var(--ic-space-sm);
897
+ }
898
+
899
+ .bar-container {
900
+ display: flex;
901
+ align-items: center;
902
+ gap: var(--ic-space-sm);
903
+ margin-bottom: var(--ic-space-xs);
904
+ }
905
+
906
+ .bar-label {
907
+ font-size: var(--ic-text-sm);
908
+ color: var(--ic-text);
909
+ min-width: 100px;
910
+ text-align: right;
911
+ overflow: hidden;
912
+ text-overflow: ellipsis;
913
+ white-space: nowrap;
914
+ flex-shrink: 0;
915
+ }
916
+
917
+ .bar-track {
918
+ flex: 1;
919
+ background: var(--ic-surface-2);
920
+ height: 8px;
921
+ border-radius: 4px;
922
+ overflow: hidden;
923
+ }
924
+
925
+ .bar-fill {
926
+ height: 100%;
927
+ border-radius: 4px;
928
+ background: var(--ic-accent);
929
+ transition: width 0.3s ease;
930
+ }
931
+
932
+ .bar-value {
933
+ font-size: var(--ic-text-xs);
934
+ color: var(--ic-text-dim);
935
+ min-width: 36px;
936
+ text-align: right;
937
+ flex-shrink: 0;
938
+ }
939
+
940
+ .agent-chart-overflow {
941
+ font-size: var(--ic-text-xs);
942
+ color: var(--ic-text-dim);
943
+ margin-top: var(--ic-space-xs);
944
+ padding-left: calc(100px + var(--ic-space-sm));
945
+ }
946
+
947
+ /* Creation form */
948
+ .create-toggle {
949
+ padding: var(--ic-space-xs) var(--ic-space-md);
950
+ background: transparent;
951
+ border: 1px solid var(--ic-border);
952
+ border-radius: var(--ic-radius-md);
953
+ color: var(--ic-text-muted);
954
+ font-size: var(--ic-text-sm);
955
+ font-family: inherit;
956
+ cursor: pointer;
957
+ transition: color var(--ic-transition), border-color var(--ic-transition);
958
+ }
959
+
960
+ .create-toggle:hover {
961
+ color: var(--ic-text);
962
+ border-color: var(--ic-text-dim);
963
+ }
964
+
965
+ .create-form {
966
+ background: var(--ic-surface);
967
+ border: 1px solid var(--ic-border);
968
+ border-radius: var(--ic-radius-md);
969
+ padding: var(--ic-space-md);
970
+ margin-bottom: var(--ic-space-md);
971
+ }
972
+
973
+ .create-form-title {
974
+ font-size: var(--ic-text-sm);
975
+ font-weight: 500;
976
+ color: var(--ic-text);
977
+ margin-bottom: var(--ic-space-md);
978
+ }
979
+
980
+ .create-field {
981
+ margin-bottom: var(--ic-space-sm);
982
+ }
983
+
984
+ .create-label {
985
+ display: block;
986
+ font-size: var(--ic-text-xs);
987
+ color: var(--ic-text-dim);
988
+ font-weight: 500;
989
+ text-transform: uppercase;
990
+ letter-spacing: 0.03em;
991
+ margin-bottom: var(--ic-space-xs);
992
+ }
993
+
994
+ .create-textarea {
995
+ width: 100%;
996
+ min-height: 80px;
997
+ background: var(--ic-surface-2);
998
+ border: 1px solid var(--ic-border);
999
+ border-radius: var(--ic-radius-md);
1000
+ padding: var(--ic-space-sm);
1001
+ color: var(--ic-text);
1002
+ font-size: var(--ic-text-sm);
1003
+ font-family: inherit;
1004
+ resize: vertical;
1005
+ box-sizing: border-box;
1006
+ }
1007
+
1008
+ .create-input {
1009
+ width: 100%;
1010
+ background: var(--ic-surface-2);
1011
+ border: 1px solid var(--ic-border);
1012
+ border-radius: var(--ic-radius-md);
1013
+ padding: var(--ic-space-sm);
1014
+ color: var(--ic-text);
1015
+ font-size: var(--ic-text-sm);
1016
+ font-family: inherit;
1017
+ box-sizing: border-box;
1018
+ }
1019
+
1020
+ .create-select {
1021
+ background: var(--ic-surface-2);
1022
+ border: 1px solid var(--ic-border);
1023
+ border-radius: var(--ic-radius-md);
1024
+ padding: var(--ic-space-sm);
1025
+ color: var(--ic-text);
1026
+ font-size: var(--ic-text-sm);
1027
+ font-family: inherit;
1028
+ cursor: pointer;
1029
+ }
1030
+
1031
+ .create-actions {
1032
+ display: flex;
1033
+ gap: var(--ic-space-sm);
1034
+ margin-top: var(--ic-space-md);
1035
+ }
1036
+
1037
+ .create-submit {
1038
+ padding: var(--ic-space-sm) var(--ic-space-lg);
1039
+ background: var(--ic-accent);
1040
+ border: none;
1041
+ border-radius: var(--ic-radius-md);
1042
+ color: var(--ic-text);
1043
+ font-size: var(--ic-text-sm);
1044
+ font-family: inherit;
1045
+ cursor: pointer;
1046
+ font-weight: 500;
1047
+ transition: background var(--ic-transition);
1048
+ }
1049
+
1050
+ .create-submit:hover:not(:disabled) {
1051
+ background: color-mix(in srgb, var(--ic-accent) 85%, white);
1052
+ }
1053
+
1054
+ .create-submit:disabled {
1055
+ opacity: 0.4;
1056
+ cursor: not-allowed;
1057
+ }
1058
+
1059
+ .create-message {
1060
+ font-size: var(--ic-text-sm);
1061
+ padding: var(--ic-space-xs) var(--ic-space-sm);
1062
+ border-radius: var(--ic-radius-md);
1063
+ margin-top: var(--ic-space-sm);
1064
+ }
1065
+
1066
+ .create-message--success {
1067
+ color: var(--ic-success, #4ade80);
1068
+ background: color-mix(in srgb, var(--ic-success, #4ade80) 10%, transparent);
1069
+ }
1070
+
1071
+ .create-message--error {
1072
+ color: var(--ic-error);
1073
+ background: color-mix(in srgb, var(--ic-error) 10%, transparent);
1074
+ }
1075
+
1076
+ /* Flush button */
1077
+ .flush-btn {
1078
+ padding: var(--ic-space-xs) var(--ic-space-md);
1079
+ background: transparent;
1080
+ border: 1px solid var(--ic-error);
1081
+ border-radius: var(--ic-radius-md);
1082
+ color: var(--ic-error);
1083
+ font-size: var(--ic-text-sm);
1084
+ font-family: inherit;
1085
+ cursor: pointer;
1086
+ transition: background var(--ic-transition), color var(--ic-transition);
1087
+ margin-left: auto;
1088
+ }
1089
+
1090
+ .flush-btn:hover {
1091
+ background: color-mix(in srgb, var(--ic-error) 15%, transparent);
1092
+ }
1093
+
1094
+ /* Flush scope filter */
1095
+ .flush-scope {
1096
+ margin-bottom: var(--ic-space-md);
1097
+ }
1098
+
1099
+ .flush-scope-label {
1100
+ display: block;
1101
+ font-size: var(--ic-text-xs);
1102
+ color: var(--ic-text-dim);
1103
+ font-weight: 500;
1104
+ text-transform: uppercase;
1105
+ letter-spacing: 0.03em;
1106
+ margin-bottom: var(--ic-space-xs);
1107
+ }
1108
+
1109
+ .toolbar-right {
1110
+ display: flex;
1111
+ align-items: center;
1112
+ gap: var(--ic-space-sm);
1113
+ margin-left: auto;
1114
+ }
1115
+
1116
+ /* Embedding infrastructure section */
1117
+ .embedding-section {
1118
+ margin-bottom: var(--ic-space-lg);
1119
+ }
1120
+
1121
+ .section-heading {
1122
+ font-size: var(--ic-text-md);
1123
+ font-weight: 600;
1124
+ color: var(--ic-text);
1125
+ margin-bottom: var(--ic-space-md);
1126
+ }
1127
+
1128
+ .embedding-disabled {
1129
+ font-size: var(--ic-text-sm);
1130
+ color: var(--ic-text-dim);
1131
+ padding: var(--ic-space-md);
1132
+ background: var(--ic-surface);
1133
+ border: 1px solid var(--ic-border);
1134
+ border-radius: var(--ic-radius-md);
1135
+ display: flex;
1136
+ align-items: center;
1137
+ gap: var(--ic-space-md);
1138
+ }
1139
+ `];o([m({attribute:!1})],s.prototype,"apiClient",2);o([m({attribute:!1})],s.prototype,"rpcClient",2);o([n()],s.prototype,"_mode",2);o([n()],s.prototype,"_query",2);o([n()],s.prototype,"_results",2);o([n()],s.prototype,"_loading",2);o([n()],s.prototype,"_searched",2);o([n()],s.prototype,"_error",2);o([n()],s.prototype,"_stats",2);o([n()],s.prototype,"_statsLoaded",2);o([n()],s.prototype,"_selectedEntry",2);o([n()],s.prototype,"_selectedIds",2);o([n()],s.prototype,"_typeFilter",2);o([n()],s.prototype,"_trustFilter",2);o([n()],s.prototype,"_agentFilter",2);o([n()],s.prototype,"_dateFrom",2);o([n()],s.prototype,"_dateTo",2);o([n()],s.prototype,"_browseOffset",2);o([n()],s.prototype,"_browseLimit",2);o([n()],s.prototype,"_total",2);o([n()],s.prototype,"_agents",2);o([n()],s.prototype,"_confirmOpen",2);o([n()],s.prototype,"_createOpen",2);o([n()],s.prototype,"_createContent",2);o([n()],s.prototype,"_createTags",2);o([n()],s.prototype,"_createTrustLevel",2);o([n()],s.prototype,"_createProvenance",2);o([n()],s.prototype,"_createSubmitting",2);o([n()],s.prototype,"_createMessage",2);o([n()],s.prototype,"_createMessageType",2);o([n()],s.prototype,"_embeddingStats",2);o([n()],s.prototype,"_embeddingLoading",2);o([n()],s.prototype,"_flushDialogOpen",2);o([n()],s.prototype,"_flushAgentId",2);o([n()],s.prototype,"_flushSubmitting",2);s=o([$("ic-memory-inspector")],s);export{s as IcMemoryInspector};