@rezti/dsh-rez-suite 0.1.62 → 0.1.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -1010,6 +1010,34 @@ function ChannelTable({ kind, lang }) {
1010
1010
  //#endregion
1011
1011
  //#region src/changelog.ts
1012
1012
  const SUITE_CHANGELOG = [
1013
+ {
1014
+ version: "0.1.64",
1015
+ date: "2026-09-13",
1016
+ sections: [{
1017
+ title: {
1018
+ zh: "跟官方 dsh 0.1.5",
1019
+ en: "Follow upstream dsh 0.1.5"
1020
+ },
1021
+ items: [{
1022
+ zh: "@deepseek-ai/* 钉到 0.1.5-rc.2。设置改用 ctx.settings.installSection。凭证按 version:1 + refs: 读写。依赖 sso@0.1.18 / intent@0.1.6 / token-manager@0.1.5 / vision@0.1.4。员工机请重装钉版 dsh 后再装本版 suite。",
1023
+ en: "Pin @deepseek-ai/* to 0.1.5-rc.2. Settings use ctx.settings.installSection. Credentials read/write version:1 + refs:. Depends on sso@0.1.18 / intent@0.1.6 / token-manager@0.1.5 / vision@0.1.4. Reinstall pinned dsh on staff machines, then this suite."
1024
+ }]
1025
+ }]
1026
+ },
1027
+ {
1028
+ version: "0.1.63",
1029
+ date: "2026-09-06",
1030
+ sections: [{
1031
+ title: {
1032
+ zh: "多公司改读公司包",
1033
+ en: "Multi-company from company pack"
1034
+ },
1035
+ items: [{
1036
+ zh: "人财法与搞钱/运营模板不再内嵌四家公司表;抬头与 company_id 以 Nextcloud org/chart.yaml 的 companies[] 为准(INDEX company_ref)。加公司只改 chart。",
1037
+ en: "HR/finance/legal and boss money/ops templates no longer embed a four-company table. Names and company_id come from Nextcloud org/chart.yaml companies[] (INDEX company_ref). Add companies only in chart."
1038
+ }]
1039
+ }]
1040
+ },
1013
1041
  {
1014
1042
  version: "0.1.62",
1015
1043
  date: "2026-09-05",
package/lib/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/types.d.ts
1
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.3/node_modules/@deepseek-ai/cosmokit/lib/types/types.d.ts
2
2
  declare function isArrayBufferLike(value: any): value is ArrayBufferLike;
3
3
  declare function isArrayBufferSource(value: any): value is Binary.Source;
4
4
  /** Binary source detection and base64/hex conversion helpers. */
@@ -13,7 +13,7 @@ declare namespace Binary {
13
13
  function fromHex(source: string): ArrayBuffer;
14
14
  }
15
15
  //#endregion
16
- //#region ../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.2/node_modules/@deepseek-ai/cosmokit/lib/types/misc.d.ts
16
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cosmokit@1.8.3/node_modules/@deepseek-ai/cosmokit/lib/types/misc.d.ts
17
17
  /** String/symbol keyed dictionary type. */
18
18
  type Dict<T = any, K extends string | symbol = string> = { [key in K]: T };
19
19
  /** Wrap a value in `Promise`, preserving the resolved type of existing promises. */
@@ -99,7 +99,7 @@ declare namespace StandardSchemaV1 {
99
99
  }
100
100
  /** The Standard JSON Schema interface. */
101
101
  //#endregion
102
- //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-include@1.0.6_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/utils.d.ts
102
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/cordis/lib/types/utils.d.ts
103
103
  /** Ordered collection of disposable values with O(1) deletion by value. */
104
104
  declare class DisposableList<T extends WeakKey> {
105
105
  private sn;
@@ -132,7 +132,7 @@ declare const symbols: {
132
132
  resolveConfig: typeof Service.resolveConfig;
133
133
  };
134
134
  //#endregion
135
- //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-include@1.0.6_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/registry.d.ts
135
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/cordis/lib/types/registry.d.ts
136
136
  /**
137
137
  * Service dependency declaration accepted by plugins and the `@Inject`
138
138
  * decorator.
@@ -324,7 +324,7 @@ declare class RegistryService {
324
324
  plugin(plugin: Plugin, config?: any, getOuterStack?: () => string[]): Fiber & PromiseLike<Fiber>;
325
325
  }
326
326
  //#endregion
327
- //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-include@1.0.6_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/reflect.d.ts
327
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/cordis/lib/types/reflect.d.ts
328
328
  declare module './context.ts' {
329
329
  interface Context {
330
330
  /**
@@ -508,7 +508,7 @@ declare class ReflectService {
508
508
  bind<T extends Function>(callback: T): T;
509
509
  }
510
510
  //#endregion
511
- //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-include@1.0.6_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/fiber.d.ts
511
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/cordis/lib/types/fiber.d.ts
512
512
  declare module './context.ts' {
513
513
  interface Context extends Pick<Fiber, 'effect'> {
514
514
  /** The fiber (plugin runtime instance) that owns this context. */
@@ -670,7 +670,7 @@ declare class Fiber {
670
670
  update(config: any, noSave?: boolean): void | Promise<void>;
671
671
  }
672
672
  //#endregion
673
- //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-include@1.0.6_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/events.d.ts
673
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/cordis/lib/types/events.d.ts
674
674
  /** Extract the parameter tuple from a function type. */
675
675
  type Parameters<F> = F extends ((...args: infer P) => any) ? P : never;
676
676
  /** Extract the return type from a function type. */
@@ -901,7 +901,7 @@ interface Events {
901
901
  'internal/dispatch'(mode: DispatchMode, name: string, args: any[], thisArg: any): void;
902
902
  }
903
903
  //#endregion
904
- //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-include@1.0.6_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/logger.d.ts
904
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/cordis/lib/types/logger.d.ts
905
905
  declare module './context.ts' {
906
906
  interface Intercept {
907
907
  logger: LoggerService.Intercept;
@@ -989,7 +989,7 @@ declare class LoggerService {
989
989
  [symbols.invoke](name?: string): Logger;
990
990
  }
991
991
  //#endregion
992
- //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-include@1.0.6_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/context.d.ts
992
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/cordis/lib/types/context.d.ts
993
993
  /**
994
994
  * Public shape of a Cordis context.
995
995
  *
@@ -1084,7 +1084,7 @@ declare class Context {
1084
1084
  intercept(name: string, config: any): this;
1085
1085
  }
1086
1086
  //#endregion
1087
- //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.1_@deepseek-ai+cordis-plugin-include@1.0.6_@deepseek-ai+cordis-plugin-loader@1.0.2/node_modules/@deepseek-ai/cordis/lib/types/service.d.ts
1087
+ //#region ../../node_modules/.pnpm/@deepseek-ai+cordis@4.0.2/node_modules/@deepseek-ai/cordis/lib/types/service.d.ts
1088
1088
  /**
1089
1089
  * Base class for services that expose a named API on `ctx`.
1090
1090
  *
@@ -1138,7 +1138,7 @@ declare abstract class Service<out T = never> {
1138
1138
  static [Symbol.hasInstance](instance: any): boolean;
1139
1139
  }
1140
1140
  //#endregion
1141
- //#region ../../node_modules/.pnpm/@deepseek-ai+schemastery@3.18.1/node_modules/@deepseek-ai/schemastery/lib/types/index.d.ts
1141
+ //#region ../../node_modules/.pnpm/@deepseek-ai+schemastery@3.18.2/node_modules/@deepseek-ai/schemastery/lib/types/index.d.ts
1142
1142
  declare const kSchema: unique symbol;
1143
1143
  declare global {
1144
1144
  namespace Schemastery {
@@ -1332,350 +1332,6 @@ declare class ValidationError extends TypeError {
1332
1332
  type Schema<S = any, T = S> = Schemastery<S, T>;
1333
1333
  declare const Schema: Schemastery.Static;
1334
1334
  //#endregion
1335
- //#region ../../node_modules/.pnpm/@deepseek-ai+dsh-settings@0.1.0-rc.6_@deepseek-ai+cordis@4.0.1_@deepseek-ai+dsh-brand@0_52495af71738a1095726249ceff4fd7b/node_modules/@deepseek-ai/dsh-settings/lib/types/redact.d.ts
1336
- /** One schema-declared secret position inside a redacted value. */
1337
- interface RedactedSecret {
1338
- /** Path from the section root to the removed field (concrete dict keys and array indexes included). */
1339
- path: string[];
1340
- /** Whether the field held a value before redaction. */
1341
- set: boolean;
1342
- }
1343
- //#endregion
1344
- //#region ../../node_modules/.pnpm/@deepseek-ai+dsh-brand@0.1.0-rc.6_@deepseek-ai+cordis@4.0.1_@deepseek-ai+dsh-invariants_757bf6a984ac37281430ad822ab10469/node_modules/@deepseek-ai/dsh-brand/lib/types/index.d.ts
1345
- /**
1346
- * The `Branded<B>` nominal-typing primitive — a type-only utility (no runtime
1347
- * code, no harness-package dependency) shared by every package that owns a
1348
- * cross-boundary id.
1349
- *
1350
- * A brand makes structurally-identical strings non-interchangeable at the type
1351
- * level: a `SessionId` cannot be passed where a `CallId` is expected, even
1352
- * though both are plain strings at runtime. Construction goes through a per-id
1353
- * factory in the OWNING package (a plain cast inside — zero runtime cost);
1354
- * comparison, logging, and serialization all behave as ordinary strings.
1355
- *
1356
- * Policy: a package brands the ids it owns — `CallId` in dsh-llm (tool-call
1357
- * correlation), the shared agent/session `SessionId` in dsh-session, and
1358
- * `JobId` in dsh-jobs. Branding is for ids that cross package boundaries and
1359
- * could plausibly be confused; not every string needs a brand.
1360
- * This package owns ONLY the primitive — no concrete id, no runtime code beyond
1361
- * the (erased) type — so the brand vocabulary stays dependency-free and a
1362
- * package can brand its ids without depending on an unrelated capability
1363
- * package.
1364
- *
1365
- * @module @deepseek-ai/dsh-brand
1366
- */
1367
- declare const BRAND: unique symbol;
1368
- /** A string carrying a compile-time-only brand `B`. */
1369
- type Branded<B extends string> = string & {
1370
- readonly [BRAND]: B;
1371
- };
1372
- //#endregion
1373
- //#region ../../node_modules/.pnpm/@deepseek-ai+dsh-settings@0.1.0-rc.6_@deepseek-ai+cordis@4.0.1_@deepseek-ai+dsh-brand@0_52495af71738a1095726249ceff4fd7b/node_modules/@deepseek-ai/dsh-settings/lib/types/types.d.ts
1374
- /** Nominal id of one registered settings namespace. */
1375
- type SettingsNamespace = Branded<'SettingsNamespace'>;
1376
- /** Origin of one committed settings change. */
1377
- type SettingsUpdateSource = 'update' | 'provider';
1378
- declare module '@deepseek-ai/cordis' {
1379
- interface Events {
1380
- /**
1381
- * Committed change to one registered namespace's resolved value. Emitted
1382
- * after the provider persisted (for `update`) or published (`provider`)
1383
- * the change; never emitted when the resolved value is deep-equal.
1384
- * Listener failures are contained and logged — a sync throw and an async
1385
- * rejection alike — except `INVARIANT`-coded failures, which rethrow
1386
- * after every listener ran; that rethrow reaches the emitter only from
1387
- * synchronous listeners, so invariant checks on this event must not be
1388
- * async functions.
1389
- * @param ns - the namespace whose resolved value changed.
1390
- * @param next - the new resolved value.
1391
- * @param prev - the previous resolved value.
1392
- * @param source - whether the change entered through `update()` or the provider.
1393
- * @mode emit
1394
- */
1395
- 'settings/updated'(ns: SettingsNamespace, next: unknown, prev: unknown, source: SettingsUpdateSource): void;
1396
- /**
1397
- * One registered namespace's RAW user section changed, whether or not the
1398
- * resolved value did. `settings/updated` is the consumer-facing event and
1399
- * stays deep-equal-gated; this one exists for configuration surfaces,
1400
- * which must learn that a field went from inherited to overridden (same
1401
- * resolved value, different meaning) and that their held revision is
1402
- * stale. Listener containment matches `settings/updated`.
1403
- * @param ns - the namespace whose stored section changed.
1404
- * @param revision - the namespace's new revision.
1405
- * @mode emit
1406
- */
1407
- 'settings/document-updated'(ns: SettingsNamespace, revision: number): void;
1408
- }
1409
- } //# sourceMappingURL=types.d.ts.map
1410
- //#endregion
1411
- //#region ../../node_modules/.pnpm/@deepseek-ai+dsh-settings@0.1.0-rc.6_@deepseek-ai+cordis@4.0.1_@deepseek-ai+dsh-brand@0_52495af71738a1095726249ceff4fd7b/node_modules/@deepseek-ai/dsh-settings/lib/types/index.d.ts
1412
- /** When a namespace's changes take effect for its owner. */
1413
- type SettingsApplies = 'live' | 'restart';
1414
- /** Registration options beyond the namespace schema. */
1415
- interface SettingsRegisterOptions<T> {
1416
- /** Composition-layer values resolved below the user layer (entry-config subset). */
1417
- base?: Partial<T>;
1418
- /** Owner's effect timing, surfaced to configuration UIs; defaults to `live`. */
1419
- applies?: SettingsApplies;
1420
- /**
1421
- * Reject a resolved section the owner could not act on, for constraints its
1422
- * schema cannot express — a cross-field requirement, or one field's validity
1423
- * depending on another's. Throwing here refuses the *write* that produced the
1424
- * value, so a caller learns at `update`/`replace`/`mutate` instead of storing
1425
- * something that would silently disable the owner.
1426
- *
1427
- * Kept separate from the schema because the schema is also what a
1428
- * configuration surface renders and what an absent section resolves through;
1429
- * folding a cross-field check into it would change both.
1430
- *
1431
- * Once the owner is registered, a stored section that fails this keeps the
1432
- * namespace's last good value and warns, exactly as a schema failure does,
1433
- * so an externally edited document cannot strand a running owner. At
1434
- * registration there is no last good value yet, so a stored section that
1435
- * already fails rejects the registration itself — again exactly as a schema
1436
- * failure does.
1437
- * @param value - the resolved section, schema-valid by construction.
1438
- */
1439
- validate?: (value: T) => void;
1440
- }
1441
- /** One registered namespace as surfaced to configuration UIs. */
1442
- interface SettingsDescriptor {
1443
- /** The registered namespace. */
1444
- ns: SettingsNamespace;
1445
- /** Serialized schemastery schema (`schema.toJSON()`). */
1446
- schema: unknown;
1447
- /** Current resolved value. */
1448
- value: unknown;
1449
- /**
1450
- * Monotonic revision of the raw user section this descriptor was read at.
1451
- * Send it back as `expectedRevision` on a write to refuse a stale one.
1452
- */
1453
- revision: number;
1454
- /** Registrant's composition `base` layer (detached), when one was declared. */
1455
- base?: unknown;
1456
- /**
1457
- * Raw user section from the stored document (detached), when one exists and
1458
- * is well-formed; a field's presence here is what marks it user-overridden.
1459
- */
1460
- user?: unknown;
1461
- /** Owner's declared effect timing. */
1462
- applies: SettingsApplies;
1463
- /** Schema-declared secret positions; present only under `redactSecrets`. */
1464
- secrets?: RedactedSecret[];
1465
- }
1466
- /** Options for {@link SettingsProvider.describe}. */
1467
- interface SettingsDescribeOptions {
1468
- /**
1469
- * Strip `role('secret')` fields from `value`/`base`/`user` and enumerate
1470
- * them in each descriptor's `secrets`. Every wire surface MUST pass this;
1471
- * the verbatim default exists for same-process configuration UIs only.
1472
- */
1473
- redactSecrets?: boolean;
1474
- }
1475
- /** Owner-facing handle for one registered namespace. */
1476
- interface SettingsScope<T> {
1477
- /** Current resolved value: schema defaults, then `base`, then the user layer. */
1478
- get(): T;
1479
- /**
1480
- * Observe committed changes to this namespace's resolved value. Invocations
1481
- * of one callback run asynchronously, one at a time, in commit order; a
1482
- * rejection is contained and logged like a sync throw. After the disposer
1483
- * returns, no further invocation starts — one already queued is skipped;
1484
- * one already started still settles, and service disposal waits for it.
1485
- * @param callback - invoked after each commit with the next and previous values.
1486
- * @returns the disposer removing this observer.
1487
- */
1488
- watch(callback: (next: T, prev: T) => void | Promise<void>): () => void;
1489
- /**
1490
- * Merge a partial patch into this namespace's user layer and persist it.
1491
- * @param patch - plain-object patch over the user section; JSON-compatible data
1492
- * only (non-JSON values reject with their path before anything persists).
1493
- */
1494
- update(patch: object): Promise<void>;
1495
- /**
1496
- * Replace this namespace's user section wholesale; absent keys re-inherit
1497
- * the composition `base` and schema defaults (`replace({})` resets all).
1498
- * @param section - the complete next user section; JSON-compatible data only,
1499
- * as for {@link update}.
1500
- */
1501
- replace(section: object): Promise<void>;
1502
- }
1503
- declare module '@deepseek-ai/cordis' {
1504
- interface Context {
1505
- settings: SettingsProvider;
1506
- }
1507
- }
1508
- /**
1509
- * Deep equality over JSON-compatible data (objects, arrays, primitives) — the
1510
- * Service Definition's single change-detection predicate, exported so the invariant
1511
- * companion checks exactly the implementation's relation.
1512
- * @param a - one JSON-compatible value.
1513
- * @param b - the other JSON-compatible value.
1514
- * @returns whether the two values are structurally equal.
1515
- */
1516
- /**
1517
- * One path-addressed edit to a namespace's user section. Path mutation exists
1518
- * for a caller holding an INCOMPLETE view of the section — a configuration UI
1519
- * reads the redacted descriptor, which by construction never received the
1520
- * `role('secret')` fields. Such a caller can name the field it means without
1521
- * restating the section: a wholesale `replace` rebuilt from a redacted
1522
- * document silently deletes every secret the wire never returned.
1523
- */
1524
- type SettingsPathOp = {
1525
- op: 'set';
1526
- path: readonly string[];
1527
- value: unknown;
1528
- } | {
1529
- op: 'unset';
1530
- path: readonly string[];
1531
- };
1532
- /**
1533
- * Abstract settings service. Providers implement raw-document storage
1534
- * (`load`/`persist`) and push external changes through {@link Settings.publish};
1535
- * the base class owns namespace registration, resolution, validation, change
1536
- * detection, and the `settings/updated` commit event.
1537
- */
1538
- declare abstract class SettingsProvider extends Service {
1539
- private readonly registrations;
1540
- /** Latest published raw document; empty until the provider's first publish. */
1541
- private document;
1542
- /** Per-namespace write chains; settled tails, so a failure never poisons the queue. */
1543
- private readonly writeQueues;
1544
- /** In-flight watcher invocation segments, drained by the dispose teardown. */
1545
- private readonly pendingTails;
1546
- /** Set at service dispose: refuse new writes while queued ones drain. */
1547
- private stopped;
1548
- /** Opaque read of {@link stopped}: control flow cannot narrow it across awaits. */
1549
- private isStopped;
1550
- constructor(ctx: Context);
1551
- /**
1552
- * Load the provider's document once and publish it before the service
1553
- * becomes injectable, and register the write-drain teardown. Providers with
1554
- * their own init (watchers, connections) delegate here first via
1555
- * `yield* super[Service.init]()`; their disposers then run before the drain.
1556
- */
1557
- [Service.init](): AsyncGenerator<() => Promise<void> | void, void, void>;
1558
- /** Whether {@link update} may persist through this provider. */
1559
- abstract readonly writable: boolean;
1560
- /**
1561
- * Absolute path of the provider's user-editable document, when its storage
1562
- * is one local file. Configuration surfaces use this only as availability
1563
- * metadata; the guarded open operation resolves the path again Host-side.
1564
- * Non-file providers leave it undefined and expose no open-document affordance.
1565
- * @returns the absolute local document path, or undefined for non-file storage.
1566
- */
1567
- get documentPath(): string | undefined;
1568
- /**
1569
- * Prepare the provider's user-editable document for a native editor. File
1570
- * providers may materialize an absent document before returning its path;
1571
- * non-file providers return undefined.
1572
- * @returns the absolute local document path, or undefined for non-file storage.
1573
- */
1574
- prepareDocument(): Promise<string | undefined>;
1575
- /**
1576
- * Read the provider's current raw document (namespace to raw section).
1577
- * @returns the detached raw document.
1578
- */
1579
- protected abstract load(): Promise<Record<string, unknown>>;
1580
- /**
1581
- * Durably store one namespace's merged user section.
1582
- * @param ns - the namespace being written.
1583
- * @param section - the complete merged user section to store.
1584
- */
1585
- protected abstract persist(ns: SettingsNamespace, section: Record<string, unknown>): Promise<void>;
1586
- /**
1587
- * Register a namespace schema and receive its owner scope. The registration
1588
- * is an effect on the calling plugin's fiber: disposing that fiber removes
1589
- * the namespace and its observers. An invalid stored section fails the
1590
- * registration itself — the earliest point where the schema can judge it.
1591
- * @param ns - unique namespace; duplicate registration fails loud.
1592
- * @param schema - schemastery schema resolving this namespace's value.
1593
- * @param options - composition `base` layer and effect timing.
1594
- * @returns the owner scope for reads, observation, and updates.
1595
- */
1596
- register<T>(ns: SettingsNamespace, schema: Schema<T>, options?: SettingsRegisterOptions<T>): SettingsScope<T>;
1597
- /**
1598
- * Describe every registered namespace for configuration surfaces, including
1599
- * the composition `base` and raw user layers so a form can mark which fields
1600
- * the user overrode (presence in `user`) and what a reset returns to.
1601
- * @param options - redaction switch; wire surfaces must redact.
1602
- * @returns one descriptor per registered namespace, in registration order.
1603
- */
1604
- describe(options?: SettingsDescribeOptions): SettingsDescriptor[];
1605
- /**
1606
- * Read one registered namespace's resolved value.
1607
- * @param ns - the namespace to read.
1608
- * @returns the resolved value, or `undefined` while unregistered.
1609
- */
1610
- get(ns: SettingsNamespace): unknown;
1611
- /**
1612
- * Merge a patch into one registered namespace's user layer, validate the
1613
- * resolved candidate, persist through the provider, then commit and emit.
1614
- * A validation failure rejects before anything is persisted. Writes to one
1615
- * namespace are serialized: concurrent updates apply in call order, each
1616
- * merging over the previous write's committed section.
1617
- * @param ns - the registered namespace to update.
1618
- * @param patch - plain-object patch over the user section.
1619
- * @param expectedRevision - the descriptor `revision` the caller read; a
1620
- * namespace that moved past it rejects with {@link SettingsConflictError}.
1621
- */
1622
- update(ns: SettingsNamespace, patch: object, expectedRevision?: number): Promise<void>;
1623
- /**
1624
- * Replace one registered namespace's user section wholesale, validate,
1625
- * persist, then commit and emit. Keys absent from `section` fall back to the
1626
- * composition `base` and schema defaults — this is the removal/reset path a
1627
- * merge-only patch cannot express (`replace({})` re-inherits everything).
1628
- * @param ns - the registered namespace to replace.
1629
- * @param section - the complete next user section.
1630
- * @param expectedRevision - the descriptor `revision` the caller read; a
1631
- * namespace that moved past it rejects with {@link SettingsConflictError}.
1632
- */
1633
- replace(ns: SettingsNamespace, section: object, expectedRevision?: number): Promise<void>;
1634
- /**
1635
- * Apply path-addressed edits to one registered namespace's user section,
1636
- * validate, persist, then commit and emit. The ops are applied to the
1637
- * section as it stands when the write reaches the front of the queue, so a
1638
- * caller never has to restate fields it did not touch — and, crucially,
1639
- * cannot delete fields it never saw. This is the write path for any caller
1640
- * holding a redacted view; `replace` remains the wholesale reset.
1641
- * @param ns - the registered namespace to edit.
1642
- * @param ops - ordered path edits; later ops observe earlier ones.
1643
- * @param expectedRevision - the descriptor `revision` the caller read; a
1644
- * namespace that moved past it rejects with {@link SettingsConflictError}.
1645
- */
1646
- mutate(ns: SettingsNamespace, ops: readonly SettingsPathOp[], expectedRevision?: number): Promise<void>;
1647
- /** Validate a write, then queue it on the namespace's serialized write chain. */
1648
- private write;
1649
- /**
1650
- * Provider hook: commit a complete raw document observed in storage. Each
1651
- * registered namespace re-resolves; an invalid section keeps that
1652
- * namespace's last good value and warns, other namespaces still commit.
1653
- * @param doc - the detached raw document (unregistered sections preserved).
1654
- * @param source - change origin; defaults to `provider`.
1655
- */
1656
- protected publish(doc: Record<string, unknown>, source?: SettingsUpdateSource): void;
1657
- /** Read one namespace's raw user section, rejecting non-object sections. */
1658
- private section;
1659
- /** Resolve one namespace value: schema defaults, then `base`, then the user layer. */
1660
- private resolve;
1661
- /**
1662
- * Advance a namespace's revision when its RAW section changed, and announce
1663
- * it. Deliberately independent of {@link commit}'s resolved-value equality:
1664
- * storing an override equal to the composition base leaves the resolved
1665
- * value alone but changes what the document says, which is exactly what a
1666
- * configuration surface must re-read.
1667
- */
1668
- private bumpRevision;
1669
- /** Contained fan-out of `settings/document-updated`, mirroring {@link commit}'s. */
1670
- private emitDocumentUpdated;
1671
- /** Commit a resolved value when changed: swap, notify watchers, emit the event. */
1672
- private commit;
1673
- /** Contained-watcher diagnostic shared by the sync and async failure paths. */
1674
- private warnWatcherFailure;
1675
- /** Contained-listener diagnostic shared by the sync and async failure paths. */
1676
- private warnListenerFailure;
1677
- }
1678
- //#endregion
1679
1335
  //#region src/protocol.d.ts
1680
1336
  /** Agent role, the preset-loader key. */
1681
1337
  declare const REZ_ROLE_IDS: readonly ["all", "boss", "engineer", "sales", "operations"];
@@ -1765,7 +1421,8 @@ interface RezConfig {
1765
1421
  //#region src/index.d.ts
1766
1422
  declare const name = "rez-suite";
1767
1423
  declare const inject: string[];
1768
- declare const REZ_SETTINGS_NAMESPACE: SettingsNamespace;
1424
+ /** Host settings namespace (plain id; dsh 0.1.5+ no longer exports settingsNamespace()). */
1425
+ declare const REZ_SETTINGS_NAMESPACE = "dsh-rez-suite";
1769
1426
  declare const Config: Schema<RezConfig>;
1770
1427
  declare const REZ_GUIDANCE_CORE: string;
1771
1428
  declare function rezGuidanceFor(role: RezConfig['role']): string;