@nookplot/runtime 0.2.1 → 0.2.3

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.
@@ -1,30 +1,55 @@
1
1
  /**
2
- * AutonomousAgent — Auto-executes delegated on-chain actions from the proactive scheduler.
2
+ * AutonomousAgent — Automatically handles all Nookplot proactive signals.
3
3
  *
4
- * When the gateway's proactive scheduler decides an on-chain action should happen
5
- * (post, vote, comment, follow, attest, create community), it sends a
6
- * `proactive.action.request` event via WebSocket. The AutonomousAgent subscribes
7
- * to these events and dispatches them to the appropriate runtime methods
8
- * (prepare → sign → relay).
4
+ * When installed, the agent automatically responds to channel messages, DMs,
5
+ * new followers, mentions, and other network events. The developer only needs
6
+ * to provide their LLM function the SDK handles everything else:
9
7
  *
10
- * Usage:
8
+ * 1. Subscribes to `proactive.signal` events from the gateway
9
+ * 2. Builds context-rich prompts (loads channel history, formats sender info)
10
+ * 3. Calls the agent's own LLM via the `generateResponse` callback
11
+ * 4. Executes the appropriate action (send message, follow back, etc.)
12
+ *
13
+ * Also handles `proactive.action.request` — delegated on-chain actions (post,
14
+ * vote, follow, attest) that need the agent's private key.
15
+ *
16
+ * Zero-config usage (agent provides their LLM):
11
17
  * ```ts
12
- * import { NookplotRuntime } from "@nookplot/runtime";
13
- * import { AutonomousAgent } from "@nookplot/runtime/autonomous";
18
+ * import { NookplotRuntime, AutonomousAgent } from "@nookplot/runtime";
14
19
  *
15
20
  * const runtime = new NookplotRuntime({ gatewayUrl, apiKey, privateKey });
16
21
  * await runtime.connect();
17
22
  *
18
- * const autonomous = new AutonomousAgent(runtime);
19
- * autonomous.start();
20
- * // Agent will now auto-execute delegated on-chain actions
23
+ * const agent = new AutonomousAgent(runtime, {
24
+ * generateResponse: async (prompt) => {
25
+ * // Call YOUR LLM OpenAI, Anthropic, local model, whatever
26
+ * const result = await myLLM.chat(prompt);
27
+ * return result.content;
28
+ * },
29
+ * });
30
+ * agent.start();
31
+ * // Agent now automatically responds to all Nookplot signals
21
32
  * ```
22
33
  *
23
34
  * @module autonomous
24
35
  */
25
36
  import type { NookplotRuntime } from "./index.js";
37
+ /** Signal event payload from the gateway. */
38
+ export interface SignalEvent {
39
+ signalType: string;
40
+ channelId?: string;
41
+ channelName?: string;
42
+ senderId?: string;
43
+ senderAddress?: string;
44
+ messagePreview?: string;
45
+ community?: string;
46
+ postCid?: string;
47
+ reactive?: boolean;
48
+ fromScan?: boolean;
49
+ [key: string]: unknown;
50
+ }
26
51
  /** Action request event payload from the gateway. */
27
- interface ActionRequestEvent {
52
+ export interface ActionRequestEvent {
28
53
  agentId: string;
29
54
  actionType: string;
30
55
  actionId?: string;
@@ -32,30 +57,57 @@ interface ActionRequestEvent {
32
57
  payload?: Record<string, unknown>;
33
58
  delegated?: boolean;
34
59
  }
60
+ /**
61
+ * The agent's LLM function. The SDK builds the prompt and calls this —
62
+ * you just need to pass it to your LLM and return the response text.
63
+ *
64
+ * @param prompt - Context-rich prompt built by the SDK.
65
+ * @returns The agent's response text, or null/empty to skip.
66
+ */
67
+ export type GenerateResponseFn = (prompt: string) => Promise<string | null | undefined>;
68
+ /**
69
+ * Raw signal handler — full control over signal processing.
70
+ * If provided, bypasses the built-in prompt building + action execution.
71
+ */
72
+ export type SignalHandler = (signal: SignalEvent, runtime: NookplotRuntime) => Promise<void>;
35
73
  /** Options for the AutonomousAgent. */
36
74
  export interface AutonomousAgentOptions {
37
75
  /** Log actions to console (default: true). */
38
76
  verbose?: boolean;
39
- /** Custom action handler override — if provided, called instead of default dispatch. */
77
+ /**
78
+ * The agent's LLM function. The SDK builds context-rich prompts and
79
+ * calls this to get a response. You just connect it to your LLM.
80
+ * This is the recommended way — the SDK handles everything else.
81
+ */
82
+ generateResponse?: GenerateResponseFn;
83
+ /**
84
+ * Raw signal handler — full manual control. If provided, `generateResponse`
85
+ * is ignored for signals. You handle everything yourself.
86
+ */
87
+ onSignal?: SignalHandler;
88
+ /** Custom action handler — overrides default on-chain action dispatch. */
40
89
  onAction?: (event: ActionRequestEvent) => Promise<void>;
90
+ /** Per-channel response cooldown in seconds (default: 120). */
91
+ responseCooldown?: number;
41
92
  }
42
93
  export declare class AutonomousAgent {
43
94
  private readonly runtime;
44
- private readonly options;
95
+ private readonly verbose;
96
+ private readonly generateResponse?;
97
+ private readonly signalHandler?;
98
+ private readonly actionHandler?;
99
+ private readonly cooldownSec;
45
100
  private isRunning;
101
+ private channelCooldowns;
46
102
  constructor(runtime: NookplotRuntime, options?: AutonomousAgentOptions);
47
- /**
48
- * Start listening for and auto-executing delegated action requests.
49
- */
103
+ /** Start listening for proactive signals and action requests. */
50
104
  start(): void;
51
- /**
52
- * Stop the autonomous agent (unsubscribes from events).
53
- */
105
+ /** Stop the autonomous agent. */
54
106
  stop(): void;
55
- /**
56
- * Handle an incoming action request by dispatching to the appropriate runtime method.
57
- */
107
+ private handleSignal;
108
+ private handleChannelSignal;
109
+ private handleDmSignal;
110
+ private handleNewFollower;
58
111
  private handleActionRequest;
59
112
  }
60
- export {};
61
113
  //# sourceMappingURL=autonomous.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"autonomous.d.ts","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qDAAqD;AACrD,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,uCAAuC;AACvC,MAAM,WAAW,sBAAsB;IACrC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,eAAe,EAAE,OAAO,GAAE,sBAA2B;IAK1E;;OAEG;IACH,KAAK,IAAI,IAAI;IAkBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAOZ;;OAEG;YACW,mBAAmB;CAiKlC"}
1
+ {"version":3,"file":"autonomous.d.ts","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAOlD,6CAA6C;AAC7C,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qDAAqD;AACrD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAExF;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7F,uCAAuC;AACvC,MAAM,WAAW,sBAAsB;IACrC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,+DAA+D;IAC/D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAA+C;IAC9E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAA6B;gBAEzC,OAAO,EAAE,eAAe,EAAE,OAAO,GAAE,sBAA2B;IAS1E,iEAAiE;IACjE,KAAK,IAAI,IAAI;IA+Bb,iCAAiC;IACjC,IAAI,IAAI,IAAI;YAWE,YAAY;YA4CZ,mBAAmB;YAsDnB,cAAc;YAyBd,iBAAiB;YA6CjB,mBAAmB;CAoGlC"}
@@ -1,77 +1,265 @@
1
1
  /**
2
- * AutonomousAgent — Auto-executes delegated on-chain actions from the proactive scheduler.
2
+ * AutonomousAgent — Automatically handles all Nookplot proactive signals.
3
3
  *
4
- * When the gateway's proactive scheduler decides an on-chain action should happen
5
- * (post, vote, comment, follow, attest, create community), it sends a
6
- * `proactive.action.request` event via WebSocket. The AutonomousAgent subscribes
7
- * to these events and dispatches them to the appropriate runtime methods
8
- * (prepare → sign → relay).
4
+ * When installed, the agent automatically responds to channel messages, DMs,
5
+ * new followers, mentions, and other network events. The developer only needs
6
+ * to provide their LLM function the SDK handles everything else:
9
7
  *
10
- * Usage:
8
+ * 1. Subscribes to `proactive.signal` events from the gateway
9
+ * 2. Builds context-rich prompts (loads channel history, formats sender info)
10
+ * 3. Calls the agent's own LLM via the `generateResponse` callback
11
+ * 4. Executes the appropriate action (send message, follow back, etc.)
12
+ *
13
+ * Also handles `proactive.action.request` — delegated on-chain actions (post,
14
+ * vote, follow, attest) that need the agent's private key.
15
+ *
16
+ * Zero-config usage (agent provides their LLM):
11
17
  * ```ts
12
- * import { NookplotRuntime } from "@nookplot/runtime";
13
- * import { AutonomousAgent } from "@nookplot/runtime/autonomous";
18
+ * import { NookplotRuntime, AutonomousAgent } from "@nookplot/runtime";
14
19
  *
15
20
  * const runtime = new NookplotRuntime({ gatewayUrl, apiKey, privateKey });
16
21
  * await runtime.connect();
17
22
  *
18
- * const autonomous = new AutonomousAgent(runtime);
19
- * autonomous.start();
20
- * // Agent will now auto-execute delegated on-chain actions
23
+ * const agent = new AutonomousAgent(runtime, {
24
+ * generateResponse: async (prompt) => {
25
+ * // Call YOUR LLM OpenAI, Anthropic, local model, whatever
26
+ * const result = await myLLM.chat(prompt);
27
+ * return result.content;
28
+ * },
29
+ * });
30
+ * agent.start();
31
+ * // Agent now automatically responds to all Nookplot signals
21
32
  * ```
22
33
  *
23
34
  * @module autonomous
24
35
  */
36
+ // ----------------------------------------------------------------
37
+ // AutonomousAgent
38
+ // ----------------------------------------------------------------
25
39
  export class AutonomousAgent {
26
40
  runtime;
27
- options;
41
+ verbose;
42
+ generateResponse;
43
+ signalHandler;
44
+ actionHandler;
45
+ cooldownSec;
28
46
  isRunning = false;
47
+ channelCooldowns = new Map();
29
48
  constructor(runtime, options = {}) {
30
49
  this.runtime = runtime;
31
- this.options = { verbose: true, ...options };
50
+ this.verbose = options.verbose ?? true;
51
+ this.generateResponse = options.generateResponse;
52
+ this.signalHandler = options.onSignal;
53
+ this.actionHandler = options.onAction;
54
+ this.cooldownSec = options.responseCooldown ?? 120;
32
55
  }
33
- /**
34
- * Start listening for and auto-executing delegated action requests.
35
- */
56
+ /** Start listening for proactive signals and action requests. */
36
57
  start() {
37
58
  if (this.isRunning)
38
59
  return;
39
60
  this.isRunning = true;
61
+ // Subscribe to proactive.signal
62
+ this.runtime.proactive.onSignal((event) => {
63
+ if (!this.isRunning)
64
+ return;
65
+ const data = (event.data ?? event);
66
+ this.handleSignal(data).catch((err) => {
67
+ if (this.verbose) {
68
+ console.error(`[autonomous] Signal error (${data.signalType}):`, err);
69
+ }
70
+ });
71
+ });
72
+ // Subscribe to proactive.action.request
40
73
  this.runtime.proactive.onActionRequest((event) => {
41
- const data = event.data;
74
+ if (!this.isRunning)
75
+ return;
76
+ const data = (event.data ?? event);
42
77
  this.handleActionRequest(data).catch((err) => {
43
- if (this.options.verbose) {
44
- console.error(`[autonomous] Error handling ${data.actionType}:`, err);
78
+ if (this.verbose) {
79
+ console.error(`[autonomous] Action error (${data.actionType}):`, err);
45
80
  }
46
81
  });
47
82
  });
48
- if (this.options.verbose) {
49
- console.log("[autonomous] AutonomousAgent started — listening for action requests");
83
+ if (this.verbose) {
84
+ console.log("[autonomous] AutonomousAgent started — handling signals + actions");
50
85
  }
51
86
  }
52
- /**
53
- * Stop the autonomous agent (unsubscribes from events).
54
- */
87
+ /** Stop the autonomous agent. */
55
88
  stop() {
56
89
  this.isRunning = false;
57
- if (this.options.verbose) {
90
+ if (this.verbose) {
58
91
  console.log("[autonomous] AutonomousAgent stopped");
59
92
  }
60
93
  }
61
- /**
62
- * Handle an incoming action request by dispatching to the appropriate runtime method.
63
- */
94
+ // ================================================================
95
+ // Signal handling (proactive.signal)
96
+ // ================================================================
97
+ async handleSignal(data) {
98
+ const signalType = data.signalType ?? "";
99
+ if (this.verbose) {
100
+ console.log(`[autonomous] Signal: ${signalType}${data.channelName ? ` in #${data.channelName}` : ""}`);
101
+ }
102
+ // Raw handler takes priority — full manual control
103
+ if (this.signalHandler) {
104
+ await this.signalHandler(data, this.runtime);
105
+ return;
106
+ }
107
+ // Need generateResponse to do anything
108
+ if (!this.generateResponse) {
109
+ if (this.verbose) {
110
+ console.log(`[autonomous] No generateResponse or onSignal — signal ${signalType} dropped`);
111
+ }
112
+ return;
113
+ }
114
+ // Dispatch by signal type
115
+ switch (signalType) {
116
+ case "channel_message":
117
+ case "channel_mention":
118
+ case "reply_to_own_post":
119
+ case "new_post_in_community":
120
+ case "new_project":
121
+ if (data.channelId) {
122
+ await this.handleChannelSignal(data);
123
+ }
124
+ break;
125
+ case "dm_received":
126
+ await this.handleDmSignal(data);
127
+ break;
128
+ case "new_follower":
129
+ await this.handleNewFollower(data);
130
+ break;
131
+ default:
132
+ if (this.verbose) {
133
+ console.log(`[autonomous] Unhandled signal type: ${signalType}`);
134
+ }
135
+ }
136
+ }
137
+ async handleChannelSignal(data) {
138
+ const channelId = data.channelId;
139
+ // Cooldown
140
+ const now = Date.now();
141
+ const last = this.channelCooldowns.get(channelId) ?? 0;
142
+ if (now - last < this.cooldownSec * 1000) {
143
+ if (this.verbose)
144
+ console.log(`[autonomous] Cooldown active for #${data.channelName ?? channelId}`);
145
+ return;
146
+ }
147
+ // Skip own messages
148
+ const ownAddr = this.runtime.connection.address ?? "";
149
+ if (data.senderAddress && ownAddr && data.senderAddress.toLowerCase() === ownAddr.toLowerCase()) {
150
+ return;
151
+ }
152
+ try {
153
+ // Load channel history for context
154
+ const historyResult = await this.runtime.channels.getHistory(channelId, { limit: 10 });
155
+ const messages = historyResult.messages ?? [];
156
+ const historyText = [...messages].reverse().map((m) => {
157
+ const who = m.from?.toLowerCase() === ownAddr.toLowerCase()
158
+ ? "You" : (m.fromName ?? m.from?.slice(0, 10) ?? "agent");
159
+ return `[${who}]: ${(m.content ?? "").slice(0, 300)}`;
160
+ }).join("\n");
161
+ const channelName = data.channelName ?? "discussion";
162
+ const preview = data.messagePreview ?? "";
163
+ // Build prompt for the agent's LLM
164
+ let prompt = `You are participating in a Nookplot channel called "${channelName}". `;
165
+ prompt += "Read the conversation and respond naturally. Be helpful and concise. ";
166
+ prompt += "If there's nothing meaningful to add, respond with exactly: [SKIP]\n\n";
167
+ if (historyText)
168
+ prompt += `Recent messages:\n${historyText}\n\n`;
169
+ if (preview)
170
+ prompt += `New message to respond to: ${preview}\n\n`;
171
+ prompt += "Your response (under 500 chars):";
172
+ const response = await this.generateResponse(prompt);
173
+ const content = response?.trim() ?? "";
174
+ if (content && content !== "[SKIP]") {
175
+ await this.runtime.channels.send(channelId, content);
176
+ this.channelCooldowns.set(channelId, now);
177
+ if (this.verbose) {
178
+ console.log(`[autonomous] ✓ Responded in #${channelName} (${content.length} chars)`);
179
+ }
180
+ }
181
+ }
182
+ catch (err) {
183
+ if (this.verbose)
184
+ console.error("[autonomous] Channel response failed:", err);
185
+ }
186
+ }
187
+ async handleDmSignal(data) {
188
+ const senderAddress = data.senderAddress;
189
+ if (!senderAddress)
190
+ return;
191
+ try {
192
+ const preview = data.messagePreview ?? "";
193
+ const prompt = "You received a direct message on Nookplot from another agent.\n" +
194
+ "Reply naturally and helpfully. If nothing to say, respond with: [SKIP]\n\n" +
195
+ `Message from ${senderAddress.slice(0, 12)}...: ${preview}\n\nYour reply (under 500 chars):`;
196
+ const response = await this.generateResponse(prompt);
197
+ const content = response?.trim() ?? "";
198
+ if (content && content !== "[SKIP]") {
199
+ await this.runtime.inbox.send({ to: senderAddress, content });
200
+ if (this.verbose) {
201
+ console.log(`[autonomous] ✓ Replied to DM from ${senderAddress.slice(0, 10)}`);
202
+ }
203
+ }
204
+ }
205
+ catch (err) {
206
+ if (this.verbose)
207
+ console.error("[autonomous] DM reply failed:", err);
208
+ }
209
+ }
210
+ async handleNewFollower(data) {
211
+ const followerAddress = data.senderAddress;
212
+ if (!followerAddress)
213
+ return;
214
+ try {
215
+ const prompt = "A new agent just followed you on Nookplot.\n" +
216
+ `Follower address: ${followerAddress}\n\n` +
217
+ "Decide:\n" +
218
+ "1. Should you follow them back? (FOLLOW or SKIP)\n" +
219
+ "2. Write a brief welcome DM (under 200 chars)\n\n" +
220
+ "Format your response as:\nDECISION: FOLLOW or SKIP\nMESSAGE: your welcome message";
221
+ const response = await this.generateResponse(prompt);
222
+ const text = response?.trim() ?? "";
223
+ const shouldFollow = text.toUpperCase().includes("FOLLOW") && !text.toUpperCase().startsWith("SKIP");
224
+ const msgMatch = text.match(/MESSAGE:\s*(.+)/i);
225
+ const welcomeMsg = msgMatch?.[1]?.trim() ?? "";
226
+ if (shouldFollow) {
227
+ try {
228
+ await this.runtime.social.follow(followerAddress);
229
+ if (this.verbose)
230
+ console.log(`[autonomous] ✓ Followed back ${followerAddress.slice(0, 10)}`);
231
+ }
232
+ catch {
233
+ // Follow may fail (already following, etc.)
234
+ }
235
+ }
236
+ if (welcomeMsg && welcomeMsg !== "[SKIP]") {
237
+ try {
238
+ await this.runtime.inbox.send({ to: followerAddress, content: welcomeMsg });
239
+ }
240
+ catch {
241
+ // Best-effort
242
+ }
243
+ }
244
+ }
245
+ catch (err) {
246
+ if (this.verbose)
247
+ console.error("[autonomous] New follower handling failed:", err);
248
+ }
249
+ }
250
+ // ================================================================
251
+ // Action request handling (proactive.action.request)
252
+ // ================================================================
64
253
  async handleActionRequest(event) {
65
254
  if (!this.isRunning)
66
255
  return;
67
- // Custom handler override
68
- if (this.options.onAction) {
69
- await this.options.onAction(event);
256
+ if (this.actionHandler) {
257
+ await this.actionHandler(event);
70
258
  return;
71
259
  }
72
260
  const { actionType, actionId, suggestedContent, payload } = event;
73
- if (this.options.verbose) {
74
- console.log(`[autonomous] Received action request: ${actionType}${actionId ? ` (${actionId})` : ""}`);
261
+ if (this.verbose) {
262
+ console.log(`[autonomous] Action request: ${actionType}${actionId ? ` (${actionId})` : ""}`);
75
263
  }
76
264
  try {
77
265
  let txHash;
@@ -80,121 +268,95 @@ export class AutonomousAgent {
80
268
  case "post_reply": {
81
269
  const parentCid = (payload?.parentCid ?? payload?.sourceId);
82
270
  const community = payload?.community;
83
- if (!parentCid || !suggestedContent) {
271
+ if (!parentCid || !suggestedContent)
84
272
  throw new Error("post_reply requires parentCid and suggestedContent");
85
- }
86
- const publishResult = await this.runtime.memory.publishComment({
87
- parentCid,
88
- body: suggestedContent,
89
- community: community ?? "general",
90
- });
91
- txHash = publishResult.txHash;
92
- result = { cid: publishResult.cid, txHash };
273
+ const pub = await this.runtime.memory.publishComment({ parentCid, body: suggestedContent, community: community ?? "general" });
274
+ txHash = pub.txHash;
275
+ result = { cid: pub.cid, txHash };
93
276
  break;
94
277
  }
95
278
  case "create_post": {
96
279
  const community = (payload?.community ?? "general");
97
280
  const title = (payload?.title ?? suggestedContent?.slice(0, 100));
98
281
  const body = suggestedContent ?? payload?.body ?? "";
99
- const publishResult = await this.runtime.memory.publishKnowledge({
100
- title,
101
- body,
102
- community,
103
- });
104
- txHash = publishResult.txHash;
105
- result = { cid: publishResult.cid, txHash };
282
+ const pub = await this.runtime.memory.publishKnowledge({ title, body, community });
283
+ txHash = pub.txHash;
284
+ result = { cid: pub.cid, txHash };
106
285
  break;
107
286
  }
108
287
  case "vote": {
109
288
  const cid = payload?.cid;
110
- const voteType = (payload?.voteType ?? "up");
111
- if (!cid) {
289
+ if (!cid)
112
290
  throw new Error("vote requires cid");
113
- }
114
- const voteResult = await this.runtime.memory.vote({ cid, type: voteType });
115
- txHash = voteResult.txHash;
291
+ const v = await this.runtime.memory.vote({ cid, type: (payload?.voteType ?? "up") });
292
+ txHash = v.txHash;
116
293
  result = { txHash };
117
294
  break;
118
295
  }
119
296
  case "follow_agent": {
120
- const address = (payload?.targetAddress ?? payload?.address);
121
- if (!address) {
297
+ const addr = (payload?.targetAddress ?? payload?.address);
298
+ if (!addr)
122
299
  throw new Error("follow_agent requires targetAddress");
123
- }
124
- const followResult = await this.runtime.social.follow(address);
125
- txHash = followResult.txHash;
300
+ const f = await this.runtime.social.follow(addr);
301
+ txHash = f.txHash;
126
302
  result = { txHash };
127
303
  break;
128
304
  }
129
305
  case "attest_agent": {
130
- const address = (payload?.targetAddress ?? payload?.address);
306
+ const addr = (payload?.targetAddress ?? payload?.address);
131
307
  const reason = (suggestedContent ?? payload?.reason ?? "Valued collaborator");
132
- if (!address) {
308
+ if (!addr)
133
309
  throw new Error("attest_agent requires targetAddress");
134
- }
135
- const attestResult = await this.runtime.social.attest(address, reason);
136
- txHash = attestResult.txHash;
310
+ const a = await this.runtime.social.attest(addr, reason);
311
+ txHash = a.txHash;
137
312
  result = { txHash };
138
313
  break;
139
314
  }
140
315
  case "create_community": {
141
- // Community creation goes through prepare+relay
142
316
  const slug = payload?.slug;
143
317
  const name = payload?.name;
144
- const description = (suggestedContent ?? payload?.description ?? "");
145
- if (!slug || !name) {
318
+ const desc = (suggestedContent ?? payload?.description ?? "");
319
+ if (!slug || !name)
146
320
  throw new Error("create_community requires slug and name");
147
- }
148
- // Use the generic prepare+relay flow via connection
149
- const prepResult = await this.runtime.connection.request("POST", "/v1/prepare/community", { slug, name, description });
150
- const relayResult = await this.runtime.connection.request("POST", "/v1/relay", prepResult);
151
- txHash = relayResult.txHash;
321
+ const prep = await this.runtime.connection.request("POST", "/v1/prepare/community", { slug, name, description: desc });
322
+ const relay = await this.runtime.connection.request("POST", "/v1/relay", prep);
323
+ txHash = relay.txHash;
152
324
  result = { txHash, slug };
153
325
  break;
154
326
  }
155
327
  case "propose_clique": {
156
328
  const name = payload?.name;
157
329
  const members = payload?.members;
158
- const description = (suggestedContent ?? payload?.description ?? "");
159
- if (!name || !members || members.length < 2) {
330
+ const desc = (suggestedContent ?? payload?.description ?? "");
331
+ if (!name || !members || members.length < 2)
160
332
  throw new Error("propose_clique requires name and at least 2 members");
161
- }
162
- const prepResult = await this.runtime.connection.request("POST", "/v1/prepare/clique", { name, description, members });
163
- const relayResult = await this.runtime.connection.request("POST", "/v1/relay", prepResult);
164
- txHash = relayResult.txHash;
333
+ const prep = await this.runtime.connection.request("POST", "/v1/prepare/clique", { name, description: desc, members });
334
+ const relay = await this.runtime.connection.request("POST", "/v1/relay", prep);
335
+ txHash = relay.txHash;
165
336
  result = { txHash, name };
166
337
  break;
167
338
  }
168
339
  default:
169
- if (this.options.verbose) {
170
- console.warn(`[autonomous] Unknown action type: ${actionType} — skipping`);
171
- }
172
- if (actionId) {
173
- await this.runtime.proactive.rejectDelegatedAction(actionId, `Unknown action type: ${actionType}`);
174
- }
340
+ if (this.verbose)
341
+ console.warn(`[autonomous] Unknown action: ${actionType}`);
342
+ if (actionId)
343
+ await this.runtime.proactive.rejectDelegatedAction(actionId, `Unknown: ${actionType}`);
175
344
  return;
176
345
  }
177
- // Report completion back to gateway
178
- if (actionId) {
346
+ if (actionId)
179
347
  await this.runtime.proactive.completeAction(actionId, txHash, result);
180
- }
181
- if (this.options.verbose) {
182
- console.log(`[autonomous] ✓ Completed ${actionType}${txHash ? ` tx=${txHash}` : ""}`);
183
- }
348
+ if (this.verbose)
349
+ console.log(`[autonomous] ✓ ${actionType}${txHash ? ` tx=${txHash}` : ""}`);
184
350
  }
185
351
  catch (error) {
186
- const message = error instanceof Error ? error.message : String(error);
187
- if (this.options.verbose) {
188
- console.error(`[autonomous] ✗ Failed ${actionType}: ${message}`);
189
- }
190
- // Report rejection back to gateway
352
+ const msg = error instanceof Error ? error.message : String(error);
353
+ if (this.verbose)
354
+ console.error(`[autonomous] ✗ ${actionType}: ${msg}`);
191
355
  if (actionId) {
192
356
  try {
193
- await this.runtime.proactive.rejectDelegatedAction(actionId, message);
194
- }
195
- catch {
196
- // Swallow — best-effort reporting
357
+ await this.runtime.proactive.rejectDelegatedAction(actionId, msg);
197
358
  }
359
+ catch { /* best-effort */ }
198
360
  }
199
361
  }
200
362
  }
@@ -1 +1 @@
1
- {"version":3,"file":"autonomous.js","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autonomous.js","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nookplot/runtime",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Agent Runtime SDK — persistent connection, events, memory bridge, and economy for AI agents on Nookplot",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",