comisai 1.0.24 → 1.0.26
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.
- package/node_modules/@comis/agent/dist/bootstrap/sections/tool-descriptions.js +130 -10
- package/node_modules/@comis/agent/dist/bootstrap/sections/tooling-sections.d.ts +1 -1
- package/node_modules/@comis/agent/dist/bootstrap/sections/tooling-sections.js +9 -2
- package/node_modules/@comis/agent/dist/bridge/bridge-metrics.d.ts +8 -0
- package/node_modules/@comis/agent/dist/bridge/bridge-metrics.js +2 -0
- package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.d.ts +29 -0
- package/node_modules/@comis/agent/dist/bridge/pi-event-bridge.js +242 -2
- package/node_modules/@comis/agent/dist/bridge/thinking-block-hash-invariant.d.ts +210 -0
- package/node_modules/@comis/agent/dist/bridge/thinking-block-hash-invariant.js +566 -0
- package/node_modules/@comis/agent/dist/context-engine/context-engine.js +8 -6
- package/node_modules/@comis/agent/dist/context-engine/signature-replay-scrubber.d.ts +51 -30
- package/node_modules/@comis/agent/dist/context-engine/signature-replay-scrubber.js +109 -36
- package/node_modules/@comis/agent/dist/executor/executor-context-engine-setup.js +5 -1
- package/node_modules/@comis/agent/dist/executor/executor-post-execution.js +22 -20
- package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.d.ts +2 -0
- package/node_modules/@comis/agent/dist/executor/executor-prompt-runner.js +111 -15
- package/node_modules/@comis/agent/dist/executor/executor-response-filter.d.ts +20 -17
- package/node_modules/@comis/agent/dist/executor/executor-response-filter.js +132 -52
- package/node_modules/@comis/agent/dist/executor/executor-tool-assembly.js +16 -3
- package/node_modules/@comis/agent/dist/executor/model-retry.d.ts +14 -0
- package/node_modules/@comis/agent/dist/executor/model-retry.js +72 -1
- package/node_modules/@comis/agent/dist/executor/pi-executor.d.ts +3 -0
- package/node_modules/@comis/agent/dist/executor/pi-executor.js +68 -9
- package/node_modules/@comis/agent/dist/executor/post-batch-continuation.d.ts +82 -0
- package/node_modules/@comis/agent/dist/executor/post-batch-continuation.js +200 -0
- package/node_modules/@comis/agent/dist/executor/stream-wrappers/request-body-injector.js +1 -9
- package/node_modules/@comis/agent/dist/executor/tool-deferral.d.ts +37 -2
- package/node_modules/@comis/agent/dist/executor/tool-deferral.js +45 -3
- package/node_modules/@comis/agent/dist/executor/tool-parallelism.js +0 -1
- package/node_modules/@comis/agent/dist/executor/types.d.ts +11 -2
- package/node_modules/@comis/agent/dist/index.d.ts +3 -1
- package/node_modules/@comis/agent/dist/index.js +2 -0
- package/node_modules/@comis/agent/dist/model/last-known-model.d.ts +36 -0
- package/node_modules/@comis/agent/dist/model/last-known-model.js +49 -0
- package/node_modules/@comis/agent/dist/model/model-registry-adapter.d.ts +16 -4
- package/node_modules/@comis/agent/dist/model/model-registry-adapter.js +65 -21
- package/node_modules/@comis/agent/dist/planner/types.d.ts +0 -2
- package/node_modules/@comis/agent/dist/session/comis-session-manager.d.ts +10 -0
- package/node_modules/@comis/agent/dist/session/comis-session-manager.js +5 -0
- package/node_modules/@comis/agent/dist/spawn/pi-mono-adapters.js +7 -0
- package/node_modules/@comis/agent/package.json +1 -1
- package/node_modules/@comis/channels/package.json +1 -1
- package/node_modules/@comis/cli/dist/client/rpc-client.js +6 -1
- package/node_modules/@comis/cli/dist/commands/doctor.js +5 -3
- package/node_modules/@comis/cli/dist/commands/health.js +5 -2
- package/node_modules/@comis/cli/dist/wizard/json-output.js +7 -3
- package/node_modules/@comis/cli/dist/wizard/steps/11-daemon-start.js +130 -0
- package/node_modules/@comis/cli/package.json +1 -1
- package/node_modules/@comis/core/dist/bootstrap.js +5 -0
- package/node_modules/@comis/core/dist/config/env-layer.d.ts +31 -0
- package/node_modules/@comis/core/dist/config/env-layer.js +41 -0
- package/node_modules/@comis/core/dist/config/immutable-keys.d.ts +2 -2
- package/node_modules/@comis/core/dist/config/immutable-keys.js +8 -3
- package/node_modules/@comis/core/dist/config/layered.d.ts +9 -0
- package/node_modules/@comis/core/dist/config/layered.js +11 -0
- package/node_modules/@comis/core/dist/config/managed-sections.d.ts +43 -4
- package/node_modules/@comis/core/dist/config/managed-sections.js +100 -6
- package/node_modules/@comis/core/dist/config/schema-agent.d.ts +39 -0
- package/node_modules/@comis/core/dist/config/schema-agent.js +14 -0
- package/node_modules/@comis/core/dist/config/schema.d.ts +4 -0
- package/node_modules/@comis/core/dist/config/schema.js +14 -0
- package/node_modules/@comis/core/dist/domain/execution-graph.d.ts +1 -1
- package/node_modules/@comis/core/dist/event-bus/events-agent.d.ts +17 -2
- package/node_modules/@comis/core/dist/exports/config.d.ts +2 -2
- package/node_modules/@comis/core/dist/exports/config.js +1 -1
- package/node_modules/@comis/core/package.json +1 -1
- package/node_modules/@comis/daemon/dist/daemon.d.ts +22 -0
- package/node_modules/@comis/daemon/dist/daemon.js +45 -0
- package/node_modules/@comis/daemon/dist/rpc/agent-handlers.d.ts +5 -2
- package/node_modules/@comis/daemon/dist/rpc/agent-handlers.js +80 -1
- package/node_modules/@comis/daemon/dist/rpc/agent-inline-workspace.d.ts +67 -0
- package/node_modules/@comis/daemon/dist/rpc/agent-inline-workspace.js +139 -0
- package/node_modules/@comis/daemon/dist/rpc/model-handlers.d.ts +3 -0
- package/node_modules/@comis/daemon/dist/rpc/model-handlers.js +29 -5
- package/node_modules/@comis/daemon/dist/rpc/probe-provider-auth.d.ts +30 -0
- package/node_modules/@comis/daemon/dist/rpc/probe-provider-auth.js +59 -0
- package/node_modules/@comis/daemon/dist/rpc/provider-handlers.d.ts +37 -0
- package/node_modules/@comis/daemon/dist/rpc/provider-handlers.js +330 -0
- package/node_modules/@comis/daemon/dist/rpc/rpc-dispatch.js +18 -1
- package/node_modules/@comis/daemon/dist/setup-docker-restart-warn.d.ts +4 -0
- package/node_modules/@comis/daemon/dist/setup-docker-restart-warn.js +30 -0
- package/node_modules/@comis/daemon/dist/wiring/setup-agents.d.ts +3 -1
- package/node_modules/@comis/daemon/dist/wiring/setup-agents.js +28 -2
- package/node_modules/@comis/daemon/dist/wiring/setup-cross-session.js +1 -0
- package/node_modules/@comis/daemon/dist/wiring/setup-tools.js +7 -4
- package/node_modules/@comis/daemon/package.json +1 -1
- package/node_modules/@comis/gateway/package.json +1 -1
- package/node_modules/@comis/infra/dist/index.d.ts +1 -0
- package/node_modules/@comis/infra/dist/index.js +2 -0
- package/node_modules/@comis/infra/dist/runtime/is-docker.d.ts +1 -0
- package/node_modules/@comis/infra/dist/runtime/is-docker.js +25 -0
- package/node_modules/@comis/infra/package.json +1 -1
- package/node_modules/@comis/memory/package.json +1 -1
- package/node_modules/@comis/scheduler/package.json +1 -1
- package/node_modules/@comis/shared/package.json +1 -1
- package/node_modules/@comis/skills/dist/bridge/tool-metadata-registry.js +1 -3
- package/node_modules/@comis/skills/dist/builtin/platform/admin-manage-factory.js +24 -1
- package/node_modules/@comis/skills/dist/builtin/platform/agents-manage-tool.d.ts +53 -7
- package/node_modules/@comis/skills/dist/builtin/platform/agents-manage-tool.js +218 -24
- package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.d.ts +4 -1
- package/node_modules/@comis/skills/dist/builtin/platform/gateway-tool.js +16 -1
- package/node_modules/@comis/skills/dist/builtin/platform/index.d.ts +1 -1
- package/node_modules/@comis/skills/dist/builtin/platform/index.js +1 -1
- package/node_modules/@comis/skills/dist/builtin/platform/providers-manage-tool.d.ts +56 -0
- package/node_modules/@comis/skills/dist/builtin/platform/providers-manage-tool.js +203 -0
- package/node_modules/@comis/skills/dist/index.d.ts +1 -1
- package/node_modules/@comis/skills/dist/index.js +2 -2
- package/node_modules/@comis/skills/dist/policy/tool-policy.js +0 -1
- package/node_modules/@comis/skills/package.json +1 -1
- package/node_modules/@comis/web/dist/assets/{agent-detail-BG9MGWWj.js → agent-detail-DqL6Artv.js} +270 -270
- package/node_modules/@comis/web/dist/assets/agent-editor-CNM_h94Y.js +2173 -0
- package/node_modules/@comis/web/dist/assets/{agent-list-LHCJ4rw2.js → agent-list-Dbh-xD_F.js} +170 -170
- package/node_modules/@comis/web/dist/assets/{approvals-q9VH_IKr.js → approvals-C-K6hN2U.js} +13 -13
- package/node_modules/@comis/web/dist/assets/billing-view-C1DmtyzK.js +375 -0
- package/node_modules/@comis/web/dist/assets/{channel-detail-CaInesJM.js → channel-detail-CtCH22N1.js} +265 -265
- package/node_modules/@comis/web/dist/assets/channel-list-C7xXn-60.js +323 -0
- package/node_modules/@comis/web/dist/assets/{chat-console-CNmzl0JW.js → chat-console-C51pjFwk.js} +243 -246
- package/node_modules/@comis/web/dist/assets/{config-editor-DX4ITw6y.js → config-editor-BLArYRB7.js} +477 -477
- package/node_modules/@comis/web/dist/assets/{context-dag-browser-BwiaF5tf.js → context-dag-browser-fuyMinNI.js} +105 -105
- package/node_modules/@comis/web/dist/assets/{context-engine-BZ5Am6hA.js → context-engine-Bngf2bH0.js} +136 -136
- package/node_modules/@comis/web/dist/assets/decorate-BvWYovGE.js +38 -0
- package/node_modules/@comis/web/dist/assets/{delivery-view-OfBZof-m.js → delivery-view-C80hucxX.js} +134 -134
- package/node_modules/@comis/web/dist/assets/{diagnostics-view-YFwCxgr2.js → diagnostics-view-Cl4VbHZ6.js} +82 -82
- package/node_modules/@comis/web/dist/assets/directive-BOYXJ-K-.js +1 -0
- package/node_modules/@comis/web/dist/assets/{extract-variables-BM5qyK-s.js → extract-variables-B7-Doo7l.js} +39 -39
- package/node_modules/@comis/web/dist/assets/{ic-array-editor-B7m6x7-S.js → ic-array-editor-BLoEyeLS.js} +29 -29
- package/node_modules/@comis/web/dist/assets/{ic-breadcrumb-CUMpp3BL.js → ic-breadcrumb-DqN6G3gc.js} +16 -16
- package/node_modules/@comis/web/dist/assets/{ic-budget-segment-bar-BtJ6x5mN.js → ic-budget-segment-bar-zLsMzjDO.js} +20 -20
- package/node_modules/@comis/web/dist/assets/ic-chat-message-ByFUoMm6.js +352 -0
- package/node_modules/@comis/web/dist/assets/{ic-confirm-dialog-CCDbB04e.js → ic-confirm-dialog-DGlPbV1T.js} +26 -26
- package/node_modules/@comis/web/dist/assets/{ic-connection-dot-CnT1b8xr.js → ic-connection-dot-C4nDHgY2.js} +13 -13
- package/node_modules/@comis/web/dist/assets/ic-data-table-CKIvr-ag.js +277 -0
- package/node_modules/@comis/web/dist/assets/ic-delivery-row-B3YwjjuM.js +67 -0
- package/node_modules/@comis/web/dist/assets/{ic-detail-panel-BF83r-if.js → ic-detail-panel-DiCe4hLr.js} +27 -27
- package/node_modules/@comis/web/dist/assets/{ic-empty-state-60l2ePhd.js → ic-empty-state-CM3Wbj2f.js} +19 -19
- package/node_modules/@comis/web/dist/assets/ic-graph-canvas-ByRjij68.js +359 -0
- package/node_modules/@comis/web/dist/assets/ic-icon-BGNCCPpZ.js +33 -0
- package/node_modules/@comis/web/dist/assets/{ic-layer-waterfall-COvEYMg5.js → ic-layer-waterfall-WkaFyu-l.js} +18 -18
- package/node_modules/@comis/web/dist/assets/ic-relative-time-B3UAnTqg.js +12 -0
- package/node_modules/@comis/web/dist/assets/{ic-search-input-CSOxY9g7.js → ic-search-input-B02AGw1i.js} +22 -22
- package/node_modules/@comis/web/dist/assets/{ic-select-Ce-Raudx.js → ic-select-BqfZISjw.js} +29 -29
- package/node_modules/@comis/web/dist/assets/ic-tabs-yBjkWKJH.js +95 -0
- package/node_modules/@comis/web/dist/assets/ic-tag-CvMVQFRR.js +33 -0
- package/node_modules/@comis/web/dist/assets/{ic-time-range-picker-CypCT68y.js → ic-time-range-picker-DXbYeBmY.js} +31 -31
- package/node_modules/@comis/web/dist/assets/{ic-tool-call-7MaXSsCW.js → ic-tool-call-Bh5kq-yY.js} +51 -51
- package/node_modules/@comis/web/dist/assets/index-BBkuC-EU.js +2792 -0
- package/node_modules/@comis/web/dist/assets/index-CVEaS9aY.css +2 -0
- package/node_modules/@comis/web/dist/assets/{mcp-management-BNZPnpDn.js → mcp-management-DB-phOo7.js} +209 -209
- package/node_modules/@comis/web/dist/assets/{media-config-BBvTYxOX.js → media-config-CRqZ1ZUH.js} +154 -154
- package/node_modules/@comis/web/dist/assets/{media-test-BkK3RCRK.js → media-test-C9vE20Oy.js} +259 -259
- package/node_modules/@comis/web/dist/assets/{memory-inspector-1hDGCGat.js → memory-inspector-CeqfnxMZ.js} +450 -450
- package/node_modules/@comis/web/dist/assets/{message-center-CXefwsUu.js → message-center-Daup7Mof.js} +290 -290
- package/node_modules/@comis/web/dist/assets/{models-C1qcU_j3.js → models-DLYnEU8E.js} +371 -371
- package/node_modules/@comis/web/dist/assets/observability-types-D0tkwElU.js +1 -0
- package/node_modules/@comis/web/dist/assets/{observe-view-C0VBhX4C.js → observe-view-BTSt_PO5.js} +399 -399
- package/node_modules/@comis/web/dist/assets/pipeline-builder-DknfzyLt.js +1495 -0
- package/node_modules/@comis/web/dist/assets/{pipeline-history-DkfOQ6SW.js → pipeline-history-JnHZdeU_.js} +124 -124
- package/node_modules/@comis/web/dist/assets/{pipeline-history-detail-hyHgD0ai.js → pipeline-history-detail-Dg4knsEb.js} +65 -65
- package/node_modules/@comis/web/dist/assets/{pipeline-list-BPW8hV-q.js → pipeline-list-AEnibjsp.js} +227 -227
- package/node_modules/@comis/web/dist/assets/{pipeline-monitor-Bip16T7e.js → pipeline-monitor-DG7RbIOO.js} +298 -298
- package/node_modules/@comis/web/dist/assets/{scheduler-BGgwKd06.js → scheduler-uL1fYKAT.js} +486 -486
- package/node_modules/@comis/web/dist/assets/{security-D15st4xx.js → security-C3DywRLH.js} +389 -389
- package/node_modules/@comis/web/dist/assets/{session-detail-SGEYNJ0M.js → session-detail-BtqCNWXV.js} +294 -294
- package/node_modules/@comis/web/dist/assets/session-key-parser-Dkqcj2Ss.js +1 -0
- package/node_modules/@comis/web/dist/assets/session-list-CJXWa2XT.js +231 -0
- package/node_modules/@comis/web/dist/assets/{setup-wizard-nT0tz9QP.js → setup-wizard-ywn7oJvu.js} +486 -494
- package/node_modules/@comis/web/dist/assets/{skills-D8yVfSUy.js → skills-DX0KYnWD.js} +329 -329
- package/node_modules/@comis/web/dist/assets/{subagents-HHXMeHYo.js → subagents-B8p5YJEB.js} +74 -74
- package/node_modules/@comis/web/dist/assets/{workspace-manager-BQlr10iH.js → workspace-manager-CgzNIrw1.js} +236 -236
- package/node_modules/@comis/web/dist/index.html +3 -2
- package/node_modules/@comis/web/package.json +1 -1
- package/package.json +15 -15
- package/node_modules/@comis/skills/dist/builtin/platform/agents-list-tool.d.ts +0 -19
- package/node_modules/@comis/skills/dist/builtin/platform/agents-list-tool.js +0 -39
- package/node_modules/@comis/web/dist/assets/agent-editor-C26Q_xCs.js +0 -2173
- package/node_modules/@comis/web/dist/assets/billing-view-CtYvBqTE.js +0 -375
- package/node_modules/@comis/web/dist/assets/channel-list-B8dj3O9a.js +0 -323
- package/node_modules/@comis/web/dist/assets/directive-DoeGSK_T.js +0 -1
- package/node_modules/@comis/web/dist/assets/ic-chat-message-CFyDJd0z.js +0 -352
- package/node_modules/@comis/web/dist/assets/ic-data-table-CKUNTxHw.js +0 -277
- package/node_modules/@comis/web/dist/assets/ic-delivery-row-GP5Fkygs.js +0 -67
- package/node_modules/@comis/web/dist/assets/ic-graph-canvas-C8FuSMe1.js +0 -359
- package/node_modules/@comis/web/dist/assets/ic-icon-xeGTVhVG.js +0 -33
- package/node_modules/@comis/web/dist/assets/ic-relative-time-3FqpjeAI.js +0 -12
- package/node_modules/@comis/web/dist/assets/ic-tabs-B7QtM_v8.js +0 -95
- package/node_modules/@comis/web/dist/assets/ic-tag-CPPUnDLF.js +0 -33
- package/node_modules/@comis/web/dist/assets/index-CEcM1R_C.js +0 -2830
- package/node_modules/@comis/web/dist/assets/index-CIJFuItj.css +0 -1
- package/node_modules/@comis/web/dist/assets/observability-types-D7jUtSde.js +0 -1
- package/node_modules/@comis/web/dist/assets/pipeline-builder-DcUUIrm0.js +0 -1496
- package/node_modules/@comis/web/dist/assets/session-key-parser-DPORMVyU.js +0 -1
- package/node_modules/@comis/web/dist/assets/session-list-6ybUTxbY.js +0 -231
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
import{
|
|
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`
|
|
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"./index-BBkuC-EU.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-data-table-CKIvr-ag.js";import"./ic-search-input-B02AGw1i.js";import"./ic-detail-panel-DiCe4hLr.js";var u=class extends r{constructor(...e){super(...e),this.entries=[],this.selectable=!1}static{this.styles=[o,i,n`
|
|
11
2
|
:host {
|
|
12
3
|
display: block;
|
|
13
4
|
}
|
|
@@ -24,96 +15,16 @@ 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"./ind
|
|
|
24
15
|
text-overflow: ellipsis;
|
|
25
16
|
white-space: nowrap;
|
|
26
17
|
}
|
|
27
|
-
`]
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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">✓</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">✗</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`
|
|
18
|
+
`]}_hasScores(){return this.entries.some(e=>e.score!==void 0&&e.score!==null)}_getColumns(){let e=[];return this._hasScores()&&e.push({key:`score`,label:`Score`,sortable:!0,render:e=>{let n=e;return n==null?``:t`<span class="score-cell">${n.toFixed(3)}</span>`}}),e.push({key:`content`,label:`Content`,sortable:!1,render:e=>t`<span class="content-cell">${String(e??``)}</span>`},{key:`memoryType`,label:`Type`,sortable:!0,render:e=>t`<ic-tag variant=${this._typeVariant(String(e??``))}>${e}</ic-tag>`},{key:`trustLevel`,label:`Trust`,sortable:!0,render:e=>t`<ic-tag variant=${this._trustVariant(String(e??``))}>${e}</ic-tag>`},{key:`agentId`,label:`Agent`,sortable:!0},{key:`createdAt`,label:`Age`,sortable:!0,render:e=>{let n=e;return n?t`<ic-relative-time .timestamp=${n}></ic-relative-time>`:``}}),e}_typeVariant(e){let t=(e??``).toLowerCase();return t===`working`||t===`episodic`?`info`:t===`semantic`?`success`:t===`procedural`?`warning`:`default`}_trustVariant(e){let 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(){return t`
|
|
19
|
+
<ic-data-table
|
|
20
|
+
.columns=${this._getColumns()}
|
|
21
|
+
.rows=${this.entries}
|
|
22
|
+
?selectable=${this.selectable}
|
|
23
|
+
emptyMessage="No memory entries found"
|
|
24
|
+
@row-click=${this._handleRowClick}
|
|
25
|
+
@selection-change=${this._handleSelectionChange}
|
|
26
|
+
></ic-data-table>
|
|
27
|
+
`}};c([s({attribute:!1})],u.prototype,`entries`,void 0),c([s({type:Boolean})],u.prototype,`selectable`,void 0),u=c([e(`ic-memory-table`)],u);var d=class extends r{constructor(...e){super(...e),this.entry=null}static{this.styles=[o,i,n`
|
|
117
28
|
:host {
|
|
118
29
|
display: block;
|
|
119
30
|
}
|
|
@@ -234,370 +145,96 @@ 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"./ind
|
|
|
234
145
|
text-align: center;
|
|
235
146
|
padding: var(--ic-space-xl);
|
|
236
147
|
}
|
|
237
|
-
`]
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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>
|
|
148
|
+
`]}_typeVariant(e){let t=(e??``).toLowerCase();return t===`working`||t===`episodic`?`info`:t===`semantic`?`success`:t===`procedural`?`warning`:`default`}_trustVariant(e){let 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 t`<div class="empty-state">No entry selected</div>`;let e=this.entry;return t`
|
|
149
|
+
<!-- ID -->
|
|
150
|
+
<div class="detail-section">
|
|
151
|
+
<div class="detail-label">ID</div>
|
|
152
|
+
<div class="detail-id">${e.id}</div>
|
|
277
153
|
</div>
|
|
278
|
-
`}render(){const e=this._getFilteredResults();return i`
|
|
279
|
-
<div class="page-header">Memory Inspector</div>
|
|
280
154
|
|
|
281
|
-
<!--
|
|
282
|
-
${
|
|
283
|
-
<div class="
|
|
284
|
-
<
|
|
285
|
-
|
|
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}
|
|
155
|
+
<!-- Score (only if present) -->
|
|
156
|
+
${e.score!==void 0&&e.score!==null?t`
|
|
157
|
+
<div class="detail-section">
|
|
158
|
+
<div class="detail-label">Relevance Score</div>
|
|
159
|
+
<div class="score-display">${e.score.toFixed(4)}</div>
|
|
307
160
|
</div>
|
|
308
|
-
|
|
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()}
|
|
161
|
+
`:l}
|
|
323
162
|
|
|
324
|
-
<!--
|
|
325
|
-
<
|
|
326
|
-
|
|
327
|
-
|
|
163
|
+
<!-- Content -->
|
|
164
|
+
<div class="detail-section">
|
|
165
|
+
<div class="detail-label">Content</div>
|
|
166
|
+
<div class="content-block">${e.content}</div>
|
|
167
|
+
</div>
|
|
328
168
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
169
|
+
<!-- Classification -->
|
|
170
|
+
<div class="detail-section">
|
|
171
|
+
<div class="detail-label">Classification</div>
|
|
172
|
+
<div class="badges-row">
|
|
173
|
+
<ic-tag variant=${this._typeVariant(e.memoryType)}>${e.memoryType}</ic-tag>
|
|
174
|
+
<ic-tag variant=${this._trustVariant(e.trustLevel)}>${e.trustLevel}</ic-tag>
|
|
175
|
+
</div>
|
|
176
|
+
</div>
|
|
332
177
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
.value=${this._createContent}
|
|
339
|
-
@input=${t=>{this._createContent=t.target.value}}
|
|
340
|
-
></textarea>
|
|
341
|
-
</div>
|
|
178
|
+
<!-- Agent -->
|
|
179
|
+
<div class="detail-section">
|
|
180
|
+
<div class="detail-label">Agent</div>
|
|
181
|
+
<div class="detail-value">${e.agentId}</div>
|
|
182
|
+
</div>
|
|
342
183
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
@input=${t=>{this._createTags=t.target.value}}
|
|
351
|
-
/>
|
|
352
|
-
</div>
|
|
184
|
+
<!-- Source (if available) -->
|
|
185
|
+
${e.source?t`
|
|
186
|
+
<div class="detail-section">
|
|
187
|
+
<div class="detail-label">Source</div>
|
|
188
|
+
<div class="detail-value">${e.source}</div>
|
|
189
|
+
</div>
|
|
190
|
+
`:l}
|
|
353
191
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
>
|
|
361
|
-
<option value="learned">learned</option>
|
|
362
|
-
<option value="external">external</option>
|
|
363
|
-
</select>
|
|
192
|
+
<!-- Tags (if present) -->
|
|
193
|
+
${e.tags&&e.tags.length>0?t`
|
|
194
|
+
<div class="detail-section">
|
|
195
|
+
<div class="detail-label">Tags</div>
|
|
196
|
+
<div class="tags-list">
|
|
197
|
+
${e.tags.map(e=>t`<ic-tag variant="default">${e}</ic-tag>`)}
|
|
364
198
|
</div>
|
|
199
|
+
</div>
|
|
200
|
+
`:l}
|
|
365
201
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
202
|
+
<!-- Embedding status -->
|
|
203
|
+
<div class="detail-section">
|
|
204
|
+
<div class="detail-label">Embedding</div>
|
|
205
|
+
<div class="embedding-status">
|
|
206
|
+
${e.hasEmbedding?t`
|
|
207
|
+
<span class="embedding-icon embedding-icon--yes">✓</span>
|
|
208
|
+
<span>Indexed</span>
|
|
209
|
+
${e.embeddingDims?t`<span class="embedding-dims">(${e.embeddingDims} dims)</span>`:l}
|
|
210
|
+
`:t`
|
|
211
|
+
<span class="embedding-icon embedding-icon--no">✗</span>
|
|
212
|
+
<span>Not indexed</span>
|
|
213
|
+
`}
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
376
216
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
>
|
|
383
|
-
${this._createSubmitting?"Creating...":"Create"}
|
|
384
|
-
</button>
|
|
385
|
-
</div>
|
|
217
|
+
<!-- Created timestamp -->
|
|
218
|
+
<div class="detail-section">
|
|
219
|
+
<div class="detail-label">Created</div>
|
|
220
|
+
<div class="timestamp-value">${this._formatTimestamp(e.createdAt)}</div>
|
|
221
|
+
</div>
|
|
386
222
|
|
|
387
|
-
|
|
223
|
+
<!-- Updated timestamp (if exists) -->
|
|
224
|
+
${e.updatedAt?t`
|
|
225
|
+
<div class="detail-section">
|
|
226
|
+
<div class="detail-label">Updated</div>
|
|
227
|
+
<div class="timestamp-value">${this._formatTimestamp(e.updatedAt)}</div>
|
|
388
228
|
</div>
|
|
389
|
-
`:
|
|
229
|
+
`:l}
|
|
390
230
|
|
|
391
|
-
<!--
|
|
392
|
-
<div class="
|
|
393
|
-
<
|
|
394
|
-
|
|
395
|
-
|
|
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>
|
|
231
|
+
<!-- Delete button -->
|
|
232
|
+
<div class="detail-section">
|
|
233
|
+
<button class="delete-btn" @click=${this._handleDelete}>
|
|
234
|
+
Delete Entry
|
|
235
|
+
</button>
|
|
490
236
|
</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`
|
|
237
|
+
`}};c([s({attribute:!1})],d.prototype,`entry`,void 0),d=c([e(`ic-memory-detail`)],d);var f=[`working`,`episodic`,`semantic`,`procedural`],p=[`system`,`learned`,`external`],m=class extends r{constructor(...e){super(...e),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(f),this._trustFilter=new Set(p),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}static{this.styles=[o,i,n`
|
|
601
238
|
:host {
|
|
602
239
|
display: block;
|
|
603
240
|
}
|
|
@@ -1136,4 +773,367 @@ 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"./ind
|
|
|
1136
773
|
align-items: center;
|
|
1137
774
|
gap: var(--ic-space-md);
|
|
1138
775
|
}
|
|
1139
|
-
`]
|
|
776
|
+
`]}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{let e=await this.apiClient.getMemoryStats(),t=typeof e.stats==`object`&&e.stats!==null?e.stats:e;this._stats={totalEntries:t.totalEntries??0,totalSessions:t.totalSessions??0,embeddedEntries:t.embeddedEntries??0,dbSizeBytes:t.dbSizeBytes??0,byType:t.byType,byTrustLevel:t.byTrustLevel,byAgent:t.byAgent,oldestCreatedAt:t.oldestCreatedAt},this._statsLoaded=!0}catch{this._statsLoaded=!0}}async _loadAgents(){if(this.apiClient)try{let e=await this.apiClient.getAgents();this._agents=e.map(e=>e.id)}catch{}}async _loadEmbeddingStats(){if(!(!this.rpcClient||this._embeddingLoading)){this._embeddingLoading=!0;try{let e=await this.rpcClient.call(`memory.embeddingCache`);this._embeddingStats=e}catch{}finally{this._embeddingLoading=!1}}}async _search(){let e=this._query.trim();if(!(!e||!this.apiClient||this._loading)){this._loading=!0,this._error=``,this._selectedIds=[];try{let t=await this.apiClient.searchMemory(e,50);this._results=t.map(e=>this._normalizeEntry(e)),this._searched=!0}catch(e){this._error=e instanceof Error&&!e.message.startsWith(`Request failed`)?e.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{let e={offset:this._browseOffset,limit:this._browseLimit};this._typeFilter.size<f.length&&(e.type=[...this._typeFilter].join(`,`)),this._trustFilter.size<p.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());let t=await this.apiClient.browseMemory(e);this._results=t.entries.map(e=>this._normalizeEntry(e)),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(e=>{if(!this._typeFilter.has(e.memoryType)||!this._trustFilter.has(e.trustLevel)||this._agentFilter&&e.agentId!==this._agentFilter)return!1;if(this._dateFrom){let t=new Date(this._dateFrom).getTime();if(e.createdAt<t)return!1}if(this._dateTo){let t=new Date(this._dateTo).getTime()+864e5;if(e.createdAt>t)return!1}return!0})}_getFilteredResults(){return this._mode===`search`?this._applyFilters(this._results):this._results}_toggleTypeFilter(e){let t=new Set(this._typeFilter);t.has(e)?t.delete(e):t.add(e),this._typeFilter=t}_toggleTrustFilter(e){let 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(){let e=this._createContent.trim();if(!(!e||!this.rpcClient||this._createSubmitting)){this._createSubmitting=!0,this._createMessage=``;try{let t=this._createTags.split(`,`).map(e=>e.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(e){this._createMessage=e instanceof Error?e.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);let 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{let t=await this.apiClient.exportMemory(e),n=new Blob([t],{type:`application/jsonl`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`memory-export-${Date.now()}.jsonl`,i.click(),URL.revokeObjectURL(r)}catch(e){this._error=e instanceof Error?e.message:`Export failed. Please try again.`}}_handleExportAll(){this._handleExport()}_handleExportSelected(){this._handleExport(this._selectedIds)}async _handleEntryDeleted(e){if(!this.apiClient)return;let t=e.detail;try{await this.apiClient.deleteMemory(t),this._results=this._results.filter(e=>e.id!==t),this._selectedEntry=null,this._loadStats()}catch(e){this._error=e instanceof Error?e.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`;let t=[`B`,`KB`,`MB`,`GB`],n=Math.floor(Math.log(e)/Math.log(1024));return`${(e/1024**n).toFixed(n===0?0:1)} ${t[n]}`}_formatNumber(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}_formatRelativeTime(e){let t=Date.now()-e,n=Math.floor(t/1e3),r=Math.floor(n/60),i=Math.floor(r/60),a=Math.floor(i/24);if(a>365){let e=Math.floor(a/365);return`${e} year${e===1?``:`s`} ago`}if(a>30){let e=Math.floor(a/30);return`${e} month${e===1?``:`s`} ago`}return a>0?`${a} day${a===1?``:`s`} ago`:i>0?`${i} hour${i===1?``:`s`} ago`:r>0?`${r} min${r===1?``:`s`} ago`:`just now`}_formatFullDate(e){return new Date(e).toLocaleString()}_renderAgentChart(){let e=this._stats?.byAgent;if(!e)return l;let n=Object.entries(e).sort(([,e],[,t])=>t-e);if(n.length===0)return l;let r=n[0][1],i=n.slice(0,10),a=n.length-i.length;return t`
|
|
777
|
+
<div class="agent-chart">
|
|
778
|
+
<div class="agent-chart-title">Entries by Agent</div>
|
|
779
|
+
${i.map(([e,n])=>t`
|
|
780
|
+
<div class="bar-container">
|
|
781
|
+
<div class="bar-label" title=${e}>${e}</div>
|
|
782
|
+
<div class="bar-track">
|
|
783
|
+
<div
|
|
784
|
+
class="bar-fill"
|
|
785
|
+
style="width: ${r>0?n/r*100:0}%"
|
|
786
|
+
></div>
|
|
787
|
+
</div>
|
|
788
|
+
<div class="bar-value">${this._formatNumber(n)}</div>
|
|
789
|
+
</div>
|
|
790
|
+
`)}
|
|
791
|
+
${a>0?t`<div class="agent-chart-overflow">and ${a} more</div>`:l}
|
|
792
|
+
</div>
|
|
793
|
+
`}_renderEmbeddingSection(){if(!this._embeddingStats)return l;let e=this._embeddingStats,n=e.circuitBreaker.state,r=n===`closed`?`success`:n===`halfOpen`?`warning`:n===`open`?`error`:`default`,i=n===`closed`?`Closed (Healthy)`:n===`halfOpen`?`Half-Open (Recovering)`:n===`open`?`Open (Failing)`:`Unknown`,a=e.vecAvailable?`success`:`error`,o=e.vecAvailable?`Active`:`Unavailable`;if(!e.enabled)return t`
|
|
794
|
+
<div class="embedding-section">
|
|
795
|
+
<div class="section-heading">Embedding Infrastructure</div>
|
|
796
|
+
<div class="embedding-disabled">
|
|
797
|
+
<span>Embedding cache not configured</span>
|
|
798
|
+
<span>Vec: <ic-tag variant=${a}>${o}</ic-tag></span>
|
|
799
|
+
<span>CB: <ic-tag variant=${r}>${i}</ic-tag></span>
|
|
800
|
+
</div>
|
|
801
|
+
</div>
|
|
802
|
+
`;let s=e.l1?(e.l1.hitRate*100).toFixed(1)+`%`:`N/A`,c=e.l1?`${e.l1.entries}/${e.l1.maxEntries}`:`N/A`;return t`
|
|
803
|
+
<div class="embedding-section">
|
|
804
|
+
<div class="section-heading">Embedding Infrastructure</div>
|
|
805
|
+
<div class="stats-row">
|
|
806
|
+
<ic-stat-card label="Provider" value=${e.provider??`N/A`}></ic-stat-card>
|
|
807
|
+
<ic-stat-card label="L1 Hit Rate" value=${s}></ic-stat-card>
|
|
808
|
+
<ic-stat-card label="L1 Entries" value=${c}></ic-stat-card>
|
|
809
|
+
<ic-stat-card label="Vector Search" value=${o}></ic-stat-card>
|
|
810
|
+
</div>
|
|
811
|
+
<div class="stats-row">
|
|
812
|
+
<ic-stat-card label="L1 Hits" value=${this._formatNumber(e.l1?.hits??0)}></ic-stat-card>
|
|
813
|
+
<ic-stat-card label="L1 Misses" value=${this._formatNumber(e.l1?.misses??0)}></ic-stat-card>
|
|
814
|
+
<ic-stat-card label="Circuit Breaker" value=${i}></ic-stat-card>
|
|
815
|
+
</div>
|
|
816
|
+
</div>
|
|
817
|
+
`}render(){let e=this._getFilteredResults();return t`
|
|
818
|
+
<div class="page-header">Memory Inspector</div>
|
|
819
|
+
|
|
820
|
+
<!-- Stat cards -->
|
|
821
|
+
${this._statsLoaded&&this._stats?t`
|
|
822
|
+
<div class="stats-row">
|
|
823
|
+
<ic-stat-card
|
|
824
|
+
label="Total Entries"
|
|
825
|
+
value=${this._formatNumber(this._stats.totalEntries)}
|
|
826
|
+
></ic-stat-card>
|
|
827
|
+
<ic-stat-card
|
|
828
|
+
label="Sessions"
|
|
829
|
+
value=${this._formatNumber(this._stats.totalSessions)}
|
|
830
|
+
></ic-stat-card>
|
|
831
|
+
<ic-stat-card
|
|
832
|
+
label="Vectors"
|
|
833
|
+
value=${this._formatNumber(this._stats.embeddedEntries)}
|
|
834
|
+
></ic-stat-card>
|
|
835
|
+
<ic-stat-card
|
|
836
|
+
label="DB Size"
|
|
837
|
+
value=${this._formatBytes(this._stats.dbSizeBytes)}
|
|
838
|
+
></ic-stat-card>
|
|
839
|
+
${this._stats.oldestCreatedAt==null?l:t`
|
|
840
|
+
<ic-stat-card
|
|
841
|
+
label="Oldest Entry"
|
|
842
|
+
value=${this._formatRelativeTime(this._stats.oldestCreatedAt)}
|
|
843
|
+
title=${this._formatFullDate(this._stats.oldestCreatedAt)}
|
|
844
|
+
></ic-stat-card>
|
|
845
|
+
`}
|
|
846
|
+
</div>
|
|
847
|
+
${this._stats.byType||this._stats.byTrustLevel?t`
|
|
848
|
+
<div class="stats-row">
|
|
849
|
+
${this._stats.byType?Object.entries(this._stats.byType).map(([e,n])=>t`
|
|
850
|
+
<ic-stat-card label=${e} value=${this._formatNumber(n)}></ic-stat-card>
|
|
851
|
+
`):l}
|
|
852
|
+
${this._stats.byTrustLevel?Object.entries(this._stats.byTrustLevel).map(([e,n])=>t`
|
|
853
|
+
<ic-stat-card label=${`Trust: `+e} value=${this._formatNumber(n)}></ic-stat-card>
|
|
854
|
+
`):l}
|
|
855
|
+
</div>
|
|
856
|
+
`:l}
|
|
857
|
+
${this._renderAgentChart()}
|
|
858
|
+
`:l}
|
|
859
|
+
|
|
860
|
+
<!-- Embedding Infrastructure -->
|
|
861
|
+
${this._renderEmbeddingSection()}
|
|
862
|
+
|
|
863
|
+
<!-- Creation form -->
|
|
864
|
+
<button class="create-toggle" @click=${this._toggleCreateForm}>
|
|
865
|
+
${this._createOpen?`- Hide Create Form`:`+ Create Entry`}
|
|
866
|
+
</button>
|
|
867
|
+
|
|
868
|
+
${this._createOpen?t`
|
|
869
|
+
<div class="create-form">
|
|
870
|
+
<div class="create-form-title">Create Memory Entry</div>
|
|
871
|
+
|
|
872
|
+
<div class="create-field">
|
|
873
|
+
<label class="create-label">Content *</label>
|
|
874
|
+
<textarea
|
|
875
|
+
class="create-textarea"
|
|
876
|
+
placeholder="Memory content..."
|
|
877
|
+
.value=${this._createContent}
|
|
878
|
+
@input=${e=>{this._createContent=e.target.value}}
|
|
879
|
+
></textarea>
|
|
880
|
+
</div>
|
|
881
|
+
|
|
882
|
+
<div class="create-field">
|
|
883
|
+
<label class="create-label">Tags</label>
|
|
884
|
+
<input
|
|
885
|
+
class="create-input"
|
|
886
|
+
type="text"
|
|
887
|
+
placeholder="tag1, tag2, ..."
|
|
888
|
+
.value=${this._createTags}
|
|
889
|
+
@input=${e=>{this._createTags=e.target.value}}
|
|
890
|
+
/>
|
|
891
|
+
</div>
|
|
892
|
+
|
|
893
|
+
<div class="create-field">
|
|
894
|
+
<label class="create-label">Trust Level</label>
|
|
895
|
+
<select
|
|
896
|
+
class="create-select"
|
|
897
|
+
.value=${this._createTrustLevel}
|
|
898
|
+
@change=${e=>{this._createTrustLevel=e.target.value}}
|
|
899
|
+
>
|
|
900
|
+
<option value="learned">learned</option>
|
|
901
|
+
<option value="external">external</option>
|
|
902
|
+
</select>
|
|
903
|
+
</div>
|
|
904
|
+
|
|
905
|
+
<div class="create-field">
|
|
906
|
+
<label class="create-label">Provenance</label>
|
|
907
|
+
<input
|
|
908
|
+
class="create-input"
|
|
909
|
+
type="text"
|
|
910
|
+
placeholder="Source description (optional)"
|
|
911
|
+
.value=${this._createProvenance}
|
|
912
|
+
@input=${e=>{this._createProvenance=e.target.value}}
|
|
913
|
+
/>
|
|
914
|
+
</div>
|
|
915
|
+
|
|
916
|
+
<div class="create-actions">
|
|
917
|
+
<button
|
|
918
|
+
class="create-submit"
|
|
919
|
+
?disabled=${!this._createContent.trim()||this._createSubmitting}
|
|
920
|
+
@click=${this._submitCreate}
|
|
921
|
+
>
|
|
922
|
+
${this._createSubmitting?`Creating...`:`Create`}
|
|
923
|
+
</button>
|
|
924
|
+
</div>
|
|
925
|
+
|
|
926
|
+
${this._createMessage?t`<div class="create-message create-message--${this._createMessageType}">${this._createMessage}</div>`:l}
|
|
927
|
+
</div>
|
|
928
|
+
`:l}
|
|
929
|
+
|
|
930
|
+
<!-- Mode toggle + search bar + flush -->
|
|
931
|
+
<div class="toolbar">
|
|
932
|
+
<div class="mode-toggle">
|
|
933
|
+
<button
|
|
934
|
+
class="mode-btn"
|
|
935
|
+
?data-active=${this._mode===`search`}
|
|
936
|
+
@click=${()=>this._handleModeChange(`search`)}
|
|
937
|
+
>
|
|
938
|
+
Search
|
|
939
|
+
</button>
|
|
940
|
+
<button
|
|
941
|
+
class="mode-btn"
|
|
942
|
+
?data-active=${this._mode===`browse`}
|
|
943
|
+
@click=${()=>this._handleModeChange(`browse`)}
|
|
944
|
+
>
|
|
945
|
+
Browse All
|
|
946
|
+
</button>
|
|
947
|
+
</div>
|
|
948
|
+
${this._mode===`search`?t`
|
|
949
|
+
<div class="search-wrapper">
|
|
950
|
+
<ic-search-input
|
|
951
|
+
placeholder="Search memories by content, topic, or keyword..."
|
|
952
|
+
.value=${this._query}
|
|
953
|
+
@search=${this._handleSearchEvent}
|
|
954
|
+
></ic-search-input>
|
|
955
|
+
</div>
|
|
956
|
+
`:l}
|
|
957
|
+
<div class="toolbar-right">
|
|
958
|
+
<span class="filter-label">Flush scope:</span>
|
|
959
|
+
<select
|
|
960
|
+
class="filter-select"
|
|
961
|
+
.value=${this._flushAgentId}
|
|
962
|
+
@change=${e=>{this._flushAgentId=e.target.value}}
|
|
963
|
+
>
|
|
964
|
+
<option value="">All Agents</option>
|
|
965
|
+
${this._agents.map(e=>t`<option value=${e}>${e}</option>`)}
|
|
966
|
+
</select>
|
|
967
|
+
<button class="flush-btn" @click=${this._openFlushDialog}>Flush Memory</button>
|
|
968
|
+
</div>
|
|
969
|
+
</div>
|
|
970
|
+
|
|
971
|
+
<!-- Filters row -->
|
|
972
|
+
<div class="filters-row">
|
|
973
|
+
<div class="filter-group">
|
|
974
|
+
<span class="filter-label">Type:</span>
|
|
975
|
+
${f.map(e=>t`
|
|
976
|
+
<label class="filter-checkbox">
|
|
977
|
+
<input
|
|
978
|
+
type="checkbox"
|
|
979
|
+
.checked=${this._typeFilter.has(e)}
|
|
980
|
+
@change=${()=>this._toggleTypeFilter(e)}
|
|
981
|
+
/>
|
|
982
|
+
${e}
|
|
983
|
+
</label>
|
|
984
|
+
`)}
|
|
985
|
+
</div>
|
|
986
|
+
|
|
987
|
+
<div class="filter-group">
|
|
988
|
+
<span class="filter-label">Trust:</span>
|
|
989
|
+
${p.map(e=>t`
|
|
990
|
+
<label class="filter-checkbox">
|
|
991
|
+
<input
|
|
992
|
+
type="checkbox"
|
|
993
|
+
.checked=${this._trustFilter.has(e)}
|
|
994
|
+
@change=${()=>this._toggleTrustFilter(e)}
|
|
995
|
+
/>
|
|
996
|
+
${e}
|
|
997
|
+
</label>
|
|
998
|
+
`)}
|
|
999
|
+
</div>
|
|
1000
|
+
|
|
1001
|
+
<div class="filter-group">
|
|
1002
|
+
<span class="filter-label">Agent:</span>
|
|
1003
|
+
<select
|
|
1004
|
+
class="filter-select"
|
|
1005
|
+
.value=${this._agentFilter}
|
|
1006
|
+
@change=${this._handleAgentFilterChange}
|
|
1007
|
+
>
|
|
1008
|
+
<option value="">All</option>
|
|
1009
|
+
${this._agents.map(e=>t`<option value=${e}>${e}</option>`)}
|
|
1010
|
+
</select>
|
|
1011
|
+
</div>
|
|
1012
|
+
|
|
1013
|
+
<div class="filter-group">
|
|
1014
|
+
<span class="filter-label">Date:</span>
|
|
1015
|
+
<input
|
|
1016
|
+
type="date"
|
|
1017
|
+
class="filter-date"
|
|
1018
|
+
.value=${this._dateFrom}
|
|
1019
|
+
@change=${this._handleDateFromChange}
|
|
1020
|
+
/>
|
|
1021
|
+
<span class="filter-label">to</span>
|
|
1022
|
+
<input
|
|
1023
|
+
type="date"
|
|
1024
|
+
class="filter-date"
|
|
1025
|
+
.value=${this._dateTo}
|
|
1026
|
+
@change=${this._handleDateToChange}
|
|
1027
|
+
/>
|
|
1028
|
+
</div>
|
|
1029
|
+
</div>
|
|
1030
|
+
|
|
1031
|
+
<!-- Error -->
|
|
1032
|
+
${this._error?t`<div class="error-message">${this._error}</div>`:l}
|
|
1033
|
+
|
|
1034
|
+
<!-- Bulk actions bar -->
|
|
1035
|
+
${this._selectedIds.length>0?t`
|
|
1036
|
+
<div class="bulk-bar">
|
|
1037
|
+
<span class="bulk-count">${this._selectedIds.length} selected</span>
|
|
1038
|
+
<button class="bulk-btn bulk-btn--delete" @click=${this._handleBulkDelete}>
|
|
1039
|
+
Delete Selected
|
|
1040
|
+
</button>
|
|
1041
|
+
<button class="bulk-btn bulk-btn--export" @click=${this._handleExportSelected}>
|
|
1042
|
+
Export Selected
|
|
1043
|
+
</button>
|
|
1044
|
+
</div>
|
|
1045
|
+
`:l}
|
|
1046
|
+
|
|
1047
|
+
<!-- Results area -->
|
|
1048
|
+
${this._loading?t`
|
|
1049
|
+
<div class="state-container">
|
|
1050
|
+
<div class="loading-spinner"></div>
|
|
1051
|
+
</div>
|
|
1052
|
+
`:this._searched?t`
|
|
1053
|
+
<!-- Results header -->
|
|
1054
|
+
<div class="results-header">
|
|
1055
|
+
<span class="result-count">
|
|
1056
|
+
${e.length} result${e.length===1?``:`s`}
|
|
1057
|
+
${this._mode===`browse`&&this._total>0?t` of ${this._total}`:l}
|
|
1058
|
+
</span>
|
|
1059
|
+
<button class="export-btn" @click=${this._handleExportAll}>
|
|
1060
|
+
Export JSONL
|
|
1061
|
+
</button>
|
|
1062
|
+
</div>
|
|
1063
|
+
|
|
1064
|
+
<ic-memory-table
|
|
1065
|
+
.entries=${e}
|
|
1066
|
+
?selectable=${!0}
|
|
1067
|
+
@detail-requested=${this._handleDetailRequested}
|
|
1068
|
+
@selection-change=${this._handleSelectionChange}
|
|
1069
|
+
></ic-memory-table>
|
|
1070
|
+
|
|
1071
|
+
<!-- Browse pagination controls -->
|
|
1072
|
+
${this._mode===`browse`?t`
|
|
1073
|
+
<div class="browse-controls">
|
|
1074
|
+
<span class="browse-info">
|
|
1075
|
+
${this._browseOffset+1}-${Math.min(this._browseOffset+this._browseLimit,this._total)}
|
|
1076
|
+
of ${this._total}
|
|
1077
|
+
</span>
|
|
1078
|
+
<div class="browse-nav">
|
|
1079
|
+
<button
|
|
1080
|
+
class="browse-btn"
|
|
1081
|
+
?disabled=${this._browseOffset===0}
|
|
1082
|
+
@click=${this._handleBrowsePrev}
|
|
1083
|
+
>
|
|
1084
|
+
Prev
|
|
1085
|
+
</button>
|
|
1086
|
+
<button
|
|
1087
|
+
class="browse-btn"
|
|
1088
|
+
?disabled=${this._browseOffset+this._browseLimit>=this._total}
|
|
1089
|
+
@click=${this._handleBrowseNext}
|
|
1090
|
+
>
|
|
1091
|
+
Next
|
|
1092
|
+
</button>
|
|
1093
|
+
</div>
|
|
1094
|
+
</div>
|
|
1095
|
+
`:l}
|
|
1096
|
+
`:t`
|
|
1097
|
+
<div class="empty-state">
|
|
1098
|
+
<div>Search your agent's memory</div>
|
|
1099
|
+
<div class="empty-hint">
|
|
1100
|
+
Enter a query to find stored memories by content or semantic similarity
|
|
1101
|
+
</div>
|
|
1102
|
+
</div>
|
|
1103
|
+
`}
|
|
1104
|
+
|
|
1105
|
+
<!-- Detail panel -->
|
|
1106
|
+
<ic-detail-panel
|
|
1107
|
+
?open=${this._selectedEntry!==null}
|
|
1108
|
+
panelTitle="Memory Entry"
|
|
1109
|
+
@close=${this._handleDetailClose}
|
|
1110
|
+
>
|
|
1111
|
+
<ic-memory-detail
|
|
1112
|
+
.entry=${this._selectedEntry}
|
|
1113
|
+
@delete-requested=${this._handleEntryDeleted}
|
|
1114
|
+
@close=${this._handleDetailClose}
|
|
1115
|
+
></ic-memory-detail>
|
|
1116
|
+
</ic-detail-panel>
|
|
1117
|
+
|
|
1118
|
+
<!-- Confirm dialog for bulk delete -->
|
|
1119
|
+
<ic-confirm-dialog
|
|
1120
|
+
?open=${this._confirmOpen}
|
|
1121
|
+
title="Delete Memories"
|
|
1122
|
+
message="Are you sure you want to delete ${this._selectedIds.length} selected ${this._selectedIds.length===1?`entry`:`entries`}? This cannot be undone."
|
|
1123
|
+
confirmLabel="Delete"
|
|
1124
|
+
variant="danger"
|
|
1125
|
+
@confirm=${this._confirmBulkDelete}
|
|
1126
|
+
@cancel=${this._cancelBulkDelete}
|
|
1127
|
+
></ic-confirm-dialog>
|
|
1128
|
+
|
|
1129
|
+
<!-- Flush confirm dialog -->
|
|
1130
|
+
<ic-confirm-dialog
|
|
1131
|
+
?open=${this._flushDialogOpen}
|
|
1132
|
+
title="Flush Memory"
|
|
1133
|
+
.message=${`This will permanently delete `+(this._flushAgentId?`all memory entries for agent "${this._flushAgentId}"`:`ALL memory entries`)+`. This cannot be undone.`}
|
|
1134
|
+
confirmLabel="Flush"
|
|
1135
|
+
variant="danger"
|
|
1136
|
+
@confirm=${this._confirmFlush}
|
|
1137
|
+
@cancel=${this._cancelFlush}
|
|
1138
|
+
></ic-confirm-dialog>
|
|
1139
|
+
`}};c([s({attribute:!1})],m.prototype,`apiClient`,void 0),c([s({attribute:!1})],m.prototype,`rpcClient`,void 0),c([a()],m.prototype,`_mode`,void 0),c([a()],m.prototype,`_query`,void 0),c([a()],m.prototype,`_results`,void 0),c([a()],m.prototype,`_loading`,void 0),c([a()],m.prototype,`_searched`,void 0),c([a()],m.prototype,`_error`,void 0),c([a()],m.prototype,`_stats`,void 0),c([a()],m.prototype,`_statsLoaded`,void 0),c([a()],m.prototype,`_selectedEntry`,void 0),c([a()],m.prototype,`_selectedIds`,void 0),c([a()],m.prototype,`_typeFilter`,void 0),c([a()],m.prototype,`_trustFilter`,void 0),c([a()],m.prototype,`_agentFilter`,void 0),c([a()],m.prototype,`_dateFrom`,void 0),c([a()],m.prototype,`_dateTo`,void 0),c([a()],m.prototype,`_browseOffset`,void 0),c([a()],m.prototype,`_browseLimit`,void 0),c([a()],m.prototype,`_total`,void 0),c([a()],m.prototype,`_agents`,void 0),c([a()],m.prototype,`_confirmOpen`,void 0),c([a()],m.prototype,`_createOpen`,void 0),c([a()],m.prototype,`_createContent`,void 0),c([a()],m.prototype,`_createTags`,void 0),c([a()],m.prototype,`_createTrustLevel`,void 0),c([a()],m.prototype,`_createProvenance`,void 0),c([a()],m.prototype,`_createSubmitting`,void 0),c([a()],m.prototype,`_createMessage`,void 0),c([a()],m.prototype,`_createMessageType`,void 0),c([a()],m.prototype,`_embeddingStats`,void 0),c([a()],m.prototype,`_embeddingLoading`,void 0),c([a()],m.prototype,`_flushDialogOpen`,void 0),c([a()],m.prototype,`_flushAgentId`,void 0),c([a()],m.prototype,`_flushSubmitting`,void 0),m=c([e(`ic-memory-inspector`)],m);export{m as IcMemoryInspector};
|