@stage-labs/metro 0.1.0-beta.304 → 0.1.0-beta.306

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/dist/cli.js +1 -1
  2. package/dist/memory.js +2 -3
  3. package/dist/runtime-install.js +3 -11
  4. package/dist/voice.js +1 -1
  5. package/{runtime/marketplace/plugin/bin → hooks}/guard.mjs +9 -4
  6. package/{runtime/marketplace/plugin/bin → hooks}/policy.mjs +1 -32
  7. package/{runtime/marketplace/plugin/bin → hooks}/session-start.mjs +2 -2
  8. package/package.json +4 -2
  9. package/runtime/node_modules/@metro-labs/core/package.json +0 -1
  10. package/runtime/node_modules/@metro-labs/daemon/src/agent-user/home-fs.ts +2 -29
  11. package/runtime/node_modules/@metro-labs/daemon/src/agent-user/provision.ts +2 -15
  12. package/runtime/node_modules/@metro-labs/daemon/src/agent-user/user.ts +0 -1
  13. package/runtime/node_modules/@metro-labs/daemon/src/agent-user/view.ts +3 -3
  14. package/runtime/node_modules/@metro-labs/daemon/src/agents/api.ts +3 -5
  15. package/runtime/node_modules/@metro-labs/daemon/src/approvals/pending.ts +1 -7
  16. package/runtime/node_modules/@metro-labs/daemon/src/boot/boot.ts +16 -17
  17. package/runtime/node_modules/@metro-labs/daemon/src/claude/cli-files.ts +28 -0
  18. package/runtime/node_modules/@metro-labs/daemon/src/claude/hooks.ts +60 -0
  19. package/runtime/node_modules/@metro-labs/daemon/src/claude/plugin-cleanup.ts +121 -0
  20. package/runtime/node_modules/@metro-labs/daemon/src/claude/session.ts +2 -4
  21. package/runtime/node_modules/@metro-labs/daemon/src/claude/setup.ts +38 -30
  22. package/runtime/node_modules/@metro-labs/daemon/src/connectors/enroll-api.ts +0 -2
  23. package/runtime/node_modules/@metro-labs/daemon/src/mcp/index.ts +6 -0
  24. package/runtime/node_modules/@metro-labs/daemon/src/mcp/instructions.ts +4 -2
  25. package/runtime/node_modules/@metro-labs/daemon/src/mcp/permission-prompt.ts +1 -13
  26. package/runtime/node_modules/@metro-labs/daemon/src/mcp/policy-gate.ts +2 -1
  27. package/runtime/node_modules/@metro-labs/daemon/src/mcp/policy-snapshot.ts +2 -16
  28. package/runtime/node_modules/@metro-labs/daemon/src/mcp/server-approvals.ts +15 -16
  29. package/runtime/node_modules/@metro-labs/daemon/src/mcp/session.ts +4 -0
  30. package/runtime/node_modules/@metro-labs/daemon/src/mcp/tool-catalog.ts +20 -8
  31. package/runtime/node_modules/@metro-labs/daemon/src/mcp/tool-dispatch.ts +14 -8
  32. package/runtime/node_modules/@metro-labs/daemon/src/mcp-server/announced.ts +68 -0
  33. package/runtime/node_modules/@metro-labs/daemon/src/mcp-server/config.ts +2 -2
  34. package/runtime/node_modules/@metro-labs/daemon/src/mcp-server/connector-tools.ts +114 -0
  35. package/runtime/node_modules/@metro-labs/daemon/src/mcp-server/link.ts +12 -1
  36. package/runtime/node_modules/@metro-labs/daemon/src/mcp-server/rpc.ts +67 -0
  37. package/runtime/node_modules/@metro-labs/daemon/src/policy/policy.ts +6 -5
  38. package/runtime/node_modules/@metro-labs/daemon/src/routes/http.ts +0 -2
  39. package/runtime/node_modules/@metro-labs/daemon/src/routes/local-mode.ts +2 -27
  40. package/runtime/node_modules/@metro-labs/daemon/src/routes/session-apis.ts +0 -5
  41. package/runtime/node_modules/@metro-labs/http/package.json +3 -3
  42. package/runtime/node_modules/@metro-labs/http/src/connector-grant.ts +0 -51
  43. package/runtime/node_modules/@metro-labs/http/src/mcp-server-protocol.ts +9 -4
  44. package/runtime/node_modules/@metro-labs/http/src/mcp-server-tools.ts +93 -0
  45. package/runtime/runtime.json +1 -1
  46. package/runtime/sdk-runner/node_modules/@metro-labs/core/package.json +0 -1
  47. package/runtime/sdk-runner/runner.json +1 -1
  48. package/{runtime/marketplace/plugin → skills}/METRO.md +8 -3
  49. package/runtime/marketplace/.claude-plugin/marketplace.json +0 -12
  50. package/runtime/marketplace/plugin/.claude-plugin/plugin.json +0 -17
  51. package/runtime/marketplace/plugin/.mcp.json +0 -1
  52. package/runtime/marketplace/plugin/bin/metro-plugin.mjs +0 -48
  53. package/runtime/marketplace/plugin/hooks/hooks.json +0 -25
  54. package/runtime/node_modules/@metro-labs/core/src/connector-sync.ts +0 -17
  55. package/runtime/node_modules/@metro-labs/daemon/src/claude/plugin-install.ts +0 -149
  56. package/runtime/node_modules/@metro-labs/daemon/src/connectors/gates.ts +0 -104
  57. package/runtime/node_modules/@metro-labs/daemon/src/connectors/org-adopt.ts +0 -57
  58. package/runtime/node_modules/@metro-labs/daemon/src/connectors/org-relay.ts +0 -61
  59. package/runtime/node_modules/@metro-labs/daemon/src/connectors/org-runtime-discovery.ts +0 -115
  60. package/runtime/node_modules/@metro-labs/daemon/src/connectors/org-runtime.ts +0 -271
  61. package/runtime/node_modules/@metro-labs/daemon/src/connectors/org-sync-api.ts +0 -25
  62. package/runtime/node_modules/@metro-labs/daemon/src/connectors/org-sync-control.ts +0 -173
  63. package/runtime/node_modules/@metro-labs/daemon/src/connectors/org-sync-setting.ts +0 -60
  64. package/runtime/node_modules/@metro-labs/daemon/src/connectors/org-sync-watch.ts +0 -38
  65. package/runtime/node_modules/@metro-labs/daemon/src/connectors/org-sync.ts +0 -208
  66. package/runtime/node_modules/@metro-labs/daemon/src/connectors/plugin-sync.ts +0 -145
  67. package/runtime/node_modules/@metro-labs/daemon/src/connectors/publication.ts +0 -40
  68. package/runtime/node_modules/@metro-labs/daemon/src/connectors/relay-id.ts +0 -2
  69. package/runtime/node_modules/@metro-labs/daemon/src/connectors/relay-policy.ts +0 -90
  70. package/runtime/node_modules/@metro-labs/daemon/src/connectors/relay-session.ts +0 -10
  71. package/runtime/node_modules/@metro-labs/daemon/src/connectors/relay-target.ts +0 -4
  72. package/runtime/node_modules/@metro-labs/daemon/src/connectors/relay.ts +0 -287
  73. package/runtime/node_modules/@metro-labs/daemon/src/connectors/server-keys.ts +0 -59
  74. package/runtime/node_modules/@metro-labs/daemon/src/connectors/tools.ts +0 -1
  75. package/runtime/node_modules/@metro-labs/http/src/connector-delivery-validation.ts +0 -116
  76. package/runtime/node_modules/@metro-labs/http/src/connector-delivery.ts +0 -19
  77. package/runtime/node_modules/@metro-labs/http/src/connector-migration.ts +0 -178
  78. package/runtime/node_modules/@metro-labs/http/src/transfer-crypto.ts +0 -44
  79. package/runtime/sdk-runner/node_modules/@metro-labs/core/src/connector-sync.ts +0 -17
  80. /package/{runtime/marketplace/plugin → skills}/MEMORY.md +0 -0
  81. /package/{runtime/marketplace/plugin → skills}/STAGE.md +0 -0
@@ -1,44 +0,0 @@
1
- import { createCipheriv, createDecipheriv, createPublicKey, diffieHellman, generateKeyPairSync, hkdfSync, randomBytes, type KeyObject } from 'node:crypto';
2
- import { rawPublicKey, sealingKeyOf } from './agent-signature.js';
3
- import { deliveryBytes, deliveryRecord } from './connector-delivery-validation.js';
4
-
5
- export interface SealedTransfer {
6
- version: 1;
7
- ephemeralKey: string;
8
- iv: string;
9
- tag: string;
10
- ciphertext: string;
11
- }
12
-
13
- function cipherKey(privateKey: KeyObject, publicKey: KeyObject, context: Buffer, ephemeral: string, recipient: string): Buffer {
14
- const shared = diffieHellman({ privateKey, publicKey });
15
- if (!shared.some((byte) => byte !== 0)) throw new Error('Invalid connector transfer key.');
16
- return Buffer.from(hkdfSync('sha256', shared, Buffer.concat([deliveryBytes(ephemeral, 32), deliveryBytes(recipient, 32)]), context, 32));
17
- }
18
-
19
- export function sealTransfer(publicKey: string, aad: Buffer, bytes: Buffer): SealedTransfer {
20
- const recipient = sealingKeyOf(publicKey);
21
- if (recipient === null) throw new Error('Invalid connector transfer key.');
22
- const pair = generateKeyPairSync('x25519');
23
- const ephemeralKey = rawPublicKey(pair.publicKey);
24
- const iv = randomBytes(12);
25
- const cipher = createCipheriv('aes-256-gcm', cipherKey(pair.privateKey, recipient, aad, ephemeralKey, publicKey), iv);
26
- cipher.setAAD(aad);
27
- const ciphertext = Buffer.concat([cipher.update(bytes), cipher.final()]).toString('base64url');
28
- return { version: 1, ephemeralKey, iv: iv.toString('base64url'), tag: cipher.getAuthTag().toString('base64url'), ciphertext };
29
- }
30
-
31
- export function openTransfer(privateKey: KeyObject, aad: Buffer, envelope: unknown, maxBytes: number): Buffer {
32
- if (privateKey.type !== 'private' || privateKey.asymmetricKeyType !== 'x25519') throw new Error('Invalid connector transfer key.');
33
- const value = deliveryRecord(envelope, ['version', 'ephemeralKey', 'iv', 'tag', 'ciphertext']);
34
- if (value.version !== 1 || typeof value.ephemeralKey !== 'string') throw new Error('Invalid connector transfer envelope.');
35
- const ephemeral = sealingKeyOf(value.ephemeralKey);
36
- if (ephemeral === null) throw new Error('Invalid connector transfer key.');
37
- const ciphertext = deliveryBytes(value.ciphertext);
38
- if (ciphertext.length > maxBytes) throw new Error('Connector transfer is too large.');
39
- const key = cipherKey(privateKey, ephemeral, aad, value.ephemeralKey, rawPublicKey(createPublicKey(privateKey)));
40
- const decipher = createDecipheriv('aes-256-gcm', key, deliveryBytes(value.iv, 12));
41
- decipher.setAAD(aad);
42
- decipher.setAuthTag(deliveryBytes(value.tag, 16));
43
- return Buffer.concat([decipher.update(ciphertext), decipher.final()]);
44
- }
@@ -1,17 +0,0 @@
1
- export interface ConnectorSyncReceipt {
2
- state: 'waiting' | 'received' | 'expired' | 'unavailable';
3
- lastReceivedAt: number | null;
4
- leaseExpiresAt: number | null;
5
- counts: { total: number; ready: number; unavailable: number } | null;
6
- }
7
-
8
- export interface ConnectorSyncStatus extends Omit<ConnectorSyncReceipt, 'state'> {
9
- enabled: boolean;
10
- source: 'saved' | 'environment' | 'default' | 'invalid' | 'scope_changed';
11
- enrolled: boolean;
12
- owner: string | null;
13
- agentId: string | null;
14
- scope: string;
15
- liveEnabled: boolean;
16
- state: 'off' | 'not_enrolled' | ConnectorSyncReceipt['state'];
17
- }
File without changes