dominus-sdk-nodejs 11.0.3 → 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.
- package/README.md +351 -351
- package/dist/contract/index.d.ts +3 -0
- package/dist/contract/index.d.ts.map +1 -0
- package/dist/contract/index.js +3 -0
- package/dist/contract/index.js.map +1 -0
- package/dist/contract/node-envelope.d.ts +12 -0
- package/dist/contract/node-envelope.d.ts.map +1 -0
- package/dist/contract/node-envelope.js +16 -0
- package/dist/contract/node-envelope.js.map +1 -0
- package/dist/contract/node-projections.d.ts +15 -0
- package/dist/contract/node-projections.d.ts.map +1 -0
- package/dist/contract/node-projections.js +4 -0
- package/dist/contract/node-projections.js.map +1 -0
- package/dist/namespaces/portal.d.ts +10 -0
- package/dist/namespaces/portal.d.ts.map +1 -1
- package/dist/namespaces/portal.js +11 -0
- package/dist/namespaces/portal.js.map +1 -1
- package/dist/namespaces/secrets.d.ts +5 -1
- package/dist/namespaces/secrets.d.ts.map +1 -1
- package/dist/namespaces/secrets.js +15 -1
- package/dist/namespaces/secrets.js.map +1 -1
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/00-reading-order.md +35 -35
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/01-purpose-and-boundaries.md +48 -48
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/02-repo-map-and-entrypoints.md +46 -46
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/03-api-surface.md +59 -59
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/04-data-state-and-storage.md +36 -36
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/05-integrations-and-runtime.md +40 -40
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/06-workflows-commands-and-ci.md +58 -58
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/07-operations-release-and-live-proof.md +40 -40
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/08-security-privacy-and-secrets.md +38 -38
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/09-known-risks-and-debt.md +34 -34
- package/docs/agent-guide/2026-06-27-0849-sdk-orient/10-agent-playbook.md +48 -48
- package/docs/agent-guide/2026-08-04-sdk-nodejs/00-reading-order.md +11 -11
- package/docs/agent-guide/2026-08-04-sdk-nodejs/01-purpose-and-boundaries.md +14 -14
- package/docs/agent-guide/2026-08-04-sdk-nodejs/03-api-surface.md +16 -16
- package/docs/agent-guide/2026-08-04-sdk-nodejs/10-agent-playbook.md +14 -14
- package/docs/agent-guide/INDEX.md +14 -14
- package/docs/agent-guide/current.md +22 -22
- package/docs/architecture.md +119 -119
- package/docs/atlas/2026-07-24-1231-sdk-nodejs-blockers.md +15 -15
- package/docs/atlas/2026-07-24-1231-sdk-nodejs-proof-ladder.md +25 -25
- package/docs/atlas/2026-07-24-1231-sdk-nodejs-truthmap.md +43 -43
- package/docs/atlas/2026-08-04-sdk-nodejs-blockers.md +12 -12
- package/docs/atlas/2026-08-04-sdk-nodejs-proof-ladder.md +9 -9
- package/docs/atlas/2026-08-04-sdk-nodejs-truthmap.md +21 -21
- package/docs/atlas/INDEX.md +26 -26
- package/docs/janitor/2026-06-27-0849-sdk-orient-cleanup-audit.md +102 -102
- package/docs/janitor/2026-08-04-sdk-nodejs-cleanup-audit.md +14 -14
- package/docs/migration-error-base.md +115 -0
- package/docs/plans/2026-08-04-pending-work-fruition-summary.md +46 -46
- package/docs/routes-services.md +80 -80
- package/docs/usage-reference.md +698 -698
- package/docs/workflow-hard-cut-release.md +24 -24
- package/package.json +55 -55
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
# 10 Agent Playbook
|
|
2
|
-
|
|
3
|
-
## If You Are Changing X, Read Y First
|
|
4
|
-
|
|
5
|
-
- **A namespace command** → `src/namespaces/<name>.ts` + the relevant rows in
|
|
6
|
-
`docs/routes-services.md`. Follow the Public API Change Checklist in
|
|
7
|
-
`CLAUDE.md` (update namespace, wire in `src/index.ts` if new, export types,
|
|
8
|
-
update `docs/usage-reference.md` and `routes-services.md`).
|
|
9
|
-
- **Transport / auth / retries / streaming / binary** → `src/lib/client.ts` and
|
|
10
|
-
`docs/architecture.md` §3,§5,§6,§7. The 55-min JWT cache TTL is load-bearing;
|
|
11
|
-
do not regress it without raising the jwt-worker `JWT_EXPIRY_SECONDS` first.
|
|
12
|
-
- **A new public type or root shortcut** → `src/index.ts` (constructor + export).
|
|
13
|
-
- **Errors** → `src/lib/errors.ts`; pass `endpoint` on service-auth throws so
|
|
14
|
-
callers can classify by `DominusError.endpoint`.
|
|
15
|
-
- **Env/gateway config** → `src/lib/config.ts`.
|
|
16
|
-
|
|
17
|
-
## If Validation Fails
|
|
18
|
-
|
|
19
|
-
- Build/type errors → `npm run typecheck`; the repo's lint IS tsc.
|
|
20
|
-
- Type-contract failures → `npm run test:types` (the `*.typecheck.ts` files).
|
|
21
|
-
- Unit/contract failures → `npm test` runs an explicit file list; run a single
|
|
22
|
-
file with `node --test tests/<file>.test.js` after `npm run build`.
|
|
23
|
-
|
|
24
|
-
## Common Traps
|
|
25
|
-
|
|
26
|
-
- Importing from a subpath — there is only one export entry; import from
|
|
27
|
-
`'dominus-sdk-nodejs'`.
|
|
28
|
-
- Treating `dist/` as source — it is generated; edit `src/`.
|
|
29
|
-
- Forgetting the version bump — publish-production no-ops if the version already
|
|
30
|
-
exists on npm.
|
|
31
|
-
- Using `dominus-production` as this repo's branch — it is `production` here.
|
|
32
|
-
- Pointing `browser` methods at worker-local `/runs/*` — use `/api/browser/*`
|
|
33
|
-
with `useGateway: true`.
|
|
34
|
-
|
|
35
|
-
## Which Kyle Skill For Common Work
|
|
36
|
-
|
|
37
|
-
- Behavior change / bug fix → `kyle-fix` (test-first via `kyle-tdd`).
|
|
38
|
-
- Root-cause unknown → `kyle-diagnose`.
|
|
39
|
-
- Plan a larger change → `kyle-plan`.
|
|
40
|
-
- Review a diff → `kyle-review`.
|
|
41
|
-
- Contract-sensitive change (wire protocol, JWT, routing) → route to
|
|
42
|
-
`dominus-expert` before shipping.
|
|
43
|
-
- Docs/cleanup drift → `kyle-janitor` (this pack).
|
|
44
|
-
|
|
45
|
-
## Handoff Expectations
|
|
46
|
-
|
|
47
|
-
This is a Dominus platform repo: cross-contract or wire-protocol changes need
|
|
48
|
-
`dominus-expert` review. Releases are npm publishes gated on a version bump.
|
|
1
|
+
# 10 Agent Playbook
|
|
2
|
+
|
|
3
|
+
## If You Are Changing X, Read Y First
|
|
4
|
+
|
|
5
|
+
- **A namespace command** → `src/namespaces/<name>.ts` + the relevant rows in
|
|
6
|
+
`docs/routes-services.md`. Follow the Public API Change Checklist in
|
|
7
|
+
`CLAUDE.md` (update namespace, wire in `src/index.ts` if new, export types,
|
|
8
|
+
update `docs/usage-reference.md` and `routes-services.md`).
|
|
9
|
+
- **Transport / auth / retries / streaming / binary** → `src/lib/client.ts` and
|
|
10
|
+
`docs/architecture.md` §3,§5,§6,§7. The 55-min JWT cache TTL is load-bearing;
|
|
11
|
+
do not regress it without raising the jwt-worker `JWT_EXPIRY_SECONDS` first.
|
|
12
|
+
- **A new public type or root shortcut** → `src/index.ts` (constructor + export).
|
|
13
|
+
- **Errors** → `src/lib/errors.ts`; pass `endpoint` on service-auth throws so
|
|
14
|
+
callers can classify by `DominusError.endpoint`.
|
|
15
|
+
- **Env/gateway config** → `src/lib/config.ts`.
|
|
16
|
+
|
|
17
|
+
## If Validation Fails
|
|
18
|
+
|
|
19
|
+
- Build/type errors → `npm run typecheck`; the repo's lint IS tsc.
|
|
20
|
+
- Type-contract failures → `npm run test:types` (the `*.typecheck.ts` files).
|
|
21
|
+
- Unit/contract failures → `npm test` runs an explicit file list; run a single
|
|
22
|
+
file with `node --test tests/<file>.test.js` after `npm run build`.
|
|
23
|
+
|
|
24
|
+
## Common Traps
|
|
25
|
+
|
|
26
|
+
- Importing from a subpath — there is only one export entry; import from
|
|
27
|
+
`'dominus-sdk-nodejs'`.
|
|
28
|
+
- Treating `dist/` as source — it is generated; edit `src/`.
|
|
29
|
+
- Forgetting the version bump — publish-production no-ops if the version already
|
|
30
|
+
exists on npm.
|
|
31
|
+
- Using `dominus-production` as this repo's branch — it is `production` here.
|
|
32
|
+
- Pointing `browser` methods at worker-local `/runs/*` — use `/api/browser/*`
|
|
33
|
+
with `useGateway: true`.
|
|
34
|
+
|
|
35
|
+
## Which Kyle Skill For Common Work
|
|
36
|
+
|
|
37
|
+
- Behavior change / bug fix → `kyle-fix` (test-first via `kyle-tdd`).
|
|
38
|
+
- Root-cause unknown → `kyle-diagnose`.
|
|
39
|
+
- Plan a larger change → `kyle-plan`.
|
|
40
|
+
- Review a diff → `kyle-review`.
|
|
41
|
+
- Contract-sensitive change (wire protocol, JWT, routing) → route to
|
|
42
|
+
`dominus-expert` before shipping.
|
|
43
|
+
- Docs/cleanup drift → `kyle-janitor` (this pack).
|
|
44
|
+
|
|
45
|
+
## Handoff Expectations
|
|
46
|
+
|
|
47
|
+
This is a Dominus platform repo: cross-contract or wire-protocol changes need
|
|
48
|
+
`dominus-expert` review. Releases are npm publishes gated on a version bump.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Dominus SDK for Node.js — reading order
|
|
2
|
-
|
|
3
|
-
Snapshot: 2026-08-04, production source commit `0e68c79`.
|
|
4
|
-
|
|
5
|
-
1. `README.md` for package usage, namespace coverage, and lifecycle guidance.
|
|
6
|
-
2. `package.json` for the single export entry and release scripts.
|
|
7
|
-
3. `src/index.ts` and namespace modules for the public surface.
|
|
8
|
-
4. `src/client.ts`/transport and typed error helpers for gateway behavior.
|
|
9
|
-
5. `tests/` plus `tsconfig.type-tests.json` for runtime and compile contracts.
|
|
10
|
-
6. `.github/workflows/publish-production.yml` for registry publication.
|
|
11
|
-
7. `docs/atlas/2026-08-04-sdk-nodejs-truthmap.md` and the pending-work summary.
|
|
1
|
+
# Dominus SDK for Node.js — reading order
|
|
2
|
+
|
|
3
|
+
Snapshot: 2026-08-04, production source commit `0e68c79`.
|
|
4
|
+
|
|
5
|
+
1. `README.md` for package usage, namespace coverage, and lifecycle guidance.
|
|
6
|
+
2. `package.json` for the single export entry and release scripts.
|
|
7
|
+
3. `src/index.ts` and namespace modules for the public surface.
|
|
8
|
+
4. `src/client.ts`/transport and typed error helpers for gateway behavior.
|
|
9
|
+
5. `tests/` plus `tsconfig.type-tests.json` for runtime and compile contracts.
|
|
10
|
+
6. `.github/workflows/publish-production.yml` for registry publication.
|
|
11
|
+
7. `docs/atlas/2026-08-04-sdk-nodejs-truthmap.md` and the pending-work summary.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Purpose and boundaries
|
|
2
|
-
|
|
3
|
-
The Node SDK is the typed ESM facade for Dominus gateway-first services. It
|
|
4
|
-
packages namespace APIs for application auth, data/DDL, storage and Artifact
|
|
5
|
-
V2, AI/runtime, browser automation, jobs, workflows, Authority, logs,
|
|
6
|
-
platform/coder, Publisher, admin, and control-plane operations.
|
|
7
|
-
|
|
8
|
-
The package owns client-side request shaping, gateway route transforms,
|
|
9
|
-
service error decoding, and public type contracts. Server-side authorization,
|
|
10
|
-
scope truth, lifecycle truth, and durable records remain owned by the relevant
|
|
11
|
-
Dominus services.
|
|
12
|
-
|
|
13
|
-
The supported package surface is the single root export. Internal source files
|
|
14
|
-
are not stable subpath imports.
|
|
1
|
+
# Purpose and boundaries
|
|
2
|
+
|
|
3
|
+
The Node SDK is the typed ESM facade for Dominus gateway-first services. It
|
|
4
|
+
packages namespace APIs for application auth, data/DDL, storage and Artifact
|
|
5
|
+
V2, AI/runtime, browser automation, jobs, workflows, Authority, logs,
|
|
6
|
+
platform/coder, Publisher, admin, and control-plane operations.
|
|
7
|
+
|
|
8
|
+
The package owns client-side request shaping, gateway route transforms,
|
|
9
|
+
service error decoding, and public type contracts. Server-side authorization,
|
|
10
|
+
scope truth, lifecycle truth, and durable records remain owned by the relevant
|
|
11
|
+
Dominus services.
|
|
12
|
+
|
|
13
|
+
The supported package surface is the single root export. Internal source files
|
|
14
|
+
are not stable subpath imports.
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# API surface
|
|
2
|
-
|
|
3
|
-
Import from the root package:
|
|
4
|
-
|
|
5
|
-
```ts
|
|
6
|
-
import { dominus } from 'dominus-sdk-nodejs';
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
The singleton exposes namespace groups including `auth`, `db`, `ddl`, `files`,
|
|
10
|
-
`stash`, `ai`, `browser`, `jobs`, `workflow`, `authority`, `logs`, `platform`,
|
|
11
|
-
`coder`, `publisher`, `admin`, and control-plane helpers. The exact exported
|
|
12
|
-
types are generated by `npm run build` from `src/`.
|
|
13
|
-
|
|
14
|
-
`workflow.ensure` is the preferred Authority-backed lifecycle entry. Use the
|
|
15
|
-
Authority namespace for run timeline truth and the explicit archive/repair
|
|
16
|
-
helpers for proof-first maintenance.
|
|
1
|
+
# API surface
|
|
2
|
+
|
|
3
|
+
Import from the root package:
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
import { dominus } from 'dominus-sdk-nodejs';
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
The singleton exposes namespace groups including `auth`, `db`, `ddl`, `files`,
|
|
10
|
+
`stash`, `ai`, `browser`, `jobs`, `workflow`, `authority`, `logs`, `platform`,
|
|
11
|
+
`coder`, `publisher`, `admin`, and control-plane helpers. The exact exported
|
|
12
|
+
types are generated by `npm run build` from `src/`.
|
|
13
|
+
|
|
14
|
+
`workflow.ensure` is the preferred Authority-backed lifecycle entry. Use the
|
|
15
|
+
Authority namespace for run timeline truth and the explicit archive/repair
|
|
16
|
+
helpers for proof-first maintenance.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Agent playbook
|
|
2
|
-
|
|
3
|
-
Before changing an SDK method, trace its route transform, request body, typed
|
|
4
|
-
error contract, and corresponding worker/service endpoint. Run:
|
|
5
|
-
|
|
6
|
-
```text
|
|
7
|
-
npm run build
|
|
8
|
-
npm run test:types
|
|
9
|
-
npm test
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
For a package release, update the version intentionally and verify the new
|
|
13
|
-
version is not already published before pushing the `production` lane. A
|
|
14
|
-
local SDK test pass does not prove server or registry state.
|
|
1
|
+
# Agent playbook
|
|
2
|
+
|
|
3
|
+
Before changing an SDK method, trace its route transform, request body, typed
|
|
4
|
+
error contract, and corresponding worker/service endpoint. Run:
|
|
5
|
+
|
|
6
|
+
```text
|
|
7
|
+
npm run build
|
|
8
|
+
npm run test:types
|
|
9
|
+
npm test
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
For a package release, update the version intentionally and verify the new
|
|
13
|
+
version is not already published before pushing the `production` lane. A
|
|
14
|
+
local SDK test pass does not prove server or registry state.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Agent Guide Index
|
|
2
|
-
|
|
3
|
-
Last updated: 2026-08-04 local
|
|
4
|
-
Current snapshot: `2026-08-04-sdk-nodejs/00-reading-order.md`
|
|
5
|
-
|
|
6
|
-
## Read Order
|
|
7
|
-
|
|
8
|
-
1. `2026-08-04-sdk-nodejs/00-reading-order.md`
|
|
9
|
-
2. `2026-08-04-sdk-nodejs/01-purpose-and-boundaries.md`
|
|
10
|
-
3. `2026-08-04-sdk-nodejs/03-api-surface.md`
|
|
11
|
-
4. `2026-08-04-sdk-nodejs/10-agent-playbook.md`
|
|
12
|
-
|
|
13
|
-
The published package entry point and `src/` remain authoritative. Historical
|
|
14
|
-
guide packs are retained for prior release context.
|
|
1
|
+
# Agent Guide Index
|
|
2
|
+
|
|
3
|
+
Last updated: 2026-08-04 local
|
|
4
|
+
Current snapshot: `2026-08-04-sdk-nodejs/00-reading-order.md`
|
|
5
|
+
|
|
6
|
+
## Read Order
|
|
7
|
+
|
|
8
|
+
1. `2026-08-04-sdk-nodejs/00-reading-order.md`
|
|
9
|
+
2. `2026-08-04-sdk-nodejs/01-purpose-and-boundaries.md`
|
|
10
|
+
3. `2026-08-04-sdk-nodejs/03-api-surface.md`
|
|
11
|
+
4. `2026-08-04-sdk-nodejs/10-agent-playbook.md`
|
|
12
|
+
|
|
13
|
+
The published package entry point and `src/` remain authoritative. Historical
|
|
14
|
+
guide packs are retained for prior release context.
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
# Current Agent-Guide Snapshot
|
|
2
|
-
|
|
3
|
-
Latest snapshot: `2026-06-27-0849-sdk-orient/00-reading-order.md`
|
|
4
|
-
|
|
5
|
-
Generated 2026-06-27 from SDK v6.6.0 (`package.json`) on branch `production`.
|
|
6
|
-
|
|
7
|
-
## Top Five Facts To Refresh Before Editing
|
|
8
|
-
|
|
9
|
-
1. **Version + changelog.** Confirm `package.json` `version` and the top of
|
|
10
|
-
`CHANGELOG.md`; this pack was written at `6.6.0`.
|
|
11
|
-
2. **Namespace count.** `src/namespaces/` had 27 files, each wired as a
|
|
12
|
-
`public readonly` property in `src/index.ts`. Re-count before claiming a
|
|
13
|
-
surface is missing.
|
|
14
|
-
3. **Tests exist.** `tests/` has 24 test files run by `npm test`. The older
|
|
15
|
-
claim in `docs/architecture.md` §10 / `CLAUDE.md` ("no committed tests") was
|
|
16
|
-
stale and is corrected in this pass.
|
|
17
|
-
4. **Storage rule.** `dominus.stash.*` is the primary storage surface;
|
|
18
|
-
`redis`/`db`/`files`/`artifacts` are building blocks (see
|
|
19
|
-
`docs/architecture.md` §2a).
|
|
20
|
-
5. **Release lane.** Push to `production` triggers
|
|
21
|
-
`.github/workflows/publish-production.yml` (npm publish). Do not commit/push
|
|
22
|
-
from janitor work.
|
|
1
|
+
# Current Agent-Guide Snapshot
|
|
2
|
+
|
|
3
|
+
Latest snapshot: `2026-06-27-0849-sdk-orient/00-reading-order.md`
|
|
4
|
+
|
|
5
|
+
Generated 2026-06-27 from SDK v6.6.0 (`package.json`) on branch `production`.
|
|
6
|
+
|
|
7
|
+
## Top Five Facts To Refresh Before Editing
|
|
8
|
+
|
|
9
|
+
1. **Version + changelog.** Confirm `package.json` `version` and the top of
|
|
10
|
+
`CHANGELOG.md`; this pack was written at `6.6.0`.
|
|
11
|
+
2. **Namespace count.** `src/namespaces/` had 27 files, each wired as a
|
|
12
|
+
`public readonly` property in `src/index.ts`. Re-count before claiming a
|
|
13
|
+
surface is missing.
|
|
14
|
+
3. **Tests exist.** `tests/` has 24 test files run by `npm test`. The older
|
|
15
|
+
claim in `docs/architecture.md` §10 / `CLAUDE.md` ("no committed tests") was
|
|
16
|
+
stale and is corrected in this pass.
|
|
17
|
+
4. **Storage rule.** `dominus.stash.*` is the primary storage surface;
|
|
18
|
+
`redis`/`db`/`files`/`artifacts` are building blocks (see
|
|
19
|
+
`docs/architecture.md` §2a).
|
|
20
|
+
5. **Release lane.** Push to `production` triggers
|
|
21
|
+
`.github/workflows/publish-production.yml` (npm publish). Do not commit/push
|
|
22
|
+
from janitor work.
|
package/docs/architecture.md
CHANGED
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
# SDK Architecture
|
|
2
|
-
|
|
3
|
-
This document describes how `dominus-sdk-nodejs` is structured and how requests flow from namespace methods to backend services.
|
|
4
|
-
|
|
5
|
-
## 1. Public Surface
|
|
6
|
-
|
|
7
|
-
- Entry point: `src/index.ts`
|
|
8
|
-
- Singleton export: `dominus`
|
|
9
|
-
- Public API composition:
|
|
10
|
-
- Namespace properties (`dominus.auth`, `dominus.db`, `dominus.ai`, ...)
|
|
11
|
-
- Root shortcuts for common operations (`get`, `upsert`, `listTables`, `queryTable`, `addTable`, etc.)
|
|
12
|
-
- Utility exports (errors, crypto helpers, cache utilities, JWT helpers)
|
|
13
|
-
|
|
14
|
-
## 2. Layering
|
|
15
|
-
|
|
16
|
-
- Namespace layer (`src/namespaces/*`)
|
|
17
|
-
- Maps method calls to concrete API routes
|
|
18
|
-
- Translates ergonomic SDK params to backend payload shape
|
|
19
|
-
- Minimal orchestration and convenience wrappers
|
|
20
|
-
- Transport layer (`src/lib/client.ts`)
|
|
21
|
-
- Auth token selection (service JWT vs user JWT)
|
|
22
|
-
- Request encoding/decoding protocol
|
|
23
|
-
- Retries, timeout handling, circuit breaker checks
|
|
24
|
-
- SSE streaming and binary upload/download support
|
|
25
|
-
- Support libraries (`src/lib/*`)
|
|
26
|
-
- `cache.ts`: encrypted in-memory cache + circuit breaker primitives
|
|
27
|
-
- `errors.ts`: typed SDK errors
|
|
28
|
-
- `config.ts`: env/config resolution
|
|
29
|
-
- `console-capture.ts`: optional console forwarding to logs
|
|
30
|
-
- `page-rules.ts`, `user-session.ts`: local portal/session acceleration
|
|
31
|
-
|
|
32
|
-
## 2a. Storage layer positioning
|
|
33
|
-
|
|
34
|
-
`dominus.stash.*` is the **primary storage surface**. Applications store named-kind data through Stash and the kind registry routes each kind to the right backend; callers address data by what it *is* (`kind` + `scope` + `key`), not by which primitive holds it. The primitive namespaces (`redis`, `db`, `files`) and the addressed `artifacts` helpers remain as building blocks — they are not deprecated and are never removed — but they are rarely targeted directly for application data.
|
|
35
|
-
|
|
36
|
-
This is the **Two-Layer Storage Rule**: applications store named-kind data via Stash; primitives are used directly only for ephemera (locks, queues, cache) or when building a kernel backend.
|
|
37
|
-
|
|
38
|
-
| Your data | Use | Why |
|
|
39
|
-
|---|---|---|
|
|
40
|
-
| Named, durable data of a registered kind (artifacts, conversations, configs, recipes, secrets) | `dominus.stash.*` | Primary surface; the kind registry routes to the right backend and policy. |
|
|
41
|
-
| A direct `ar://`-addressed artifact workflow (you already hold a canonical ref) | `dominus.artifacts.*` | Escape hatch for explicit Artifact V2 addressing; prefer a Stash `artifact-v2`-backed kind for new code. |
|
|
42
|
-
| Locks, queues, rate counters, short-lived cache — ephemera | `dominus.redis.*` | Building block for ephemeral state; named data belongs in Stash. |
|
|
43
|
-
| Building a new kernel backend or a documented migration fallback | primitives (`redis`, `db`, `files`) | The lowest layer; not the place for ordinary application data. |
|
|
44
|
-
|
|
45
|
-
## 3. Request Lifecycle
|
|
46
|
-
|
|
47
|
-
1. Caller invokes namespace method.
|
|
48
|
-
2. Namespace builds request options (`endpoint`, `method`, `body`, `useGateway`, optional `userToken`).
|
|
49
|
-
3. `DominusClient` resolves auth context:
|
|
50
|
-
- if `userToken` provided: uses caller token
|
|
51
|
-
- otherwise: ensures service JWT exists (PSK -> `/jwt/mint`, cached)
|
|
52
|
-
4. Request payload is serialized to JSON, then base64-encoded for Dominus wire protocol.
|
|
53
|
-
5. HTTP request is sent.
|
|
54
|
-
6. Response body is decoded from base64 and parsed.
|
|
55
|
-
7. Errors are mapped to SDK error types.
|
|
56
|
-
|
|
57
|
-
## 4. Routing Model
|
|
58
|
-
|
|
59
|
-
- Namespace code generally targets `/api/*` endpoints.
|
|
60
|
-
- For methods with `useGateway: true`, client route transform maps `/api/*` to gateway `/svc/*` dispatch paths.
|
|
61
|
-
- Some methods intentionally use direct fetch paths (for example health checks/JWKS fetch).
|
|
62
|
-
|
|
63
|
-
See [routes-services.md](./routes-services.md) for full route/service assessment.
|
|
64
|
-
|
|
65
|
-
## 5. Auth and Token Handling
|
|
66
|
-
|
|
67
|
-
### Service token flow
|
|
68
|
-
|
|
69
|
-
- Input: `DOMINUS_TOKEN` (PSK)
|
|
70
|
-
- Client exchanges PSK for short-lived JWT via gateway auth route.
|
|
71
|
-
- JWT is cached with refresh buffer and refresh mutex to avoid thundering herd under concurrency.
|
|
72
|
-
|
|
73
|
-
### User token flow
|
|
74
|
-
|
|
75
|
-
- Methods that accept `userToken` pass caller JWT through unchanged.
|
|
76
|
-
- Backend performs authorization checks for the user context.
|
|
77
|
-
|
|
78
|
-
### Local JWT utilities
|
|
79
|
-
|
|
80
|
-
- `verifyJwtLocally`, `isJwtValid`, and `mintSelectedScopeJwt` are exported from `src/lib/client.ts`. Selected-scope targeting is now the only supported SDK helper vocabulary.
|
|
81
|
-
- `mintSelectedScopeJwt(targetOrgId, targetEnv)` is the canonical selected-scope mint helper; the live `/jwt/mint` contract keys selected scope off org plus environment, not a shared-routing flag.
|
|
82
|
-
- `auth.getJwks` fetches public keys and caches them.
|
|
83
|
-
- `auth.validateJwt` performs local payload checks/expiry validation.
|
|
84
|
-
|
|
85
|
-
## 6. Caching and Resilience
|
|
86
|
-
|
|
87
|
-
- Encrypted in-memory cache used for selected short-lived values (JWT, portal/session-related caches).
|
|
88
|
-
- Circuit breaker support exists in transport/cache layer.
|
|
89
|
-
- Retry with backoff is applied for transient request failures and mint flow.
|
|
90
|
-
|
|
91
|
-
## 7. Streaming and Binary Paths
|
|
92
|
-
|
|
93
|
-
- SSE: `streamRequest()` in client, used by AI streaming methods.
|
|
94
|
-
- Multipart binary upload: `binaryUpload()`.
|
|
95
|
-
- Binary download to `Buffer`: `binaryDownload()`.
|
|
96
|
-
|
|
97
|
-
## 8. Speech APIs
|
|
98
|
-
|
|
99
|
-
Speech routes are owned by agent-runtime through the `dominus.ai` namespace:
|
|
100
|
-
|
|
101
|
-
- `dominus.ai.stt(audio, options?)` -> `POST /api/agent/stt`
|
|
102
|
-
- `dominus.ai.tts(text, options?)` -> `POST /api/agent/tts`
|
|
103
|
-
|
|
104
|
-
The legacy streaming STT namespace (`dominus.stt`) is retired in hard cutover.
|
|
105
|
-
|
|
106
|
-
## 9. Documentation Topology
|
|
107
|
-
|
|
108
|
-
Canonical documentation set for this repository:
|
|
109
|
-
|
|
110
|
-
- [README.md](../README.md): overview and usage entry
|
|
111
|
-
- [CLAUDE.md](../CLAUDE.md): agent conventions for this repo
|
|
112
|
-
- [usage-reference.md](./usage-reference.md): exhaustive namespaced command reference
|
|
113
|
-
- [routes-services.md](./routes-services.md): service and endpoint assessment
|
|
114
|
-
|
|
115
|
-
## 10. Known Gaps
|
|
116
|
-
|
|
117
|
-
- The hand-maintained command/namespace counts in `routes-services.md` and
|
|
118
|
-
`usage-reference.md` can drift from source; re-derive from `src/namespaces/*.ts`
|
|
119
|
-
and `src/index.ts` before quoting them.
|
|
1
|
+
# SDK Architecture
|
|
2
|
+
|
|
3
|
+
This document describes how `dominus-sdk-nodejs` is structured and how requests flow from namespace methods to backend services.
|
|
4
|
+
|
|
5
|
+
## 1. Public Surface
|
|
6
|
+
|
|
7
|
+
- Entry point: `src/index.ts`
|
|
8
|
+
- Singleton export: `dominus`
|
|
9
|
+
- Public API composition:
|
|
10
|
+
- Namespace properties (`dominus.auth`, `dominus.db`, `dominus.ai`, ...)
|
|
11
|
+
- Root shortcuts for common operations (`get`, `upsert`, `listTables`, `queryTable`, `addTable`, etc.)
|
|
12
|
+
- Utility exports (errors, crypto helpers, cache utilities, JWT helpers)
|
|
13
|
+
|
|
14
|
+
## 2. Layering
|
|
15
|
+
|
|
16
|
+
- Namespace layer (`src/namespaces/*`)
|
|
17
|
+
- Maps method calls to concrete API routes
|
|
18
|
+
- Translates ergonomic SDK params to backend payload shape
|
|
19
|
+
- Minimal orchestration and convenience wrappers
|
|
20
|
+
- Transport layer (`src/lib/client.ts`)
|
|
21
|
+
- Auth token selection (service JWT vs user JWT)
|
|
22
|
+
- Request encoding/decoding protocol
|
|
23
|
+
- Retries, timeout handling, circuit breaker checks
|
|
24
|
+
- SSE streaming and binary upload/download support
|
|
25
|
+
- Support libraries (`src/lib/*`)
|
|
26
|
+
- `cache.ts`: encrypted in-memory cache + circuit breaker primitives
|
|
27
|
+
- `errors.ts`: typed SDK errors
|
|
28
|
+
- `config.ts`: env/config resolution
|
|
29
|
+
- `console-capture.ts`: optional console forwarding to logs
|
|
30
|
+
- `page-rules.ts`, `user-session.ts`: local portal/session acceleration
|
|
31
|
+
|
|
32
|
+
## 2a. Storage layer positioning
|
|
33
|
+
|
|
34
|
+
`dominus.stash.*` is the **primary storage surface**. Applications store named-kind data through Stash and the kind registry routes each kind to the right backend; callers address data by what it *is* (`kind` + `scope` + `key`), not by which primitive holds it. The primitive namespaces (`redis`, `db`, `files`) and the addressed `artifacts` helpers remain as building blocks — they are not deprecated and are never removed — but they are rarely targeted directly for application data.
|
|
35
|
+
|
|
36
|
+
This is the **Two-Layer Storage Rule**: applications store named-kind data via Stash; primitives are used directly only for ephemera (locks, queues, cache) or when building a kernel backend.
|
|
37
|
+
|
|
38
|
+
| Your data | Use | Why |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| Named, durable data of a registered kind (artifacts, conversations, configs, recipes, secrets) | `dominus.stash.*` | Primary surface; the kind registry routes to the right backend and policy. |
|
|
41
|
+
| A direct `ar://`-addressed artifact workflow (you already hold a canonical ref) | `dominus.artifacts.*` | Escape hatch for explicit Artifact V2 addressing; prefer a Stash `artifact-v2`-backed kind for new code. |
|
|
42
|
+
| Locks, queues, rate counters, short-lived cache — ephemera | `dominus.redis.*` | Building block for ephemeral state; named data belongs in Stash. |
|
|
43
|
+
| Building a new kernel backend or a documented migration fallback | primitives (`redis`, `db`, `files`) | The lowest layer; not the place for ordinary application data. |
|
|
44
|
+
|
|
45
|
+
## 3. Request Lifecycle
|
|
46
|
+
|
|
47
|
+
1. Caller invokes namespace method.
|
|
48
|
+
2. Namespace builds request options (`endpoint`, `method`, `body`, `useGateway`, optional `userToken`).
|
|
49
|
+
3. `DominusClient` resolves auth context:
|
|
50
|
+
- if `userToken` provided: uses caller token
|
|
51
|
+
- otherwise: ensures service JWT exists (PSK -> `/jwt/mint`, cached)
|
|
52
|
+
4. Request payload is serialized to JSON, then base64-encoded for Dominus wire protocol.
|
|
53
|
+
5. HTTP request is sent.
|
|
54
|
+
6. Response body is decoded from base64 and parsed.
|
|
55
|
+
7. Errors are mapped to SDK error types.
|
|
56
|
+
|
|
57
|
+
## 4. Routing Model
|
|
58
|
+
|
|
59
|
+
- Namespace code generally targets `/api/*` endpoints.
|
|
60
|
+
- For methods with `useGateway: true`, client route transform maps `/api/*` to gateway `/svc/*` dispatch paths.
|
|
61
|
+
- Some methods intentionally use direct fetch paths (for example health checks/JWKS fetch).
|
|
62
|
+
|
|
63
|
+
See [routes-services.md](./routes-services.md) for full route/service assessment.
|
|
64
|
+
|
|
65
|
+
## 5. Auth and Token Handling
|
|
66
|
+
|
|
67
|
+
### Service token flow
|
|
68
|
+
|
|
69
|
+
- Input: `DOMINUS_TOKEN` (PSK)
|
|
70
|
+
- Client exchanges PSK for short-lived JWT via gateway auth route.
|
|
71
|
+
- JWT is cached with refresh buffer and refresh mutex to avoid thundering herd under concurrency.
|
|
72
|
+
|
|
73
|
+
### User token flow
|
|
74
|
+
|
|
75
|
+
- Methods that accept `userToken` pass caller JWT through unchanged.
|
|
76
|
+
- Backend performs authorization checks for the user context.
|
|
77
|
+
|
|
78
|
+
### Local JWT utilities
|
|
79
|
+
|
|
80
|
+
- `verifyJwtLocally`, `isJwtValid`, and `mintSelectedScopeJwt` are exported from `src/lib/client.ts`. Selected-scope targeting is now the only supported SDK helper vocabulary.
|
|
81
|
+
- `mintSelectedScopeJwt(targetOrgId, targetEnv)` is the canonical selected-scope mint helper; the live `/jwt/mint` contract keys selected scope off org plus environment, not a shared-routing flag.
|
|
82
|
+
- `auth.getJwks` fetches public keys and caches them.
|
|
83
|
+
- `auth.validateJwt` performs local payload checks/expiry validation.
|
|
84
|
+
|
|
85
|
+
## 6. Caching and Resilience
|
|
86
|
+
|
|
87
|
+
- Encrypted in-memory cache used for selected short-lived values (JWT, portal/session-related caches).
|
|
88
|
+
- Circuit breaker support exists in transport/cache layer.
|
|
89
|
+
- Retry with backoff is applied for transient request failures and mint flow.
|
|
90
|
+
|
|
91
|
+
## 7. Streaming and Binary Paths
|
|
92
|
+
|
|
93
|
+
- SSE: `streamRequest()` in client, used by AI streaming methods.
|
|
94
|
+
- Multipart binary upload: `binaryUpload()`.
|
|
95
|
+
- Binary download to `Buffer`: `binaryDownload()`.
|
|
96
|
+
|
|
97
|
+
## 8. Speech APIs
|
|
98
|
+
|
|
99
|
+
Speech routes are owned by agent-runtime through the `dominus.ai` namespace:
|
|
100
|
+
|
|
101
|
+
- `dominus.ai.stt(audio, options?)` -> `POST /api/agent/stt`
|
|
102
|
+
- `dominus.ai.tts(text, options?)` -> `POST /api/agent/tts`
|
|
103
|
+
|
|
104
|
+
The legacy streaming STT namespace (`dominus.stt`) is retired in hard cutover.
|
|
105
|
+
|
|
106
|
+
## 9. Documentation Topology
|
|
107
|
+
|
|
108
|
+
Canonical documentation set for this repository:
|
|
109
|
+
|
|
110
|
+
- [README.md](../README.md): overview and usage entry
|
|
111
|
+
- [CLAUDE.md](../CLAUDE.md): agent conventions for this repo
|
|
112
|
+
- [usage-reference.md](./usage-reference.md): exhaustive namespaced command reference
|
|
113
|
+
- [routes-services.md](./routes-services.md): service and endpoint assessment
|
|
114
|
+
|
|
115
|
+
## 10. Known Gaps
|
|
116
|
+
|
|
117
|
+
- The hand-maintained command/namespace counts in `routes-services.md` and
|
|
118
|
+
`usage-reference.md` can drift from source; re-derive from `src/namespaces/*.ts`
|
|
119
|
+
and `src/index.ts` before quoting them.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# Atlas Blockers: dominus-sdk-nodejs
|
|
2
|
-
|
|
3
|
-
Generated: 2026-07-24 12:31 EDT
|
|
4
|
-
|
|
5
|
-
## Blockers
|
|
6
|
-
|
|
7
|
-
| ID | Blocker | Evidence | Likely owner | Workaround | Attack with |
|
|
8
|
-
|---|---|---|---|---|---|
|
|
9
|
-
| B1 | Docs/agent-guide may lag HEAD | Agent-guide snapshot(s) 2026-06-27-0849 — verify vs HEAD commits.; HEAD `8f41170` | `kyle-janitor` | Prefer code + CLAUDE | `kyle-janitor` |
|
|
10
|
-
| B2 | Local tests not executed this pass | Docs-only atlas | CI | Run before behavior changes | Local/CI |
|
|
11
|
-
|
|
12
|
-
## Recommended next skill
|
|
13
|
-
|
|
14
|
-
1. `kyle-janitor` — refresh agent-guide if stale vs HEAD.
|
|
15
|
-
2. Behavior defects → `kyle-diagnose` / owning expert skill.
|
|
1
|
+
# Atlas Blockers: dominus-sdk-nodejs
|
|
2
|
+
|
|
3
|
+
Generated: 2026-07-24 12:31 EDT
|
|
4
|
+
|
|
5
|
+
## Blockers
|
|
6
|
+
|
|
7
|
+
| ID | Blocker | Evidence | Likely owner | Workaround | Attack with |
|
|
8
|
+
|---|---|---|---|---|---|
|
|
9
|
+
| B1 | Docs/agent-guide may lag HEAD | Agent-guide snapshot(s) 2026-06-27-0849 — verify vs HEAD commits.; HEAD `8f41170` | `kyle-janitor` | Prefer code + CLAUDE | `kyle-janitor` |
|
|
10
|
+
| B2 | Local tests not executed this pass | Docs-only atlas | CI | Run before behavior changes | Local/CI |
|
|
11
|
+
|
|
12
|
+
## Recommended next skill
|
|
13
|
+
|
|
14
|
+
1. `kyle-janitor` — refresh agent-guide if stale vs HEAD.
|
|
15
|
+
2. Behavior defects → `kyle-diagnose` / owning expert skill.
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# Atlas Proof Ladder: dominus-sdk-nodejs
|
|
2
|
-
|
|
3
|
-
## Local Proof
|
|
4
|
-
|
|
5
|
-
| Command | Expected signal | Status |
|
|
6
|
-
|---|---|---|
|
|
7
|
-
| `git status -sb` | Clean production branch @ `8f41170` | Observed via gather |
|
|
8
|
-
| Test / typecheck | Pass | NOT RUN this pass |
|
|
9
|
-
|
|
10
|
-
## CI / Release Proof
|
|
11
|
-
|
|
12
|
-
| Surface | Expected signal | Status |
|
|
13
|
-
|---|---|---|
|
|
14
|
-
| Repo deploy workflows | Green on production branch pushes | Not re-run this pass |
|
|
15
|
-
|
|
16
|
-
## Deploy / Live Proof
|
|
17
|
-
|
|
18
|
-
| Surface | Expected signal | Status |
|
|
19
|
-
|---|---|---|
|
|
20
|
-
| Service health / package publish | Live or published artifact | Not probed this pass |
|
|
21
|
-
|
|
22
|
-
## Positive vs No-Regression
|
|
23
|
-
|
|
24
|
-
- **Positive:** Atlas pack exists at HEAD `8f41170` with dated proof pointers.
|
|
25
|
-
- **No-regression:** Do not “fix” docs by reverting recent behavioral commits listed in the truthmap log.
|
|
1
|
+
# Atlas Proof Ladder: dominus-sdk-nodejs
|
|
2
|
+
|
|
3
|
+
## Local Proof
|
|
4
|
+
|
|
5
|
+
| Command | Expected signal | Status |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| `git status -sb` | Clean production branch @ `8f41170` | Observed via gather |
|
|
8
|
+
| Test / typecheck | Pass | NOT RUN this pass |
|
|
9
|
+
|
|
10
|
+
## CI / Release Proof
|
|
11
|
+
|
|
12
|
+
| Surface | Expected signal | Status |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| Repo deploy workflows | Green on production branch pushes | Not re-run this pass |
|
|
15
|
+
|
|
16
|
+
## Deploy / Live Proof
|
|
17
|
+
|
|
18
|
+
| Surface | Expected signal | Status |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| Service health / package publish | Live or published artifact | Not probed this pass |
|
|
21
|
+
|
|
22
|
+
## Positive vs No-Regression
|
|
23
|
+
|
|
24
|
+
- **Positive:** Atlas pack exists at HEAD `8f41170` with dated proof pointers.
|
|
25
|
+
- **No-regression:** Do not “fix” docs by reverting recent behavioral commits listed in the truthmap log.
|