@pegma/knowledge-base-mcp 0.0.0-stage → 0.1.1

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.
@@ -0,0 +1,416 @@
1
+ import { articleKinds } from "@pegma/knowledge-base-contracts";
2
+ import { knowledgeLimits } from "@pegma/knowledge-base-core";
3
+ import { z } from "zod";
4
+ import { KnowledgeAgentBoundaryError } from "./errors.js";
5
+ import { defaultKnowledgeAgentLimits, minimumKnowledgeAgentResponseBytes, } from "./types.js";
6
+ const boundedText = (maximum) => z
7
+ .string()
8
+ .min(1)
9
+ .max(maximum)
10
+ .regex(/^[^\s\u0000-\u001f\u007f](?:[^\u0000-\u001f\u007f]*[^\s\u0000-\u001f\u007f])?$/u)
11
+ .regex(/^[^\ud800-\udfff]*$/u);
12
+ const identifier = boundedText(knowledgeLimits.identifierCharacters);
13
+ const generation = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
14
+ const positiveInteger = z.number().int().min(1).max(Number.MAX_SAFE_INTEGER);
15
+ const hash = z.string().regex(/^[a-f0-9]{64}$/u);
16
+ const kind = z.enum(articleKinds);
17
+ const applicability = z
18
+ .object({
19
+ productId: identifier,
20
+ productVersion: identifier,
21
+ buildId: identifier.optional(),
22
+ locale: z.string().min(1).max(64).optional(),
23
+ })
24
+ .strict();
25
+ const content = z
26
+ .object({
27
+ format: z.enum(["markdown", "plain_text"]),
28
+ text: z.string().min(1).max(knowledgeLimits.contentBytes),
29
+ })
30
+ .strict();
31
+ const validationPolicy = z
32
+ .object({ id: identifier, version: positiveInteger })
33
+ .strict();
34
+ const articleDraft = z
35
+ .object({
36
+ kind,
37
+ title: z.string().min(1).max(knowledgeLimits.titleCharacters),
38
+ summary: z.string().min(1).max(knowledgeLimits.summaryCharacters),
39
+ content,
40
+ tags: z
41
+ .array(z.string().min(1).max(knowledgeLimits.tagCharacters))
42
+ .max(knowledgeLimits.tags),
43
+ applicability,
44
+ })
45
+ .strict();
46
+ const evidenceSubmission = z
47
+ .object({
48
+ id: identifier,
49
+ articleId: identifier,
50
+ articleRevision: positiveInteger,
51
+ contentHash: hash,
52
+ validationPolicy,
53
+ checkId: identifier,
54
+ testKind: identifier,
55
+ applicability,
56
+ stagingBuildId: identifier,
57
+ steps: z
58
+ .array(z.string().min(1).max(knowledgeLimits.stepCharacters))
59
+ .min(1)
60
+ .max(knowledgeLimits.steps),
61
+ result: z.enum(["passed", "failed", "inconclusive"]),
62
+ executedAt: z.string().min(1).max(64),
63
+ runnerId: identifier,
64
+ artifacts: z
65
+ .array(z.object({ id: identifier, hash }).strict())
66
+ .max(knowledgeLimits.artifacts),
67
+ })
68
+ .strict();
69
+ const command = {
70
+ commandId: identifier,
71
+ correlationId: identifier,
72
+ expectedGeneration: generation,
73
+ };
74
+ /** Shared strict schemas; HTTP and MCP must use the same dispatcher. */
75
+ export const knowledgeAgentInputSchemas = Object.freeze({
76
+ getDraft: z.object({ articleId: identifier }).strict(),
77
+ createDraft: z
78
+ .object({
79
+ ...command,
80
+ expectedGeneration: z.literal(0),
81
+ articleId: identifier,
82
+ collectionId: identifier,
83
+ draft: articleDraft,
84
+ })
85
+ .strict(),
86
+ updateDraft: z
87
+ .object({
88
+ ...command,
89
+ articleId: identifier,
90
+ collectionId: identifier,
91
+ draft: articleDraft,
92
+ })
93
+ .strict(),
94
+ getValidationRequirements: z
95
+ .object({ collectionId: identifier, kind })
96
+ .strict(),
97
+ submitEvidence: z
98
+ .object({
99
+ ...command,
100
+ articleId: identifier,
101
+ evidence: evidenceSubmission,
102
+ receipt: boundedText(8_192).refine((value) => new TextEncoder().encode(value).byteLength <= 8_192),
103
+ })
104
+ .strict(),
105
+ });
106
+ export const knowledgeAgentEnvelopeSchema = z.discriminatedUnion("operation", [
107
+ z
108
+ .object({
109
+ apiVersion: z.literal("1"),
110
+ operation: z.literal("getDraft"),
111
+ input: knowledgeAgentInputSchemas.getDraft,
112
+ })
113
+ .strict(),
114
+ z
115
+ .object({
116
+ apiVersion: z.literal("1"),
117
+ operation: z.literal("createDraft"),
118
+ input: knowledgeAgentInputSchemas.createDraft,
119
+ })
120
+ .strict(),
121
+ z
122
+ .object({
123
+ apiVersion: z.literal("1"),
124
+ operation: z.literal("updateDraft"),
125
+ input: knowledgeAgentInputSchemas.updateDraft,
126
+ })
127
+ .strict(),
128
+ z
129
+ .object({
130
+ apiVersion: z.literal("1"),
131
+ operation: z.literal("getValidationRequirements"),
132
+ input: knowledgeAgentInputSchemas.getValidationRequirements,
133
+ })
134
+ .strict(),
135
+ z
136
+ .object({
137
+ apiVersion: z.literal("1"),
138
+ operation: z.literal("submitEvidence"),
139
+ input: knowledgeAgentInputSchemas.submitEvidence,
140
+ })
141
+ .strict(),
142
+ ]);
143
+ // Output schemas deliberately construct purpose-specific DTOs. Extra private
144
+ // fields from an application wrapper never become transport response fields.
145
+ const articleState = z.enum(["draft", "in-review", "published", "retired"]);
146
+ const revision = articleDraft
147
+ .extend({
148
+ articleId: identifier,
149
+ number: positiveInteger,
150
+ collectionId: identifier,
151
+ validationPolicy: validationPolicy.strip(),
152
+ contentHash: hash,
153
+ createdBy: identifier,
154
+ createdAt: z.string().min(1).max(64),
155
+ content: content.strip(),
156
+ applicability: applicability.strip(),
157
+ })
158
+ .strip();
159
+ const acknowledgement = z
160
+ .object({
161
+ value: z
162
+ .object({
163
+ id: identifier,
164
+ generation: positiveInteger,
165
+ articleRevision: positiveInteger,
166
+ state: articleState,
167
+ contentHash: hash,
168
+ })
169
+ .strip(),
170
+ replayed: z.boolean(),
171
+ })
172
+ .strip();
173
+ export const knowledgeAgentResultSchemas = Object.freeze({
174
+ getDraft: z
175
+ .object({
176
+ articleId: identifier,
177
+ generation: positiveInteger,
178
+ state: articleState,
179
+ revision,
180
+ hasPendingReview: z.boolean(),
181
+ hasPublication: z.boolean(),
182
+ publicationHeld: z.boolean(),
183
+ })
184
+ .strip(),
185
+ createDraft: acknowledgement,
186
+ updateDraft: acknowledgement,
187
+ getValidationRequirements: z
188
+ .object({
189
+ collectionId: identifier,
190
+ governanceGeneration: positiveInteger,
191
+ validationPolicy: validationPolicy.strip(),
192
+ expectedStagingBuildId: identifier,
193
+ checks: z
194
+ .array(z
195
+ .object({
196
+ id: identifier,
197
+ testKind: identifier,
198
+ maxAgeMilliseconds: positiveInteger,
199
+ })
200
+ .strip())
201
+ .max(knowledgeLimits.requirements),
202
+ })
203
+ .strip(),
204
+ submitEvidence: acknowledgement,
205
+ });
206
+ export function resolveKnowledgeAgentLimits(requested = {}) {
207
+ if (requested === null ||
208
+ typeof requested !== "object" ||
209
+ ![Object.prototype, null].includes(Object.getPrototypeOf(requested))) {
210
+ throw new TypeError("Invalid knowledge agent limits");
211
+ }
212
+ const result = { ...defaultKnowledgeAgentLimits };
213
+ for (const key of Reflect.ownKeys(requested)) {
214
+ if (typeof key !== "string" || !Object.hasOwn(result, key)) {
215
+ throw new TypeError("Unknown knowledge agent limit");
216
+ }
217
+ const descriptor = Object.getOwnPropertyDescriptor(requested, key);
218
+ if (descriptor === undefined || !("value" in descriptor)) {
219
+ throw new TypeError("Invalid knowledge agent limit");
220
+ }
221
+ const value = descriptor.value;
222
+ const name = key;
223
+ if (typeof value !== "number" ||
224
+ !Number.isSafeInteger(value) ||
225
+ value <= 0 ||
226
+ value > defaultKnowledgeAgentLimits[name] ||
227
+ (name === "maxResponseBytes" &&
228
+ value < minimumKnowledgeAgentResponseBytes)) {
229
+ throw new TypeError("Knowledge agent limits may only reduce ceilings");
230
+ }
231
+ result[name] = value;
232
+ }
233
+ return Object.freeze(result);
234
+ }
235
+ /**
236
+ * Detach only plain JSON data properties, with work/encoded-byte accounting
237
+ * before Zod reads them. Accessors, sparse arrays, cycles, symbols, and custom
238
+ * prototypes are rejected without invoking JSON coercion or a getter.
239
+ */
240
+ export function snapshotKnowledgeAgentJson(value, limits, maximumBytes = limits.maxRequestBytes) {
241
+ const ancestors = new Set();
242
+ let nodes = 0;
243
+ let bytes = 0;
244
+ const reserve = (count) => {
245
+ bytes += count;
246
+ if (bytes > maximumBytes)
247
+ throw new KnowledgeAgentBoundaryError("capacity");
248
+ };
249
+ const encodedText = (item) => {
250
+ if (item.length > maximumBytes)
251
+ throw new KnowledgeAgentBoundaryError("capacity");
252
+ const encoded = JSON.stringify(item);
253
+ if (encoded.length > maximumBytes)
254
+ throw new KnowledgeAgentBoundaryError("capacity");
255
+ reserve(new TextEncoder().encode(encoded).byteLength);
256
+ };
257
+ const visit = (item, depth) => {
258
+ nodes += 1;
259
+ if (nodes > limits.maxNodes || depth > limits.maxDepth)
260
+ throw new KnowledgeAgentBoundaryError("capacity");
261
+ if (item === null) {
262
+ reserve(4);
263
+ return item;
264
+ }
265
+ if (typeof item === "string") {
266
+ encodedText(item);
267
+ return item;
268
+ }
269
+ if (typeof item === "boolean") {
270
+ reserve(item ? 4 : 5);
271
+ return item;
272
+ }
273
+ if (typeof item === "number" && Number.isFinite(item)) {
274
+ reserve(String(item).length);
275
+ return item;
276
+ }
277
+ if (typeof item !== "object" || ancestors.has(item))
278
+ throw new KnowledgeAgentBoundaryError("invalid_request");
279
+ ancestors.add(item);
280
+ try {
281
+ if (Array.isArray(item)) {
282
+ if (item.length > limits.maxArrayLength)
283
+ throw new KnowledgeAgentBoundaryError("capacity");
284
+ const keys = Reflect.ownKeys(item);
285
+ if (keys.length !== item.length + 1)
286
+ throw new KnowledgeAgentBoundaryError("invalid_request");
287
+ reserve(2 + Math.max(0, item.length - 1));
288
+ const output = [];
289
+ for (let index = 0; index < item.length; index += 1) {
290
+ const property = Object.getOwnPropertyDescriptor(item, String(index));
291
+ if (property === undefined ||
292
+ !("value" in property) ||
293
+ !property.enumerable) {
294
+ throw new KnowledgeAgentBoundaryError("invalid_request");
295
+ }
296
+ output.push(visit(property.value, depth + 1));
297
+ }
298
+ return Object.freeze(output);
299
+ }
300
+ if (![Object.prototype, null].includes(Object.getPrototypeOf(item)))
301
+ throw new KnowledgeAgentBoundaryError("invalid_request");
302
+ const keys = Reflect.ownKeys(item);
303
+ if (keys.length > limits.maxObjectKeys)
304
+ throw new KnowledgeAgentBoundaryError("capacity");
305
+ reserve(2 + Math.max(0, keys.length - 1));
306
+ const output = Object.create(null);
307
+ for (const key of keys) {
308
+ if (typeof key !== "string")
309
+ throw new KnowledgeAgentBoundaryError("invalid_request");
310
+ const property = Object.getOwnPropertyDescriptor(item, key);
311
+ if (property === undefined ||
312
+ !("value" in property) ||
313
+ !property.enumerable) {
314
+ throw new KnowledgeAgentBoundaryError("invalid_request");
315
+ }
316
+ encodedText(key);
317
+ reserve(1);
318
+ output[key] = visit(property.value, depth + 1);
319
+ }
320
+ return Object.freeze(output);
321
+ }
322
+ finally {
323
+ ancestors.delete(item);
324
+ }
325
+ };
326
+ return visit(value, 0);
327
+ }
328
+ /** Bound UTF-8 bytes and every structural ceiling before invoking JSON.parse. */
329
+ export function parseKnowledgeAgentJson(source, requested) {
330
+ const limits = resolveKnowledgeAgentLimits(requested);
331
+ if (typeof source !== "string")
332
+ throw new KnowledgeAgentBoundaryError("invalid_request");
333
+ if (source.length > limits.maxRequestBytes ||
334
+ new TextEncoder().encode(source).byteLength > limits.maxRequestBytes) {
335
+ throw new KnowledgeAgentBoundaryError("capacity");
336
+ }
337
+ const frames = [];
338
+ const beginValue = () => {
339
+ const frame = frames.at(-1);
340
+ if (frame?.kind === "array" && frame.expectsValue) {
341
+ frame.entries += 1;
342
+ frame.expectsValue = false;
343
+ if (frame.entries > limits.maxArrayLength)
344
+ throw new KnowledgeAgentBoundaryError("capacity");
345
+ }
346
+ };
347
+ let nodes = 0;
348
+ let quoted = false;
349
+ let escaped = false;
350
+ let primitive = false;
351
+ for (const character of source) {
352
+ if (quoted) {
353
+ if (escaped)
354
+ escaped = false;
355
+ else if (character === "\\")
356
+ escaped = true;
357
+ else if (character === '"')
358
+ quoted = false;
359
+ continue;
360
+ }
361
+ if (character === '"') {
362
+ beginValue();
363
+ quoted = true;
364
+ primitive = false;
365
+ nodes += 1;
366
+ }
367
+ else if (character === "{" || character === "[") {
368
+ beginValue();
369
+ frames.push(character === "["
370
+ ? { kind: "array", entries: 0, expectsValue: true }
371
+ : { kind: "object", keys: 0 });
372
+ nodes += 1;
373
+ primitive = false;
374
+ }
375
+ else if (character === "}" || character === "]") {
376
+ frames.pop();
377
+ primitive = false;
378
+ }
379
+ else if (character === ",") {
380
+ const frame = frames.at(-1);
381
+ if (frame?.kind === "array")
382
+ frame.expectsValue = true;
383
+ primitive = false;
384
+ }
385
+ else if (character === ":") {
386
+ // For valid JSON, each structural colon belongs to exactly one object
387
+ // key. Counting physical keys also bounds duplicate-key parse work.
388
+ const frame = frames.at(-1);
389
+ if (frame?.kind === "object") {
390
+ frame.keys += 1;
391
+ if (frame.keys > limits.maxObjectKeys)
392
+ throw new KnowledgeAgentBoundaryError("capacity");
393
+ }
394
+ primitive = false;
395
+ }
396
+ else if (/\s/u.test(character)) {
397
+ primitive = false;
398
+ }
399
+ else if (!primitive) {
400
+ beginValue();
401
+ primitive = true;
402
+ nodes += 1;
403
+ }
404
+ if (frames.length > limits.maxDepth || nodes > limits.maxNodes)
405
+ throw new KnowledgeAgentBoundaryError("capacity");
406
+ }
407
+ let parsed;
408
+ try {
409
+ parsed = JSON.parse(source);
410
+ }
411
+ catch {
412
+ throw new KnowledgeAgentBoundaryError("invalid_request");
413
+ }
414
+ return snapshotKnowledgeAgentJson(parsed, limits);
415
+ }
416
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { KnowledgeAgentIdentity, KnowledgeAgentLimits } from "./types.js";
2
+ export type KnowledgeAgentTransport = "http" | "mcp";
3
+ export interface KnowledgeAgentLimitDecision {
4
+ readonly allowed: boolean;
5
+ readonly retryAfterSeconds?: number;
6
+ }
7
+ /** Ports receive the original request; neither a cookie nor body is authority. */
8
+ export interface KnowledgeAgentTransportOptions {
9
+ /** Canonical protected MCP resource, shared by both agent transports. */
10
+ readonly resource: string;
11
+ /** Host-owned Agent Access protected-resource metadata; never served here. */
12
+ readonly protectedResourceMetadataUrl: string;
13
+ /** Exact serialized origins. Originless native clients are also accepted. */
14
+ readonly allowedOrigins: readonly string[];
15
+ /**
16
+ * Authenticate the bearer credential, issuer, client, exact resource, expiry,
17
+ * revocation and current principal. Re-resolve authority on every request.
18
+ * Rejections are normalized: response bodies and host headers are discarded.
19
+ */
20
+ readonly authenticate: (request: Request) => KnowledgeAgentIdentity | Response | Promise<KnowledgeAgentIdentity | Response>;
21
+ /** Required host admission port, called before authentication or body reads. */
22
+ readonly limit: (request: Request, context: Readonly<{
23
+ transport: KnowledgeAgentTransport;
24
+ }>) => boolean | KnowledgeAgentLimitDecision | Promise<boolean | KnowledgeAgentLimitDecision>;
25
+ /** For synthetic loopback composition only; production endpoints use HTTPS. */
26
+ readonly allowInsecureLoopback?: boolean;
27
+ }
28
+ export interface KnowledgeAgentTransportConfiguration {
29
+ readonly transport: KnowledgeAgentTransport;
30
+ readonly endpointUrl: string;
31
+ readonly endpointOrigin: string;
32
+ readonly endpointPath: string;
33
+ readonly endpointHost: string;
34
+ readonly endpointProtocol: string;
35
+ readonly resource: string;
36
+ readonly protectedResourceMetadataUrl: string;
37
+ readonly allowedOrigins: readonly string[];
38
+ readonly authenticate: KnowledgeAgentTransportOptions["authenticate"];
39
+ readonly limit: KnowledgeAgentTransportOptions["limit"];
40
+ }
41
+ export type KnowledgeAgentTransportErrorCode = "invalid_request" | "invalid_token" | "forbidden" | "temporarily_unavailable" | "unavailable" | "capacity" | "method_not_allowed" | "unsupported_media_type";
42
+ /** Validate and snapshot host configuration once, before accepting requests. */
43
+ export declare function validateKnowledgeAgentTransportOptions(options: KnowledgeAgentTransportOptions, endpointUrl: string, transport: KnowledgeAgentTransport): KnowledgeAgentTransportConfiguration;
44
+ /** A matching path is claimed so a hostile authority cannot bypass admission. */
45
+ export declare function knowledgeAgentRequestMatches(request: Request, configuration: KnowledgeAgentTransportConfiguration): boolean;
46
+ /** Replace implicit CORS and caching with this endpoint's explicit policy. */
47
+ export declare function secureKnowledgeAgentResponse(response: Response, request: Request, configuration: KnowledgeAgentTransportConfiguration): Response;
48
+ export declare function knowledgeAgentTransportError(code: KnowledgeAgentTransportErrorCode, request: Request, configuration: KnowledgeAgentTransportConfiguration, retryAfterSeconds?: number): Response;
49
+ /** Shared HTTP/MCP admission. No untrusted body is read by this function. */
50
+ export declare function authorizeKnowledgeAgentRequest(request: Request, configuration: KnowledgeAgentTransportConfiguration): Promise<KnowledgeAgentIdentity | Response>;
51
+ /** Read actual bytes/chunks before decoding or parsing; never trust Length alone. */
52
+ export declare function readKnowledgeAgentJsonRequest(request: Request, limits: KnowledgeAgentLimits): Promise<{
53
+ readonly value: unknown;
54
+ } | Response>;
55
+ /** Serialize only complete bounded messages; never truncate application results. */
56
+ export declare function knowledgeAgentJsonResponse(value: unknown, status: number, maxBytes: number, request: Request, configuration: KnowledgeAgentTransportConfiguration): Response;
57
+ //# sourceMappingURL=transport-common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-common.d.ts","sourceRoot":"","sources":["../src/transport-common.ts"],"names":[],"mappings":"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"}