dominus-sdk-nodejs 6.4.0 → 6.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -0
- package/dist/contracts/versioned-storage.d.ts +135 -0
- package/dist/contracts/versioned-storage.d.ts.map +1 -0
- package/dist/contracts/versioned-storage.js +2 -0
- package/dist/contracts/versioned-storage.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/conversation-format.d.ts +49 -0
- package/dist/lib/conversation-format.d.ts.map +1 -0
- package/dist/lib/conversation-format.js +103 -0
- package/dist/lib/conversation-format.js.map +1 -0
- package/dist/namespaces/artifacts.d.ts +26 -70
- package/dist/namespaces/artifacts.d.ts.map +1 -1
- package/dist/namespaces/artifacts.js +10 -1
- package/dist/namespaces/artifacts.js.map +1 -1
- package/dist/namespaces/recipes.d.ts +3 -0
- package/dist/namespaces/recipes.d.ts.map +1 -1
- package/dist/namespaces/recipes.js +85 -0
- package/dist/namespaces/recipes.js.map +1 -1
- package/dist/namespaces/redis.d.ts +5 -0
- package/dist/namespaces/redis.d.ts.map +1 -1
- package/dist/namespaces/redis.js +5 -0
- package/dist/namespaces/redis.js.map +1 -1
- package/dist/namespaces/stash.d.ts +59 -11
- package/dist/namespaces/stash.d.ts.map +1 -1
- package/dist/namespaces/stash.js +71 -7
- package/dist/namespaces/stash.js.map +1 -1
- package/docs/architecture.md +13 -0
- package/package.json +2 -2
package/dist/namespaces/stash.js
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Stash Namespace — the single Dominus storage verb family.
|
|
3
3
|
*
|
|
4
|
+
* Positioning: this is the **primary storage surface** for Dominus applications.
|
|
5
|
+
* Store named-kind data here and let the kind registry pick the backend — you
|
|
6
|
+
* address data by what it is (env, kind, scope, key), not by which primitive
|
|
7
|
+
* holds it. Reach for the primitive namespaces (`redis`, `db`, `files`) or the
|
|
8
|
+
* addressed `artifacts` helpers directly only for ephemera or when building a
|
|
9
|
+
* kernel backend (the Two-Layer Storage Rule). Those primitives are building
|
|
10
|
+
* blocks, never deprecated.
|
|
11
|
+
*
|
|
4
12
|
* Every modern call is addressed by (env, kind, scope, key) and dispatches by
|
|
5
|
-
* the kind registry to one of
|
|
13
|
+
* the kind registry to one of six backends: db-row (operator/credential rows),
|
|
6
14
|
* b2-versioned-bytes (artifact-style versioned bytes), b2-pointer-text
|
|
7
|
-
* (recipe-style YAML/JSON text with project→group→platform fallback),
|
|
8
|
-
* redis-ttl (ephemeral state)
|
|
9
|
-
*
|
|
15
|
+
* (recipe-style YAML/JSON text with project→group→platform fallback),
|
|
16
|
+
* redis-ttl (ephemeral state), artifact-v2 (artifact-worker owned versioned
|
|
17
|
+
* lifecycle), and journal (append-only conversation journals). The verb stays
|
|
18
|
+
* the same; the registered behavior bundle changes per kind.
|
|
10
19
|
*
|
|
11
|
-
* Kernel seeds only
|
|
12
|
-
* application-secret, browser-recipe, workflow-recipe-v1, pipeline-recipe-v1
|
|
20
|
+
* Kernel seeds only generic Dominus kinds:
|
|
21
|
+
* application-secret, browser-recipe, workflow-recipe-v1, pipeline-recipe-v1,
|
|
22
|
+
* artifact-v1, conversation-v1
|
|
13
23
|
* Product/group vocabularies (CareBridge envoy-bootstrap-v1, pacs-extraction-
|
|
14
24
|
* recipe-v1, credential.vendor.<vendor>, config.routing.<config>,
|
|
15
25
|
* study-artifact-<name>, etc.) are registered by the owning product's
|
|
@@ -23,6 +33,7 @@
|
|
|
23
33
|
* stores items in each project's `stash.*` schema and transparently falls
|
|
24
34
|
* back to a designated shared project on read.
|
|
25
35
|
*/
|
|
36
|
+
import { ValidationError } from '../lib/errors.js';
|
|
26
37
|
// ============================================================================
|
|
27
38
|
function buildActor(input) {
|
|
28
39
|
if (!input.actor_type && !input.actor_id)
|
|
@@ -35,6 +46,32 @@ function omitActorHeaders(input) {
|
|
|
35
46
|
const { actor_type: _at, actor_id: _ai, ...rest } = input;
|
|
36
47
|
return rest;
|
|
37
48
|
}
|
|
49
|
+
function ttlSecondsFromExpiresAt(expiresAt) {
|
|
50
|
+
const expiresAtMs = Date.parse(expiresAt);
|
|
51
|
+
if (!Number.isFinite(expiresAtMs)) {
|
|
52
|
+
throw new ValidationError('expires_at must be a valid future timestamp', 400, { code: 'stash.watch.expires_at_invalid', category: 'validation' }, '/svc/stash/watch');
|
|
53
|
+
}
|
|
54
|
+
const ttlSeconds = Math.ceil((expiresAtMs - Date.now()) / 1000);
|
|
55
|
+
if (ttlSeconds <= 0) {
|
|
56
|
+
throw new ValidationError('expires_at must be a valid future timestamp', 400, { code: 'stash.watch.expires_at_invalid', category: 'validation' }, '/svc/stash/watch');
|
|
57
|
+
}
|
|
58
|
+
return ttlSeconds;
|
|
59
|
+
}
|
|
60
|
+
function normalizeStashWatchInput(input) {
|
|
61
|
+
const { actor_type: _at, actor_id: _ai, trigger, expires_at, ...rest } = input;
|
|
62
|
+
const triggerRule = rest.trigger_rule ?? trigger;
|
|
63
|
+
if (!triggerRule) {
|
|
64
|
+
throw new ValidationError('trigger_rule is required', 400, { code: 'stash.watch.trigger_rule_required', category: 'validation' }, '/svc/stash/watch');
|
|
65
|
+
}
|
|
66
|
+
const body = {
|
|
67
|
+
...rest,
|
|
68
|
+
trigger_rule: triggerRule,
|
|
69
|
+
};
|
|
70
|
+
if (body.ttl_seconds === undefined && expires_at !== undefined) {
|
|
71
|
+
body.ttl_seconds = ttlSecondsFromExpiresAt(expires_at);
|
|
72
|
+
}
|
|
73
|
+
return body;
|
|
74
|
+
}
|
|
38
75
|
export class StashNamespace {
|
|
39
76
|
client;
|
|
40
77
|
constructor(client) {
|
|
@@ -114,6 +151,33 @@ export class StashNamespace {
|
|
|
114
151
|
useGateway: true,
|
|
115
152
|
});
|
|
116
153
|
}
|
|
154
|
+
/** Append one or more entries to a journal head. */
|
|
155
|
+
async append(input) {
|
|
156
|
+
return this.client.request({
|
|
157
|
+
endpoint: '/svc/stash/append',
|
|
158
|
+
body: omitActorHeaders(input),
|
|
159
|
+
actor: buildActor(input),
|
|
160
|
+
useGateway: true,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/** Read entries from a journal head. */
|
|
164
|
+
async entries(input) {
|
|
165
|
+
return this.client.request({
|
|
166
|
+
endpoint: '/svc/stash/entries',
|
|
167
|
+
body: omitActorHeaders(input),
|
|
168
|
+
actor: buildActor(input),
|
|
169
|
+
useGateway: true,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/** Head metadata for a journal head. */
|
|
173
|
+
async journalHead(input) {
|
|
174
|
+
return this.client.request({
|
|
175
|
+
endpoint: '/svc/stash/journal-head',
|
|
176
|
+
body: omitActorHeaders(input),
|
|
177
|
+
actor: buildActor(input),
|
|
178
|
+
useGateway: true,
|
|
179
|
+
});
|
|
180
|
+
}
|
|
117
181
|
/** Compare two versions of a b2-versioned-bytes item. */
|
|
118
182
|
async compare(input) {
|
|
119
183
|
return this.client.request({
|
|
@@ -145,7 +209,7 @@ export class StashNamespace {
|
|
|
145
209
|
async watch(input) {
|
|
146
210
|
return this.client.request({
|
|
147
211
|
endpoint: '/svc/stash/watch',
|
|
148
|
-
body:
|
|
212
|
+
body: normalizeStashWatchInput(input),
|
|
149
213
|
actor: buildActor(input),
|
|
150
214
|
useGateway: true,
|
|
151
215
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stash.js","sourceRoot":"","sources":["../../src/namespaces/stash.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stash.js","sourceRoot":"","sources":["../../src/namespaces/stash.ts"],"names":[],"mappings":"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"}
|
package/docs/architecture.md
CHANGED
|
@@ -29,6 +29,19 @@ This document describes how `dominus-sdk-nodejs` is structured and how requests
|
|
|
29
29
|
- `console-capture.ts`: optional console forwarding to logs
|
|
30
30
|
- `page-rules.ts`, `user-session.ts`: local portal/session acceleration
|
|
31
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
|
+
|
|
32
45
|
## 3. Request Lifecycle
|
|
33
46
|
|
|
34
47
|
1. Caller invokes namespace method.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dominus-sdk-nodejs",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.5.0",
|
|
4
4
|
"description": "Node.js SDK for the Dominus gateway-first platform",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"dev": "tsc --watch",
|
|
21
21
|
"clean": "rm -rf dist",
|
|
22
22
|
"prepublishOnly": "npm run build",
|
|
23
|
-
"test": "npm run build && npm run test:types && node --test tests/auth.test.js tests/health.test.js tests/browser.test.js tests/recipes.test.js tests/platform-coder.test.js tests/publisher.test.js tests/workflow-lifecycle.test.js tests/logs.test.js tests/public-exports.test.js tests/authority-contract.test.js tests/error-contract.test.js tests/admin.test.js tests/control-plane.test.js tests/schema-builder-contract.test.js tests/files-contract.test.js",
|
|
23
|
+
"test": "npm run build && npm run test:types && node --test tests/auth.test.js tests/health.test.js tests/browser.test.js tests/recipes.test.js tests/recipes-stash-routing.test.js tests/platform-coder.test.js tests/publisher.test.js tests/workflow-lifecycle.test.js tests/logs.test.js tests/public-exports.test.js tests/authority-contract.test.js tests/error-contract.test.js tests/admin.test.js tests/control-plane.test.js tests/schema-builder-contract.test.js tests/files-contract.test.js tests/storage-wire-contract.test.js tests/conversation-format.test.js",
|
|
24
24
|
"test:types": "tsc -p tsconfig.type-tests.json",
|
|
25
25
|
"lint": "tsc --noEmit"
|
|
26
26
|
},
|