@noodleseed/one 0.142.3 → 0.143.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/dist/bin.js +0 -0
- package/dist/metrics-render.d.ts +26 -0
- package/dist/metrics-render.d.ts.map +1 -1
- package/dist/metrics-render.js +62 -18
- package/dist/metrics-render.js.map +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
- package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js +25 -0
- package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.js +1 -1
- package/node_modules/@noodle-borg/observability/dist/request-event-metrics.js +101 -0
- package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js +2 -18
- package/node_modules/@noodleseed/assistant/package.json +1 -1
- package/package.json +1 -1
package/dist/bin.js
CHANGED
|
File without changes
|
package/dist/metrics-render.d.ts
CHANGED
|
@@ -66,6 +66,32 @@ export interface MetricsData {
|
|
|
66
66
|
readonly unknown: number;
|
|
67
67
|
};
|
|
68
68
|
}[];
|
|
69
|
+
/** Evidence-aware caller activity and legacy handshake diagnostics; absent from older services. */
|
|
70
|
+
readonly clientActivity?: {
|
|
71
|
+
readonly callers: readonly {
|
|
72
|
+
readonly family: string;
|
|
73
|
+
readonly attribution: 'known_client' | 'self_reported' | 'transport_only' | 'unattributed';
|
|
74
|
+
readonly reportedName?: string;
|
|
75
|
+
readonly requests: number;
|
|
76
|
+
readonly errors: number;
|
|
77
|
+
readonly share: number;
|
|
78
|
+
readonly lastSuccessfulAt?: string;
|
|
79
|
+
readonly protocolEras?: {
|
|
80
|
+
readonly legacy: number;
|
|
81
|
+
readonly modern: number;
|
|
82
|
+
readonly unknown: number;
|
|
83
|
+
};
|
|
84
|
+
}[];
|
|
85
|
+
readonly legacyHandshakes: {
|
|
86
|
+
readonly total: number;
|
|
87
|
+
readonly byReportedClient: readonly {
|
|
88
|
+
readonly reportedName?: string;
|
|
89
|
+
readonly initializations: number;
|
|
90
|
+
readonly share: number;
|
|
91
|
+
readonly lastInitializedAt: string;
|
|
92
|
+
}[];
|
|
93
|
+
};
|
|
94
|
+
};
|
|
69
95
|
readonly byMethod: readonly {
|
|
70
96
|
readonly method: string;
|
|
71
97
|
readonly requests: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-render.d.ts","sourceRoot":"","sources":["../src/metrics-render.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"metrics-render.d.ts","sourceRoot":"","sources":["../src/metrics-render.ts"],"names":[],"mappings":"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"}
|
package/dist/metrics-render.js
CHANGED
|
@@ -81,7 +81,7 @@ export function renderMetricsReport(context, metrics, opts) {
|
|
|
81
81
|
`${gradientText(num(totals.toolCalls), opts)} ${dim(plural(totals.toolCalls, 'tool call'), opts)}`,
|
|
82
82
|
`${pct(errors.errorRate)} ${dim('errors', opts)}`,
|
|
83
83
|
`${ms(latency.p95Ms)} ${dim('p95', opts)}`,
|
|
84
|
-
].join(' '), '', `${dim('latency', opts)} p50 ${ms(latency.p50Ms)} p95 ${ms(latency.p95Ms)} p99 ${ms(latency.p99Ms)}`, `${dim('errors', opts)} ${paint(AMBER, `${glyphFor('warn', opts)} tool ${pct(errors.toolErrorRate)}`, opts.color)} ${paint(ROSE, `${glyphFor('fail', opts)} mcp ${pct(errors.mcpErrorRate)}`, opts.color)}`, `${dim('tokens', opts)} ${Math.round(tokens.avgPerCall)} avg/call`, `${dim('protocol', opts)} legacy
|
|
84
|
+
].join(' '), '', `${dim('latency', opts)} p50 ${ms(latency.p50Ms)} p95 ${ms(latency.p95Ms)} p99 ${ms(latency.p99Ms)}`, `${dim('errors', opts)} ${paint(AMBER, `${glyphFor('warn', opts)} tool ${pct(errors.toolErrorRate)}`, opts.color)} ${paint(ROSE, `${glyphFor('fail', opts)} mcp ${pct(errors.mcpErrorRate)}`, opts.color)}`, `${dim('tokens', opts)} ${Math.round(tokens.avgPerCall)} avg/call`, `${dim('protocol', opts)} legacy handshakes ${num(initializationCount)} ${dim('· excluded from activity requests', opts)}`);
|
|
85
85
|
if (metrics.series.length > 1) {
|
|
86
86
|
lines.push(`${dim('volume', opts)} ${sparkline(metrics.series, opts)} ${dim('· hourly', opts)}`);
|
|
87
87
|
}
|
|
@@ -91,13 +91,16 @@ export function renderMetricsReport(context, metrics, opts) {
|
|
|
91
91
|
lines.push(toolRow(tool, metrics, opts));
|
|
92
92
|
}
|
|
93
93
|
const mixes = [];
|
|
94
|
-
if (metrics.
|
|
94
|
+
if (metrics.clientActivity === undefined) {
|
|
95
95
|
mixes.push(`${dim('clients', opts)} ${dim('client activity unavailable from this service version', opts)}`);
|
|
96
96
|
}
|
|
97
|
-
else
|
|
98
|
-
|
|
99
|
-
.
|
|
100
|
-
|
|
97
|
+
else {
|
|
98
|
+
metrics.clientActivity.callers.forEach((caller, index) => {
|
|
99
|
+
mixes.push(`${index === 0 ? `${dim('callers', opts)} ` : ' '}${callerActivity(caller, opts)}`);
|
|
100
|
+
});
|
|
101
|
+
metrics.clientActivity.legacyHandshakes.byReportedClient.forEach((handshake, index) => {
|
|
102
|
+
mixes.push(`${index === 0 ? `${dim('handshakes', opts)} ` : ' '}${legacyHandshakeActivity(handshake)}`);
|
|
103
|
+
});
|
|
101
104
|
}
|
|
102
105
|
if (metrics.byMethod.length > 0) {
|
|
103
106
|
mixes.push(`${dim('methods', opts)} ${metrics.byMethod
|
|
@@ -115,20 +118,61 @@ export function renderMetricsReport(context, metrics, opts) {
|
|
|
115
118
|
function legacyInitializationCount(metrics) {
|
|
116
119
|
return metrics.totals.legacyInitializations ?? metrics.totals.sessions;
|
|
117
120
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
const KNOWN_CLIENT_LABELS = {
|
|
122
|
+
'openai-mcp': 'OpenAI MCP',
|
|
123
|
+
claude: 'Claude',
|
|
124
|
+
codex: 'Codex',
|
|
125
|
+
mcpjam: 'MCPJam Inspector',
|
|
126
|
+
'mcp-inspector': 'MCP Inspector',
|
|
127
|
+
'noodle-console': 'Noodle Console',
|
|
128
|
+
};
|
|
129
|
+
function callerActivity(caller, opts) {
|
|
130
|
+
const detail = caller.lastSuccessfulAt === undefined
|
|
131
|
+
? 'no successful request'
|
|
132
|
+
: `last success ${caller.lastSuccessfulAt}`;
|
|
124
133
|
return [
|
|
125
|
-
`${
|
|
126
|
-
`${num(
|
|
127
|
-
protocolEraLabel(
|
|
134
|
+
`${callerLabel(caller)} ${pct(caller.share)}`,
|
|
135
|
+
`${num(caller.requests)} ${plural(caller.requests, 'request')}`,
|
|
136
|
+
protocolEraLabel(caller.protocolEras),
|
|
137
|
+
callerEvidence(caller),
|
|
128
138
|
detail,
|
|
129
|
-
shareBar(
|
|
139
|
+
shareBar(caller.share, MIX_BAR_WIDTH, opts),
|
|
130
140
|
].join(' · ');
|
|
131
141
|
}
|
|
142
|
+
function callerLabel(caller) {
|
|
143
|
+
if (caller.attribution === 'known_client') {
|
|
144
|
+
return KNOWN_CLIENT_LABELS[caller.family] ?? caller.family;
|
|
145
|
+
}
|
|
146
|
+
if (caller.attribution === 'self_reported') {
|
|
147
|
+
const modernOnly = caller.protocolEras !== undefined &&
|
|
148
|
+
caller.protocolEras.modern > 0 &&
|
|
149
|
+
caller.protocolEras.legacy === 0 &&
|
|
150
|
+
caller.protocolEras.unknown === 0;
|
|
151
|
+
return modernOnly ? 'Unidentified modern caller' : 'Unidentified caller';
|
|
152
|
+
}
|
|
153
|
+
if (caller.attribution === 'transport_only')
|
|
154
|
+
return 'Unrecognized connection software';
|
|
155
|
+
return 'Unidentified caller';
|
|
156
|
+
}
|
|
157
|
+
function callerEvidence(caller) {
|
|
158
|
+
if (caller.attribution === 'known_client')
|
|
159
|
+
return 'recognized client family';
|
|
160
|
+
if (caller.attribution === 'self_reported' && caller.reportedName !== undefined) {
|
|
161
|
+
return `reported itself as “${caller.reportedName}”`;
|
|
162
|
+
}
|
|
163
|
+
if (caller.attribution === 'transport_only')
|
|
164
|
+
return 'transport metadata only';
|
|
165
|
+
return 'No usable client metadata';
|
|
166
|
+
}
|
|
167
|
+
function legacyHandshakeActivity(handshake) {
|
|
168
|
+
const token = handshake.reportedName?.toLowerCase().replace(/[^a-z0-9]+/g, '-');
|
|
169
|
+
const label = token === 'mcpjam' || token === 'mcpjam-inspector'
|
|
170
|
+
? 'MCPJam Inspector'
|
|
171
|
+
: token === 'codex' || token === 'codex-mcp-client'
|
|
172
|
+
? 'Codex'
|
|
173
|
+
: (handshake.reportedName ?? 'Unidentified legacy client');
|
|
174
|
+
return `${label} ${num(handshake.initializations)} ${plural(handshake.initializations, 'handshake')} · last ${handshake.lastInitializedAt}`;
|
|
175
|
+
}
|
|
132
176
|
function protocolEraLabel(eras) {
|
|
133
177
|
if (eras === undefined)
|
|
134
178
|
return 'era unavailable';
|
|
@@ -138,8 +182,8 @@ function protocolEraLabel(eras) {
|
|
|
138
182
|
? 'legacy'
|
|
139
183
|
: eras.modern > 0
|
|
140
184
|
? 'modern'
|
|
141
|
-
: '
|
|
142
|
-
return eras.unknown > 0 && known !== '
|
|
185
|
+
: 'era unavailable';
|
|
186
|
+
return eras.unknown > 0 && known !== 'era unavailable' ? `${known} + unattributed` : known;
|
|
143
187
|
}
|
|
144
188
|
function toolTableHeader(metrics, opts) {
|
|
145
189
|
const nameWidth = toolNameWidth(metrics);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-render.js","sourceRoot":"","sources":["../src/metrics-render.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metrics-render.js","sourceRoot":"","sources":["../src/metrics-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -280,6 +280,31 @@ export const requestMetricsSchema = z.strictObject({
|
|
|
280
280
|
unknown: countSchema,
|
|
281
281
|
}),
|
|
282
282
|
})),
|
|
283
|
+
clientActivity: z.strictObject({
|
|
284
|
+
callers: z.array(z.strictObject({
|
|
285
|
+
family: z.string().min(1).max(32),
|
|
286
|
+
attribution: z.enum(['known_client', 'self_reported', 'transport_only', 'unattributed']),
|
|
287
|
+
reportedName: z.string().min(1).max(128).optional(),
|
|
288
|
+
requests: countSchema,
|
|
289
|
+
errors: countSchema,
|
|
290
|
+
share: metricNumberSchema,
|
|
291
|
+
lastSuccessfulAt: isoTimestampSchema.optional(),
|
|
292
|
+
protocolEras: z.strictObject({
|
|
293
|
+
legacy: countSchema,
|
|
294
|
+
modern: countSchema,
|
|
295
|
+
unknown: countSchema,
|
|
296
|
+
}),
|
|
297
|
+
})),
|
|
298
|
+
legacyHandshakes: z.strictObject({
|
|
299
|
+
total: countSchema,
|
|
300
|
+
byReportedClient: z.array(z.strictObject({
|
|
301
|
+
reportedName: z.string().min(1).max(128).optional(),
|
|
302
|
+
initializations: countSchema,
|
|
303
|
+
share: metricNumberSchema,
|
|
304
|
+
lastInitializedAt: isoTimestampSchema,
|
|
305
|
+
})),
|
|
306
|
+
}),
|
|
307
|
+
}),
|
|
283
308
|
byMethod: z.array(z.strictObject({
|
|
284
309
|
method: z.string().min(1).max(128),
|
|
285
310
|
requests: countSchema,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { ActionStatus, EmptyState, Metric, Panel, WidgetHeader } from './shared.js';
|
|
3
3
|
export function AnalyticsWidget() {
|
|
4
|
-
return (_jsxs("main", { children: [_jsx(WidgetHeader, { eyebrow: "Noodle Cloud", title: "Analytics", description: "A bounded request window from the selected app environment.", statusPath: "ok" }), _jsx(Panel, { title: "Request health", children: _jsxs("dl", { className: "metrics", children: [_jsx(Metric, { label: "Requests", path: "data.metrics.totals.requests" }), _jsx(Metric, { label: "Tool calls", path: "data.metrics.totals.toolCalls" }), _jsx(Metric, { label: "Error rate", path: "data.metrics.errors.errorRate" }), _jsx(Metric, { label: "P95 latency", path: "data.metrics.latency.p95Ms", hint: "Milliseconds" })] }) }), _jsxs(Panel, { title: "Observation window", children: [_jsxs("dl", { className: "facts", children: [_jsx(Metric, { label: "Since", path: "data.window.since" }), _jsx(Metric, { label: "Until", path: "data.window.until" }), _jsx(Metric, { label: "Partial", path: "data.truncated" }), _jsx(Metric, { label: "Legacy
|
|
4
|
+
return (_jsxs("main", { children: [_jsx(WidgetHeader, { eyebrow: "Noodle Cloud", title: "Analytics", description: "A bounded request window from the selected app environment.", statusPath: "ok" }), _jsx(Panel, { title: "Request health", children: _jsxs("dl", { className: "metrics", children: [_jsx(Metric, { label: "Requests", path: "data.metrics.totals.requests" }), _jsx(Metric, { label: "Tool calls", path: "data.metrics.totals.toolCalls" }), _jsx(Metric, { label: "Error rate", path: "data.metrics.errors.errorRate" }), _jsx(Metric, { label: "P95 latency", path: "data.metrics.latency.p95Ms", hint: "Milliseconds" })] }) }), _jsxs(Panel, { title: "Observation window", children: [_jsxs("dl", { className: "facts", children: [_jsx(Metric, { label: "Since", path: "data.window.since" }), _jsx(Metric, { label: "Until", path: "data.window.until" }), _jsx(Metric, { label: "Partial", path: "data.truncated" }), _jsx(Metric, { label: "Legacy handshakes", path: "data.metrics.totals.legacyInitializations" })] }), _jsx("p", { className: "notice", "data-tone": "warn", "data-bind-if": "data.truncated", children: "Partial data: the bounded analytics scan reached its limit. Narrow the time window for a complete view." })] }), _jsxs(Panel, { title: "Activity sources", children: [_jsx("p", { className: "notice", children: "Caller names are reported by client software and are not verified identities. Embedded assistant usage is a separate telemetry unit and is not counted here." }), _jsxs("div", { className: "collection", "data-collection": "data.metrics.clientActivity.callers", "data-collection-item": "caller", children: [_jsx("template", { "data-collection-template": "", children: _jsxs("article", { className: "collection-card", children: [_jsx("h3", { children: "MCP caller" }), _jsxs("p", { children: ["Attribution: ", _jsx("strong", { "data-bind": "caller.attribution", children: "\u2014" })] }), _jsxs("p", { "data-bind-if": "caller.reportedName", children: ["Reported name: ", _jsx("strong", { "data-bind": "caller.reportedName", children: "\u2014" })] }), _jsxs("p", { children: ["Recognized family: ", _jsx("strong", { "data-bind": "caller.family", children: "\u2014" })] }), _jsxs("p", { children: ["Requests: ", _jsx("strong", { "data-bind": "caller.requests", children: "\u2014" }), " \u00B7 errors:", ' ', _jsx("strong", { "data-bind": "caller.errors", children: "\u2014" })] }), _jsxs("p", { children: ["Era requests: modern ", _jsx("strong", { "data-bind": "caller.protocolEras.modern", children: "\u2014" }), " \u00B7 legacy ", _jsx("strong", { "data-bind": "caller.protocolEras.legacy", children: "\u2014" }), " \u00B7 unattributed", ' ', _jsx("strong", { "data-bind": "caller.protocolEras.unknown", children: "\u2014" })] })] }) }), _jsx(EmptyState, { children: "No MCP caller activity was observed in this window." })] }), _jsxs("div", { className: "collection", "data-collection": "data.metrics.clientActivity.legacyHandshakes.byReportedClient", "data-collection-item": "handshake", children: [_jsx("template", { "data-collection-template": "", children: _jsxs("article", { className: "collection-card", children: [_jsx("h3", { children: "Legacy protocol handshake" }), _jsxs("p", { "data-bind-if": "handshake.reportedName", children: ["Reported name: ", _jsx("strong", { "data-bind": "handshake.reportedName", children: "\u2014" })] }), _jsxs("p", { children: ["Handshakes: ", _jsx("strong", { "data-bind": "handshake.initializations", children: "\u2014" })] }), _jsxs("p", { children: ["Last handshake: ", _jsx("strong", { "data-bind": "handshake.lastInitializedAt", children: "\u2014" })] })] }) }), _jsx(EmptyState, { children: "No legacy handshakes were observed in this window." })] })] }), _jsx(Panel, { title: "Tools", children: _jsxs("div", { className: "collection", "data-collection": "data.metrics.byTool", "data-collection-item": "tool", children: [_jsx("template", { "data-collection-template": "", children: _jsxs("article", { className: "collection-card", children: [_jsx("h3", { "data-bind": "tool.tool", children: "Tool" }), _jsxs("p", { children: ["Calls: ", _jsx("strong", { "data-bind": "tool.calls", children: "\u2014" })] }), _jsxs("p", { children: ["Errors: ", _jsx("strong", { "data-bind": "tool.errors", children: "\u2014" })] })] }) }), _jsx(EmptyState, { children: "No tool calls were observed in this window." })] }) }), _jsx(ActionStatus, {})] }));
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=analytics.js.map
|
|
@@ -1,3 +1,46 @@
|
|
|
1
|
+
const KNOWN_CLIENT_FAMILIES = new Map([
|
|
2
|
+
['chatgpt', 'openai-mcp'],
|
|
3
|
+
['openai', 'openai-mcp'],
|
|
4
|
+
['openai-mcp', 'openai-mcp'],
|
|
5
|
+
['openai-mcp-codex', 'openai-mcp'],
|
|
6
|
+
['claude', 'claude'],
|
|
7
|
+
['claude-ai', 'claude'],
|
|
8
|
+
['claude-desktop', 'claude'],
|
|
9
|
+
['codex', 'codex'],
|
|
10
|
+
['codex-mcp-client', 'codex'],
|
|
11
|
+
['mcpjam', 'mcpjam'],
|
|
12
|
+
['mcpjam-inspector', 'mcpjam'],
|
|
13
|
+
['mcp-inspector', 'mcp-inspector'],
|
|
14
|
+
['noodle-console', 'noodle-console'],
|
|
15
|
+
]);
|
|
16
|
+
function familyToken(value) {
|
|
17
|
+
if (value === undefined)
|
|
18
|
+
return undefined;
|
|
19
|
+
const token = value
|
|
20
|
+
.toLowerCase()
|
|
21
|
+
.replace(/[^a-z0-9._-]+/g, '-')
|
|
22
|
+
.replace(/^-+|-+$/g, '')
|
|
23
|
+
.slice(0, 32);
|
|
24
|
+
return token.length === 0 ? undefined : token;
|
|
25
|
+
}
|
|
26
|
+
function callerIdentity(event) {
|
|
27
|
+
const observedFamily = event.clientFamily ?? familyToken(event.clientName) ?? 'unknown';
|
|
28
|
+
const knownFamily = KNOWN_CLIENT_FAMILIES.get(observedFamily);
|
|
29
|
+
if (knownFamily !== undefined) {
|
|
30
|
+
return { family: knownFamily, attribution: 'known_client' };
|
|
31
|
+
}
|
|
32
|
+
if (event.clientName !== undefined) {
|
|
33
|
+
return {
|
|
34
|
+
family: observedFamily,
|
|
35
|
+
attribution: 'self_reported',
|
|
36
|
+
reportedName: event.clientName,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (observedFamily === 'unknown') {
|
|
40
|
+
return { family: observedFamily, attribution: 'unattributed' };
|
|
41
|
+
}
|
|
42
|
+
return { family: observedFamily, attribution: 'transport_only' };
|
|
43
|
+
}
|
|
1
44
|
/** Nearest-rank percentile over an already-sorted ascending array; 0 when empty. */
|
|
2
45
|
function percentile(sorted, p) {
|
|
3
46
|
if (sorted.length === 0)
|
|
@@ -27,11 +70,22 @@ export function aggregateRequestEvents(events) {
|
|
|
27
70
|
const byTool = new Map();
|
|
28
71
|
const byClient = new Map();
|
|
29
72
|
const byClientFamily = new Map();
|
|
73
|
+
const callers = new Map();
|
|
74
|
+
const handshakes = new Map();
|
|
30
75
|
const byMethod = new Map();
|
|
31
76
|
const series = new Map();
|
|
32
77
|
for (const event of legacyInitializations) {
|
|
33
78
|
const client = event.clientName ?? 'other';
|
|
34
79
|
byClient.set(client, (byClient.get(client) ?? 0) + 1);
|
|
80
|
+
const handshake = handshakes.get(event.clientName) ?? {
|
|
81
|
+
initializations: 0,
|
|
82
|
+
lastInitializedAt: event.createdAt,
|
|
83
|
+
};
|
|
84
|
+
handshake.initializations += 1;
|
|
85
|
+
if (event.createdAt > handshake.lastInitializedAt) {
|
|
86
|
+
handshake.lastInitializedAt = event.createdAt;
|
|
87
|
+
}
|
|
88
|
+
handshakes.set(event.clientName, handshake);
|
|
35
89
|
}
|
|
36
90
|
for (const event of usage) {
|
|
37
91
|
if (event.outcome === 'ok')
|
|
@@ -57,6 +111,25 @@ export function aggregateRequestEvents(events) {
|
|
|
57
111
|
familyRow.lastSuccessfulAt = event.createdAt;
|
|
58
112
|
}
|
|
59
113
|
byClientFamily.set(family, familyRow);
|
|
114
|
+
const identity = callerIdentity(event);
|
|
115
|
+
const callerKey = `${identity.attribution}:${identity.family}`;
|
|
116
|
+
const callerRow = callers.get(callerKey) ?? {
|
|
117
|
+
family: identity.family,
|
|
118
|
+
attribution: identity.attribution,
|
|
119
|
+
...(identity.reportedName === undefined ? {} : { reportedName: identity.reportedName }),
|
|
120
|
+
requests: 0,
|
|
121
|
+
errors: 0,
|
|
122
|
+
protocolEras: { legacy: 0, modern: 0, unknown: 0 },
|
|
123
|
+
};
|
|
124
|
+
callerRow.requests += 1;
|
|
125
|
+
if (event.outcome !== 'ok')
|
|
126
|
+
callerRow.errors += 1;
|
|
127
|
+
callerRow.protocolEras[era] += 1;
|
|
128
|
+
if (event.outcome === 'ok' &&
|
|
129
|
+
(callerRow.lastSuccessfulAt === undefined || event.createdAt > callerRow.lastSuccessfulAt)) {
|
|
130
|
+
callerRow.lastSuccessfulAt = event.createdAt;
|
|
131
|
+
}
|
|
132
|
+
callers.set(callerKey, callerRow);
|
|
60
133
|
if (event.toolName !== undefined) {
|
|
61
134
|
toolCalls += 1;
|
|
62
135
|
const tool = byTool.get(event.toolName) ?? { calls: 0, errors: 0, durations: [] };
|
|
@@ -130,6 +203,34 @@ export function aggregateRequestEvents(events) {
|
|
|
130
203
|
protocolEras: { ...row.protocolEras },
|
|
131
204
|
}))
|
|
132
205
|
.sort((a, b) => b.requests - a.requests || a.family.localeCompare(b.family)),
|
|
206
|
+
clientActivity: {
|
|
207
|
+
callers: [...callers.entries()]
|
|
208
|
+
.map(([, row]) => ({
|
|
209
|
+
family: row.family,
|
|
210
|
+
attribution: row.attribution,
|
|
211
|
+
...(row.reportedName === undefined ? {} : { reportedName: row.reportedName }),
|
|
212
|
+
requests: row.requests,
|
|
213
|
+
errors: row.errors,
|
|
214
|
+
share: rate(row.requests),
|
|
215
|
+
...(row.lastSuccessfulAt === undefined ? {} : { lastSuccessfulAt: row.lastSuccessfulAt }),
|
|
216
|
+
protocolEras: { ...row.protocolEras },
|
|
217
|
+
}))
|
|
218
|
+
.sort((a, b) => b.requests - a.requests ||
|
|
219
|
+
a.family.localeCompare(b.family) ||
|
|
220
|
+
a.attribution.localeCompare(b.attribution)),
|
|
221
|
+
legacyHandshakes: {
|
|
222
|
+
total: sessions,
|
|
223
|
+
byReportedClient: [...handshakes.entries()]
|
|
224
|
+
.map(([reportedName, row]) => ({
|
|
225
|
+
...(reportedName === undefined ? {} : { reportedName }),
|
|
226
|
+
initializations: row.initializations,
|
|
227
|
+
share: sessions === 0 ? 0 : row.initializations / sessions,
|
|
228
|
+
lastInitializedAt: row.lastInitializedAt,
|
|
229
|
+
}))
|
|
230
|
+
.sort((a, b) => b.initializations - a.initializations ||
|
|
231
|
+
(a.reportedName ?? '').localeCompare(b.reportedName ?? '')),
|
|
232
|
+
},
|
|
233
|
+
},
|
|
133
234
|
byMethod: [...byMethod.entries()]
|
|
134
235
|
.map(([method, requests]) => ({ method, requests, share: rate(requests) }))
|
|
135
236
|
.sort((a, b) => b.requests - a.requests),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mcpSubdomainEndpointOptions, rollbackDeploymentOperation, } from '@noodle-borg/control-plane/portable';
|
|
2
|
-
import { DeveloperControlPlaneError, } from '@noodle-borg/developer-mcp';
|
|
2
|
+
import { DeveloperControlPlaneError, requestMetricsSchema, } from '@noodle-borg/developer-mcp';
|
|
3
3
|
import { aggregateRequestEvents } from '@noodle-borg/observability';
|
|
4
4
|
import { inspectCompiledServiceDeployment, inspectServiceDeployment } from './inspection.js';
|
|
5
5
|
const METRICS_SCAN_LIMIT = 50_000;
|
|
@@ -148,7 +148,7 @@ export class ServiceDeveloperControlPlane {
|
|
|
148
148
|
return {
|
|
149
149
|
window: { since, ...(input.until !== undefined ? { until: input.until } : {}) },
|
|
150
150
|
truncated: events.length >= METRICS_SCAN_LIMIT,
|
|
151
|
-
metrics:
|
|
151
|
+
metrics: requestMetricsSchema.parse(aggregateRequestEvents(events)),
|
|
152
152
|
};
|
|
153
153
|
}
|
|
154
154
|
async listEvents(ctx, input) {
|
|
@@ -311,22 +311,6 @@ function mapRequestEvent(event) {
|
|
|
311
311
|
...(event.details !== undefined ? { details: event.details } : {}),
|
|
312
312
|
};
|
|
313
313
|
}
|
|
314
|
-
function mutableMetrics(metrics) {
|
|
315
|
-
return {
|
|
316
|
-
totals: { ...metrics.totals },
|
|
317
|
-
errors: { ...metrics.errors },
|
|
318
|
-
latency: { ...metrics.latency },
|
|
319
|
-
tokens: { ...metrics.tokens },
|
|
320
|
-
byTool: metrics.byTool.map((item) => ({ ...item })),
|
|
321
|
-
byClient: metrics.byClient.map((item) => ({ ...item })),
|
|
322
|
-
byClientFamily: metrics.byClientFamily.map((item) => ({
|
|
323
|
-
...item,
|
|
324
|
-
protocolEras: { ...item.protocolEras },
|
|
325
|
-
})),
|
|
326
|
-
byMethod: metrics.byMethod.map((item) => ({ ...item })),
|
|
327
|
-
series: metrics.series.map((item) => ({ ...item })),
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
314
|
function effectiveCapabilities(capabilities, role) {
|
|
331
315
|
return capabilities.filter((capability) => capability !== 'deployments:rollback' || role === 'owner');
|
|
332
316
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noodleseed/assistant",
|
|
3
|
-
"version": "1.26.
|
|
3
|
+
"version": "1.26.1",
|
|
4
4
|
"description": "Embed the Noodle Seed customer-branded assistant in your web app with managed or framework-owned UI, a framework-neutral MCP App host, a DOM-free client, and a backend session helper. Authoring and deploying the server is @noodleseed/one.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noodleseed/one",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.143.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Noodle CLI by Noodle Seed — author, run, and deploy declarative MCP servers. Embedding the assistant in your own web app is @noodleseed/assistant.",
|
|
6
6
|
"license": "Apache-2.0",
|