agentbnb 7.0.0-beta.1 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/{card-REW7BSWW.js → card-EX2EYGCZ.js} +1 -1
  2. package/dist/{chunk-PU7LXOQ3.js → chunk-3LWBH7P3.js} +72 -3
  3. package/dist/{chunk-2HSUPCBT.js → chunk-5AAFG2V2.js} +3 -3
  4. package/dist/{chunk-GO4FVRVN.js → chunk-5GME4KJZ.js} +5 -5
  5. package/dist/{chunk-VPQ44XKE.js → chunk-64AK4FJM.js} +2 -2
  6. package/dist/{chunk-K5FO42YF.js → chunk-7EF3HYVZ.js} +24 -1
  7. package/dist/{chunk-EAD4A4KG.js → chunk-ALX4WS3A.js} +2 -2
  8. package/dist/{chunk-ETGOKDFR.js → chunk-B2VJTKO5.js} +2 -2
  9. package/dist/{chunk-PGDBUUGR.js → chunk-C537SFHV.js} +5 -5
  10. package/dist/{chunk-F53QQIM2.js → chunk-CUONY5TO.js} +1 -1
  11. package/dist/{chunk-J2K5S5MX.js → chunk-D6RKW2XG.js} +67 -1
  12. package/dist/{chunk-APEG4QIN.js → chunk-E2OKP5CY.js} +4 -4
  13. package/dist/{chunk-FK2MDNTB.js → chunk-FTZTEHYG.js} +1 -1
  14. package/dist/{chunk-Y7T6IMM3.js → chunk-GKVTD4EZ.js} +1 -1
  15. package/dist/{chunk-VMH2YS2I.js → chunk-KF3TZHA5.js} +1 -1
  16. package/dist/{chunk-574W3HHE.js → chunk-LJM7FHPM.js} +1 -1
  17. package/dist/{chunk-KA2VIEGM.js → chunk-O2OYBAVR.js} +1 -1
  18. package/dist/{chunk-PSQHUZ7X.js → chunk-OH7BP5NP.js} +1 -1
  19. package/dist/{chunk-EHSHB7TY.js → chunk-SSK653A6.js} +67 -2
  20. package/dist/{chunk-BP3L2TET.js → chunk-TBJ3FZKZ.js} +2 -2
  21. package/dist/{chunk-3CIMVISQ.js → chunk-WVY2W7AA.js} +4 -0
  22. package/dist/{chunk-DUW6RX6I.js → chunk-X32NE6V4.js} +1 -1
  23. package/dist/{chunk-CWYPTQRQ.js → chunk-YHY7OG6S.js} +5 -5
  24. package/dist/{chunk-TW65F5EU.js → chunk-Z4MCGKTL.js} +6 -2
  25. package/dist/cli/index.js +44 -23
  26. package/dist/{client-HRYRJKSA.js → client-HKV3QWZ3.js} +3 -3
  27. package/dist/{conduct-JNYJCDHQ.js → conduct-W6XF6DJW.js} +13 -13
  28. package/dist/conduct-YB64OHI6.js +22 -0
  29. package/dist/{conductor-mode-2VVFMKVE.js → conductor-mode-2GSLHVN6.js} +3 -3
  30. package/dist/{conductor-mode-VGUU54QI.js → conductor-mode-AKREGDIU.js} +10 -10
  31. package/dist/{execute-MOXSSA3Q.js → execute-AYQWORVH.js} +6 -6
  32. package/dist/{execute-I4PKSNJM.js → execute-EPE6MZLT.js} +3 -3
  33. package/dist/index.d.ts +262 -10
  34. package/dist/index.js +438 -26
  35. package/dist/{process-guard-QCCBGILS.js → process-guard-GH5LRNWO.js} +1 -1
  36. package/dist/{publish-capability-TS6CNR5G.js → publish-capability-AH2HDW54.js} +3 -3
  37. package/dist/{request-E7TA7COA.js → request-HCCXSKAY.js} +12 -12
  38. package/dist/{serve-skill-HIOWYKRU.js → serve-skill-SZAQT5T5.js} +8 -8
  39. package/dist/{server-I63CXFX3.js → server-MHMAYXWZ.js} +11 -11
  40. package/dist/{service-coordinator-XBNT3SMU.js → service-coordinator-WGH6B2VT.js} +375 -48
  41. package/dist/skills/agentbnb/bootstrap.js +393 -58
  42. package/dist/{websocket-client-PFGVTXNE.js → websocket-client-4Z5P54RU.js} +1 -1
  43. package/dist/websocket-client-QOVARTRN.js +7 -0
  44. package/package.json +17 -11
  45. package/skills/agentbnb/bootstrap.test.ts +9 -0
  46. package/skills/agentbnb/bootstrap.ts +51 -26
  47. package/skills/agentbnb/install.sh +0 -0
  48. package/dist/conduct-KJUD2RTB.js +0 -22
  49. package/dist/websocket-client-5MH6QRJK.js +0 -7
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CapabilityCardV2Schema
3
- } from "./chunk-3CIMVISQ.js";
3
+ } from "./chunk-WVY2W7AA.js";
4
4
 
5
5
  // src/conductor/card.ts
6
6
  import { createHash } from "crypto";
@@ -7,11 +7,22 @@ import { z } from "zod";
7
7
  var RegisterMessageSchema = z.object({
8
8
  type: z.literal("register"),
9
9
  owner: z.string().min(1),
10
+ /** V8: Cryptographic agent identity. When present, used as the canonical key. */
11
+ agent_id: z.string().optional(),
12
+ /** V8 Phase 3: Server identifier for multi-agent delegation. */
13
+ server_id: z.string().optional(),
10
14
  token: z.string().min(1),
11
15
  card: z.record(z.unknown()),
12
16
  // CapabilityCard (validated separately)
13
- cards: z.array(z.record(z.unknown())).optional()
17
+ cards: z.array(z.record(z.unknown())).optional(),
14
18
  // Additional cards (e.g., conductor card)
19
+ /** V8 Phase 3: Additional agents served by this server (multi-agent registration). */
20
+ agents: z.array(z.object({
21
+ agent_id: z.string().min(1),
22
+ display_name: z.string().min(1),
23
+ cards: z.array(z.record(z.unknown())),
24
+ delegation_token: z.record(z.unknown()).optional()
25
+ })).optional()
15
26
  });
16
27
  var RegisteredMessageSchema = z.object({
17
28
  type: z.literal("registered"),
@@ -21,6 +32,8 @@ var RelayRequestMessageSchema = z.object({
21
32
  type: z.literal("relay_request"),
22
33
  id: z.string().uuid(),
23
34
  target_owner: z.string().min(1),
35
+ /** V8: Target agent's cryptographic identity. Preferred over target_owner. */
36
+ target_agent_id: z.string().optional(),
24
37
  card_id: z.string(),
25
38
  skill_id: z.string().optional(),
26
39
  params: z.record(z.unknown()).default({}),
@@ -91,6 +104,52 @@ var HeartbeatMessageSchema = z.object({
91
104
  })
92
105
  })
93
106
  });
107
+ var EscrowHoldMessageSchema = z.object({
108
+ type: z.literal("escrow_hold"),
109
+ consumer_agent_id: z.string().min(1),
110
+ provider_agent_id: z.string().min(1),
111
+ skill_id: z.string().min(1),
112
+ amount: z.number().positive(),
113
+ request_id: z.string().uuid(),
114
+ signature: z.string().optional(),
115
+ public_key: z.string().optional()
116
+ });
117
+ var EscrowHoldConfirmedMessageSchema = z.object({
118
+ type: z.literal("escrow_hold_confirmed"),
119
+ request_id: z.string(),
120
+ escrow_id: z.string(),
121
+ hold_amount: z.number(),
122
+ consumer_remaining: z.number()
123
+ });
124
+ var EscrowSettleMessageSchema = z.object({
125
+ type: z.literal("escrow_settle"),
126
+ escrow_id: z.string().min(1),
127
+ request_id: z.string().uuid(),
128
+ success: z.boolean(),
129
+ failure_reason: z.enum(["bad_execution", "overload", "timeout", "auth_error", "not_found"]).optional(),
130
+ result_hash: z.string().optional(),
131
+ signature: z.string().optional(),
132
+ public_key: z.string().optional(),
133
+ consumer_agent_id: z.string().optional()
134
+ });
135
+ var EscrowSettledMessageSchema = z.object({
136
+ type: z.literal("escrow_settled"),
137
+ escrow_id: z.string(),
138
+ request_id: z.string(),
139
+ provider_earned: z.number(),
140
+ network_fee: z.number(),
141
+ consumer_remaining: z.number(),
142
+ provider_balance: z.number()
143
+ });
144
+ var BalanceSyncMessageSchema = z.object({
145
+ type: z.literal("balance_sync"),
146
+ agent_id: z.string().min(1)
147
+ });
148
+ var BalanceSyncResponseMessageSchema = z.object({
149
+ type: z.literal("balance_sync_response"),
150
+ agent_id: z.string(),
151
+ balance: z.number()
152
+ });
94
153
  var RelayMessageSchema = z.discriminatedUnion("type", [
95
154
  RegisterMessageSchema,
96
155
  RegisteredMessageSchema,
@@ -100,7 +159,13 @@ var RelayMessageSchema = z.discriminatedUnion("type", [
100
159
  ResponseMessageSchema,
101
160
  ErrorMessageSchema,
102
161
  RelayProgressMessageSchema,
103
- HeartbeatMessageSchema
162
+ HeartbeatMessageSchema,
163
+ EscrowHoldMessageSchema,
164
+ EscrowHoldConfirmedMessageSchema,
165
+ EscrowSettleMessageSchema,
166
+ EscrowSettledMessageSchema,
167
+ BalanceSyncMessageSchema,
168
+ BalanceSyncResponseMessageSchema
104
169
  ]);
105
170
 
106
171
  // src/relay/websocket-client.ts
@@ -134,9 +199,12 @@ var RelayClient = class {
134
199
  this.send({
135
200
  type: "register",
136
201
  owner: this.opts.owner,
202
+ ...this.opts.agent_id ? { agent_id: this.opts.agent_id } : {},
203
+ ...this.opts.server_id ? { server_id: this.opts.server_id } : {},
137
204
  token: this.opts.token,
138
205
  card: this.opts.card,
139
- ...this.opts.cards && this.opts.cards.length > 0 ? { cards: this.opts.cards } : {}
206
+ ...this.opts.cards && this.opts.cards.length > 0 ? { cards: this.opts.cards } : {},
207
+ ...this.opts.agents && this.opts.agents.length > 0 ? { agents: this.opts.agents } : {}
140
208
  });
141
209
  });
142
210
  this.ws.on("message", (raw) => {
@@ -212,6 +280,7 @@ var RelayClient = class {
212
280
  type: "relay_request",
213
281
  id,
214
282
  target_owner: opts.targetOwner,
283
+ ...opts.targetAgentId ? { target_agent_id: opts.targetAgentId } : {},
215
284
  card_id: opts.cardId,
216
285
  skill_id: opts.skillId,
217
286
  params: opts.params,
@@ -7,14 +7,14 @@ import {
7
7
  openCreditDb,
8
8
  releaseEscrow,
9
9
  settleEscrow
10
- } from "./chunk-J2K5S5MX.js";
10
+ } from "./chunk-D6RKW2XG.js";
11
11
  import {
12
12
  signEscrowReceipt,
13
13
  verifyEscrowReceipt
14
- } from "./chunk-F53QQIM2.js";
14
+ } from "./chunk-CUONY5TO.js";
15
15
  import {
16
16
  AgentBnBError
17
- } from "./chunk-3CIMVISQ.js";
17
+ } from "./chunk-WVY2W7AA.js";
18
18
 
19
19
  // src/credit/local-credit-ledger.ts
20
20
  var LocalCreditLedger = class {
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  fetchRemoteCards
3
- } from "./chunk-VMH2YS2I.js";
3
+ } from "./chunk-KF3TZHA5.js";
4
4
  import {
5
5
  createPendingRequest,
6
6
  getAutonomyTier,
7
7
  insertAuditEvent
8
- } from "./chunk-Y7T6IMM3.js";
8
+ } from "./chunk-GKVTD4EZ.js";
9
9
  import {
10
10
  searchCards
11
- } from "./chunk-574W3HHE.js";
11
+ } from "./chunk-LJM7FHPM.js";
12
12
  import {
13
13
  getBalance,
14
14
  holdEscrow,
15
15
  releaseEscrow,
16
16
  settleEscrow
17
- } from "./chunk-J2K5S5MX.js";
17
+ } from "./chunk-D6RKW2XG.js";
18
18
  import {
19
19
  requestCapability
20
- } from "./chunk-VPQ44XKE.js";
20
+ } from "./chunk-64AK4FJM.js";
21
21
  import {
22
22
  findPeer
23
23
  } from "./chunk-5AH3CMOX.js";
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  signEscrowReceipt
3
- } from "./chunk-F53QQIM2.js";
3
+ } from "./chunk-CUONY5TO.js";
4
4
  import {
5
5
  AgentBnBError
6
- } from "./chunk-3CIMVISQ.js";
6
+ } from "./chunk-WVY2W7AA.js";
7
7
 
8
8
  // src/gateway/client.ts
9
9
  import { randomUUID } from "crypto";
@@ -6,7 +6,7 @@ import {
6
6
  AgentBnBError,
7
7
  AnyCardSchema,
8
8
  CapabilityCardSchema
9
- } from "./chunk-3CIMVISQ.js";
9
+ } from "./chunk-WVY2W7AA.js";
10
10
 
11
11
  // src/registry/request-log.ts
12
12
  var SINCE_MS = {
@@ -739,6 +739,28 @@ function getCardsBySkillCapability(db, capabilityType) {
739
739
  // src/credit/ledger.ts
740
740
  import Database2 from "better-sqlite3";
741
741
  import { randomUUID as randomUUID3 } from "crypto";
742
+
743
+ // src/identity/agent-identity.ts
744
+ var AGENTS_SCHEMA = `
745
+ CREATE TABLE IF NOT EXISTS agents (
746
+ agent_id TEXT PRIMARY KEY,
747
+ display_name TEXT NOT NULL,
748
+ public_key TEXT NOT NULL,
749
+ operator_id TEXT,
750
+ server_id TEXT,
751
+ legacy_owner TEXT,
752
+ created_at TEXT NOT NULL,
753
+ updated_at TEXT NOT NULL
754
+ );
755
+
756
+ CREATE INDEX IF NOT EXISTS idx_agents_operator ON agents(operator_id);
757
+ CREATE INDEX IF NOT EXISTS idx_agents_legacy_owner ON agents(legacy_owner);
758
+ `;
759
+ function ensureAgentsTable(db) {
760
+ db.exec(AGENTS_SCHEMA);
761
+ }
762
+
763
+ // src/credit/ledger.ts
742
764
  var CREDIT_SCHEMA = `
743
765
  CREATE TABLE IF NOT EXISTS credit_balances (
744
766
  owner TEXT PRIMARY KEY,
@@ -794,6 +816,7 @@ function openCreditDb(path = ":memory:") {
794
816
  } catch {
795
817
  }
796
818
  ensureReliabilityTable(db);
819
+ ensureAgentsTable(db);
797
820
  return db;
798
821
  }
799
822
  function bootstrapAgent(db, owner, amount = 100) {
@@ -10,13 +10,13 @@ import {
10
10
  settleEscrow,
11
11
  updateReputation,
12
12
  verifyEscrowReceipt
13
- } from "./chunk-K5FO42YF.js";
13
+ } from "./chunk-7EF3HYVZ.js";
14
14
  import {
15
15
  loadConfig
16
16
  } from "./chunk-IVOYM3WG.js";
17
17
  import {
18
18
  AgentBnBError
19
- } from "./chunk-3CIMVISQ.js";
19
+ } from "./chunk-WVY2W7AA.js";
20
20
 
21
21
  // src/gateway/execute.ts
22
22
  import { randomUUID } from "crypto";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  getFeedbackForProvider,
3
3
  signEscrowReceipt
4
- } from "./chunk-K5FO42YF.js";
4
+ } from "./chunk-7EF3HYVZ.js";
5
5
  import {
6
6
  AgentBnBError
7
- } from "./chunk-3CIMVISQ.js";
7
+ } from "./chunk-WVY2W7AA.js";
8
8
 
9
9
  // src/gateway/client.ts
10
10
  import { randomUUID } from "crypto";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  settleProviderEarning
3
- } from "./chunk-DUW6RX6I.js";
3
+ } from "./chunk-X32NE6V4.js";
4
4
  import {
5
5
  getBalance,
6
6
  holdEscrow,
7
7
  releaseEscrow,
8
8
  settleEscrow
9
- } from "./chunk-J2K5S5MX.js";
9
+ } from "./chunk-D6RKW2XG.js";
10
10
  import {
11
11
  verifyEscrowReceipt
12
- } from "./chunk-F53QQIM2.js";
12
+ } from "./chunk-CUONY5TO.js";
13
13
  import {
14
14
  loadConfig
15
15
  } from "./chunk-75OC6E4F.js";
@@ -17,10 +17,10 @@ import {
17
17
  getCard,
18
18
  insertRequestLog,
19
19
  updateReputation
20
- } from "./chunk-KA2VIEGM.js";
20
+ } from "./chunk-O2OYBAVR.js";
21
21
  import {
22
22
  AgentBnBError
23
- } from "./chunk-3CIMVISQ.js";
23
+ } from "./chunk-WVY2W7AA.js";
24
24
 
25
25
  // src/gateway/execute.ts
26
26
  import { randomUUID } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentBnBError
3
- } from "./chunk-3CIMVISQ.js";
3
+ } from "./chunk-WVY2W7AA.js";
4
4
 
5
5
  // src/credit/signing.ts
6
6
  import { generateKeyPairSync, sign, verify, createPublicKey, createPrivateKey } from "crypto";
@@ -4,11 +4,73 @@ import {
4
4
  } from "./chunk-NWIQJ2CL.js";
5
5
  import {
6
6
  AgentBnBError
7
- } from "./chunk-3CIMVISQ.js";
7
+ } from "./chunk-WVY2W7AA.js";
8
8
 
9
9
  // src/credit/ledger.ts
10
10
  import Database from "better-sqlite3";
11
11
  import { randomUUID } from "crypto";
12
+
13
+ // src/identity/agent-identity.ts
14
+ var AGENTS_SCHEMA = `
15
+ CREATE TABLE IF NOT EXISTS agents (
16
+ agent_id TEXT PRIMARY KEY,
17
+ display_name TEXT NOT NULL,
18
+ public_key TEXT NOT NULL,
19
+ operator_id TEXT,
20
+ server_id TEXT,
21
+ legacy_owner TEXT,
22
+ created_at TEXT NOT NULL,
23
+ updated_at TEXT NOT NULL
24
+ );
25
+
26
+ CREATE INDEX IF NOT EXISTS idx_agents_operator ON agents(operator_id);
27
+ CREATE INDEX IF NOT EXISTS idx_agents_legacy_owner ON agents(legacy_owner);
28
+ `;
29
+ function ensureAgentsTable(db) {
30
+ db.exec(AGENTS_SCHEMA);
31
+ }
32
+ function createAgentRecord(db, agent) {
33
+ const now = (/* @__PURE__ */ new Date()).toISOString();
34
+ const record = {
35
+ agent_id: agent.agent_id,
36
+ display_name: agent.display_name,
37
+ public_key: agent.public_key,
38
+ operator_id: agent.operator_id ?? null,
39
+ server_id: agent.server_id ?? null,
40
+ legacy_owner: agent.legacy_owner ?? null,
41
+ created_at: now,
42
+ updated_at: now
43
+ };
44
+ const result = db.prepare(
45
+ `INSERT OR IGNORE INTO agents
46
+ (agent_id, display_name, public_key, operator_id, server_id, legacy_owner, created_at, updated_at)
47
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`
48
+ ).run(
49
+ record.agent_id,
50
+ record.display_name,
51
+ record.public_key,
52
+ record.operator_id,
53
+ record.server_id,
54
+ record.legacy_owner,
55
+ record.created_at,
56
+ record.updated_at
57
+ );
58
+ if (result.changes === 0) {
59
+ throw new AgentBnBError(
60
+ "AGENT_EXISTS",
61
+ `Agent ${agent.agent_id} already exists`
62
+ );
63
+ }
64
+ return record;
65
+ }
66
+ function lookupAgent(db, agentId) {
67
+ return db.prepare("SELECT * FROM agents WHERE agent_id = ?").get(agentId) ?? null;
68
+ }
69
+ function lookupAgentByOwner(db, owner) {
70
+ return db.prepare("SELECT * FROM agents WHERE legacy_owner = ?").get(owner) ?? null;
71
+ }
72
+
73
+ // src/credit/ledger.ts
12
74
  var CREDIT_SCHEMA = `
13
75
  CREATE TABLE IF NOT EXISTS credit_balances (
14
76
  owner TEXT PRIMARY KEY,
@@ -64,6 +126,7 @@ function openCreditDb(path = ":memory:") {
64
126
  } catch {
65
127
  }
66
128
  ensureReliabilityTable(db);
129
+ ensureAgentsTable(db);
67
130
  return db;
68
131
  }
69
132
  function bootstrapAgent(db, owner, amount = 100) {
@@ -315,6 +378,9 @@ function confirmEscrowDebit(db, escrowId) {
315
378
  }
316
379
 
317
380
  export {
381
+ createAgentRecord,
382
+ lookupAgent,
383
+ lookupAgentByOwner,
318
384
  openCreditDb,
319
385
  bootstrapAgent,
320
386
  getBalance,
@@ -3,16 +3,16 @@ import {
3
3
  } from "./chunk-3MJT4PZG.js";
4
4
  import {
5
5
  scorePeers
6
- } from "./chunk-GO4FVRVN.js";
6
+ } from "./chunk-5GME4KJZ.js";
7
7
  import {
8
8
  fetchRemoteCards
9
- } from "./chunk-VMH2YS2I.js";
9
+ } from "./chunk-KF3TZHA5.js";
10
10
  import {
11
11
  searchCards
12
- } from "./chunk-574W3HHE.js";
12
+ } from "./chunk-LJM7FHPM.js";
13
13
  import {
14
14
  requestCapability
15
- } from "./chunk-VPQ44XKE.js";
15
+ } from "./chunk-64AK4FJM.js";
16
16
 
17
17
  // src/conductor/decomposition-validator.ts
18
18
  function validateAndNormalizeSubtasks(raw, context) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  searchCards
3
- } from "./chunk-574W3HHE.js";
3
+ } from "./chunk-LJM7FHPM.js";
4
4
 
5
5
  // src/registry/pricing.ts
6
6
  function getPricingStats(db, query) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentBnBError
3
- } from "./chunk-3CIMVISQ.js";
3
+ } from "./chunk-WVY2W7AA.js";
4
4
 
5
5
  // src/autonomy/tiers.ts
6
6
  import { randomUUID } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentBnBError
3
- } from "./chunk-3CIMVISQ.js";
3
+ } from "./chunk-WVY2W7AA.js";
4
4
 
5
5
  // src/cli/remote-registry.ts
6
6
  var RegistryTimeoutError = class extends AgentBnBError {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getFeedbackForProvider
3
- } from "./chunk-KA2VIEGM.js";
3
+ } from "./chunk-O2OYBAVR.js";
4
4
 
5
5
  // src/feedback/reputation.ts
6
6
  var QUALITY_SCORES = {
@@ -2,7 +2,7 @@ import {
2
2
  AgentBnBError,
3
3
  AnyCardSchema,
4
4
  CapabilityCardSchema
5
- } from "./chunk-3CIMVISQ.js";
5
+ } from "./chunk-WVY2W7AA.js";
6
6
 
7
7
  // src/registry/request-log.ts
8
8
  var SINCE_MS = {
@@ -2,7 +2,7 @@ import {
2
2
  generateKeyPair,
3
3
  loadKeyPair,
4
4
  saveKeyPair
5
- } from "./chunk-F53QQIM2.js";
5
+ } from "./chunk-CUONY5TO.js";
6
6
 
7
7
  // src/identity/identity.ts
8
8
  import { z } from "zod";
@@ -3,11 +3,22 @@ import { z } from "zod";
3
3
  var RegisterMessageSchema = z.object({
4
4
  type: z.literal("register"),
5
5
  owner: z.string().min(1),
6
+ /** V8: Cryptographic agent identity. When present, used as the canonical key. */
7
+ agent_id: z.string().optional(),
8
+ /** V8 Phase 3: Server identifier for multi-agent delegation. */
9
+ server_id: z.string().optional(),
6
10
  token: z.string().min(1),
7
11
  card: z.record(z.unknown()),
8
12
  // CapabilityCard (validated separately)
9
- cards: z.array(z.record(z.unknown())).optional()
13
+ cards: z.array(z.record(z.unknown())).optional(),
10
14
  // Additional cards (e.g., conductor card)
15
+ /** V8 Phase 3: Additional agents served by this server (multi-agent registration). */
16
+ agents: z.array(z.object({
17
+ agent_id: z.string().min(1),
18
+ display_name: z.string().min(1),
19
+ cards: z.array(z.record(z.unknown())),
20
+ delegation_token: z.record(z.unknown()).optional()
21
+ })).optional()
11
22
  });
12
23
  var RegisteredMessageSchema = z.object({
13
24
  type: z.literal("registered"),
@@ -17,6 +28,8 @@ var RelayRequestMessageSchema = z.object({
17
28
  type: z.literal("relay_request"),
18
29
  id: z.string().uuid(),
19
30
  target_owner: z.string().min(1),
31
+ /** V8: Target agent's cryptographic identity. Preferred over target_owner. */
32
+ target_agent_id: z.string().optional(),
20
33
  card_id: z.string(),
21
34
  skill_id: z.string().optional(),
22
35
  params: z.record(z.unknown()).default({}),
@@ -87,6 +100,52 @@ var HeartbeatMessageSchema = z.object({
87
100
  })
88
101
  })
89
102
  });
103
+ var EscrowHoldMessageSchema = z.object({
104
+ type: z.literal("escrow_hold"),
105
+ consumer_agent_id: z.string().min(1),
106
+ provider_agent_id: z.string().min(1),
107
+ skill_id: z.string().min(1),
108
+ amount: z.number().positive(),
109
+ request_id: z.string().uuid(),
110
+ signature: z.string().optional(),
111
+ public_key: z.string().optional()
112
+ });
113
+ var EscrowHoldConfirmedMessageSchema = z.object({
114
+ type: z.literal("escrow_hold_confirmed"),
115
+ request_id: z.string(),
116
+ escrow_id: z.string(),
117
+ hold_amount: z.number(),
118
+ consumer_remaining: z.number()
119
+ });
120
+ var EscrowSettleMessageSchema = z.object({
121
+ type: z.literal("escrow_settle"),
122
+ escrow_id: z.string().min(1),
123
+ request_id: z.string().uuid(),
124
+ success: z.boolean(),
125
+ failure_reason: z.enum(["bad_execution", "overload", "timeout", "auth_error", "not_found"]).optional(),
126
+ result_hash: z.string().optional(),
127
+ signature: z.string().optional(),
128
+ public_key: z.string().optional(),
129
+ consumer_agent_id: z.string().optional()
130
+ });
131
+ var EscrowSettledMessageSchema = z.object({
132
+ type: z.literal("escrow_settled"),
133
+ escrow_id: z.string(),
134
+ request_id: z.string(),
135
+ provider_earned: z.number(),
136
+ network_fee: z.number(),
137
+ consumer_remaining: z.number(),
138
+ provider_balance: z.number()
139
+ });
140
+ var BalanceSyncMessageSchema = z.object({
141
+ type: z.literal("balance_sync"),
142
+ agent_id: z.string().min(1)
143
+ });
144
+ var BalanceSyncResponseMessageSchema = z.object({
145
+ type: z.literal("balance_sync_response"),
146
+ agent_id: z.string(),
147
+ balance: z.number()
148
+ });
90
149
  var RelayMessageSchema = z.discriminatedUnion("type", [
91
150
  RegisterMessageSchema,
92
151
  RegisteredMessageSchema,
@@ -96,7 +155,13 @@ var RelayMessageSchema = z.discriminatedUnion("type", [
96
155
  ResponseMessageSchema,
97
156
  ErrorMessageSchema,
98
157
  RelayProgressMessageSchema,
99
- HeartbeatMessageSchema
158
+ HeartbeatMessageSchema,
159
+ EscrowHoldMessageSchema,
160
+ EscrowHoldConfirmedMessageSchema,
161
+ EscrowSettleMessageSchema,
162
+ EscrowSettledMessageSchema,
163
+ BalanceSyncMessageSchema,
164
+ BalanceSyncResponseMessageSchema
100
165
  ]);
101
166
 
102
167
  export {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  insertCard
3
- } from "./chunk-KA2VIEGM.js";
3
+ } from "./chunk-O2OYBAVR.js";
4
4
  import {
5
5
  CapabilityCardSchema
6
- } from "./chunk-3CIMVISQ.js";
6
+ } from "./chunk-WVY2W7AA.js";
7
7
 
8
8
  // src/skills/publish-capability.ts
9
9
  import { randomUUID } from "crypto";
@@ -17,6 +17,8 @@ var CapabilityCardSchema = z.object({
17
17
  spec_version: z.literal("1.0").default("1.0"),
18
18
  id: z.string().uuid(),
19
19
  owner: z.string().min(1),
20
+ /** V8: Cryptographic agent identity (Ed25519 public key hash). */
21
+ agent_id: z.string().optional(),
20
22
  name: z.string().min(1).max(100),
21
23
  description: z.string().max(500),
22
24
  level: z.union([z.literal(1), z.literal(2), z.literal(3)]),
@@ -139,6 +141,8 @@ var CapabilityCardV2Schema = z.object({
139
141
  spec_version: z.literal("2.0"),
140
142
  id: z.string().uuid(),
141
143
  owner: z.string().min(1),
144
+ /** V8: Cryptographic agent identity (Ed25519 public key hash). */
145
+ agent_id: z.string().optional(),
142
146
  /** Agent display name — was 'name' in v1.0. */
143
147
  agent_name: z.string().min(1).max(100),
144
148
  /** Short one-liner shown in Hub v2 Identity Header. */
@@ -3,7 +3,7 @@ import {
3
3
  confirmEscrowDebit,
4
4
  recordEarning,
5
5
  releaseEscrow
6
- } from "./chunk-J2K5S5MX.js";
6
+ } from "./chunk-D6RKW2XG.js";
7
7
 
8
8
  // src/credit/settlement.ts
9
9
  function settleProviderEarning(providerDb, providerOwner, receipt) {
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  RelayClient
3
- } from "./chunk-TW65F5EU.js";
3
+ } from "./chunk-Z4MCGKTL.js";
4
4
  import {
5
5
  BudgetController,
6
6
  ORCHESTRATION_FEE,
7
7
  decompose,
8
8
  matchSubTasks,
9
9
  orchestrate
10
- } from "./chunk-APEG4QIN.js";
10
+ } from "./chunk-E2OKP5CY.js";
11
11
  import {
12
12
  BudgetManager
13
- } from "./chunk-GO4FVRVN.js";
13
+ } from "./chunk-5GME4KJZ.js";
14
14
  import {
15
15
  openCreditDb
16
- } from "./chunk-J2K5S5MX.js";
16
+ } from "./chunk-D6RKW2XG.js";
17
17
  import {
18
18
  loadPeers
19
19
  } from "./chunk-5AH3CMOX.js";
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-75OC6E4F.js";
23
23
  import {
24
24
  openDatabase
25
- } from "./chunk-KA2VIEGM.js";
25
+ } from "./chunk-O2OYBAVR.js";
26
26
 
27
27
  // src/cli/conduct.ts
28
28
  async function conductAction(task, opts) {