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