@run402/runtime-kernel 0.1.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/LICENSE +3 -0
- package/README.md +8 -0
- package/dist/apply.d.ts +31 -0
- package/dist/apply.d.ts.map +1 -0
- package/dist/apply.js +192 -0
- package/dist/apply.js.map +1 -0
- package/dist/capabilities.d.ts +29 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +59 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +18 -0
- package/dist/errors.js.map +1 -0
- package/dist/health.d.ts +10 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +11 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/ports.d.ts +93 -0
- package/dist/ports.d.ts.map +1 -0
- package/dist/ports.js +2 -0
- package/dist/ports.js.map +1 -0
- package/dist/projects.d.ts +23 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +44 -0
- package/dist/projects.js.map +1 -0
- package/package.json +51 -0
package/LICENSE
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# @run402/runtime-kernel
|
|
2
|
+
|
|
3
|
+
Public Run402 Core runtime-kernel contracts and application services.
|
|
4
|
+
|
|
5
|
+
This package is the first self-hostable Core runtime slice. It currently exposes the runtime capability document, typed unsupported-capability errors, and port contracts used by the public Core gateway composition root.
|
|
6
|
+
|
|
7
|
+
It is a Developer Preview / single-node reference runtime component. It does not include functions, Astro SSR, export/import, hosted OAuth, managed backups, TLS automation, observability, or production hardening.
|
|
8
|
+
|
package/dist/apply.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ContentRefHex, type PortableReleaseState } from "@run402/release";
|
|
2
|
+
import type { CoreApplyPlan, RuntimeKernelPorts } from "./ports.js";
|
|
3
|
+
export interface CreateApplyPlanInput {
|
|
4
|
+
spec: unknown;
|
|
5
|
+
}
|
|
6
|
+
export interface CommitApplyPlanInput {
|
|
7
|
+
plan_id: string;
|
|
8
|
+
release_spec_digest?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CoreApplyCommitResult {
|
|
11
|
+
plan_id: string;
|
|
12
|
+
project_id: string;
|
|
13
|
+
release_id: string;
|
|
14
|
+
release_digest: string;
|
|
15
|
+
status: "committed" | "noop";
|
|
16
|
+
}
|
|
17
|
+
export declare class ApplyInvariantError extends Error {
|
|
18
|
+
readonly code: string;
|
|
19
|
+
readonly status = 409;
|
|
20
|
+
constructor(code: string, message: string);
|
|
21
|
+
}
|
|
22
|
+
export declare function applyInvariantEnvelope(error: ApplyInvariantError): {
|
|
23
|
+
error: string;
|
|
24
|
+
message: string;
|
|
25
|
+
};
|
|
26
|
+
export declare function createApplyPlan(ports: RuntimeKernelPorts, input: CreateApplyPlanInput): Promise<CoreApplyPlan>;
|
|
27
|
+
export declare function commitApplyPlan(ports: RuntimeKernelPorts, input: CommitApplyPlanInput): Promise<CoreApplyCommitResult>;
|
|
28
|
+
export declare function verifyContentRefBytes(ref: ContentRefHex, bytes: Uint8Array): void;
|
|
29
|
+
export declare function releaseIdFromDigest(digest: string): string;
|
|
30
|
+
export declare function emptyCoreReleaseState(): PortableReleaseState;
|
|
31
|
+
//# sourceMappingURL=apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../src/apply.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,aAAa,EAElB,KAAK,oBAAoB,EAE1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIpE,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC;CAC9B;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAGhC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAFjC,QAAQ,CAAC,MAAM,OAAO;gBAED,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAInD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,GAAG;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAKA;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,aAAa,CAAC,CA+BxB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CA0ChC;AAmFD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAOjF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG1D;AAoBD,wBAAgB,qBAAqB,IAAI,oBAAoB,CAE5D"}
|
package/dist/apply.js
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { digestApplyRequest, digestMaterializedRelease, emptyPortableReleaseState, materializeRelease, parseReleaseSpec, } from "@run402/release";
|
|
3
|
+
import { UnsupportedCapabilityError } from "./errors.js";
|
|
4
|
+
import { validateProjectId } from "./projects.js";
|
|
5
|
+
export class ApplyInvariantError extends Error {
|
|
6
|
+
code;
|
|
7
|
+
status = 409;
|
|
8
|
+
constructor(code, message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.name = "ApplyInvariantError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function applyInvariantEnvelope(error) {
|
|
15
|
+
return {
|
|
16
|
+
error: error.code,
|
|
17
|
+
message: error.message,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export async function createApplyPlan(ports, input) {
|
|
21
|
+
const spec = parseReleaseSpec(input.spec);
|
|
22
|
+
validateSupportedSpec(spec);
|
|
23
|
+
validateProjectId(spec.project);
|
|
24
|
+
const project = await ports.projects.inspect(spec.project);
|
|
25
|
+
if (!project) {
|
|
26
|
+
throw new ApplyInvariantError("project_not_found", `Run402 Core project not found: ${spec.project}`);
|
|
27
|
+
}
|
|
28
|
+
const base = await ports.releases.getBase(spec.project, releaseBaseTarget(spec));
|
|
29
|
+
const target = materializeRelease({
|
|
30
|
+
spec,
|
|
31
|
+
concreteBase: base.state,
|
|
32
|
+
});
|
|
33
|
+
const releaseSpecDigest = digestApplyRequest(spec);
|
|
34
|
+
const targetDigest = digestMaterializedRelease(target);
|
|
35
|
+
const baseDigest = digestMaterializedRelease(base.state);
|
|
36
|
+
const targetReleaseId = releaseIdFromDigest(targetDigest);
|
|
37
|
+
const plan = await ports.plans.create({
|
|
38
|
+
project_id: spec.project,
|
|
39
|
+
spec,
|
|
40
|
+
release_spec_digest: releaseSpecDigest,
|
|
41
|
+
base_release_id: base.release_id,
|
|
42
|
+
target_release_id: targetReleaseId,
|
|
43
|
+
target_release_digest: targetDigest,
|
|
44
|
+
target_release: target,
|
|
45
|
+
noop: targetDigest === baseDigest,
|
|
46
|
+
});
|
|
47
|
+
return publicPlan(plan);
|
|
48
|
+
}
|
|
49
|
+
export async function commitApplyPlan(ports, input) {
|
|
50
|
+
const plan = await ports.plans.get(input.plan_id);
|
|
51
|
+
if (!plan) {
|
|
52
|
+
throw new ApplyInvariantError("plan_not_found", `Run402 Core apply plan not found: ${input.plan_id}`);
|
|
53
|
+
}
|
|
54
|
+
if (input.release_spec_digest && input.release_spec_digest !== plan.release_spec_digest) {
|
|
55
|
+
throw new ApplyInvariantError("release_spec_digest_mismatch", "Apply plan digest does not match commit input.");
|
|
56
|
+
}
|
|
57
|
+
if (plan.status === "committed") {
|
|
58
|
+
return {
|
|
59
|
+
plan_id: plan.plan_id,
|
|
60
|
+
project_id: plan.project_id,
|
|
61
|
+
release_id: plan.target_release_id,
|
|
62
|
+
release_digest: plan.target_release_digest,
|
|
63
|
+
status: plan.noop ? "noop" : "committed",
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const spec = parseReleaseSpec(plan.spec);
|
|
67
|
+
const current = await ports.releases.getBase(plan.project_id, "current");
|
|
68
|
+
if (current.release_id !== plan.base_release_id) {
|
|
69
|
+
throw new ApplyInvariantError("stale_plan", "Apply plan base release no longer matches the active release.");
|
|
70
|
+
}
|
|
71
|
+
await verifyStaticContent(ports, plan.project_id, plan.target_release);
|
|
72
|
+
await applyMigrations(ports, spec);
|
|
73
|
+
await ports.releases.setActiveRelease({
|
|
74
|
+
projectId: plan.project_id,
|
|
75
|
+
releaseId: plan.target_release_id,
|
|
76
|
+
digest: plan.target_release_digest,
|
|
77
|
+
release: plan.target_release,
|
|
78
|
+
expectedBaseReleaseId: plan.base_release_id,
|
|
79
|
+
});
|
|
80
|
+
await ports.plans.markCommitted(plan.plan_id);
|
|
81
|
+
return {
|
|
82
|
+
plan_id: plan.plan_id,
|
|
83
|
+
project_id: plan.project_id,
|
|
84
|
+
release_id: plan.target_release_id,
|
|
85
|
+
release_digest: plan.target_release_digest,
|
|
86
|
+
status: plan.noop ? "noop" : "committed",
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function validateSupportedSpec(spec) {
|
|
90
|
+
if (spec.functions)
|
|
91
|
+
throw new UnsupportedCapabilityError("functions.node");
|
|
92
|
+
if (spec.secrets)
|
|
93
|
+
throw new UnsupportedCapabilityError("secrets.hosted");
|
|
94
|
+
if (spec.subdomains)
|
|
95
|
+
throw new UnsupportedCapabilityError("subdomains.managed");
|
|
96
|
+
if (spec.assets)
|
|
97
|
+
throw new UnsupportedCapabilityError("storage.user-api");
|
|
98
|
+
if (spec.i18n)
|
|
99
|
+
throw new UnsupportedCapabilityError("i18n.routing");
|
|
100
|
+
if (spec.database?.zero_downtime)
|
|
101
|
+
throw new UnsupportedCapabilityError("database.zero-downtime");
|
|
102
|
+
if (spec.site && "patch" in spec.site && spec.site.patch) {
|
|
103
|
+
throw new UnsupportedCapabilityError("site.patch");
|
|
104
|
+
}
|
|
105
|
+
for (const migration of spec.database?.migrations ?? []) {
|
|
106
|
+
if (migration.sql_ref)
|
|
107
|
+
throw new UnsupportedCapabilityError("database.migrations.sql_ref");
|
|
108
|
+
if (!migration.sql) {
|
|
109
|
+
throw new ApplyInvariantError("migration_sql_required", `Migration ${migration.id} must include inline SQL.`);
|
|
110
|
+
}
|
|
111
|
+
verifyMigrationChecksum(migration);
|
|
112
|
+
}
|
|
113
|
+
for (const route of spec.routes?.replace ?? []) {
|
|
114
|
+
if (route.target.type !== "static") {
|
|
115
|
+
throw new UnsupportedCapabilityError("functions.node");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function releaseBaseTarget(spec) {
|
|
120
|
+
if (!spec.base)
|
|
121
|
+
return "current";
|
|
122
|
+
if ("release_id" in spec.base)
|
|
123
|
+
return { release_id: spec.base.release_id };
|
|
124
|
+
return spec.base.release;
|
|
125
|
+
}
|
|
126
|
+
async function verifyStaticContent(ports, projectId, release) {
|
|
127
|
+
for (const entry of release.site.paths) {
|
|
128
|
+
const present = await ports.content.hasContent(projectId, entry.content_sha256);
|
|
129
|
+
if (!present) {
|
|
130
|
+
throw new ApplyInvariantError("content_digest_missing", `Static content ${entry.content_sha256} has not been staged for project ${projectId}.`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async function applyMigrations(ports, spec) {
|
|
135
|
+
for (const migration of spec.database?.migrations ?? []) {
|
|
136
|
+
const observed = await ports.migrations.check(spec.project, migration.id);
|
|
137
|
+
const checksum = migration.checksum.toLowerCase();
|
|
138
|
+
if (observed.state === "present") {
|
|
139
|
+
if (observed.checksum_hex.toLowerCase() !== checksum) {
|
|
140
|
+
throw new ApplyInvariantError("migration_checksum_conflict", `Migration ${migration.id} was already applied with a different checksum.`);
|
|
141
|
+
}
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
await ports.migrations.applyInline({
|
|
145
|
+
projectId: spec.project,
|
|
146
|
+
schema: `project_${spec.project.slice("prj_".length)}`,
|
|
147
|
+
migrationId: migration.id,
|
|
148
|
+
checksum_hex: checksum,
|
|
149
|
+
sql: migration.sql ?? "",
|
|
150
|
+
transaction: migration.transaction === "none" ? "none" : "default",
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function verifyMigrationChecksum(migration) {
|
|
155
|
+
const expected = migration.checksum.toLowerCase();
|
|
156
|
+
const actual = sha256Hex(migration.sql ?? "");
|
|
157
|
+
if (actual !== expected) {
|
|
158
|
+
throw new ApplyInvariantError("migration_checksum_mismatch", `Migration ${migration.id} checksum does not match its inline SQL.`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
export function verifyContentRefBytes(ref, bytes) {
|
|
162
|
+
if (bytes.byteLength !== ref.size) {
|
|
163
|
+
throw new ApplyInvariantError("content_size_mismatch", "Content bytes do not match the declared size.");
|
|
164
|
+
}
|
|
165
|
+
if (sha256Hex(bytes) !== ref.sha256.toLowerCase()) {
|
|
166
|
+
throw new ApplyInvariantError("content_digest_mismatch", "Content bytes do not match the declared SHA-256 digest.");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
export function releaseIdFromDigest(digest) {
|
|
170
|
+
const suffix = digest.split(":").at(-1) ?? digest;
|
|
171
|
+
return `rel_${suffix.slice(0, 24)}`;
|
|
172
|
+
}
|
|
173
|
+
function publicPlan(plan) {
|
|
174
|
+
return {
|
|
175
|
+
plan_id: plan.plan_id,
|
|
176
|
+
project_id: plan.project_id,
|
|
177
|
+
release_spec_digest: plan.release_spec_digest,
|
|
178
|
+
base_release_id: plan.base_release_id,
|
|
179
|
+
target_release_id: plan.target_release_id,
|
|
180
|
+
target_release_digest: plan.target_release_digest,
|
|
181
|
+
noop: plan.noop,
|
|
182
|
+
status: plan.status,
|
|
183
|
+
created_at: plan.created_at,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
function sha256Hex(input) {
|
|
187
|
+
return createHash("sha256").update(input).digest("hex");
|
|
188
|
+
}
|
|
189
|
+
export function emptyCoreReleaseState() {
|
|
190
|
+
return emptyPortableReleaseState();
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../src/apply.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,GAKjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAmBlD,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAGvB;IAFZ,MAAM,GAAG,GAAG,CAAC;IAEtB,YAAqB,IAAY,EAAE,OAAe;QAChD,KAAK,CAAC,OAAO,CAAC,CAAC;QADI,SAAI,GAAJ,IAAI,CAAQ;QAE/B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA0B;IAI/D,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAyB,EACzB,KAA2B;IAE3B,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1C,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,EAAE,kCAAkC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACvG,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAChC,IAAI;QACJ,YAAY,EAAE,IAAI,CAAC,KAAK;KACzB,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,UAAU,EAAE,IAAI,CAAC,OAAO;QACxB,IAAI;QACJ,mBAAmB,EAAE,iBAAiB;QACtC,eAAe,EAAE,IAAI,CAAC,UAAU;QAChC,iBAAiB,EAAE,eAAe;QAClC,qBAAqB,EAAE,YAAY;QACnC,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,YAAY,KAAK,UAAU;KAClC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAyB,EACzB,KAA2B;IAE3B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACxF,MAAM,IAAI,mBAAmB,CAAC,8BAA8B,EAAE,gDAAgD,CAAC,CAAC;IAClH,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,IAAI,CAAC,iBAAiB;YAClC,cAAc,EAAE,IAAI,CAAC,qBAAqB;YAC1C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;SACzC,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;QAChD,MAAM,IAAI,mBAAmB,CAAC,YAAY,EAAE,+DAA+D,CAAC,CAAC;IAC/G,CAAC;IAED,MAAM,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACpC,SAAS,EAAE,IAAI,CAAC,UAAU;QAC1B,SAAS,EAAE,IAAI,CAAC,iBAAiB;QACjC,MAAM,EAAE,IAAI,CAAC,qBAAqB;QAClC,OAAO,EAAE,IAAI,CAAC,cAAc;QAC5B,qBAAqB,EAAE,IAAI,CAAC,eAAe;KAC5C,CAAC,CAAC;IACH,MAAM,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE9C,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,iBAAiB;QAClC,cAAc,EAAE,IAAI,CAAC,qBAAqB;QAC1C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAiB;IAC9C,IAAI,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IACzE,IAAI,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,0BAA0B,CAAC,oBAAoB,CAAC,CAAC;IAChF,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;IAC1E,IAAI,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,QAAQ,EAAE,aAAa;QAAE,MAAM,IAAI,0BAA0B,CAAC,wBAAwB,CAAC,CAAC;IACjG,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACzD,MAAM,IAAI,0BAA0B,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;QACxD,IAAI,SAAS,CAAC,OAAO;YAAE,MAAM,IAAI,0BAA0B,CAAC,6BAA6B,CAAC,CAAC;QAC3F,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,mBAAmB,CAAC,wBAAwB,EAAE,aAAa,SAAS,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAChH,CAAC;QACD,uBAAuB,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,IAAI,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAiB;IAC1C,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IACjC,IAAI,YAAY,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,KAAyB,EACzB,SAAiB,EACjB,OAA6B;IAE7B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;QAChF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,mBAAmB,CAC3B,wBAAwB,EACxB,kBAAkB,KAAK,CAAC,cAAc,oCAAoC,SAAS,GAAG,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,KAAyB,EAAE,IAAiB;IACzE,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAClD,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACrD,MAAM,IAAI,mBAAmB,CAC3B,6BAA6B,EAC7B,aAAa,SAAS,CAAC,EAAE,iDAAiD,CAC3E,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,MAAM,EAAE,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACtD,WAAW,EAAE,SAAS,CAAC,EAAE;YACzB,YAAY,EAAE,QAAQ;YACtB,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE;YACxB,WAAW,EAAE,SAAS,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACnE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,SAAwB;IACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,IAAI,mBAAmB,CAC3B,6BAA6B,EAC7B,aAAa,SAAS,CAAC,EAAE,0CAA0C,CACpE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAkB,EAAE,KAAiB;IACzE,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,mBAAmB,CAAC,uBAAuB,EAAE,+CAA+C,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,yDAAyD,CAAC,CAAC;IACtH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAClD,OAAO,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,IAAmB;IACrC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;QACjD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,UAAU,EAAE,IAAI,CAAC,UAAU;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,KAA0B;IAC3C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,yBAAyB,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PLANNER_SEMANTICS_VERSION, RELEASE_SPEC_VERSION } from "@run402/release";
|
|
2
|
+
export declare const RUNTIME_KERNEL_CONTRACT_VERSION: "run402-runtime-kernel-v1";
|
|
3
|
+
export declare const RUNTIME_KERNEL_PACKAGE_NAME: "@run402/runtime-kernel";
|
|
4
|
+
export declare const SUPPORTED_RUNTIME_FEATURES: readonly ["projects.create.local", "projects.inspect.local", "apply.plan.supported-static-rest-slice", "apply.commit.supported-static-rest-slice", "database.migrations.inline-sql", "database.rest.postgrest", "auth.jwt.local-test-tokens", "rls.claim-mapping", "site.static.explicit-public-paths"];
|
|
5
|
+
export declare const UNSUPPORTED_RUNTIME_FEATURES: readonly ["database.migrations.sql_ref", "site.patch", "functions.node", "astro.ssr", "storage.user-api", "storage.s3-compatible", "assets.images", "subdomains.managed", "domains.custom", "export.project-archive", "import.project-archive", "cloud-import.project-archive", "auth.hosted-oauth", "cloud.billing", "cloud.fleet-scheduling", "cloud.managed-backups", "cloud.monitoring", "cloud.abuse-controls"];
|
|
6
|
+
export interface UnsupportedRuntimeFeature {
|
|
7
|
+
feature: (typeof UNSUPPORTED_RUNTIME_FEATURES)[number];
|
|
8
|
+
error: "unsupported_capability";
|
|
9
|
+
}
|
|
10
|
+
export interface RuntimeCapabilityDocument {
|
|
11
|
+
runtime_contract_version: typeof RUNTIME_KERNEL_CONTRACT_VERSION;
|
|
12
|
+
release_spec_version: typeof RELEASE_SPEC_VERSION;
|
|
13
|
+
planner_semantics_version: typeof PLANNER_SEMANTICS_VERSION;
|
|
14
|
+
supported_features: Array<(typeof SUPPORTED_RUNTIME_FEATURES)[number]>;
|
|
15
|
+
unsupported_features: UnsupportedRuntimeFeature[];
|
|
16
|
+
components: {
|
|
17
|
+
runtime_kernel: {
|
|
18
|
+
name: typeof RUNTIME_KERNEL_PACKAGE_NAME;
|
|
19
|
+
version: string;
|
|
20
|
+
};
|
|
21
|
+
release: {
|
|
22
|
+
name: "@run402/release";
|
|
23
|
+
release_spec_version: typeof RELEASE_SPEC_VERSION;
|
|
24
|
+
planner_semantics_version: typeof PLANNER_SEMANTICS_VERSION;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export declare function runtimeCapabilities(version?: string): RuntimeCapabilityDocument;
|
|
29
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EAErB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,+BAA+B,EAAG,0BAAmC,CAAC;AACnF,eAAO,MAAM,2BAA2B,EAAG,wBAAiC,CAAC;AAE7E,eAAO,MAAM,0BAA0B,ySAU7B,CAAC;AAEX,eAAO,MAAM,4BAA4B,sZAmB/B,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;IACvD,KAAK,EAAE,wBAAwB,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,wBAAwB,EAAE,OAAO,+BAA+B,CAAC;IACjE,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,yBAAyB,EAAE,OAAO,yBAAyB,CAAC;IAC5D,kBAAkB,EAAE,KAAK,CAAC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;IAClD,UAAU,EAAE;QACV,cAAc,EAAE;YACd,IAAI,EAAE,OAAO,2BAA2B,CAAC;YACzC,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;QACF,OAAO,EAAE;YACP,IAAI,EAAE,iBAAiB,CAAC;YACxB,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;YAClD,yBAAyB,EAAE,OAAO,yBAAyB,CAAC;SAC7D,CAAC;KACH,CAAC;CACH;AAED,wBAAgB,mBAAmB,CAAC,OAAO,SAAU,GAAG,yBAAyB,CAuBhF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { PLANNER_SEMANTICS_VERSION, RELEASE_SPEC_VERSION, releasePackageInfo, } from "@run402/release";
|
|
2
|
+
export const RUNTIME_KERNEL_CONTRACT_VERSION = "run402-runtime-kernel-v1";
|
|
3
|
+
export const RUNTIME_KERNEL_PACKAGE_NAME = "@run402/runtime-kernel";
|
|
4
|
+
export const SUPPORTED_RUNTIME_FEATURES = [
|
|
5
|
+
"projects.create.local",
|
|
6
|
+
"projects.inspect.local",
|
|
7
|
+
"apply.plan.supported-static-rest-slice",
|
|
8
|
+
"apply.commit.supported-static-rest-slice",
|
|
9
|
+
"database.migrations.inline-sql",
|
|
10
|
+
"database.rest.postgrest",
|
|
11
|
+
"auth.jwt.local-test-tokens",
|
|
12
|
+
"rls.claim-mapping",
|
|
13
|
+
"site.static.explicit-public-paths",
|
|
14
|
+
];
|
|
15
|
+
export const UNSUPPORTED_RUNTIME_FEATURES = [
|
|
16
|
+
"database.migrations.sql_ref",
|
|
17
|
+
"site.patch",
|
|
18
|
+
"functions.node",
|
|
19
|
+
"astro.ssr",
|
|
20
|
+
"storage.user-api",
|
|
21
|
+
"storage.s3-compatible",
|
|
22
|
+
"assets.images",
|
|
23
|
+
"subdomains.managed",
|
|
24
|
+
"domains.custom",
|
|
25
|
+
"export.project-archive",
|
|
26
|
+
"import.project-archive",
|
|
27
|
+
"cloud-import.project-archive",
|
|
28
|
+
"auth.hosted-oauth",
|
|
29
|
+
"cloud.billing",
|
|
30
|
+
"cloud.fleet-scheduling",
|
|
31
|
+
"cloud.managed-backups",
|
|
32
|
+
"cloud.monitoring",
|
|
33
|
+
"cloud.abuse-controls",
|
|
34
|
+
];
|
|
35
|
+
export function runtimeCapabilities(version = "0.1.0") {
|
|
36
|
+
const release = releasePackageInfo();
|
|
37
|
+
return {
|
|
38
|
+
runtime_contract_version: RUNTIME_KERNEL_CONTRACT_VERSION,
|
|
39
|
+
release_spec_version: RELEASE_SPEC_VERSION,
|
|
40
|
+
planner_semantics_version: PLANNER_SEMANTICS_VERSION,
|
|
41
|
+
supported_features: [...SUPPORTED_RUNTIME_FEATURES],
|
|
42
|
+
unsupported_features: UNSUPPORTED_RUNTIME_FEATURES.map((feature) => ({
|
|
43
|
+
feature,
|
|
44
|
+
error: "unsupported_capability",
|
|
45
|
+
})),
|
|
46
|
+
components: {
|
|
47
|
+
runtime_kernel: {
|
|
48
|
+
name: RUNTIME_KERNEL_PACKAGE_NAME,
|
|
49
|
+
version,
|
|
50
|
+
},
|
|
51
|
+
release: {
|
|
52
|
+
name: release.packageName,
|
|
53
|
+
release_spec_version: release.releaseSpecVersion,
|
|
54
|
+
planner_semantics_version: release.plannerSemanticsVersion,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAiC,CAAC;AAE7E,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,uBAAuB;IACvB,wBAAwB;IACxB,wCAAwC;IACxC,0CAA0C;IAC1C,gCAAgC;IAChC,yBAAyB;IACzB,4BAA4B;IAC5B,mBAAmB;IACnB,mCAAmC;CAC3B,CAAC;AAEX,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,6BAA6B;IAC7B,YAAY;IACZ,gBAAgB;IAChB,WAAW;IACX,kBAAkB;IAClB,uBAAuB;IACvB,eAAe;IACf,oBAAoB;IACpB,gBAAgB;IAChB,wBAAwB;IACxB,wBAAwB;IACxB,8BAA8B;IAC9B,mBAAmB;IACnB,eAAe;IACf,wBAAwB;IACxB,uBAAuB;IACvB,kBAAkB;IAClB,sBAAsB;CACd,CAAC;AA0BX,MAAM,UAAU,mBAAmB,CAAC,OAAO,GAAG,OAAO;IACnD,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,OAAO;QACL,wBAAwB,EAAE,+BAA+B;QACzD,oBAAoB,EAAE,oBAAoB;QAC1C,yBAAyB,EAAE,yBAAyB;QACpD,kBAAkB,EAAE,CAAC,GAAG,0BAA0B,CAAC;QACnD,oBAAoB,EAAE,4BAA4B,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACnE,OAAO;YACP,KAAK,EAAE,wBAAwB;SAChC,CAAC,CAAC;QACH,UAAU,EAAE;YACV,cAAc,EAAE;gBACd,IAAI,EAAE,2BAA2B;gBACjC,OAAO;aACR;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO,CAAC,WAAW;gBACzB,oBAAoB,EAAE,OAAO,CAAC,kBAAkB;gBAChD,yBAAyB,EAAE,OAAO,CAAC,uBAAuB;aAC3D;SACF;KACF,CAAC;AACJ,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface UnsupportedCapabilityDetails {
|
|
2
|
+
capability: string;
|
|
3
|
+
supported_features?: string[];
|
|
4
|
+
}
|
|
5
|
+
export declare class UnsupportedCapabilityError extends Error {
|
|
6
|
+
readonly code = "unsupported_capability";
|
|
7
|
+
readonly status = 422;
|
|
8
|
+
readonly details: UnsupportedCapabilityDetails;
|
|
9
|
+
constructor(capability: string, message?: string);
|
|
10
|
+
}
|
|
11
|
+
export declare function unsupportedCapabilityEnvelope(error: UnsupportedCapabilityError): {
|
|
12
|
+
error: "unsupported_capability";
|
|
13
|
+
message: string;
|
|
14
|
+
capability: string;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,IAAI,4BAA4B;IACzC,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,OAAO,EAAE,4BAA4B,CAAC;gBAEnC,UAAU,EAAE,MAAM,EAAE,OAAO,SAAkD;CAK1F;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,0BAA0B,GAAG;IAChF,KAAK,EAAE,wBAAwB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAMA"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class UnsupportedCapabilityError extends Error {
|
|
2
|
+
code = "unsupported_capability";
|
|
3
|
+
status = 422;
|
|
4
|
+
details;
|
|
5
|
+
constructor(capability, message = `Unsupported runtime capability: ${capability}`) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "UnsupportedCapabilityError";
|
|
8
|
+
this.details = { capability };
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function unsupportedCapabilityEnvelope(error) {
|
|
12
|
+
return {
|
|
13
|
+
error: "unsupported_capability",
|
|
14
|
+
message: error.message,
|
|
15
|
+
capability: error.details.capability,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,GAAG,wBAAwB,CAAC;IAChC,MAAM,GAAG,GAAG,CAAC;IACb,OAAO,CAA+B;IAE/C,YAAY,UAAkB,EAAE,OAAO,GAAG,mCAAmC,UAAU,EAAE;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAiC;IAK7E,OAAO;QACL,KAAK,EAAE,wBAAwB;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;KACrC,CAAC;AACJ,CAAC"}
|
package/dist/health.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type RuntimeCapabilityDocument } from "./capabilities.js";
|
|
2
|
+
export interface RuntimeKernelHealth {
|
|
3
|
+
status: "ok";
|
|
4
|
+
mode: "core";
|
|
5
|
+
runtime_contract_version: RuntimeCapabilityDocument["runtime_contract_version"];
|
|
6
|
+
supported_features: number;
|
|
7
|
+
unsupported_features: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function runtimeHealth(capabilities?: RuntimeCapabilityDocument): RuntimeKernelHealth;
|
|
10
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB,EAAE,yBAAyB,CAAC,0BAA0B,CAAC,CAAC;IAChF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,aAAa,CAAC,YAAY,4BAAwB,GAAG,mBAAmB,CAQvF"}
|
package/dist/health.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { runtimeCapabilities } from "./capabilities.js";
|
|
2
|
+
export function runtimeHealth(capabilities = runtimeCapabilities()) {
|
|
3
|
+
return {
|
|
4
|
+
status: "ok",
|
|
5
|
+
mode: "core",
|
|
6
|
+
runtime_contract_version: capabilities.runtime_contract_version,
|
|
7
|
+
supported_features: capabilities.supported_features.length,
|
|
8
|
+
unsupported_features: capabilities.unsupported_features.length,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAkC,MAAM,mBAAmB,CAAC;AAUxF,MAAM,UAAU,aAAa,CAAC,YAAY,GAAG,mBAAmB,EAAE;IAChE,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,MAAM;QACZ,wBAAwB,EAAE,YAAY,CAAC,wBAAwB;QAC/D,kBAAkB,EAAE,YAAY,CAAC,kBAAkB,CAAC,MAAM;QAC1D,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,CAAC,MAAM;KAC/D,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
|
package/dist/ports.d.ts
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { PortableReleaseState } from "@run402/release";
|
|
2
|
+
import type { RuntimeCapabilityDocument } from "./capabilities.js";
|
|
3
|
+
export interface CoreProject {
|
|
4
|
+
project_id: string;
|
|
5
|
+
schema_slot: string;
|
|
6
|
+
public_id: string;
|
|
7
|
+
anon_key: string;
|
|
8
|
+
service_key: string;
|
|
9
|
+
endpoints: {
|
|
10
|
+
rest_url: string;
|
|
11
|
+
static_base_url: string;
|
|
12
|
+
};
|
|
13
|
+
active_release_id: string | null;
|
|
14
|
+
capabilities: RuntimeCapabilityDocument;
|
|
15
|
+
}
|
|
16
|
+
export interface ProjectCatalogPort {
|
|
17
|
+
create(input: {
|
|
18
|
+
name: string;
|
|
19
|
+
}): Promise<CoreProject>;
|
|
20
|
+
inspect(projectId: string): Promise<CoreProject | null>;
|
|
21
|
+
}
|
|
22
|
+
export interface ReleaseStatePort {
|
|
23
|
+
getBase(projectId: string, target: "empty" | "current" | {
|
|
24
|
+
release_id: string;
|
|
25
|
+
}): Promise<{
|
|
26
|
+
release_id: string | null;
|
|
27
|
+
state: PortableReleaseState;
|
|
28
|
+
}>;
|
|
29
|
+
setActiveRelease(input: {
|
|
30
|
+
projectId: string;
|
|
31
|
+
releaseId: string;
|
|
32
|
+
digest: string;
|
|
33
|
+
release: PortableReleaseState;
|
|
34
|
+
expectedBaseReleaseId: string | null;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
export interface CoreApplyPlan {
|
|
38
|
+
plan_id: string;
|
|
39
|
+
project_id: string;
|
|
40
|
+
release_spec_digest: string;
|
|
41
|
+
base_release_id: string | null;
|
|
42
|
+
target_release_id: string;
|
|
43
|
+
target_release_digest: string;
|
|
44
|
+
noop: boolean;
|
|
45
|
+
status: "planned" | "committed";
|
|
46
|
+
created_at: string;
|
|
47
|
+
}
|
|
48
|
+
export interface StoredCoreApplyPlan extends CoreApplyPlan {
|
|
49
|
+
spec: unknown;
|
|
50
|
+
target_release: PortableReleaseState;
|
|
51
|
+
}
|
|
52
|
+
export interface ApplyPlanStorePort {
|
|
53
|
+
create(input: Omit<StoredCoreApplyPlan, "plan_id" | "created_at" | "status">): Promise<StoredCoreApplyPlan>;
|
|
54
|
+
get(planId: string): Promise<StoredCoreApplyPlan | null>;
|
|
55
|
+
markCommitted(planId: string): Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
export interface ContentStorePort {
|
|
58
|
+
putStatic(input: {
|
|
59
|
+
projectId: string;
|
|
60
|
+
sha256: string;
|
|
61
|
+
bytes: Uint8Array;
|
|
62
|
+
contentType: string;
|
|
63
|
+
}): Promise<void>;
|
|
64
|
+
hasContent(projectId: string, sha256: string): Promise<boolean>;
|
|
65
|
+
readStatic(projectId: string, sha256: string): Promise<{
|
|
66
|
+
bytes: Uint8Array;
|
|
67
|
+
contentType: string;
|
|
68
|
+
} | null>;
|
|
69
|
+
}
|
|
70
|
+
export interface MigrationPort {
|
|
71
|
+
check(projectId: string, migrationId: string): Promise<{
|
|
72
|
+
state: "absent";
|
|
73
|
+
} | {
|
|
74
|
+
state: "present";
|
|
75
|
+
checksum_hex: string;
|
|
76
|
+
}>;
|
|
77
|
+
applyInline(input: {
|
|
78
|
+
projectId: string;
|
|
79
|
+
schema: string;
|
|
80
|
+
migrationId: string;
|
|
81
|
+
checksum_hex: string;
|
|
82
|
+
sql: string;
|
|
83
|
+
transaction: "default" | "none";
|
|
84
|
+
}): Promise<void>;
|
|
85
|
+
}
|
|
86
|
+
export interface RuntimeKernelPorts {
|
|
87
|
+
projects: ProjectCatalogPort;
|
|
88
|
+
releases: ReleaseStatePort;
|
|
89
|
+
plans: ApplyPlanStorePort;
|
|
90
|
+
content: ContentStorePort;
|
|
91
|
+
migrations: MigrationPort;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=ports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"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"}
|
package/dist/ports.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ports.js","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CoreProject, RuntimeKernelPorts } from "./ports.js";
|
|
2
|
+
export interface CreateCoreProjectInput {
|
|
3
|
+
name?: string | null;
|
|
4
|
+
}
|
|
5
|
+
export interface InspectCoreProjectInput {
|
|
6
|
+
project_id: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class ProjectNotFoundError extends Error {
|
|
9
|
+
readonly projectId: string;
|
|
10
|
+
readonly code = "project_not_found";
|
|
11
|
+
readonly status = 404;
|
|
12
|
+
constructor(projectId: string);
|
|
13
|
+
}
|
|
14
|
+
export declare function normalizeProjectName(input: CreateCoreProjectInput): string;
|
|
15
|
+
export declare function validateProjectId(projectId: string): string;
|
|
16
|
+
export declare function createCoreProject(ports: Pick<RuntimeKernelPorts, "projects">, input: CreateCoreProjectInput): Promise<CoreProject>;
|
|
17
|
+
export declare function inspectCoreProject(ports: Pick<RuntimeKernelPorts, "projects">, input: InspectCoreProjectInput): Promise<CoreProject>;
|
|
18
|
+
export declare function projectNotFoundEnvelope(error: ProjectNotFoundError): {
|
|
19
|
+
error: "project_not_found";
|
|
20
|
+
message: string;
|
|
21
|
+
project_id: string;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAIjC,QAAQ,CAAC,SAAS,EAAE,MAAM;IAHtC,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,MAAM,OAAO;gBAED,SAAS,EAAE,MAAM;CAIvC;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAS1E;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK3D;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAC3C,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAEtB;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAC3C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,WAAW,CAAC,CAMtB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG;IACpE,KAAK,EAAE,mBAAmB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAMA"}
|
package/dist/projects.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export class ProjectNotFoundError extends Error {
|
|
2
|
+
projectId;
|
|
3
|
+
code = "project_not_found";
|
|
4
|
+
status = 404;
|
|
5
|
+
constructor(projectId) {
|
|
6
|
+
super(`Run402 Core project not found: ${projectId}`);
|
|
7
|
+
this.projectId = projectId;
|
|
8
|
+
this.name = "ProjectNotFoundError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function normalizeProjectName(input) {
|
|
12
|
+
const name = input.name?.trim();
|
|
13
|
+
if (!name) {
|
|
14
|
+
return "local-project";
|
|
15
|
+
}
|
|
16
|
+
if (name.length > 120) {
|
|
17
|
+
throw new RangeError("Project name must be 120 characters or less.");
|
|
18
|
+
}
|
|
19
|
+
return name;
|
|
20
|
+
}
|
|
21
|
+
export function validateProjectId(projectId) {
|
|
22
|
+
if (!/^prj_[a-z0-9]{16}$/.test(projectId)) {
|
|
23
|
+
throw new RangeError("Project id must match prj_[a-z0-9]{16}.");
|
|
24
|
+
}
|
|
25
|
+
return projectId;
|
|
26
|
+
}
|
|
27
|
+
export async function createCoreProject(ports, input) {
|
|
28
|
+
return ports.projects.create({ name: normalizeProjectName(input) });
|
|
29
|
+
}
|
|
30
|
+
export async function inspectCoreProject(ports, input) {
|
|
31
|
+
const project = await ports.projects.inspect(validateProjectId(input.project_id));
|
|
32
|
+
if (!project) {
|
|
33
|
+
throw new ProjectNotFoundError(input.project_id);
|
|
34
|
+
}
|
|
35
|
+
return project;
|
|
36
|
+
}
|
|
37
|
+
export function projectNotFoundEnvelope(error) {
|
|
38
|
+
return {
|
|
39
|
+
error: error.code,
|
|
40
|
+
message: error.message,
|
|
41
|
+
project_id: error.projectId,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAIxB;IAHZ,IAAI,GAAG,mBAAmB,CAAC;IAC3B,MAAM,GAAG,GAAG,CAAC;IAEtB,YAAqB,SAAiB;QACpC,KAAK,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;QADlC,cAAS,GAAT,SAAS,CAAQ;QAEpC,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAAC,KAA6B;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,UAAU,CAAC,8CAA8C,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,yCAAyC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA2C,EAC3C,KAA6B;IAE7B,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAA2C,EAC3C,KAA8B;IAE9B,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAClF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA2B;IAKjE,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@run402/runtime-kernel",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Public Run402 Core runtime kernel contracts, capabilities, and application services.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"clean": "rm -rf dist",
|
|
22
|
+
"lint": "tsc --noEmit",
|
|
23
|
+
"test": "node --test --import tsx 'src/**/*.test.ts'"
|
|
24
|
+
},
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=22"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@run402/release": "0.1.1"
|
|
30
|
+
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "git+https://github.com/kychee-com/run402-core.git",
|
|
34
|
+
"directory": "packages/runtime-kernel"
|
|
35
|
+
},
|
|
36
|
+
"homepage": "https://run402.com",
|
|
37
|
+
"bugs": "https://github.com/kychee-com/run402-core/issues",
|
|
38
|
+
"author": "Kychee Technologies",
|
|
39
|
+
"license": "Apache-2.0",
|
|
40
|
+
"keywords": [
|
|
41
|
+
"run402",
|
|
42
|
+
"core",
|
|
43
|
+
"runtime",
|
|
44
|
+
"postgres",
|
|
45
|
+
"postgrest",
|
|
46
|
+
"ai-agent"
|
|
47
|
+
],
|
|
48
|
+
"publishConfig": {
|
|
49
|
+
"access": "public"
|
|
50
|
+
}
|
|
51
|
+
}
|