@opencode/schema 2.0.3 → 2.0.5

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.
package/dist/mcp.d.ts CHANGED
@@ -7,6 +7,8 @@ declare const TimeoutConfig_base: Schema.Class<TimeoutConfig, Schema.Struct<{
7
7
  }>, {}>;
8
8
  export declare class TimeoutConfig extends TimeoutConfig_base {
9
9
  }
10
+ export type Protocol = typeof Protocol.Type;
11
+ export declare const Protocol: Schema.Literals<readonly ["legacy", "auto", "2026-07-28"]>;
10
12
  declare const LocalConfig_base: Schema.Class<LocalConfig, Schema.Struct<{
11
13
  readonly type: Schema.Literal<"local">;
12
14
  readonly command: Schema.$Array<Schema.String>;
@@ -15,6 +17,7 @@ declare const LocalConfig_base: Schema.Class<LocalConfig, Schema.Struct<{
15
17
  readonly disabled: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
16
18
  readonly codemode: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
17
19
  readonly timeout: Schema.decodeTo<Schema.optional<Schema.toType<typeof TimeoutConfig>>, Schema.optionalKey<typeof TimeoutConfig>, never, never>;
20
+ readonly protocol: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Literals<readonly ["legacy", "auto", "2026-07-28"]>>>, Schema.optionalKey<Schema.Literals<readonly ["legacy", "auto", "2026-07-28"]>>, never, never>;
18
21
  }>, {}>;
19
22
  export declare class LocalConfig extends LocalConfig_base {
20
23
  }
@@ -24,6 +27,7 @@ declare const OAuthConfig_base: Schema.Class<OAuthConfig, Schema.Struct<{
24
27
  readonly scope: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
25
28
  readonly callback_port: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
26
29
  readonly redirect_uri: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
30
+ readonly auth_server_metadata_url: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
27
31
  }>, {}>;
28
32
  export declare class OAuthConfig extends OAuthConfig_base {
29
33
  }
@@ -35,6 +39,7 @@ declare const RemoteConfig_base: Schema.Class<RemoteConfig, Schema.Struct<{
35
39
  readonly disabled: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
36
40
  readonly codemode: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
37
41
  readonly timeout: Schema.decodeTo<Schema.optional<Schema.toType<typeof TimeoutConfig>>, Schema.optionalKey<typeof TimeoutConfig>, never, never>;
42
+ readonly protocol: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Literals<readonly ["legacy", "auto", "2026-07-28"]>>>, Schema.optionalKey<Schema.Literals<readonly ["legacy", "auto", "2026-07-28"]>>, never, never>;
38
43
  }>, {}>;
39
44
  export declare class RemoteConfig extends RemoteConfig_base {
40
45
  }
@@ -52,6 +57,7 @@ export declare const Status: Schema.toTaggedUnion<"status", readonly [Schema.Str
52
57
  readonly error: Schema.String;
53
58
  }>, Schema.Struct<{
54
59
  readonly status: Schema.Literal<"needs_auth">;
60
+ readonly error: Schema.String;
55
61
  }>]>;
56
62
  export interface Server extends Schema.Schema.Type<typeof Server> {
57
63
  }
@@ -68,6 +74,7 @@ export declare const Server: Schema.Struct<{
68
74
  readonly error: Schema.String;
69
75
  }>, Schema.Struct<{
70
76
  readonly status: Schema.Literal<"needs_auth">;
77
+ readonly error: Schema.String;
71
78
  }>]>;
72
79
  readonly integrationID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Integration.ID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Integration.ID">>, never, never>;
73
80
  }>;
package/dist/mcp.js CHANGED
@@ -14,6 +14,10 @@ export class TimeoutConfig extends Schema.Class("Mcp.TimeoutConfig")({
14
14
  }),
15
15
  }) {
16
16
  }
17
+ export const Protocol = Schema.Literals(["legacy", "auto", "2026-07-28"]).annotate({
18
+ identifier: "Mcp.Protocol",
19
+ description: 'MCP protocol negotiation. "legacy" (default) opens with the initialize handshake and speaks protocol revisions up to 2025-11-25. "auto" probes for the 2026-07-28 revision and falls back to legacy when the server does not support it. "2026-07-28" requires that revision and fails otherwise.',
20
+ });
17
21
  export class LocalConfig extends Schema.Class("Mcp.LocalConfig")({
18
22
  type: Schema.Literal("local"),
19
23
  command: Schema.String.pipe(Schema.Array),
@@ -26,6 +30,7 @@ export class LocalConfig extends Schema.Class("Mcp.LocalConfig")({
26
30
  description: "Expose this server's tools through Code Mode. Defaults to true.",
27
31
  }),
28
32
  timeout: TimeoutConfig.pipe(optional),
33
+ protocol: Protocol.pipe(optional),
29
34
  }) {
30
35
  }
31
36
  export class OAuthConfig extends Schema.Class("Mcp.OAuthConfig")({
@@ -34,6 +39,9 @@ export class OAuthConfig extends Schema.Class("Mcp.OAuthConfig")({
34
39
  scope: Schema.String.pipe(optional),
35
40
  callback_port: Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 })).pipe(optional),
36
41
  redirect_uri: Schema.String.pipe(optional),
42
+ auth_server_metadata_url: Schema.String.pipe(optional).annotate({
43
+ description: "URL of the OAuth or OpenID Connect authorization server metadata document. Set when the MCP server does not publish protected resource metadata that names its authorization server.",
44
+ }),
37
45
  }) {
38
46
  }
39
47
  export class RemoteConfig extends Schema.Class("Mcp.RemoteConfig")({
@@ -46,6 +54,7 @@ export class RemoteConfig extends Schema.Class("Mcp.RemoteConfig")({
46
54
  description: "Expose this server's tools through Code Mode. Defaults to true.",
47
55
  }),
48
56
  timeout: TimeoutConfig.pipe(optional),
57
+ protocol: Protocol.pipe(optional),
49
58
  }) {
50
59
  }
51
60
  export const ServerConfig = Schema.Union([LocalConfig, RemoteConfig]).pipe(Schema.toTaggedUnion("type"));
@@ -61,7 +70,7 @@ const Disabled = Schema.Struct({ status: Schema.Literal("disabled") }).annotate(
61
70
  const Failed = Schema.Struct({ status: Schema.Literal("failed"), error: Schema.String }).annotate({
62
71
  identifier: "Mcp.Status.Failed",
63
72
  });
64
- const NeedsAuth = Schema.Struct({ status: Schema.Literal("needs_auth") }).annotate({
73
+ const NeedsAuth = Schema.Struct({ status: Schema.Literal("needs_auth"), error: Schema.String }).annotate({
65
74
  identifier: "Mcp.Status.NeedsAuth",
66
75
  });
67
76
  export const Status = Schema.Union([Connected, Pending, Disabled, Failed, NeedsAuth]).pipe(Schema.toTaggedUnion("status"));
package/dist/model.d.ts CHANGED
@@ -3,6 +3,74 @@ import { Schema } from "effect";
3
3
  import { Provider } from "./provider.js";
4
4
  export declare const ID: Schema.brand<Schema.String, "Model.ID">;
5
5
  export type ID = typeof ID.Type;
6
+ export declare const Event: {
7
+ Updated: Schema.Struct<{
8
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
9
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
10
+ };
11
+ readonly created: Schema.Finite;
12
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
13
+ readonly type: Schema.Literal<"model.updated">;
14
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
15
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
16
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
17
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
18
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
19
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
20
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
21
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
22
+ }>, never, never>;
23
+ }>>>, Schema.optionalKey<Schema.Struct<{
24
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
25
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
26
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
27
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
28
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
29
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
30
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
31
+ }>, never, never>;
32
+ }>>, never, never>;
33
+ readonly data: Schema.Struct<{}>;
34
+ }> & {
35
+ type: "model.updated";
36
+ durability: "ephemeral";
37
+ durable: undefined;
38
+ data: Schema.Struct<{}>;
39
+ };
40
+ Definitions: readonly [Schema.Struct<{
41
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
42
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
43
+ };
44
+ readonly created: Schema.Finite;
45
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
46
+ readonly type: Schema.Literal<"model.updated">;
47
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
48
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
49
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
50
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
51
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
52
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
53
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
54
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
55
+ }>, never, never>;
56
+ }>>>, Schema.optionalKey<Schema.Struct<{
57
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
58
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
59
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
60
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
61
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
62
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
63
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
64
+ }>, never, never>;
65
+ }>>, never, never>;
66
+ readonly data: Schema.Struct<{}>;
67
+ }> & {
68
+ type: "model.updated";
69
+ durability: "ephemeral";
70
+ durable: undefined;
71
+ data: Schema.Struct<{}>;
72
+ }];
73
+ };
6
74
  export declare const VariantID: Schema.brand<Schema.String, "Model.VariantID">;
7
75
  export type VariantID = typeof VariantID.Type;
8
76
  export declare const Ref: Schema.Struct<{
@@ -45,6 +113,7 @@ export declare const Compatibility: Schema.Struct<{
45
113
  readonly maxTokensField: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Literals<readonly ["max_completion_tokens", "max_tokens"]>>>, Schema.optionalKey<Schema.Literals<readonly ["max_completion_tokens", "max_tokens"]>>, never, never>;
46
114
  readonly requireFinishReason: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
47
115
  readonly requireAssistantAfterTool: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
116
+ readonly supportsPromptCacheKey: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
48
117
  }>;
49
118
  export interface Capabilities extends Schema.Schema.Type<typeof Capabilities> {
50
119
  }
@@ -52,7 +121,6 @@ export declare const Capabilities: Schema.Struct<{
52
121
  readonly tools: Schema.Boolean;
53
122
  readonly input: Schema.$Array<Schema.String>;
54
123
  readonly output: Schema.$Array<Schema.String>;
55
- readonly responsesWebsockets: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
56
124
  }> & {
57
125
  default: () => {
58
126
  tools: true;
@@ -100,7 +168,6 @@ export declare const Info: Schema.Struct<{
100
168
  readonly tools: Schema.Boolean;
101
169
  readonly input: Schema.$Array<Schema.String>;
102
170
  readonly output: Schema.$Array<Schema.String>;
103
- readonly responsesWebsockets: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
104
171
  }> & {
105
172
  default: () => {
106
173
  tools: true;
@@ -199,6 +266,7 @@ export declare const Info: Schema.Struct<{
199
266
  readonly maxTokensField: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Literals<readonly ["max_completion_tokens", "max_tokens"]>>>, Schema.optionalKey<Schema.Literals<readonly ["max_completion_tokens", "max_tokens"]>>, never, never>;
200
267
  readonly requireFinishReason: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
201
268
  readonly requireAssistantAfterTool: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
269
+ readonly supportsPromptCacheKey: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
202
270
  }>>>, Schema.optionalKey<Schema.Struct<{
203
271
  readonly reasoningField: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Codec<ReasoningField, ReasoningField, never, never>>>, Schema.optionalKey<Schema.Codec<ReasoningField, ReasoningField, never, never>>, never, never>;
204
272
  /** Require every assistant message to include its reasoning field, even when empty. */
@@ -206,6 +274,7 @@ export declare const Info: Schema.Struct<{
206
274
  readonly maxTokensField: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Literals<readonly ["max_completion_tokens", "max_tokens"]>>>, Schema.optionalKey<Schema.Literals<readonly ["max_completion_tokens", "max_tokens"]>>, never, never>;
207
275
  readonly requireFinishReason: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
208
276
  readonly requireAssistantAfterTool: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
277
+ readonly supportsPromptCacheKey: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
209
278
  }>>, never, never>;
210
279
  readonly package: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
211
280
  readonly compaction: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Union<readonly [Schema.Struct<{
@@ -219,8 +288,8 @@ export declare const Info: Schema.Struct<{
219
288
  readonly mode: Schema.Literal<"provider">;
220
289
  readonly threshold: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
221
290
  }>]>>, never, never>;
222
- /** Session WebSocket policy; omitted inherits the provider policy, then defaults to disabled. */
223
- readonly websocket: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
291
+ /** Session transport; omitted inherits the provider transport, then defaults to HTTP. */
292
+ readonly transport: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Literals<readonly ["http", "websocket"]>>>, Schema.optionalKey<Schema.Literals<readonly ["http", "websocket"]>>, never, never>;
224
293
  }> & {
225
294
  default: (providerID: Provider.ID, id: ID) => {
226
295
  id: string & import("effect/Brand").Brand<"Model.ID">;
package/dist/model.js CHANGED
@@ -3,7 +3,10 @@ import { Schema } from "effect";
3
3
  import { optional, statics } from "./schema.js";
4
4
  import { Provider } from "./provider.js";
5
5
  import { Money } from "./money.js";
6
+ import { ephemeral, inventory } from "./event.js";
6
7
  export const ID = Schema.String.pipe(Schema.brand("Model.ID"));
8
+ const Updated = ephemeral({ type: "model.updated", schema: {} });
9
+ export const Event = { Updated, Definitions: inventory(Updated) };
7
10
  export const VariantID = Schema.String.pipe(Schema.brand("Model.VariantID"));
8
11
  export const Ref = Schema.Struct({
9
12
  id: ID,
@@ -44,12 +47,12 @@ export const Compatibility = Schema.Struct({
44
47
  maxTokensField: MaxTokensField.pipe(optional),
45
48
  requireFinishReason: Schema.Boolean.pipe(optional),
46
49
  requireAssistantAfterTool: Schema.Boolean.pipe(optional),
50
+ supportsPromptCacheKey: Schema.Boolean.pipe(optional),
47
51
  }).annotate({ identifier: "Model.Compatibility" });
48
52
  export const Capabilities = Schema.Struct({
49
53
  tools: Schema.Boolean,
50
54
  input: Schema.Array(Schema.String),
51
55
  output: Schema.Array(Schema.String),
52
- responsesWebsockets: Schema.Boolean.pipe(optional),
53
56
  })
54
57
  .annotate({ identifier: "Model.Capabilities" })
55
58
  .pipe(statics(() => ({
@@ -81,8 +84,8 @@ export const Info = Schema.Struct({
81
84
  compatibility: Compatibility.pipe(optional),
82
85
  package: Provider.Package.pipe(optional),
83
86
  compaction: Provider.Compaction.pipe(optional),
84
- /** Session WebSocket policy; omitted inherits the provider policy, then defaults to disabled. */
85
- websocket: Schema.Boolean.pipe(optional),
87
+ /** Session transport; omitted inherits the provider transport, then defaults to HTTP. */
88
+ transport: Provider.Transport.pipe(optional),
86
89
  ...Provider.Overlays,
87
90
  capabilities: Capabilities,
88
91
  variants: Schema.Array(Variant),
@@ -13,6 +13,10 @@ export declare const Info: Schema.Struct<{
13
13
  };
14
14
  readonly action: Schema.String;
15
15
  readonly resource: Schema.String;
16
+ readonly time: Schema.Struct<{
17
+ readonly created: Schema.decodeTo<Schema.DateTimeUtc, Schema.Finite, never, never>;
18
+ readonly updated: Schema.decodeTo<Schema.DateTimeUtc, Schema.Finite, never, never>;
19
+ }>;
16
20
  }>;
17
21
  export interface Info extends Schema.Schema.Type<typeof Info> {
18
22
  }
@@ -2,11 +2,15 @@ export * as PermissionSaved from "./permission-saved.js";
2
2
  import { Schema } from "effect";
3
3
  import { ascending } from "./identifier.js";
4
4
  import { ProjectID } from "./project-id.js";
5
- import { statics } from "./schema.js";
5
+ import { DateTimeUtcFromMillis, statics } from "./schema.js";
6
6
  export const ID = Schema.String.pipe(Schema.brand("PermissionSaved.ID"), statics((schema) => ({ create: () => schema.make("psv_" + ascending()) })));
7
7
  export const Info = Schema.Struct({
8
8
  id: ID,
9
9
  projectID: ProjectID,
10
10
  action: Schema.String,
11
11
  resource: Schema.String,
12
+ time: Schema.Struct({
13
+ created: DateTimeUtcFromMillis,
14
+ updated: DateTimeUtcFromMillis,
15
+ }),
12
16
  }).annotate({ identifier: "PermissionSaved.Info" });
package/dist/project.d.ts CHANGED
@@ -29,7 +29,6 @@ export interface Commands extends Schema.Schema.Type<typeof Commands> {
29
29
  export declare const Time: Schema.Struct<{
30
30
  readonly created: Schema.Int;
31
31
  readonly updated: Schema.Int;
32
- readonly initialized: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
33
32
  }>;
34
33
  export interface Time extends Schema.Schema.Type<typeof Time> {
35
34
  }
@@ -57,7 +56,6 @@ export declare const Info: Schema.Struct<{
57
56
  readonly time: Schema.Struct<{
58
57
  readonly created: Schema.Int;
59
58
  readonly updated: Schema.Int;
60
- readonly initialized: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
61
59
  }>;
62
60
  readonly sandboxes: Schema.$Array<Schema.String>;
63
61
  }>;
@@ -137,7 +135,6 @@ export declare const Event: {
137
135
  readonly time: Schema.Struct<{
138
136
  readonly created: Schema.Int;
139
137
  readonly updated: Schema.Int;
140
- readonly initialized: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
141
138
  }>;
142
139
  readonly sandboxes: Schema.$Array<Schema.String>;
143
140
  }>;
@@ -169,7 +166,6 @@ export declare const Event: {
169
166
  readonly time: Schema.Struct<{
170
167
  readonly created: Schema.Int;
171
168
  readonly updated: Schema.Int;
172
- readonly initialized: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
173
169
  }>;
174
170
  readonly sandboxes: Schema.$Array<Schema.String>;
175
171
  }>;
@@ -224,7 +220,6 @@ export declare const Event: {
224
220
  readonly time: Schema.Struct<{
225
221
  readonly created: Schema.Int;
226
222
  readonly updated: Schema.Int;
227
- readonly initialized: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
228
223
  }>;
229
224
  readonly sandboxes: Schema.$Array<Schema.String>;
230
225
  }>;
@@ -256,7 +251,6 @@ export declare const Event: {
256
251
  readonly time: Schema.Struct<{
257
252
  readonly created: Schema.Int;
258
253
  readonly updated: Schema.Int;
259
- readonly initialized: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
260
254
  }>;
261
255
  readonly sandboxes: Schema.$Array<Schema.String>;
262
256
  }>;
package/dist/project.js CHANGED
@@ -23,7 +23,6 @@ export const Commands = Schema.Struct({
23
23
  export const Time = Schema.Struct({
24
24
  created: NonNegativeInt,
25
25
  updated: NonNegativeInt,
26
- initialized: optional(NonNegativeInt),
27
26
  }).annotate({ identifier: "Project.Time" });
28
27
  export const Info = Schema.Struct({
29
28
  id: ID,
@@ -14,6 +14,74 @@ export declare const ID: Schema.brand<Schema.String, "Provider.ID"> & {
14
14
  gitlab: string & import("effect/Brand").Brand<"Provider.ID">;
15
15
  };
16
16
  export type ID = typeof ID.Type;
17
+ export declare const Event: {
18
+ Updated: Schema.Struct<{
19
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
20
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
21
+ };
22
+ readonly created: Schema.Finite;
23
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
24
+ readonly type: Schema.Literal<"provider.updated">;
25
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
26
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
27
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
28
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
29
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
30
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
31
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
32
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
33
+ }>, never, never>;
34
+ }>>>, Schema.optionalKey<Schema.Struct<{
35
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
36
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
37
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
38
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
39
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
40
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
41
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
42
+ }>, never, never>;
43
+ }>>, never, never>;
44
+ readonly data: Schema.Struct<{}>;
45
+ }> & {
46
+ type: "provider.updated";
47
+ durability: "ephemeral";
48
+ durable: undefined;
49
+ data: Schema.Struct<{}>;
50
+ };
51
+ Definitions: readonly [Schema.Struct<{
52
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
53
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
54
+ };
55
+ readonly created: Schema.Finite;
56
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
57
+ readonly type: Schema.Literal<"provider.updated">;
58
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
59
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
60
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
61
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
62
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
63
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
64
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
65
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
66
+ }>, never, never>;
67
+ }>>>, Schema.optionalKey<Schema.Struct<{
68
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
69
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
70
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
71
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
72
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
73
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
74
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
75
+ }>, never, never>;
76
+ }>>, never, never>;
77
+ readonly data: Schema.Struct<{}>;
78
+ }> & {
79
+ type: "provider.updated";
80
+ durability: "ephemeral";
81
+ durable: undefined;
82
+ data: Schema.Struct<{}>;
83
+ }];
84
+ };
17
85
  export declare const Package: Schema.String;
18
86
  export type Package = typeof Package.Type;
19
87
  export declare const Activation: Schema.Literals<readonly ["auto", "enabled", "disabled"]>;
@@ -25,6 +93,9 @@ export declare const Compaction: Schema.Union<readonly [Schema.Struct<{
25
93
  readonly mode: Schema.Literal<"provider">;
26
94
  readonly threshold: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
27
95
  }>]>;
96
+ /** "websocket" on a route without a WebSocket channel warns and falls back to HTTP. */
97
+ export declare const Transport: Schema.Literals<readonly ["http", "websocket"]>;
98
+ export type Transport = typeof Transport.Type;
28
99
  export declare const Overlays: {
29
100
  settings: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Any>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Any>>, never, never>;
30
101
  headers: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.String>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.String>>, never, never>;
@@ -98,8 +169,8 @@ export declare const Info: Schema.Struct<{
98
169
  readonly mode: Schema.Literal<"provider">;
99
170
  readonly threshold: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
100
171
  }>]>>, never, never>;
101
- /** Session WebSocket policy for routes that support it; omitted means disabled. */
102
- readonly websocket: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
172
+ /** Session transport for this provider's models; omitted means HTTP. */
173
+ readonly transport: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Literals<readonly ["http", "websocket"]>>>, Schema.optionalKey<Schema.Literals<readonly ["http", "websocket"]>>, never, never>;
103
174
  }> & {
104
175
  empty: (id: ID) => Info;
105
176
  };
package/dist/provider.js CHANGED
@@ -2,6 +2,7 @@ export * as Provider from "./provider.js";
2
2
  import { Effect, Schema } from "effect";
3
3
  import { Integration } from "./integration.js";
4
4
  import { optional, PositiveInt, statics } from "./schema.js";
5
+ import { ephemeral, inventory } from "./event.js";
5
6
  export const ID = Schema.String.pipe(Schema.brand("Provider.ID"), statics((schema) => ({
6
7
  opencode: schema.make("opencode"),
7
8
  anthropic: schema.make("anthropic"),
@@ -15,12 +16,16 @@ export const ID = Schema.String.pipe(Schema.brand("Provider.ID"), statics((schem
15
16
  mistral: schema.make("mistral"),
16
17
  gitlab: schema.make("gitlab"),
17
18
  })));
19
+ const Updated = ephemeral({ type: "provider.updated", schema: {} });
20
+ export const Event = { Updated, Definitions: inventory(Updated) };
18
21
  export const Package = Schema.String;
19
22
  export const Activation = Schema.Literals(["auto", "enabled", "disabled"]);
20
23
  export const Compaction = Schema.Union([
21
24
  Schema.Struct({ mode: Schema.Literal("local") }),
22
25
  Schema.Struct({ mode: Schema.Literal("provider"), threshold: PositiveInt.pipe(optional) }),
23
26
  ]).annotate({ identifier: "Provider.Compaction" });
27
+ /** "websocket" on a route without a WebSocket channel warns and falls back to HTTP. */
28
+ export const Transport = Schema.Literals(["http", "websocket"]).annotate({ identifier: "Provider.Transport" });
24
29
  export const Overlays = {
25
30
  settings: Schema.Record(Schema.String, Schema.Any).pipe(optional),
26
31
  headers: Schema.Record(Schema.String, Schema.String).pipe(optional),
@@ -40,8 +45,8 @@ export const Info = Schema.Struct({
40
45
  activation: Activation,
41
46
  package: Package,
42
47
  compaction: Compaction.pipe(optional),
43
- /** Session WebSocket policy for routes that support it; omitted means disabled. */
44
- websocket: Schema.Boolean.pipe(optional),
48
+ /** Session transport for this provider's models; omitted means HTTP. */
49
+ transport: Transport.pipe(optional),
45
50
  ...Overlays,
46
51
  })
47
52
  .annotate({ identifier: "Provider.Info" })
@@ -602,13 +602,13 @@ export declare const Renamed: Schema.Struct<{
602
602
  }>;
603
603
  };
604
604
  export type Renamed = typeof Renamed.Type;
605
- export declare const PermissionsUpdated: Schema.Struct<{
605
+ export declare const Permissions: Schema.Struct<{
606
606
  readonly id: Schema.brand<Schema.String, "Event.ID"> & {
607
607
  create: () => string & import("effect/Brand").Brand<"Event.ID">;
608
608
  };
609
609
  readonly created: Schema.Finite;
610
610
  readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
611
- readonly type: Schema.Literal<"session.permissions.updated">;
611
+ readonly type: Schema.Literal<"session.permissions">;
612
612
  readonly durable: Schema.Struct<{
613
613
  readonly aggregateID: Schema.String;
614
614
  readonly seq: Schema.brand<Schema.Int, "Event.Seq">;
@@ -645,7 +645,7 @@ export declare const PermissionsUpdated: Schema.Struct<{
645
645
  };
646
646
  }>;
647
647
  }> & {
648
- type: "session.permissions.updated";
648
+ type: "session.permissions";
649
649
  durability: "durable";
650
650
  durable: {
651
651
  readonly version: number;
@@ -663,7 +663,7 @@ export declare const PermissionsUpdated: Schema.Struct<{
663
663
  };
664
664
  }>;
665
665
  };
666
- export type PermissionsUpdated = typeof PermissionsUpdated.Type;
666
+ export type Permissions = typeof Permissions.Type;
667
667
  export declare const Viewed: Schema.Struct<{
668
668
  readonly id: Schema.brand<Schema.String, "Event.ID"> & {
669
669
  create: () => string & import("effect/Brand").Brand<"Event.ID">;
@@ -5079,7 +5079,7 @@ export declare const Definitions: readonly [Schema.Struct<{
5079
5079
  };
5080
5080
  readonly created: Schema.Finite;
5081
5081
  readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
5082
- readonly type: Schema.Literal<"session.permissions.updated">;
5082
+ readonly type: Schema.Literal<"session.permissions">;
5083
5083
  readonly durable: Schema.Struct<{
5084
5084
  readonly aggregateID: Schema.String;
5085
5085
  readonly seq: Schema.brand<Schema.Int, "Event.Seq">;
@@ -5116,7 +5116,7 @@ export declare const Definitions: readonly [Schema.Struct<{
5116
5116
  };
5117
5117
  }>;
5118
5118
  }> & {
5119
- type: "session.permissions.updated";
5119
+ type: "session.permissions";
5120
5120
  durability: "durable";
5121
5121
  durable: {
5122
5122
  readonly version: number;
@@ -9152,7 +9152,7 @@ export declare const DurableDefinitions: readonly [...((Schema.Struct<{
9152
9152
  };
9153
9153
  readonly created: Schema.Finite;
9154
9154
  readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
9155
- readonly type: Schema.Literal<"session.permissions.updated">;
9155
+ readonly type: Schema.Literal<"session.permissions">;
9156
9156
  readonly durable: Schema.Struct<{
9157
9157
  readonly aggregateID: Schema.String;
9158
9158
  readonly seq: Schema.brand<Schema.Int, "Event.Seq">;
@@ -9189,7 +9189,7 @@ export declare const DurableDefinitions: readonly [...((Schema.Struct<{
9189
9189
  };
9190
9190
  }>;
9191
9191
  }> & {
9192
- type: "session.permissions.updated";
9192
+ type: "session.permissions";
9193
9193
  durability: "durable";
9194
9194
  durable: {
9195
9195
  readonly version: number;
@@ -13510,7 +13510,7 @@ export declare const Durable: Schema.Union<readonly [...((Schema.Struct<{
13510
13510
  };
13511
13511
  readonly created: Schema.Finite;
13512
13512
  readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
13513
- readonly type: Schema.Literal<"session.permissions.updated">;
13513
+ readonly type: Schema.Literal<"session.permissions">;
13514
13514
  readonly durable: Schema.Struct<{
13515
13515
  readonly aggregateID: Schema.String;
13516
13516
  readonly seq: Schema.brand<Schema.Int, "Event.Seq">;
@@ -13547,7 +13547,7 @@ export declare const Durable: Schema.Union<readonly [...((Schema.Struct<{
13547
13547
  };
13548
13548
  }>;
13549
13549
  }> & {
13550
- type: "session.permissions.updated";
13550
+ type: "session.permissions";
13551
13551
  durability: "durable";
13552
13552
  durable: {
13553
13553
  readonly version: number;
@@ -17542,7 +17542,7 @@ export declare const All: Schema.toTaggedUnion<"type", readonly [Schema.Union<re
17542
17542
  };
17543
17543
  readonly created: Schema.Finite;
17544
17544
  readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
17545
- readonly type: Schema.Literal<"session.permissions.updated">;
17545
+ readonly type: Schema.Literal<"session.permissions">;
17546
17546
  readonly durable: Schema.Struct<{
17547
17547
  readonly aggregateID: Schema.String;
17548
17548
  readonly seq: Schema.brand<Schema.Int, "Event.Seq">;
@@ -17579,7 +17579,7 @@ export declare const All: Schema.toTaggedUnion<"type", readonly [Schema.Union<re
17579
17579
  };
17580
17580
  }>;
17581
17581
  }> & {
17582
- type: "session.permissions.updated";
17582
+ type: "session.permissions";
17583
17583
  durability: "durable";
17584
17584
  durable: {
17585
17585
  readonly version: number;
@@ -95,8 +95,8 @@ export const Renamed = Event.durable({
95
95
  title: Schema.String,
96
96
  },
97
97
  });
98
- export const PermissionsUpdated = Event.durable({
99
- type: "session.permissions.updated",
98
+ export const Permissions = Event.durable({
99
+ type: "session.permissions",
100
100
  ...options,
101
101
  schema: {
102
102
  ...Base,
@@ -547,7 +547,7 @@ export var RevertEvent;
547
547
  schema: { ...Base, to: SessionMessage.ID },
548
548
  });
549
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);
550
+ export const Definitions = Event.inventory(Created, AgentSelected, ModelSelected, Moved, Renamed, Permissions, 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
551
  // Internal and replay-only events are excluded from the public manifest.
552
552
  export const DurableDefinitions = Event.inventory(...Definitions.filter((definition) => definition.durability === "durable"), UsageRecorded, MessageContentUpdated);
553
553
  export const EphemeralDefinitions = Event.inventory(...Definitions.filter((definition) => definition.durability === "ephemeral"));
@@ -14,13 +14,3 @@ export declare const Boundary: Schema.Union<readonly [Schema.Struct<{
14
14
  };
15
15
  }>]>;
16
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;
@@ -5,7 +5,3 @@ export const Boundary = Schema.Union([
5
5
  Schema.Struct({ type: Schema.Literal("before"), messageID: SessionMessage.ID }),
6
6
  Schema.Struct({ type: Schema.Literal("through"), messageID: SessionMessage.ID }),
7
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" });