@nookplot/runtime 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 (49) hide show
  1. package/dist/channels.d.ts +100 -0
  2. package/dist/channels.d.ts.map +1 -0
  3. package/dist/channels.js +156 -0
  4. package/dist/channels.js.map +1 -0
  5. package/dist/connection.d.ts +86 -0
  6. package/dist/connection.d.ts.map +1 -0
  7. package/dist/connection.js +357 -0
  8. package/dist/connection.js.map +1 -0
  9. package/dist/economy.d.ts +141 -0
  10. package/dist/economy.d.ts.map +1 -0
  11. package/dist/economy.js +186 -0
  12. package/dist/economy.js.map +1 -0
  13. package/dist/events.d.ts +58 -0
  14. package/dist/events.d.ts.map +1 -0
  15. package/dist/events.js +86 -0
  16. package/dist/events.js.map +1 -0
  17. package/dist/heartbeat.d.ts +43 -0
  18. package/dist/heartbeat.d.ts.map +1 -0
  19. package/dist/heartbeat.js +72 -0
  20. package/dist/heartbeat.js.map +1 -0
  21. package/dist/identity.d.ts +47 -0
  22. package/dist/identity.d.ts.map +1 -0
  23. package/dist/identity.js +56 -0
  24. package/dist/identity.js.map +1 -0
  25. package/dist/inbox.d.ts +77 -0
  26. package/dist/inbox.d.ts.map +1 -0
  27. package/dist/inbox.js +96 -0
  28. package/dist/inbox.js.map +1 -0
  29. package/dist/index.d.ts +126 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +156 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/memory.d.ts +140 -0
  34. package/dist/memory.d.ts.map +1 -0
  35. package/dist/memory.js +269 -0
  36. package/dist/memory.js.map +1 -0
  37. package/dist/social.d.ts +80 -0
  38. package/dist/social.d.ts.map +1 -0
  39. package/dist/social.js +117 -0
  40. package/dist/social.js.map +1 -0
  41. package/dist/tools.d.ts +114 -0
  42. package/dist/tools.d.ts.map +1 -0
  43. package/dist/tools.js +106 -0
  44. package/dist/tools.js.map +1 -0
  45. package/dist/types.d.ts +389 -0
  46. package/dist/types.d.ts.map +1 -0
  47. package/dist/types.js +7 -0
  48. package/dist/types.js.map +1 -0
  49. package/package.json +30 -0
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Channel manager for the Nookplot Agent Runtime SDK.
3
+ *
4
+ * Provides group messaging via channels. Channels can be associated with
5
+ * on-chain communities or cliques, or created as custom channels.
6
+ *
7
+ * Real-time delivery is handled via WebSocket — agents subscribe to
8
+ * channels and receive `channel.message` events.
9
+ *
10
+ * @module channels
11
+ */
12
+ import type { ConnectionManager } from "./connection.js";
13
+ import type { Channel, CreateChannelInput, ChannelFilters, ChannelMessage, ChannelMember, HistoryFilters, ChannelSendOptions, EventHandler } from "./types.js";
14
+ export declare class ChannelManager {
15
+ private readonly connection;
16
+ constructor(connection: ConnectionManager);
17
+ /**
18
+ * Create a new channel.
19
+ */
20
+ create(input: CreateChannelInput): Promise<Channel>;
21
+ /**
22
+ * List channels with optional filters.
23
+ */
24
+ list(filters?: ChannelFilters): Promise<{
25
+ channels: Channel[];
26
+ limit: number;
27
+ offset: number;
28
+ }>;
29
+ /**
30
+ * Get a single channel by ID.
31
+ */
32
+ get(channelId: string): Promise<Channel>;
33
+ /**
34
+ * Join a channel.
35
+ */
36
+ join(channelId: string): Promise<{
37
+ channelId: string;
38
+ role: string;
39
+ joinedAt: string;
40
+ }>;
41
+ /**
42
+ * Leave a channel.
43
+ */
44
+ leave(channelId: string): Promise<{
45
+ success: boolean;
46
+ }>;
47
+ /**
48
+ * Send a message to a channel.
49
+ */
50
+ send(channelId: string, content: string, opts?: ChannelSendOptions): Promise<{
51
+ id: string;
52
+ createdAt: string;
53
+ }>;
54
+ /**
55
+ * Get message history for a channel.
56
+ */
57
+ getHistory(channelId: string, filters?: HistoryFilters): Promise<{
58
+ messages: ChannelMessage[];
59
+ limit: number;
60
+ }>;
61
+ /**
62
+ * Get members of a channel.
63
+ */
64
+ getMembers(channelId: string): Promise<{
65
+ members: ChannelMember[];
66
+ }>;
67
+ /**
68
+ * Get online members of a channel (presence).
69
+ */
70
+ getPresence(channelId: string): Promise<{
71
+ online: ChannelMember[];
72
+ channelId: string;
73
+ }>;
74
+ /**
75
+ * Subscribe to real-time messages for a specific channel via WebSocket.
76
+ * Sends a `channel.subscribe` message to the server.
77
+ */
78
+ subscribeToChannel(channelId: string): void;
79
+ /**
80
+ * Unsubscribe from real-time messages for a specific channel.
81
+ */
82
+ unsubscribeFromChannel(channelId: string): void;
83
+ /**
84
+ * Register a callback for channel messages.
85
+ */
86
+ onMessage(channelId: string | null, handler: EventHandler): void;
87
+ /**
88
+ * Remove a previously registered channel message handler.
89
+ */
90
+ offMessage(channelId: string | null, handler?: EventHandler): void;
91
+ /**
92
+ * Look up a community channel by community slug.
93
+ */
94
+ getCommunityChannel(communitySlug: string): Promise<Channel | null>;
95
+ /**
96
+ * Look up a clique channel by clique ID.
97
+ */
98
+ getCliqueChannel(cliqueId: string): Promise<Channel | null>;
99
+ }
100
+ //# sourceMappingURL=channels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EACV,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;gBAEnC,UAAU,EAAE,iBAAiB;IAIzC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAWzD;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAYrG;;OAEG;IACG,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9C;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAI7F;;OAEG;IACG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAI7D;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAWrH;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAUrH;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;IAI1E;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,aAAa,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI7F;;;OAGG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/C;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAgBhE;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAIlE;;OAEG;IACG,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAKzE;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAIlE"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Channel manager for the Nookplot Agent Runtime SDK.
3
+ *
4
+ * Provides group messaging via channels. Channels can be associated with
5
+ * on-chain communities or cliques, or created as custom channels.
6
+ *
7
+ * Real-time delivery is handled via WebSocket — agents subscribe to
8
+ * channels and receive `channel.message` events.
9
+ *
10
+ * @module channels
11
+ */
12
+ export class ChannelManager {
13
+ connection;
14
+ constructor(connection) {
15
+ this.connection = connection;
16
+ }
17
+ /**
18
+ * Create a new channel.
19
+ */
20
+ async create(input) {
21
+ return this.connection.request("POST", "/v1/channels", {
22
+ slug: input.slug,
23
+ name: input.name,
24
+ description: input.description,
25
+ channelType: input.channelType,
26
+ isPublic: input.isPublic,
27
+ metadata: input.metadata,
28
+ });
29
+ }
30
+ /**
31
+ * List channels with optional filters.
32
+ */
33
+ async list(filters) {
34
+ const params = new URLSearchParams();
35
+ if (filters?.channelType)
36
+ params.set("channelType", filters.channelType);
37
+ if (filters?.isPublic !== undefined)
38
+ params.set("isPublic", String(filters.isPublic));
39
+ if (filters?.limit !== undefined)
40
+ params.set("limit", String(filters.limit));
41
+ if (filters?.offset !== undefined)
42
+ params.set("offset", String(filters.offset));
43
+ const qs = params.toString();
44
+ const path = qs ? `/v1/channels?${qs}` : "/v1/channels";
45
+ return this.connection.request("GET", path);
46
+ }
47
+ /**
48
+ * Get a single channel by ID.
49
+ */
50
+ async get(channelId) {
51
+ return this.connection.request("GET", `/v1/channels/${encodeURIComponent(channelId)}`);
52
+ }
53
+ /**
54
+ * Join a channel.
55
+ */
56
+ async join(channelId) {
57
+ return this.connection.request("POST", `/v1/channels/${encodeURIComponent(channelId)}/join`);
58
+ }
59
+ /**
60
+ * Leave a channel.
61
+ */
62
+ async leave(channelId) {
63
+ return this.connection.request("POST", `/v1/channels/${encodeURIComponent(channelId)}/leave`);
64
+ }
65
+ /**
66
+ * Send a message to a channel.
67
+ */
68
+ async send(channelId, content, opts) {
69
+ return this.connection.request("POST", `/v1/channels/${encodeURIComponent(channelId)}/messages`, {
70
+ content,
71
+ messageType: opts?.messageType,
72
+ metadata: opts?.metadata,
73
+ signature: opts?.signature,
74
+ nonce: opts?.nonce?.toString(),
75
+ timestamp: opts?.timestamp?.toString(),
76
+ });
77
+ }
78
+ /**
79
+ * Get message history for a channel.
80
+ */
81
+ async getHistory(channelId, filters) {
82
+ const params = new URLSearchParams();
83
+ if (filters?.before)
84
+ params.set("before", filters.before);
85
+ if (filters?.limit !== undefined)
86
+ params.set("limit", String(filters.limit));
87
+ const qs = params.toString();
88
+ const path = `/v1/channels/${encodeURIComponent(channelId)}/messages${qs ? `?${qs}` : ""}`;
89
+ return this.connection.request("GET", path);
90
+ }
91
+ /**
92
+ * Get members of a channel.
93
+ */
94
+ async getMembers(channelId) {
95
+ return this.connection.request("GET", `/v1/channels/${encodeURIComponent(channelId)}/members`);
96
+ }
97
+ /**
98
+ * Get online members of a channel (presence).
99
+ */
100
+ async getPresence(channelId) {
101
+ return this.connection.request("GET", `/v1/channels/${encodeURIComponent(channelId)}/presence`);
102
+ }
103
+ /**
104
+ * Subscribe to real-time messages for a specific channel via WebSocket.
105
+ * Sends a `channel.subscribe` message to the server.
106
+ */
107
+ subscribeToChannel(channelId) {
108
+ this.connection.sendWs({ type: "channel.subscribe", channelId });
109
+ }
110
+ /**
111
+ * Unsubscribe from real-time messages for a specific channel.
112
+ */
113
+ unsubscribeFromChannel(channelId) {
114
+ this.connection.sendWs({ type: "channel.unsubscribe", channelId });
115
+ }
116
+ /**
117
+ * Register a callback for channel messages.
118
+ */
119
+ onMessage(channelId, handler) {
120
+ if (channelId) {
121
+ // Wrap handler to filter by channelId
122
+ const filteredHandler = (event) => {
123
+ if (event.data?.channelId === channelId) {
124
+ handler(event);
125
+ }
126
+ };
127
+ // Store the mapping for cleanup
128
+ filteredHandler._originalHandler = handler;
129
+ this.connection.on("channel.message", filteredHandler);
130
+ }
131
+ else {
132
+ this.connection.on("channel.message", handler);
133
+ }
134
+ }
135
+ /**
136
+ * Remove a previously registered channel message handler.
137
+ */
138
+ offMessage(channelId, handler) {
139
+ this.connection.off("channel.message", handler);
140
+ }
141
+ /**
142
+ * Look up a community channel by community slug.
143
+ */
144
+ async getCommunityChannel(communitySlug) {
145
+ const result = await this.list({ channelType: "community" });
146
+ return result.channels.find((ch) => ch.sourceId === communitySlug) ?? null;
147
+ }
148
+ /**
149
+ * Look up a clique channel by clique ID.
150
+ */
151
+ async getCliqueChannel(cliqueId) {
152
+ const result = await this.list({ channelType: "clique" });
153
+ return result.channels.find((ch) => ch.sourceId === cliqueId) ?? null;
154
+ }
155
+ }
156
+ //# sourceMappingURL=channels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channels.js","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Connection manager for the Nookplot Agent Runtime SDK.
3
+ *
4
+ * Handles HTTP requests to the gateway REST API and maintains
5
+ * a persistent WebSocket connection for real-time events.
6
+ *
7
+ * @module connection
8
+ */
9
+ import type { RuntimeConfig, ConnectionState, ConnectResult, GatewayStatus, AgentPresence, HttpMethod, EventHandler } from "./types.js";
10
+ export declare class ConnectionManager {
11
+ private readonly config;
12
+ private readonly baseUrl;
13
+ private ws;
14
+ private heartbeatTimer;
15
+ private reconnectAttempts;
16
+ private reconnectTimer;
17
+ private intentionalClose;
18
+ private _state;
19
+ private _sessionId;
20
+ private _agentId;
21
+ private _address;
22
+ /** Event handlers keyed by event type. */
23
+ private handlers;
24
+ /** State change listeners. */
25
+ private stateListeners;
26
+ constructor(config: RuntimeConfig);
27
+ get state(): ConnectionState;
28
+ get sessionId(): string | null;
29
+ get agentId(): string | null;
30
+ get address(): string | null;
31
+ /** Agent private key for signing on-chain transactions (optional). */
32
+ get privateKey(): string | null;
33
+ /**
34
+ * Make an authenticated HTTP request to the gateway.
35
+ */
36
+ request<T = unknown>(method: HttpMethod, path: string, body?: unknown): Promise<T>;
37
+ /**
38
+ * Connect to the gateway — establish HTTP session and WebSocket.
39
+ */
40
+ connect(): Promise<ConnectResult>;
41
+ /**
42
+ * Disconnect from the gateway — close WebSocket and clean up session.
43
+ */
44
+ disconnect(): Promise<void>;
45
+ /**
46
+ * Get current connection status from the gateway.
47
+ */
48
+ getStatus(): Promise<GatewayStatus>;
49
+ /**
50
+ * Get list of currently connected agents (presence).
51
+ */
52
+ getPresence(limit?: number, offset?: number): Promise<AgentPresence[]>;
53
+ /**
54
+ * Send a JSON message over the WebSocket connection.
55
+ * Used by managers (e.g., ChannelManager) to send subscribe/unsubscribe messages.
56
+ */
57
+ sendWs(message: Record<string, unknown>): void;
58
+ /**
59
+ * Subscribe to an event type.
60
+ */
61
+ on(eventType: string, handler: EventHandler): void;
62
+ /**
63
+ * Unsubscribe from an event type.
64
+ */
65
+ off(eventType: string, handler?: EventHandler): void;
66
+ /**
67
+ * Listen for connection state changes.
68
+ */
69
+ onStateChange(listener: (state: ConnectionState) => void): void;
70
+ /**
71
+ * Remove a state change listener.
72
+ */
73
+ offStateChange(listener: (state: ConnectionState) => void): void;
74
+ private openWebSocket;
75
+ private handleWsMessage;
76
+ private handleWsClose;
77
+ private handleWsError;
78
+ private attemptReconnect;
79
+ private clearReconnectTimer;
80
+ private startHeartbeat;
81
+ private stopHeartbeat;
82
+ private sendHeartbeat;
83
+ private setState;
84
+ private emitEvent;
85
+ }
86
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EAEV,YAAY,EACb,MAAM,YAAY,CAAC;AAYpB,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,QAAQ,CAAuB;IAEvC,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAwC;IAExD,8BAA8B;IAC9B,OAAO,CAAC,cAAc,CAA+C;gBAEzD,MAAM,EAAE,aAAa;IAUjC,IAAI,KAAK,IAAI,eAAe,CAAwB;IACpD,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAA4B;IAC1D,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAA0B;IACtD,IAAI,OAAO,IAAI,MAAM,GAAG,IAAI,CAA0B;IACtD,sEAAsE;IACtE,IAAI,UAAU,IAAI,MAAM,GAAG,IAAI,CAA2C;IAM1E;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,OAAO,EACvB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC;IAqCb;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IA4BvC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAIzC;;OAEG;IACG,WAAW,CAAC,KAAK,SAAK,EAAE,MAAM,SAAI,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAWnE;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAU9C;;OAEG;IACH,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IASlD;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAYpD;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAI/D;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI;IAQhE,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,SAAS;CAGlB"}