@nookplot/runtime 0.5.33 → 0.5.34

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=memory.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/memory.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,192 @@
1
+ import { describe, it, expect, vi, beforeEach } from "vitest";
2
+ import { MemoryBridge } from "../memory.js";
3
+ // ---------------------------------------------------------------------------
4
+ // Mock ConnectionManager
5
+ // ---------------------------------------------------------------------------
6
+ function createMockConnection() {
7
+ return {
8
+ request: vi.fn(),
9
+ privateKey: null,
10
+ };
11
+ }
12
+ describe("MemoryBridge — Agent Memory methods", () => {
13
+ let conn;
14
+ let bridge;
15
+ beforeEach(() => {
16
+ conn = createMockConnection();
17
+ bridge = new MemoryBridge(conn);
18
+ });
19
+ // -----------------------------------------------------------------------
20
+ // storeMemory
21
+ // -----------------------------------------------------------------------
22
+ describe("storeMemory", () => {
23
+ it("POSTs to /v1/agent-memory/store with type and content", async () => {
24
+ conn.request.mockResolvedValue({ id: "mem_1", type: "episodic" });
25
+ const result = await bridge.storeMemory("episodic", "I saw a cat");
26
+ expect(conn.request).toHaveBeenCalledWith("POST", "/v1/agent-memory/store", {
27
+ type: "episodic",
28
+ content: "I saw a cat",
29
+ });
30
+ expect(result.id).toBe("mem_1");
31
+ });
32
+ it("passes optional fields when provided", async () => {
33
+ conn.request.mockResolvedValue({ id: "mem_2" });
34
+ await bridge.storeMemory("semantic", "Cats are feline", {
35
+ importance: 0.8,
36
+ decayRate: 0.05,
37
+ tags: ["animals", "facts"],
38
+ source: "experience",
39
+ parentMemoryId: "mem_0",
40
+ metadata: { context: "learning" },
41
+ });
42
+ expect(conn.request).toHaveBeenCalledWith("POST", "/v1/agent-memory/store", {
43
+ type: "semantic",
44
+ content: "Cats are feline",
45
+ importance: 0.8,
46
+ decayRate: 0.05,
47
+ tags: ["animals", "facts"],
48
+ source: "experience",
49
+ parentMemoryId: "mem_0",
50
+ metadata: { context: "learning" },
51
+ });
52
+ });
53
+ });
54
+ // -----------------------------------------------------------------------
55
+ // recall
56
+ // -----------------------------------------------------------------------
57
+ describe("recall", () => {
58
+ it("POSTs to /v1/agent-memory/recall with query", async () => {
59
+ const memories = [{ id: "m1", content: "cat fact" }];
60
+ conn.request.mockResolvedValue({ memories, count: 1 });
61
+ const result = await bridge.recall("what do I know about cats?");
62
+ expect(conn.request).toHaveBeenCalledWith("POST", "/v1/agent-memory/recall", {
63
+ query: "what do I know about cats?",
64
+ });
65
+ expect(result.memories).toEqual(memories);
66
+ expect(result.count).toBe(1);
67
+ });
68
+ it("passes optional filters", async () => {
69
+ conn.request.mockResolvedValue({ memories: [], count: 0 });
70
+ await bridge.recall("test", {
71
+ types: ["semantic", "procedural"],
72
+ limit: 5,
73
+ minImportance: 0.3,
74
+ });
75
+ expect(conn.request).toHaveBeenCalledWith("POST", "/v1/agent-memory/recall", {
76
+ query: "test",
77
+ types: ["semantic", "procedural"],
78
+ limit: 5,
79
+ minImportance: 0.3,
80
+ });
81
+ });
82
+ });
83
+ // -----------------------------------------------------------------------
84
+ // listMemories
85
+ // -----------------------------------------------------------------------
86
+ describe("listMemories", () => {
87
+ it("GETs /v1/agent-memory/list with no params by default", async () => {
88
+ conn.request.mockResolvedValue({ memories: [], count: 0 });
89
+ await bridge.listMemories();
90
+ expect(conn.request).toHaveBeenCalledWith("GET", "/v1/agent-memory/list");
91
+ });
92
+ it("includes type, limit, and offset in query string", async () => {
93
+ conn.request.mockResolvedValue({ memories: [], count: 0 });
94
+ await bridge.listMemories("episodic", 10, 5);
95
+ const [method, path] = conn.request.mock.calls[0];
96
+ expect(method).toBe("GET");
97
+ expect(path).toContain("type=episodic");
98
+ expect(path).toContain("limit=10");
99
+ expect(path).toContain("offset=5");
100
+ });
101
+ });
102
+ // -----------------------------------------------------------------------
103
+ // getMemoryStats
104
+ // -----------------------------------------------------------------------
105
+ describe("getMemoryStats", () => {
106
+ it("GETs /v1/agent-memory/stats", async () => {
107
+ const stats = { totalMemories: 42 };
108
+ conn.request.mockResolvedValue(stats);
109
+ const result = await bridge.getMemoryStats();
110
+ expect(conn.request).toHaveBeenCalledWith("GET", "/v1/agent-memory/stats");
111
+ expect(result).toEqual(stats);
112
+ });
113
+ });
114
+ // -----------------------------------------------------------------------
115
+ // exportMemories
116
+ // -----------------------------------------------------------------------
117
+ describe("exportMemories", () => {
118
+ it("POSTs to /v1/agent-memory/export", async () => {
119
+ const pack = { memories: [{ id: "m1" }], packHash: "abc" };
120
+ conn.request.mockResolvedValue(pack);
121
+ const result = await bridge.exportMemories();
122
+ expect(conn.request).toHaveBeenCalledWith("POST", "/v1/agent-memory/export");
123
+ expect(result).toEqual(pack);
124
+ });
125
+ });
126
+ // -----------------------------------------------------------------------
127
+ // importMemories
128
+ // -----------------------------------------------------------------------
129
+ describe("importMemories", () => {
130
+ it("POSTs pack to /v1/agent-memory/import", async () => {
131
+ const pack = { memories: [{ id: "m1" }], packHash: "abc" };
132
+ conn.request.mockResolvedValue({ imported: 1 });
133
+ const result = await bridge.importMemories(pack);
134
+ expect(conn.request).toHaveBeenCalledWith("POST", "/v1/agent-memory/import", pack);
135
+ expect(result).toEqual({ imported: 1 });
136
+ });
137
+ });
138
+ });
139
+ // ---------------------------------------------------------------------------
140
+ // Existing MemoryBridge methods (smoke tests)
141
+ // ---------------------------------------------------------------------------
142
+ describe("MemoryBridge — existing methods", () => {
143
+ let conn;
144
+ let bridge;
145
+ beforeEach(() => {
146
+ conn = createMockConnection();
147
+ bridge = new MemoryBridge(conn);
148
+ });
149
+ it("queryKnowledge sends POST to /v1/memory/query", async () => {
150
+ conn.request.mockResolvedValue({ items: [] });
151
+ await bridge.queryKnowledge({ community: "test" });
152
+ expect(conn.request).toHaveBeenCalledWith("POST", "/v1/memory/query", { community: "test" });
153
+ });
154
+ it("syncFromNetwork sends GET with params", async () => {
155
+ conn.request.mockResolvedValue({ items: [], cursor: "t1", hasMore: false });
156
+ await bridge.syncFromNetwork("t0", { community: "ai", limit: 10 });
157
+ const [method, path] = conn.request.mock.calls[0];
158
+ expect(method).toBe("GET");
159
+ expect(path).toContain("since=t0");
160
+ expect(path).toContain("community=ai");
161
+ expect(path).toContain("limit=10");
162
+ });
163
+ it("getExpertise sends GET with topic", async () => {
164
+ conn.request.mockResolvedValue({ experts: [], topic: "ml" });
165
+ await bridge.getExpertise("ml", 5);
166
+ const [method, path] = conn.request.mock.calls[0];
167
+ expect(method).toBe("GET");
168
+ expect(path).toContain("/v1/memory/expertise/ml");
169
+ expect(path).toContain("limit=5");
170
+ });
171
+ it("getReputation sends GET for self", async () => {
172
+ conn.request.mockResolvedValue({ score: 0.5 });
173
+ await bridge.getReputation();
174
+ expect(conn.request).toHaveBeenCalledWith("GET", "/v1/memory/reputation");
175
+ });
176
+ it("getReputation sends GET for specific address", async () => {
177
+ conn.request.mockResolvedValue({ score: 0.7 });
178
+ await bridge.getReputation("0xabc");
179
+ expect(conn.request).toHaveBeenCalledWith("GET", "/v1/memory/reputation/0xabc");
180
+ });
181
+ it("listCommunities sends GET", async () => {
182
+ conn.request.mockResolvedValue({ communities: [], default: "general" });
183
+ await bridge.listCommunities(10);
184
+ expect(conn.request).toHaveBeenCalledWith("GET", "/v1/memory/communities?limit=10");
185
+ });
186
+ it("semanticQuery sends POST to /v1/knowledge/query", async () => {
187
+ conn.request.mockResolvedValue({ results: [], totalResults: 0 });
188
+ await bridge.semanticQuery({ query: "test", limit: 5 });
189
+ expect(conn.request).toHaveBeenCalledWith("POST", "/v1/knowledge/query", { query: "test", limit: 5 });
190
+ });
191
+ });
192
+ //# sourceMappingURL=memory.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.test.js","sourceRoot":"","sources":["../../src/__tests__/memory.test.ts"],"names":[],"mappings":"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"}
@@ -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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"}
@@ -86,6 +86,7 @@ export function getAvailableActions(signalType) {
86
86
  "workspace_create", "publish_insight",
87
87
  "create_intent", "browse_intents",
88
88
  "launch_token", "preview_token_launch",
89
+ "search_skills", "install_skill", "store_memory", "recall_memory",
89
90
  "ignore",
90
91
  ];
91
92
  case "channel_message":
@@ -98,6 +99,7 @@ export function getAvailableActions(signalType) {
98
99
  "egress_request", "execute_tool", "call_mcp_tool",
99
100
  "workspace_create", "publish_insight",
100
101
  "create_intent", "browse_intents",
102
+ "search_skills", "install_skill", "store_memory",
101
103
  "ignore",
102
104
  ];
103
105
  case "new_follower":
@@ -142,6 +144,10 @@ export function getAvailableActions(signalType) {
142
144
  "cancel_intent", "complete_intent", "withdraw_proposal", "query_oracle",
143
145
  "launch_token", "preview_token_launch", "claim_clawnch_fees", "get_token_analytics",
144
146
  "create_search_subscription",
147
+ "send_email", "reply_email", "check_email", "create_email_inbox",
148
+ "search_skills", "publish_skill", "install_skill", "review_skill", "update_skill", "trending_skills",
149
+ "store_memory", "recall_memory", "list_memories", "memory_stats", "export_memories", "import_memories",
150
+ "forge_deploy", "forge_spawn", "forge_update_soul",
145
151
  "ignore",
146
152
  ];
147
153
  case "collab_request":
@@ -149,7 +155,7 @@ export function getAvailableActions(signalType) {
149
155
  case "service":
150
156
  return ["reply", "update_service", "create_listing", "create_agreement", "ignore"];
151
157
  case "time_to_post":
152
- return ["create_post", "create_bounty", "create_bundle", "publish_insight", "create_listing", "ignore"];
158
+ return ["create_post", "create_bounty", "create_bundle", "publish_insight", "create_listing", "publish_skill", "ignore"];
153
159
  case "time_to_create_project":
154
160
  return ["create_project", "assemble_team", "ignore"];
155
161
  case "task_assigned":
@@ -248,7 +254,7 @@ export function getAvailableActions(signalType) {
248
254
  case "onboarding_suggestion":
249
255
  return ["reply", "ignore"];
250
256
  case "specialization_path":
251
- return ["reply", "record_gap", "update_proficiency", "ignore"];
257
+ return ["reply", "record_gap", "update_proficiency", "search_skills", "install_skill", "store_memory", "ignore"];
252
258
  case "new_bundle_in_domain":
253
259
  return ["cite_insight", "reply", "ignore"];
254
260
  case "bundle_cited":
@@ -256,6 +262,8 @@ export function getAvailableActions(signalType) {
256
262
  case "webhook_received":
257
263
  case "webhook.received":
258
264
  return ["reply", "egress_request", "execute_tool", "ignore"];
265
+ case "email_received":
266
+ return ["reply_email", "send_email", "send_dm", "ignore"];
259
267
  default:
260
268
  return ["reply", "ignore"];
261
269
  }
@@ -3645,6 +3653,182 @@ export class AutonomousAgent {
3645
3653
  result = { reviewed: true };
3646
3654
  break;
3647
3655
  }
3656
+ case "send_email": {
3657
+ const to = payload?.to;
3658
+ const subject = (payload?.subject ?? suggestedContent?.slice(0, 100));
3659
+ const bodyText = (payload?.body ?? suggestedContent);
3660
+ if (!to || !subject || !bodyText)
3661
+ throw new Error("send_email requires to, subject, and body");
3662
+ result = await this.runtime.connection.request("POST", "/v1/email/send", { to, subject, bodyText });
3663
+ break;
3664
+ }
3665
+ case "reply_email": {
3666
+ const messageId = payload?.messageId;
3667
+ const bodyText = (payload?.body ?? suggestedContent);
3668
+ if (!messageId || !bodyText)
3669
+ throw new Error("reply_email requires messageId and body");
3670
+ result = await this.runtime.connection.request("POST", `/v1/email/${messageId}/reply`, { bodyText });
3671
+ break;
3672
+ }
3673
+ case "check_email": {
3674
+ result = await this.runtime.connection.request("GET", "/v1/email/messages?direction=inbound&limit=10");
3675
+ break;
3676
+ }
3677
+ case "create_email_inbox": {
3678
+ const username = payload?.username;
3679
+ if (!username)
3680
+ throw new Error("create_email_inbox requires username");
3681
+ result = await this.runtime.connection.request("POST", "/v1/email/inbox", { username, displayName: payload?.displayName });
3682
+ break;
3683
+ }
3684
+ // ── Skill Registry ──────────────────────────────────────────────
3685
+ case "search_skills": {
3686
+ const q = payload?.query || payload?.q || "";
3687
+ const category = payload?.category;
3688
+ const tags = payload?.tags;
3689
+ const limit = payload?.limit || 20;
3690
+ const qs = new URLSearchParams();
3691
+ if (q)
3692
+ qs.set("q", q);
3693
+ if (category)
3694
+ qs.set("category", category);
3695
+ if (tags)
3696
+ qs.set("tags", tags);
3697
+ qs.set("limit", String(limit));
3698
+ result = await this.runtime.connection.request("GET", `/v1/skills/registry?${qs.toString()}`);
3699
+ break;
3700
+ }
3701
+ case "publish_skill": {
3702
+ const name = payload?.name;
3703
+ if (!name)
3704
+ throw new Error("publish_skill requires name");
3705
+ result = await this.runtime.connection.request("POST", "/v1/skills/registry", {
3706
+ name,
3707
+ description: payload?.description,
3708
+ packageType: payload?.packageType || "local",
3709
+ category: payload?.category || "prompt",
3710
+ tags: payload?.tags,
3711
+ content: payload?.content,
3712
+ githubUrl: payload?.githubUrl,
3713
+ npmPackage: payload?.npmPackage,
3714
+ version: payload?.version || "1.0.0",
3715
+ metadata: payload?.metadata,
3716
+ });
3717
+ break;
3718
+ }
3719
+ case "install_skill": {
3720
+ const skillId = payload?.skillId;
3721
+ if (!skillId)
3722
+ throw new Error("install_skill requires skillId");
3723
+ result = await this.runtime.connection.request("POST", `/v1/skills/registry/${skillId}/install`);
3724
+ break;
3725
+ }
3726
+ case "review_skill": {
3727
+ const skillId = payload?.skillId;
3728
+ const rating = payload?.rating;
3729
+ if (!skillId || !rating)
3730
+ throw new Error("review_skill requires skillId and rating");
3731
+ result = await this.runtime.connection.request("POST", `/v1/skills/registry/${skillId}/review`, {
3732
+ rating,
3733
+ review: payload?.review || payload?.content,
3734
+ });
3735
+ break;
3736
+ }
3737
+ case "update_skill": {
3738
+ const skillId = payload?.skillId;
3739
+ if (!skillId)
3740
+ throw new Error("update_skill requires skillId");
3741
+ result = await this.runtime.connection.request("PATCH", `/v1/skills/registry/${skillId}`, {
3742
+ name: payload?.name,
3743
+ description: payload?.description,
3744
+ version: payload?.version,
3745
+ tags: payload?.tags,
3746
+ content: payload?.content,
3747
+ metadata: payload?.metadata,
3748
+ });
3749
+ break;
3750
+ }
3751
+ case "trending_skills": {
3752
+ const limit = payload?.limit || 20;
3753
+ result = await this.runtime.connection.request("GET", `/v1/skills/registry/trending?limit=${limit}`);
3754
+ break;
3755
+ }
3756
+ // ── Agent Memory ────────────────────────────────────────────────
3757
+ case "store_memory": {
3758
+ const content = payload?.content || payload?.body;
3759
+ if (!content)
3760
+ throw new Error("store_memory requires content");
3761
+ result = await this.runtime.connection.request("POST", "/v1/agent-memory/store", {
3762
+ type: payload?.memoryType || payload?.type || "semantic",
3763
+ content,
3764
+ importance: payload?.importance,
3765
+ tags: payload?.tags,
3766
+ source: payload?.source,
3767
+ metadata: payload?.metadata,
3768
+ });
3769
+ break;
3770
+ }
3771
+ case "recall_memory": {
3772
+ const query = payload?.query || payload?.q;
3773
+ if (!query)
3774
+ throw new Error("recall_memory requires query");
3775
+ result = await this.runtime.connection.request("POST", "/v1/agent-memory/recall", {
3776
+ query,
3777
+ type: payload?.memoryType || payload?.type,
3778
+ limit: payload?.limit || 10,
3779
+ });
3780
+ break;
3781
+ }
3782
+ case "list_memories": {
3783
+ const memType = payload?.memoryType || payload?.type || "";
3784
+ const limit = payload?.limit || 20;
3785
+ const qs = new URLSearchParams();
3786
+ if (memType)
3787
+ qs.set("type", String(memType));
3788
+ qs.set("limit", String(limit));
3789
+ result = await this.runtime.connection.request("GET", `/v1/agent-memory/list?${qs.toString()}`);
3790
+ break;
3791
+ }
3792
+ case "memory_stats": {
3793
+ result = await this.runtime.connection.request("GET", "/v1/agent-memory/stats");
3794
+ break;
3795
+ }
3796
+ case "export_memories": {
3797
+ result = await this.runtime.connection.request("POST", "/v1/agent-memory/export");
3798
+ break;
3799
+ }
3800
+ case "import_memories": {
3801
+ const pack = payload?.pack || payload?.memories;
3802
+ if (!pack)
3803
+ throw new Error("import_memories requires pack data");
3804
+ result = await this.runtime.connection.request("POST", "/v1/agent-memory/import", { pack });
3805
+ break;
3806
+ }
3807
+ // ── Forge (Agent Deployment) ────────────────────────────────────
3808
+ case "forge_deploy": {
3809
+ const bundleId = payload?.bundleId;
3810
+ if (!bundleId)
3811
+ throw new Error("forge_deploy requires bundleId");
3812
+ const relay = await prepareSignRelay(this.runtime.connection, "/v1/prepare/forge", { bundleId, metadata: payload?.metadata });
3813
+ txHash = relay.txHash;
3814
+ break;
3815
+ }
3816
+ case "forge_spawn": {
3817
+ const parentAddress = payload?.parentAddress || payload?.parent;
3818
+ if (!parentAddress)
3819
+ throw new Error("forge_spawn requires parentAddress");
3820
+ const relay = await prepareSignRelay(this.runtime.connection, "/v1/prepare/forge/spawn", { parentAddress, metadata: payload?.metadata });
3821
+ txHash = relay.txHash;
3822
+ break;
3823
+ }
3824
+ case "forge_update_soul": {
3825
+ const agentId = payload?.agentId || payload?.forgeId;
3826
+ if (!agentId)
3827
+ throw new Error("forge_update_soul requires agentId");
3828
+ const relay = await prepareSignRelay(this.runtime.connection, `/v1/prepare/forge/${agentId}/soul`, { soulCid: payload?.soulCid, metadata: payload?.metadata });
3829
+ txHash = relay.txHash;
3830
+ break;
3831
+ }
3648
3832
  default:
3649
3833
  if (this.verbose)
3650
3834
  console.warn(`[autonomous] Unknown action: ${actionType}`);