@dsh-enhanced/assistant-isolation 0.1.65 → 0.1.67
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 +287 -9
- package/lib/audit-archive.d.ts +1 -1
- package/lib/audit-archive.d.ts.map +1 -1
- package/lib/audit-archive.js +31 -13
- package/lib/audit-archive.js.map +1 -1
- package/lib/cli.d.ts +7 -3
- package/lib/cli.d.ts.map +1 -1
- package/lib/cli.js +104 -23
- package/lib/cli.js.map +1 -1
- package/lib/config.d.ts +15 -2
- package/lib/config.d.ts.map +1 -1
- package/lib/config.js +49 -9
- package/lib/config.js.map +1 -1
- package/lib/diagnostics.js +2 -2
- package/lib/diagnostics.js.map +1 -1
- package/lib/index.d.ts +17 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +17 -1
- package/lib/index.js.map +1 -1
- package/lib/ledger.d.ts +19 -2
- package/lib/ledger.d.ts.map +1 -1
- package/lib/ledger.js +371 -44
- package/lib/ledger.js.map +1 -1
- package/lib/linux-cgroups.d.ts +75 -0
- package/lib/linux-cgroups.d.ts.map +1 -0
- package/lib/linux-cgroups.js +517 -0
- package/lib/linux-cgroups.js.map +1 -0
- package/lib/linux-execution-contract.d.ts +123 -0
- package/lib/linux-execution-contract.d.ts.map +1 -0
- package/lib/linux-execution-contract.js +279 -0
- package/lib/linux-execution-contract.js.map +1 -0
- package/lib/linux-execution.d.ts +123 -0
- package/lib/linux-execution.d.ts.map +1 -0
- package/lib/linux-execution.js +1264 -0
- package/lib/linux-execution.js.map +1 -0
- package/lib/linux-job-recovery.d.ts +5 -0
- package/lib/linux-job-recovery.d.ts.map +1 -0
- package/lib/linux-job-recovery.js +63 -0
- package/lib/linux-job-recovery.js.map +1 -0
- package/lib/linux-namespace.d.ts +80 -0
- package/lib/linux-namespace.d.ts.map +1 -0
- package/lib/linux-namespace.js +471 -0
- package/lib/linux-namespace.js.map +1 -0
- package/lib/linux-repository-admission.d.ts +26 -0
- package/lib/linux-repository-admission.d.ts.map +1 -0
- package/lib/linux-repository-admission.js +64 -0
- package/lib/linux-repository-admission.js.map +1 -0
- package/lib/linux-repository-runner.d.ts +54 -0
- package/lib/linux-repository-runner.d.ts.map +1 -0
- package/lib/linux-repository-runner.js +614 -0
- package/lib/linux-repository-runner.js.map +1 -0
- package/lib/linux-runner-state-migration.d.ts +94 -0
- package/lib/linux-runner-state-migration.d.ts.map +1 -0
- package/lib/linux-runner-state-migration.js +463 -0
- package/lib/linux-runner-state-migration.js.map +1 -0
- package/lib/linux-runner-state.d.ts +53 -0
- package/lib/linux-runner-state.d.ts.map +1 -0
- package/lib/linux-runner-state.js +332 -0
- package/lib/linux-runner-state.js.map +1 -0
- package/lib/linux-runtime-source.d.ts +28 -0
- package/lib/linux-runtime-source.d.ts.map +1 -0
- package/lib/linux-runtime-source.js +237 -0
- package/lib/linux-runtime-source.js.map +1 -0
- package/lib/linux-runtime.d.ts +37 -0
- package/lib/linux-runtime.d.ts.map +1 -0
- package/lib/linux-runtime.js +192 -0
- package/lib/linux-runtime.js.map +1 -0
- package/lib/linux-system-snapshot.d.ts +47 -0
- package/lib/linux-system-snapshot.d.ts.map +1 -0
- package/lib/linux-system-snapshot.js +704 -0
- package/lib/linux-system-snapshot.js.map +1 -0
- package/lib/linux-user-namespace.d.ts +79 -0
- package/lib/linux-user-namespace.d.ts.map +1 -0
- package/lib/linux-user-namespace.js +234 -0
- package/lib/linux-user-namespace.js.map +1 -0
- package/lib/linux-verifier-runner.d.ts +27 -0
- package/lib/linux-verifier-runner.d.ts.map +1 -0
- package/lib/linux-verifier-runner.js +346 -0
- package/lib/linux-verifier-runner.js.map +1 -0
- package/lib/native-cgroup-roots.d.ts +20 -0
- package/lib/native-cgroup-roots.d.ts.map +1 -0
- package/lib/native-cgroup-roots.js +121 -0
- package/lib/native-cgroup-roots.js.map +1 -0
- package/lib/native-resources.d.ts +44 -0
- package/lib/native-resources.d.ts.map +1 -0
- package/lib/native-resources.js +354 -0
- package/lib/native-resources.js.map +1 -0
- package/lib/probe.d.ts +10 -0
- package/lib/probe.d.ts.map +1 -1
- package/lib/probe.js +52 -2
- package/lib/probe.js.map +1 -1
- package/lib/service.d.ts +1 -1
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +122 -9
- package/lib/service.js.map +1 -1
- package/lib/storage.d.ts.map +1 -1
- package/lib/storage.js +36 -6
- package/lib/storage.js.map +1 -1
- package/lib/tools.js +1 -1
- package/lib/tools.js.map +1 -1
- package/lib/types.d.ts +5 -1
- package/lib/types.d.ts.map +1 -1
- package/lib/verifier-runner.d.ts +4 -2
- package/lib/verifier-runner.d.ts.map +1 -1
- package/lib/verifier-runner.js +22 -1
- package/lib/verifier-runner.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +15 -10
- package/runtime/linux-candidate-entry.py +82 -0
- package/runtime/linux-namespace-worker.mjs +561 -0
- package/runtime/linux-seccomp-policy.LICENSE +202 -0
- package/runtime/linux-seccomp-policy.json +886 -0
- package/runtime/linux-seccomp.py +106 -0
- package/runtime/linux-userns-launcher.py +149 -0
- package/runtime/linux-userns-proof.py +299 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linux-runner-state-migration.js","sourceRoot":"","sources":["../src/linux-runner-state-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export interface LinuxRunnerStateSeal {
|
|
2
|
+
path: string;
|
|
3
|
+
sha256: string;
|
|
4
|
+
}
|
|
5
|
+
export type Kind = 'repository' | 'verification';
|
|
6
|
+
/** Pure shape validation. Filesystem ownership and the saved identities are
|
|
7
|
+
* checked only by preparation or the strict runner's synchronous inspection. */
|
|
8
|
+
export declare function validateLinuxRunnerStateSeal(value: unknown): LinuxRunnerStateSeal;
|
|
9
|
+
/** Schema digest of an existing private v9 ledger, running every table and
|
|
10
|
+
* column gate from inspection. The ledger must already be checkpointed with
|
|
11
|
+
* no pending WAL (immutable reads never see WAL frames). Used by the authorized
|
|
12
|
+
* backend handover to reseal a migrated ledger inside a staging copy. */
|
|
13
|
+
export declare function linuxRunnerStateSchemaDigest(path: string): string;
|
|
14
|
+
/** Existing-only inspection. A missing seal, root or ledger is never repaired. */
|
|
15
|
+
export declare function inspectLinuxRunnerState(input: {
|
|
16
|
+
stateRoot: string;
|
|
17
|
+
stateSeal: LinuxRunnerStateSeal;
|
|
18
|
+
kind: Kind;
|
|
19
|
+
}): void;
|
|
20
|
+
/** Initialize empty state before owner grants exist. Callers create both private
|
|
21
|
+
* directories first and freeze the returned reference in the owner config.
|
|
22
|
+
* An existing unsealed used ledger requires a separate authorized migration.
|
|
23
|
+
* Initial installation must pass requireEmpty even when a seal already exists:
|
|
24
|
+
* losing the outer owner configuration never makes used state a new install. */
|
|
25
|
+
export declare function prepareLinuxRunnerState(input: {
|
|
26
|
+
stateRoot: string;
|
|
27
|
+
sealPath: string;
|
|
28
|
+
kind: Kind;
|
|
29
|
+
requireEmpty?: boolean;
|
|
30
|
+
}): LinuxRunnerStateSeal;
|
|
31
|
+
export interface LinuxRunnerStateResealInput {
|
|
32
|
+
/** Physical private state root inside the disposable staging copy; its
|
|
33
|
+
* dev/ino are the identities frozen in the new seal. */
|
|
34
|
+
stateRoot: string;
|
|
35
|
+
/** Physical seal destination inside the staging copy. */
|
|
36
|
+
sealPath: string;
|
|
37
|
+
kind: Kind;
|
|
38
|
+
/** Logical live paths recorded in the seal body and returned in the ref.
|
|
39
|
+
* They differ from the physical paths while sealing a staging copy that a
|
|
40
|
+
* same-filesystem rename will later move onto the live location. */
|
|
41
|
+
logicalStateRoot?: string;
|
|
42
|
+
logicalSealPath?: string;
|
|
43
|
+
/** Require a brand-new empty ledger (fresh repository handover state);
|
|
44
|
+
* otherwise the ledger must already exist with migrated v9 history. */
|
|
45
|
+
requireEmpty?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/** Publish a fresh seal over a staging state tree. Unlike preparation this
|
|
48
|
+
* never inspects the result against the logical locations: the staging nodes
|
|
49
|
+
* reach their live paths only after the orchestrator's atomic rename. The new
|
|
50
|
+
* seal binds logical path strings to the physical staging identities that the
|
|
51
|
+
* rename preserves. */
|
|
52
|
+
export declare function resealLinuxRunnerState(input: LinuxRunnerStateResealInput): LinuxRunnerStateSeal;
|
|
53
|
+
//# sourceMappingURL=linux-runner-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linux-runner-state.d.ts","sourceRoot":"","sources":["../src/linux-runner-state.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,oBAAoB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACtE,MAAM,MAAM,IAAI,GAAG,YAAY,GAAG,cAAc,CAAA;AAqEhD;gFACgF;AAChF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAIjF;AAqDD;;;yEAGyE;AACzE,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjE;AAmBD,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,oBAAoB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG,IAAI,CAYvH;AAED;;;;gFAIgF;AAChF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAC/F,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,oBAAoB,CA4ChD;AAoBD,MAAM,WAAW,2BAA2B;IAC1C;4DACwD;IACxD,SAAS,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;IACV;;wEAEoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;2EACuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;;;uBAIuB;AACvB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,oBAAoB,CAoD/F"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { constants, closeSync, fstatSync, fsyncSync, linkSync, lstatSync, openSync, readFileSync, readdirSync, realpathSync, unlinkSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { dirname, isAbsolute, join, resolve, sep } from 'node:path';
|
|
4
|
+
import { DatabaseSync } from 'node:sqlite';
|
|
5
|
+
import { pathToFileURL } from 'node:url';
|
|
6
|
+
import { IsolationLedger } from './ledger.js';
|
|
7
|
+
const hex = /^[a-f0-9]{64}$/u;
|
|
8
|
+
const uuid = /^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$/u;
|
|
9
|
+
const sha = (value) => createHash('sha256').update(value).digest('hex');
|
|
10
|
+
const canonical = (value) => typeof value === 'string' && isAbsolute(value)
|
|
11
|
+
&& resolve(value) === value && value !== '/' && !/[\p{Cc}\\]/u.test(value);
|
|
12
|
+
function fail(message) { throw new Error(`Linux runner state: ${message}`); }
|
|
13
|
+
function exact(value, keys) {
|
|
14
|
+
return !!value && typeof value === 'object' && Object.getPrototypeOf(value) === Object.prototype
|
|
15
|
+
&& Reflect.ownKeys(value).length === keys.length && keys.every(key => Object.hasOwn(value, key))
|
|
16
|
+
&& Object.values(Object.getOwnPropertyDescriptors(value)).every(item => item.enumerable && 'value' in item);
|
|
17
|
+
}
|
|
18
|
+
function owner() {
|
|
19
|
+
const uid = process.getuid?.();
|
|
20
|
+
if (process.platform !== 'linux' || !uid)
|
|
21
|
+
fail('requires non-root Linux');
|
|
22
|
+
return uid;
|
|
23
|
+
}
|
|
24
|
+
function exists(path) {
|
|
25
|
+
try {
|
|
26
|
+
lstatSync(path);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (error.code !== 'ENOENT')
|
|
31
|
+
throw error;
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function syncFile(path, directory = false) {
|
|
36
|
+
const fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW | (directory ? constants.O_DIRECTORY : 0));
|
|
37
|
+
try {
|
|
38
|
+
fsyncSync(fd);
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
closeSync(fd);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function privateDirectory(path) {
|
|
45
|
+
const info = lstatSync(path);
|
|
46
|
+
if (!canonical(path) || realpathSync(path) !== path || !info.isDirectory() || info.isSymbolicLink()
|
|
47
|
+
|| info.uid !== owner() || (info.mode & 0o777) !== 0o700)
|
|
48
|
+
fail('directory is not private and canonical');
|
|
49
|
+
return info;
|
|
50
|
+
}
|
|
51
|
+
function privateFile(path, maximum) {
|
|
52
|
+
const info = lstatSync(path);
|
|
53
|
+
if (!canonical(path) || realpathSync(path) !== path || !info.isFile() || info.isSymbolicLink()
|
|
54
|
+
|| info.nlink !== 1 || info.uid !== owner() || (info.mode & 0o777) !== 0o600
|
|
55
|
+
|| maximum !== undefined && info.size > maximum)
|
|
56
|
+
fail('file is not private and canonical');
|
|
57
|
+
return info;
|
|
58
|
+
}
|
|
59
|
+
const identity = (path, info) => ({ path, dev: info.dev, ino: info.ino });
|
|
60
|
+
function sameIdentity(actual, expected) {
|
|
61
|
+
if (actual.dev !== expected.dev || actual.ino !== expected.ino)
|
|
62
|
+
fail('file identity differs from seal');
|
|
63
|
+
}
|
|
64
|
+
function validIdentity(value) {
|
|
65
|
+
return exact(value, ['path', 'dev', 'ino']) && canonical(value.path)
|
|
66
|
+
&& Number.isSafeInteger(value.dev) && Number(value.dev) >= 0
|
|
67
|
+
&& Number.isSafeInteger(value.ino) && Number(value.ino) >= 0;
|
|
68
|
+
}
|
|
69
|
+
function locations(stateRoot, sealPath, kind) {
|
|
70
|
+
owner();
|
|
71
|
+
if (!canonical(stateRoot) || !canonical(sealPath) || !['repository', 'verification'].includes(kind)
|
|
72
|
+
|| sealPath === stateRoot || sealPath.startsWith(stateRoot + sep)
|
|
73
|
+
|| stateRoot.startsWith(sealPath + sep))
|
|
74
|
+
fail('invalid state or seal binding');
|
|
75
|
+
privateDirectory(dirname(stateRoot));
|
|
76
|
+
privateDirectory(dirname(sealPath));
|
|
77
|
+
}
|
|
78
|
+
/** Pure shape validation. Filesystem ownership and the saved identities are
|
|
79
|
+
* checked only by preparation or the strict runner's synchronous inspection. */
|
|
80
|
+
export function validateLinuxRunnerStateSeal(value) {
|
|
81
|
+
if (!exact(value, ['path', 'sha256']) || !canonical(value.path)
|
|
82
|
+
|| typeof value.sha256 !== 'string' || !hex.test(value.sha256))
|
|
83
|
+
fail('invalid seal reference');
|
|
84
|
+
return { path: value.path, sha256: value.sha256 };
|
|
85
|
+
}
|
|
86
|
+
// immutable=1 is deliberate: a regular readOnly WAL connection can create shm
|
|
87
|
+
// and wal files. Only the checkpointed, fixed schema is read here, never live
|
|
88
|
+
// grants/jobs or a claim about their current budget. Initial-only preparation
|
|
89
|
+
// proves there is no pending WAL before and after checking for empty tables.
|
|
90
|
+
// The actual runner opens its original WAL normally after this identity gate.
|
|
91
|
+
function schema(path, empty) {
|
|
92
|
+
const info = privateFile(path);
|
|
93
|
+
if (info.size < 100)
|
|
94
|
+
fail('ledger is incomplete');
|
|
95
|
+
const db = new DatabaseSync(`${pathToFileURL(path).href}?immutable=1`, { readOnly: true });
|
|
96
|
+
try {
|
|
97
|
+
if (db.prepare('PRAGMA user_version').get()?.user_version !== 9
|
|
98
|
+
|| db.prepare("SELECT value FROM schema_meta WHERE key='schema-version'").get()?.value !== '9')
|
|
99
|
+
fail('ledger schema differs');
|
|
100
|
+
const tables = db.prepare("SELECT name FROM sqlite_schema WHERE type='table' ORDER BY name").all()
|
|
101
|
+
.map(row => String(row.name));
|
|
102
|
+
if (tables.join() !== ['isolation_audit', 'isolation_controller', 'isolation_grants', 'isolation_jobs', 'schema_meta', 'sqlite_sequence'].join())
|
|
103
|
+
fail('ledger schema is incomplete');
|
|
104
|
+
const required = {
|
|
105
|
+
isolation_grants: ['id', 'digest', 'revision', 'expires_at', 'max_runs', 'max_total_duration_ms', 'revoked', 'revoke_reason', 'principal_digest', 'principal_record_id', 'principal_version', 'workspace', 'agent_preset'],
|
|
106
|
+
isolation_jobs: ['id', 'grant_id', 'grant_revision', 'principal_digest', 'principal_record_id', 'principal_version', 'workspace', 'agent_preset', 'session_id', 'idempotency_key', 'request_digest', 'container_name', 'backend_kind', 'native_resource_id', 'native_nonce', 'deadline', 'reserved_duration_ms', 'reserved_memory_mib', 'reserved_workspace_inodes', 'reserved_storage_bytes', 'status', 'version', 'created_at', 'updated_at', 'result_json', 'dispatch_attempted', 'creation_witness_json', 'artifact_binding_json', 'linux_contract_json', 'linux_intent_json', 'linux_resources_json', 'migrated'],
|
|
107
|
+
isolation_audit: ['sequence', 'occurred_at', 'action', 'job_id', 'grant_id', 'detail'],
|
|
108
|
+
isolation_controller: ['singleton', 'owner_id', 'fence', 'expires_at'],
|
|
109
|
+
schema_meta: ['key', 'value'], sqlite_sequence: ['name', 'seq'],
|
|
110
|
+
};
|
|
111
|
+
for (const [table, columns] of Object.entries(required)) {
|
|
112
|
+
if (db.prepare(`PRAGMA table_info(${table})`).all().map(row => String(row.name)).join() !== columns.join())
|
|
113
|
+
fail('ledger columns differ');
|
|
114
|
+
if (empty && table !== 'schema_meta' && db.prepare(`SELECT COUNT(*) AS n FROM ${table}`).get()?.n !== 0)
|
|
115
|
+
fail('initial-only ledger already contains authority or task history');
|
|
116
|
+
}
|
|
117
|
+
if (db.prepare('SELECT COUNT(*) AS n FROM schema_meta').get()?.n !== 1)
|
|
118
|
+
fail('ledger schema metadata differs');
|
|
119
|
+
const rows = db.prepare('SELECT type,name,tbl_name,sql FROM sqlite_schema ORDER BY type,name').all();
|
|
120
|
+
sameIdentity(privateFile(path), identity(path, info));
|
|
121
|
+
return sha(JSON.stringify(rows));
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
db.close();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function noPendingWal(path) {
|
|
128
|
+
for (const suffix of ['-wal', '-shm']) {
|
|
129
|
+
if (exists(path + suffix) && privateFile(path + suffix).size !== 0)
|
|
130
|
+
fail('initial-only WAL state requires reconciliation');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function emptySchema(path) {
|
|
134
|
+
// Immutable reads intentionally ignore WAL. They can prove empty history only
|
|
135
|
+
// while both sidecars are absent or empty; a live writer never qualifies.
|
|
136
|
+
noPendingWal(path);
|
|
137
|
+
const digest = schema(path, true);
|
|
138
|
+
noPendingWal(path);
|
|
139
|
+
return digest;
|
|
140
|
+
}
|
|
141
|
+
/** Schema digest of an existing private v9 ledger, running every table and
|
|
142
|
+
* column gate from inspection. The ledger must already be checkpointed with
|
|
143
|
+
* no pending WAL (immutable reads never see WAL frames). Used by the authorized
|
|
144
|
+
* backend handover to reseal a migrated ledger inside a staging copy. */
|
|
145
|
+
export function linuxRunnerStateSchemaDigest(path) {
|
|
146
|
+
noPendingWal(path);
|
|
147
|
+
const digest = schema(path, false);
|
|
148
|
+
noPendingWal(path);
|
|
149
|
+
return digest;
|
|
150
|
+
}
|
|
151
|
+
function readSeal(path) {
|
|
152
|
+
const before = privateFile(path, 16_384);
|
|
153
|
+
const fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
154
|
+
try {
|
|
155
|
+
sameIdentity(fstatSync(fd), identity(path, before));
|
|
156
|
+
const bytes = readFileSync(fd);
|
|
157
|
+
const body = JSON.parse(bytes.toString('utf8'));
|
|
158
|
+
if (!exact(body, ['schemaVersion', 'protocol', 'id', 'kind', 'uid', 'stateRoot', 'ledger', 'ledgerSchemaVersion', 'schemaSha256'])
|
|
159
|
+
|| body.schemaVersion !== 1 || body.protocol !== 'dsh-linux-runner-state/v1'
|
|
160
|
+
|| typeof body.id !== 'string' || !uuid.test(body.id) || !['repository', 'verification'].includes(String(body.kind))
|
|
161
|
+
|| body.uid !== owner() || !validIdentity(body.stateRoot) || !validIdentity(body.ledger)
|
|
162
|
+
|| body.ledgerSchemaVersion !== 9 || typeof body.schemaSha256 !== 'string' || !hex.test(body.schemaSha256))
|
|
163
|
+
fail('seal body differs');
|
|
164
|
+
sameIdentity(privateFile(path, 16_384), identity(path, before));
|
|
165
|
+
return { body: body, bytes };
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
closeSync(fd);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/** Existing-only inspection. A missing seal, root or ledger is never repaired. */
|
|
172
|
+
export function inspectLinuxRunnerState(input) {
|
|
173
|
+
const ref = validateLinuxRunnerStateSeal(input.stateSeal);
|
|
174
|
+
locations(input.stateRoot, ref.path, input.kind);
|
|
175
|
+
const { body, bytes } = readSeal(ref.path);
|
|
176
|
+
if (sha(bytes) !== ref.sha256 || body.kind !== input.kind || body.stateRoot.path !== input.stateRoot
|
|
177
|
+
|| body.ledger.path !== join(input.stateRoot, 'ledger.sqlite'))
|
|
178
|
+
fail('seal reference or purpose differs');
|
|
179
|
+
sameIdentity(privateDirectory(input.stateRoot), body.stateRoot);
|
|
180
|
+
sameIdentity(privateFile(body.ledger.path), body.ledger);
|
|
181
|
+
for (const suffix of ['-wal', '-shm'])
|
|
182
|
+
if (exists(body.ledger.path + suffix))
|
|
183
|
+
privateFile(body.ledger.path + suffix);
|
|
184
|
+
if (schema(body.ledger.path, false) !== body.schemaSha256)
|
|
185
|
+
fail('ledger schema changed');
|
|
186
|
+
sameIdentity(privateDirectory(input.stateRoot), body.stateRoot);
|
|
187
|
+
sameIdentity(privateFile(body.ledger.path), body.ledger);
|
|
188
|
+
}
|
|
189
|
+
/** Initialize empty state before owner grants exist. Callers create both private
|
|
190
|
+
* directories first and freeze the returned reference in the owner config.
|
|
191
|
+
* An existing unsealed used ledger requires a separate authorized migration.
|
|
192
|
+
* Initial installation must pass requireEmpty even when a seal already exists:
|
|
193
|
+
* losing the outer owner configuration never makes used state a new install. */
|
|
194
|
+
export function prepareLinuxRunnerState(input) {
|
|
195
|
+
if (input.requireEmpty !== undefined && typeof input.requireEmpty !== 'boolean')
|
|
196
|
+
fail('invalid initial-only requirement');
|
|
197
|
+
locations(input.stateRoot, input.sealPath, input.kind);
|
|
198
|
+
const root = privateDirectory(input.stateRoot);
|
|
199
|
+
if (exists(input.sealPath)) {
|
|
200
|
+
const { bytes } = readSeal(input.sealPath), ref = { path: input.sealPath, sha256: sha(bytes) };
|
|
201
|
+
inspectLinuxRunnerState({ stateRoot: input.stateRoot, stateSeal: ref, kind: input.kind });
|
|
202
|
+
if (input.requireEmpty) {
|
|
203
|
+
emptySchema(join(input.stateRoot, 'ledger.sqlite'));
|
|
204
|
+
inspectLinuxRunnerState({ stateRoot: input.stateRoot, stateSeal: ref, kind: input.kind });
|
|
205
|
+
}
|
|
206
|
+
return ref;
|
|
207
|
+
}
|
|
208
|
+
const ledgerPath = join(input.stateRoot, 'ledger.sqlite');
|
|
209
|
+
if (readdirSync(input.stateRoot).some(name => !['ledger.sqlite', 'ledger.sqlite-wal', 'ledger.sqlite-shm'].includes(name)))
|
|
210
|
+
fail('unsealed state is not an empty preparation');
|
|
211
|
+
noPendingWal(ledgerPath);
|
|
212
|
+
if (!exists(ledgerPath)) {
|
|
213
|
+
if (readdirSync(input.stateRoot).length)
|
|
214
|
+
fail('unsealed ledger is missing');
|
|
215
|
+
const reserved = openSync(ledgerPath, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
|
|
216
|
+
closeSync(reserved);
|
|
217
|
+
const ledger = new IsolationLedger(ledgerPath);
|
|
218
|
+
ledger.close();
|
|
219
|
+
}
|
|
220
|
+
const schemaSha256 = emptySchema(ledgerPath), ledger = privateFile(ledgerPath);
|
|
221
|
+
sameIdentity(privateDirectory(input.stateRoot), identity(input.stateRoot, root));
|
|
222
|
+
syncFile(ledgerPath);
|
|
223
|
+
syncFile(input.stateRoot, true);
|
|
224
|
+
const body = { schemaVersion: 1, protocol: 'dsh-linux-runner-state/v1', id: randomUUID(),
|
|
225
|
+
kind: input.kind, uid: owner(), stateRoot: identity(input.stateRoot, root), ledger: identity(ledgerPath, ledger),
|
|
226
|
+
ledgerSchemaVersion: 9, schemaSha256 };
|
|
227
|
+
const bytes = Buffer.from(JSON.stringify(body) + '\n'), temporary = join(dirname(input.sealPath), `.${randomUUID()}.tmp`);
|
|
228
|
+
const fd = openSync(temporary, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
|
|
229
|
+
try {
|
|
230
|
+
writeFileSync(fd, bytes);
|
|
231
|
+
fsyncSync(fd);
|
|
232
|
+
// link is an atomic no-replace publication; never overwrite a raced seal.
|
|
233
|
+
linkSync(temporary, input.sealPath);
|
|
234
|
+
}
|
|
235
|
+
finally {
|
|
236
|
+
closeSync(fd);
|
|
237
|
+
unlinkSync(temporary);
|
|
238
|
+
}
|
|
239
|
+
syncFile(dirname(input.sealPath), true);
|
|
240
|
+
const ref = { path: input.sealPath, sha256: sha(bytes) };
|
|
241
|
+
inspectLinuxRunnerState({ stateRoot: input.stateRoot, stateSeal: ref, kind: input.kind });
|
|
242
|
+
return ref;
|
|
243
|
+
}
|
|
244
|
+
/** Read an existing seal without binding it to the current file identities.
|
|
245
|
+
* A staging copy gets fresh dev/ino nodes, so sameIdentity checks never apply
|
|
246
|
+
* there; shape, owner, protocol and purpose are still enforced. */
|
|
247
|
+
function tolerantSealKind(path) {
|
|
248
|
+
privateFile(path, 16_384);
|
|
249
|
+
const fd = openSync(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
250
|
+
try {
|
|
251
|
+
const bytes = readFileSync(fd);
|
|
252
|
+
const body = JSON.parse(bytes.toString('utf8'));
|
|
253
|
+
if (!exact(body, ['schemaVersion', 'protocol', 'id', 'kind', 'uid', 'stateRoot', 'ledger', 'ledgerSchemaVersion', 'schemaSha256'])
|
|
254
|
+
|| body.schemaVersion !== 1 || body.protocol !== 'dsh-linux-runner-state/v1'
|
|
255
|
+
|| typeof body.id !== 'string' || !uuid.test(body.id) || !['repository', 'verification'].includes(String(body.kind))
|
|
256
|
+
|| body.uid !== owner() || !validIdentity(body.stateRoot) || !validIdentity(body.ledger)
|
|
257
|
+
|| body.ledgerSchemaVersion !== 9 || typeof body.schemaSha256 !== 'string' || !hex.test(body.schemaSha256))
|
|
258
|
+
fail('seal body differs');
|
|
259
|
+
return body.kind;
|
|
260
|
+
}
|
|
261
|
+
finally {
|
|
262
|
+
closeSync(fd);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/** Publish a fresh seal over a staging state tree. Unlike preparation this
|
|
266
|
+
* never inspects the result against the logical locations: the staging nodes
|
|
267
|
+
* reach their live paths only after the orchestrator's atomic rename. The new
|
|
268
|
+
* seal binds logical path strings to the physical staging identities that the
|
|
269
|
+
* rename preserves. */
|
|
270
|
+
export function resealLinuxRunnerState(input) {
|
|
271
|
+
if (!input || typeof input !== 'object' || Object.getPrototypeOf(input) !== Object.prototype
|
|
272
|
+
|| Reflect.ownKeys(input).some(key => !['stateRoot', 'sealPath', 'kind', 'logicalStateRoot', 'logicalSealPath', 'requireEmpty'].includes(String(key)))
|
|
273
|
+
|| !['repository', 'verification'].includes(input.kind)
|
|
274
|
+
|| (input.requireEmpty !== undefined && typeof input.requireEmpty !== 'boolean')
|
|
275
|
+
|| (input.logicalStateRoot !== undefined && !canonical(input.logicalStateRoot))
|
|
276
|
+
|| (input.logicalSealPath !== undefined && !canonical(input.logicalSealPath)))
|
|
277
|
+
fail('invalid reseal input');
|
|
278
|
+
const logicalStateRoot = input.logicalStateRoot ?? input.stateRoot;
|
|
279
|
+
const logicalSealPath = input.logicalSealPath ?? input.sealPath;
|
|
280
|
+
locations(input.stateRoot, input.sealPath, input.kind);
|
|
281
|
+
if (!canonical(logicalStateRoot) || !canonical(logicalSealPath)
|
|
282
|
+
|| logicalSealPath === logicalStateRoot || logicalSealPath.startsWith(logicalStateRoot + sep)
|
|
283
|
+
|| logicalStateRoot.startsWith(logicalSealPath + sep))
|
|
284
|
+
fail('invalid logical state or seal binding');
|
|
285
|
+
const root = privateDirectory(input.stateRoot);
|
|
286
|
+
const ledgerPath = join(input.stateRoot, 'ledger.sqlite');
|
|
287
|
+
const requireEmpty = input.requireEmpty === true;
|
|
288
|
+
if (requireEmpty) {
|
|
289
|
+
if (readdirSync(input.stateRoot).some(name => !['ledger.sqlite', 'ledger.sqlite-wal', 'ledger.sqlite-shm'].includes(name)))
|
|
290
|
+
fail('unsealed state is not an empty preparation');
|
|
291
|
+
noPendingWal(ledgerPath);
|
|
292
|
+
if (!exists(ledgerPath)) {
|
|
293
|
+
if (readdirSync(input.stateRoot).length)
|
|
294
|
+
fail('unsealed ledger is missing');
|
|
295
|
+
const reserved = openSync(ledgerPath, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
|
|
296
|
+
closeSync(reserved);
|
|
297
|
+
const ledger = new IsolationLedger(ledgerPath);
|
|
298
|
+
ledger.close();
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else if (!exists(ledgerPath))
|
|
302
|
+
fail('migrated ledger is missing');
|
|
303
|
+
if (exists(input.sealPath)) {
|
|
304
|
+
if (tolerantSealKind(input.sealPath) !== input.kind)
|
|
305
|
+
fail('existing seal purpose differs');
|
|
306
|
+
unlinkSync(input.sealPath);
|
|
307
|
+
}
|
|
308
|
+
const schemaSha256 = requireEmpty ? emptySchema(ledgerPath) : linuxRunnerStateSchemaDigest(ledgerPath);
|
|
309
|
+
const ledger = privateFile(ledgerPath);
|
|
310
|
+
const stateIdentity = { path: logicalStateRoot, dev: root.dev, ino: root.ino };
|
|
311
|
+
const ledgerIdentity = { path: join(logicalStateRoot, 'ledger.sqlite'), dev: ledger.dev, ino: ledger.ino };
|
|
312
|
+
syncFile(ledgerPath);
|
|
313
|
+
syncFile(input.stateRoot, true);
|
|
314
|
+
const body = { schemaVersion: 1, protocol: 'dsh-linux-runner-state/v1', id: randomUUID(),
|
|
315
|
+
kind: input.kind, uid: owner(), stateRoot: stateIdentity, ledger: ledgerIdentity,
|
|
316
|
+
ledgerSchemaVersion: 9, schemaSha256 };
|
|
317
|
+
const bytes = Buffer.from(JSON.stringify(body) + '\n'), temporary = join(dirname(input.sealPath), `.${randomUUID()}.tmp`);
|
|
318
|
+
const fd = openSync(temporary, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
|
|
319
|
+
try {
|
|
320
|
+
writeFileSync(fd, bytes);
|
|
321
|
+
fsyncSync(fd);
|
|
322
|
+
// link is an atomic no-replace publication; a raced seal is never overwritten.
|
|
323
|
+
linkSync(temporary, input.sealPath);
|
|
324
|
+
}
|
|
325
|
+
finally {
|
|
326
|
+
closeSync(fd);
|
|
327
|
+
unlinkSync(temporary);
|
|
328
|
+
}
|
|
329
|
+
syncFile(dirname(input.sealPath), true);
|
|
330
|
+
return Object.freeze({ path: logicalSealPath, sha256: sha(bytes) });
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=linux-runner-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linux-runner-state.js","sourceRoot":"","sources":["../src/linux-runner-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface FrozenLinuxRuntimeSource {
|
|
2
|
+
version: string;
|
|
3
|
+
sourceCommit: string;
|
|
4
|
+
manifests: readonly {
|
|
5
|
+
path: string;
|
|
6
|
+
bytes: Uint8Array;
|
|
7
|
+
}[];
|
|
8
|
+
}
|
|
9
|
+
export type LinuxRuntimeSourceInput = {
|
|
10
|
+
kind: 'git-object';
|
|
11
|
+
repository: string;
|
|
12
|
+
commit: string;
|
|
13
|
+
version: string;
|
|
14
|
+
} | {
|
|
15
|
+
kind: 'local-head';
|
|
16
|
+
repository: string;
|
|
17
|
+
version: string;
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'official-tag';
|
|
20
|
+
version: string;
|
|
21
|
+
};
|
|
22
|
+
/** Copy every caller-owned byte before any asynchronous boundary. No caller digest is trusted. */
|
|
23
|
+
export declare function copyLinuxRuntimeManifests(source: FrozenLinuxRuntimeSource): Map<string, Buffer>;
|
|
24
|
+
/** Only fixed Git blobs are read. No checkout, package script, repair branch or RSI workspace is created. */
|
|
25
|
+
export declare function freezeLinuxRuntimeSource(input: LinuxRuntimeSourceInput & {
|
|
26
|
+
signal?: AbortSignal;
|
|
27
|
+
}): Promise<FrozenLinuxRuntimeSource>;
|
|
28
|
+
//# sourceMappingURL=linux-runtime-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linux-runtime-source.d.ts","sourceRoot":"","sources":["../src/linux-runtime-source.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE,EAAE,CAAA;CAC1D;AACD,MAAM,MAAM,uBAAuB,GAC/B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAgC7C,kGAAkG;AAClG,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,wBAAwB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA8D/F;AA+BD,6GAA6G;AAC7G,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,GAAG;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAqC3I"}
|