@otto-code/protocol 0.8.12 → 0.8.14

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 (43) hide show
  1. package/dist/agent-labels.d.ts +3 -0
  2. package/dist/agent-labels.js +10 -0
  3. package/dist/{agent-personalities.d.ts → agent-profiles.d.ts} +13 -3
  4. package/dist/{agent-personalities.js → agent-profiles.js} +27 -11
  5. package/dist/agent-teams.d.ts +5 -5
  6. package/dist/agent-teams.js +1 -1
  7. package/dist/agent-types.d.ts +24 -4
  8. package/dist/binary-frames/terminal.d.ts +4 -0
  9. package/dist/binary-frames/terminal.js +1 -0
  10. package/dist/brain.d.ts +91 -0
  11. package/dist/brain.js +19 -1
  12. package/dist/chat/rpc-schemas.js +1 -0
  13. package/dist/chat/types.js +1 -0
  14. package/dist/client-capabilities.d.ts +1 -0
  15. package/dist/client-capabilities.js +4 -0
  16. package/dist/daemon-config.d.ts +10 -0
  17. package/dist/daemon-config.js +6 -0
  18. package/dist/default-personalities.d.ts +2 -2
  19. package/dist/default-personalities.js +2 -2
  20. package/dist/generated/validation/ws-outbound.aot.js +65204 -60319
  21. package/dist/loop/rpc-schemas.js +1 -0
  22. package/dist/messages.d.ts +4146 -316
  23. package/dist/messages.js +483 -2
  24. package/dist/personality-schemas.d.ts +135 -0
  25. package/dist/personality-schemas.js +63 -0
  26. package/dist/provider-manifest.js +7 -0
  27. package/dist/provider-snapshot-codec.d.ts +18 -0
  28. package/dist/provider-snapshot-codec.js +71 -0
  29. package/dist/schedule/rpc-schemas.d.ts +16 -8
  30. package/dist/schedule/types.d.ts +6 -3
  31. package/dist/schedule/types.js +8 -1
  32. package/dist/search/text-match.d.ts +55 -0
  33. package/dist/search/text-match.js +262 -0
  34. package/dist/suggested-tasks.js +1 -1
  35. package/dist/terminal-input-mode.d.ts +4 -0
  36. package/dist/terminal-input-mode.js +35 -6
  37. package/dist/terminal-key-input.js +15 -6
  38. package/dist/terminal-profiles.d.ts +35 -0
  39. package/dist/terminal-profiles.js +246 -4
  40. package/dist/tool-call-display.d.ts +2 -2
  41. package/dist/tool-call-display.js +6 -6
  42. package/dist/validation/ws-outbound-schema-metadata.d.ts +677 -28
  43. package/package.json +1 -1
@@ -164,6 +164,8 @@ export type AgentPersonalityVoiceCues = z.infer<typeof AgentPersonalityVoiceCues
164
164
  export declare const AgentPersonalitySchema: z.ZodObject<{
165
165
  id: z.ZodString;
166
166
  name: z.ZodString;
167
+ icon: z.ZodOptional<z.ZodString>;
168
+ color: z.ZodOptional<z.ZodString>;
167
169
  provider: z.ZodString;
168
170
  model: z.ZodString;
169
171
  effortLevel: z.ZodOptional<z.ZodString>;
@@ -218,4 +220,137 @@ export declare const VisualizerVoiceCuesGenerateResponseSchema: z.ZodObject<{
218
220
  }, z.core.$loose>;
219
221
  }, z.core.$strip>;
220
222
  export type VisualizerVoiceCuesResult = z.infer<typeof VisualizerVoiceCuesGenerateResponseSchema>["payload"];
223
+ export declare const ProfileMemoryListRequestMessageSchema: z.ZodObject<{
224
+ workspaceId: z.ZodOptional<z.ZodString>;
225
+ projectRoot: z.ZodOptional<z.ZodString>;
226
+ requestId: z.ZodString;
227
+ personalityId: z.ZodString;
228
+ type: z.ZodLiteral<"profile.memory.list.request">;
229
+ }, z.core.$strip>;
230
+ export declare const ProfileMemoryListResponseMessageSchema: z.ZodObject<{
231
+ payload: z.ZodObject<{
232
+ requestId: z.ZodString;
233
+ personalityId: z.ZodString;
234
+ personalityName: z.ZodString;
235
+ enabled: z.ZodBoolean;
236
+ entries: z.ZodArray<z.ZodObject<{
237
+ id: z.ZodString;
238
+ text: z.ZodString;
239
+ scope: z.ZodString;
240
+ projectRoot: z.ZodOptional<z.ZodString>;
241
+ createdAt: z.ZodString;
242
+ updatedAt: z.ZodString;
243
+ source: z.ZodString;
244
+ reinforcedCount: z.ZodOptional<z.ZodNumber>;
245
+ transferredFrom: z.ZodOptional<z.ZodString>;
246
+ }, z.core.$loose>>;
247
+ brief: z.ZodString;
248
+ briefTokens: z.ZodNumber;
249
+ briefOmittedCount: z.ZodOptional<z.ZodNumber>;
250
+ projectRoot: z.ZodOptional<z.ZodString>;
251
+ }, z.core.$strip>;
252
+ type: z.ZodLiteral<"profile.memory.list.response">;
253
+ }, z.core.$strip>;
254
+ export declare const ProfileMemoryUpdateRequestMessageSchema: z.ZodObject<{
255
+ workspaceId: z.ZodOptional<z.ZodString>;
256
+ text: z.ZodOptional<z.ZodString>;
257
+ scope: z.ZodOptional<z.ZodString>;
258
+ projectRoot: z.ZodOptional<z.ZodString>;
259
+ requestId: z.ZodString;
260
+ personalityId: z.ZodString;
261
+ entryId: z.ZodOptional<z.ZodString>;
262
+ drop: z.ZodOptional<z.ZodBoolean>;
263
+ type: z.ZodLiteral<"profile.memory.update.request">;
264
+ }, z.core.$strip>;
265
+ export declare const ProfileMemoryUpdateResponseMessageSchema: z.ZodObject<{
266
+ payload: z.ZodObject<{
267
+ requestId: z.ZodString;
268
+ ok: z.ZodBoolean;
269
+ error: z.ZodOptional<z.ZodString>;
270
+ }, z.core.$strip>;
271
+ type: z.ZodLiteral<"profile.memory.update.response">;
272
+ }, z.core.$strip>;
273
+ export declare const ProfileMemoryTransferRequestMessageSchema: z.ZodObject<{
274
+ mode: z.ZodString;
275
+ requestId: z.ZodString;
276
+ fromPersonalityId: z.ZodString;
277
+ toPersonalityId: z.ZodOptional<z.ZodString>;
278
+ type: z.ZodLiteral<"profile.memory.transfer.request">;
279
+ }, z.core.$strip>;
280
+ export declare const ProfileMemoryTransferResponseMessageSchema: z.ZodObject<{
281
+ payload: z.ZodObject<{
282
+ requestId: z.ZodString;
283
+ ok: z.ZodBoolean;
284
+ transferred: z.ZodOptional<z.ZodNumber>;
285
+ merged: z.ZodOptional<z.ZodNumber>;
286
+ error: z.ZodOptional<z.ZodString>;
287
+ }, z.core.$strip>;
288
+ type: z.ZodLiteral<"profile.memory.transfer.response">;
289
+ }, z.core.$strip>;
290
+ export declare const ProfileMemoryStatsRequestMessageSchema: z.ZodObject<{
291
+ requestId: z.ZodString;
292
+ type: z.ZodLiteral<"profile.memory.stats.request">;
293
+ }, z.core.$strip>;
294
+ export declare const ProfileMemoryStatsResponseMessageSchema: z.ZodObject<{
295
+ payload: z.ZodObject<{
296
+ requestId: z.ZodString;
297
+ counts: z.ZodRecord<z.ZodString, z.ZodNumber>;
298
+ }, z.core.$strip>;
299
+ type: z.ZodLiteral<"profile.memory.stats.response">;
300
+ }, z.core.$strip>;
301
+ export declare const AgentProfileStatsRequestSchema: z.ZodObject<{
302
+ requestId: z.ZodString;
303
+ type: z.ZodLiteral<"agent.profile.stats.request">;
304
+ }, z.core.$strip>;
305
+ export declare const AgentProfileStatsResponseSchema: z.ZodObject<{
306
+ payload: z.ZodObject<{
307
+ requestId: z.ZodString;
308
+ stats: z.ZodRecord<z.ZodString, z.ZodNumber>;
309
+ }, z.core.$loose>;
310
+ type: z.ZodLiteral<"agent.profile.stats.response">;
311
+ }, z.core.$strip>;
312
+ export declare const AgentProfileGeneratePromptRequestSchema: z.ZodObject<{
313
+ name: z.ZodString;
314
+ requestId: z.ZodString;
315
+ roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
316
+ glowA: z.ZodOptional<z.ZodString>;
317
+ glowB: z.ZodOptional<z.ZodString>;
318
+ cwd: z.ZodOptional<z.ZodString>;
319
+ type: z.ZodLiteral<"agent.profile.generate_prompt.request">;
320
+ }, z.core.$strip>;
321
+ export declare const AgentProfileGeneratePromptResponseSchema: z.ZodObject<{
322
+ payload: z.ZodObject<{
323
+ requestId: z.ZodString;
324
+ profile: z.ZodOptional<z.ZodString>;
325
+ error: z.ZodOptional<z.ZodString>;
326
+ }, z.core.$loose>;
327
+ type: z.ZodLiteral<"agent.profile.generate_prompt.response">;
328
+ }, z.core.$strip>;
329
+ export declare const AgentProfileGenerateVoiceCuesRequestSchema: z.ZodObject<{
330
+ prompt: z.ZodOptional<z.ZodString>;
331
+ name: z.ZodString;
332
+ requestId: z.ZodString;
333
+ roles: z.ZodOptional<z.ZodArray<z.ZodString>>;
334
+ cwd: z.ZodOptional<z.ZodString>;
335
+ moment: z.ZodOptional<z.ZodEnum<{
336
+ join: "join";
337
+ thinking: "thinking";
338
+ waiting: "waiting";
339
+ done: "done";
340
+ }>>;
341
+ type: z.ZodLiteral<"agent.profile.generate_voice_cues.request">;
342
+ }, z.core.$strip>;
343
+ export declare const AgentProfileGenerateVoiceCuesResponseSchema: z.ZodObject<{
344
+ payload: z.ZodObject<{
345
+ requestId: z.ZodString;
346
+ cues: z.ZodOptional<z.ZodObject<{
347
+ join: z.ZodOptional<z.ZodArray<z.ZodString>>;
348
+ thinking: z.ZodOptional<z.ZodArray<z.ZodString>>;
349
+ waiting: z.ZodOptional<z.ZodArray<z.ZodString>>;
350
+ done: z.ZodOptional<z.ZodArray<z.ZodString>>;
351
+ }, z.core.$loose>>;
352
+ error: z.ZodOptional<z.ZodString>;
353
+ }, z.core.$loose>;
354
+ type: z.ZodLiteral<"agent.profile.generate_voice_cues.response">;
355
+ }, z.core.$strip>;
221
356
  //# sourceMappingURL=personality-schemas.d.ts.map
@@ -276,6 +276,10 @@ export const AgentPersonalitySchema = z
276
276
  .object({
277
277
  id: z.string().min(1),
278
278
  name: z.string().min(1),
279
+ /** A key into the client's icon registry, not a glyph. Unknown keys draw the default. */
280
+ icon: z.string().optional(),
281
+ /** An identity colour name shared with host badges. Unknown values draw unthemed. */
282
+ color: z.string().optional(),
279
283
  provider: z.string().min(1),
280
284
  model: z.string().min(1),
281
285
  // Canonical effort level ("off".."max"); resolved to the bound model's
@@ -337,4 +341,63 @@ export const VisualizerVoiceCuesGenerateResponseSchema = z.object({
337
341
  })
338
342
  .passthrough(),
339
343
  });
344
+ // ─── Profile-named RPC twins ──────────────────────────────────────────────────
345
+ //
346
+ // COMPAT(agentProfileRpcs): added in v0.8.13, drop the legacy halves when the
347
+ // daemon floor >= v0.8.13.
348
+ //
349
+ // The stored template converged on Paseo's `AgentProfile`, so the wire follows.
350
+ // These are the same messages under conforming names (see docs/rpc-namespacing.md,
351
+ // which three of the legacy names violate). Derived with `.omit().extend()`
352
+ // rather than copied so the two halves cannot drift.
353
+ //
354
+ // The daemon ACCEPTS both halves from today. The client keeps EMITTING the
355
+ // legacy literals until the floor rises: a new client must not break against an
356
+ // old daemon, and the feature contract forbids writing a degraded fallback path.
357
+ //
358
+ // One name is not a straight translation. `agentPersonalities.generate_profile`
359
+ // generates a personality PROMPT, not a profile - a genuine trap once "profile"
360
+ // means the stored template - so its twin is named `generate_prompt`.
361
+ export const ProfileMemoryListRequestMessageSchema = PersonalityMemoryListRequestMessageSchema.omit({
362
+ type: true,
363
+ }).extend({ type: z.literal("profile.memory.list.request") });
364
+ export const ProfileMemoryListResponseMessageSchema = PersonalityMemoryListResponseMessageSchema.omit({ type: true }).extend({
365
+ type: z.literal("profile.memory.list.response"),
366
+ });
367
+ export const ProfileMemoryUpdateRequestMessageSchema = PersonalityMemoryUpdateRequestMessageSchema.omit({ type: true }).extend({
368
+ type: z.literal("profile.memory.update.request"),
369
+ });
370
+ export const ProfileMemoryUpdateResponseMessageSchema = PersonalityMemoryUpdateResponseMessageSchema.omit({ type: true }).extend({
371
+ type: z.literal("profile.memory.update.response"),
372
+ });
373
+ export const ProfileMemoryTransferRequestMessageSchema = PersonalityMemoryTransferRequestMessageSchema.omit({ type: true }).extend({
374
+ type: z.literal("profile.memory.transfer.request"),
375
+ });
376
+ export const ProfileMemoryTransferResponseMessageSchema = PersonalityMemoryTransferResponseMessageSchema.omit({ type: true }).extend({
377
+ type: z.literal("profile.memory.transfer.response"),
378
+ });
379
+ export const ProfileMemoryStatsRequestMessageSchema = PersonalityMemoryStatsRequestMessageSchema.omit({ type: true }).extend({
380
+ type: z.literal("profile.memory.stats.request"),
381
+ });
382
+ export const ProfileMemoryStatsResponseMessageSchema = PersonalityMemoryStatsResponseMessageSchema.omit({ type: true }).extend({
383
+ type: z.literal("profile.memory.stats.response"),
384
+ });
385
+ export const AgentProfileStatsRequestSchema = AgentPersonalitiesGetStatsRequestSchema.omit({
386
+ type: true,
387
+ }).extend({ type: z.literal("agent.profile.stats.request") });
388
+ export const AgentProfileStatsResponseSchema = AgentPersonalitiesGetStatsResponseSchema.omit({
389
+ type: true,
390
+ }).extend({ type: z.literal("agent.profile.stats.response") });
391
+ export const AgentProfileGeneratePromptRequestSchema = AgentPersonalitiesGenerateProfileRequestSchema.omit({ type: true }).extend({
392
+ type: z.literal("agent.profile.generate_prompt.request"),
393
+ });
394
+ export const AgentProfileGeneratePromptResponseSchema = AgentPersonalitiesGenerateProfileResponseSchema.omit({ type: true }).extend({
395
+ type: z.literal("agent.profile.generate_prompt.response"),
396
+ });
397
+ export const AgentProfileGenerateVoiceCuesRequestSchema = VisualizerVoiceCuesGenerateRequestSchema.omit({ type: true }).extend({
398
+ type: z.literal("agent.profile.generate_voice_cues.request"),
399
+ });
400
+ export const AgentProfileGenerateVoiceCuesResponseSchema = VisualizerVoiceCuesGenerateResponseSchema.omit({ type: true }).extend({
401
+ type: z.literal("agent.profile.generate_voice_cues.response"),
402
+ });
340
403
  //# sourceMappingURL=personality-schemas.js.map
@@ -141,6 +141,13 @@ const MOCK_LOAD_TEST_MODES = [
141
141
  isUnattended: true,
142
142
  userSelectable: false,
143
143
  },
144
+ {
145
+ id: "approval-test",
146
+ label: "Approval Test",
147
+ description: "Alternate development-only permission mode for preference tests",
148
+ icon: "ShieldCheck",
149
+ colorTier: "safe",
150
+ },
144
151
  ];
145
152
  const MOCK_SLOW_MODES = [
146
153
  {
@@ -0,0 +1,18 @@
1
+ import type { AgentModelDefinition, AgentSelectOption, ProviderSnapshotEntry } from "./agent-types.js";
2
+ export interface CompactProviderSnapshotModel extends Omit<AgentModelDefinition, "provider" | "thinkingOptions"> {
3
+ thinkingSet?: number;
4
+ }
5
+ export interface CompactProviderSnapshotEntry extends Omit<ProviderSnapshotEntry, "models"> {
6
+ models?: CompactProviderSnapshotModel[];
7
+ }
8
+ export interface ProviderSnapshotThinkingSet {
9
+ options: AgentSelectOption[];
10
+ defaultOptionId?: string;
11
+ }
12
+ export interface CompactProviderSnapshot {
13
+ entries: CompactProviderSnapshotEntry[];
14
+ thinkingSets: ProviderSnapshotThinkingSet[];
15
+ }
16
+ export declare function compactProviderSnapshot(entries: ProviderSnapshotEntry[]): CompactProviderSnapshot;
17
+ export declare function expandProviderSnapshot(snapshot: CompactProviderSnapshot): ProviderSnapshotEntry[];
18
+ //# sourceMappingURL=provider-snapshot-codec.d.ts.map
@@ -0,0 +1,71 @@
1
+ function thinkingSetKey(set) {
2
+ return JSON.stringify(set);
3
+ }
4
+ function compactModel({ provider: _provider, thinkingOptions, defaultThinkingOptionId, ...modelFields }, thinkingSets, thinkingSetIndexes) {
5
+ const compact = modelFields;
6
+ if (thinkingOptions === undefined) {
7
+ if (defaultThinkingOptionId !== undefined) {
8
+ compact.defaultThinkingOptionId = defaultThinkingOptionId;
9
+ }
10
+ return compact;
11
+ }
12
+ const thinkingSet = {
13
+ options: thinkingOptions,
14
+ ...(defaultThinkingOptionId !== undefined ? { defaultOptionId: defaultThinkingOptionId } : {}),
15
+ };
16
+ const key = thinkingSetKey(thinkingSet);
17
+ const existingIndex = thinkingSetIndexes.get(key);
18
+ if (existingIndex !== undefined) {
19
+ compact.thinkingSet = existingIndex;
20
+ return compact;
21
+ }
22
+ const index = thinkingSets.length;
23
+ thinkingSets.push(thinkingSet);
24
+ thinkingSetIndexes.set(key, index);
25
+ compact.thinkingSet = index;
26
+ return compact;
27
+ }
28
+ export function compactProviderSnapshot(entries) {
29
+ const thinkingSets = [];
30
+ const thinkingSetIndexes = new Map();
31
+ const compactEntries = entries.map((entry) => {
32
+ if (entry.models === undefined) {
33
+ return entry;
34
+ }
35
+ return {
36
+ ...entry,
37
+ models: entry.models.map((model) => compactModel(model, thinkingSets, thinkingSetIndexes)),
38
+ };
39
+ });
40
+ return { entries: compactEntries, thinkingSets };
41
+ }
42
+ function expandModel(provider, model, thinkingSets) {
43
+ const { thinkingSet: thinkingSetIndex, ...modelFields } = model;
44
+ if (thinkingSetIndex === undefined) {
45
+ return { provider, ...modelFields };
46
+ }
47
+ const thinkingSet = thinkingSets[thinkingSetIndex];
48
+ if (!thinkingSet) {
49
+ throw new RangeError(`Provider snapshot references missing thinking set ${thinkingSetIndex}`);
50
+ }
51
+ return {
52
+ provider,
53
+ ...modelFields,
54
+ thinkingOptions: thinkingSet.options,
55
+ ...(thinkingSet.defaultOptionId !== undefined
56
+ ? { defaultThinkingOptionId: thinkingSet.defaultOptionId }
57
+ : {}),
58
+ };
59
+ }
60
+ export function expandProviderSnapshot(snapshot) {
61
+ return snapshot.entries.map((entry) => {
62
+ const { models, ...entryFields } = entry;
63
+ if (models === undefined)
64
+ return entryFields;
65
+ return {
66
+ ...entryFields,
67
+ models: models.map((model) => expandModel(entryFields.provider, model, snapshot.thinkingSets)),
68
+ };
69
+ });
70
+ }
71
+ //# sourceMappingURL=provider-snapshot-codec.js.map
@@ -33,15 +33,16 @@ export declare const ScheduleCreateRequestSchema: z.ZodObject<{
33
33
  local: "local";
34
34
  }>>;
35
35
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
36
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
36
37
  approvalPolicy: z.ZodOptional<z.ZodString>;
37
38
  sandboxMode: z.ZodOptional<z.ZodString>;
38
39
  networkAccess: z.ZodOptional<z.ZodBoolean>;
39
40
  webSearch: z.ZodOptional<z.ZodBoolean>;
40
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
41
41
  extra: z.ZodOptional<z.ZodObject<{
42
42
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
43
43
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
44
44
  }, z.core.$strip>>;
45
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
45
46
  systemPrompt: z.ZodOptional<z.ZodString>;
46
47
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
47
48
  }, z.core.$strip>;
@@ -148,15 +149,16 @@ export declare const ScheduleCreateResponseSchema: z.ZodObject<{
148
149
  local: "local";
149
150
  }>>;
150
151
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
152
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
151
153
  approvalPolicy: z.ZodOptional<z.ZodString>;
152
154
  sandboxMode: z.ZodOptional<z.ZodString>;
153
155
  networkAccess: z.ZodOptional<z.ZodBoolean>;
154
156
  webSearch: z.ZodOptional<z.ZodBoolean>;
155
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
156
157
  extra: z.ZodOptional<z.ZodObject<{
157
158
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
158
159
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
159
160
  }, z.core.$strip>>;
161
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
160
162
  systemPrompt: z.ZodOptional<z.ZodString>;
161
163
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
162
164
  }, z.core.$strip>;
@@ -219,15 +221,16 @@ export declare const ScheduleListResponseSchema: z.ZodObject<{
219
221
  local: "local";
220
222
  }>>;
221
223
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
224
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
222
225
  approvalPolicy: z.ZodOptional<z.ZodString>;
223
226
  sandboxMode: z.ZodOptional<z.ZodString>;
224
227
  networkAccess: z.ZodOptional<z.ZodBoolean>;
225
228
  webSearch: z.ZodOptional<z.ZodBoolean>;
226
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
227
229
  extra: z.ZodOptional<z.ZodObject<{
228
230
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
229
231
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
230
232
  }, z.core.$strip>>;
233
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
231
234
  systemPrompt: z.ZodOptional<z.ZodString>;
232
235
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
233
236
  }, z.core.$strip>;
@@ -290,15 +293,16 @@ export declare const ScheduleInspectResponseSchema: z.ZodObject<{
290
293
  local: "local";
291
294
  }>>;
292
295
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
296
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
293
297
  approvalPolicy: z.ZodOptional<z.ZodString>;
294
298
  sandboxMode: z.ZodOptional<z.ZodString>;
295
299
  networkAccess: z.ZodOptional<z.ZodBoolean>;
296
300
  webSearch: z.ZodOptional<z.ZodBoolean>;
297
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
298
301
  extra: z.ZodOptional<z.ZodObject<{
299
302
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
300
303
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
301
304
  }, z.core.$strip>>;
305
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
302
306
  systemPrompt: z.ZodOptional<z.ZodString>;
303
307
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
304
308
  }, z.core.$strip>;
@@ -404,15 +408,16 @@ export declare const SchedulePauseResponseSchema: z.ZodObject<{
404
408
  local: "local";
405
409
  }>>;
406
410
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
411
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
407
412
  approvalPolicy: z.ZodOptional<z.ZodString>;
408
413
  sandboxMode: z.ZodOptional<z.ZodString>;
409
414
  networkAccess: z.ZodOptional<z.ZodBoolean>;
410
415
  webSearch: z.ZodOptional<z.ZodBoolean>;
411
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
412
416
  extra: z.ZodOptional<z.ZodObject<{
413
417
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
414
418
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
415
419
  }, z.core.$strip>>;
420
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
416
421
  systemPrompt: z.ZodOptional<z.ZodString>;
417
422
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
418
423
  }, z.core.$strip>;
@@ -475,15 +480,16 @@ export declare const ScheduleResumeResponseSchema: z.ZodObject<{
475
480
  local: "local";
476
481
  }>>;
477
482
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
483
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
478
484
  approvalPolicy: z.ZodOptional<z.ZodString>;
479
485
  sandboxMode: z.ZodOptional<z.ZodString>;
480
486
  networkAccess: z.ZodOptional<z.ZodBoolean>;
481
487
  webSearch: z.ZodOptional<z.ZodBoolean>;
482
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
483
488
  extra: z.ZodOptional<z.ZodObject<{
484
489
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
485
490
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
486
491
  }, z.core.$strip>>;
492
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
487
493
  systemPrompt: z.ZodOptional<z.ZodString>;
488
494
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
489
495
  }, z.core.$strip>;
@@ -554,15 +560,16 @@ export declare const ScheduleRunOnceResponseSchema: z.ZodObject<{
554
560
  local: "local";
555
561
  }>>;
556
562
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
563
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
557
564
  approvalPolicy: z.ZodOptional<z.ZodString>;
558
565
  sandboxMode: z.ZodOptional<z.ZodString>;
559
566
  networkAccess: z.ZodOptional<z.ZodBoolean>;
560
567
  webSearch: z.ZodOptional<z.ZodBoolean>;
561
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
562
568
  extra: z.ZodOptional<z.ZodObject<{
563
569
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
564
570
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
565
571
  }, z.core.$strip>>;
572
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
566
573
  systemPrompt: z.ZodOptional<z.ZodString>;
567
574
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
568
575
  }, z.core.$strip>;
@@ -643,15 +650,16 @@ export declare const ScheduleUpdateResponseSchema: z.ZodObject<{
643
650
  local: "local";
644
651
  }>>;
645
652
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
653
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
646
654
  approvalPolicy: z.ZodOptional<z.ZodString>;
647
655
  sandboxMode: z.ZodOptional<z.ZodString>;
648
656
  networkAccess: z.ZodOptional<z.ZodBoolean>;
649
657
  webSearch: z.ZodOptional<z.ZodBoolean>;
650
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
651
658
  extra: z.ZodOptional<z.ZodObject<{
652
659
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
653
660
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
654
661
  }, z.core.$strip>>;
662
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
655
663
  systemPrompt: z.ZodOptional<z.ZodString>;
656
664
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
657
665
  }, z.core.$strip>;
@@ -32,15 +32,16 @@ export declare const ScheduleTargetSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
32
32
  local: "local";
33
33
  }>>;
34
34
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
35
36
  approvalPolicy: z.ZodOptional<z.ZodString>;
36
37
  sandboxMode: z.ZodOptional<z.ZodString>;
37
38
  networkAccess: z.ZodOptional<z.ZodBoolean>;
38
39
  webSearch: z.ZodOptional<z.ZodBoolean>;
39
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
40
40
  extra: z.ZodOptional<z.ZodObject<{
41
41
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
42
42
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
43
43
  }, z.core.$strip>>;
44
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
44
45
  systemPrompt: z.ZodOptional<z.ZodString>;
45
46
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
46
47
  }, z.core.$strip>;
@@ -95,15 +96,16 @@ export declare const StoredScheduleSchema: z.ZodObject<{
95
96
  local: "local";
96
97
  }>>;
97
98
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
99
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
98
100
  approvalPolicy: z.ZodOptional<z.ZodString>;
99
101
  sandboxMode: z.ZodOptional<z.ZodString>;
100
102
  networkAccess: z.ZodOptional<z.ZodBoolean>;
101
103
  webSearch: z.ZodOptional<z.ZodBoolean>;
102
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
103
104
  extra: z.ZodOptional<z.ZodObject<{
104
105
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
105
106
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
106
107
  }, z.core.$strip>>;
108
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
107
109
  systemPrompt: z.ZodOptional<z.ZodString>;
108
110
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
109
111
  }, z.core.$strip>;
@@ -178,15 +180,16 @@ export declare const ScheduleSummarySchema: z.ZodObject<{
178
180
  local: "local";
179
181
  }>>;
180
182
  title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
183
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
181
184
  approvalPolicy: z.ZodOptional<z.ZodString>;
182
185
  sandboxMode: z.ZodOptional<z.ZodString>;
183
186
  networkAccess: z.ZodOptional<z.ZodBoolean>;
184
187
  webSearch: z.ZodOptional<z.ZodBoolean>;
185
- featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
186
188
  extra: z.ZodOptional<z.ZodObject<{
187
189
  codex: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
188
190
  claude: z.ZodOptional<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
189
191
  }, z.core.$strip>>;
192
+ featureValues: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
190
193
  systemPrompt: z.ZodOptional<z.ZodString>;
191
194
  mcpServers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
192
195
  }, z.core.$strip>;
@@ -32,11 +32,17 @@ export const ScheduleTargetSchema = z.discriminatedUnion("type", [
32
32
  archiveOnFinish: z.boolean().optional(),
33
33
  isolation: z.enum(["local", "worktree"]).optional(),
34
34
  title: z.string().trim().min(1).nullable().optional(),
35
+ providerOptions: z.record(z.string(), z.json()).optional(),
36
+ // COMPAT(flatProviderConfigFields): schedules persisted before v0.4.0 carry
37
+ // these flat provider fields instead of providerOptions, and Zod strips
38
+ // unknown keys - without them a stored schedule silently loses its
39
+ // approval/sandbox/network settings on the next rewrite. Re-added
40
+ // 2026-08-22; drop together with the AgentSessionConfigSchema copies when
41
+ // the client floor >= 0.8.13 (target 2027-02-22).
35
42
  approvalPolicy: z.string().trim().min(1).optional(),
36
43
  sandboxMode: z.string().trim().min(1).optional(),
37
44
  networkAccess: z.boolean().optional(),
38
45
  webSearch: z.boolean().optional(),
39
- featureValues: z.record(z.string(), z.unknown()).optional(),
40
46
  extra: z
41
47
  .object({
42
48
  codex: z.record(z.string(), z.unknown()).optional(),
@@ -44,6 +50,7 @@ export const ScheduleTargetSchema = z.discriminatedUnion("type", [
44
50
  })
45
51
  .partial()
46
52
  .optional(),
53
+ featureValues: z.record(z.string(), z.unknown()).optional(),
47
54
  systemPrompt: z.string().optional(),
48
55
  mcpServers: z.record(z.string(), z.unknown()).optional(),
49
56
  }),
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Ranked text matching shared by the app's pickers and the daemon's history
3
+ * search. A match is a tier plus the offset it was found at; lower is better on
4
+ * both, so callers sort ascending and never have to invent a scale.
5
+ *
6
+ * Typo tolerance is opt-in via `fuzzy`. The pickers leave it off — a combobox
7
+ * over a known list wants exact narrowing — while history search turns it on
8
+ * because the user is recalling a title from memory.
9
+ */
10
+ export interface MatchScore {
11
+ tier: number;
12
+ offset: number;
13
+ spread?: number;
14
+ }
15
+ export interface MatchOptions {
16
+ /** Omit or pass null to match exactly. `fuzzyPolicyForToken` picks a policy. */
17
+ fuzzy?: FuzzyPolicy | null;
18
+ }
19
+ /**
20
+ * How much a typo in one query token is forgiven. Short tokens get
21
+ * transpositions and nothing else: at four characters a free substitution turns
22
+ * "main" into "mail", "maid", and "rain", while a swap can only ever reach the
23
+ * word the user meant. Null means the token is matched exactly.
24
+ */
25
+ export interface FuzzyPolicy {
26
+ maxEdits: number;
27
+ transpositionsOnly: boolean;
28
+ }
29
+ export declare function fuzzyPolicyForToken(token: string): FuzzyPolicy | null;
30
+ export declare function scoreMatch(query: string, text: string, options?: MatchOptions): MatchScore | null;
31
+ export interface MatchRange {
32
+ start: number;
33
+ length: number;
34
+ }
35
+ /**
36
+ * Where a score's match actually landed, so a caller can mark it. Derived from
37
+ * a score rather than produced alongside one: ranking touches every candidate
38
+ * and needs no ranges, while only the handful of rows that get rendered do.
39
+ *
40
+ * The tier decides the shape. A substring hit is one span; a subsequence hit is
41
+ * the scattered characters it walked; a typo hit marks the whole word, because
42
+ * the characters the user got wrong are not in the text to point at.
43
+ */
44
+ export declare function matchRanges(query: string, text: string, score: MatchScore): MatchRange[];
45
+ export declare function compareMatchScores(a: MatchScore, b: MatchScore): number;
46
+ export declare function tokenizeQuery(query: string): string[];
47
+ export interface TextFieldsOptions {
48
+ /**
49
+ * Forgive typos. The budget is per token rather than per query, because a
50
+ * query mixes long words that can absorb an edit with short ones that cannot.
51
+ */
52
+ typoTolerant?: boolean;
53
+ }
54
+ export declare function scoreTextFields(query: string, fields: string[], options?: TextFieldsOptions): MatchScore | null;
55
+ //# sourceMappingURL=text-match.d.ts.map