@noodleseed/one 0.13.0 → 0.15.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/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analytics-ops.d.ts +3 -0
- package/dist/commands/analytics-ops.d.ts.map +1 -0
- package/dist/commands/analytics-ops.js +250 -0
- package/dist/commands/analytics-ops.js.map +1 -0
- package/dist/commands/logs-ops.d.ts.map +1 -1
- package/dist/commands/logs-ops.js +20 -0
- package/dist/commands/logs-ops.js.map +1 -1
- package/dist/commands/shared.d.ts.map +1 -1
- package/dist/commands/shared.js +10 -0
- package/dist/commands/shared.js.map +1 -1
- package/dist/metrics-render.d.ts +99 -0
- package/dist/metrics-render.d.ts.map +1 -0
- package/dist/metrics-render.js +182 -0
- package/dist/metrics-render.js.map +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +10 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +2 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +4 -0
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/module/dist/contract.d.ts +61 -0
- package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
- package/node_modules/@noodle-borg/module/dist/contract.js +1 -0
- package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +19 -0
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +74 -16
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/http-util.d.ts +9 -0
- package/node_modules/@noodle-borg/service/dist/http-util.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/http-util.js +24 -0
- package/node_modules/@noodle-borg/service/dist/http-util.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts +4 -0
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js +4 -0
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts +17 -0
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/request-event-metrics.d.ts +63 -0
- package/node_modules/@noodle-borg/service/dist/request-event-metrics.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/request-event-metrics.js +103 -0
- package/node_modules/@noodle-borg/service/dist/request-event-metrics.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/analytics.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/routes/analytics.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/analytics.js +107 -0
- package/node_modules/@noodle-borg/service/dist/routes/analytics.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/logs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/logs.js +20 -1
- package/node_modules/@noodle-borg/service/dist/routes/logs.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +8 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.js +25 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.js +27 -0
- package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +51 -1
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +2 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/request-event-buffer.d.ts +23 -0
- package/node_modules/@noodle-borg/service/dist/store/request-event-buffer.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/request-event-buffer.js +62 -0
- package/node_modules/@noodle-borg/service/dist/store/request-event-buffer.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.d.ts +27 -0
- package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.js +188 -0
- package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/request-events.d.ts +14 -0
- package/node_modules/@noodle-borg/service/dist/store/request-events.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/request-events.js +85 -0
- package/node_modules/@noodle-borg/service/dist/store/request-events.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/user-app-logs.d.ts +5 -0
- package/node_modules/@noodle-borg/service/dist/store/user-app-logs.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/user-app-logs.js +6 -1
- package/node_modules/@noodle-borg/service/dist/store/user-app-logs.js.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +8 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/handler.js +16 -32
- package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
- package/node_modules/@noodle-borg/transport-http/dist/request-capture.d.ts +49 -0
- package/node_modules/@noodle-borg/transport-http/dist/request-capture.d.ts.map +1 -0
- package/node_modules/@noodle-borg/transport-http/dist/request-capture.js +116 -0
- package/node_modules/@noodle-borg/transport-http/dist/request-capture.js.map +1 -0
- package/package.json +2 -2
|
@@ -6,6 +6,25 @@ import { validateToolArguments } from './input-validation.js';
|
|
|
6
6
|
import { mapExecutionError, mapPromptMessages, mapPromptsList, mapResourceContents, mapResourcesList, mapResourceTemplatesList, mapToolOutput, mapToolsList, redactWidgetLinkedOutput, } from './mapping.js';
|
|
7
7
|
/** MCP "resource not found" JSON-RPC error code (not in the SDK's `ErrorCode` enum). */
|
|
8
8
|
const RESOURCE_NOT_FOUND = -32002;
|
|
9
|
+
/** Report an observation; an observer bug must never break the request it watched. */
|
|
10
|
+
function notify(context, observation) {
|
|
11
|
+
try {
|
|
12
|
+
context.observe?.(observation);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// Analytics is strictly best-effort.
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/** Rough content-level token estimate (JSON chars / 4), computed on the raw execution output so
|
|
19
|
+
* the response path serializes it once — wire framing/duplication is deliberately excluded. */
|
|
20
|
+
function estimateTokens(value) {
|
|
21
|
+
try {
|
|
22
|
+
return Math.ceil(JSON.stringify(value).length / 4);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
9
28
|
/**
|
|
10
29
|
* Build an official `@modelcontextprotocol/sdk` {@link Server} bound to a resolved artifact. The SDK
|
|
11
30
|
* owns the wire (JSON-RPC framing, capability negotiation, protocol-version handling); this function is
|
|
@@ -31,41 +50,53 @@ export function buildMcpServer({ artifact, deps }, context = {}) {
|
|
|
31
50
|
? { instructions: artifact.server.instructions }
|
|
32
51
|
: {}),
|
|
33
52
|
});
|
|
34
|
-
registerTools(server, artifact, requestDeps);
|
|
53
|
+
registerTools(server, artifact, requestDeps, context);
|
|
35
54
|
if (hasResources)
|
|
36
|
-
registerResources(server, artifact, requestDeps);
|
|
55
|
+
registerResources(server, artifact, requestDeps, context);
|
|
37
56
|
if (hasPrompts)
|
|
38
|
-
registerPrompts(server, artifact, requestDeps);
|
|
57
|
+
registerPrompts(server, artifact, requestDeps, context);
|
|
39
58
|
return server;
|
|
40
59
|
}
|
|
41
|
-
function registerTools(server, artifact, deps) {
|
|
60
|
+
function registerTools(server, artifact, deps, context) {
|
|
42
61
|
// Our mapping helpers return structural subsets of the SDK's result unions; the `as` casts pick the
|
|
43
62
|
// intended union arm (the SDK union also has a Tasks arm that requires a `task` field we never emit).
|
|
44
63
|
server.setRequestHandler(ListToolsRequestSchema, () => mapToolsList(artifact));
|
|
45
64
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
46
|
-
const
|
|
65
|
+
const toolName = request.params.name;
|
|
66
|
+
const observe = (outcome, extra = {}) => notify(context, { method: 'tools/call', toolName, outcome, ...extra });
|
|
67
|
+
const tool = artifact.tools.find((item) => item.name === toolName);
|
|
47
68
|
if (tool !== undefined) {
|
|
48
69
|
const validation = validateToolArguments(tool.inputSchema, request.params.arguments ?? {});
|
|
49
70
|
if (validation.length > 0) {
|
|
50
|
-
|
|
71
|
+
observe('mcp_error', { errorKind: 'invalid_params' });
|
|
72
|
+
throw new McpError(ErrorCode.InvalidParams, `invalid arguments for tool "${toolName}"`, {
|
|
73
|
+
reason: 'invalid_tool_arguments',
|
|
74
|
+
validation,
|
|
75
|
+
});
|
|
51
76
|
}
|
|
52
77
|
}
|
|
53
|
-
const result = await executeTool(artifact,
|
|
78
|
+
const result = await executeTool(artifact, toolName, request.params.arguments ?? {}, deps);
|
|
54
79
|
if (result.ok) {
|
|
55
80
|
const output = tool?._meta?.ui?.resourceUri !== undefined
|
|
56
81
|
? redactWidgetLinkedOutput(result.output)
|
|
57
82
|
: result.output;
|
|
58
|
-
|
|
83
|
+
const mapped = mapToolOutput(output);
|
|
84
|
+
observe('ok', { outputTokensEst: estimateTokens(output) });
|
|
85
|
+
return mapped;
|
|
59
86
|
}
|
|
60
87
|
// Two channels (docs/SPEC.md "Error Translation Matrix"): model-actionable failures become an
|
|
61
88
|
// `isError` tool result; protocol faults are thrown as a JSON-RPC error the SDK serializes.
|
|
89
|
+
// The same split is the analytics two-tier taxonomy: tool_error vs mcp_error (ADR 0121).
|
|
62
90
|
const outcome = mapExecutionError(result.error);
|
|
63
|
-
if ('result' in outcome)
|
|
91
|
+
if ('result' in outcome) {
|
|
92
|
+
observe('tool_error', { errorKind: result.error.code });
|
|
64
93
|
return outcome.result;
|
|
94
|
+
}
|
|
95
|
+
observe('mcp_error', { errorKind: result.error.code });
|
|
65
96
|
throw new McpError(outcome.error.code, outcome.error.message);
|
|
66
97
|
});
|
|
67
98
|
}
|
|
68
|
-
function registerResources(server, artifact, deps) {
|
|
99
|
+
function registerResources(server, artifact, deps, context) {
|
|
69
100
|
server.setRequestHandler(ListResourcesRequestSchema, () => mapResourcesList(artifact));
|
|
70
101
|
server.setRequestHandler(ListResourceTemplatesRequestSchema, () => mapResourceTemplatesList(artifact));
|
|
71
102
|
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
@@ -75,10 +106,29 @@ function registerResources(server, artifact, deps) {
|
|
|
75
106
|
if (variables === null)
|
|
76
107
|
continue;
|
|
77
108
|
const result = await executeResource(artifact, resource.name, variables, deps);
|
|
78
|
-
if (!result.ok)
|
|
109
|
+
if (!result.ok) {
|
|
110
|
+
notify(context, {
|
|
111
|
+
method: 'resources/read',
|
|
112
|
+
resourceName: resource.name,
|
|
113
|
+
outcome: 'mcp_error',
|
|
114
|
+
errorKind: result.error.code,
|
|
115
|
+
});
|
|
79
116
|
throw new McpError(ErrorCode.InternalError, result.error.message);
|
|
80
|
-
|
|
117
|
+
}
|
|
118
|
+
const mapped = mapResourceContents(uri, resource.mimeType, result.output);
|
|
119
|
+
notify(context, {
|
|
120
|
+
method: 'resources/read',
|
|
121
|
+
resourceName: resource.name,
|
|
122
|
+
outcome: 'ok',
|
|
123
|
+
outputTokensEst: estimateTokens(result.output),
|
|
124
|
+
});
|
|
125
|
+
return mapped;
|
|
81
126
|
}
|
|
127
|
+
notify(context, {
|
|
128
|
+
method: 'resources/read',
|
|
129
|
+
outcome: 'mcp_error',
|
|
130
|
+
errorKind: 'resource_not_found',
|
|
131
|
+
});
|
|
82
132
|
throw new McpError(RESOURCE_NOT_FOUND, `resource not found: ${uri}`);
|
|
83
133
|
});
|
|
84
134
|
}
|
|
@@ -89,22 +139,30 @@ function matchResourceUri(pattern, isTemplate, uri) {
|
|
|
89
139
|
const parsed = parseUriTemplate(pattern);
|
|
90
140
|
return parsed.ok && parsed.value.kind === 'template' ? parsed.value.match(uri) : null;
|
|
91
141
|
}
|
|
92
|
-
function registerPrompts(server, artifact, deps) {
|
|
142
|
+
function registerPrompts(server, artifact, deps, context) {
|
|
93
143
|
server.setRequestHandler(ListPromptsRequestSchema, () => mapPromptsList(artifact));
|
|
94
144
|
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
95
145
|
const { name, arguments: args } = request.params;
|
|
146
|
+
const observe = (outcome, extra = {}) => notify(context, { method: 'prompts/get', promptName: name, outcome, ...extra });
|
|
96
147
|
const prompt = (artifact.prompts ?? []).find((p) => p.name === name);
|
|
97
|
-
if (!prompt)
|
|
148
|
+
if (!prompt) {
|
|
149
|
+
observe('mcp_error', { errorKind: 'unknown_prompt' });
|
|
98
150
|
throw new McpError(ErrorCode.InvalidParams, `unknown prompt "${name}"`);
|
|
151
|
+
}
|
|
99
152
|
for (const argument of prompt.arguments ?? []) {
|
|
100
153
|
if (argument.required && args?.[argument.name] === undefined) {
|
|
154
|
+
observe('mcp_error', { errorKind: 'invalid_params' });
|
|
101
155
|
throw new McpError(ErrorCode.InvalidParams, `missing required argument "${argument.name}"`);
|
|
102
156
|
}
|
|
103
157
|
}
|
|
104
158
|
const result = await executePrompt(artifact, name, args ?? {}, deps);
|
|
105
|
-
if (!result.ok)
|
|
159
|
+
if (!result.ok) {
|
|
160
|
+
observe('mcp_error', { errorKind: result.error.code });
|
|
106
161
|
throw new McpError(ErrorCode.InternalError, result.error.message);
|
|
107
|
-
|
|
162
|
+
}
|
|
163
|
+
const mapped = mapPromptMessages(result.output, prompt.description);
|
|
164
|
+
observe('ok', { outputTokensEst: estimateTokens(result.output) });
|
|
165
|
+
return mapped;
|
|
108
166
|
});
|
|
109
167
|
}
|
|
110
168
|
//# sourceMappingURL=sdk-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-server.js","sourceRoot":"","sources":["../src/sdk-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,qBAAqB,EAErB,SAAS,EACT,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,kCAAkC,EAClC,sBAAsB,EAEtB,QAAQ,EACR,yBAAyB,GAM1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAwB,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAGL,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,YAAY,EACZ,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAEtB,wFAAwF;AACxF,MAAM,kBAAkB,GAAG,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"sdk-server.js","sourceRoot":"","sources":["../src/sdk-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,15 @@ export declare function readJsonBody(req: IncomingMessage, max: number): Promise
|
|
|
15
15
|
error: string;
|
|
16
16
|
}>;
|
|
17
17
|
export declare function sendJson(res: ServerResponse, status: number, body: unknown): void;
|
|
18
|
+
/**
|
|
19
|
+
* Validate timestamp query params AND normalize them to canonical `toISOString()` form. `Date.parse`
|
|
20
|
+
* accepts more than ISO-8601 (RFC 2822, offsets), but the stores compare these values as raw strings
|
|
21
|
+
* against ISO `createdAt`s — so the parsed value is re-emitted canonically instead of reused verbatim.
|
|
22
|
+
* Keyed by param name (absent values pass through as `undefined`, insertion order preserved), the
|
|
23
|
+
* first unparseable value gets a `sendJson(res, 400, …)` and the call returns `undefined`; callers
|
|
24
|
+
* guard with `if (ts === undefined) return;` and read the normalized values from the result.
|
|
25
|
+
*/
|
|
26
|
+
export declare function normalizedTimestamps<K extends string>(res: ServerResponse, values: Readonly<Record<K, string | undefined>>): Record<K, string | undefined> | undefined;
|
|
18
27
|
export declare function sendUnauthorized(res: ServerResponse, message?: string): void;
|
|
19
28
|
export declare function sendForbidden(res: ServerResponse, message: string): void;
|
|
20
29
|
export declare function baseFromRequest(req: IncomingMessage, tls: TlsPosture): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-util.d.ts","sourceRoot":"","sources":["../src/http-util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9E,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAUrD;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAQzF;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAGjF;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,SAAiB,GAAG,IAAI,CAMpF;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGxE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAG7E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ5D"}
|
|
1
|
+
{"version":3,"file":"http-util.d.ts","sourceRoot":"","sources":["../src/http-util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9E,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,CAUrD;AAED,wBAAsB,YAAY,CAChC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAQzF;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAGjF;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EACnD,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAC9C,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,SAAS,CAe3C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,SAAiB,GAAG,IAAI,CAMpF;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAGxE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,CAG7E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ5D"}
|
|
@@ -26,6 +26,30 @@ export function sendJson(res, status, body) {
|
|
|
26
26
|
res.writeHead(status, { 'content-type': 'application/json; charset=utf-8' });
|
|
27
27
|
res.end(JSON.stringify(body));
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Validate timestamp query params AND normalize them to canonical `toISOString()` form. `Date.parse`
|
|
31
|
+
* accepts more than ISO-8601 (RFC 2822, offsets), but the stores compare these values as raw strings
|
|
32
|
+
* against ISO `createdAt`s — so the parsed value is re-emitted canonically instead of reused verbatim.
|
|
33
|
+
* Keyed by param name (absent values pass through as `undefined`, insertion order preserved), the
|
|
34
|
+
* first unparseable value gets a `sendJson(res, 400, …)` and the call returns `undefined`; callers
|
|
35
|
+
* guard with `if (ts === undefined) return;` and read the normalized values from the result.
|
|
36
|
+
*/
|
|
37
|
+
export function normalizedTimestamps(res, values) {
|
|
38
|
+
const normalized = {};
|
|
39
|
+
for (const [name, value] of Object.entries(values)) {
|
|
40
|
+
if (value === undefined) {
|
|
41
|
+
normalized[name] = undefined;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const parsed = Date.parse(value);
|
|
45
|
+
if (Number.isNaN(parsed)) {
|
|
46
|
+
sendJson(res, 400, { error: `"${name}" must be an ISO-8601 timestamp` });
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
normalized[name] = new Date(parsed).toISOString();
|
|
50
|
+
}
|
|
51
|
+
return normalized;
|
|
52
|
+
}
|
|
29
53
|
export function sendUnauthorized(res, message = 'unauthorized') {
|
|
30
54
|
res.writeHead(401, {
|
|
31
55
|
'content-type': 'application/json; charset=utf-8',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-util.js","sourceRoot":"","sources":["../src/http-util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAmB,MAAM,6BAA6B,CAAC;AAE9E,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAoB,EACpB,GAAW;IAEX,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAe,CAAC;QAC5B,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC;QACnB,IAAI,IAAI,GAAG,GAAG;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAoB,EACpB,GAAW;IAEX,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;IACjF,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAY,EAAE,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,iBAAkB,KAAe,CAAC,OAAO,EAAE,EAAE,CAAC;IACxF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa;IACzE,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAC;IAC7E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAmB,EAAE,OAAO,GAAG,cAAc;IAC5E,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,iCAAiC;QACjD,kBAAkB,EAAE,8BAA8B;KACnD,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAmB,EAAE,OAAe;IAChE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,CAAC,CAAC;IAC1E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAoB,EAAE,GAAe;IACnE,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IAC7C,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"http-util.js","sourceRoot":"","sources":["../src/http-util.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export { createLocalPolicyAdmissionGate, type FixedWindowQuota, InMemoryPolicyAs
|
|
|
13
13
|
export { CachingPolicyAssignmentStore, type PolicyCacheOptions, } from './policy-cache.js';
|
|
14
14
|
export { InMemoryPolicyCounterStore } from './policy-counters.js';
|
|
15
15
|
export { type DeployError, type DeployResult, type RecoverResult, type RollbackResult, ServerRegistry, } from './registry.js';
|
|
16
|
+
export { aggregateRequestEvents, type ClientMetrics, type MethodMetrics, type RequestMetrics, type SeriesBucket, type ToolMetrics, } from './request-event-metrics.js';
|
|
16
17
|
export { type GcpKmsConfig, gcpKmsMasterKeyProvider, type KmsClient, } from './secret/kms-master-key.js';
|
|
17
18
|
export { type RunningService, serveService } from './serve.js';
|
|
18
19
|
export { createServiceHandler } from './service.js';
|
|
@@ -21,6 +22,9 @@ export { AUDIT_SCHEMA_VERSION, type AuditDecision, type AuditDetails, type Audit
|
|
|
21
22
|
export { InMemoryControlPlaneStore } from './store/control-plane.js';
|
|
22
23
|
export { PostgresArtifactStore, type PostgresStoreOptions } from './store/postgres.js';
|
|
23
24
|
export { ensureStateHandleSchema, PostgresStateHandleStore, type PostgresStateHandleStoreOptions, } from './store/postgres-state-handles.js';
|
|
25
|
+
export { RequestEventBuffer } from './store/request-event-buffer.js';
|
|
26
|
+
export { InMemoryRequestEventStore } from './store/request-events.js';
|
|
27
|
+
export { ensureRequestEventSchema, PostgresRequestEventStore, } from './store/request-events-postgres.js';
|
|
24
28
|
export { InMemoryUserAppLogStore, type InMemoryUserAppLogStoreOptions, type UserAppLogEvent, type UserAppLogFilter, type UserAppLogInput, type UserAppLogLevel, type UserAppLogSink, type UserAppLogStore, } from './store/user-app-logs.js';
|
|
25
29
|
export { type AppArchiveResult, type AppRestoreResult, type ArtifactStore, CONFIG_NAME_PATTERN, type ConfigScope, type ConfigStore, type ConfigValueMetadata, type ControlPlaneStore, DEPLOYMENT_ID_PATTERN, type DeploymentListFilter, type DeploymentSummary, type DeployRecord, DOMAIN_PATTERN, InMemoryArtifactStore, InMemoryConfigStore, JsonFileArtifactStore, type ManagedConfigKind, type OrgDomainRecord, type OrgInvitationRecord, type OrgMemberRecord, type OrgRecord, type OrgRole, resolveConfigScope, type SecretEnvelope, type SignupAllowlistKind, type SignupAllowlistRecord, SLUG_PATTERN, scopeChain, type TenantAuthConfig, type TenantRef, validateConfigName, validateConfigScope, validateDomain, validateOrgRole, validateSignupAllowlistKind, validateSlug, validateTenantRef, } from './store.js';
|
|
26
30
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export { createLocalPolicyAdmissionGate, InMemoryPolicyAssignmentStore, LocalPol
|
|
|
12
12
|
export { CachingPolicyAssignmentStore, } from './policy-cache.js';
|
|
13
13
|
export { InMemoryPolicyCounterStore } from './policy-counters.js';
|
|
14
14
|
export { ServerRegistry, } from './registry.js';
|
|
15
|
+
export { aggregateRequestEvents, } from './request-event-metrics.js';
|
|
15
16
|
export { gcpKmsMasterKeyProvider, } from './secret/kms-master-key.js';
|
|
16
17
|
export { serveService } from './serve.js';
|
|
17
18
|
export { createServiceHandler } from './service.js';
|
|
@@ -20,6 +21,9 @@ export { AUDIT_SCHEMA_VERSION, InMemoryAuditStore, MultiSink, redactDetails, Std
|
|
|
20
21
|
export { InMemoryControlPlaneStore } from './store/control-plane.js';
|
|
21
22
|
export { PostgresArtifactStore } from './store/postgres.js';
|
|
22
23
|
export { ensureStateHandleSchema, PostgresStateHandleStore, } from './store/postgres-state-handles.js';
|
|
24
|
+
export { RequestEventBuffer } from './store/request-event-buffer.js';
|
|
25
|
+
export { InMemoryRequestEventStore } from './store/request-events.js';
|
|
26
|
+
export { ensureRequestEventSchema, PostgresRequestEventStore, } from './store/request-events-postgres.js';
|
|
23
27
|
export { InMemoryUserAppLogStore, } from './store/user-app-logs.js';
|
|
24
28
|
export { CONFIG_NAME_PATTERN, DEPLOYMENT_ID_PATTERN, DOMAIN_PATTERN, InMemoryArtifactStore, InMemoryConfigStore, JsonFileArtifactStore, resolveConfigScope, SLUG_PATTERN, scopeChain, validateConfigName, validateConfigScope, validateDomain, validateOrgRole, validateSignupAllowlistKind, validateSlug, validateTenantRef, } from './store.js';
|
|
25
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EACL,yBAAyB,EACzB,cAAc,EAEd,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,gBAAgB,EAEhB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,kBAAkB,GAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,WAAW,EAGX,iBAAiB,EAEjB,sBAAsB,EAEtB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAkB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,qBAAqB,EAGrB,sBAAsB,EACtB,+BAA+B,EAC/B,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EAGpB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,qBAAqB,EACrB,cAAc,EACd,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,8BAA8B,EAE9B,6BAA6B,EAC7B,wBAAwB,EAIxB,mBAAmB,EAQnB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,GAE7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAKL,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,uBAAuB,GAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAuB,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EAMpB,sBAAsB,EACtB,0BAA0B,GAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EAQpB,kBAAkB,EAElB,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAA6B,MAAM,qBAAqB,CAAC;AACvF,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GAEzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,uBAAuB,GAQxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,mBAAmB,EAKnB,qBAAqB,EAIrB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EAOrB,kBAAkB,EAIlB,YAAY,EACZ,UAAU,EAGV,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EACL,yBAAyB,EACzB,cAAc,EAEd,8BAA8B,EAC9B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,gBAAgB,EAEhB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAIL,kBAAkB,GAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,YAAY,EACZ,WAAW,EAGX,iBAAiB,EAEjB,sBAAsB,EAEtB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAkB,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,qBAAqB,EAGrB,sBAAsB,EACtB,+BAA+B,EAC/B,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oBAAoB,EAGpB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,qBAAqB,EACrB,cAAc,EACd,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,8BAA8B,EAE9B,6BAA6B,EAC7B,wBAAwB,EAIxB,mBAAmB,EAQnB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,GAE7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAKL,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,GAMvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,uBAAuB,GAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAuB,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EAMpB,sBAAsB,EACtB,0BAA0B,GAE3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,oBAAoB,EAQpB,kBAAkB,EAElB,SAAS,EACT,aAAa,EACb,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAA6B,MAAM,qBAAqB,CAAC;AACvF,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GAEzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,uBAAuB,GAQxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAIL,mBAAmB,EAKnB,qBAAqB,EAIrB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EAOrB,kBAAkB,EAIlB,YAAY,EACZ,UAAU,EAGV,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import type { RequestEventInput, RequestEventStore } from '@noodle-borg/module';
|
|
2
3
|
import type { AdmissionGate, Logger, OwnerTokenVerifier, TlsPosture } from '@noodle-borg/transport-http';
|
|
3
4
|
import type { JSONWebKeySet } from 'jose';
|
|
4
5
|
import type { AssetStore } from './assets.js';
|
|
@@ -90,6 +91,22 @@ export interface ServiceOptions {
|
|
|
90
91
|
* structurally redacted; emit sites pass only safe scalars. Defaults to an in-memory store in `serveService`.
|
|
91
92
|
*/
|
|
92
93
|
readonly userAppLogStore?: UserAppLogStore;
|
|
94
|
+
/**
|
|
95
|
+
* Tenant-facing analytics event store (ADR 0121) — the fourth telemetry stream, separate from platform
|
|
96
|
+
* logs, user-app logs, and audit. Backs the metrics/events read surfaces. `serveService` defaults it to
|
|
97
|
+
* Postgres when persistence is configured, else in-memory.
|
|
98
|
+
*/
|
|
99
|
+
readonly requestEventStore?: RequestEventStore;
|
|
100
|
+
/**
|
|
101
|
+
* Synchronous analytics capture hook threaded into the MCP router (ADR 0121). Must be enqueue-only —
|
|
102
|
+
* `serveService` wires it to a bounded `RequestEventBuffer` over {@link requestEventStore}.
|
|
103
|
+
*/
|
|
104
|
+
readonly captureRequestEvent?: (event: RequestEventInput) => void;
|
|
105
|
+
/**
|
|
106
|
+
* Default analytics retention window in days for the durable request-event stream (ADR 0121 Stage A;
|
|
107
|
+
* tiered by-plan retention is a later stage). Default 30.
|
|
108
|
+
*/
|
|
109
|
+
readonly requestEventRetentionDays?: number;
|
|
93
110
|
/**
|
|
94
111
|
* The self-hosted authorization server issuer (OA-2) advertised in protected-resource metadata so an
|
|
95
112
|
* MCP client can discover where to authenticate. When unset, the metadata omits `authorization_servers`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { RequestEvent } from '@noodle-borg/module';
|
|
2
|
+
/**
|
|
3
|
+
* Pure aggregation over the tenant analytics stream (ADR 0121 Stage B): turns a window of
|
|
4
|
+
* {@link RequestEvent}s into the metrics the CLI and Console render. Discovery events (`*/list`,
|
|
5
|
+
* `ping`) are excluded from usage numbers by construction; sessions are `initialize` counts (the
|
|
6
|
+
* Alpic model — stateless HTTP has no durable session, so `initialize` is the session marker).
|
|
7
|
+
* Node-side aggregation is deliberate for Stage B scale; pre-aggregated rollups are Stage F.
|
|
8
|
+
*/
|
|
9
|
+
export interface RequestMetrics {
|
|
10
|
+
readonly totals: {
|
|
11
|
+
readonly requests: number;
|
|
12
|
+
readonly sessions: number;
|
|
13
|
+
readonly toolCalls: number;
|
|
14
|
+
readonly discovery: number;
|
|
15
|
+
};
|
|
16
|
+
readonly errors: {
|
|
17
|
+
readonly ok: number;
|
|
18
|
+
readonly toolErrors: number;
|
|
19
|
+
readonly mcpErrors: number;
|
|
20
|
+
readonly toolErrorRate: number;
|
|
21
|
+
readonly mcpErrorRate: number;
|
|
22
|
+
readonly errorRate: number;
|
|
23
|
+
};
|
|
24
|
+
readonly latency: {
|
|
25
|
+
readonly avgMs: number;
|
|
26
|
+
readonly p50Ms: number;
|
|
27
|
+
readonly p95Ms: number;
|
|
28
|
+
readonly p99Ms: number;
|
|
29
|
+
};
|
|
30
|
+
readonly tokens: {
|
|
31
|
+
readonly total: number;
|
|
32
|
+
readonly avgPerCall: number;
|
|
33
|
+
};
|
|
34
|
+
readonly byTool: readonly ToolMetrics[];
|
|
35
|
+
readonly byClient: readonly ClientMetrics[];
|
|
36
|
+
readonly byMethod: readonly MethodMetrics[];
|
|
37
|
+
readonly series: readonly SeriesBucket[];
|
|
38
|
+
}
|
|
39
|
+
export interface ToolMetrics {
|
|
40
|
+
readonly tool: string;
|
|
41
|
+
readonly calls: number;
|
|
42
|
+
readonly errors: number;
|
|
43
|
+
readonly share: number;
|
|
44
|
+
readonly p95Ms: number;
|
|
45
|
+
}
|
|
46
|
+
export interface ClientMetrics {
|
|
47
|
+
readonly client: string;
|
|
48
|
+
readonly sessions: number;
|
|
49
|
+
readonly share: number;
|
|
50
|
+
}
|
|
51
|
+
export interface MethodMetrics {
|
|
52
|
+
readonly method: string;
|
|
53
|
+
readonly requests: number;
|
|
54
|
+
readonly share: number;
|
|
55
|
+
}
|
|
56
|
+
export interface SeriesBucket {
|
|
57
|
+
readonly bucketStart: string;
|
|
58
|
+
readonly requests: number;
|
|
59
|
+
readonly toolErrors: number;
|
|
60
|
+
readonly mcpErrors: number;
|
|
61
|
+
}
|
|
62
|
+
export declare function aggregateRequestEvents(events: readonly RequestEvent[]): RequestMetrics;
|
|
63
|
+
//# sourceMappingURL=request-event-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-event-metrics.d.ts","sourceRoot":"","sources":["../src/request-event-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAcD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,cAAc,CA4FtF"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/** Nearest-rank percentile over an already-sorted ascending array; 0 when empty. */
|
|
2
|
+
function percentile(sorted, p) {
|
|
3
|
+
if (sorted.length === 0)
|
|
4
|
+
return 0;
|
|
5
|
+
const rank = Math.ceil((p / 100) * sorted.length);
|
|
6
|
+
return sorted[Math.min(Math.max(rank, 1), sorted.length) - 1] ?? 0;
|
|
7
|
+
}
|
|
8
|
+
/** Truncate an ISO timestamp to its UTC hour bucket. */
|
|
9
|
+
function hourBucket(iso) {
|
|
10
|
+
return `${iso.slice(0, 13)}:00:00.000Z`;
|
|
11
|
+
}
|
|
12
|
+
export function aggregateRequestEvents(events) {
|
|
13
|
+
const usage = events.filter((e) => e.kind === 'usage');
|
|
14
|
+
const discovery = events.length - usage.length;
|
|
15
|
+
const durations = usage.map((e) => e.durationMs).sort((a, b) => a - b);
|
|
16
|
+
let ok = 0;
|
|
17
|
+
let toolErrors = 0;
|
|
18
|
+
let mcpErrors = 0;
|
|
19
|
+
let sessions = 0;
|
|
20
|
+
let toolCalls = 0;
|
|
21
|
+
let tokensTotal = 0;
|
|
22
|
+
const byTool = new Map();
|
|
23
|
+
const byClient = new Map();
|
|
24
|
+
const byMethod = new Map();
|
|
25
|
+
const series = new Map();
|
|
26
|
+
for (const event of usage) {
|
|
27
|
+
if (event.outcome === 'ok')
|
|
28
|
+
ok += 1;
|
|
29
|
+
else if (event.outcome === 'tool_error')
|
|
30
|
+
toolErrors += 1;
|
|
31
|
+
else
|
|
32
|
+
mcpErrors += 1;
|
|
33
|
+
if (event.method === 'initialize') {
|
|
34
|
+
sessions += 1;
|
|
35
|
+
const client = event.clientName ?? 'other';
|
|
36
|
+
byClient.set(client, (byClient.get(client) ?? 0) + 1);
|
|
37
|
+
}
|
|
38
|
+
byMethod.set(event.method, (byMethod.get(event.method) ?? 0) + 1);
|
|
39
|
+
if (event.toolName !== undefined) {
|
|
40
|
+
toolCalls += 1;
|
|
41
|
+
const tool = byTool.get(event.toolName) ?? { calls: 0, errors: 0, durations: [] };
|
|
42
|
+
tool.calls += 1;
|
|
43
|
+
if (event.outcome !== 'ok')
|
|
44
|
+
tool.errors += 1;
|
|
45
|
+
tool.durations.push(event.durationMs);
|
|
46
|
+
byTool.set(event.toolName, tool);
|
|
47
|
+
}
|
|
48
|
+
if (event.outputTokensEst !== undefined)
|
|
49
|
+
tokensTotal += event.outputTokensEst;
|
|
50
|
+
const bucketStart = hourBucket(event.createdAt);
|
|
51
|
+
const bucket = series.get(bucketStart) ?? { requests: 0, toolErrors: 0, mcpErrors: 0 };
|
|
52
|
+
bucket.requests += 1;
|
|
53
|
+
if (event.outcome === 'tool_error')
|
|
54
|
+
bucket.toolErrors += 1;
|
|
55
|
+
if (event.outcome === 'mcp_error')
|
|
56
|
+
bucket.mcpErrors += 1;
|
|
57
|
+
series.set(bucketStart, bucket);
|
|
58
|
+
}
|
|
59
|
+
const total = usage.length;
|
|
60
|
+
const rate = (n) => (total === 0 ? 0 : n / total);
|
|
61
|
+
return {
|
|
62
|
+
totals: { requests: total, sessions, toolCalls, discovery },
|
|
63
|
+
errors: {
|
|
64
|
+
ok,
|
|
65
|
+
toolErrors,
|
|
66
|
+
mcpErrors,
|
|
67
|
+
toolErrorRate: rate(toolErrors),
|
|
68
|
+
mcpErrorRate: rate(mcpErrors),
|
|
69
|
+
errorRate: rate(toolErrors + mcpErrors),
|
|
70
|
+
},
|
|
71
|
+
latency: {
|
|
72
|
+
avgMs: total === 0 ? 0 : durations.reduce((a, b) => a + b, 0) / total,
|
|
73
|
+
p50Ms: percentile(durations, 50),
|
|
74
|
+
p95Ms: percentile(durations, 95),
|
|
75
|
+
p99Ms: percentile(durations, 99),
|
|
76
|
+
},
|
|
77
|
+
// avg is over every usage call (a call with no output still dilutes it — it's a bloat gauge).
|
|
78
|
+
tokens: { total: tokensTotal, avgPerCall: total === 0 ? 0 : tokensTotal / total },
|
|
79
|
+
byTool: [...byTool.entries()]
|
|
80
|
+
.map(([tool, t]) => ({
|
|
81
|
+
tool,
|
|
82
|
+
calls: t.calls,
|
|
83
|
+
errors: t.errors,
|
|
84
|
+
share: toolCalls === 0 ? 0 : t.calls / toolCalls,
|
|
85
|
+
p95Ms: percentile(t.durations.slice().sort((a, b) => a - b), 95),
|
|
86
|
+
}))
|
|
87
|
+
.sort((a, b) => b.calls - a.calls),
|
|
88
|
+
byClient: [...byClient.entries()]
|
|
89
|
+
.map(([client, count]) => ({
|
|
90
|
+
client,
|
|
91
|
+
sessions: count,
|
|
92
|
+
share: sessions === 0 ? 0 : count / sessions,
|
|
93
|
+
}))
|
|
94
|
+
.sort((a, b) => b.sessions - a.sessions),
|
|
95
|
+
byMethod: [...byMethod.entries()]
|
|
96
|
+
.map(([method, requests]) => ({ method, requests, share: rate(requests) }))
|
|
97
|
+
.sort((a, b) => b.requests - a.requests),
|
|
98
|
+
series: [...series.entries()]
|
|
99
|
+
.map(([bucketStart, bucket]) => ({ bucketStart, ...bucket }))
|
|
100
|
+
.sort((a, b) => a.bucketStart.localeCompare(b.bucketStart)),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=request-event-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-event-metrics.js","sourceRoot":"","sources":["../src/request-event-metrics.ts"],"names":[],"mappings":"AAgEA,oFAAoF;AACpF,SAAS,UAAU,CAAC,MAAyB,EAAE,CAAS;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,wDAAwD;AACxD,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAA+B;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvE,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkE,CAAC;IACzF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuE,CAAC;IAE9F,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;YAAE,EAAE,IAAI,CAAC,CAAC;aAC/B,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY;YAAE,UAAU,IAAI,CAAC,CAAC;;YACpD,SAAS,IAAI,CAAC,CAAC;QAEpB,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAClC,QAAQ,IAAI,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC;YAC3C,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAElE,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACjC,SAAS,IAAI,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;YAClF,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAChB,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI;gBAAE,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS;YAAE,WAAW,IAAI,KAAK,CAAC,eAAe,CAAC;QAE9E,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACvF,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,KAAK,YAAY;YAAE,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW;YAAE,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAClE,OAAO;QACL,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE;QAC3D,MAAM,EAAE;YACN,EAAE;YACF,UAAU;YACV,SAAS;YACT,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC;YAC/B,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SACxC;QACD,OAAO,EAAE;YACP,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;YACrE,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;YAChC,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;YAChC,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,EAAE,CAAC;SACjC;QACD,8FAA8F;QAC9F,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,KAAK,EAAE;QACjF,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;aAC1B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnB,IAAI;YACJ,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS;YAChD,KAAK,EAAE,UAAU,CACf,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EACzC,EAAE,CACH;SACF,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QACpC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM;YACN,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ;SAC7C,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC1C,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;aAC1E,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC1C,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;aAC1B,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;aAC5D,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;KAC9D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import type { RequestEventStore } from '@noodle-borg/module';
|
|
3
|
+
import type { DeployAuthGate } from '../auth/deploy-gate.js';
|
|
4
|
+
import type { ControlPlaneStore, TenantRef } from '../store.js';
|
|
5
|
+
export declare function handleTenantMetrics(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, controlPlane: ControlPlaneStore, events: RequestEventStore, ref: TenantRef, url: URL): Promise<void>;
|
|
6
|
+
export declare function handleTenantEvents(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, controlPlane: ControlPlaneStore, events: RequestEventStore, ref: TenantRef, url: URL): Promise<void>;
|
|
7
|
+
export declare function handleTenantSession(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, controlPlane: ControlPlaneStore, events: RequestEventStore, ref: TenantRef, sessionId: string): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/routes/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAsB,iBAAiB,EAAkB,MAAM,qBAAqB,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAwBhE,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,IAAI,CAAC,CAqCf;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAcf"}
|