@kilocode/schema 0.0.0-stage → 0.0.0-v2-9

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 (210) hide show
  1. package/dist/agent.d.ts +179 -0
  2. package/dist/agent.js +45 -0
  3. package/dist/command.d.ts +76 -0
  4. package/dist/command.js +13 -0
  5. package/dist/config/agent.d.ts +42 -0
  6. package/dist/config/agent.js +21 -0
  7. package/dist/config/command.d.ts +28 -0
  8. package/dist/config/command.js +13 -0
  9. package/dist/config/compaction.d.ts +14 -0
  10. package/dist/config/compaction.js +13 -0
  11. package/dist/config/experimental.d.ts +20 -0
  12. package/dist/config/experimental.js +27 -0
  13. package/dist/config/formatter.d.ts +11 -0
  14. package/dist/config/formatter.js +11 -0
  15. package/dist/config/lsp.d.ts +20 -0
  16. package/dist/config/lsp.js +16 -0
  17. package/dist/config/mcp.d.ts +20 -0
  18. package/dist/config/mcp.js +15 -0
  19. package/dist/config/media.d.ts +15 -0
  20. package/dist/config/media.js +14 -0
  21. package/dist/config/model.d.ts +18 -0
  22. package/dist/config/model.js +28 -0
  23. package/dist/config/plugin.d.ts +11 -0
  24. package/dist/config/plugin.js +10 -0
  25. package/dist/config/policy.d.ts +10 -0
  26. package/dist/config/policy.js +8 -0
  27. package/dist/config/provider.d.ts +392 -0
  28. package/dist/config/provider.js +109 -0
  29. package/dist/config/reference.d.ts +21 -0
  30. package/dist/config/reference.js +18 -0
  31. package/dist/config/shell.d.ts +9 -0
  32. package/dist/config/shell.js +7 -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 +182 -0
  44. package/dist/config.js +135 -0
  45. package/dist/connection.d.ts +79 -0
  46. package/dist/connection.js +25 -0
  47. package/dist/credential-legacy.d.ts +54 -0
  48. package/dist/credential-legacy.js +19 -0
  49. package/dist/credential.d.ts +255 -0
  50. package/dist/credential.js +56 -0
  51. package/dist/durable-event-manifest.d.ts +3 -0
  52. package/dist/durable-event-manifest.js +5 -0
  53. package/dist/event-log.d.ts +14 -0
  54. package/dist/event-log.js +17 -0
  55. package/dist/event-manifest.d.ts +12865 -0
  56. package/dist/event-manifest.js +48 -0
  57. package/dist/event.d.ts +142 -0
  58. package/dist/event.js +110 -0
  59. package/dist/file-diff.d.ts +21 -0
  60. package/dist/file-diff.js +18 -0
  61. package/dist/filesystem-v1.d.ts +1 -0
  62. package/dist/filesystem-v1.js +1 -0
  63. package/dist/filesystem.d.ts +123 -0
  64. package/dist/filesystem.js +38 -0
  65. package/dist/form.d.ts +1438 -0
  66. package/dist/form.js +128 -0
  67. package/dist/identifier.d.ts +4 -0
  68. package/dist/identifier.js +25 -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 +2410 -0
  80. package/dist/integration.js +91 -0
  81. package/dist/kilocode/gateway.d.ts +975 -0
  82. package/dist/kilocode/gateway.js +328 -0
  83. package/dist/kilocode/handshake.d.ts +36 -0
  84. package/dist/kilocode/handshake.js +29 -0
  85. package/dist/kilocode/marketplace.d.ts +593 -0
  86. package/dist/kilocode/marketplace.js +122 -0
  87. package/dist/kilocode/provider-usage.d.ts +371 -0
  88. package/dist/kilocode/provider-usage.js +60 -0
  89. package/dist/legacy-event.d.ts +1 -0
  90. package/dist/legacy-event.js +1 -0
  91. package/dist/llm.d.ts +4 -0
  92. package/dist/llm.js +3 -0
  93. package/dist/location-event.d.ts +68 -0
  94. package/dist/location-event.js +5 -0
  95. package/dist/location.d.ts +56 -0
  96. package/dist/location.js +28 -0
  97. package/dist/lsp-event.d.ts +67 -0
  98. package/dist/lsp-event.js +4 -0
  99. package/dist/mcp-event.d.ts +222 -0
  100. package/dist/mcp-event.js +24 -0
  101. package/dist/mcp.d.ts +145 -0
  102. package/dist/mcp.js +120 -0
  103. package/dist/model-compatibility.d.ts +38 -0
  104. package/dist/model-compatibility.js +28 -0
  105. package/dist/model.d.ts +406 -0
  106. package/dist/model.js +115 -0
  107. package/dist/models-dev.d.ts +69 -0
  108. package/dist/models-dev.js +7 -0
  109. package/dist/money.d.ts +10 -0
  110. package/dist/money.js +5 -0
  111. package/dist/permission-saved.d.ts +22 -0
  112. package/dist/permission-saved.js +16 -0
  113. package/dist/permission-v1.d.ts +1 -0
  114. package/dist/permission-v1.js +1 -0
  115. package/dist/permission.d.ts +302 -0
  116. package/dist/permission.js +46 -0
  117. package/dist/persistent-pty.d.ts +539 -0
  118. package/dist/persistent-pty.js +55 -0
  119. package/dist/plugin.d.ts +132 -0
  120. package/dist/plugin.js +37 -0
  121. package/dist/project-id.d.ts +5 -0
  122. package/dist/project-id.js +3 -0
  123. package/dist/project.d.ts +270 -0
  124. package/dist/project.js +47 -0
  125. package/dist/prompt-input.d.ts +110 -0
  126. package/dist/prompt-input.js +21 -0
  127. package/dist/prompt.d.ts +297 -0
  128. package/dist/prompt.js +61 -0
  129. package/dist/provider.d.ts +275 -0
  130. package/dist/provider.js +66 -0
  131. package/dist/pty-ticket.d.ts +8 -0
  132. package/dist/pty-ticket.js +7 -0
  133. package/dist/pty.d.ts +462 -0
  134. package/dist/pty.js +43 -0
  135. package/dist/question.d.ts +15 -0
  136. package/dist/question.js +15 -0
  137. package/dist/reference.d.ts +120 -0
  138. package/dist/reference.js +30 -0
  139. package/dist/rpc.d.ts +111 -0
  140. package/dist/rpc.js +9 -0
  141. package/dist/schema.d.ts +11 -0
  142. package/dist/schema.js +17 -0
  143. package/dist/server-event.d.ts +132 -0
  144. package/dist/server-event.js +5 -0
  145. package/dist/session-error.d.ts +16 -0
  146. package/dist/session-error.js +11 -0
  147. package/dist/session-event.d.ts +21417 -0
  148. package/dist/session-event.js +565 -0
  149. package/dist/session-fork.d.ts +16 -0
  150. package/dist/session-fork.js +7 -0
  151. package/dist/session-id.d.ts +5 -0
  152. package/dist/session-id.js +6 -0
  153. package/dist/session-inbox.d.ts +756 -0
  154. package/dist/session-inbox.js +47 -0
  155. package/dist/session-legacy.d.ts +7 -0
  156. package/dist/session-legacy.js +118 -0
  157. package/dist/session-message.d.ts +2049 -0
  158. package/dist/session-message.js +234 -0
  159. package/dist/session-metadata.d.ts +8 -0
  160. package/dist/session-metadata.js +9 -0
  161. package/dist/session-revert.d.ts +896 -0
  162. package/dist/session-revert.js +63 -0
  163. package/dist/session-stats.d.ts +186 -0
  164. package/dist/session-stats.js +53 -0
  165. package/dist/session-status-event.d.ts +291 -0
  166. package/dist/session-status-event.js +45 -0
  167. package/dist/session-transfer.d.ts +910 -0
  168. package/dist/session-transfer.js +8 -0
  169. package/dist/session-v1.d.ts +1 -0
  170. package/dist/session-v1.js +1 -0
  171. package/dist/session.d.ts +320 -0
  172. package/dist/session.js +116 -0
  173. package/dist/shell.d.ts +386 -0
  174. package/dist/shell.js +61 -0
  175. package/dist/skill.d.ts +130 -0
  176. package/dist/skill.js +47 -0
  177. package/dist/snapshot.d.ts +4 -0
  178. package/dist/snapshot.js +3 -0
  179. package/dist/token-usage.d.ts +14 -0
  180. package/dist/token-usage.js +14 -0
  181. package/dist/tool.d.ts +78 -0
  182. package/dist/tool.js +22 -0
  183. package/dist/tui-event.d.ts +307 -0
  184. package/dist/tui-event.js +52 -0
  185. package/dist/v1/filesystem.d.ts +78 -0
  186. package/dist/v1/filesystem.js +8 -0
  187. package/dist/v1/legacy-event.d.ts +104 -0
  188. package/dist/v1/legacy-event.js +15 -0
  189. package/dist/v1/permission.d.ts +306 -0
  190. package/dist/v1/permission.js +41 -0
  191. package/dist/v1/session.d.ts +6977 -0
  192. package/dist/v1/session.js +531 -0
  193. package/dist/vcs-event.d.ts +76 -0
  194. package/dist/vcs-event.js +11 -0
  195. package/dist/vcs.d.ts +36 -0
  196. package/dist/vcs.js +24 -0
  197. package/dist/websearch.d.ts +108 -0
  198. package/dist/websearch.js +33 -0
  199. package/dist/workspace-event.d.ts +247 -0
  200. package/dist/workspace-event.js +25 -0
  201. package/dist/workspace-id.d.ts +6 -0
  202. package/dist/workspace-id.js +14 -0
  203. package/dist/workspace.d.ts +15 -0
  204. package/dist/workspace.js +14 -0
  205. package/dist/worktree-event.d.ts +153 -0
  206. package/dist/worktree-event.js +18 -0
  207. package/dist/worktree.d.ts +282 -0
  208. package/dist/worktree.js +83 -0
  209. package/package.json +42 -4
  210. package/README.md +0 -3
@@ -0,0 +1,109 @@
1
+ export * as ConfigProvider from "./provider.js";
2
+ import { Schema } from "effect";
3
+ import { Money } from "../money.js";
4
+ import { Capabilities, Compatibility, Family, ID, VariantID } from "../model.js";
5
+ import { ProviderCompatibility } from "../model-compatibility.js";
6
+ import { Provider } from "../provider.js";
7
+ import { optional } from "../schema.js";
8
+ export const Settings = Schema.StructWithRest(Schema.Struct({
9
+ timeout: Schema.Union([Schema.Finite, Schema.Literal(false)]).pipe(optional),
10
+ headerTimeout: Schema.Union([Schema.Finite, Schema.Literal(false)]).pipe(optional),
11
+ chunkTimeout: Schema.Union([Schema.Finite, Schema.Literal(false)]).pipe(optional),
12
+ compaction: Provider.Compaction.pipe(optional),
13
+ transport: Provider.Transport.pipe(optional),
14
+ encoding: Provider.Encoding.pipe(optional),
15
+ }), [Schema.Record(Schema.String, Schema.UndefinedOr(Schema.Json))]).annotate({ identifier: "Config.Provider.Settings" });
16
+ export const ModelSettings = Schema.StructWithRest(Schema.Struct({
17
+ compaction: Provider.Compaction.pipe(optional),
18
+ encoding: Provider.Encoding.pipe(optional),
19
+ }), [Schema.Record(Schema.String, Schema.UndefinedOr(Schema.Json))]).annotate({ identifier: "Config.Model.Settings" });
20
+ const JsonRecord = Schema.Record(Schema.String, Schema.Json);
21
+ export const Overlays = {
22
+ settings: Settings.pipe(optional),
23
+ headers: Schema.Record(Schema.String, Schema.String).pipe(optional),
24
+ body: JsonRecord.pipe(optional),
25
+ };
26
+ const ModelOverlays = {
27
+ settings: ModelSettings.pipe(optional),
28
+ headers: Schema.Record(Schema.String, Schema.String).pipe(optional),
29
+ body: JsonRecord.pipe(optional),
30
+ };
31
+ export class Request extends Schema.Class("Config.Provider.Request")({
32
+ headers: Overlays.headers,
33
+ body: Overlays.body,
34
+ }) {
35
+ }
36
+ class Cache extends Schema.Class("Config.Model.Cost.Cache")({
37
+ read: Money.USDPerMillionTokens.pipe(optional),
38
+ write: Money.USDPerMillionTokens.pipe(optional),
39
+ }) {
40
+ }
41
+ class Cost extends Schema.Class("Config.Model.Cost")({
42
+ tier: Schema.Struct({
43
+ type: Schema.Literal("context"),
44
+ size: Schema.Int,
45
+ }).pipe(optional),
46
+ input: Money.USDPerMillionTokens,
47
+ output: Money.USDPerMillionTokens,
48
+ cache: Cache.pipe(optional),
49
+ }) {
50
+ }
51
+ class Limit extends Schema.Class("Config.Model.Limit")({
52
+ context: Schema.Int.pipe(optional),
53
+ input: Schema.Int.pipe(optional),
54
+ output: Schema.Int.pipe(optional),
55
+ }) {
56
+ }
57
+ // models.dev v2's `capabilities.reasoning`. OpenCode builds the model's variants from it; no control means none.
58
+ export const Reasoning = Schema.Union([
59
+ Schema.Struct({ supported: Schema.Literal(false) }),
60
+ Schema.Struct({
61
+ supported: Schema.Literal(true),
62
+ toggle: Schema.Boolean.pipe(optional),
63
+ effort: Schema.String.pipe(Schema.Array, optional),
64
+ budget: Schema.Struct({
65
+ min: Schema.Int.pipe(optional),
66
+ max: Schema.Int.pipe(optional),
67
+ }).pipe(optional),
68
+ }),
69
+ ]).annotate({ identifier: "Config.Model.Reasoning" });
70
+ class Model extends Schema.Class("Config.Model")({
71
+ modelID: ID.pipe(optional),
72
+ family: Family.pipe(optional),
73
+ name: Schema.String.pipe(optional),
74
+ releaseDate: Schema.String.check(Schema.isPattern(/^\d{4}-\d{2}(-\d{2})?$/u))
75
+ .annotate({ description: "Release date as YYYY-MM-DD or YYYY-MM" })
76
+ .pipe(optional),
77
+ compatibility: Compatibility.pipe(optional),
78
+ package: Schema.String.pipe(optional),
79
+ ...ModelOverlays,
80
+ // Partial: unset fields fall back to the base model's capabilities, then the defaults.
81
+ capabilities: Capabilities.mapFields((fields) => ({
82
+ tools: optional(fields.tools),
83
+ input: optional(fields.input),
84
+ output: optional(fields.output),
85
+ temperature: fields.temperature,
86
+ reasoning: Reasoning.pipe(optional),
87
+ }))
88
+ .annotate({ identifier: "Config.Model.Capabilities" })
89
+ .pipe(optional),
90
+ variants: Schema.Struct({
91
+ id: VariantID,
92
+ ...ModelOverlays,
93
+ }).pipe(Schema.Array, optional),
94
+ cost: Schema.Union([Cost, Cost.pipe(Schema.Array)]).pipe(optional),
95
+ disabled: Schema.Boolean.pipe(optional),
96
+ limit: Limit.pipe(optional),
97
+ }) {
98
+ }
99
+ export class Info extends Schema.Class("Config.Provider")({
100
+ canonical: Provider.ID.pipe(optional),
101
+ name: Schema.String.pipe(optional),
102
+ env: Schema.String.pipe(Schema.Array, optional),
103
+ package: Schema.String.pipe(optional),
104
+ // Defaults for every model of this provider; model compatibility overrides individual fields.
105
+ compatibility: ProviderCompatibility.pipe(optional),
106
+ ...Overlays,
107
+ models: Schema.Record(Schema.String, Model).pipe(optional),
108
+ }) {
109
+ }
@@ -0,0 +1,21 @@
1
+ export * as ConfigReference from "./reference.js";
2
+ import { Schema } from "effect";
3
+ declare const Git_base: Schema.Class<Git, Schema.Struct<{
4
+ readonly repository: Schema.String;
5
+ readonly branch: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
6
+ readonly description: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
7
+ readonly hidden: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
8
+ }>, {}>;
9
+ export declare class Git extends Git_base {
10
+ }
11
+ declare const Local_base: Schema.Class<Local, Schema.Struct<{
12
+ readonly path: Schema.String;
13
+ readonly description: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
14
+ readonly hidden: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
15
+ }>, {}>;
16
+ export declare class Local extends Local_base {
17
+ }
18
+ export declare const Entry: Schema.Union<readonly [Schema.String, typeof Git, typeof Local]>;
19
+ export type Entry = typeof Entry.Type;
20
+ export declare const Info: Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, typeof Git, typeof Local]>>;
21
+ export type Info = typeof Info.Type;
@@ -0,0 +1,18 @@
1
+ export * as ConfigReference from "./reference.js";
2
+ import { Schema } from "effect";
3
+ import { optional } from "../schema.js";
4
+ export class Git extends Schema.Class("Config.Reference.Git")({
5
+ repository: Schema.String,
6
+ branch: Schema.String.pipe(optional),
7
+ description: Schema.String.pipe(optional),
8
+ hidden: Schema.Boolean.pipe(optional),
9
+ }) {
10
+ }
11
+ export class Local extends Schema.Class("Config.Reference.Local")({
12
+ path: Schema.String,
13
+ description: Schema.String.pipe(optional),
14
+ hidden: Schema.Boolean.pipe(optional),
15
+ }) {
16
+ }
17
+ export const Entry = Schema.Union([Schema.String, Git, Local]);
18
+ export const Info = Schema.Record(Schema.String, Entry);
@@ -0,0 +1,9 @@
1
+ export * as ConfigShell from "./shell.js";
2
+ import { Schema } from "effect";
3
+ export declare const Option: Schema.Struct<{
4
+ readonly path: Schema.String;
5
+ readonly name: Schema.String;
6
+ readonly acceptable: Schema.Boolean;
7
+ }>;
8
+ export interface Option extends Schema.Schema.Type<typeof Option> {
9
+ }
@@ -0,0 +1,7 @@
1
+ export * as ConfigShell from "./shell.js";
2
+ import { Schema } from "effect";
3
+ export const Option = Schema.Struct({
4
+ path: Schema.String,
5
+ name: Schema.String,
6
+ acceptable: Schema.Boolean,
7
+ }).annotate({ identifier: "ConfigShell.Option" });
@@ -0,0 +1,8 @@
1
+ export * as ConfigToolOutput from "./tool-output.js";
2
+ import { Schema } from "effect";
3
+ declare const Info_base: Schema.Class<Info, Schema.Struct<{
4
+ readonly max_lines: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
5
+ readonly max_bytes: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Int>>, Schema.optionalKey<Schema.Int>, never, never>;
6
+ }>, {}>;
7
+ export declare class Info extends Info_base {
8
+ }
@@ -0,0 +1,8 @@
1
+ export * as ConfigToolOutput from "./tool-output.js";
2
+ import { Schema } from "effect";
3
+ import { optional, PositiveInt } from "../schema.js";
4
+ export class Info extends Schema.Class("Config.ToolOutput")({
5
+ max_lines: PositiveInt.pipe(optional),
6
+ max_bytes: PositiveInt.pipe(optional),
7
+ }) {
8
+ }
@@ -0,0 +1,10 @@
1
+ export * as ConfigWarming from "./warming.js";
2
+ import { Schema } from "effect";
3
+ declare const Info_base: Schema.Class<Info, Schema.Struct<{
4
+ readonly prompt: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
5
+ readonly interval: Schema.decodeTo<Schema.optional<Schema.toType<Schema.DurationFromString>>, Schema.optionalKey<Schema.DurationFromString>, never, never>;
6
+ readonly duration: Schema.decodeTo<Schema.optional<Schema.toType<Schema.DurationFromString>>, Schema.optionalKey<Schema.DurationFromString>, never, never>;
7
+ }>, {}>;
8
+ export declare class Info extends Info_base {
9
+ }
10
+ export declare const Warming: Schema.Union<readonly [Schema.Boolean, typeof Info]>;
@@ -0,0 +1,16 @@
1
+ export * as ConfigWarming from "./warming.js";
2
+ import { Schema } from "effect";
3
+ import { optional } from "../schema.js";
4
+ export class Info extends Schema.Class("Config.Warming")({
5
+ prompt: Schema.String.pipe(optional).annotate({
6
+ description: "Prompt sent for keep-alive requests",
7
+ }),
8
+ interval: Schema.DurationFromString.pipe(optional).annotate({
9
+ description: 'Idle time between keep-alive requests (default: "4 minutes")',
10
+ }),
11
+ duration: Schema.DurationFromString.pipe(optional).annotate({
12
+ description: 'Time after the last active request to keep a session warm (default: "30 minutes")',
13
+ }),
14
+ }) {
15
+ }
16
+ export const Warming = Schema.Union([Schema.Boolean, Info]);
@@ -0,0 +1,7 @@
1
+ export * as ConfigWatcher from "./watcher.js";
2
+ import { Schema } from "effect";
3
+ declare const Info_base: Schema.Class<Info, Schema.Struct<{
4
+ readonly ignore: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.String>>>, Schema.optionalKey<Schema.$Array<Schema.String>>, never, never>;
5
+ }>, {}>;
6
+ export declare class Info extends Info_base {
7
+ }
@@ -0,0 +1,7 @@
1
+ export * as ConfigWatcher from "./watcher.js";
2
+ import { Schema } from "effect";
3
+ import { optional } from "../schema.js";
4
+ export class Info extends Schema.Class("Config.Watcher")({
5
+ ignore: Schema.String.pipe(Schema.Array, optional),
6
+ }) {
7
+ }
@@ -0,0 +1,9 @@
1
+ export * as ConfigWebSearch from "./websearch.js";
2
+ import { Schema } from "effect";
3
+ declare const Info_base: Schema.Class<Info, Schema.Struct<{
4
+ readonly provider: Schema.Union<readonly [Schema.Literal<"random">, Schema.brand<Schema.String, "WebSearch.ID">]>;
5
+ }>, {}>;
6
+ export declare class Info extends Info_base {
7
+ }
8
+ export declare const Selection: Schema.Union<readonly [Schema.Literal<false>, typeof Info]>;
9
+ export type Selection = typeof Selection.Type;
@@ -0,0 +1,13 @@
1
+ export * as ConfigWebSearch from "./websearch.js";
2
+ import { Schema } from "effect";
3
+ import { WebSearch } from "../websearch.js";
4
+ export class Info extends Schema.Class("ConfigWebSearch.Info")({
5
+ provider: Schema.Union([
6
+ Schema.Literal("random").annotate({
7
+ description: "Reuse a randomly selected provider until it is rate limited, then switch to another available provider.",
8
+ }),
9
+ WebSearch.ID,
10
+ ]),
11
+ }) {
12
+ }
13
+ export const Selection = Schema.Union([Schema.Literal(false), Info]);
@@ -0,0 +1,7 @@
1
+ export * as ConfigWorktree from "./worktree.js";
2
+ import { Schema } from "effect";
3
+ export declare const Info: Schema.Struct<{
4
+ readonly directory: Schema.Trim;
5
+ }>;
6
+ export interface Info extends Schema.Schema.Type<typeof Info> {
7
+ }
@@ -0,0 +1,7 @@
1
+ export * as ConfigWorktree from "./worktree.js";
2
+ import { Schema } from "effect";
3
+ export const Info = Schema.Struct({
4
+ directory: Schema.Trim.pipe(Schema.check(Schema.isNonEmpty())).annotate({
5
+ description: "Parent directory for new worktrees, relative to the project's primary checkout when not absolute",
6
+ }),
7
+ }).annotate({ identifier: "Config.Worktree" });
@@ -0,0 +1,182 @@
1
+ export * as Config from "./config.js";
2
+ import { Schema } from "effect";
3
+ import { ConfigAgent } from "./config/agent.js";
4
+ import { ConfigMedia } from "./config/media.js";
5
+ import { ConfigCompaction } from "./config/compaction.js";
6
+ import { ConfigCommand } from "./config/command.js";
7
+ import { ConfigExperimental } from "./config/experimental.js";
8
+ import { ConfigFormatter } from "./config/formatter.js";
9
+ import { ConfigLSP } from "./config/lsp.js";
10
+ import { ConfigMCP } from "./config/mcp.js";
11
+ import { ConfigPlugin } from "./config/plugin.js";
12
+ import { ConfigProvider } from "./config/provider.js";
13
+ import { ConfigReference } from "./config/reference.js";
14
+ import { ConfigWebSearch } from "./config/websearch.js";
15
+ import { ConfigToolOutput } from "./config/tool-output.js";
16
+ import { ConfigWatcher } from "./config/watcher.js";
17
+ import { ConfigWarming } from "./config/warming.js";
18
+ declare const Info_base: Schema.Class<Info, Schema.Struct<{
19
+ readonly $schema: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
20
+ readonly shell: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
21
+ readonly model: Schema.decodeTo<Schema.optional<Schema.toType<Schema.decodeTo<Schema.Struct<{
22
+ readonly providerID: Schema.brand<Schema.String, "Provider.ID">;
23
+ readonly model: Schema.brand<Schema.String, "Model.ID">;
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
+ }>, Schema.Union<readonly [Schema.String, Schema.Struct<{
26
+ readonly providerID: Schema.brand<Schema.String, "Provider.ID">;
27
+ readonly model: Schema.brand<Schema.String, "Model.ID">;
28
+ readonly variant: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Model.VariantID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Model.VariantID">>, never, never>;
29
+ }>]>, never, never>>>, Schema.optionalKey<Schema.decodeTo<Schema.Struct<{
30
+ readonly providerID: Schema.brand<Schema.String, "Provider.ID">;
31
+ readonly model: Schema.brand<Schema.String, "Model.ID">;
32
+ readonly variant: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Model.VariantID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Model.VariantID">>, never, never>;
33
+ }>, Schema.Union<readonly [Schema.String, Schema.Struct<{
34
+ readonly providerID: Schema.brand<Schema.String, "Provider.ID">;
35
+ readonly model: Schema.brand<Schema.String, "Model.ID">;
36
+ readonly variant: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Model.VariantID">>>, Schema.optionalKey<Schema.brand<Schema.String, "Model.VariantID">>, never, never>;
37
+ }>]>, never, never>>, never, never>;
38
+ readonly default_agent: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
39
+ readonly update: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Literals<readonly ["disable", "notify", "auto"]>>>, Schema.optionalKey<Schema.Literals<readonly ["disable", "notify", "auto"]>>, never, never>;
40
+ readonly share: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Literals<readonly ["manual", "auto", "disabled"]>>>, Schema.optionalKey<Schema.Literals<readonly ["manual", "auto", "disabled"]>>, never, never>;
41
+ readonly enterprise: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
42
+ readonly url: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
43
+ }>>>, Schema.optionalKey<Schema.Struct<{
44
+ readonly url: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
45
+ }>>, never, never>;
46
+ readonly username: Schema.decodeTo<Schema.optional<Schema.toType<Schema.String>>, Schema.optionalKey<Schema.String>, never, never>;
47
+ readonly permissions: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
48
+ readonly action: Schema.String;
49
+ readonly resource: Schema.String;
50
+ readonly effect: Schema.Literals<readonly ["allow", "deny", "ask"]>;
51
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
52
+ readonly action: Schema.String;
53
+ readonly resource: Schema.String;
54
+ readonly effect: Schema.Literals<readonly ["allow", "deny", "ask"]>;
55
+ }>>>, never, never>;
56
+ readonly policies: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Struct<{
57
+ readonly action: Schema.Literals<readonly ["provider.use", "tool.use", "integration.use"]>;
58
+ readonly resource: Schema.String;
59
+ readonly effect: Schema.Literals<readonly ["allow", "deny"]>;
60
+ }>>>>, Schema.optionalKey<Schema.$Array<Schema.Struct<{
61
+ readonly action: Schema.Literals<readonly ["provider.use", "tool.use", "integration.use"]>;
62
+ readonly resource: Schema.String;
63
+ readonly effect: Schema.Literals<readonly ["allow", "deny"]>;
64
+ }>>>, never, never>;
65
+ readonly agents: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, typeof ConfigAgent.Info>>>, Schema.optionalKey<Schema.$Record<Schema.String, typeof ConfigAgent.Info>>, never, never>;
66
+ readonly snapshots: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Boolean>>, Schema.optionalKey<Schema.Boolean>, never, never>;
67
+ readonly watcher: Schema.decodeTo<Schema.optional<Schema.toType<typeof ConfigWatcher.Info>>, Schema.optionalKey<typeof ConfigWatcher.Info>, never, never>;
68
+ readonly formatter: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Union<readonly [Schema.Boolean, Schema.$Record<Schema.String, typeof ConfigFormatter.Entry>]>>>, Schema.optionalKey<Schema.Union<readonly [Schema.Boolean, Schema.$Record<Schema.String, typeof ConfigFormatter.Entry>]>>, never, never>;
69
+ readonly lsp: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Union<readonly [Schema.Boolean, Schema.$Record<Schema.String, Schema.Union<readonly [Schema.Struct<{
70
+ readonly disabled: Schema.Literal<true>;
71
+ }>, typeof ConfigLSP.Server]>>]>>>, Schema.optionalKey<Schema.Union<readonly [Schema.Boolean, Schema.$Record<Schema.String, Schema.Union<readonly [Schema.Struct<{
72
+ readonly disabled: Schema.Literal<true>;
73
+ }>, typeof ConfigLSP.Server]>>]>>, never, never>;
74
+ readonly media: Schema.decodeTo<Schema.optional<Schema.toType<typeof ConfigMedia.Info>>, Schema.optionalKey<typeof ConfigMedia.Info>, never, never>;
75
+ readonly tool_output: Schema.decodeTo<Schema.optional<Schema.toType<typeof ConfigToolOutput.Info>>, Schema.optionalKey<typeof ConfigToolOutput.Info>, never, never>;
76
+ readonly mcp: Schema.decodeTo<Schema.optional<Schema.toType<typeof ConfigMCP.Info>>, Schema.optionalKey<typeof ConfigMCP.Info>, never, never>;
77
+ readonly compaction: Schema.decodeTo<Schema.optional<Schema.toType<typeof ConfigCompaction.Info>>, Schema.optionalKey<typeof ConfigCompaction.Info>, never, never>;
78
+ readonly skills: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.String>>>, Schema.optionalKey<Schema.$Array<Schema.String>>, never, never>;
79
+ readonly commands: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, typeof ConfigCommand.Info>>>, Schema.optionalKey<Schema.$Record<Schema.String, typeof ConfigCommand.Info>>, never, never>;
80
+ readonly instructions: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.String>>>, Schema.optionalKey<Schema.$Array<Schema.String>>, never, never>;
81
+ readonly references: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, typeof ConfigReference.Git, typeof ConfigReference.Local]>>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Union<readonly [Schema.String, typeof ConfigReference.Git, typeof ConfigReference.Local]>>>, never, never>;
82
+ readonly websearch: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Union<readonly [Schema.Literal<false>, typeof ConfigWebSearch.Info]>>>, Schema.optionalKey<Schema.Union<readonly [Schema.Literal<false>, typeof ConfigWebSearch.Info]>>, never, never>;
83
+ readonly plugins: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Array<Schema.Union<readonly [Schema.String, typeof ConfigPlugin.Entry]>>>>, Schema.optionalKey<Schema.$Array<Schema.Union<readonly [Schema.String, typeof ConfigPlugin.Entry]>>>, never, never>;
84
+ readonly worktree: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
85
+ readonly directory: Schema.Trim;
86
+ }>>>, Schema.optionalKey<Schema.Struct<{
87
+ readonly directory: Schema.Trim;
88
+ }>>, never, never>;
89
+ readonly warming: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Union<readonly [Schema.Boolean, typeof ConfigWarming.Info]>>>, Schema.optionalKey<Schema.Union<readonly [Schema.Boolean, typeof ConfigWarming.Info]>>, never, never>;
90
+ readonly providers: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, typeof ConfigProvider.Info>>>, Schema.optionalKey<Schema.$Record<Schema.String, typeof ConfigProvider.Info>>, never, never>;
91
+ readonly experimental: Schema.decodeTo<Schema.optional<Schema.toType<typeof ConfigExperimental.Info>>, Schema.optionalKey<typeof ConfigExperimental.Info>, never, never>;
92
+ }>, {}>;
93
+ export declare class Info extends Info_base {
94
+ }
95
+ export declare const Patch: Schema.Struct<{
96
+ readonly shell: Schema.NullOr<Schema.String>;
97
+ }>;
98
+ export interface Patch extends Schema.Schema.Type<typeof Patch> {
99
+ }
100
+ declare const Document_base: Schema.Class<Document, Schema.Struct<{
101
+ readonly type: Schema.Literal<"document">;
102
+ readonly path: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "AbsolutePath">>>, Schema.optionalKey<Schema.brand<Schema.String, "AbsolutePath">>, never, never>;
103
+ readonly info: typeof Info;
104
+ }>, {}>;
105
+ export declare class Document extends Document_base {
106
+ }
107
+ declare const Directory_base: Schema.Class<Directory, Schema.Struct<{
108
+ readonly type: Schema.Literal<"directory">;
109
+ readonly path: Schema.brand<Schema.String, "AbsolutePath">;
110
+ }>, {}>;
111
+ export declare class Directory extends Directory_base {
112
+ }
113
+ export declare const Entry: Schema.Union<readonly [typeof Document, typeof Directory]>;
114
+ export type Entry = typeof Entry.Type;
115
+ export declare const Event: {
116
+ Updated: Schema.Struct<{
117
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
118
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
119
+ };
120
+ readonly created: Schema.Finite;
121
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
122
+ readonly type: Schema.Literal<"config.updated">;
123
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
124
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
125
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
126
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
127
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
128
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
129
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
130
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
131
+ }>, never, never>;
132
+ }>>>, Schema.optionalKey<Schema.Struct<{
133
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
134
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<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
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
138
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
139
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
140
+ }>, never, never>;
141
+ }>>, never, never>;
142
+ readonly data: Schema.Struct<{}>;
143
+ }> & {
144
+ type: "config.updated";
145
+ durability: "ephemeral";
146
+ durable: undefined;
147
+ data: Schema.Struct<{}>;
148
+ };
149
+ Definitions: readonly [Schema.Struct<{
150
+ readonly id: Schema.brand<Schema.String, "Event.ID"> & {
151
+ create: () => string & import("effect/Brand").Brand<"Event.ID">;
152
+ };
153
+ readonly created: Schema.Finite;
154
+ readonly metadata: Schema.decodeTo<Schema.optional<Schema.toType<Schema.$Record<Schema.String, Schema.Unknown>>>, Schema.optionalKey<Schema.$Record<Schema.String, Schema.Unknown>>, never, never>;
155
+ readonly type: Schema.Literal<"config.updated">;
156
+ readonly location: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Struct<{
157
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
158
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
159
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
160
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
161
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
162
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
163
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
164
+ }>, never, never>;
165
+ }>>>, Schema.optionalKey<Schema.Struct<{
166
+ readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
167
+ readonly workspaceID: Schema.decodeTo<Schema.optional<Schema.toType<Schema.brand<Schema.String, "Workspace.ID"> & {
168
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
169
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
170
+ }>>, Schema.optionalKey<Schema.brand<Schema.String, "Workspace.ID"> & {
171
+ ascending: (id?: string) => string & import("effect/Brand").Brand<"Workspace.ID">;
172
+ create: () => string & import("effect/Brand").Brand<"Workspace.ID">;
173
+ }>, never, never>;
174
+ }>>, never, never>;
175
+ readonly data: Schema.Struct<{}>;
176
+ }> & {
177
+ type: "config.updated";
178
+ durability: "ephemeral";
179
+ durable: undefined;
180
+ data: Schema.Struct<{}>;
181
+ }];
182
+ };
package/dist/config.js ADDED
@@ -0,0 +1,135 @@
1
+ export * as Config from "./config.js";
2
+ import { Schema } from "effect";
3
+ import { ephemeral, inventory } from "./event.js";
4
+ import { Permission } from "./permission.js";
5
+ import { AbsolutePath, optional } from "./schema.js";
6
+ import { ConfigAgent } from "./config/agent.js";
7
+ import { ConfigMedia } from "./config/media.js";
8
+ import { ConfigCompaction } from "./config/compaction.js";
9
+ import { ConfigCommand } from "./config/command.js";
10
+ import { ConfigExperimental } from "./config/experimental.js";
11
+ import { ConfigFormatter } from "./config/formatter.js";
12
+ import { ConfigLSP } from "./config/lsp.js";
13
+ import { ConfigMCP } from "./config/mcp.js";
14
+ import { ConfigModel } from "./config/model.js";
15
+ import { ConfigPlugin } from "./config/plugin.js";
16
+ import { ConfigPolicy } from "./config/policy.js";
17
+ import { ConfigProvider } from "./config/provider.js";
18
+ import { ConfigReference } from "./config/reference.js";
19
+ import { ConfigWebSearch } from "./config/websearch.js";
20
+ import { ConfigToolOutput } from "./config/tool-output.js";
21
+ import { ConfigWatcher } from "./config/watcher.js";
22
+ import { ConfigWarming } from "./config/warming.js";
23
+ import { ConfigWorktree } from "./config/worktree.js";
24
+ export class Info extends Schema.Class("Config.Info")({
25
+ $schema: optional(Schema.String).annotate({
26
+ description: "JSON schema reference for configuration validation",
27
+ }),
28
+ shell: Schema.String.pipe(optional).annotate({
29
+ description: "Default shell to use for terminal and shell tool execution",
30
+ }),
31
+ model: ConfigModel.Selection.pipe(optional).annotate({
32
+ description: "Default model to use when no session or agent model is selected",
33
+ }),
34
+ default_agent: Schema.String.pipe(optional).annotate({
35
+ description: "Default primary agent to use when no session agent is selected",
36
+ }),
37
+ update: Schema.Literals(["disable", "notify", "auto"]).pipe(optional).annotate({
38
+ description: "Disable updates, notify when one is available, or install updates automatically",
39
+ }),
40
+ share: Schema.Literals(["manual", "auto", "disabled"]).pipe(optional).annotate({
41
+ description: "Control whether sessions may be shared manually, automatically, or not at all",
42
+ }),
43
+ enterprise: Schema.Struct({
44
+ url: Schema.String.pipe(optional),
45
+ })
46
+ .pipe(optional)
47
+ .annotate({
48
+ description: "Enterprise sharing service configuration",
49
+ }),
50
+ username: Schema.String.pipe(optional).annotate({
51
+ description: "Username displayed in conversations and used for telemetry identity",
52
+ }),
53
+ permissions: Permission.Ruleset.pipe(optional).annotate({
54
+ description: "Ordered tool permission rules applied to agent tool use",
55
+ }),
56
+ policies: ConfigPolicy.Info.pipe(Schema.Array, optional).annotate({
57
+ description: "Ordered policies controlling access to providers, tools, and integrations",
58
+ }),
59
+ agents: Schema.Record(Schema.String, ConfigAgent.Info).pipe(optional).annotate({
60
+ description: "Named built-in agent overrides and custom agent definitions",
61
+ }),
62
+ snapshots: Schema.Boolean.pipe(optional).annotate({
63
+ description: "Enable snapshots used for undo and revert behavior",
64
+ }),
65
+ watcher: ConfigWatcher.Info.pipe(optional).annotate({
66
+ description: "Filesystem watcher configuration",
67
+ }),
68
+ formatter: ConfigFormatter.Info.pipe(optional).annotate({
69
+ description: "Enable built-in formatters or configure formatter overrides",
70
+ }),
71
+ lsp: ConfigLSP.Info.pipe(optional).annotate({
72
+ description: "Enable built-in language servers or configure server overrides",
73
+ }),
74
+ media: ConfigMedia.Info.pipe(optional).annotate({
75
+ description: "Media processing configuration",
76
+ }),
77
+ tool_output: ConfigToolOutput.Info.pipe(optional).annotate({
78
+ description: "Tool output truncation thresholds",
79
+ }),
80
+ mcp: ConfigMCP.Info.pipe(optional).annotate({
81
+ description: "MCP server configuration",
82
+ }),
83
+ compaction: ConfigCompaction.Info.pipe(optional).annotate({
84
+ description: "Conversation compaction behavior",
85
+ }),
86
+ skills: Schema.String.pipe(Schema.Array, optional).annotate({
87
+ description: "Additional paths or URLs to discover skills from",
88
+ }),
89
+ commands: Schema.Record(Schema.String, ConfigCommand.Info).pipe(optional).annotate({
90
+ description: "Named slash command definitions",
91
+ }),
92
+ instructions: Schema.String.pipe(Schema.Array, optional).annotate({
93
+ description: "Additional paths or URLs supplying ambient instructions",
94
+ }),
95
+ references: ConfigReference.Info.pipe(optional).annotate({
96
+ description: "Named local directories or Git repositories available as external context",
97
+ }),
98
+ websearch: ConfigWebSearch.Selection.pipe(optional).annotate({
99
+ description: "Web search provider selection",
100
+ }),
101
+ plugins: ConfigPlugin.Plugins.pipe(optional).annotate({
102
+ description: "Ordered plugin enablement directives and external package declarations",
103
+ }),
104
+ worktree: ConfigWorktree.Info.pipe(optional).annotate({
105
+ description: "Directory defaults for local worktree creation",
106
+ }),
107
+ warming: ConfigWarming.Warming.pipe(optional).annotate({
108
+ description: "Keep recently active sessions warm with transient model requests (default: false)",
109
+ }),
110
+ providers: Schema.Record(Schema.String, ConfigProvider.Info).pipe(optional),
111
+ experimental: ConfigExperimental.Info.pipe(optional),
112
+ }) {
113
+ }
114
+ export const Patch = Schema.Struct({
115
+ shell: Schema.NullOr(Schema.String),
116
+ }).annotate({ identifier: "Config.Patch" });
117
+ export class Document extends Schema.Class("Config.Document")({
118
+ type: Schema.Literal("document"),
119
+ path: AbsolutePath.pipe(optional),
120
+ info: Info,
121
+ }) {
122
+ }
123
+ export class Directory extends Schema.Class("Config.Directory")({
124
+ type: Schema.Literal("directory"),
125
+ path: AbsolutePath,
126
+ }) {
127
+ }
128
+ export const Entry = Schema.Union([Document, Directory]).annotate({
129
+ identifier: "Config.Entry",
130
+ });
131
+ const Updated = ephemeral({
132
+ type: "config.updated",
133
+ schema: {},
134
+ });
135
+ export const Event = { Updated, Definitions: inventory(Updated) };