@origintrail-official/dkg-node-ui 10.0.1 → 10.0.3
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/dist/chain-cursor-stores.d.ts +45 -0
- package/dist/chain-cursor-stores.d.ts.map +1 -0
- package/dist/chain-cursor-stores.js +107 -0
- package/dist/chain-cursor-stores.js.map +1 -0
- package/dist/chat-memory.d.ts +0 -17
- package/dist/chat-memory.d.ts.map +1 -1
- package/dist/chat-memory.js +6 -33
- package/dist/chat-memory.js.map +1 -1
- package/dist/db.d.ts +15 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +40 -1
- package/dist/db.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/notifications-scope.d.ts +19 -0
- package/dist/notifications-scope.d.ts.map +1 -1
- package/dist/notifications-scope.js +34 -2
- package/dist/notifications-scope.js.map +1 -1
- package/dist/otlp-log-worker.d.ts +127 -0
- package/dist/otlp-log-worker.d.ts.map +1 -0
- package/dist/otlp-log-worker.js +268 -0
- package/dist/otlp-log-worker.js.map +1 -0
- package/dist/telemetry-resource.d.ts +41 -0
- package/dist/telemetry-resource.d.ts.map +1 -0
- package/dist/telemetry-resource.js +31 -0
- package/dist/telemetry-resource.js.map +1 -0
- package/dist/telemetry.d.ts +75 -16
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +152 -29
- package/dist/telemetry.js.map +1 -1
- package/dist-ui/assets/{3d-force-graph-DII0C0lY.js → 3d-force-graph-DRDhpplH.js} +1 -1
- package/dist-ui/assets/AgentHub-DdUAxJoy.js +1 -0
- package/dist-ui/assets/AgentProfilePage-yI8fA4vv.js +1 -0
- package/dist-ui/assets/ApproveWalletsModal-9w2edv7e.js +57 -0
- package/dist-ui/assets/ConvictionDetailView-CcQMya-y.js +2 -0
- package/dist-ui/assets/Network-DpAKVzwi.js +1 -0
- package/dist-ui/assets/OnChainProvenanceCard-DMOm3jLz.js +1 -0
- package/dist-ui/assets/{Operations-BC6Cv6cR.js → Operations-DKJFp6hM.js} +3 -3
- package/dist-ui/assets/PublishingConviction-1CPHxNwp.js +2 -0
- package/dist-ui/assets/Settings-DaYMlGHD.js +1 -0
- package/dist-ui/assets/ccip-hCQYqfNz.js +1 -0
- package/dist-ui/assets/{index-D0Mz0SVt.js → index-Bh_8bMB0.js} +3 -3
- package/dist-ui/assets/{index-ByLJSVQ3.js → index-CVwCoJrM.js} +9 -9
- package/dist-ui/assets/index-D5UiTYlY.css +1 -0
- package/dist-ui/assets/index-DGpnb_b1.js +1661 -0
- package/dist-ui/assets/{jsonld-32FQRO67-B4_tUX65.js → jsonld-32FQRO67-C3B_LjZ-.js} +2 -2
- package/dist-ui/assets/{jsonld-D5RXTCJi.js → jsonld-CoPRWQuM.js} +1 -1
- package/dist-ui/assets/{renderer-3d-2EVDZII7-BTYEjwma.js → renderer-3d-2EVDZII7-Bx6o7Gge.js} +2 -2
- package/dist-ui/index.html +2 -2
- package/package.json +14 -3
- package/dist-ui/assets/AgentHub-D3eOrb3Z.js +0 -1
- package/dist-ui/assets/AgentProfilePage-jB-v9soG.js +0 -1
- package/dist-ui/assets/Network-d4igcZQ0.js +0 -1
- package/dist-ui/assets/OnChainProvenanceCard-BL6ou6s9.js +0 -1
- package/dist-ui/assets/Settings-DXSjvx2a.js +0 -1
- package/dist-ui/assets/index-B6UQm9N_.js +0 -1670
- package/dist-ui/assets/index-BgRu6zNc.css +0 -1
package/dist/telemetry.js
CHANGED
|
@@ -1,45 +1,168 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* When enabled (via config), exports metrics and optionally traces to an OTLP endpoint.
|
|
4
|
-
* operationId is set as the trace/span attribute for correlation with the dashboard.
|
|
2
|
+
* OpenTelemetry SDK bootstrap for a DKG node (boot side, daemon-only consumer).
|
|
5
3
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* Registers the global Tracer + Meter providers at daemon startup so that the
|
|
5
|
+
* call-site facade in `@origintrail-official/dkg-core` (getTracer/withSpan/
|
|
6
|
+
* getMetrics) — used across agent/publisher/chain/sync — produces real spans and
|
|
7
|
+
* metrics. When telemetry is disabled, or a signal has no endpoint, this
|
|
8
|
+
* registers NOTHING: the core facade then talks to the API's built-in no-op
|
|
9
|
+
* providers (zero cost, no outbound calls).
|
|
10
|
+
*
|
|
11
|
+
* Logs are NOT handled here — they stay on the hand-rolled `OtlpLogWorker`
|
|
12
|
+
* (bounded buffer + retry + at-source redaction); the OTel Logs SDK is still
|
|
13
|
+
* "Development". This module only wires traces + metrics, and shares ONE
|
|
14
|
+
* Resource with the log worker so all three signals describe the same node.
|
|
15
|
+
*
|
|
16
|
+
* BROWSER SAFETY: the heavy Node-only OTel SDK packages (sdk-trace-node,
|
|
17
|
+
* sdk-metrics, exporter-*-otlp-proto, resources) and `@origintrail-official/dkg-core`
|
|
18
|
+
* are loaded via DYNAMIC import inside `initTelemetry`/`shutdownTelemetry`, never
|
|
19
|
+
* statically. Only `@opentelemetry/api` (browser-safe, no Node built-ins) is a
|
|
20
|
+
* static import. That keeps this module — and the package root that re-exports
|
|
21
|
+
* it — free of server-only code in any static bundle graph: a browser bundler
|
|
22
|
+
* never pulls the Node SDK because it sits behind a runtime `import()` that the
|
|
23
|
+
* UI never triggers.
|
|
10
24
|
*/
|
|
11
|
-
|
|
25
|
+
import { metrics as otelMetrics, trace as otelTrace } from '@opentelemetry/api';
|
|
26
|
+
import { buildTelemetryResourceAttrs } from './telemetry-resource.js';
|
|
27
|
+
// Independent per-signal lifecycle state (NOT one shared flag) so traces and
|
|
28
|
+
// metrics can be registered separately and one signal's setup never gates the other.
|
|
29
|
+
let tracerProvider = null;
|
|
30
|
+
let meterProvider = null;
|
|
31
|
+
// Traces/metrics resource attributes come from the SAME shared builder the log
|
|
32
|
+
// worker uses — no second mapping to drift.
|
|
33
|
+
const buildAttrs = buildTelemetryResourceAttrs;
|
|
34
|
+
function authHeaders(sig) {
|
|
35
|
+
const headers = { ...(sig.headers ?? {}) };
|
|
36
|
+
if (sig.token)
|
|
37
|
+
headers['Authorization'] = `Bearer ${sig.token}`;
|
|
38
|
+
return Object.keys(headers).length ? headers : undefined;
|
|
39
|
+
}
|
|
40
|
+
/** Map the legacy flat `{ metricsEndpoint, serviceName }` shape onto the new one. */
|
|
41
|
+
function normalizeInitConfig(input) {
|
|
42
|
+
const legacy = input;
|
|
43
|
+
const next = input;
|
|
44
|
+
if (legacy.metricsEndpoint && !next.metrics && !next.traces) {
|
|
45
|
+
return {
|
|
46
|
+
enabled: legacy.enabled,
|
|
47
|
+
resource: { serviceName: legacy.serviceName },
|
|
48
|
+
metrics: { endpoint: legacy.metricsEndpoint },
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return next;
|
|
52
|
+
}
|
|
12
53
|
/**
|
|
13
|
-
* Initialize
|
|
14
|
-
*
|
|
54
|
+
* Initialize traces + metrics. No-op when disabled or when a signal has no
|
|
55
|
+
* endpoint. Safe to call once at daemon boot. Idempotent (subsequent calls are
|
|
56
|
+
* ignored once configured). Async because the Node OTel SDK is dynamically
|
|
57
|
+
* imported (see the BROWSER SAFETY note above).
|
|
15
58
|
*/
|
|
16
|
-
export function initTelemetry(
|
|
17
|
-
|
|
59
|
+
export async function initTelemetry(input) {
|
|
60
|
+
const cfg = normalizeInitConfig(input);
|
|
61
|
+
if (!cfg.enabled)
|
|
18
62
|
return;
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
//
|
|
63
|
+
// Traces and metrics are INDEPENDENT signals: each registers only if it has
|
|
64
|
+
// an endpoint AND isn't already registered. (No single `configured` gate — a
|
|
65
|
+
// metrics-only init followed by a traces init must still register traces.)
|
|
66
|
+
const tracesOn = !!cfg.traces?.endpoint && cfg.traces.enabled !== false && tracerProvider === null;
|
|
67
|
+
const metricsOn = !!cfg.metrics?.endpoint && cfg.metrics.enabled !== false && meterProvider === null;
|
|
68
|
+
if (!tracesOn && !metricsOn)
|
|
69
|
+
return;
|
|
70
|
+
const { resourceFromAttributes } = await import('@opentelemetry/resources');
|
|
71
|
+
const resource = resourceFromAttributes(buildAttrs(cfg.resource));
|
|
72
|
+
// ── Traces ──
|
|
73
|
+
if (tracesOn) {
|
|
74
|
+
const { NodeTracerProvider, BatchSpanProcessor, ParentBasedSampler, TraceIdRatioBasedSampler } = await import('@opentelemetry/sdk-trace-node');
|
|
75
|
+
const { OTLPTraceExporter } = await import('@opentelemetry/exporter-trace-otlp-proto');
|
|
76
|
+
const exporter = new OTLPTraceExporter({
|
|
77
|
+
url: cfg.traces.endpoint,
|
|
78
|
+
headers: authHeaders(cfg.traces),
|
|
79
|
+
});
|
|
80
|
+
const ratio = cfg.traces.sampleRatio ?? 1;
|
|
81
|
+
tracerProvider = new NodeTracerProvider({
|
|
82
|
+
resource,
|
|
83
|
+
sampler: new ParentBasedSampler({ root: new TraceIdRatioBasedSampler(ratio) }),
|
|
84
|
+
spanProcessors: [new BatchSpanProcessor(exporter)],
|
|
85
|
+
});
|
|
86
|
+
// register() installs the global tracer provider + an AsyncLocalStorage
|
|
87
|
+
// context manager (so spans flow across awaits) + W3C trace-context propagator.
|
|
88
|
+
tracerProvider.register();
|
|
89
|
+
}
|
|
90
|
+
// ── Metrics ──
|
|
91
|
+
if (metricsOn) {
|
|
92
|
+
const { MeterProvider, PeriodicExportingMetricReader } = await import('@opentelemetry/sdk-metrics');
|
|
93
|
+
const { OTLPMetricExporter } = await import('@opentelemetry/exporter-metrics-otlp-proto');
|
|
94
|
+
const { rebuildMetrics } = await import('@origintrail-official/dkg-core');
|
|
95
|
+
const exporter = new OTLPMetricExporter({
|
|
96
|
+
url: cfg.metrics.endpoint,
|
|
97
|
+
headers: authHeaders(cfg.metrics),
|
|
98
|
+
});
|
|
99
|
+
meterProvider = new MeterProvider({
|
|
100
|
+
resource,
|
|
101
|
+
readers: [
|
|
102
|
+
new PeriodicExportingMetricReader({
|
|
103
|
+
exporter,
|
|
104
|
+
exportIntervalMillis: cfg.metrics.exportIntervalMs ?? 30_000,
|
|
105
|
+
}),
|
|
106
|
+
],
|
|
107
|
+
});
|
|
108
|
+
otelMetrics.setGlobalMeterProvider(meterProvider);
|
|
109
|
+
// Re-bind the core facade's instrument cache to the real meter.
|
|
110
|
+
rebuildMetrics();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/** True once EITHER signal (traces or metrics) has registered a real provider. */
|
|
114
|
+
export function isTelemetryConfigured() {
|
|
115
|
+
return tracerProvider !== null || meterProvider !== null;
|
|
22
116
|
}
|
|
23
117
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
118
|
+
* Flush + shut down providers. Used both at daemon teardown AND when telemetry
|
|
119
|
+
* is turned off via the runtime master gate, so it must FULLY reverse
|
|
120
|
+
* `initTelemetry`: stop the exporters, then clear the OTel API globals so a
|
|
121
|
+
* later `initTelemetry` (live re-enable) can register fresh providers — without
|
|
122
|
+
* the `disable()` calls, the API keeps the first (now shut-down) provider and a
|
|
123
|
+
* re-enable would silently no-op. Safe if never initialized; idempotent.
|
|
124
|
+
*/
|
|
125
|
+
export async function shutdownTelemetry() {
|
|
126
|
+
const hadTracer = !!tracerProvider;
|
|
127
|
+
const hadMeter = !!meterProvider;
|
|
128
|
+
const tasks = [];
|
|
129
|
+
if (tracerProvider) {
|
|
130
|
+
tasks.push(tracerProvider.forceFlush().catch(() => { }));
|
|
131
|
+
tasks.push(tracerProvider.shutdown().catch(() => { }));
|
|
132
|
+
}
|
|
133
|
+
if (meterProvider) {
|
|
134
|
+
tasks.push(meterProvider.forceFlush().catch(() => { }));
|
|
135
|
+
tasks.push(meterProvider.shutdown().catch(() => { }));
|
|
136
|
+
}
|
|
137
|
+
await Promise.all(tasks);
|
|
138
|
+
// Reset the global API so a subsequent initTelemetry() can re-register
|
|
139
|
+
// (setGlobal*Provider only takes effect once until the slot is disabled).
|
|
140
|
+
if (hadTracer)
|
|
141
|
+
otelTrace.disable();
|
|
142
|
+
if (hadMeter) {
|
|
143
|
+
otelMetrics.disable();
|
|
144
|
+
// Rebind the core facade's instrument cache back to the no-op meter so
|
|
145
|
+
// getMetrics() after disable is inert rather than holding dead instruments.
|
|
146
|
+
const { rebuildMetrics } = await import('@origintrail-official/dkg-core');
|
|
147
|
+
rebuildMetrics();
|
|
148
|
+
}
|
|
149
|
+
tracerProvider = null;
|
|
150
|
+
meterProvider = null;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* @deprecated No-op compatibility shim for the pre-PR #1317 telemetry API. Node
|
|
154
|
+
* metrics flow through the `@origintrail-official/dkg-core` facade
|
|
155
|
+
* (`getMetrics()`), not this call. Kept so old callers don't break at import.
|
|
26
156
|
*/
|
|
27
157
|
export function recordGauge(_name, _value) {
|
|
28
|
-
|
|
29
|
-
return;
|
|
30
|
-
// When OTel is added: update the observable gauge callback or record value
|
|
158
|
+
/* no-op (browser-safe): real metrics go through getMetrics() */
|
|
31
159
|
}
|
|
32
160
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
161
|
+
* @deprecated No-op compatibility shim for the pre-PR #1317 telemetry API. Spans
|
|
162
|
+
* are created via the core facade `withSpan()`/`getTracer()`. Kept so old
|
|
163
|
+
* callers don't break at import.
|
|
36
164
|
*/
|
|
37
165
|
export function setOperationSpan(_operationId, _operationName) {
|
|
38
|
-
|
|
39
|
-
return;
|
|
40
|
-
// When OTel is added: tracer.startSpan(operationName, { attributes: { 'dkg.operation_id': operationId } })
|
|
41
|
-
}
|
|
42
|
-
export function isTelemetryConfigured() {
|
|
43
|
-
return configured;
|
|
166
|
+
/* no-op (browser-safe): real spans go through withSpan() */
|
|
44
167
|
}
|
|
45
168
|
//# sourceMappingURL=telemetry.js.map
|
package/dist/telemetry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{v as Po,c8 as Lh,aG as Qe,cD as _n,cX as ce,br as bl,cY as V,aM as St,o as si,aO as kt,ct as _l,r as Dt,aQ as Uh,n as Yi,ax as cm,ae as Oh,K as Ih,l as kh,F as dm,bv as hm,ay as Gh,u as fm,cJ as pm,db as z,af as it,cm as xl,ba as cs,bo as Vh,co as Tl,dd as $h,dc as Oe,d6 as k,s as Ge,cd as Ss,aA as vt,bD as It,cZ as ze,a7 as gm,a6 as mm,B as ot,a5 as hs,T as xn,cW as Or,c_ as uo,cI as Zt,t as Ns,bt as ym,S as zh,c9 as bm,cv as vl,i as Wh,ag as _m,aw as xm,aE as Tm,cc as vm,C as Sm,A as Nm,d as Rm,b3 as wm,p as Ws,cO as ht,cr as js,cV as ds,al as st,cS as Ve,a3 as rt,e as jh,ca as Fo,cb as Do,P as Tn,Q as vn,c5 as Jt,c6 as Lo,b_ as Uo,b$ as qh,cT as Hh,cU as Xh,cQ as Sn,cR as Sl,cP as Nl,a0 as Oo,a4 as Kh,R as nn,bq as Hr,j as Em,bs as Am,aP as On,J as qs,a as pn,d3 as Un,bw as Js,d2 as Cm,_ as Rl,$ as wl,E as yu,W as lo,cn as ae,aL as ri,bn as El,aH as dc,bB as Io,d1 as Xr,d5 as Mm,d8 as co,aY as ko,q as Kr,ce as Go,aB as fs,aC as bu,b1 as Yr,b2 as Yh,b0 as xt,be as Qh,a8 as ho,aa as er,X as Zh,as as ii,aq as Al,f as Jh,b4 as ef,aF as hc,b8 as tr,d7 as Bm,cg as tf,cB as nf,bj as sf,bk as rf,bl as of,bm as af,U as uf,V as lf,cy as cf,cx as df,cz as hf,bi as ff,I as Pm,G as Fm,H as Dm,aI as pf,b7 as Nn,a_ as ks,cC as Gs,c as Vs,bb as gn,bf as gf,a9 as mf,ab as yf,Y as bf,at as _f,ar as xf,g as Tf,b5 as vf,bE as Cl,c4 as Qi,bX as Zi,bY as Ji,bZ as eo,c3 as fc,c2 as pc,bW as gc,bV as mc,c0 as _u,c1 as xu,bU as Tu,bx as vu,ci as Su,bC as fo,cl as Nu,bL as Ru,bM as wu,bN as Eu,bO as Au,bP as Cu,bQ as Mu,bR as Bu,bS as Pu,bG as Fu,bH as Du,bI as Lu,bF as Uu,bJ as Ou,bK as Iu,bT as ku,bA as Gu,ck as Vu,bz as po,cj as $u,M as Sf,aT as Lm,aV as Um,aU as Om,aW as Im,aS as km,aR as Gm,az as Vm,bu as $m,cw as zm,cq as Wm,by as jm,D as Vo,cF as Ml,cK as qm,cM as Hm,cL as Xm,a2 as go,bg as Km,ad as Ym,ac as Qm,Z as Zm,au as Jm,av as ey,h as ty,b6 as ny,O as sy,ai as ry,N as iy,ah as oy,ao as ay,cf as uy,d4 as ly,ap as cy,aN as dy,aX as hy,ch as Nf,a1 as Rf,b as fy,aZ as py,a$ as gy,aJ as mo,bd as wf,aK as Ef,m as Af,w as my,k as yy,x as by,cs as _y,bp as xy,y as yo,z as bo,cE as ia,b9 as oa,bc as Ty,bh as vy,aj as Sy,ak as Ny,L as Ry,cA as Bl,aD as wy,an as Ey,am as Ay,d9 as Cy,cu as yc,c7 as My,cp as bc,cN as By,c$ as Py,cH as Cf,cG as Fy,d0 as Dy}from"./three.module-BXIk8GZS.js";import{
|
|
1
|
+
import{v as Po,c8 as Lh,aG as Qe,cD as _n,cX as ce,br as bl,cY as V,aM as St,o as si,aO as kt,ct as _l,r as Dt,aQ as Uh,n as Yi,ax as cm,ae as Oh,K as Ih,l as kh,F as dm,bv as hm,ay as Gh,u as fm,cJ as pm,db as z,af as it,cm as xl,ba as cs,bo as Vh,co as Tl,dd as $h,dc as Oe,d6 as k,s as Ge,cd as Ss,aA as vt,bD as It,cZ as ze,a7 as gm,a6 as mm,B as ot,a5 as hs,T as xn,cW as Or,c_ as uo,cI as Zt,t as Ns,bt as ym,S as zh,c9 as bm,cv as vl,i as Wh,ag as _m,aw as xm,aE as Tm,cc as vm,C as Sm,A as Nm,d as Rm,b3 as wm,p as Ws,cO as ht,cr as js,cV as ds,al as st,cS as Ve,a3 as rt,e as jh,ca as Fo,cb as Do,P as Tn,Q as vn,c5 as Jt,c6 as Lo,b_ as Uo,b$ as qh,cT as Hh,cU as Xh,cQ as Sn,cR as Sl,cP as Nl,a0 as Oo,a4 as Kh,R as nn,bq as Hr,j as Em,bs as Am,aP as On,J as qs,a as pn,d3 as Un,bw as Js,d2 as Cm,_ as Rl,$ as wl,E as yu,W as lo,cn as ae,aL as ri,bn as El,aH as dc,bB as Io,d1 as Xr,d5 as Mm,d8 as co,aY as ko,q as Kr,ce as Go,aB as fs,aC as bu,b1 as Yr,b2 as Yh,b0 as xt,be as Qh,a8 as ho,aa as er,X as Zh,as as ii,aq as Al,f as Jh,b4 as ef,aF as hc,b8 as tr,d7 as Bm,cg as tf,cB as nf,bj as sf,bk as rf,bl as of,bm as af,U as uf,V as lf,cy as cf,cx as df,cz as hf,bi as ff,I as Pm,G as Fm,H as Dm,aI as pf,b7 as Nn,a_ as ks,cC as Gs,c as Vs,bb as gn,bf as gf,a9 as mf,ab as yf,Y as bf,at as _f,ar as xf,g as Tf,b5 as vf,bE as Cl,c4 as Qi,bX as Zi,bY as Ji,bZ as eo,c3 as fc,c2 as pc,bW as gc,bV as mc,c0 as _u,c1 as xu,bU as Tu,bx as vu,ci as Su,bC as fo,cl as Nu,bL as Ru,bM as wu,bN as Eu,bO as Au,bP as Cu,bQ as Mu,bR as Bu,bS as Pu,bG as Fu,bH as Du,bI as Lu,bF as Uu,bJ as Ou,bK as Iu,bT as ku,bA as Gu,ck as Vu,bz as po,cj as $u,M as Sf,aT as Lm,aV as Um,aU as Om,aW as Im,aS as km,aR as Gm,az as Vm,bu as $m,cw as zm,cq as Wm,by as jm,D as Vo,cF as Ml,cK as qm,cM as Hm,cL as Xm,a2 as go,bg as Km,ad as Ym,ac as Qm,Z as Zm,au as Jm,av as ey,h as ty,b6 as ny,O as sy,ai as ry,N as iy,ah as oy,ao as ay,cf as uy,d4 as ly,ap as cy,aN as dy,aX as hy,ch as Nf,a1 as Rf,b as fy,aZ as py,a$ as gy,aJ as mo,bd as wf,aK as Ef,m as Af,w as my,k as yy,x as by,cs as _y,bp as xy,y as yo,z as bo,cE as ia,b9 as oa,bc as Ty,bh as vy,aj as Sy,ak as Ny,L as Ry,cA as Bl,aD as wy,an as Ey,am as Ay,d9 as Cy,cu as yc,c7 as My,cp as bc,cN as By,c$ as Py,cH as Cf,cG as Fy,d0 as Dy}from"./three.module-BXIk8GZS.js";import{a3 as Ly}from"./index-DGpnb_b1.js";import{i as fe,s as Uy,e as Pl,c as Oy,d as Iy,a as ky,b as Gy,f as Vy,t as Mf,g as $y,G as zy,T as _c,E as xc}from"./index-Bh_8bMB0.js";import{o as Wy,h as jy,m as qy}from"./ordinal-DhEzRPdO.js";const Hs=new bl,mn=new ce,Bf=new V,aa=new ce,to=new ce,_o=new V,zu=new V,Pf=new St,Ff=new V,Df=new V;let nt=null,qt=null;const yn=[],$n={NONE:-1,PAN:0,ROTATE:1};class Hy extends Po{constructor(e,t,n=null){super(t,n),this.objects=e,this.recursive=!0,this.transformGroup=!1,this.rotateSpeed=1,this.raycaster=new Lh,this.mouseButtons={LEFT:Qe.PAN,MIDDLE:Qe.PAN,RIGHT:Qe.ROTATE},this.touches={ONE:_n.PAN},this._onPointerMove=Xy.bind(this),this._onPointerDown=Ky.bind(this),this._onPointerCancel=Yy.bind(this),this._onContextMenu=Qy.bind(this),n!==null&&this.connect(n)}connect(e){super.connect(e),this.domElement.addEventListener("pointermove",this._onPointerMove),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointerup",this._onPointerCancel),this.domElement.addEventListener("pointerleave",this._onPointerCancel),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointermove",this._onPointerMove),this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.removeEventListener("pointerup",this._onPointerCancel),this.domElement.removeEventListener("pointerleave",this._onPointerCancel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.domElement.style.touchAction="",this.domElement.style.cursor=""}dispose(){this.disconnect()}_updatePointer(e){const t=this.domElement.getBoundingClientRect();mn.x=(e.clientX-t.left)/t.width*2-1,mn.y=-(e.clientY-t.top)/t.height*2+1}_updateState(e){let t;if(e.pointerType==="touch")t=this.touches.ONE;else switch(e.button){case 0:t=this.mouseButtons.LEFT;break;case 1:t=this.mouseButtons.MIDDLE;break;case 2:t=this.mouseButtons.RIGHT;break;default:t=null}switch(t){case Qe.PAN:case _n.PAN:this.state=$n.PAN;break;case Qe.ROTATE:case _n.ROTATE:this.state=$n.ROTATE;break;default:this.state=$n.NONE}}}function Xy(i){const e=this.object,t=this.domElement,n=this.raycaster;if(this.enabled!==!1){if(this._updatePointer(i),n.setFromCamera(mn,e),nt)this.state===$n.PAN?n.ray.intersectPlane(Hs,_o)&&(nt.position.copy(_o.sub(Bf).applyMatrix4(Pf)),this.dispatchEvent({type:"drag",object:nt})):this.state===$n.ROTATE&&(aa.subVectors(mn,to).multiplyScalar(this.rotateSpeed),nt.rotateOnWorldAxis(Ff,aa.x),nt.rotateOnWorldAxis(Df.normalize(),-aa.y),this.dispatchEvent({type:"drag",object:nt})),to.copy(mn);else if(i.pointerType==="mouse"||i.pointerType==="pen")if(yn.length=0,n.setFromCamera(mn,e),n.intersectObjects(this.objects,this.recursive,yn),yn.length>0){const s=yn[0].object;Hs.setFromNormalAndCoplanarPoint(e.getWorldDirection(Hs.normal),zu.setFromMatrixPosition(s.matrixWorld)),qt!==s&&qt!==null&&(this.dispatchEvent({type:"hoveroff",object:qt}),t.style.cursor="auto",qt=null),qt!==s&&(this.dispatchEvent({type:"hoveron",object:s}),t.style.cursor="pointer",qt=s)}else qt!==null&&(this.dispatchEvent({type:"hoveroff",object:qt}),t.style.cursor="auto",qt=null);to.copy(mn)}}function Ky(i){const e=this.object,t=this.domElement,n=this.raycaster;this.enabled!==!1&&(this._updatePointer(i),this._updateState(i),yn.length=0,n.setFromCamera(mn,e),n.intersectObjects(this.objects,this.recursive,yn),yn.length>0&&(this.transformGroup===!0?nt=Lf(yn[0].object):nt=yn[0].object,Hs.setFromNormalAndCoplanarPoint(e.getWorldDirection(Hs.normal),zu.setFromMatrixPosition(nt.matrixWorld)),n.ray.intersectPlane(Hs,_o)&&(this.state===$n.PAN?(Pf.copy(nt.parent.matrixWorld).invert(),Bf.copy(_o).sub(zu.setFromMatrixPosition(nt.matrixWorld)),t.style.cursor="move",this.dispatchEvent({type:"dragstart",object:nt})):this.state===$n.ROTATE&&(Ff.set(0,1,0).applyQuaternion(e.quaternion).normalize(),Df.set(1,0,0).applyQuaternion(e.quaternion).normalize(),t.style.cursor="move",this.dispatchEvent({type:"dragstart",object:nt})))),to.copy(mn))}function Yy(){this.enabled!==!1&&(nt&&(this.dispatchEvent({type:"dragend",object:nt}),nt=null),this.domElement.style.cursor=qt?"pointer":"auto",this.state=$n.NONE)}function Qy(i){this.enabled!==!1&&i.preventDefault()}function Lf(i,e=null){return i.isGroup&&(e=i),i.parent===null?e:Lf(i.parent,e)}function Zy(i){eb(i);const e=Jy(i);return i.on=e.on,i.off=e.off,i.fire=e.fire,i}function Jy(i){let e=Object.create(null);return{on:function(t,n,s){if(typeof n!="function")throw new Error("callback is expected to be a function");let r=e[t];return r||(r=e[t]=[]),r.push({callback:n,ctx:s}),i},off:function(t,n){if(typeof t>"u")return e=Object.create(null),i;if(e[t])if(typeof n!="function")delete e[t];else{const o=e[t];for(let a=0;a<o.length;++a)o[a].callback===n&&o.splice(a,1)}return i},fire:function(t){const n=e[t];if(!n)return i;let s;arguments.length>1&&(s=Array.prototype.slice.call(arguments,1));for(let r=0;r<n.length;++r){const o=n[r];o.callback.apply(o.ctx,s)}return i}}}function eb(i){if(!i)throw new Error("Eventify cannot use falsy object as events subject");const e=["on","fire","off"];for(let t=0;t<e.length;++t)if(i.hasOwnProperty(e[t]))throw new Error("Subject cannot be eventified, since it already has property '"+e[t]+"'")}function tb(i){if(i=i||{},"uniqueLinkId"in i&&(console.warn("ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\nUse `multigraph` option instead\n",`
|
|
2
2
|
`,`Note: there is also change in default behavior: From now on each graph
|
|
3
3
|
is considered to be not a multigraph by default (each edge is unique).`),i.multigraph=i.uniqueLinkId),i.multigraph===void 0&&(i.multigraph=!1),typeof Map!="function")throw new Error("ngraph.graph requires `Map` to be defined. Please polyfill it before using ngraph");var e=new Map,t=new Map,n={},s=0,r=i.multigraph?S:T,o=[],a=F,u=F,l=F,c=F,d={version:20,addNode:g,addLink:_,removeLink:P,removeNode:y,getNode:m,getNodeCount:N,getLinkCount:R,getEdgeCount:R,getLinksCount:R,getNodesCount:N,getLinks:v,forEachNode:ve,forEachLinkedNode:se,forEachLink:re,beginUpdate:l,endUpdate:c,clear:ee,hasLink:L,hasNode:m,getLink:L,getLinkById:j};return Zy(d),h(),d;function h(){var I=d.on;d.on=H;function H(){return d.beginUpdate=l=G,d.endUpdate=c=Q,a=f,u=p,d.on=I,I.apply(d,arguments)}}function f(I,H){o.push({link:I,changeType:H})}function p(I,H){o.push({node:I,changeType:H})}function g(I,H){if(I===void 0)throw new Error("Invalid node identifier");l();var le=m(I);return le?(le.data=H,u(le,"update")):(le=new nb(I,H),u(le,"add")),e.set(I,le),c(),le}function m(I){return e.get(I)}function y(I){var H=m(I);if(!H)return!1;l();var le=H.links;return le&&(le.forEach(D),H.links=null),e.delete(I),u(H,"remove"),c(),!0}function _(I,H,le){l();var Ce=m(I)||g(I),B=m(H)||g(H),U=r(I,H,le),K=t.has(U.id);return t.set(U.id,U),Tc(Ce,U),I!==H&&Tc(B,U),a(U,K?"update":"add"),c(),U}function T(I,H,le){var Ce=hi(I,H),B=t.get(Ce);return B?(B.data=le,B):new vc(I,H,le,Ce)}function S(I,H,le){var Ce=hi(I,H),B=n.hasOwnProperty(Ce);if(B||L(I,H)){B||(n[Ce]=0);var U="@"+ ++n[Ce];Ce=hi(I+U,H+U)}return new vc(I,H,le,Ce)}function N(){return e.size}function R(){return t.size}function v(I){var H=m(I);return H?H.links:null}function P(I,H){return H!==void 0&&(I=L(I,H)),D(I)}function D(I){if(!I||!t.get(I.id))return!1;l(),t.delete(I.id);var H=m(I.fromId),le=m(I.toId);return H&&H.links.delete(I),le&&le.links.delete(I),a(I,"remove"),c(),!0}function L(I,H){if(!(I===void 0||H===void 0))return t.get(hi(I,H))}function j(I){if(I!==void 0)return t.get(I)}function ee(){l(),ve(function(I){y(I.id)}),c()}function re(I){if(typeof I=="function")for(var H=t.values(),le=H.next();!le.done;){if(I(le.value))return!0;le=H.next()}}function se(I,H,le){var Ce=m(I);if(Ce&&Ce.links&&typeof H=="function")return le?oe(Ce.links,I,H):Z(Ce.links,I,H)}function Z(I,H,le){for(var Ce,B=I.values(),U=B.next();!U.done;){var K=U.value,me=K.fromId===H?K.toId:K.fromId;if(Ce=le(e.get(me),K),Ce)return!0;U=B.next()}}function oe(I,H,le){for(var Ce,B=I.values(),U=B.next();!U.done;){var K=U.value;if(K.fromId===H&&(Ce=le(e.get(K.toId),K),Ce))return!0;U=B.next()}}function F(){}function G(){s+=1}function Q(){s-=1,s===0&&o.length>0&&(d.fire("changed",o),o.length=0)}function ve(I){if(typeof I!="function")throw new Error("Function is expected to iterate over graph nodes. You passed "+I);for(var H=e.values(),le=H.next();!le.done;){if(I(le.value))return!0;le=H.next()}}}function nb(i,e){this.id=i,this.links=null,this.data=e}function Tc(i,e){i.links?i.links.add(e):i.links=new Set([e])}function vc(i,e,t,n){this.fromId=i,this.toId=e,this.data=t,this.id=n}function hi(i,e){return i.toString()+"👉 "+e.toString()}var fi={exports:{}},Cs={exports:{}},ua,Sc;function Uf(){return Sc||(Sc=1,ua=function(e){return e===0?"x":e===1?"y":e===2?"z":"c"+(e+1)}),ua}var la,Nc;function ar(){if(Nc)return la;Nc=1;const i=Uf();return la=function(t){return n;function n(s,r){let o=r&&r.indent||0,a=r&&r.join!==void 0?r.join:`
|
|
4
4
|
`,u=Array(o+1).join(" "),l=[];for(let c=0;c<t;++c){let d=i(c),h=c===0?"":u;l.push(h+s.replace(/{var}/g,d))}return l.join(a)}},la}var Rc;function sb(){if(Rc)return Cs.exports;Rc=1;const i=ar();Cs.exports=e,Cs.exports.generateCreateBodyFunctionBody=t,Cs.exports.getVectorCode=s,Cs.exports.getBodyCode=n;function e(r,o){let a=t(r,o),{Body:u}=new Function(a)();return u}function t(r,o){return`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ad as e,P as t}from"./index-DGpnb_b1.js";function n(){return e.jsxs("div",{className:"page-section",style:{display:"flex",flexDirection:"column",height:"100%",padding:0},children:[e.jsxs("div",{style:{marginBottom:20},children:[e.jsx("h1",{className:"page-title",style:{marginBottom:0},children:"Agent Hub"}),e.jsx("p",{style:{fontSize:12,color:"var(--text-muted)",marginTop:4},children:"Bring your own agent into the node. OpenClaw chat, network peers, and integrated-agent session history live here."})]}),e.jsx("div",{style:{flex:1,minHeight:0,border:"1px solid var(--border)",borderRadius:12,overflow:"hidden",background:"var(--bg)"},children:e.jsx(t,{})})]})}export{n as AgentHubPage};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{aA as w,aK as A,ap as x,ad as e,a as N,A as P,aJ as C,az as T,aE as E,aM as R,aL as M,R as j,f as $,b as D}from"./index-DGpnb_b1.js";const S="http://www.w3.org/ns/prov#wasAttributedTo",k=[{iri:"http://dkg.io/ontology/decisions/Decision",label:"Decisions"},{iri:"http://dkg.io/ontology/tasks/Task",label:"Tasks"},{iri:"http://dkg.io/ontology/github/PullRequest",label:"Pull Requests"},{iri:"http://dkg.io/ontology/github/Issue",label:"Issues"},{iri:"http://dkg.io/ontology/github/Commit",label:"Commits"}],B=({agentUri:a,entityList:d,onSelectEntity:u,onOpenAgent:r,onBack:b})=>{const o=w(),c=A(),s=(o==null?void 0:o.get(a))??null,p=x.useMemo(()=>{const t=new Map;for(const l of d){if(!l.connections.some(f=>f.predicate===S&&f.targetUri===a))continue;const n=k.find(f=>l.types.includes(f.iri));if(!n)continue;const y=t.get(n.iri)??[];y.push(l),t.set(n.iri,y)}return t},[d,a]),g=x.useMemo(()=>{let t=0;for(const l of p.values())t+=l.length;return t},[p]),m=s!=null&&s.operatorUri?(o==null?void 0:o.get(s.operatorUri))??null:null,[v,h]=x.useState(null);return e.jsxs("div",{className:"v10-agent-profile",children:[e.jsxs("div",{className:"v10-agent-profile-header",children:[e.jsx("button",{type:"button",className:"v10-ka-back",onClick:b,children:"← Back"}),e.jsxs("div",{className:"v10-agent-profile-head",children:[e.jsx(N,{agent:s??void 0,fallbackUri:a,size:"lg",showOperator:!0}),(s==null?void 0:s.reputation)&&e.jsx("div",{className:"v10-agent-profile-reputation",children:s.reputation})]}),e.jsxs("div",{className:"v10-agent-profile-meta",children:[(s==null?void 0:s.walletAddress)&&e.jsxs("div",{className:"v10-agent-profile-meta-row",children:[e.jsx("span",{className:"v10-agent-profile-meta-lbl",children:"Wallet"}),e.jsxs("span",{className:"v10-agent-profile-meta-val mono v10-agent-profile-wallet",title:s.walletAddress,children:[s.walletAddress,e.jsx("button",{type:"button",className:"v10-agent-profile-copy",onClick:t=>{var l;t.stopPropagation(),(l=navigator.clipboard)==null||l.writeText(s.walletAddress).catch(()=>{})},title:"Copy wallet address",children:"⎘"})]})]}),e.jsxs("div",{className:"v10-agent-profile-meta-row",children:[e.jsx("span",{className:"v10-agent-profile-meta-lbl",children:"URI"}),e.jsx("span",{className:"v10-agent-profile-meta-val mono",children:a})]}),(s==null?void 0:s.peerId)&&e.jsxs("div",{className:"v10-agent-profile-meta-row",children:[e.jsx("span",{className:"v10-agent-profile-meta-lbl",children:"Peer ID"}),e.jsx("span",{className:"v10-agent-profile-meta-val mono",children:s.peerId})]}),m&&e.jsxs("div",{className:"v10-agent-profile-meta-row",children:[e.jsx("span",{className:"v10-agent-profile-meta-lbl",children:"Driven by"}),e.jsx("span",{className:"v10-agent-profile-meta-val",children:e.jsx(N,{agent:m,size:"sm",onOpenAgent:r})})]}),(s==null?void 0:s.framework)&&e.jsxs("div",{className:"v10-agent-profile-meta-row",children:[e.jsx("span",{className:"v10-agent-profile-meta-lbl",children:"Framework"}),e.jsx("span",{className:"v10-agent-profile-meta-val mono",children:s.framework})]})]})]}),e.jsxs("div",{className:"v10-agent-profile-stats",children:[e.jsxs("button",{type:"button",className:`v10-agent-profile-stat${v===null?" active":""}`,onClick:()=>h(null),children:[e.jsx("span",{className:"v10-agent-profile-stat-val",children:g}),e.jsx("span",{className:"v10-agent-profile-stat-lbl",children:"All activity"})]}),k.map(t=>{const l=p.get(t.iri)??[];if(l.length===0)return null;const i=c==null?void 0:c.forType(t.iri),n=(i==null?void 0:i.color)??"#a855f7";return e.jsxs("button",{type:"button",className:`v10-agent-profile-stat${v===t.iri?" active":""}`,style:{"--stat-color":n},onClick:()=>h(t.iri),children:[e.jsx("span",{className:"v10-agent-profile-stat-val",children:l.length}),e.jsx("span",{className:"v10-agent-profile-stat-lbl",children:i!=null&&i.label?i.label:t.label})]},t.iri)})]}),e.jsx(P,{entities:d,agentUri:a,typeIri:v??void 0,onSelectEntity:u,onOpenAgent:r,title:e.jsxs(e.Fragment,{children:["All activity",s&&e.jsxs("span",{className:"v10-agent-profile-feed-sub",children:[" · authored by ",s.name]})]}),emptyHint:g===0?`${(s==null?void 0:s.name)??a} hasn't authored anything in this project yet.`:"No entries match the current filter."})]})},_=({contextGraphId:a,agentUri:d})=>{const u=C(a),r=T(a),b=E(a),{openTab:o,closeTab:c,activeTabId:s}=R(),{setActiveProject:p}=M(),g=j.useCallback(t=>{p(a),o({id:`project:${a}`,label:u.displayName||a.slice(0,16),closable:!0}),window.dispatchEvent(new CustomEvent("v10:open-entity",{detail:{contextGraphId:a,entityUri:t}}))},[a,o,u.displayName,p]),m=j.useCallback(t=>{var n;const l=t.startsWith("urn:dkg:agent:")?t.slice(14):t,i=((n=r.get(t))==null?void 0:n.name)??l;o({id:`agent:${a}|${l}`,label:`@ ${i}`,closable:!0})},[a,r,o]),v=j.useCallback(()=>{s&&c(s)},[s,c]),h=j.useMemo(()=>({...r,openAgent:m}),[r,m]);return e.jsx($.Provider,{value:u,children:e.jsx(D.Provider,{value:h,children:e.jsx(B,{agentUri:d,entityList:b.entityList,onSelectEntity:g,onOpenAgent:m,onBack:v})})})};export{_ as AgentProfilePage};
|