@nookplot/runtime 0.5.124 → 0.5.125

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 (94) hide show
  1. package/dist/__tests__/autonomous.getAvailableActions.test.js +4 -7
  2. package/dist/__tests__/autonomous.getAvailableActions.test.js.map +1 -1
  3. package/dist/__tests__/codegen-drift.test.js +1 -3
  4. package/dist/__tests__/codegen-drift.test.js.map +1 -1
  5. package/dist/__tests__/conversation/modelThresholdsParity.test.js +11 -6
  6. package/dist/__tests__/conversation/modelThresholdsParity.test.js.map +1 -1
  7. package/dist/__tests__/helpers/mockRuntime.d.ts.map +1 -1
  8. package/dist/__tests__/helpers/mockRuntime.js +0 -7
  9. package/dist/__tests__/helpers/mockRuntime.js.map +1 -1
  10. package/dist/__tests__/sandbox.test.js +24 -24
  11. package/dist/actionCatalog.generated.d.ts +1 -1
  12. package/dist/actionCatalog.generated.d.ts.map +1 -1
  13. package/dist/actionCatalog.generated.js +24 -9
  14. package/dist/actionCatalog.generated.js.map +1 -1
  15. package/dist/autonomous.d.ts +1 -15
  16. package/dist/autonomous.d.ts.map +1 -1
  17. package/dist/autonomous.js +37 -181
  18. package/dist/autonomous.js.map +1 -1
  19. package/dist/bounties.js +1 -1
  20. package/dist/bounties.js.map +1 -1
  21. package/dist/connection.d.ts +1 -1
  22. package/dist/connection.d.ts.map +1 -1
  23. package/dist/connection.js +1 -2
  24. package/dist/connection.js.map +1 -1
  25. package/dist/contentSafety.d.ts +1 -1
  26. package/dist/contentSafety.d.ts.map +1 -1
  27. package/dist/contentSafety.js +2 -6
  28. package/dist/contentSafety.js.map +1 -1
  29. package/dist/conversation/modelLimits.js +17 -17
  30. package/dist/discovery.js +1 -1
  31. package/dist/discovery.js.map +1 -1
  32. package/dist/identity.d.ts +0 -51
  33. package/dist/identity.d.ts.map +1 -1
  34. package/dist/identity.js +0 -50
  35. package/dist/identity.js.map +1 -1
  36. package/dist/index.d.ts +1 -9
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +0 -5
  39. package/dist/index.js.map +1 -1
  40. package/dist/signalActionMap.d.ts.map +1 -1
  41. package/dist/signalActionMap.js +3 -0
  42. package/dist/signalActionMap.js.map +1 -1
  43. package/dist/swarms.d.ts +0 -13
  44. package/dist/swarms.d.ts.map +1 -1
  45. package/dist/swarms.js +0 -4
  46. package/dist/swarms.js.map +1 -1
  47. package/dist/tools.d.ts.map +1 -1
  48. package/dist/tools.js +2 -7
  49. package/dist/tools.js.map +1 -1
  50. package/package.json +60 -60
  51. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts +0 -2
  52. package/dist/__tests__/autonomous.goalBootstrap.test.d.ts.map +0 -1
  53. package/dist/__tests__/autonomous.goalBootstrap.test.js +0 -148
  54. package/dist/__tests__/autonomous.goalBootstrap.test.js.map +0 -1
  55. package/dist/__tests__/autonomous.miningTrack.test.d.ts +0 -2
  56. package/dist/__tests__/autonomous.miningTrack.test.d.ts.map +0 -1
  57. package/dist/__tests__/autonomous.miningTrack.test.js +0 -38
  58. package/dist/__tests__/autonomous.miningTrack.test.js.map +0 -1
  59. package/dist/__tests__/goalLoop.test.d.ts +0 -2
  60. package/dist/__tests__/goalLoop.test.d.ts.map +0 -1
  61. package/dist/__tests__/goalLoop.test.js +0 -335
  62. package/dist/__tests__/goalLoop.test.js.map +0 -1
  63. package/dist/__tests__/loadProfile.test.d.ts +0 -8
  64. package/dist/__tests__/loadProfile.test.d.ts.map +0 -1
  65. package/dist/__tests__/loadProfile.test.js +0 -134
  66. package/dist/__tests__/loadProfile.test.js.map +0 -1
  67. package/dist/__tests__/mining.test.d.ts +0 -2
  68. package/dist/__tests__/mining.test.d.ts.map +0 -1
  69. package/dist/__tests__/mining.test.js +0 -306
  70. package/dist/__tests__/mining.test.js.map +0 -1
  71. package/dist/__tests__/presetLoader.test.d.ts +0 -2
  72. package/dist/__tests__/presetLoader.test.d.ts.map +0 -1
  73. package/dist/__tests__/presetLoader.test.js +0 -749
  74. package/dist/__tests__/presetLoader.test.js.map +0 -1
  75. package/dist/goal/goalLoop.d.ts +0 -78
  76. package/dist/goal/goalLoop.d.ts.map +0 -1
  77. package/dist/goal/goalLoop.js +0 -376
  78. package/dist/goal/goalLoop.js.map +0 -1
  79. package/dist/goal/goalPrompts.d.ts +0 -20
  80. package/dist/goal/goalPrompts.d.ts.map +0 -1
  81. package/dist/goal/goalPrompts.js +0 -54
  82. package/dist/goal/goalPrompts.js.map +0 -1
  83. package/dist/goal/types.d.ts +0 -98
  84. package/dist/goal/types.d.ts.map +0 -1
  85. package/dist/goal/types.js +0 -7
  86. package/dist/goal/types.js.map +0 -1
  87. package/dist/loadProfile.d.ts +0 -100
  88. package/dist/loadProfile.d.ts.map +0 -1
  89. package/dist/loadProfile.js +0 -221
  90. package/dist/loadProfile.js.map +0 -1
  91. package/dist/presetLoader.d.ts +0 -130
  92. package/dist/presetLoader.d.ts.map +0 -1
  93. package/dist/presetLoader.js +0 -734
  94. package/dist/presetLoader.js.map +0 -1
@@ -168,21 +168,6 @@ export declare class AutonomousAgent {
168
168
  start(): void;
169
169
  /** Stop the autonomous agent. */
170
170
  stop(): void;
171
- /**
172
- * Check whether this agent has an initial_goal + pending status, and
173
- * if so, spin up a GoalLoop in the background. Non-blocking — start()
174
- * returns immediately so WebSocket signal subscriptions are live even
175
- * while the goal loop is running its first step.
176
- */
177
- private maybeBootstrapGoal;
178
- /**
179
- * Dispatch on the terminal state of a GoalLoop run:
180
- * - complete → store artifact in private KG, pause agent
181
- * - blocked_budget → create pending task (budget_exhausted), pause
182
- * - blocked_stuck → create pending task (stuck_3x), pause
183
- * - blocked_capability → create pending task (needs_capability), pause
184
- */
185
- private handleGoalResult;
186
171
  /**
187
172
  * Build a stable dedup key from a signal so we can detect duplicates.
188
173
  * DMs dedup on sender, followers dedup on address, channels dedup on channel+sender.
@@ -227,6 +212,7 @@ export declare class AutonomousAgent {
227
212
  private handleOnboardingSuggestion;
228
213
  private handleSpecializationPath;
229
214
  private handleCommunityGap;
215
+ private handleDirective;
230
216
  private handleFilesCommitted;
231
217
  private handleReviewSubmitted;
232
218
  private handleCollaboratorAdded;
@@ -1 +1 @@
1
- {"version":3,"file":"autonomous.d.ts","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"autonomous.d.ts","sourceRoot":"","sources":["../src/autonomous.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,6 @@ import { wrapUntrusted, sanitizeForPrompt, UNTRUSTED_CONTENT_INSTRUCTION } from
44
44
  import { getAvailableActionsFromMap } from "./signalActionMap.js";
45
45
  import { getCategoryListing, getToolsInCategory } from "./actionCatalog.js";
46
46
  import { WakeUpStack } from "./wakeUpStack.js";
47
- import { GoalLoop } from "./goal/goalLoop.js";
48
47
  import { hooks as defaultHooks } from "./hooks.js";
49
48
  import { guardrails as defaultGuardrails, GuardrailTripped, InputGuardrailTripped, } from "./guardrails.js";
50
49
  import { buildCorrectivePrompt, checkForDoomLoopFromSignatures, makeSignature, } from "./doomLoop.js";
@@ -239,21 +238,6 @@ export class AutonomousAgent {
239
238
  if (this.verbose) {
240
239
  console.log("[autonomous] AutonomousAgent started — handling signals + actions");
241
240
  }
242
- // Pre-load tool categories so the LLM always has web_search +
243
- // search_knowledge visible without a browse_tools cold-start.
244
- // Saves ~1 LLM turn per goal-driven agent and simplifies the first
245
- // step for reactive agents too (CLAUDE.md rule — small code change).
246
- this.loadedCategories.add("tools");
247
- this.loadedCategories.add("discovery");
248
- this.loadedCategories.add("knowledge");
249
- // Goal bootstrap — run the GoalLoop in background if this agent was
250
- // forged with initial_goal set (L1 swarm auto-deploy). Failures are
251
- // non-fatal: the agent continues in normal reactive mode.
252
- this.maybeBootstrapGoal().catch((err) => {
253
- if (this.verbose) {
254
- console.error("[autonomous] Goal bootstrap failed:", err);
255
- }
256
- });
257
241
  }
258
242
  /** Stop the autonomous agent. */
259
243
  stop() {
@@ -263,157 +247,6 @@ export class AutonomousAgent {
263
247
  }
264
248
  }
265
249
  // ================================================================
266
- // Goal bootstrap (L3 — migration 247)
267
- // ================================================================
268
- /**
269
- * Check whether this agent has an initial_goal + pending status, and
270
- * if so, spin up a GoalLoop in the background. Non-blocking — start()
271
- * returns immediately so WebSocket signal subscriptions are live even
272
- * while the goal loop is running its first step.
273
- */
274
- async maybeBootstrapGoal() {
275
- let goalConfig;
276
- try {
277
- goalConfig = await this.runtime.identity.getGoal();
278
- }
279
- catch (err) {
280
- if (this.verbose) {
281
- console.error("[autonomous] getGoal failed — treating as no goal:", err);
282
- }
283
- return;
284
- }
285
- if (!goalConfig || !goalConfig.initialGoal)
286
- return;
287
- if (goalConfig.goalStatus !== "pending") {
288
- if (this.verbose) {
289
- console.log(`[autonomous] Skipping goal bootstrap — status is ${goalConfig.goalStatus}, not 'pending'`);
290
- }
291
- return;
292
- }
293
- if (this.verbose) {
294
- console.log(`[autonomous] Goal bootstrap: "${goalConfig.initialGoal.slice(0, 80)}..." budget=${goalConfig.goalBudgetNook ?? "unlimited"}`);
295
- }
296
- // Transition status atomically before running the loop. If the
297
- // gateway rejects (network, permissions), bail out — we do not want
298
- // to run the loop with a mismatched DB state.
299
- try {
300
- await this.runtime.identity.updateGoalStatus("in_progress");
301
- }
302
- catch (err) {
303
- if (this.verbose) {
304
- console.error("[autonomous] Failed to transition goal → in_progress:", err);
305
- }
306
- return;
307
- }
308
- const budgetNook = goalConfig.goalBudgetNook ? BigInt(goalConfig.goalBudgetNook) : 0n;
309
- const loopOptions = {
310
- runtime: this.runtime,
311
- goal: goalConfig.initialGoal,
312
- budgetNook,
313
- parentSwarmId: goalConfig.goalParentSwarmId,
314
- verbose: this.verbose,
315
- };
316
- const loop = new GoalLoop(loopOptions);
317
- let result;
318
- try {
319
- result = await loop.run();
320
- }
321
- catch (err) {
322
- const msg = err instanceof Error ? err.message : String(err);
323
- if (this.verbose) {
324
- console.error("[autonomous] GoalLoop threw:", err);
325
- }
326
- // Transition to failed so the UI reflects the error.
327
- await this.runtime.identity.updateGoalStatus("failed").catch(() => { });
328
- await this.runtime.identity.createPendingTask({
329
- reason: "unclear_goal",
330
- description: `Goal loop crashed: ${msg.slice(0, 400)}`,
331
- parentSwarmId: goalConfig.goalParentSwarmId,
332
- }).catch(() => { });
333
- return;
334
- }
335
- await this.handleGoalResult(result, goalConfig);
336
- }
337
- /**
338
- * Dispatch on the terminal state of a GoalLoop run:
339
- * - complete → store artifact in private KG, pause agent
340
- * - blocked_budget → create pending task (budget_exhausted), pause
341
- * - blocked_stuck → create pending task (stuck_3x), pause
342
- * - blocked_capability → create pending task (needs_capability), pause
343
- */
344
- async handleGoalResult(result, goalConfig) {
345
- if (result.outcome === "complete") {
346
- // Store deliverable in private KG
347
- let artifactId = null;
348
- try {
349
- const storeResult = (await this.runtime.connection.request("POST", "/v1/agents/me/knowledge", {
350
- contentText: result.artifact.body,
351
- title: result.artifact.title,
352
- domain: result.artifact.domain,
353
- visibility: "private",
354
- knowledgeType: "fact",
355
- sourceType: "import",
356
- metadata: {
357
- goal: goalConfig.initialGoal,
358
- parentSwarmId: goalConfig.goalParentSwarmId,
359
- stepsExecuted: result.stepsExecuted,
360
- spentNook: result.spentNook.toString(),
361
- },
362
- }));
363
- artifactId = storeResult?.id ?? null;
364
- }
365
- catch (err) {
366
- if (this.verbose) {
367
- console.error("[autonomous] Failed to store goal artifact:", err);
368
- }
369
- }
370
- try {
371
- await this.runtime.identity.completeGoal(artifactId ?? "unknown");
372
- }
373
- catch (err) {
374
- if (this.verbose) {
375
- console.error("[autonomous] completeGoal failed:", err);
376
- }
377
- }
378
- // Q3: agent pauses after completion, does not stay reactive
379
- this.stop();
380
- return;
381
- }
382
- if (result.outcome === "blocked_budget") {
383
- // initialGoal is non-null here — maybeBootstrapGoal returned early otherwise.
384
- const goalText = goalConfig.initialGoal ?? "(unknown)";
385
- await this.runtime.identity.createPendingTask({
386
- reason: "budget_exhausted",
387
- description: `Needs top-off to continue goal: ${goalText.slice(0, 300)}`,
388
- parentSwarmId: goalConfig.goalParentSwarmId,
389
- }).catch(() => { });
390
- await this.runtime.identity.updateGoalStatus("paused_awaiting_topoff").catch(() => { });
391
- this.stop();
392
- return;
393
- }
394
- if (result.outcome === "blocked_stuck") {
395
- await this.runtime.identity.createPendingTask({
396
- reason: "stuck_3x",
397
- description: result.stuckReason,
398
- parentSwarmId: goalConfig.goalParentSwarmId,
399
- }).catch(() => { });
400
- await this.runtime.identity.updateGoalStatus("blocked_needs_decision").catch(() => { });
401
- this.stop();
402
- return;
403
- }
404
- if (result.outcome === "blocked_capability") {
405
- await this.runtime.identity.createPendingTask({
406
- reason: "needs_capability",
407
- description: result.capabilityNeeded,
408
- suggestedPresetId: result.suggestedPreset,
409
- parentSwarmId: goalConfig.goalParentSwarmId,
410
- }).catch(() => { });
411
- await this.runtime.identity.updateGoalStatus("blocked_needs_decision").catch(() => { });
412
- this.stop();
413
- return;
414
- }
415
- }
416
- // ================================================================
417
250
  // Signal handling (proactive.signal)
418
251
  // ================================================================
419
252
  /**
@@ -644,7 +477,9 @@ export class AutonomousAgent {
644
477
  case "community_gap":
645
478
  await this.handleCommunityGap(data);
646
479
  break;
647
- // DD-7: directive case removed — swarm coordination uses DMs
480
+ case "directive":
481
+ await this.handleDirective(data);
482
+ break;
648
483
  case "files_committed":
649
484
  await this.handleFilesCommitted(data);
650
485
  break;
@@ -2171,7 +2006,40 @@ export class AutonomousAgent {
2171
2006
  console.error("[autonomous] Community gap handling failed:", err);
2172
2007
  }
2173
2008
  }
2174
- // DD-7: handleDirective removed — swarm coordination uses DMs exclusively
2009
+ async handleDirective(data) {
2010
+ const directiveContent = data.messagePreview ?? "";
2011
+ const channelId = data.channelId;
2012
+ const community = data.community ?? "general";
2013
+ try {
2014
+ const prompt = `${UNTRUSTED_CONTENT_INSTRUCTION}\n\n` +
2015
+ "You received a directive on Nookplot.\n" +
2016
+ `Directive:\n${wrapUntrusted(directiveContent, "directive")}\n\n` +
2017
+ "Follow the directive and compose your response.\n" +
2018
+ "If it asks you to post, write the post content.\n" +
2019
+ "If it asks you to discuss, write a discussion message.\n" +
2020
+ "If you can't follow this directive, respond with exactly: [SKIP]\n\n" +
2021
+ "Your response (under 500 chars):";
2022
+ const response = await this.generateResponse(prompt);
2023
+ const content = response?.trim() ?? "";
2024
+ if (content && content !== "[SKIP]") {
2025
+ if (channelId) {
2026
+ await this.runtime.channels.send(channelId, content);
2027
+ if (this.verbose)
2028
+ console.log(`[autonomous] ✓ Directive response sent to channel ${channelId.slice(0, 12)}`);
2029
+ }
2030
+ else {
2031
+ const title = content.slice(0, 100);
2032
+ await this.runtime.memory.publishKnowledge({ title, body: content, community });
2033
+ if (this.verbose)
2034
+ console.log(`[autonomous] ✓ Directive response posted in ${community}`);
2035
+ }
2036
+ }
2037
+ }
2038
+ catch (err) {
2039
+ if (this.verbose)
2040
+ console.error("[autonomous] Directive handling failed:", err);
2041
+ }
2042
+ }
2175
2043
  // ================================================================
2176
2044
  // Project collaboration signal handlers
2177
2045
  // ================================================================
@@ -2858,18 +2726,6 @@ export class AutonomousAgent {
2858
2726
  triggers: this.doomLoopTriggers,
2859
2727
  actionType,
2860
2728
  });
2861
- // Track C.2: also push to gateway as fire-and-forget telemetry so
2862
- // ops dashboards can answer "which tools most often misbehave?"
2863
- // and "is this agent stuck right now?" — see
2864
- // gateway/src/services/doomLoopMetrics.ts. Errors are swallowed so
2865
- // a backend outage never blocks the runtime's recovery path.
2866
- void this.runtime.connection
2867
- .request("POST", "/v1/agents/me/doom-loop-event", {
2868
- offender: doomOffender,
2869
- triggers: this.doomLoopTriggers,
2870
- actionType,
2871
- })
2872
- .catch(() => { });
2873
2729
  if (this.doomLoopTriggers >= AUTONOMOUS_DOOM_LOOP_MAX_TRIGGERS) {
2874
2730
  if (this.verbose) {
2875
2731
  console.warn(`[autonomous] ✗ doom loop on '${doomOffender}' (${this.doomLoopTriggers} triggers) — aborting cycle`);