wake-bridge 0.9.0-preview.8
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 +201 -0
- package/README.md +222 -0
- package/dist/src/adapters/botlingknows.d.ts +42 -0
- package/dist/src/adapters/botlingknows.js +141 -0
- package/dist/src/adapters/botlingknows.js.map +1 -0
- package/dist/src/adapters/group-chat.d.ts +43 -0
- package/dist/src/adapters/group-chat.js +120 -0
- package/dist/src/adapters/group-chat.js.map +1 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +637 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/connector-catalog.d.ts +17 -0
- package/dist/src/connector-catalog.js +43 -0
- package/dist/src/connector-catalog.js.map +1 -0
- package/dist/src/connectors/botlingknows-mcp.d.ts +15 -0
- package/dist/src/connectors/botlingknows-mcp.js +130 -0
- package/dist/src/connectors/botlingknows-mcp.js.map +1 -0
- package/dist/src/connectors/group-chat-http.d.ts +17 -0
- package/dist/src/connectors/group-chat-http.js +226 -0
- package/dist/src/connectors/group-chat-http.js.map +1 -0
- package/dist/src/connectors/mcp-http-client.d.ts +11 -0
- package/dist/src/connectors/mcp-http-client.js +108 -0
- package/dist/src/connectors/mcp-http-client.js.map +1 -0
- package/dist/src/core.d.ts +170 -0
- package/dist/src/core.js +1720 -0
- package/dist/src/core.js.map +1 -0
- package/dist/src/daemon.d.ts +31 -0
- package/dist/src/daemon.js +605 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/db.d.ts +31 -0
- package/dist/src/db.js +513 -0
- package/dist/src/db.js.map +1 -0
- package/dist/src/event-sdk.d.ts +43 -0
- package/dist/src/event-sdk.js +152 -0
- package/dist/src/event-sdk.js.map +1 -0
- package/dist/src/host-adapter-registry.d.ts +21 -0
- package/dist/src/host-adapter-registry.js +59 -0
- package/dist/src/host-adapter-registry.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/instance-config.d.ts +46 -0
- package/dist/src/instance-config.js +176 -0
- package/dist/src/instance-config.js.map +1 -0
- package/dist/src/mcp.d.ts +51 -0
- package/dist/src/mcp.js +728 -0
- package/dist/src/mcp.js.map +1 -0
- package/dist/src/operator-control.d.ts +82 -0
- package/dist/src/operator-control.js +220 -0
- package/dist/src/operator-control.js.map +1 -0
- package/dist/src/out-of-process-host.d.ts +37 -0
- package/dist/src/out-of-process-host.js +196 -0
- package/dist/src/out-of-process-host.js.map +1 -0
- package/dist/src/policy-control.d.ts +3 -0
- package/dist/src/policy-control.js +120 -0
- package/dist/src/policy-control.js.map +1 -0
- package/dist/src/release-lifecycle.d.ts +98 -0
- package/dist/src/release-lifecycle.js +378 -0
- package/dist/src/release-lifecycle.js.map +1 -0
- package/dist/src/sdk-error.d.ts +6 -0
- package/dist/src/sdk-error.js +12 -0
- package/dist/src/sdk-error.js.map +1 -0
- package/dist/src/source-adapter.d.ts +32 -0
- package/dist/src/source-adapter.js +164 -0
- package/dist/src/source-adapter.js.map +1 -0
- package/dist/src/source-connector.d.ts +50 -0
- package/dist/src/source-connector.js +358 -0
- package/dist/src/source-connector.js.map +1 -0
- package/dist/src/source-control-client.d.ts +38 -0
- package/dist/src/source-control-client.js +61 -0
- package/dist/src/source-control-client.js.map +1 -0
- package/dist/src/source-ingress.d.ts +16 -0
- package/dist/src/source-ingress.js +47 -0
- package/dist/src/source-ingress.js.map +1 -0
- package/dist/src/source-sdk.d.ts +6 -0
- package/dist/src/source-sdk.js +53 -0
- package/dist/src/source-sdk.js.map +1 -0
- package/dist/src/transport-sdk.d.ts +102 -0
- package/dist/src/transport-sdk.js +222 -0
- package/dist/src/transport-sdk.js.map +1 -0
- package/dist/src/transport.d.ts +23 -0
- package/dist/src/transport.js +71 -0
- package/dist/src/transport.js.map +1 -0
- package/dist/src/types.d.ts +522 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/util.d.ts +26 -0
- package/dist/src/util.js +136 -0
- package/dist/src/util.js.map +1 -0
- package/dist/src/version.d.ts +1 -0
- package/dist/src/version.js +2 -0
- package/dist/src/version.js.map +1 -0
- package/docs/adapters/botlingknows.md +40 -0
- package/docs/adapters/gmail-planned.md +16 -0
- package/docs/adapters/group-chat.md +126 -0
- package/docs/operations/connector-catalog.md +40 -0
- package/docs/operations/operator-control.md +83 -0
- package/docs/operations/out-of-process-host-adapter.md +150 -0
- package/docs/operations/policies.md +106 -0
- package/docs/operations/public-sdk.md +87 -0
- package/docs/operations/release-lifecycle.md +154 -0
- package/docs/operations/source-connectors.md +163 -0
- package/docs/operations/source-ingress.md +108 -0
- package/docs/operations/templates/botlingknows-connector.env.example +5 -0
- package/docs/operations/templates/sources.json.example +15 -0
- package/docs/quickstart.md +143 -0
- package/docs/releases/0.9.0-preview.8.md +44 -0
- package/docs/verification.md +19 -0
- package/examples/policies/botlingknows-conservative.json +44 -0
- package/examples/reference-host-adapter/README.md +41 -0
- package/examples/reference-host-adapter/adapter.mjs +173 -0
- package/examples/reference-host-adapter/host-adapters.json.example +26 -0
- package/package.json +94 -0
- package/schemas/event-v1.schema.json +26 -0
- package/schemas/policy-v1.schema.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon.ts"],"names":[],"mappings":"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"}
|
package/dist/src/db.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A deliberately small SQLite bridge. Wake Bridge is local-first and the
|
|
3
|
+
* runtime ships with the sqlite3 CLI on the supported hosts. Keeping all
|
|
4
|
+
* SQL here means the domain layer can still use real SQLite transactions,
|
|
5
|
+
* WAL, foreign keys and unique constraints without tying the core to a
|
|
6
|
+
* native Node sqlite ABI.
|
|
7
|
+
*/
|
|
8
|
+
export declare class SqliteDatabase {
|
|
9
|
+
readonly path: string;
|
|
10
|
+
private readonly ephemeral;
|
|
11
|
+
constructor(dbPath: string, options?: {
|
|
12
|
+
allowSchemaUpgrade?: boolean;
|
|
13
|
+
});
|
|
14
|
+
private userVersion;
|
|
15
|
+
private configure;
|
|
16
|
+
private migrateSourceIdentity;
|
|
17
|
+
private migrateActivityWatches;
|
|
18
|
+
private migrateActivityWatchRescue;
|
|
19
|
+
private migrateDeliveryCorrelations;
|
|
20
|
+
private migrateEndpointRoutes;
|
|
21
|
+
private migrateActivityWatchCondition;
|
|
22
|
+
exec(sql: string): void;
|
|
23
|
+
query<T extends Record<string, unknown> = Record<string, unknown>>(sql: string): T[];
|
|
24
|
+
transaction(statements: string[]): void;
|
|
25
|
+
private withConnectionPragmas;
|
|
26
|
+
close(): void;
|
|
27
|
+
}
|
|
28
|
+
export declare const CURRENT_SCHEMA_VERSION = 8;
|
|
29
|
+
export declare const MIN_SUPPORTED_SCHEMA_VERSION = 6;
|
|
30
|
+
export declare function sqlValue(value: unknown): string;
|
|
31
|
+
export declare function sqlJson(value: unknown): string;
|
package/dist/src/db.js
ADDED
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, rmSync, statSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { spawnSync } from "node:child_process";
|
|
6
|
+
/**
|
|
7
|
+
* A deliberately small SQLite bridge. Wake Bridge is local-first and the
|
|
8
|
+
* runtime ships with the sqlite3 CLI on the supported hosts. Keeping all
|
|
9
|
+
* SQL here means the domain layer can still use real SQLite transactions,
|
|
10
|
+
* WAL, foreign keys and unique constraints without tying the core to a
|
|
11
|
+
* native Node sqlite ABI.
|
|
12
|
+
*/
|
|
13
|
+
export class SqliteDatabase {
|
|
14
|
+
path;
|
|
15
|
+
ephemeral;
|
|
16
|
+
constructor(dbPath, options = {}) {
|
|
17
|
+
this.ephemeral = dbPath === ":memory:";
|
|
18
|
+
this.path = this.ephemeral
|
|
19
|
+
? join(tmpdir(), `wake-bridge-${randomUUID()}.sqlite`)
|
|
20
|
+
: dbPath;
|
|
21
|
+
mkdirSync(dirname(this.path), { recursive: true });
|
|
22
|
+
const existed = existsSync(this.path);
|
|
23
|
+
const existingBytes = existed ? statSync(this.path).size : 0;
|
|
24
|
+
const existingVersion = this.userVersion();
|
|
25
|
+
if (existingVersion > CURRENT_SCHEMA_VERSION) {
|
|
26
|
+
throw new Error(`database schema ${existingVersion} is newer than supported schema ${CURRENT_SCHEMA_VERSION}`);
|
|
27
|
+
}
|
|
28
|
+
if (existingVersion === 0 && existingBytes > 0) {
|
|
29
|
+
throw new Error("database is non-empty but has no Wake Bridge schema version");
|
|
30
|
+
}
|
|
31
|
+
if (existingVersion > 0 && existingVersion < MIN_SUPPORTED_SCHEMA_VERSION) {
|
|
32
|
+
throw new Error(`database schema ${existingVersion} is older than the supported upgrade floor ${MIN_SUPPORTED_SCHEMA_VERSION}`);
|
|
33
|
+
}
|
|
34
|
+
if (existingVersion > 0 && existingVersion < CURRENT_SCHEMA_VERSION && options.allowSchemaUpgrade !== true) {
|
|
35
|
+
throw new Error(`database schema ${existingVersion} requires explicit upgrade to ${CURRENT_SCHEMA_VERSION}; run wakebridge upgrade first`);
|
|
36
|
+
}
|
|
37
|
+
this.configure();
|
|
38
|
+
}
|
|
39
|
+
userVersion() {
|
|
40
|
+
const result = spawnSync("sqlite3", ["-batch", "-json", this.path], {
|
|
41
|
+
input: "PRAGMA user_version;\n",
|
|
42
|
+
encoding: "utf8",
|
|
43
|
+
maxBuffer: 1024 * 1024,
|
|
44
|
+
});
|
|
45
|
+
if (result.error)
|
|
46
|
+
throw result.error;
|
|
47
|
+
if (result.status !== 0)
|
|
48
|
+
throw new Error(`sqlite3 failed (${result.status}): ${(result.stderr || result.stdout || "").trim()}`);
|
|
49
|
+
const output = (result.stdout || "").trim();
|
|
50
|
+
if (!output)
|
|
51
|
+
return 0;
|
|
52
|
+
const rows = JSON.parse(output);
|
|
53
|
+
return Number(rows[0]?.user_version ?? 0);
|
|
54
|
+
}
|
|
55
|
+
configure() {
|
|
56
|
+
this.exec([
|
|
57
|
+
"PRAGMA journal_mode=WAL;",
|
|
58
|
+
"PRAGMA synchronous=NORMAL;",
|
|
59
|
+
"PRAGMA foreign_keys=ON;",
|
|
60
|
+
"PRAGMA busy_timeout=5000;",
|
|
61
|
+
"CREATE TABLE IF NOT EXISTS schema_migrations (version INTEGER PRIMARY KEY, applied_at TEXT NOT NULL);",
|
|
62
|
+
SCHEMA_SQL,
|
|
63
|
+
"INSERT OR IGNORE INTO schema_migrations(version, applied_at) VALUES(1, strftime('%Y-%m-%dT%H:%M:%fZ','now'));",
|
|
64
|
+
"INSERT OR IGNORE INTO schema_migrations(version, applied_at) VALUES(2, strftime('%Y-%m-%dT%H:%M:%fZ','now'));",
|
|
65
|
+
"PRAGMA user_version=2;",
|
|
66
|
+
].join("\n"));
|
|
67
|
+
this.migrateSourceIdentity();
|
|
68
|
+
this.migrateActivityWatches();
|
|
69
|
+
this.migrateActivityWatchRescue();
|
|
70
|
+
this.migrateDeliveryCorrelations();
|
|
71
|
+
this.migrateEndpointRoutes();
|
|
72
|
+
this.migrateActivityWatchCondition();
|
|
73
|
+
}
|
|
74
|
+
migrateSourceIdentity() {
|
|
75
|
+
const columns = new Set(this.query("PRAGMA table_info(source_checkpoints);").map((row) => String(row.name)));
|
|
76
|
+
const statements = [];
|
|
77
|
+
if (!columns.has("subject_ref"))
|
|
78
|
+
statements.push("ALTER TABLE source_checkpoints ADD COLUMN subject_ref TEXT NOT NULL DEFAULT ''; ");
|
|
79
|
+
if (!columns.has("binding_fingerprint"))
|
|
80
|
+
statements.push("ALTER TABLE source_checkpoints ADD COLUMN binding_fingerprint TEXT NOT NULL DEFAULT ''; ");
|
|
81
|
+
statements.push(`
|
|
82
|
+
CREATE TABLE IF NOT EXISTS source_checkpoint_history (
|
|
83
|
+
seq INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
84
|
+
instance_id TEXT NOT NULL,
|
|
85
|
+
source TEXT NOT NULL,
|
|
86
|
+
adapter_version TEXT NOT NULL,
|
|
87
|
+
subject_ref TEXT NOT NULL,
|
|
88
|
+
binding_fingerprint TEXT NOT NULL,
|
|
89
|
+
cursor_json TEXT NOT NULL,
|
|
90
|
+
revision INTEGER NOT NULL,
|
|
91
|
+
updated_at TEXT NOT NULL,
|
|
92
|
+
archived_at TEXT NOT NULL,
|
|
93
|
+
reason TEXT NOT NULL
|
|
94
|
+
);
|
|
95
|
+
CREATE TABLE IF NOT EXISTS source_controls (
|
|
96
|
+
instance_id TEXT NOT NULL,
|
|
97
|
+
source TEXT NOT NULL,
|
|
98
|
+
enabled INTEGER NOT NULL,
|
|
99
|
+
updated_at TEXT NOT NULL,
|
|
100
|
+
PRIMARY KEY(instance_id, source)
|
|
101
|
+
);
|
|
102
|
+
CREATE INDEX IF NOT EXISTS idx_source_checkpoint_history ON source_checkpoint_history(instance_id, source, seq);
|
|
103
|
+
INSERT OR IGNORE INTO schema_migrations(version, applied_at) VALUES(3, strftime('%Y-%m-%dT%H:%M:%fZ','now'));
|
|
104
|
+
PRAGMA user_version=3;`);
|
|
105
|
+
this.exec(statements.join("\n"));
|
|
106
|
+
}
|
|
107
|
+
migrateActivityWatches() {
|
|
108
|
+
this.exec(`
|
|
109
|
+
CREATE TABLE IF NOT EXISTS activity_watches (
|
|
110
|
+
instance_id TEXT NOT NULL,
|
|
111
|
+
attention_channel TEXT NOT NULL,
|
|
112
|
+
enabled INTEGER NOT NULL,
|
|
113
|
+
idle_after_ms INTEGER NOT NULL,
|
|
114
|
+
endpoint_id TEXT,
|
|
115
|
+
binding_generation INTEGER,
|
|
116
|
+
epoch INTEGER NOT NULL,
|
|
117
|
+
armed_at TEXT,
|
|
118
|
+
last_nonwake_activity_at TEXT,
|
|
119
|
+
activity_lease_expires_at TEXT,
|
|
120
|
+
fired_epoch INTEGER,
|
|
121
|
+
updated_at TEXT NOT NULL,
|
|
122
|
+
PRIMARY KEY(instance_id, attention_channel)
|
|
123
|
+
);
|
|
124
|
+
CREATE TABLE IF NOT EXISTS activity_observations (
|
|
125
|
+
instance_id TEXT NOT NULL,
|
|
126
|
+
endpoint_id TEXT NOT NULL,
|
|
127
|
+
binding_generation INTEGER NOT NULL,
|
|
128
|
+
observation_id TEXT NOT NULL,
|
|
129
|
+
attention_channel TEXT NOT NULL,
|
|
130
|
+
kind TEXT NOT NULL,
|
|
131
|
+
observed_at TEXT NOT NULL,
|
|
132
|
+
received_at TEXT NOT NULL,
|
|
133
|
+
PRIMARY KEY(instance_id, endpoint_id, binding_generation, observation_id)
|
|
134
|
+
);
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_activity_watches_due ON activity_watches(instance_id, enabled, activity_lease_expires_at, last_nonwake_activity_at);
|
|
136
|
+
CREATE INDEX IF NOT EXISTS idx_activity_observations_received ON activity_observations(instance_id, received_at);
|
|
137
|
+
INSERT OR IGNORE INTO schema_migrations(version, applied_at) VALUES(4, strftime('%Y-%m-%dT%H:%M:%fZ','now'));
|
|
138
|
+
PRAGMA user_version=4;`);
|
|
139
|
+
}
|
|
140
|
+
migrateActivityWatchRescue() {
|
|
141
|
+
const columns = new Set(this.query("PRAGMA table_info(activity_watches);").map((row) => String(row.name)));
|
|
142
|
+
const statements = [];
|
|
143
|
+
if (!columns.has("rescue_mode"))
|
|
144
|
+
statements.push("ALTER TABLE activity_watches ADD COLUMN rescue_mode TEXT NOT NULL DEFAULT 'once';");
|
|
145
|
+
if (!columns.has("repeat_after_ms"))
|
|
146
|
+
statements.push("ALTER TABLE activity_watches ADD COLUMN repeat_after_ms INTEGER NOT NULL DEFAULT 3600000;");
|
|
147
|
+
if (!columns.has("rescue_sequence"))
|
|
148
|
+
statements.push("ALTER TABLE activity_watches ADD COLUMN rescue_sequence INTEGER NOT NULL DEFAULT 0;");
|
|
149
|
+
if (!columns.has("last_rescue_at"))
|
|
150
|
+
statements.push("ALTER TABLE activity_watches ADD COLUMN last_rescue_at TEXT;");
|
|
151
|
+
if (!columns.has("next_rescue_at"))
|
|
152
|
+
statements.push("ALTER TABLE activity_watches ADD COLUMN next_rescue_at TEXT;");
|
|
153
|
+
if (!columns.has("covered_epoch"))
|
|
154
|
+
statements.push("ALTER TABLE activity_watches ADD COLUMN covered_epoch INTEGER;");
|
|
155
|
+
if (!columns.has("coverage_claim_id"))
|
|
156
|
+
statements.push("ALTER TABLE activity_watches ADD COLUMN coverage_claim_id TEXT;");
|
|
157
|
+
if (!columns.has("coverage_eligible_after"))
|
|
158
|
+
statements.push("ALTER TABLE activity_watches ADD COLUMN coverage_eligible_after TEXT;");
|
|
159
|
+
if (!columns.has("repeat_after_ms"))
|
|
160
|
+
statements.push("UPDATE activity_watches SET repeat_after_ms=idle_after_ms;");
|
|
161
|
+
statements.push(`
|
|
162
|
+
INSERT OR IGNORE INTO schema_migrations(version, applied_at) VALUES(5, strftime('%Y-%m-%dT%H:%M:%fZ','now'));
|
|
163
|
+
PRAGMA user_version=5;`);
|
|
164
|
+
this.exec(statements.join("\n"));
|
|
165
|
+
}
|
|
166
|
+
migrateDeliveryCorrelations() {
|
|
167
|
+
this.exec(`
|
|
168
|
+
CREATE TABLE IF NOT EXISTS delivery_correlations (
|
|
169
|
+
attempt_id TEXT PRIMARY KEY NOT NULL REFERENCES outbox_attempts(id) ON DELETE CASCADE,
|
|
170
|
+
batch_id TEXT NOT NULL REFERENCES batches(id) ON DELETE CASCADE,
|
|
171
|
+
endpoint_id TEXT NOT NULL,
|
|
172
|
+
binding_generation INTEGER NOT NULL,
|
|
173
|
+
transport_kind TEXT NOT NULL,
|
|
174
|
+
nonce_hash TEXT NOT NULL UNIQUE,
|
|
175
|
+
state TEXT NOT NULL,
|
|
176
|
+
created_at TEXT NOT NULL,
|
|
177
|
+
expires_at TEXT NOT NULL,
|
|
178
|
+
consumed_at TEXT
|
|
179
|
+
);
|
|
180
|
+
CREATE INDEX IF NOT EXISTS idx_delivery_correlations_lookup ON delivery_correlations(endpoint_id, binding_generation, nonce_hash, state);
|
|
181
|
+
CREATE INDEX IF NOT EXISTS idx_delivery_correlations_expiry ON delivery_correlations(state, expires_at);
|
|
182
|
+
INSERT OR IGNORE INTO schema_migrations(version, applied_at) VALUES(6, strftime('%Y-%m-%dT%H:%M:%fZ','now'));
|
|
183
|
+
PRAGMA user_version=6;`);
|
|
184
|
+
}
|
|
185
|
+
migrateEndpointRoutes() {
|
|
186
|
+
const columns = new Set(this.query("PRAGMA table_info(endpoints);").map((row) => String(row.name)));
|
|
187
|
+
const hasLegacyColumn = columns.has("cold_routes_json");
|
|
188
|
+
const hasRoutesColumn = columns.has("routes_json");
|
|
189
|
+
if (hasLegacyColumn === hasRoutesColumn) {
|
|
190
|
+
throw new Error(hasLegacyColumn
|
|
191
|
+
? "endpoints schema contains both cold_routes_json and routes_json; refusing an ambiguous route migration"
|
|
192
|
+
: "endpoints schema contains neither cold_routes_json nor routes_json");
|
|
193
|
+
}
|
|
194
|
+
const rename = hasLegacyColumn ? "ALTER TABLE endpoints RENAME COLUMN cold_routes_json TO routes_json;" : "";
|
|
195
|
+
this.exec(`
|
|
196
|
+
BEGIN IMMEDIATE;
|
|
197
|
+
${rename}
|
|
198
|
+
INSERT OR IGNORE INTO schema_migrations(version, applied_at) VALUES(7, strftime('%Y-%m-%dT%H:%M:%fZ','now'));
|
|
199
|
+
PRAGMA user_version=7;
|
|
200
|
+
COMMIT;`);
|
|
201
|
+
}
|
|
202
|
+
migrateActivityWatchCondition() {
|
|
203
|
+
const columns = new Set(this.query("PRAGMA table_info(activity_watches);").map((row) => String(row.name)));
|
|
204
|
+
if (columns.has("mode")) {
|
|
205
|
+
this.exec("INSERT OR IGNORE INTO schema_migrations(version, applied_at) VALUES(8, strftime('%Y-%m-%dT%H:%M:%fZ','now')); PRAGMA user_version=8;");
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
this.exec(`
|
|
209
|
+
BEGIN IMMEDIATE;
|
|
210
|
+
ALTER TABLE activity_watches RENAME TO activity_watches_v7;
|
|
211
|
+
CREATE TABLE activity_watches (
|
|
212
|
+
instance_id TEXT NOT NULL,
|
|
213
|
+
attention_channel TEXT NOT NULL,
|
|
214
|
+
enabled INTEGER NOT NULL,
|
|
215
|
+
idle_after_ms INTEGER NOT NULL,
|
|
216
|
+
endpoint_id TEXT,
|
|
217
|
+
binding_generation INTEGER,
|
|
218
|
+
epoch INTEGER NOT NULL,
|
|
219
|
+
armed_at TEXT,
|
|
220
|
+
last_nonwake_activity_at TEXT,
|
|
221
|
+
activity_lease_expires_at TEXT,
|
|
222
|
+
fired_epoch INTEGER,
|
|
223
|
+
mode TEXT NOT NULL DEFAULT 'once',
|
|
224
|
+
repeat_after_ms INTEGER NOT NULL DEFAULT 3600000,
|
|
225
|
+
sequence INTEGER NOT NULL DEFAULT 0,
|
|
226
|
+
last_triggered_at TEXT,
|
|
227
|
+
next_due_at TEXT,
|
|
228
|
+
updated_at TEXT NOT NULL,
|
|
229
|
+
PRIMARY KEY(instance_id, attention_channel)
|
|
230
|
+
);
|
|
231
|
+
INSERT INTO activity_watches(instance_id, attention_channel, enabled, idle_after_ms, endpoint_id, binding_generation, epoch,
|
|
232
|
+
armed_at, last_nonwake_activity_at, activity_lease_expires_at, fired_epoch, mode, repeat_after_ms, sequence,
|
|
233
|
+
last_triggered_at, next_due_at, updated_at)
|
|
234
|
+
SELECT instance_id, attention_channel, enabled, idle_after_ms, endpoint_id, binding_generation, epoch, armed_at,
|
|
235
|
+
last_nonwake_activity_at, activity_lease_expires_at, fired_epoch, 'once', repeat_after_ms, rescue_sequence,
|
|
236
|
+
last_rescue_at, NULL, updated_at FROM activity_watches_v7;
|
|
237
|
+
DROP TABLE activity_watches_v7;
|
|
238
|
+
CREATE INDEX idx_activity_watches_due ON activity_watches(instance_id, enabled, activity_lease_expires_at, last_nonwake_activity_at);
|
|
239
|
+
INSERT OR IGNORE INTO schema_migrations(version, applied_at) VALUES(8, strftime('%Y-%m-%dT%H:%M:%fZ','now'));
|
|
240
|
+
PRAGMA user_version=8;
|
|
241
|
+
COMMIT;`);
|
|
242
|
+
}
|
|
243
|
+
exec(sql) {
|
|
244
|
+
const result = spawnSync("sqlite3", ["-batch", this.path], {
|
|
245
|
+
input: this.withConnectionPragmas(sql),
|
|
246
|
+
encoding: "utf8",
|
|
247
|
+
maxBuffer: 16 * 1024 * 1024,
|
|
248
|
+
});
|
|
249
|
+
if (result.error)
|
|
250
|
+
throw result.error;
|
|
251
|
+
if (result.status !== 0) {
|
|
252
|
+
throw new Error(`sqlite3 failed (${result.status}): ${(result.stderr || result.stdout || "").trim()}`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
query(sql) {
|
|
256
|
+
const result = spawnSync("sqlite3", ["-batch", "-json", this.path], {
|
|
257
|
+
input: this.withConnectionPragmas(sql),
|
|
258
|
+
encoding: "utf8",
|
|
259
|
+
maxBuffer: 32 * 1024 * 1024,
|
|
260
|
+
});
|
|
261
|
+
if (result.error)
|
|
262
|
+
throw result.error;
|
|
263
|
+
if (result.status !== 0) {
|
|
264
|
+
throw new Error(`sqlite3 failed (${result.status}): ${(result.stderr || result.stdout || "").trim()}`);
|
|
265
|
+
}
|
|
266
|
+
const output = (result.stdout || "").trim();
|
|
267
|
+
if (!output)
|
|
268
|
+
return [];
|
|
269
|
+
try {
|
|
270
|
+
const parsed = JSON.parse(output);
|
|
271
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
throw new Error(`sqlite3 returned invalid JSON: ${String(error)}; output=${output.slice(0, 500)}`);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
transaction(statements) {
|
|
278
|
+
this.exec(["BEGIN IMMEDIATE;", ...statements, "COMMIT;"].join("\n"));
|
|
279
|
+
}
|
|
280
|
+
withConnectionPragmas(sql) {
|
|
281
|
+
// Every operation is a fresh sqlite3 process/connection. These pragmas
|
|
282
|
+
// therefore belong on every invocation, not only on initial migration.
|
|
283
|
+
// `.timeout` is a sqlite3 CLI command and does not add a result row to
|
|
284
|
+
// `-json` output (unlike PRAGMA busy_timeout=...).
|
|
285
|
+
return ".timeout 5000\nPRAGMA foreign_keys=ON;\n" + sql;
|
|
286
|
+
}
|
|
287
|
+
close() {
|
|
288
|
+
if (this.ephemeral) {
|
|
289
|
+
try {
|
|
290
|
+
rmSync(this.path, { force: true });
|
|
291
|
+
rmSync(`${this.path}-wal`, { force: true });
|
|
292
|
+
rmSync(`${this.path}-shm`, { force: true });
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
// Best-effort cleanup for tests. SQLite has already closed each CLI
|
|
296
|
+
// connection, so inability to unlink is harmless.
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
export const CURRENT_SCHEMA_VERSION = 8;
|
|
302
|
+
export const MIN_SUPPORTED_SCHEMA_VERSION = 6;
|
|
303
|
+
export function sqlValue(value) {
|
|
304
|
+
if (value === null || value === undefined)
|
|
305
|
+
return "NULL";
|
|
306
|
+
if (typeof value === "boolean")
|
|
307
|
+
return value ? "1" : "0";
|
|
308
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
309
|
+
return String(value);
|
|
310
|
+
if (typeof value === "bigint")
|
|
311
|
+
return value.toString();
|
|
312
|
+
const text = typeof value === "string" ? value : JSON.stringify(value);
|
|
313
|
+
return `'${String(text ?? "").replaceAll("'", "''")}'`;
|
|
314
|
+
}
|
|
315
|
+
export function sqlJson(value) {
|
|
316
|
+
return sqlValue(JSON.stringify(value ?? null));
|
|
317
|
+
}
|
|
318
|
+
const SCHEMA_SQL = `
|
|
319
|
+
CREATE TABLE IF NOT EXISTS events (
|
|
320
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
321
|
+
instance_id TEXT NOT NULL,
|
|
322
|
+
owner_id TEXT NOT NULL,
|
|
323
|
+
source TEXT NOT NULL,
|
|
324
|
+
type TEXT NOT NULL,
|
|
325
|
+
schema_version INTEGER NOT NULL,
|
|
326
|
+
occurred_at TEXT NOT NULL,
|
|
327
|
+
received_at TEXT NOT NULL,
|
|
328
|
+
dedupe_key TEXT NOT NULL,
|
|
329
|
+
coalesce_key TEXT,
|
|
330
|
+
priority_hint TEXT,
|
|
331
|
+
attention_channel_hint TEXT,
|
|
332
|
+
actor_ref TEXT,
|
|
333
|
+
resource_json TEXT NOT NULL,
|
|
334
|
+
metadata_json TEXT NOT NULL,
|
|
335
|
+
payload_preview TEXT,
|
|
336
|
+
matched_policy_id TEXT,
|
|
337
|
+
matched_policy_version INTEGER,
|
|
338
|
+
UNIQUE(instance_id, source, dedupe_key)
|
|
339
|
+
);
|
|
340
|
+
|
|
341
|
+
CREATE TABLE IF NOT EXISTS event_status (
|
|
342
|
+
event_id TEXT PRIMARY KEY NOT NULL REFERENCES events(id) ON DELETE CASCADE,
|
|
343
|
+
state TEXT NOT NULL,
|
|
344
|
+
updated_at TEXT NOT NULL
|
|
345
|
+
);
|
|
346
|
+
|
|
347
|
+
CREATE TABLE IF NOT EXISTS event_transitions (
|
|
348
|
+
seq INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
349
|
+
event_id TEXT NOT NULL REFERENCES events(id) ON DELETE CASCADE,
|
|
350
|
+
from_state TEXT,
|
|
351
|
+
to_state TEXT NOT NULL,
|
|
352
|
+
reason TEXT,
|
|
353
|
+
at TEXT NOT NULL
|
|
354
|
+
);
|
|
355
|
+
|
|
356
|
+
CREATE TABLE IF NOT EXISTS policies (
|
|
357
|
+
id TEXT NOT NULL,
|
|
358
|
+
version INTEGER NOT NULL,
|
|
359
|
+
enabled INTEGER NOT NULL,
|
|
360
|
+
order_no INTEGER NOT NULL,
|
|
361
|
+
rule_json TEXT NOT NULL,
|
|
362
|
+
installed_at TEXT NOT NULL,
|
|
363
|
+
PRIMARY KEY(id, version)
|
|
364
|
+
);
|
|
365
|
+
|
|
366
|
+
CREATE TABLE IF NOT EXISTS claims (
|
|
367
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
368
|
+
instance_id TEXT NOT NULL,
|
|
369
|
+
origin TEXT NOT NULL,
|
|
370
|
+
event_ids_json TEXT NOT NULL,
|
|
371
|
+
resource_json TEXT NOT NULL,
|
|
372
|
+
policy_id TEXT NOT NULL,
|
|
373
|
+
policy_version INTEGER NOT NULL,
|
|
374
|
+
attention_channel TEXT NOT NULL,
|
|
375
|
+
eligible_after TEXT NOT NULL,
|
|
376
|
+
expires_at TEXT,
|
|
377
|
+
defer_while_presence INTEGER NOT NULL,
|
|
378
|
+
state TEXT NOT NULL,
|
|
379
|
+
reason_code TEXT NOT NULL,
|
|
380
|
+
note TEXT,
|
|
381
|
+
created_at TEXT NOT NULL,
|
|
382
|
+
updated_at TEXT NOT NULL,
|
|
383
|
+
snooze_until TEXT,
|
|
384
|
+
consumed_result_json TEXT,
|
|
385
|
+
dismissed_reason TEXT
|
|
386
|
+
);
|
|
387
|
+
|
|
388
|
+
CREATE TABLE IF NOT EXISTS claim_transitions (
|
|
389
|
+
seq INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
390
|
+
claim_id TEXT NOT NULL REFERENCES claims(id) ON DELETE CASCADE,
|
|
391
|
+
from_state TEXT,
|
|
392
|
+
to_state TEXT NOT NULL,
|
|
393
|
+
reason TEXT,
|
|
394
|
+
at TEXT NOT NULL
|
|
395
|
+
);
|
|
396
|
+
|
|
397
|
+
CREATE TABLE IF NOT EXISTS endpoints (
|
|
398
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
399
|
+
instance_id TEXT NOT NULL,
|
|
400
|
+
host_kind TEXT NOT NULL,
|
|
401
|
+
session_ref TEXT NOT NULL,
|
|
402
|
+
lease_token_hash TEXT NOT NULL,
|
|
403
|
+
lease_expires_at TEXT NOT NULL,
|
|
404
|
+
capabilities_json TEXT NOT NULL,
|
|
405
|
+
routes_json TEXT NOT NULL,
|
|
406
|
+
registered_at TEXT NOT NULL,
|
|
407
|
+
updated_at TEXT NOT NULL
|
|
408
|
+
);
|
|
409
|
+
|
|
410
|
+
CREATE TABLE IF NOT EXISTS bindings (
|
|
411
|
+
instance_id TEXT NOT NULL,
|
|
412
|
+
attention_channel TEXT NOT NULL,
|
|
413
|
+
endpoint_id TEXT NOT NULL REFERENCES endpoints(id) ON DELETE RESTRICT,
|
|
414
|
+
generation INTEGER NOT NULL,
|
|
415
|
+
bound_at TEXT NOT NULL,
|
|
416
|
+
PRIMARY KEY(instance_id, attention_channel)
|
|
417
|
+
);
|
|
418
|
+
|
|
419
|
+
CREATE TABLE IF NOT EXISTS presence_leases (
|
|
420
|
+
instance_id TEXT NOT NULL,
|
|
421
|
+
attention_channel TEXT NOT NULL,
|
|
422
|
+
endpoint_id TEXT NOT NULL REFERENCES endpoints(id) ON DELETE CASCADE,
|
|
423
|
+
binding_generation INTEGER NOT NULL,
|
|
424
|
+
renewed_at TEXT NOT NULL,
|
|
425
|
+
expires_at TEXT NOT NULL,
|
|
426
|
+
observed_by TEXT NOT NULL,
|
|
427
|
+
observation TEXT NOT NULL,
|
|
428
|
+
PRIMARY KEY(instance_id, attention_channel)
|
|
429
|
+
);
|
|
430
|
+
|
|
431
|
+
CREATE TABLE IF NOT EXISTS batches (
|
|
432
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
433
|
+
instance_id TEXT NOT NULL,
|
|
434
|
+
policy_id TEXT NOT NULL,
|
|
435
|
+
policy_version INTEGER NOT NULL,
|
|
436
|
+
attention_channel TEXT NOT NULL,
|
|
437
|
+
claim_ids_json TEXT NOT NULL,
|
|
438
|
+
event_ids_json TEXT NOT NULL,
|
|
439
|
+
coalesce_key TEXT,
|
|
440
|
+
state TEXT NOT NULL,
|
|
441
|
+
not_before TEXT NOT NULL,
|
|
442
|
+
deadline TEXT,
|
|
443
|
+
attempt INTEGER NOT NULL DEFAULT 0,
|
|
444
|
+
binding_generation INTEGER,
|
|
445
|
+
created_at TEXT NOT NULL,
|
|
446
|
+
updated_at TEXT NOT NULL,
|
|
447
|
+
lease_expires_at TEXT,
|
|
448
|
+
last_error TEXT
|
|
449
|
+
);
|
|
450
|
+
|
|
451
|
+
CREATE TABLE IF NOT EXISTS batch_transitions (
|
|
452
|
+
seq INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
453
|
+
batch_id TEXT NOT NULL REFERENCES batches(id) ON DELETE CASCADE,
|
|
454
|
+
from_state TEXT,
|
|
455
|
+
to_state TEXT NOT NULL,
|
|
456
|
+
reason TEXT,
|
|
457
|
+
at TEXT NOT NULL
|
|
458
|
+
);
|
|
459
|
+
|
|
460
|
+
CREATE TABLE IF NOT EXISTS outbox_attempts (
|
|
461
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
462
|
+
batch_id TEXT NOT NULL REFERENCES batches(id) ON DELETE CASCADE,
|
|
463
|
+
attempt_no INTEGER NOT NULL,
|
|
464
|
+
state TEXT NOT NULL,
|
|
465
|
+
transport_kind TEXT,
|
|
466
|
+
endpoint_id TEXT,
|
|
467
|
+
binding_generation INTEGER,
|
|
468
|
+
leased_until TEXT,
|
|
469
|
+
started_at TEXT NOT NULL,
|
|
470
|
+
finished_at TEXT,
|
|
471
|
+
error_class TEXT,
|
|
472
|
+
error_message TEXT,
|
|
473
|
+
UNIQUE(batch_id, attempt_no)
|
|
474
|
+
);
|
|
475
|
+
|
|
476
|
+
CREATE TABLE IF NOT EXISTS receipts (
|
|
477
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
478
|
+
batch_id TEXT NOT NULL REFERENCES batches(id) ON DELETE CASCADE,
|
|
479
|
+
claim_id TEXT,
|
|
480
|
+
stage TEXT NOT NULL,
|
|
481
|
+
at TEXT NOT NULL,
|
|
482
|
+
endpoint_id TEXT,
|
|
483
|
+
binding_generation INTEGER,
|
|
484
|
+
transport_kind TEXT,
|
|
485
|
+
details_json TEXT
|
|
486
|
+
);
|
|
487
|
+
|
|
488
|
+
CREATE TABLE IF NOT EXISTS idempotency_keys (
|
|
489
|
+
scope TEXT NOT NULL,
|
|
490
|
+
key TEXT NOT NULL,
|
|
491
|
+
result_json TEXT NOT NULL,
|
|
492
|
+
created_at TEXT NOT NULL,
|
|
493
|
+
PRIMARY KEY(scope, key)
|
|
494
|
+
);
|
|
495
|
+
|
|
496
|
+
CREATE TABLE IF NOT EXISTS source_checkpoints (
|
|
497
|
+
instance_id TEXT NOT NULL,
|
|
498
|
+
source TEXT NOT NULL,
|
|
499
|
+
adapter_version TEXT NOT NULL,
|
|
500
|
+
cursor_json TEXT NOT NULL,
|
|
501
|
+
revision INTEGER NOT NULL,
|
|
502
|
+
updated_at TEXT NOT NULL,
|
|
503
|
+
PRIMARY KEY(instance_id, source)
|
|
504
|
+
);
|
|
505
|
+
|
|
506
|
+
CREATE INDEX IF NOT EXISTS idx_events_received ON events(received_at);
|
|
507
|
+
CREATE INDEX IF NOT EXISTS idx_event_status_state ON event_status(state);
|
|
508
|
+
CREATE INDEX IF NOT EXISTS idx_claims_due ON claims(state, eligible_after);
|
|
509
|
+
CREATE INDEX IF NOT EXISTS idx_batches_due ON batches(state, not_before, deadline);
|
|
510
|
+
CREATE INDEX IF NOT EXISTS idx_attempts_lease ON outbox_attempts(state, leased_until);
|
|
511
|
+
CREATE INDEX IF NOT EXISTS idx_receipts_batch ON receipts(batch_id, at);
|
|
512
|
+
`;
|
|
513
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/db.ts"],"names":[],"mappings":"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"}
|