@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,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" }));
@@ -0,0 +1,186 @@
1
+ export * as SessionStats from "./session-stats.js";
2
+ import { Schema } from "effect";
3
+ export declare const Activity: Schema.Struct<{
4
+ readonly date: Schema.String;
5
+ readonly steps: Schema.Int;
6
+ }>;
7
+ export type Activity = typeof Activity.Type;
8
+ export declare const ModelUsage: Schema.Struct<{
9
+ readonly model: Schema.Struct<{
10
+ readonly id: Schema.brand<Schema.String, "Model.ID">;
11
+ readonly providerID: Schema.brand<Schema.String, "Provider.ID"> & {
12
+ opencode: string & import("effect/Brand").Brand<"Provider.ID">;
13
+ anthropic: string & import("effect/Brand").Brand<"Provider.ID">;
14
+ openai: string & import("effect/Brand").Brand<"Provider.ID">;
15
+ google: string & import("effect/Brand").Brand<"Provider.ID">;
16
+ googleVertex: string & import("effect/Brand").Brand<"Provider.ID">;
17
+ githubCopilot: string & import("effect/Brand").Brand<"Provider.ID">;
18
+ amazonBedrock: string & import("effect/Brand").Brand<"Provider.ID">;
19
+ azure: string & import("effect/Brand").Brand<"Provider.ID">;
20
+ openrouter: string & import("effect/Brand").Brand<"Provider.ID">;
21
+ mistral: string & import("effect/Brand").Brand<"Provider.ID">;
22
+ gitlab: string & import("effect/Brand").Brand<"Provider.ID">;
23
+ };
24
+ readonly variant: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Model.VariantID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Model.VariantID">>, never, never>;
25
+ }> & {
26
+ parse: (input: string) => {
27
+ readonly id: string & import("effect/Brand").Brand<"Model.ID">;
28
+ readonly providerID: string & import("effect/Brand").Brand<"Provider.ID">;
29
+ readonly variant?: (string & import("effect/Brand").Brand<"Model.VariantID">) | undefined;
30
+ };
31
+ };
32
+ readonly steps: Schema.Int;
33
+ readonly tokens: Schema.Struct<{
34
+ readonly input: Schema.Finite;
35
+ readonly output: Schema.Finite;
36
+ readonly reasoning: Schema.Finite;
37
+ readonly cache: Schema.Struct<{
38
+ readonly read: Schema.Finite;
39
+ readonly write: Schema.Finite;
40
+ }>;
41
+ }>;
42
+ readonly cost: Schema.brand<Schema.Finite, "Money.USD"> & {
43
+ zero: number & import("effect/Brand").Brand<"Money.USD">;
44
+ };
45
+ }>;
46
+ export type ModelUsage = typeof ModelUsage.Type;
47
+ export declare const ToolUsage: Schema.Struct<{
48
+ readonly name: Schema.String;
49
+ readonly calls: Schema.Int;
50
+ readonly succeeded: Schema.Int;
51
+ readonly failed: Schema.Int;
52
+ readonly unfinished: Schema.Int;
53
+ readonly durationP50: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Finite>>, Schema.optionalKey<Schema.Finite>, never, never>;
54
+ }>;
55
+ export type ToolUsage = typeof ToolUsage.Type;
56
+ export declare const ToolMode: Schema.Literals<readonly ["none", "summary", "detail"]>;
57
+ export type ToolMode = typeof ToolMode.Type;
58
+ export declare const ToolTotals: Schema.Struct<{
59
+ readonly calls: Schema.Int;
60
+ readonly succeeded: Schema.Int;
61
+ readonly failed: Schema.Int;
62
+ readonly unfinished: Schema.Int;
63
+ }>;
64
+ export type ToolTotals = typeof ToolTotals.Type;
65
+ export declare const Tools: Schema.Union<readonly [Schema.Struct<{
66
+ readonly mode: Schema.Literal<"none">;
67
+ }>, Schema.Struct<{
68
+ readonly mode: Schema.Literal<"summary">;
69
+ readonly totals: Schema.Struct<{
70
+ readonly calls: Schema.Int;
71
+ readonly succeeded: Schema.Int;
72
+ readonly failed: Schema.Int;
73
+ readonly unfinished: Schema.Int;
74
+ }>;
75
+ }>, Schema.Struct<{
76
+ readonly mode: Schema.Literal<"detail">;
77
+ readonly totals: Schema.Struct<{
78
+ readonly calls: Schema.Int;
79
+ readonly succeeded: Schema.Int;
80
+ readonly failed: Schema.Int;
81
+ readonly unfinished: Schema.Int;
82
+ }>;
83
+ readonly usage: Schema.$Array<Schema.Struct<{
84
+ readonly name: Schema.String;
85
+ readonly calls: Schema.Int;
86
+ readonly succeeded: Schema.Int;
87
+ readonly failed: Schema.Int;
88
+ readonly unfinished: Schema.Int;
89
+ readonly durationP50: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Finite>>, Schema.optionalKey<Schema.Finite>, never, never>;
90
+ }>>;
91
+ }>]>;
92
+ export type Tools = typeof Tools.Type;
93
+ export declare const Info: Schema.Struct<{
94
+ readonly range: Schema.Struct<{
95
+ readonly from: Schema.decodeTo<Schema.DateTimeUtc, Schema.Finite, never, never>;
96
+ readonly to: Schema.decodeTo<Schema.DateTimeUtc, Schema.Finite, never, never>;
97
+ }>;
98
+ readonly sessions: Schema.Int;
99
+ readonly subagents: Schema.Int;
100
+ readonly prompts: Schema.Int;
101
+ readonly steps: Schema.Int;
102
+ readonly tokens: Schema.Struct<{
103
+ readonly input: Schema.Finite;
104
+ readonly output: Schema.Finite;
105
+ readonly reasoning: Schema.Finite;
106
+ readonly cache: Schema.Struct<{
107
+ readonly read: Schema.Finite;
108
+ readonly write: Schema.Finite;
109
+ }>;
110
+ }>;
111
+ readonly cost: Schema.brand<Schema.Finite, "Money.USD"> & {
112
+ zero: number & import("effect/Brand").Brand<"Money.USD">;
113
+ };
114
+ readonly tools: Schema.Union<readonly [Schema.Struct<{
115
+ readonly mode: Schema.Literal<"none">;
116
+ }>, Schema.Struct<{
117
+ readonly mode: Schema.Literal<"summary">;
118
+ readonly totals: Schema.Struct<{
119
+ readonly calls: Schema.Int;
120
+ readonly succeeded: Schema.Int;
121
+ readonly failed: Schema.Int;
122
+ readonly unfinished: Schema.Int;
123
+ }>;
124
+ }>, Schema.Struct<{
125
+ readonly mode: Schema.Literal<"detail">;
126
+ readonly totals: Schema.Struct<{
127
+ readonly calls: Schema.Int;
128
+ readonly succeeded: Schema.Int;
129
+ readonly failed: Schema.Int;
130
+ readonly unfinished: Schema.Int;
131
+ }>;
132
+ readonly usage: Schema.$Array<Schema.Struct<{
133
+ readonly name: Schema.String;
134
+ readonly calls: Schema.Int;
135
+ readonly succeeded: Schema.Int;
136
+ readonly failed: Schema.Int;
137
+ readonly unfinished: Schema.Int;
138
+ readonly durationP50: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Finite>>, Schema.optionalKey<Schema.Finite>, never, never>;
139
+ }>>;
140
+ }>]>;
141
+ readonly activeDays: Schema.Int;
142
+ readonly streak: Schema.Int;
143
+ readonly activity: Schema.$Array<Schema.Struct<{
144
+ readonly date: Schema.String;
145
+ readonly steps: Schema.Int;
146
+ }>>;
147
+ readonly models: Schema.$Array<Schema.Struct<{
148
+ readonly model: Schema.Struct<{
149
+ readonly id: Schema.brand<Schema.String, "Model.ID">;
150
+ readonly providerID: Schema.brand<Schema.String, "Provider.ID"> & {
151
+ opencode: string & import("effect/Brand").Brand<"Provider.ID">;
152
+ anthropic: string & import("effect/Brand").Brand<"Provider.ID">;
153
+ openai: string & import("effect/Brand").Brand<"Provider.ID">;
154
+ google: string & import("effect/Brand").Brand<"Provider.ID">;
155
+ googleVertex: string & import("effect/Brand").Brand<"Provider.ID">;
156
+ githubCopilot: string & import("effect/Brand").Brand<"Provider.ID">;
157
+ amazonBedrock: string & import("effect/Brand").Brand<"Provider.ID">;
158
+ azure: string & import("effect/Brand").Brand<"Provider.ID">;
159
+ openrouter: string & import("effect/Brand").Brand<"Provider.ID">;
160
+ mistral: string & import("effect/Brand").Brand<"Provider.ID">;
161
+ gitlab: string & import("effect/Brand").Brand<"Provider.ID">;
162
+ };
163
+ readonly variant: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Model.VariantID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Model.VariantID">>, never, never>;
164
+ }> & {
165
+ parse: (input: string) => {
166
+ readonly id: string & import("effect/Brand").Brand<"Model.ID">;
167
+ readonly providerID: string & import("effect/Brand").Brand<"Provider.ID">;
168
+ readonly variant?: (string & import("effect/Brand").Brand<"Model.VariantID">) | undefined;
169
+ };
170
+ };
171
+ readonly steps: Schema.Int;
172
+ readonly tokens: Schema.Struct<{
173
+ readonly input: Schema.Finite;
174
+ readonly output: Schema.Finite;
175
+ readonly reasoning: Schema.Finite;
176
+ readonly cache: Schema.Struct<{
177
+ readonly read: Schema.Finite;
178
+ readonly write: Schema.Finite;
179
+ }>;
180
+ }>;
181
+ readonly cost: Schema.brand<Schema.Finite, "Money.USD"> & {
182
+ zero: number & import("effect/Brand").Brand<"Money.USD">;
183
+ };
184
+ }>>;
185
+ }>;
186
+ export type Info = typeof Info.Type;
@@ -0,0 +1,53 @@
1
+ export * as SessionStats from "./session-stats.js";
2
+ import { Schema } from "effect";
3
+ import { Model } from "./model.js";
4
+ import { Money } from "./money.js";
5
+ import { DateTimeUtcFromMillis, NonNegativeInt, optional } from "./schema.js";
6
+ import { TokenUsage } from "./token-usage.js";
7
+ export const Activity = Schema.Struct({
8
+ date: Schema.String,
9
+ steps: NonNegativeInt,
10
+ }).annotate({ identifier: "SessionStats.Activity" });
11
+ export const ModelUsage = Schema.Struct({
12
+ model: Model.Ref,
13
+ steps: NonNegativeInt,
14
+ tokens: TokenUsage.Info,
15
+ cost: Money.USD,
16
+ }).annotate({ identifier: "SessionStats.ModelUsage" });
17
+ export const ToolUsage = Schema.Struct({
18
+ name: Schema.String,
19
+ calls: NonNegativeInt,
20
+ succeeded: NonNegativeInt,
21
+ failed: NonNegativeInt,
22
+ unfinished: NonNegativeInt,
23
+ durationP50: Schema.Finite.pipe(optional),
24
+ }).annotate({ identifier: "SessionStats.ToolUsage" });
25
+ export const ToolMode = Schema.Literals(["none", "summary", "detail"]);
26
+ export const ToolTotals = Schema.Struct({
27
+ calls: NonNegativeInt,
28
+ succeeded: NonNegativeInt,
29
+ failed: NonNegativeInt,
30
+ unfinished: NonNegativeInt,
31
+ }).annotate({ identifier: "SessionStats.ToolTotals" });
32
+ export const Tools = Schema.Union([
33
+ Schema.Struct({ mode: Schema.Literal("none") }),
34
+ Schema.Struct({ mode: Schema.Literal("summary"), totals: ToolTotals }),
35
+ Schema.Struct({ mode: Schema.Literal("detail"), totals: ToolTotals, usage: Schema.Array(ToolUsage) }),
36
+ ]).annotate({ identifier: "SessionStats.Tools" });
37
+ export const Info = Schema.Struct({
38
+ range: Schema.Struct({
39
+ from: DateTimeUtcFromMillis,
40
+ to: DateTimeUtcFromMillis,
41
+ }),
42
+ sessions: NonNegativeInt,
43
+ subagents: NonNegativeInt,
44
+ prompts: NonNegativeInt,
45
+ steps: NonNegativeInt,
46
+ tokens: TokenUsage.Info,
47
+ cost: Money.USD,
48
+ tools: Tools,
49
+ activeDays: NonNegativeInt,
50
+ streak: NonNegativeInt,
51
+ activity: Schema.Array(Activity),
52
+ models: Schema.Array(ModelUsage),
53
+ }).annotate({ identifier: "SessionStats.Info" });
@@ -0,0 +1,299 @@
1
+ export * as SessionStatusEvent from "./session-status-event.js";
2
+ import { Schema } from "effect";
3
+ export declare const Info: Schema.Union<readonly [Schema.Struct<{
4
+ readonly type: Schema.Literal<"idle">;
5
+ }>, Schema.Struct<{
6
+ readonly type: Schema.Literal<"retry">;
7
+ readonly attempt: Schema.Int;
8
+ readonly message: Schema.String;
9
+ readonly action: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
10
+ readonly reason: Schema.String;
11
+ readonly provider: Schema.String;
12
+ readonly title: Schema.String;
13
+ readonly message: Schema.String;
14
+ readonly label: Schema.String;
15
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
16
+ }>>>, Schema.optionalKey<Schema.Struct<{
17
+ readonly reason: Schema.String;
18
+ readonly provider: Schema.String;
19
+ readonly title: Schema.String;
20
+ readonly message: Schema.String;
21
+ readonly label: Schema.String;
22
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
23
+ }>>, never, never>;
24
+ readonly next: Schema.Int;
25
+ }>, Schema.Struct<{
26
+ readonly type: Schema.Literal<"busy">;
27
+ }>]>;
28
+ export type Info = Schema.Schema.Type<typeof Info>;
29
+ export declare const Status: Schema.Struct<{
30
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
31
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
32
+ };
33
+ readonly created: Schema.Finite;
34
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
35
+ readonly type: Schema.Literal<"session.status">;
36
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
37
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
38
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
39
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
40
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
41
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
42
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
43
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
44
+ }>, never, never>;
45
+ }>>>, Schema.optionalKey<Schema.Struct<{
46
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
47
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
48
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
49
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
50
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
51
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
52
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
53
+ }>, never, never>;
54
+ }>>, never, never>;
55
+ readonly data: Schema.Struct<{
56
+ readonly sessionID: Schema.brand<Schema.String, "SessionID"> & {
57
+ create: () => string & import("effect/Brand").Brand<"SessionID">;
58
+ descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
59
+ };
60
+ readonly status: Schema.Union<readonly [Schema.Struct<{
61
+ readonly type: Schema.Literal<"idle">;
62
+ }>, Schema.Struct<{
63
+ readonly type: Schema.Literal<"retry">;
64
+ readonly attempt: Schema.Int;
65
+ readonly message: Schema.String;
66
+ readonly action: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
67
+ readonly reason: Schema.String;
68
+ readonly provider: Schema.String;
69
+ readonly title: Schema.String;
70
+ readonly message: Schema.String;
71
+ readonly label: Schema.String;
72
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
73
+ }>>>, Schema.optionalKey<Schema.Struct<{
74
+ readonly reason: Schema.String;
75
+ readonly provider: Schema.String;
76
+ readonly title: Schema.String;
77
+ readonly message: Schema.String;
78
+ readonly label: Schema.String;
79
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
80
+ }>>, never, never>;
81
+ readonly next: Schema.Int;
82
+ }>, Schema.Struct<{
83
+ readonly type: Schema.Literal<"busy">;
84
+ }>]>;
85
+ }>;
86
+ }> & {
87
+ type: "session.status";
88
+ durability: "ephemeral";
89
+ durable: undefined;
90
+ data: Schema.Struct<{
91
+ readonly sessionID: Schema.brand<Schema.String, "SessionID"> & {
92
+ create: () => string & import("effect/Brand").Brand<"SessionID">;
93
+ descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
94
+ };
95
+ readonly status: Schema.Union<readonly [Schema.Struct<{
96
+ readonly type: Schema.Literal<"idle">;
97
+ }>, Schema.Struct<{
98
+ readonly type: Schema.Literal<"retry">;
99
+ readonly attempt: Schema.Int;
100
+ readonly message: Schema.String;
101
+ readonly action: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
102
+ readonly reason: Schema.String;
103
+ readonly provider: Schema.String;
104
+ readonly title: Schema.String;
105
+ readonly message: Schema.String;
106
+ readonly label: Schema.String;
107
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
108
+ }>>>, Schema.optionalKey<Schema.Struct<{
109
+ readonly reason: Schema.String;
110
+ readonly provider: Schema.String;
111
+ readonly title: Schema.String;
112
+ readonly message: Schema.String;
113
+ readonly label: Schema.String;
114
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
115
+ }>>, never, never>;
116
+ readonly next: Schema.Int;
117
+ }>, Schema.Struct<{
118
+ readonly type: Schema.Literal<"busy">;
119
+ }>]>;
120
+ }>;
121
+ };
122
+ export declare const Idle: Schema.Struct<{
123
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
124
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
125
+ };
126
+ readonly created: Schema.Finite;
127
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
128
+ readonly type: Schema.Literal<"session.idle">;
129
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
130
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
131
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
132
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
133
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
134
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
135
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
136
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
137
+ }>, never, never>;
138
+ }>>>, Schema.optionalKey<Schema.Struct<{
139
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
140
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
141
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
142
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
143
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
144
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
145
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
146
+ }>, never, never>;
147
+ }>>, never, never>;
148
+ readonly data: Schema.Struct<{
149
+ readonly sessionID: Schema.brand<Schema.String, "SessionID"> & {
150
+ create: () => string & import("effect/Brand").Brand<"SessionID">;
151
+ descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
152
+ };
153
+ }>;
154
+ }> & {
155
+ type: "session.idle";
156
+ durability: "ephemeral";
157
+ durable: undefined;
158
+ data: Schema.Struct<{
159
+ readonly sessionID: Schema.brand<Schema.String, "SessionID"> & {
160
+ create: () => string & import("effect/Brand").Brand<"SessionID">;
161
+ descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
162
+ };
163
+ }>;
164
+ };
165
+ export declare const Definitions: readonly [Schema.Struct<{
166
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
167
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
168
+ };
169
+ readonly created: Schema.Finite;
170
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
171
+ readonly type: Schema.Literal<"session.status">;
172
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
173
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
174
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
175
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
176
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
177
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
178
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
179
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
180
+ }>, never, never>;
181
+ }>>>, Schema.optionalKey<Schema.Struct<{
182
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
183
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
184
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
185
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
186
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
187
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
188
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
189
+ }>, never, never>;
190
+ }>>, never, never>;
191
+ readonly data: Schema.Struct<{
192
+ readonly sessionID: Schema.brand<Schema.String, "SessionID"> & {
193
+ create: () => string & import("effect/Brand").Brand<"SessionID">;
194
+ descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
195
+ };
196
+ readonly status: Schema.Union<readonly [Schema.Struct<{
197
+ readonly type: Schema.Literal<"idle">;
198
+ }>, Schema.Struct<{
199
+ readonly type: Schema.Literal<"retry">;
200
+ readonly attempt: Schema.Int;
201
+ readonly message: Schema.String;
202
+ readonly action: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
203
+ readonly reason: Schema.String;
204
+ readonly provider: Schema.String;
205
+ readonly title: Schema.String;
206
+ readonly message: Schema.String;
207
+ readonly label: Schema.String;
208
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
209
+ }>>>, Schema.optionalKey<Schema.Struct<{
210
+ readonly reason: Schema.String;
211
+ readonly provider: Schema.String;
212
+ readonly title: Schema.String;
213
+ readonly message: Schema.String;
214
+ readonly label: Schema.String;
215
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
216
+ }>>, never, never>;
217
+ readonly next: Schema.Int;
218
+ }>, Schema.Struct<{
219
+ readonly type: Schema.Literal<"busy">;
220
+ }>]>;
221
+ }>;
222
+ }> & {
223
+ type: "session.status";
224
+ durability: "ephemeral";
225
+ durable: undefined;
226
+ data: Schema.Struct<{
227
+ readonly sessionID: Schema.brand<Schema.String, "SessionID"> & {
228
+ create: () => string & import("effect/Brand").Brand<"SessionID">;
229
+ descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
230
+ };
231
+ readonly status: Schema.Union<readonly [Schema.Struct<{
232
+ readonly type: Schema.Literal<"idle">;
233
+ }>, Schema.Struct<{
234
+ readonly type: Schema.Literal<"retry">;
235
+ readonly attempt: Schema.Int;
236
+ readonly message: Schema.String;
237
+ readonly action: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
238
+ readonly reason: Schema.String;
239
+ readonly provider: Schema.String;
240
+ readonly title: Schema.String;
241
+ readonly message: Schema.String;
242
+ readonly label: Schema.String;
243
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
244
+ }>>>, Schema.optionalKey<Schema.Struct<{
245
+ readonly reason: Schema.String;
246
+ readonly provider: Schema.String;
247
+ readonly title: Schema.String;
248
+ readonly message: Schema.String;
249
+ readonly label: Schema.String;
250
+ readonly link: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
251
+ }>>, never, never>;
252
+ readonly next: Schema.Int;
253
+ }>, Schema.Struct<{
254
+ readonly type: Schema.Literal<"busy">;
255
+ }>]>;
256
+ }>;
257
+ }, Schema.Struct<{
258
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
259
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
260
+ };
261
+ readonly created: Schema.Finite;
262
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
263
+ readonly type: Schema.Literal<"session.idle">;
264
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
265
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
266
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
267
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
268
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
269
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
270
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
271
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
272
+ }>, never, never>;
273
+ }>>>, Schema.optionalKey<Schema.Struct<{
274
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
275
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
276
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
277
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
278
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
279
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
280
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
281
+ }>, never, never>;
282
+ }>>, never, never>;
283
+ readonly data: Schema.Struct<{
284
+ readonly sessionID: Schema.brand<Schema.String, "SessionID"> & {
285
+ create: () => string & import("effect/Brand").Brand<"SessionID">;
286
+ descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
287
+ };
288
+ }>;
289
+ }> & {
290
+ type: "session.idle";
291
+ durability: "ephemeral";
292
+ durable: undefined;
293
+ data: Schema.Struct<{
294
+ readonly sessionID: Schema.brand<Schema.String, "SessionID"> & {
295
+ create: () => string & import("effect/Brand").Brand<"SessionID">;
296
+ descending: (id?: string) => string & import("effect/Brand").Brand<"SessionID">;
297
+ };
298
+ }>;
299
+ }];
@@ -0,0 +1,45 @@
1
+ export * as SessionStatusEvent from "./session-status-event.js";
2
+ import { Schema } from "effect";
3
+ import { optional } from "./schema.js";
4
+ import { Event } from "./event.js";
5
+ import { NonNegativeInt } from "./schema.js";
6
+ import { SessionID } from "./session-id.js";
7
+ export const Info = Schema.Union([
8
+ Schema.Struct({
9
+ type: Schema.Literal("idle"),
10
+ }),
11
+ Schema.Struct({
12
+ type: Schema.Literal("retry"),
13
+ attempt: NonNegativeInt,
14
+ message: Schema.String,
15
+ action: optional(Schema.Struct({
16
+ reason: Schema.String,
17
+ provider: Schema.String,
18
+ title: Schema.String,
19
+ message: Schema.String,
20
+ label: Schema.String,
21
+ link: optional(Schema.String),
22
+ })),
23
+ next: NonNegativeInt,
24
+ }),
25
+ Schema.Struct({
26
+ type: Schema.Literal("busy"),
27
+ }),
28
+ ]).annotate({ identifier: "SessionStatus" });
29
+ export const Status = Event.ephemeral({
30
+ type: "session.status",
31
+ // The bare SessionStatus identifier belongs to the status union above.
32
+ identifier: "SessionStatusUpdated",
33
+ schema: {
34
+ sessionID: SessionID,
35
+ status: Info,
36
+ },
37
+ });
38
+ // deprecated
39
+ export const Idle = Event.ephemeral({
40
+ type: "session.idle",
41
+ schema: {
42
+ sessionID: SessionID,
43
+ },
44
+ });
45
+ export const Definitions = Event.inventory(Status, Idle);