@lobu/connector-worker 6.0.1

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.
Files changed (62) hide show
  1. package/README.md +39 -0
  2. package/dist/__tests__/redact.test.d.ts +2 -0
  3. package/dist/__tests__/redact.test.d.ts.map +1 -0
  4. package/dist/__tests__/redact.test.js +135 -0
  5. package/dist/__tests__/redact.test.js.map +1 -0
  6. package/dist/bin.d.ts +11 -0
  7. package/dist/bin.d.ts.map +1 -0
  8. package/dist/bin.js +129 -0
  9. package/dist/bin.js.map +1 -0
  10. package/dist/daemon/client.d.ts +256 -0
  11. package/dist/daemon/client.d.ts.map +1 -0
  12. package/dist/daemon/client.js +152 -0
  13. package/dist/daemon/client.js.map +1 -0
  14. package/dist/daemon/executor.d.ts +25 -0
  15. package/dist/daemon/executor.d.ts.map +1 -0
  16. package/dist/daemon/executor.js +492 -0
  17. package/dist/daemon/executor.js.map +1 -0
  18. package/dist/daemon/index.d.ts +12 -0
  19. package/dist/daemon/index.d.ts.map +1 -0
  20. package/dist/daemon/index.js +9 -0
  21. package/dist/daemon/index.js.map +1 -0
  22. package/dist/daemon/worker.d.ts +54 -0
  23. package/dist/daemon/worker.d.ts.map +1 -0
  24. package/dist/daemon/worker.js +144 -0
  25. package/dist/daemon/worker.js.map +1 -0
  26. package/dist/embeddings.d.ts +9 -0
  27. package/dist/embeddings.d.ts.map +1 -0
  28. package/dist/embeddings.js +126 -0
  29. package/dist/embeddings.js.map +1 -0
  30. package/dist/executor/child-runner.d.ts +9 -0
  31. package/dist/executor/child-runner.d.ts.map +1 -0
  32. package/dist/executor/child-runner.js +317 -0
  33. package/dist/executor/child-runner.js.map +1 -0
  34. package/dist/executor/interface.d.ts +45 -0
  35. package/dist/executor/interface.d.ts.map +1 -0
  36. package/dist/executor/interface.js +2 -0
  37. package/dist/executor/interface.js.map +1 -0
  38. package/dist/executor/redact.d.ts +28 -0
  39. package/dist/executor/redact.d.ts.map +1 -0
  40. package/dist/executor/redact.js +108 -0
  41. package/dist/executor/redact.js.map +1 -0
  42. package/dist/executor/runtime.d.ts +45 -0
  43. package/dist/executor/runtime.d.ts.map +1 -0
  44. package/dist/executor/runtime.js +82 -0
  45. package/dist/executor/runtime.js.map +1 -0
  46. package/dist/executor/subprocess.d.ts +46 -0
  47. package/dist/executor/subprocess.d.ts.map +1 -0
  48. package/dist/executor/subprocess.js +378 -0
  49. package/dist/executor/subprocess.js.map +1 -0
  50. package/dist/index.d.ts +13 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +12 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/runtime-deps.d.ts +33 -0
  55. package/dist/runtime-deps.d.ts.map +1 -0
  56. package/dist/runtime-deps.js +48 -0
  57. package/dist/runtime-deps.js.map +1 -0
  58. package/dist/types.d.ts +2 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/package.json +70 -0
package/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # @lobu/connector-worker
2
+
3
+ Self-hosted Lobu memory worker. Polls the backend for sync jobs, executes connectors locally, generates embeddings, and streams results back. Private workspace package — not published to npm.
4
+
5
+ ## Usage
6
+
7
+ ```bash
8
+ connector-worker daemon --api-url https://api.example.com
9
+ ```
10
+
11
+ ## Development
12
+
13
+ ```bash
14
+ cd packages/connector-worker
15
+ API_URL=http://localhost:8787 bun run daemon
16
+ ```
17
+
18
+ ## Environment Variables
19
+
20
+ | Variable | Description | Required |
21
+ |----------|-------------|----------|
22
+ | `API_URL` | Backend API URL | Yes |
23
+ | `WORKER_ID` | Worker identifier (auto-generated if unset) | No |
24
+ | `WORKER_API_TOKEN` | Bearer token for backend auth | No |
25
+ | `WORKER_MAX_CONCURRENT_JOBS` | Max concurrent sync jobs | No |
26
+ | `EMBEDDINGS_MODEL` | Override local embedding model | No |
27
+ | `EMBEDDINGS_SERVICE_URL` | Use a remote embedding service instead of local | No |
28
+ | `GITHUB_TOKEN` | GitHub API token | No |
29
+ | `REDDIT_CLIENT_ID` / `REDDIT_CLIENT_SECRET` / `REDDIT_USER_AGENT` | Reddit API credentials | No |
30
+ | `X_USERNAME` / `X_PASSWORD` / `X_EMAIL` / `X_2FA_SECRET` / `X_COOKIES` | X/Twitter credentials | No |
31
+ | `GOOGLE_MAPS_API_KEY` | Google Maps API key | No |
32
+
33
+ ## Embeddings
34
+
35
+ Generated locally via `@xenova/transformers` with `bge-base-en-v1.5` (768 dimensions). Runs on CPU, no external API calls. Set `EMBEDDINGS_SERVICE_URL` to offload to a remote service.
36
+
37
+ ## License
38
+
39
+ BUSL-1.1. See the repository [LICENSE](../../LICENSE).
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=redact.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/redact.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,135 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { StreamRedactor, redactOutput } from '../executor/redact.js';
3
+ describe('redactOutput', () => {
4
+ test('redacts HTTP Authorization header', () => {
5
+ const input = 'GET /api\nAuthorization: Bearer abc123def456\nContent-Type: application/json';
6
+ const out = redactOutput(input);
7
+ expect(out).not.toContain('abc123def456');
8
+ expect(out).toContain('[REDACTED]');
9
+ });
10
+ test('redacts standalone Bearer tokens', () => {
11
+ const input = 'curl -H "x: Bearer eyJhbGc.payload-here.sig9_=="';
12
+ const out = redactOutput(input);
13
+ expect(out).toContain('Bearer [REDACTED]');
14
+ expect(out).not.toContain('payload-here.sig9_');
15
+ });
16
+ test('redacts JWTs anywhere they appear', () => {
17
+ const input = 'token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c more';
18
+ const out = redactOutput(input);
19
+ expect(out).not.toContain('eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9');
20
+ expect(out).toContain('[REDACTED]');
21
+ });
22
+ test('redacts CH_API_KEY env-style assignments', () => {
23
+ const input = 'env: CH_API_KEY=abcdef-12345 done';
24
+ const out = redactOutput(input);
25
+ expect(out).not.toContain('abcdef-12345');
26
+ expect(out).toContain('CH_API_KEY=[REDACTED]');
27
+ });
28
+ test('redacts api_key / access_token / secret JSON-style assignments', () => {
29
+ const variants = [
30
+ '"api_key": "longsecretvalue1234"',
31
+ '"apiKey":"longsecretvalue1234"',
32
+ "access_token = 'longsecretvalue1234'",
33
+ 'access-token: longsecretvalue1234',
34
+ 'secret="longsecretvalue1234"',
35
+ ];
36
+ for (const v of variants) {
37
+ const out = redactOutput(v);
38
+ expect(out).not.toContain('longsecretvalue1234');
39
+ expect(out).toContain('[REDACTED]');
40
+ }
41
+ });
42
+ test('preserves non-secret content', () => {
43
+ const input = 'Connector started, fetched 12 events, no errors.';
44
+ expect(redactOutput(input)).toBe(input);
45
+ });
46
+ test('handles empty input', () => {
47
+ expect(redactOutput('')).toBe('');
48
+ });
49
+ test('redacts Cookie / Set-Cookie headers as a whole', () => {
50
+ expect(redactOutput('Cookie: session=abc.def; user=alice')).toContain('Cookie: [REDACTED]');
51
+ expect(redactOutput('Set-Cookie: jwt=eyJxxx; HttpOnly')).toContain('Set-Cookie: [REDACTED]');
52
+ });
53
+ test('redacts Google OAuth ya29.* access tokens', () => {
54
+ const out = redactOutput('access_token=ya29.a0AfH6SMblahblahblah_more.morestuff');
55
+ expect(out).not.toContain('ya29.a0AfH6SMblahblahblah');
56
+ expect(out).toContain('[REDACTED]');
57
+ });
58
+ test('redacts password in URI userinfo while preserving scheme/host', () => {
59
+ const out = redactOutput('postgres://app_user:s3cretP@db.internal/mydb');
60
+ expect(out).toContain('postgres://app_user:[REDACTED]@db.internal/mydb');
61
+ expect(out).not.toContain('s3cretP');
62
+ });
63
+ test('redacts AWS_*_KEY/TOKEN/SECRET env-style assignments', () => {
64
+ expect(redactOutput('AWS_SECRET_ACCESS_KEY=AKIAlongvaluehere1234')).toContain('[REDACTED]');
65
+ expect(redactOutput('AWS_SESSION_TOKEN: longsessiontokenvalue')).toContain('[REDACTED]');
66
+ });
67
+ test('redacts refresh_token / id_token / password / client_secret', () => {
68
+ const variants = [
69
+ 'refresh_token=longvaluehere1234',
70
+ 'id_token: "longvaluehere1234"',
71
+ "password = 'longvaluehere1234'",
72
+ 'client_secret="longvaluehere1234"',
73
+ ];
74
+ for (const v of variants) {
75
+ const out = redactOutput(v);
76
+ expect(out).not.toContain('longvaluehere1234');
77
+ expect(out).toContain('[REDACTED]');
78
+ }
79
+ });
80
+ test('does not redact short api_key-like values (avoid false positives on word "key")', () => {
81
+ // The api_key pattern requires a 12+ char value to avoid eating things like
82
+ // "no apikey set" or "key: id".
83
+ const input = 'api_key: short';
84
+ expect(redactOutput(input)).toBe(input);
85
+ });
86
+ });
87
+ describe('StreamRedactor', () => {
88
+ function collect() {
89
+ let buf = '';
90
+ return { emit: (s) => (buf += s), out: () => buf };
91
+ }
92
+ test('redacts secret split across two chunks', () => {
93
+ const r = new StreamRedactor();
94
+ const c = collect();
95
+ r.process('GET /api\nAuthorization: Bear', c.emit);
96
+ r.process('er abc123secret456\nfoo\n', c.emit);
97
+ r.flush(c.emit);
98
+ expect(c.out()).not.toContain('abc123secret456');
99
+ expect(c.out()).toContain('Authorization: [REDACTED]');
100
+ });
101
+ test('emits complete lines as soon as a newline arrives', () => {
102
+ const r = new StreamRedactor();
103
+ const c = collect();
104
+ r.process('hello world\n', c.emit);
105
+ expect(c.out()).toBe('hello world\n');
106
+ });
107
+ test('flush releases trailing partial line through redactor', () => {
108
+ const r = new StreamRedactor();
109
+ const c = collect();
110
+ r.process('line1\nAuthorization: Bearer secret_long_token', c.emit);
111
+ expect(c.out()).toBe('line1\n');
112
+ r.flush(c.emit);
113
+ expect(c.out()).not.toContain('secret_long_token');
114
+ expect(c.out()).toContain('Authorization: [REDACTED]');
115
+ });
116
+ test('emits prefix when buffer would exceed cap with no newline', () => {
117
+ const r = new StreamRedactor();
118
+ const c = collect();
119
+ // 8200 chars, no newline — exceeds 8192 cap.
120
+ r.process('x'.repeat(8200), c.emit);
121
+ expect(c.out().length).toBeGreaterThan(0);
122
+ });
123
+ test('redacts a secret embedded near the cap-boundary even with no newline', () => {
124
+ const r = new StreamRedactor();
125
+ const c = collect();
126
+ // A long no-newline payload with a secret somewhere inside. Cap is
127
+ // 8192; the redactor must redact the entire combined buffer before
128
+ // emitting, otherwise a slice near the cap could split the match.
129
+ const payload = 'x'.repeat(8000) + 'Authorization: Bearer abc123secret456 ' + 'y'.repeat(500);
130
+ r.process(payload, c.emit);
131
+ expect(c.out()).not.toContain('abc123secret456');
132
+ expect(c.out()).toContain('Authorization: [REDACTED]');
133
+ });
134
+ });
135
+ //# sourceMappingURL=redact.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.test.js","sourceRoot":"","sources":["../../src/__tests__/redact.test.ts"],"names":[],"mappings":"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"}
package/dist/bin.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @owletto/worker CLI
4
+ *
5
+ * CLI entry point for the worker package.
6
+ *
7
+ * Commands:
8
+ * daemon - Start worker daemon (polls backend for jobs)
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
package/dist/bin.js ADDED
@@ -0,0 +1,129 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @owletto/worker CLI
4
+ *
5
+ * CLI entry point for the worker package.
6
+ *
7
+ * Commands:
8
+ * daemon - Start worker daemon (polls backend for jobs)
9
+ */
10
+ import { randomUUID } from 'node:crypto';
11
+ import { createRequire } from 'node:module';
12
+ import { startDaemon } from './daemon/index.js';
13
+ import { assertExternalDepsResolvable } from './runtime-deps.js';
14
+ function printUsage() {
15
+ console.log(`
16
+ @owletto/worker - Self-hosted worker for Owletto - connectors and embedding generation
17
+
18
+ Usage:
19
+ connector-worker <command> [options]
20
+
21
+ Commands:
22
+ daemon Start worker daemon (polls backend for jobs)
23
+
24
+ Options:
25
+ --api-url <url> Backend API URL (required)
26
+ --worker-id <id> Worker ID (default: auto-generated UUID)
27
+ --version <ver> Worker version (default: 1.0.0)
28
+ --help Show this help message
29
+
30
+ Environment Variables:
31
+ API_URL Backend API URL
32
+ WORKER_ID Worker ID
33
+ GITHUB_TOKEN GitHub API token (for GitHub feed)
34
+ GOOGLE_MAPS_API_KEY Google Maps API key
35
+ X_USERNAME X/Twitter username
36
+ X_PASSWORD X/Twitter password
37
+ X_EMAIL X/Twitter email
38
+ EMBEDDINGS_SERVICE_URL Embeddings service URL (if set, uses service; otherwise local)
39
+ WORKER_API_TOKEN Optional bearer token for /api/workers/* authentication
40
+
41
+ Examples:
42
+ # Worker daemon
43
+ connector-worker daemon --api-url https://api.example.com
44
+ `);
45
+ }
46
+ function parseArgs(args) {
47
+ const command = args[0] || '';
48
+ const options = {};
49
+ for (let i = 1; i < args.length; i++) {
50
+ const arg = args[i];
51
+ if (arg.startsWith('--')) {
52
+ const key = arg.slice(2);
53
+ const value = args[i + 1];
54
+ if (value && !value.startsWith('--')) {
55
+ options[key] = value;
56
+ i++;
57
+ }
58
+ else {
59
+ options[key] = 'true';
60
+ }
61
+ }
62
+ }
63
+ return { command, options };
64
+ }
65
+ function buildEnv() {
66
+ return {
67
+ ENVIRONMENT: process.env.ENVIRONMENT || 'production',
68
+ GITHUB_TOKEN: process.env.GITHUB_TOKEN,
69
+ GOOGLE_MAPS_API_KEY: process.env.GOOGLE_MAPS_API_KEY,
70
+ X_USERNAME: process.env.X_USERNAME,
71
+ X_PASSWORD: process.env.X_PASSWORD,
72
+ X_EMAIL: process.env.X_EMAIL,
73
+ X_2FA_SECRET: process.env.X_2FA_SECRET,
74
+ X_COOKIES: process.env.X_COOKIES,
75
+ REDDIT_CLIENT_ID: process.env.REDDIT_CLIENT_ID,
76
+ REDDIT_CLIENT_SECRET: process.env.REDDIT_CLIENT_SECRET,
77
+ REDDIT_USER_AGENT: process.env.REDDIT_USER_AGENT,
78
+ WORKER_API_TOKEN: process.env.WORKER_API_TOKEN,
79
+ };
80
+ }
81
+ async function main() {
82
+ const args = process.argv.slice(2);
83
+ const { command, options } = parseArgs(args);
84
+ if (!command || command === '--help' || options.help) {
85
+ printUsage();
86
+ process.exit(0);
87
+ }
88
+ const apiUrl = options['api-url'] || process.env.API_URL;
89
+ if (!apiUrl) {
90
+ console.error('Error: --api-url or API_URL environment variable is required');
91
+ process.exit(1);
92
+ }
93
+ const workerId = options['worker-id'] || process.env.WORKER_ID || `worker-${randomUUID().slice(0, 8)}`;
94
+ const version = options.version || '1.0.0';
95
+ switch (command) {
96
+ case 'daemon': {
97
+ // Crash loud at boot if the runtime image is missing any connector
98
+ // external dep, instead of letting every feed silently fail with
99
+ // "Missing npm dependency: X" hours later.
100
+ assertExternalDepsResolvable(createRequire(import.meta.url).resolve);
101
+ console.error(`[cli] Starting worker daemon (ID: ${workerId}, API: ${apiUrl})`);
102
+ const env = buildEnv();
103
+ const maxConcurrentJobs = process.env.WORKER_MAX_CONCURRENT_JOBS
104
+ ? Math.max(1, Number.parseInt(process.env.WORKER_MAX_CONCURRENT_JOBS, 10))
105
+ : undefined;
106
+ await startDaemon({
107
+ apiUrl,
108
+ workerId,
109
+ version,
110
+ workerApiToken: process.env.WORKER_API_TOKEN,
111
+ capabilities: {
112
+ browser: true,
113
+ },
114
+ ...(Number.isFinite(maxConcurrentJobs) ? { maxConcurrentJobs } : {}),
115
+ }, env);
116
+ break;
117
+ }
118
+ default: {
119
+ console.error(`Unknown command: ${command}`);
120
+ printUsage();
121
+ process.exit(1);
122
+ }
123
+ }
124
+ }
125
+ main().catch((err) => {
126
+ console.error('Fatal error:', err);
127
+ process.exit(1);
128
+ });
129
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Worker API Client
3
+ *
4
+ * HTTP client for communicating with the backend worker API endpoints.
5
+ * Updated for V1 integration platform: runs-based job model.
6
+ */
7
+ /**
8
+ * Interface for job execution clients.
9
+ * Implemented by WorkerClient (HTTP).
10
+ * Allows the executor to work without coupling to a specific transport.
11
+ */
12
+ export interface ExecutorClient {
13
+ readonly id: string;
14
+ poll(): Promise<PollResponse>;
15
+ heartbeat(runId: number, progress?: {
16
+ items_collected_so_far?: number;
17
+ current_page?: number;
18
+ elapsed_ms?: number;
19
+ }): Promise<void>;
20
+ stream(batch: StreamBatch): Promise<void>;
21
+ complete(req: CompleteRequest): Promise<void>;
22
+ completeAction(req: CompleteActionRequest): Promise<void>;
23
+ fetchEventsForEmbedding(eventIds: number[]): Promise<EmbedEvent[]>;
24
+ completeEmbeddings(req: CompleteEmbeddingsRequest): Promise<void>;
25
+ emitAuthArtifact(req: EmitAuthArtifactRequest): Promise<void>;
26
+ pollAuthSignal(req: PollAuthSignalRequest): Promise<PollAuthSignalResponse>;
27
+ completeAuth(req: CompleteAuthRequest): Promise<void>;
28
+ }
29
+ export interface WorkerCapabilities {
30
+ browser: boolean;
31
+ }
32
+ export interface OAuthCredentials {
33
+ accessToken: string;
34
+ provider: string;
35
+ refreshToken?: string | null;
36
+ expiresAt?: string | null;
37
+ scope?: string | null;
38
+ }
39
+ export interface PollResponse {
40
+ next_poll_seconds?: number;
41
+ /** Run ID (replaces execution_id) */
42
+ run_id?: number;
43
+ /** Run type: 'sync', 'action', 'watcher', 'embed_backfill', or 'auth' */
44
+ run_type?: 'sync' | 'action' | 'watcher' | 'embed_backfill' | 'auth';
45
+ /** Auth profile ID (for auth runs) */
46
+ auth_profile_id?: number;
47
+ /** Previous credentials on the auth profile (for re-auth flows) */
48
+ previous_credentials?: Record<string, unknown> | null;
49
+ /** Connector key, e.g. 'google.gmail' */
50
+ connector_key?: string;
51
+ /** Feed key for sync runs, e.g. 'threads' */
52
+ feed_key?: string;
53
+ /** Feed config */
54
+ config?: Record<string, unknown>;
55
+ /** Feed checkpoint */
56
+ checkpoint?: Record<string, unknown>;
57
+ /** Entity IDs from feed */
58
+ entity_ids?: number[];
59
+ /** OAuth credentials */
60
+ credentials?: OAuthCredentials | null;
61
+ /** Stored env_keys credentials from DB */
62
+ connection_credentials?: Record<string, unknown>;
63
+ /** Connection ID */
64
+ connection_id?: number;
65
+ /** Feed ID (for sync runs) */
66
+ feed_id?: number;
67
+ /** Compiled connector code */
68
+ compiled_code?: string;
69
+ /** Connection session state (browser cookies, etc.) */
70
+ session_state?: Record<string, unknown>;
71
+ /** Connector version */
72
+ connector_version?: string;
73
+ /** Action key (for action runs) */
74
+ action_key?: string;
75
+ /** Action input (for action runs) */
76
+ action_input?: Record<string, unknown>;
77
+ /** Watcher ID (for watcher runs) */
78
+ watcher_id?: number;
79
+ /** Window ID (for watcher runs) */
80
+ window_id?: number;
81
+ /** Compiled reaction script (for watcher runs) */
82
+ reaction_script_compiled?: string;
83
+ /** Extracted data from the completed window (for watcher runs) */
84
+ extracted_data?: Record<string, unknown>;
85
+ /** Entity info (for watcher runs) */
86
+ entity?: {
87
+ id: number;
88
+ name: string;
89
+ entity_type: string;
90
+ metadata: Record<string, unknown>;
91
+ };
92
+ /** Window metadata (for watcher runs) */
93
+ window_start?: string;
94
+ window_end?: string;
95
+ granularity?: string;
96
+ content_analyzed?: number;
97
+ /** Organization ID (for watcher runs) */
98
+ organization_id?: string;
99
+ }
100
+ export interface ContentItem {
101
+ id: string;
102
+ title?: string;
103
+ payload_text: string;
104
+ author_name?: string;
105
+ occurred_at: string;
106
+ source_url?: string;
107
+ score?: number;
108
+ metadata?: Record<string, unknown>;
109
+ origin_parent_id?: string;
110
+ embedding?: number[];
111
+ origin_type?: string;
112
+ semantic_type?: string;
113
+ }
114
+ export interface StreamBatch {
115
+ type: 'batch';
116
+ run_id: number;
117
+ items: ContentItem[];
118
+ checkpoint?: Record<string, unknown>;
119
+ }
120
+ export interface CompleteRequest {
121
+ run_id: number;
122
+ worker_id: string;
123
+ status: 'success' | 'failed';
124
+ items_collected?: number;
125
+ error_message?: string;
126
+ checkpoint?: Record<string, unknown>;
127
+ auth_update?: Record<string, unknown>;
128
+ /** Tail of subprocess stdout+stderr (already redacted in the worker). */
129
+ output_tail?: string;
130
+ /** Subprocess exit code, if the child terminated without an IPC result. */
131
+ exit_code?: number | null;
132
+ /** Subprocess exit signal, if any. */
133
+ exit_signal?: string | null;
134
+ /** Categorized exit reason: ok | error_message | timeout | oom | crash. */
135
+ exit_reason?: 'ok' | 'error_message' | 'timeout' | 'oom' | 'crash';
136
+ }
137
+ export interface CompleteActionRequest {
138
+ run_id: number;
139
+ worker_id: string;
140
+ status: 'success' | 'failed';
141
+ action_output?: Record<string, unknown>;
142
+ error_message?: string;
143
+ }
144
+ export interface EmbedEvent {
145
+ id: number;
146
+ content: string;
147
+ title: string | null;
148
+ }
149
+ export interface CompleteEmbeddingsRequest {
150
+ run_id: number;
151
+ worker_id: string;
152
+ embeddings: Array<{
153
+ event_id: number;
154
+ embedding: number[];
155
+ }>;
156
+ error_message?: string;
157
+ }
158
+ export interface EmitAuthArtifactRequest {
159
+ run_id: number;
160
+ worker_id: string;
161
+ artifact: Record<string, unknown>;
162
+ }
163
+ export interface PollAuthSignalRequest {
164
+ run_id: number;
165
+ worker_id: string;
166
+ signal_name: string;
167
+ }
168
+ export interface PollAuthSignalResponse {
169
+ signal?: Record<string, unknown>;
170
+ }
171
+ export interface CompleteAuthRequest {
172
+ run_id: number;
173
+ worker_id: string;
174
+ status: 'success' | 'failed';
175
+ credentials?: Record<string, unknown>;
176
+ metadata?: Record<string, unknown>;
177
+ error_message?: string;
178
+ /** Tail of subprocess stdout+stderr (already redacted in the worker). */
179
+ output_tail?: string;
180
+ /** Subprocess exit code, if the child terminated without an IPC result. */
181
+ exit_code?: number | null;
182
+ /** Subprocess exit signal, if any. */
183
+ exit_signal?: string | null;
184
+ /** Categorized exit reason: ok | error_message | timeout | oom | crash. */
185
+ exit_reason?: 'ok' | 'error_message' | 'timeout' | 'oom' | 'crash';
186
+ }
187
+ /**
188
+ * Worker API Client
189
+ */
190
+ export declare class WorkerClient implements ExecutorClient {
191
+ private apiUrl;
192
+ private workerId;
193
+ private capabilities;
194
+ private authToken?;
195
+ private version;
196
+ constructor(config: {
197
+ apiUrl: string;
198
+ workerId: string;
199
+ authToken?: string;
200
+ capabilities: WorkerCapabilities;
201
+ version?: string;
202
+ });
203
+ private authHeaders;
204
+ private requestJson;
205
+ private requestVoid;
206
+ /**
207
+ * Poll for available runs
208
+ */
209
+ poll(): Promise<PollResponse>;
210
+ /**
211
+ * Send heartbeat for active run
212
+ */
213
+ heartbeat(runId: number, progress?: {
214
+ items_collected_so_far?: number;
215
+ current_page?: number;
216
+ elapsed_ms?: number;
217
+ }): Promise<void>;
218
+ /**
219
+ * Stream content batch to backend
220
+ */
221
+ stream(batch: StreamBatch): Promise<void>;
222
+ /**
223
+ * Report sync run completion
224
+ */
225
+ complete(req: CompleteRequest): Promise<void>;
226
+ /**
227
+ * Report action run completion
228
+ */
229
+ completeAction(req: CompleteActionRequest): Promise<void>;
230
+ /**
231
+ * Fetch events needing embeddings
232
+ */
233
+ fetchEventsForEmbedding(eventIds: number[]): Promise<EmbedEvent[]>;
234
+ /**
235
+ * Submit generated embeddings
236
+ */
237
+ completeEmbeddings(req: CompleteEmbeddingsRequest): Promise<void>;
238
+ /**
239
+ * Emit an auth artifact (QR, redirect URL, prompt) for the UI to render.
240
+ */
241
+ emitAuthArtifact(req: EmitAuthArtifactRequest): Promise<void>;
242
+ /**
243
+ * Poll for a signal sent by the UI (OAuth callback, form submit, cancel).
244
+ */
245
+ pollAuthSignal(req: PollAuthSignalRequest): Promise<PollAuthSignalResponse>;
246
+ /**
247
+ * Report auth run completion — writes credentials + metadata to auth_profiles.
248
+ */
249
+ completeAuth(req: CompleteAuthRequest): Promise<void>;
250
+ /**
251
+ * Health check
252
+ */
253
+ healthCheck(): Promise<boolean>;
254
+ get id(): string;
255
+ }
256
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"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"}