@slopus/happy-agent-client 0.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 (90) hide show
  1. package/README.md +17 -0
  2. package/dist/HappyAgentApiError.d.ts +41 -0
  3. package/dist/HappyAgentApiError.d.ts.map +1 -0
  4. package/dist/HappyAgentApiError.js +57 -0
  5. package/dist/HappyAgentApiError.js.map +1 -0
  6. package/dist/HappyAgentClient.d.ts +256 -0
  7. package/dist/HappyAgentClient.d.ts.map +1 -0
  8. package/dist/HappyAgentClient.js +739 -0
  9. package/dist/HappyAgentClient.js.map +1 -0
  10. package/dist/endpointUrl.d.ts +14 -0
  11. package/dist/endpointUrl.d.ts.map +1 -0
  12. package/dist/endpointUrl.js +27 -0
  13. package/dist/endpointUrl.js.map +1 -0
  14. package/dist/index.d.ts +26 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +22 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/protocol/agents.d.ts +116 -0
  19. package/dist/protocol/agents.d.ts.map +1 -0
  20. package/dist/protocol/agents.js +3 -0
  21. package/dist/protocol/agents.js.map +1 -0
  22. package/dist/protocol/bootstrap.d.ts +28 -0
  23. package/dist/protocol/bootstrap.d.ts.map +1 -0
  24. package/dist/protocol/bootstrap.js +3 -0
  25. package/dist/protocol/bootstrap.js.map +1 -0
  26. package/dist/protocol/common.d.ts +104 -0
  27. package/dist/protocol/common.d.ts.map +1 -0
  28. package/dist/protocol/common.js +92 -0
  29. package/dist/protocol/common.js.map +1 -0
  30. package/dist/protocol/daemon.d.ts +486 -0
  31. package/dist/protocol/daemon.d.ts.map +1 -0
  32. package/dist/protocol/daemon.js +210 -0
  33. package/dist/protocol/daemon.js.map +1 -0
  34. package/dist/protocol/events.d.ts +208 -0
  35. package/dist/protocol/events.d.ts.map +1 -0
  36. package/dist/protocol/events.js +9 -0
  37. package/dist/protocol/events.js.map +1 -0
  38. package/dist/protocol/files.d.ts +74 -0
  39. package/dist/protocol/files.d.ts.map +1 -0
  40. package/dist/protocol/files.js +8 -0
  41. package/dist/protocol/files.js.map +1 -0
  42. package/dist/protocol/git.d.ts +55 -0
  43. package/dist/protocol/git.d.ts.map +1 -0
  44. package/dist/protocol/git.js +3 -0
  45. package/dist/protocol/git.js.map +1 -0
  46. package/dist/protocol/messages.d.ts +210 -0
  47. package/dist/protocol/messages.d.ts.map +1 -0
  48. package/dist/protocol/messages.js +8 -0
  49. package/dist/protocol/messages.js.map +1 -0
  50. package/dist/protocol/processes.d.ts +26 -0
  51. package/dist/protocol/processes.d.ts.map +1 -0
  52. package/dist/protocol/processes.js +3 -0
  53. package/dist/protocol/processes.js.map +1 -0
  54. package/dist/protocol/profile.d.ts +40 -0
  55. package/dist/protocol/profile.d.ts.map +1 -0
  56. package/dist/protocol/profile.js +23 -0
  57. package/dist/protocol/profile.js.map +1 -0
  58. package/dist/protocol/projects.d.ts +377 -0
  59. package/dist/protocol/projects.d.ts.map +1 -0
  60. package/dist/protocol/projects.js +107 -0
  61. package/dist/protocol/projects.js.map +1 -0
  62. package/dist/protocol/questions.d.ts +54 -0
  63. package/dist/protocol/questions.d.ts.map +1 -0
  64. package/dist/protocol/questions.js +3 -0
  65. package/dist/protocol/questions.js.map +1 -0
  66. package/dist/protocol/terminals.d.ts +50 -0
  67. package/dist/protocol/terminals.d.ts.map +1 -0
  68. package/dist/protocol/terminals.js +3 -0
  69. package/dist/protocol/terminals.js.map +1 -0
  70. package/dist/protocol/usage.d.ts +27 -0
  71. package/dist/protocol/usage.d.ts.map +1 -0
  72. package/dist/protocol/usage.js +9 -0
  73. package/dist/protocol/usage.js.map +1 -0
  74. package/dist/protocol/workspaces.d.ts +216 -0
  75. package/dist/protocol/workspaces.d.ts.map +1 -0
  76. package/dist/protocol/workspaces.js +87 -0
  77. package/dist/protocol/workspaces.js.map +1 -0
  78. package/dist/readEventStream.d.ts +19 -0
  79. package/dist/readEventStream.d.ts.map +1 -0
  80. package/dist/readEventStream.js +46 -0
  81. package/dist/readEventStream.js.map +1 -0
  82. package/dist/readSseFrames.d.ts +20 -0
  83. package/dist/readSseFrames.d.ts.map +1 -0
  84. package/dist/readSseFrames.js +77 -0
  85. package/dist/readSseFrames.js.map +1 -0
  86. package/dist/requestOptions.d.ts +44 -0
  87. package/dist/requestOptions.d.ts.map +1 -0
  88. package/dist/requestOptions.js +9 -0
  89. package/dist/requestOptions.js.map +1 -0
  90. package/package.json +42 -0
@@ -0,0 +1,486 @@
1
+ /** The daemon itself: its greeting, health, configuration, and debug surface. */
2
+ import { type Static } from "@sinclair/typebox";
3
+ /**
4
+ * The wire protocol this client was built for.
5
+ *
6
+ * A daemon reports its own number through `GET /v0/health`; a client that reads
7
+ * a different one refuses to talk to that daemon.
8
+ */
9
+ export declare const HAPPY_AGENT_PROTOCOL_VERSION = 17;
10
+ /** `GET /` — a greeting confirming the caller reached a Happy agent. */
11
+ export declare const greetingResponseSchema: import("@sinclair/typebox").TObject<{
12
+ text: import("@sinclair/typebox").TString;
13
+ }>;
14
+ export type GreetingResponse = Static<typeof greetingResponseSchema>;
15
+ /** What a daemon says about itself. */
16
+ export declare const daemonVersionSchema: import("@sinclair/typebox").TObject<{
17
+ /** The product version string, for display and diagnostics. */
18
+ daemon: import("@sinclair/typebox").TString;
19
+ /** The wire protocol number; the client's compatibility check. */
20
+ protocol: import("@sinclair/typebox").TInteger;
21
+ }>;
22
+ export type DaemonVersion = Static<typeof daemonVersionSchema>;
23
+ /** `GET /v0/health` */
24
+ export declare const healthResponseSchema: import("@sinclair/typebox").TObject<{
25
+ /** Always `true`; a daemon that cannot answer does not answer. */
26
+ healthy: import("@sinclair/typebox").TBoolean;
27
+ /** `false` while the agent system is still loading. */
28
+ ready: import("@sinclair/typebox").TBoolean;
29
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starting">, import("@sinclair/typebox").TLiteral<"ready">]>;
30
+ version: import("@sinclair/typebox").TObject<{
31
+ /** The product version string, for display and diagnostics. */
32
+ daemon: import("@sinclair/typebox").TString;
33
+ /** The wire protocol number; the client's compatibility check. */
34
+ protocol: import("@sinclair/typebox").TInteger;
35
+ }>;
36
+ }>;
37
+ export type HealthResponse = Static<typeof healthResponseSchema>;
38
+ /** What a new agent gets when it names nothing. */
39
+ export declare const configDefaultsSchema: import("@sinclair/typebox").TObject<{
40
+ effort: import("@sinclair/typebox").TString;
41
+ modelId: import("@sinclair/typebox").TString;
42
+ permissionMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"read_only">, import("@sinclair/typebox").TLiteral<"workspace_write">, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"full_access">]>;
43
+ providerId: import("@sinclair/typebox").TString;
44
+ }>;
45
+ export type ConfigDefaults = Static<typeof configDefaultsSchema>;
46
+ export declare const configFeaturesSchema: import("@sinclair/typebox").TObject<{
47
+ crossWorkspace: import("@sinclair/typebox").TBoolean;
48
+ workflows: import("@sinclair/typebox").TBoolean;
49
+ workspaces: import("@sinclair/typebox").TBoolean;
50
+ }>;
51
+ export type ConfigFeatures = Static<typeof configFeaturesSchema>;
52
+ /** A configured MCP server, stripped of everything private. */
53
+ export declare const mcpServerConfigSchema: import("@sinclair/typebox").TObject<{
54
+ enabled: import("@sinclair/typebox").TBoolean;
55
+ transport: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"stdio">, import("@sinclair/typebox").TLiteral<"http">]>;
56
+ }>;
57
+ export type McpServerConfig = Static<typeof mcpServerConfigSchema>;
58
+ /** The sandbox network policy. */
59
+ export declare const networkConfigSchema: import("@sinclair/typebox").TObject<{
60
+ allowedDomains: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
61
+ allowedLoopbackPorts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>;
62
+ allowedPorts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>;
63
+ allowLocalBinding: import("@sinclair/typebox").TBoolean;
64
+ deniedDomains: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
65
+ }>;
66
+ export type NetworkConfig = Static<typeof networkConfigSchema>;
67
+ /** Peer-to-peer identity and transports. */
68
+ export declare const p2pConfigSchema: import("@sinclair/typebox").TObject<{
69
+ enableDirect: import("@sinclair/typebox").TBoolean;
70
+ enableIroh: import("@sinclair/typebox").TBoolean;
71
+ enableSsh: import("@sinclair/typebox").TBoolean;
72
+ exposeApi: import("@sinclair/typebox").TBoolean;
73
+ name: import("@sinclair/typebox").TString;
74
+ role: import("@sinclair/typebox").TString;
75
+ }>;
76
+ export type P2pConfig = Static<typeof p2pConfigSchema>;
77
+ export declare const permissionsConfigSchema: import("@sinclair/typebox").TObject<{
78
+ /** Project-relative paths that mutations must not touch unattended. */
79
+ protectedPaths: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
80
+ }>;
81
+ export type PermissionsConfig = Static<typeof permissionsConfigSchema>;
82
+ /** One presence state the person can be in. */
83
+ export declare const presenceStateSchema: import("@sinclair/typebox").TObject<{
84
+ /** How long a question waits for an answer; `null` waits indefinitely. */
85
+ answerWaitMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
86
+ emoji: import("@sinclair/typebox").TString;
87
+ /** What the model is told about the person's availability. */
88
+ prompt: import("@sinclair/typebox").TString;
89
+ title: import("@sinclair/typebox").TString;
90
+ }>;
91
+ export type PresenceState = Static<typeof presenceStateSchema>;
92
+ export declare const presenceConfigSchema: import("@sinclair/typebox").TObject<{
93
+ current: import("@sinclair/typebox").TString;
94
+ fallback: import("@sinclair/typebox").TString;
95
+ states: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
96
+ /** How long a question waits for an answer; `null` waits indefinitely. */
97
+ answerWaitMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
98
+ emoji: import("@sinclair/typebox").TString;
99
+ /** What the model is told about the person's availability. */
100
+ prompt: import("@sinclair/typebox").TString;
101
+ title: import("@sinclair/typebox").TString;
102
+ }>>;
103
+ }>;
104
+ export type PresenceConfig = Static<typeof presenceConfigSchema>;
105
+ /** Everything a client needs to present a model, defined once. */
106
+ export declare const modelDefinitionSchema: import("@sinclair/typebox").TObject<{
107
+ defaultEffort: import("@sinclair/typebox").TString;
108
+ efforts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
109
+ name: import("@sinclair/typebox").TString;
110
+ /** Empty when the model has no service tiers. */
111
+ serviceTiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
112
+ }>;
113
+ export type ModelDefinition = Static<typeof modelDefinitionSchema>;
114
+ /**
115
+ * A provider's reference to a model in the top-level catalog.
116
+ *
117
+ * A provider serving a model with narrower capabilities than the shared
118
+ * definition overrides just those fields.
119
+ */
120
+ export declare const providerModelReferenceSchema: import("@sinclair/typebox").TObject<{
121
+ defaultEffort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
122
+ efforts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
123
+ enabled: import("@sinclair/typebox").TBoolean;
124
+ id: import("@sinclair/typebox").TString;
125
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
126
+ serviceTiers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
127
+ }>;
128
+ export type ProviderModelReference = Static<typeof providerModelReferenceSchema>;
129
+ export declare const providerConfigSchema: import("@sinclair/typebox").TObject<{
130
+ enabled: import("@sinclair/typebox").TBoolean;
131
+ models: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
132
+ defaultEffort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
133
+ efforts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
134
+ enabled: import("@sinclair/typebox").TBoolean;
135
+ id: import("@sinclair/typebox").TString;
136
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
137
+ serviceTiers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
138
+ }>>;
139
+ /** The canonical provider key: `"claude"`, `"codex"`, `"grok"`, … */
140
+ type: import("@sinclair/typebox").TString;
141
+ }>;
142
+ export type ProviderConfig = Static<typeof providerConfigSchema>;
143
+ /** Daemon behavior toggles and tunables. */
144
+ export declare const daemonSettingsSchema: import("@sinclair/typebox").TObject<{
145
+ compactCompletedTurns: import("@sinclair/typebox").TBoolean;
146
+ completionChime: import("@sinclair/typebox").TBoolean;
147
+ inferenceMaxRetries: import("@sinclair/typebox").TInteger;
148
+ showReasoning: import("@sinclair/typebox").TBoolean;
149
+ showUsage: import("@sinclair/typebox").TBoolean;
150
+ toolResultRetentionDays: import("@sinclair/typebox").TInteger;
151
+ }>;
152
+ export type DaemonSettings = Static<typeof daemonSettingsSchema>;
153
+ /** Terminal color assignments. */
154
+ export declare const themeConfigSchema: import("@sinclair/typebox").TObject<{
155
+ accent: import("@sinclair/typebox").TString;
156
+ brand: import("@sinclair/typebox").TString;
157
+ error: import("@sinclair/typebox").TString;
158
+ primary: import("@sinclair/typebox").TString;
159
+ secondary: import("@sinclair/typebox").TString;
160
+ success: import("@sinclair/typebox").TString;
161
+ warning: import("@sinclair/typebox").TString;
162
+ }>;
163
+ export type ThemeConfig = Static<typeof themeConfigSchema>;
164
+ /** Workspace lifecycle configuration. */
165
+ export declare const workspaceConfigSchema: import("@sinclair/typebox").TObject<{
166
+ keepCopiesOnArchive: import("@sinclair/typebox").TBoolean;
167
+ keepWorktreesOnArchive: import("@sinclair/typebox").TBoolean;
168
+ protectedSync: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
169
+ setupCommands: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
170
+ /** Files copied into every new workspace. */
171
+ sync: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
172
+ }>;
173
+ export type WorkspaceConfig = Static<typeof workspaceConfigSchema>;
174
+ /** The daemon's effective configuration, with every secret removed. */
175
+ export declare const daemonConfigSchema: import("@sinclair/typebox").TObject<{
176
+ defaults: import("@sinclair/typebox").TObject<{
177
+ effort: import("@sinclair/typebox").TString;
178
+ modelId: import("@sinclair/typebox").TString;
179
+ permissionMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"read_only">, import("@sinclair/typebox").TLiteral<"workspace_write">, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"full_access">]>;
180
+ providerId: import("@sinclair/typebox").TString;
181
+ }>;
182
+ features: import("@sinclair/typebox").TObject<{
183
+ crossWorkspace: import("@sinclair/typebox").TBoolean;
184
+ workflows: import("@sinclair/typebox").TBoolean;
185
+ workspaces: import("@sinclair/typebox").TBoolean;
186
+ }>;
187
+ mcpServers: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
188
+ enabled: import("@sinclair/typebox").TBoolean;
189
+ transport: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"stdio">, import("@sinclair/typebox").TLiteral<"http">]>;
190
+ }>>;
191
+ /** Every model the daemon knows, keyed by model ID. */
192
+ models: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
193
+ defaultEffort: import("@sinclair/typebox").TString;
194
+ efforts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
195
+ name: import("@sinclair/typebox").TString;
196
+ /** Empty when the model has no service tiers. */
197
+ serviceTiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
198
+ }>>;
199
+ network: import("@sinclair/typebox").TObject<{
200
+ allowedDomains: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
201
+ allowedLoopbackPorts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>;
202
+ allowedPorts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>;
203
+ allowLocalBinding: import("@sinclair/typebox").TBoolean;
204
+ deniedDomains: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
205
+ }>;
206
+ p2p: import("@sinclair/typebox").TObject<{
207
+ enableDirect: import("@sinclair/typebox").TBoolean;
208
+ enableIroh: import("@sinclair/typebox").TBoolean;
209
+ enableSsh: import("@sinclair/typebox").TBoolean;
210
+ exposeApi: import("@sinclair/typebox").TBoolean;
211
+ name: import("@sinclair/typebox").TString;
212
+ role: import("@sinclair/typebox").TString;
213
+ }>;
214
+ permissions: import("@sinclair/typebox").TObject<{
215
+ /** Project-relative paths that mutations must not touch unattended. */
216
+ protectedPaths: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
217
+ }>;
218
+ presence: import("@sinclair/typebox").TObject<{
219
+ current: import("@sinclair/typebox").TString;
220
+ fallback: import("@sinclair/typebox").TString;
221
+ states: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
222
+ /** How long a question waits for an answer; `null` waits indefinitely. */
223
+ answerWaitMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
224
+ emoji: import("@sinclair/typebox").TString;
225
+ /** What the model is told about the person's availability. */
226
+ prompt: import("@sinclair/typebox").TString;
227
+ title: import("@sinclair/typebox").TString;
228
+ }>>;
229
+ }>;
230
+ providers: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
231
+ enabled: import("@sinclair/typebox").TBoolean;
232
+ models: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
233
+ defaultEffort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
234
+ efforts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
235
+ enabled: import("@sinclair/typebox").TBoolean;
236
+ id: import("@sinclair/typebox").TString;
237
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
238
+ serviceTiers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
239
+ }>>;
240
+ /** The canonical provider key: `"claude"`, `"codex"`, `"grok"`, … */
241
+ type: import("@sinclair/typebox").TString;
242
+ }>>;
243
+ settings: import("@sinclair/typebox").TObject<{
244
+ compactCompletedTurns: import("@sinclair/typebox").TBoolean;
245
+ completionChime: import("@sinclair/typebox").TBoolean;
246
+ inferenceMaxRetries: import("@sinclair/typebox").TInteger;
247
+ showReasoning: import("@sinclair/typebox").TBoolean;
248
+ showUsage: import("@sinclair/typebox").TBoolean;
249
+ toolResultRetentionDays: import("@sinclair/typebox").TInteger;
250
+ }>;
251
+ theme: import("@sinclair/typebox").TObject<{
252
+ accent: import("@sinclair/typebox").TString;
253
+ brand: import("@sinclair/typebox").TString;
254
+ error: import("@sinclair/typebox").TString;
255
+ primary: import("@sinclair/typebox").TString;
256
+ secondary: import("@sinclair/typebox").TString;
257
+ success: import("@sinclair/typebox").TString;
258
+ warning: import("@sinclair/typebox").TString;
259
+ }>;
260
+ workspace: import("@sinclair/typebox").TObject<{
261
+ keepCopiesOnArchive: import("@sinclair/typebox").TBoolean;
262
+ keepWorktreesOnArchive: import("@sinclair/typebox").TBoolean;
263
+ protectedSync: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
264
+ setupCommands: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
265
+ /** Files copied into every new workspace. */
266
+ sync: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
267
+ }>;
268
+ }>;
269
+ export type DaemonConfig = Static<typeof daemonConfigSchema>;
270
+ /** `GET /v0/config` */
271
+ export declare const configResponseSchema: import("@sinclair/typebox").TObject<{
272
+ config: import("@sinclair/typebox").TObject<{
273
+ defaults: import("@sinclair/typebox").TObject<{
274
+ effort: import("@sinclair/typebox").TString;
275
+ modelId: import("@sinclair/typebox").TString;
276
+ permissionMode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"read_only">, import("@sinclair/typebox").TLiteral<"workspace_write">, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"full_access">]>;
277
+ providerId: import("@sinclair/typebox").TString;
278
+ }>;
279
+ features: import("@sinclair/typebox").TObject<{
280
+ crossWorkspace: import("@sinclair/typebox").TBoolean;
281
+ workflows: import("@sinclair/typebox").TBoolean;
282
+ workspaces: import("@sinclair/typebox").TBoolean;
283
+ }>;
284
+ mcpServers: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
285
+ enabled: import("@sinclair/typebox").TBoolean;
286
+ transport: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"stdio">, import("@sinclair/typebox").TLiteral<"http">]>;
287
+ }>>;
288
+ /** Every model the daemon knows, keyed by model ID. */
289
+ models: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
290
+ defaultEffort: import("@sinclair/typebox").TString;
291
+ efforts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
292
+ name: import("@sinclair/typebox").TString;
293
+ /** Empty when the model has no service tiers. */
294
+ serviceTiers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
295
+ }>>;
296
+ network: import("@sinclair/typebox").TObject<{
297
+ allowedDomains: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
298
+ allowedLoopbackPorts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>;
299
+ allowedPorts: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>;
300
+ allowLocalBinding: import("@sinclair/typebox").TBoolean;
301
+ deniedDomains: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
302
+ }>;
303
+ p2p: import("@sinclair/typebox").TObject<{
304
+ enableDirect: import("@sinclair/typebox").TBoolean;
305
+ enableIroh: import("@sinclair/typebox").TBoolean;
306
+ enableSsh: import("@sinclair/typebox").TBoolean;
307
+ exposeApi: import("@sinclair/typebox").TBoolean;
308
+ name: import("@sinclair/typebox").TString;
309
+ role: import("@sinclair/typebox").TString;
310
+ }>;
311
+ permissions: import("@sinclair/typebox").TObject<{
312
+ /** Project-relative paths that mutations must not touch unattended. */
313
+ protectedPaths: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
314
+ }>;
315
+ presence: import("@sinclair/typebox").TObject<{
316
+ current: import("@sinclair/typebox").TString;
317
+ fallback: import("@sinclair/typebox").TString;
318
+ states: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
319
+ /** How long a question waits for an answer; `null` waits indefinitely. */
320
+ answerWaitMs: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TInteger, import("@sinclair/typebox").TNull]>;
321
+ emoji: import("@sinclair/typebox").TString;
322
+ /** What the model is told about the person's availability. */
323
+ prompt: import("@sinclair/typebox").TString;
324
+ title: import("@sinclair/typebox").TString;
325
+ }>>;
326
+ }>;
327
+ providers: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{
328
+ enabled: import("@sinclair/typebox").TBoolean;
329
+ models: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
330
+ defaultEffort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
331
+ efforts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
332
+ enabled: import("@sinclair/typebox").TBoolean;
333
+ id: import("@sinclair/typebox").TString;
334
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
335
+ serviceTiers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
336
+ }>>;
337
+ /** The canonical provider key: `"claude"`, `"codex"`, `"grok"`, … */
338
+ type: import("@sinclair/typebox").TString;
339
+ }>>;
340
+ settings: import("@sinclair/typebox").TObject<{
341
+ compactCompletedTurns: import("@sinclair/typebox").TBoolean;
342
+ completionChime: import("@sinclair/typebox").TBoolean;
343
+ inferenceMaxRetries: import("@sinclair/typebox").TInteger;
344
+ showReasoning: import("@sinclair/typebox").TBoolean;
345
+ showUsage: import("@sinclair/typebox").TBoolean;
346
+ toolResultRetentionDays: import("@sinclair/typebox").TInteger;
347
+ }>;
348
+ theme: import("@sinclair/typebox").TObject<{
349
+ accent: import("@sinclair/typebox").TString;
350
+ brand: import("@sinclair/typebox").TString;
351
+ error: import("@sinclair/typebox").TString;
352
+ primary: import("@sinclair/typebox").TString;
353
+ secondary: import("@sinclair/typebox").TString;
354
+ success: import("@sinclair/typebox").TString;
355
+ warning: import("@sinclair/typebox").TString;
356
+ }>;
357
+ workspace: import("@sinclair/typebox").TObject<{
358
+ keepCopiesOnArchive: import("@sinclair/typebox").TBoolean;
359
+ keepWorktreesOnArchive: import("@sinclair/typebox").TBoolean;
360
+ protectedSync: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
361
+ setupCommands: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
362
+ /** Files copied into every new workspace. */
363
+ sync: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
364
+ }>;
365
+ }>;
366
+ }>;
367
+ export type ConfigResponse = Static<typeof configResponseSchema>;
368
+ /**
369
+ * `PATCH /v0/config` — a runtime settings change.
370
+ *
371
+ * The specification validates the body against "the mutable subset" without
372
+ * enumerating it, so the request admits a partial of any group and leaves the
373
+ * daemon to refuse what it will not change at runtime.
374
+ */
375
+ export declare const configPatchSchema: import("@sinclair/typebox").TObject<{
376
+ defaults: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
377
+ effort: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
378
+ modelId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
379
+ permissionMode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"read_only">, import("@sinclair/typebox").TLiteral<"workspace_write">, import("@sinclair/typebox").TLiteral<"auto">, import("@sinclair/typebox").TLiteral<"full_access">]>>;
380
+ providerId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
381
+ }>>;
382
+ features: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
383
+ crossWorkspace: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
384
+ workflows: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
385
+ workspaces: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
386
+ }>>;
387
+ network: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
388
+ allowedDomains: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
389
+ allowedLoopbackPorts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>>;
390
+ allowedPorts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TInteger>>;
391
+ allowLocalBinding: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
392
+ deniedDomains: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
393
+ }>>;
394
+ p2p: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
395
+ enableDirect: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
396
+ enableIroh: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
397
+ enableSsh: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
398
+ exposeApi: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
399
+ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
400
+ role: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
401
+ }>>;
402
+ permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
403
+ protectedPaths: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
404
+ }>>;
405
+ settings: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
406
+ compactCompletedTurns: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
407
+ completionChime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
408
+ inferenceMaxRetries: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
409
+ showReasoning: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
410
+ showUsage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
411
+ toolResultRetentionDays: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
412
+ }>>;
413
+ theme: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
414
+ accent: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
415
+ brand: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
416
+ error: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
417
+ primary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
418
+ secondary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
419
+ success: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
420
+ warning: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
421
+ }>>;
422
+ workspace: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
423
+ keepCopiesOnArchive: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
424
+ keepWorktreesOnArchive: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
425
+ protectedSync: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
426
+ setupCommands: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
427
+ sync: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
428
+ }>>;
429
+ }>;
430
+ export type ConfigPatch = Static<typeof configPatchSchema>;
431
+ /** `GET` and `PUT /v0/config/instructions` */
432
+ export declare const instructionsResponseSchema: import("@sinclair/typebox").TObject<{
433
+ instructions: import("@sinclair/typebox").TString;
434
+ }>;
435
+ export type InstructionsResponse = Static<typeof instructionsResponseSchema>;
436
+ /** `GET` and `PUT /v0/config/security` */
437
+ export declare const securityPolicyResponseSchema: import("@sinclair/typebox").TObject<{
438
+ policy: import("@sinclair/typebox").TString;
439
+ }>;
440
+ export type SecurityPolicyResponse = Static<typeof securityPolicyResponseSchema>;
441
+ /** `POST /v0/shutdown` */
442
+ export declare const shutdownResponseSchema: import("@sinclair/typebox").TObject<{
443
+ /** The daemon's process ID, so the caller can confirm the process exited. */
444
+ pid: import("@sinclair/typebox").TInteger;
445
+ shuttingDown: import("@sinclair/typebox").TBoolean;
446
+ }>;
447
+ export type ShutdownResponse = Static<typeof shutdownResponseSchema>;
448
+ /** `POST /v0/debug/inspector` */
449
+ export declare const inspectorStartedResponseSchema: import("@sinclair/typebox").TObject<{
450
+ /** The devtools websocket URL a debugger attaches to. */
451
+ inspectorUrl: import("@sinclair/typebox").TString;
452
+ }>;
453
+ export type InspectorStartedResponse = Static<typeof inspectorStartedResponseSchema>;
454
+ /** `DELETE /v0/debug/inspector` */
455
+ export declare const inspectorStoppedResponseSchema: import("@sinclair/typebox").TObject<{
456
+ /** `false` when no inspector was running. */
457
+ stopped: import("@sinclair/typebox").TBoolean;
458
+ }>;
459
+ export type InspectorStoppedResponse = Static<typeof inspectorStoppedResponseSchema>;
460
+ /** `GET /v0/onboarding` */
461
+ export declare const onboardingStateSchema: import("@sinclair/typebox").TObject<{
462
+ /** Set explicitly when the person finished or dismissed onboarding. */
463
+ completed: import("@sinclair/typebox").TBoolean;
464
+ steps: import("@sinclair/typebox").TObject<{
465
+ /** The profile has a name. */
466
+ profile: import("@sinclair/typebox").TObject<{
467
+ done: import("@sinclair/typebox").TBoolean;
468
+ }>;
469
+ /** At least one project exists. */
470
+ project: import("@sinclair/typebox").TObject<{
471
+ done: import("@sinclair/typebox").TBoolean;
472
+ }>;
473
+ /** At least one provider has working credentials. */
474
+ providers: import("@sinclair/typebox").TObject<{
475
+ done: import("@sinclair/typebox").TBoolean;
476
+ signedIn: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
477
+ }>;
478
+ }>;
479
+ }>;
480
+ export type OnboardingState = Static<typeof onboardingStateSchema>;
481
+ /** `POST /v0/onboarding/complete` */
482
+ export declare const onboardingCompletedResponseSchema: import("@sinclair/typebox").TObject<{
483
+ completed: import("@sinclair/typebox").TBoolean;
484
+ }>;
485
+ export type OnboardingCompletedResponse = Static<typeof onboardingCompletedResponseSchema>;
486
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../sources/protocol/daemon.ts"],"names":[],"mappings":"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"}