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.
Files changed (86) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/README.md +192 -0
  4. package/dist/agent-maintenance.d.ts +35 -0
  5. package/dist/agent-maintenance.d.ts.map +1 -0
  6. package/dist/agent-maintenance.js +107 -0
  7. package/dist/agent-maintenance.js.map +1 -0
  8. package/dist/authorization.d.ts +32 -0
  9. package/dist/authorization.d.ts.map +1 -0
  10. package/dist/authorization.js +37 -0
  11. package/dist/authorization.js.map +1 -0
  12. package/dist/client.d.ts +39 -0
  13. package/dist/client.d.ts.map +1 -0
  14. package/dist/client.js +70 -0
  15. package/dist/client.js.map +1 -0
  16. package/dist/conformance.d.ts +11 -0
  17. package/dist/conformance.d.ts.map +1 -0
  18. package/dist/conformance.js +195 -0
  19. package/dist/conformance.js.map +1 -0
  20. package/dist/credentials.d.ts +124 -0
  21. package/dist/credentials.d.ts.map +1 -0
  22. package/dist/credentials.js +209 -0
  23. package/dist/credentials.js.map +1 -0
  24. package/dist/description-registry.d.ts +66 -0
  25. package/dist/description-registry.d.ts.map +1 -0
  26. package/dist/description-registry.js +137 -0
  27. package/dist/description-registry.js.map +1 -0
  28. package/dist/discovery.d.ts +14 -0
  29. package/dist/discovery.d.ts.map +1 -0
  30. package/dist/discovery.js +105 -0
  31. package/dist/discovery.js.map +1 -0
  32. package/dist/factory.d.ts +34 -0
  33. package/dist/factory.d.ts.map +1 -0
  34. package/dist/factory.js +98 -0
  35. package/dist/factory.js.map +1 -0
  36. package/dist/functional-architecture.d.ts +18 -0
  37. package/dist/functional-architecture.d.ts.map +1 -0
  38. package/dist/functional-architecture.js +159 -0
  39. package/dist/functional-architecture.js.map +1 -0
  40. package/dist/identity-code.d.ts +8 -0
  41. package/dist/identity-code.d.ts.map +1 -0
  42. package/dist/identity-code.js +76 -0
  43. package/dist/identity-code.js.map +1 -0
  44. package/dist/identity-registry.d.ts +68 -0
  45. package/dist/identity-registry.d.ts.map +1 -0
  46. package/dist/identity-registry.js +155 -0
  47. package/dist/identity-registry.js.map +1 -0
  48. package/dist/index.d.ts +19 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +19 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/interaction.d.ts +41 -0
  53. package/dist/interaction.d.ts.map +1 -0
  54. package/dist/interaction.js +95 -0
  55. package/dist/interaction.js.map +1 -0
  56. package/dist/message-distribution.d.ts +18 -0
  57. package/dist/message-distribution.d.ts.map +1 -0
  58. package/dist/message-distribution.js +35 -0
  59. package/dist/message-distribution.js.map +1 -0
  60. package/dist/tool-access.d.ts +16 -0
  61. package/dist/tool-access.d.ts.map +1 -0
  62. package/dist/tool-access.js +30 -0
  63. package/dist/tool-access.js.map +1 -0
  64. package/dist/tools.d.ts +18 -0
  65. package/dist/tools.d.ts.map +1 -0
  66. package/dist/tools.js +77 -0
  67. package/dist/tools.js.map +1 -0
  68. package/dist/transport.d.ts +21 -0
  69. package/dist/transport.d.ts.map +1 -0
  70. package/dist/transport.js +36 -0
  71. package/dist/transport.js.map +1 -0
  72. package/dist/types.d.ts +165 -0
  73. package/dist/types.d.ts.map +1 -0
  74. package/dist/types.js +2 -0
  75. package/dist/types.js.map +1 -0
  76. package/dist/validation.d.ts +12 -0
  77. package/dist/validation.d.ts.map +1 -0
  78. package/dist/validation.js +94 -0
  79. package/dist/validation.js.map +1 -0
  80. package/docs/API_REFERENCE.md +116 -0
  81. package/docs/CONFORMANCE.md +96 -0
  82. package/docs/GITHUB_PAGES.md +54 -0
  83. package/docs/NPM_RELEASE.md +107 -0
  84. package/docs/SDK_GUIDE.md +439 -0
  85. package/examples/calendar.ts +105 -0
  86. 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":"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"}
@@ -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":"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"}
@@ -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