@kya-os/mcp 1.17.0 → 1.20.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.
Files changed (71) hide show
  1. package/CHANGELOG.md +398 -0
  2. package/CONFORMANCE.md +18 -6
  3. package/README.md +59 -0
  4. package/SPEC.md +57 -4
  5. package/dist/card/cimd.js +6 -2
  6. package/dist/card/cimd.js.map +1 -1
  7. package/dist/card/delegation.d.ts +12 -3
  8. package/dist/card/delegation.js +13 -7
  9. package/dist/card/delegation.js.map +1 -1
  10. package/dist/card/index.d.ts +1 -0
  11. package/dist/card/index.js +1 -0
  12. package/dist/card/index.js.map +1 -1
  13. package/dist/card/revocation.d.ts +15 -4
  14. package/dist/card/revocation.js +9 -4
  15. package/dist/card/revocation.js.map +1 -1
  16. package/dist/card/status-list-proof.d.ts +32 -0
  17. package/dist/card/status-list-proof.js +102 -0
  18. package/dist/card/status-list-proof.js.map +1 -0
  19. package/dist/delegation/chain-enforcement.d.ts +16 -0
  20. package/dist/delegation/chain-enforcement.js +17 -0
  21. package/dist/delegation/chain-enforcement.js.map +1 -1
  22. package/dist/delegation/verification-method-key.d.ts +4 -1
  23. package/dist/delegation/verification-method-key.js.map +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.js +1 -1
  26. package/dist/index.js.map +1 -1
  27. package/dist/middleware/index.d.ts +3 -1
  28. package/dist/middleware/index.js +2 -0
  29. package/dist/middleware/index.js.map +1 -1
  30. package/dist/middleware/kya-os-transport.d.ts +43 -12
  31. package/dist/middleware/kya-os-transport.js +151 -28
  32. package/dist/middleware/kya-os-transport.js.map +1 -1
  33. package/dist/middleware/mcp-tool-callback.d.ts +48 -0
  34. package/dist/middleware/mcp-tool-callback.js +38 -0
  35. package/dist/middleware/mcp-tool-callback.js.map +1 -0
  36. package/dist/middleware/serve-in-process.d.ts +41 -0
  37. package/dist/middleware/serve-in-process.js +86 -0
  38. package/dist/middleware/serve-in-process.js.map +1 -0
  39. package/dist/middleware/with-kya-os-server.d.ts +20 -3
  40. package/dist/middleware/with-kya-os-server.js +16 -1
  41. package/dist/middleware/with-kya-os-server.js.map +1 -1
  42. package/dist/middleware/with-kya-os.config-types.d.ts +34 -0
  43. package/dist/middleware/with-kya-os.d.ts +4 -0
  44. package/dist/middleware/with-kya-os.delegation-gate.d.ts +2 -1
  45. package/dist/middleware/with-kya-os.delegation-gate.js +12 -18
  46. package/dist/middleware/with-kya-os.delegation-gate.js.map +1 -1
  47. package/dist/middleware/with-kya-os.delegation-verify.d.ts +7 -12
  48. package/dist/middleware/with-kya-os.delegation-verify.js +44 -9
  49. package/dist/middleware/with-kya-os.delegation-verify.js.map +1 -1
  50. package/dist/middleware/with-kya-os.deps.d.ts +15 -4
  51. package/dist/middleware/with-kya-os.helpers.d.ts +5 -0
  52. package/dist/middleware/with-kya-os.helpers.js +13 -0
  53. package/dist/middleware/with-kya-os.helpers.js.map +1 -1
  54. package/dist/middleware/with-kya-os.js +23 -0
  55. package/dist/middleware/with-kya-os.js.map +1 -1
  56. package/dist/middleware/with-kya-os.outcome.d.ts +18 -0
  57. package/dist/middleware/with-kya-os.outcome.js +36 -0
  58. package/dist/middleware/with-kya-os.outcome.js.map +1 -0
  59. package/dist/middleware/with-kya-os.policy-gate.d.ts +2 -1
  60. package/dist/middleware/with-kya-os.policy-gate.js +2 -1
  61. package/dist/middleware/with-kya-os.policy-gate.js.map +1 -1
  62. package/dist/middleware/with-kya-os.session.d.ts +76 -10
  63. package/dist/middleware/with-kya-os.session.js +739 -164
  64. package/dist/middleware/with-kya-os.session.js.map +1 -1
  65. package/dist/middleware/with-kya-os.types.d.ts +102 -8
  66. package/dist/proof/generator.d.ts +13 -0
  67. package/dist/proof/generator.js +15 -0
  68. package/dist/proof/generator.js.map +1 -1
  69. package/dist/proof/verifier.js +14 -9
  70. package/dist/proof/verifier.js.map +1 -1
  71. package/package.json +18 -14
@@ -13,14 +13,25 @@ import type { ProofGenerator, ProofAgentIdentity } from "../proof/generator.js";
13
13
  import type { ProofVerifier } from "../proof/verifier.js";
14
14
  import type { ResponseProofProfile } from "../types/protocol.js";
15
15
  import type { McpAuditEventAdapter } from "../audit/adapters/mcp.js";
16
- import type { KyaOsConfig, KyaOsDelegationConfig, KyaOsToolHandler } from "./with-kya-os.types.js";
16
+ import type { KyaOsAuthorizationOutcome, KyaOsConfig, KyaOsDelegationConfig, KyaOsToolResult } from "./with-kya-os.types.js";
17
17
  /**
18
18
  * Attach a signed proof recording an authorization OUTCOME (denied / step-up /
19
19
  * needs-authorization) to a response. Provided by the session/proof sub-factory
20
- * and consumed by the delegation- and policy-gate sub-factories, so it is typed
21
- * here as the shared internal contract between them.
20
+ * and consumed by the delegation- and policy-gate sub-factories and the public
21
+ * `proveOutcome`, so it is typed here as the shared internal contract between
22
+ * them. A `needs_authorization` proof binds the response (its content under
23
+ * the body profile, its envelope under the envelope profile); denial and
24
+ * step-up proofs bind none (SPEC §7.4).
22
25
  */
23
- export type AttachOutcomeProof = (response: Awaited<ReturnType<KyaOsToolHandler>>, toolName: string, args: Record<string, unknown>, sessionId: string | undefined, reason: string, outcome?: "denied" | "step_up_required" | "needs_authorization", paramsOverride?: Record<string, unknown>, responseData?: unknown) => Promise<Awaited<ReturnType<KyaOsToolHandler>>>;
26
+ export type AttachOutcomeProof = (response: KyaOsToolResult, toolName: string, args: Record<string, unknown>, sessionId: string | undefined, reason: string, outcome?: KyaOsAuthorizationOutcome, paramsOverride?: Record<string, unknown>) => Promise<KyaOsToolResult>;
27
+ /**
28
+ * Refuse, by throwing, a wrapped call whose proof could not be made. A proof
29
+ * is made where the result is sent, so every wrapper calls this on entry,
30
+ * before it records or runs anything, and it throws while no KYA-OS
31
+ * transport is open for the middleware. Provided by the session/proof
32
+ * sub-factory.
33
+ */
34
+ export type RequireProofLayer = () => void;
24
35
  /** The constructed dependencies shared across the middleware sub-factories. */
25
36
  export interface MiddlewareDeps {
26
37
  /** Proof-generation identity (DID + key material). */
@@ -5,6 +5,11 @@
5
5
  * of `./with-kya-os.ts` so the factory module stays focused on wiring. No shared
6
6
  * mutable state, no I/O — safe to unit test in isolation.
7
7
  */
8
+ /**
9
+ * `args` without the reserved `_kyaos*` control arguments: the call as its
10
+ * handler sees it, and as a gate's request hash binds it.
11
+ */
12
+ export declare function withoutControlArgs(args: Record<string, unknown>): Record<string, unknown>;
8
13
  /**
9
14
  * Strip control characters and cap length on caller-derived values before they
10
15
  * are interpolated into client-facing reasons or log lines. A hostile
@@ -6,6 +6,19 @@
6
6
  * mutable state, no I/O — safe to unit test in isolation.
7
7
  */
8
8
  import { getDelegationScopes } from "../delegation/chain-enforcement.js";
9
+ import { isKyaOsControlArg } from "../proof/covered-request.js";
10
+ /**
11
+ * `args` without the reserved `_kyaos*` control arguments: the call as its
12
+ * handler sees it, and as a gate's request hash binds it.
13
+ */
14
+ export function withoutControlArgs(args) {
15
+ const clean = {};
16
+ for (const [key, value] of Object.entries(args)) {
17
+ if (!isKyaOsControlArg(key))
18
+ clean[key] = value;
19
+ }
20
+ return clean;
21
+ }
9
22
  /**
10
23
  * Strip control characters and cap length on caller-derived values before they
11
24
  * are interpolated into client-facing reasons or log lines. A hostile
@@ -1 +1 @@
1
- {"version":3,"file":"with-kya-os.helpers.js","sourceRoot":"","sources":["../../src/middleware/with-kya-os.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,MAAM,GAAG,GAAG;IAC7D,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,6EAA6E;IAC7E,2EAA2E;IAC3E,wEAAwE;IACxE,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACrE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,sBAAsB,CAAC,GAAY;IAKjD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAA2B,CAAC;QACvC,MAAM,OAAO,GAAG,EAAE,CAAC,iBAGlB,CAAC;QACF,MAAM,QAAQ,GAAG,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,OAAO,EAAE,EAAE,IAAI,SAAS,CAAC;QAC7E,MAAM,gBAAgB,GAAG,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;QACzD,IAAI,eAAe,GAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,eAAe,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,eAAe,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,OAAO;YACL,QAAQ;YACR,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,eAAe;SAChB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"with-kya-os.helpers.js","sourceRoot":"","sources":["../../src/middleware/with-kya-os.helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA6B;IAE7B,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,MAAM,GAAG,GAAG;IAC7D,MAAM,CAAC,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,6EAA6E;IAC7E,2EAA2E;IAC3E,wEAAwE;IACxE,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;AACrE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,sBAAsB,CAAC,GAAY;IAKjD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,GAA2B,CAAC;QACvC,MAAM,OAAO,GAAG,EAAE,CAAC,iBAGlB,CAAC;QACF,MAAM,QAAQ,GAAG,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,OAAO,EAAE,EAAE,IAAI,SAAS,CAAC;QAC7E,MAAM,gBAAgB,GAAG,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC;QACzD,IAAI,eAAe,GAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,eAAe,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,eAAe,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,OAAO;YACL,QAAQ;YACR,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,eAAe;SAChB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IACtD,CAAC;AACH,CAAC"}
@@ -29,8 +29,11 @@ import { createDelegationVerification } from "./with-kya-os.delegation-verify.js
29
29
  import { createGrantResolution } from "./with-kya-os.grants.js";
30
30
  import { createPolicyGate } from "./with-kya-os.policy-gate.js";
31
31
  import { createDelegationGate } from "./with-kya-os.delegation-gate.js";
32
+ import { createOutcomeProver } from "./with-kya-os.outcome.js";
32
33
  import { createSessionProof } from "./with-kya-os.session.js";
33
34
  import { createProtocol } from "./with-kya-os.protocol.js";
35
+ /** The longest timer a JavaScript runtime keeps (2^31 - 1 ms, about 24.8 days). */
36
+ const MAX_PENDING_PROOF_TTL_MS = 2_147_483_647;
34
37
  // The public type surface lives in `./with-kya-os.types.ts`; re-export it here so
35
38
  // `import { KyaOsConfig, ... } from './with-kya-os'` continues to resolve unchanged.
36
39
  export * from "./with-kya-os.types.js";
@@ -46,6 +49,10 @@ export * from "./with-kya-os.types.js";
46
49
  * - You need custom request handler patterns
47
50
  * - You want per-tool control over proof/delegation wrapping
48
51
  *
52
+ * Connect such a server through `createKyaOsTransport`: proofs are made where
53
+ * that transport sends a result, and the wrappers refuse to run while no
54
+ * KYA-OS transport is open.
55
+ *
49
56
  * @param config - Agent identity and session configuration
50
57
  * @param cryptoProvider - Platform-specific crypto implementation
51
58
  * @returns Middleware components for session management and proof generation
@@ -60,6 +67,13 @@ export * from "./with-kya-os.types.js";
60
67
  * durable `SessionStore` via `config.session.sessionStore`.
61
68
  */
62
69
  export function createKyaOsMiddleware(config, cryptoProvider) {
70
+ if (config.pendingProofTtlMs !== undefined &&
71
+ !(Number.isFinite(config.pendingProofTtlMs) &&
72
+ config.pendingProofTtlMs > 0 &&
73
+ config.pendingProofTtlMs <= MAX_PENDING_PROOF_TTL_MS)) {
74
+ // A timer longer than this overflows, and Node and browsers fire it at once.
75
+ throw new TypeError(`pendingProofTtlMs must be a positive number of milliseconds, at most ${MAX_PENDING_PROOF_TTL_MS}`);
76
+ }
63
77
  if (config.audit && config.auditLog) {
64
78
  throw new TypeError('Configure either audit or legacy auditLog, not both');
65
79
  }
@@ -166,11 +180,19 @@ export function createKyaOsMiddleware(config, cryptoProvider) {
166
180
  const { wrapWithDelegation } = createDelegationGate(deps, {
167
181
  delegationVerification,
168
182
  attachOutcomeProof: session.attachOutcomeProof,
183
+ requireProofLayer: session.requireProofLayer,
169
184
  resolveExistingGrant,
170
185
  bindGrantOnSuccess,
171
186
  });
172
187
  const { withPolicyGate } = createPolicyGate(deps, {
173
188
  attachOutcomeProof: session.attachOutcomeProof,
189
+ requireProofLayer: session.requireProofLayer,
190
+ });
191
+ // Application code proves the outcomes it decides through the same
192
+ // attachOutcomeProof the gates use.
193
+ const { proveOutcome } = createOutcomeProver({
194
+ attachOutcomeProof: session.attachOutcomeProof,
195
+ requireProofLayer: session.requireProofLayer,
174
196
  });
175
197
  return {
176
198
  identity: config.identity,
@@ -183,6 +205,7 @@ export function createKyaOsMiddleware(config, cryptoProvider) {
183
205
  wrapWithProof: session.wrapWithProof,
184
206
  wrapWithDelegation,
185
207
  withPolicyGate,
208
+ proveOutcome,
186
209
  };
187
210
  }
188
211
  //# sourceMappingURL=with-kya-os.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"with-kya-os.js","sourceRoot":"","sources":["../../src/middleware/with-kya-os.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"with-kya-os.js","sourceRoot":"","sources":["../../src/middleware/with-kya-os.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * KYA-OS Middleware — `proveOutcome`, the public entry to outcome proofs.
3
+ *
4
+ * Application code that decides an authorization outcome itself (a provider
5
+ * enforcing OAuth scopes in-server, say) proves it here with the proof the
6
+ * gates attach to theirs. There is one implementation, `attachOutcomeProof`
7
+ * in `./with-kya-os.session.ts`; this module only adapts a request object to
8
+ * it, so the claims, `_meta` keys, profile handling, audit events and
9
+ * lifecycle stamp cannot drift between the gates and application code.
10
+ */
11
+ import type { KyaOsOutcomeProver } from "./with-kya-os.types.js";
12
+ import type { AttachOutcomeProof, RequireProofLayer } from "./with-kya-os.deps.js";
13
+ /** Collaborators the outcome prover borrows from the session/proof sub-factory. */
14
+ export interface OutcomeProverWiring {
15
+ attachOutcomeProof: AttachOutcomeProof;
16
+ requireProofLayer: RequireProofLayer;
17
+ }
18
+ export declare function createOutcomeProver(wiring: OutcomeProverWiring): KyaOsOutcomeProver;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * KYA-OS Middleware — `proveOutcome`, the public entry to outcome proofs.
3
+ *
4
+ * Application code that decides an authorization outcome itself (a provider
5
+ * enforcing OAuth scopes in-server, say) proves it here with the proof the
6
+ * gates attach to theirs. There is one implementation, `attachOutcomeProof`
7
+ * in `./with-kya-os.session.ts`; this module only adapts a request object to
8
+ * it, so the claims, `_meta` keys, profile handling, audit events and
9
+ * lifecycle stamp cannot drift between the gates and application code.
10
+ */
11
+ import { withoutOutcomeMeta } from "./with-kya-os.session.js";
12
+ import { withoutControlArgs } from "./with-kya-os.helpers.js";
13
+ const OUTCOMES = new Set([
14
+ "needs_authorization",
15
+ "step_up_required",
16
+ "denied",
17
+ ]);
18
+ export function createOutcomeProver(wiring) {
19
+ const { attachOutcomeProof, requireProofLayer } = wiring;
20
+ return {
21
+ async proveOutcome(request) {
22
+ requireProofLayer();
23
+ if (!OUTCOMES.has(request.outcome)) {
24
+ throw new TypeError(`proveOutcome: unknown outcome ${JSON.stringify(request.outcome)}; ` +
25
+ `expected one of ${[...OUTCOMES].join(", ")}`);
26
+ }
27
+ const params = withoutControlArgs(request.args);
28
+ // A copy, so the caller's result is never changed, without the `_meta`
29
+ // members only the middleware may set.
30
+ const result = { ...withoutOutcomeMeta(request.result) };
31
+ // The same members, plus `_meta`: still an R.
32
+ return attachOutcomeProof(result, request.toolName, params, request.sessionId, request.reason, request.outcome, params);
33
+ },
34
+ };
35
+ }
36
+ //# sourceMappingURL=with-kya-os.outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-kya-os.outcome.js","sourceRoot":"","sources":["../../src/middleware/with-kya-os.outcome.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAA4B;IACvE,qBAAqB;IACrB,kBAAkB;IAClB,QAAQ;CACT,CAAC,CAAC;AAQH,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;IAEzD,OAAO;QACL,KAAK,CAAC,YAAY,CAA4B,OAAoC;YAChF,iBAAiB,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,SAAS,CACjB,iCAAiC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;oBAClE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChD,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAChD,uEAAuE;YACvE,uCAAuC;YACvC,MAAM,MAAM,GAAG,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,8CAA8C;YAC9C,OAAO,kBAAkB,CACvB,MAAM,EACN,OAAO,CAAC,QAAQ,EAChB,MAAM,EACN,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,OAAO,EACf,MAAM,CACO,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -7,9 +7,10 @@
7
7
  * human approval before the handler runs. Extracted from `./with-kya-os.ts`.
8
8
  */
9
9
  import type { KyaOsPolicyGate } from "./with-kya-os.types.js";
10
- import type { MiddlewareDeps, AttachOutcomeProof } from "./with-kya-os.deps.js";
10
+ import type { MiddlewareDeps, AttachOutcomeProof, RequireProofLayer } from "./with-kya-os.deps.js";
11
11
  /** Collaborators the policy gate borrows from the session/proof sub-factory. */
12
12
  export interface PolicyGateWiring {
13
13
  attachOutcomeProof: AttachOutcomeProof;
14
+ requireProofLayer: RequireProofLayer;
14
15
  }
15
16
  export declare function createPolicyGate(deps: MiddlewareDeps, wiring: PolicyGateWiring): Pick<KyaOsPolicyGate, "withPolicyGate">;
@@ -17,7 +17,7 @@ import { KYA_OS_ERROR_CODES } from "../errors.js";
17
17
  import { sanitizeForMessage, extractPolicyPrincipal } from "./with-kya-os.helpers.js";
18
18
  export function createPolicyGate(deps, wiring) {
19
19
  const { proofGenerator, cryptoProvider, audit } = deps;
20
- const { attachOutcomeProof } = wiring;
20
+ const { attachOutcomeProof, requireProofLayer } = wiring;
21
21
  const defaultRiskClassifier = new RiskClassifier();
22
22
  const defaultPolicyEngine = new DefaultPolicyEngine();
23
23
  function withPolicyGate(toolName, handler, opts = {}) {
@@ -26,6 +26,7 @@ export function createPolicyGate(deps, wiring) {
26
26
  const approvalsKey = opts.approvalsArgKey ?? "_kyaos_approvals";
27
27
  const isValidApprovalSignature = opts.isValidApprovalSignature ?? (async () => false);
28
28
  return async (callArgs, sessionId, context) => {
29
+ requireProofLayer();
29
30
  // Composed after wrapWithDelegation, the approvals argument has already
30
31
  // been stripped and arrives in the call context; restore it so a step-up
31
32
  // resume verifies the same grants either way.
@@ -1 +1 @@
1
- {"version":3,"file":"with-kya-os.policy-gate.js","sourceRoot":"","sources":["../../src/middleware/with-kya-os.policy-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"with-kya-os.policy-gate.js","sourceRoot":"","sources":["../../src/middleware/with-kya-os.policy-gate.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,17 @@
5
5
  * live here, so the borrowing semantics are preserved exactly) and the two proof
6
6
  * paths: `wrapWithProof` (success responses) and `attachOutcomeProof` (denied /
7
7
  * step-up / needs-authorization outcomes). Extracted from `./with-kya-os.ts`.
8
+ *
9
+ * Neither path signs in the handler. The MCP SDK changes a result after the
10
+ * handler returns: SDK 2 adds `resultType` on the 2026-07-28 revision, which
11
+ * the envelope profile covers; both SDKs fill in a missing `content`, and SDK
12
+ * 2 appends a text item to `content` when `structuredContent` is not an
13
+ * object, which the body profile covers. Both paths therefore leave the proof
14
+ * to the outer layer, the withKyaOs transport, which makes it over the result
15
+ * it sends, under either profile.
8
16
  */
9
- import type { KyaOsToolHandler } from "./with-kya-os.types.js";
10
- import type { MiddlewareDeps, AttachOutcomeProof } from "./with-kya-os.deps.js";
17
+ import type { KyaOsToolHandler, KyaOsToolResult } from "./with-kya-os.types.js";
18
+ import type { MiddlewareDeps, AttachOutcomeProof, RequireProofLayer } from "./with-kya-os.deps.js";
11
19
  /**
12
20
  * The private `_meta` member a middleware's wrappers stamp their results with
13
21
  * while an outer layer (the withKyaOs transport) reads them. It holds a random
@@ -17,7 +25,16 @@ import type { MiddlewareDeps, AttachOutcomeProof } from "./with-kya-os.deps.js";
17
25
  * that.
18
26
  */
19
27
  export declare const LIFECYCLE_STAMP_META_KEY = "org.kya-os/lifecycle-stamp";
20
- type ToolResult = Awaited<ReturnType<KyaOsToolHandler>>;
28
+ /**
29
+ * The private `_meta` member that names the proof a wrapper left for the
30
+ * transport to make: a one-time id. What the proof
31
+ * claims stays in the middleware, keyed by that id, so code that can write a
32
+ * result cannot choose the claims. The transport redeems the id only on a
33
+ * result that also carries the middleware's stamp, and strips it as it strips
34
+ * the stamp. A string, so a copy of the result carries it too.
35
+ */
36
+ export declare const PENDING_PROOF_META_KEY = "org.kya-os/pending-proof";
37
+ type ToolResult = KyaOsToolResult;
21
38
  /**
22
39
  * Remove the `_meta` members only the middleware may set (proofs, proof error,
23
40
  * audit marker, lifecycle stamp) from a result it did not produce, keeping
@@ -25,16 +42,62 @@ type ToolResult = Awaited<ReturnType<KyaOsToolHandler>>;
25
42
  * is removed.
26
43
  */
27
44
  export declare function withoutOutcomeMeta<T extends ToolResult>(result: T): T;
28
- /** Remove the lifecycle stamp, which must never leave the process. */
29
- export declare function withoutLifecycleStamp<T extends ToolResult>(result: T): T;
45
+ /**
46
+ * Remove the middleware's private members, which must never leave the
47
+ * process, from `result` and from everything nested in it, at any depth.
48
+ */
49
+ export declare function withoutPrivateMeta<T extends ToolResult>(result: T): T;
50
+ /** Any value without the middleware's private `_meta` members, at any depth. */
51
+ export declare function withoutPrivateMembers(value: unknown): unknown;
52
+ /** What the outer layer (the withKyaOs transport) does with a middleware's results. */
53
+ export interface OuterProofLayer {
54
+ /**
55
+ * Count one more open transport, until the returned function is called.
56
+ * The wrappers refuse to run while none is open.
57
+ * Calling the returned function again does nothing.
58
+ */
59
+ open(): () => void;
60
+ /** Whether the middleware's wrappers returned `result`: it carries their stamp. */
61
+ owns(result: ToolResult): boolean;
62
+ /**
63
+ * `result` as it may leave the process: without the private members, and,
64
+ * when a wrapper left its proof to the transport, carrying that proof, made
65
+ * over `result` as it is now. Never throws: a proof that cannot be made is
66
+ * reported on the result, as one that fails in a wrapper is. A pending
67
+ * proof is redeemed once, and, when the result answers a `tools/call` the
68
+ * transport tracked, only by a proof left for that tool (`answering`).
69
+ */
70
+ send(result: ToolResult, answering?: {
71
+ toolName: string;
72
+ }): Promise<ToolResult>;
73
+ /**
74
+ * Any other part of an outgoing message (a notification's or request's
75
+ * `params`, an error's `data`) as it may leave the process: without the
76
+ * private members at any depth. A waiting proof whose id is found there
77
+ * is closed, so nothing can redeem it. Never throws.
78
+ */
79
+ scrub(value: unknown): unknown;
80
+ }
30
81
  /**
31
82
  * Tell the middleware behind `wrapWithProof` that an outer layer (the withKyaOs
32
83
  * transport) reads its results. From then on its wrappers stamp what they
33
- * return with the middleware's token. Returns the check for that stamp, or
84
+ * return with the middleware's token and leave their proofs to the layer.
85
+ * Returns the layer's view of those results, or
34
86
  * undefined for a middleware this module did not create, whose results are
35
87
  * then never treated as its own.
36
88
  */
37
- export declare function attachOuterProofLayer(wrapWithProof: object): ((result: ToolResult) => boolean) | undefined;
89
+ export declare function attachOuterProofLayer(wrapWithProof: object): OuterProofLayer | undefined;
90
+ /**
91
+ * The fallback session for a call that threaded none, or why there is none:
92
+ * `ambiguous` when several sessions are live and the middleware refuses to
93
+ * pick one, which might be another client's.
94
+ */
95
+ export type FallbackSession = {
96
+ sessionId: string;
97
+ } | {
98
+ sessionId: undefined;
99
+ ambiguous: boolean;
100
+ };
38
101
  export interface SessionProof {
39
102
  /** Establish a session from a handshake and cache it as the fallback. */
40
103
  handleHandshake(args: Record<string, unknown>): Promise<{
@@ -46,14 +109,17 @@ export interface SessionProof {
46
109
  }>;
47
110
  /**
48
111
  * Resolve the single-process fallback session for a call that threaded none —
49
- * or auto-create one when `config.autoSession` is set. Returns undefined (skip
50
- * the proof) when attribution would be ambiguous (multiple live sessions).
112
+ * or auto-create one when `config.autoSession` is set. Returns no session
113
+ * (skip the proof) when there is none, or, marked `ambiguous`, when
114
+ * attribution would be ambiguous (multiple live sessions).
51
115
  */
52
- ensureSession(): Promise<string | undefined>;
116
+ ensureSession(): Promise<FallbackSession>;
53
117
  /** Wrap a tool handler to attach a holder-of-key proof to success responses. */
54
118
  wrapWithProof<T extends Record<string, unknown> = Record<string, unknown>>(toolName: string, handler: KyaOsToolHandler<T>): KyaOsToolHandler;
55
119
  /** Attach a signed proof recording an authorization outcome to a response. */
56
120
  attachOutcomeProof: AttachOutcomeProof;
121
+ /** Refuse a wrapped call whose proof could not be made where it is sent. */
122
+ requireProofLayer: RequireProofLayer;
57
123
  }
58
124
  export declare function createSessionProof(deps: MiddlewareDeps): SessionProof;
59
125
  export {};