@drakon-systems/ekho-sdk 0.2.1 → 0.3.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/dist/client.d.ts CHANGED
@@ -1,4 +1,10 @@
1
- import type { AgentCredentials, ActionDecision, SendMessagePayload, HeartbeatPayload, ProposeActionPayload, ActionResultPayload } from "./types";
1
+ import type { AgentCredentials, ActionDecision, AttachmentUploadInput, InboxResponse, MessageSnapshot, SendMessagePayload, HeartbeatPayload, ProposeActionPayload, ActionResultPayload } from "./types";
2
+ export type FloorResult = {
3
+ granted: boolean;
4
+ holder_agent_id: string;
5
+ expires_at: string;
6
+ conversation_tail: MessageSnapshot[];
7
+ };
2
8
  export declare class EkhoAgentClient {
3
9
  private readonly credentials;
4
10
  constructor(credentials: AgentCredentials);
@@ -12,9 +18,28 @@ export declare class EkhoAgentClient {
12
18
  status: string;
13
19
  queued_at: string;
14
20
  }>;
15
- getInbox(limit?: number): Promise<{
16
- messages: Array<Record<string, unknown>>;
17
- controls: Array<Record<string, unknown>>;
21
+ /**
22
+ * Open a named topic room scoped to a set of fleet agents. Use this when a
23
+ * collaboration has become a real topic worth its own discoverable, scoped
24
+ * thread (instead of repeated 1:1 direct messages). This agent becomes the
25
+ * creator and is auto-added as a member; `memberAgentIds` names the OTHER
26
+ * agents to include (real, non-revoked agents in the same fleet). To post into
27
+ * the room afterward, send with `recipient: { kind: "group", id: <room.id> }`.
28
+ */
29
+ createRoom(payload: {
30
+ name: string;
31
+ member_agent_ids?: string[];
32
+ }): Promise<{
33
+ id: string;
34
+ name: string;
35
+ created_at: string;
36
+ members: string[];
37
+ }>;
38
+ getInbox(limit?: number): Promise<InboxResponse>;
39
+ /** Register (or rotate) this agent's Ed25519 identity public key for
40
+ * agent-to-agent trust. Idempotent on the relay side. */
41
+ registerIdentityKey(publicKey: string): Promise<{
42
+ key_id: string;
18
43
  }>;
19
44
  ackMessages(acks: Array<{
20
45
  message_id: string;
@@ -23,6 +48,26 @@ export declare class EkhoAgentClient {
23
48
  }>): Promise<{
24
49
  updated: number;
25
50
  }>;
51
+ /** Acquire a conversation's floor so this agent — and not its peers — takes the
52
+ * next turn. Returns granted + the current holder + a fresh catch-up tail. */
53
+ acquireFloor(conversationId: string, ttlSeconds?: number): Promise<FloorResult>;
54
+ /** Release a conversation's floor once this agent's turn is done. */
55
+ releaseFloor(conversationId: string): Promise<{
56
+ released: boolean;
57
+ }>;
58
+ /** Raise an operator-visible notice that a conversation has stalled (e.g. the
59
+ * peer-turn budget is exhausted with real work withheld). Recorded as a
60
+ * `conversation.stalled` event; idempotent per (fleet, agent, conversation)
61
+ * until the next operator engagement, so it's safe to call best-effort. */
62
+ raiseNotice(payload: {
63
+ conversation_id: string;
64
+ reason?: string;
65
+ pending_count?: number;
66
+ budget?: number;
67
+ }): Promise<{
68
+ ok: boolean;
69
+ recorded: boolean;
70
+ }>;
26
71
  heartbeat(payload: HeartbeatPayload): Promise<{
27
72
  ok: boolean;
28
73
  next_heartbeat_due_seconds: number;
@@ -40,5 +85,17 @@ export declare class EkhoAgentClient {
40
85
  actionResult(payload: ActionResultPayload): Promise<{
41
86
  ok: boolean;
42
87
  }>;
88
+ uploadAttachment(input: AttachmentUploadInput): Promise<{
89
+ id: string;
90
+ filename: string;
91
+ mime: string;
92
+ size_bytes: number;
93
+ created_at: string;
94
+ }>;
95
+ downloadAttachment(id: string): Promise<{
96
+ bytes: Buffer;
97
+ filename: string;
98
+ mime: string;
99
+ }>;
43
100
  }
44
101
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AASjB,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,gBAAgB;IAE1D,OAAO,CAAC,aAAa;YAeP,OAAO;IAiBrB,IAAI,OAAO,WAAuC;IAClD,IAAI,mBAAmB,WAA4E;IACnG,IAAI,wBAAwB,WAAsF;IAElH,WAAW,CAAC,OAAO,EAAE,kBAAkB;oBACH,MAAM;gBAAU,MAAM;mBAAa,MAAM;;IAG7E,QAAQ,CAAC,KAAK,SAAK;kBACe,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;kBAAY,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;IAG1G,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;iBACvD,MAAM;;IAGvC,SAAS,CAAC,OAAO,EAAE,gBAAgB;YACP,OAAO;oCAA8B,MAAM;;IAGvE,aAAa,CAAC,OAAO,EAAE,oBAAoB;IAI3C,WAAW,CAAC,UAAU,EAAE,MAAM;YAEtB,MAAM;gBAAU,MAAM;qBAAe,MAAM;oBAAc,MAAM;iBAC1D,MAAM;sBAAgB,MAAM;qBAAe,MAAM,GAAG,IAAI;;IAIrE,YAAY,CAAC,OAAO,EAAE,mBAAmB;YACb,OAAO;;CAEpC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,eAAe,EAAE,CAAC;CACtC,CAAC;AASF,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,gBAAgB;IAE1D,OAAO,CAAC,aAAa;YAeP,OAAO;IAiBrB,IAAI,OAAO,WAAuC;IAClD,IAAI,mBAAmB,WAA4E;IACnG,IAAI,wBAAwB,WAAsF;IAElH,WAAW,CAAC,OAAO,EAAE,kBAAkB;oBACH,MAAM;gBAAU,MAAM;mBAAa,MAAM;;IAG7E;;;;;;;OAOG;IACH,UAAU,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;YACrC,MAAM;cAAQ,MAAM;oBAAc,MAAM;iBAAW,MAAM,EAAE;;IAKvF,QAAQ,CAAC,KAAK,SAAK;IAInB;8DAC0D;IAC1D,mBAAmB,CAAC,SAAS,EAAE,MAAM;gBACL,MAAM;;IAGtC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;iBACvD,MAAM;;IAGvC;mFAC+E;IAC/E,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAOxD,qEAAqE;IACrE,YAAY,CAAC,cAAc,EAAE,MAAM;kBACD,OAAO;;IAKzC;;;gFAG4E;IAC5E,WAAW,CAAC,OAAO,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;YAC9E,OAAO;kBAAY,OAAO;;IAGtD,SAAS,CAAC,OAAO,EAAE,gBAAgB;YACP,OAAO;oCAA8B,MAAM;;IAGvE,aAAa,CAAC,OAAO,EAAE,oBAAoB;IAI3C,WAAW,CAAC,UAAU,EAAE,MAAM;YAEtB,MAAM;gBAAU,MAAM;qBAAe,MAAM;oBAAc,MAAM;iBAC1D,MAAM;sBAAgB,MAAM;qBAAe,MAAM,GAAG,IAAI;;IAIrE,YAAY,CAAC,OAAO,EAAE,mBAAmB;YACb,OAAO;;IAGnC,gBAAgB,CAAC,KAAK,EAAE,qBAAqB;YAGjB,MAAM;kBAAY,MAAM;cAAQ,MAAM;oBAAc,MAAM;oBAAc,MAAM;;IAMpG,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAajG"}
package/dist/client.js CHANGED
@@ -49,12 +49,44 @@ class EkhoAgentClient {
49
49
  sendMessage(payload) {
50
50
  return this.request("POST", "/v1/messages", payload);
51
51
  }
52
+ /**
53
+ * Open a named topic room scoped to a set of fleet agents. Use this when a
54
+ * collaboration has become a real topic worth its own discoverable, scoped
55
+ * thread (instead of repeated 1:1 direct messages). This agent becomes the
56
+ * creator and is auto-added as a member; `memberAgentIds` names the OTHER
57
+ * agents to include (real, non-revoked agents in the same fleet). To post into
58
+ * the room afterward, send with `recipient: { kind: "group", id: <room.id> }`.
59
+ */
60
+ createRoom(payload) {
61
+ return this.request("POST", "/v1/rooms", { name: payload.name, member_agent_ids: payload.member_agent_ids ?? [] });
62
+ }
52
63
  getInbox(limit = 25) {
53
64
  return this.request("GET", `/v1/inbox?limit=${limit}`);
54
65
  }
66
+ /** Register (or rotate) this agent's Ed25519 identity public key for
67
+ * agent-to-agent trust. Idempotent on the relay side. */
68
+ registerIdentityKey(publicKey) {
69
+ return this.request("POST", "/v1/identity-key", { public_key: publicKey });
70
+ }
55
71
  ackMessages(acks) {
56
72
  return this.request("POST", "/v1/acks", { acks });
57
73
  }
74
+ /** Acquire a conversation's floor so this agent — and not its peers — takes the
75
+ * next turn. Returns granted + the current holder + a fresh catch-up tail. */
76
+ acquireFloor(conversationId, ttlSeconds) {
77
+ return this.request("POST", `/v1/conversations/${encodeURIComponent(conversationId)}/floor`, ttlSeconds === undefined ? {} : { ttl_seconds: ttlSeconds });
78
+ }
79
+ /** Release a conversation's floor once this agent's turn is done. */
80
+ releaseFloor(conversationId) {
81
+ return this.request("DELETE", `/v1/conversations/${encodeURIComponent(conversationId)}/floor`);
82
+ }
83
+ /** Raise an operator-visible notice that a conversation has stalled (e.g. the
84
+ * peer-turn budget is exhausted with real work withheld). Recorded as a
85
+ * `conversation.stalled` event; idempotent per (fleet, agent, conversation)
86
+ * until the next operator engagement, so it's safe to call best-effort. */
87
+ raiseNotice(payload) {
88
+ return this.request("POST", "/v1/notices", payload);
89
+ }
58
90
  heartbeat(payload) {
59
91
  return this.request("POST", "/v1/heartbeats", payload);
60
92
  }
@@ -67,6 +99,25 @@ class EkhoAgentClient {
67
99
  actionResult(payload) {
68
100
  return this.request("POST", "/v1/actions/result", payload);
69
101
  }
102
+ uploadAttachment(input) {
103
+ // size_bytes derived from the decoded byte length so the server cross-check passes.
104
+ const size_bytes = Buffer.from(input.dataBase64, "base64").length;
105
+ return this.request("POST", "/v1/attachments", { filename: input.filename, mime: input.mime, size_bytes, data_base64: input.dataBase64 });
106
+ }
107
+ async downloadAttachment(id) {
108
+ const routePath = `/v1/attachments/${encodeURIComponent(id)}`;
109
+ const signaturePath = routePath; // no query
110
+ const response = await fetch(`${this.credentials.relayBaseUrl}${routePath}`, {
111
+ method: "GET",
112
+ headers: this.signedHeaders("GET", signaturePath, "") // body "" → signs the same as other GETs
113
+ });
114
+ if (!response.ok)
115
+ throw new Error(`Ekho download failed for ${routePath}: ${response.status} ${await response.text()}`);
116
+ const bytes = Buffer.from(await response.arrayBuffer());
117
+ const cd = response.headers.get("content-disposition") ?? "";
118
+ const filename = /filename="([^"]+)"/.exec(cd)?.[1] ?? id;
119
+ return { bytes, filename, mime: response.headers.get("content-type") ?? "application/octet-stream" };
120
+ }
70
121
  }
71
122
  exports.EkhoAgentClient = EkhoAgentClient;
72
123
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { EkhoAgentClient } from "./client";
2
+ export type { FloorResult } from "./client";
2
3
  export { EkhoAgentAdapter } from "./adapter";
3
4
  export type { AdapterHooks } from "./adapter";
4
- export type { AgentCredentials, ActionDecision, InboxMessage, ControlMessage, SendMessagePayload, HeartbeatPayload, ProposeActionPayload, ActionResultPayload } from "./types";
5
+ export type { AgentCredentials, ActionDecision, AttachmentMeta, AttachmentRef, AttachmentUploadInput, InboxMessage, MessageSnapshot, ControlMessage, RosterEntry, InboxResponse, SendMessagePayload, HeartbeatPayload, ProposeActionPayload, ActionResultPayload } from "./types";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,SAAS,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAAlC,yGAAA,eAAe,OAAA;AACxB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAAlC,yGAAA,eAAe,OAAA;AAExB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA"}
package/dist/types.d.ts CHANGED
@@ -13,15 +13,44 @@ export type ActionDecision = {
13
13
  decision: "pending_approval";
14
14
  approval_id: string;
15
15
  };
16
+ export type AttachmentMeta = {
17
+ id: string;
18
+ filename: string;
19
+ mime: string;
20
+ size_bytes: number;
21
+ };
22
+ export type AttachmentRef = AttachmentMeta;
23
+ export type AttachmentUploadInput = {
24
+ filename: string;
25
+ mime: string;
26
+ dataBase64: string;
27
+ };
28
+ /** A quoted snapshot of another message — a reply target or a history entry. */
29
+ export type MessageSnapshot = {
30
+ message_id: string;
31
+ sender_agent_id: string;
32
+ sender_kind: "operator" | "agent";
33
+ sender_label: string;
34
+ text: string;
35
+ created_at: string;
36
+ };
16
37
  export type InboxMessage = {
17
38
  message_id: string;
18
39
  conversation_id: string;
19
40
  correlation_id: string;
20
41
  sender_agent_id: string;
42
+ /** "operator" iff the sender is the verified fleet operator; otherwise "agent". */
43
+ sender_kind?: "operator" | "agent";
21
44
  message_type: string;
22
45
  priority: string;
23
46
  body: Record<string, unknown>;
47
+ /** Resolved attachment metadata (never bytes). Fetch bytes via downloadAttachment. */
48
+ attachments?: AttachmentMeta[];
24
49
  metadata: Record<string, unknown>;
50
+ /** Agent ids this message is addressed to (@mentions). Empty = everyone. */
51
+ mentions?: string[];
52
+ /** Quoted snapshot of the message this replies to, or null. Same-conversation only. */
53
+ reply_to?: MessageSnapshot | null;
25
54
  created_at: string;
26
55
  deadline_at: string;
27
56
  };
@@ -30,6 +59,34 @@ export type ControlMessage = {
30
59
  action: string;
31
60
  reason: string;
32
61
  };
62
+ export type RosterEntry = {
63
+ agent_id: string;
64
+ display_name: string;
65
+ runtime: string;
66
+ status: string;
67
+ };
68
+ export type InboxResponse = {
69
+ messages: InboxMessage[];
70
+ controls: ControlMessage[];
71
+ /** Whether this agent recognizes the console operator as its verified principal. */
72
+ operator_trusted?: boolean;
73
+ /** Other agents in the same fleet (excludes the operator identity and self). */
74
+ roster?: RosterEntry[];
75
+ /** Operator-controlled bounded agent-to-agent delegation (live; absent on older relays). */
76
+ peer_autoreply?: boolean;
77
+ /** Per-conversation peer-turn budget set by the operator. */
78
+ peer_turn_budget?: number;
79
+ /** Project-mode rooms this agent belongs to: conversation id -> the higher
80
+ * per-room budget that overrides peer_turn_budget there (absent on older relays). */
81
+ conversation_budgets?: Record<string, number>;
82
+ /** Recent thread per room conversation (id -> chronological snapshots); {} for direct. */
83
+ conversation_history?: Record<string, MessageSnapshot[]>;
84
+ /** Rooms (among this batch) the polling agent is a member of, so a reply can be framed as going to the named room. */
85
+ rooms?: Array<{
86
+ id: string;
87
+ name: string;
88
+ }>;
89
+ };
33
90
  export type SendMessagePayload = {
34
91
  recipient: {
35
92
  kind: "agent" | "group" | "broadcast";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,GACrB;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpB;IAAE,QAAQ,EAAE,kBAAkB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,YAAY,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC5G,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IACjD,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drakon-systems/ekho-sdk",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Agent SDK for Ekho — the private communication layer for distributed AI agents.",
5
5
  "license": "MIT",
6
6
  "author": "Drakon Systems <hello@drakonsystems.com> (https://drakonsystems.com)",