dominus-sdk-nodejs 11.0.5 → 11.0.7
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/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/namespaces/artifacts.d.ts.map +1 -1
- package/dist/namespaces/artifacts.js +13 -2
- package/dist/namespaces/artifacts.js.map +1 -1
- package/dist/namespaces/browser.d.ts +2 -0
- package/dist/namespaces/browser.d.ts.map +1 -1
- package/dist/namespaces/browser.js.map +1 -1
- package/dist/namespaces/recipes.d.ts +17 -1
- package/dist/namespaces/recipes.d.ts.map +1 -1
- package/dist/namespaces/recipes.js +23 -2
- package/dist/namespaces/recipes.js.map +1 -1
- package/dist/refs/grammar.d.ts +54 -0
- package/dist/refs/grammar.d.ts.map +1 -0
- package/dist/refs/grammar.js +179 -0
- package/dist/refs/grammar.js.map +1 -0
- package/dist/refs/resolve.d.ts +49 -0
- package/dist/refs/resolve.d.ts.map +1 -0
- package/dist/refs/resolve.js +129 -0
- package/dist/refs/resolve.js.map +1 -0
- package/dist/refs/types.d.ts +56 -0
- package/dist/refs/types.d.ts.map +1 -0
- package/dist/refs/types.js +15 -0
- package/dist/refs/types.js.map +1 -0
- 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/plans/2026-08-04-pending-work-fruition-summary.md +46 -46
- package/docs/routes-services.md +85 -80
- package/docs/usage-reference.md +713 -698
- package/docs/workflow-hard-cut-release.md +24 -24
- package/package.json +55 -55
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
# 02 Repo Map And Entrypoints
|
|
2
|
-
|
|
3
|
-
## Directory Map
|
|
4
|
-
|
|
5
|
-
| Path | Purpose |
|
|
6
|
-
|---|---|
|
|
7
|
-
| `src/index.ts` | Singleton construction, 27 namespace wiring, root shortcuts, public type/util re-exports. |
|
|
8
|
-
| `src/lib/client.ts` | Transport: base64 wire protocol, JWT mint/cache, retries, circuit breaker, SSE, binary IO. |
|
|
9
|
-
| `src/lib/cache.ts` | Encrypted in-memory cache + circuit breaker primitives. |
|
|
10
|
-
| `src/lib/config.ts` | Env/config resolution (gateway/proxy). |
|
|
11
|
-
| `src/lib/errors.ts` | Typed SDK error hierarchy. |
|
|
12
|
-
| `src/lib/console-capture.ts` | Optional console forwarding to the logs namespace. |
|
|
13
|
-
| `src/lib/page-rules.ts`, `src/lib/user-session.ts` | Portal JWT / page-access local caches. |
|
|
14
|
-
| `src/lib/crypto.ts`, `schema-builder.ts`, `trace.ts`, `conversation-format.ts` | Helpers (crypto, schema-builder normalization, trace, conversation format). |
|
|
15
|
-
| `src/namespaces/*.ts` | One file per namespace (27 files). |
|
|
16
|
-
| `src/contracts/versioned-storage.ts` | Versioned-storage contract types. |
|
|
17
|
-
| `tests/` | 24 test files (`.test.js`, `.test.ts`, `.typecheck.ts`). |
|
|
18
|
-
| `docs/` | `architecture.md`, `routes-services.md`, `usage-reference.md`, `workflow-hard-cut-release.md`, plus this `agent-guide/` and `janitor/`. |
|
|
19
|
-
| `.github/workflows/` | npm publish workflows by branch (dev/staging/production). |
|
|
20
|
-
| `dist/` | Generated build output (gitignored). Not source. |
|
|
21
|
-
| `node_modules/` | Installed deps (gitignored). |
|
|
22
|
-
|
|
23
|
-
## Main Entrypoints
|
|
24
|
-
|
|
25
|
-
- Public API: import `{ dominus }` from `dominus-sdk-nodejs` (resolves to
|
|
26
|
-
`dist/index.js`; source is `src/index.ts`).
|
|
27
|
-
- Source-of-truth surface: `src/index.ts` constructor wires each
|
|
28
|
-
`public readonly <name>` namespace; a second wiring block builds a
|
|
29
|
-
token-scoped client subset.
|
|
30
|
-
|
|
31
|
-
## Test Entrypoints
|
|
32
|
-
|
|
33
|
-
- `npm test` builds, runs type tests, then runs the explicit node:test file list
|
|
34
|
-
in `package.json` `scripts.test`.
|
|
35
|
-
- `npm run test:types` runs `tsc -p tsconfig.type-tests.json` for the
|
|
36
|
-
`*.typecheck.ts` files.
|
|
37
|
-
|
|
38
|
-
## Config / Build / Deploy Entrypoints
|
|
39
|
-
|
|
40
|
-
- `tsconfig.json` (build), `tsconfig.type-tests.json` (type tests).
|
|
41
|
-
- `npm run build` (`tsc`) → `dist/`.
|
|
42
|
-
- `.github/workflows/publish-production.yml` on push to `production`.
|
|
43
|
-
|
|
44
|
-
## Avoid
|
|
45
|
-
|
|
46
|
-
- `dist/` and `node_modules/` — generated; never edit, never cite as source.
|
|
1
|
+
# 02 Repo Map And Entrypoints
|
|
2
|
+
|
|
3
|
+
## Directory Map
|
|
4
|
+
|
|
5
|
+
| Path | Purpose |
|
|
6
|
+
|---|---|
|
|
7
|
+
| `src/index.ts` | Singleton construction, 27 namespace wiring, root shortcuts, public type/util re-exports. |
|
|
8
|
+
| `src/lib/client.ts` | Transport: base64 wire protocol, JWT mint/cache, retries, circuit breaker, SSE, binary IO. |
|
|
9
|
+
| `src/lib/cache.ts` | Encrypted in-memory cache + circuit breaker primitives. |
|
|
10
|
+
| `src/lib/config.ts` | Env/config resolution (gateway/proxy). |
|
|
11
|
+
| `src/lib/errors.ts` | Typed SDK error hierarchy. |
|
|
12
|
+
| `src/lib/console-capture.ts` | Optional console forwarding to the logs namespace. |
|
|
13
|
+
| `src/lib/page-rules.ts`, `src/lib/user-session.ts` | Portal JWT / page-access local caches. |
|
|
14
|
+
| `src/lib/crypto.ts`, `schema-builder.ts`, `trace.ts`, `conversation-format.ts` | Helpers (crypto, schema-builder normalization, trace, conversation format). |
|
|
15
|
+
| `src/namespaces/*.ts` | One file per namespace (27 files). |
|
|
16
|
+
| `src/contracts/versioned-storage.ts` | Versioned-storage contract types. |
|
|
17
|
+
| `tests/` | 24 test files (`.test.js`, `.test.ts`, `.typecheck.ts`). |
|
|
18
|
+
| `docs/` | `architecture.md`, `routes-services.md`, `usage-reference.md`, `workflow-hard-cut-release.md`, plus this `agent-guide/` and `janitor/`. |
|
|
19
|
+
| `.github/workflows/` | npm publish workflows by branch (dev/staging/production). |
|
|
20
|
+
| `dist/` | Generated build output (gitignored). Not source. |
|
|
21
|
+
| `node_modules/` | Installed deps (gitignored). |
|
|
22
|
+
|
|
23
|
+
## Main Entrypoints
|
|
24
|
+
|
|
25
|
+
- Public API: import `{ dominus }` from `dominus-sdk-nodejs` (resolves to
|
|
26
|
+
`dist/index.js`; source is `src/index.ts`).
|
|
27
|
+
- Source-of-truth surface: `src/index.ts` constructor wires each
|
|
28
|
+
`public readonly <name>` namespace; a second wiring block builds a
|
|
29
|
+
token-scoped client subset.
|
|
30
|
+
|
|
31
|
+
## Test Entrypoints
|
|
32
|
+
|
|
33
|
+
- `npm test` builds, runs type tests, then runs the explicit node:test file list
|
|
34
|
+
in `package.json` `scripts.test`.
|
|
35
|
+
- `npm run test:types` runs `tsc -p tsconfig.type-tests.json` for the
|
|
36
|
+
`*.typecheck.ts` files.
|
|
37
|
+
|
|
38
|
+
## Config / Build / Deploy Entrypoints
|
|
39
|
+
|
|
40
|
+
- `tsconfig.json` (build), `tsconfig.type-tests.json` (type tests).
|
|
41
|
+
- `npm run build` (`tsc`) → `dist/`.
|
|
42
|
+
- `.github/workflows/publish-production.yml` on push to `production`.
|
|
43
|
+
|
|
44
|
+
## Avoid
|
|
45
|
+
|
|
46
|
+
- `dist/` and `node_modules/` — generated; never edit, never cite as source.
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
# 03 API Surface
|
|
2
|
-
|
|
3
|
-
The public surface is the `dominus` singleton (`src/index.ts`). Each namespace is
|
|
4
|
-
a `public readonly` property backed by one file in `src/namespaces/`. The
|
|
5
|
-
authoritative, exhaustive per-command reference is `docs/usage-reference.md`;
|
|
6
|
-
the service/endpoint matrix is `docs/routes-services.md`. This page is the map.
|
|
7
|
-
|
|
8
|
-
## Namespaces (27, wired in `src/index.ts`)
|
|
9
|
-
|
|
10
|
-
| Namespace | File | Backend / role (see routes-services.md) |
|
|
11
|
-
|---|---|---|
|
|
12
|
-
| `dominus.secrets` | `secrets.ts` | warden (selected-scope grants). |
|
|
13
|
-
| `dominus.db` | `db.ts` | db-worker. |
|
|
14
|
-
| `dominus.secure` | `secure.ts` | scribe (audited secure-table access). |
|
|
15
|
-
| `dominus.redis` | `redis.ts` | redis-worker (ephemera building block). |
|
|
16
|
-
| `dominus.files` | `files.ts` | b2-worker / admin-worker. |
|
|
17
|
-
| `dominus.auth` | `auth.ts` | guardian + local JWT helpers. |
|
|
18
|
-
| `dominus.ddl` | `ddl.ts` | smith / db-worker (schema builder + provisioning). |
|
|
19
|
-
| `dominus.logs` | `logs.ts` | logs-worker (tail supports `machine_id`). |
|
|
20
|
-
| `dominus.portal` | `portal.ts` | portal-worker. |
|
|
21
|
-
| `dominus.courier` | `courier.ts` | courier-worker. |
|
|
22
|
-
| `dominus.health` | `health.ts` | gateway-local (`/health`, `/v1/ping`). |
|
|
23
|
-
| `dominus.admin` | `admin.ts` | admin-worker. |
|
|
24
|
-
| `dominus.ai` (+ `.rag`, `.tools`, `.workflow`, `.results`, `.artifacts`) | `ai.ts` | agent-runtime. |
|
|
25
|
-
| `dominus.workflow` | `workflow.ts` | workflow-manager (`ensure()` is the public launch path). |
|
|
26
|
-
| `dominus.sync` | `sync.ts` | sync-worker. |
|
|
27
|
-
| `dominus.jobs` | `jobs.ts` | job-worker. |
|
|
28
|
-
| `dominus.processor` | `processor.ts` | processor-service. |
|
|
29
|
-
| `dominus.artifacts` | `artifacts.ts` | artifact-worker (Artifact V2 `ar://`). |
|
|
30
|
-
| `dominus.authority` | `authority.ts` | authority (app/org/env cutover surface). |
|
|
31
|
-
| `dominus.browser` | `browser.ts` | browser-worker via `/svc/browser/*`. |
|
|
32
|
-
| `dominus.deployer` | `deployer.ts` | deploy surface. |
|
|
33
|
-
| `dominus.warden` | `warden.ts` | warden. |
|
|
34
|
-
| `dominus.stash` | `stash.ts` | **primary storage surface** (kind registry routes to backend). |
|
|
35
|
-
| `dominus.recipes` | `recipes.ts` | recipe-worker. |
|
|
36
|
-
| `dominus.platform` | `platform.ts` | platform-worker via `/svc/platform/*`. |
|
|
37
|
-
| `dominus.coder` | `coder.ts` | coder-runtime via `/svc/coder/*`. |
|
|
38
|
-
| `dominus.publisher` | `publisher.ts` | publisher. |
|
|
39
|
-
|
|
40
|
-
(`ai` sub-namespaces and `auth` local helpers are extra surfaces beyond the 27
|
|
41
|
-
top-level files; see routes-services.md for the full service matrix.)
|
|
42
|
-
|
|
43
|
-
## Root Shortcuts And Utilities
|
|
44
|
-
|
|
45
|
-
- Root shortcuts on the singleton: `get`, `upsert`, `listTables`, `queryTable`,
|
|
46
|
-
`insertRow`, `addTable`, etc. (`src/index.ts`).
|
|
47
|
-
- Exported utilities/types: error classes, crypto helpers
|
|
48
|
-
(`hashPassword`, `hashPsk`, `generateToken`), cache utilities, JWT helpers
|
|
49
|
-
(`verifyJwtLocally`, `isJwtValid`, `mintSelectedScopeJwt`),
|
|
50
|
-
`normalizeSchemaBuilderMigration`, console-capture controls.
|
|
51
|
-
|
|
52
|
-
## Auth / Scope Per Call
|
|
53
|
-
|
|
54
|
-
- Default: service JWT minted from `DOMINUS_TOKEN` PSK via `/jwt/mint`, cached
|
|
55
|
-
55 min (`JWT_CACHE_TTL = 3300000`) vs the worker's 1h `JWT_EXPIRY_SECONDS`.
|
|
56
|
-
- Optional `userToken` passes a caller JWT through unchanged where backend
|
|
57
|
-
semantics require user context.
|
|
58
|
-
- `mintSelectedScopeJwt(targetOrgId, targetEnv)` is the canonical selected-scope
|
|
59
|
-
mint helper.
|
|
1
|
+
# 03 API Surface
|
|
2
|
+
|
|
3
|
+
The public surface is the `dominus` singleton (`src/index.ts`). Each namespace is
|
|
4
|
+
a `public readonly` property backed by one file in `src/namespaces/`. The
|
|
5
|
+
authoritative, exhaustive per-command reference is `docs/usage-reference.md`;
|
|
6
|
+
the service/endpoint matrix is `docs/routes-services.md`. This page is the map.
|
|
7
|
+
|
|
8
|
+
## Namespaces (27, wired in `src/index.ts`)
|
|
9
|
+
|
|
10
|
+
| Namespace | File | Backend / role (see routes-services.md) |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| `dominus.secrets` | `secrets.ts` | warden (selected-scope grants). |
|
|
13
|
+
| `dominus.db` | `db.ts` | db-worker. |
|
|
14
|
+
| `dominus.secure` | `secure.ts` | scribe (audited secure-table access). |
|
|
15
|
+
| `dominus.redis` | `redis.ts` | redis-worker (ephemera building block). |
|
|
16
|
+
| `dominus.files` | `files.ts` | b2-worker / admin-worker. |
|
|
17
|
+
| `dominus.auth` | `auth.ts` | guardian + local JWT helpers. |
|
|
18
|
+
| `dominus.ddl` | `ddl.ts` | smith / db-worker (schema builder + provisioning). |
|
|
19
|
+
| `dominus.logs` | `logs.ts` | logs-worker (tail supports `machine_id`). |
|
|
20
|
+
| `dominus.portal` | `portal.ts` | portal-worker. |
|
|
21
|
+
| `dominus.courier` | `courier.ts` | courier-worker. |
|
|
22
|
+
| `dominus.health` | `health.ts` | gateway-local (`/health`, `/v1/ping`). |
|
|
23
|
+
| `dominus.admin` | `admin.ts` | admin-worker. |
|
|
24
|
+
| `dominus.ai` (+ `.rag`, `.tools`, `.workflow`, `.results`, `.artifacts`) | `ai.ts` | agent-runtime. |
|
|
25
|
+
| `dominus.workflow` | `workflow.ts` | workflow-manager (`ensure()` is the public launch path). |
|
|
26
|
+
| `dominus.sync` | `sync.ts` | sync-worker. |
|
|
27
|
+
| `dominus.jobs` | `jobs.ts` | job-worker. |
|
|
28
|
+
| `dominus.processor` | `processor.ts` | processor-service. |
|
|
29
|
+
| `dominus.artifacts` | `artifacts.ts` | artifact-worker (Artifact V2 `ar://`). |
|
|
30
|
+
| `dominus.authority` | `authority.ts` | authority (app/org/env cutover surface). |
|
|
31
|
+
| `dominus.browser` | `browser.ts` | browser-worker via `/svc/browser/*`. |
|
|
32
|
+
| `dominus.deployer` | `deployer.ts` | deploy surface. |
|
|
33
|
+
| `dominus.warden` | `warden.ts` | warden. |
|
|
34
|
+
| `dominus.stash` | `stash.ts` | **primary storage surface** (kind registry routes to backend). |
|
|
35
|
+
| `dominus.recipes` | `recipes.ts` | recipe-worker. |
|
|
36
|
+
| `dominus.platform` | `platform.ts` | platform-worker via `/svc/platform/*`. |
|
|
37
|
+
| `dominus.coder` | `coder.ts` | coder-runtime via `/svc/coder/*`. |
|
|
38
|
+
| `dominus.publisher` | `publisher.ts` | publisher. |
|
|
39
|
+
|
|
40
|
+
(`ai` sub-namespaces and `auth` local helpers are extra surfaces beyond the 27
|
|
41
|
+
top-level files; see routes-services.md for the full service matrix.)
|
|
42
|
+
|
|
43
|
+
## Root Shortcuts And Utilities
|
|
44
|
+
|
|
45
|
+
- Root shortcuts on the singleton: `get`, `upsert`, `listTables`, `queryTable`,
|
|
46
|
+
`insertRow`, `addTable`, etc. (`src/index.ts`).
|
|
47
|
+
- Exported utilities/types: error classes, crypto helpers
|
|
48
|
+
(`hashPassword`, `hashPsk`, `generateToken`), cache utilities, JWT helpers
|
|
49
|
+
(`verifyJwtLocally`, `isJwtValid`, `mintSelectedScopeJwt`),
|
|
50
|
+
`normalizeSchemaBuilderMigration`, console-capture controls.
|
|
51
|
+
|
|
52
|
+
## Auth / Scope Per Call
|
|
53
|
+
|
|
54
|
+
- Default: service JWT minted from `DOMINUS_TOKEN` PSK via `/jwt/mint`, cached
|
|
55
|
+
55 min (`JWT_CACHE_TTL = 3300000`) vs the worker's 1h `JWT_EXPIRY_SECONDS`.
|
|
56
|
+
- Optional `userToken` passes a caller JWT through unchanged where backend
|
|
57
|
+
semantics require user context.
|
|
58
|
+
- `mintSelectedScopeJwt(targetOrgId, targetEnv)` is the canonical selected-scope
|
|
59
|
+
mint helper.
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
# 04 Data, State, And Storage
|
|
2
|
-
|
|
3
|
-
This SDK is a stateless client; it does not own backend storage. It exposes
|
|
4
|
-
storage-facing namespaces and keeps a few in-process caches. Backends own the
|
|
5
|
-
durable state.
|
|
6
|
-
|
|
7
|
-
## Storage Surfaces (client-facing)
|
|
8
|
-
|
|
9
|
-
Per `docs/architecture.md` §2a (Two-Layer Storage Rule):
|
|
10
|
-
|
|
11
|
-
| Surface | Namespace | Role |
|
|
12
|
-
|---|---|---|
|
|
13
|
-
| Named, durable data of a registered kind | `dominus.stash.*` | **Primary** — kind registry routes to the right backend + policy. |
|
|
14
|
-
| Direct `ar://`-addressed Artifact V2 workflow | `dominus.artifacts.*` | Escape hatch when you already hold a canonical ref. |
|
|
15
|
-
| Locks, queues, counters, short-lived cache | `dominus.redis.*` | Ephemera building block. |
|
|
16
|
-
| Tables / SQL | `dominus.db.*`, `dominus.ddl.*` | db-worker / smith building blocks. |
|
|
17
|
-
| Object/file storage | `dominus.files.*` | b2-worker building block. |
|
|
18
|
-
| New kernel backend / documented fallback | primitives | Lowest layer only. |
|
|
19
|
-
|
|
20
|
-
Rule: application data → Stash. Primitives only for ephemera or when building a
|
|
21
|
-
kernel backend.
|
|
22
|
-
|
|
23
|
-
## In-Process Client State (this repo)
|
|
24
|
-
|
|
25
|
-
- **Service JWT cache** — `src/lib/client.ts`, cached 55 min, refreshed via
|
|
26
|
-
`ensureValidJwt` mutex to avoid thundering herd.
|
|
27
|
-
- **Encrypted in-memory cache** — `src/lib/cache.ts`; encryption key seeded from
|
|
28
|
-
`DOMINUS_TOKEN` in `src/index.ts`.
|
|
29
|
-
- **Portal/session caches** — `src/lib/page-rules.ts`, `src/lib/user-session.ts`
|
|
30
|
-
for portal JWT / page-access acceleration.
|
|
31
|
-
- **JWKS cache** — `auth.getJwks` caches public signing keys.
|
|
32
|
-
|
|
33
|
-
## Migrations
|
|
34
|
-
|
|
35
|
-
- None in this repo. Schema/migration helpers (`ddl`, `normalizeSchemaBuilderMigration`)
|
|
36
|
-
build requests for the db/smith workers; the migrations themselves run there.
|
|
1
|
+
# 04 Data, State, And Storage
|
|
2
|
+
|
|
3
|
+
This SDK is a stateless client; it does not own backend storage. It exposes
|
|
4
|
+
storage-facing namespaces and keeps a few in-process caches. Backends own the
|
|
5
|
+
durable state.
|
|
6
|
+
|
|
7
|
+
## Storage Surfaces (client-facing)
|
|
8
|
+
|
|
9
|
+
Per `docs/architecture.md` §2a (Two-Layer Storage Rule):
|
|
10
|
+
|
|
11
|
+
| Surface | Namespace | Role |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| Named, durable data of a registered kind | `dominus.stash.*` | **Primary** — kind registry routes to the right backend + policy. |
|
|
14
|
+
| Direct `ar://`-addressed Artifact V2 workflow | `dominus.artifacts.*` | Escape hatch when you already hold a canonical ref. |
|
|
15
|
+
| Locks, queues, counters, short-lived cache | `dominus.redis.*` | Ephemera building block. |
|
|
16
|
+
| Tables / SQL | `dominus.db.*`, `dominus.ddl.*` | db-worker / smith building blocks. |
|
|
17
|
+
| Object/file storage | `dominus.files.*` | b2-worker building block. |
|
|
18
|
+
| New kernel backend / documented fallback | primitives | Lowest layer only. |
|
|
19
|
+
|
|
20
|
+
Rule: application data → Stash. Primitives only for ephemera or when building a
|
|
21
|
+
kernel backend.
|
|
22
|
+
|
|
23
|
+
## In-Process Client State (this repo)
|
|
24
|
+
|
|
25
|
+
- **Service JWT cache** — `src/lib/client.ts`, cached 55 min, refreshed via
|
|
26
|
+
`ensureValidJwt` mutex to avoid thundering herd.
|
|
27
|
+
- **Encrypted in-memory cache** — `src/lib/cache.ts`; encryption key seeded from
|
|
28
|
+
`DOMINUS_TOKEN` in `src/index.ts`.
|
|
29
|
+
- **Portal/session caches** — `src/lib/page-rules.ts`, `src/lib/user-session.ts`
|
|
30
|
+
for portal JWT / page-access acceleration.
|
|
31
|
+
- **JWKS cache** — `auth.getJwks` caches public signing keys.
|
|
32
|
+
|
|
33
|
+
## Migrations
|
|
34
|
+
|
|
35
|
+
- None in this repo. Schema/migration helpers (`ddl`, `normalizeSchemaBuilderMigration`)
|
|
36
|
+
build requests for the db/smith workers; the migrations themselves run there.
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
# 05 Integrations And Runtime
|
|
2
|
-
|
|
3
|
-
## External Dependencies
|
|
4
|
-
|
|
5
|
-
- Runtime deps (`package.json`): `jose` (JWT verify/mint helpers), `bcryptjs`
|
|
6
|
-
(password/PSK hashing).
|
|
7
|
-
- Dev deps: `typescript`, `@types/node`, `@types/bcryptjs`.
|
|
8
|
-
|
|
9
|
-
## Cross-Repo / Gateway Calls
|
|
10
|
-
|
|
11
|
-
The SDK is a client to the Dominus gateway. Namespace code targets `/api/*`
|
|
12
|
-
paths; when a method sets `useGateway: true` the client transforms `/api/*` to
|
|
13
|
-
gateway `/svc/*` dispatch paths (`docs/architecture.md` §4,
|
|
14
|
-
`docs/routes-services.md`). Backends reached include guardian, authority,
|
|
15
|
-
workflow-manager, agent-runtime, db/redis/b2/logs workers, platform-worker,
|
|
16
|
-
coder-runtime, browser-worker, and others — see the service matrix in
|
|
17
|
-
`docs/routes-services.md`.
|
|
18
|
-
|
|
19
|
-
Notable routing facts (from `CLAUDE.md` / routes-services.md):
|
|
20
|
-
|
|
21
|
-
- `dominus.browser.*` must use `/api/browser/*` with `useGateway: true`
|
|
22
|
-
(gateway exposes `/svc/browser/*`); do not point at worker-local `/runs/*`.
|
|
23
|
-
- `dominus.platform.*` and `dominus.coder.*` call `/svc/*` via `gatewayFetch`
|
|
24
|
-
and forward `X-Actor-Type` / `X-Actor-Id`.
|
|
25
|
-
- `dominus.coder.ensureRun()` requires exactly one of `workflowRecipeRef` or
|
|
26
|
-
`pipelineRecipeRef`.
|
|
27
|
-
- `dominus.ai.stt` → `POST /api/agent/stt` (batch; legacy WebSocket STT retired).
|
|
28
|
-
|
|
29
|
-
## Runtime Assumptions
|
|
30
|
-
|
|
31
|
-
- ESM only (`"type": "module"`), Node `>=18`.
|
|
32
|
-
- Single published entry point; import from `'dominus-sdk-nodejs'` only.
|
|
33
|
-
|
|
34
|
-
## Environment Variables (by category, no values)
|
|
35
|
-
|
|
36
|
-
- **Auth:** `DOMINUS_TOKEN` (PSK; also seeds the in-memory cache encryption key).
|
|
37
|
-
- **Gateway/config:** resolved in `src/lib/config.ts` (gateway base URL / proxy
|
|
38
|
-
config). Read that file for the exact variable names before relying on one.
|
|
39
|
-
|
|
40
|
-
Never write secret values into docs or logs.
|
|
1
|
+
# 05 Integrations And Runtime
|
|
2
|
+
|
|
3
|
+
## External Dependencies
|
|
4
|
+
|
|
5
|
+
- Runtime deps (`package.json`): `jose` (JWT verify/mint helpers), `bcryptjs`
|
|
6
|
+
(password/PSK hashing).
|
|
7
|
+
- Dev deps: `typescript`, `@types/node`, `@types/bcryptjs`.
|
|
8
|
+
|
|
9
|
+
## Cross-Repo / Gateway Calls
|
|
10
|
+
|
|
11
|
+
The SDK is a client to the Dominus gateway. Namespace code targets `/api/*`
|
|
12
|
+
paths; when a method sets `useGateway: true` the client transforms `/api/*` to
|
|
13
|
+
gateway `/svc/*` dispatch paths (`docs/architecture.md` §4,
|
|
14
|
+
`docs/routes-services.md`). Backends reached include guardian, authority,
|
|
15
|
+
workflow-manager, agent-runtime, db/redis/b2/logs workers, platform-worker,
|
|
16
|
+
coder-runtime, browser-worker, and others — see the service matrix in
|
|
17
|
+
`docs/routes-services.md`.
|
|
18
|
+
|
|
19
|
+
Notable routing facts (from `CLAUDE.md` / routes-services.md):
|
|
20
|
+
|
|
21
|
+
- `dominus.browser.*` must use `/api/browser/*` with `useGateway: true`
|
|
22
|
+
(gateway exposes `/svc/browser/*`); do not point at worker-local `/runs/*`.
|
|
23
|
+
- `dominus.platform.*` and `dominus.coder.*` call `/svc/*` via `gatewayFetch`
|
|
24
|
+
and forward `X-Actor-Type` / `X-Actor-Id`.
|
|
25
|
+
- `dominus.coder.ensureRun()` requires exactly one of `workflowRecipeRef` or
|
|
26
|
+
`pipelineRecipeRef`.
|
|
27
|
+
- `dominus.ai.stt` → `POST /api/agent/stt` (batch; legacy WebSocket STT retired).
|
|
28
|
+
|
|
29
|
+
## Runtime Assumptions
|
|
30
|
+
|
|
31
|
+
- ESM only (`"type": "module"`), Node `>=18`.
|
|
32
|
+
- Single published entry point; import from `'dominus-sdk-nodejs'` only.
|
|
33
|
+
|
|
34
|
+
## Environment Variables (by category, no values)
|
|
35
|
+
|
|
36
|
+
- **Auth:** `DOMINUS_TOKEN` (PSK; also seeds the in-memory cache encryption key).
|
|
37
|
+
- **Gateway/config:** resolved in `src/lib/config.ts` (gateway base URL / proxy
|
|
38
|
+
config). Read that file for the exact variable names before relying on one.
|
|
39
|
+
|
|
40
|
+
Never write secret values into docs or logs.
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
# 06 Workflows, Commands, And CI
|
|
2
|
-
|
|
3
|
-
All commands from `package.json` `scripts`.
|
|
4
|
-
|
|
5
|
-
## Install
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npm ci # CI / reproducible
|
|
9
|
-
npm install # local
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
## Build / Dev
|
|
13
|
-
|
|
14
|
-
```bash
|
|
15
|
-
npm run build # tsc -> dist/
|
|
16
|
-
npm run dev # tsc --watch
|
|
17
|
-
npm run clean # rm -rf dist
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
## Typecheck / Lint
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
npm run typecheck # tsc --noEmit
|
|
24
|
-
npm run lint # tsc --noEmit (lint == typecheck in this repo)
|
|
25
|
-
npm run test:types # tsc -p tsconfig.type-tests.json (the *.typecheck.ts files)
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## Test
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
npm test
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
`npm test` = `build` + `test:types` + an explicit `node --test` file list (24
|
|
35
|
-
files under `tests/`). Run before finalizing substantial changes (`CLAUDE.md`
|
|
36
|
-
Validation). Tests are committed and present — the older "no committed tests"
|
|
37
|
-
note is stale.
|
|
38
|
-
|
|
39
|
-
## Fast Local Validation
|
|
40
|
-
|
|
41
|
-
`npm run typecheck` (or `lint`) for a quick compile check; `npm run test:types`
|
|
42
|
-
for the type-level contract tests.
|
|
43
|
-
|
|
44
|
-
## Full Validation
|
|
45
|
-
|
|
46
|
-
`npm test` (build + type tests + unit/contract tests).
|
|
47
|
-
|
|
48
|
-
## CI Workflows
|
|
49
|
-
|
|
50
|
-
| Workflow | Trigger | Signal |
|
|
51
|
-
|---|---|---|
|
|
52
|
-
| `.github/workflows/publish-production.yml` | push to `production` | `npm ci` + build + npm publish (skips if version already on registry; falls back to provenance publish). |
|
|
53
|
-
| `.github/workflows/publish-staging.yml` | (staging branch) | npm publish lane. |
|
|
54
|
-
| `.github/workflows/publish-development.yml` | (development branch) | npm publish lane. |
|
|
55
|
-
|
|
56
|
-
Per workspace reality, only the `production` lane is the live publish path for
|
|
57
|
-
this repo. Publishing is version-gated: bump `package.json` `version` or the
|
|
58
|
-
publish step no-ops.
|
|
1
|
+
# 06 Workflows, Commands, And CI
|
|
2
|
+
|
|
3
|
+
All commands from `package.json` `scripts`.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm ci # CI / reproducible
|
|
9
|
+
npm install # local
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Build / Dev
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm run build # tsc -> dist/
|
|
16
|
+
npm run dev # tsc --watch
|
|
17
|
+
npm run clean # rm -rf dist
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Typecheck / Lint
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm run typecheck # tsc --noEmit
|
|
24
|
+
npm run lint # tsc --noEmit (lint == typecheck in this repo)
|
|
25
|
+
npm run test:types # tsc -p tsconfig.type-tests.json (the *.typecheck.ts files)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Test
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm test
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`npm test` = `build` + `test:types` + an explicit `node --test` file list (24
|
|
35
|
+
files under `tests/`). Run before finalizing substantial changes (`CLAUDE.md`
|
|
36
|
+
Validation). Tests are committed and present — the older "no committed tests"
|
|
37
|
+
note is stale.
|
|
38
|
+
|
|
39
|
+
## Fast Local Validation
|
|
40
|
+
|
|
41
|
+
`npm run typecheck` (or `lint`) for a quick compile check; `npm run test:types`
|
|
42
|
+
for the type-level contract tests.
|
|
43
|
+
|
|
44
|
+
## Full Validation
|
|
45
|
+
|
|
46
|
+
`npm test` (build + type tests + unit/contract tests).
|
|
47
|
+
|
|
48
|
+
## CI Workflows
|
|
49
|
+
|
|
50
|
+
| Workflow | Trigger | Signal |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| `.github/workflows/publish-production.yml` | push to `production` | `npm ci` + build + npm publish (skips if version already on registry; falls back to provenance publish). |
|
|
53
|
+
| `.github/workflows/publish-staging.yml` | (staging branch) | npm publish lane. |
|
|
54
|
+
| `.github/workflows/publish-development.yml` | (development branch) | npm publish lane. |
|
|
55
|
+
|
|
56
|
+
Per workspace reality, only the `production` lane is the live publish path for
|
|
57
|
+
this repo. Publishing is version-gated: bump `package.json` `version` or the
|
|
58
|
+
publish step no-ops.
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
# 07 Operations, Release, And Live Proof
|
|
2
|
-
|
|
3
|
-
## Deployment Lane
|
|
4
|
-
|
|
5
|
-
This is a published npm package, not a deployed service. "Release" = npm publish.
|
|
6
|
-
|
|
7
|
-
- Push to `production` → `.github/workflows/publish-production.yml` →
|
|
8
|
-
`npm publish --access public`.
|
|
9
|
-
- Per workspace convention this repo's production branch is `production` (NOT
|
|
10
|
-
`dominus-production`, which is the convention for other Dominus repos).
|
|
11
|
-
- Requires GitHub Environment `production` with `NPM_TOKEN` (or npm OIDC trusted
|
|
12
|
-
publishing for the provenance-only retry).
|
|
13
|
-
|
|
14
|
-
## Release Files And Version Rules
|
|
15
|
-
|
|
16
|
-
- `package.json` `version` is the single source of truth (6.6.0 at this
|
|
17
|
-
snapshot). The publish step checks `npm view <name>@<version>` and skips if the
|
|
18
|
-
version already exists, so **a version bump is required to publish**.
|
|
19
|
-
- `CHANGELOG.md` records each version's changes; update it with the bump.
|
|
20
|
-
- `package.json` `files` ships `dist`, `README.md`, and `docs`.
|
|
21
|
-
- `prepublishOnly` runs `npm run build` so `dist/` is fresh in the tarball.
|
|
22
|
-
|
|
23
|
-
## Live Proof
|
|
24
|
-
|
|
25
|
-
- Registry: `npm view dominus-sdk-nodejs version` should match the pushed
|
|
26
|
-
`package.json` version after the workflow succeeds.
|
|
27
|
-
- CI: the publish-production workflow run on the `production` push.
|
|
28
|
-
|
|
29
|
-
## Done Definitions
|
|
30
|
-
|
|
31
|
-
- **Local done:** `npm test` green (build + type tests + unit/contract tests).
|
|
32
|
-
- **CI done:** publish-production workflow succeeds.
|
|
33
|
-
- **Release done:** new version visible on npm.
|
|
34
|
-
|
|
35
|
-
## Rollback
|
|
36
|
-
|
|
37
|
-
Per `docs/workflow-hard-cut-release.md`: downgrade target is the previously
|
|
38
|
-
published production SDK version. Trigger: customers report Authority-backed
|
|
39
|
-
recipe launch or native pipelines cannot start. (npm versions are immutable;
|
|
40
|
-
"rollback" means consumers pin the prior version.)
|
|
1
|
+
# 07 Operations, Release, And Live Proof
|
|
2
|
+
|
|
3
|
+
## Deployment Lane
|
|
4
|
+
|
|
5
|
+
This is a published npm package, not a deployed service. "Release" = npm publish.
|
|
6
|
+
|
|
7
|
+
- Push to `production` → `.github/workflows/publish-production.yml` →
|
|
8
|
+
`npm publish --access public`.
|
|
9
|
+
- Per workspace convention this repo's production branch is `production` (NOT
|
|
10
|
+
`dominus-production`, which is the convention for other Dominus repos).
|
|
11
|
+
- Requires GitHub Environment `production` with `NPM_TOKEN` (or npm OIDC trusted
|
|
12
|
+
publishing for the provenance-only retry).
|
|
13
|
+
|
|
14
|
+
## Release Files And Version Rules
|
|
15
|
+
|
|
16
|
+
- `package.json` `version` is the single source of truth (6.6.0 at this
|
|
17
|
+
snapshot). The publish step checks `npm view <name>@<version>` and skips if the
|
|
18
|
+
version already exists, so **a version bump is required to publish**.
|
|
19
|
+
- `CHANGELOG.md` records each version's changes; update it with the bump.
|
|
20
|
+
- `package.json` `files` ships `dist`, `README.md`, and `docs`.
|
|
21
|
+
- `prepublishOnly` runs `npm run build` so `dist/` is fresh in the tarball.
|
|
22
|
+
|
|
23
|
+
## Live Proof
|
|
24
|
+
|
|
25
|
+
- Registry: `npm view dominus-sdk-nodejs version` should match the pushed
|
|
26
|
+
`package.json` version after the workflow succeeds.
|
|
27
|
+
- CI: the publish-production workflow run on the `production` push.
|
|
28
|
+
|
|
29
|
+
## Done Definitions
|
|
30
|
+
|
|
31
|
+
- **Local done:** `npm test` green (build + type tests + unit/contract tests).
|
|
32
|
+
- **CI done:** publish-production workflow succeeds.
|
|
33
|
+
- **Release done:** new version visible on npm.
|
|
34
|
+
|
|
35
|
+
## Rollback
|
|
36
|
+
|
|
37
|
+
Per `docs/workflow-hard-cut-release.md`: downgrade target is the previously
|
|
38
|
+
published production SDK version. Trigger: customers report Authority-backed
|
|
39
|
+
recipe launch or native pipelines cannot start. (npm versions are immutable;
|
|
40
|
+
"rollback" means consumers pin the prior version.)
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
# 08 Security, Privacy, And Secrets
|
|
2
|
-
|
|
3
|
-
## Auth Boundaries
|
|
4
|
-
|
|
5
|
-
- **Service auth:** `DOMINUS_TOKEN` PSK → minted short-lived JWT via gateway
|
|
6
|
-
`/jwt/mint`, cached (`src/lib/client.ts`). Default for namespace calls.
|
|
7
|
-
- **User auth:** optional `userToken` passes a caller JWT through unchanged;
|
|
8
|
-
the backend authorizes the user context.
|
|
9
|
-
- **Selected-scope:** `mintSelectedScopeJwt(targetOrgId, targetEnv)` is the only
|
|
10
|
-
supported selected-scope mint helper; scope keys off org + environment.
|
|
11
|
-
- **Local JWT helpers:** `verifyJwtLocally`, `isJwtValid`, `auth.validateJwt`
|
|
12
|
-
(local payload/expiry checks — not full remote introspection), `auth.getJwks`
|
|
13
|
-
(cached public keys).
|
|
14
|
-
|
|
15
|
-
Identity-family rule (workspace policy): service token, service JWT, portal user
|
|
16
|
-
JWT, client JWT, and selected-scope operator token are NOT interchangeable. Do
|
|
17
|
-
not forward a user or machine JWT to admin-only planes.
|
|
18
|
-
|
|
19
|
-
Service-side 401 rule (`CLAUDE.md`): a non-`/portal/auth/*` 401 must not be
|
|
20
|
-
laundered into user-session expiry by callers. Classify by
|
|
21
|
-
`DominusError.endpoint`, not message strings — every `getServiceJwt` throw
|
|
22
|
-
carries `endpoint='/jwt/mint'`.
|
|
23
|
-
|
|
24
|
-
## Secret / Config Resolution
|
|
25
|
-
|
|
26
|
-
- `src/lib/config.ts` resolves gateway/proxy/url config and `DOMINUS_TOKEN`
|
|
27
|
-
from env. No secret values are committed.
|
|
28
|
-
- `.gitignore` excludes `.env`, `.env.local`, `.env.*.local`, `.npmrc`.
|
|
29
|
-
|
|
30
|
-
## PHI / Sensitive-Data Rules
|
|
31
|
-
|
|
32
|
-
- This SDK carries no PHI itself, but it transports caller data to backends.
|
|
33
|
-
- Never log or write into docs: PHI, secret values, tokens, cookies, JWTs, raw
|
|
34
|
-
request/response bodies.
|
|
35
|
-
|
|
36
|
-
## Must Never Be Written Into Docs
|
|
37
|
-
|
|
38
|
-
Tokens, PSKs, JWTs, secret values, raw response bodies, customer/patient data.
|
|
1
|
+
# 08 Security, Privacy, And Secrets
|
|
2
|
+
|
|
3
|
+
## Auth Boundaries
|
|
4
|
+
|
|
5
|
+
- **Service auth:** `DOMINUS_TOKEN` PSK → minted short-lived JWT via gateway
|
|
6
|
+
`/jwt/mint`, cached (`src/lib/client.ts`). Default for namespace calls.
|
|
7
|
+
- **User auth:** optional `userToken` passes a caller JWT through unchanged;
|
|
8
|
+
the backend authorizes the user context.
|
|
9
|
+
- **Selected-scope:** `mintSelectedScopeJwt(targetOrgId, targetEnv)` is the only
|
|
10
|
+
supported selected-scope mint helper; scope keys off org + environment.
|
|
11
|
+
- **Local JWT helpers:** `verifyJwtLocally`, `isJwtValid`, `auth.validateJwt`
|
|
12
|
+
(local payload/expiry checks — not full remote introspection), `auth.getJwks`
|
|
13
|
+
(cached public keys).
|
|
14
|
+
|
|
15
|
+
Identity-family rule (workspace policy): service token, service JWT, portal user
|
|
16
|
+
JWT, client JWT, and selected-scope operator token are NOT interchangeable. Do
|
|
17
|
+
not forward a user or machine JWT to admin-only planes.
|
|
18
|
+
|
|
19
|
+
Service-side 401 rule (`CLAUDE.md`): a non-`/portal/auth/*` 401 must not be
|
|
20
|
+
laundered into user-session expiry by callers. Classify by
|
|
21
|
+
`DominusError.endpoint`, not message strings — every `getServiceJwt` throw
|
|
22
|
+
carries `endpoint='/jwt/mint'`.
|
|
23
|
+
|
|
24
|
+
## Secret / Config Resolution
|
|
25
|
+
|
|
26
|
+
- `src/lib/config.ts` resolves gateway/proxy/url config and `DOMINUS_TOKEN`
|
|
27
|
+
from env. No secret values are committed.
|
|
28
|
+
- `.gitignore` excludes `.env`, `.env.local`, `.env.*.local`, `.npmrc`.
|
|
29
|
+
|
|
30
|
+
## PHI / Sensitive-Data Rules
|
|
31
|
+
|
|
32
|
+
- This SDK carries no PHI itself, but it transports caller data to backends.
|
|
33
|
+
- Never log or write into docs: PHI, secret values, tokens, cookies, JWTs, raw
|
|
34
|
+
request/response bodies.
|
|
35
|
+
|
|
36
|
+
## Must Never Be Written Into Docs
|
|
37
|
+
|
|
38
|
+
Tokens, PSKs, JWTs, secret values, raw response bodies, customer/patient data.
|