@cotal-ai/core 0.90.1 → 0.92.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/dist/agent-file.d.ts +2 -1
- package/dist/agent-file.d.ts.map +1 -1
- package/dist/agent-file.js +5 -3
- package/dist/agent-file.js.map +1 -1
- package/dist/auth-provider.d.ts +155 -1
- package/dist/auth-provider.d.ts.map +1 -1
- package/dist/auth-provider.js +24 -0
- package/dist/auth-provider.js.map +1 -1
- package/dist/authority-store-config.d.ts +31 -0
- package/dist/authority-store-config.d.ts.map +1 -0
- package/dist/authority-store-config.js +45 -0
- package/dist/authority-store-config.js.map +1 -0
- package/dist/backup-config.d.ts +32 -1
- package/dist/backup-config.d.ts.map +1 -1
- package/dist/backup-config.js +11 -0
- package/dist/backup-config.js.map +1 -1
- package/dist/backup.d.ts +4 -0
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js +14 -0
- package/dist/backup.js.map +1 -1
- package/dist/broker-identity.d.ts +24 -0
- package/dist/broker-identity.d.ts.map +1 -0
- package/dist/broker-identity.js +36 -0
- package/dist/broker-identity.js.map +1 -0
- package/dist/browser-control.d.ts +1 -0
- package/dist/browser-control.d.ts.map +1 -1
- package/dist/browser-control.js +1 -0
- package/dist/browser-control.js.map +1 -1
- package/dist/browser-validators-build.d.ts +1 -0
- package/dist/browser-validators-build.d.ts.map +1 -1
- package/dist/channels.d.ts +14 -0
- package/dist/channels.d.ts.map +1 -1
- package/dist/channels.js +19 -5
- package/dist/channels.js.map +1 -1
- package/dist/command.d.ts +57 -0
- package/dist/command.d.ts.map +1 -1
- package/dist/command.js +49 -2
- package/dist/command.js.map +1 -1
- package/dist/connector-setup.d.ts +6 -0
- package/dist/connector-setup.d.ts.map +1 -1
- package/dist/connector.d.ts +3 -0
- package/dist/connector.d.ts.map +1 -1
- package/dist/connector.js.map +1 -1
- package/dist/endpoint-binding.d.ts +66 -1
- package/dist/endpoint-binding.d.ts.map +1 -1
- package/dist/endpoint-binding.js +167 -118
- package/dist/endpoint-binding.js.map +1 -1
- package/dist/endpoint-call.js +1 -1
- package/dist/endpoint-call.js.map +1 -1
- package/dist/endpoint-caller.d.ts +2 -0
- package/dist/endpoint-caller.d.ts.map +1 -1
- package/dist/endpoint-caller.js.map +1 -1
- package/dist/endpoint-grants.d.ts +15 -5
- package/dist/endpoint-grants.d.ts.map +1 -1
- package/dist/endpoint-grants.js +17 -5
- package/dist/endpoint-grants.js.map +1 -1
- package/dist/endpoint-invoke.d.ts +9 -0
- package/dist/endpoint-invoke.d.ts.map +1 -1
- package/dist/endpoint-invoke.js +7 -0
- package/dist/endpoint-invoke.js.map +1 -1
- package/dist/endpoint-schema-diff.d.ts +20 -0
- package/dist/endpoint-schema-diff.d.ts.map +1 -0
- package/dist/endpoint-schema-diff.js +15 -0
- package/dist/endpoint-schema-diff.js.map +1 -0
- package/dist/endpoint-serve.d.ts +4 -0
- package/dist/endpoint-serve.d.ts.map +1 -1
- package/dist/endpoint-serve.js +1 -1
- package/dist/endpoint-serve.js.map +1 -1
- package/dist/endpoint.d.ts +98 -5
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/endpoint.js +350 -36
- package/dist/endpoint.js.map +1 -1
- package/dist/identity.d.ts +18 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +28 -1
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/issued-authority.d.ts +25 -1
- package/dist/issued-authority.d.ts.map +1 -1
- package/dist/issued-authority.js +24 -7
- package/dist/issued-authority.js.map +1 -1
- package/dist/membership-feed.d.ts +16 -12
- package/dist/membership-feed.d.ts.map +1 -1
- package/dist/membership-feed.js +143 -12
- package/dist/membership-feed.js.map +1 -1
- package/dist/one-line.d.ts +5 -4
- package/dist/one-line.d.ts.map +1 -1
- package/dist/one-line.js +6 -5
- package/dist/one-line.js.map +1 -1
- package/dist/provision.d.ts +8 -1
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +39 -17
- package/dist/provision.js.map +1 -1
- package/dist/registry.d.ts +8 -4
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +58 -20
- package/dist/registry.js.map +1 -1
- package/dist/remote-manager-authority.d.ts +34 -2
- package/dist/remote-manager-authority.d.ts.map +1 -1
- package/dist/remote-manager-authority.js.map +1 -1
- package/dist/remote-service-authority.d.ts +10 -6
- package/dist/remote-service-authority.d.ts.map +1 -1
- package/dist/remote-service-authority.js +4 -1
- package/dist/remote-service-authority.js.map +1 -1
- package/dist/run-admission.d.ts +24 -1
- package/dist/run-admission.d.ts.map +1 -1
- package/dist/run-admission.js +60 -3
- package/dist/run-admission.js.map +1 -1
- package/dist/run-cancel.d.ts +43 -0
- package/dist/run-cancel.d.ts.map +1 -0
- package/dist/run-cancel.js +72 -0
- package/dist/run-cancel.js.map +1 -0
- package/dist/run-host.d.ts +12 -0
- package/dist/run-host.d.ts.map +1 -1
- package/dist/run-submission-client.d.ts +35 -0
- package/dist/run-submission-client.d.ts.map +1 -0
- package/dist/run-submission-client.js +61 -0
- package/dist/run-submission-client.js.map +1 -0
- package/dist/run-submission.d.ts +78 -0
- package/dist/run-submission.d.ts.map +1 -0
- package/dist/run-submission.js +158 -0
- package/dist/run-submission.js.map +1 -0
- package/dist/sealed-reply.d.ts +21 -0
- package/dist/sealed-reply.d.ts.map +1 -0
- package/dist/sealed-reply.js +75 -0
- package/dist/sealed-reply.js.map +1 -0
- package/dist/secret-fs.d.ts +29 -6
- package/dist/secret-fs.d.ts.map +1 -1
- package/dist/secret-fs.js +107 -18
- package/dist/secret-fs.js.map +1 -1
- package/dist/space-deletion-targets.d.ts +4 -0
- package/dist/space-deletion-targets.d.ts.map +1 -0
- package/dist/space-deletion-targets.js +15 -0
- package/dist/space-deletion-targets.js.map +1 -0
- package/dist/space-initialization-diff.d.ts +47 -0
- package/dist/space-initialization-diff.d.ts.map +1 -0
- package/dist/space-initialization-diff.js +100 -0
- package/dist/space-initialization-diff.js.map +1 -0
- package/dist/space-initialization-observation.d.ts +52 -0
- package/dist/space-initialization-observation.d.ts.map +1 -0
- package/dist/space-initialization-observation.js +133 -0
- package/dist/space-initialization-observation.js.map +1 -0
- package/dist/space-resource-definitions.d.ts +86 -0
- package/dist/space-resource-definitions.d.ts.map +1 -0
- package/dist/space-resource-definitions.js +133 -0
- package/dist/space-resource-definitions.js.map +1 -0
- package/dist/space-schema-diff.d.ts +45 -0
- package/dist/space-schema-diff.d.ts.map +1 -0
- package/dist/space-schema-diff.js +204 -0
- package/dist/space-schema-diff.js.map +1 -0
- package/dist/space-schema-observation.d.ts +45 -0
- package/dist/space-schema-observation.d.ts.map +1 -0
- package/dist/space-schema-observation.js +78 -0
- package/dist/space-schema-observation.js.map +1 -0
- package/dist/spaces.d.ts.map +1 -1
- package/dist/spaces.js +5 -25
- package/dist/spaces.js.map +1 -1
- package/dist/stream-schema-diff.d.ts +31 -0
- package/dist/stream-schema-diff.d.ts.map +1 -0
- package/dist/stream-schema-diff.js +45 -0
- package/dist/stream-schema-diff.js.map +1 -0
- package/dist/streams.d.ts +30 -1
- package/dist/streams.d.ts.map +1 -1
- package/dist/streams.js +41 -18
- package/dist/streams.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Kvm } from "@nats-io/kv";
|
|
2
|
+
import { CHANNEL_DEFAULTS_KEY, channelBucket, isConcreteChannel } from "./subjects.js";
|
|
3
|
+
import { validateChannelConfig, validateChannelDefaults } from "./channels.js";
|
|
4
|
+
import { spaceInitializationDefinitions } from "./space-resource-definitions.js";
|
|
5
|
+
import { spaceSchemaReadFailure } from "./space-schema-observation.js";
|
|
6
|
+
/** Bind the selected existing registry on this connection through the public native API.
|
|
7
|
+
* No bucket creation or stream override. Names are not server/account or write authority. */
|
|
8
|
+
export async function spaceInitializationReadPort(nc, space) {
|
|
9
|
+
const bucket = channelBucket(space), stream = `KV_${bucket}`;
|
|
10
|
+
const kv = await new Kvm(nc).open(bucket);
|
|
11
|
+
return Object.freeze({ bucket, stream, get: (key) => kv.get(key) });
|
|
12
|
+
}
|
|
13
|
+
function object(value) {
|
|
14
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
export function validateSpaceInitializationInputs(deliveryClass, seed) {
|
|
17
|
+
try {
|
|
18
|
+
if (deliveryClass !== "live" && deliveryClass !== "durable")
|
|
19
|
+
throw new Error();
|
|
20
|
+
validateChannelDefaults({ deliveryClass });
|
|
21
|
+
if (seed === undefined)
|
|
22
|
+
return;
|
|
23
|
+
if (!object(seed) || Object.keys(seed).some((key) => key !== "defaults" && key !== "channels"))
|
|
24
|
+
throw new Error();
|
|
25
|
+
if (seed.defaults !== undefined) {
|
|
26
|
+
if (!object(seed.defaults))
|
|
27
|
+
throw new Error();
|
|
28
|
+
validateChannelDefaults(seed.defaults);
|
|
29
|
+
}
|
|
30
|
+
if (seed.channels !== undefined) {
|
|
31
|
+
if (!object(seed.channels) || Object.keys(seed.channels).length > 1024)
|
|
32
|
+
throw new Error();
|
|
33
|
+
for (const [key, patch] of Object.entries(seed.channels)) {
|
|
34
|
+
if (key === CHANNEL_DEFAULTS_KEY || !isConcreteChannel(key) || !object(patch))
|
|
35
|
+
throw new Error();
|
|
36
|
+
validateChannelConfig(patch);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new Error("initialization observation requires valid native profile/patch inputs and at most 1024 concrete nonreserved channel keys; no registry read was attempted");
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** Observe only the requested seed keys and defaults. Native validation precedes reads. The
|
|
45
|
+
* five-second/8 MiB budget leaves unvisited rows explicit; expiry does not cancel an in-flight
|
|
46
|
+
* request. The caller retains connection custody. No row absence authorizes creation. */
|
|
47
|
+
export async function observeSpaceInitialization(reads, space, deliveryClass, seed) {
|
|
48
|
+
validateSpaceInitializationInputs(deliveryClass, seed);
|
|
49
|
+
const definitions = spaceInitializationDefinitions(space, deliveryClass, seed);
|
|
50
|
+
if (reads.bucket !== definitions.registry.bucket || reads.stream !== definitions.registry.stream)
|
|
51
|
+
throw new Error("initialization read-port target does not match the selected registry; no key was read");
|
|
52
|
+
const keys = [...new Set([...definitions.seed.entries.map((entry) => entry.key), definitions.profileDefault.key])];
|
|
53
|
+
const observations = [];
|
|
54
|
+
const deadline = performance.now() + 5000, decoder = new TextDecoder("utf-8", { fatal: true });
|
|
55
|
+
let bytes = 0, deadlineReached = false;
|
|
56
|
+
for (const key of keys) {
|
|
57
|
+
const row = { key, operation: "kv-get" }, remaining = deadline - performance.now();
|
|
58
|
+
if (remaining <= 0)
|
|
59
|
+
deadlineReached = true;
|
|
60
|
+
if (deadlineReached || bytes >= 8 * 1024 * 1024) {
|
|
61
|
+
observations.push({ ...row, state: "not-observed-budget" });
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
let timer;
|
|
65
|
+
try {
|
|
66
|
+
const result = await Promise.race([
|
|
67
|
+
reads.get(key).then((entry) => ({ kind: "read", entry })),
|
|
68
|
+
new Promise((resolve) => { timer = setTimeout(() => resolve({ kind: "deadline" }), remaining); }),
|
|
69
|
+
]);
|
|
70
|
+
if (result.kind === "deadline") {
|
|
71
|
+
deadlineReached = true;
|
|
72
|
+
observations.push({ ...row, state: "observation-failed" });
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
const entry = result.entry;
|
|
76
|
+
if (entry === null) {
|
|
77
|
+
observations.push({ ...row, state: "reported-not-found" });
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (entry.bucket !== reads.bucket || entry.key !== key) {
|
|
81
|
+
observations.push({ ...row, state: "target-mismatch" });
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (!Number.isSafeInteger(entry.revision) || entry.revision <= 0) {
|
|
85
|
+
observations.push({ ...row, state: "observation-failed" });
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (entry.operation === "DEL" || entry.operation === "PURGE") {
|
|
89
|
+
observations.push({ ...row, state: "observed-tombstone", revision: entry.revision, marker: entry.operation });
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (entry.operation !== "PUT" || !(entry.value instanceof Uint8Array)) {
|
|
93
|
+
observations.push({ ...row, state: "observation-failed" });
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
bytes += entry.value.byteLength;
|
|
97
|
+
if (entry.value.byteLength > 65536 || bytes > 8 * 1024 * 1024) {
|
|
98
|
+
observations.push({ ...row, state: "observation-failed" });
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const value = JSON.parse(decoder.decode(entry.value));
|
|
102
|
+
if (!object(value)) {
|
|
103
|
+
observations.push({ ...row, state: "observation-failed" });
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (key === CHANNEL_DEFAULTS_KEY)
|
|
107
|
+
validateChannelDefaults(value);
|
|
108
|
+
else
|
|
109
|
+
validateChannelConfig(value);
|
|
110
|
+
observations.push({ ...row, state: "present", revision: entry.revision, value });
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
const state = spaceSchemaReadFailure(error);
|
|
114
|
+
observations.push({ ...row, state: state === "reported-not-found" ? "registry-unavailable" : state });
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
clearTimeout(timer);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
kind: "space-initialization-observations",
|
|
122
|
+
space, registry: definitions.registry, observations,
|
|
123
|
+
scope: "provided registry handle and requested keys; observations can be stale and are not a revision-guarded write plan",
|
|
124
|
+
byteBudget: 8 * 1024 * 1024, deadlineMs: 5000, deadlineReached,
|
|
125
|
+
fullFieldPolicyApplied: false,
|
|
126
|
+
readerRequestCancellationEstablished: false,
|
|
127
|
+
connectionAuthorityChecked: false,
|
|
128
|
+
absenceAuthoritativelyProven: false,
|
|
129
|
+
applyPermitted: false,
|
|
130
|
+
writes: [],
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=space-initialization-observation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"space-initialization-observation.js","sourceRoot":"","sources":["../src/space-initialization-observation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type StreamConfig } from "@nats-io/jetstream";
|
|
2
|
+
import { type Kvm } from "@nats-io/kv";
|
|
3
|
+
import type { Objm } from "@nats-io/obj";
|
|
4
|
+
import { type ChannelRegistryFile } from "./channels.js";
|
|
5
|
+
import type { DeliveryClass } from "./types.js";
|
|
6
|
+
import { type EndpointStreamOptions } from "./endpoint-binding.js";
|
|
7
|
+
export type SpaceResourceDefinition = {
|
|
8
|
+
kind: "stream";
|
|
9
|
+
stream: string;
|
|
10
|
+
config: Partial<StreamConfig> & {
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
verification: "canonical-backup" | "declared-fields" | "contract";
|
|
14
|
+
} | {
|
|
15
|
+
kind: "kv";
|
|
16
|
+
stream: string;
|
|
17
|
+
bucket: string;
|
|
18
|
+
createOptions: NonNullable<Parameters<Kvm["create"]>[1]>;
|
|
19
|
+
hardenAfterCreate?: Partial<StreamConfig>;
|
|
20
|
+
verification: "native-runtime-check-required" | "records" | "auth" | "sessions" | "issued" | "admission";
|
|
21
|
+
} | {
|
|
22
|
+
kind: "object-store";
|
|
23
|
+
stream: string;
|
|
24
|
+
bucket: string;
|
|
25
|
+
createOptions: NonNullable<Parameters<Objm["create"]>[1]>;
|
|
26
|
+
verification: "artifact";
|
|
27
|
+
};
|
|
28
|
+
/** Project only explicit public KV/object option fields used by native bootstrap. No SDK
|
|
29
|
+
* default, private constructor or unspecified option is expanded into an observed fact. */
|
|
30
|
+
export declare function explicitSpaceResourceFields(resource: SpaceResourceDefinition): {
|
|
31
|
+
config: Partial<StreamConfig> & {
|
|
32
|
+
name: string;
|
|
33
|
+
};
|
|
34
|
+
unexpanded: string[];
|
|
35
|
+
};
|
|
36
|
+
/** Only public scalar KV input defaults. No constructor, server feature probe or effective
|
|
37
|
+
* stream-default expansion is performed. Unsupported public defaults fail closed. */
|
|
38
|
+
export declare function nativeKvScalarInputDefaults(): Partial<StreamConfig>;
|
|
39
|
+
/** Desired first-party configuration for one explicit native STREAM.CREATE. Store subjects,
|
|
40
|
+
* public scalar options and hardening share the bootstrap definitions; hardening is present at
|
|
41
|
+
* creation, not applied after adopting an existing bucket. This is never a repair/update plan. */
|
|
42
|
+
export declare function spaceResourceCreationConfig(resource: SpaceResourceDefinition): Partial<StreamConfig> & {
|
|
43
|
+
name: string;
|
|
44
|
+
};
|
|
45
|
+
/** Collect the native bootstrap inputs without opening a connection or deriving SDK defaults.
|
|
46
|
+
* Definitions describe creation, not safe updates: authority and artifact verifiers still own
|
|
47
|
+
* their guards. Neither this value nor its hardening fields authorize provisioning or repair. */
|
|
48
|
+
export declare function spaceResourceDefinitions(space: string, options?: EndpointStreamOptions): {
|
|
49
|
+
kind: "native-space-resource-definitions";
|
|
50
|
+
space: string;
|
|
51
|
+
resources: SpaceResourceDefinition[];
|
|
52
|
+
scope: "native creation inputs; not an ordered mutation plan or full effective schema";
|
|
53
|
+
pendingPolicy: readonly ["full-effective-field-policy", "registry-seed", "default-delivery", "observation-classification", "reconciliation-allowlist", "privileged-apply"];
|
|
54
|
+
completeSpaceSchema: false;
|
|
55
|
+
sdkDefaultsExpanded: false;
|
|
56
|
+
connectionAuthorityChecked: false;
|
|
57
|
+
absenceAuthoritativelyProven: false;
|
|
58
|
+
applyPermitted: false;
|
|
59
|
+
writes: readonly [];
|
|
60
|
+
};
|
|
61
|
+
/** Describe native seed/profile precedence without deciding that any row may be written.
|
|
62
|
+
* The caller supplies the deployment profile; no missing daemon or credential selects it.
|
|
63
|
+
* Revision-bound observation, validation and guarded application remain separate work. */
|
|
64
|
+
export declare function spaceInitializationDefinitions(space: string, deliveryClass: DeliveryClass, seed?: ChannelRegistryFile): {
|
|
65
|
+
kind: "native-space-initialization-definitions";
|
|
66
|
+
space: string;
|
|
67
|
+
registry: {
|
|
68
|
+
bucket: string;
|
|
69
|
+
stream: string;
|
|
70
|
+
};
|
|
71
|
+
seed: {
|
|
72
|
+
entries: import("./channels.js").ChannelRegistrySeedEntry[];
|
|
73
|
+
merge: "specified-fields-overwrite-existing";
|
|
74
|
+
};
|
|
75
|
+
profileDefault: {
|
|
76
|
+
key: string;
|
|
77
|
+
patch: import("./types.js").ChannelDefaults;
|
|
78
|
+
condition: "deliveryClass-is-absent";
|
|
79
|
+
};
|
|
80
|
+
order: "seed-before-profile-default; explicit-existing-class-wins";
|
|
81
|
+
scope: "native patch inputs and precedence; not observed rows or a revision-bound write plan";
|
|
82
|
+
observationsComplete: false;
|
|
83
|
+
applyPermitted: false;
|
|
84
|
+
writes: readonly [];
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=space-resource-definitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"space-resource-definitions.d.ts","sourceRoot":"","sources":["../src/space-resource-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAqB,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAG1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAA2D,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAC;AAW/B,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,YAAY,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,UAAU,CAAA;CAAE,GACvJ;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAAC,YAAY,EAAE,+BAA+B,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAA;CAAE,GAC7P;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,YAAY,EAAE,UAAU,CAAA;CAAE,CAAC;AAElJ;4FAC4F;AAC5F,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,uBAAuB,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAiBzJ;AAGD;sFACsF;AACtF,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,YAAY,CAAC,CAInE;AAED;;mGAEmG;AACnG,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAUvH;AAED;;kGAEkG;AAClG,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B;;;;;;;;;;;;EAmC1F;AAED;;2FAE2F;AAC3F,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;EAarH"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { DiscardPolicy } from "@nats-io/jetstream";
|
|
2
|
+
import { defaultBucketOpts } from "@nats-io/kv";
|
|
3
|
+
import { nanos } from "@nats-io/transport-node";
|
|
4
|
+
import { spaceStreamCreationBase } from "./backup-config.js";
|
|
5
|
+
import { CHANNEL_DEFAULTS_KEY, channelBucket, objectStoreStream } from "./subjects.js";
|
|
6
|
+
import { channelDeliveryDefaultPatch, channelRegistrySeedEntries } from "./channels.js";
|
|
7
|
+
import { endpointAuthorityStoreDefinitions, endpointContractStreamConfig, endpointDataStreamConfigs, endpointSessionStoreDefinition, } from "./endpoint-binding.js";
|
|
8
|
+
import { issuedStoreDefinitions } from "./issued-authority.js";
|
|
9
|
+
import { admissionStoreDefinition } from "./run-admission.js";
|
|
10
|
+
import { artifactStoreDefinition, membershipStoreDefinition, spaceMessageStreamConfigs, spaceRegistryStreamConfigs, ttlBuckets, } from "./streams.js";
|
|
11
|
+
/** Project only explicit public KV/object option fields used by native bootstrap. No SDK
|
|
12
|
+
* default, private constructor or unspecified option is expanded into an observed fact. */
|
|
13
|
+
export function explicitSpaceResourceFields(resource) {
|
|
14
|
+
if (resource.kind === "stream")
|
|
15
|
+
return { config: resource.config, unexpanded: [] };
|
|
16
|
+
const config = { name: resource.stream, subjects: resource.kind === "kv" ? [`$KV.${resource.bucket}.>`] : [`$O.${resource.bucket}.C.>`, `$O.${resource.bucket}.M.>`] };
|
|
17
|
+
const unexpanded = [];
|
|
18
|
+
for (const [field, value] of Object.entries(resource.createOptions)) {
|
|
19
|
+
if (value === undefined)
|
|
20
|
+
continue;
|
|
21
|
+
if (field === "max_bytes" && typeof value === "number" && Number.isFinite(value)) {
|
|
22
|
+
config.max_bytes = value;
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
if (resource.kind === "kv") {
|
|
26
|
+
if (field === "allow_direct" && typeof value === "boolean") {
|
|
27
|
+
config.allow_direct = value;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (field === "storage" && (value === "file" || value === "memory")) {
|
|
31
|
+
config.storage = value;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (field === "history" && typeof value === "number" && Number.isSafeInteger(value) && value > 0) {
|
|
35
|
+
config.max_msgs_per_subject = value;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (field === "ttl" && typeof value === "number" && Number.isSafeInteger(value) && value >= 0) {
|
|
39
|
+
config.max_age = nanos(value);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (field === "markerTTL" && typeof value === "number" && Number.isSafeInteger(value) && value > 0) {
|
|
43
|
+
config.allow_msg_ttl = true;
|
|
44
|
+
config.subject_delete_marker_ttl = nanos(value);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
unexpanded.push(field);
|
|
49
|
+
}
|
|
50
|
+
return { config: { ...config, ...(resource.kind === "kv" ? resource.hardenAfterCreate : {}), name: resource.stream }, unexpanded };
|
|
51
|
+
}
|
|
52
|
+
/** Only public scalar KV input defaults. No constructor, server feature probe or effective
|
|
53
|
+
* stream-default expansion is performed. Unsupported public defaults fail closed. */
|
|
54
|
+
export function nativeKvScalarInputDefaults() {
|
|
55
|
+
const defaults = defaultBucketOpts();
|
|
56
|
+
if (typeof defaults.history !== "number" || !Number.isSafeInteger(defaults.history) || defaults.history <= 0 || typeof defaults.replicas !== "number" || !Number.isSafeInteger(defaults.replicas) || defaults.replicas <= 0 || typeof defaults.maxValueSize !== "number" || !Number.isFinite(defaults.maxValueSize) || typeof defaults.max_bytes !== "number" || !Number.isFinite(defaults.max_bytes) || defaults.storage !== "file" && defaults.storage !== "memory")
|
|
57
|
+
throw new Error("native KV input defaults do not supply the required supported scalar fields");
|
|
58
|
+
return { max_msgs_per_subject: defaults.history, num_replicas: defaults.replicas, max_msg_size: defaults.maxValueSize, max_bytes: defaults.max_bytes, storage: defaults.storage };
|
|
59
|
+
}
|
|
60
|
+
/** Desired first-party configuration for one explicit native STREAM.CREATE. Store subjects,
|
|
61
|
+
* public scalar options and hardening share the bootstrap definitions; hardening is present at
|
|
62
|
+
* creation, not applied after adopting an existing bucket. This is never a repair/update plan. */
|
|
63
|
+
export function spaceResourceCreationConfig(resource) {
|
|
64
|
+
const fields = explicitSpaceResourceFields(resource);
|
|
65
|
+
if (fields.unexpanded.length || fields.config.name !== resource.stream || !Array.isArray(fields.config.subjects))
|
|
66
|
+
throw new Error("resource creation requires fully mapped native inputs; no unknown option was ignored");
|
|
67
|
+
const base = spaceStreamCreationBase(resource.stream, fields.config.subjects);
|
|
68
|
+
const config = resource.kind === "stream" ? { ...base, ...fields.config }
|
|
69
|
+
: { ...base, discard: DiscardPolicy.New, allow_direct: true, allow_rollup_hdrs: true, ...(resource.kind === "kv" ? nativeKvScalarInputDefaults() : {}), ...fields.config };
|
|
70
|
+
const age = config.max_age, window = config.duplicate_window;
|
|
71
|
+
if (typeof age !== "number" || !Number.isFinite(age) || age < 0 || typeof window !== "number" || !Number.isFinite(window) || window < 0)
|
|
72
|
+
throw new Error("resource creation requires explicit valid age and duplicate-window fields");
|
|
73
|
+
if (age > 0)
|
|
74
|
+
config.duplicate_window = Math.min(window, age);
|
|
75
|
+
return config;
|
|
76
|
+
}
|
|
77
|
+
/** Collect the native bootstrap inputs without opening a connection or deriving SDK defaults.
|
|
78
|
+
* Definitions describe creation, not safe updates: authority and artifact verifiers still own
|
|
79
|
+
* their guards. Neither this value nor its hardening fields authorize provisioning or repair. */
|
|
80
|
+
export function spaceResourceDefinitions(space, options = {}) {
|
|
81
|
+
const streams = [
|
|
82
|
+
...[...spaceMessageStreamConfigs(space), ...spaceRegistryStreamConfigs(space)].map((config) => ({ config, verification: "canonical-backup" })),
|
|
83
|
+
...endpointDataStreamConfigs(space, options).map((config) => ({ config, verification: "declared-fields" })),
|
|
84
|
+
{ config: endpointContractStreamConfig(space), verification: "contract" },
|
|
85
|
+
];
|
|
86
|
+
const authority = endpointAuthorityStoreDefinitions(space);
|
|
87
|
+
const buckets = [
|
|
88
|
+
...ttlBuckets(space).map(([bucket, ttl, storage]) => ({ bucket, createOptions: { ttl, storage }, verification: "native-runtime-check-required" })),
|
|
89
|
+
{ ...membershipStoreDefinition(space), verification: "native-runtime-check-required" },
|
|
90
|
+
{ ...authority.records, verification: "records" },
|
|
91
|
+
{ ...authority.auth, verification: "auth" },
|
|
92
|
+
...issuedStoreDefinitions(space).map((definition) => ({ ...definition, verification: "issued" })),
|
|
93
|
+
{ ...admissionStoreDefinition(space), verification: "admission" },
|
|
94
|
+
{ ...endpointSessionStoreDefinition(space), verification: "sessions" },
|
|
95
|
+
];
|
|
96
|
+
const artifact = artifactStoreDefinition(space);
|
|
97
|
+
const resources = [
|
|
98
|
+
...streams.map(({ config, verification }) => ({ kind: "stream", stream: config.name, config, verification })),
|
|
99
|
+
...buckets.map((definition) => ({ kind: "kv", stream: `KV_${definition.bucket}`, ...definition })),
|
|
100
|
+
{ kind: "object-store", stream: objectStoreStream(artifact.bucket), ...artifact, verification: "artifact" },
|
|
101
|
+
];
|
|
102
|
+
return {
|
|
103
|
+
kind: "native-space-resource-definitions",
|
|
104
|
+
space,
|
|
105
|
+
resources,
|
|
106
|
+
scope: "native creation inputs; not an ordered mutation plan or full effective schema",
|
|
107
|
+
pendingPolicy: ["full-effective-field-policy", "registry-seed", "default-delivery", "observation-classification", "reconciliation-allowlist", "privileged-apply"],
|
|
108
|
+
completeSpaceSchema: false,
|
|
109
|
+
sdkDefaultsExpanded: false,
|
|
110
|
+
connectionAuthorityChecked: false,
|
|
111
|
+
absenceAuthoritativelyProven: false,
|
|
112
|
+
applyPermitted: false,
|
|
113
|
+
writes: [],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** Describe native seed/profile precedence without deciding that any row may be written.
|
|
117
|
+
* The caller supplies the deployment profile; no missing daemon or credential selects it.
|
|
118
|
+
* Revision-bound observation, validation and guarded application remain separate work. */
|
|
119
|
+
export function spaceInitializationDefinitions(space, deliveryClass, seed) {
|
|
120
|
+
return {
|
|
121
|
+
kind: "native-space-initialization-definitions",
|
|
122
|
+
space,
|
|
123
|
+
registry: { bucket: channelBucket(space), stream: `KV_${channelBucket(space)}` },
|
|
124
|
+
seed: { entries: channelRegistrySeedEntries(seed ?? {}), merge: "specified-fields-overwrite-existing" },
|
|
125
|
+
profileDefault: { key: CHANNEL_DEFAULTS_KEY, patch: channelDeliveryDefaultPatch(deliveryClass), condition: "deliveryClass-is-absent" },
|
|
126
|
+
order: "seed-before-profile-default; explicit-existing-class-wins",
|
|
127
|
+
scope: "native patch inputs and precedence; not observed rows or a revision-bound write plan",
|
|
128
|
+
observationsComplete: false,
|
|
129
|
+
applyPermitted: false,
|
|
130
|
+
writes: [],
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=space-resource-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"space-resource-definitions.js","sourceRoot":"","sources":["../src/space-resource-definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type SpaceResourceDefinition } from "./space-resource-definitions.js";
|
|
2
|
+
import { type EndpointStreamOptions } from "./endpoint-binding.js";
|
|
3
|
+
import type { SpaceSchemaObservation } from "./space-schema-observation.js";
|
|
4
|
+
import { type StreamSchemaRow } from "./stream-schema-diff.js";
|
|
5
|
+
export interface SpaceSchemaDiffRow extends Omit<StreamSchemaRow, "state" | "uninspectedFields"> {
|
|
6
|
+
kind: SpaceResourceDefinition["kind"];
|
|
7
|
+
state: StreamSchemaRow["state"] | "native-store-verification-required" | "native-store-invariants-match" | "native-store-verification-unconfirmed" | "unclassified-stream-settings" | "creation-options-policy-required";
|
|
8
|
+
/** Outside the declarative field comparison; a separate native check can inspect more fields. */
|
|
9
|
+
uncomparedFields: string[];
|
|
10
|
+
/** A match covers that native check, not complete effective schema or connection authority. */
|
|
11
|
+
nativeVerification: "not-checked" | "invariants-match" | "not-confirmed";
|
|
12
|
+
nativeInvariantFields: readonly string[];
|
|
13
|
+
unexpandedCreationOptions: readonly string[];
|
|
14
|
+
reconciliation: {
|
|
15
|
+
state: "not-evaluated" | "no-declared-change" | "native-guard-required" | "migration-required";
|
|
16
|
+
nativeGuard: "ttl-enforcement" | "artifact-legacy-cap" | "contract-shadow" | null;
|
|
17
|
+
fields: readonly string[];
|
|
18
|
+
nonAllowlistedFields: readonly string[];
|
|
19
|
+
};
|
|
20
|
+
observedExtraFields: {
|
|
21
|
+
status: "checked" | "not-modeled" | "failed";
|
|
22
|
+
matchesPolicy: string[];
|
|
23
|
+
nondefaultUndeclared: string[];
|
|
24
|
+
unmodeled: string[];
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Compare only explicit native stream fields and post-create hardening. KV/object-store
|
|
28
|
+
* creation options are not expanded into guessed SDK/server defaults. Pure native invariant
|
|
29
|
+
* checks run where declared; runtime checks and complete field policy stay separate. No
|
|
30
|
+
* mutating create-or-verify helper, canary, repair or migration is invoked. */
|
|
31
|
+
export declare function diffSpaceResources(space: string, observations: readonly SpaceSchemaObservation[], options?: EndpointStreamOptions): {
|
|
32
|
+
kind: "space-resource-schema-diff";
|
|
33
|
+
space: string;
|
|
34
|
+
rows: SpaceSchemaDiffRow[];
|
|
35
|
+
scope: "explicit stream/public store-option fields, hardening and pure native invariants; unspecified SDK defaults, runtime checks and full field policy remain unestablished";
|
|
36
|
+
pendingPolicy: readonly ["full-effective-field-policy", "registry-seed", "default-delivery", "observation-classification", "reconciliation-allowlist", "privileged-apply"];
|
|
37
|
+
completeSpaceSchema: false;
|
|
38
|
+
sdkDefaultsExpanded: false;
|
|
39
|
+
sdkInputDefaultsUsedForReadPolicy: true;
|
|
40
|
+
connectionAuthorityChecked: false;
|
|
41
|
+
absenceAuthoritativelyProven: false;
|
|
42
|
+
applyPermitted: false;
|
|
43
|
+
writes: readonly [];
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=space-schema-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"space-schema-diff.d.ts","sourceRoot":"","sources":["../src/space-schema-diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsF,KAAK,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AACnK,OAAO,EAAyG,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAQ1K,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAA2D,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAExH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,mBAAmB,CAAC;IAC9F,IAAI,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACtC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,oCAAoC,GAAG,+BAA+B,GAAG,uCAAuC,GAAG,8BAA8B,GAAG,kCAAkC,CAAC;IACzN,iGAAiG;IACjG,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,+FAA+F;IAC/F,kBAAkB,EAAE,aAAa,GAAG,kBAAkB,GAAG,eAAe,CAAC;IACzE,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,yBAAyB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,cAAc,EAAE;QACd,KAAK,EAAE,eAAe,GAAG,oBAAoB,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;QAC/F,WAAW,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,IAAI,CAAC;QAClF,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1B,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;KACzC,CAAC;IACF,mBAAmB,EAAE;QACnB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;QAC7C,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAkGD;;;gFAGgF;AAChF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,sBAAsB,EAAE,EAAE,OAAO,GAAE,qBAA0B;;;;;;;;;;;;;EAgDrI"}
|