@agenticprimitives/a2a 0.0.0-alpha.4 → 0.0.0-alpha.40
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 +60 -21
- package/README.md +2 -0
- package/bin/a2a-conform.mjs +17 -0
- package/dist/agent.d.ts +170 -3
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +358 -66
- package/dist/agent.js.map +1 -1
- package/dist/auth.d.ts +72 -9
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +62 -19
- package/dist/auth.js.map +1 -1
- package/dist/authority-extension.d.ts +58 -0
- package/dist/authority-extension.d.ts.map +1 -0
- package/dist/authority-extension.js +70 -0
- package/dist/authority-extension.js.map +1 -0
- package/dist/card-audience.d.ts +87 -0
- package/dist/card-audience.d.ts.map +1 -0
- package/dist/card-audience.js +135 -0
- package/dist/card-audience.js.map +1 -0
- package/dist/client.d.ts +23 -8
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +74 -13
- 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/conform/index.d.ts +36 -0
- package/dist/conform/index.d.ts.map +1 -0
- package/dist/conform/index.js +232 -0
- package/dist/conform/index.js.map +1 -0
- package/dist/discovery.d.ts +4 -0
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +6 -2
- package/dist/discovery.js.map +1 -1
- package/dist/engagement.d.ts +37 -0
- package/dist/engagement.d.ts.map +1 -0
- package/dist/engagement.js +83 -0
- package/dist/engagement.js.map +1 -0
- package/dist/grant.d.ts +4 -2
- package/dist/grant.d.ts.map +1 -1
- package/dist/grant.js +21 -13
- package/dist/grant.js.map +1 -1
- package/dist/handoff.d.ts +42 -0
- package/dist/handoff.d.ts.map +1 -0
- package/dist/handoff.js +28 -0
- package/dist/handoff.js.map +1 -0
- package/dist/index.d.ts +25 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/payment-gate.d.ts +17 -2
- package/dist/payment-gate.d.ts.map +1 -1
- package/dist/payment-gate.js +4 -2
- package/dist/payment-gate.js.map +1 -1
- package/dist/run-provenance-extension.d.ts +22 -0
- package/dist/run-provenance-extension.d.ts.map +1 -0
- package/dist/run-provenance-extension.js +23 -0
- package/dist/run-provenance-extension.js.map +1 -0
- package/dist/runtime.d.ts +13 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +35 -10
- package/dist/runtime.js.map +1 -1
- package/dist/session-wire.d.ts +90 -0
- package/dist/session-wire.d.ts.map +1 -0
- package/dist/session-wire.js +226 -0
- package/dist/session-wire.js.map +1 -0
- package/dist/skill-handler.d.ts +21 -1
- package/dist/skill-handler.d.ts.map +1 -1
- package/dist/skill-handler.js.map +1 -1
- package/dist/standard/app-delegation.d.ts +60 -0
- package/dist/standard/app-delegation.d.ts.map +1 -0
- package/dist/standard/app-delegation.js +43 -0
- package/dist/standard/app-delegation.js.map +1 -0
- package/dist/standard/caller.d.ts +107 -0
- package/dist/standard/caller.d.ts.map +1 -0
- package/dist/standard/caller.js +176 -0
- package/dist/standard/caller.js.map +1 -0
- package/dist/standard/client.d.ts +53 -0
- package/dist/standard/client.d.ts.map +1 -0
- package/dist/standard/client.js +88 -0
- package/dist/standard/client.js.map +1 -0
- package/dist/standard/delegated.d.ts +121 -0
- package/dist/standard/delegated.d.ts.map +1 -0
- package/dist/standard/delegated.js +170 -0
- package/dist/standard/delegated.js.map +1 -0
- package/dist/standard/errors.d.ts +31 -0
- package/dist/standard/errors.d.ts.map +1 -0
- package/dist/standard/errors.js +75 -0
- package/dist/standard/errors.js.map +1 -0
- package/dist/standard/from-agent.d.ts +41 -0
- package/dist/standard/from-agent.d.ts.map +1 -0
- package/dist/standard/from-agent.js +133 -0
- package/dist/standard/from-agent.js.map +1 -0
- package/dist/standard/index.d.ts +10 -0
- package/dist/standard/index.d.ts.map +1 -0
- package/dist/standard/index.js +14 -0
- package/dist/standard/index.js.map +1 -0
- package/dist/standard/mount.d.ts +94 -0
- package/dist/standard/mount.d.ts.map +1 -0
- package/dist/standard/mount.js +186 -0
- package/dist/standard/mount.js.map +1 -0
- package/dist/standard/server.d.ts +130 -0
- package/dist/standard/server.d.ts.map +1 -0
- package/dist/standard/server.js +497 -0
- package/dist/standard/server.js.map +1 -0
- package/dist/standard/types.d.ts +186 -0
- package/dist/standard/types.d.ts.map +1 -0
- package/dist/standard/types.js +14 -0
- package/dist/standard/types.js.map +1 -0
- package/dist/subject-ask.d.ts +96 -0
- package/dist/subject-ask.d.ts.map +1 -0
- package/dist/subject-ask.js +45 -0
- package/dist/subject-ask.js.map +1 -0
- package/dist/subject-hop.d.ts +117 -0
- package/dist/subject-hop.d.ts.map +1 -0
- package/dist/subject-hop.js +187 -0
- package/dist/subject-hop.js.map +1 -0
- package/dist/task-store.d.ts +9 -3
- package/dist/task-store.d.ts.map +1 -1
- package/dist/task-store.js +12 -6
- package/dist/task-store.js.map +1 -1
- package/dist/wire-verify.d.ts +35 -0
- package/dist/wire-verify.d.ts.map +1 -0
- package/dist/wire-verify.js +51 -0
- package/dist/wire-verify.js.map +1 -0
- package/package.json +35 -12
- package/dist/jsonrpc.d.ts +0 -25
- package/dist/jsonrpc.d.ts.map +0 -1
- package/dist/jsonrpc.js +0 -52
- package/dist/jsonrpc.js.map +0 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
export type TaskStateV1 = 'TASK_STATE_UNSPECIFIED' | 'TASK_STATE_SUBMITTED' | 'TASK_STATE_WORKING' | 'TASK_STATE_COMPLETED' | 'TASK_STATE_FAILED' | 'TASK_STATE_CANCELED' | 'TASK_STATE_INPUT_REQUIRED' | 'TASK_STATE_REJECTED' | 'TASK_STATE_AUTH_REQUIRED';
|
|
2
|
+
export declare const TERMINAL_STATES: ReadonlySet<TaskStateV1>;
|
|
3
|
+
export type RoleV1 = 'ROLE_UNSPECIFIED' | 'ROLE_USER' | 'ROLE_AGENT';
|
|
4
|
+
/** One part: exactly one of `text` / `raw` (base64 bytes) / `url` / `data`. `mediaType` + `filename` qualify a file. */
|
|
5
|
+
export interface PartV1 {
|
|
6
|
+
text?: string;
|
|
7
|
+
raw?: string;
|
|
8
|
+
url?: string;
|
|
9
|
+
data?: unknown;
|
|
10
|
+
filename?: string;
|
|
11
|
+
mediaType?: string;
|
|
12
|
+
metadata?: Record<string, unknown>;
|
|
13
|
+
}
|
|
14
|
+
export interface MessageV1 {
|
|
15
|
+
messageId: string;
|
|
16
|
+
role: RoleV1;
|
|
17
|
+
parts: PartV1[];
|
|
18
|
+
contextId?: string;
|
|
19
|
+
taskId?: string;
|
|
20
|
+
referenceTaskIds?: string[];
|
|
21
|
+
extensions?: string[];
|
|
22
|
+
metadata?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface ArtifactV1 {
|
|
25
|
+
artifactId: string;
|
|
26
|
+
parts: PartV1[];
|
|
27
|
+
name?: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
extensions?: string[];
|
|
30
|
+
metadata?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
export interface TaskStatusV1 {
|
|
33
|
+
state: TaskStateV1;
|
|
34
|
+
message?: MessageV1;
|
|
35
|
+
timestamp?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface TaskV1 {
|
|
38
|
+
id: string;
|
|
39
|
+
contextId: string;
|
|
40
|
+
status: TaskStatusV1;
|
|
41
|
+
artifacts?: ArtifactV1[];
|
|
42
|
+
history?: MessageV1[];
|
|
43
|
+
metadata?: Record<string, unknown>;
|
|
44
|
+
}
|
|
45
|
+
export interface TaskStatusUpdateEventV1 {
|
|
46
|
+
taskId: string;
|
|
47
|
+
contextId: string;
|
|
48
|
+
status: TaskStatusV1;
|
|
49
|
+
metadata?: Record<string, unknown>;
|
|
50
|
+
}
|
|
51
|
+
export interface TaskArtifactUpdateEventV1 {
|
|
52
|
+
taskId: string;
|
|
53
|
+
contextId: string;
|
|
54
|
+
artifact: ArtifactV1;
|
|
55
|
+
append?: boolean;
|
|
56
|
+
lastChunk?: boolean;
|
|
57
|
+
metadata?: Record<string, unknown>;
|
|
58
|
+
}
|
|
59
|
+
/** One SSE `data:` line of a streaming method — exactly one member set. */
|
|
60
|
+
export type StreamResponseV1 = {
|
|
61
|
+
task: TaskV1;
|
|
62
|
+
} | {
|
|
63
|
+
message: MessageV1;
|
|
64
|
+
} | {
|
|
65
|
+
statusUpdate: TaskStatusUpdateEventV1;
|
|
66
|
+
} | {
|
|
67
|
+
artifactUpdate: TaskArtifactUpdateEventV1;
|
|
68
|
+
};
|
|
69
|
+
export interface SendMessageConfigurationV1 {
|
|
70
|
+
acceptedOutputModes?: string[];
|
|
71
|
+
historyLength?: number;
|
|
72
|
+
returnImmediately?: boolean;
|
|
73
|
+
taskPushNotificationConfig?: TaskPushNotificationConfigV1;
|
|
74
|
+
}
|
|
75
|
+
export interface SendMessageRequestV1 {
|
|
76
|
+
message: MessageV1;
|
|
77
|
+
configuration?: SendMessageConfigurationV1;
|
|
78
|
+
metadata?: Record<string, unknown>;
|
|
79
|
+
tenant?: string;
|
|
80
|
+
}
|
|
81
|
+
export type SendMessageResponseV1 = {
|
|
82
|
+
task: TaskV1;
|
|
83
|
+
} | {
|
|
84
|
+
message: MessageV1;
|
|
85
|
+
};
|
|
86
|
+
export interface PushNotificationConfigV1 {
|
|
87
|
+
id?: string;
|
|
88
|
+
url: string;
|
|
89
|
+
token?: string;
|
|
90
|
+
authentication?: {
|
|
91
|
+
scheme: string;
|
|
92
|
+
credentials?: string;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export interface TaskPushNotificationConfigV1 extends PushNotificationConfigV1 {
|
|
96
|
+
taskId?: string;
|
|
97
|
+
tenant?: string;
|
|
98
|
+
}
|
|
99
|
+
export interface AgentInterfaceV1 {
|
|
100
|
+
url: string;
|
|
101
|
+
protocolBinding: 'JSONRPC' | 'GRPC' | 'HTTP+JSON' | string;
|
|
102
|
+
protocolVersion: string;
|
|
103
|
+
tenant?: string;
|
|
104
|
+
}
|
|
105
|
+
export interface AgentSkillV1 {
|
|
106
|
+
id: string;
|
|
107
|
+
name: string;
|
|
108
|
+
description: string;
|
|
109
|
+
tags: string[];
|
|
110
|
+
examples?: string[];
|
|
111
|
+
inputModes?: string[];
|
|
112
|
+
outputModes?: string[];
|
|
113
|
+
}
|
|
114
|
+
export interface AgentCardV1 {
|
|
115
|
+
name: string;
|
|
116
|
+
description: string;
|
|
117
|
+
version: string;
|
|
118
|
+
supportedInterfaces: AgentInterfaceV1[];
|
|
119
|
+
capabilities: {
|
|
120
|
+
streaming?: boolean;
|
|
121
|
+
pushNotifications?: boolean;
|
|
122
|
+
extendedAgentCard?: boolean;
|
|
123
|
+
extensions?: Array<{
|
|
124
|
+
uri: string;
|
|
125
|
+
description?: string;
|
|
126
|
+
required?: boolean;
|
|
127
|
+
params?: Record<string, unknown>;
|
|
128
|
+
}>;
|
|
129
|
+
};
|
|
130
|
+
defaultInputModes: string[];
|
|
131
|
+
defaultOutputModes: string[];
|
|
132
|
+
skills: AgentSkillV1[];
|
|
133
|
+
provider?: {
|
|
134
|
+
organization: string;
|
|
135
|
+
url: string;
|
|
136
|
+
};
|
|
137
|
+
documentationUrl?: string;
|
|
138
|
+
iconUrl?: string;
|
|
139
|
+
securitySchemes?: Record<string, SecuritySchemeV1>;
|
|
140
|
+
securityRequirements?: Array<{
|
|
141
|
+
schemes: Record<string, {
|
|
142
|
+
list: string[];
|
|
143
|
+
}>;
|
|
144
|
+
}>;
|
|
145
|
+
signatures?: Array<{
|
|
146
|
+
protected: string;
|
|
147
|
+
signature: string;
|
|
148
|
+
header?: Record<string, unknown>;
|
|
149
|
+
}>;
|
|
150
|
+
}
|
|
151
|
+
export type SecuritySchemeV1 = {
|
|
152
|
+
httpAuthSecurityScheme: {
|
|
153
|
+
scheme: string;
|
|
154
|
+
bearerFormat?: string;
|
|
155
|
+
description?: string;
|
|
156
|
+
};
|
|
157
|
+
} | {
|
|
158
|
+
apiKeySecurityScheme: {
|
|
159
|
+
name: string;
|
|
160
|
+
location: string;
|
|
161
|
+
description?: string;
|
|
162
|
+
};
|
|
163
|
+
} | {
|
|
164
|
+
mtlsSecurityScheme: {
|
|
165
|
+
description?: string;
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
export interface JsonRpcRequest {
|
|
169
|
+
jsonrpc?: string;
|
|
170
|
+
id?: string | number | null;
|
|
171
|
+
method?: string;
|
|
172
|
+
params?: unknown;
|
|
173
|
+
}
|
|
174
|
+
export type JsonRpcResponse = {
|
|
175
|
+
jsonrpc: '2.0';
|
|
176
|
+
id: string | number | null;
|
|
177
|
+
result: unknown;
|
|
178
|
+
} | {
|
|
179
|
+
jsonrpc: '2.0';
|
|
180
|
+
id: string | number | null;
|
|
181
|
+
error: {
|
|
182
|
+
code: number;
|
|
183
|
+
message: string;
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/standard/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// THE A2A 1.0 WIRE, AS PROTO-JSON — spec 372 S1.
|
|
2
|
+
//
|
|
3
|
+
// These are the shapes the official TCK validates responses against (its bundled `a2a.json`, generated
|
|
4
|
+
// from `a2a.proto` at v1.0.0): lowerCamelCase field names, enum values as their proto strings
|
|
5
|
+
// (`TASK_STATE_COMPLETED`, `ROLE_USER`), timestamps as RFC 3339 strings. Since the fold (spec 372 S4) they
|
|
6
|
+
// are the ONLY wire shapes this package speaks.
|
|
7
|
+
//
|
|
8
|
+
// They are still not the runtime's own task types (`../types.ts`): that record carries vault refs, a grant
|
|
9
|
+
// hash and a principal, and it is the system of record. What travels is a PROJECTION of it
|
|
10
|
+
// (`delegated/delegatedTaskAsV1`) — refs and hashes, never bodies.
|
|
11
|
+
export const TERMINAL_STATES = new Set([
|
|
12
|
+
'TASK_STATE_COMPLETED', 'TASK_STATE_FAILED', 'TASK_STATE_CANCELED', 'TASK_STATE_REJECTED',
|
|
13
|
+
]);
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/standard/types.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,uGAAuG;AACvG,8FAA8F;AAC9F,2GAA2G;AAC3G,gDAAgD;AAChD,EAAE;AACF,2GAA2G;AAC3G,2FAA2F;AAC3F,mEAAmE;AAanE,MAAM,CAAC,MAAM,eAAe,GAA6B,IAAI,GAAG,CAAc;IAC5E,sBAAsB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,qBAAqB;CAC1F,CAAC,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { Address } from '@agenticprimitives/types';
|
|
2
|
+
export declare const AP_SUBJECT_ASK_EXTENSION_URI = "https://agenticprimitives.org/a2a/subject-ask/v1";
|
|
3
|
+
/** The credential the asker holds, which the receiver verifies FOR ITSELF. A Home session names the person.
|
|
4
|
+
* Spec 397 — `app-delegation`: the person asked their own agent THROUGH A CLIENT they authorized, and no session
|
|
5
|
+
* exists; what travels is the ORIGINAL admission evidence verbatim — the `A2A-Session` authorization (the
|
|
6
|
+
* per-request assertion signed by the app's key, session-wrapped with the person's ask-as-me wire) and the exact
|
|
7
|
+
* body it bound. The receiver re-verifies the wire against the person on chain, the assertion's signature, its
|
|
8
|
+
* freshness and audience, that the body it binds was addressed to the asker's own agent, and spends the
|
|
9
|
+
* assertion once on ITS OWN object — one routed hop per receiver, never a replay to the same one. */
|
|
10
|
+
export type SubjectAskCredentialV1 = {
|
|
11
|
+
kind: 'home-session';
|
|
12
|
+
token: string;
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'app-delegation';
|
|
15
|
+
authorization: string;
|
|
16
|
+
body: string;
|
|
17
|
+
};
|
|
18
|
+
/** The request A sends B. */
|
|
19
|
+
export interface SubjectAskV1 {
|
|
20
|
+
extension: typeof AP_SUBJECT_ASK_EXTENSION_URI;
|
|
21
|
+
version: 1;
|
|
22
|
+
/** The delegated request: ONE capability step with the person's own words as arguments (the receiver
|
|
23
|
+
* resolves them in the asker's tier as it would any ask), and the goal for the record. */
|
|
24
|
+
request: {
|
|
25
|
+
capability: string;
|
|
26
|
+
args: Record<string, unknown>;
|
|
27
|
+
goal: string;
|
|
28
|
+
};
|
|
29
|
+
/** Who is asking, and the credential they hold that the receiver verifies for itself. A Home session names
|
|
30
|
+
* the person; a stewardship wire, when carried, is presented — never asserted. */
|
|
31
|
+
asker: {
|
|
32
|
+
agent: Address;
|
|
33
|
+
credential: SubjectAskCredentialV1;
|
|
34
|
+
presented?: unknown[];
|
|
35
|
+
};
|
|
36
|
+
/** The causal correlation: A's stable operation identity for this step, and the run it belongs to. */
|
|
37
|
+
correlation: {
|
|
38
|
+
operationId: string;
|
|
39
|
+
runRef: string;
|
|
40
|
+
stepRef: string;
|
|
41
|
+
intentDigest: string;
|
|
42
|
+
};
|
|
43
|
+
/** Spec 397 — the AGENT THAT ROUTED this step when it is not the asker's own (a person asking AT an organization,
|
|
44
|
+
* whose agent routes one step onward). A forwarded app credential is bound to the ask at THAT agent; the receiver
|
|
45
|
+
* accepts a bound body addressed to the asker's own agent or to this one, and nothing else. */
|
|
46
|
+
route?: {
|
|
47
|
+
agent: Address;
|
|
48
|
+
};
|
|
49
|
+
/** Spec 374 W2 — A CONTINUATION of the receiver's own parked run: the asker (a steward there) now
|
|
50
|
+
* presents the mandate the receiver asked for, or supplies the answer it prompted for. The receiver
|
|
51
|
+
* resumes THAT run under its own gates; nothing here is trusted beyond naming which run. */
|
|
52
|
+
continue?: {
|
|
53
|
+
runRef: string;
|
|
54
|
+
presented?: unknown[];
|
|
55
|
+
supplied?: unknown[];
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** The answer B returns A. */
|
|
59
|
+
export interface SubjectAnswerV1 {
|
|
60
|
+
extension: typeof AP_SUBJECT_ASK_EXTENSION_URI;
|
|
61
|
+
version: 1;
|
|
62
|
+
/** The receiver's principal — the enduring agent, not its service endpoint. */
|
|
63
|
+
agent: Address;
|
|
64
|
+
/** Which request this answers (R), so A's next receipt can name S. */
|
|
65
|
+
inResponseTo: {
|
|
66
|
+
operationId: string;
|
|
67
|
+
runRef: string;
|
|
68
|
+
stepRef: string;
|
|
69
|
+
};
|
|
70
|
+
/** What happened on B's side, in B's words. A refusal is an answer; a need is a question B raised. */
|
|
71
|
+
outcome: 'answer' | 'refused' | 'needs' | 'error';
|
|
72
|
+
result?: unknown;
|
|
73
|
+
said?: string;
|
|
74
|
+
/** B's own run and the receipts of the steps it ran — evidence, never authority. */
|
|
75
|
+
run: {
|
|
76
|
+
runRef: string;
|
|
77
|
+
receipts: Array<{
|
|
78
|
+
stepRef: string;
|
|
79
|
+
capability?: string;
|
|
80
|
+
status: string;
|
|
81
|
+
binding?: unknown;
|
|
82
|
+
}>;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/** Structural validation of a request. Authority is NOT judged here — the receiver verifies the credential
|
|
86
|
+
* and derives standing itself; this only refuses a request that is not this profile. */
|
|
87
|
+
export declare function validateSubjectAsk(x: unknown): {
|
|
88
|
+
ok: true;
|
|
89
|
+
ask: SubjectAskV1;
|
|
90
|
+
} | {
|
|
91
|
+
ok: false;
|
|
92
|
+
errors: string[];
|
|
93
|
+
};
|
|
94
|
+
export declare function subjectAsk(input: Omit<SubjectAskV1, 'extension' | 'version'>): SubjectAskV1;
|
|
95
|
+
export declare function subjectAnswer(input: Omit<SubjectAnswerV1, 'extension' | 'version'>): SubjectAnswerV1;
|
|
96
|
+
//# sourceMappingURL=subject-ask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subject-ask.d.ts","sourceRoot":"","sources":["../src/subject-ask.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAO,MAAM,4BAA4B,qDAAqD,CAAC;AAE/F;;;;;;sGAMsG;AACtG,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,6BAA6B;AAC7B,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,4BAA4B,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC;IACX;+FAC2F;IAC3F,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7E;uFACmF;IACnF,KAAK,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,sBAAsB,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IACrF,sGAAsG;IACtG,WAAW,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5F;;oGAEgG;IAChG,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3B;;iGAE6F;IAC7F,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;CAC5E;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,4BAA4B,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC;IACX,+EAA+E;IAC/E,KAAK,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,YAAY,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,sGAAsG;IACtG,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;CACvH;AAID;yFACyF;AACzF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAqBhH;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC,GAAG,YAAY,CAE3F;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,SAAS,CAAC,GAAG,eAAe,CAEpG"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const AP_SUBJECT_ASK_EXTENSION_URI = 'https://agenticprimitives.org/a2a/subject-ask/v1';
|
|
2
|
+
const isAddr = (v) => typeof v === 'string' && /^0x[0-9a-fA-F]{40}$/.test(v);
|
|
3
|
+
/** Structural validation of a request. Authority is NOT judged here — the receiver verifies the credential
|
|
4
|
+
* and derives standing itself; this only refuses a request that is not this profile. */
|
|
5
|
+
export function validateSubjectAsk(x) {
|
|
6
|
+
const errors = [];
|
|
7
|
+
const a = x;
|
|
8
|
+
if (!a || typeof a !== 'object')
|
|
9
|
+
return { ok: false, errors: ['not an object'] };
|
|
10
|
+
if (a.extension !== AP_SUBJECT_ASK_EXTENSION_URI)
|
|
11
|
+
errors.push(`extension: expected ${AP_SUBJECT_ASK_EXTENSION_URI}`);
|
|
12
|
+
if (a.version !== 1)
|
|
13
|
+
errors.push('version: expected 1');
|
|
14
|
+
if (!a.request || typeof a.request.capability !== 'string' || !a.request.capability)
|
|
15
|
+
errors.push('request.capability: required');
|
|
16
|
+
if (!a.request || !a.request.args || typeof a.request.args !== 'object' || Array.isArray(a.request.args))
|
|
17
|
+
errors.push('request.args: an object');
|
|
18
|
+
if (!a.request || typeof a.request.goal !== 'string')
|
|
19
|
+
errors.push('request.goal: required');
|
|
20
|
+
if (!a.asker || !isAddr(a.asker.agent))
|
|
21
|
+
errors.push('asker.agent: an address');
|
|
22
|
+
const cred = a.asker?.credential;
|
|
23
|
+
const credOk = !!cred && ((cred.kind === 'home-session' && typeof cred.token === 'string' && !!cred.token)
|
|
24
|
+
|| (cred.kind === 'app-delegation' && typeof cred.authorization === 'string' && /^A2A-Session\s/i.test(cred.authorization) && typeof cred.body === 'string'));
|
|
25
|
+
if (!credOk)
|
|
26
|
+
errors.push('asker.credential: { kind: home-session, token } or { kind: app-delegation, authorization, body }');
|
|
27
|
+
if (a.asker?.presented !== undefined && !Array.isArray(a.asker.presented))
|
|
28
|
+
errors.push('asker.presented: a list of wires when given');
|
|
29
|
+
if (a.route !== undefined && (!a.route || typeof a.route !== 'object' || !isAddr(a.route.agent)))
|
|
30
|
+
errors.push('route: { agent } — an address, when given');
|
|
31
|
+
const k = a.continue;
|
|
32
|
+
if (k !== undefined && (!k || typeof k !== 'object' || typeof k.runRef !== 'string' || !k.runRef || (k.presented !== undefined && !Array.isArray(k.presented)) || (k.supplied !== undefined && !Array.isArray(k.supplied))))
|
|
33
|
+
errors.push('continue: { runRef, presented?[], supplied?[] }');
|
|
34
|
+
const c = a.correlation;
|
|
35
|
+
if (!c || !['operationId', 'runRef', 'stepRef', 'intentDigest'].every((k) => typeof c[k] === 'string' && c[k]))
|
|
36
|
+
errors.push('correlation: { operationId, runRef, stepRef, intentDigest } required');
|
|
37
|
+
return errors.length ? { ok: false, errors } : { ok: true, ask: a };
|
|
38
|
+
}
|
|
39
|
+
export function subjectAsk(input) {
|
|
40
|
+
return { extension: AP_SUBJECT_ASK_EXTENSION_URI, version: 1, ...input };
|
|
41
|
+
}
|
|
42
|
+
export function subjectAnswer(input) {
|
|
43
|
+
return { extension: AP_SUBJECT_ASK_EXTENSION_URI, version: 1, ...input };
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=subject-ask.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subject-ask.js","sourceRoot":"","sources":["../src/subject-ask.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { type SubjectAskV1, type SubjectAnswerV1 } from './subject-ask.js';
|
|
2
|
+
import { type HandoffV1 } from './handoff.js';
|
|
3
|
+
import type { AgentCardV1, MessageV1, TaskV1 } from './standard/types.js';
|
|
4
|
+
/** The A2A 1.0 JSON-RPC endpoint a card publishes, or null when it publishes none. */
|
|
5
|
+
export declare function a2aEndpointOf(card: (Pick<AgentCardV1, 'supportedInterfaces'> & {
|
|
6
|
+
protocolVersion?: string;
|
|
7
|
+
}) | null | undefined): string | null;
|
|
8
|
+
/** The message that carries a subject-ask over the wire: the goal as text, the profile as metadata. */
|
|
9
|
+
export declare function subjectAskMessage(profile: SubjectAskV1): MessageV1;
|
|
10
|
+
/** The subject-ask a received message carries, validated; null when it carries none. */
|
|
11
|
+
export declare function subjectAskOf(message: Pick<MessageV1, 'metadata'>): {
|
|
12
|
+
ask: SubjectAskV1;
|
|
13
|
+
} | {
|
|
14
|
+
errors: string[];
|
|
15
|
+
} | null;
|
|
16
|
+
export declare const SUBJECT_ANSWER_ARTIFACT = "subject-answer";
|
|
17
|
+
/**
|
|
18
|
+
* Appendix M8 — THE RECEIVER'S RUN, NAMED BY THE SENDER. A routed step's run at the subject's agent is
|
|
19
|
+
* addressable before it answers, so the sender can read its progress while it runs and its record can
|
|
20
|
+
* cite it by reference. Derived from the correlation the sender minted; the receiver adopts it for a
|
|
21
|
+
* fresh ask (a resume names the run it continues instead).
|
|
22
|
+
*/
|
|
23
|
+
export declare function routedRunRefFor(correlation: {
|
|
24
|
+
runRef: string;
|
|
25
|
+
stepRef: string;
|
|
26
|
+
}): string;
|
|
27
|
+
/** The receiver's `/harness/ask` envelope, as the task's `subject-answer` artifact carries it. */
|
|
28
|
+
export declare function subjectEnvelopeOf(task: Pick<TaskV1, 'artifacts'> | null | undefined): Record<string, unknown> | null;
|
|
29
|
+
export interface SubjectHopInput {
|
|
30
|
+
/** Spec 390 W2 — W3C Trace Context for the hop: the sender's trace, the routed step as the parent span. */
|
|
31
|
+
traceparent?: string;
|
|
32
|
+
tracestate?: string;
|
|
33
|
+
/** Where the subject's card is served (`https://<host>/.well-known/agent-card.json`). */
|
|
34
|
+
cardUrl: string;
|
|
35
|
+
profile: SubjectAskV1;
|
|
36
|
+
/** `atl:cardDigest` from the subject's name records — the sha256 of the released card's bytes. When the
|
|
37
|
+
* name pins one, a served card that differs is refused: the pin is the name's word about its card. */
|
|
38
|
+
pinnedDigest?: string;
|
|
39
|
+
/** The asker's Home session — the `Authorization` bearer, which is also the credential the profile names. */
|
|
40
|
+
/** The asker's Home session as the bearer; absent when the profile carries the forwarded app credential (spec 397 W4). */
|
|
41
|
+
session?: string;
|
|
42
|
+
fetch: (input: string, init: RequestInit) => Promise<Response>;
|
|
43
|
+
}
|
|
44
|
+
export type SubjectHopOutcome = {
|
|
45
|
+
ok: true;
|
|
46
|
+
endpoint: string;
|
|
47
|
+
task: TaskV1;
|
|
48
|
+
envelope: Record<string, unknown>;
|
|
49
|
+
} | {
|
|
50
|
+
ok: false;
|
|
51
|
+
endpoint?: string;
|
|
52
|
+
refused: string;
|
|
53
|
+
status?: number;
|
|
54
|
+
task?: TaskV1;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* The hop: fetch the card, take its 1.0 endpoint, send ONE message, read the artifact. A task that ended
|
|
58
|
+
* without the artifact is relayed in the receiver's status words (a rejection, a need), never retried.
|
|
59
|
+
*/
|
|
60
|
+
export declare function sendSubjectAskOverWire(input: SubjectHopInput): Promise<SubjectHopOutcome>;
|
|
61
|
+
/** The message that delivers a finished routed act's outcome to the creditor's agent. */
|
|
62
|
+
export declare function subjectAnswerMessage(answer: SubjectAnswerV1): MessageV1;
|
|
63
|
+
/** The delivered answer a received message carries, structurally checked; null when it carries none. */
|
|
64
|
+
export declare function subjectAnswerOf(message: Pick<MessageV1, 'metadata'>): {
|
|
65
|
+
answer: SubjectAnswerV1;
|
|
66
|
+
} | {
|
|
67
|
+
errors: string[];
|
|
68
|
+
} | null;
|
|
69
|
+
export declare function handoffMessage(h: HandoffV1): MessageV1;
|
|
70
|
+
export declare function handoffOf(message: Pick<MessageV1, 'metadata'>): {
|
|
71
|
+
handoff: HandoffV1;
|
|
72
|
+
} | {
|
|
73
|
+
errors: string[];
|
|
74
|
+
} | null;
|
|
75
|
+
/** The `/harness/ask`-shaped envelope a receiver's `subject-answer` artifact carries. */
|
|
76
|
+
export type SubjectAnswerEnvelopeV1 = {
|
|
77
|
+
ok: true;
|
|
78
|
+
runRef: string;
|
|
79
|
+
reply: {
|
|
80
|
+
kind: 'answer';
|
|
81
|
+
runRef: string;
|
|
82
|
+
text: string;
|
|
83
|
+
results: Array<{
|
|
84
|
+
toolId: string;
|
|
85
|
+
result: unknown;
|
|
86
|
+
}>;
|
|
87
|
+
};
|
|
88
|
+
} | {
|
|
89
|
+
ok: false;
|
|
90
|
+
runRef: string;
|
|
91
|
+
error: string;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Shape a skill's result as the envelope the asker's runtime reads. The `toolId` is the capability the ask named (the
|
|
95
|
+
* asker finds its result by it), else the standard surface's own; the `runRef` is the receiver's run — the one the
|
|
96
|
+
* sender named (`routedRunRefFor`) unless the receiver had its own.
|
|
97
|
+
*/
|
|
98
|
+
export declare function subjectAnswerEnvelope(ask: Pick<SubjectAskV1, 'correlation' | 'request'>, outcome: {
|
|
99
|
+
ok: true;
|
|
100
|
+
text: string;
|
|
101
|
+
result: unknown;
|
|
102
|
+
} | {
|
|
103
|
+
ok: false;
|
|
104
|
+
error: string;
|
|
105
|
+
}, opts?: {
|
|
106
|
+
runRef?: string;
|
|
107
|
+
toolId?: string;
|
|
108
|
+
}): SubjectAnswerEnvelopeV1;
|
|
109
|
+
/** The artifact a receiver attaches: `subjectEnvelopeOf(task)` on the asker's side reads exactly this back. */
|
|
110
|
+
/** Any `/harness/ask`-shaped envelope rides here unchanged — a harness's own reply (the runtime) or `subjectAnswerEnvelope`'s. */
|
|
111
|
+
export declare function subjectAnswerArtifact<E extends Record<string, unknown>>(envelope: E): {
|
|
112
|
+
name: typeof SUBJECT_ANSWER_ARTIFACT;
|
|
113
|
+
parts: Array<{
|
|
114
|
+
data: E;
|
|
115
|
+
}>;
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=subject-hop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subject-hop.d.ts","sourceRoot":"","sources":["../src/subject-hop.ts"],"names":[],"mappings":"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"}
|