@antseed/cli 0.1.135 → 0.1.137

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 (56) hide show
  1. package/dist/cli/commands/buyer/channel-withdraw.d.ts.map +1 -1
  2. package/dist/cli/commands/buyer/channel-withdraw.js +94 -0
  3. package/dist/cli/commands/buyer/channel-withdraw.js.map +1 -1
  4. package/dist/cli/commands/buyer/channels.js +1 -1
  5. package/dist/cli/commands/buyer/channels.js.map +1 -1
  6. package/dist/cli/commands/buyer/start.d.ts.map +1 -1
  7. package/dist/cli/commands/buyer/start.js +42 -1
  8. package/dist/cli/commands/buyer/start.js.map +1 -1
  9. package/dist/cli/commands/network/browse.d.ts.map +1 -1
  10. package/dist/cli/commands/network/browse.js +10 -0
  11. package/dist/cli/commands/network/browse.js.map +1 -1
  12. package/dist/cli/commands/network/peer.d.ts.map +1 -1
  13. package/dist/cli/commands/network/peer.js +8 -0
  14. package/dist/cli/commands/network/peer.js.map +1 -1
  15. package/dist/cli/commands/seller/setup.d.ts.map +1 -1
  16. package/dist/cli/commands/seller/setup.js +24 -0
  17. package/dist/cli/commands/seller/setup.js.map +1 -1
  18. package/dist/cli/commands/seller/start.d.ts.map +1 -1
  19. package/dist/cli/commands/seller/start.js +38 -1
  20. package/dist/cli/commands/seller/start.js.map +1 -1
  21. package/dist/config/types.d.ts +6 -0
  22. package/dist/config/types.d.ts.map +1 -1
  23. package/dist/plugins/loader.d.ts +9 -1
  24. package/dist/plugins/loader.d.ts.map +1 -1
  25. package/dist/plugins/loader.js +49 -12
  26. package/dist/plugins/loader.js.map +1 -1
  27. package/dist/plugins/loader.test.d.ts +2 -0
  28. package/dist/plugins/loader.test.d.ts.map +1 -0
  29. package/dist/plugins/loader.test.js +48 -0
  30. package/dist/plugins/loader.test.js.map +1 -0
  31. package/dist/plugins/manager.d.ts.map +1 -1
  32. package/dist/plugins/manager.js +21 -2
  33. package/dist/plugins/manager.js.map +1 -1
  34. package/dist/plugins/registry.d.ts +6 -1
  35. package/dist/plugins/registry.d.ts.map +1 -1
  36. package/dist/plugins/registry.js +17 -1
  37. package/dist/plugins/registry.js.map +1 -1
  38. package/dist/plugins/registry.test.d.ts +2 -0
  39. package/dist/plugins/registry.test.d.ts.map +1 -0
  40. package/dist/plugins/registry.test.js +22 -0
  41. package/dist/plugins/registry.test.js.map +1 -0
  42. package/dist/plugins/verifier.d.ts +48 -0
  43. package/dist/plugins/verifier.d.ts.map +1 -0
  44. package/dist/plugins/verifier.js +170 -0
  45. package/dist/plugins/verifier.js.map +1 -0
  46. package/dist/plugins/verifier.test.d.ts +2 -0
  47. package/dist/plugins/verifier.test.d.ts.map +1 -0
  48. package/dist/plugins/verifier.test.js +98 -0
  49. package/dist/plugins/verifier.test.js.map +1 -0
  50. package/dist/proxy/buyer-proxy.d.ts +7 -0
  51. package/dist/proxy/buyer-proxy.d.ts.map +1 -1
  52. package/dist/proxy/buyer-proxy.js +94 -1
  53. package/dist/proxy/buyer-proxy.js.map +1 -1
  54. package/dist/proxy/buyer-proxy.test.js +18 -1
  55. package/dist/proxy/buyer-proxy.test.js.map +1 -1
  56. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loader.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.test.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import assert from 'node:assert/strict';
2
+ import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
3
+ import { tmpdir } from 'node:os';
4
+ import { join } from 'node:path';
5
+ import test from 'node:test';
6
+ import { assertPinnedPluginVersion, selectPluginExport } from './loader.js';
7
+ const TEE_PACKAGE = '@antseed/antseed-verifier';
8
+ function withPluginVersion(pkgName, version, fn) {
9
+ const dir = mkdtempSync(join(tmpdir(), 'antseed-loader-test-'));
10
+ try {
11
+ const pkgDir = join(dir, 'node_modules', ...pkgName.split('/'));
12
+ mkdirSync(pkgDir, { recursive: true });
13
+ writeFileSync(join(pkgDir, 'package.json'), JSON.stringify({ name: pkgName, version }), 'utf-8');
14
+ fn(dir);
15
+ }
16
+ finally {
17
+ rmSync(dir, { recursive: true, force: true });
18
+ }
19
+ }
20
+ test('assertPinnedPluginVersion handles pinned and unpinned installs', () => {
21
+ withPluginVersion(TEE_PACKAGE, '0.1.0', (dir) => {
22
+ assert.doesNotThrow(() => assertPinnedPluginVersion(TEE_PACKAGE, dir));
23
+ });
24
+ withPluginVersion(TEE_PACKAGE, '0.1.1', (dir) => {
25
+ assert.throws(() => assertPinnedPluginVersion(TEE_PACKAGE, dir), /version-locked to 0\.1\.0/);
26
+ });
27
+ withPluginVersion('@antseed/provider-openai', '999.0.0', (dir) => {
28
+ assert.doesNotThrow(() => assertPinnedPluginVersion('@antseed/provider-openai', dir));
29
+ });
30
+ });
31
+ test('assertPinnedPluginVersion reports a missing install distinctly from a wrong version', () => {
32
+ const dir = mkdtempSync(join(tmpdir(), 'antseed-loader-test-'));
33
+ try {
34
+ assert.throws(() => assertPinnedPluginVersion(TEE_PACKAGE, dir), /it is not installed/);
35
+ }
36
+ finally {
37
+ rmSync(dir, { recursive: true, force: true });
38
+ }
39
+ });
40
+ test('selectPluginExport dedupes default export and rejects ambiguous matches', () => {
41
+ const plugin = { type: 'verifier', verify: () => { } };
42
+ assert.equal(selectPluginExport({ default: plugin, verifierPlugin: plugin }, 'verifier', 'verify'), plugin);
43
+ const a = { type: 'verifier', verify: () => { } };
44
+ const b = { type: 'verifier', verify: () => { } };
45
+ assert.throws(() => selectPluginExport({ default: a, other: b }, 'verifier', 'verify'), /multiple/);
46
+ assert.equal(selectPluginExport({ default: { type: 'provider', createProvider: () => { } } }, 'verifier', 'verify'), undefined);
47
+ });
48
+ //# sourceMappingURL=loader.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../../src/plugins/loader.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW,QAAyC,CAAA;AAOjE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAiBD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGtE;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAcvE"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,WAAW,QAAyC,CAAA;AAOjE,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB;AAiBD,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBtE;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAcvE"}
@@ -5,6 +5,10 @@ import { constants, existsSync } from 'node:fs';
5
5
  import { join } from 'node:path';
6
6
  import { homedir } from 'node:os';
7
7
  const execFileAsync = promisify(execFile);
8
+ /** Upper bound on a plugin install so an unreachable registry can't hang a caller forever. */
9
+ const INSTALL_TIMEOUT_MS = 120_000;
10
+ /** Dedupe concurrent installs of the same package so first-requests can't race npm. */
11
+ const inflightInstalls = new Map();
8
12
  export const PLUGINS_DIR = join(homedir(), '.antseed', 'plugins');
9
13
  function resolvePluginsDir() {
10
14
  if (existsSync(PLUGINS_DIR))
@@ -26,8 +30,23 @@ async function ensurePluginsDir() {
26
30
  }
27
31
  }
28
32
  export async function installPlugin(packageName) {
29
- await ensurePluginsDir();
30
- await execFileAsync('npm', ['install', '--ignore-scripts', packageName], { cwd: getPluginsDir() });
33
+ const existing = inflightInstalls.get(packageName);
34
+ if (existing)
35
+ return existing;
36
+ const run = (async () => {
37
+ await ensurePluginsDir();
38
+ await execFileAsync('npm', ['install', '--ignore-scripts', packageName], {
39
+ cwd: getPluginsDir(),
40
+ timeout: INSTALL_TIMEOUT_MS,
41
+ });
42
+ })();
43
+ inflightInstalls.set(packageName, run);
44
+ try {
45
+ await run;
46
+ }
47
+ finally {
48
+ inflightInstalls.delete(packageName);
49
+ }
31
50
  }
32
51
  export async function removePlugin(packageName) {
33
52
  await ensurePluginsDir();
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;AAEjE,SAAS,iBAAiB;IACxB,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAA;IAC/C,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,iBAAiB,EAAE,CAAA;AAC5B,CAAC;AAQD,KAAK,UAAU,gBAAgB;IAC7B,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAA;IACtC,MAAM,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IAC3D,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,kBAAkB,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,CACb,kBAAkB,EAClB,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EACvG,OAAO,CACR,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,MAAM,gBAAgB,EAAE,CAAA;IACxB,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;AACpG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB;IACpD,MAAM,gBAAgB,EAAE,CAAA;IACxB,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,gBAAgB,EAAE,CAAA;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAA;QAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8C,CAAA;QACxE,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,EAAE,CAAA;QACnC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC,CAAA;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  export interface TrustedPlugin {
2
2
  name: string;
3
- type: 'provider' | 'router';
3
+ type: 'provider' | 'router' | 'verifier';
4
4
  description: string;
5
5
  package: string;
6
+ /** Exact npm version for trusted verifier packages. */
7
+ version?: string;
6
8
  }
9
+ export declare const TRUSTED_PROVIDER_PLUGINS: TrustedPlugin[];
10
+ export declare const TRUSTED_ROUTER_PLUGINS: TrustedPlugin[];
11
+ export declare const TRUSTED_VERIFIER_PLUGINS: TrustedPlugin[];
7
12
  export declare const TRUSTED_PLUGINS: TrustedPlugin[];
8
13
  export declare function resolvePluginPackage(nameOrPackage: string): string;
9
14
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EA2C1C,CAAA;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAGlE"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAA;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,wBAAwB,EAAE,aAAa,EAqCnD,CAAA;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,EAOjD,CAAA;AAED,eAAO,MAAM,wBAAwB,EAAE,aAAa,EAQnD,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EAI1C,CAAA;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAGlE"}
@@ -1,4 +1,4 @@
1
- export const TRUSTED_PLUGINS = [
1
+ export const TRUSTED_PROVIDER_PLUGINS = [
2
2
  {
3
3
  name: 'anthropic',
4
4
  type: 'provider',
@@ -35,6 +35,8 @@ export const TRUSTED_PLUGINS = [
35
35
  description: 'Local LLM provider (Ollama, llama.cpp)',
36
36
  package: '@antseed/provider-local-llm',
37
37
  },
38
+ ];
39
+ export const TRUSTED_ROUTER_PLUGINS = [
38
40
  {
39
41
  name: 'local',
40
42
  type: 'router',
@@ -42,6 +44,20 @@ export const TRUSTED_PLUGINS = [
42
44
  package: '@antseed/router-local',
43
45
  },
44
46
  ];
47
+ export const TRUSTED_VERIFIER_PLUGINS = [
48
+ {
49
+ name: 'antseed-verifier',
50
+ type: 'verifier',
51
+ description: 'TEE attestation verifier + prover (Intel TDX, DCAP)',
52
+ package: '@antseed/antseed-verifier',
53
+ version: '0.1.0',
54
+ },
55
+ ];
56
+ export const TRUSTED_PLUGINS = [
57
+ ...TRUSTED_PROVIDER_PLUGINS,
58
+ ...TRUSTED_ROUTER_PLUGINS,
59
+ ...TRUSTED_VERIFIER_PLUGINS,
60
+ ];
45
61
  export function resolvePluginPackage(nameOrPackage) {
46
62
  const trusted = TRUSTED_PLUGINS.find((plugin) => plugin.name === nameOrPackage);
47
63
  return trusted?.package ?? nameOrPackage;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,6BAA6B;KACvC;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,+BAA+B;KACzC;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,gCAAgC;KAC1C;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oEAAoE;QACjF,OAAO,EAAE,0BAA0B;KACpC;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,yDAAyD;QACtE,OAAO,EAAE,oCAAoC;KAC9C;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,6BAA6B;KACvC;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,uBAAuB;KACjC;CACF,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IAC/E,OAAO,OAAO,EAAE,OAAO,IAAI,aAAa,CAAA;AAC1C,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/plugins/registry.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,6BAA6B;KACvC;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,+BAA+B;KACzC;IACD;QACE,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,sCAAsC;QACnD,OAAO,EAAE,gCAAgC;KAC1C;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,oEAAoE;QACjF,OAAO,EAAE,0BAA0B;KACpC;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,yDAAyD;QACtE,OAAO,EAAE,oCAAoC;KAC9C;IACD;QACE,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,wCAAwC;QACrD,OAAO,EAAE,6BAA6B;KACvC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAoB;IACrD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,uBAAuB;KACjC;CACF,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE,OAAO;KACjB;CACF,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,GAAG,wBAAwB;IAC3B,GAAG,sBAAsB;IACzB,GAAG,wBAAwB;CAC5B,CAAA;AAED,MAAM,UAAU,oBAAoB,CAAC,aAAqB;IACxD,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC,CAAA;IAC/E,OAAO,OAAO,EAAE,OAAO,IAAI,aAAa,CAAA;AAC1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=registry.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../src/plugins/registry.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { TRUSTED_PLUGINS, TRUSTED_PROVIDER_PLUGINS, TRUSTED_ROUTER_PLUGINS, TRUSTED_VERIFIER_PLUGINS, resolvePluginPackage } from './registry.js';
4
+ test('trusted plugin registry keeps typed lists and verifier invariants', () => {
5
+ assert.deepEqual(TRUSTED_PLUGINS, [
6
+ ...TRUSTED_PROVIDER_PLUGINS,
7
+ ...TRUSTED_ROUTER_PLUGINS,
8
+ ...TRUSTED_VERIFIER_PLUGINS,
9
+ ]);
10
+ assert.ok(TRUSTED_PROVIDER_PLUGINS.every((p) => p.type === 'provider'));
11
+ assert.ok(TRUSTED_ROUTER_PLUGINS.every((p) => p.type === 'router'));
12
+ assert.ok(TRUSTED_VERIFIER_PLUGINS.every((p) => p.type === 'verifier'));
13
+ const verifiers = TRUSTED_PLUGINS.filter((p) => p.type === 'verifier');
14
+ assert.ok(verifiers.length > 0, 'expected a curated verifier');
15
+ for (const v of verifiers) {
16
+ assert.match(v.version ?? '', /^\d+\.\d+\.\d+/, `verifier ${v.name} must pin a locked binary version`);
17
+ }
18
+ assert.ok(TRUSTED_PLUGINS.filter((p) => p.type === 'provider').every((p) => !p.version));
19
+ assert.equal(TRUSTED_PLUGINS.some((p) => p.name === 'antseed/noop' || p.package === '@antseed/verifier-noop'), false);
20
+ assert.equal(resolvePluginPackage('antseed-verifier'), '@antseed/antseed-verifier');
21
+ });
22
+ //# sourceMappingURL=registry.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../src/plugins/registry.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEjJ,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE;QAChC,GAAG,wBAAwB;QAC3B,GAAG,sBAAsB;QACzB,GAAG,wBAAwB;KAC5B,CAAC,CAAA;IACF,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAA;IACvE,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAA;IACnE,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAA;IACvE,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;IACtE,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAA;IAC9D,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,IAAI,mCAAmC,CAAC,CAAA;IACxG,CAAC;IACD,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACxF,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,OAAO,KAAK,wBAAwB,CAAC,EAAE,KAAK,CAAC,CAAA;IACrH,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,2BAA2B,CAAC,CAAA;AACrF,CAAC,CAAC,CAAA"}
@@ -0,0 +1,48 @@
1
+ import { type SellerRequest, type SellerResponse } from '@antseed/node';
2
+ export declare const ANTSEED_VERIFIER_SDKS_ENV = "ANTSEED_VERIFIER_SDKS";
3
+ export declare function normalizeVerifierIds(raw: string): string[];
4
+ export declare function buildVerifierCapabilities(ids: string[]): string[];
5
+ export declare function parseVerifierCapabilities(caps: string[] | undefined): {
6
+ supported: string[];
7
+ default?: string;
8
+ };
9
+ export declare function curatedVerifierIds(): Set<string>;
10
+ export interface VerifierPolicy {
11
+ prefer?: string[];
12
+ require: boolean;
13
+ }
14
+ /**
15
+ * Resolve buyer verifier CLI flags into a policy. `--no-verifier` (verifier === false)
16
+ * disables verification; combining it with `--require-verifier` or `--verifiers` is a
17
+ * contradiction and is rejected rather than silently disabling verification.
18
+ */
19
+ export declare function resolveVerifierPolicy(opts: {
20
+ verifier?: boolean;
21
+ verifiers?: string;
22
+ requireVerifier?: boolean;
23
+ }): VerifierPolicy | undefined;
24
+ export declare function selectVerifier(policy: VerifierPolicy, sup: {
25
+ supported: string[];
26
+ default?: string;
27
+ }): string | null;
28
+ export type SellerReach = (req: SellerRequest) => Promise<SellerResponse>;
29
+ export interface VerifyOutcome {
30
+ ok: boolean;
31
+ verified: boolean;
32
+ sdk?: string;
33
+ reason?: string;
34
+ /** True for install/network/timeout failures — a transient outcome must not be cached. */
35
+ transient?: boolean;
36
+ }
37
+ /** Stable fingerprint of a peer's verifier-relevant capabilities. */
38
+ export declare function verifierSupportFingerprint(caps: string[] | undefined): string;
39
+ /** Upper bound on a single verification (attest round-trip + quote check). */
40
+ export declare const VERIFY_TIMEOUT_MS = 30000;
41
+ export declare function withVerifyTimeout<T>(run: (signal: AbortSignal) => Promise<T>, outer?: AbortSignal, timeoutMs?: number): Promise<T>;
42
+ export declare function runVerifier(policy: VerifierPolicy, peerId: string, caps: string[] | undefined, makeReach: (chosenId: string) => SellerReach, signal?: AbortSignal): Promise<VerifyOutcome>;
43
+ export interface CachedVerdict {
44
+ outcome: VerifyOutcome;
45
+ expires: number;
46
+ }
47
+ export declare function getCachedVerdict(cache: Map<string, CachedVerdict>, key: string, now: number, ttlMs: number, maxEntries: number, run: () => Promise<VerifyOutcome>): Promise<VerifyOutcome>;
48
+ //# sourceMappingURL=verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../src/plugins/verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAI5F,eAAO,MAAM,yBAAyB,0BAA0B,CAAA;AAShE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1D;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAGjE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAgB/G;AAED,wBAAgB,kBAAkB,IAAI,GAAG,CAAC,MAAM,CAAC,CAEhD;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,GAAG,cAAc,GAAG,SAAS,CAQ7B;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,MAAM,GAAG,IAAI,CAQf;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;AAEzE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0FAA0F;IAC1F,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qEAAqE;AACrE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAG7E;AAED,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,QAAS,CAAA;AAEvC,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EACxC,KAAK,CAAC,EAAE,WAAW,EACnB,SAAS,GAAE,MAA0B,GACpC,OAAO,CAAC,CAAC,CAAC,CAyBZ;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,EAC1B,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,EAC5C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAiCxB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,aAAa,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,EACjC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,GAChC,OAAO,CAAC,aAAa,CAAC,CAkBxB"}
@@ -0,0 +1,170 @@
1
+ import { ANTSEED_ATTEST_PATH } from '@antseed/node';
2
+ import { loadVerifierPlugin } from './loader.js';
3
+ import { TRUSTED_VERIFIER_PLUGINS } from './registry.js';
4
+ export const ANTSEED_VERIFIER_SDKS_ENV = 'ANTSEED_VERIFIER_SDKS';
5
+ const VSDK = 'verifier.';
6
+ const VSDK_DEFAULT = 'verifier-default.';
7
+ const VERIFIER_ID_RE = /^[a-z0-9][a-z0-9.-]*$/;
8
+ function isVerifierId(id) {
9
+ return VERIFIER_ID_RE.test(id);
10
+ }
11
+ export function normalizeVerifierIds(raw) {
12
+ const ids = raw.split(',').map((id) => id.trim().toLowerCase()).filter(Boolean);
13
+ for (const id of ids) {
14
+ if (!isVerifierId(id)) {
15
+ throw new Error(`invalid verifier id "${id}": use lowercase letters, digits, hyphen, or dot`);
16
+ }
17
+ }
18
+ return Array.from(new Set(ids));
19
+ }
20
+ export function buildVerifierCapabilities(ids) {
21
+ const clean = normalizeVerifierIds(ids.join(','));
22
+ return clean.flatMap((id, i) => (i === 0 ? [`${VSDK}${id}`, `${VSDK_DEFAULT}${id}`] : [`${VSDK}${id}`]));
23
+ }
24
+ export function parseVerifierCapabilities(caps) {
25
+ const supported = [];
26
+ let dflt;
27
+ for (const cap of caps ?? []) {
28
+ const isDefault = cap.startsWith(VSDK_DEFAULT);
29
+ const raw = isDefault
30
+ ? cap.slice(VSDK_DEFAULT.length)
31
+ : cap.startsWith(VSDK)
32
+ ? cap.slice(VSDK.length)
33
+ : '';
34
+ const id = raw.trim().toLowerCase();
35
+ if (!isVerifierId(id))
36
+ continue;
37
+ if (!supported.includes(id))
38
+ supported.push(id);
39
+ if (isDefault)
40
+ dflt = id;
41
+ }
42
+ return dflt ? { supported, default: dflt } : { supported };
43
+ }
44
+ export function curatedVerifierIds() {
45
+ return new Set(TRUSTED_VERIFIER_PLUGINS.map((p) => p.name));
46
+ }
47
+ /**
48
+ * Resolve buyer verifier CLI flags into a policy. `--no-verifier` (verifier === false)
49
+ * disables verification; combining it with `--require-verifier` or `--verifiers` is a
50
+ * contradiction and is rejected rather than silently disabling verification.
51
+ */
52
+ export function resolveVerifierPolicy(opts) {
53
+ if (opts.verifier === false) {
54
+ if (opts.requireVerifier || opts.verifiers) {
55
+ throw new Error('--no-verifier cannot be combined with --require-verifier or --verifiers');
56
+ }
57
+ return undefined;
58
+ }
59
+ return { prefer: normalizeVerifierIds(opts.verifiers ?? ''), require: Boolean(opts.requireVerifier) };
60
+ }
61
+ export function selectVerifier(policy, sup) {
62
+ for (const id of policy.prefer ?? []) {
63
+ if (sup.supported.includes(id))
64
+ return id;
65
+ }
66
+ if ((policy.prefer ?? []).length > 0)
67
+ return null;
68
+ const curated = curatedVerifierIds();
69
+ if (sup.default && curated.has(sup.default))
70
+ return sup.default;
71
+ return sup.supported.find((id) => curated.has(id)) ?? null;
72
+ }
73
+ /** Stable fingerprint of a peer's verifier-relevant capabilities. */
74
+ export function verifierSupportFingerprint(caps) {
75
+ const sup = parseVerifierCapabilities(caps);
76
+ return `${sup.default ?? ''}|${[...sup.supported].sort().join(',')}`;
77
+ }
78
+ /** Upper bound on a single verification (attest round-trip + quote check). */
79
+ export const VERIFY_TIMEOUT_MS = 30_000;
80
+ export async function withVerifyTimeout(run, outer, timeoutMs = VERIFY_TIMEOUT_MS) {
81
+ const ac = new AbortController();
82
+ const abort = (reason) => { if (!ac.signal.aborted)
83
+ ac.abort(reason); };
84
+ const onOuter = () => abort(outer?.reason ?? new Error('verification aborted'));
85
+ if (outer?.aborted)
86
+ abort(outer.reason ?? new Error('verification aborted'));
87
+ else
88
+ outer?.addEventListener('abort', onOuter, { once: true });
89
+ const timer = setTimeout(() => abort(new Error(`verification timed out after ${timeoutMs}ms`)), timeoutMs);
90
+ try {
91
+ return await Promise.race([
92
+ run(ac.signal),
93
+ new Promise((_, reject) => {
94
+ const fail = () => {
95
+ const r = ac.signal.reason;
96
+ reject(r instanceof Error ? r : new Error('verification aborted'));
97
+ };
98
+ // The signal may already be aborted (e.g. the client had disconnected before
99
+ // we started); a listener added after that never fires, so reject eagerly.
100
+ if (ac.signal.aborted)
101
+ fail();
102
+ else
103
+ ac.signal.addEventListener('abort', fail, { once: true });
104
+ }),
105
+ ]);
106
+ }
107
+ finally {
108
+ clearTimeout(timer);
109
+ outer?.removeEventListener('abort', onOuter);
110
+ }
111
+ }
112
+ export async function runVerifier(policy, peerId, caps, makeReach, signal) {
113
+ const sup = parseVerifierCapabilities(caps);
114
+ const chosen = selectVerifier(policy, sup);
115
+ if (!chosen)
116
+ return { ok: !policy.require, verified: false, reason: 'no supported + trusted verifier' };
117
+ const reach = makeReach(chosen);
118
+ let sdk;
119
+ try {
120
+ sdk = await loadVerifierPlugin(chosen, { install: false });
121
+ }
122
+ catch (err) {
123
+ const reason = err instanceof Error ? err.message : String(err);
124
+ return { ok: !policy.require, verified: false, sdk: chosen, reason: `verifier not prepared: ${reason}`, transient: true };
125
+ }
126
+ if (sdk.name !== chosen) {
127
+ return { ok: !policy.require, verified: false, sdk: chosen, reason: `verifier package exported name "${sdk.name}", expected "${chosen}"` };
128
+ }
129
+ try {
130
+ const result = await withVerifyTimeout(async (verifySignal) => sdk.verify({
131
+ peerId,
132
+ verifierId: chosen,
133
+ attestPath: `${ANTSEED_ATTEST_PATH}/${encodeURIComponent(chosen)}`,
134
+ fetchFromSeller: reach,
135
+ signal: verifySignal,
136
+ }), signal);
137
+ if (result.ok)
138
+ return { ok: true, verified: true, sdk: chosen };
139
+ const failed = result.claims.filter((c) => !c.ok).map((c) => `${c.claim}: ${c.detail ?? 'failed'}`).join('; ');
140
+ return { ok: !policy.require, verified: false, sdk: chosen, reason: failed || 'verifier returned not-ok' };
141
+ }
142
+ catch (err) {
143
+ const reason = err instanceof Error ? err.message : String(err);
144
+ return { ok: !policy.require, verified: false, sdk: chosen, reason: `verify error: ${reason}`, transient: true };
145
+ }
146
+ }
147
+ export async function getCachedVerdict(cache, key, now, ttlMs, maxEntries, run) {
148
+ const cached = cache.get(key);
149
+ if (cached && cached.expires > now)
150
+ return cached.outcome;
151
+ if (cached)
152
+ cache.delete(key);
153
+ const outcome = await run();
154
+ if (!outcome.transient) {
155
+ if (cache.size >= maxEntries) {
156
+ for (const [k, v] of cache)
157
+ if (v.expires <= now)
158
+ cache.delete(k);
159
+ while (cache.size >= maxEntries) {
160
+ const oldest = cache.keys().next().value;
161
+ if (oldest === undefined)
162
+ break;
163
+ cache.delete(oldest);
164
+ }
165
+ }
166
+ cache.set(key, { outcome, expires: now + ttlMs });
167
+ }
168
+ return outcome;
169
+ }
170
+ //# sourceMappingURL=verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../src/plugins/verifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=verifier.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.test.d.ts","sourceRoot":"","sources":["../../src/plugins/verifier.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,98 @@
1
+ import assert from 'node:assert/strict';
2
+ import test from 'node:test';
3
+ import { buildVerifierCapabilities, getCachedVerdict, normalizeVerifierIds, parseVerifierCapabilities, resolveVerifierPolicy, selectVerifier, verifierSupportFingerprint, withVerifyTimeout } from './verifier.js';
4
+ const TEE = 'antseed-verifier';
5
+ const OK = { ok: true, verified: true };
6
+ function countedRun(outcome = OK) {
7
+ let count = 0;
8
+ return {
9
+ run: async () => { count++; return outcome; },
10
+ runs: () => count,
11
+ };
12
+ }
13
+ test('buildVerifierCapabilities: first id is the default; dot-separated (PEER_CAPABILITY_PATTERN-safe)', () => {
14
+ assert.deepEqual(buildVerifierCapabilities([TEE, 'acme-x']), [
15
+ 'verifier.antseed-verifier',
16
+ 'verifier-default.antseed-verifier',
17
+ 'verifier.acme-x',
18
+ ]);
19
+ });
20
+ test('parseVerifierCapabilities: round-trips + ignores unrelated caps', () => {
21
+ const caps = buildVerifierCapabilities([TEE, 'acme-x']);
22
+ assert.deepEqual(parseVerifierCapabilities([...caps, 'verification.response-auth.v1']), {
23
+ supported: [TEE, 'acme-x'],
24
+ default: TEE,
25
+ });
26
+ assert.deepEqual(parseVerifierCapabilities(['verification.response-auth.v1']), { supported: [] });
27
+ });
28
+ test('parseVerifierCapabilities: ignores malformed verifier ids', () => {
29
+ assert.deepEqual(parseVerifierCapabilities([
30
+ 'verifier.@scope/pkg',
31
+ 'verifier-default.has space',
32
+ 'verifier.good-id',
33
+ ]), { supported: ['good-id'] });
34
+ });
35
+ test('selectVerifier: prefers requested trusted SDKs, otherwise trusted seller default', () => {
36
+ assert.equal(selectVerifier({ require: false, prefer: ['nope-x', TEE, 'acme-x'] }, { supported: ['acme-x', TEE], default: 'acme-x' }), TEE);
37
+ assert.equal(selectVerifier({ require: false }, { supported: [TEE], default: TEE }), TEE);
38
+ assert.equal(selectVerifier({ require: false }, { supported: ['acme-untrusted'], default: 'acme-untrusted' }), null);
39
+ assert.equal(selectVerifier({ require: false, prefer: ['nope-x'] }, { supported: [TEE], default: TEE }), null);
40
+ });
41
+ test('normalizeVerifierIds: lowercases/dedupes/drops-blanks and rejects invalid chars', () => {
42
+ assert.deepEqual(normalizeVerifierIds(' Antseed-Verifier , acme-x , antseed-verifier , '), ['antseed-verifier', 'acme-x']);
43
+ for (const bad of ['@scope/pkg', 'has space', 'up/slash']) {
44
+ assert.throws(() => normalizeVerifierIds(bad), /invalid verifier id/);
45
+ }
46
+ });
47
+ test('resolveVerifierPolicy: resolves valid flags and rejects contradictions', () => {
48
+ assert.equal(resolveVerifierPolicy({ verifier: false }), undefined);
49
+ assert.deepEqual(resolveVerifierPolicy({ verifiers: `${TEE},acme-x`, requireVerifier: true }), {
50
+ prefer: [TEE, 'acme-x'],
51
+ require: true,
52
+ });
53
+ assert.deepEqual(resolveVerifierPolicy({}), { prefer: [], require: false });
54
+ assert.throws(() => resolveVerifierPolicy({ verifier: false, requireVerifier: true }), /cannot be combined/);
55
+ assert.throws(() => resolveVerifierPolicy({ verifier: false, verifiers: TEE }), /cannot be combined/);
56
+ });
57
+ test('withVerifyTimeout: resolves in time, times out, and surfaces an outer abort', async () => {
58
+ assert.equal(await withVerifyTimeout(async () => 'ok', undefined, 1000), 'ok');
59
+ await assert.rejects(withVerifyTimeout(() => new Promise(() => { }), undefined, 10), /timed out/);
60
+ const ac = new AbortController();
61
+ ac.abort(new Error('client disconnected'));
62
+ await assert.rejects(withVerifyTimeout(() => new Promise(() => { }), ac.signal, 1000), /client disconnected/);
63
+ });
64
+ test('verifierSupportFingerprint: changes when advertised verifiers change (cache invalidation)', () => {
65
+ const a = verifierSupportFingerprint(['verifier.antseed-verifier', 'verifier-default.antseed-verifier']);
66
+ const b = verifierSupportFingerprint(['verifier.acme-x']);
67
+ assert.notEqual(a, b);
68
+ assert.equal(a, verifierSupportFingerprint(['verifier-default.antseed-verifier', 'verifier.antseed-verifier']));
69
+ });
70
+ test('getCachedVerdict: caches unexpired verdicts, re-runs otherwise, skips transient, and hard-bounds size', async () => {
71
+ const cache = new Map();
72
+ const { run, runs } = countedRun();
73
+ const first = await getCachedVerdict(cache, 'k', 0, 1000, 10, run);
74
+ const second = await getCachedVerdict(cache, 'k', 1, 1000, 10, run);
75
+ assert.equal(runs(), 1);
76
+ assert.deepEqual(second, first);
77
+ const changedKey = countedRun();
78
+ const changedKeyCache = new Map();
79
+ await getCachedVerdict(changedKeyCache, 'peer|A', 0, 1000, 10, changedKey.run);
80
+ await getCachedVerdict(changedKeyCache, 'peer|B', 0, 1000, 10, changedKey.run);
81
+ assert.equal(changedKey.runs(), 2);
82
+ const expired = countedRun();
83
+ const expiredCache = new Map();
84
+ await getCachedVerdict(expiredCache, 'k', 0, 100, 10, expired.run);
85
+ await getCachedVerdict(expiredCache, 'k', 200, 100, 10, expired.run);
86
+ assert.equal(expired.runs(), 2);
87
+ const transient = countedRun({ ok: false, verified: false, transient: true });
88
+ const transientCache = new Map();
89
+ await getCachedVerdict(transientCache, 'k', 0, 1000, 10, transient.run);
90
+ await getCachedVerdict(transientCache, 'k', 0, 1000, 10, transient.run);
91
+ assert.equal(transient.runs(), 2);
92
+ assert.equal(transientCache.size, 0);
93
+ const bounded = new Map();
94
+ for (let i = 0; i < 15; i++)
95
+ await getCachedVerdict(bounded, `k${i}`, 0, 1_000_000, 10, async () => OK);
96
+ assert.ok(bounded.size <= 10, `cache size ${bounded.size} exceeded max 10`);
97
+ });
98
+ //# sourceMappingURL=verifier.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.test.js","sourceRoot":"","sources":["../../src/plugins/verifier.test.ts"],"names":[],"mappings":"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"}