@opencode-ai/schema 0.0.0-dev-17471

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 (193) hide show
  1. package/dist/agent.d.ts +164 -0
  2. package/dist/agent.js +46 -0
  3. package/dist/ai.d.ts +4 -0
  4. package/dist/ai.js +5 -0
  5. package/dist/catalog.d.ts +69 -0
  6. package/dist/catalog.js +4 -0
  7. package/dist/command.d.ts +124 -0
  8. package/dist/command.js +19 -0
  9. package/dist/config/agent.d.ts +42 -0
  10. package/dist/config/agent.js +20 -0
  11. package/dist/config/command.d.ts +27 -0
  12. package/dist/config/command.js +12 -0
  13. package/dist/config/compaction.d.ts +14 -0
  14. package/dist/config/compaction.js +13 -0
  15. package/dist/config/experimental.d.ts +17 -0
  16. package/dist/config/experimental.js +16 -0
  17. package/dist/config/formatter.d.ts +11 -0
  18. package/dist/config/formatter.js +11 -0
  19. package/dist/config/lsp.d.ts +20 -0
  20. package/dist/config/lsp.js +16 -0
  21. package/dist/config/mcp.d.ts +18 -0
  22. package/dist/config/mcp.js +14 -0
  23. package/dist/config/media.d.ts +15 -0
  24. package/dist/config/media.js +14 -0
  25. package/dist/config/model.d.ts +18 -0
  26. package/dist/config/model.js +28 -0
  27. package/dist/config/plugin.d.ts +11 -0
  28. package/dist/config/plugin.js +10 -0
  29. package/dist/config/policy.d.ts +10 -0
  30. package/dist/config/policy.js +8 -0
  31. package/dist/config/provider.d.ts +106 -0
  32. package/dist/config/provider.js +62 -0
  33. package/dist/config/reference.d.ts +21 -0
  34. package/dist/config/reference.js +18 -0
  35. package/dist/config/tool-output.d.ts +8 -0
  36. package/dist/config/tool-output.js +8 -0
  37. package/dist/config/warming.d.ts +10 -0
  38. package/dist/config/warming.js +16 -0
  39. package/dist/config/watcher.d.ts +7 -0
  40. package/dist/config/watcher.js +7 -0
  41. package/dist/config/websearch.d.ts +9 -0
  42. package/dist/config/websearch.js +8 -0
  43. package/dist/config.d.ts +175 -0
  44. package/dist/config.js +136 -0
  45. package/dist/connection.d.ts +28 -0
  46. package/dist/connection.js +15 -0
  47. package/dist/credential.d.ts +38 -0
  48. package/dist/credential.js +25 -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 +11372 -0
  54. package/dist/event-manifest.js +45 -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 +39 -0
  70. package/dist/index.js +39 -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 +23 -0
  74. package/dist/instruction-entry.js +22 -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 +1675 -0
  80. package/dist/integration.js +87 -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 +186 -0
  94. package/dist/model.js +104 -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 +306 -0
  104. package/dist/permission.js +45 -0
  105. package/dist/plugin.d.ts +150 -0
  106. package/dist/plugin.js +16 -0
  107. package/dist/project-id.d.ts +5 -0
  108. package/dist/project-id.js +3 -0
  109. package/dist/project.d.ts +241 -0
  110. package/dist/project.js +37 -0
  111. package/dist/prompt-input.d.ts +143 -0
  112. package/dist/prompt-input.js +25 -0
  113. package/dist/prompt.d.ts +297 -0
  114. package/dist/prompt.js +61 -0
  115. package/dist/provider.d.ts +60 -0
  116. package/dist/provider.js +42 -0
  117. package/dist/pty-ticket.d.ts +8 -0
  118. package/dist/pty-ticket.js +7 -0
  119. package/dist/pty.d.ts +462 -0
  120. package/dist/pty.js +43 -0
  121. package/dist/question-v1.d.ts +1 -0
  122. package/dist/question-v1.js +1 -0
  123. package/dist/question.d.ts +15 -0
  124. package/dist/question.js +15 -0
  125. package/dist/reference.d.ts +120 -0
  126. package/dist/reference.js +30 -0
  127. package/dist/schema.d.ts +10 -0
  128. package/dist/schema.js +14 -0
  129. package/dist/server-event.d.ts +132 -0
  130. package/dist/server-event.js +5 -0
  131. package/dist/session-compaction-event.d.ts +87 -0
  132. package/dist/session-compaction-event.js +10 -0
  133. package/dist/session-error.d.ts +9 -0
  134. package/dist/session-error.js +8 -0
  135. package/dist/session-event.d.ts +17994 -0
  136. package/dist/session-event.js +499 -0
  137. package/dist/session-fork.d.ts +26 -0
  138. package/dist/session-fork.js +11 -0
  139. package/dist/session-id.d.ts +6 -0
  140. package/dist/session-id.js +10 -0
  141. package/dist/session-inbox.d.ts +748 -0
  142. package/dist/session-inbox.js +47 -0
  143. package/dist/session-message.d.ts +1512 -0
  144. package/dist/session-message.js +209 -0
  145. package/dist/session-revert.d.ts +480 -0
  146. package/dist/session-revert.js +63 -0
  147. package/dist/session-status-event.d.ts +299 -0
  148. package/dist/session-status-event.js +43 -0
  149. package/dist/session-transfer.d.ts +744 -0
  150. package/dist/session-transfer.js +8 -0
  151. package/dist/session-v1.d.ts +1 -0
  152. package/dist/session-v1.js +1 -0
  153. package/dist/session.d.ts +218 -0
  154. package/dist/session.js +45 -0
  155. package/dist/shell.d.ts +381 -0
  156. package/dist/shell.js +58 -0
  157. package/dist/skill.d.ts +133 -0
  158. package/dist/skill.js +48 -0
  159. package/dist/snapshot.d.ts +4 -0
  160. package/dist/snapshot.js +3 -0
  161. package/dist/token-usage.d.ts +13 -0
  162. package/dist/token-usage.js +11 -0
  163. package/dist/tool.d.ts +74 -0
  164. package/dist/tool.js +22 -0
  165. package/dist/tui-event.d.ts +307 -0
  166. package/dist/tui-event.js +53 -0
  167. package/dist/v1/filesystem.d.ts +78 -0
  168. package/dist/v1/filesystem.js +8 -0
  169. package/dist/v1/legacy-event.d.ts +108 -0
  170. package/dist/v1/legacy-event.js +15 -0
  171. package/dist/v1/permission.d.ts +316 -0
  172. package/dist/v1/permission.js +41 -0
  173. package/dist/v1/question.d.ts +444 -0
  174. package/dist/v1/question.js +57 -0
  175. package/dist/v1/session.d.ts +7657 -0
  176. package/dist/v1/session.js +535 -0
  177. package/dist/vcs-event.d.ts +76 -0
  178. package/dist/vcs-event.js +11 -0
  179. package/dist/vcs.d.ts +26 -0
  180. package/dist/vcs.js +17 -0
  181. package/dist/websearch.d.ts +108 -0
  182. package/dist/websearch.js +31 -0
  183. package/dist/workspace-event.d.ts +247 -0
  184. package/dist/workspace-event.js +25 -0
  185. package/dist/workspace-id.d.ts +6 -0
  186. package/dist/workspace-id.js +16 -0
  187. package/dist/workspace.d.ts +9 -0
  188. package/dist/workspace.js +5 -0
  189. package/dist/worktree-event.d.ts +153 -0
  190. package/dist/worktree-event.js +18 -0
  191. package/dist/worktree.d.ts +255 -0
  192. package/dist/worktree.js +61 -0
  193. package/package.json +42 -0
@@ -0,0 +1,480 @@
1
+ import { Schema } from "effect";
2
+ export interface Revert extends Schema.Schema.Type<typeof Revert> {
3
+ }
4
+ export declare const Revert: Schema.Struct<{
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
+ /** Legacy V1 compatibility state. */
10
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
11
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Snapshot.ID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Snapshot.ID">>, never, never>;
12
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
13
+ readonly file: Schema.String;
14
+ readonly patch: Schema.String;
15
+ readonly additions: Schema.Int;
16
+ readonly deletions: Schema.Int;
17
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
18
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
19
+ readonly file: Schema.String;
20
+ readonly patch: Schema.String;
21
+ readonly additions: Schema.Int;
22
+ readonly deletions: Schema.Int;
23
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
24
+ }>>>, never, never>;
25
+ }>;
26
+ export interface RevertV1 extends Schema.Schema.Type<typeof RevertV1> {
27
+ }
28
+ export declare const RevertV1: Schema.Struct<{
29
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
30
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
31
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
32
+ };
33
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
34
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
35
+ readonly diff: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
36
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
37
+ readonly path: Schema.String;
38
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
39
+ readonly additions: Schema.Finite;
40
+ readonly deletions: Schema.Finite;
41
+ readonly patch: Schema.String;
42
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
43
+ readonly path: Schema.String;
44
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
45
+ readonly additions: Schema.Finite;
46
+ readonly deletions: Schema.Finite;
47
+ readonly patch: Schema.String;
48
+ }>>>, never, never>;
49
+ }>;
50
+ /** Storage decoder for revert state written before FileDiff became canonical. */
51
+ export declare const PersistedRevert: Schema.decodeTo<Schema.toType<Schema.Struct<{
52
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
53
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
54
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
55
+ };
56
+ /** Legacy V1 compatibility state. */
57
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
58
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Snapshot.ID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Snapshot.ID">>, never, never>;
59
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
60
+ readonly file: Schema.String;
61
+ readonly patch: Schema.String;
62
+ readonly additions: Schema.Int;
63
+ readonly deletions: Schema.Int;
64
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
65
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
66
+ readonly file: Schema.String;
67
+ readonly patch: Schema.String;
68
+ readonly additions: Schema.Int;
69
+ readonly deletions: Schema.Int;
70
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
71
+ }>>>, never, never>;
72
+ }>>, Schema.Union<readonly [Schema.decodeTo<Schema.Struct<{
73
+ readonly source: Schema.tag<"current">;
74
+ readonly revert: Schema.toType<Schema.Struct<{
75
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
76
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
77
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
78
+ };
79
+ /** Legacy V1 compatibility state. */
80
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
81
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Snapshot.ID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Snapshot.ID">>, never, never>;
82
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
83
+ readonly file: Schema.String;
84
+ readonly patch: Schema.String;
85
+ readonly additions: Schema.Int;
86
+ readonly deletions: Schema.Int;
87
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
88
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
89
+ readonly file: Schema.String;
90
+ readonly patch: Schema.String;
91
+ readonly additions: Schema.Int;
92
+ readonly deletions: Schema.Int;
93
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
94
+ }>>>, never, never>;
95
+ }>>;
96
+ }>, Schema.Struct<{
97
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
98
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
99
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
100
+ };
101
+ /** Legacy V1 compatibility state. */
102
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
103
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Snapshot.ID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Snapshot.ID">>, never, never>;
104
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
105
+ readonly file: Schema.String;
106
+ readonly patch: Schema.String;
107
+ readonly additions: Schema.Int;
108
+ readonly deletions: Schema.Int;
109
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
110
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
111
+ readonly file: Schema.String;
112
+ readonly patch: Schema.String;
113
+ readonly additions: Schema.Int;
114
+ readonly deletions: Schema.Int;
115
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
116
+ }>>>, never, never>;
117
+ }>, never, never>, Schema.decodeTo<Schema.Struct<{
118
+ readonly source: Schema.tag<"legacy">;
119
+ readonly revert: Schema.toType<Schema.Struct<{
120
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
121
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
122
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
123
+ };
124
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
125
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
126
+ readonly diff: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
127
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
128
+ readonly path: Schema.String;
129
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
130
+ readonly additions: Schema.Finite;
131
+ readonly deletions: Schema.Finite;
132
+ readonly patch: Schema.String;
133
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
134
+ readonly path: Schema.String;
135
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
136
+ readonly additions: Schema.Finite;
137
+ readonly deletions: Schema.Finite;
138
+ readonly patch: Schema.String;
139
+ }>>>, never, never>;
140
+ }>>;
141
+ }>, Schema.Struct<{
142
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
143
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
144
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
145
+ };
146
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
147
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
148
+ readonly diff: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
149
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
150
+ readonly path: Schema.String;
151
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
152
+ readonly additions: Schema.Finite;
153
+ readonly deletions: Schema.Finite;
154
+ readonly patch: Schema.String;
155
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
156
+ readonly path: Schema.String;
157
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
158
+ readonly additions: Schema.Finite;
159
+ readonly deletions: Schema.Finite;
160
+ readonly patch: Schema.String;
161
+ }>>>, never, never>;
162
+ }>, never, never>]> & {
163
+ readonly discriminants: readonly ["current", "legacy"];
164
+ readonly cases: {
165
+ current: Schema.decodeTo<Schema.Struct<{
166
+ readonly source: Schema.tag<"current">;
167
+ readonly revert: Schema.toType<Schema.Struct<{
168
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
169
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
170
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
171
+ };
172
+ /** Legacy V1 compatibility state. */
173
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
174
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Snapshot.ID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Snapshot.ID">>, never, never>;
175
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
176
+ readonly file: Schema.String;
177
+ readonly patch: Schema.String;
178
+ readonly additions: Schema.Int;
179
+ readonly deletions: Schema.Int;
180
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
181
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
182
+ readonly file: Schema.String;
183
+ readonly patch: Schema.String;
184
+ readonly additions: Schema.Int;
185
+ readonly deletions: Schema.Int;
186
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
187
+ }>>>, never, never>;
188
+ }>>;
189
+ }>, Schema.Struct<{
190
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
191
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
192
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
193
+ };
194
+ /** Legacy V1 compatibility state. */
195
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
196
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Snapshot.ID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Snapshot.ID">>, never, never>;
197
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
198
+ readonly file: Schema.String;
199
+ readonly patch: Schema.String;
200
+ readonly additions: Schema.Int;
201
+ readonly deletions: Schema.Int;
202
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
203
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
204
+ readonly file: Schema.String;
205
+ readonly patch: Schema.String;
206
+ readonly additions: Schema.Int;
207
+ readonly deletions: Schema.Int;
208
+ readonly status: Schema.Literals<readonly ["added", "deleted", "modified"]>;
209
+ }>>>, never, never>;
210
+ }>, never, never>;
211
+ legacy: Schema.decodeTo<Schema.Struct<{
212
+ readonly source: Schema.tag<"legacy">;
213
+ readonly revert: Schema.toType<Schema.Struct<{
214
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
215
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
216
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
217
+ };
218
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
219
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
220
+ readonly diff: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
221
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
222
+ readonly path: Schema.String;
223
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
224
+ readonly additions: Schema.Finite;
225
+ readonly deletions: Schema.Finite;
226
+ readonly patch: Schema.String;
227
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
228
+ readonly path: Schema.String;
229
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
230
+ readonly additions: Schema.Finite;
231
+ readonly deletions: Schema.Finite;
232
+ readonly patch: Schema.String;
233
+ }>>>, never, never>;
234
+ }>>;
235
+ }>, Schema.Struct<{
236
+ readonly messageID: Schema.brand<Schema.String, "Session.Message.ID"> & {
237
+ create: () => string & import("effect/Brand").Brand<"Session.Message.ID">;
238
+ fromEvent: (eventID: import("./event.js").ID) => string & import("effect/Brand").Brand<"Session.Message.ID">;
239
+ };
240
+ readonly partID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
241
+ readonly snapshot: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
242
+ readonly diff: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
243
+ readonly files: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
244
+ readonly path: Schema.String;
245
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
246
+ readonly additions: Schema.Finite;
247
+ readonly deletions: Schema.Finite;
248
+ readonly patch: Schema.String;
249
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
250
+ readonly path: Schema.String;
251
+ readonly status: Schema.Literals<readonly ["added", "modified", "deleted"]>;
252
+ readonly additions: Schema.Finite;
253
+ readonly deletions: Schema.Finite;
254
+ readonly patch: Schema.String;
255
+ }>>>, never, never>;
256
+ }>, never, never>;
257
+ };
258
+ readonly isAnyOf: <const Keys>(keys: readonly Keys[]) => (value: {
259
+ readonly source: "current";
260
+ readonly revert: {
261
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
262
+ readonly files?: readonly {
263
+ readonly file: string;
264
+ readonly patch: string;
265
+ readonly additions: number;
266
+ readonly deletions: number;
267
+ readonly status: "added" | "deleted" | "modified";
268
+ }[] | undefined;
269
+ readonly snapshot?: (string & import("effect/Brand").Brand<"Snapshot.ID">) | undefined;
270
+ readonly partID?: string | undefined;
271
+ };
272
+ } | {
273
+ readonly source: "legacy";
274
+ readonly revert: {
275
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
276
+ readonly files?: readonly {
277
+ readonly path: string;
278
+ readonly status: "added" | "deleted" | "modified";
279
+ readonly additions: number;
280
+ readonly deletions: number;
281
+ readonly patch: string;
282
+ }[] | undefined;
283
+ readonly snapshot?: string | undefined;
284
+ readonly partID?: string | undefined;
285
+ readonly diff?: string | undefined;
286
+ };
287
+ }) => value is Extract<{
288
+ readonly source: "current";
289
+ readonly revert: {
290
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
291
+ readonly files?: readonly {
292
+ readonly file: string;
293
+ readonly patch: string;
294
+ readonly additions: number;
295
+ readonly deletions: number;
296
+ readonly status: "added" | "deleted" | "modified";
297
+ }[] | undefined;
298
+ readonly snapshot?: (string & import("effect/Brand").Brand<"Snapshot.ID">) | undefined;
299
+ readonly partID?: string | undefined;
300
+ };
301
+ }, {
302
+ readonly source: Keys;
303
+ }> | Extract<{
304
+ readonly source: "legacy";
305
+ readonly revert: {
306
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
307
+ readonly files?: readonly {
308
+ readonly path: string;
309
+ readonly status: "added" | "deleted" | "modified";
310
+ readonly additions: number;
311
+ readonly deletions: number;
312
+ readonly patch: string;
313
+ }[] | undefined;
314
+ readonly snapshot?: string | undefined;
315
+ readonly partID?: string | undefined;
316
+ readonly diff?: string | undefined;
317
+ };
318
+ }, {
319
+ readonly source: Keys;
320
+ }>;
321
+ readonly guards: {
322
+ current: (u: unknown) => u is {
323
+ readonly source: "current";
324
+ readonly revert: {
325
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
326
+ readonly files?: readonly {
327
+ readonly file: string;
328
+ readonly patch: string;
329
+ readonly additions: number;
330
+ readonly deletions: number;
331
+ readonly status: "added" | "deleted" | "modified";
332
+ }[] | undefined;
333
+ readonly snapshot?: (string & import("effect/Brand").Brand<"Snapshot.ID">) | undefined;
334
+ readonly partID?: string | undefined;
335
+ };
336
+ };
337
+ legacy: (u: unknown) => u is {
338
+ readonly source: "legacy";
339
+ readonly revert: {
340
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
341
+ readonly files?: readonly {
342
+ readonly path: string;
343
+ readonly status: "added" | "deleted" | "modified";
344
+ readonly additions: number;
345
+ readonly deletions: number;
346
+ readonly patch: string;
347
+ }[] | undefined;
348
+ readonly snapshot?: string | undefined;
349
+ readonly partID?: string | undefined;
350
+ readonly diff?: string | undefined;
351
+ };
352
+ };
353
+ };
354
+ readonly match: {
355
+ <Cases extends {
356
+ current: (value: {
357
+ readonly source: "current";
358
+ readonly revert: {
359
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
360
+ readonly files?: readonly {
361
+ readonly file: string;
362
+ readonly patch: string;
363
+ readonly additions: number;
364
+ readonly deletions: number;
365
+ readonly status: "added" | "deleted" | "modified";
366
+ }[] | undefined;
367
+ readonly snapshot?: (string & import("effect/Brand").Brand<"Snapshot.ID">) | undefined;
368
+ readonly partID?: string | undefined;
369
+ };
370
+ }) => any;
371
+ legacy: (value: {
372
+ readonly source: "legacy";
373
+ readonly revert: {
374
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
375
+ readonly files?: readonly {
376
+ readonly path: string;
377
+ readonly status: "added" | "deleted" | "modified";
378
+ readonly additions: number;
379
+ readonly deletions: number;
380
+ readonly patch: string;
381
+ }[] | undefined;
382
+ readonly snapshot?: string | undefined;
383
+ readonly partID?: string | undefined;
384
+ readonly diff?: string | undefined;
385
+ };
386
+ }) => any;
387
+ }>(value: {
388
+ readonly source: "current";
389
+ readonly revert: {
390
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
391
+ readonly files?: readonly {
392
+ readonly file: string;
393
+ readonly patch: string;
394
+ readonly additions: number;
395
+ readonly deletions: number;
396
+ readonly status: "added" | "deleted" | "modified";
397
+ }[] | undefined;
398
+ readonly snapshot?: (string & import("effect/Brand").Brand<"Snapshot.ID">) | undefined;
399
+ readonly partID?: string | undefined;
400
+ };
401
+ } | {
402
+ readonly source: "legacy";
403
+ readonly revert: {
404
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
405
+ readonly files?: readonly {
406
+ readonly path: string;
407
+ readonly status: "added" | "deleted" | "modified";
408
+ readonly additions: number;
409
+ readonly deletions: number;
410
+ readonly patch: string;
411
+ }[] | undefined;
412
+ readonly snapshot?: string | undefined;
413
+ readonly partID?: string | undefined;
414
+ readonly diff?: string | undefined;
415
+ };
416
+ }, cases: Cases): Cases[keyof Cases] extends (value: any) => infer R ? import("effect/Unify").Unify<R> : never;
417
+ <Cases extends {
418
+ current: (value: {
419
+ readonly source: "current";
420
+ readonly revert: {
421
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
422
+ readonly files?: readonly {
423
+ readonly file: string;
424
+ readonly patch: string;
425
+ readonly additions: number;
426
+ readonly deletions: number;
427
+ readonly status: "added" | "deleted" | "modified";
428
+ }[] | undefined;
429
+ readonly snapshot?: (string & import("effect/Brand").Brand<"Snapshot.ID">) | undefined;
430
+ readonly partID?: string | undefined;
431
+ };
432
+ }) => any;
433
+ legacy: (value: {
434
+ readonly source: "legacy";
435
+ readonly revert: {
436
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
437
+ readonly files?: readonly {
438
+ readonly path: string;
439
+ readonly status: "added" | "deleted" | "modified";
440
+ readonly additions: number;
441
+ readonly deletions: number;
442
+ readonly patch: string;
443
+ }[] | undefined;
444
+ readonly snapshot?: string | undefined;
445
+ readonly partID?: string | undefined;
446
+ readonly diff?: string | undefined;
447
+ };
448
+ }) => any;
449
+ }>(cases: Cases): (value: {
450
+ readonly source: "current";
451
+ readonly revert: {
452
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
453
+ readonly files?: readonly {
454
+ readonly file: string;
455
+ readonly patch: string;
456
+ readonly additions: number;
457
+ readonly deletions: number;
458
+ readonly status: "added" | "deleted" | "modified";
459
+ }[] | undefined;
460
+ readonly snapshot?: (string & import("effect/Brand").Brand<"Snapshot.ID">) | undefined;
461
+ readonly partID?: string | undefined;
462
+ };
463
+ } | {
464
+ readonly source: "legacy";
465
+ readonly revert: {
466
+ readonly messageID: string & import("effect/Brand").Brand<"Session.Message.ID">;
467
+ readonly files?: readonly {
468
+ readonly path: string;
469
+ readonly status: "added" | "deleted" | "modified";
470
+ readonly additions: number;
471
+ readonly deletions: number;
472
+ readonly patch: string;
473
+ }[] | undefined;
474
+ readonly snapshot?: string | undefined;
475
+ readonly partID?: string | undefined;
476
+ readonly diff?: string | undefined;
477
+ };
478
+ }) => Cases[keyof Cases] extends (value: any) => infer R ? import("effect/Unify").Unify<R> : never;
479
+ };
480
+ }, never, never>;
@@ -0,0 +1,63 @@
1
+ import { Schema, SchemaTransformation } from "effect";
2
+ import { FileDiff } from "./file-diff.js";
3
+ import { optional } from "./schema.js";
4
+ import { SessionMessage } from "./session-message.js";
5
+ import { Snapshot } from "./snapshot.js";
6
+ export const Revert = Schema.Struct({
7
+ messageID: SessionMessage.ID,
8
+ /** Legacy V1 compatibility state. */
9
+ partID: Schema.String.pipe(optional),
10
+ snapshot: Snapshot.ID.pipe(optional),
11
+ files: Schema.Array(FileDiff.Info).pipe(optional),
12
+ }).annotate({ identifier: "Session.Revert" });
13
+ const FileDiffV1 = Schema.Struct({
14
+ path: Schema.String,
15
+ status: Schema.Literals(["added", "modified", "deleted"]),
16
+ additions: Schema.Finite,
17
+ deletions: Schema.Finite,
18
+ patch: Schema.String,
19
+ });
20
+ export const RevertV1 = Schema.Struct({
21
+ messageID: SessionMessage.ID,
22
+ partID: Schema.String.pipe(optional),
23
+ snapshot: Schema.String.pipe(optional),
24
+ diff: Schema.String.pipe(optional),
25
+ files: Schema.Array(FileDiffV1).pipe(optional),
26
+ }).annotate({ identifier: "Session.RevertV1" });
27
+ const PersistedCurrent = Revert.pipe(Schema.decodeTo(Schema.Struct({ source: Schema.tag("current"), revert: Schema.toType(Revert) }), SchemaTransformation.transform({
28
+ decode: (revert) => ({
29
+ source: "current",
30
+ revert,
31
+ }),
32
+ encode: (value) => value.revert,
33
+ })));
34
+ const PersistedLegacy = RevertV1.pipe(Schema.decodeTo(Schema.Struct({ source: Schema.tag("legacy"), revert: Schema.toType(RevertV1) }), SchemaTransformation.transform({
35
+ decode: (revert) => ({
36
+ source: "legacy",
37
+ revert,
38
+ }),
39
+ encode: (value) => value.revert,
40
+ })));
41
+ /** Storage decoder for revert state written before FileDiff became canonical. */
42
+ export const PersistedRevert = Schema.Union([PersistedCurrent, PersistedLegacy]).pipe(Schema.toTaggedUnion("source"), Schema.decodeTo(Schema.toType(Revert), SchemaTransformation.transform({
43
+ decode: (persisted) => {
44
+ if (persisted.source === "current")
45
+ return persisted.revert;
46
+ return Revert.make({
47
+ messageID: persisted.revert.messageID,
48
+ partID: persisted.revert.partID,
49
+ snapshot: persisted.revert.snapshot ? Snapshot.ID.make(persisted.revert.snapshot) : undefined,
50
+ files: persisted.revert.files?.map((file) => ({
51
+ file: file.path,
52
+ status: file.status,
53
+ additions: file.additions,
54
+ deletions: file.deletions,
55
+ patch: file.patch,
56
+ })),
57
+ });
58
+ },
59
+ encode: (revert) => ({
60
+ source: "current",
61
+ revert,
62
+ }),
63
+ })), Schema.annotate({ identifier: "Session.Revert.Persisted" }));