paseo-agy-acp 2.2.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/CHANGELOG.md +296 -0
- package/LICENSE +201 -0
- package/README.md +571 -0
- package/README.zh-CN.md +540 -0
- package/assets/official-kernel-compat/rc01/paseo_model_compat.py +172 -0
- package/dist/ACP Connector/acp/session/paseo-context.d.ts +6 -0
- package/dist/ACP Connector/acp/session/paseo-context.js +83 -0
- package/dist/ACP Connector/acp/session/paseo-context.js.map +1 -0
- package/dist/ACP Connector/acp/session/turn-scheduler.d.ts +90 -0
- package/dist/ACP Connector/acp/session/turn-scheduler.js +247 -0
- package/dist/ACP Connector/acp/session/turn-scheduler.js.map +1 -0
- package/dist/ACP Connector/admission/dispatch-boundary.d.ts +19 -0
- package/dist/ACP Connector/admission/dispatch-boundary.js +16 -0
- package/dist/ACP Connector/admission/dispatch-boundary.js.map +1 -0
- package/dist/ACP Connector/admission/errors.d.ts +18 -0
- package/dist/ACP Connector/admission/errors.js +46 -0
- package/dist/ACP Connector/admission/errors.js.map +1 -0
- package/dist/ACP Connector/admission/owner-instance.d.ts +31 -0
- package/dist/ACP Connector/admission/owner-instance.js +105 -0
- package/dist/ACP Connector/admission/owner-instance.js.map +1 -0
- package/dist/ACP Connector/admission/runtime.d.ts +20 -0
- package/dist/ACP Connector/admission/runtime.js +157 -0
- package/dist/ACP Connector/admission/runtime.js.map +1 -0
- package/dist/ACP Connector/admission/startup-recovery.d.ts +22 -0
- package/dist/ACP Connector/admission/startup-recovery.js +129 -0
- package/dist/ACP Connector/admission/startup-recovery.js.map +1 -0
- package/dist/ACP Connector/admission/turn-coordinator.d.ts +57 -0
- package/dist/ACP Connector/admission/turn-coordinator.js +369 -0
- package/dist/ACP Connector/admission/turn-coordinator.js.map +1 -0
- package/dist/ACP Connector/agent.d.ts +4 -0
- package/dist/ACP Connector/agent.js +6 -0
- package/dist/ACP Connector/agent.js.map +1 -0
- package/dist/ACP Connector/main.d.ts +2 -0
- package/dist/ACP Connector/main.js +31 -0
- package/dist/ACP Connector/main.js.map +1 -0
- package/dist/ACP Connector/official-kernel/admission-fence.d.ts +10 -0
- package/dist/ACP Connector/official-kernel/admission-fence.js +52 -0
- package/dist/ACP Connector/official-kernel/admission-fence.js.map +1 -0
- package/dist/ACP Connector/official-kernel/context.d.ts +3 -0
- package/dist/ACP Connector/official-kernel/context.js +52 -0
- package/dist/ACP Connector/official-kernel/context.js.map +1 -0
- package/dist/ACP Connector/official-kernel/errors.d.ts +5 -0
- package/dist/ACP Connector/official-kernel/errors.js +39 -0
- package/dist/ACP Connector/official-kernel/errors.js.map +1 -0
- package/dist/ACP Connector/official-kernel/identity.d.ts +3 -0
- package/dist/ACP Connector/official-kernel/identity.js +17 -0
- package/dist/ACP Connector/official-kernel/identity.js.map +1 -0
- package/dist/ACP Connector/official-kernel/json-rpc.d.ts +34 -0
- package/dist/ACP Connector/official-kernel/json-rpc.js +26 -0
- package/dist/ACP Connector/official-kernel/json-rpc.js.map +1 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-lifecycle.d.ts +115 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-lifecycle.js +1904 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-lifecycle.js.map +1 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-pins.d.ts +14 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-pins.js +29 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-pins.js.map +1 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-rc01-recipe.d.ts +2 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-rc01-recipe.js +32 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-rc01-recipe.js.map +1 -0
- package/dist/ACP Connector/official-kernel/kernel.d.ts +3 -0
- package/dist/ACP Connector/official-kernel/kernel.js +12 -0
- package/dist/ACP Connector/official-kernel/kernel.js.map +1 -0
- package/dist/ACP Connector/official-kernel/login.d.ts +1 -0
- package/dist/ACP Connector/official-kernel/login.js +73 -0
- package/dist/ACP Connector/official-kernel/login.js.map +1 -0
- package/dist/ACP Connector/official-kernel/mcp-rewrite.d.ts +1 -0
- package/dist/ACP Connector/official-kernel/mcp-rewrite.js +39 -0
- package/dist/ACP Connector/official-kernel/mcp-rewrite.js.map +1 -0
- package/dist/ACP Connector/official-kernel/mode-map.d.ts +5 -0
- package/dist/ACP Connector/official-kernel/mode-map.js +35 -0
- package/dist/ACP Connector/official-kernel/mode-map.js.map +1 -0
- package/dist/ACP Connector/official-kernel/ndjson.d.ts +3 -0
- package/dist/ACP Connector/official-kernel/ndjson.js +29 -0
- package/dist/ACP Connector/official-kernel/ndjson.js.map +1 -0
- package/dist/ACP Connector/official-kernel/proxy.d.ts +14 -0
- package/dist/ACP Connector/official-kernel/proxy.js +197 -0
- package/dist/ACP Connector/official-kernel/proxy.js.map +1 -0
- package/dist/ACP Connector/official-kernel/run.d.ts +8 -0
- package/dist/ACP Connector/official-kernel/run.js +22 -0
- package/dist/ACP Connector/official-kernel/run.js.map +1 -0
- package/dist/ACP Connector/official-kernel/spawn.d.ts +5 -0
- package/dist/ACP Connector/official-kernel/spawn.js +33 -0
- package/dist/ACP Connector/official-kernel/spawn.js.map +1 -0
- package/dist/Admission Controller/controller.d.ts +338 -0
- package/dist/Admission Controller/controller.js +2089 -0
- package/dist/Admission Controller/controller.js.map +1 -0
- package/dist/Admission Controller/key-derivation.d.ts +24 -0
- package/dist/Admission Controller/key-derivation.js +141 -0
- package/dist/Admission Controller/key-derivation.js.map +1 -0
- package/dist/Admission Controller/key-store.d.ts +8 -0
- package/dist/Admission Controller/key-store.js +280 -0
- package/dist/Admission Controller/key-store.js.map +1 -0
- package/dist/Admission Controller/policy-limits.d.ts +6 -0
- package/dist/Admission Controller/policy-limits.js +11 -0
- package/dist/Admission Controller/policy-limits.js.map +1 -0
- package/dist/Admission Controller/process-evidence.d.ts +111 -0
- package/dist/Admission Controller/process-evidence.js +549 -0
- package/dist/Admission Controller/process-evidence.js.map +1 -0
- package/dist/Admission Controller/runtime-config.d.ts +23 -0
- package/dist/Admission Controller/runtime-config.js +86 -0
- package/dist/Admission Controller/runtime-config.js.map +1 -0
- package/dist/Admission Controller/schema.d.ts +12 -0
- package/dist/Admission Controller/schema.js +422 -0
- package/dist/Admission Controller/schema.js.map +1 -0
- package/package.json +72 -0
- package/scripts/prepare-admission-state-dir.mjs +62 -0
- package/scripts/prepare-official-kernel-compat.mjs +387 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-evidence.js","sourceRoot":"","sources":["../../Admission Controller/process-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AdmissionPolicy } from "./controller.js";
|
|
2
|
+
export type AdmissionRuntimeEnvironment = Readonly<Record<string, string | undefined>>;
|
|
3
|
+
export interface DisabledAdmissionRuntimeConfig {
|
|
4
|
+
readonly enabled: false;
|
|
5
|
+
}
|
|
6
|
+
export interface EnabledAdmissionRuntimeConfig {
|
|
7
|
+
readonly enabled: true;
|
|
8
|
+
readonly agentId: string;
|
|
9
|
+
readonly stateDir: string;
|
|
10
|
+
readonly databasePath: string;
|
|
11
|
+
readonly policy: Readonly<AdmissionPolicy>;
|
|
12
|
+
}
|
|
13
|
+
export type AdmissionRuntimeConfig = DisabledAdmissionRuntimeConfig | EnabledAdmissionRuntimeConfig;
|
|
14
|
+
export declare class AdmissionRuntimeConfigError extends Error {
|
|
15
|
+
constructor(message: string);
|
|
16
|
+
}
|
|
17
|
+
export declare const DEFAULT_ADMISSION_POLICY: Readonly<AdmissionPolicy>;
|
|
18
|
+
/**
|
|
19
|
+
* Parse the future admission runtime's environment without creating state or
|
|
20
|
+
* opening the controller. State-directory creation and permission checks stay
|
|
21
|
+
* with the later runtime factory and key store.
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseAdmissionRuntimeConfig(environment?: AdmissionRuntimeEnvironment): AdmissionRuntimeConfig;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { isAbsolute, join } from "node:path";
|
|
2
|
+
import { DEFAULT_ADMISSION_ACTIVE_TURNS, DEFAULT_ADMISSION_CONCURRENT_STARTS, isAllowedAdmissionActiveTurns, isAllowedAdmissionConcurrentStarts } from "./policy-limits.js";
|
|
3
|
+
export class AdmissionRuntimeConfigError extends Error {
|
|
4
|
+
constructor(message) {
|
|
5
|
+
super(`admission runtime configuration error: ${message}`);
|
|
6
|
+
this.name = "AdmissionRuntimeConfigError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export const DEFAULT_ADMISSION_POLICY = Object.freeze({
|
|
10
|
+
maxActiveTurns: DEFAULT_ADMISSION_ACTIVE_TURNS,
|
|
11
|
+
maxConcurrentStarts: DEFAULT_ADMISSION_CONCURRENT_STARTS,
|
|
12
|
+
minStartIntervalMs: 2_000,
|
|
13
|
+
queueTimeoutMs: 30 * 60 * 1_000,
|
|
14
|
+
capacityCooldownMs: 30_000
|
|
15
|
+
});
|
|
16
|
+
const DISABLED_CONFIG = Object.freeze({ enabled: false });
|
|
17
|
+
const POLICY_ENV = {
|
|
18
|
+
maxActiveTurns: "AGY_ACP_ADMISSION_MAX_ACTIVE_TURNS",
|
|
19
|
+
maxConcurrentStarts: "AGY_ACP_ADMISSION_MAX_CONCURRENT_STARTS",
|
|
20
|
+
minStartIntervalMs: "AGY_ACP_ADMISSION_MIN_START_INTERVAL_MS",
|
|
21
|
+
queueTimeoutMs: "AGY_ACP_ADMISSION_QUEUE_TIMEOUT_MS",
|
|
22
|
+
capacityCooldownMs: "AGY_ACP_ADMISSION_CAPACITY_COOLDOWN_MS"
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Parse the future admission runtime's environment without creating state or
|
|
26
|
+
* opening the controller. State-directory creation and permission checks stay
|
|
27
|
+
* with the later runtime factory and key store.
|
|
28
|
+
*/
|
|
29
|
+
export function parseAdmissionRuntimeConfig(environment = process.env) {
|
|
30
|
+
if (!isAdmissionExplicitlyEnabled(environment.AGY_ACP_ADMISSION_ENABLED)) {
|
|
31
|
+
return DISABLED_CONFIG;
|
|
32
|
+
}
|
|
33
|
+
const stateDir = requireAbsoluteStateDirectory(environment.AGY_ACP_STATE_DIR);
|
|
34
|
+
const agentId = requirePaseoAgentId(environment.PASEO_AGENT_ID);
|
|
35
|
+
const policy = Object.freeze({
|
|
36
|
+
maxActiveTurns: parsePolicyOverride(environment, POLICY_ENV.maxActiveTurns, DEFAULT_ADMISSION_POLICY.maxActiveTurns, isAllowedAdmissionActiveTurns),
|
|
37
|
+
maxConcurrentStarts: parsePolicyOverride(environment, POLICY_ENV.maxConcurrentStarts, DEFAULT_ADMISSION_POLICY.maxConcurrentStarts, isAllowedAdmissionConcurrentStarts),
|
|
38
|
+
minStartIntervalMs: parsePolicyOverride(environment, POLICY_ENV.minStartIntervalMs, DEFAULT_ADMISSION_POLICY.minStartIntervalMs, (value) => value >= DEFAULT_ADMISSION_POLICY.minStartIntervalMs),
|
|
39
|
+
queueTimeoutMs: parsePolicyOverride(environment, POLICY_ENV.queueTimeoutMs, DEFAULT_ADMISSION_POLICY.queueTimeoutMs, (value) => value > 0 && value <= DEFAULT_ADMISSION_POLICY.queueTimeoutMs),
|
|
40
|
+
capacityCooldownMs: parsePolicyOverride(environment, POLICY_ENV.capacityCooldownMs, DEFAULT_ADMISSION_POLICY.capacityCooldownMs, (value) => value >= DEFAULT_ADMISSION_POLICY.capacityCooldownMs)
|
|
41
|
+
});
|
|
42
|
+
return Object.freeze({
|
|
43
|
+
enabled: true,
|
|
44
|
+
agentId,
|
|
45
|
+
stateDir,
|
|
46
|
+
databasePath: join(stateDir, "runtime.sqlite"),
|
|
47
|
+
policy
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function requirePaseoAgentId(value) {
|
|
51
|
+
if (typeof value !== "string" ||
|
|
52
|
+
!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/.test(value)) {
|
|
53
|
+
throw new AdmissionRuntimeConfigError("PASEO_AGENT_ID is required when admission is enabled");
|
|
54
|
+
}
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
function isAdmissionExplicitlyEnabled(value) {
|
|
58
|
+
if (value === undefined || value === "" || value === "0" || value === "false")
|
|
59
|
+
return false;
|
|
60
|
+
if (value === "1" || value === "true")
|
|
61
|
+
return true;
|
|
62
|
+
throw new AdmissionRuntimeConfigError("AGY_ACP_ADMISSION_ENABLED must be one of 1, true, 0, or false");
|
|
63
|
+
}
|
|
64
|
+
function requireAbsoluteStateDirectory(value) {
|
|
65
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
66
|
+
throw new AdmissionRuntimeConfigError("AGY_ACP_STATE_DIR is required when admission is enabled");
|
|
67
|
+
}
|
|
68
|
+
if (value.includes("\0") || !isAbsolute(value)) {
|
|
69
|
+
throw new AdmissionRuntimeConfigError("AGY_ACP_STATE_DIR must be an absolute path");
|
|
70
|
+
}
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
function parsePolicyOverride(environment, name, fallback, isConservative) {
|
|
74
|
+
const raw = environment[name];
|
|
75
|
+
if (raw === undefined)
|
|
76
|
+
return fallback;
|
|
77
|
+
if (!/^(?:0|[1-9]\d*)$/.test(raw)) {
|
|
78
|
+
throw new AdmissionRuntimeConfigError(`${name} must be a base-10 integer`);
|
|
79
|
+
}
|
|
80
|
+
const value = Number(raw);
|
|
81
|
+
if (!Number.isSafeInteger(value) || !isConservative(value)) {
|
|
82
|
+
throw new AdmissionRuntimeConfigError(`${name} is not a conservative admission policy value`);
|
|
83
|
+
}
|
|
84
|
+
return value;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=runtime-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../../Admission Controller/runtime-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
/** The newest AdmissionController schema this connector can safely use. */
|
|
3
|
+
export declare const ADMISSION_SCHEMA_VERSION = 3;
|
|
4
|
+
/** Raised when an admission database is not exactly the supported schema. */
|
|
5
|
+
export declare class SchemaIntegrityError extends Error {
|
|
6
|
+
constructor(detail: string);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Performs no migration or repair. Callers must enable foreign keys before
|
|
10
|
+
* handing the connection to this guard; any mismatch fails closed.
|
|
11
|
+
*/
|
|
12
|
+
export declare function assertAdmissionSchemaIntegrity(db: Database.Database): void;
|
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
/** The newest AdmissionController schema this connector can safely use. */
|
|
2
|
+
export const ADMISSION_SCHEMA_VERSION = 3;
|
|
3
|
+
/** Raised when an admission database is not exactly the supported schema. */
|
|
4
|
+
export class SchemaIntegrityError extends Error {
|
|
5
|
+
constructor(detail) {
|
|
6
|
+
super(`admission schema integrity check failed: ${detail}`);
|
|
7
|
+
this.name = "SchemaIntegrityError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const MIGRATIONS = [
|
|
11
|
+
{ version: 1, name: "shared-admission-queue" },
|
|
12
|
+
{ version: 2, name: "shared-admission-queue-v2" },
|
|
13
|
+
{ version: 3, name: "shared-admission-queue-v3" }
|
|
14
|
+
];
|
|
15
|
+
const TABLES = [
|
|
16
|
+
{
|
|
17
|
+
name: "schema_migrations",
|
|
18
|
+
columns: [
|
|
19
|
+
column("version", "INTEGER", false, 1),
|
|
20
|
+
column("name", "TEXT", true),
|
|
21
|
+
column("applied_at", "INTEGER", true)
|
|
22
|
+
],
|
|
23
|
+
foreignKeys: [],
|
|
24
|
+
namedIndexes: [],
|
|
25
|
+
uniqueConstraints: []
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "turn_requests",
|
|
29
|
+
columns: [
|
|
30
|
+
column("request_id", "TEXT", false, 1),
|
|
31
|
+
column("session_id", "TEXT", true),
|
|
32
|
+
column("agent_id", "TEXT", true),
|
|
33
|
+
column("fingerprint", "TEXT", true),
|
|
34
|
+
column("provider", "TEXT", true),
|
|
35
|
+
column("model", "TEXT", true),
|
|
36
|
+
column("state", "TEXT", true),
|
|
37
|
+
column("enqueued_at", "INTEGER", true),
|
|
38
|
+
column("deadline_at", "INTEGER", true),
|
|
39
|
+
column("lease_generation", "INTEGER", true, 0, "0"),
|
|
40
|
+
column("terminal_at", "INTEGER", false),
|
|
41
|
+
column("queued_owner_instance_id", "TEXT", false),
|
|
42
|
+
column("queued_owner_recorded_at", "INTEGER", false)
|
|
43
|
+
],
|
|
44
|
+
foreignKeys: [],
|
|
45
|
+
namedIndexes: [
|
|
46
|
+
index("turn_requests_queue", ["state", "enqueued_at"]),
|
|
47
|
+
index("turn_requests_queued_owner", ["queued_owner_instance_id"], [], false, true)
|
|
48
|
+
],
|
|
49
|
+
uniqueConstraints: []
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "leases",
|
|
53
|
+
columns: [
|
|
54
|
+
column("lease_id", "TEXT", false, 1),
|
|
55
|
+
column("request_id", "TEXT", true),
|
|
56
|
+
column("generation", "INTEGER", true),
|
|
57
|
+
column("owner_instance_id", "TEXT", true),
|
|
58
|
+
column("phase", "TEXT", true),
|
|
59
|
+
column("acquired_at", "INTEGER", true),
|
|
60
|
+
column("heartbeat_at", "INTEGER", true),
|
|
61
|
+
column("suspect_since", "INTEGER", false),
|
|
62
|
+
column("suspect_reason", "TEXT", false)
|
|
63
|
+
],
|
|
64
|
+
foreignKeys: [foreignKey("request_id", "turn_requests", "request_id")],
|
|
65
|
+
namedIndexes: [index("leases_phase", ["phase"])],
|
|
66
|
+
uniqueConstraints: [["request_id"]],
|
|
67
|
+
requiredSqlFragments: [
|
|
68
|
+
"suspect_reason TEXT CHECK (suspect_reason IS NULL OR suspect_reason IN ('heartbeat_expired', 'identity_unverifiable'))"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "cooldowns",
|
|
73
|
+
columns: [
|
|
74
|
+
column("provider", "TEXT", true, 1),
|
|
75
|
+
column("model", "TEXT", true, 2),
|
|
76
|
+
column("not_before", "INTEGER", true),
|
|
77
|
+
column("updated_at", "INTEGER", true)
|
|
78
|
+
],
|
|
79
|
+
foreignKeys: [],
|
|
80
|
+
namedIndexes: [],
|
|
81
|
+
uniqueConstraints: []
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
name: "turn_payloads",
|
|
85
|
+
columns: [
|
|
86
|
+
column("request_id", "TEXT", false, 1),
|
|
87
|
+
column("nonce", "BLOB", true),
|
|
88
|
+
column("ciphertext", "BLOB", true),
|
|
89
|
+
column("auth_tag", "BLOB", true),
|
|
90
|
+
column("key_version", "INTEGER", true),
|
|
91
|
+
column("content_fingerprint", "TEXT", true),
|
|
92
|
+
column("expires_at", "INTEGER", true),
|
|
93
|
+
column("created_at", "INTEGER", true)
|
|
94
|
+
],
|
|
95
|
+
foreignKeys: [foreignKey("request_id", "turn_requests", "request_id", "CASCADE")],
|
|
96
|
+
namedIndexes: [],
|
|
97
|
+
uniqueConstraints: []
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: "lease_process_identities",
|
|
101
|
+
columns: [
|
|
102
|
+
column("lease_id", "TEXT", false, 1),
|
|
103
|
+
column("request_id", "TEXT", true),
|
|
104
|
+
column("lease_generation", "INTEGER", true),
|
|
105
|
+
column("owner_instance_id", "TEXT", true),
|
|
106
|
+
column("prompt_channel", "TEXT", true),
|
|
107
|
+
column("connector_owner_instance_id", "TEXT", true),
|
|
108
|
+
column("connector_created_at", "TEXT", true),
|
|
109
|
+
column("connector_boot_id", "TEXT", true),
|
|
110
|
+
column("connector_pid", "INTEGER", true),
|
|
111
|
+
column("connector_start_time_ticks", "TEXT", true),
|
|
112
|
+
column("connector_pid_namespace_inode", "INTEGER", true),
|
|
113
|
+
column("connector_ppid", "INTEGER", true),
|
|
114
|
+
column("connector_pgrp", "INTEGER", true),
|
|
115
|
+
column("connector_session", "INTEGER", true),
|
|
116
|
+
column("child_boot_id", "TEXT", true),
|
|
117
|
+
column("child_pid", "INTEGER", true),
|
|
118
|
+
column("child_start_time_ticks", "TEXT", true),
|
|
119
|
+
column("child_pid_namespace_inode", "INTEGER", true),
|
|
120
|
+
column("child_ppid", "INTEGER", true),
|
|
121
|
+
column("child_pgrp", "INTEGER", true),
|
|
122
|
+
column("child_session", "INTEGER", true),
|
|
123
|
+
column("recorded_at", "INTEGER", true)
|
|
124
|
+
],
|
|
125
|
+
foreignKeys: [
|
|
126
|
+
foreignKey("lease_id", "leases", "lease_id", "CASCADE"),
|
|
127
|
+
foreignKey("request_id", "turn_requests", "request_id")
|
|
128
|
+
],
|
|
129
|
+
namedIndexes: [index("lease_process_identities_request", ["request_id"], [], true)],
|
|
130
|
+
uniqueConstraints: []
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: "start_history",
|
|
134
|
+
columns: [column("lease_id", "TEXT", false, 1), column("started_at", "INTEGER", true)],
|
|
135
|
+
foreignKeys: [],
|
|
136
|
+
namedIndexes: [index("start_history_started", ["started_at"])],
|
|
137
|
+
uniqueConstraints: []
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
name: "policy_state",
|
|
141
|
+
columns: [
|
|
142
|
+
column("id", "INTEGER", false, 1),
|
|
143
|
+
column("max_active_turns", "INTEGER", true),
|
|
144
|
+
column("max_concurrent_starts", "INTEGER", true),
|
|
145
|
+
column("min_start_interval_ms", "INTEGER", true),
|
|
146
|
+
column("queue_timeout_ms", "INTEGER", true),
|
|
147
|
+
column("capacity_cooldown_ms", "INTEGER", true),
|
|
148
|
+
column("drain_state", "TEXT", true),
|
|
149
|
+
column("policy_fingerprint", "TEXT", true),
|
|
150
|
+
column("updated_at", "INTEGER", true),
|
|
151
|
+
column("updated_by_owner_instance_id", "TEXT", true)
|
|
152
|
+
],
|
|
153
|
+
foreignKeys: [],
|
|
154
|
+
namedIndexes: [],
|
|
155
|
+
uniqueConstraints: [],
|
|
156
|
+
requiredSqlFragments: [
|
|
157
|
+
"id INTEGER PRIMARY KEY CHECK (id = 1)",
|
|
158
|
+
"max_active_turns INTEGER NOT NULL CHECK (max_active_turns >= 1)",
|
|
159
|
+
"max_concurrent_starts INTEGER NOT NULL CHECK (max_concurrent_starts >= 1)",
|
|
160
|
+
"min_start_interval_ms INTEGER NOT NULL CHECK (min_start_interval_ms >= 2000)",
|
|
161
|
+
"queue_timeout_ms INTEGER NOT NULL CHECK (queue_timeout_ms > 0 AND queue_timeout_ms <= 1800000)",
|
|
162
|
+
"capacity_cooldown_ms INTEGER NOT NULL CHECK (capacity_cooldown_ms >= 30000)",
|
|
163
|
+
"drain_state TEXT NOT NULL CHECK (drain_state IN ('steady', 'soft_draining_to_1'))"
|
|
164
|
+
]
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
name: "queued_owner_instances",
|
|
168
|
+
columns: [
|
|
169
|
+
column("owner_instance_id", "TEXT", false, 1),
|
|
170
|
+
column("created_at", "TEXT", true),
|
|
171
|
+
column("boot_id", "TEXT", true),
|
|
172
|
+
column("pid", "INTEGER", true),
|
|
173
|
+
column("start_time_ticks", "TEXT", true),
|
|
174
|
+
column("pid_namespace_inode", "INTEGER", true),
|
|
175
|
+
column("ppid", "INTEGER", true),
|
|
176
|
+
column("pgrp", "INTEGER", true),
|
|
177
|
+
column("session", "INTEGER", true),
|
|
178
|
+
column("recorded_at", "INTEGER", true)
|
|
179
|
+
],
|
|
180
|
+
foreignKeys: [],
|
|
181
|
+
namedIndexes: [],
|
|
182
|
+
uniqueConstraints: []
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
name: "sessions",
|
|
186
|
+
columns: [
|
|
187
|
+
column("session_id", "TEXT", true, 1),
|
|
188
|
+
column("conversation_id", "TEXT", false),
|
|
189
|
+
column("conversation_cursor", "INTEGER", true),
|
|
190
|
+
column("model", "TEXT", true),
|
|
191
|
+
column("effort", "TEXT", true),
|
|
192
|
+
column("mode", "TEXT", true),
|
|
193
|
+
column("cwd", "TEXT", true),
|
|
194
|
+
column("roots_json", "TEXT", true),
|
|
195
|
+
column("v2_user_message_ids_json", "TEXT", true),
|
|
196
|
+
column("updated_at", "INTEGER", true)
|
|
197
|
+
],
|
|
198
|
+
foreignKeys: [],
|
|
199
|
+
namedIndexes: [
|
|
200
|
+
index("sessions_updated_at_session_id", ["updated_at", "session_id"], [true, false]),
|
|
201
|
+
index("sessions_cwd_updated_at_session_id", ["cwd", "updated_at", "session_id"], [false, true, false])
|
|
202
|
+
],
|
|
203
|
+
uniqueConstraints: []
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
name: "events",
|
|
207
|
+
columns: [
|
|
208
|
+
column("event_seq", "INTEGER", false, 1),
|
|
209
|
+
column("kind", "TEXT", true),
|
|
210
|
+
column("from_state", "TEXT", true),
|
|
211
|
+
column("to_state", "TEXT", true),
|
|
212
|
+
column("occurred_at", "INTEGER", true),
|
|
213
|
+
column("correlation_hmac", "TEXT", true)
|
|
214
|
+
],
|
|
215
|
+
foreignKeys: [],
|
|
216
|
+
namedIndexes: [index("events_occurred", ["occurred_at", "event_seq"])],
|
|
217
|
+
uniqueConstraints: [],
|
|
218
|
+
requiredSqlFragments: ["event_seq INTEGER PRIMARY KEY AUTOINCREMENT"]
|
|
219
|
+
}
|
|
220
|
+
];
|
|
221
|
+
/**
|
|
222
|
+
* Performs no migration or repair. Callers must enable foreign keys before
|
|
223
|
+
* handing the connection to this guard; any mismatch fails closed.
|
|
224
|
+
*/
|
|
225
|
+
export function assertAdmissionSchemaIntegrity(db) {
|
|
226
|
+
try {
|
|
227
|
+
assertForeignKeysEnabled(db);
|
|
228
|
+
assertNoUnexpectedTables(db);
|
|
229
|
+
for (const table of TABLES) {
|
|
230
|
+
assertTable(db, table);
|
|
231
|
+
assertColumns(db, table);
|
|
232
|
+
assertTableDefinition(db, table);
|
|
233
|
+
assertForeignKeys(db, table);
|
|
234
|
+
assertIndexes(db, table);
|
|
235
|
+
}
|
|
236
|
+
assertMigrationLedger(db);
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
if (error instanceof SchemaIntegrityError)
|
|
240
|
+
throw error;
|
|
241
|
+
throw new SchemaIntegrityError("SQLite metadata could not be inspected");
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
function assertNoUnexpectedTables(db) {
|
|
245
|
+
const expected = new Set(TABLES.map((table) => table.name));
|
|
246
|
+
const rows = db
|
|
247
|
+
.prepare("SELECT name FROM sqlite_schema WHERE type = 'table' AND name NOT LIKE 'sqlite_%'")
|
|
248
|
+
.all();
|
|
249
|
+
for (const row of rows) {
|
|
250
|
+
if (typeof row.name !== "string" || !expected.has(row.name)) {
|
|
251
|
+
fail(`unexpected table ${typeof row.name === "string" ? row.name : "unknown"} is present`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
function column(name, type, notNull, primaryKeyPosition = 0, defaultValue = null) {
|
|
256
|
+
return { name, type, notNull, primaryKeyPosition, defaultValue };
|
|
257
|
+
}
|
|
258
|
+
function foreignKey(from, table, to, onDelete = "NO ACTION") {
|
|
259
|
+
return { from, table, to, onUpdate: "NO ACTION", onDelete, match: "NONE" };
|
|
260
|
+
}
|
|
261
|
+
function index(name, columns, descending = [], unique = false, partial = false) {
|
|
262
|
+
return {
|
|
263
|
+
name,
|
|
264
|
+
columns: columns.map((columnName, position) => ({ name: columnName, descending: descending[position] ?? false })),
|
|
265
|
+
unique,
|
|
266
|
+
partial
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
function assertForeignKeysEnabled(db) {
|
|
270
|
+
if (db.pragma("foreign_keys", { simple: true }) !== 1) {
|
|
271
|
+
fail("PRAGMA foreign_keys=ON is required");
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
function assertTable(db, expected) {
|
|
275
|
+
const tables = pragmaRows(db, `table_list(${sqlLiteral(expected.name)})`);
|
|
276
|
+
const matches = tables.filter((table) => table.schema === "main" && table.name === expected.name);
|
|
277
|
+
if (matches.length !== 1 || matches[0]?.type !== "table") {
|
|
278
|
+
fail(`required table ${expected.name} is missing or is not a table`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
function assertColumns(db, expected) {
|
|
282
|
+
const actual = pragmaRows(db, `table_info(${sqlLiteral(expected.name)})`);
|
|
283
|
+
if (actual.length !== expected.columns.length) {
|
|
284
|
+
fail(`table ${expected.name} columns do not match the schema contract`);
|
|
285
|
+
}
|
|
286
|
+
for (const [position, required] of expected.columns.entries()) {
|
|
287
|
+
const found = actual[position];
|
|
288
|
+
if (found === undefined ||
|
|
289
|
+
found.cid !== position ||
|
|
290
|
+
found.name !== required.name ||
|
|
291
|
+
found.type !== required.type ||
|
|
292
|
+
found.notnull !== Number(required.notNull) ||
|
|
293
|
+
found.pk !== required.primaryKeyPosition ||
|
|
294
|
+
found.dflt_value !== required.defaultValue) {
|
|
295
|
+
fail(`table ${expected.name} column ${required.name} does not match the schema contract`);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
function assertTableDefinition(db, expected) {
|
|
300
|
+
if (expected.requiredSqlFragments === undefined)
|
|
301
|
+
return;
|
|
302
|
+
const row = db
|
|
303
|
+
.prepare("SELECT sql FROM sqlite_schema WHERE type = 'table' AND name = ?")
|
|
304
|
+
.get(expected.name);
|
|
305
|
+
if (typeof row?.sql !== "string")
|
|
306
|
+
fail(`table ${expected.name} definition could not be inspected`);
|
|
307
|
+
const normalized = row.sql.replace(/\s+/g, " ").trim().toUpperCase();
|
|
308
|
+
for (const fragment of expected.requiredSqlFragments) {
|
|
309
|
+
if (!normalized.includes(fragment.replace(/\s+/g, " ").trim().toUpperCase())) {
|
|
310
|
+
fail(`table ${expected.name} definition does not match the schema contract`);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
function assertForeignKeys(db, expected) {
|
|
315
|
+
const actual = pragmaRows(db, `foreign_key_list(${sqlLiteral(expected.name)})`)
|
|
316
|
+
.map((foreignKey) => foreignKeySignature(foreignKey))
|
|
317
|
+
.sort();
|
|
318
|
+
const required = expected.foreignKeys.map((foreignKey) => foreignKeySignature(foreignKey)).sort();
|
|
319
|
+
if (!sameStrings(actual, required)) {
|
|
320
|
+
fail(`table ${expected.name} foreign keys do not match the schema contract`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
function assertIndexes(db, expected) {
|
|
324
|
+
const allIndexes = pragmaRows(db, `index_list(${sqlLiteral(expected.name)})`);
|
|
325
|
+
const namedIndexes = allIndexes.filter((entry) => entry.origin === "c");
|
|
326
|
+
if (namedIndexes.length !== expected.namedIndexes.length) {
|
|
327
|
+
fail(`table ${expected.name} named indexes do not match the schema contract`);
|
|
328
|
+
}
|
|
329
|
+
for (const required of expected.namedIndexes) {
|
|
330
|
+
const found = namedIndexes.find((entry) => entry.name === required.name);
|
|
331
|
+
if (found === undefined) {
|
|
332
|
+
fail(`table ${expected.name} named indexes do not match the schema contract`);
|
|
333
|
+
}
|
|
334
|
+
if (found.unique !== Number(required.unique) || found.partial !== Number(required.partial)) {
|
|
335
|
+
fail(`table ${expected.name} index ${required.name} does not match the schema contract`);
|
|
336
|
+
}
|
|
337
|
+
assertIndexColumns(db, expected.name, required.name, required.columns);
|
|
338
|
+
}
|
|
339
|
+
const uniqueConstraints = allIndexes.filter((entry) => entry.origin === "u");
|
|
340
|
+
if (uniqueConstraints.length !== expected.uniqueConstraints.length) {
|
|
341
|
+
fail(`table ${expected.name} unique constraints do not match the schema contract`);
|
|
342
|
+
}
|
|
343
|
+
const remainingUniqueConstraints = [...uniqueConstraints];
|
|
344
|
+
for (const requiredColumns of expected.uniqueConstraints) {
|
|
345
|
+
const match = remainingUniqueConstraints.find((entry) => indexHasColumns(db, entry.name, requiredColumns.map((name) => ({ name, descending: false }))));
|
|
346
|
+
if (match === undefined || match.unique !== 1 || match.partial !== 0) {
|
|
347
|
+
fail(`table ${expected.name} unique constraints do not match the schema contract`);
|
|
348
|
+
}
|
|
349
|
+
remainingUniqueConstraints.splice(remainingUniqueConstraints.indexOf(match), 1);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
function assertIndexColumns(db, table, indexName, requiredColumns) {
|
|
353
|
+
if (!indexHasColumns(db, indexName, requiredColumns)) {
|
|
354
|
+
fail(`table ${table} index ${indexName} does not match the schema contract`);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
function indexHasColumns(db, indexName, requiredColumns) {
|
|
358
|
+
const keyColumns = pragmaRows(db, `index_xinfo(${sqlLiteral(indexName)})`)
|
|
359
|
+
.filter((column) => column.key === 1)
|
|
360
|
+
.sort((left, right) => left.seqno - right.seqno);
|
|
361
|
+
return (keyColumns.length === requiredColumns.length &&
|
|
362
|
+
keyColumns.every((column, position) => column.seqno === position &&
|
|
363
|
+
column.cid >= 0 &&
|
|
364
|
+
column.name === requiredColumns[position]?.name &&
|
|
365
|
+
column.desc === Number(requiredColumns[position]?.descending) &&
|
|
366
|
+
column.coll === "BINARY"));
|
|
367
|
+
}
|
|
368
|
+
function assertMigrationLedger(db) {
|
|
369
|
+
const rows = db
|
|
370
|
+
.prepare("SELECT version, name FROM schema_migrations ORDER BY version ASC")
|
|
371
|
+
.all();
|
|
372
|
+
const byVersion = new Map();
|
|
373
|
+
for (const row of rows) {
|
|
374
|
+
const version = migrationVersion(row.version);
|
|
375
|
+
if (version === undefined)
|
|
376
|
+
fail("migration ledger contains a non-integer version");
|
|
377
|
+
if (byVersion.has(version))
|
|
378
|
+
fail(`migration ledger contains duplicate version ${version}`);
|
|
379
|
+
byVersion.set(version, row);
|
|
380
|
+
}
|
|
381
|
+
for (const expected of MIGRATIONS) {
|
|
382
|
+
const found = byVersion.get(expected.version);
|
|
383
|
+
if (found === undefined)
|
|
384
|
+
fail(`migration ledger is missing version ${expected.version}`);
|
|
385
|
+
if (found.name !== expected.name) {
|
|
386
|
+
fail(`migration ${expected.version} must be named ${expected.name}`);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
if (byVersion.size !== MIGRATIONS.length) {
|
|
390
|
+
const unexpected = [...byVersion.keys()].find((version) => !MIGRATIONS.some((expected) => expected.version === version));
|
|
391
|
+
fail(`migration ledger has unexpected version ${unexpected ?? "unknown"}`);
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
function migrationVersion(value) {
|
|
395
|
+
if (typeof value === "number" && Number.isSafeInteger(value))
|
|
396
|
+
return value;
|
|
397
|
+
if (typeof value === "bigint" && value >= BigInt(Number.MIN_SAFE_INTEGER) && value <= BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
398
|
+
return Number(value);
|
|
399
|
+
}
|
|
400
|
+
return undefined;
|
|
401
|
+
}
|
|
402
|
+
function foreignKeySignature(foreignKey) {
|
|
403
|
+
const onUpdate = "onUpdate" in foreignKey ? foreignKey.onUpdate : foreignKey.on_update;
|
|
404
|
+
const onDelete = "onDelete" in foreignKey ? foreignKey.onDelete : foreignKey.on_delete;
|
|
405
|
+
return JSON.stringify([foreignKey.from, foreignKey.table, foreignKey.to, onUpdate, onDelete, foreignKey.match]);
|
|
406
|
+
}
|
|
407
|
+
function pragmaRows(db, source) {
|
|
408
|
+
const rows = db.pragma(source);
|
|
409
|
+
if (!Array.isArray(rows))
|
|
410
|
+
fail(`PRAGMA ${source} did not return a row set`);
|
|
411
|
+
return rows;
|
|
412
|
+
}
|
|
413
|
+
function sqlLiteral(value) {
|
|
414
|
+
return `'${value.replaceAll("'", "''")}'`;
|
|
415
|
+
}
|
|
416
|
+
function sameStrings(left, right) {
|
|
417
|
+
return left.length === right.length && left.every((value, index) => value === right[index]);
|
|
418
|
+
}
|
|
419
|
+
function fail(detail) {
|
|
420
|
+
throw new SchemaIntegrityError(detail);
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../Admission Controller/schema.ts"],"names":[],"mappings":"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"}
|