agent-protocols 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -19
- package/dist/delegation.d.ts +57 -36
- package/dist/delegation.d.ts.map +1 -1
- package/dist/delegation.js +208 -69
- package/dist/delegation.js.map +1 -1
- package/dist/discourse.d.ts +196 -74
- package/dist/discourse.d.ts.map +1 -1
- package/dist/discourse.js +568 -116
- package/dist/discourse.js.map +1 -1
- package/dist/http-client.d.ts +43 -18
- package/dist/http-client.d.ts.map +1 -1
- package/dist/http-client.js +86 -32
- package/dist/http-client.js.map +1 -1
- package/dist/identity.d.ts +100 -3
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +333 -7
- package/dist/identity.js.map +1 -1
- package/dist/local-connector/catalog.d.ts +1 -16
- package/dist/local-connector/catalog.d.ts.map +1 -1
- package/dist/local-connector/catalog.js +53 -71
- package/dist/local-connector/catalog.js.map +1 -1
- package/dist/local-connector/engine.d.ts +55 -32
- package/dist/local-connector/engine.d.ts.map +1 -1
- package/dist/local-connector/engine.js +636 -608
- package/dist/local-connector/engine.js.map +1 -1
- package/dist/local-connector/inputs.d.ts +28 -76
- package/dist/local-connector/inputs.d.ts.map +1 -1
- package/dist/local-connector/inputs.js +19 -1
- package/dist/local-connector/inputs.js.map +1 -1
- package/dist/local-connector/projection.d.ts +24 -9
- package/dist/local-connector/projection.d.ts.map +1 -1
- package/dist/local-connector/projection.js +78 -39
- package/dist/local-connector/projection.js.map +1 -1
- package/dist/local-connector/state.d.ts +10 -3
- package/dist/local-connector/state.d.ts.map +1 -1
- package/dist/local-connector/state.js +3 -0
- package/dist/local-connector/state.js.map +1 -1
- package/dist/local-connector/views.d.ts +36 -12
- package/dist/local-connector/views.d.ts.map +1 -1
- package/dist/local-connector/views.js +49 -31
- package/dist/local-connector/views.js.map +1 -1
- package/dist/profile.d.ts +23 -9
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +120 -3
- package/dist/profile.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,12 +4,12 @@ TypeScript SDK for the draft Agent Identity, Agent Profile, Agent Delegation, an
|
|
|
4
4
|
|
|
5
5
|
## Modules
|
|
6
6
|
|
|
7
|
-
- `identity`: `did:agent:` encoding, JCS canonicalization, event hashes, Ed25519 signing and verification, live-write
|
|
8
|
-
- `profile`: `profile.update` payloads, Profile documents, delegation discovery hints, validation, materialization.
|
|
9
|
-
- `delegation`:
|
|
10
|
-
- `discourse`: ADP kernel
|
|
11
|
-
- `http-client`: fetch-based Profile, Delegation, and Discourse clients.
|
|
12
|
-
- `local-connector`: Local Agent Protocols MCP connector
|
|
7
|
+
- `identity`: `did:agent:` encoding, strict JSON parsing (`parseStrictJson`, `parseEnvelopeJson`), JCS canonicalization, event hashes, Ed25519 signing and strict verification (`verifyEd25519Strict`), closed event objects (`validateEventFields`), clock-derived nonces with bounded `Max-Seen-Nonce` resynchronization, live-write and exact-resubmission checks (`verifySubmission`), request JWT helpers, and the shared HTTP shapes (`ErrorResponse`, `ListResponse`, `AcceptedRecord`, `DiscoveryDocument`).
|
|
8
|
+
- `profile`: `profile.update` payloads, Profile documents, delegation discovery hints, validation, succession checks, materialization.
|
|
9
|
+
- `delegation`: principal documents and resolution, Controller records with `supersedes` lineage, grant/revoke payloads, credentials, query shapes, authority, acceptance, historical, and use checks, `verifyDelegationCredential` over the latest grant record, and `auditDelegationHistory` for auditors.
|
|
10
|
+
- `discourse`: the ADP kernel — twelve built-in event types, freshness classes, room policy (`invites`, `open_roles`), signed join requests and reviews, the type system with the portable type schema profile, redacted records, server records, and archive verification.
|
|
11
|
+
- `http-client`: fetch-based Profile, Delegation, and Discourse clients. Lists use `{ result, next_cursor }`; non-2xx responses throw `HttpResponseError` with the protocol `code`, `data`, and `Max-Seen-Nonce`.
|
|
12
|
+
- `local-connector`: the Local Agent Protocols MCP connector: 23 standard tools, resource URIs, structured views, and the connector engine.
|
|
13
13
|
|
|
14
14
|
## Example
|
|
15
15
|
|
|
@@ -18,7 +18,8 @@ import { AgentSigner, ClientNonceManager, materializeProfile, profileUpdateEvent
|
|
|
18
18
|
|
|
19
19
|
const signer = AgentSigner.generate();
|
|
20
20
|
const nonces = new ClientNonceManager();
|
|
21
|
-
const
|
|
21
|
+
const createdAt = Date.now();
|
|
22
|
+
const event = profileUpdateEvent(signer.agentId(), createdAt, nonces.nextNonce(createdAt), {
|
|
22
23
|
id: signer.agentId(),
|
|
23
24
|
name: "ResearchAgent-v3",
|
|
24
25
|
});
|
|
@@ -26,30 +27,34 @@ const envelope = signer.signEvent(event);
|
|
|
26
27
|
const profile = materializeProfile(envelope);
|
|
27
28
|
```
|
|
28
29
|
|
|
29
|
-
Agent Profile has no `username` field: the Agent ID is the identity key, and the latest profile is the accepted `profile.update` with the greatest `nonce`.
|
|
30
|
+
`nextNonce(createdAt)` derives `max(last + 1, created_at)`, so nonces stay monotonic across restarts and devices. Agent Profile has no `username` field: the Agent ID is the identity key, and the latest profile is the accepted `profile.update` with the greatest `nonce`.
|
|
30
31
|
|
|
31
|
-
ADP room writes
|
|
32
|
+
ADP room writes carry a signed `base_seq` / `base_hash`. Message and control writes — `message.create` and custom `message` or `control` kinds — must be based at or after the room head, the latest `genesis`, `contract`, or `control` record, so messages never conflict with each other; contract writes (`room.update`, `room.close`, `room.cancel`, `type.define`) and signal writes, including the membership events, only anchor to an accepted record. Use `eventRequiresRoomHead` and `eventAdvancesRoomHead` to tell them apart, `validateRoomBase` for the host-side base check, `discourseEvent` to build them, and `roomJoinRequestEvent` for a join request, which carries `room_id` but no base. Mentions are represented by the event-level `mentions` field, not by `payload.extra`.
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
The conformance vectors in `docs/protocols/*/1.0.vectors.json` are part of the test suite.
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
## Delegation
|
|
36
37
|
|
|
37
|
-
|
|
38
|
+
Controllers are records shared by `controllers` and `retired_controllers`: `id` is the Agent ID, `source` is an HTTPS origin or `local`, and `valid_from` starts the binding. Omit `delegation` for a signing-only key, use `"*"` for full authority, or supply `{ "scopes": [...], "audiences": [...] }` for restricted authority. `supersedes` lets a successor key manage its predecessors' credentials. Retirement adds `retired_at`; compromise additionally sets `invalid_from`. A principal that grants delegations publishes `delegation_query_url`.
|
|
39
|
+
|
|
40
|
+
Grants name the canonical `principal_id`. Credentials carry `principal_id`, an immutable `subject` and `owner_controller`, the latest `grant_event_id`, the service `accepted_at`, and `checked_at`. Materialization requires an explicit acceptance time and trusted previous state; it never derives acceptance time from `created_at`.
|
|
38
41
|
|
|
39
42
|
The validation layers have different responsibilities:
|
|
40
43
|
|
|
41
|
-
- Envelope validation checks cryptography and payload shape, not principal authority.
|
|
42
|
-
- Event-authority validation checks the controller policy before signing. Acceptance validation also checks the envelope and authoritative-resolution URL.
|
|
43
|
-
- Historical validation
|
|
44
|
+
- Envelope validation checks cryptography, the closed event object, and payload shape, not principal authority.
|
|
45
|
+
- Event-authority validation checks the controller policy before signing. Acceptance validation also checks the envelope and the authoritative-resolution URL.
|
|
46
|
+
- Historical validation checks an accepted record `{ envelope, accepted_at }` against the original controller interval and ceiling. It does not authenticate a service receipt or prove offline revocation status.
|
|
44
47
|
- Use validation checks audience, status, and validity. Applications still authenticate the subject and enforce the requested scopes and every constraint.
|
|
45
48
|
|
|
46
|
-
Services remain responsible for fresh HTTPS resolution, live Identity timestamp/nonce checks, exact-envelope idempotency, atomic state/history storage, and current revocation or compromise reevaluation. Pass only authoritative documents, authenticated acceptance evidence, and trusted previous state. These are SDK building blocks, not a hosted delegation service.
|
|
47
|
-
|
|
48
49
|
```ts
|
|
49
50
|
// principal was freshly resolved over HTTPS; previous is trusted service state.
|
|
50
51
|
validateDelegationAcceptance(envelope, principal, resolvedUrl, acceptedAt, previous);
|
|
51
52
|
const credential = materializeDelegationCredential(envelope, { acceptedAt, previous });
|
|
52
|
-
|
|
53
|
+
|
|
54
|
+
// A relying party checks the credential's latest grant record.
|
|
55
|
+
const verdict = verifyDelegationCredential(credential, records, principal, principal.id, "https://dmsg.net", Date.now());
|
|
53
56
|
```
|
|
54
57
|
|
|
55
|
-
|
|
58
|
+
Services remain responsible for fresh HTTPS resolution, live Identity timestamp and nonce checks, exact-resubmission lookups, atomic state and history storage, and current revocation or compromise reevaluation. These are SDK building blocks, not a hosted delegation service.
|
|
59
|
+
|
|
60
|
+
The local connector derives the delegation service from the principal's `delegation_query_url` and its discovery document, and checks policy and credential ownership before signing a grant or revocation.
|
package/dist/delegation.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { AgentId, Envelope, Event } from "./identity.js";
|
|
1
|
+
import { AcceptedRecord, AgentId, Envelope, Event, ListResponse } from "./identity.js";
|
|
2
2
|
export declare const DELEGATION_PROTOCOL = "agent-delegation/1.0";
|
|
3
3
|
export declare const DELEGATION_GRANT = "delegation.grant";
|
|
4
4
|
export declare const DELEGATION_REVOKE = "delegation.revoke";
|
|
5
|
+
/** Delegation IDs are unreserved URL characters: no percent-encoding, no look-alikes. */
|
|
6
|
+
export declare const DELEGATION_ID_PATTERN: RegExp;
|
|
7
|
+
/** Delegation-specific error codes (Agent Delegation Section 9.7). */
|
|
8
|
+
export declare const DELEGATION_ERROR_CODES: readonly string[];
|
|
5
9
|
export type DelegationEventType = typeof DELEGATION_GRANT | typeof DELEGATION_REVOKE;
|
|
6
10
|
export type DelegationStatus = "active" | "suspended" | "expired" | "revoked";
|
|
7
11
|
export interface PrincipalLink {
|
|
@@ -9,6 +13,7 @@ export interface PrincipalLink {
|
|
|
9
13
|
url: string;
|
|
10
14
|
rel: string;
|
|
11
15
|
}
|
|
16
|
+
/** Display descriptor of a principal, used by Agent Profile delegation hints. */
|
|
12
17
|
export interface PrincipalDescriptor {
|
|
13
18
|
id: string;
|
|
14
19
|
type?: string;
|
|
@@ -24,13 +29,11 @@ export interface Controller {
|
|
|
24
29
|
scopes: string[];
|
|
25
30
|
audiences: string[];
|
|
26
31
|
};
|
|
32
|
+
/** Earlier controllers of this principal whose credentials this key may manage. */
|
|
33
|
+
supersedes?: AgentId[];
|
|
27
34
|
retired_at?: number;
|
|
28
35
|
invalid_from?: number;
|
|
29
36
|
}
|
|
30
|
-
export interface DelegationAcceptance {
|
|
31
|
-
event_id: string;
|
|
32
|
-
accepted_at: number;
|
|
33
|
-
}
|
|
34
37
|
export interface PrincipalDocument extends PrincipalDescriptor {
|
|
35
38
|
description?: string;
|
|
36
39
|
avatar_url?: string;
|
|
@@ -40,14 +43,14 @@ export interface PrincipalDocument extends PrincipalDescriptor {
|
|
|
40
43
|
protocol: typeof DELEGATION_PROTOCOL;
|
|
41
44
|
controllers: Controller[];
|
|
42
45
|
retired_controllers?: Controller[];
|
|
43
|
-
/** Delegation query endpoint
|
|
46
|
+
/** Delegation query endpoint; required when any controller carries `delegation`. */
|
|
44
47
|
delegation_query_url?: string;
|
|
45
48
|
updated_at: number;
|
|
46
49
|
extra?: Record<string, unknown>;
|
|
47
50
|
}
|
|
48
51
|
export interface DelegationGrantPayload {
|
|
49
52
|
id: string;
|
|
50
|
-
|
|
53
|
+
principal_id: string;
|
|
51
54
|
subject: AgentId;
|
|
52
55
|
relationship?: string;
|
|
53
56
|
scopes: string[];
|
|
@@ -65,11 +68,7 @@ export type DelegationPayload = DelegationGrantPayload | DelegationRevokePayload
|
|
|
65
68
|
export interface DelegationCredential {
|
|
66
69
|
id: string;
|
|
67
70
|
protocol: typeof DELEGATION_PROTOCOL;
|
|
68
|
-
|
|
69
|
-
controller: AgentId;
|
|
70
|
-
owner_controller: AgentId;
|
|
71
|
-
grant_event_id: string;
|
|
72
|
-
accepted_at: number;
|
|
71
|
+
principal_id: string;
|
|
73
72
|
subject: AgentId;
|
|
74
73
|
relationship?: string;
|
|
75
74
|
scopes: string[];
|
|
@@ -78,19 +77,14 @@ export interface DelegationCredential {
|
|
|
78
77
|
not_before?: number;
|
|
79
78
|
expires_at?: number;
|
|
80
79
|
status: DelegationStatus;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
export interface DelegationStatusDocument {
|
|
85
|
-
protocol: typeof DELEGATION_PROTOCOL;
|
|
80
|
+
controller: AgentId;
|
|
81
|
+
owner_controller: AgentId;
|
|
86
82
|
grant_event_id: string;
|
|
83
|
+
event_id: string;
|
|
87
84
|
accepted_at: number;
|
|
88
|
-
id: string;
|
|
89
|
-
status: DelegationStatus;
|
|
90
85
|
checked_at: number;
|
|
91
|
-
expires_at?: number;
|
|
92
|
-
event_id: string;
|
|
93
86
|
}
|
|
87
|
+
export type DelegationRecord = AcceptedRecord<DelegationPayload>;
|
|
94
88
|
export interface DelegationServiceEndpoints {
|
|
95
89
|
delegations: string;
|
|
96
90
|
query?: string;
|
|
@@ -107,20 +101,21 @@ export interface DelegationQueryRequest {
|
|
|
107
101
|
id?: string;
|
|
108
102
|
status?: DelegationStatus;
|
|
109
103
|
limit?: number;
|
|
104
|
+
cursor?: string;
|
|
110
105
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
106
|
+
/** Agent Identity list of full credentials. */
|
|
107
|
+
export type DelegationQueryResponse = ListResponse<DelegationCredential>;
|
|
108
|
+
/** Agent Identity list of accepted records in service acceptance order. */
|
|
109
|
+
export type DelegationEventsResponse = ListResponse<DelegationRecord>;
|
|
110
|
+
/** Result of {@link verifyDelegationCredential}. */
|
|
111
|
+
export interface DelegationVerdict {
|
|
112
|
+
credential: DelegationCredential;
|
|
113
|
+
/** Latest-grant signature, controller, ceiling, and consistency checks passed. */
|
|
114
|
+
verified: boolean;
|
|
115
|
+
/** Verified, and usable for the audience now: active, in its window, audience listed. */
|
|
116
|
+
usable: boolean;
|
|
117
|
+
/** Every failed check. */
|
|
118
|
+
reasons: string[];
|
|
124
119
|
}
|
|
125
120
|
export declare function delegationGrantEvent(actor: AgentId, createdAt: number, nonce: number, payload: DelegationGrantPayload): Event<DelegationGrantPayload>;
|
|
126
121
|
export declare function delegationRevokeEvent(actor: AgentId, createdAt: number, nonce: number, payload: DelegationRevokePayload): Event<DelegationRevokePayload>;
|
|
@@ -139,6 +134,12 @@ export declare function validatePrincipalResolution(document: PrincipalDocument,
|
|
|
139
134
|
* name for the principal unless it is listed here.
|
|
140
135
|
*/
|
|
141
136
|
export declare function isPrincipalAlias(document: PrincipalDocument, url: string): boolean;
|
|
137
|
+
/**
|
|
138
|
+
* The lineage of a controller (Section 5.1): its own ID plus, transitively,
|
|
139
|
+
* every record it supersedes. A restricted controller owns a credential whose
|
|
140
|
+
* `owner_controller` is in its lineage.
|
|
141
|
+
*/
|
|
142
|
+
export declare function controllerLineage(document: PrincipalDocument, controllerId: AgentId): Set<AgentId>;
|
|
142
143
|
export declare function validateDelegationGrantPayload(payload: DelegationGrantPayload, createdAt?: number): void;
|
|
143
144
|
/**
|
|
144
145
|
* A public delegation query is an existence check and MUST include both
|
|
@@ -159,7 +160,7 @@ export declare function materializeDelegationCredential(envelope: Envelope<Deleg
|
|
|
159
160
|
acceptedAt: number;
|
|
160
161
|
previous?: DelegationCredential;
|
|
161
162
|
status?: DelegationStatus;
|
|
162
|
-
|
|
163
|
+
checkedAt?: number;
|
|
163
164
|
}): DelegationCredential;
|
|
164
165
|
/** Pre-signing authority check. Input previous state and document must be trusted.
|
|
165
166
|
* This does not verify signatures, fetch HTTPS, check cache age, or enforce nonce/time windows. */
|
|
@@ -169,10 +170,30 @@ export declare function validateDelegationEventAuthority(event: Event<Delegation
|
|
|
169
170
|
export declare function validateDelegationAcceptance(envelope: Envelope<DelegationPayload>, document: PrincipalDocument, resolvedUrl: string, acceptedAt: number, previous?: DelegationCredential): void;
|
|
170
171
|
/** Uses caller-trusted acceptance evidence, never an event's self-reported time as proof.
|
|
171
172
|
* Current status, evidence authenticity and application constraints are separate checks. */
|
|
172
|
-
export declare function validateHistoricalDelegation(
|
|
173
|
+
export declare function validateHistoricalDelegation(record: DelegationRecord, document: PrincipalDocument, resolvedUrl: string, previous?: DelegationCredential): void;
|
|
173
174
|
/** Per-result enumeration check; the caller authenticates actor and resolves the document. */
|
|
174
175
|
export declare function validateControllerEnumeration(document: PrincipalDocument, actor: AgentId, now: number, owner: AgentId): void;
|
|
175
176
|
/** Checks audience/status/time only, after cryptographic and historical verification.
|
|
176
177
|
* The application still authenticates the subject and enforces scopes and constraints. */
|
|
177
178
|
export declare function validateDelegationUse(credential: DelegationCredential, audience: string, now: number): void;
|
|
179
|
+
/**
|
|
180
|
+
* Verifies a credential under Agent Delegation Section 8 with the online
|
|
181
|
+
* service-trusting evidence policy: checks the accepted record of its latest
|
|
182
|
+
* grant — signature, Controller binding, ceiling, and authority interval —
|
|
183
|
+
* confirms that the grant matches the credential, and then checks use for
|
|
184
|
+
* `audience` at `now`. Ownership and `supersedes` lineage govern management,
|
|
185
|
+
* which the service enforced at acceptance; auditors replay them with
|
|
186
|
+
* {@link auditDelegationHistory}. Relying parties still enforce scopes and
|
|
187
|
+
* constraints and authenticate the subject.
|
|
188
|
+
*/
|
|
189
|
+
export declare function verifyDelegationCredential(credential: DelegationCredential, records: readonly DelegationRecord[], document: PrincipalDocument, resolvedUrl: string, audience: string, now: number): DelegationVerdict;
|
|
190
|
+
/**
|
|
191
|
+
* Auditor check (Section 8): replays every accepted record of a credential
|
|
192
|
+
* against the authoritative principal document — signatures, controller
|
|
193
|
+
* intervals, ceilings, and ownership lineage — and confirms that the replay
|
|
194
|
+
* matches the credential. Relying parties use {@link verifyDelegationCredential}.
|
|
195
|
+
*/
|
|
196
|
+
export declare function auditDelegationHistory(credential: DelegationCredential, records: readonly DelegationRecord[], document: PrincipalDocument, resolvedUrl: string): void;
|
|
197
|
+
/** A relying-party audience (Section 5): an origin for a relying application, or an Agent ID for a relying agent. */
|
|
198
|
+
export declare function validateAudience(value: unknown): void;
|
|
178
199
|
//# sourceMappingURL=delegation.d.ts.map
|
package/dist/delegation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../src/delegation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../src/delegation.ts"],"names":[],"mappings":"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"}
|