agenthooksprotocol 0.0.0-bootstrap.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 (151) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +29 -0
  3. package/dist/src/client/auth.d.ts +147 -0
  4. package/dist/src/client/auth.d.ts.map +1 -0
  5. package/dist/src/client/auth.js +629 -0
  6. package/dist/src/client/auth.js.map +1 -0
  7. package/dist/src/client/composition.d.ts +42 -0
  8. package/dist/src/client/composition.d.ts.map +1 -0
  9. package/dist/src/client/composition.js +523 -0
  10. package/dist/src/client/composition.js.map +1 -0
  11. package/dist/src/client/content.d.ts +73 -0
  12. package/dist/src/client/content.d.ts.map +1 -0
  13. package/dist/src/client/content.js +404 -0
  14. package/dist/src/client/content.js.map +1 -0
  15. package/dist/src/client/hooks.d.ts +62 -0
  16. package/dist/src/client/hooks.d.ts.map +1 -0
  17. package/dist/src/client/hooks.js +997 -0
  18. package/dist/src/client/hooks.js.map +1 -0
  19. package/dist/src/client/index.d.ts +11 -0
  20. package/dist/src/client/index.d.ts.map +1 -0
  21. package/dist/src/client/index.js +9 -0
  22. package/dist/src/client/index.js.map +1 -0
  23. package/dist/src/client/transport.d.ts +12 -0
  24. package/dist/src/client/transport.d.ts.map +1 -0
  25. package/dist/src/client/transport.js +347 -0
  26. package/dist/src/client/transport.js.map +1 -0
  27. package/dist/src/client/types.d.ts +117 -0
  28. package/dist/src/client/types.d.ts.map +1 -0
  29. package/dist/src/client/types.js +10 -0
  30. package/dist/src/client/types.js.map +1 -0
  31. package/dist/src/client/validation.d.ts +3 -0
  32. package/dist/src/client/validation.d.ts.map +1 -0
  33. package/dist/src/client/validation.js +25 -0
  34. package/dist/src/client/validation.js.map +1 -0
  35. package/dist/src/compaction.d.ts +27 -0
  36. package/dist/src/compaction.d.ts.map +1 -0
  37. package/dist/src/compaction.js +155 -0
  38. package/dist/src/compaction.js.map +1 -0
  39. package/dist/src/content-upload.d.ts +60 -0
  40. package/dist/src/content-upload.d.ts.map +1 -0
  41. package/dist/src/content-upload.js +129 -0
  42. package/dist/src/content-upload.js.map +1 -0
  43. package/dist/src/draft/generated.d.ts +3085 -0
  44. package/dist/src/draft/generated.d.ts.map +1 -0
  45. package/dist/src/draft/generated.js +15372 -0
  46. package/dist/src/draft/generated.js.map +1 -0
  47. package/dist/src/draft/index.d.ts +31 -0
  48. package/dist/src/draft/index.d.ts.map +1 -0
  49. package/dist/src/draft/index.js +129 -0
  50. package/dist/src/draft/index.js.map +1 -0
  51. package/dist/src/draft/schemas.d.ts +8848 -0
  52. package/dist/src/draft/schemas.d.ts.map +1 -0
  53. package/dist/src/draft/schemas.js +9219 -0
  54. package/dist/src/draft/schemas.js.map +1 -0
  55. package/dist/src/draft-atomic.d.ts +18 -0
  56. package/dist/src/draft-atomic.d.ts.map +1 -0
  57. package/dist/src/draft-atomic.js +102 -0
  58. package/dist/src/draft-atomic.js.map +1 -0
  59. package/dist/src/draft-runtime.d.ts +89 -0
  60. package/dist/src/draft-runtime.d.ts.map +1 -0
  61. package/dist/src/draft-runtime.js +242 -0
  62. package/dist/src/draft-runtime.js.map +1 -0
  63. package/dist/src/elicitation.d.ts +18 -0
  64. package/dist/src/elicitation.d.ts.map +1 -0
  65. package/dist/src/elicitation.js +191 -0
  66. package/dist/src/elicitation.js.map +1 -0
  67. package/dist/src/errors.d.ts +7 -0
  68. package/dist/src/errors.d.ts.map +1 -0
  69. package/dist/src/errors.js +15 -0
  70. package/dist/src/errors.js.map +1 -0
  71. package/dist/src/framing.d.ts +7 -0
  72. package/dist/src/framing.d.ts.map +1 -0
  73. package/dist/src/framing.js +39 -0
  74. package/dist/src/framing.js.map +1 -0
  75. package/dist/src/generated.d.ts +304 -0
  76. package/dist/src/generated.d.ts.map +1 -0
  77. package/dist/src/generated.js +1885 -0
  78. package/dist/src/generated.js.map +1 -0
  79. package/dist/src/hook-runner.d.ts +11 -0
  80. package/dist/src/hook-runner.d.ts.map +1 -0
  81. package/dist/src/hook-runner.js +223 -0
  82. package/dist/src/hook-runner.js.map +1 -0
  83. package/dist/src/index.d.ts +8 -0
  84. package/dist/src/index.d.ts.map +1 -0
  85. package/dist/src/index.js +8 -0
  86. package/dist/src/index.js.map +1 -0
  87. package/dist/src/observation.d.ts +26 -0
  88. package/dist/src/observation.d.ts.map +1 -0
  89. package/dist/src/observation.js +28 -0
  90. package/dist/src/observation.js.map +1 -0
  91. package/dist/src/server/attachments.d.ts +29 -0
  92. package/dist/src/server/attachments.d.ts.map +1 -0
  93. package/dist/src/server/attachments.js +112 -0
  94. package/dist/src/server/attachments.js.map +1 -0
  95. package/dist/src/server/hooks.d.ts +20 -0
  96. package/dist/src/server/hooks.d.ts.map +1 -0
  97. package/dist/src/server/hooks.js +129 -0
  98. package/dist/src/server/hooks.js.map +1 -0
  99. package/dist/src/server/index.d.ts +7 -0
  100. package/dist/src/server/index.d.ts.map +1 -0
  101. package/dist/src/server/index.js +4 -0
  102. package/dist/src/server/index.js.map +1 -0
  103. package/dist/src/server/stdio.d.ts +15 -0
  104. package/dist/src/server/stdio.d.ts.map +1 -0
  105. package/dist/src/server/stdio.js +69 -0
  106. package/dist/src/server/stdio.js.map +1 -0
  107. package/dist/src/transport.d.ts +7 -0
  108. package/dist/src/transport.d.ts.map +1 -0
  109. package/dist/src/transport.js +195 -0
  110. package/dist/src/transport.js.map +1 -0
  111. package/dist/src/types.d.ts +116 -0
  112. package/dist/src/types.d.ts.map +1 -0
  113. package/dist/src/types.js +14 -0
  114. package/dist/src/types.js.map +1 -0
  115. package/dist/src/validation.d.ts +7 -0
  116. package/dist/src/validation.d.ts.map +1 -0
  117. package/dist/src/validation.js +209 -0
  118. package/dist/src/validation.js.map +1 -0
  119. package/package.json +64 -0
  120. package/src/client/auth.ts +1076 -0
  121. package/src/client/composition.ts +708 -0
  122. package/src/client/content.ts +510 -0
  123. package/src/client/hooks.ts +1368 -0
  124. package/src/client/index.ts +28 -0
  125. package/src/client/transport.ts +408 -0
  126. package/src/client/types.ts +173 -0
  127. package/src/client/validation.ts +24 -0
  128. package/src/compaction.ts +196 -0
  129. package/src/content-upload.ts +205 -0
  130. package/src/draft/README.md +16 -0
  131. package/src/draft/ahp-codegen.lock.json +123 -0
  132. package/src/draft/generated.ts +19143 -0
  133. package/src/draft/index.ts +246 -0
  134. package/src/draft/schemas.ts +9413 -0
  135. package/src/draft-atomic.ts +119 -0
  136. package/src/draft-runtime.ts +365 -0
  137. package/src/elicitation.ts +254 -0
  138. package/src/errors.ts +30 -0
  139. package/src/framing.ts +56 -0
  140. package/src/generated.ts +2408 -0
  141. package/src/hook-runner.ts +310 -0
  142. package/src/index.ts +8 -0
  143. package/src/observation.ts +65 -0
  144. package/src/server/attachments.ts +128 -0
  145. package/src/server/hooks.ts +205 -0
  146. package/src/server/index.ts +18 -0
  147. package/src/server/node-crypto.d.ts +7 -0
  148. package/src/server/stdio.ts +81 -0
  149. package/src/transport.ts +273 -0
  150. package/src/types.ts +124 -0
  151. package/src/validation.ts +372 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/client/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { Effect, Capabilities, InterceptResponse, InterceptRequest, ObserveNotification, JsonValue } from "../draft/generated.js";
2
+ export type ClientEvent = ObserveNotification["params"]["event"];
3
+ /** Pure atomic composition. Previous effects are effective decisions, not
4
+ * modifications to replay. No execution, authorization, resolution or upload
5
+ * occurs here. Use composeResponseAsync for inline content/body composition. */
6
+ export declare function composeResponse(event: ClientEvent, previous: Effect[], response: InterceptResponse, capabilities: Capabilities): CompositionResult;
7
+ export interface CompositionResult {
8
+ event: ClientEvent;
9
+ effects: Effect[];
10
+ state: InterceptRequest["params"]["state"];
11
+ shortCircuit: boolean;
12
+ }
13
+ export interface CompositionOptions {
14
+ state?: InterceptRequest["params"]["state"];
15
+ /** Returns reusable, host-owned snapshot bytes; does not transfer a stream. */
16
+ readContent: (body: ReadableStream<Uint8Array>) => Promise<Uint8Array>;
17
+ /** Raw request event associated by parentEventId, source, session and server. */
18
+ elicitationRequest?: ClientEvent;
19
+ /** Actual subscriber projection. Metadata/omit/gap views do not grant reads. */
20
+ selectedEvent?: ClientEvent;
21
+ }
22
+ /** Normalize explicit and local fail-closed decisions identically. */
23
+ export declare function normalizeEffects(effects: Effect[], previousState?: InterceptRequest["params"]["state"]): {
24
+ effects: Effect[];
25
+ state: {
26
+ candidate: null | ({
27
+ provenance?: {} & import("../draft/generated.js").AdditionalProperties;
28
+ value: JsonValue;
29
+ } & import("../draft/generated.js").AdditionalProperties);
30
+ flow?: import("../draft/generated.js").OpenString<"none" | "stop" | "continue">;
31
+ injections?: Array<JsonValue>;
32
+ instructions?: Array<string>;
33
+ permission: import("../draft/generated.js").OpenString<"none" | "allow" | "ask" | "deny">;
34
+ } & import("../draft/generated.js").AdditionalProperties;
35
+ shortCircuit: boolean;
36
+ };
37
+ /** Compose inline effect bodies into fresh local streams before the next hook.
38
+ * Only the returned event publishes those streams; failed responses leave the
39
+ * caller's containers and previous effective decisions unchanged.
40
+ */
41
+ export declare function composeResponseAsync(event: ClientEvent, previous: Effect[], response: InterceptResponse, capabilities: Capabilities, options: CompositionOptions): Promise<CompositionResult>;
42
+ //# sourceMappingURL=composition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../../src/client/composition.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACV,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;AAuEjE;;gFAEgF;AAChF,wBAAgB,eAAe,CAC7B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,iBAAiB,EAC3B,YAAY,EAAE,YAAY,GACzB,iBAAiB,CAEnB;AACD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3C,YAAY,EAAE,OAAO,CAAC;CACvB;AACD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5C,+EAA+E;IAC/E,WAAW,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACvE,iFAAiF;IACjF,kBAAkB,CAAC,EAAE,WAAW,CAAC;IACjC,gFAAgF;IAChF,aAAa,CAAC,EAAE,WAAW,CAAC;CAC7B;AAoLD,sEAAsE;AACtE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;;;;sBA+Zsza,CAAC;;;;;;;;;EAjV32a;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,EAAE,iBAAiB,EAC3B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAoU5B"}
@@ -0,0 +1,523 @@
1
+ import { Ajv2020 } from "ajv/dist/2020.js";
2
+ import { fullFormats } from "ajv-formats/dist/formats.js";
3
+ import { schemas } from "../draft/schemas.js";
4
+ import { validateElicitationAnswer } from "../elicitation.js";
5
+ import { validateEffect, validateInterceptResponse } from "../draft/index.js";
6
+ const object = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
7
+ // Copy containers without consuming or transferring host-owned body streams.
8
+ function cloneEvent(value) {
9
+ if (value instanceof ReadableStream)
10
+ return value;
11
+ if (Array.isArray(value))
12
+ return value.map(cloneEvent);
13
+ if (object(value))
14
+ return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, cloneEvent(v)]));
15
+ return value;
16
+ }
17
+ function metadata(value) {
18
+ if (Array.isArray(value))
19
+ return value.map(metadata);
20
+ if (!object(value))
21
+ return value;
22
+ if (value.body instanceof ReadableStream) {
23
+ const { body: _, ...rest } = value;
24
+ return { ...metadata(rest), selection: "metadata" };
25
+ }
26
+ return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, metadata(v)]));
27
+ }
28
+ const base = "https://agenthooksprotocol.org/schemas/draft/";
29
+ let registry;
30
+ function validator() {
31
+ if (!registry) {
32
+ registry = new Ajv2020({
33
+ strict: false,
34
+ allErrors: true,
35
+ ownProperties: true,
36
+ });
37
+ registry.addFormat("uri", fullFormats.uri);
38
+ registry.addFormat("email", fullFormats.email);
39
+ registry.addFormat("date-time", fullFormats["date-time"]);
40
+ for (const schema of schemas)
41
+ registry.addSchema(schema);
42
+ }
43
+ return registry;
44
+ }
45
+ function equal(a, b) {
46
+ if (a === b)
47
+ return true;
48
+ if (a instanceof ReadableStream || b instanceof ReadableStream)
49
+ return false;
50
+ if (Array.isArray(a) && Array.isArray(b))
51
+ return a.length === b.length && a.every((v, i) => equal(v, b[i]));
52
+ return (object(a) &&
53
+ object(b) &&
54
+ Object.keys(a).length === Object.keys(b).length &&
55
+ Object.keys(a).every((k) => Object.hasOwn(b, k) && equal(a[k], b[k])));
56
+ }
57
+ // Canonical catalogue payload locations (not synthetic input/output slots).
58
+ const targets = {
59
+ "tool.before": { input: ["tool", "input"] },
60
+ "tool.permission.request": { input: ["tool", "input"] },
61
+ "tool.after": { output: ["items"] },
62
+ "turn.start": { prompt: ["items"] },
63
+ "turn.finish.before": { response: ["items"] },
64
+ "model.request.before": { request: ["params"] },
65
+ "model.response.after": { response: ["items"] },
66
+ "context.compact.before": { instructions: ["instructions"] },
67
+ "context.compact.after": { summary: ["summary"] },
68
+ "user.message.inbound": { prompt: ["message", "text"] },
69
+ "user.message.outbound": { content: ["message", "payload"] },
70
+ "user.elicitation.result": { content: ["elicitation", "result"] },
71
+ "workspace.change.before": { workspace: ["workspace", "change"] },
72
+ };
73
+ /** Pure atomic composition. Previous effects are effective decisions, not
74
+ * modifications to replay. No execution, authorization, resolution or upload
75
+ * occurs here. Use composeResponseAsync for inline content/body composition. */
76
+ export function composeResponse(event, previous, response, capabilities) {
77
+ return compose(event, previous, response, capabilities);
78
+ }
79
+ function compose(event, previous, response, capabilities, prepared, preflight = false, previousState) {
80
+ if (!validateInterceptResponse(response).ok)
81
+ throw new Error("Invalid intercept response");
82
+ const ajv = validator();
83
+ const boundary = ajv.getSchema(`${base}capabilities.schema.json#/$defs/${event.type}`);
84
+ if (!boundary || !boundary(capabilities))
85
+ throw new Error("Invalid capabilities for boundary");
86
+ const incoming = structuredClone(response.result.effects);
87
+ const staged = cloneEvent(prepared ?? event);
88
+ let effects = structuredClone(previous);
89
+ for (const effect of incoming) {
90
+ if (!validateEffect(effect).ok ||
91
+ !capabilities.effects.includes(effect.type))
92
+ throw new Error("Invalid or unsupported effect");
93
+ if (![
94
+ "deny",
95
+ "allow",
96
+ "ask",
97
+ "modify",
98
+ "return",
99
+ "message",
100
+ "flow",
101
+ "inject",
102
+ ].includes(effect.type))
103
+ throw new Error("Unknown effect");
104
+ // Elicitation content is inside an immutable MCP result body, not the
105
+ // descriptor. It cannot be validated or rewritten synchronously from a
106
+ // reference/stream. Reject rather than corrupting the catalogue envelope.
107
+ if (!prepared &&
108
+ effect.type === "modify" &&
109
+ event.type === "user.elicitation.result")
110
+ throw new Error("Body composition requires composeResponseAsync");
111
+ if ((effect.type === "return" || effect.type === "deny") &&
112
+ event.type === "user.elicitation.request") {
113
+ const meta = event.elicitation;
114
+ if (!object(meta) ||
115
+ (meta.mode !== "form" && meta.mode !== "url") ||
116
+ !capabilities.elicitation?.[meta.mode])
117
+ throw new Error("Unsupported elicitation mode");
118
+ }
119
+ if (effect.type === "return" && event.type === "user.elicitation.request") {
120
+ const meta = event.elicitation;
121
+ if (!ajv.validate(`${base}mcp-elicitation.schema.json#/$defs/result`, effect.value))
122
+ throw new Error("Invalid elicitation result");
123
+ if (!object(effect.value))
124
+ throw new Error("Invalid elicitation result");
125
+ if (Object.hasOwn(effect.value, "content") &&
126
+ (meta.mode === "url" || effect.value.action !== "accept"))
127
+ throw new Error("Invalid elicitation content");
128
+ if (!prepared && meta.mode === "form" && effect.value.action === "accept")
129
+ throw new Error("Form validation requires composeResponseAsync");
130
+ }
131
+ if (effect.type === "modify") {
132
+ const operation = effect.operation;
133
+ const advertised = capabilities.modify?.[effect.target];
134
+ if ((operation !== "replace" && operation !== "merge") ||
135
+ !targets[event.type]?.[effect.target] ||
136
+ !object(advertised) ||
137
+ advertised[operation] !== true)
138
+ throw new Error("Unsupported modification");
139
+ if ((effect.target === "input" || operation === "merge") &&
140
+ !object(effect.value))
141
+ throw new Error("Modification requires an object");
142
+ }
143
+ if (effect.type === "flow") {
144
+ if (!capabilities.flow?.operations.includes(effect.operation))
145
+ throw new Error("Unsupported flow operation");
146
+ if (effect.operation === "continue" &&
147
+ !previous.some((e) => e.type === "flow" && e.operation === "continue")) {
148
+ const caps = capabilities.flow;
149
+ if (!(typeof caps.remainingContinuations === "number" &&
150
+ caps.remainingContinuations > 0) ||
151
+ (caps.maxContinuations !== undefined &&
152
+ (caps.continuationCount ?? 0) >= caps.maxContinuations))
153
+ throw new Error("Continuation allowance exhausted");
154
+ }
155
+ }
156
+ if (effect.type === "inject" &&
157
+ (effect.target !== "context" ||
158
+ effect.operation !== "append" ||
159
+ !["now", "next_turn"].includes(effect.deliverAt) ||
160
+ capabilities.inject?.context.append !== true ||
161
+ !capabilities.inject.context.deliverAt.includes(effect.deliverAt)))
162
+ throw new Error("Unsupported injection");
163
+ }
164
+ for (const effect of incoming) {
165
+ if (prepared || effect.type !== "modify")
166
+ continue;
167
+ const path = targets[event.type][effect.target];
168
+ let container = staged;
169
+ for (const segment of path.slice(0, -1)) {
170
+ const next = container[segment];
171
+ if (!object(next))
172
+ throw new Error("Missing modification target");
173
+ container = next;
174
+ }
175
+ const key = path[path.length - 1];
176
+ const current = container[key];
177
+ if (effect.operation === "merge") {
178
+ if (!object(current))
179
+ throw new Error("Merge target must be an object");
180
+ container[key] = { ...current, ...effect.value };
181
+ }
182
+ else
183
+ container[key] = structuredClone(effect.value);
184
+ }
185
+ const eventSchema = event.type === "tool.before"
186
+ ? "tool-before"
187
+ : event.type === "tool.after"
188
+ ? "tool-after"
189
+ : "catalogue-event";
190
+ if (!preflight &&
191
+ incoming.some((e) => e.type === "modify") &&
192
+ !ajv.validate(`${base}${eventSchema}.schema.json`, metadata(staged)))
193
+ throw new Error("Invalid effective event payload");
194
+ if (!equal(event, staged)) {
195
+ effects = effects.filter((e) => e.type !== "return" && e.type !== "allow");
196
+ if (previousState)
197
+ previousState = {
198
+ ...previousState,
199
+ candidate: null,
200
+ permission: previousState.permission === "allow"
201
+ ? "none"
202
+ : previousState.permission,
203
+ };
204
+ }
205
+ for (const effect of incoming) {
206
+ if (effect.type === "return")
207
+ effects = effects.filter((e) => e.type !== "return");
208
+ effects.push(effect);
209
+ }
210
+ const normalized = normalizeEffects(effects, previousState);
211
+ if (!previousState)
212
+ return { event: staged, ...normalized };
213
+ const pending = normalizeEffects(incoming, previousState);
214
+ return {
215
+ event: staged,
216
+ effects: normalized.effects,
217
+ state: pending.state,
218
+ shortCircuit: pending.shortCircuit,
219
+ };
220
+ }
221
+ /** Normalize explicit and local fail-closed decisions identically. */
222
+ export function normalizeEffects(effects, previousState) {
223
+ const denied = previousState?.permission === "deny" ||
224
+ effects.some((e) => e.type === "deny");
225
+ const stopped = previousState?.flow === "stop" ||
226
+ effects.some((e) => e.type === "flow" && e.operation === "stop");
227
+ const asked = previousState?.permission === "ask" ||
228
+ effects.some((e) => e.type === "ask");
229
+ if (denied || stopped)
230
+ effects = effects.filter((e) => e.type !== "return");
231
+ if (denied || asked)
232
+ effects = effects.filter((e) => e.type !== "allow");
233
+ // Stop determines the outcome; continuation instructions remain ordered
234
+ // pending data and must not disappear merely because execution is stopped.
235
+ const candidate = [...effects].reverse().find((e) => e.type === "return");
236
+ const state = {
237
+ ...structuredClone(previousState),
238
+ candidate: denied || stopped
239
+ ? null
240
+ : candidate?.type === "return"
241
+ ? { value: structuredClone(candidate.value) }
242
+ : structuredClone(previousState?.candidate ?? null),
243
+ permission: denied
244
+ ? "deny"
245
+ : asked
246
+ ? "ask"
247
+ : previousState?.permission === "allow" ||
248
+ effects.some((e) => e.type === "allow")
249
+ ? "allow"
250
+ : "none",
251
+ ...(previousState?.flow !== undefined ||
252
+ effects.some((e) => e.type === "flow")
253
+ ? {
254
+ flow: stopped
255
+ ? "stop"
256
+ : previousState?.flow === "continue" ||
257
+ effects.some((e) => e.type === "flow" && e.operation === "continue")
258
+ ? "continue"
259
+ : (previousState?.flow ?? "none"),
260
+ }
261
+ : {}),
262
+ ...(previousState?.instructions !== undefined ||
263
+ effects.some((e) => e.type === "flow" &&
264
+ e.operation === "continue" &&
265
+ typeof e.instruction === "string")
266
+ ? {
267
+ instructions: [
268
+ ...(previousState?.instructions ?? []),
269
+ ...effects.flatMap((e) => e.type === "flow" &&
270
+ e.operation === "continue" &&
271
+ typeof e.instruction === "string"
272
+ ? [e.instruction]
273
+ : []),
274
+ ],
275
+ }
276
+ : {}),
277
+ ...(previousState?.injections !== undefined ||
278
+ effects.some((e) => e.type === "inject")
279
+ ? {
280
+ injections: [
281
+ ...(previousState?.injections ?? []),
282
+ ...effects
283
+ .filter((e) => e.type === "inject")
284
+ .map((e) => structuredClone(e)),
285
+ ],
286
+ }
287
+ : {}),
288
+ };
289
+ return { effects, state, shortCircuit: denied || stopped };
290
+ }
291
+ /** Compose inline effect bodies into fresh local streams before the next hook.
292
+ * Only the returned event publishes those streams; failed responses leave the
293
+ * caller's containers and previous effective decisions unchanged.
294
+ */
295
+ export async function composeResponseAsync(event, previous, response, capabilities, options) {
296
+ // Validate the complete list before reading or materializing any body. The
297
+ // prepared-event path suppresses only body-dependent checks until staging.
298
+ compose(event, previous, response, capabilities, event, true, options.state);
299
+ const staged = cloneEvent(event);
300
+ const effects = response.result.effects;
301
+ const selectedAt = (path) => {
302
+ let value = options.selectedEvent;
303
+ for (const key of path)
304
+ value = object(value) ? value[key] : undefined;
305
+ return value;
306
+ };
307
+ const selectedBody = (value) => object(value) &&
308
+ value.selection === "body" &&
309
+ value.body !== undefined &&
310
+ value.gap === undefined;
311
+ const ajv = validator();
312
+ const readJson = async (item) => {
313
+ if (!object(item) ||
314
+ item.mediaType !== "application/json" ||
315
+ !(item.body instanceof ReadableStream))
316
+ throw new Error("A raw application/json body is required");
317
+ const bytes = await options.readContent(item.body);
318
+ const value = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
319
+ if (!object(value))
320
+ throw new Error("Expected a JSON object body");
321
+ return value;
322
+ };
323
+ const merge = (current, value, operation) => {
324
+ if (operation === "replace")
325
+ return cloneEvent(value);
326
+ if (!object(current) || !object(value))
327
+ throw new Error("Merge requires object values");
328
+ return { ...current, ...cloneEvent(value) };
329
+ };
330
+ const bodyItem = (old, value, role) => {
331
+ const oldItem = object(old) ? old : {};
332
+ const { body: _body, gap: _gap, size: _size, sha256: _sha256, selection: _selection, ...rest } = oldItem;
333
+ const text = typeof value === "string" ? value : JSON.stringify(value);
334
+ const bytes = new TextEncoder().encode(text);
335
+ return {
336
+ ...rest,
337
+ ...(typeof oldItem.id === "string"
338
+ ? {}
339
+ : { id: crypto.randomUUID(), synthesized: true }),
340
+ kind: typeof oldItem.kind === "string" ? oldItem.kind : "text",
341
+ role: typeof oldItem.role === "string" ? oldItem.role : role,
342
+ mediaType: typeof value === "string" ? "text/plain" : "application/json",
343
+ selection: "body",
344
+ size: bytes.byteLength,
345
+ body: new ReadableStream({
346
+ start(controller) {
347
+ controller.enqueue(bytes);
348
+ controller.close();
349
+ },
350
+ }),
351
+ };
352
+ };
353
+ const materialize = async (current, value, operation, role, array, mayRead = true) => {
354
+ const old = array && Array.isArray(current) ? current[0] : current;
355
+ // Descriptor arrays remain portable metadata (not receiver-owned body refs).
356
+ // Inline effect bodies are otherwise encoded as one logical content item.
357
+ if (operation === "replace" &&
358
+ Array.isArray(value) &&
359
+ value.every((v) => object(v) &&
360
+ (v.selection === "metadata" || v.selection === "omit") &&
361
+ ajv.validate(`${base}content-item.schema.json`, v))) {
362
+ if (!array)
363
+ throw new Error("Expected one content item");
364
+ return cloneEvent(value);
365
+ }
366
+ let next = value;
367
+ if (operation === "merge") {
368
+ if (!mayRead)
369
+ throw new Error("Object merge requires selected body content");
370
+ if (array && Array.isArray(current) && current.length !== 1)
371
+ throw new Error("Object merge requires one JSON content body");
372
+ next = merge(await readJson(old), value, operation);
373
+ }
374
+ // Bind authorization to semantic content, not a freshly allocated stream.
375
+ // A byte-identical rewrite retains the original item and pending decision.
376
+ if (mayRead &&
377
+ object(old) &&
378
+ old.body instanceof ReadableStream &&
379
+ (!array || (Array.isArray(current) && current.length === 1))) {
380
+ const oldBytes = await options.readContent(old.body);
381
+ const nextBytes = new TextEncoder().encode(typeof next === "string" ? next : JSON.stringify(next));
382
+ if (oldBytes.length === nextBytes.length &&
383
+ oldBytes.every((v, i) => v === nextBytes[i]))
384
+ return current;
385
+ }
386
+ const item = bodyItem(old, next, role);
387
+ return array ? [item] : item;
388
+ };
389
+ // Elicitation validation needs the original request, not an inferred form.
390
+ const elicitationChanged = effects.some((e) => (e.type === "return" && event.type === "user.elicitation.request") ||
391
+ (e.type === "modify" && event.type === "user.elicitation.result"));
392
+ let elicitationRequest;
393
+ let elicitationResult;
394
+ if (elicitationChanged) {
395
+ if (options.selectedEvent &&
396
+ !selectedBody(selectedAt([
397
+ "elicitation",
398
+ event.type === "user.elicitation.request" ? "request" : "result",
399
+ ])))
400
+ throw new Error("Elicitation effects require selected body content");
401
+ const requestEvent = event.type === "user.elicitation.request"
402
+ ? event
403
+ : options.elicitationRequest;
404
+ if (!requestEvent || requestEvent.type !== "user.elicitation.request")
405
+ throw new Error("Correlated elicitation request is required");
406
+ const requestMeta = requestEvent.elicitation;
407
+ const meta = staged.elicitation;
408
+ if (!object(requestMeta) || !object(meta))
409
+ throw new Error("Invalid elicitation metadata");
410
+ if (event.type === "user.elicitation.result" &&
411
+ (event.parentEventId !== requestEvent.id ||
412
+ event.source !== requestEvent.source ||
413
+ !equal(object(event.session) ? event.session.id : undefined, object(requestEvent.session) ? requestEvent.session.id : undefined) ||
414
+ meta.server !== requestMeta.server ||
415
+ meta.mode !== requestMeta.mode))
416
+ throw new Error("Elicitation correlation mismatch");
417
+ if ((meta.mode !== "form" && meta.mode !== "url") ||
418
+ !capabilities.elicitation?.[meta.mode])
419
+ throw new Error("Unsupported elicitation mode");
420
+ elicitationRequest = await readJson(requestMeta.request);
421
+ if (!ajv.validate(`${base}mcp-elicitation.schema.json#/$defs/request`, elicitationRequest) ||
422
+ (elicitationRequest.mode ?? "form") !== meta.mode)
423
+ throw new Error("Invalid elicitation request body");
424
+ if (event.type === "user.elicitation.result") {
425
+ elicitationResult = await readJson(meta.result);
426
+ if (elicitationResult.action !== meta.action)
427
+ throw new Error("Elicitation action mismatch");
428
+ }
429
+ }
430
+ const validateAnswer = (answer) => {
431
+ validateElicitationAnswer(elicitationRequest, answer, (name, value) => {
432
+ if (name === "form-answer") {
433
+ const pair = value;
434
+ // The pinned request schema restricts the vocabulary before compilation.
435
+ // No defaults, coercion, or unknown-field stripping can change answers.
436
+ if (!ajv.compile(pair.schema)(pair.value))
437
+ throw new Error("Answer does not satisfy requestedSchema");
438
+ }
439
+ else if (!ajv.validate(`${base}mcp-elicitation.schema.json#/$defs/result`, value))
440
+ throw new Error("Invalid elicitation result body");
441
+ });
442
+ };
443
+ if (elicitationResult)
444
+ validateAnswer(elicitationResult);
445
+ for (const effect of effects) {
446
+ if (effect.type !== "modify")
447
+ continue;
448
+ if (event.type === "user.elicitation.result") {
449
+ elicitationResult = {
450
+ ...elicitationResult,
451
+ content: merge(elicitationResult?.content, effect.value, effect.operation),
452
+ };
453
+ continue;
454
+ }
455
+ const path = targets[event.type][effect.target];
456
+ let container = staged;
457
+ for (const segment of path.slice(0, -1)) {
458
+ const child = container[segment];
459
+ if (!object(child))
460
+ throw new Error("Missing modification target");
461
+ container = child;
462
+ }
463
+ const key = path[path.length - 1];
464
+ const current = container[key];
465
+ if (effect.target === "request" &&
466
+ object(effect.value) &&
467
+ (Object.hasOwn(effect.value, "params") ||
468
+ Object.hasOwn(effect.value, "items"))) {
469
+ // The normalized request form lets a backend replace both model-bound
470
+ // items and provider params. A plain opaque object remains native params.
471
+ const request = merge({ params: staged.params, items: staged.items }, effect.value, effect.operation);
472
+ staged.params = request.params;
473
+ if (!Array.isArray(request.items))
474
+ throw new Error("Normalized request requires an items array");
475
+ if (request.items === staged.items)
476
+ continue;
477
+ const oldItems = Array.isArray(staged.items) ? staged.items : [];
478
+ staged.items = await Promise.all(request.items.map(async (value, i) => {
479
+ if (object(value) &&
480
+ (value.selection === "metadata" || value.selection === "omit") &&
481
+ ajv.validate(`${base}content-item.schema.json`, value))
482
+ return cloneEvent(value);
483
+ const selected = selectedAt(["items"]);
484
+ return materialize(oldItems[i], value, "replace", "user", false, !options.selectedEvent ||
485
+ (Array.isArray(selected) && selectedBody(selected[i])));
486
+ }));
487
+ }
488
+ else if (["input", "workspace", "request"].includes(effect.target)) {
489
+ container[key] = merge(current, effect.value, effect.operation);
490
+ }
491
+ else {
492
+ const array = !["instructions", "summary"].includes(effect.target);
493
+ const role = effect.target === "prompt"
494
+ ? "user"
495
+ : effect.target === "instructions"
496
+ ? "system"
497
+ : event.type === "tool.after"
498
+ ? "tool"
499
+ : "assistant";
500
+ const selected = selectedAt(path);
501
+ const mayRead = !options.selectedEvent ||
502
+ (array
503
+ ? Array.isArray(selected) &&
504
+ selected.length === 1 &&
505
+ selectedBody(selected[0])
506
+ : selectedBody(selected));
507
+ container[key] = await materialize(current, effect.value, effect.operation, role, array, mayRead);
508
+ }
509
+ }
510
+ if (elicitationResult) {
511
+ validateAnswer(elicitationResult);
512
+ const meta = staged.elicitation;
513
+ meta.result = bodyItem(meta.result, elicitationResult, "user");
514
+ meta.action = elicitationResult.action;
515
+ }
516
+ if (elicitationRequest) {
517
+ for (const effect of effects)
518
+ if (effect.type === "return")
519
+ validateAnswer(effect.value);
520
+ }
521
+ return compose(event, previous, response, capabilities, staged, false, options.state);
522
+ }
523
+ //# sourceMappingURL=composition.js.map