@spool-lab/core 0.3.5 → 0.4.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 (81) hide show
  1. package/LICENSE +11 -0
  2. package/README.md +8 -5
  3. package/dist/db/db.d.ts +4 -0
  4. package/dist/db/db.d.ts.map +1 -1
  5. package/dist/db/db.js +103 -121
  6. package/dist/db/db.js.map +1 -1
  7. package/dist/db/queries.d.ts +9 -14
  8. package/dist/db/queries.d.ts.map +1 -1
  9. package/dist/db/queries.js +85 -179
  10. package/dist/db/queries.js.map +1 -1
  11. package/dist/index.d.ts +0 -19
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +0 -14
  14. package/dist/index.js.map +1 -1
  15. package/dist/sync/watcher.d.ts +38 -8
  16. package/dist/sync/watcher.d.ts.map +1 -1
  17. package/dist/sync/watcher.js +158 -43
  18. package/dist/sync/watcher.js.map +1 -1
  19. package/dist/types.d.ts +8 -18
  20. package/dist/types.d.ts.map +1 -1
  21. package/package.json +3 -10
  22. package/dist/connectors/capabilities/cookies-chrome.d.ts +0 -19
  23. package/dist/connectors/capabilities/cookies-chrome.d.ts.map +0 -1
  24. package/dist/connectors/capabilities/cookies-chrome.js +0 -199
  25. package/dist/connectors/capabilities/cookies-chrome.js.map +0 -1
  26. package/dist/connectors/capabilities/exec-impl.d.ts +0 -3
  27. package/dist/connectors/capabilities/exec-impl.d.ts.map +0 -1
  28. package/dist/connectors/capabilities/exec-impl.js +0 -108
  29. package/dist/connectors/capabilities/exec-impl.js.map +0 -1
  30. package/dist/connectors/capabilities/fetch-impl.d.ts +0 -3
  31. package/dist/connectors/capabilities/fetch-impl.d.ts.map +0 -1
  32. package/dist/connectors/capabilities/fetch-impl.js +0 -4
  33. package/dist/connectors/capabilities/fetch-impl.js.map +0 -1
  34. package/dist/connectors/capabilities/index.d.ts +0 -6
  35. package/dist/connectors/capabilities/index.d.ts.map +0 -1
  36. package/dist/connectors/capabilities/index.js +0 -6
  37. package/dist/connectors/capabilities/index.js.map +0 -1
  38. package/dist/connectors/capabilities/log-impl.d.ts +0 -3
  39. package/dist/connectors/capabilities/log-impl.d.ts.map +0 -1
  40. package/dist/connectors/capabilities/log-impl.js +0 -26
  41. package/dist/connectors/capabilities/log-impl.js.map +0 -1
  42. package/dist/connectors/capabilities/sqlite-impl.d.ts +0 -3
  43. package/dist/connectors/capabilities/sqlite-impl.d.ts.map +0 -1
  44. package/dist/connectors/capabilities/sqlite-impl.js +0 -19
  45. package/dist/connectors/capabilities/sqlite-impl.js.map +0 -1
  46. package/dist/connectors/loader.d.ts +0 -47
  47. package/dist/connectors/loader.d.ts.map +0 -1
  48. package/dist/connectors/loader.js +0 -328
  49. package/dist/connectors/loader.js.map +0 -1
  50. package/dist/connectors/npm-install.d.ts +0 -26
  51. package/dist/connectors/npm-install.d.ts.map +0 -1
  52. package/dist/connectors/npm-install.js +0 -71
  53. package/dist/connectors/npm-install.js.map +0 -1
  54. package/dist/connectors/prerequisites.d.ts +0 -14
  55. package/dist/connectors/prerequisites.d.ts.map +0 -1
  56. package/dist/connectors/prerequisites.js +0 -109
  57. package/dist/connectors/prerequisites.js.map +0 -1
  58. package/dist/connectors/registry-fetch.d.ts +0 -22
  59. package/dist/connectors/registry-fetch.d.ts.map +0 -1
  60. package/dist/connectors/registry-fetch.js +0 -54
  61. package/dist/connectors/registry-fetch.js.map +0 -1
  62. package/dist/connectors/registry.d.ts +0 -23
  63. package/dist/connectors/registry.d.ts.map +0 -1
  64. package/dist/connectors/registry.js +0 -59
  65. package/dist/connectors/registry.js.map +0 -1
  66. package/dist/connectors/sync-engine.d.ts +0 -30
  67. package/dist/connectors/sync-engine.d.ts.map +0 -1
  68. package/dist/connectors/sync-engine.js +0 -589
  69. package/dist/connectors/sync-engine.js.map +0 -1
  70. package/dist/connectors/sync-scheduler.d.ts +0 -56
  71. package/dist/connectors/sync-scheduler.d.ts.map +0 -1
  72. package/dist/connectors/sync-scheduler.js +0 -238
  73. package/dist/connectors/sync-scheduler.js.map +0 -1
  74. package/dist/connectors/trust-store.d.ts +0 -13
  75. package/dist/connectors/trust-store.d.ts.map +0 -1
  76. package/dist/connectors/trust-store.js +0 -48
  77. package/dist/connectors/trust-store.js.map +0 -1
  78. package/dist/connectors/types.d.ts +0 -111
  79. package/dist/connectors/types.d.ts.map +0 -1
  80. package/dist/connectors/types.js +0 -50
  81. package/dist/connectors/types.js.map +0 -1
@@ -1,108 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import { readdirSync } from 'node:fs';
3
- import { homedir } from 'node:os';
4
- import { join } from 'node:path';
5
- const DEFAULT_TIMEOUT = 60_000;
6
- function buildEnrichedPath() {
7
- const home = homedir();
8
- const base = process.env['PATH'] ?? '';
9
- const nvmBins = [];
10
- const versionsDir = join(home, '.nvm', 'versions', 'node');
11
- try {
12
- for (const d of readdirSync(versionsDir)) {
13
- if (d.startsWith('v'))
14
- nvmBins.push(join(versionsDir, d, 'bin'));
15
- }
16
- nvmBins.sort().reverse();
17
- }
18
- catch { }
19
- const extras = [
20
- '/opt/homebrew/bin',
21
- '/usr/local/bin',
22
- `${home}/.local/bin`,
23
- `${home}/.nvm/current/bin`,
24
- `${home}/.fnm/aliases/default/bin`,
25
- ...nvmBins,
26
- ];
27
- return [...extras, base].join(':');
28
- }
29
- /** POSIX single-quote escaping: wraps in '...' and escapes embedded single quotes. */
30
- function shellQuote(s) {
31
- return `'${s.replace(/'/g, `'\\''`)}'`;
32
- }
33
- let enrichedPath = null;
34
- export function makeExecCapability() {
35
- if (!enrichedPath)
36
- enrichedPath = buildEnrichedPath();
37
- const isWin = process.platform === 'win32';
38
- return {
39
- run(bin, args, opts) {
40
- const timeout = opts?.timeout ?? DEFAULT_TIMEOUT;
41
- return new Promise((resolve, reject) => {
42
- // GUI-launched apps on macOS don't inherit the user's shell env (no
43
- // proxy vars, no nvm PATH, etc.) — running through a login shell
44
- // sources .zprofile / .bash_profile so subprocesses get a realistic
45
- // env. zsh additionally needs -i to source .zshrc where most users
46
- // keep proxy/PATH tweaks; bash -i emits "cannot set terminal process
47
- // group" warnings in non-TTY contexts (eg. CI) so we stick to plain
48
- // -lc for bash and rely on .bash_profile to source .bashrc as is
49
- // standard. On Windows there is no equivalent concept, spawn direct.
50
- const shellPath = process.env['SHELL'] || '/bin/zsh';
51
- const useInteractive = /\bzsh$/.test(shellPath);
52
- const proc = isWin
53
- ? spawn(bin, args, {
54
- stdio: ['pipe', 'pipe', 'pipe'],
55
- env: { ...process.env, PATH: enrichedPath },
56
- })
57
- : spawn(shellPath, [useInteractive ? '-ilc' : '-lc', [bin, ...args].map(shellQuote).join(' ')], {
58
- stdio: ['pipe', 'pipe', 'pipe'],
59
- env: { ...process.env, PATH: enrichedPath },
60
- // Run in own process group so timeout kills the inner command
61
- // too, not just the shell wrapper.
62
- detached: true,
63
- });
64
- let stdout = '';
65
- let stderr = '';
66
- let timedOut = false;
67
- const killGroup = () => {
68
- if (!isWin && proc.pid) {
69
- // Kill the whole process group so the shell wrapper AND the
70
- // inner command both terminate. Without this, killing only the
71
- // shell leaves the inner command orphaned and stdio pipes open.
72
- try {
73
- process.kill(-proc.pid, 'SIGKILL');
74
- }
75
- catch {
76
- proc.kill('SIGKILL');
77
- }
78
- }
79
- else {
80
- proc.kill();
81
- }
82
- };
83
- const timer = setTimeout(() => {
84
- timedOut = true;
85
- killGroup();
86
- // Resolve immediately rather than waiting for stdio drain — the
87
- // 'close' handler may not fire promptly when the process group is
88
- // killed because orphaned descendants can keep pipes open.
89
- reject(new Error(`Process timed out after ${timeout}ms`));
90
- }, timeout);
91
- proc.stdout.on('data', (d) => { stdout += d.toString(); });
92
- proc.stderr.on('data', (d) => { stderr += d.toString(); });
93
- proc.on('close', () => {
94
- clearTimeout(timer);
95
- if (!timedOut) {
96
- resolve({ stdout, stderr, exitCode: proc.exitCode ?? 1 });
97
- }
98
- });
99
- proc.on('error', (err) => {
100
- clearTimeout(timer);
101
- if (!timedOut)
102
- reject(err);
103
- });
104
- });
105
- },
106
- };
107
- }
108
- //# sourceMappingURL=exec-impl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec-impl.js","sourceRoot":"","sources":["../../../src/connectors/capabilities/exec-impl.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { FetchCapability } from '@spool-lab/connector-sdk';
2
- export declare function makeFetchCapability(fetchFn?: typeof globalThis.fetch): FetchCapability;
3
- //# sourceMappingURL=fetch-impl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-impl.d.ts","sourceRoot":"","sources":["../../../src/connectors/capabilities/fetch-impl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,wBAAgB,mBAAmB,CACjC,OAAO,GAAE,OAAO,UAAU,CAAC,KAAwB,GAClD,eAAe,CAEjB"}
@@ -1,4 +0,0 @@
1
- export function makeFetchCapability(fetchFn = globalThis.fetch) {
2
- return fetchFn;
3
- }
4
- //# sourceMappingURL=fetch-impl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-impl.js","sourceRoot":"","sources":["../../../src/connectors/capabilities/fetch-impl.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CACjC,UAAmC,UAAU,CAAC,KAAK;IAEnD,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -1,6 +0,0 @@
1
- export { makeFetchCapability } from './fetch-impl.js';
2
- export { makeChromeCookiesCapability } from './cookies-chrome.js';
3
- export { makeLogCapabilityFor } from './log-impl.js';
4
- export { makeSqliteCapability } from './sqlite-impl.js';
5
- export { makeExecCapability } from './exec-impl.js';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connectors/capabilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,6 +0,0 @@
1
- export { makeFetchCapability } from './fetch-impl.js';
2
- export { makeChromeCookiesCapability } from './cookies-chrome.js';
3
- export { makeLogCapabilityFor } from './log-impl.js';
4
- export { makeSqliteCapability } from './sqlite-impl.js';
5
- export { makeExecCapability } from './exec-impl.js';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/connectors/capabilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,3 +0,0 @@
1
- import type { LogCapability } from '@spool-lab/connector-sdk';
2
- export declare function makeLogCapabilityFor(connectorId: string): LogCapability;
3
- //# sourceMappingURL=log-impl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-impl.d.ts","sourceRoot":"","sources":["../../../src/connectors/capabilities/log-impl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,0BAA0B,CAAA;AAExE,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAuCvE"}
@@ -1,26 +0,0 @@
1
- import { Effect } from 'effect';
2
- export function makeLogCapabilityFor(connectorId) {
3
- const baseAttrs = { 'connector.id': connectorId };
4
- const emit = (level, msg, fields) => {
5
- const attrs = { ...baseAttrs, ...fields };
6
- const effect = level === 'Debug' ? Effect.logDebug(msg) :
7
- level === 'Info' ? Effect.logInfo(msg) :
8
- level === 'Warning' ? Effect.logWarning(msg) :
9
- Effect.logError(msg);
10
- Effect.runFork(effect.pipe(Effect.annotateLogs(attrs)));
11
- };
12
- return {
13
- debug(msg, fields) { emit('Debug', msg, fields); },
14
- info(msg, fields) { emit('Info', msg, fields); },
15
- warn(msg, fields) { emit('Warning', msg, fields); },
16
- error(msg, fields) { emit('Error', msg, fields); },
17
- async span(name, fn, opts) {
18
- const attrs = { ...baseAttrs, ...opts?.attributes };
19
- return Effect.runPromise(Effect.tryPromise({
20
- try: fn,
21
- catch: e => e,
22
- }).pipe(Effect.withSpan(`connector.${name}`, { attributes: attrs })));
23
- },
24
- };
25
- }
26
- //# sourceMappingURL=log-impl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-impl.js","sourceRoot":"","sources":["../../../src/connectors/capabilities/log-impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAG/B,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACtD,MAAM,SAAS,GAAc,EAAE,cAAc,EAAE,WAAW,EAAE,CAAA;IAE5D,MAAM,IAAI,GAAG,CACX,KAA6C,EAC7C,GAAW,EACX,MAAkB,EAClB,EAAE;QACF,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,EAAE,CAAA;QACzC,MAAM,MAAM,GACV,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1C,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC9C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QACtB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC,CAAA;IAED,OAAO;QACL,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC;QAClD,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC;QAEjD,KAAK,CAAC,IAAI,CACR,IAAY,EACZ,EAAoB,EACpB,IAAiC;YAEjC,MAAM,KAAK,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAA;YACnD,OAAO,MAAM,CAAC,UAAU,CACtB,MAAM,CAAC,UAAU,CAAC;gBAChB,GAAG,EAAE,EAAE;gBACP,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aACd,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAC5D,CACF,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { SqliteCapability } from '@spool-lab/connector-sdk';
2
- export declare function makeSqliteCapability(): SqliteCapability;
3
- //# sourceMappingURL=sqlite-impl.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-impl.d.ts","sourceRoot":"","sources":["../../../src/connectors/capabilities/sqlite-impl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAmC,MAAM,0BAA0B,CAAA;AAEjG,wBAAgB,oBAAoB,IAAI,gBAAgB,CAgBvD"}
@@ -1,19 +0,0 @@
1
- import Database from 'better-sqlite3';
2
- export function makeSqliteCapability() {
3
- return {
4
- openReadonly(path) {
5
- const db = new Database(path, { readonly: true, fileMustExist: true });
6
- return {
7
- prepare(sql) {
8
- const stmt = db.prepare(sql);
9
- return {
10
- all: (...params) => stmt.all(...params),
11
- get: (...params) => stmt.get(...params),
12
- };
13
- },
14
- close: () => { db.close(); },
15
- };
16
- },
17
- };
18
- }
19
- //# sourceMappingURL=sqlite-impl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-impl.js","sourceRoot":"","sources":["../../../src/connectors/capabilities/sqlite-impl.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAGrC,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,YAAY,CAAC,IAAY;YACvB,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YACtE,OAAO;gBACL,OAAO,CAAc,GAAW;oBAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBAC5B,OAAO;wBACL,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAQ;wBAC9C,GAAG,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAkB;qBACzD,CAAA;gBACH,CAAC;gBACD,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC;aAC5B,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1,47 +0,0 @@
1
- import type { CookiesCapability, ExecCapability, FetchCapability, LogCapability, Prerequisite, PrerequisitesCapability, SqliteCapability } from '@spool-lab/connector-sdk';
2
- import type { ConnectorRegistry } from './registry.js';
3
- interface BaseLogger {
4
- info(msg: string, fields?: Record<string, unknown>): void;
5
- warn(msg: string, fields?: Record<string, unknown>): void;
6
- error(msg: string, fields?: Record<string, unknown>): void;
7
- }
8
- import { TrustStore } from './trust-store.js';
9
- export declare function validatePrerequisites(prereqs: unknown[], packageName: string): Prerequisite[];
10
- export interface CapabilityImpls {
11
- fetch: FetchCapability;
12
- cookies: CookiesCapability;
13
- sqlite: SqliteCapability;
14
- exec: ExecCapability;
15
- logFor(connectorId: string): LogCapability;
16
- /** Returns the prerequisites capability for the given package id, or undefined if not supported. */
17
- prerequisitesFor?: (packageId: string) => PrerequisitesCapability;
18
- }
19
- export interface LoaderLogger extends BaseLogger {
20
- child?(attrs: Record<string, unknown>): LoaderLogger;
21
- }
22
- export interface LoadDeps {
23
- connectorsDir: string;
24
- capabilityImpls: CapabilityImpls;
25
- registry: ConnectorRegistry;
26
- log: LoaderLogger;
27
- trustStore: TrustStore;
28
- }
29
- export type LoadResult = {
30
- status: 'loaded';
31
- name: string;
32
- version: string;
33
- } | {
34
- status: 'failed';
35
- name: string;
36
- error: unknown;
37
- } | {
38
- status: 'skipped';
39
- name: string;
40
- reason: 'not-in-allowlist' | 'bad-manifest';
41
- };
42
- export interface LoadReport {
43
- loadResults: LoadResult[];
44
- }
45
- export declare function loadConnectors(deps: LoadDeps): Promise<LoadReport>;
46
- export {};
47
- //# sourceMappingURL=loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/connectors/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,aAAa,EACb,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,UAAU,UAAU;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACzD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACzD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC3D;AACD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CAgC7F;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,eAAe,CAAA;IACtB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,MAAM,EAAE,gBAAgB,CAAA;IACxB,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAAA;IAC1C,oGAAoG;IACpG,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,uBAAuB,CAAA;CAClE;AAED,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAAA;CACrD;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,GAAG,EAAE,YAAY,CAAA;IACjB,UAAU,EAAE,UAAU,CAAA;CACvB;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAAA;CAAE,CAAA;AAEpF,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC1B;AAwBD,wBAAsB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAexE"}
@@ -1,328 +0,0 @@
1
- import { existsSync, readdirSync, readFileSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { pathToFileURL } from 'node:url';
4
- import { SyncError, SyncErrorCode, KNOWN_CAPABILITIES_V1 } from '@spool-lab/connector-sdk';
5
- export function validatePrerequisites(prereqs, packageName) {
6
- const result = [];
7
- const seen = new Set();
8
- for (const raw of prereqs) {
9
- const p = raw;
10
- if (!p.id || !p.name || !p.kind || !p.detect || !p.install) {
11
- throw new Error(`Invalid prerequisite in ${packageName}: missing required fields`);
12
- }
13
- if (p.install.kind !== p.kind) {
14
- throw new Error(`Prerequisite ${p.id} in ${packageName}: install.kind "${p.install.kind}" must match kind "${p.kind}"`);
15
- }
16
- if (p.kind === 'browser-extension') {
17
- const inst = p.install;
18
- if (!inst.webstoreUrl && !inst.manual) {
19
- throw new Error(`Prerequisite ${p.id} in ${packageName}: browser-extension requires webstoreUrl or manual`);
20
- }
21
- }
22
- if (p.minVersion && !(p.detect.type === 'exec' && p.detect.versionRegex)) {
23
- throw new Error(`Prerequisite ${p.id} in ${packageName}: minVersion requires detect.versionRegex`);
24
- }
25
- if (seen.has(p.id)) {
26
- throw new Error(`Prerequisite ${p.id} in ${packageName}: duplicate id`);
27
- }
28
- for (const req of p.requires ?? []) {
29
- if (!seen.has(req)) {
30
- throw new Error(`Prerequisite ${p.id} in ${packageName}: requires "${req}" must appear earlier in array`);
31
- }
32
- }
33
- seen.add(p.id);
34
- result.push(p);
35
- }
36
- return result;
37
- }
38
- const KNOWN_CAPS_SET = new Set(KNOWN_CAPABILITIES_V1);
39
- const importedModules = new Map();
40
- export async function loadConnectors(deps) {
41
- const { connectorsDir, log } = deps;
42
- importedModules.clear();
43
- deps.registry.clear();
44
- const discovered = discoverConnectorPackages(connectorsDir, log);
45
- const loadResults = [];
46
- for (const pkg of discovered) {
47
- const result = await loadOneConnector(pkg, deps);
48
- loadResults.push(result);
49
- }
50
- return { loadResults };
51
- }
52
- function discoverConnectorPackages(connectorsDir, log) {
53
- const nodeModules = join(connectorsDir, 'node_modules');
54
- if (!existsSync(nodeModules))
55
- return [];
56
- const results = [];
57
- let topEntries;
58
- try {
59
- topEntries = readdirSync(nodeModules);
60
- }
61
- catch (err) {
62
- log.error('failed to read node_modules', { error: String(err) });
63
- return results;
64
- }
65
- for (const entry of topEntries) {
66
- if (entry.startsWith('.'))
67
- continue;
68
- const entryPath = join(nodeModules, entry);
69
- if (entry.startsWith('@')) {
70
- let scopedEntries;
71
- try {
72
- scopedEntries = readdirSync(entryPath);
73
- }
74
- catch {
75
- continue;
76
- }
77
- for (const sub of scopedEntries) {
78
- if (sub.startsWith('.'))
79
- continue;
80
- results.push(...tryReadConnectorManifest(join(entryPath, sub), log));
81
- }
82
- }
83
- else {
84
- results.push(...tryReadConnectorManifest(entryPath, log));
85
- }
86
- }
87
- return results;
88
- }
89
- function tryReadConnectorManifest(pkgDir, log) {
90
- const pkgJsonPath = join(pkgDir, 'package.json');
91
- if (!existsSync(pkgJsonPath))
92
- return [];
93
- let json;
94
- try {
95
- json = JSON.parse(readFileSync(pkgJsonPath, 'utf8'));
96
- }
97
- catch (err) {
98
- log.warn('invalid package.json', { path: pkgJsonPath, error: String(err) });
99
- return [];
100
- }
101
- if (json?.spool?.type !== 'connector')
102
- return [];
103
- const packageName = String(json.name);
104
- let prerequisites;
105
- try {
106
- prerequisites = validatePrerequisites(Array.isArray(json.spool.prerequisites) ? json.spool.prerequisites : [], packageName);
107
- }
108
- catch (err) {
109
- log.error('invalid prerequisites in package', { package: packageName, error: String(err) });
110
- return [];
111
- }
112
- // Multi-connector package: spool.connectors is an array
113
- if (Array.isArray(json.spool.connectors)) {
114
- const results = [];
115
- for (const entry of json.spool.connectors) {
116
- const declared = Array.isArray(entry.capabilities) ? entry.capabilities : [];
117
- const unknown = declared.filter(c => !KNOWN_CAPS_SET.has(c));
118
- if (unknown.length > 0) {
119
- log.error('unknown capability in spool.connectors entry', {
120
- package: packageName,
121
- connectorId: entry.id,
122
- unknown,
123
- error: `Unknown capability "${unknown[0]}" — known v1 values: ${[...KNOWN_CAPS_SET].join(', ')}`,
124
- });
125
- continue;
126
- }
127
- results.push({
128
- dir: pkgDir,
129
- name: packageName,
130
- version: String(json.version ?? '0.0.0'),
131
- manifest: {
132
- id: String(entry.id ?? ''),
133
- platform: String(entry.platform ?? ''),
134
- label: String(entry.label ?? ''),
135
- description: String(entry.description ?? ''),
136
- color: String(entry.color ?? '#888'),
137
- ephemeral: Boolean(entry.ephemeral),
138
- capabilities: declared,
139
- },
140
- main: String(json.main ?? 'dist/index.js'),
141
- multi: true,
142
- prerequisites,
143
- });
144
- }
145
- return results;
146
- }
147
- // Single-connector package (original path)
148
- const declared = Array.isArray(json.spool.capabilities)
149
- ? json.spool.capabilities
150
- : [];
151
- const unknown = declared.filter(c => !KNOWN_CAPS_SET.has(c));
152
- if (unknown.length > 0) {
153
- log.error('unknown capability in spool.capabilities', {
154
- package: packageName,
155
- unknown,
156
- error: `Unknown capability "${unknown[0]}" — known v1 values: ${[...KNOWN_CAPS_SET].join(', ')}`,
157
- });
158
- return [];
159
- }
160
- return [{
161
- dir: pkgDir,
162
- name: packageName,
163
- version: String(json.version ?? '0.0.0'),
164
- manifest: {
165
- id: String(json.spool.id ?? ''),
166
- platform: String(json.spool.platform ?? ''),
167
- label: String(json.spool.label ?? ''),
168
- description: String(json.spool.description ?? ''),
169
- color: String(json.spool.color ?? '#888'),
170
- ephemeral: Boolean(json.spool.ephemeral),
171
- capabilities: declared,
172
- },
173
- main: String(json.main ?? 'dist/index.js'),
174
- multi: false,
175
- prerequisites,
176
- }];
177
- }
178
- async function loadOneConnector(pkg, deps) {
179
- if (!deps.trustStore.isTrusted(pkg.name)) {
180
- deps.log.info('skip untrusted connector', { name: pkg.name, id: pkg.manifest.id });
181
- return { status: 'skipped', name: pkg.name, reason: 'not-in-allowlist' };
182
- }
183
- try {
184
- const entryPath = join(pkg.dir, pkg.main);
185
- if (!existsSync(entryPath)) {
186
- throw new Error(`entry file not found: ${entryPath}`);
187
- }
188
- let mod;
189
- if (importedModules.has(entryPath)) {
190
- mod = importedModules.get(entryPath);
191
- }
192
- else {
193
- const modUrl = pathToFileURL(entryPath).href;
194
- mod = await import(modUrl);
195
- importedModules.set(entryPath, mod);
196
- }
197
- const caps = buildCapabilities(pkg.manifest.capabilities, pkg.manifest.id, pkg.name, deps.capabilityImpls);
198
- let ConnectorClass;
199
- if (pkg.multi) {
200
- // Multi-connector: find the class from mod.connectors by matching id
201
- const classes = mod.connectors;
202
- if (!Array.isArray(classes)) {
203
- throw new Error('multi-connector package must export a `connectors` array');
204
- }
205
- ConnectorClass = null;
206
- for (const Cls of classes) {
207
- if (typeof Cls !== 'function')
208
- continue;
209
- const probe = new Cls(caps);
210
- if (probe.id === pkg.manifest.id) {
211
- ConnectorClass = Cls;
212
- break;
213
- }
214
- }
215
- if (!ConnectorClass) {
216
- throw new Error(`no connector class with id="${pkg.manifest.id}" found in connectors array`);
217
- }
218
- }
219
- else {
220
- ConnectorClass =
221
- mod.default ??
222
- mod[pkg.manifest.id] ??
223
- (typeof mod === 'function' ? mod : null);
224
- }
225
- if (typeof ConnectorClass !== 'function') {
226
- throw new Error('module does not export a connector class');
227
- }
228
- const instance = new ConnectorClass(caps);
229
- applyManifestMetadata(instance, pkg, deps.log);
230
- deps.registry.register(instance);
231
- const connectorPkg = {
232
- id: pkg.name,
233
- packageName: pkg.name,
234
- rootDir: pkg.dir,
235
- connectors: [instance],
236
- };
237
- if (pkg.prerequisites.length > 0) {
238
- connectorPkg.prerequisites = pkg.prerequisites;
239
- }
240
- deps.registry.registerPackage(connectorPkg);
241
- deps.log.info('loaded connector', { name: pkg.name, id: pkg.manifest.id, version: pkg.version });
242
- return { status: 'loaded', name: pkg.name, version: pkg.version };
243
- }
244
- catch (err) {
245
- deps.log.error('failed to load connector', {
246
- name: pkg.name,
247
- id: pkg.manifest.id,
248
- error: err instanceof Error ? err.message : String(err),
249
- stack: err instanceof Error ? err.stack : undefined,
250
- });
251
- return { status: 'failed', name: pkg.name, error: err };
252
- }
253
- }
254
- function buildCapabilities(declared, connectorId, packageId, impls) {
255
- const caps = {
256
- fetch: declared.includes('fetch')
257
- ? impls.fetch
258
- : undefinedCapability('fetch'),
259
- cookies: declared.includes('cookies:chrome')
260
- ? impls.cookies
261
- : undefinedCapability('cookies:chrome'),
262
- log: declared.includes('log')
263
- ? impls.logFor(connectorId)
264
- : undefinedCapability('log'),
265
- sqlite: declared.includes('sqlite')
266
- ? impls.sqlite
267
- : undefinedCapability('sqlite'),
268
- exec: declared.includes('exec')
269
- ? impls.exec
270
- : undefinedCapability('exec'),
271
- };
272
- if (declared.includes('prerequisites') && impls.prerequisitesFor) {
273
- caps.prerequisites = impls.prerequisitesFor(packageId);
274
- }
275
- return caps;
276
- }
277
- function undefinedCapability(name) {
278
- return new Proxy(function undef() {
279
- throw makeUndeclaredError(name, 'call');
280
- }, {
281
- get(_target, prop) {
282
- return () => {
283
- throw makeUndeclaredError(name, String(prop));
284
- };
285
- },
286
- apply() {
287
- throw makeUndeclaredError(name, 'call');
288
- },
289
- });
290
- }
291
- function makeUndeclaredError(name, accessor) {
292
- return new SyncError(SyncErrorCode.CONNECTOR_ERROR, `Capability "${name}" used (via .${accessor}) but not declared in spool.capabilities`);
293
- }
294
- /**
295
- * Manifest is the single source of truth for connector metadata.
296
- *
297
- * Any `readonly id/platform/label/description/color/ephemeral` declared on the
298
- * connector class is treated as a default and overwritten with the manifest
299
- * value so that runtime behavior always matches what the package declared.
300
- *
301
- * If the class field disagrees with the manifest, we log a warning so authors
302
- * can clean it up — but loading proceeds, since silently dropping a connector
303
- * because two redundant declarations drifted is worse than the inconsistency.
304
- */
305
- function applyManifestMetadata(instance, pkg, log) {
306
- const fields = [
307
- 'id', 'platform', 'label', 'description', 'color', 'ephemeral',
308
- ];
309
- for (const field of fields) {
310
- const classValue = instance[field];
311
- const manifestValue = pkg.manifest[field];
312
- if (classValue !== undefined && classValue !== manifestValue) {
313
- log.warn('connector class field disagrees with manifest; manifest wins', {
314
- package: pkg.name,
315
- field,
316
- classValue,
317
- manifestValue,
318
- });
319
- }
320
- Object.defineProperty(instance, field, {
321
- value: manifestValue,
322
- writable: false,
323
- configurable: true,
324
- enumerable: true,
325
- });
326
- }
327
- }
328
- //# sourceMappingURL=loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/connectors/loader.ts"],"names":[],"mappings":"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"}