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.
- package/dist/{card-REW7BSWW.js → card-EX2EYGCZ.js} +1 -1
- package/dist/{chunk-PU7LXOQ3.js → chunk-3LWBH7P3.js} +72 -3
- package/dist/{chunk-2HSUPCBT.js → chunk-5AAFG2V2.js} +3 -3
- package/dist/{chunk-GO4FVRVN.js → chunk-5GME4KJZ.js} +5 -5
- package/dist/{chunk-VPQ44XKE.js → chunk-64AK4FJM.js} +2 -2
- package/dist/{chunk-K5FO42YF.js → chunk-7EF3HYVZ.js} +24 -1
- package/dist/{chunk-EAD4A4KG.js → chunk-ALX4WS3A.js} +2 -2
- package/dist/{chunk-ETGOKDFR.js → chunk-B2VJTKO5.js} +2 -2
- package/dist/{chunk-PGDBUUGR.js → chunk-C537SFHV.js} +5 -5
- package/dist/{chunk-F53QQIM2.js → chunk-CUONY5TO.js} +1 -1
- package/dist/{chunk-J2K5S5MX.js → chunk-D6RKW2XG.js} +67 -1
- package/dist/{chunk-APEG4QIN.js → chunk-E2OKP5CY.js} +4 -4
- package/dist/{chunk-FK2MDNTB.js → chunk-FTZTEHYG.js} +1 -1
- package/dist/{chunk-Y7T6IMM3.js → chunk-GKVTD4EZ.js} +1 -1
- package/dist/{chunk-VMH2YS2I.js → chunk-KF3TZHA5.js} +1 -1
- package/dist/{chunk-574W3HHE.js → chunk-LJM7FHPM.js} +1 -1
- package/dist/{chunk-KA2VIEGM.js → chunk-O2OYBAVR.js} +1 -1
- package/dist/{chunk-PSQHUZ7X.js → chunk-OH7BP5NP.js} +1 -1
- package/dist/{chunk-EHSHB7TY.js → chunk-SSK653A6.js} +67 -2
- package/dist/{chunk-BP3L2TET.js → chunk-TBJ3FZKZ.js} +2 -2
- package/dist/{chunk-3CIMVISQ.js → chunk-WVY2W7AA.js} +4 -0
- package/dist/{chunk-DUW6RX6I.js → chunk-X32NE6V4.js} +1 -1
- package/dist/{chunk-CWYPTQRQ.js → chunk-YHY7OG6S.js} +5 -5
- package/dist/{chunk-TW65F5EU.js → chunk-Z4MCGKTL.js} +6 -2
- package/dist/cli/index.js +44 -23
- package/dist/{client-HRYRJKSA.js → client-HKV3QWZ3.js} +3 -3
- package/dist/{conduct-JNYJCDHQ.js → conduct-W6XF6DJW.js} +13 -13
- package/dist/conduct-YB64OHI6.js +22 -0
- package/dist/{conductor-mode-2VVFMKVE.js → conductor-mode-2GSLHVN6.js} +3 -3
- package/dist/{conductor-mode-VGUU54QI.js → conductor-mode-AKREGDIU.js} +10 -10
- package/dist/{execute-MOXSSA3Q.js → execute-AYQWORVH.js} +6 -6
- package/dist/{execute-I4PKSNJM.js → execute-EPE6MZLT.js} +3 -3
- package/dist/index.d.ts +262 -10
- package/dist/index.js +438 -26
- package/dist/{process-guard-QCCBGILS.js → process-guard-GH5LRNWO.js} +1 -1
- package/dist/{publish-capability-TS6CNR5G.js → publish-capability-AH2HDW54.js} +3 -3
- package/dist/{request-E7TA7COA.js → request-HCCXSKAY.js} +12 -12
- package/dist/{serve-skill-HIOWYKRU.js → serve-skill-SZAQT5T5.js} +8 -8
- package/dist/{server-I63CXFX3.js → server-MHMAYXWZ.js} +11 -11
- package/dist/{service-coordinator-XBNT3SMU.js → service-coordinator-WGH6B2VT.js} +375 -48
- package/dist/skills/agentbnb/bootstrap.js +393 -58
- package/dist/{websocket-client-PFGVTXNE.js → websocket-client-4Z5P54RU.js} +1 -1
- package/dist/websocket-client-QOVARTRN.js +7 -0
- package/package.json +17 -11
- package/skills/agentbnb/bootstrap.test.ts +9 -0
- package/skills/agentbnb/bootstrap.ts +51 -26
- package/skills/agentbnb/install.sh +0 -0
- package/dist/conduct-KJUD2RTB.js +0 -22
- package/dist/websocket-client-5MH6QRJK.js +0 -7
|
@@ -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-
|
|
10
|
+
} from "./chunk-D6RKW2XG.js";
|
|
11
11
|
import {
|
|
12
12
|
signEscrowReceipt,
|
|
13
13
|
verifyEscrowReceipt
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-CUONY5TO.js";
|
|
15
15
|
import {
|
|
16
16
|
AgentBnBError
|
|
17
|
-
} from "./chunk-
|
|
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-
|
|
3
|
+
} from "./chunk-KF3TZHA5.js";
|
|
4
4
|
import {
|
|
5
5
|
createPendingRequest,
|
|
6
6
|
getAutonomyTier,
|
|
7
7
|
insertAuditEvent
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-GKVTD4EZ.js";
|
|
9
9
|
import {
|
|
10
10
|
searchCards
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-LJM7FHPM.js";
|
|
12
12
|
import {
|
|
13
13
|
getBalance,
|
|
14
14
|
holdEscrow,
|
|
15
15
|
releaseEscrow,
|
|
16
16
|
settleEscrow
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-D6RKW2XG.js";
|
|
18
18
|
import {
|
|
19
19
|
requestCapability
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-64AK4FJM.js";
|
|
21
21
|
import {
|
|
22
22
|
findPeer
|
|
23
23
|
} from "./chunk-5AH3CMOX.js";
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
AgentBnBError,
|
|
7
7
|
AnyCardSchema,
|
|
8
8
|
CapabilityCardSchema
|
|
9
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
4
|
+
} from "./chunk-7EF3HYVZ.js";
|
|
5
5
|
import {
|
|
6
6
|
AgentBnBError
|
|
7
|
-
} from "./chunk-
|
|
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-
|
|
3
|
+
} from "./chunk-X32NE6V4.js";
|
|
4
4
|
import {
|
|
5
5
|
getBalance,
|
|
6
6
|
holdEscrow,
|
|
7
7
|
releaseEscrow,
|
|
8
8
|
settleEscrow
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-D6RKW2XG.js";
|
|
10
10
|
import {
|
|
11
11
|
verifyEscrowReceipt
|
|
12
|
-
} from "./chunk-
|
|
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-
|
|
20
|
+
} from "./chunk-O2OYBAVR.js";
|
|
21
21
|
import {
|
|
22
22
|
AgentBnBError
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-WVY2W7AA.js";
|
|
24
24
|
|
|
25
25
|
// src/gateway/execute.ts
|
|
26
26
|
import { randomUUID } from "crypto";
|
|
@@ -4,11 +4,73 @@ import {
|
|
|
4
4
|
} from "./chunk-NWIQJ2CL.js";
|
|
5
5
|
import {
|
|
6
6
|
AgentBnBError
|
|
7
|
-
} from "./chunk-
|
|
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-
|
|
6
|
+
} from "./chunk-5GME4KJZ.js";
|
|
7
7
|
import {
|
|
8
8
|
fetchRemoteCards
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KF3TZHA5.js";
|
|
10
10
|
import {
|
|
11
11
|
searchCards
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-LJM7FHPM.js";
|
|
13
13
|
import {
|
|
14
14
|
requestCapability
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-64AK4FJM.js";
|
|
16
16
|
|
|
17
17
|
// src/conductor/decomposition-validator.ts
|
|
18
18
|
function validateAndNormalizeSubtasks(raw, context) {
|
|
@@ -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-
|
|
3
|
+
} from "./chunk-O2OYBAVR.js";
|
|
4
4
|
import {
|
|
5
5
|
CapabilityCardSchema
|
|
6
|
-
} from "./chunk-
|
|
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. */
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RelayClient
|
|
3
|
-
} from "./chunk-
|
|
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-
|
|
10
|
+
} from "./chunk-E2OKP5CY.js";
|
|
11
11
|
import {
|
|
12
12
|
BudgetManager
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-5GME4KJZ.js";
|
|
14
14
|
import {
|
|
15
15
|
openCreditDb
|
|
16
|
-
} from "./chunk-
|
|
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-
|
|
25
|
+
} from "./chunk-O2OYBAVR.js";
|
|
26
26
|
|
|
27
27
|
// src/cli/conduct.ts
|
|
28
28
|
async function conductAction(task, opts) {
|