@lobu/connector-worker 7.0.0 → 7.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/dist/__tests__/executor-heartbeat.test.d.ts +17 -0
- package/dist/__tests__/executor-heartbeat.test.d.ts.map +1 -0
- package/dist/__tests__/executor-heartbeat.test.js +195 -0
- package/dist/__tests__/executor-heartbeat.test.js.map +1 -0
- package/dist/compile-connector.d.ts +25 -0
- package/dist/compile-connector.d.ts.map +1 -0
- package/dist/compile-connector.js +162 -0
- package/dist/compile-connector.js.map +1 -0
- package/dist/daemon/client.d.ts +11 -1
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +7 -16
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/executor.d.ts.map +1 -1
- package/dist/daemon/executor.js +119 -31
- package/dist/daemon/executor.js.map +1 -1
- package/dist/daemon/worker.d.ts.map +1 -1
- package/dist/daemon/worker.js +14 -4
- package/dist/daemon/worker.js.map +1 -1
- package/dist/executor/child-runner.js +42 -23
- package/dist/executor/child-runner.js.map +1 -1
- package/dist/executor/subprocess.d.ts.map +1 -1
- package/dist/executor/subprocess.js +56 -29
- package/dist/executor/subprocess.js.map +1 -1
- package/package.json +15 -5
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat coverage for the action + embed_backfill executor lanes.
|
|
3
|
+
*
|
|
4
|
+
* lobu#860: PR #859 narrowed the gateway's stale-run reaper to lanes that
|
|
5
|
+
* actually emit `client.heartbeat()` (sync, auth). This test asserts the
|
|
6
|
+
* other two connector-worker lanes — `action` (executeActionRun) and
|
|
7
|
+
* `embed_backfill` (executeEmbedBackfillRun) — now heartbeat on the same
|
|
8
|
+
* 30s cadence so the reaper can be widened back to all four lanes.
|
|
9
|
+
*
|
|
10
|
+
* Strategy: mock the heavy collaborators (`executeCompiledConnector`,
|
|
11
|
+
* `batchGenerateEmbeddings`) so the executor body resolves quickly, and
|
|
12
|
+
* drive the registered setInterval manually to simulate the 70s window
|
|
13
|
+
* (the heartbeat fires at t=30 and t=60, so we should see at least 2
|
|
14
|
+
* calls to `client.heartbeat`).
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=executor-heartbeat.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor-heartbeat.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/executor-heartbeat.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat coverage for the action + embed_backfill executor lanes.
|
|
3
|
+
*
|
|
4
|
+
* lobu#860: PR #859 narrowed the gateway's stale-run reaper to lanes that
|
|
5
|
+
* actually emit `client.heartbeat()` (sync, auth). This test asserts the
|
|
6
|
+
* other two connector-worker lanes — `action` (executeActionRun) and
|
|
7
|
+
* `embed_backfill` (executeEmbedBackfillRun) — now heartbeat on the same
|
|
8
|
+
* 30s cadence so the reaper can be widened back to all four lanes.
|
|
9
|
+
*
|
|
10
|
+
* Strategy: mock the heavy collaborators (`executeCompiledConnector`,
|
|
11
|
+
* `batchGenerateEmbeddings`) so the executor body resolves quickly, and
|
|
12
|
+
* drive the registered setInterval manually to simulate the 70s window
|
|
13
|
+
* (the heartbeat fires at t=30 and t=60, so we should see at least 2
|
|
14
|
+
* calls to `client.heartbeat`).
|
|
15
|
+
*/
|
|
16
|
+
import { afterEach, beforeEach, describe, expect, mock, spyOn, test } from 'bun:test';
|
|
17
|
+
const executeCompiledConnectorMock = mock(async () => ({
|
|
18
|
+
contents: [],
|
|
19
|
+
checkpoint: null,
|
|
20
|
+
}));
|
|
21
|
+
const batchGenerateEmbeddingsMock = mock(async (texts) => texts.map(() => [0.1, 0.2, 0.3]));
|
|
22
|
+
mock.module('../executor/runtime.js', () => ({
|
|
23
|
+
executeCompiledConnector: executeCompiledConnectorMock,
|
|
24
|
+
getActionOutput: () => ({ ok: true }),
|
|
25
|
+
normalizeEventEnvelope: (e) => e,
|
|
26
|
+
}));
|
|
27
|
+
mock.module('../embeddings.js', () => ({
|
|
28
|
+
batchGenerateEmbeddings: batchGenerateEmbeddingsMock,
|
|
29
|
+
generateEmbedding: async () => [0, 0, 0],
|
|
30
|
+
}));
|
|
31
|
+
mock.module('../compile-connector.js', () => ({
|
|
32
|
+
compileConnectorFromFile: async () => 'compiled-code',
|
|
33
|
+
findBundledConnectorFile: () => '/fake/path',
|
|
34
|
+
}));
|
|
35
|
+
mock.module('../executor/subprocess.js', () => ({
|
|
36
|
+
SubprocessExecutor: class {
|
|
37
|
+
// biome-ignore lint/suspicious/noExplicitAny: test stub
|
|
38
|
+
constructor(_opts) { }
|
|
39
|
+
},
|
|
40
|
+
}));
|
|
41
|
+
import { executeRun } from '../daemon/executor.js';
|
|
42
|
+
function makeStubClient() {
|
|
43
|
+
const client = {
|
|
44
|
+
id: 'test-worker',
|
|
45
|
+
version: 'test',
|
|
46
|
+
__heartbeats: 0,
|
|
47
|
+
async heartbeat(_runId) {
|
|
48
|
+
client.__heartbeats += 1;
|
|
49
|
+
},
|
|
50
|
+
async stream() { },
|
|
51
|
+
async complete() { },
|
|
52
|
+
async completeAction() { },
|
|
53
|
+
async completeEmbeddings() { },
|
|
54
|
+
async completeAuth() { },
|
|
55
|
+
async emitAuthArtifact() { },
|
|
56
|
+
async pollAuthSignal() {
|
|
57
|
+
return { signal: null };
|
|
58
|
+
},
|
|
59
|
+
async fetchEventsForEmbedding(ids) {
|
|
60
|
+
return ids.map((id) => ({ id, title: 't', content: 'c' }));
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
return client;
|
|
64
|
+
}
|
|
65
|
+
describe('executor heartbeats (lobu#860)', () => {
|
|
66
|
+
// biome-ignore lint/suspicious/noExplicitAny: spy refs
|
|
67
|
+
let setIntervalSpy;
|
|
68
|
+
let scheduledIntervals;
|
|
69
|
+
let intervalsEverScheduledMs;
|
|
70
|
+
let nextId;
|
|
71
|
+
beforeEach(() => {
|
|
72
|
+
nextId = 1;
|
|
73
|
+
scheduledIntervals = [];
|
|
74
|
+
executeCompiledConnectorMock.mockClear();
|
|
75
|
+
batchGenerateEmbeddingsMock.mockClear();
|
|
76
|
+
intervalsEverScheduledMs = [];
|
|
77
|
+
setIntervalSpy = spyOn(globalThis, 'setInterval').mockImplementation(
|
|
78
|
+
// biome-ignore lint/suspicious/noExplicitAny: test seam
|
|
79
|
+
((fn, ms) => {
|
|
80
|
+
const id = nextId++;
|
|
81
|
+
scheduledIntervals.push({ fn, ms, id });
|
|
82
|
+
intervalsEverScheduledMs.push(ms);
|
|
83
|
+
return id;
|
|
84
|
+
// biome-ignore lint/suspicious/noExplicitAny: cast for setInterval typing
|
|
85
|
+
}));
|
|
86
|
+
spyOn(globalThis, 'clearInterval').mockImplementation(
|
|
87
|
+
// biome-ignore lint/suspicious/noExplicitAny: test seam
|
|
88
|
+
((id) => {
|
|
89
|
+
scheduledIntervals = scheduledIntervals.filter((s) => s.id !== id);
|
|
90
|
+
}));
|
|
91
|
+
});
|
|
92
|
+
afterEach(() => {
|
|
93
|
+
setIntervalSpy?.mockRestore();
|
|
94
|
+
// biome-ignore lint/suspicious/noExplicitAny: cleanup
|
|
95
|
+
globalThis.clearInterval.mockRestore?.();
|
|
96
|
+
});
|
|
97
|
+
// Drive each registered interval `tickCount` times by invoking the
|
|
98
|
+
// function directly. The executor's setInterval is the only one we
|
|
99
|
+
// scheduled (via the spy), so this is the heartbeat tick.
|
|
100
|
+
async function fireIntervalTicks(tickCount) {
|
|
101
|
+
for (let i = 0; i < tickCount; i++) {
|
|
102
|
+
for (const s of [...scheduledIntervals]) {
|
|
103
|
+
await s.fn();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
test('executeActionRun heartbeats at least twice over a 70s simulated run', async () => {
|
|
108
|
+
const client = makeStubClient();
|
|
109
|
+
// Make executeCompiledConnector return only AFTER 2 heartbeat ticks
|
|
110
|
+
// have fired — simulates the action body taking 60+ seconds.
|
|
111
|
+
executeCompiledConnectorMock.mockImplementationOnce(async () => {
|
|
112
|
+
await fireIntervalTicks(2);
|
|
113
|
+
return { contents: [{ result: { ok: true } }], checkpoint: null };
|
|
114
|
+
});
|
|
115
|
+
const job = {
|
|
116
|
+
run_id: 100,
|
|
117
|
+
run_type: 'action',
|
|
118
|
+
connector_key: 'fake',
|
|
119
|
+
action_key: 'do_thing',
|
|
120
|
+
action_input: {},
|
|
121
|
+
compiled_code: 'compiled-code',
|
|
122
|
+
// biome-ignore lint/suspicious/noExplicitAny: minimal job shape
|
|
123
|
+
};
|
|
124
|
+
// biome-ignore lint/suspicious/noExplicitAny: minimal env
|
|
125
|
+
const result = await executeRun(client, job, {});
|
|
126
|
+
expect(result.error).toBeUndefined();
|
|
127
|
+
expect(client.__heartbeats).toBeGreaterThanOrEqual(2);
|
|
128
|
+
// 30s cadence is the contract with the gateway reaper (default
|
|
129
|
+
// RUNS_REAPER_STALE_AFTER_SECONDS=120 ÷ 4 ≈ 30s). Assert that
|
|
130
|
+
// executeActionRun actually used 30_000ms for its setInterval.
|
|
131
|
+
// `intervalsEverScheduledMs` accumulates across the run, so even
|
|
132
|
+
// after `finally` clears the interval the registration is still
|
|
133
|
+
// recorded here.
|
|
134
|
+
expect(intervalsEverScheduledMs).toContain(30_000);
|
|
135
|
+
});
|
|
136
|
+
test('executeEmbedBackfillRun heartbeats at least twice over a 70s simulated run', async () => {
|
|
137
|
+
const client = makeStubClient();
|
|
138
|
+
batchGenerateEmbeddingsMock.mockImplementationOnce(async (texts) => {
|
|
139
|
+
await fireIntervalTicks(2);
|
|
140
|
+
return texts.map(() => [0.1, 0.2, 0.3]);
|
|
141
|
+
});
|
|
142
|
+
const job = {
|
|
143
|
+
run_id: 200,
|
|
144
|
+
run_type: 'embed_backfill',
|
|
145
|
+
action_input: { event_ids: [1, 2, 3] },
|
|
146
|
+
compiled_code: 'compiled-code',
|
|
147
|
+
// biome-ignore lint/suspicious/noExplicitAny: minimal job
|
|
148
|
+
};
|
|
149
|
+
// biome-ignore lint/suspicious/noExplicitAny: minimal env
|
|
150
|
+
const result = await executeRun(client, job, {});
|
|
151
|
+
expect(result.error).toBeUndefined();
|
|
152
|
+
expect(client.__heartbeats).toBeGreaterThanOrEqual(2);
|
|
153
|
+
});
|
|
154
|
+
test('heartbeat interval is cleared after a successful action run', async () => {
|
|
155
|
+
const client = makeStubClient();
|
|
156
|
+
executeCompiledConnectorMock.mockImplementationOnce(async () => ({
|
|
157
|
+
contents: [{ result: { ok: true } }],
|
|
158
|
+
checkpoint: null,
|
|
159
|
+
}));
|
|
160
|
+
const job = {
|
|
161
|
+
run_id: 300,
|
|
162
|
+
run_type: 'action',
|
|
163
|
+
connector_key: 'fake',
|
|
164
|
+
action_key: 'do_thing',
|
|
165
|
+
action_input: {},
|
|
166
|
+
compiled_code: 'compiled-code',
|
|
167
|
+
// biome-ignore lint/suspicious/noExplicitAny: minimal job
|
|
168
|
+
};
|
|
169
|
+
// biome-ignore lint/suspicious/noExplicitAny: minimal env
|
|
170
|
+
await executeRun(client, job, {});
|
|
171
|
+
// After the run, the heartbeat interval should be cleared on every
|
|
172
|
+
// path via `finally`.
|
|
173
|
+
expect(scheduledIntervals.length).toBe(0);
|
|
174
|
+
});
|
|
175
|
+
test('heartbeat interval is cleared after a failed action run', async () => {
|
|
176
|
+
const client = makeStubClient();
|
|
177
|
+
executeCompiledConnectorMock.mockImplementationOnce(async () => {
|
|
178
|
+
throw new Error('boom');
|
|
179
|
+
});
|
|
180
|
+
const job = {
|
|
181
|
+
run_id: 400,
|
|
182
|
+
run_type: 'action',
|
|
183
|
+
connector_key: 'fake',
|
|
184
|
+
action_key: 'do_thing',
|
|
185
|
+
action_input: {},
|
|
186
|
+
compiled_code: 'compiled-code',
|
|
187
|
+
// biome-ignore lint/suspicious/noExplicitAny: minimal job
|
|
188
|
+
};
|
|
189
|
+
// biome-ignore lint/suspicious/noExplicitAny: minimal env
|
|
190
|
+
const result = await executeRun(client, job, {});
|
|
191
|
+
expect(result.error).toContain('boom');
|
|
192
|
+
expect(scheduledIntervals.length).toBe(0);
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
//# sourceMappingURL=executor-heartbeat.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor-heartbeat.test.js","sourceRoot":"","sources":["../../src/__tests__/executor-heartbeat.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker-side connector compiler.
|
|
3
|
+
*
|
|
4
|
+
* Until lobu#771's perf brainstorm, the gateway compiled connector bundles
|
|
5
|
+
* via esbuild and shipped the ~13 MB output inline in every `/api/workers/poll`
|
|
6
|
+
* response. The gateway pod held all ~29 connector bundles in its
|
|
7
|
+
* compile cache (~384 MB, dominant heap occupant under the 1 GiB limit;
|
|
8
|
+
* see lobu#771 for the heap-snapshot trail).
|
|
9
|
+
*
|
|
10
|
+
* For fleet workers (and embedded mode where worker + gateway share a host),
|
|
11
|
+
* the bundled connector .ts source is on disk in both pods — the gateway
|
|
12
|
+
* doesn't need to compile or ship it. The gateway now sends
|
|
13
|
+
* `connector_source_path` (the absolute path that `findBundledConnectorFile`
|
|
14
|
+
* resolved) and this module compiles locally in the worker process.
|
|
15
|
+
*
|
|
16
|
+
* Device workers (Lobu Mac Bridge, etc.) keep getting `compiled_code` inline
|
|
17
|
+
* — they don't have the connectors directory on disk.
|
|
18
|
+
*
|
|
19
|
+
* This file mirrors the server's `utils/connector-catalog.ts` compile pipeline.
|
|
20
|
+
* Kept here (rather than shared) so the connector-worker package doesn't take
|
|
21
|
+
* a runtime dep on the server package's bundle layout.
|
|
22
|
+
*/
|
|
23
|
+
export declare function findBundledConnectorFile(key: string): string | null;
|
|
24
|
+
export declare function compileConnectorFromFile(filePath: string): Promise<string>;
|
|
25
|
+
//# sourceMappingURL=compile-connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-connector.d.ts","sourceRoot":"","sources":["../src/compile-connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAkCH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBnE;AA6CD,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyChF"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker-side connector compiler.
|
|
3
|
+
*
|
|
4
|
+
* Until lobu#771's perf brainstorm, the gateway compiled connector bundles
|
|
5
|
+
* via esbuild and shipped the ~13 MB output inline in every `/api/workers/poll`
|
|
6
|
+
* response. The gateway pod held all ~29 connector bundles in its
|
|
7
|
+
* compile cache (~384 MB, dominant heap occupant under the 1 GiB limit;
|
|
8
|
+
* see lobu#771 for the heap-snapshot trail).
|
|
9
|
+
*
|
|
10
|
+
* For fleet workers (and embedded mode where worker + gateway share a host),
|
|
11
|
+
* the bundled connector .ts source is on disk in both pods — the gateway
|
|
12
|
+
* doesn't need to compile or ship it. The gateway now sends
|
|
13
|
+
* `connector_source_path` (the absolute path that `findBundledConnectorFile`
|
|
14
|
+
* resolved) and this module compiles locally in the worker process.
|
|
15
|
+
*
|
|
16
|
+
* Device workers (Lobu Mac Bridge, etc.) keep getting `compiled_code` inline
|
|
17
|
+
* — they don't have the connectors directory on disk.
|
|
18
|
+
*
|
|
19
|
+
* This file mirrors the server's `utils/connector-catalog.ts` compile pipeline.
|
|
20
|
+
* Kept here (rather than shared) so the connector-worker package doesn't take
|
|
21
|
+
* a runtime dep on the server package's bundle layout.
|
|
22
|
+
*/
|
|
23
|
+
import { existsSync } from 'node:fs';
|
|
24
|
+
import { mkdtemp, readFile, rm, stat } from 'node:fs/promises';
|
|
25
|
+
import { createRequire } from 'node:module';
|
|
26
|
+
import { tmpdir } from 'node:os';
|
|
27
|
+
import { join, resolve } from 'node:path';
|
|
28
|
+
import { fileURLToPath } from 'node:url';
|
|
29
|
+
import { build } from 'esbuild';
|
|
30
|
+
import { EXTERNAL_RUNTIME_DEPS } from './runtime-deps.js';
|
|
31
|
+
// Worker-side resolver for the bundled connectors directory. The gateway's
|
|
32
|
+
// `findBundledConnectorFile` resolves to paths that exist in the gateway
|
|
33
|
+
// image (e.g. /app/packages/server/dist/connectors); those paths do not
|
|
34
|
+
// exist in the worker image, which has the sources at
|
|
35
|
+
// /app/packages/connectors. Each side resolves locally instead of trusting
|
|
36
|
+
// gateway-supplied absolute paths.
|
|
37
|
+
const HERE = fileURLToPath(new URL('.', import.meta.url));
|
|
38
|
+
const WORKER_CONNECTOR_DIR_CANDIDATES = [
|
|
39
|
+
resolve(HERE, '../../../connectors/src'),
|
|
40
|
+
resolve(HERE, '../../../connectors/dist'),
|
|
41
|
+
resolve(HERE, '../../connectors/src'),
|
|
42
|
+
resolve(HERE, '../../connectors/dist'),
|
|
43
|
+
resolve(HERE, '../connectors/src'),
|
|
44
|
+
resolve(process.cwd(), 'packages/connectors/src'),
|
|
45
|
+
resolve(process.cwd(), 'connectors'),
|
|
46
|
+
];
|
|
47
|
+
// Strict regex for connector_key: lowercase letters/digits, optional dots
|
|
48
|
+
// for namespacing, underscores for word separators. Defense-in-depth even
|
|
49
|
+
// though keys come from a trusted DB column — we're about to use the value
|
|
50
|
+
// to construct a filesystem path.
|
|
51
|
+
const CONNECTOR_KEY_RE = /^[a-z][a-z0-9]*(?:[._][a-z0-9]+)*$/;
|
|
52
|
+
export function findBundledConnectorFile(key) {
|
|
53
|
+
if (!CONNECTOR_KEY_RE.test(key))
|
|
54
|
+
return null;
|
|
55
|
+
// Two filename conventions:
|
|
56
|
+
// - Subdirectory layout (preferred for grouped primitives): the dot in
|
|
57
|
+
// `browser.evaluate` maps to `browser/evaluate.ts`. Lets us co-locate
|
|
58
|
+
// related connectors without renaming the key.
|
|
59
|
+
// - Flat-with-underscores (existing convention): `chrome.tabs` →
|
|
60
|
+
// `chrome_tabs.ts`, `apple_health` → `apple_health.ts`.
|
|
61
|
+
// Try subdirectory first so newer primitives win when both happen to exist.
|
|
62
|
+
const candidates = [
|
|
63
|
+
`${key.replace(/\./g, '/')}.ts`,
|
|
64
|
+
`${key.replace(/\./g, '_')}.ts`,
|
|
65
|
+
];
|
|
66
|
+
for (const dir of WORKER_CONNECTOR_DIR_CANDIDATES) {
|
|
67
|
+
for (const fileName of candidates) {
|
|
68
|
+
const filePath = resolve(dir, fileName);
|
|
69
|
+
// Belt-and-braces: the resolved path must stay under the candidate
|
|
70
|
+
// dir. CONNECTOR_KEY_RE already forbids `..`, but the regex doesn't
|
|
71
|
+
// know about our path-joining choices.
|
|
72
|
+
if (!filePath.startsWith(`${dir}/`))
|
|
73
|
+
continue;
|
|
74
|
+
if (existsSync(filePath))
|
|
75
|
+
return filePath;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
const require_ = createRequire(import.meta.url);
|
|
81
|
+
const SDK_ENTRY = require_.resolve('@lobu/connector-sdk');
|
|
82
|
+
// Connectors declare runtime npm deps via `import x from 'npm:foo@1.2.3'`.
|
|
83
|
+
// Strip the prefix so esbuild resolves the bare name against node_modules;
|
|
84
|
+
// when the package isn't installed here, mark it external so the bundle
|
|
85
|
+
// still emits. The worker image is expected to provide it.
|
|
86
|
+
const npmSpecifierPlugin = {
|
|
87
|
+
name: 'npm-specifier',
|
|
88
|
+
setup(b) {
|
|
89
|
+
b.onResolve({ filter: /^npm:/ }, async (args) => {
|
|
90
|
+
const bare = args.path
|
|
91
|
+
.slice(4)
|
|
92
|
+
.replace(/^(@[^/]+\/[^/@]+)@[^/]*/, '$1')
|
|
93
|
+
.replace(/^([^/@]+)@[^/]*/, '$1');
|
|
94
|
+
const resolved = await b.resolve(bare, {
|
|
95
|
+
resolveDir: args.resolveDir,
|
|
96
|
+
kind: args.kind,
|
|
97
|
+
});
|
|
98
|
+
if (resolved.errors.length > 0) {
|
|
99
|
+
return { path: bare, external: true, errors: [], warnings: [] };
|
|
100
|
+
}
|
|
101
|
+
return resolved;
|
|
102
|
+
});
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
// LRU-capped cache. Worker daemon is long-lived; one entry per recently-used
|
|
106
|
+
// connector. See the matching cache in
|
|
107
|
+
// `packages/server/src/utils/connector-catalog.ts` for the cap rationale.
|
|
108
|
+
const COMPILED_FILE_CACHE_MAX = 8;
|
|
109
|
+
const compiledFileCache = new Map();
|
|
110
|
+
function touchCacheEntry(filePath, entry) {
|
|
111
|
+
compiledFileCache.delete(filePath);
|
|
112
|
+
compiledFileCache.set(filePath, entry);
|
|
113
|
+
while (compiledFileCache.size > COMPILED_FILE_CACHE_MAX) {
|
|
114
|
+
const oldest = compiledFileCache.keys().next().value;
|
|
115
|
+
if (oldest === undefined)
|
|
116
|
+
break;
|
|
117
|
+
compiledFileCache.delete(oldest);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export async function compileConnectorFromFile(filePath) {
|
|
121
|
+
let mtimeMs = null;
|
|
122
|
+
try {
|
|
123
|
+
mtimeMs = (await stat(filePath)).mtimeMs;
|
|
124
|
+
const cached = compiledFileCache.get(filePath);
|
|
125
|
+
if (cached && cached.mtimeMs === mtimeMs) {
|
|
126
|
+
touchCacheEntry(filePath, cached);
|
|
127
|
+
return cached.code;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// stat failed — let the build surface the real error.
|
|
132
|
+
}
|
|
133
|
+
const tmpDir = await mkdtemp(join(tmpdir(), 'lobu-connector-worker-'));
|
|
134
|
+
const outPath = join(tmpDir, 'out.mjs');
|
|
135
|
+
try {
|
|
136
|
+
await build({
|
|
137
|
+
entryPoints: [filePath],
|
|
138
|
+
outfile: outPath,
|
|
139
|
+
bundle: true,
|
|
140
|
+
format: 'esm',
|
|
141
|
+
platform: 'node',
|
|
142
|
+
target: 'node20',
|
|
143
|
+
alias: { lobu: SDK_ENTRY, '@lobu/connector-sdk': SDK_ENTRY },
|
|
144
|
+
banner: {
|
|
145
|
+
js: `import { createRequire as __createRequire } from 'module'; const require = __createRequire(import.meta.url);`,
|
|
146
|
+
},
|
|
147
|
+
plugins: [npmSpecifierPlugin],
|
|
148
|
+
external: [...EXTERNAL_RUNTIME_DEPS],
|
|
149
|
+
write: true,
|
|
150
|
+
minify: false,
|
|
151
|
+
sourcemap: false,
|
|
152
|
+
});
|
|
153
|
+
const code = await readFile(outPath, 'utf-8');
|
|
154
|
+
if (mtimeMs !== null)
|
|
155
|
+
touchCacheEntry(filePath, { mtimeMs, code });
|
|
156
|
+
return code;
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
await rm(tmpDir, { recursive: true, force: true });
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=compile-connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-connector.js","sourceRoot":"","sources":["../src/compile-connector.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/client.d.ts
CHANGED
|
@@ -64,7 +64,16 @@ export interface PollResponse {
|
|
|
64
64
|
connection_id?: number;
|
|
65
65
|
/** Feed ID (for sync runs) */
|
|
66
66
|
feed_id?: number;
|
|
67
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Compiled connector code, shipped inline. Used for device workers and
|
|
69
|
+
* DB-only user-uploaded connectors that don't have the connector source
|
|
70
|
+
* on disk. Fleet workers receive a bare `connector_key` only (no
|
|
71
|
+
* inline code) and resolve + compile the source from their own
|
|
72
|
+
* filesystem to keep poll responses small — see worker-api.ts handler
|
|
73
|
+
* comment + lobu#772 review for why we send the key and not an absolute
|
|
74
|
+
* path (gateway and worker images have different paths to the same
|
|
75
|
+
* sources).
|
|
76
|
+
*/
|
|
68
77
|
compiled_code?: string;
|
|
69
78
|
/** Connection session state (browser cookies, etc.) */
|
|
70
79
|
session_state?: Record<string, unknown>;
|
|
@@ -201,6 +210,7 @@ export declare class WorkerClient implements ExecutorClient {
|
|
|
201
210
|
version?: string;
|
|
202
211
|
});
|
|
203
212
|
private authHeaders;
|
|
213
|
+
private post;
|
|
204
214
|
private requestJson;
|
|
205
215
|
private requestVoid;
|
|
206
216
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,SAAS,CACP,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE;QACT,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,cAAc,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACnE,kBAAkB,CAAC,GAAG,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,gBAAgB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,cAAc,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5E,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAMD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,GAAG,MAAM,CAAC;IACrE,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtD,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,sBAAsB;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,wBAAwB;IACxB,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,0CAA0C;IAC1C,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,oBAAoB;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/client.js
CHANGED
|
@@ -27,11 +27,9 @@ export class WorkerClient {
|
|
|
27
27
|
this.version = config.version ?? '1.0.0';
|
|
28
28
|
}
|
|
29
29
|
authHeaders() {
|
|
30
|
-
|
|
31
|
-
return {};
|
|
32
|
-
return { Authorization: `Bearer ${this.authToken}` };
|
|
30
|
+
return this.authToken ? { Authorization: `Bearer ${this.authToken}` } : {};
|
|
33
31
|
}
|
|
34
|
-
async
|
|
32
|
+
async post(path, body) {
|
|
35
33
|
const response = await fetch(`${this.apiUrl}${path}`, {
|
|
36
34
|
method: 'POST',
|
|
37
35
|
headers: {
|
|
@@ -44,21 +42,14 @@ export class WorkerClient {
|
|
|
44
42
|
const responseText = await response.text();
|
|
45
43
|
throw new Error(`${path} failed: ${response.status} ${response.statusText} ${responseText}`);
|
|
46
44
|
}
|
|
45
|
+
return response;
|
|
46
|
+
}
|
|
47
|
+
async requestJson(path, body) {
|
|
48
|
+
const response = await this.post(path, body);
|
|
47
49
|
return response.json();
|
|
48
50
|
}
|
|
49
51
|
async requestVoid(path, body) {
|
|
50
|
-
|
|
51
|
-
method: 'POST',
|
|
52
|
-
headers: {
|
|
53
|
-
'Content-Type': 'application/json',
|
|
54
|
-
...this.authHeaders(),
|
|
55
|
-
},
|
|
56
|
-
body: JSON.stringify(body),
|
|
57
|
-
});
|
|
58
|
-
if (!response.ok) {
|
|
59
|
-
const responseText = await response.text();
|
|
60
|
-
throw new Error(`${path} failed: ${response.status} ${response.statusText} ${responseText}`);
|
|
61
|
-
}
|
|
52
|
+
await this.post(path, body);
|
|
62
53
|
}
|
|
63
54
|
/**
|
|
64
55
|
* Poll for available runs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,CAAC;IAC1D,OAAO,GAAG,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/daemon/executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAuB,GAAG,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/daemon/executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAuB,GAAG,EAAE,MAAM,qBAAqB,CAAC;AASpE,OAAO,KAAK,EAAe,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA8C7E,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAUD;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,GAAG,EACR,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBrD"}
|