agent-relay 2.0.37 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +31903 -33913
- package/dist/src/cli/index.js +36 -51
- package/dist/src/cli/index.js.map +1 -1
- package/package.json +18 -19
- package/packages/api-types/package.json +1 -1
- package/packages/benchmark/package.json +4 -4
- package/packages/bridge/package.json +8 -8
- package/packages/cli-tester/package.json +1 -1
- package/packages/config/dist/project-namespace.d.ts +28 -0
- package/packages/config/dist/project-namespace.d.ts.map +1 -1
- package/packages/config/dist/project-namespace.js +42 -0
- package/packages/config/dist/project-namespace.js.map +1 -1
- package/packages/config/package.json +2 -2
- package/packages/config/src/project-namespace.ts +65 -0
- package/packages/continuity/dist/formatter.d.ts +8 -2
- package/packages/continuity/dist/formatter.d.ts.map +1 -1
- package/packages/continuity/dist/formatter.js +142 -7
- package/packages/continuity/dist/formatter.js.map +1 -1
- package/packages/continuity/dist/index.d.ts +1 -0
- package/packages/continuity/dist/index.d.ts.map +1 -1
- package/packages/continuity/dist/index.js +2 -0
- package/packages/continuity/dist/index.js.map +1 -1
- package/packages/continuity/package.json +4 -1
- package/packages/continuity/src/formatter.ts +175 -10
- package/packages/continuity/src/index.ts +3 -0
- package/packages/daemon/dist/enhanced-features.d.ts +2 -3
- package/packages/daemon/dist/enhanced-features.d.ts.map +1 -1
- package/packages/daemon/dist/enhanced-features.js +1 -0
- package/packages/daemon/dist/enhanced-features.js.map +1 -1
- package/packages/daemon/dist/index.d.ts +0 -2
- package/packages/daemon/dist/index.d.ts.map +1 -1
- package/packages/daemon/dist/index.js +0 -3
- package/packages/daemon/dist/index.js.map +1 -1
- package/packages/daemon/dist/server.d.ts +0 -6
- package/packages/daemon/dist/server.d.ts.map +1 -1
- package/packages/daemon/dist/server.js +20 -119
- package/packages/daemon/dist/server.js.map +1 -1
- package/packages/daemon/package.json +12 -14
- package/packages/daemon/src/enhanced-features.ts +4 -4
- package/packages/daemon/src/index.ts +0 -4
- package/packages/daemon/src/server.ts +19 -127
- package/packages/daemon/vitest.config.ts +9 -0
- package/packages/hooks/package.json +4 -4
- package/packages/mcp/package.json +3 -3
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/protocol/package.json +1 -1
- package/packages/resiliency/package.json +1 -1
- package/packages/sdk/package.json +2 -2
- package/packages/spawner/package.json +1 -1
- package/packages/state/package.json +1 -1
- package/packages/storage/dist/adapter.d.ts +5 -5
- package/packages/storage/dist/adapter.js +9 -9
- package/packages/storage/dist/adapter.js.map +1 -1
- package/packages/storage/package.json +2 -2
- package/packages/storage/src/adapter.ts +9 -9
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +2 -2
- package/packages/wrapper/package.json +6 -6
- package/scripts/build-cjs.mjs +2 -0
- package/packages/daemon/dist/migrations/index.d.ts +0 -73
- package/packages/daemon/dist/migrations/index.d.ts.map +0 -1
- package/packages/daemon/dist/migrations/index.js +0 -241
- package/packages/daemon/dist/migrations/index.js.map +0 -1
- package/packages/daemon/dist/relay-ledger.d.ts +0 -263
- package/packages/daemon/dist/relay-ledger.d.ts.map +0 -1
- package/packages/daemon/dist/relay-ledger.js +0 -538
- package/packages/daemon/dist/relay-ledger.js.map +0 -1
- package/packages/daemon/dist/relay-watchdog.d.ts +0 -125
- package/packages/daemon/dist/relay-watchdog.d.ts.map +0 -1
- package/packages/daemon/dist/relay-watchdog.js +0 -611
- package/packages/daemon/dist/relay-watchdog.js.map +0 -1
- package/packages/daemon/src/migrations/0001_initial.sql +0 -72
- package/packages/daemon/src/migrations/index.test.ts +0 -195
- package/packages/daemon/src/migrations/index.ts +0 -286
- package/packages/daemon/src/relay-ledger.test.ts +0 -358
- package/packages/daemon/src/relay-ledger.ts +0 -713
- package/packages/daemon/src/relay-watchdog.test.ts +0 -881
- package/packages/daemon/src/relay-watchdog.ts +0 -785
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/sdk",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Lightweight SDK for agent-to-agent communication via Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"access": "public"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@agent-relay/protocol": "2.0
|
|
58
|
+
"@agent-relay/protocol": "2.1.0"
|
|
59
59
|
},
|
|
60
60
|
"engines": {
|
|
61
61
|
"node": ">=18.0.0"
|
|
@@ -169,17 +169,17 @@ export declare function getStorageConfigFromEnv(): StorageConfig;
|
|
|
169
169
|
* Configuration priority:
|
|
170
170
|
* 1. Explicit config passed to function
|
|
171
171
|
* 2. Environment variables (AGENT_RELAY_STORAGE_TYPE, AGENT_RELAY_STORAGE_PATH, AGENT_RELAY_STORAGE_URL)
|
|
172
|
-
* 3. Default:
|
|
172
|
+
* 3. Default: JSONL (no native dependencies)
|
|
173
173
|
*
|
|
174
174
|
* Fallback strategy:
|
|
175
|
-
* -
|
|
176
|
-
* -
|
|
175
|
+
* - Default to JSONL (no native dependencies required)
|
|
176
|
+
* - SQLite available via --storage=sqlite flag (requires better-sqlite3 or Node 22+)
|
|
177
177
|
* - If all durable adapters fail, keep daemon running via memory (non-persistent) with guidance
|
|
178
178
|
*
|
|
179
179
|
* Supported storage types:
|
|
180
|
-
* - '
|
|
180
|
+
* - 'jsonl' (default): Append-only JSONL files (no native deps)
|
|
181
|
+
* - 'sqlite': SQLite file-based storage (requires better-sqlite3 or Node 22+)
|
|
181
182
|
* - 'sqlite-batched': SQLite with buffered writes
|
|
182
|
-
* - 'jsonl': Append-only JSONL files (durable fallback)
|
|
183
183
|
* - 'none' or 'memory': In-memory storage (no persistence)
|
|
184
184
|
* - 'postgres': PostgreSQL (requires AGENT_RELAY_STORAGE_URL) - future
|
|
185
185
|
*/
|
|
@@ -133,17 +133,17 @@ export function getStorageConfigFromEnv() {
|
|
|
133
133
|
* Configuration priority:
|
|
134
134
|
* 1. Explicit config passed to function
|
|
135
135
|
* 2. Environment variables (AGENT_RELAY_STORAGE_TYPE, AGENT_RELAY_STORAGE_PATH, AGENT_RELAY_STORAGE_URL)
|
|
136
|
-
* 3. Default:
|
|
136
|
+
* 3. Default: JSONL (no native dependencies)
|
|
137
137
|
*
|
|
138
138
|
* Fallback strategy:
|
|
139
|
-
* -
|
|
140
|
-
* -
|
|
139
|
+
* - Default to JSONL (no native dependencies required)
|
|
140
|
+
* - SQLite available via --storage=sqlite flag (requires better-sqlite3 or Node 22+)
|
|
141
141
|
* - If all durable adapters fail, keep daemon running via memory (non-persistent) with guidance
|
|
142
142
|
*
|
|
143
143
|
* Supported storage types:
|
|
144
|
-
* - '
|
|
144
|
+
* - 'jsonl' (default): Append-only JSONL files (no native deps)
|
|
145
|
+
* - 'sqlite': SQLite file-based storage (requires better-sqlite3 or Node 22+)
|
|
145
146
|
* - 'sqlite-batched': SQLite with buffered writes
|
|
146
|
-
* - 'jsonl': Append-only JSONL files (durable fallback)
|
|
147
147
|
* - 'none' or 'memory': In-memory storage (no persistence)
|
|
148
148
|
* - 'postgres': PostgreSQL (requires AGENT_RELAY_STORAGE_URL) - future
|
|
149
149
|
*/
|
|
@@ -151,7 +151,7 @@ export async function createStorageAdapter(dbPath, config) {
|
|
|
151
151
|
// Merge with env config, explicit config takes priority
|
|
152
152
|
const envConfig = getStorageConfigFromEnv();
|
|
153
153
|
const finalConfig = {
|
|
154
|
-
type: config?.type ?? envConfig.type ?? '
|
|
154
|
+
type: config?.type ?? envConfig.type ?? 'jsonl',
|
|
155
155
|
path: config?.path ?? envConfig.path ?? dbPath,
|
|
156
156
|
url: config?.url ?? envConfig.url,
|
|
157
157
|
};
|
|
@@ -159,7 +159,7 @@ export async function createStorageAdapter(dbPath, config) {
|
|
|
159
159
|
switch (storageType) {
|
|
160
160
|
case 'none':
|
|
161
161
|
case 'memory': {
|
|
162
|
-
console.
|
|
162
|
+
console.error('[storage] Using in-memory storage (no persistence)');
|
|
163
163
|
const adapter = new MemoryStorageAdapter();
|
|
164
164
|
await adapter.init();
|
|
165
165
|
return adapter;
|
|
@@ -175,7 +175,7 @@ export async function createStorageAdapter(dbPath, config) {
|
|
|
175
175
|
case 'sqlite-batched':
|
|
176
176
|
case 'batched': {
|
|
177
177
|
try {
|
|
178
|
-
console.
|
|
178
|
+
console.error('[storage] Using batched SQLite storage');
|
|
179
179
|
const { BatchedSqliteAdapter } = await import('./batched-sqlite-adapter.js');
|
|
180
180
|
const adapter = new BatchedSqliteAdapter({
|
|
181
181
|
dbPath: finalConfig.path,
|
|
@@ -215,7 +215,7 @@ export async function createStorageAdapter(dbPath, config) {
|
|
|
215
215
|
case 'jsonl': {
|
|
216
216
|
const { JsonlStorageAdapter } = await import('./jsonl-adapter.js');
|
|
217
217
|
const baseDir = path.dirname(finalConfig.path);
|
|
218
|
-
console.
|
|
218
|
+
console.error('[storage] Using JSONL storage');
|
|
219
219
|
const adapter = new JsonlStorageAdapter({ baseDir });
|
|
220
220
|
await adapter.init();
|
|
221
221
|
return adapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAsJ7B;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACvB,QAAQ,GAAoB,EAAE,CAAC;IAC/B,cAAc,CAAU;IAEhC,YAAY,OAA6B;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,MAAM,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,2BAA2B;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI,CAAC,cAAc;SAC3B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAsB;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,wDAAwD;QACxD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAoB;QACpC,IAAI,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,KAAK,EAAE,IAAI,EAAE,CAAC;YAChB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,KAAK,EAAE,EAAE,EAAE,CAAC;YACd,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;YACjB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YAClB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;YACnB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,OAAQ,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;YACtB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;YACtB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,KAAK,EAAE,KAAK,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;YACjB,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,wFAAwF;QACxF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtB,GAAG,CAAC;YACJ,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM;SACpE,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC7B,4DAA4D;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,OAAO;YACL,GAAG,GAAG;YACN,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM;SAClE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,EAAU,EAAE,MAAqB;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,SAAiB,EAAE,SAAiB;QACrE,OAAO,IAAI,CAAC,QAAQ;aACjB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,iBAAiB,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC;aAC5F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,wFAAwF;YACxF,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACnD,CAAC,CAAC,CAAC;QAEL,SAAS,IAAI,CAAC,GAAkB;YAC9B,OAAO,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,SAAiB;QAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4D,CAAC;QAEvF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS;gBAAE,SAAS;YACnC,IAAI,GAAG,CAAC,iBAAiB,KAAK,SAAS;gBAAE,SAAS;YAClD,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI;gBAAE,SAAS;YAExE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC;YACrC,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjD,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;QAC1C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;QAC1C,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;KACzC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAc,EACd,MAAsB;IAEtB,wDAAwD;IACxD,MAAM,SAAS,GAAG,uBAAuB,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAkB;QACjC,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,OAAO;QAC/C,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,MAAM;QAC9C,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG;KAClC,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;IAEpD,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAC3C,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;YACJ,CAAC;YACD,uCAAuC;YACvC,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,KAAK,gBAAgB,CAAC;QACtB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACxD,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC;oBACvC,MAAM,EAAE,WAAW,CAAC,IAAK;oBACzB,KAAK,EAAE,WAAW,CAAC,KAAK;iBACzB,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,kDAAkD;gBAClD,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,MAAM,CAAC,CAAC;gBAEpE,IAAI,CAAC;oBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;oBACnE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAK,CAAC,CAAC;oBAChD,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;oBAChF,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC;wBACtC,OAAO;wBACP,MAAM,EAAE,2DAA2D;qBACpE,CAAC,CAAC;oBACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;oBACrB,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAAC,OAAO,OAAO,EAAE,CAAC;oBACjB,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC7E,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;oBAC9D,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;gBAC9G,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;gBAC5F,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC;oBACvC,MAAM,EAAE,2DAA2D;iBACpE,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAK,CAAC,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACrD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,QAAQ,CAAC;QACd,OAAO,CAAC,CAAC,CAAC;YACR,IAAI,CAAC;gBACH,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;gBACrE,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,IAAK,EAAE,CAAC,CAAC;gBACxE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,gEAAgE;gBAChE,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,6CAA6C,EAAE,MAAM,CAAC,CAAC;gBAEpE,IAAI,CAAC;oBACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;oBACnE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAK,CAAC,CAAC;oBAChD,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;oBAChF,MAAM,OAAO,GAAG,IAAI,mBAAmB,CAAC;wBACtC,OAAO;wBACP,MAAM,EAAE,2DAA2D;qBACpE,CAAC,CAAC;oBACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;oBACrB,OAAO,OAAO,CAAC;gBACjB,CAAC;gBAAC,OAAO,OAAO,EAAE,CAAC;oBACjB,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC7E,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;oBAC9D,OAAO,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;gBAC9G,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;gBAC5F,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC;oBACvC,MAAM,EAAE,2DAA2D;iBACpE,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/storage",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Storage adapters and interfaces for Relay message/session persistence",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
}
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@agent-relay/protocol": "2.0
|
|
59
|
+
"@agent-relay/protocol": "2.1.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@types/node": "^22.19.3",
|
|
@@ -298,17 +298,17 @@ export function getStorageConfigFromEnv(): StorageConfig {
|
|
|
298
298
|
* Configuration priority:
|
|
299
299
|
* 1. Explicit config passed to function
|
|
300
300
|
* 2. Environment variables (AGENT_RELAY_STORAGE_TYPE, AGENT_RELAY_STORAGE_PATH, AGENT_RELAY_STORAGE_URL)
|
|
301
|
-
* 3. Default:
|
|
301
|
+
* 3. Default: JSONL (no native dependencies)
|
|
302
302
|
*
|
|
303
303
|
* Fallback strategy:
|
|
304
|
-
* -
|
|
305
|
-
* -
|
|
304
|
+
* - Default to JSONL (no native dependencies required)
|
|
305
|
+
* - SQLite available via --storage=sqlite flag (requires better-sqlite3 or Node 22+)
|
|
306
306
|
* - If all durable adapters fail, keep daemon running via memory (non-persistent) with guidance
|
|
307
307
|
*
|
|
308
308
|
* Supported storage types:
|
|
309
|
-
* - '
|
|
309
|
+
* - 'jsonl' (default): Append-only JSONL files (no native deps)
|
|
310
|
+
* - 'sqlite': SQLite file-based storage (requires better-sqlite3 or Node 22+)
|
|
310
311
|
* - 'sqlite-batched': SQLite with buffered writes
|
|
311
|
-
* - 'jsonl': Append-only JSONL files (durable fallback)
|
|
312
312
|
* - 'none' or 'memory': In-memory storage (no persistence)
|
|
313
313
|
* - 'postgres': PostgreSQL (requires AGENT_RELAY_STORAGE_URL) - future
|
|
314
314
|
*/
|
|
@@ -319,7 +319,7 @@ export async function createStorageAdapter(
|
|
|
319
319
|
// Merge with env config, explicit config takes priority
|
|
320
320
|
const envConfig = getStorageConfigFromEnv();
|
|
321
321
|
const finalConfig: StorageConfig = {
|
|
322
|
-
type: config?.type ?? envConfig.type ?? '
|
|
322
|
+
type: config?.type ?? envConfig.type ?? 'jsonl',
|
|
323
323
|
path: config?.path ?? envConfig.path ?? dbPath,
|
|
324
324
|
url: config?.url ?? envConfig.url,
|
|
325
325
|
};
|
|
@@ -329,7 +329,7 @@ export async function createStorageAdapter(
|
|
|
329
329
|
switch (storageType) {
|
|
330
330
|
case 'none':
|
|
331
331
|
case 'memory': {
|
|
332
|
-
console.
|
|
332
|
+
console.error('[storage] Using in-memory storage (no persistence)');
|
|
333
333
|
const adapter = new MemoryStorageAdapter();
|
|
334
334
|
await adapter.init();
|
|
335
335
|
return adapter;
|
|
@@ -351,7 +351,7 @@ export async function createStorageAdapter(
|
|
|
351
351
|
case 'sqlite-batched':
|
|
352
352
|
case 'batched': {
|
|
353
353
|
try {
|
|
354
|
-
console.
|
|
354
|
+
console.error('[storage] Using batched SQLite storage');
|
|
355
355
|
const { BatchedSqliteAdapter } = await import('./batched-sqlite-adapter.js');
|
|
356
356
|
const adapter = new BatchedSqliteAdapter({
|
|
357
357
|
dbPath: finalConfig.path!,
|
|
@@ -392,7 +392,7 @@ export async function createStorageAdapter(
|
|
|
392
392
|
case 'jsonl': {
|
|
393
393
|
const { JsonlStorageAdapter } = await import('./jsonl-adapter.js');
|
|
394
394
|
const baseDir = path.dirname(finalConfig.path!);
|
|
395
|
-
console.
|
|
395
|
+
console.error('[storage] Using JSONL storage');
|
|
396
396
|
const adapter = new JsonlStorageAdapter({ baseDir });
|
|
397
397
|
await adapter.init();
|
|
398
398
|
return adapter;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/trajectory",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Trajectory integration utilities (trail/PDERO) for Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/config": "2.0
|
|
25
|
+
"@agent-relay/config": "2.1.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/user-directory",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "User directory service for agent-relay (per-user credential storage)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/resiliency": "2.0
|
|
25
|
+
"@agent-relay/resiliency": "2.1.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/utils",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Shared utilities for agent-relay: logging, name generation, command resolution, update checking",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"vitest": "^3.2.4"
|
|
95
95
|
},
|
|
96
96
|
"dependencies": {
|
|
97
|
-
"@agent-relay/protocol": "2.0
|
|
97
|
+
"@agent-relay/protocol": "2.1.0",
|
|
98
98
|
"compare-versions": "^6.1.1"
|
|
99
99
|
},
|
|
100
100
|
"publishConfig": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/wrapper",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "CLI agent wrappers for Agent Relay - tmux, pty integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
"clean": "rm -rf dist"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@agent-relay/api-types": "2.0
|
|
34
|
-
"@agent-relay/protocol": "2.0
|
|
35
|
-
"@agent-relay/config": "2.0
|
|
36
|
-
"@agent-relay/continuity": "2.0
|
|
37
|
-
"@agent-relay/resiliency": "2.0
|
|
33
|
+
"@agent-relay/api-types": "2.1.0",
|
|
34
|
+
"@agent-relay/protocol": "2.1.0",
|
|
35
|
+
"@agent-relay/config": "2.1.0",
|
|
36
|
+
"@agent-relay/continuity": "2.1.0",
|
|
37
|
+
"@agent-relay/resiliency": "2.1.0",
|
|
38
38
|
"zod": "^3.23.8"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
package/scripts/build-cjs.mjs
CHANGED
|
@@ -14,6 +14,8 @@ await build({
|
|
|
14
14
|
bundle: true,
|
|
15
15
|
target: 'node18',
|
|
16
16
|
logLevel: 'info',
|
|
17
|
+
// Exclude native dependencies from bundle - they're loaded dynamically at runtime
|
|
18
|
+
external: ['better-sqlite3'],
|
|
17
19
|
banner: {
|
|
18
20
|
js: "const import_meta_url = require('node:url').pathToFileURL(__filename).href;",
|
|
19
21
|
},
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SQLite Migration Runner for Relay Ledger
|
|
3
|
-
*
|
|
4
|
-
* Provides a lightweight migration system for the relay-ledger.db SQLite database.
|
|
5
|
-
* Tracks applied migrations in a __migrations table and runs them in order.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Sequential migration execution by name
|
|
9
|
-
* - Idempotent (safe to run multiple times)
|
|
10
|
-
* - Tracks applied migrations with timestamps
|
|
11
|
-
* - Embedded SQL for portability (no file dependencies)
|
|
12
|
-
*/
|
|
13
|
-
import type Database from 'better-sqlite3';
|
|
14
|
-
export interface MigrationRecord {
|
|
15
|
-
id: number;
|
|
16
|
-
name: string;
|
|
17
|
-
appliedAt: number;
|
|
18
|
-
checksum: string;
|
|
19
|
-
}
|
|
20
|
-
export interface MigrationFile {
|
|
21
|
-
name: string;
|
|
22
|
-
sql: string;
|
|
23
|
-
checksum: string;
|
|
24
|
-
}
|
|
25
|
-
export interface MigrationResult {
|
|
26
|
-
applied: string[];
|
|
27
|
-
skipped: string[];
|
|
28
|
-
errors: Array<{
|
|
29
|
-
name: string;
|
|
30
|
-
error: string;
|
|
31
|
-
}>;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Create the migrations tracking table if it doesn't exist
|
|
35
|
-
*/
|
|
36
|
-
export declare function ensureMigrationsTable(db: Database.Database): void;
|
|
37
|
-
/**
|
|
38
|
-
* Get all applied migrations
|
|
39
|
-
*/
|
|
40
|
-
export declare function getAppliedMigrations(db: Database.Database): MigrationRecord[];
|
|
41
|
-
/**
|
|
42
|
-
* Check if a specific migration has been applied
|
|
43
|
-
*/
|
|
44
|
-
export declare function isMigrationApplied(db: Database.Database, name: string): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Record a migration as applied
|
|
47
|
-
*/
|
|
48
|
-
export declare function recordMigration(db: Database.Database, name: string, checksum: string): void;
|
|
49
|
-
/**
|
|
50
|
-
* Calculate a simple checksum for migration content
|
|
51
|
-
*/
|
|
52
|
-
export declare function calculateChecksum(sql: string): string;
|
|
53
|
-
/**
|
|
54
|
-
* Load migrations from embedded definitions
|
|
55
|
-
*/
|
|
56
|
-
export declare function loadMigrationFiles(): MigrationFile[];
|
|
57
|
-
/**
|
|
58
|
-
* Run all pending migrations
|
|
59
|
-
*/
|
|
60
|
-
export declare function runMigrations(db: Database.Database): MigrationResult;
|
|
61
|
-
/**
|
|
62
|
-
* Get pending migrations that haven't been applied yet
|
|
63
|
-
*/
|
|
64
|
-
export declare function getPendingMigrations(db: Database.Database): MigrationFile[];
|
|
65
|
-
/**
|
|
66
|
-
* Verify migration checksums match what was originally applied
|
|
67
|
-
*/
|
|
68
|
-
export declare function verifyMigrations(db: Database.Database): Array<{
|
|
69
|
-
name: string;
|
|
70
|
-
expected: string;
|
|
71
|
-
actual: string;
|
|
72
|
-
}>;
|
|
73
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAM3C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAsGD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CASjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,eAAe,EAAE,CAW7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI3F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASrD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,EAAE,CAMpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,eAAe,CAwCpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,aAAa,EAAE,CAI3E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBjH"}
|
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SQLite Migration Runner for Relay Ledger
|
|
3
|
-
*
|
|
4
|
-
* Provides a lightweight migration system for the relay-ledger.db SQLite database.
|
|
5
|
-
* Tracks applied migrations in a __migrations table and runs them in order.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Sequential migration execution by name
|
|
9
|
-
* - Idempotent (safe to run multiple times)
|
|
10
|
-
* - Tracks applied migrations with timestamps
|
|
11
|
-
* - Embedded SQL for portability (no file dependencies)
|
|
12
|
-
*/
|
|
13
|
-
// ============================================================================
|
|
14
|
-
// Embedded Migrations
|
|
15
|
-
// ============================================================================
|
|
16
|
-
/**
|
|
17
|
-
* Embedded migrations - SQL is stored directly in code for portability.
|
|
18
|
-
* Add new migrations to this array in order.
|
|
19
|
-
*/
|
|
20
|
-
const EMBEDDED_MIGRATIONS = [
|
|
21
|
-
{
|
|
22
|
-
name: '0001_initial',
|
|
23
|
-
sql: `
|
|
24
|
-
-- Relay Ledger - Initial Schema
|
|
25
|
-
-- Migration 0001: Initial tables for relay file tracking
|
|
26
|
-
|
|
27
|
-
-- Main relay files table
|
|
28
|
-
CREATE TABLE IF NOT EXISTS relay_files (
|
|
29
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
30
|
-
file_id TEXT NOT NULL UNIQUE,
|
|
31
|
-
source_path TEXT NOT NULL,
|
|
32
|
-
archive_path TEXT,
|
|
33
|
-
agent_name TEXT NOT NULL,
|
|
34
|
-
message_type TEXT NOT NULL,
|
|
35
|
-
status TEXT NOT NULL DEFAULT 'pending',
|
|
36
|
-
retries INTEGER NOT NULL DEFAULT 0,
|
|
37
|
-
max_retries INTEGER NOT NULL DEFAULT 3,
|
|
38
|
-
discovered_at INTEGER NOT NULL,
|
|
39
|
-
processed_at INTEGER,
|
|
40
|
-
archived_at INTEGER,
|
|
41
|
-
error TEXT,
|
|
42
|
-
content_hash TEXT,
|
|
43
|
-
file_size INTEGER NOT NULL DEFAULT 0,
|
|
44
|
-
file_mtime_ns INTEGER,
|
|
45
|
-
file_inode INTEGER,
|
|
46
|
-
CONSTRAINT valid_status CHECK (status IN ('pending', 'processing', 'delivered', 'failed', 'archived'))
|
|
47
|
-
);
|
|
48
|
-
|
|
49
|
-
CREATE INDEX IF NOT EXISTS idx_relay_files_status ON relay_files(status);
|
|
50
|
-
CREATE INDEX IF NOT EXISTS idx_relay_files_agent ON relay_files(agent_name);
|
|
51
|
-
CREATE INDEX IF NOT EXISTS idx_relay_files_discovered ON relay_files(discovered_at);
|
|
52
|
-
CREATE INDEX IF NOT EXISTS idx_relay_files_source ON relay_files(source_path);
|
|
53
|
-
|
|
54
|
-
-- Agents registry table
|
|
55
|
-
CREATE TABLE IF NOT EXISTS agents (
|
|
56
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
57
|
-
agent_name TEXT NOT NULL UNIQUE,
|
|
58
|
-
created_at INTEGER NOT NULL,
|
|
59
|
-
last_seen_at INTEGER NOT NULL,
|
|
60
|
-
status TEXT NOT NULL DEFAULT 'active',
|
|
61
|
-
metadata TEXT,
|
|
62
|
-
CONSTRAINT valid_agent_status CHECK (status IN ('active', 'inactive'))
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
CREATE INDEX IF NOT EXISTS idx_agents_status ON agents(status);
|
|
66
|
-
CREATE INDEX IF NOT EXISTS idx_agents_last_seen ON agents(last_seen_at);
|
|
67
|
-
|
|
68
|
-
-- Orchestrator state table (key-value store for crash recovery)
|
|
69
|
-
CREATE TABLE IF NOT EXISTS orchestrator_state (
|
|
70
|
-
key TEXT PRIMARY KEY,
|
|
71
|
-
value TEXT NOT NULL,
|
|
72
|
-
updated_at INTEGER NOT NULL
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
-- Pending operations table (crash recovery atomicity)
|
|
76
|
-
CREATE TABLE IF NOT EXISTS pending_operations (
|
|
77
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
78
|
-
operation_type TEXT NOT NULL,
|
|
79
|
-
target_id TEXT NOT NULL,
|
|
80
|
-
payload TEXT,
|
|
81
|
-
created_at INTEGER NOT NULL,
|
|
82
|
-
attempts INTEGER NOT NULL DEFAULT 0,
|
|
83
|
-
last_attempt_at INTEGER,
|
|
84
|
-
error TEXT,
|
|
85
|
-
CONSTRAINT valid_operation_type CHECK (operation_type IN ('process', 'archive', 'cleanup'))
|
|
86
|
-
);
|
|
87
|
-
|
|
88
|
-
CREATE INDEX IF NOT EXISTS idx_pending_ops_type ON pending_operations(operation_type);
|
|
89
|
-
CREATE INDEX IF NOT EXISTS idx_pending_ops_target ON pending_operations(target_id);
|
|
90
|
-
`,
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
name: '0002_symlink_paths',
|
|
94
|
-
sql: `
|
|
95
|
-
-- Migration 0002: Add symlink path tracking for production workspace support
|
|
96
|
-
-- Workspaces in cloud/production may be symlinked for isolation.
|
|
97
|
-
-- We store both the original symlink path (for debugging) and canonical path (for operations).
|
|
98
|
-
|
|
99
|
-
-- Add symlink_path column to track original path (may be symlink)
|
|
100
|
-
ALTER TABLE relay_files ADD COLUMN symlink_path TEXT;
|
|
101
|
-
|
|
102
|
-
-- Create index for symlink lookups
|
|
103
|
-
CREATE INDEX IF NOT EXISTS idx_relay_files_symlink ON relay_files(symlink_path);
|
|
104
|
-
`,
|
|
105
|
-
},
|
|
106
|
-
];
|
|
107
|
-
// ============================================================================
|
|
108
|
-
// Migration Runner
|
|
109
|
-
// ============================================================================
|
|
110
|
-
/**
|
|
111
|
-
* Create the migrations tracking table if it doesn't exist
|
|
112
|
-
*/
|
|
113
|
-
export function ensureMigrationsTable(db) {
|
|
114
|
-
db.exec(`
|
|
115
|
-
CREATE TABLE IF NOT EXISTS __migrations (
|
|
116
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
117
|
-
name TEXT NOT NULL UNIQUE,
|
|
118
|
-
applied_at INTEGER NOT NULL,
|
|
119
|
-
checksum TEXT NOT NULL
|
|
120
|
-
);
|
|
121
|
-
`);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Get all applied migrations
|
|
125
|
-
*/
|
|
126
|
-
export function getAppliedMigrations(db) {
|
|
127
|
-
const rows = db.prepare(`
|
|
128
|
-
SELECT id, name, applied_at, checksum FROM __migrations ORDER BY id ASC
|
|
129
|
-
`).all();
|
|
130
|
-
return rows.map(row => ({
|
|
131
|
-
id: row.id,
|
|
132
|
-
name: row.name,
|
|
133
|
-
appliedAt: row.applied_at,
|
|
134
|
-
checksum: row.checksum,
|
|
135
|
-
}));
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Check if a specific migration has been applied
|
|
139
|
-
*/
|
|
140
|
-
export function isMigrationApplied(db, name) {
|
|
141
|
-
const row = db.prepare(`SELECT 1 FROM __migrations WHERE name = ?`).get(name);
|
|
142
|
-
return row !== undefined;
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Record a migration as applied
|
|
146
|
-
*/
|
|
147
|
-
export function recordMigration(db, name, checksum) {
|
|
148
|
-
db.prepare(`
|
|
149
|
-
INSERT INTO __migrations (name, applied_at, checksum) VALUES (?, ?, ?)
|
|
150
|
-
`).run(name, Date.now(), checksum);
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Calculate a simple checksum for migration content
|
|
154
|
-
*/
|
|
155
|
-
export function calculateChecksum(sql) {
|
|
156
|
-
// Simple hash for migration verification
|
|
157
|
-
let hash = 0;
|
|
158
|
-
for (let i = 0; i < sql.length; i++) {
|
|
159
|
-
const char = sql.charCodeAt(i);
|
|
160
|
-
hash = ((hash << 5) - hash) + char;
|
|
161
|
-
hash = hash & hash; // Convert to 32-bit integer
|
|
162
|
-
}
|
|
163
|
-
return Math.abs(hash).toString(16).padStart(8, '0');
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Load migrations from embedded definitions
|
|
167
|
-
*/
|
|
168
|
-
export function loadMigrationFiles() {
|
|
169
|
-
return EMBEDDED_MIGRATIONS.map(m => ({
|
|
170
|
-
name: m.name,
|
|
171
|
-
sql: m.sql,
|
|
172
|
-
checksum: calculateChecksum(m.sql),
|
|
173
|
-
}));
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Run all pending migrations
|
|
177
|
-
*/
|
|
178
|
-
export function runMigrations(db) {
|
|
179
|
-
const result = {
|
|
180
|
-
applied: [],
|
|
181
|
-
skipped: [],
|
|
182
|
-
errors: [],
|
|
183
|
-
};
|
|
184
|
-
// Ensure migrations table exists
|
|
185
|
-
ensureMigrationsTable(db);
|
|
186
|
-
// Load all migrations
|
|
187
|
-
const migrations = loadMigrationFiles();
|
|
188
|
-
// Get applied migrations
|
|
189
|
-
const applied = new Set(getAppliedMigrations(db).map(m => m.name));
|
|
190
|
-
// Run pending migrations in order
|
|
191
|
-
for (const migration of migrations) {
|
|
192
|
-
if (applied.has(migration.name)) {
|
|
193
|
-
result.skipped.push(migration.name);
|
|
194
|
-
continue;
|
|
195
|
-
}
|
|
196
|
-
try {
|
|
197
|
-
// Run migration in a transaction
|
|
198
|
-
db.transaction(() => {
|
|
199
|
-
db.exec(migration.sql);
|
|
200
|
-
recordMigration(db, migration.name, migration.checksum);
|
|
201
|
-
})();
|
|
202
|
-
result.applied.push(migration.name);
|
|
203
|
-
}
|
|
204
|
-
catch (err) {
|
|
205
|
-
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
206
|
-
result.errors.push({ name: migration.name, error: errorMessage });
|
|
207
|
-
// Stop on first error
|
|
208
|
-
break;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
return result;
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Get pending migrations that haven't been applied yet
|
|
215
|
-
*/
|
|
216
|
-
export function getPendingMigrations(db) {
|
|
217
|
-
ensureMigrationsTable(db);
|
|
218
|
-
const applied = new Set(getAppliedMigrations(db).map(m => m.name));
|
|
219
|
-
return loadMigrationFiles().filter(m => !applied.has(m.name));
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Verify migration checksums match what was originally applied
|
|
223
|
-
*/
|
|
224
|
-
export function verifyMigrations(db) {
|
|
225
|
-
const applied = getAppliedMigrations(db);
|
|
226
|
-
const files = loadMigrationFiles();
|
|
227
|
-
const fileMap = new Map(files.map(f => [f.name, f]));
|
|
228
|
-
const mismatches = [];
|
|
229
|
-
for (const record of applied) {
|
|
230
|
-
const file = fileMap.get(record.name);
|
|
231
|
-
if (file && file.checksum !== record.checksum) {
|
|
232
|
-
mismatches.push({
|
|
233
|
-
name: record.name,
|
|
234
|
-
expected: record.checksum,
|
|
235
|
-
actual: file.checksum,
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
return mismatches;
|
|
240
|
-
}
|
|
241
|
-
//# sourceMappingURL=index.js.map
|