@opencode/schema 0.0.0-beta-19275

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 (203) hide show
  1. package/dist/agent.d.ts +164 -0
  2. package/dist/agent.js +46 -0
  3. package/dist/catalog.d.ts +69 -0
  4. package/dist/catalog.js +4 -0
  5. package/dist/command.d.ts +76 -0
  6. package/dist/command.js +13 -0
  7. package/dist/config/agent.d.ts +42 -0
  8. package/dist/config/agent.js +20 -0
  9. package/dist/config/command.d.ts +28 -0
  10. package/dist/config/command.js +13 -0
  11. package/dist/config/compaction.d.ts +14 -0
  12. package/dist/config/compaction.js +13 -0
  13. package/dist/config/experimental.d.ts +17 -0
  14. package/dist/config/experimental.js +16 -0
  15. package/dist/config/formatter.d.ts +11 -0
  16. package/dist/config/formatter.js +11 -0
  17. package/dist/config/lsp.d.ts +20 -0
  18. package/dist/config/lsp.js +16 -0
  19. package/dist/config/mcp.d.ts +18 -0
  20. package/dist/config/mcp.js +14 -0
  21. package/dist/config/media.d.ts +15 -0
  22. package/dist/config/media.js +14 -0
  23. package/dist/config/model.d.ts +18 -0
  24. package/dist/config/model.js +28 -0
  25. package/dist/config/plugin.d.ts +11 -0
  26. package/dist/config/plugin.js +10 -0
  27. package/dist/config/policy.d.ts +10 -0
  28. package/dist/config/policy.js +8 -0
  29. package/dist/config/provider.d.ts +171 -0
  30. package/dist/config/provider.js +66 -0
  31. package/dist/config/reference.d.ts +21 -0
  32. package/dist/config/reference.js +18 -0
  33. package/dist/config/tool-output.d.ts +8 -0
  34. package/dist/config/tool-output.js +8 -0
  35. package/dist/config/warming.d.ts +10 -0
  36. package/dist/config/warming.js +16 -0
  37. package/dist/config/watcher.d.ts +7 -0
  38. package/dist/config/watcher.js +7 -0
  39. package/dist/config/websearch.d.ts +9 -0
  40. package/dist/config/websearch.js +13 -0
  41. package/dist/config/worktree.d.ts +7 -0
  42. package/dist/config/worktree.js +7 -0
  43. package/dist/config.d.ts +180 -0
  44. package/dist/config.js +138 -0
  45. package/dist/connection.d.ts +28 -0
  46. package/dist/connection.js +15 -0
  47. package/dist/credential.d.ts +191 -0
  48. package/dist/credential.js +39 -0
  49. package/dist/durable-event-manifest.d.ts +3 -0
  50. package/dist/durable-event-manifest.js +5 -0
  51. package/dist/event-log.d.ts +14 -0
  52. package/dist/event-log.js +17 -0
  53. package/dist/event-manifest.d.ts +12842 -0
  54. package/dist/event-manifest.js +47 -0
  55. package/dist/event.d.ts +142 -0
  56. package/dist/event.js +110 -0
  57. package/dist/file-diff.d.ts +21 -0
  58. package/dist/file-diff.js +18 -0
  59. package/dist/filesystem-v1.d.ts +1 -0
  60. package/dist/filesystem-v1.js +1 -0
  61. package/dist/filesystem.d.ts +118 -0
  62. package/dist/filesystem.js +35 -0
  63. package/dist/form.d.ts +1259 -0
  64. package/dist/form.js +120 -0
  65. package/dist/ide-event.d.ts +76 -0
  66. package/dist/ide-event.js +10 -0
  67. package/dist/identifier.d.ts +3 -0
  68. package/dist/identifier.js +24 -0
  69. package/dist/index.d.ts +41 -0
  70. package/dist/index.js +41 -0
  71. package/dist/installation-event.d.ts +149 -0
  72. package/dist/installation-event.js +16 -0
  73. package/dist/instruction-entry.d.ts +29 -0
  74. package/dist/instruction-entry.js +26 -0
  75. package/dist/instruction.d.ts +13 -0
  76. package/dist/instruction.js +8 -0
  77. package/dist/integration-id.d.ts +5 -0
  78. package/dist/integration-id.js +3 -0
  79. package/dist/integration.d.ts +1604 -0
  80. package/dist/integration.js +85 -0
  81. package/dist/legacy-event.d.ts +1 -0
  82. package/dist/legacy-event.js +1 -0
  83. package/dist/llm.d.ts +4 -0
  84. package/dist/llm.js +3 -0
  85. package/dist/location.d.ts +37 -0
  86. package/dist/location.js +22 -0
  87. package/dist/lsp-event.d.ts +67 -0
  88. package/dist/lsp-event.js +4 -0
  89. package/dist/mcp-event.d.ts +222 -0
  90. package/dist/mcp-event.js +24 -0
  91. package/dist/mcp.d.ts +138 -0
  92. package/dist/mcp.js +111 -0
  93. package/dist/model.d.ts +245 -0
  94. package/dist/model.js +114 -0
  95. package/dist/models-dev.d.ts +69 -0
  96. package/dist/models-dev.js +7 -0
  97. package/dist/money.d.ts +10 -0
  98. package/dist/money.js +5 -0
  99. package/dist/permission-saved.d.ts +18 -0
  100. package/dist/permission-saved.js +12 -0
  101. package/dist/permission-v1.d.ts +1 -0
  102. package/dist/permission-v1.js +1 -0
  103. package/dist/permission.d.ts +311 -0
  104. package/dist/permission.js +46 -0
  105. package/dist/persistent-pty.d.ts +559 -0
  106. package/dist/persistent-pty.js +55 -0
  107. package/dist/plugin.d.ts +132 -0
  108. package/dist/plugin.js +37 -0
  109. package/dist/project-id.d.ts +5 -0
  110. package/dist/project-id.js +3 -0
  111. package/dist/project.d.ts +264 -0
  112. package/dist/project.js +46 -0
  113. package/dist/prompt-input.d.ts +143 -0
  114. package/dist/prompt-input.js +25 -0
  115. package/dist/prompt.d.ts +297 -0
  116. package/dist/prompt.js +61 -0
  117. package/dist/provider.d.ts +103 -0
  118. package/dist/provider.js +48 -0
  119. package/dist/pty-ticket.d.ts +8 -0
  120. package/dist/pty-ticket.js +7 -0
  121. package/dist/pty.d.ts +462 -0
  122. package/dist/pty.js +43 -0
  123. package/dist/question-v1.d.ts +1 -0
  124. package/dist/question-v1.js +1 -0
  125. package/dist/question.d.ts +15 -0
  126. package/dist/question.js +15 -0
  127. package/dist/reference.d.ts +120 -0
  128. package/dist/reference.js +30 -0
  129. package/dist/rpc.d.ts +111 -0
  130. package/dist/rpc.js +9 -0
  131. package/dist/schema.d.ts +10 -0
  132. package/dist/schema.js +14 -0
  133. package/dist/server-event.d.ts +132 -0
  134. package/dist/server-event.js +5 -0
  135. package/dist/session-compaction-event.d.ts +87 -0
  136. package/dist/session-compaction-event.js +10 -0
  137. package/dist/session-error.d.ts +9 -0
  138. package/dist/session-error.js +8 -0
  139. package/dist/session-event.d.ts +20691 -0
  140. package/dist/session-event.js +540 -0
  141. package/dist/session-fork.d.ts +26 -0
  142. package/dist/session-fork.js +11 -0
  143. package/dist/session-id.d.ts +6 -0
  144. package/dist/session-id.js +10 -0
  145. package/dist/session-inbox.d.ts +748 -0
  146. package/dist/session-inbox.js +47 -0
  147. package/dist/session-message.d.ts +1875 -0
  148. package/dist/session-message.js +220 -0
  149. package/dist/session-metadata.d.ts +8 -0
  150. package/dist/session-metadata.js +9 -0
  151. package/dist/session-provider-context.d.ts +54 -0
  152. package/dist/session-provider-context.js +17 -0
  153. package/dist/session-revert.d.ts +672 -0
  154. package/dist/session-revert.js +63 -0
  155. package/dist/session-stats.d.ts +186 -0
  156. package/dist/session-stats.js +53 -0
  157. package/dist/session-status-event.d.ts +299 -0
  158. package/dist/session-status-event.js +45 -0
  159. package/dist/session-transfer.d.ts +844 -0
  160. package/dist/session-transfer.js +8 -0
  161. package/dist/session-v1.d.ts +1 -0
  162. package/dist/session-v1.js +1 -0
  163. package/dist/session.d.ts +226 -0
  164. package/dist/session.js +52 -0
  165. package/dist/shell.d.ts +381 -0
  166. package/dist/shell.js +58 -0
  167. package/dist/skill.d.ts +133 -0
  168. package/dist/skill.js +48 -0
  169. package/dist/snapshot.d.ts +4 -0
  170. package/dist/snapshot.js +3 -0
  171. package/dist/token-usage.d.ts +14 -0
  172. package/dist/token-usage.js +14 -0
  173. package/dist/tool.d.ts +78 -0
  174. package/dist/tool.js +22 -0
  175. package/dist/tui-event.d.ts +307 -0
  176. package/dist/tui-event.js +53 -0
  177. package/dist/v1/filesystem.d.ts +78 -0
  178. package/dist/v1/filesystem.js +8 -0
  179. package/dist/v1/legacy-event.d.ts +108 -0
  180. package/dist/v1/legacy-event.js +15 -0
  181. package/dist/v1/permission.d.ts +316 -0
  182. package/dist/v1/permission.js +41 -0
  183. package/dist/v1/question.d.ts +444 -0
  184. package/dist/v1/question.js +57 -0
  185. package/dist/v1/session.d.ts +7657 -0
  186. package/dist/v1/session.js +535 -0
  187. package/dist/vcs-event.d.ts +76 -0
  188. package/dist/vcs-event.js +11 -0
  189. package/dist/vcs.d.ts +35 -0
  190. package/dist/vcs.js +23 -0
  191. package/dist/websearch.d.ts +108 -0
  192. package/dist/websearch.js +31 -0
  193. package/dist/workspace-event.d.ts +247 -0
  194. package/dist/workspace-event.js +25 -0
  195. package/dist/workspace-id.d.ts +6 -0
  196. package/dist/workspace-id.js +16 -0
  197. package/dist/workspace.d.ts +15 -0
  198. package/dist/workspace.js +14 -0
  199. package/dist/worktree-event.d.ts +153 -0
  200. package/dist/worktree-event.js +18 -0
  201. package/dist/worktree.d.ts +277 -0
  202. package/dist/worktree.js +82 -0
  203. package/package.json +42 -0
@@ -0,0 +1,540 @@
1
+ export * as SessionEvent from "./session-event.js";
2
+ import { Schema } from "effect";
3
+ import { optional } from "./schema.js";
4
+ import { Event } from "./event.js";
5
+ import { FinishReason } from "./llm.js";
6
+ import { Content } from "./tool.js";
7
+ import { Model } from "./model.js";
8
+ import { NonNegativeInt, PositiveInt, RelativePath } from "./schema.js";
9
+ import { FileAttachment } from "./prompt.js";
10
+ import { SessionID } from "./session-id.js";
11
+ import { SessionMetadata } from "./session-metadata.js";
12
+ import { Location } from "./location.js";
13
+ import { SessionMessage } from "./session-message.js";
14
+ import { Revert } from "./session-revert.js";
15
+ import { Shell as ShellSchema } from "./shell.js";
16
+ import { SessionError } from "./session-error.js";
17
+ import { Instruction } from "./instruction.js";
18
+ import { InstructionEntry } from "./instruction-entry.js";
19
+ import { Agent } from "./agent.js";
20
+ import { Skill as SkillSchema } from "./skill.js";
21
+ import { Money } from "./money.js";
22
+ import { Snapshot } from "./snapshot.js";
23
+ import { TokenUsage } from "./token-usage.js";
24
+ import { SessionInbox } from "./session-inbox.js";
25
+ import { Project } from "./project.js";
26
+ import { SessionFork } from "./session-fork.js";
27
+ export { FileAttachment };
28
+ export const Source = Schema.Struct({
29
+ start: NonNegativeInt,
30
+ end: NonNegativeInt,
31
+ text: Schema.String,
32
+ }).annotate({
33
+ identifier: "Session.Event.Source",
34
+ });
35
+ const Base = {
36
+ sessionID: SessionID,
37
+ };
38
+ const options = {
39
+ durable: {
40
+ aggregate: "sessionID",
41
+ version: 1,
42
+ },
43
+ };
44
+ export const Created = Event.durable({
45
+ type: "session.created",
46
+ ...options,
47
+ schema: {
48
+ ...Base,
49
+ projectID: Project.ID,
50
+ location: Location.Ref,
51
+ subpath: RelativePath.pipe(optional),
52
+ parentID: SessionID.pipe(optional),
53
+ slug: Schema.String,
54
+ title: Schema.String.pipe(optional),
55
+ agent: Agent.ID.pipe(optional),
56
+ model: Model.Ref.pipe(optional),
57
+ /** Host-supplied annotations resolved at creation, including any inherited from a parent. */
58
+ metadata: SessionMetadata.pipe(optional),
59
+ version: Schema.String,
60
+ },
61
+ });
62
+ export const AgentSelected = Event.durable({
63
+ type: "session.agent.selected",
64
+ ...options,
65
+ schema: {
66
+ ...Base,
67
+ agent: Agent.ID,
68
+ previous: Agent.ID.pipe(optional),
69
+ },
70
+ });
71
+ export const ModelSelected = Event.durable({
72
+ type: "session.model.selected",
73
+ ...options,
74
+ schema: {
75
+ ...Base,
76
+ model: Model.Ref,
77
+ previous: Model.Ref.pipe(optional),
78
+ },
79
+ });
80
+ export const Moved = Event.durable({
81
+ type: "session.moved",
82
+ ...options,
83
+ schema: {
84
+ ...Base,
85
+ ...SessionInbox.MovePayload.fields,
86
+ },
87
+ });
88
+ export const Renamed = Event.durable({
89
+ type: "session.renamed",
90
+ ...options,
91
+ schema: {
92
+ ...Base,
93
+ title: Schema.String,
94
+ },
95
+ });
96
+ export const Viewed = Event.durable({
97
+ type: "session.viewed",
98
+ ...options,
99
+ schema: {
100
+ ...Base,
101
+ /** Epoch-millisecond idle watermark the viewer observed; projection never marks a newer idle transition viewed. */
102
+ idle: Schema.Finite,
103
+ },
104
+ });
105
+ export const MessageContentUpdated = Event.durable({
106
+ type: "session.message.content.updated",
107
+ ...options,
108
+ schema: {
109
+ ...Base,
110
+ messageID: SessionMessage.ID,
111
+ // Public events are framed directly, so timestamps must already be encoded.
112
+ content: Schema.Array(SessionMessage.AssistantContentEncoded),
113
+ },
114
+ });
115
+ export const UsageRecorded = Event.durable({
116
+ type: "session.usage.recorded",
117
+ ...options,
118
+ schema: {
119
+ ...Base,
120
+ source: Schema.Literals(["title", "compaction"]),
121
+ cost: Money.USD,
122
+ tokens: TokenUsage.Info,
123
+ },
124
+ });
125
+ export const UsageUpdated = Event.ephemeral({
126
+ type: "session.usage.updated",
127
+ schema: {
128
+ ...Base,
129
+ cost: Money.USD,
130
+ tokens: TokenUsage.Info,
131
+ },
132
+ });
133
+ export const Deleted = Event.durable({
134
+ type: "session.deleted",
135
+ durable: {
136
+ aggregate: "sessionID",
137
+ version: 2,
138
+ },
139
+ schema: Base,
140
+ });
141
+ export const Forked = Event.durable({
142
+ type: "session.forked",
143
+ durable: {
144
+ aggregate: "sessionID",
145
+ version: 2,
146
+ },
147
+ schema: {
148
+ ...Base,
149
+ parentID: SessionID,
150
+ boundary: SessionFork.Boundary,
151
+ instructions: Instruction.Values.pipe(optional),
152
+ instructionEntries: InstructionEntry.Snapshot.pipe(optional),
153
+ },
154
+ });
155
+ const InboxRef = {
156
+ ...Base,
157
+ inboxID: SessionMessage.ID,
158
+ };
159
+ export const InboxDelivered = Event.durable({
160
+ type: "session.inbox.delivered",
161
+ ...options,
162
+ schema: InboxRef,
163
+ });
164
+ export const InboxEnqueued = Event.durable({
165
+ type: "session.inbox.enqueued",
166
+ ...options,
167
+ schema: {
168
+ ...InboxRef,
169
+ item: SessionInbox.Item,
170
+ },
171
+ });
172
+ export const InboxCancelled = Event.durable({
173
+ type: "session.inbox.cancelled",
174
+ ...options,
175
+ schema: InboxRef,
176
+ });
177
+ export const InboxDeliveryChanged = Event.durable({
178
+ type: "session.inbox.delivery.changed",
179
+ ...options,
180
+ schema: { ...InboxRef, delivery: SessionInbox.Delivery },
181
+ });
182
+ export var Execution;
183
+ (function (Execution) {
184
+ Execution.Started = Event.durable({ type: "session.execution.started", ...options, schema: Base });
185
+ Execution.Succeeded = Event.durable({ type: "session.execution.succeeded", ...options, schema: Base });
186
+ Execution.Failed = Event.durable({
187
+ type: "session.execution.failed",
188
+ ...options,
189
+ schema: { ...Base, error: SessionError.Error },
190
+ });
191
+ Execution.Interrupted = Event.durable({
192
+ type: "session.execution.interrupted",
193
+ ...options,
194
+ schema: { ...Base, reason: Schema.Literals(["user", "shutdown", "superseded", "inactivity"]) },
195
+ });
196
+ })(Execution || (Execution = {}));
197
+ export const InstructionsUpdated = Event.durable({
198
+ type: "session.instructions.updated",
199
+ durable: {
200
+ aggregate: "sessionID",
201
+ version: 2,
202
+ },
203
+ schema: {
204
+ ...Base,
205
+ delta: Instruction.Delta,
206
+ /**
207
+ * The rendered chronological update shown to the model, frozen at emit time.
208
+ * Absent for the initial baseline observation and for deltas that render empty.
209
+ */
210
+ text: Schema.String.pipe(optional),
211
+ },
212
+ });
213
+ export const Synthetic = Event.durable({
214
+ type: "session.synthetic",
215
+ ...options,
216
+ schema: {
217
+ ...Base,
218
+ text: Schema.String,
219
+ description: Schema.String.pipe(optional),
220
+ metadata: Schema.Record(Schema.String, Schema.Unknown).pipe(optional),
221
+ },
222
+ });
223
+ export var Skill;
224
+ (function (Skill) {
225
+ Skill.Activated = Event.durable({
226
+ type: "session.skill.activated",
227
+ ...options,
228
+ schema: {
229
+ ...Base,
230
+ id: SkillSchema.ID,
231
+ name: SkillSchema.Name,
232
+ text: Schema.String,
233
+ },
234
+ });
235
+ })(Skill || (Skill = {}));
236
+ export var Shell;
237
+ (function (Shell) {
238
+ Shell.Started = Event.durable({
239
+ type: "session.shell.started",
240
+ ...options,
241
+ schema: {
242
+ ...Base,
243
+ shell: ShellSchema.Info,
244
+ },
245
+ });
246
+ Shell.Ended = Event.durable({
247
+ type: "session.shell.ended",
248
+ ...options,
249
+ schema: {
250
+ ...Base,
251
+ shell: ShellSchema.Info,
252
+ output: ShellSchema.Output,
253
+ },
254
+ });
255
+ })(Shell || (Shell = {}));
256
+ export var Step;
257
+ (function (Step) {
258
+ Step.Started = Event.durable({
259
+ type: "session.step.started",
260
+ ...options,
261
+ schema: {
262
+ ...Base,
263
+ assistantMessageID: SessionMessage.ID,
264
+ agent: Agent.ID,
265
+ model: Model.Ref,
266
+ snapshot: Snapshot.ID.pipe(optional),
267
+ },
268
+ });
269
+ /** Records the provider response-body boundary independently of tool settlement. */
270
+ Step.Streamed = Event.durable({
271
+ type: "session.step.streamed",
272
+ ...options,
273
+ schema: {
274
+ ...Base,
275
+ assistantMessageID: SessionMessage.ID,
276
+ },
277
+ });
278
+ Step.Ended = Event.durable({
279
+ type: "session.step.ended",
280
+ ...options,
281
+ schema: {
282
+ ...Base,
283
+ assistantMessageID: SessionMessage.ID,
284
+ finish: FinishReason,
285
+ rawFinish: Schema.String.pipe(optional),
286
+ providerState: SessionMessage.ProviderState.pipe(optional),
287
+ cost: Money.USD,
288
+ tokens: TokenUsage.Info,
289
+ snapshot: Snapshot.ID.pipe(optional),
290
+ files: Schema.Array(RelativePath).pipe(optional),
291
+ },
292
+ });
293
+ Step.Failed = Event.durable({
294
+ type: "session.step.failed",
295
+ ...options,
296
+ schema: {
297
+ ...Base,
298
+ assistantMessageID: SessionMessage.ID,
299
+ error: SessionError.Error,
300
+ finish: Schema.Literals(["content-filter"]).pipe(optional),
301
+ rawFinish: Schema.String.pipe(optional),
302
+ providerState: SessionMessage.ProviderState.pipe(optional),
303
+ cost: Money.USD.pipe(optional),
304
+ tokens: TokenUsage.Info.pipe(optional),
305
+ snapshot: Snapshot.ID.pipe(optional),
306
+ files: Schema.Array(RelativePath).pipe(optional),
307
+ },
308
+ });
309
+ })(Step || (Step = {}));
310
+ export var Text;
311
+ (function (Text) {
312
+ Text.Started = Event.durable({
313
+ type: "session.text.started",
314
+ ...options,
315
+ schema: {
316
+ ...Base,
317
+ assistantMessageID: SessionMessage.ID,
318
+ ordinal: NonNegativeInt,
319
+ },
320
+ });
321
+ // Stream fragments are live-only; Text.Ended is the replayable full-value boundary.
322
+ Text.Delta = Event.ephemeral({
323
+ type: "session.text.delta",
324
+ schema: {
325
+ ...Base,
326
+ assistantMessageID: SessionMessage.ID,
327
+ ordinal: NonNegativeInt,
328
+ delta: Schema.String,
329
+ },
330
+ });
331
+ Text.Ended = Event.durable({
332
+ type: "session.text.ended",
333
+ ...options,
334
+ schema: {
335
+ ...Base,
336
+ assistantMessageID: SessionMessage.ID,
337
+ ordinal: NonNegativeInt,
338
+ text: Schema.String,
339
+ state: SessionMessage.ProviderState.pipe(optional),
340
+ },
341
+ });
342
+ })(Text || (Text = {}));
343
+ export var Reasoning;
344
+ (function (Reasoning) {
345
+ Reasoning.Started = Event.durable({
346
+ type: "session.reasoning.started",
347
+ ...options,
348
+ schema: {
349
+ ...Base,
350
+ assistantMessageID: SessionMessage.ID,
351
+ ordinal: NonNegativeInt,
352
+ state: SessionMessage.ProviderState.pipe(optional),
353
+ },
354
+ });
355
+ // Stream fragments are live-only; Reasoning.Ended is the replayable full-value boundary.
356
+ Reasoning.Delta = Event.ephemeral({
357
+ type: "session.reasoning.delta",
358
+ schema: {
359
+ ...Base,
360
+ assistantMessageID: SessionMessage.ID,
361
+ ordinal: NonNegativeInt,
362
+ delta: Schema.String,
363
+ },
364
+ });
365
+ Reasoning.Ended = Event.durable({
366
+ type: "session.reasoning.ended",
367
+ ...options,
368
+ schema: {
369
+ ...Base,
370
+ assistantMessageID: SessionMessage.ID,
371
+ ordinal: NonNegativeInt,
372
+ text: Schema.String,
373
+ state: SessionMessage.ProviderState.pipe(optional),
374
+ },
375
+ });
376
+ })(Reasoning || (Reasoning = {}));
377
+ export var Tool;
378
+ (function (Tool) {
379
+ const ToolBase = {
380
+ ...Base,
381
+ assistantMessageID: SessionMessage.ID,
382
+ id: Schema.String,
383
+ };
384
+ let Input;
385
+ (function (Input) {
386
+ Input.Started = Event.durable({
387
+ type: "session.tool.input.started",
388
+ ...options,
389
+ schema: {
390
+ ...ToolBase,
391
+ name: Schema.String,
392
+ },
393
+ });
394
+ // Stream fragments are live-only; Input.Ended is the replayable raw-input boundary.
395
+ Input.Delta = Event.ephemeral({
396
+ type: "session.tool.input.delta",
397
+ schema: {
398
+ ...ToolBase,
399
+ delta: Schema.String,
400
+ },
401
+ });
402
+ Input.Ended = Event.durable({
403
+ type: "session.tool.input.ended",
404
+ ...options,
405
+ schema: {
406
+ ...ToolBase,
407
+ text: Schema.String,
408
+ },
409
+ });
410
+ })(Input = Tool.Input || (Tool.Input = {}));
411
+ Tool.Called = Event.durable({
412
+ type: "session.tool.called",
413
+ ...options,
414
+ schema: {
415
+ ...ToolBase,
416
+ input: Schema.Record(Schema.String, Schema.Unknown),
417
+ executed: Schema.Boolean,
418
+ state: SessionMessage.ProviderState.pipe(optional),
419
+ },
420
+ });
421
+ /** Live replacement metadata for a running tool. */
422
+ Tool.Progress = Event.ephemeral({
423
+ type: "session.tool.progress",
424
+ schema: {
425
+ ...ToolBase,
426
+ metadata: Schema.Record(Schema.String, Schema.Json),
427
+ },
428
+ });
429
+ /** Canonical terminal success: one non-empty model representation plus optional UI metadata. */
430
+ Tool.Success = Event.durable({
431
+ type: "session.tool.success",
432
+ durable: {
433
+ aggregate: "sessionID",
434
+ version: 2,
435
+ },
436
+ schema: {
437
+ ...ToolBase,
438
+ content: Schema.NonEmptyArray(Content),
439
+ metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),
440
+ executed: Schema.Boolean,
441
+ resultState: SessionMessage.ProviderState.pipe(optional),
442
+ },
443
+ });
444
+ /**
445
+ * Canonical terminal failure: one error plus the final bounded snapshot of
446
+ * partial progress. The event is self-contained; projection never reaches
447
+ * into ephemeral progress history.
448
+ */
449
+ Tool.Failed = Event.durable({
450
+ type: "session.tool.failed",
451
+ durable: {
452
+ aggregate: "sessionID",
453
+ version: 2,
454
+ },
455
+ schema: {
456
+ ...ToolBase,
457
+ error: SessionError.Error,
458
+ content: Schema.NonEmptyArray(Content).pipe(optional),
459
+ metadata: Schema.Record(Schema.String, Schema.Json).pipe(optional),
460
+ executed: Schema.Boolean,
461
+ resultState: SessionMessage.ProviderState.pipe(optional),
462
+ },
463
+ });
464
+ })(Tool || (Tool = {}));
465
+ export const RetryScheduled = Event.durable({
466
+ type: "session.retry.scheduled",
467
+ ...options,
468
+ schema: {
469
+ ...Base,
470
+ assistantMessageID: SessionMessage.ID,
471
+ attempt: PositiveInt,
472
+ at: NonNegativeInt,
473
+ error: SessionError.Error,
474
+ },
475
+ });
476
+ export var Compaction;
477
+ (function (Compaction) {
478
+ Compaction.Started = Event.durable({
479
+ type: "session.compaction.started",
480
+ ...options,
481
+ schema: {
482
+ ...Base,
483
+ reason: Schema.Literals(["auto", "manual"]),
484
+ recent: Schema.String,
485
+ inputID: SessionMessage.ID.pipe(optional),
486
+ },
487
+ });
488
+ Compaction.Delta = Event.ephemeral({
489
+ type: "session.compaction.delta",
490
+ schema: {
491
+ ...Base,
492
+ text: Schema.String,
493
+ },
494
+ });
495
+ Compaction.Ended = Event.durable({
496
+ type: "session.compaction.ended",
497
+ ...options,
498
+ schema: {
499
+ ...Base,
500
+ reason: Compaction.Started.data.fields.reason,
501
+ model: SessionMessage.CompactionCompleted.fields.model,
502
+ providerState: SessionMessage.CompactionCompleted.fields.providerState,
503
+ providerContext: SessionMessage.CompactionCompleted.fields.providerContext,
504
+ text: Schema.String,
505
+ recent: Schema.String,
506
+ },
507
+ });
508
+ Compaction.Failed = Event.durable({
509
+ type: "session.compaction.failed",
510
+ ...options,
511
+ schema: {
512
+ ...Base,
513
+ reason: Compaction.Started.data.fields.reason,
514
+ error: SessionError.Error,
515
+ inputID: SessionMessage.ID.pipe(optional),
516
+ },
517
+ });
518
+ })(Compaction || (Compaction = {}));
519
+ export var RevertEvent;
520
+ (function (RevertEvent) {
521
+ RevertEvent.Staged = Event.durable({
522
+ type: "session.revert.staged",
523
+ ...options,
524
+ schema: { ...Base, revert: Revert },
525
+ });
526
+ RevertEvent.Cleared = Event.durable({ type: "session.revert.cleared", ...options, schema: Base });
527
+ RevertEvent.Committed = Event.durable({
528
+ type: "session.revert.committed",
529
+ ...options,
530
+ schema: { ...Base, to: SessionMessage.ID },
531
+ });
532
+ })(RevertEvent || (RevertEvent = {}));
533
+ export const Definitions = Event.inventory(Created, AgentSelected, ModelSelected, Moved, Renamed, Viewed, UsageUpdated, Deleted, Forked, InboxDelivered, InboxEnqueued, InboxCancelled, InboxDeliveryChanged, Execution.Started, Execution.Succeeded, Execution.Failed, Execution.Interrupted, InstructionsUpdated, Synthetic, Skill.Activated, Shell.Started, Shell.Ended, Step.Started, Step.Streamed, Step.Ended, Step.Failed, Text.Started, Text.Delta, Text.Ended, Reasoning.Started, Reasoning.Delta, Reasoning.Ended, Tool.Input.Started, Tool.Input.Delta, Tool.Input.Ended, Tool.Called, Tool.Progress, Tool.Success, Tool.Failed, RetryScheduled, Compaction.Started, Compaction.Delta, Compaction.Ended, Compaction.Failed, RevertEvent.Staged, RevertEvent.Cleared, RevertEvent.Committed, MessageContentUpdated);
534
+ // UsageRecorded is durable but internal: excluded from Definitions so it never reaches the public manifest.
535
+ export const DurableDefinitions = Event.inventory(...Definitions.filter((definition) => definition.durability === "durable"), UsageRecorded);
536
+ export const EphemeralDefinitions = Event.inventory(...Definitions.filter((definition) => definition.durability === "ephemeral"));
537
+ export const Durable = Schema.Union(DurableDefinitions, { mode: "oneOf" })
538
+ .pipe(Schema.toTaggedUnion("type"))
539
+ .annotate({ identifier: "Session.Event.Durable" });
540
+ export const All = Schema.Union([Durable, ...EphemeralDefinitions], { mode: "oneOf" }).pipe(Schema.toTaggedUnion("type"));
@@ -0,0 +1,26 @@
1
+ export * as SessionFork from "./session-fork.js";
2
+ import { Schema } from "effect";
3
+ export declare const Boundary: Schema.Union<readonly [Schema.Struct<{
4
+ readonly type: Schema.Literal<"before">;
5
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
6
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
7
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
8
+ };
9
+ }>, Schema.Struct<{
10
+ readonly type: Schema.Literal<"through">;
11
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
12
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
13
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
14
+ };
15
+ }>]>;
16
+ export type Boundary = typeof Boundary.Type;
17
+ export declare const RequestBoundary: Schema.Union<readonly [Schema.Struct<{
18
+ readonly type: Schema.Literal<"before">;
19
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
20
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
21
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
22
+ };
23
+ }>, Schema.Struct<{
24
+ readonly type: Schema.Literal<"through">;
25
+ }>]>;
26
+ export type RequestBoundary = typeof RequestBoundary.Type;
@@ -0,0 +1,11 @@
1
+ export * as SessionFork from "./session-fork.js";
2
+ import { Schema } from "effect";
3
+ import { SessionMessage } from "./session-message.js";
4
+ export const Boundary = Schema.Union([
5
+ Schema.Struct({ type: Schema.Literal("before"), messageID: SessionMessage.ID }),
6
+ Schema.Struct({ type: Schema.Literal("through"), messageID: SessionMessage.ID }),
7
+ ]).annotate({ identifier: "Session.ForkBoundary" });
8
+ export const RequestBoundary = Schema.Union([
9
+ Schema.Struct({ type: Schema.Literal("before"), messageID: SessionMessage.ID }),
10
+ Schema.Struct({ type: Schema.Literal("through") }),
11
+ ]).annotate({ identifier: "Session.ForkRequestBoundary" });
@@ -0,0 +1,6 @@
1
+ import { Schema } from "effect";
2
+ export declare const SessionID: Schema.brand<Schema.String, "SessionID"> & {
3
+ create: () => string & import("effect/Brand").Brand<"SessionID">;
4
+ descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
5
+ };
6
+ export type SessionID = typeof SessionID.Type;
@@ -0,0 +1,10 @@
1
+ import { Schema } from "effect";
2
+ import { descending } from "./identifier.js";
3
+ import { statics } from "./schema.js";
4
+ export const SessionID = Schema.String.check(Schema.isStartsWith("ses")).pipe(Schema.brand("SessionID"), statics((schema) => {
5
+ const create = () => schema.make("ses_" + descending());
6
+ return {
7
+ create,
8
+ descending: (id) => (id === undefined ? create() : schema.make(id)),
9
+ };
10
+ }));