@agenticprimitives/a2a 0.0.0-alpha.1 → 0.0.0-alpha.11
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/CLAUDE.md +11 -0
- package/dist/agent.d.ts +46 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +165 -51
- package/dist/agent.js.map +1 -1
- package/dist/auth.d.ts +51 -2
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +34 -2
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +6 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +8 -5
- package/dist/client.js.map +1 -1
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/index.js +10 -2
- package/dist/cloudflare/index.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/jsonrpc.d.ts +3 -1
- package/dist/jsonrpc.d.ts.map +1 -1
- package/dist/jsonrpc.js +11 -4
- package/dist/jsonrpc.js.map +1 -1
- package/dist/payment-gate.d.ts +88 -0
- package/dist/payment-gate.d.ts.map +1 -0
- package/dist/payment-gate.js +47 -0
- package/dist/payment-gate.js.map +1 -0
- package/dist/runtime.d.ts +3 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +34 -4
- package/dist/runtime.js.map +1 -1
- package/dist/skill-handler.d.ts +11 -1
- package/dist/skill-handler.d.ts.map +1 -1
- package/dist/skill-handler.js.map +1 -1
- package/dist/task-store.d.ts +5 -3
- package/dist/task-store.d.ts.map +1 -1
- package/dist/task-store.js +8 -6
- package/dist/task-store.js.map +1 -1
- package/package.json +16 -14
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,qGAAqG;AACrG,6FAA6F;AAC7F,yGAAyG;AACzG,+FAA+F;AAC/F,iGAAiG;AACjG,yDAAyD;AACzD,wDAAwD;AACxD,+FAA+F;AAC/F,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAA0B,MAAM,MAAM,CAAC;AAG5G,OAAO,EAAE,aAAa,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAC;AAE7E,qGAAqG;AACrG,MAAM,UAAU,oBAAoB,CAAC,KAAU;IAC7C,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACxG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AACpC,CAAC;AACD,MAAM,UAAU,yBAAyB,CAAC,KAAU;IAClD,MAAM,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACtE,OAAO,OAA6B,CAAC;AACvC,CAAC;AACD,MAAM,UAAU,yBAAyB,CAAC,KAAU;IAClD,MAAM,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO,SAA2B,CAAC;AACrC,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,cAAc,CAAC,CAAgF;IAC7G,OAAO,SAAS,CACd,mBAAmB,CACjB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EACzG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CACtF,CACF,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -27,11 +27,14 @@ export declare class A2aWireAdapter {
|
|
|
27
27
|
taskId: Hex;
|
|
28
28
|
state: Task['state'];
|
|
29
29
|
}>;
|
|
30
|
-
/** Poll a task's current state + artifact refs.
|
|
31
|
-
|
|
30
|
+
/** Poll a task's current state + artifact refs. AUDIT NEW-A2A-2: `caller` must sign
|
|
31
|
+
* `hashA2aTaskRequest({ method:'tasks/get', taskId, agentSA: targetAgent, chainId })` and pass the
|
|
32
|
+
* `signature` (the client holds no keys — sign externally, like `submitTask`'s message). */
|
|
33
|
+
getTask(targetAgent: Address, taskId: Hex, caller: Address, signature: Hex): Promise<Task & {
|
|
32
34
|
error?: string;
|
|
33
35
|
}>;
|
|
34
|
-
|
|
36
|
+
/** Cancel a task. `caller` must sign `hashA2aTaskRequest({ method:'tasks/cancel', ... })` (NEW-A2A-2). */
|
|
37
|
+
cancelTask(targetAgent: Address, taskId: Hex, caller: Address, signature: Hex): Promise<{
|
|
35
38
|
taskId: Hex;
|
|
36
39
|
state: Task['state'];
|
|
37
40
|
}>;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,0FAA0F;IAC1F,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7E,+FAA+F;IAC/F,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;CACtE;AAOD,qBAAa,cAAc;IAEb,OAAO,CAAC,QAAQ,CAAC,SAAS;IADtC,OAAO,CAAC,GAAG,CAAK;gBACa,SAAS,EAAE,YAAY;IAEpD,OAAO,CAAC,EAAE;IAIV,wGAAwG;IAClG,UAAU,CACd,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GACtI,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAQjD
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,0FAA0F;IAC1F,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7E,+FAA+F;IAC/F,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;CACtE;AAOD,qBAAa,cAAc;IAEb,OAAO,CAAC,QAAQ,CAAC,SAAS;IADtC,OAAO,CAAC,GAAG,CAAK;gBACa,SAAS,EAAE,YAAY;IAEpD,OAAO,CAAC,EAAE;IAIV,wGAAwG;IAClG,UAAU,CACd,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GACtI,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAQjD;;iGAE6F;IACvF,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAOrH,0GAA0G;IACpG,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IAOpI,wGAAwG;IACxG,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC;CAIlF"}
|
package/dist/client.js
CHANGED
|
@@ -20,16 +20,19 @@ export class A2aWireAdapter {
|
|
|
20
20
|
});
|
|
21
21
|
return unwrap(res);
|
|
22
22
|
}
|
|
23
|
-
/** Poll a task's current state + artifact refs.
|
|
24
|
-
|
|
23
|
+
/** Poll a task's current state + artifact refs. AUDIT NEW-A2A-2: `caller` must sign
|
|
24
|
+
* `hashA2aTaskRequest({ method:'tasks/get', taskId, agentSA: targetAgent, chainId })` and pass the
|
|
25
|
+
* `signature` (the client holds no keys — sign externally, like `submitTask`'s message). */
|
|
26
|
+
async getTask(targetAgent, taskId, caller, signature) {
|
|
25
27
|
const res = await this.transport.rpc(targetAgent, {
|
|
26
|
-
jsonrpc: '2.0', id: this.id(), method: 'tasks/get', params: { taskId, caller },
|
|
28
|
+
jsonrpc: '2.0', id: this.id(), method: 'tasks/get', params: { taskId, caller, signature },
|
|
27
29
|
});
|
|
28
30
|
return unwrap(res);
|
|
29
31
|
}
|
|
30
|
-
|
|
32
|
+
/** Cancel a task. `caller` must sign `hashA2aTaskRequest({ method:'tasks/cancel', ... })` (NEW-A2A-2). */
|
|
33
|
+
async cancelTask(targetAgent, taskId, caller, signature) {
|
|
31
34
|
const res = await this.transport.rpc(targetAgent, {
|
|
32
|
-
jsonrpc: '2.0', id: this.id(), method: 'tasks/cancel', params: { taskId, caller },
|
|
35
|
+
jsonrpc: '2.0', id: this.id(), method: 'tasks/cancel', params: { taskId, caller, signature },
|
|
33
36
|
});
|
|
34
37
|
return unwrap(res);
|
|
35
38
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAgBA,SAAS,MAAM,CAAI,GAAoB;IACrC,IAAI,OAAO,IAAI,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7F,OAAO,GAAG,CAAC,MAAW,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,cAAc;IAEI;IADrB,GAAG,GAAG,CAAC,CAAC;IAChB,YAA6B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEhD,EAAE;QACR,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,wGAAwG;IACxG,KAAK,CAAC,UAAU,CACd,WAAoB,EACpB,IAAuI;QAEvI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE;YAChD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc;YACrD,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC1I,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAgBA,SAAS,MAAM,CAAI,GAAoB;IACrC,IAAI,OAAO,IAAI,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7F,OAAO,GAAG,CAAC,MAAW,CAAC;AACzB,CAAC;AAED,MAAM,OAAO,cAAc;IAEI;IADrB,GAAG,GAAG,CAAC,CAAC;IAChB,YAA6B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAEhD,EAAE;QACR,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,wGAAwG;IACxG,KAAK,CAAC,UAAU,CACd,WAAoB,EACpB,IAAuI;QAEvI,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE;YAChD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc;YACrD,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC1I,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED;;iGAE6F;IAC7F,KAAK,CAAC,OAAO,CAAC,WAAoB,EAAE,MAAW,EAAE,MAAe,EAAE,SAAc;QAC9E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE;YAChD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;SAC1F,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,0GAA0G;IAC1G,KAAK,CAAC,UAAU,CAAC,WAAoB,EAAE,MAAW,EAAE,MAAe,EAAE,SAAc;QACjF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE;YAChD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE;SAC7F,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,wGAAwG;IACxG,oBAAoB,CAAC,WAAoB,EAAE,MAAW;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACrG,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cloudflare/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMlD;;qFAEqF;AACrF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cloudflare/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAMlD;;qFAEqF;AACrF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAmCrF;AAED,eAAO,MAAM,6BAA6B,EAAG,IAAa,CAAC"}
|
package/dist/cloudflare/index.js
CHANGED
|
@@ -27,11 +27,19 @@ export function createDurableObjectTaskStore(storage) {
|
|
|
27
27
|
return out;
|
|
28
28
|
},
|
|
29
29
|
async reserveMessageId(messageId) {
|
|
30
|
+
// Two-phase (spec 290 §3). The key's PRESENCE is the durable replay guard: a present key means the id
|
|
31
|
+
// is in-flight OR consumed → replay (deny). Reserve writes the key (in-flight); commit leaves it
|
|
32
|
+
// (permanently consumed); release deletes it so a legitimate retry of the same message may re-reserve.
|
|
33
|
+
// A crash between reserve and commit/release leaves the key present → that exact id can't retry
|
|
34
|
+
// (fail-closed; the sender mints a fresh messageId), which is the safe posture.
|
|
30
35
|
const k = MSG(messageId);
|
|
31
36
|
if ((await storage.get(k)) !== undefined)
|
|
32
|
-
return
|
|
37
|
+
return null;
|
|
33
38
|
await storage.put(k, 1);
|
|
34
|
-
return
|
|
39
|
+
return {
|
|
40
|
+
async commit() { },
|
|
41
|
+
async release() { await storage.delete(k); },
|
|
42
|
+
};
|
|
35
43
|
},
|
|
36
44
|
};
|
|
37
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cloudflare/index.ts"],"names":[],"mappings":"AAUA,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AACxD,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AACtD,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AAEtD;;qFAEqF;AACrF,MAAM,UAAU,4BAA4B,CAAC,OAA6B;IACxE,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,MAAkB;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,MAAW;YACnB,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAa,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/D,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAU,EAAE,CAAC;YACtB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAQ,CAAC,CAAC;YACxE,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,SAAc;YACnC,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cloudflare/index.ts"],"names":[],"mappings":"AAUA,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AACxD,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AACtD,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AAEtD;;qFAEqF;AACrF,MAAM,UAAU,4BAA4B,CAAC,OAA6B;IACxE,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,MAAkB;YAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,MAAW;YACnB,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAa,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/D,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,MAAM,GAAG,GAAU,EAAE,CAAC;YACtB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAQ,CAAC,CAAC;YACxE,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,SAAc;YACnC,sGAAsG;YACtG,iGAAiG;YACjG,uGAAuG;YACvG,gGAAgG;YAChG,gFAAgF;YAChF,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACtD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,OAAO;gBACL,KAAK,CAAC,MAAM,KAAkE,CAAC;gBAC/E,KAAK,CAAC,OAAO,KAAK,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAa,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,14 +7,16 @@ export type { TaskStore } from './task-store.js';
|
|
|
7
7
|
export { createInMemoryTaskStore } from './task-store.js';
|
|
8
8
|
export type { SkillHandler, SkillContext, SkillResult, VaultClient, McpClient, HandoffRequest } from './skill-handler.js';
|
|
9
9
|
export { AuthRequired, HandoffRequested, buildSkillRegistry } from './skill-handler.js';
|
|
10
|
+
export type { SkillPayment, PaymentGate, PaymentGateDecision, PaymentLane, X402PaymentMetadata, X402PaymentStatus } from './payment-gate.js';
|
|
11
|
+
export { X402_EXTENSION_URI, x402AgentCardExtension, buildPaymentRequiredMetadata, buildPaymentSettledMetadata, gateSkillPayment, } from './payment-gate.js';
|
|
10
12
|
export { newTaskRecord, applyTransition, dispatchTask } from './runtime.js';
|
|
11
13
|
export type { TransitionResult } from './runtime.js';
|
|
12
14
|
export { A2A_ANY_SKILL, skillSelector, buildA2aGrantCaveats } from './grant.js';
|
|
13
15
|
export type { A2aEnforcers } from './grant.js';
|
|
14
|
-
export { authorizeA2aMessage, hashA2aMessage, decodeTimestampTerms, decodeAllowedTargetsTerms, decodeAllowedMethodsTerms, } from './auth.js';
|
|
15
|
-
export type { OnChainChecks, MessageIdReserver, AuthorizeResult } from './auth.js';
|
|
16
|
+
export { authorizeA2aMessage, hashA2aMessage, hashA2aTaskRequest, hashPushConfigParams, decodeTimestampTerms, decodeAllowedTargetsTerms, decodeAllowedMethodsTerms, } from './auth.js';
|
|
17
|
+
export type { OnChainChecks, MessageIdReserver, MessageIdReservation, AuthorizeResult } from './auth.js';
|
|
16
18
|
export { createA2aAgent } from './agent.js';
|
|
17
|
-
export type { A2aAgent, A2aAgentConfig, AgentCard, MessageSendParams, ResubmitParams, RpcResult, RpcOk, RpcErr } from './agent.js';
|
|
19
|
+
export type { A2aAgent, A2aAgentConfig, A2aBudgetPort, AgentCard, MessageSendParams, ResubmitParams, RpcResult, RpcOk, RpcErr } from './agent.js';
|
|
18
20
|
export { dispatchA2aRpc, handleA2aRpcBody } from './jsonrpc.js';
|
|
19
21
|
export type { JsonRpcRequest, JsonRpcResponse } from './jsonrpc.js';
|
|
20
22
|
export { A2aWireAdapter } from './client.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,2BAA2B,CAAC;AACrD,eAAO,MAAM,cAAc,EAAG,4BAAqC,CAAC;AACpE,eAAO,MAAM,QAAQ,iDAAiD,CAAC;AAGvE,YAAY,EACV,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACV,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGzD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC1H,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5E,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,2BAA2B,CAAC;AACrD,eAAO,MAAM,cAAc,EAAG,4BAAqC,CAAC;AACpE,eAAO,MAAM,QAAQ,iDAAiD,CAAC;AAGvE,YAAY,EACV,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,UAAU,EACV,QAAQ,EACR,UAAU,EACV,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGzD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC1H,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxF,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC7I,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5E,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGzG,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAClJ,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAClE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG9F,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC7E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACtF,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,12 +8,13 @@ export const SPEC_REF = 'specs/269-async-delegation-authorized-a2a.md';
|
|
|
8
8
|
export { TERMINAL_STATES, isTerminal } from './types.js';
|
|
9
9
|
export { createInMemoryTaskStore } from './task-store.js';
|
|
10
10
|
export { AuthRequired, HandoffRequested, buildSkillRegistry } from './skill-handler.js';
|
|
11
|
+
export { X402_EXTENSION_URI, x402AgentCardExtension, buildPaymentRequiredMetadata, buildPaymentSettledMetadata, gateSkillPayment, } from './payment-gate.js';
|
|
11
12
|
// Runtime
|
|
12
13
|
export { newTaskRecord, applyTransition, dispatchTask } from './runtime.js';
|
|
13
14
|
// Scoped-grant caveat builders (W2 / FR-4.2)
|
|
14
15
|
export { A2A_ANY_SKILL, skillSelector, buildA2aGrantCaveats } from './grant.js';
|
|
15
16
|
// Delegation-auth gate (W2 / FR-4)
|
|
16
|
-
export { authorizeA2aMessage, hashA2aMessage, decodeTimestampTerms, decodeAllowedTargetsTerms, decodeAllowedMethodsTerms, } from './auth.js';
|
|
17
|
+
export { authorizeA2aMessage, hashA2aMessage, hashA2aTaskRequest, hashPushConfigParams, decodeTimestampTerms, decodeAllowedTargetsTerms, decodeAllowedMethodsTerms, } from './auth.js';
|
|
17
18
|
// Embeddable agent + JSON-RPC + client (W3)
|
|
18
19
|
export { createA2aAgent } from './agent.js';
|
|
19
20
|
export { dispatchA2aRpc, handleA2aRpcBody } from './jsonrpc.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,wGAAwG;AACxG,yGAAyG;AACzG,wGAAwG;AAExG,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,4BAAqC,CAAC;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,8CAA8C,CAAC;AAavE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,wGAAwG;AACxG,yGAAyG;AACzG,wGAAwG;AAExG,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC;AACrD,MAAM,CAAC,MAAM,cAAc,GAAG,4BAAqC,CAAC;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,8CAA8C,CAAC;AAavE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxF,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5E,6CAA6C;AAC7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGhF,mCAAmC;AACnC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,WAAW,CAAC;AAGnB,4CAA4C;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,gGAAgG;AAChG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGlE,oCAAoC;AACpC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/jsonrpc.d.ts
CHANGED
|
@@ -18,7 +18,9 @@ export type JsonRpcResponse = {
|
|
|
18
18
|
};
|
|
19
19
|
};
|
|
20
20
|
/** Dispatch a single JSON-RPC request to the agent. `message/stream` is rejected here (handled by the
|
|
21
|
-
* SSE transport).
|
|
21
|
+
* SSE transport). AUDIT NEW-A2A-2: tasks/get|cancel|pushNotificationConfig/set carry `caller` + `signature`;
|
|
22
|
+
* the agent verifies the signature (ERC-1271) against the request digest, so `caller` can't be spoofed —
|
|
23
|
+
* an attacker passing a victim's address but no/own signature is rejected. */
|
|
22
24
|
export declare function dispatchA2aRpc(agent: A2aAgent, req: JsonRpcRequest): Promise<JsonRpcResponse>;
|
|
23
25
|
/** Parse a raw JSON body + dispatch. Used by the HTTP/Cloudflare transport. */
|
|
24
26
|
export declare function handleA2aRpcBody(agent: A2aAgent, rawBody: string): Promise<JsonRpcResponse>;
|
package/dist/jsonrpc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../src/jsonrpc.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAqC,MAAM,YAAY,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC/D;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAS7F;
|
|
1
|
+
{"version":3,"file":"jsonrpc.d.ts","sourceRoot":"","sources":["../src/jsonrpc.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAqC,MAAM,YAAY,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC/D;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAS7F;;;+EAG+E;AAC/E,wBAAsB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAsCnG;AAED,+EAA+E;AAC/E,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAIjG"}
|
package/dist/jsonrpc.js
CHANGED
|
@@ -4,7 +4,9 @@ const METHOD_NOT_FOUND = -32601;
|
|
|
4
4
|
const err = (id, code, message) => ({ jsonrpc: '2.0', id, error: { code, message } });
|
|
5
5
|
const ok = (id, result) => ({ jsonrpc: '2.0', id, result });
|
|
6
6
|
/** Dispatch a single JSON-RPC request to the agent. `message/stream` is rejected here (handled by the
|
|
7
|
-
* SSE transport).
|
|
7
|
+
* SSE transport). AUDIT NEW-A2A-2: tasks/get|cancel|pushNotificationConfig/set carry `caller` + `signature`;
|
|
8
|
+
* the agent verifies the signature (ERC-1271) against the request digest, so `caller` can't be spoofed —
|
|
9
|
+
* an attacker passing a victim's address but no/own signature is rejected. */
|
|
8
10
|
export async function dispatchA2aRpc(agent, req) {
|
|
9
11
|
const id = req.id ?? null;
|
|
10
12
|
if (req.jsonrpc !== '2.0' || typeof req.method !== 'string') {
|
|
@@ -20,16 +22,21 @@ export async function dispatchA2aRpc(agent, req) {
|
|
|
20
22
|
const r = await agent.resubmit(p);
|
|
21
23
|
return r.ok ? ok(id, r.result) : err(id, r.code, r.message);
|
|
22
24
|
}
|
|
25
|
+
// a2a-issuedat-dropped-in-dispatch (2026-07-04 self-audit): the caller-signature FRESHNESS field
|
|
26
|
+
// (N-2 issuedAt) MUST be forwarded here — this dispatcher is the only wire entry, so dropping it left the
|
|
27
|
+
// digest computed with issuedAt=0 (a signed tasks/get replays for the task's life) AND made
|
|
28
|
+
// callerSigMaxAgeSec unusable (verifyCaller rejects every wire call with "issuedAt required"). The client
|
|
29
|
+
// mints it into the signed digest; thread it through unchanged.
|
|
23
30
|
case 'tasks/get': {
|
|
24
|
-
const r = await agent.tasksGet({ taskId: p.taskId, caller: p.caller });
|
|
31
|
+
const r = await agent.tasksGet({ taskId: p.taskId, caller: p.caller, signature: (p.signature ?? '0x'), issuedAt: p.issuedAt });
|
|
25
32
|
return r.ok ? ok(id, r.result) : err(id, r.code, r.message);
|
|
26
33
|
}
|
|
27
34
|
case 'tasks/cancel': {
|
|
28
|
-
const r = await agent.tasksCancel({ taskId: p.taskId, caller: p.caller });
|
|
35
|
+
const r = await agent.tasksCancel({ taskId: p.taskId, caller: p.caller, signature: (p.signature ?? '0x'), issuedAt: p.issuedAt });
|
|
29
36
|
return r.ok ? ok(id, r.result) : err(id, r.code, r.message);
|
|
30
37
|
}
|
|
31
38
|
case 'tasks/pushNotificationConfig/set': {
|
|
32
|
-
const r = await agent.pushConfigSet({ taskId: p.taskId, caller: p.caller, url: p.url, token: p.token });
|
|
39
|
+
const r = await agent.pushConfigSet({ taskId: p.taskId, caller: p.caller, signature: (p.signature ?? '0x'), url: p.url, token: p.token, issuedAt: p.issuedAt });
|
|
33
40
|
return r.ok ? ok(id, r.result) : err(id, r.code, r.message);
|
|
34
41
|
}
|
|
35
42
|
case 'message/stream':
|
package/dist/jsonrpc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../src/jsonrpc.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC;AAC3B,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC;AAC/B,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC;AAEhC,MAAM,GAAG,GAAG,CAAC,EAA0B,EAAE,IAAY,EAAE,OAAe,EAAmB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC/I,MAAM,EAAE,GAAG,CAAC,EAA0B,EAAE,MAAe,EAAmB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAE9G;
|
|
1
|
+
{"version":3,"file":"jsonrpc.js","sourceRoot":"","sources":["../src/jsonrpc.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC;AAC3B,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC;AAC/B,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC;AAEhC,MAAM,GAAG,GAAG,CAAC,EAA0B,EAAE,IAAY,EAAE,OAAe,EAAmB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC/I,MAAM,EAAE,GAAG,CAAC,EAA0B,EAAE,MAAe,EAAmB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAE9G;;;+EAG+E;AAC/E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAe,EAAE,GAAmB;IACvE,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC;IAC1B,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,4BAA4B,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;IAExD,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAiC,CAAC,CAAC;YACrE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAA8B,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,iGAAiG;QACjG,0GAA0G;QAC1G,4FAA4F;QAC5F,0GAA0G;QAC1G,gEAAgE;QAChE,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAa,EAAE,MAAM,EAAE,CAAC,CAAC,MAAiB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAA8B,EAAE,CAAC,CAAC;YAC9K,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAa,EAAE,MAAM,EAAE,CAAC,CAAC,MAAiB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,QAA8B,EAAE,CAAC,CAAC;YACjL,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,kCAAkC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAa,EAAE,MAAM,EAAE,CAAC,CAAC,MAAiB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAa,EAAE,KAAK,EAAE,CAAC,CAAC,KAA2B,EAAE,QAAQ,EAAE,CAAC,CAAC,QAA8B,EAAE,CAAC,CAAC;YAC/O,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,gBAAgB;YACnB,OAAO,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,kEAAkE,CAAC,CAAC;QACtG;YACE,OAAO,GAAG,CAAC,EAAE,EAAE,gBAAgB,EAAE,mBAAmB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAe,EAAE,OAAe;IACrE,IAAI,GAAmB,CAAC;IACxB,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IAAC,CAAC;IAC3F,OAAO,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { A2aMessage } from './types.js';
|
|
2
|
+
/** PAY-A2A-1 — a skill declares its price in its descriptor. `price.amount` is atomic units (string for
|
|
3
|
+
* wire-safety); `asset`/`payee` are addresses. `rail` is the registered rail name (e.g. 'x402'). */
|
|
4
|
+
export interface SkillPayment {
|
|
5
|
+
rail: string;
|
|
6
|
+
price: {
|
|
7
|
+
amount: string;
|
|
8
|
+
asset: string;
|
|
9
|
+
};
|
|
10
|
+
payee: string;
|
|
11
|
+
}
|
|
12
|
+
export type X402PaymentStatus = 'payment-required' | 'payment-submitted' | 'payment-verified' | 'payment-completed' | 'payment-failed';
|
|
13
|
+
/** The `x402.payment.*` task metadata (a2a-x402 v0.2). `required`/`payload`/`receipts` are OPAQUE to
|
|
14
|
+
* a2a — the app fills them from `@agenticprimitives/payments` (PaymentRequired body / client payload /
|
|
15
|
+
* settlement receipts). Granular status lives here, never in the A2A TaskState machine. */
|
|
16
|
+
export interface X402PaymentMetadata {
|
|
17
|
+
'x402.payment.status': X402PaymentStatus;
|
|
18
|
+
'x402.payment.required'?: unknown;
|
|
19
|
+
'x402.payment.payload'?: unknown;
|
|
20
|
+
'x402.payment.receipts'?: unknown[];
|
|
21
|
+
}
|
|
22
|
+
/** X402-D8 — the ONE access lane a request was served by. The gate picks exactly one. */
|
|
23
|
+
export type PaymentLane = 'grant' | 'entitlement' | 'settlement';
|
|
24
|
+
export interface PaymentGateDecision {
|
|
25
|
+
satisfied: boolean;
|
|
26
|
+
/** Which lane satisfied it (audit + so the handler knows whether a tx happened). */
|
|
27
|
+
via?: PaymentLane;
|
|
28
|
+
/** When NOT satisfied: the PaymentRequired body to park (opaque; app-built from payments PAY-WIRE-1). */
|
|
29
|
+
required?: unknown;
|
|
30
|
+
/** When satisfied via a fresh settlement: the receipt ref to attach to the result. */
|
|
31
|
+
receiptRef?: unknown;
|
|
32
|
+
/** When satisfied via a live entitlement: the consumption ref (the app consumed one use — no tx). */
|
|
33
|
+
entitlementConsumption?: unknown;
|
|
34
|
+
}
|
|
35
|
+
/** The injected gate. The app wires the payments x402 rail + entitlement store. a2a only asks:
|
|
36
|
+
* "is this priced request paid?" and acts on the verdict. X402-D8: the gate decides ONE lane —
|
|
37
|
+
* a standing grant, a LIVE entitlement (`entitlementRef`, consume one use, no settlement), or a
|
|
38
|
+
* fresh settlement — never two. */
|
|
39
|
+
export interface PaymentGate {
|
|
40
|
+
check(args: {
|
|
41
|
+
skill: string;
|
|
42
|
+
payment: SkillPayment;
|
|
43
|
+
message: A2aMessage;
|
|
44
|
+
payload?: unknown;
|
|
45
|
+
/** Opaque ref the client presents to redeem a pre-paid entitlement / bearer voucher (no new tx).
|
|
46
|
+
* The app resolves + consumes it via `@agenticprimitives/payments` entitlement/voucher. */
|
|
47
|
+
entitlementRef?: unknown;
|
|
48
|
+
}): Promise<PaymentGateDecision>;
|
|
49
|
+
}
|
|
50
|
+
/** PAY-A2A-4 — the agent-card extension a priced agent advertises in `capabilities.extensions[]`.
|
|
51
|
+
* Clients activate via the `X-A2A-Extensions` header. */
|
|
52
|
+
export declare const X402_EXTENSION_URI = "https://github.com/google-a2a/a2a-x402/v0.1";
|
|
53
|
+
export declare function x402AgentCardExtension(): {
|
|
54
|
+
uri: string;
|
|
55
|
+
required: boolean;
|
|
56
|
+
description: string;
|
|
57
|
+
};
|
|
58
|
+
/** Build the `x402.payment.*` metadata for an `input-required` park (PAY-A2A-2). */
|
|
59
|
+
export declare function buildPaymentRequiredMetadata(required: unknown): X402PaymentMetadata;
|
|
60
|
+
/** Build the settled metadata to append once a payment clears (status + receipts). */
|
|
61
|
+
export declare function buildPaymentSettledMetadata(receipts: unknown[]): X402PaymentMetadata;
|
|
62
|
+
/**
|
|
63
|
+
* PAY-A2A-3 — the payment middleware. Run BEFORE `handler.handle`. Returns:
|
|
64
|
+
* - `{ proceed: true, receiptRef? }` when the skill is free, or paid (the gate settled it), or no gate
|
|
65
|
+
* is wired — the handler then runs.
|
|
66
|
+
* - `{ proceed: false, parkMetadata }` when payment is required — the caller parks the task
|
|
67
|
+
* `input-required` and attaches `parkMetadata` (`x402.payment.*`), WITHOUT running the handler.
|
|
68
|
+
*
|
|
69
|
+
* Fail-closed: a priced skill with a gate that returns not-satisfied NEVER reaches the handler.
|
|
70
|
+
*/
|
|
71
|
+
export declare function gateSkillPayment(args: {
|
|
72
|
+
payment?: SkillPayment;
|
|
73
|
+
gate?: PaymentGate;
|
|
74
|
+
skill: string;
|
|
75
|
+
message: A2aMessage;
|
|
76
|
+
payload?: unknown;
|
|
77
|
+
/** Opaque pre-paid entitlement / voucher ref the client presents (X402-D8 entitlement lane). */
|
|
78
|
+
entitlementRef?: unknown;
|
|
79
|
+
}): Promise<{
|
|
80
|
+
proceed: true;
|
|
81
|
+
via?: PaymentLane;
|
|
82
|
+
receiptRef?: unknown;
|
|
83
|
+
entitlementConsumption?: unknown;
|
|
84
|
+
} | {
|
|
85
|
+
proceed: false;
|
|
86
|
+
parkMetadata: X402PaymentMetadata;
|
|
87
|
+
}>;
|
|
88
|
+
//# sourceMappingURL=payment-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-gate.d.ts","sourceRoot":"","sources":["../src/payment-gate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;qGACqG;AACrG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,CAAC;AAErB;;4FAE4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,qBAAqB,EAAE,iBAAiB,CAAC;IACzC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uBAAuB,CAAC,EAAE,OAAO,EAAE,CAAC;CACrC;AAED,yFAAyF;AACzF,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,oFAAoF;IACpF,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,yGAAyG;IACzG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sFAAsF;IACtF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qGAAqG;IACrG,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;oCAGoC;AACpC,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,IAAI,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,YAAY,CAAC;QACtB,OAAO,EAAE,UAAU,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB;oGAC4F;QAC5F,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAClC;AAED;0DAC0D;AAC1D,eAAO,MAAM,kBAAkB,gDAAgD,CAAC;AAChF,wBAAgB,sBAAsB,IAAI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAEhG;AAED,oFAAoF;AACpF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,OAAO,GAAG,mBAAmB,CAEnF;AAED,sFAAsF;AACtF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAEpF;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gGAAgG;IAChG,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CACP;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5F;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,YAAY,EAAE,mBAAmB,CAAA;CAAE,CACxD,CAcA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Spec 272 PAY-A2A — payment-gated A2A skills (a2a-x402 v0.2 shape). a2a stays transport-agnostic and
|
|
2
|
+
// CANNOT import `payments` (package boundary) — so the concrete x402 rail is INJECTED via a `PaymentGate`
|
|
3
|
+
// (the same pattern as the runtime's enforcers/checks). A priced skill invoked without a satisfied
|
|
4
|
+
// payment parks in the EXISTING `input-required` task state with `x402.payment.*` metadata — NO new
|
|
5
|
+
// TaskState (PAY-A2A-2). Payment is MIDDLEWARE: skill handlers never see raw x402 wire objects, only
|
|
6
|
+
// "payment satisfied" + a receipt ref (PAY-A2A-6).
|
|
7
|
+
/** PAY-A2A-4 — the agent-card extension a priced agent advertises in `capabilities.extensions[]`.
|
|
8
|
+
* Clients activate via the `X-A2A-Extensions` header. */
|
|
9
|
+
export const X402_EXTENSION_URI = 'https://github.com/google-a2a/a2a-x402/v0.1';
|
|
10
|
+
export function x402AgentCardExtension() {
|
|
11
|
+
return { uri: X402_EXTENSION_URI, required: false, description: 'x402 pay-per-use for priced skills' };
|
|
12
|
+
}
|
|
13
|
+
/** Build the `x402.payment.*` metadata for an `input-required` park (PAY-A2A-2). */
|
|
14
|
+
export function buildPaymentRequiredMetadata(required) {
|
|
15
|
+
return { 'x402.payment.status': 'payment-required', 'x402.payment.required': required };
|
|
16
|
+
}
|
|
17
|
+
/** Build the settled metadata to append once a payment clears (status + receipts). */
|
|
18
|
+
export function buildPaymentSettledMetadata(receipts) {
|
|
19
|
+
return { 'x402.payment.status': 'payment-completed', 'x402.payment.receipts': receipts };
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* PAY-A2A-3 — the payment middleware. Run BEFORE `handler.handle`. Returns:
|
|
23
|
+
* - `{ proceed: true, receiptRef? }` when the skill is free, or paid (the gate settled it), or no gate
|
|
24
|
+
* is wired — the handler then runs.
|
|
25
|
+
* - `{ proceed: false, parkMetadata }` when payment is required — the caller parks the task
|
|
26
|
+
* `input-required` and attaches `parkMetadata` (`x402.payment.*`), WITHOUT running the handler.
|
|
27
|
+
*
|
|
28
|
+
* Fail-closed: a priced skill with a gate that returns not-satisfied NEVER reaches the handler.
|
|
29
|
+
*/
|
|
30
|
+
export async function gateSkillPayment(args) {
|
|
31
|
+
if (!args.payment)
|
|
32
|
+
return { proceed: true }; // free skill
|
|
33
|
+
if (!args.gate)
|
|
34
|
+
return { proceed: true }; // no rail wired (dev / unpriced deployment) — app opts in
|
|
35
|
+
const decision = await args.gate.check({
|
|
36
|
+
skill: args.skill,
|
|
37
|
+
payment: args.payment,
|
|
38
|
+
message: args.message,
|
|
39
|
+
payload: args.payload,
|
|
40
|
+
entitlementRef: args.entitlementRef,
|
|
41
|
+
});
|
|
42
|
+
if (decision.satisfied) {
|
|
43
|
+
return { proceed: true, via: decision.via, receiptRef: decision.receiptRef, entitlementConsumption: decision.entitlementConsumption };
|
|
44
|
+
}
|
|
45
|
+
return { proceed: false, parkMetadata: buildPaymentRequiredMetadata(decision.required) };
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=payment-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-gate.js","sourceRoot":"","sources":["../src/payment-gate.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,0GAA0G;AAC1G,mGAAmG;AACnG,oGAAoG;AACpG,qGAAqG;AACrG,mDAAmD;AA4DnD;0DAC0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,6CAA6C,CAAC;AAChF,MAAM,UAAU,sBAAsB;IACpC,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;AACzG,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,4BAA4B,CAAC,QAAiB;IAC5D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC;AAC1F,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,2BAA2B,CAAC,QAAmB;IAC7D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC;AAC3F,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAQtC;IAIC,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,aAAa;IAC1D,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,0DAA0D;IACpG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QACrC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,EAAE,CAAC;IACxI,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,4BAA4B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC3F,CAAC"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { Delegation } from '@agenticprimitives/delegation';
|
|
|
4
4
|
import type { TaskRecord, TaskState, TaskEvent, A2aMessage } from './types.js';
|
|
5
5
|
import { isTerminal } from './types.js';
|
|
6
6
|
import { type SkillContext, type SkillHandler } from './skill-handler.js';
|
|
7
|
+
import { type PaymentGate } from './payment-gate.js';
|
|
7
8
|
/** Build a fresh `submitted` task record from a verified inbound message + grant. */
|
|
8
9
|
export declare function newTaskRecord(args: {
|
|
9
10
|
taskId: Hex;
|
|
@@ -45,6 +46,8 @@ export declare function dispatchTask(record: TaskRecord, registry: Map<string, S
|
|
|
45
46
|
delegation: Delegation;
|
|
46
47
|
}, now: number, opts?: {
|
|
47
48
|
handoffPolicy?: HandoffPolicy;
|
|
49
|
+
paymentGate?: PaymentGate;
|
|
50
|
+
entitlementRef?: unknown;
|
|
48
51
|
}): Promise<{
|
|
49
52
|
record: TaskRecord;
|
|
50
53
|
events: TaskEvent[];
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACzG,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAkC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAoB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAuC,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACzG,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAkC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAoB,MAAM,oBAAoB,CAAC;AAC5H,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEvE,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,UAAU,CAAC;IACpB,kBAAkB,EAAE,GAAG,CAAC;IACxB,SAAS,EAAE,GAAG,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB,GAAG,UAAU,CAuBb;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAClD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;+FAC+F;AAC/F,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,EAClB,EAAE,EAAE,SAAS,EACb,IAAI,GAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAe,GACjD,gBAAgB,CAalB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACnC,WAAW,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,gBAAgB,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,EACpL,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;IAAE,aAAa,CAAC,EAAE,aAAa,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5F,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,CAiHtD;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/runtime.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { canTaskTransition, isHandoffAllowed } from '@agenticprimitives/fulfillment';
|
|
7
7
|
import { isTerminal } from './types.js';
|
|
8
8
|
import { AuthRequired, HandoffRequested } from './skill-handler.js';
|
|
9
|
+
import { gateSkillPayment } from './payment-gate.js';
|
|
9
10
|
/** Build a fresh `submitted` task record from a verified inbound message + grant. */
|
|
10
11
|
export function newTaskRecord(args) {
|
|
11
12
|
return {
|
|
@@ -75,6 +76,29 @@ export async function dispatchTask(record, registry, makeContext, now, opts) {
|
|
|
75
76
|
let cur = working.record;
|
|
76
77
|
events.push(working.event);
|
|
77
78
|
const base = makeContext(cur);
|
|
79
|
+
// A2A-5 (seam audit): a PRICED skill is gated BEFORE its handler runs. Previously the gate was declared
|
|
80
|
+
// + exported but NEVER invoked, so priced skills executed for free. gateSkillPayment now runs here; on
|
|
81
|
+
// not-satisfied the task parks `input-required` (a legal working→input-required transition) and the
|
|
82
|
+
// handler is NOT run (fail-closed). A free skill (no `payment`) proceeds unchanged. The construction
|
|
83
|
+
// guard in createA2aAgent additionally forbids registering a priced handler with no gate wired.
|
|
84
|
+
if (handler.payment) {
|
|
85
|
+
const gated = await gateSkillPayment({
|
|
86
|
+
payment: handler.payment,
|
|
87
|
+
gate: opts?.paymentGate,
|
|
88
|
+
skill: cur.skill,
|
|
89
|
+
message: cur.inbound[cur.inbound.length - 1],
|
|
90
|
+
payload: base.input,
|
|
91
|
+
entitlementRef: opts?.entitlementRef,
|
|
92
|
+
});
|
|
93
|
+
if (!gated.proceed) {
|
|
94
|
+
const parked = applyTransition(cur, 'input-required', { now });
|
|
95
|
+
if (parked.ok) {
|
|
96
|
+
events.push(parked.event);
|
|
97
|
+
return { record: parked.record, events };
|
|
98
|
+
}
|
|
99
|
+
return { record: cur, events };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
78
102
|
const ctx = {
|
|
79
103
|
...base,
|
|
80
104
|
taskId: cur.task.taskId,
|
|
@@ -104,10 +128,16 @@ export async function dispatchTask(record, registry, makeContext, now, opts) {
|
|
|
104
128
|
// FR-3.6 / FLF-INV-09 — gate the reassignment on the agent's HandoffPolicy + the hop budget;
|
|
105
129
|
// fail-closed: no policy, a disallowed target, or an exhausted hop budget rejects the task.
|
|
106
130
|
const req = e.request;
|
|
107
|
-
const
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
131
|
+
const priorHops = cur.hopCount ?? 0;
|
|
132
|
+
const hops = priorHops + 1;
|
|
133
|
+
// NEW-FLF-1: isHandoffAllowed now enforces the full HandoffPolicy (target/class, scopes, hop
|
|
134
|
+
// budget, approval, privacy tier). We pass the current (pre-handoff) hop count so it gates the
|
|
135
|
+
// maxHopCount cap itself; the external hop comparison is gone.
|
|
136
|
+
const ok = !!opts?.handoffPolicy
|
|
137
|
+
&& isHandoffAllowed(opts.handoffPolicy, req.target, {
|
|
138
|
+
targetClass: req.targetClass,
|
|
139
|
+
hopCount: priorHops,
|
|
140
|
+
});
|
|
111
141
|
if (!ok) {
|
|
112
142
|
// The handler is mid-processing (`working`), so the illegal handoff fails the task (working→failed;
|
|
113
143
|
// working→rejected is not a legal transition). Fail-closed.
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,wGAAwG;AACxG,wGAAwG;AACxG,0GAA0G;AAC1G,4GAA4G;AAC5G,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAsB,MAAM,gCAAgC,CAAC;AAIzG,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAA0D,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,wGAAwG;AACxG,wGAAwG;AACxG,0GAA0G;AAC1G,4GAA4G;AAC5G,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAsB,MAAM,gCAAgC,CAAC;AAIzG,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAA0D,MAAM,oBAAoB,CAAC;AAC5H,OAAO,EAAE,gBAAgB,EAAoB,MAAM,mBAAmB,CAAC;AAEvE,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAAC,IAc7B;IACC,OAAO;QACL,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,CAAC;YAChC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC5C;QACD,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QACvB,SAAS,EAAE,EAAE;QACb,GAAG,EAAE,CAAC;QACN,SAAS,EAAE,IAAI,CAAC,GAAG;KACpB,CAAC;AACJ,CAAC;AAMD;+FAC+F;AAC/F,MAAM,UAAU,eAAe,CAC7B,MAAkB,EAClB,EAAa,EACb,OAAwC,EAAE,GAAG,EAAE,CAAC,EAAE;IAElD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IAClE,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,IAAI,OAAO,EAAE,EAAE,EAAE,CAAC;IACtG,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;IAC3B,MAAM,IAAI,GAAe;QACvB,GAAG,MAAM;QACT,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,KAAK,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;QAClD,GAAG;QACH,SAAS,EAAE,IAAI,CAAC,GAAG;KACpB,CAAC;IACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;AAChH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAkB,EAClB,QAAmC,EACnC,WAAoL,EACpL,GAAW,EACX,IAA6F;IAE7F,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;QACtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,kBAAkB,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACvG,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;QAC7F,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAE3B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAE9B,wGAAwG;IACxG,uGAAuG;IACvG,oGAAoG;IACpG,qGAAqG;IACrG,gGAAgG;IAChG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,IAAI,EAAE,WAAW;YACvB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE;YAC7C,OAAO,EAAE,IAAI,CAAC,KAAK;YACnB,cAAc,EAAE,IAAI,EAAE,cAAc;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/D,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3C,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAiB;QACxB,GAAG,IAAI;QACP,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;QACvB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,CAAC,MAAc,EAAS,EAAE;YACrC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,cAAc,EAAE,CAAC,GAAG,EAAS,EAAE;YAC7B,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;IAEF,IAAI,MAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,YAAY,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAAC,CAAC;YACjF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,CAAC,YAAY,gBAAgB,EAAE,CAAC;YAClC,6FAA6F;YAC7F,4FAA4F;YAC5F,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;YACtB,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC;YAC3B,6FAA6F;YAC7F,+FAA+F;YAC/F,+DAA+D;YAC/D,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,aAAa;mBAC3B,gBAAgB,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE;oBAClD,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,oGAAoG;gBACpG,4DAA4D;gBAC5D,MAAM,MAAM,GAAG,0BAA0B,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBACvG,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBACpE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;oBAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;gBAAC,CAAC;gBACvG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;YACjC,CAAC;YACD,iGAAiG;YACjG,oEAAoE;YACpE,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC;YAAC,CAAC;YACtH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACjC,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1G,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,kCAAkC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,CAAC;QACvF,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IACD,GAAG,GAAG,MAAM,CAAC,KAAK,KAAK,WAAW,IAAI,MAAM,CAAC,WAAW;QACtD,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE;QAC9E,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACb,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACjC,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/skill-handler.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Address, Hex } from '@agenticprimitives/types';
|
|
2
2
|
import type { Delegation } from '@agenticprimitives/delegation';
|
|
3
3
|
import type { VaultRef } from './types.js';
|
|
4
|
+
import type { SkillPayment } from './payment-gate.js';
|
|
4
5
|
/** Minimal vault seam — the consumer wires demo-mcp vault read/write over a delegation. FR-3.4: a handler
|
|
5
6
|
* delivers a result into ANOTHER principal's vault by passing a `delegation` THAT principal granted
|
|
6
7
|
* (delegator == the record owner); the consumer routes it through `callMcpToolViaDelegation` so demo-mcp
|
|
@@ -16,11 +17,16 @@ export interface VaultClient {
|
|
|
16
17
|
delegation?: Delegation;
|
|
17
18
|
}): Promise<VaultRef>;
|
|
18
19
|
}
|
|
19
|
-
/** Minimal MCP seam — call a tool via the delegation token (reuses the a2a→mcp leg, W4).
|
|
20
|
+
/** Minimal MCP seam — call a tool via the delegation token (reuses the a2a→mcp leg, W4). Symmetric with
|
|
21
|
+
* `VaultClient`: pass the task's `delegation` (the grant THAT principal signed) so the composed MCP call
|
|
22
|
+
* rides the on-chain authority (ADR-0041); the consumer routes it through `callMcpToolViaDelegation`. Omit
|
|
23
|
+
* `delegation` only for an agent-self call that needs no principal grant. This is the port the Ring-0
|
|
24
|
+
* orchestration loop's `ToolInvoker` wraps (ADR-0044). */
|
|
20
25
|
export interface McpClient {
|
|
21
26
|
callTool(args: {
|
|
22
27
|
tool: string;
|
|
23
28
|
toolArgs?: Record<string, unknown>;
|
|
29
|
+
delegation?: Delegation;
|
|
24
30
|
}): Promise<unknown>;
|
|
25
31
|
}
|
|
26
32
|
/** Thrown by `requestAuth` to suspend a task pending a fresh/again-scoped delegation (FR-3.5). The
|
|
@@ -81,6 +87,10 @@ export interface SkillResult {
|
|
|
81
87
|
}
|
|
82
88
|
export interface SkillHandler {
|
|
83
89
|
skill: string;
|
|
90
|
+
/** PAY-A2A-1 — optional price. A priced skill is gated by the injected `PaymentGate` BEFORE `handle`
|
|
91
|
+
* runs; an unpaid request parks `input-required` with `x402.payment.*` metadata (the handler is never
|
|
92
|
+
* reached). Free skills omit this. */
|
|
93
|
+
payment?: SkillPayment;
|
|
84
94
|
handle(ctx: SkillContext): Promise<SkillResult>;
|
|
85
95
|
}
|
|
86
96
|
/** Index handlers by skill name; reject duplicate registrations. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-handler.d.ts","sourceRoot":"","sources":["../src/skill-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-handler.d.ts","sourceRoot":"","sources":["../src/skill-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-handler.js","sourceRoot":"","sources":["../src/skill-handler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skill-handler.js","sourceRoot":"","sources":["../src/skill-handler.ts"],"names":[],"mappings":"AA2BA;yEACyE;AACzE,MAAM,OAAO,YAAa,SAAQ,KAAK;IACT;IAA5B,YAA4B,UAAkB;QAC5C,KAAK,CAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;QADZ,eAAU,GAAV,UAAU,CAAQ;QAE5C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAcD;;mFAEmF;AACnF,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACb;IAA5B,YAA4B,OAAuB;QACjD,KAAK,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QADpB,YAAO,GAAP,OAAO,CAAgB;QAEjD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AA6CD,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CAAC,QAAwB;IACzD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7E,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|