@sema-agent/settings-schema 11.2.0 → 12.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 (66) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/README.md +2 -1
  3. package/conformance/VERSION +1 -1
  4. package/conformance/cases/c40-s712-identity-only-what-reads-out/expected.json +6 -3
  5. package/conformance/cases/c41-s792-encoded-pem-identity/expected.json +4 -2
  6. package/conformance/cases/c45-s792-identity-bounds-and-decode-depth/expected.json +4 -2
  7. package/conformance/cases/c46-s811-host-name-url-userinfo-withheld/expected.json +2 -1
  8. package/conformance/cases/c73-projects-extended-registration-reads/expected.json +150 -0
  9. package/conformance/cases/c73-projects-extended-registration-reads/input.json +42 -0
  10. package/conformance/cases/c73-projects-extended-registration-reads/meta.json +6 -0
  11. package/conformance/cases/c74-projects-over-bound-refused/expected.json +89 -0
  12. package/conformance/cases/c74-projects-over-bound-refused/input.json +29 -0
  13. package/conformance/cases/c74-projects-over-bound-refused/meta.json +5 -0
  14. package/conformance/cases/c75-projects-patch-remote-uniqueness/expected.json +89 -0
  15. package/conformance/cases/c75-projects-patch-remote-uniqueness/input.json +35 -0
  16. package/conformance/cases/c75-projects-patch-remote-uniqueness/meta.json +5 -0
  17. package/conformance/cases/cli01-model-name-nfc-vs-nfd/expected.json +4 -2
  18. package/conformance/cases/cli02-control-and-zero-width-chars/expected.json +4 -2
  19. package/dist/api/feedback.js +2 -3
  20. package/dist/api/scopes.js +2 -1
  21. package/dist/atomic-write.d.ts +6 -0
  22. package/dist/atomic-write.js +23 -6
  23. package/dist/cli.d.ts +8 -4
  24. package/dist/cli.js +55 -10
  25. package/dist/config-d-file.d.ts +12 -2
  26. package/dist/config-d-file.js +36 -9
  27. package/dist/config-dir-io.js +4 -3
  28. package/dist/config-dir-migration.d.ts +5 -3
  29. package/dist/config-dir-migration.js +19 -9
  30. package/dist/config-fns.d.ts +14 -2
  31. package/dist/config-fns.js +13 -1
  32. package/dist/cross-domain.d.ts +8 -3
  33. package/dist/cross-domain.js +23 -13
  34. package/dist/file-edit.js +7 -5
  35. package/dist/file-store.js +2 -1
  36. package/dist/fleet.js +3 -4
  37. package/dist/hooks.d.ts +14 -1
  38. package/dist/hooks.js +61 -16
  39. package/dist/host-path.d.ts +17 -0
  40. package/dist/host-path.js +22 -0
  41. package/dist/integer.js +2 -1
  42. package/dist/local-load.d.ts +1 -1
  43. package/dist/local-load.js +9 -31
  44. package/dist/migration-receipt.d.ts +4 -3
  45. package/dist/migration-receipt.js +1 -1
  46. package/dist/node.d.ts +1 -1
  47. package/dist/one-time-migrations.d.ts +6 -4
  48. package/dist/one-time-migrations.js +73 -6
  49. package/dist/quoted-issue.d.ts +41 -0
  50. package/dist/quoted-issue.js +35 -0
  51. package/dist/remote-exec.d.ts +3 -0
  52. package/dist/remote-exec.js +12 -7
  53. package/dist/resolve-roster.d.ts +1 -1
  54. package/dist/resolve-roster.js +3 -3
  55. package/dist/retired-role-words.d.ts +5 -0
  56. package/dist/retired-role-words.js +25 -0
  57. package/dist/rfc3339.d.ts +10 -0
  58. package/dist/rfc3339.js +12 -0
  59. package/dist/safety-merge-spec.d.ts +2 -2
  60. package/dist/types.d.ts +140 -32
  61. package/dist/types.js +215 -114
  62. package/dist/web-admin-credential.d.ts +2 -2
  63. package/dist/web-admin-credential.js +5 -10
  64. package/dist/write-failure.d.ts +16 -0
  65. package/dist/write-failure.js +43 -0
  66. package/package.json +1 -1
package/dist/types.d.ts CHANGED
@@ -32,19 +32,11 @@ export declare const ENV_NAME: z.ZodString;
32
32
  * fs path — so the worker dies at exec/boot, not at config edit. A NUL is never legitimate in a command / path
33
33
  * / host / image, so reject it on every exec-bound string field (mcp stdio + the whole remoteExec contract). R20. */
34
34
  export declare const hasNul: (s: string) => boolean;
35
- /** The params of a custom issue whose sentence QUOTES values (S-1075, 11.0.0) —— plain data: the sentence's fixed parts and the
36
- * values between them, in order, so `message` is exactly {@link renderQuotedSentence} of them. A reader that has to treat the
37
- * user-written parts of a sentence differently from its fixed words (a log boundary fingerprinting each value, the sanitizer
38
- * bounding each value's length) reads them HERE instead of guessing where a value starts in the sentence. Every custom issue this
39
- * package's schemas raise with a value in its sentence carries them (`issue.params`; a few fixed sentences raised through the same
40
- * helpers carry them with no operands). */
41
- export interface QuotedIssueParams {
42
- readonly template: readonly string[];
43
- readonly operands: readonly (string | number)[];
44
- }
45
- /** The one rendering of a quoted sentence: `template[0] + show(operands[0]) + template[1] + … + template[n]`. `show` defaults to
46
- * the value as written (that is how `message` is minted); a sanitizer / log boundary passes its own. */
47
- export declare function renderQuotedSentence(p: QuotedIssueParams, show?: (operand: string | number) => string): string;
35
+ /** The params of a custom issue's sentence and their one rendering live in the package-private minting module `./quoted-issue`
36
+ * (one minting point for the whole package); re-exported here unchanged. */
37
+ export { renderQuotedSentence, type QuotedIssueParams } from "./quoted-issue.js";
38
+ /** The one host-path shape judge (a task's `cwd`, a project's `folder` / `file` entries) lives in its leaf module `./host-path`. */
39
+ export { ABSOLUTE_HOST_PATH_MAX, AbsoluteHostPath, isAbsoluteHostPath } from "./host-path.js";
48
40
  /** Does `s` contain a secret-shaped token? —— **the one scanner** (11.0.0, S-1274): the write side (this detector, behind every
49
41
  * free-text write port — NON_SECRET_URL, mcp stdio, execution coords, ssh login, worker env, extraBody, …) and the display side
50
42
  * (`redactSecrets`) read the SAME normalized forms ({@link secretScanForms} in the package-private `./secret-scan`: the raw string,
@@ -62,15 +54,16 @@ export declare function urlQueryFragmentHasSecret(u: URL): boolean;
62
54
  /** A URL handed to `fetch` that carries no credential: judged by THE URL shape judge ({@link httpUrlFlaws}, `./url-shape`) — a
63
55
  * hierarchical http(s) URL with neither userinfo nor a fragment (an empty `#` included, 11.0.0) — and with no secret-shaped value
64
56
  * in its path or query ({@link urlQueryFragmentHasSecret}). One issue per flaw, its message the judge's rule sentence (no value
65
- * echoed; a fragment's also names its migration, {@link nonSecretUrlSentence}); `params.flaw` carries the rule word.
57
+ * echoed; a fragment's also names its migration, {@link nonSecretUrlIssue}); `params` carries the sentence (`template` / `operands`,
58
+ * no operands) and `flaw`, the rule word.
66
59
  *
67
- * This is the seat of every URL in a stored DOMAIN document (models `baseUrl`, mcp `url`, `sessionMirror.engineUrl`, workers
68
- * `gitApiBaseUrl`). A URL outside the domain documents — `remote-exec.json`'s endpoints, the web-admin credential envelope's
69
- * `issuer` — uses {@link NON_SECRET_URL_NO_MIGRATION}.
60
+ * This is the seat of every URL in a STORED document the one-time migration rewrites: the domain documents (models `baseUrl`, mcp `url`,
61
+ * `sessionMirror.engineUrl`, workers `gitApiBaseUrl`) and `config.d/remote-exec.json` (k8s `apiUrl`, `s3Snapshot.endpoint`). A URL
62
+ * that is not stored data — the web-admin credential envelope's `issuer`, a wire input — uses {@link NON_SECRET_URL_NO_MIGRATION}.
70
63
  *
71
64
  * The value is kept EXACTLY as written: nothing here trims or normalizes it (zod's own `.url()` would hand back a rewritten string). */
72
65
  export declare const NON_SECRET_URL: z.ZodString;
73
- /** {@link NON_SECRET_URL}'s judge for a seat no one-time migration reaches (not a domain document): identical rules and rule
66
+ /** {@link NON_SECRET_URL}'s judge for a seat no one-time migration reaches (not stored data): identical rules and rule
74
67
  * sentences, but a fragment's refusal carries no migration signpost — pointing at a migration that cannot rewrite the value would
75
68
  * send the operator to a command that does nothing for it. */
76
69
  export declare const NON_SECRET_URL_NO_MIGRATION: z.ZodString;
@@ -211,8 +204,6 @@ export declare const ModelRole: z.ZodEnum<{
211
204
  default: "default";
212
205
  summarize: "summarize";
213
206
  subagent: "subagent";
214
- team: "team";
215
- synthesize: "synthesize";
216
207
  verifier: "verifier";
217
208
  classifier: "classifier";
218
209
  consolidate: "consolidate";
@@ -325,8 +316,6 @@ export declare const ModelsConfig: z.ZodObject<{
325
316
  default: "default";
326
317
  summarize: "summarize";
327
318
  subagent: "subagent";
328
- team: "team";
329
- synthesize: "synthesize";
330
319
  verifier: "verifier";
331
320
  classifier: "classifier";
332
321
  consolidate: "consolidate";
@@ -382,8 +371,6 @@ export declare const RosterEntry: z.ZodObject<{
382
371
  default: "default";
383
372
  summarize: "summarize";
384
373
  subagent: "subagent";
385
- team: "team";
386
- synthesize: "synthesize";
387
374
  verifier: "verifier";
388
375
  classifier: "classifier";
389
376
  consolidate: "consolidate";
@@ -428,8 +415,6 @@ export declare const RostersConfig: z.ZodObject<{
428
415
  default: "default";
429
416
  summarize: "summarize";
430
417
  subagent: "subagent";
431
- team: "team";
432
- synthesize: "synthesize";
433
418
  verifier: "verifier";
434
419
  classifier: "classifier";
435
420
  consolidate: "consolidate";
@@ -580,6 +565,27 @@ export declare const LimitsConfig: z.ZodObject<{
580
565
  toolResultTtlSec: z.ZodOptional<z.ZodNumber>;
581
566
  }, z.core.$loose>;
582
567
  export type LimitsConfig = z.infer<typeof LimitsConfig>;
568
+ /** The autonomy ladder —— the closed set as a RUNTIME VALUE (same form as `REF_CHECKED_DOMAINS`): {@link AutonomyMode} (the zod enum)
569
+ * and its type are DERIVED from this table, so a consumer that needs the words at runtime (an env parser, a catalog's enum column) imports
570
+ * it instead of reaching into `GovernanceConfig.shape.autonomy.unwrap().options` or writing the four words again. */
571
+ export declare const AUTONOMY_MODES: readonly ["read-only", "ask", "plan", "auto"];
572
+ export type AutonomyMode = (typeof AUTONOMY_MODES)[number];
573
+ /** `governance.autonomy`'s enum, derived from {@link AUTONOMY_MODES}. */
574
+ export declare const AutonomyMode: z.ZodEnum<{
575
+ auto: "auto";
576
+ "read-only": "read-only";
577
+ ask: "ask";
578
+ plan: "plan";
579
+ }>;
580
+ /** A `commandPolicy[]` rule's decision —— the closed set as a RUNTIME VALUE; {@link CommandDecision} and its type are DERIVED from it. */
581
+ export declare const COMMAND_DECISIONS: readonly ["allow", "ask", "deny"];
582
+ export type CommandDecision = (typeof COMMAND_DECISIONS)[number];
583
+ /** `commandPolicy[].decision`'s enum, derived from {@link COMMAND_DECISIONS}. */
584
+ export declare const CommandDecision: z.ZodEnum<{
585
+ ask: "ask";
586
+ allow: "allow";
587
+ deny: "deny";
588
+ }>;
583
589
  export declare const GovernanceConfig: z.ZodObject<{
584
590
  autonomy: z.ZodOptional<z.ZodEnum<{
585
591
  auto: "auto";
@@ -1094,6 +1100,35 @@ export type ExecutionPolicy = z.infer<typeof ExecutionPolicy>;
1094
1100
  * flags:本常量刻意**不带** `i`,因为它是登记簿 Record 的**键**,大小写不同的同一个 UUID 会变成两条登记行
1095
1101
  * (同一 project 双注册);引擎侧是识别语义(读 marker / 找回身份),放宽合理。 */
1096
1102
  export declare const PROJECT_ID_REGEX: RegExp;
1103
+ /** The bounds of a project registration's free-form fields —— the ONE source of these numbers: the schema below reads them, and so do
1104
+ * the server's project routes and the admin / client forms (they import this, never copy a number). The path bound of `folder` / `file`
1105
+ * entries is the host-path judge's own ({@link ABSOLUTE_HOST_PATH_MAX}). */
1106
+ export declare const PROJECT_LIMITS: {
1107
+ readonly displayNameMax: 200;
1108
+ readonly goalMax: 2000;
1109
+ readonly contextItemsMax: 64;
1110
+ readonly noteMax: 4000;
1111
+ };
1112
+ /** A project context item's kind —— the closed set as a RUNTIME VALUE: `folder` / `file` = a host path (judged by the same
1113
+ * {@link isAbsoluteHostPath} as a task's `cwd`), `note` = free text. */
1114
+ export declare const PROJECT_CONTEXT_ITEM_KINDS: readonly ["folder", "file", "note"];
1115
+ export type ProjectContextItemKind = (typeof PROJECT_CONTEXT_ITEM_KINDS)[number];
1116
+ /** A project's icon: a token (lowercase letter first, then lowercase letters / digits / `-`, at most 64). Absent = the default icon. */
1117
+ export declare const PROJECT_ICON_REGEX: RegExp;
1118
+ /** A project's colour: `#` + six lowercase hex digits. Absent = the default colour. */
1119
+ export declare const PROJECT_COLOR_REGEX: RegExp;
1120
+ /** One context item of a project. */
1121
+ export declare const ProjectContextItem: z.ZodDiscriminatedUnion<[z.ZodObject<{
1122
+ kind: z.ZodLiteral<"folder">;
1123
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
1124
+ }, z.core.$strip>, z.ZodObject<{
1125
+ kind: z.ZodLiteral<"file">;
1126
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
1127
+ }, z.core.$strip>, z.ZodObject<{
1128
+ kind: z.ZodLiteral<"note">;
1129
+ value: z.ZodString;
1130
+ }, z.core.$strip>], "kind">;
1131
+ export type ProjectContextItem = z.infer<typeof ProjectContextItem>;
1097
1132
  export declare const ProjectRegistration: z.ZodObject<{
1098
1133
  displayName: z.ZodString;
1099
1134
  gitRemotes: z.ZodPrefault<z.ZodArray<z.ZodString>>;
@@ -1101,6 +1136,20 @@ export declare const ProjectRegistration: z.ZodObject<{
1101
1136
  registeredBy: z.ZodString;
1102
1137
  registeredAt: z.ZodString;
1103
1138
  notes: z.ZodOptional<z.ZodString>;
1139
+ goal: z.ZodOptional<z.ZodString>;
1140
+ contextItems: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1141
+ kind: z.ZodLiteral<"folder">;
1142
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
1143
+ }, z.core.$strip>, z.ZodObject<{
1144
+ kind: z.ZodLiteral<"file">;
1145
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
1146
+ }, z.core.$strip>, z.ZodObject<{
1147
+ kind: z.ZodLiteral<"note">;
1148
+ value: z.ZodString;
1149
+ }, z.core.$strip>], "kind">>>;
1150
+ archivedAt: z.ZodOptional<z.ZodISODateTime>;
1151
+ icon: z.ZodOptional<z.ZodString>;
1152
+ color: z.ZodOptional<z.ZodString>;
1104
1153
  }, z.core.$strip>;
1105
1154
  export type ProjectRegistration = z.infer<typeof ProjectRegistration>;
1106
1155
  export declare const ProjectsConfig: z.ZodObject<{
@@ -1111,9 +1160,57 @@ export declare const ProjectsConfig: z.ZodObject<{
1111
1160
  registeredBy: z.ZodString;
1112
1161
  registeredAt: z.ZodString;
1113
1162
  notes: z.ZodOptional<z.ZodString>;
1163
+ goal: z.ZodOptional<z.ZodString>;
1164
+ contextItems: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1165
+ kind: z.ZodLiteral<"folder">;
1166
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
1167
+ }, z.core.$strip>, z.ZodObject<{
1168
+ kind: z.ZodLiteral<"file">;
1169
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
1170
+ }, z.core.$strip>, z.ZodObject<{
1171
+ kind: z.ZodLiteral<"note">;
1172
+ value: z.ZodString;
1173
+ }, z.core.$strip>], "kind">>>;
1174
+ archivedAt: z.ZodOptional<z.ZodISODateTime>;
1175
+ icon: z.ZodOptional<z.ZodString>;
1176
+ color: z.ZodOptional<z.ZodString>;
1114
1177
  }, z.core.$strip>>>;
1115
1178
  }, z.core.$strip>;
1116
1179
  export type ProjectsConfig = z.infer<typeof ProjectsConfig>;
1180
+ /** The PATCH form of one registration: every key a PATCH may change, all optional; `registeredBy` / `registeredAt` (and any key
1181
+ * the registration does not have) are refused (`.strict()`). An optional key given `null` is cleared (merge-patch: `archivedAt: null`
1182
+ * un-archives). Each field is the registration's own schema — one bound, one shape. */
1183
+ export declare const ProjectRegistrationPatch: z.ZodObject<{
1184
+ displayName: z.ZodOptional<z.ZodString>;
1185
+ gitRemotes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1186
+ defaultScopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
1187
+ notes: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1188
+ goal: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1189
+ contextItems: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1190
+ kind: z.ZodLiteral<"folder">;
1191
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
1192
+ }, z.core.$strip>, z.ZodObject<{
1193
+ kind: z.ZodLiteral<"file">;
1194
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
1195
+ }, z.core.$strip>, z.ZodObject<{
1196
+ kind: z.ZodLiteral<"note">;
1197
+ value: z.ZodString;
1198
+ }, z.core.$strip>], "kind">>>>;
1199
+ archivedAt: z.ZodOptional<z.ZodNullable<z.ZodISODateTime>>;
1200
+ icon: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1201
+ color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1202
+ }, z.core.$strict>;
1203
+ export type ProjectRegistrationPatch = z.infer<typeof ProjectRegistrationPatch>;
1204
+ /**
1205
+ * Apply a PATCH to one registration and judge the whole document with **the same** {@link ProjectsConfig} (the same remote-uniqueness rule a
1206
+ * full write meets — a PATCH has no rule of its own). The patch is judged here by {@link ProjectRegistrationPatch} first — whatever the caller
1207
+ * did before (a request body handed over as is cannot rewrite `registeredBy` / `registeredAt` or carry an unknown key) — and only its parsed
1208
+ * keys are merged. The patched project is judged LAST, so a remote another project already holds is refused on the patched project and the
1209
+ * sentence names the holder, whatever the document's key order; a successful result keeps the document's key order. Every issue path is a
1210
+ * document coordinate (`["projects", <projectId>, …]`), the patch's own included. `projectId` must be registered (the caller answers "no such
1211
+ * project" first) —— otherwise this throws.
1212
+ */
1213
+ export declare function applyProjectPatch(doc: ProjectsConfig, projectId: string, patch: unknown): ReturnType<typeof ProjectsConfig.safeParse>;
1117
1214
  export declare const CollabTopology: z.ZodEnum<{
1118
1215
  star: "star";
1119
1216
  ring: "ring";
@@ -1874,12 +1971,14 @@ export declare const PluginsConfig: z.ZodObject<{
1874
1971
  export type PluginsConfig = z.infer<typeof PluginsConfig>;
1875
1972
  /** 提示声明的槽位闭集(core `PromptTextDeclaration.slot` 同形):identity = 角色卡、scenario = 场景说明、behavior = 行为守则。
1876
1973
  * declaration 轴与 catalog 轴({@link PromptArtifactSection})共用这一只。 */
1974
+ export declare const PROMPT_SLOTS: readonly ["identity", "scenario", "behavior"];
1975
+ export type PromptSlot = (typeof PROMPT_SLOTS)[number];
1976
+ /** The slot enum, DERIVED from {@link PROMPT_SLOTS} (the runtime member table —— same form as `REF_CHECKED_DOMAINS`). */
1877
1977
  export declare const PromptSlot: z.ZodEnum<{
1878
1978
  scenario: "scenario";
1879
1979
  identity: "identity";
1880
1980
  behavior: "behavior";
1881
1981
  }>;
1882
- export type PromptSlot = z.infer<typeof PromptSlot>;
1883
1982
  /** core `PromptTextDeclaration` 的契约层同形(core prompts/default.d.ts 逐字:id/slot 闭集/text)。
1884
1983
  * slot ↔ 三卡:identity=角色卡、scenario=场景说明、behavior=行为守则([1051]①)。 */
1885
1984
  export declare const PromptTextDeclaration: z.ZodObject<{
@@ -2227,8 +2326,6 @@ export declare const DOMAIN_SCHEMAS: {
2227
2326
  default: "default";
2228
2327
  summarize: "summarize";
2229
2328
  subagent: "subagent";
2230
- team: "team";
2231
- synthesize: "synthesize";
2232
2329
  verifier: "verifier";
2233
2330
  classifier: "classifier";
2234
2331
  consolidate: "consolidate";
@@ -2284,8 +2381,6 @@ export declare const DOMAIN_SCHEMAS: {
2284
2381
  default: "default";
2285
2382
  summarize: "summarize";
2286
2383
  subagent: "subagent";
2287
- team: "team";
2288
- synthesize: "synthesize";
2289
2384
  verifier: "verifier";
2290
2385
  classifier: "classifier";
2291
2386
  consolidate: "consolidate";
@@ -2781,6 +2876,20 @@ export declare const DOMAIN_SCHEMAS: {
2781
2876
  registeredBy: z.ZodString;
2782
2877
  registeredAt: z.ZodString;
2783
2878
  notes: z.ZodOptional<z.ZodString>;
2879
+ goal: z.ZodOptional<z.ZodString>;
2880
+ contextItems: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
2881
+ kind: z.ZodLiteral<"folder">;
2882
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
2883
+ }, z.core.$strip>, z.ZodObject<{
2884
+ kind: z.ZodLiteral<"file">;
2885
+ value: z.ZodString & z.ZodType<string, string, z.core.$ZodTypeInternals<string, string>>;
2886
+ }, z.core.$strip>, z.ZodObject<{
2887
+ kind: z.ZodLiteral<"note">;
2888
+ value: z.ZodString;
2889
+ }, z.core.$strip>], "kind">>>;
2890
+ archivedAt: z.ZodOptional<z.ZodISODateTime>;
2891
+ icon: z.ZodOptional<z.ZodString>;
2892
+ color: z.ZodOptional<z.ZodString>;
2784
2893
  }, z.core.$strip>>>;
2785
2894
  }, z.core.$strip>;
2786
2895
  readonly prompts: z.ZodObject<{
@@ -3027,4 +3136,3 @@ export declare const DOMAINS: DomainName[];
3027
3136
  * filtering arbitrary keys (e.g. a `config.d/` directory scan that also turns up the non-domain
3028
3137
  * `remote-exec.json`) — `remote-exec` is NOT a domain (it's the exec backend; see writeRemoteExec). */
3029
3138
  export declare function isDomainName(x: unknown): x is DomainName;
3030
- export {};