dominus-sdk-nodejs 11.0.2 → 11.0.5

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/README.md +351 -371
  2. package/dist/contract/index.d.ts +3 -0
  3. package/dist/contract/index.d.ts.map +1 -0
  4. package/dist/contract/index.js +3 -0
  5. package/dist/contract/index.js.map +1 -0
  6. package/dist/contract/node-envelope.d.ts +12 -0
  7. package/dist/contract/node-envelope.d.ts.map +1 -0
  8. package/dist/contract/node-envelope.js +16 -0
  9. package/dist/contract/node-envelope.js.map +1 -0
  10. package/dist/contract/node-projections.d.ts +15 -0
  11. package/dist/contract/node-projections.d.ts.map +1 -0
  12. package/dist/contract/node-projections.js +4 -0
  13. package/dist/contract/node-projections.js.map +1 -0
  14. package/dist/lib/config.d.ts +3 -2
  15. package/dist/lib/config.d.ts.map +1 -1
  16. package/dist/lib/config.js +4 -3
  17. package/dist/lib/config.js.map +1 -1
  18. package/dist/lib/errors.d.ts +7 -0
  19. package/dist/lib/errors.d.ts.map +1 -1
  20. package/dist/lib/errors.js +53 -0
  21. package/dist/lib/errors.js.map +1 -1
  22. package/dist/lib/recovery-action.d.ts +4 -0
  23. package/dist/lib/recovery-action.d.ts.map +1 -0
  24. package/dist/lib/recovery-action.js +29 -0
  25. package/dist/lib/recovery-action.js.map +1 -0
  26. package/dist/namespaces/portal.d.ts +10 -0
  27. package/dist/namespaces/portal.d.ts.map +1 -1
  28. package/dist/namespaces/portal.js +11 -0
  29. package/dist/namespaces/portal.js.map +1 -1
  30. package/dist/namespaces/secrets.d.ts +5 -1
  31. package/dist/namespaces/secrets.d.ts.map +1 -1
  32. package/dist/namespaces/secrets.js +15 -1
  33. package/dist/namespaces/secrets.js.map +1 -1
  34. package/docs/agent-guide/2026-06-27-0849-sdk-orient/00-reading-order.md +35 -35
  35. package/docs/agent-guide/2026-06-27-0849-sdk-orient/01-purpose-and-boundaries.md +48 -48
  36. package/docs/agent-guide/2026-06-27-0849-sdk-orient/02-repo-map-and-entrypoints.md +46 -46
  37. package/docs/agent-guide/2026-06-27-0849-sdk-orient/03-api-surface.md +59 -59
  38. package/docs/agent-guide/2026-06-27-0849-sdk-orient/04-data-state-and-storage.md +36 -36
  39. package/docs/agent-guide/2026-06-27-0849-sdk-orient/05-integrations-and-runtime.md +40 -40
  40. package/docs/agent-guide/2026-06-27-0849-sdk-orient/06-workflows-commands-and-ci.md +58 -58
  41. package/docs/agent-guide/2026-06-27-0849-sdk-orient/07-operations-release-and-live-proof.md +40 -40
  42. package/docs/agent-guide/2026-06-27-0849-sdk-orient/08-security-privacy-and-secrets.md +38 -38
  43. package/docs/agent-guide/2026-06-27-0849-sdk-orient/09-known-risks-and-debt.md +34 -34
  44. package/docs/agent-guide/2026-06-27-0849-sdk-orient/10-agent-playbook.md +48 -48
  45. package/docs/agent-guide/2026-08-04-sdk-nodejs/00-reading-order.md +11 -11
  46. package/docs/agent-guide/2026-08-04-sdk-nodejs/01-purpose-and-boundaries.md +14 -14
  47. package/docs/agent-guide/2026-08-04-sdk-nodejs/03-api-surface.md +16 -16
  48. package/docs/agent-guide/2026-08-04-sdk-nodejs/10-agent-playbook.md +14 -14
  49. package/docs/agent-guide/INDEX.md +14 -14
  50. package/docs/agent-guide/current.md +22 -22
  51. package/docs/architecture.md +119 -119
  52. package/docs/atlas/2026-07-24-1231-sdk-nodejs-blockers.md +15 -15
  53. package/docs/atlas/2026-07-24-1231-sdk-nodejs-proof-ladder.md +25 -25
  54. package/docs/atlas/2026-07-24-1231-sdk-nodejs-truthmap.md +43 -43
  55. package/docs/atlas/2026-08-04-sdk-nodejs-blockers.md +12 -12
  56. package/docs/atlas/2026-08-04-sdk-nodejs-proof-ladder.md +9 -9
  57. package/docs/atlas/2026-08-04-sdk-nodejs-truthmap.md +21 -21
  58. package/docs/atlas/INDEX.md +26 -26
  59. package/docs/janitor/2026-06-27-0849-sdk-orient-cleanup-audit.md +102 -102
  60. package/docs/janitor/2026-08-04-sdk-nodejs-cleanup-audit.md +14 -14
  61. package/docs/migration-error-base.md +115 -0
  62. package/docs/plans/2026-08-04-pending-work-fruition-summary.md +46 -46
  63. package/docs/routes-services.md +80 -80
  64. package/docs/usage-reference.md +698 -698
  65. package/docs/workflow-hard-cut-release.md +24 -24
  66. package/package.json +55 -55
@@ -1,102 +1,102 @@
1
- # Janitor Cleanup Audit: dominus-sdk-nodejs
2
-
3
- Generated: 2026-06-27 08:49 local
4
- Target repo: C:\developer\codingroot\repos\dominus_active\dominus-sdk-nodejs
5
- Git root: C:\developer\codingroot\repos\dominus_active\dominus-sdk-nodejs
6
- Branch/status: `production` — clean before this pass (no tracked or untracked changes).
7
-
8
- ## Summary
9
-
10
- Wrote a source-backed agent-guide pack and wired it into `README.md` and
11
- `CLAUDE.md`. Corrected one proven-stale fact ("no committed automated tests")
12
- in three places. Auto-cleaned generated `dist/` (gitignored, reproducible).
13
- Everything left uncommitted per instructions. No tracked source, branches,
14
- worktrees, plans, or release artifacts deleted.
15
-
16
- ## Executive Actions Applied
17
-
18
- | Action | Path | Why safe | Verification |
19
- |---|---|---|---|
20
- | Wrote agent-guide pack | `docs/agent-guide/**` | New docs only; no source touched. | Files present; INDEX/current point at snapshot. |
21
- | Wrote cleanup audit | `docs/janitor/2026-06-27-0849-sdk-orient-cleanup-audit.md` | New doc only. | This file. |
22
- | Wired guide into README | `README.md` | Added small "Agent Guide" section near top; no other content changed. | `git diff README.md` is the one added block. |
23
- | Wired guide into CLAUDE | `CLAUDE.md` | Added "Agent Guide Pack" pointer near top. | `git diff CLAUDE.md`. |
24
- | Fixed stale tests fact | `CLAUDE.md`, `docs/architecture.md` | `tests/` has 24 committed files run by `npm test`; old "no committed tests" claim was provably false. | `ls tests` (24 files); `package.json scripts.test` lists them. |
25
- | Auto-clean generated build | `dist/` | Gitignored, untracked, reproducible via `npm run build`; `prepublishOnly` rebuilds it. | `git check-ignore dist` = ignored; `git ls-files dist` empty; post-delete `git status` shows no tracked change. |
26
-
27
- ## Docs Written
28
-
29
- | File | Purpose | Source-backed by |
30
- |---|---|---|
31
- | `docs/agent-guide/INDEX.md` | Stable entrypoint + snapshot history. | repo layout. |
32
- | `docs/agent-guide/current.md` | Latest snapshot pointer + top-5 refresh facts. | `package.json`, `src/index.ts`, `tests/`. |
33
- | `.../00-reading-order.md` | Read order + per-task source map + stale flags. | existing docs, `src/`. |
34
- | `.../01-purpose-and-boundaries.md` | Purpose, ownership, runtime class, boundary. | `package.json`, `CLAUDE.md`, workflows. |
35
- | `.../02-repo-map-and-entrypoints.md` | Directory map + entrypoints. | `find src`, `package.json`, `.github/workflows`. |
36
- | `.../03-api-surface.md` | 27 namespaces + auth/scope map. | `src/index.ts` wiring, `routes-services.md`. |
37
- | `.../04-data-state-and-storage.md` | Storage surfaces + in-process caches. | `docs/architecture.md` §2a, `src/lib/*`. |
38
- | `.../05-integrations-and-runtime.md` | Deps, gateway routing, env categories. | `package.json`, `CLAUDE.md`, `src/lib/config.ts`. |
39
- | `.../06-workflows-commands-and-ci.md` | Commands + CI lanes. | `package.json scripts`, `.github/workflows`. |
40
- | `.../07-operations-release-and-live-proof.md` | npm release lane + proof. | `publish-production.yml`, `package.json`, `workflow-hard-cut-release.md`. |
41
- | `.../08-security-privacy-and-secrets.md` | Auth boundaries, secret resolution. | `CLAUDE.md`, `src/lib/config.ts`, `.gitignore`. |
42
- | `.../09-known-risks-and-debt.md` | Stale docs, doc-drift, generated residue. | this audit, `docs/*`. |
43
- | `.../10-agent-playbook.md` | If-changing-X-read-Y + Kyle routing. | `CLAUDE.md`, `src/`. |
44
-
45
- ## Drift Findings
46
-
47
- | Finding | Evidence | Risk | Recommendation | Approval needed |
48
- |---|---|---|---|---|
49
- | "No committed automated tests" claim stale | `tests/` has 24 files; `package.json scripts.test` runs them | Low (misleads agents) | Fixed in CLAUDE.md + architecture.md §10 | Done |
50
- | Hand-maintained counts may drift | `routes-services.md` says "450 commands / 29 surfaces"; actual `src/namespaces/` = 27 files | Low | Noted in 09 + architecture §10; re-derive from source before quoting | No |
51
-
52
- ## Stale Or Conflicting Docs
53
-
54
- | Doc | Problem | Stronger source | Proposed action |
55
- |---|---|---|---|
56
- | `docs/architecture.md` §10 | claimed no committed tests | `tests/` + `package.json` | Fixed (replaced with count-drift note). |
57
- | `CLAUDE.md` Validation | "If tests are absent" framing | `tests/` (24 files) | Fixed to state tests are committed. |
58
- | `routes-services.md` counts | "29 namespace surfaces" vs 27 top-level files | `src/namespaces/` | Left as-is (counts include `ai.*` sub-namespaces + `auth` local helpers; not provably wrong). Flagged for re-derivation. |
59
-
60
- ## Orphan / Generated / Scratch Candidates
61
-
62
- | Path | Evidence | Proposed action | Safe now? |
63
- |---|---|---|---|
64
- | `dist/` | gitignored build output (~1.6 MB) | Deleted | Yes (done) |
65
- | `node_modules/` | gitignored installed deps | Leave; not in the auto-apply allowlist; reproducible via `npm ci` but may be in use by a dev session | Not auto-deleted |
66
-
67
- ## Auto-Cleanup Performed
68
-
69
- | Path | Evidence | Action | Verification |
70
- |---|---|---|---|
71
- | `dist/` | `git check-ignore dist` = ignored; `git ls-files dist` empty; reproducible via `npm run build` | `rm -rf dist` | Post-delete `git status` shows no tracked change; rebuild with `npm run build`. |
72
-
73
- ## Expert Review Queue
74
-
75
- | Candidate | Why expert should view it first | Suggested expert | First review question |
76
- |---|---|---|---|
77
- | `routes-services.md` "450 commands / 29 surfaces" reconciliation | Authoritative re-count of public commands vs. the maintained matrix touches the platform client contract surface | dominus-expert | Are the documented counts accurate against current `src/namespaces/*.ts`, and should they be regenerated by a script instead of hand-maintained? |
78
-
79
- ## Worktree / Branch / Plan Residue
80
-
81
- | Item | Evidence | Proposed action | Owner |
82
- |---|---|---|---|
83
- | None | Single repo dir; no `.git/worktrees` scratch, no stray plans found | None | — |
84
-
85
- ## Approval Queue
86
-
87
- - [ ] Delete `node_modules/` (reproducible via `npm ci`) — only if no dev session is using it — validate with `npm ci && npm test`.
88
-
89
- ## Not Touching
90
-
91
- - `dist/` rebuild — left for the developer to regenerate via `npm run build`.
92
- - `node_modules/` — installed deps; outside the granted auto-clean allowlist.
93
- - `docs/usage-reference.md` (~98 KB) — large reference, not rewritten; only flagged for count drift.
94
- - All tracked source, `CHANGELOG.md` history, CI workflows, branches.
95
-
96
- ## Follow-Up Skills
97
-
98
- | Need | Skill | First action |
99
- |---|---|---|
100
- | Reconcile documented command counts | dominus-expert | Re-count public commands against `src/namespaces/`. |
101
- | If truth scatters across code/docs/CI | kyle-atlas | Build `docs/atlas/INDEX.md`. |
102
- | Durable cross-repo facts | kyle-learn | Promote to `.claude/knowledge` if reused. |
1
+ # Janitor Cleanup Audit: dominus-sdk-nodejs
2
+
3
+ Generated: 2026-06-27 08:49 local
4
+ Target repo: C:\developer\codingroot\repos\dominus_active\dominus-sdk-nodejs
5
+ Git root: C:\developer\codingroot\repos\dominus_active\dominus-sdk-nodejs
6
+ Branch/status: `production` — clean before this pass (no tracked or untracked changes).
7
+
8
+ ## Summary
9
+
10
+ Wrote a source-backed agent-guide pack and wired it into `README.md` and
11
+ `CLAUDE.md`. Corrected one proven-stale fact ("no committed automated tests")
12
+ in three places. Auto-cleaned generated `dist/` (gitignored, reproducible).
13
+ Everything left uncommitted per instructions. No tracked source, branches,
14
+ worktrees, plans, or release artifacts deleted.
15
+
16
+ ## Executive Actions Applied
17
+
18
+ | Action | Path | Why safe | Verification |
19
+ |---|---|---|---|
20
+ | Wrote agent-guide pack | `docs/agent-guide/**` | New docs only; no source touched. | Files present; INDEX/current point at snapshot. |
21
+ | Wrote cleanup audit | `docs/janitor/2026-06-27-0849-sdk-orient-cleanup-audit.md` | New doc only. | This file. |
22
+ | Wired guide into README | `README.md` | Added small "Agent Guide" section near top; no other content changed. | `git diff README.md` is the one added block. |
23
+ | Wired guide into CLAUDE | `CLAUDE.md` | Added "Agent Guide Pack" pointer near top. | `git diff CLAUDE.md`. |
24
+ | Fixed stale tests fact | `CLAUDE.md`, `docs/architecture.md` | `tests/` has 24 committed files run by `npm test`; old "no committed tests" claim was provably false. | `ls tests` (24 files); `package.json scripts.test` lists them. |
25
+ | Auto-clean generated build | `dist/` | Gitignored, untracked, reproducible via `npm run build`; `prepublishOnly` rebuilds it. | `git check-ignore dist` = ignored; `git ls-files dist` empty; post-delete `git status` shows no tracked change. |
26
+
27
+ ## Docs Written
28
+
29
+ | File | Purpose | Source-backed by |
30
+ |---|---|---|
31
+ | `docs/agent-guide/INDEX.md` | Stable entrypoint + snapshot history. | repo layout. |
32
+ | `docs/agent-guide/current.md` | Latest snapshot pointer + top-5 refresh facts. | `package.json`, `src/index.ts`, `tests/`. |
33
+ | `.../00-reading-order.md` | Read order + per-task source map + stale flags. | existing docs, `src/`. |
34
+ | `.../01-purpose-and-boundaries.md` | Purpose, ownership, runtime class, boundary. | `package.json`, `CLAUDE.md`, workflows. |
35
+ | `.../02-repo-map-and-entrypoints.md` | Directory map + entrypoints. | `find src`, `package.json`, `.github/workflows`. |
36
+ | `.../03-api-surface.md` | 27 namespaces + auth/scope map. | `src/index.ts` wiring, `routes-services.md`. |
37
+ | `.../04-data-state-and-storage.md` | Storage surfaces + in-process caches. | `docs/architecture.md` §2a, `src/lib/*`. |
38
+ | `.../05-integrations-and-runtime.md` | Deps, gateway routing, env categories. | `package.json`, `CLAUDE.md`, `src/lib/config.ts`. |
39
+ | `.../06-workflows-commands-and-ci.md` | Commands + CI lanes. | `package.json scripts`, `.github/workflows`. |
40
+ | `.../07-operations-release-and-live-proof.md` | npm release lane + proof. | `publish-production.yml`, `package.json`, `workflow-hard-cut-release.md`. |
41
+ | `.../08-security-privacy-and-secrets.md` | Auth boundaries, secret resolution. | `CLAUDE.md`, `src/lib/config.ts`, `.gitignore`. |
42
+ | `.../09-known-risks-and-debt.md` | Stale docs, doc-drift, generated residue. | this audit, `docs/*`. |
43
+ | `.../10-agent-playbook.md` | If-changing-X-read-Y + Kyle routing. | `CLAUDE.md`, `src/`. |
44
+
45
+ ## Drift Findings
46
+
47
+ | Finding | Evidence | Risk | Recommendation | Approval needed |
48
+ |---|---|---|---|---|
49
+ | "No committed automated tests" claim stale | `tests/` has 24 files; `package.json scripts.test` runs them | Low (misleads agents) | Fixed in CLAUDE.md + architecture.md §10 | Done |
50
+ | Hand-maintained counts may drift | `routes-services.md` says "450 commands / 29 surfaces"; actual `src/namespaces/` = 27 files | Low | Noted in 09 + architecture §10; re-derive from source before quoting | No |
51
+
52
+ ## Stale Or Conflicting Docs
53
+
54
+ | Doc | Problem | Stronger source | Proposed action |
55
+ |---|---|---|---|
56
+ | `docs/architecture.md` §10 | claimed no committed tests | `tests/` + `package.json` | Fixed (replaced with count-drift note). |
57
+ | `CLAUDE.md` Validation | "If tests are absent" framing | `tests/` (24 files) | Fixed to state tests are committed. |
58
+ | `routes-services.md` counts | "29 namespace surfaces" vs 27 top-level files | `src/namespaces/` | Left as-is (counts include `ai.*` sub-namespaces + `auth` local helpers; not provably wrong). Flagged for re-derivation. |
59
+
60
+ ## Orphan / Generated / Scratch Candidates
61
+
62
+ | Path | Evidence | Proposed action | Safe now? |
63
+ |---|---|---|---|
64
+ | `dist/` | gitignored build output (~1.6 MB) | Deleted | Yes (done) |
65
+ | `node_modules/` | gitignored installed deps | Leave; not in the auto-apply allowlist; reproducible via `npm ci` but may be in use by a dev session | Not auto-deleted |
66
+
67
+ ## Auto-Cleanup Performed
68
+
69
+ | Path | Evidence | Action | Verification |
70
+ |---|---|---|---|
71
+ | `dist/` | `git check-ignore dist` = ignored; `git ls-files dist` empty; reproducible via `npm run build` | `rm -rf dist` | Post-delete `git status` shows no tracked change; rebuild with `npm run build`. |
72
+
73
+ ## Expert Review Queue
74
+
75
+ | Candidate | Why expert should view it first | Suggested expert | First review question |
76
+ |---|---|---|---|
77
+ | `routes-services.md` "450 commands / 29 surfaces" reconciliation | Authoritative re-count of public commands vs. the maintained matrix touches the platform client contract surface | dominus-expert | Are the documented counts accurate against current `src/namespaces/*.ts`, and should they be regenerated by a script instead of hand-maintained? |
78
+
79
+ ## Worktree / Branch / Plan Residue
80
+
81
+ | Item | Evidence | Proposed action | Owner |
82
+ |---|---|---|---|
83
+ | None | Single repo dir; no `.git/worktrees` scratch, no stray plans found | None | — |
84
+
85
+ ## Approval Queue
86
+
87
+ - [ ] Delete `node_modules/` (reproducible via `npm ci`) — only if no dev session is using it — validate with `npm ci && npm test`.
88
+
89
+ ## Not Touching
90
+
91
+ - `dist/` rebuild — left for the developer to regenerate via `npm run build`.
92
+ - `node_modules/` — installed deps; outside the granted auto-clean allowlist.
93
+ - `docs/usage-reference.md` (~98 KB) — large reference, not rewritten; only flagged for count drift.
94
+ - All tracked source, `CHANGELOG.md` history, CI workflows, branches.
95
+
96
+ ## Follow-Up Skills
97
+
98
+ | Need | Skill | First action |
99
+ |---|---|---|
100
+ | Reconcile documented command counts | dominus-expert | Re-count public commands against `src/namespaces/`. |
101
+ | If truth scatters across code/docs/CI | kyle-atlas | Build `docs/atlas/INDEX.md`. |
102
+ | Durable cross-repo facts | kyle-learn | Promote to `.claude/knowledge` if reused. |
@@ -1,14 +1,14 @@
1
- # Janitor cleanup audit: dominus-sdk-nodejs
2
-
3
- Generated: 2026-08-04 local.
4
-
5
- Refreshed the README and guide/atlas indexes, added a current reading-order
6
- pack, and mapped the root package surface, namespace ownership, lifecycle
7
- truth, secret/admin surfaces, and registry release path. Added a neutral
8
- pending-work summary for the preserved linked worktrees.
9
-
10
- No implementation branch or linked worktree was merged, rebased, deleted, or
11
- modified. Historical docs remain available. The Class D release metadata was
12
- bumped from 10.0.0 to 10.0.1 after verifying 10.0.1 was absent from the npm
13
- registry. After `npm ci` in the isolated snapshot, build, type tests, and the
14
- full 106-test runtime suite passed. `git diff --check` was run before commit.
1
+ # Janitor cleanup audit: dominus-sdk-nodejs
2
+
3
+ Generated: 2026-08-04 local.
4
+
5
+ Refreshed the README and guide/atlas indexes, added a current reading-order
6
+ pack, and mapped the root package surface, namespace ownership, lifecycle
7
+ truth, secret/admin surfaces, and registry release path. Added a neutral
8
+ pending-work summary for the preserved linked worktrees.
9
+
10
+ No implementation branch or linked worktree was merged, rebased, deleted, or
11
+ modified. Historical docs remain available. The Class D release metadata was
12
+ bumped from 10.0.0 to 10.0.1 after verifying 10.0.1 was absent from the npm
13
+ registry. After `npm ci` in the isolated snapshot, build, type tests, and the
14
+ full 106-test runtime suite passed. `git diff --check` was run before commit.
@@ -0,0 +1,115 @@
1
+ # Node SDK Error Migration Guide: `DominusError` Subclasses
2
+
3
+ **Version:** v1 (existing class names preserved) → planned v2 (deprecation warnings) → v3 (alias removal)
4
+
5
+ **ADR:** [0010-sdk-exception-base-name.md](https://github.com/carebridgesystems/dominus-platform/blob/main/docs/adr/0010-sdk-exception-base-name.md) (Seams fork 6)
6
+
7
+ This document is the S-4.8 / M-2 migration note. **No behavior change in v1.**
8
+
9
+ ---
10
+
11
+ ## (a) What changed
12
+
13
+ The Node SDK already uses one canonical base, `DominusError`. Existing public
14
+ exception class names remain subclasses of that base. `DominusError.toJSON()`
15
+ emits the canonical envelope (`kind`, `code`, `request_id`, `http_status`,
16
+ `envelope_version: "1"`, `recovery_action`).
17
+
18
+ | Canonical Kind | Existing class (v1) | Default HTTP |
19
+ |-------------------------|-------------------------|--------------|
20
+ | `unauthorized` | `AuthenticationError` | 401 |
21
+ | `forbidden` | `AuthorizationError` | 403 |
22
+ | `not_found` | `NotFoundError` | 404 |
23
+ | `validation_failed` | `ValidationError` | 400 |
24
+ | `conflict` | `ConflictError` | 409 |
25
+ | `upstream_unavailable` | `ServiceError` | 500 |
26
+ | `timeout` | `TimeoutError` | — |
27
+
28
+ `ConnectionError` and `SecureTableError` also subclass `DominusError`.
29
+ `raiseForStatus` still maps HTTP status codes to these same classes.
30
+
31
+ ---
32
+
33
+ ## (b) What stayed
34
+
35
+ **Every existing public class name is preserved** in v1.
36
+ `AuthenticationError` and the other historical names still subclass
37
+ `DominusError`. Existing `instanceof` checks keep working.
38
+
39
+ ```ts
40
+ import { AuthenticationError, DominusError } from 'dominus-sdk-nodejs';
41
+
42
+ const err = new AuthenticationError('bad token');
43
+ err instanceof AuthenticationError; // true
44
+ err instanceof DominusError; // true
45
+ err.kind; // "unauthorized"
46
+ ```
47
+
48
+ Existing catch sites do **not** need to change in v1.
49
+
50
+ ---
51
+
52
+ ## (c) How to migrate
53
+
54
+ **Recommended v1 pattern** — catch `DominusError` and dispatch on `kind`:
55
+
56
+ ```ts
57
+ import { DominusError } from 'dominus-sdk-nodejs';
58
+
59
+ try {
60
+ await dominus.stash.put(/* ... */);
61
+ } catch (err) {
62
+ if (err instanceof DominusError) {
63
+ if (err.kind === 'unauthorized') reauth();
64
+ else if (err.kind === 'rate_limited') backoff(err);
65
+ else throw err;
66
+ } else {
67
+ throw err;
68
+ }
69
+ }
70
+ ```
71
+
72
+ ---
73
+
74
+ ## (d) v1 import pattern (now)
75
+
76
+ ```ts
77
+ import {
78
+ DominusError,
79
+ AuthenticationError,
80
+ AuthorizationError,
81
+ NotFoundError,
82
+ ValidationError,
83
+ ConflictError,
84
+ ServiceError,
85
+ ConnectionError,
86
+ TimeoutError,
87
+ SecureTableError,
88
+ raiseForStatus,
89
+ } from 'dominus-sdk-nodejs';
90
+ ```
91
+
92
+ These names remain the public API in v1. They are the aliases that v2 will
93
+ deprecate in favor of catching `DominusError` and branching on `kind`.
94
+
95
+ ---
96
+
97
+ ## (e) v2 deprecation timeline
98
+
99
+ - **v1** (current): Existing exception class names remain `DominusError`
100
+ subclasses. **No warnings. No behavior change.**
101
+ - **v2** (next major): The historical names (`AuthenticationError`,
102
+ `AuthorizationError`, `ValidationError`, `ServiceError`, `ConnectionError`,
103
+ `SecureTableError`) become deprecated aliases. They still construct and
104
+ catch the same errors.
105
+ - **v3** (later): Those aliases are removed. Consumers catch `DominusError`
106
+ (or a per-`kind` subclass) and dispatch on `kind`.
107
+
108
+ The deprecation window is governed by `dominus-cli/docs/deprecation-policy.md`.
109
+
110
+ ---
111
+
112
+ ## (f) Rollback
113
+
114
+ Pin the SDK to the current major if you must stay on the historical class
115
+ names only. v1 is fully backward-compatible; you can stay on it indefinitely.
@@ -1,46 +1,46 @@
1
- # Pending work fruition summary: dominus-sdk-nodejs
2
-
3
- Generated: 2026-08-04 local. This note analyzes existing linked work without
4
- changing it.
5
-
6
- ## What is present
7
-
8
- The repository has four local linked worktrees around two related themes. The
9
- timeline contract v9 line adds a target query filter and retires the older
10
- company query option. The secret-presence-grid v10 lines add safe presence
11
- data, persisted root-role exposure, and preview code-point counting; reconciled
12
- and release branches carry the latest versions of that work. The main checkout
13
- was not modified and the current production snapshot is separate from those
14
- feature branches.
15
-
16
- ## Likely path to completion
17
-
18
- 1. Compare the timeline and secret-presence branches with current `production`
19
- and choose one coherent SDK contract candidate. Preserve backward
20
- compatibility only where the server contract still requires it.
21
- 2. Trace the timeline query change through Authority methods, generated/public
22
- types, tests, and README examples; confirm the retired company option is
23
- absent where intended and target filtering is consistently shaped.
24
- 3. Trace the secret-presence change through admin/secrets namespaces, preview
25
- counting, root-role projections, public types, and server endpoints. Keep
26
- all responses value-safe and avoid implying secret availability from
27
- indeterminate provider state.
28
- 4. Run build, type tests, the full Node test suite, and focused contract tests
29
- on the reconciled candidate. Then bump the package version once for the
30
- actual release candidate and verify the new version is absent from the
31
- registry.
32
- 5. Push the exact `production` candidate and use the publish workflow plus
33
- registry/version verification to establish package completion. Pair that
34
- with downstream Gateway/worker contract proof where the SDK behavior is
35
- load-bearing.
36
-
37
- ## Open questions
38
-
39
- - Whether timeline v9 and secret-presence v10 should ship together or as two
40
- independently versioned SDK releases.
41
- - Whether persisted root-role data is already available in every targeted
42
- server environment or needs a typed unavailable state in the SDK.
43
- - Which release branch is canonical among the reconciled and release worktrees.
44
-
45
- These questions are intentionally left for contract/release review; the
46
- existing implementation remains untouched.
1
+ # Pending work fruition summary: dominus-sdk-nodejs
2
+
3
+ Generated: 2026-08-04 local. This note analyzes existing linked work without
4
+ changing it.
5
+
6
+ ## What is present
7
+
8
+ The repository has four local linked worktrees around two related themes. The
9
+ timeline contract v9 line adds a target query filter and retires the older
10
+ company query option. The secret-presence-grid v10 lines add safe presence
11
+ data, persisted root-role exposure, and preview code-point counting; reconciled
12
+ and release branches carry the latest versions of that work. The main checkout
13
+ was not modified and the current production snapshot is separate from those
14
+ feature branches.
15
+
16
+ ## Likely path to completion
17
+
18
+ 1. Compare the timeline and secret-presence branches with current `production`
19
+ and choose one coherent SDK contract candidate. Preserve backward
20
+ compatibility only where the server contract still requires it.
21
+ 2. Trace the timeline query change through Authority methods, generated/public
22
+ types, tests, and README examples; confirm the retired company option is
23
+ absent where intended and target filtering is consistently shaped.
24
+ 3. Trace the secret-presence change through admin/secrets namespaces, preview
25
+ counting, root-role projections, public types, and server endpoints. Keep
26
+ all responses value-safe and avoid implying secret availability from
27
+ indeterminate provider state.
28
+ 4. Run build, type tests, the full Node test suite, and focused contract tests
29
+ on the reconciled candidate. Then bump the package version once for the
30
+ actual release candidate and verify the new version is absent from the
31
+ registry.
32
+ 5. Push the exact `production` candidate and use the publish workflow plus
33
+ registry/version verification to establish package completion. Pair that
34
+ with downstream Gateway/worker contract proof where the SDK behavior is
35
+ load-bearing.
36
+
37
+ ## Open questions
38
+
39
+ - Whether timeline v9 and secret-presence v10 should ship together or as two
40
+ independently versioned SDK releases.
41
+ - Whether persisted root-role data is already available in every targeted
42
+ server environment or needs a typed unavailable state in the SDK.
43
+ - Which release branch is canonical among the reconciled and release worktrees.
44
+
45
+ These questions are intentionally left for contract/release review; the
46
+ existing implementation remains untouched.
@@ -1,80 +1,80 @@
1
- # Routes, Services, and Endpoints Assessment
2
-
3
- This assessment is derived from all public namespace methods under `src/namespaces/` and their configured routes in SDK request calls.
4
-
5
- Audited commands: **~450** (hand-counted) across **27** top-level namespace files in `src/namespaces/`. The Service Matrix below lists **29** namespace surfaces because it expands dotted sub-namespaces (e.g. `ai.*` and `auth.*`) into their own rows, so the surface count is intentionally higher than the file count, not a typo. These totals are hand-maintained — re-derive from source before quoting.
6
-
7
- ## Service Matrix
8
-
9
- | Service | Commands | Namespaces | Distinct Route Expressions | Notes |
10
- |---|---:|---|---:|---|
11
- | `guardian` | 146 | dominus.auth | 146 | HTTP API routes via Dominus client. |
12
- | `agent-runtime` | 53 | dominus.ai, dominus.ai.artifacts, dominus.ai.rag, dominus.ai.results, dominus.ai.tools, dominus.ai.workflow | 51 | HTTP API routes via Dominus client. |
13
- | `workflow-manager` | 38 | dominus.workflow | 36 | HTTP API routes via Dominus client. |
14
- | `authority` | 33 | dominus.authority | 33 | Hard-cut app/org/env Authority surface. |
15
- | `platform-worker` | 16 | dominus.platform | 16 | Gateway `/svc/platform/*` group/repository policy surface; policy helpers accept actor attribution headers. |
16
- | `coder-runtime` | 11 | dominus.coder | 11 | Gateway `/svc/coder/*` run lifecycle surface; launch requires exactly one workflow or pipeline recipe ref. |
17
- | `browser-worker` | 11 | dominus.browser | 10 | Authenticated `/svc/browser/*` browser automation primitive; Cloudflare Browser Run default, Browserbase fallback. |
18
- | `portal-worker` | 22 | dominus.portal | 22 | HTTP API routes via Dominus client. |
19
- | `db-worker` | 20 | dominus.db, dominus.ddl | 19 | HTTP API routes via Dominus client. |
20
- | `smith` | 15 | dominus.ddl | 15 | HTTP API routes via Dominus client. |
21
- | `b2-worker` | 14 | dominus.files | 14 | HTTP API routes via Dominus client. |
22
- | `redis-worker` | 14 | dominus.redis | 14 | HTTP API routes via Dominus client. |
23
- | `logs-worker` | 9 | dominus.logs | 4 | HTTP API routes via Dominus client; tail filters include `machine_id`. |
24
- | `scribe` | 7 | dominus.secure | 7 | HTTP API routes via Dominus client. |
25
- | `job-worker` | 8 | dominus.jobs | 6 | HTTP API routes via Dominus client. |
26
- | `artifact-worker` | 6 | dominus.artifacts | 6 | HTTP API routes via Dominus client. |
27
- | `stash-worker` managed tables | 6 | dominus.stash.tables | 6 | Typed self/group table routes through the authenticated gateway. |
28
- | `admin-worker` | 5 | dominus.admin, dominus.files | 5 | HTTP API routes via Dominus client. |
29
- | `warden` | 4 | dominus.secrets | 1 | Selected-scope grant semantics live in this group. |
30
- | `courier-worker` | 5 | dominus.courier | 2 | HTTP API routes via Dominus client. |
31
- | `gateway-local` | 4 | dominus.auth, dominus.health | 3 | Gateway `/health`, `/v1/ping`, and `/jwt/jwks` helpers. |
32
- | `processor-service` | 3 | dominus.processor | 3 | HTTP API routes via Dominus client. |
33
- | `sync-worker` | 2 | dominus.sync | 2 | HTTP API routes via Dominus client. |
34
- | `local-jwt` | 1 | dominus.auth | 1 | Local JWT parsing/validation helpers in auth namespace. |
35
- | `retired-stt` | 0 | (retired) | 0 | Legacy streaming STT namespace/routes are removed in hard cutover. |
36
-
37
- ## Route Prefix Mapping
38
-
39
- | Prefix | Primary Namespace(s) | Expected Backend |
40
- |---|---|---|
41
- | `/api/warden/*` | secrets | `warden` |
42
- | `/api/guardian/*` | auth | `guardian` |
43
- | `/api/authority/*` | authority | `authority` |
44
- | `/api/platform/*` and `/svc/platform/*` | platform | `platform-worker` |
45
- | `/api/coder/*` and `/svc/coder/*` | coder | `coder-runtime` |
46
- | `/api/browser/*` | browser | `browser-worker` |
47
- | `/api/portal/*` | portal | `portal-worker` |
48
- | `/api/database/* and /api/provision/*` | db, ddl (builder + provisioning) | `db-worker` |
49
- | `/api/scribe/*` | secure, open | `scribe` |
50
- | `/api/smith/*` | ddl | `smith` |
51
- | `/api/redis/*` | redis | `redis-worker` |
52
- | `/api/b2/*` | files | `b2-worker` |
53
- | `/api/courier/*` | courier | `courier-worker` |
54
- | `/api/logs/*` | logs | `logs-worker` |
55
- | `/health`, `/v1/ping` | health | `gateway-local` |
56
- | `/api/admin/*` | admin | `admin-worker` |
57
- | `/api/sync/*` | sync | `sync-worker` |
58
- | `/api/job/*` | jobs | `job-worker` |
59
- | `/api/processor/*` | processor | `processor-service` |
60
- | `/api/artifact/*` | artifacts | `artifact-worker` |
61
- | `/svc/stash/tables/*` | stash.tables | `stash-worker` |
62
- | `/api/rag/*, /api/agent/*, /api/llm/*, /api/results/*, /api/orchestration/*, /api/session/*` | ai, ai.rag, ai.tools, ai.workflow, ai.results | `agent-runtime` |
63
- | `/api/workflow/*` | workflow | `workflow-manager` |
64
- | `/api/agent/stt` | ai.stt | `agent-runtime` |
65
-
66
- ## Local and Helper Operations
67
-
68
- - `dominus.auth.validateJwt` performs local payload checks and expiry validation; it is not a full remote introspection endpoint.
69
- - `dominus.auth.getJwks` fetches and caches public signing keys from `/jwt/jwks`.
70
- - `dominus.health.check` uses direct `fetch` to the gateway `/health` route for low-level availability checks.
71
- - `dominus.ai.stt` sends binary audio to `POST /api/agent/stt` for batch transcription.
72
- - `dominus.authority.*` uses the cutover `appSlug` / `env` / `targetOrgId` / `targetAppSlug` / `targetEnv` vocabulary; `contextResolve()` and `mintSelectedScopeJwt()` now send the canonical `org_id` / `app_slug` / `env` and `target_org_id` / `target_env` wire payloads expected by live gateway routes.
73
- - `dominus.browser.*` routes through `/api/browser/*` with `useGateway: true`, producing authenticated gateway paths under `/svc/browser/*`. Browser run metadata remains worker runtime state; Artifact V2 is only for sanitized result/capture payloads.
74
- - `dominus.platform.*` and `dominus.coder.*` call `/svc/platform/*` and `/svc/coder/*` through `gatewayFetch`. Policy/Coder helpers accept actor context and forward it as `X-Actor-Type` / `X-Actor-Id`; `dominus.coder.ensureRun()` requires exactly one of `workflowRecipeRef` or `pipelineRecipeRef`.
75
- - Convenience wrappers like `dominus.courier.sendWelcome` delegate to core routes (for example `/api/courier/send`).
76
-
77
- ## Coverage Notes
78
-
79
- - Gateway routing is enabled per method via `useGateway: true` in namespace implementations; direct calls still target `/api/*` and are transformed by the client when gateway mode is on.
80
- - The exhaustive per-command listing with params/returns/routes is documented in [usage-reference.md](./usage-reference.md).
1
+ # Routes, Services, and Endpoints Assessment
2
+
3
+ This assessment is derived from all public namespace methods under `src/namespaces/` and their configured routes in SDK request calls.
4
+
5
+ Audited commands: **~450** (hand-counted) across **27** top-level namespace files in `src/namespaces/`. The Service Matrix below lists **29** namespace surfaces because it expands dotted sub-namespaces (e.g. `ai.*` and `auth.*`) into their own rows, so the surface count is intentionally higher than the file count, not a typo. These totals are hand-maintained — re-derive from source before quoting.
6
+
7
+ ## Service Matrix
8
+
9
+ | Service | Commands | Namespaces | Distinct Route Expressions | Notes |
10
+ |---|---:|---|---:|---|
11
+ | `guardian` | 146 | dominus.auth | 146 | HTTP API routes via Dominus client. |
12
+ | `agent-runtime` | 53 | dominus.ai, dominus.ai.artifacts, dominus.ai.rag, dominus.ai.results, dominus.ai.tools, dominus.ai.workflow | 51 | HTTP API routes via Dominus client. |
13
+ | `workflow-manager` | 38 | dominus.workflow | 36 | HTTP API routes via Dominus client. |
14
+ | `authority` | 33 | dominus.authority | 33 | Hard-cut app/org/env Authority surface. |
15
+ | `platform-worker` | 16 | dominus.platform | 16 | Gateway `/svc/platform/*` group/repository policy surface; policy helpers accept actor attribution headers. |
16
+ | `coder-runtime` | 11 | dominus.coder | 11 | Gateway `/svc/coder/*` run lifecycle surface; launch requires exactly one workflow or pipeline recipe ref. |
17
+ | `browser-worker` | 11 | dominus.browser | 10 | Authenticated `/svc/browser/*` browser automation primitive; Cloudflare Browser Run default, Browserbase fallback. |
18
+ | `portal-worker` | 22 | dominus.portal | 22 | HTTP API routes via Dominus client. |
19
+ | `db-worker` | 20 | dominus.db, dominus.ddl | 19 | HTTP API routes via Dominus client. |
20
+ | `smith` | 15 | dominus.ddl | 15 | HTTP API routes via Dominus client. |
21
+ | `b2-worker` | 14 | dominus.files | 14 | HTTP API routes via Dominus client. |
22
+ | `redis-worker` | 14 | dominus.redis | 14 | HTTP API routes via Dominus client. |
23
+ | `logs-worker` | 9 | dominus.logs | 4 | HTTP API routes via Dominus client; tail filters include `machine_id`. |
24
+ | `scribe` | 7 | dominus.secure | 7 | HTTP API routes via Dominus client. |
25
+ | `job-worker` | 8 | dominus.jobs | 6 | HTTP API routes via Dominus client. |
26
+ | `artifact-worker` | 6 | dominus.artifacts | 6 | HTTP API routes via Dominus client. |
27
+ | `stash-worker` managed tables | 6 | dominus.stash.tables | 6 | Typed self/group table routes through the authenticated gateway. |
28
+ | `admin-worker` | 5 | dominus.admin, dominus.files | 5 | HTTP API routes via Dominus client. |
29
+ | `warden` | 4 | dominus.secrets | 1 | Selected-scope grant semantics live in this group. |
30
+ | `courier-worker` | 5 | dominus.courier | 2 | HTTP API routes via Dominus client. |
31
+ | `gateway-local` | 4 | dominus.auth, dominus.health | 3 | Gateway `/health`, `/v1/ping`, and `/jwt/jwks` helpers. |
32
+ | `processor-service` | 3 | dominus.processor | 3 | HTTP API routes via Dominus client. |
33
+ | `sync-worker` | 2 | dominus.sync | 2 | HTTP API routes via Dominus client. |
34
+ | `local-jwt` | 1 | dominus.auth | 1 | Local JWT parsing/validation helpers in auth namespace. |
35
+ | `retired-stt` | 0 | (retired) | 0 | Legacy streaming STT namespace/routes are removed in hard cutover. |
36
+
37
+ ## Route Prefix Mapping
38
+
39
+ | Prefix | Primary Namespace(s) | Expected Backend |
40
+ |---|---|---|
41
+ | `/api/warden/*` | secrets | `warden` |
42
+ | `/api/guardian/*` | auth | `guardian` |
43
+ | `/api/authority/*` | authority | `authority` |
44
+ | `/api/platform/*` and `/svc/platform/*` | platform | `platform-worker` |
45
+ | `/api/coder/*` and `/svc/coder/*` | coder | `coder-runtime` |
46
+ | `/api/browser/*` | browser | `browser-worker` |
47
+ | `/api/portal/*` | portal | `portal-worker` |
48
+ | `/api/database/* and /api/provision/*` | db, ddl (builder + provisioning) | `db-worker` |
49
+ | `/api/scribe/*` | secure, open | `scribe` |
50
+ | `/api/smith/*` | ddl | `smith` |
51
+ | `/api/redis/*` | redis | `redis-worker` |
52
+ | `/api/b2/*` | files | `b2-worker` |
53
+ | `/api/courier/*` | courier | `courier-worker` |
54
+ | `/api/logs/*` | logs | `logs-worker` |
55
+ | `/health`, `/v1/ping` | health | `gateway-local` |
56
+ | `/api/admin/*` | admin | `admin-worker` |
57
+ | `/api/sync/*` | sync | `sync-worker` |
58
+ | `/api/job/*` | jobs | `job-worker` |
59
+ | `/api/processor/*` | processor | `processor-service` |
60
+ | `/api/artifact/*` | artifacts | `artifact-worker` |
61
+ | `/svc/stash/tables/*` | stash.tables | `stash-worker` |
62
+ | `/api/rag/*, /api/agent/*, /api/llm/*, /api/results/*, /api/orchestration/*, /api/session/*` | ai, ai.rag, ai.tools, ai.workflow, ai.results | `agent-runtime` |
63
+ | `/api/workflow/*` | workflow | `workflow-manager` |
64
+ | `/api/agent/stt` | ai.stt | `agent-runtime` |
65
+
66
+ ## Local and Helper Operations
67
+
68
+ - `dominus.auth.validateJwt` performs local payload checks and expiry validation; it is not a full remote introspection endpoint.
69
+ - `dominus.auth.getJwks` fetches and caches public signing keys from `/jwt/jwks`.
70
+ - `dominus.health.check` uses direct `fetch` to the gateway `/health` route for low-level availability checks.
71
+ - `dominus.ai.stt` sends binary audio to `POST /api/agent/stt` for batch transcription.
72
+ - `dominus.authority.*` uses the cutover `appSlug` / `env` / `targetOrgId` / `targetAppSlug` / `targetEnv` vocabulary; `contextResolve()` and `mintSelectedScopeJwt()` now send the canonical `org_id` / `app_slug` / `env` and `target_org_id` / `target_env` wire payloads expected by live gateway routes.
73
+ - `dominus.browser.*` routes through `/api/browser/*` with `useGateway: true`, producing authenticated gateway paths under `/svc/browser/*`. Browser run metadata remains worker runtime state; Artifact V2 is only for sanitized result/capture payloads.
74
+ - `dominus.platform.*` and `dominus.coder.*` call `/svc/platform/*` and `/svc/coder/*` through `gatewayFetch`. Policy/Coder helpers accept actor context and forward it as `X-Actor-Type` / `X-Actor-Id`; `dominus.coder.ensureRun()` requires exactly one of `workflowRecipeRef` or `pipelineRecipeRef`.
75
+ - Convenience wrappers like `dominus.courier.sendWelcome` delegate to core routes (for example `/api/courier/send`).
76
+
77
+ ## Coverage Notes
78
+
79
+ - Gateway routing is enabled per method via `useGateway: true` in namespace implementations; direct calls still target `/api/*` and are transformed by the client when gateway mode is on.
80
+ - The exhaustive per-command listing with params/returns/routes is documented in [usage-reference.md](./usage-reference.md).