gbz185-sdk 0.1.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/CHANGELOG.md +12 -0
- package/LICENSE +21 -0
- package/README.md +192 -0
- package/dist/agent-maintenance.d.ts +35 -0
- package/dist/agent-maintenance.d.ts.map +1 -0
- package/dist/agent-maintenance.js +107 -0
- package/dist/agent-maintenance.js.map +1 -0
- package/dist/authorization.d.ts +32 -0
- package/dist/authorization.d.ts.map +1 -0
- package/dist/authorization.js +37 -0
- package/dist/authorization.js.map +1 -0
- package/dist/client.d.ts +39 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +70 -0
- package/dist/client.js.map +1 -0
- package/dist/conformance.d.ts +11 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +195 -0
- package/dist/conformance.js.map +1 -0
- package/dist/credentials.d.ts +124 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +209 -0
- package/dist/credentials.js.map +1 -0
- package/dist/description-registry.d.ts +66 -0
- package/dist/description-registry.d.ts.map +1 -0
- package/dist/description-registry.js +137 -0
- package/dist/description-registry.js.map +1 -0
- package/dist/discovery.d.ts +14 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +105 -0
- package/dist/discovery.js.map +1 -0
- package/dist/factory.d.ts +34 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +98 -0
- package/dist/factory.js.map +1 -0
- package/dist/functional-architecture.d.ts +18 -0
- package/dist/functional-architecture.d.ts.map +1 -0
- package/dist/functional-architecture.js +159 -0
- package/dist/functional-architecture.js.map +1 -0
- package/dist/identity-code.d.ts +8 -0
- package/dist/identity-code.d.ts.map +1 -0
- package/dist/identity-code.js +76 -0
- package/dist/identity-code.js.map +1 -0
- package/dist/identity-registry.d.ts +68 -0
- package/dist/identity-registry.d.ts.map +1 -0
- package/dist/identity-registry.js +155 -0
- package/dist/identity-registry.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction.d.ts +41 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +95 -0
- package/dist/interaction.js.map +1 -0
- package/dist/message-distribution.d.ts +18 -0
- package/dist/message-distribution.d.ts.map +1 -0
- package/dist/message-distribution.js +35 -0
- package/dist/message-distribution.js.map +1 -0
- package/dist/tool-access.d.ts +16 -0
- package/dist/tool-access.d.ts.map +1 -0
- package/dist/tool-access.js +30 -0
- package/dist/tool-access.js.map +1 -0
- package/dist/tools.d.ts +18 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +77 -0
- package/dist/tools.js.map +1 -0
- package/dist/transport.d.ts +21 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +36 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +165 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +12 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +94 -0
- package/dist/validation.js.map +1 -0
- package/docs/API_REFERENCE.md +116 -0
- package/docs/CONFORMANCE.md +96 -0
- package/docs/GITHUB_PAGES.md +54 -0
- package/docs/NPM_RELEASE.md +107 -0
- package/docs/SDK_GUIDE.md +439 -0
- package/examples/calendar.ts +105 -0
- package/package.json +60 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export const AGENT_IDENTITY_CODE_OID = "1.2.156.3088";
|
|
2
|
+
export const CURRENT_IDENTITY_CODE_VERSION = "1";
|
|
3
|
+
const NODE_RE = /^[0-9A-Z]+$/i;
|
|
4
|
+
function validateNode(value, name, maxLength) {
|
|
5
|
+
if (!value || value.length > maxLength || !NODE_RE.test(value)) {
|
|
6
|
+
throw new Error(`${name} must be 1-${maxLength} base36 characters`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function formatIdentityCode(parts) {
|
|
10
|
+
const normalized = {
|
|
11
|
+
oid: parts.oid ?? AGENT_IDENTITY_CODE_OID,
|
|
12
|
+
version: parts.version ?? CURRENT_IDENTITY_CODE_VERSION,
|
|
13
|
+
registrationServiceProvider: parts.registrationServiceProvider.toUpperCase(),
|
|
14
|
+
registrationRequester: parts.registrationRequester.toUpperCase(),
|
|
15
|
+
ontologySerial: parts.ontologySerial.toUpperCase(),
|
|
16
|
+
instanceSerial: parts.instanceSerial.toUpperCase()
|
|
17
|
+
};
|
|
18
|
+
validateIdentityCodeParts(normalized);
|
|
19
|
+
return [
|
|
20
|
+
normalized.oid,
|
|
21
|
+
normalized.version,
|
|
22
|
+
normalized.registrationServiceProvider,
|
|
23
|
+
normalized.registrationRequester,
|
|
24
|
+
normalized.ontologySerial,
|
|
25
|
+
normalized.instanceSerial
|
|
26
|
+
].join(".");
|
|
27
|
+
}
|
|
28
|
+
export function parseIdentityCode(code) {
|
|
29
|
+
const segments = code.split(".");
|
|
30
|
+
if (segments.length !== 9) {
|
|
31
|
+
throw new Error("Agent identity code must contain 9 dot-separated segments");
|
|
32
|
+
}
|
|
33
|
+
const oid = segments.slice(0, 4).join(".");
|
|
34
|
+
if (oid !== AGENT_IDENTITY_CODE_OID) {
|
|
35
|
+
throw new Error(`Unsupported agent identity code OID: ${oid}`);
|
|
36
|
+
}
|
|
37
|
+
const [version, registrationServiceProvider, registrationRequester, ontologySerial, instanceSerial] = segments.slice(4);
|
|
38
|
+
if (!version || version !== CURRENT_IDENTITY_CODE_VERSION) {
|
|
39
|
+
throw new Error(`Unsupported agent identity code version: ${version ?? ""}`);
|
|
40
|
+
}
|
|
41
|
+
if (!registrationServiceProvider || !registrationRequester || !ontologySerial || !instanceSerial) {
|
|
42
|
+
throw new Error("Agent identity code is missing one or more required nodes");
|
|
43
|
+
}
|
|
44
|
+
const parts = {
|
|
45
|
+
oid: AGENT_IDENTITY_CODE_OID,
|
|
46
|
+
version: CURRENT_IDENTITY_CODE_VERSION,
|
|
47
|
+
registrationServiceProvider: registrationServiceProvider.toUpperCase(),
|
|
48
|
+
registrationRequester: registrationRequester.toUpperCase(),
|
|
49
|
+
ontologySerial: ontologySerial.toUpperCase(),
|
|
50
|
+
instanceSerial: instanceSerial.toUpperCase()
|
|
51
|
+
};
|
|
52
|
+
validateIdentityCodeParts(parts);
|
|
53
|
+
return parts;
|
|
54
|
+
}
|
|
55
|
+
export function validateIdentityCode(code) {
|
|
56
|
+
try {
|
|
57
|
+
parseIdentityCode(code);
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export function validateIdentityCodeParts(parts) {
|
|
65
|
+
if (parts.oid !== AGENT_IDENTITY_CODE_OID) {
|
|
66
|
+
throw new Error(`Agent identity code OID must be ${AGENT_IDENTITY_CODE_OID}`);
|
|
67
|
+
}
|
|
68
|
+
if (parts.version !== CURRENT_IDENTITY_CODE_VERSION) {
|
|
69
|
+
throw new Error(`Agent identity code version must be ${CURRENT_IDENTITY_CODE_VERSION}`);
|
|
70
|
+
}
|
|
71
|
+
validateNode(parts.registrationServiceProvider, "registrationServiceProvider", 6);
|
|
72
|
+
validateNode(parts.registrationRequester, "registrationRequester", 6);
|
|
73
|
+
validateNode(parts.ontologySerial, "ontologySerial", 9);
|
|
74
|
+
validateNode(parts.instanceSerial, "instanceSerial", 9);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=identity-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-code.js","sourceRoot":"","sources":["../src/identity-code.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAuB,CAAC;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAY,CAAC;AAE1D,MAAM,OAAO,GAAG,cAAc,CAAC;AAE/B,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY,EAAE,SAAiB;IAClE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,cAAc,SAAS,oBAAoB,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAiH;IAClJ,MAAM,UAAU,GAA2B;QACzC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,uBAAuB;QACzC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,6BAA6B;QACvD,2BAA2B,EAAE,KAAK,CAAC,2BAA2B,CAAC,WAAW,EAAE;QAC5E,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,CAAC,WAAW,EAAE;QAChE,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE;QAClD,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE;KACnD,CAAC;IAEF,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO;QACL,UAAU,CAAC,GAAG;QACd,UAAU,CAAC,OAAO;QAClB,UAAU,CAAC,2BAA2B;QACtC,UAAU,CAAC,qBAAqB;QAChC,UAAU,CAAC,cAAc;QACzB,UAAU,CAAC,cAAc;KAC1B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAuB;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,cAAc,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxH,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,6BAA6B,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,4CAA4C,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,2BAA2B,IAAI,CAAC,qBAAqB,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,KAAK,GAA2B;QACpC,GAAG,EAAE,uBAAuB;QAC5B,OAAO,EAAE,6BAA6B;QACtC,2BAA2B,EAAE,2BAA2B,CAAC,WAAW,EAAE;QACtE,qBAAqB,EAAE,qBAAqB,CAAC,WAAW,EAAE;QAC1D,cAAc,EAAE,cAAc,CAAC,WAAW,EAAE;QAC5C,cAAc,EAAE,cAAc,CAAC,WAAW,EAAE;KAC7C,CAAC;IACF,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAuB;IAC1D,IAAI,CAAC;QACH,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA6B;IACrE,IAAI,KAAK,CAAC,GAAG,KAAK,uBAAuB,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,mCAAmC,uBAAuB,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,KAAK,6BAA6B,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,uCAAuC,6BAA6B,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,YAAY,CAAC,KAAK,CAAC,2BAA2B,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC;IAClF,YAAY,CAAC,KAAK,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC;IACtE,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACxD,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { CredentialIssuer, IssuedCredential } from "./credentials.js";
|
|
2
|
+
import type { AgentDescription, AgentIdentityCode, JsonObject } from "./types.js";
|
|
3
|
+
export type IdentityAccountStatus = "active" | "locked" | "revoked";
|
|
4
|
+
export interface IdentityAccount {
|
|
5
|
+
id: AgentIdentityCode;
|
|
6
|
+
delegatorId: string;
|
|
7
|
+
subject: string;
|
|
8
|
+
description?: Partial<AgentDescription> | undefined;
|
|
9
|
+
status: IdentityAccountStatus;
|
|
10
|
+
credentialIds: string[];
|
|
11
|
+
evidence?: JsonObject[] | undefined;
|
|
12
|
+
auditLog?: IdentityAuditEvent[] | undefined;
|
|
13
|
+
createdAt: string;
|
|
14
|
+
updatedAt: string;
|
|
15
|
+
}
|
|
16
|
+
export interface IdentityAuditEvent {
|
|
17
|
+
eventId: string;
|
|
18
|
+
type: "registered" | "updated" | "locked" | "unlocked" | "revoked" | "credential_issued";
|
|
19
|
+
actor?: string | undefined;
|
|
20
|
+
reason?: string | undefined;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
metadata?: JsonObject | undefined;
|
|
23
|
+
}
|
|
24
|
+
export interface RegisterIdentityInput {
|
|
25
|
+
delegatorId: string;
|
|
26
|
+
subject: string;
|
|
27
|
+
registrationServiceProvider: string;
|
|
28
|
+
registrationRequester: string;
|
|
29
|
+
ontologySerial?: string | undefined;
|
|
30
|
+
instanceSerial?: string | undefined;
|
|
31
|
+
description?: Partial<AgentDescription> | undefined;
|
|
32
|
+
evidence?: JsonObject[] | undefined;
|
|
33
|
+
issueCredential?: boolean | undefined;
|
|
34
|
+
credentialAudience?: string[] | undefined;
|
|
35
|
+
credentialScope?: string[] | undefined;
|
|
36
|
+
}
|
|
37
|
+
export interface RegisterIdentityResult {
|
|
38
|
+
account: IdentityAccount;
|
|
39
|
+
issuedCredential?: IssuedCredential | undefined;
|
|
40
|
+
}
|
|
41
|
+
export interface IdentityAccountStore {
|
|
42
|
+
save(account: IdentityAccount): Promise<void>;
|
|
43
|
+
get(agentId: AgentIdentityCode): Promise<IdentityAccount | undefined>;
|
|
44
|
+
list(): Promise<IdentityAccount[]>;
|
|
45
|
+
}
|
|
46
|
+
export declare class InMemoryIdentityAccountStore implements IdentityAccountStore {
|
|
47
|
+
private accounts;
|
|
48
|
+
save(account: IdentityAccount): Promise<void>;
|
|
49
|
+
get(agentId: AgentIdentityCode): Promise<IdentityAccount | undefined>;
|
|
50
|
+
list(): Promise<IdentityAccount[]>;
|
|
51
|
+
}
|
|
52
|
+
export declare class IdentityRegistryRuntime {
|
|
53
|
+
private readonly store;
|
|
54
|
+
private readonly credentialIssuer?;
|
|
55
|
+
constructor(store?: IdentityAccountStore, credentialIssuer?: CredentialIssuer | undefined);
|
|
56
|
+
register(input: RegisterIdentityInput): Promise<RegisterIdentityResult>;
|
|
57
|
+
update(agentId: AgentIdentityCode, patch: Partial<Pick<IdentityAccount, "description" | "evidence">>): Promise<IdentityAccount>;
|
|
58
|
+
issueCredential(agentId: AgentIdentityCode, input: Omit<Parameters<CredentialIssuer["issueCredential"]>[0], "agentId">): Promise<IssuedCredential>;
|
|
59
|
+
lock(agentId: AgentIdentityCode, reason?: string): Promise<IdentityAccount>;
|
|
60
|
+
unlock(agentId: AgentIdentityCode, reason?: string): Promise<IdentityAccount>;
|
|
61
|
+
revoke(agentId: AgentIdentityCode, reason?: string): Promise<IdentityAccount>;
|
|
62
|
+
get(agentId: AgentIdentityCode): Promise<IdentityAccount | undefined>;
|
|
63
|
+
list(): Promise<IdentityAccount[]>;
|
|
64
|
+
private setStatus;
|
|
65
|
+
private applyCredentialStatus;
|
|
66
|
+
private requireAccount;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=identity-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-registry.d.ts","sourceRoot":"","sources":["../src/identity-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { formatIdentityCode } from "./identity-code.js";
|
|
3
|
+
export class InMemoryIdentityAccountStore {
|
|
4
|
+
accounts = new Map();
|
|
5
|
+
async save(account) {
|
|
6
|
+
this.accounts.set(account.id, account);
|
|
7
|
+
}
|
|
8
|
+
async get(agentId) {
|
|
9
|
+
return this.accounts.get(agentId);
|
|
10
|
+
}
|
|
11
|
+
async list() {
|
|
12
|
+
return [...this.accounts.values()];
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class IdentityRegistryRuntime {
|
|
16
|
+
store;
|
|
17
|
+
credentialIssuer;
|
|
18
|
+
constructor(store = new InMemoryIdentityAccountStore(), credentialIssuer) {
|
|
19
|
+
this.store = store;
|
|
20
|
+
this.credentialIssuer = credentialIssuer;
|
|
21
|
+
}
|
|
22
|
+
async register(input) {
|
|
23
|
+
const now = new Date().toISOString();
|
|
24
|
+
const agentId = formatIdentityCode({
|
|
25
|
+
registrationServiceProvider: input.registrationServiceProvider,
|
|
26
|
+
registrationRequester: input.registrationRequester,
|
|
27
|
+
ontologySerial: input.ontologySerial ?? randomNode(8),
|
|
28
|
+
instanceSerial: input.instanceSerial ?? "0"
|
|
29
|
+
});
|
|
30
|
+
const account = {
|
|
31
|
+
id: agentId,
|
|
32
|
+
delegatorId: input.delegatorId,
|
|
33
|
+
subject: input.subject,
|
|
34
|
+
description: input.description,
|
|
35
|
+
status: "active",
|
|
36
|
+
credentialIds: [],
|
|
37
|
+
evidence: input.evidence,
|
|
38
|
+
auditLog: [audit("registered", "identity-registry", "identity account registered")],
|
|
39
|
+
createdAt: now,
|
|
40
|
+
updatedAt: now
|
|
41
|
+
};
|
|
42
|
+
let issuedCredential;
|
|
43
|
+
if (input.issueCredential && this.credentialIssuer) {
|
|
44
|
+
issuedCredential = await this.credentialIssuer.issueCredential({
|
|
45
|
+
agentId,
|
|
46
|
+
subject: input.subject,
|
|
47
|
+
audience: input.credentialAudience,
|
|
48
|
+
scope: input.credentialScope,
|
|
49
|
+
metadata: { delegatorId: input.delegatorId }
|
|
50
|
+
});
|
|
51
|
+
account.credentialIds.push(issuedCredential.credential.credentialId);
|
|
52
|
+
account.auditLog?.push(audit("credential_issued", "identity-registry", "initial credential issued"));
|
|
53
|
+
}
|
|
54
|
+
await this.store.save(account);
|
|
55
|
+
return { account, issuedCredential };
|
|
56
|
+
}
|
|
57
|
+
async update(agentId, patch) {
|
|
58
|
+
const account = await this.requireAccount(agentId);
|
|
59
|
+
const updated = {
|
|
60
|
+
...account,
|
|
61
|
+
...patch,
|
|
62
|
+
auditLog: [...(account.auditLog ?? []), audit("updated", "identity-registry", "identity account updated")],
|
|
63
|
+
updatedAt: new Date().toISOString()
|
|
64
|
+
};
|
|
65
|
+
await this.store.save(updated);
|
|
66
|
+
return updated;
|
|
67
|
+
}
|
|
68
|
+
async issueCredential(agentId, input) {
|
|
69
|
+
if (!this.credentialIssuer) {
|
|
70
|
+
throw new Error("No credential issuer configured");
|
|
71
|
+
}
|
|
72
|
+
const account = await this.requireAccount(agentId);
|
|
73
|
+
if (account.status !== "active") {
|
|
74
|
+
throw new Error(`Cannot issue credential for ${account.status} identity account`);
|
|
75
|
+
}
|
|
76
|
+
const issued = await this.credentialIssuer.issueCredential({ ...input, agentId });
|
|
77
|
+
const updated = {
|
|
78
|
+
...account,
|
|
79
|
+
credentialIds: [...account.credentialIds, issued.credential.credentialId],
|
|
80
|
+
auditLog: [...(account.auditLog ?? []), audit("credential_issued", "identity-registry", "credential issued")],
|
|
81
|
+
updatedAt: new Date().toISOString()
|
|
82
|
+
};
|
|
83
|
+
await this.store.save(updated);
|
|
84
|
+
return issued;
|
|
85
|
+
}
|
|
86
|
+
async lock(agentId, reason) {
|
|
87
|
+
const account = await this.setStatus(agentId, "locked", reason);
|
|
88
|
+
await this.applyCredentialStatus(account, "lock", reason);
|
|
89
|
+
return account;
|
|
90
|
+
}
|
|
91
|
+
async unlock(agentId, reason) {
|
|
92
|
+
const account = await this.setStatus(agentId, "active", reason);
|
|
93
|
+
await this.applyCredentialStatus(account, "unlock", reason);
|
|
94
|
+
return account;
|
|
95
|
+
}
|
|
96
|
+
async revoke(agentId, reason) {
|
|
97
|
+
const account = await this.setStatus(agentId, "revoked", reason);
|
|
98
|
+
await this.applyCredentialStatus(account, "revoke", reason);
|
|
99
|
+
return account;
|
|
100
|
+
}
|
|
101
|
+
async get(agentId) {
|
|
102
|
+
return this.store.get(agentId);
|
|
103
|
+
}
|
|
104
|
+
async list() {
|
|
105
|
+
return this.store.list();
|
|
106
|
+
}
|
|
107
|
+
async setStatus(agentId, status, reason) {
|
|
108
|
+
const account = await this.requireAccount(agentId);
|
|
109
|
+
const eventType = status === "active" ? "unlocked" : status;
|
|
110
|
+
const updated = {
|
|
111
|
+
...account,
|
|
112
|
+
status,
|
|
113
|
+
auditLog: [...(account.auditLog ?? []), audit(eventType, "identity-registry", reason)],
|
|
114
|
+
updatedAt: new Date().toISOString()
|
|
115
|
+
};
|
|
116
|
+
await this.store.save(updated);
|
|
117
|
+
return updated;
|
|
118
|
+
}
|
|
119
|
+
async applyCredentialStatus(account, action, reason) {
|
|
120
|
+
if (!this.credentialIssuer) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
for (const credentialId of account.credentialIds) {
|
|
124
|
+
if (action === "lock") {
|
|
125
|
+
await this.credentialIssuer.lockCredential(credentialId, reason);
|
|
126
|
+
}
|
|
127
|
+
else if (action === "unlock") {
|
|
128
|
+
await this.credentialIssuer.unlockCredential(credentialId, reason);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
await this.credentialIssuer.revokeCredential(credentialId, reason);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async requireAccount(agentId) {
|
|
136
|
+
const account = await this.store.get(agentId);
|
|
137
|
+
if (!account) {
|
|
138
|
+
throw new Error(`Identity account not found: ${agentId}`);
|
|
139
|
+
}
|
|
140
|
+
return account;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function audit(type, actor, reason) {
|
|
144
|
+
return {
|
|
145
|
+
eventId: randomUUID(),
|
|
146
|
+
type,
|
|
147
|
+
actor,
|
|
148
|
+
reason,
|
|
149
|
+
createdAt: new Date().toISOString()
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
function randomNode(length) {
|
|
153
|
+
return randomUUID().replaceAll("-", "").slice(0, length).toUpperCase();
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=identity-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity-registry.js","sourceRoot":"","sources":["../src/identity-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAqDxD,MAAM,OAAO,4BAA4B;IAC/B,QAAQ,GAAG,IAAI,GAAG,EAAsC,CAAC;IAEjE,KAAK,CAAC,IAAI,CAAC,OAAwB;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAA0B;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;CACF;AAED,MAAM,OAAO,uBAAuB;IAEf;IACA;IAFnB,YACmB,QAA8B,IAAI,4BAA4B,EAAE,EAChE,gBAAmC;QADnC,UAAK,GAAL,KAAK,CAA2D;QAChE,qBAAgB,GAAhB,gBAAgB,CAAmB;IACnD,CAAC;IAEJ,KAAK,CAAC,QAAQ,CAAC,KAA4B;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC;YACjC,2BAA2B,EAAE,KAAK,CAAC,2BAA2B;YAC9D,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,UAAU,CAAC,CAAC,CAAC;YACrD,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,GAAG;SAC5C,CAAC,CAAC;QACH,MAAM,OAAO,GAAoB;YAC/B,EAAE,EAAE,OAAO;YACX,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,EAAE;YACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,6BAA6B,CAAC,CAAC;YACnF,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,IAAI,gBAA8C,CAAC;QACnD,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACnD,gBAAgB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;gBAC7D,OAAO;gBACP,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,KAAK,CAAC,kBAAkB;gBAClC,KAAK,EAAE,KAAK,CAAC,eAAe;gBAC5B,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE;aAC7C,CAAC,CAAC;YACH,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACrE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,2BAA2B,CAAC,CAAC,CAAC;QACvG,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA0B,EAAE,KAAiE;QACxG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,OAAO,GAAoB;YAC/B,GAAG,OAAO;YACV,GAAG,KAAK;YACR,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,mBAAmB,EAAE,0BAA0B,CAAC,CAAC;YAC1G,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAA0B,EAAE,KAA0E;QAC1H,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,MAAM,OAAO,GAAoB;YAC/B,GAAG,OAAO;YACV,aAAa,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;YACzE,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;YAC7G,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAA0B,EAAE,MAAe;QACpD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA0B,EAAE,MAAe;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAA0B,EAAE,MAAe;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAA0B;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,OAA0B,EAAE,MAA6B,EAAE,MAAe;QAChG,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,MAAM,OAAO,GAAoB;YAC/B,GAAG,OAAO;YACV,MAAM;YACN,QAAQ,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;YACtF,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,OAAwB,EAAE,MAAoC,EAAE,MAAe;QACjH,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,KAAK,MAAM,YAAY,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACjD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACnE,CAAC;iBAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAA0B;QACrD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,SAAS,KAAK,CAAC,IAAgC,EAAE,KAAc,EAAE,MAAe;IAC9E,OAAO;QACL,OAAO,EAAE,UAAU,EAAE;QACrB,IAAI;QACJ,KAAK;QACL,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;AACzE,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./agent-maintenance.js";
|
|
2
|
+
export * from "./authorization.js";
|
|
3
|
+
export * from "./client.js";
|
|
4
|
+
export * from "./conformance.js";
|
|
5
|
+
export * from "./credentials.js";
|
|
6
|
+
export * from "./description-registry.js";
|
|
7
|
+
export * from "./discovery.js";
|
|
8
|
+
export * from "./factory.js";
|
|
9
|
+
export * from "./functional-architecture.js";
|
|
10
|
+
export * from "./identity-code.js";
|
|
11
|
+
export * from "./identity-registry.js";
|
|
12
|
+
export * from "./interaction.js";
|
|
13
|
+
export * from "./message-distribution.js";
|
|
14
|
+
export * from "./tool-access.js";
|
|
15
|
+
export * from "./tools.js";
|
|
16
|
+
export * from "./transport.js";
|
|
17
|
+
export * from "./types.js";
|
|
18
|
+
export * from "./validation.js";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export * from "./agent-maintenance.js";
|
|
2
|
+
export * from "./authorization.js";
|
|
3
|
+
export * from "./client.js";
|
|
4
|
+
export * from "./conformance.js";
|
|
5
|
+
export * from "./credentials.js";
|
|
6
|
+
export * from "./description-registry.js";
|
|
7
|
+
export * from "./discovery.js";
|
|
8
|
+
export * from "./factory.js";
|
|
9
|
+
export * from "./functional-architecture.js";
|
|
10
|
+
export * from "./identity-code.js";
|
|
11
|
+
export * from "./identity-registry.js";
|
|
12
|
+
export * from "./interaction.js";
|
|
13
|
+
export * from "./message-distribution.js";
|
|
14
|
+
export * from "./tool-access.js";
|
|
15
|
+
export * from "./tools.js";
|
|
16
|
+
export * from "./transport.js";
|
|
17
|
+
export * from "./types.js";
|
|
18
|
+
export * from "./validation.js";
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { AgentIdentityCode, AgentInteractionMode, DataItem, Message, Session, SessionReceiver, Task, TaskState } from "./types.js";
|
|
2
|
+
export interface CreateSessionInput {
|
|
3
|
+
mode: AgentInteractionMode;
|
|
4
|
+
sender: {
|
|
5
|
+
agentId: AgentIdentityCode;
|
|
6
|
+
accessAddress?: string | undefined;
|
|
7
|
+
};
|
|
8
|
+
receivers: SessionReceiver[];
|
|
9
|
+
context?: Array<Message | Task> | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface SubmitTaskInput {
|
|
12
|
+
sessionId: string;
|
|
13
|
+
initialMessages?: Message[] | undefined;
|
|
14
|
+
artifacts?: Array<Message | Task> | undefined;
|
|
15
|
+
}
|
|
16
|
+
export interface SendMessageInput {
|
|
17
|
+
senderRole: Message["senderRole"];
|
|
18
|
+
senderId: AgentIdentityCode;
|
|
19
|
+
sessionId: string;
|
|
20
|
+
taskId?: string | undefined;
|
|
21
|
+
artifact?: Message["artifact"] | undefined;
|
|
22
|
+
final?: boolean | undefined;
|
|
23
|
+
chunkIndex?: number | undefined;
|
|
24
|
+
lastChunk?: boolean | undefined;
|
|
25
|
+
dataItems: DataItem[];
|
|
26
|
+
}
|
|
27
|
+
export declare class InteractionRuntime {
|
|
28
|
+
private sessions;
|
|
29
|
+
private tasks;
|
|
30
|
+
private messages;
|
|
31
|
+
createSession(input: CreateSessionInput): Promise<Session>;
|
|
32
|
+
submitTask(input: SubmitTaskInput): Promise<Task>;
|
|
33
|
+
updateTaskState(taskId: string, state: TaskState): Promise<Task>;
|
|
34
|
+
sendMessage(input: SendMessageInput): Promise<Message>;
|
|
35
|
+
listMessages(sessionId: string): Promise<Message[]>;
|
|
36
|
+
getSession(sessionId: string): Promise<Session | undefined>;
|
|
37
|
+
getTask(taskId: string): Promise<Task | undefined>;
|
|
38
|
+
private requireSession;
|
|
39
|
+
private requireTask;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=interaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../src/interaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExI,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE;QACN,OAAO,EAAE,iBAAiB,CAAC;QAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KACpC,CAAC;IACF,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;IACxC,SAAS,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IAC3C,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAAgC;IAE1C,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB1D,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAOhE,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2BtD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAKnD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAI3D,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAIxD,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
export class InteractionRuntime {
|
|
3
|
+
sessions = new Map();
|
|
4
|
+
tasks = new Map();
|
|
5
|
+
messages = new Map();
|
|
6
|
+
async createSession(input) {
|
|
7
|
+
if (input.receivers.length === 0) {
|
|
8
|
+
throw new Error("A session must contain at least one service agent receiver");
|
|
9
|
+
}
|
|
10
|
+
const session = {
|
|
11
|
+
id: randomUUID(),
|
|
12
|
+
mode: input.mode,
|
|
13
|
+
sender: input.sender,
|
|
14
|
+
receivers: input.receivers,
|
|
15
|
+
context: input.context,
|
|
16
|
+
createdAt: new Date().toISOString()
|
|
17
|
+
};
|
|
18
|
+
this.sessions.set(session.id, session);
|
|
19
|
+
this.messages.set(session.id, []);
|
|
20
|
+
return session;
|
|
21
|
+
}
|
|
22
|
+
async submitTask(input) {
|
|
23
|
+
this.requireSession(input.sessionId);
|
|
24
|
+
const task = {
|
|
25
|
+
id: randomUUID(),
|
|
26
|
+
sessionId: input.sessionId,
|
|
27
|
+
state: "accepted",
|
|
28
|
+
stateChangedAt: new Date().toISOString(),
|
|
29
|
+
messages: input.initialMessages ?? [],
|
|
30
|
+
artifacts: input.artifacts
|
|
31
|
+
};
|
|
32
|
+
this.tasks.set(task.id, task);
|
|
33
|
+
if (input.initialMessages?.length) {
|
|
34
|
+
this.messages.set(input.sessionId, [...(this.messages.get(input.sessionId) ?? []), ...input.initialMessages]);
|
|
35
|
+
}
|
|
36
|
+
return task;
|
|
37
|
+
}
|
|
38
|
+
async updateTaskState(taskId, state) {
|
|
39
|
+
const task = this.requireTask(taskId);
|
|
40
|
+
const updated = { ...task, state, stateChangedAt: new Date().toISOString() };
|
|
41
|
+
this.tasks.set(taskId, updated);
|
|
42
|
+
return updated;
|
|
43
|
+
}
|
|
44
|
+
async sendMessage(input) {
|
|
45
|
+
this.requireSession(input.sessionId);
|
|
46
|
+
if (input.taskId) {
|
|
47
|
+
this.requireTask(input.taskId);
|
|
48
|
+
}
|
|
49
|
+
const message = {
|
|
50
|
+
senderRole: input.senderRole,
|
|
51
|
+
senderId: input.senderId,
|
|
52
|
+
sessionId: input.sessionId,
|
|
53
|
+
...(input.taskId ? { taskId: input.taskId } : {}),
|
|
54
|
+
id: randomUUID(),
|
|
55
|
+
...(input.artifact ? { artifact: input.artifact } : {}),
|
|
56
|
+
...(input.final !== undefined ? { final: input.final } : {}),
|
|
57
|
+
...(input.chunkIndex !== undefined ? { chunkIndex: input.chunkIndex } : {}),
|
|
58
|
+
...(input.lastChunk !== undefined ? { lastChunk: input.lastChunk } : {}),
|
|
59
|
+
dataItems: input.dataItems,
|
|
60
|
+
createdAt: new Date().toISOString()
|
|
61
|
+
};
|
|
62
|
+
this.messages.set(input.sessionId, [...(this.messages.get(input.sessionId) ?? []), message]);
|
|
63
|
+
if (input.taskId) {
|
|
64
|
+
const task = this.requireTask(input.taskId);
|
|
65
|
+
const updated = { ...task, messages: [...(task.messages ?? []), message] };
|
|
66
|
+
this.tasks.set(task.id, updated);
|
|
67
|
+
}
|
|
68
|
+
return message;
|
|
69
|
+
}
|
|
70
|
+
async listMessages(sessionId) {
|
|
71
|
+
this.requireSession(sessionId);
|
|
72
|
+
return this.messages.get(sessionId) ?? [];
|
|
73
|
+
}
|
|
74
|
+
async getSession(sessionId) {
|
|
75
|
+
return this.sessions.get(sessionId);
|
|
76
|
+
}
|
|
77
|
+
async getTask(taskId) {
|
|
78
|
+
return this.tasks.get(taskId);
|
|
79
|
+
}
|
|
80
|
+
requireSession(sessionId) {
|
|
81
|
+
const session = this.sessions.get(sessionId);
|
|
82
|
+
if (!session) {
|
|
83
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
84
|
+
}
|
|
85
|
+
return session;
|
|
86
|
+
}
|
|
87
|
+
requireTask(taskId) {
|
|
88
|
+
const task = this.tasks.get(taskId);
|
|
89
|
+
if (!task) {
|
|
90
|
+
throw new Error(`Task not found: ${taskId}`);
|
|
91
|
+
}
|
|
92
|
+
return task;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=interaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../src/interaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { InteractionRuntime, SendMessageInput } from "./interaction.js";
|
|
2
|
+
import type { AgentIdentityCode, Message } from "./types.js";
|
|
3
|
+
export interface DistributionReceipt {
|
|
4
|
+
recipientId: AgentIdentityCode;
|
|
5
|
+
sessionId: string;
|
|
6
|
+
messageId: string;
|
|
7
|
+
deliveredAt: string;
|
|
8
|
+
message: Message;
|
|
9
|
+
}
|
|
10
|
+
export declare class MessageDistributionRuntime {
|
|
11
|
+
private readonly interactionRuntime;
|
|
12
|
+
private inboxes;
|
|
13
|
+
constructor(interactionRuntime: InteractionRuntime);
|
|
14
|
+
distribute(input: SendMessageInput, recipients?: AgentIdentityCode[]): Promise<DistributionReceipt[]>;
|
|
15
|
+
listInbox(agentId: AgentIdentityCode): Promise<DistributionReceipt[]>;
|
|
16
|
+
private inferRecipients;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=message-distribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-distribution.d.ts","sourceRoot":"","sources":["../src/message-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,0BAA0B;IAGzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAF/C,OAAO,CAAC,OAAO,CAAuD;gBAEzC,kBAAkB,EAAE,kBAAkB;IAE7D,UAAU,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAmBrG,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAI7D,eAAe;CAO9B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export class MessageDistributionRuntime {
|
|
2
|
+
interactionRuntime;
|
|
3
|
+
inboxes = new Map();
|
|
4
|
+
constructor(interactionRuntime) {
|
|
5
|
+
this.interactionRuntime = interactionRuntime;
|
|
6
|
+
}
|
|
7
|
+
async distribute(input, recipients) {
|
|
8
|
+
const message = await this.interactionRuntime.sendMessage(input);
|
|
9
|
+
const targetRecipients = recipients ?? (await this.inferRecipients(input.sessionId, input.senderId));
|
|
10
|
+
const receipts = targetRecipients
|
|
11
|
+
.filter((recipientId) => recipientId !== input.senderId)
|
|
12
|
+
.map((recipientId) => ({
|
|
13
|
+
recipientId,
|
|
14
|
+
sessionId: input.sessionId,
|
|
15
|
+
messageId: message.id,
|
|
16
|
+
deliveredAt: new Date().toISOString(),
|
|
17
|
+
message
|
|
18
|
+
}));
|
|
19
|
+
for (const receipt of receipts) {
|
|
20
|
+
this.inboxes.set(receipt.recipientId, [...(this.inboxes.get(receipt.recipientId) ?? []), receipt]);
|
|
21
|
+
}
|
|
22
|
+
return receipts;
|
|
23
|
+
}
|
|
24
|
+
async listInbox(agentId) {
|
|
25
|
+
return this.inboxes.get(agentId) ?? [];
|
|
26
|
+
}
|
|
27
|
+
async inferRecipients(sessionId, senderId) {
|
|
28
|
+
const session = await this.interactionRuntime.getSession(sessionId);
|
|
29
|
+
if (!session) {
|
|
30
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
31
|
+
}
|
|
32
|
+
return [session.sender.agentId, ...session.receivers.map((receiver) => receiver.agentId)].filter((agentId) => agentId !== senderId);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=message-distribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-distribution.js","sourceRoot":"","sources":["../src/message-distribution.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,0BAA0B;IAGR;IAFrB,OAAO,GAAG,IAAI,GAAG,EAA4C,CAAC;IAEtE,YAA6B,kBAAsC;QAAtC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAAG,CAAC;IAEvE,KAAK,CAAC,UAAU,CAAC,KAAuB,EAAE,UAAgC;QACxE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAG,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrG,MAAM,QAAQ,GAAG,gBAAgB;aAC9B,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,KAAK,KAAK,CAAC,QAAQ,CAAC;aACvD,GAAG,CAAC,CAAC,WAAW,EAAuB,EAAE,CAAC,CAAC;YAC1C,WAAW;YACX,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,OAAO;SACR,CAAC,CAAC,CAAC;QAEN,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QACrG,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAA0B;QACxC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,QAA2B;QAC1E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;IACtI,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ToolRuntime } from "./tools.js";
|
|
2
|
+
import type { ToolInvokeRequest, ToolInvokeResult, ToolSyncData, ToolUpdateData } from "./types.js";
|
|
3
|
+
export declare class ToolAccessRuntime {
|
|
4
|
+
private readonly toolService;
|
|
5
|
+
constructor(toolService: ToolRuntime);
|
|
6
|
+
getToolList(toolRequestList?: string[]): Promise<ToolSyncData>;
|
|
7
|
+
syncToolUpdates(): Promise<ToolUpdateData>;
|
|
8
|
+
invokeTools(request: ToolInvokeRequest): Promise<ToolInvokeResult>;
|
|
9
|
+
invokeUntilComplete(input: {
|
|
10
|
+
initialRequest: ToolInvokeRequest;
|
|
11
|
+
isComplete: (result: ToolInvokeResult, round: number) => boolean;
|
|
12
|
+
nextRequest: (result: ToolInvokeResult, round: number) => ToolInvokeRequest;
|
|
13
|
+
maxRounds?: number | undefined;
|
|
14
|
+
}): Promise<ToolInvokeResult[]>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=tool-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-access.d.ts","sourceRoot":"","sources":["../src/tool-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpG,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAE/C,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAI9D,eAAe,IAAI,OAAO,CAAC,cAAc,CAAC;IAI1C,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIlE,mBAAmB,CAAC,KAAK,EAAE;QAC/B,cAAc,EAAE,iBAAiB,CAAC;QAClC,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;QACjE,WAAW,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,KAAK,iBAAiB,CAAC;QAC5E,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAChC,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAchC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class ToolAccessRuntime {
|
|
2
|
+
toolService;
|
|
3
|
+
constructor(toolService) {
|
|
4
|
+
this.toolService = toolService;
|
|
5
|
+
}
|
|
6
|
+
async getToolList(toolRequestList) {
|
|
7
|
+
return this.toolService.listTools(toolRequestList);
|
|
8
|
+
}
|
|
9
|
+
async syncToolUpdates() {
|
|
10
|
+
return this.toolService.getUpdates();
|
|
11
|
+
}
|
|
12
|
+
async invokeTools(request) {
|
|
13
|
+
return this.toolService.invoke(request);
|
|
14
|
+
}
|
|
15
|
+
async invokeUntilComplete(input) {
|
|
16
|
+
const maxRounds = input.maxRounds ?? 8;
|
|
17
|
+
const results = [];
|
|
18
|
+
let request = input.initialRequest;
|
|
19
|
+
for (let round = 0; round < maxRounds; round += 1) {
|
|
20
|
+
const result = await this.invokeTools(request);
|
|
21
|
+
results.push(result);
|
|
22
|
+
if (input.isComplete(result, round)) {
|
|
23
|
+
return results;
|
|
24
|
+
}
|
|
25
|
+
request = input.nextRequest(result, round);
|
|
26
|
+
}
|
|
27
|
+
return results;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=tool-access.js.map
|