twining-mcp 1.4.2 → 1.5.0
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/README.md +51 -2
- package/dist/analytics/analytics-engine.d.ts +18 -0
- package/dist/analytics/analytics-engine.d.ts.map +1 -0
- package/dist/analytics/analytics-engine.js +114 -0
- package/dist/analytics/analytics-engine.js.map +1 -0
- package/dist/analytics/instrumented-server.d.ts +12 -0
- package/dist/analytics/instrumented-server.d.ts.map +1 -0
- package/dist/analytics/instrumented-server.js +76 -0
- package/dist/analytics/instrumented-server.js.map +1 -0
- package/dist/analytics/metrics-collector.d.ts +15 -0
- package/dist/analytics/metrics-collector.d.ts.map +1 -0
- package/dist/analytics/metrics-collector.js +36 -0
- package/dist/analytics/metrics-collector.js.map +1 -0
- package/dist/analytics/metrics-store.d.ts +20 -0
- package/dist/analytics/metrics-store.d.ts.map +1 -0
- package/dist/analytics/metrics-store.js +109 -0
- package/dist/analytics/metrics-store.js.map +1 -0
- package/dist/analytics/telemetry-client.d.ts +19 -0
- package/dist/analytics/telemetry-client.d.ts.map +1 -0
- package/dist/analytics/telemetry-client.js +137 -0
- package/dist/analytics/telemetry-client.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -1
- package/dist/dashboard/api-routes.d.ts.map +1 -1
- package/dist/dashboard/api-routes.js +71 -0
- package/dist/dashboard/api-routes.js.map +1 -1
- package/dist/dashboard/public/app.js +185 -0
- package/dist/dashboard/public/index.html +86 -1
- package/dist/dashboard/public/style.css +83 -0
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +8 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -5
- package/dist/server.js.map +1 -1
- package/dist/storage/init.js +1 -1
- package/dist/storage/init.js.map +1 -1
- package/dist/utils/types.d.ts +79 -0
- package/dist/utils/types.d.ts.map +1 -1
- package/package.json +4 -1
- package/src/dashboard/public/app.js +185 -0
- package/src/dashboard/public/index.html +86 -1
- package/src/dashboard/public/style.css +83 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostHog telemetry client — opt-in anonymous usage data.
|
|
3
|
+
*
|
|
4
|
+
* Privacy safeguards:
|
|
5
|
+
* - Disabled by default, requires explicit config opt-in
|
|
6
|
+
* - Respects DO_NOT_TRACK=1 and CI=true env vars
|
|
7
|
+
* - Identity: SHA-256 hash of hostname + projectRoot (never raw)
|
|
8
|
+
* - Never sends: file paths, decision content, agent names, error messages, env vars
|
|
9
|
+
* - Dynamic import of posthog-node — graceful no-op if not installed
|
|
10
|
+
* - Non-blocking: fire-and-forget, silent on network failure
|
|
11
|
+
*/
|
|
12
|
+
import { createHash } from "node:crypto";
|
|
13
|
+
import os from "node:os";
|
|
14
|
+
// Hardcoded PostHog project API key — this is a write-only ingest key,
|
|
15
|
+
// safe to embed in source (like any client-side analytics key).
|
|
16
|
+
// All opt-in installs report to the Twining project dashboard.
|
|
17
|
+
// Set to empty string until a PostHog project is created.
|
|
18
|
+
const POSTHOG_API_KEY = "phc_AN3caYGFLOajJLbGvCD2RV1d3loFzsOL3onUxzJRsQq";
|
|
19
|
+
const POSTHOG_HOST = "https://us.i.posthog.com";
|
|
20
|
+
export class TelemetryClient {
|
|
21
|
+
client = null;
|
|
22
|
+
distinctId = "";
|
|
23
|
+
enabled = false;
|
|
24
|
+
/** Initialize telemetry. Returns true if enabled and ready. */
|
|
25
|
+
async init(config, projectRoot, version) {
|
|
26
|
+
// Gate: disabled by default
|
|
27
|
+
if (!config?.telemetry?.enabled)
|
|
28
|
+
return false;
|
|
29
|
+
// Gate: respect DO_NOT_TRACK
|
|
30
|
+
if (process.env.DO_NOT_TRACK === "1")
|
|
31
|
+
return false;
|
|
32
|
+
// Gate: auto-disable in CI
|
|
33
|
+
if (process.env.CI === "true")
|
|
34
|
+
return false;
|
|
35
|
+
// Use hardcoded key, with config override for self-hosted PostHog
|
|
36
|
+
const apiKey = config.telemetry.posthog_api_key || POSTHOG_API_KEY;
|
|
37
|
+
const host = config.telemetry.posthog_host || POSTHOG_HOST;
|
|
38
|
+
if (!apiKey)
|
|
39
|
+
return false;
|
|
40
|
+
// Compute anonymous distinct ID
|
|
41
|
+
this.distinctId = createHash("sha256")
|
|
42
|
+
.update(os.hostname() + projectRoot)
|
|
43
|
+
.digest("hex")
|
|
44
|
+
.slice(0, 16);
|
|
45
|
+
// Dynamic import — graceful no-op if not installed
|
|
46
|
+
try {
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
48
|
+
const mod = await Function('return import("posthog-node")')();
|
|
49
|
+
const PostHog = mod.PostHog || mod.default?.PostHog;
|
|
50
|
+
if (!PostHog)
|
|
51
|
+
return false;
|
|
52
|
+
this.client = new PostHog(apiKey, { host });
|
|
53
|
+
this.enabled = true;
|
|
54
|
+
// Track server start
|
|
55
|
+
this.trackServerStarted(version);
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// posthog-node not installed or import failed — graceful no-op
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** Track server started event */
|
|
64
|
+
trackServerStarted(version) {
|
|
65
|
+
if (!this.enabled || !this.client)
|
|
66
|
+
return;
|
|
67
|
+
try {
|
|
68
|
+
this.client.capture({
|
|
69
|
+
distinctId: this.distinctId,
|
|
70
|
+
event: "server_started",
|
|
71
|
+
properties: {
|
|
72
|
+
version,
|
|
73
|
+
node_version: process.version,
|
|
74
|
+
os: process.platform,
|
|
75
|
+
arch: process.arch,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Silent failure
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/** Track a tool call (sanitized — no args/content/errors) */
|
|
84
|
+
trackToolCalled(toolName, durationMs, success) {
|
|
85
|
+
if (!this.enabled || !this.client)
|
|
86
|
+
return;
|
|
87
|
+
try {
|
|
88
|
+
this.client.capture({
|
|
89
|
+
distinctId: this.distinctId,
|
|
90
|
+
event: "tool_called",
|
|
91
|
+
properties: {
|
|
92
|
+
tool_name: toolName,
|
|
93
|
+
duration_ms: durationMs,
|
|
94
|
+
success,
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Silent failure
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** Track session summary (periodic aggregate) */
|
|
103
|
+
trackSessionSummary(callCountsByTool, decisionCount, entityCount) {
|
|
104
|
+
if (!this.enabled || !this.client)
|
|
105
|
+
return;
|
|
106
|
+
try {
|
|
107
|
+
this.client.capture({
|
|
108
|
+
distinctId: this.distinctId,
|
|
109
|
+
event: "session_summary",
|
|
110
|
+
properties: {
|
|
111
|
+
call_counts: callCountsByTool,
|
|
112
|
+
decision_count: decisionCount,
|
|
113
|
+
entity_count: entityCount,
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
// Silent failure
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/** Flush and shut down */
|
|
122
|
+
async shutdown() {
|
|
123
|
+
if (!this.enabled || !this.client)
|
|
124
|
+
return;
|
|
125
|
+
try {
|
|
126
|
+
await this.client.shutdown();
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
// Silent failure
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/** Whether telemetry is active */
|
|
133
|
+
isEnabled() {
|
|
134
|
+
return this.enabled;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=telemetry-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-client.js","sourceRoot":"","sources":["../../src/analytics/telemetry-client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,eAAO,MAAM,cAAc,EAAE,aA2C5B,CAAC;AA+BF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAc5D"}
|
package/dist/config.js
CHANGED
|
@@ -37,6 +37,16 @@ export const DEFAULT_CONFIG = {
|
|
|
37
37
|
low_ms: 14400000, // 4 hours
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
|
+
analytics: {
|
|
41
|
+
metrics: {
|
|
42
|
+
enabled: true, // Local metrics on by default
|
|
43
|
+
},
|
|
44
|
+
telemetry: {
|
|
45
|
+
enabled: false, // Opt-in only
|
|
46
|
+
posthog_api_key: "",
|
|
47
|
+
posthog_host: "https://us.i.posthog.com",
|
|
48
|
+
},
|
|
49
|
+
},
|
|
40
50
|
};
|
|
41
51
|
/** Deep merge source into target, returning a new object */
|
|
42
52
|
function deepMerge(target, source) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,SAAS,CAAC;AAG3B,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,EAAE;IAChB,eAAe,EAAE,kBAAkB;IACnC,OAAO,EAAE;QACP,sBAAsB,EAAE,IAAI;QAC5B,8BAA8B,EAAE,IAAI;QACpC,qCAAqC,EAAE,GAAG;KAC3C;IACD,gBAAgB,EAAE;QAChB,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE;YAChB,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,GAAG;YACd,mBAAmB,EAAE,GAAG;YACxB,aAAa,EAAE,GAAG;YAClB,kBAAkB,EAAE,GAAG;SACxB;KACF;IACD,mBAAmB,EAAE,OAAO;IAC5B,MAAM,EAAE;QACN,QAAQ,EAAE;YACR,aAAa,EAAE,MAAM,EAAE,YAAY;YACnC,aAAa,EAAE,OAAO,EAAE,aAAa;SACtC;KACF;IACD,WAAW,EAAE;QACX,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,EAAQ,YAAY;YACnC,SAAS,EAAE,OAAO,EAAK,aAAa;YACpC,MAAM,EAAE,QAAQ,EAAO,UAAU;SAClC;KACF;CACF,CAAC;AAEF,4DAA4D;AAC5D,SAAS,SAAS,CAChB,MAA+B,EAC/B,MAA+B;IAE/B,MAAM,MAAM,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,SAAS,KAAK,SAAS;YAAE,SAAS;QACtC,IACE,SAAS,KAAK,IAAI;YAClB,OAAO,SAAS,KAAK,QAAQ;YAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;YACzB,SAAS,KAAK,IAAI;YAClB,OAAO,SAAS,KAAK,QAAQ;YAC7B,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EACzB,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB,SAAoC,EACpC,SAAoC,CACrC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1E,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CACd,cAAoD,EACpD,MAAiC,CACN,CAAC;AAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/api-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"api-routes.d.ts","sourceRoot":"","sources":["../../src/dashboard/api-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAwC7B;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,GAClB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,CAkpB3E"}
|
|
@@ -23,6 +23,8 @@ import { IndexManager } from "../embeddings/index-manager.js";
|
|
|
23
23
|
import { SearchEngine } from "../embeddings/search.js";
|
|
24
24
|
import { scoreAgent, parseDelegationMetadata, isDelegationExpired, } from "../engine/coordination.js";
|
|
25
25
|
import { computeLiveness, DEFAULT_LIVENESS_THRESHOLDS, } from "../utils/liveness.js";
|
|
26
|
+
import { AnalyticsEngine } from "../analytics/analytics-engine.js";
|
|
27
|
+
import { MetricsStore } from "../analytics/metrics-store.js";
|
|
26
28
|
/** Send a JSON response with standard headers. */
|
|
27
29
|
function sendJSON(res, data, statusCode = 200) {
|
|
28
30
|
const body = JSON.stringify(data);
|
|
@@ -48,6 +50,8 @@ export function createApiHandler(projectRoot) {
|
|
|
48
50
|
const graphStore = new GraphStore(twiningDir);
|
|
49
51
|
const agentStore = new AgentStore(twiningDir);
|
|
50
52
|
const handoffStore = new HandoffStore(twiningDir);
|
|
53
|
+
const analyticsEngine = new AnalyticsEngine(blackboardStore, decisionStore, graphStore, handoffStore);
|
|
54
|
+
const metricsStore = new MetricsStore(twiningDir);
|
|
51
55
|
// Engine layer for search — lazily initialized to avoid creating
|
|
52
56
|
// .twining/embeddings/ directory on uninitialized projects
|
|
53
57
|
let searchEngines = null;
|
|
@@ -212,6 +216,7 @@ export function createApiHandler(projectRoot) {
|
|
|
212
216
|
if (!fs.existsSync(twiningDir)) {
|
|
213
217
|
sendJSON(res, {
|
|
214
218
|
initialized: false,
|
|
219
|
+
project_name: path.basename(projectRoot),
|
|
215
220
|
blackboard_entries: 0,
|
|
216
221
|
active_decisions: 0,
|
|
217
222
|
provisional_decisions: 0,
|
|
@@ -271,6 +276,7 @@ export function createApiHandler(projectRoot) {
|
|
|
271
276
|
const total_handoffs = handoffs.length;
|
|
272
277
|
sendJSON(res, {
|
|
273
278
|
initialized: true,
|
|
279
|
+
project_name: path.basename(projectRoot),
|
|
274
280
|
blackboard_entries,
|
|
275
281
|
active_decisions,
|
|
276
282
|
provisional_decisions,
|
|
@@ -509,6 +515,71 @@ export function createApiHandler(projectRoot) {
|
|
|
509
515
|
}
|
|
510
516
|
return true;
|
|
511
517
|
}
|
|
518
|
+
// GET /api/analytics/value-stats
|
|
519
|
+
if (url === "/api/analytics/value-stats") {
|
|
520
|
+
try {
|
|
521
|
+
if (!fs.existsSync(twiningDir)) {
|
|
522
|
+
sendJSON(res, {
|
|
523
|
+
blind_decisions_prevented: { total_decisions: 0, assembled_before: 0, prevention_rate: 0 },
|
|
524
|
+
warnings_surfaced: { total: 0, acknowledged: 0, resolved: 0, ignored: 0 },
|
|
525
|
+
test_coverage: { total_decisions: 0, with_tested_by: 0, coverage_rate: 0 },
|
|
526
|
+
decision_lifecycle: { active: 0, provisional: 0, superseded: 0, overridden: 0 },
|
|
527
|
+
commit_traceability: { total_decisions: 0, with_commits: 0, traceability_rate: 0 },
|
|
528
|
+
knowledge_graph: { entities: 0, relations: 0, entities_by_type: {}, relations_by_type: {} },
|
|
529
|
+
agent_coordination: { total_handoffs: 0, by_result_status: {}, acknowledgment_rate: 0 },
|
|
530
|
+
});
|
|
531
|
+
return true;
|
|
532
|
+
}
|
|
533
|
+
const stats = await analyticsEngine.computeValueStats();
|
|
534
|
+
sendJSON(res, stats);
|
|
535
|
+
}
|
|
536
|
+
catch (err) {
|
|
537
|
+
console.error("[twining] API /api/analytics/value-stats error:", err);
|
|
538
|
+
sendJSON(res, { error: "Internal server error" }, 500);
|
|
539
|
+
}
|
|
540
|
+
return true;
|
|
541
|
+
}
|
|
542
|
+
// GET /api/analytics/tool-usage?since=ISO
|
|
543
|
+
if (url.startsWith("/api/analytics/tool-usage") && !url.includes("over-time")) {
|
|
544
|
+
try {
|
|
545
|
+
const parsed = new URL(url, "http://localhost");
|
|
546
|
+
const since = parsed.searchParams.get("since") || undefined;
|
|
547
|
+
const summary = await metricsStore.getToolUsageSummary(since);
|
|
548
|
+
sendJSON(res, { tools: summary, total: summary.length });
|
|
549
|
+
}
|
|
550
|
+
catch (err) {
|
|
551
|
+
console.error("[twining] API /api/analytics/tool-usage error:", err);
|
|
552
|
+
sendJSON(res, { error: "Internal server error" }, 500);
|
|
553
|
+
}
|
|
554
|
+
return true;
|
|
555
|
+
}
|
|
556
|
+
// GET /api/analytics/tool-usage-over-time?bucket=60
|
|
557
|
+
if (url.startsWith("/api/analytics/tool-usage-over-time")) {
|
|
558
|
+
try {
|
|
559
|
+
const parsed = new URL(url, "http://localhost");
|
|
560
|
+
const bucketParam = parsed.searchParams.get("bucket");
|
|
561
|
+
const bucketMinutes = bucketParam ? parseInt(bucketParam, 10) : 60;
|
|
562
|
+
const buckets = await metricsStore.getUsageOverTime(bucketMinutes);
|
|
563
|
+
sendJSON(res, { buckets, total: buckets.length });
|
|
564
|
+
}
|
|
565
|
+
catch (err) {
|
|
566
|
+
console.error("[twining] API /api/analytics/tool-usage-over-time error:", err);
|
|
567
|
+
sendJSON(res, { error: "Internal server error" }, 500);
|
|
568
|
+
}
|
|
569
|
+
return true;
|
|
570
|
+
}
|
|
571
|
+
// GET /api/analytics/errors
|
|
572
|
+
if (url === "/api/analytics/errors") {
|
|
573
|
+
try {
|
|
574
|
+
const errors = await metricsStore.getErrorBreakdown();
|
|
575
|
+
sendJSON(res, { errors, total: errors.length });
|
|
576
|
+
}
|
|
577
|
+
catch (err) {
|
|
578
|
+
console.error("[twining] API /api/analytics/errors error:", err);
|
|
579
|
+
sendJSON(res, { error: "Internal server error" }, 500);
|
|
580
|
+
}
|
|
581
|
+
return true;
|
|
582
|
+
}
|
|
512
583
|
// Not an API route we handle
|
|
513
584
|
return false;
|
|
514
585
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-routes.js","sourceRoot":"","sources":["../../src/dashboard/api-routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-routes.js","sourceRoot":"","sources":["../../src/dashboard/api-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ var state = {
|
|
|
18
18
|
delegations: { data: [], sortKey: "timestamp", sortDir: "desc", page: 1, pageSize: 25, selectedId: null },
|
|
19
19
|
handoffs: { data: [], sortKey: "created_at", sortDir: "desc", page: 1, pageSize: 25, selectedId: null },
|
|
20
20
|
agentsSubView: "agents-list",
|
|
21
|
+
insights: { valueStats: null, toolUsage: [], errors: [] },
|
|
21
22
|
globalScope: "",
|
|
22
23
|
status: null,
|
|
23
24
|
pollTimer: null,
|
|
@@ -278,6 +279,44 @@ function fetchHandoffDetail(id) {
|
|
|
278
279
|
});
|
|
279
280
|
}
|
|
280
281
|
|
|
282
|
+
/* ========== Insights Fetching ========== */
|
|
283
|
+
|
|
284
|
+
function fetchValueStats() {
|
|
285
|
+
fetch("/api/analytics/value-stats")
|
|
286
|
+
.then(function(res) { return res.json(); })
|
|
287
|
+
.then(function(data) {
|
|
288
|
+
state.insights.valueStats = data;
|
|
289
|
+
renderValueStats();
|
|
290
|
+
})
|
|
291
|
+
.catch(function() {});
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
function fetchToolUsage() {
|
|
295
|
+
fetch("/api/analytics/tool-usage")
|
|
296
|
+
.then(function(res) { return res.json(); })
|
|
297
|
+
.then(function(data) {
|
|
298
|
+
state.insights.toolUsage = data.tools || [];
|
|
299
|
+
renderToolUsage();
|
|
300
|
+
})
|
|
301
|
+
.catch(function() {});
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
function fetchErrorBreakdown() {
|
|
305
|
+
fetch("/api/analytics/errors")
|
|
306
|
+
.then(function(res) { return res.json(); })
|
|
307
|
+
.then(function(data) {
|
|
308
|
+
state.insights.errors = data.errors || [];
|
|
309
|
+
renderErrorBreakdown();
|
|
310
|
+
})
|
|
311
|
+
.catch(function() {});
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
function fetchInsights() {
|
|
315
|
+
fetchValueStats();
|
|
316
|
+
fetchToolUsage();
|
|
317
|
+
fetchErrorBreakdown();
|
|
318
|
+
}
|
|
319
|
+
|
|
281
320
|
/* ========== Polling Lifecycle ========== */
|
|
282
321
|
|
|
283
322
|
function refreshData() {
|
|
@@ -293,6 +332,7 @@ function refreshData() {
|
|
|
293
332
|
else if (state.agentsSubView === "delegations") fetchDelegations();
|
|
294
333
|
else if (state.agentsSubView === "handoffs") fetchHandoffs();
|
|
295
334
|
}
|
|
335
|
+
else if (tab === "insights") fetchInsights();
|
|
296
336
|
}
|
|
297
337
|
|
|
298
338
|
function startPolling() {
|
|
@@ -456,6 +496,13 @@ function renderStatus() {
|
|
|
456
496
|
setVal("stat-pending-delegations", s.pending_delegations);
|
|
457
497
|
setVal("stat-total-handoffs", s.total_handoffs);
|
|
458
498
|
|
|
499
|
+
// Update project name in header and page title
|
|
500
|
+
if (s.project_name) {
|
|
501
|
+
var titleEl = document.getElementById("dashboard-title");
|
|
502
|
+
if (titleEl) titleEl.textContent = s.project_name + " — Twining";
|
|
503
|
+
document.title = s.project_name + " — Twining Dashboard";
|
|
504
|
+
}
|
|
505
|
+
|
|
459
506
|
var msgEl = document.getElementById("uninitialized-msg");
|
|
460
507
|
if (msgEl) {
|
|
461
508
|
msgEl.style.display = (s.initialized === false) ? "block" : "none";
|
|
@@ -2391,6 +2438,144 @@ function updateGraphData() {
|
|
|
2391
2438
|
}
|
|
2392
2439
|
}
|
|
2393
2440
|
|
|
2441
|
+
/* ========== Insights Rendering ========== */
|
|
2442
|
+
|
|
2443
|
+
function renderValueStats() {
|
|
2444
|
+
var vs = state.insights.valueStats;
|
|
2445
|
+
if (!vs) return;
|
|
2446
|
+
|
|
2447
|
+
// Blind decisions prevented
|
|
2448
|
+
var prevRate = document.getElementById("insight-prevention-rate");
|
|
2449
|
+
var prevDetail = document.getElementById("insight-prevention-detail");
|
|
2450
|
+
if (prevRate) prevRate.textContent = Math.round(vs.blind_decisions_prevented.prevention_rate * 100) + "%";
|
|
2451
|
+
if (prevDetail) prevDetail.textContent = vs.blind_decisions_prevented.assembled_before + " of " + vs.blind_decisions_prevented.total_decisions + " decisions had context assembled first";
|
|
2452
|
+
|
|
2453
|
+
// Warnings surfaced
|
|
2454
|
+
var warnTotal = document.getElementById("insight-warnings-total");
|
|
2455
|
+
var warnDetail = document.getElementById("insight-warnings-detail");
|
|
2456
|
+
if (warnTotal) warnTotal.textContent = vs.warnings_surfaced.total;
|
|
2457
|
+
if (warnDetail) warnDetail.textContent = vs.warnings_surfaced.acknowledged + " acknowledged, " + vs.warnings_surfaced.resolved + " resolved, " + vs.warnings_surfaced.ignored + " unaddressed";
|
|
2458
|
+
|
|
2459
|
+
// Test coverage
|
|
2460
|
+
var testCov = document.getElementById("insight-test-coverage");
|
|
2461
|
+
var testDetail = document.getElementById("insight-test-detail");
|
|
2462
|
+
if (testCov) testCov.textContent = Math.round(vs.test_coverage.coverage_rate * 100) + "%";
|
|
2463
|
+
if (testDetail) testDetail.textContent = vs.test_coverage.with_tested_by + " of " + vs.test_coverage.total_decisions + " decisions have tested_by relations";
|
|
2464
|
+
|
|
2465
|
+
// Commit traceability
|
|
2466
|
+
var traceVal = document.getElementById("insight-traceability");
|
|
2467
|
+
var traceDetail = document.getElementById("insight-traceability-detail");
|
|
2468
|
+
if (traceVal) traceVal.textContent = Math.round(vs.commit_traceability.traceability_rate * 100) + "%";
|
|
2469
|
+
if (traceDetail) traceDetail.textContent = vs.commit_traceability.with_commits + " of " + vs.commit_traceability.total_decisions + " decisions linked to commits";
|
|
2470
|
+
|
|
2471
|
+
// Decision lifecycle
|
|
2472
|
+
var lcVal = document.getElementById("insight-lifecycle");
|
|
2473
|
+
var lcDetail = document.getElementById("insight-lifecycle-detail");
|
|
2474
|
+
var lc = vs.decision_lifecycle;
|
|
2475
|
+
if (lcVal) lcVal.textContent = (lc.active + lc.provisional + lc.superseded + lc.overridden);
|
|
2476
|
+
if (lcDetail) lcDetail.textContent = lc.active + " active, " + lc.provisional + " provisional, " + lc.superseded + " superseded, " + lc.overridden + " overridden";
|
|
2477
|
+
|
|
2478
|
+
// Knowledge graph
|
|
2479
|
+
var graphVal = document.getElementById("insight-graph");
|
|
2480
|
+
var graphDetail = document.getElementById("insight-graph-detail");
|
|
2481
|
+
if (graphVal) graphVal.textContent = vs.knowledge_graph.entities + " / " + vs.knowledge_graph.relations;
|
|
2482
|
+
if (graphDetail) {
|
|
2483
|
+
var typeStrs = [];
|
|
2484
|
+
var ebt = vs.knowledge_graph.entities_by_type;
|
|
2485
|
+
for (var ek in ebt) { if (ebt.hasOwnProperty(ek)) typeStrs.push(ek + ": " + ebt[ek]); }
|
|
2486
|
+
graphDetail.textContent = typeStrs.length > 0 ? "Entities: " + typeStrs.join(", ") : "No entities";
|
|
2487
|
+
}
|
|
2488
|
+
|
|
2489
|
+
// Agent coordination
|
|
2490
|
+
var coordVal = document.getElementById("insight-coordination");
|
|
2491
|
+
var coordDetail = document.getElementById("insight-coordination-detail");
|
|
2492
|
+
if (coordVal) coordVal.textContent = vs.agent_coordination.total_handoffs;
|
|
2493
|
+
if (coordDetail) coordDetail.textContent = "Acknowledgment rate: " + Math.round(vs.agent_coordination.acknowledgment_rate * 100) + "%";
|
|
2494
|
+
}
|
|
2495
|
+
|
|
2496
|
+
function renderToolUsage() {
|
|
2497
|
+
var tbody = document.querySelector("#tool-usage-table tbody");
|
|
2498
|
+
if (!tbody) return;
|
|
2499
|
+
clearElement(tbody);
|
|
2500
|
+
|
|
2501
|
+
var tools = state.insights.toolUsage;
|
|
2502
|
+
if (tools.length === 0) {
|
|
2503
|
+
var row = document.createElement("tr");
|
|
2504
|
+
var cell = document.createElement("td");
|
|
2505
|
+
cell.colSpan = 6;
|
|
2506
|
+
cell.textContent = "No tool calls recorded";
|
|
2507
|
+
cell.className = "placeholder";
|
|
2508
|
+
row.appendChild(cell);
|
|
2509
|
+
tbody.appendChild(row);
|
|
2510
|
+
return;
|
|
2511
|
+
}
|
|
2512
|
+
|
|
2513
|
+
for (var i = 0; i < tools.length; i++) {
|
|
2514
|
+
var t = tools[i];
|
|
2515
|
+
var tr = document.createElement("tr");
|
|
2516
|
+
|
|
2517
|
+
var tdName = document.createElement("td");
|
|
2518
|
+
tdName.textContent = t.tool_name;
|
|
2519
|
+
tr.appendChild(tdName);
|
|
2520
|
+
|
|
2521
|
+
var tdCalls = document.createElement("td");
|
|
2522
|
+
tdCalls.textContent = t.call_count;
|
|
2523
|
+
tr.appendChild(tdCalls);
|
|
2524
|
+
|
|
2525
|
+
var tdErrors = document.createElement("td");
|
|
2526
|
+
tdErrors.textContent = t.error_count;
|
|
2527
|
+
if (t.error_count > 0) tdErrors.className = "error-count";
|
|
2528
|
+
tr.appendChild(tdErrors);
|
|
2529
|
+
|
|
2530
|
+
var tdAvg = document.createElement("td");
|
|
2531
|
+
tdAvg.textContent = t.avg_duration_ms;
|
|
2532
|
+
tr.appendChild(tdAvg);
|
|
2533
|
+
|
|
2534
|
+
var tdP95 = document.createElement("td");
|
|
2535
|
+
tdP95.textContent = t.p95_duration_ms;
|
|
2536
|
+
tr.appendChild(tdP95);
|
|
2537
|
+
|
|
2538
|
+
var tdLast = document.createElement("td");
|
|
2539
|
+
tdLast.textContent = formatTime(t.last_called);
|
|
2540
|
+
tr.appendChild(tdLast);
|
|
2541
|
+
|
|
2542
|
+
tbody.appendChild(tr);
|
|
2543
|
+
}
|
|
2544
|
+
}
|
|
2545
|
+
|
|
2546
|
+
function renderErrorBreakdown() {
|
|
2547
|
+
var tbody = document.querySelector("#error-breakdown-table tbody");
|
|
2548
|
+
var noMsg = document.getElementById("no-errors-msg");
|
|
2549
|
+
if (!tbody) return;
|
|
2550
|
+
clearElement(tbody);
|
|
2551
|
+
|
|
2552
|
+
var errors = state.insights.errors;
|
|
2553
|
+
if (errors.length === 0) {
|
|
2554
|
+
if (noMsg) noMsg.style.display = "block";
|
|
2555
|
+
return;
|
|
2556
|
+
}
|
|
2557
|
+
if (noMsg) noMsg.style.display = "none";
|
|
2558
|
+
|
|
2559
|
+
for (var i = 0; i < errors.length; i++) {
|
|
2560
|
+
var e = errors[i];
|
|
2561
|
+
var tr = document.createElement("tr");
|
|
2562
|
+
|
|
2563
|
+
var tdTool = document.createElement("td");
|
|
2564
|
+
tdTool.textContent = e.tool_name;
|
|
2565
|
+
tr.appendChild(tdTool);
|
|
2566
|
+
|
|
2567
|
+
var tdCode = document.createElement("td");
|
|
2568
|
+
tdCode.textContent = e.error_code;
|
|
2569
|
+
tr.appendChild(tdCode);
|
|
2570
|
+
|
|
2571
|
+
var tdCount = document.createElement("td");
|
|
2572
|
+
tdCount.textContent = e.count;
|
|
2573
|
+
tr.appendChild(tdCount);
|
|
2574
|
+
|
|
2575
|
+
tbody.appendChild(tr);
|
|
2576
|
+
}
|
|
2577
|
+
}
|
|
2578
|
+
|
|
2394
2579
|
/* ========== Initialization ========== */
|
|
2395
2580
|
|
|
2396
2581
|
document.addEventListener("DOMContentLoaded", function() {
|