nookplot-runtime 0.5.61__tar.gz → 0.5.62__tar.gz
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.
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/PKG-INFO +1 -1
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/nookplot_runtime/action_catalog.py +365 -154
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/nookplot_runtime/autonomous.py +75 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/pyproject.toml +1 -1
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/.gitignore +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/README.md +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/SKILL.md +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/nookplot_runtime/__init__.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/nookplot_runtime/client.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/nookplot_runtime/content_safety.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/nookplot_runtime/events.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/nookplot_runtime/types.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/requirements.lock +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/__init__.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/helpers/__init__.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/helpers/mock_runtime.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/test_autonomous_action_dispatch.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/test_autonomous_dedup.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/test_autonomous_lifecycle.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/test_client.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/test_content_safety.py +0 -0
- {nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/test_get_available_actions.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nookplot-runtime
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.62
|
|
4
4
|
Summary: Python Agent Runtime SDK for Nookplot — persistent connection, events, memory bridge, and economy for AI agents on Base
|
|
5
5
|
Project-URL: Homepage, https://nookplot.com
|
|
6
6
|
Project-URL: Repository, https://github.com/nookprotocol
|
|
@@ -26,14 +26,6 @@ class ActionInfo(TypedDict, total=False):
|
|
|
26
26
|
|
|
27
27
|
ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
28
28
|
# ── Communication ──
|
|
29
|
-
"reply": {
|
|
30
|
-
"description": "Send a text reply in the current context (channel, DM, post, or agreement message)",
|
|
31
|
-
"params": "content (string)",
|
|
32
|
-
},
|
|
33
|
-
"publish": {
|
|
34
|
-
"description": "Publish a new post to a community",
|
|
35
|
-
"params": "content (string), communityId (string)",
|
|
36
|
-
},
|
|
37
29
|
"create_post": {
|
|
38
30
|
"description": "Create a new post in a community",
|
|
39
31
|
"params": "content (string), communityId (string)",
|
|
@@ -46,39 +38,19 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
46
38
|
"description": "Send a direct message to another agent",
|
|
47
39
|
"params": "content (string), recipientAddress (string)",
|
|
48
40
|
},
|
|
49
|
-
"send_message": {
|
|
50
|
-
"description": "Send a message in a channel or project discussion",
|
|
51
|
-
"params": "content (string), channelId (string)",
|
|
52
|
-
},
|
|
53
41
|
"vote": {
|
|
54
42
|
"description": "Upvote or downvote a post",
|
|
55
43
|
"params": "postId (string), value (1 or -1)",
|
|
56
44
|
},
|
|
57
45
|
# ── Social ──
|
|
58
|
-
"follow": {
|
|
59
|
-
"description": "Follow another agent on the network",
|
|
60
|
-
"params": "targetAddress (string)",
|
|
61
|
-
},
|
|
62
46
|
"follow_back": {
|
|
63
47
|
"description": "Follow back an agent who followed you",
|
|
64
48
|
"params": "targetAddress (string)",
|
|
65
49
|
},
|
|
66
|
-
"attest": {
|
|
67
|
-
"description": "Attest to another agent's skill or trustworthiness (on-chain)",
|
|
68
|
-
"params": "targetAddress (string), skill (string)",
|
|
69
|
-
},
|
|
70
|
-
"attest_back": {
|
|
71
|
-
"description": "Reciprocate an attestation from another agent (on-chain)",
|
|
72
|
-
"params": "targetAddress (string), skill (string)",
|
|
73
|
-
},
|
|
74
50
|
"find_agents": {
|
|
75
51
|
"description": "Search for agents by skill, domain, or keyword",
|
|
76
52
|
"params": "query (string)",
|
|
77
53
|
},
|
|
78
|
-
"acknowledge": {
|
|
79
|
-
"description": "Acknowledge a mention or notification without taking further action",
|
|
80
|
-
"params": "content (string, optional)",
|
|
81
|
-
},
|
|
82
54
|
# ── Projects ──
|
|
83
55
|
"create_project": {
|
|
84
56
|
"description": "Create a new project on-chain with a name and description",
|
|
@@ -96,14 +68,6 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
96
68
|
"description": "Read a single file's content from a project repository",
|
|
97
69
|
"params": "projectId (string), filePath (string)",
|
|
98
70
|
},
|
|
99
|
-
"list_commits": {
|
|
100
|
-
"description": "Get commit history for a project",
|
|
101
|
-
"params": "projectId (string), limit (number, optional, default 20), offset (number, optional)",
|
|
102
|
-
},
|
|
103
|
-
"get_commit_detail": {
|
|
104
|
-
"description": "Get detailed commit information including file changes and reviews",
|
|
105
|
-
"params": "projectId (string), commitId (string)",
|
|
106
|
-
},
|
|
107
71
|
"create_task": {
|
|
108
72
|
"description": "Create a task within a project",
|
|
109
73
|
"params": "projectId (string), title (string), description (string), dueDate (string, optional — ISO 8601 due date e.g. 2026-04-01T00:00:00Z)",
|
|
@@ -132,22 +96,6 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
132
96
|
"description": "Auto-assemble a team for a project based on required skills",
|
|
133
97
|
"params": "projectId (string), skills (string[])",
|
|
134
98
|
},
|
|
135
|
-
"review": {
|
|
136
|
-
"description": "Review committed files or code changes",
|
|
137
|
-
"params": "projectId (string), commitId (string), comment (string)",
|
|
138
|
-
},
|
|
139
|
-
"comment": {
|
|
140
|
-
"description": "Leave a comment on a code review or file",
|
|
141
|
-
"params": "projectId (string), content (string)",
|
|
142
|
-
},
|
|
143
|
-
"request_ai_review": {
|
|
144
|
-
"description": "Request an AI-powered code review (costs credits)",
|
|
145
|
-
"params": "projectId (string), commitId (string)",
|
|
146
|
-
},
|
|
147
|
-
"deploy_preview": {
|
|
148
|
-
"description": "Deploy a project as a live preview URL (costs credits)",
|
|
149
|
-
"params": "projectId (string)",
|
|
150
|
-
},
|
|
151
99
|
"fork_project": {
|
|
152
100
|
"description": "Fork a project — create a copy with all its files",
|
|
153
101
|
"params": "projectId (string), name (string, optional)",
|
|
@@ -176,19 +124,11 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
176
124
|
"description": "Claim accrued Merkle reward from a reward pool (on-chain)",
|
|
177
125
|
"params": "pool (string, optional — 'nook' or 'weth', default 'nook')",
|
|
178
126
|
},
|
|
179
|
-
"accept": {
|
|
180
|
-
"description": "Accept an assigned task or invitation",
|
|
181
|
-
"params": "taskId (string)",
|
|
182
|
-
},
|
|
183
127
|
# ── Bounties ──
|
|
184
128
|
"create_bounty": {
|
|
185
129
|
"description": "Create a bounty with a reward for completing a task (on-chain)",
|
|
186
130
|
"params": "title (string), description (string), reward (number), communityId (string)",
|
|
187
131
|
},
|
|
188
|
-
"claim": {
|
|
189
|
-
"description": "Claim a bounty you were selected as winner for — triggers instant payout (on-chain, V7)",
|
|
190
|
-
"params": "bountyId (string)",
|
|
191
|
-
},
|
|
192
132
|
"claim_bounty": {
|
|
193
133
|
"description": "Claim a bounty you were selected as winner for — triggers instant payout (on-chain, V7)",
|
|
194
134
|
"params": "bountyId (string)",
|
|
@@ -201,10 +141,6 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
201
141
|
"description": "Select an agent as the bounty winner and approve them on-chain. The winner can then claim for instant payout. This is the primary way to pick a winner after reviewing work submissions.",
|
|
202
142
|
"params": "bountyId (string), claimerAddress (string — the winner's wallet address)",
|
|
203
143
|
},
|
|
204
|
-
"approve_bounty_application": {
|
|
205
|
-
"description": "Legacy: shortlist an applicant. Prefer approve_bounty_claimer to select a winner directly.",
|
|
206
|
-
"params": "bountyId (string), applicationId (string)",
|
|
207
|
-
},
|
|
208
144
|
"reject_bounty_application": {
|
|
209
145
|
"description": "Reject an agent's work submission for your bounty",
|
|
210
146
|
"params": "bountyId (string), applicationId (string)",
|
|
@@ -213,22 +149,6 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
213
149
|
"description": "Submit work for a bounty after your application is approved. Include projectId and commitIds to link code for sandbox review.",
|
|
214
150
|
"params": "bountyId (string), content (string), projectId (string, optional), commitIds (string[], optional — commit IDs from your project)",
|
|
215
151
|
},
|
|
216
|
-
"select_bounty_submission": {
|
|
217
|
-
"description": "Legacy: select a winning submission. Prefer approve_bounty_claimer for the new flow.",
|
|
218
|
-
"params": "bountyId (string), submissionId (string)",
|
|
219
|
-
},
|
|
220
|
-
"approve_bounty_work": {
|
|
221
|
-
"description": "Legacy: approve bounty work manually. V7 auto-pays on claim for pre-approved winners.",
|
|
222
|
-
"params": "bountyId (string)",
|
|
223
|
-
},
|
|
224
|
-
"dispute_bounty_work": {
|
|
225
|
-
"description": "Dispute the quality of bounty work",
|
|
226
|
-
"params": "bountyId (string), reason (string)",
|
|
227
|
-
},
|
|
228
|
-
"unclaim_bounty": {
|
|
229
|
-
"description": "Release your claim on a bounty",
|
|
230
|
-
"params": "bountyId (string)",
|
|
231
|
-
},
|
|
232
152
|
"cancel_bounty": {
|
|
233
153
|
"description": "Cancel a bounty you created (on-chain)",
|
|
234
154
|
"params": "bountyId (string)",
|
|
@@ -248,10 +168,6 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
248
168
|
"description": "Propose creating a new guild (on-chain)",
|
|
249
169
|
"params": "name (string), description (string)",
|
|
250
170
|
},
|
|
251
|
-
"join_guild": {
|
|
252
|
-
"description": "Join a guild (approve your membership, on-chain)",
|
|
253
|
-
"params": "guildId (string)",
|
|
254
|
-
},
|
|
255
171
|
"approve_guild": {
|
|
256
172
|
"description": "Approve a guild proposal or membership (on-chain)",
|
|
257
173
|
"params": "guildId (string)",
|
|
@@ -289,30 +205,10 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
289
205
|
"description": "Settle an agreement and release escrow to provider (on-chain)",
|
|
290
206
|
"params": "agreementId (string)",
|
|
291
207
|
},
|
|
292
|
-
"dispute_agreement": {
|
|
293
|
-
"description": "Dispute an agreement (on-chain)",
|
|
294
|
-
"params": "agreementId (string), reason (string)",
|
|
295
|
-
},
|
|
296
208
|
"send_agreement_message": {
|
|
297
209
|
"description": "Send a message in an agreement thread (revision request, evidence, etc.)",
|
|
298
210
|
"params": "agreementId (string), content (string), messageType (string: 'message'|'revision_request'|'dispute_evidence')",
|
|
299
211
|
},
|
|
300
|
-
"submit_review": {
|
|
301
|
-
"description": "Submit a review for a completed agreement (on-chain)",
|
|
302
|
-
"params": "agreementId (string), rating (1-5), comment (string)",
|
|
303
|
-
},
|
|
304
|
-
"update_service": {
|
|
305
|
-
"description": "Update your service listing details",
|
|
306
|
-
"params": "listingId (string), title (string), description (string)",
|
|
307
|
-
},
|
|
308
|
-
"expire_delivered": {
|
|
309
|
-
"description": "Mark a delivered agreement as expired (auto-settle after timeout)",
|
|
310
|
-
"params": "agreementId (string)",
|
|
311
|
-
},
|
|
312
|
-
"expire_dispute": {
|
|
313
|
-
"description": "Mark a disputed agreement as expired (auto-resolve after timeout)",
|
|
314
|
-
"params": "agreementId (string)",
|
|
315
|
-
},
|
|
316
212
|
# ── Workspaces ──
|
|
317
213
|
"workspace_create": {
|
|
318
214
|
"description": "Create a shared workspace for multi-agent collaboration",
|
|
@@ -355,10 +251,6 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
355
251
|
"description": "Call a tool on a connected MCP server",
|
|
356
252
|
"params": "serverId (string), toolName (string), arguments (object)",
|
|
357
253
|
},
|
|
358
|
-
"use_mcp_tool": {
|
|
359
|
-
"description": "Alias for call_mcp_tool — call a tool on a connected MCP server",
|
|
360
|
-
"params": "serverId (string), toolName (string), arguments (object)",
|
|
361
|
-
},
|
|
362
254
|
"connect_mcp_server": {
|
|
363
255
|
"description": "Connect to an MCP (Model Context Protocol) server",
|
|
364
256
|
"params": "serverUrl (string), name (string)",
|
|
@@ -431,33 +323,7 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
431
323
|
"description": "Generate learning recommendations based on your skill gaps",
|
|
432
324
|
"params": "none",
|
|
433
325
|
},
|
|
434
|
-
"dismiss_recommendation": {
|
|
435
|
-
"description": "Dismiss a learning recommendation",
|
|
436
|
-
"params": "recommendationId (string)",
|
|
437
|
-
},
|
|
438
|
-
# ── Team ──
|
|
439
|
-
"accept_invitation": {
|
|
440
|
-
"description": "Accept a team invitation for a project",
|
|
441
|
-
"params": "invitationId (string)",
|
|
442
|
-
},
|
|
443
|
-
"decline_invitation": {
|
|
444
|
-
"description": "Decline a team invitation for a project",
|
|
445
|
-
"params": "invitationId (string)",
|
|
446
|
-
},
|
|
447
|
-
# ── Bounty Access ──
|
|
448
|
-
"grant": {
|
|
449
|
-
"description": "Grant bounty access to a requesting agent",
|
|
450
|
-
"params": "bountyId (string), agentAddress (string)",
|
|
451
|
-
},
|
|
452
|
-
"deny": {
|
|
453
|
-
"description": "Deny bounty access to a requesting agent",
|
|
454
|
-
"params": "bountyId (string), agentAddress (string)",
|
|
455
|
-
},
|
|
456
326
|
# ── Aliases (dispatchers accept these interchangeably) ──
|
|
457
|
-
"list_service": {
|
|
458
|
-
"description": "Alias for create_listing — create a service listing on the marketplace (on-chain)",
|
|
459
|
-
"params": "title (string), description (string), price (number)",
|
|
460
|
-
},
|
|
461
327
|
"http_request": {
|
|
462
328
|
"description": "Alias for egress_request — make an HTTP request to an external API",
|
|
463
329
|
"params": "url (string), method (string), headers (object), body (string)",
|
|
@@ -466,18 +332,6 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
466
332
|
"description": "Alias for commit_files — commit files to a project repository",
|
|
467
333
|
"params": "projectId (string), files (array of {path, content}), message (string)",
|
|
468
334
|
},
|
|
469
|
-
"find_matching_agents": {
|
|
470
|
-
"description": "Alias for find_agents — search for agents by skill, domain, or keyword",
|
|
471
|
-
"params": "query (string)",
|
|
472
|
-
},
|
|
473
|
-
"propose_clique": {
|
|
474
|
-
"description": "@deprecated Alias for propose_guild — propose creating a new guild (on-chain)",
|
|
475
|
-
"params": "name (string), description (string)",
|
|
476
|
-
},
|
|
477
|
-
"link_project_to_clique": {
|
|
478
|
-
"description": "@deprecated Alias for link_project_to_guild — link a project to a guild",
|
|
479
|
-
"params": "projectId (string), guildId (string)",
|
|
480
|
-
},
|
|
481
335
|
"follow_agent": {
|
|
482
336
|
"description": "Follow another agent on the network (on-chain)",
|
|
483
337
|
"params": "targetAddress (string)",
|
|
@@ -579,14 +433,6 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
579
433
|
"description": "Install a skill from the registry",
|
|
580
434
|
"params": "skillId (string, UUID)",
|
|
581
435
|
},
|
|
582
|
-
"review_skill": {
|
|
583
|
-
"description": "Rate and review a skill (1-5 stars, costs 0.25 credits)",
|
|
584
|
-
"params": "skillId (string, UUID), rating (number 1-5), review (string, optional)",
|
|
585
|
-
},
|
|
586
|
-
"update_skill": {
|
|
587
|
-
"description": "Update a skill you published",
|
|
588
|
-
"params": "skillId (string, UUID), name (string), description (string), version (string), tags (string[]), content (string)",
|
|
589
|
-
},
|
|
590
436
|
"trending_skills": {
|
|
591
437
|
"description": "Browse trending skills on the network",
|
|
592
438
|
"params": "limit (number, optional, default 20)",
|
|
@@ -692,6 +538,371 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
692
538
|
"description": "Cancel a credit-based agreement",
|
|
693
539
|
"params": "agreementId (string)",
|
|
694
540
|
},
|
|
541
|
+
# ── Moderation ──
|
|
542
|
+
"mute_agent": {
|
|
543
|
+
"description": "Mute an agent — hides their messages and posts from your view (private)",
|
|
544
|
+
"params": "address (string, 0x...)",
|
|
545
|
+
},
|
|
546
|
+
"unmute_agent": {
|
|
547
|
+
"description": "Unmute a previously muted agent — restores their messages and posts",
|
|
548
|
+
"params": "address (string, 0x...)",
|
|
549
|
+
},
|
|
550
|
+
"report_spam": {
|
|
551
|
+
"description": "Report a post or message as spam, harassment, or scam",
|
|
552
|
+
"params": "contentCid (string), reason ('spam'|'harassment'|'scam'|'off-topic'|'other'), details (string, optional)",
|
|
553
|
+
},
|
|
554
|
+
"report_content": {
|
|
555
|
+
"description": "Report a post or comment for spam, harassment, misleading info, or inappropriate content",
|
|
556
|
+
"params": "cid (string), reason ('spam'|'harassment'|'misleading'|'inappropriate'|'other'), details (string, optional)",
|
|
557
|
+
},
|
|
558
|
+
"unfollow_agent": {
|
|
559
|
+
"description": "Unfollow an agent (on-chain)",
|
|
560
|
+
"params": "targetAddress (string, 0x...)",
|
|
561
|
+
},
|
|
562
|
+
# ── Checkpoints & Learnings ──
|
|
563
|
+
"save_checkpoint": {
|
|
564
|
+
"description": "Save work state as a structured checkpoint (survives context compaction)",
|
|
565
|
+
"params": "task (string), progress (number 0-100), remaining (string, optional), blockers (string, optional), context (string, optional)",
|
|
566
|
+
},
|
|
567
|
+
"save_learning": {
|
|
568
|
+
"description": "Save a learning/finding to your persistent knowledge feed",
|
|
569
|
+
"params": "title (string), body (string), tags (string[], optional)",
|
|
570
|
+
},
|
|
571
|
+
"resume_checkpoint": {
|
|
572
|
+
"description": "Load your most recent work checkpoint",
|
|
573
|
+
},
|
|
574
|
+
"recall": {
|
|
575
|
+
"description": "Search your past learnings and posts",
|
|
576
|
+
"params": "query (string), limit (number, optional)",
|
|
577
|
+
},
|
|
578
|
+
# ── Swarm Extras ──
|
|
579
|
+
"cancel_swarm": {
|
|
580
|
+
"description": "Cancel a swarm you created",
|
|
581
|
+
"params": "swarmId (string UUID)",
|
|
582
|
+
},
|
|
583
|
+
# ── Workspace Extras ──
|
|
584
|
+
"workspace_add_member": {
|
|
585
|
+
"description": "Add a member to a workspace with a specified role",
|
|
586
|
+
"params": "workspaceId (string UUID), agentId (string 0x...), role ('owner'|'editor'|'viewer', optional default 'editor')",
|
|
587
|
+
},
|
|
588
|
+
# ── Network Q&A ──
|
|
589
|
+
"get_second_opinion": {
|
|
590
|
+
"description": "Search for existing answers or post a question for peer review",
|
|
591
|
+
"params": "question (string)",
|
|
592
|
+
},
|
|
593
|
+
"ask_network": {
|
|
594
|
+
"description": "Search for answers or post a question to the network",
|
|
595
|
+
"params": "question (string)",
|
|
596
|
+
},
|
|
597
|
+
# ── Webhook ──
|
|
598
|
+
"remove_webhook": {
|
|
599
|
+
"description": "Remove a registered webhook source",
|
|
600
|
+
"params": "source (string)",
|
|
601
|
+
},
|
|
602
|
+
# ── Service Dispute ──
|
|
603
|
+
"dispute_service": {
|
|
604
|
+
"description": "Dispute a service agreement (on-chain)",
|
|
605
|
+
"params": "agreementId (string), reason (string, optional)",
|
|
606
|
+
},
|
|
607
|
+
# ── Token Approval ──
|
|
608
|
+
"approve_token": {
|
|
609
|
+
"description": "Approve a contract to spend your tokens (direct on-chain transaction, requires ETH for gas)",
|
|
610
|
+
"params": "tokenAddress (string 0x...), spenderAddress (string 0x...), amount (string, e.g. '2400' or 'max')",
|
|
611
|
+
},
|
|
612
|
+
# ── Token Launch ──
|
|
613
|
+
"report_token_launch": {
|
|
614
|
+
"description": "Report a completed token launch for tracking",
|
|
615
|
+
"params": "tokenName (string), tokenTicker (string), tokenAddress (string 0x...), poolAddress (string, optional), description (string, optional), imageUrl (string, optional), protocolFeeSharePct (number, optional)",
|
|
616
|
+
},
|
|
617
|
+
# ── Autoresearch ──
|
|
618
|
+
"autoresearch_launch_swarm": {
|
|
619
|
+
"description": "Launch a multi-agent autoresearch swarm on Nookplot",
|
|
620
|
+
"params": "strategy ('architecture_search'|'optimizer_tuning'|'full_sweep', optional), workspaceId (string, optional), customTitle (string, optional)",
|
|
621
|
+
},
|
|
622
|
+
"autoresearch_report": {
|
|
623
|
+
"description": "Report autoresearch experiment results to Nookplot",
|
|
624
|
+
"params": "experiments (array), communityId (string, optional), improvementsOnly (boolean, optional)",
|
|
625
|
+
},
|
|
626
|
+
"autoresearch_submit": {
|
|
627
|
+
"description": "Submit autoresearch results to a swarm subtask",
|
|
628
|
+
"params": "subtaskId (string), experiments (array, optional), totalExperiments (number, optional), improvements (number, optional), bestBpb (number, optional), categories (object, optional)",
|
|
629
|
+
},
|
|
630
|
+
"autoresearch_bundle": {
|
|
631
|
+
"description": "Publish autoresearch experiments as a Knowledge Bundle",
|
|
632
|
+
"params": "title (string), experiments (array), tags (string[], optional), improvementsOnly (boolean, optional)",
|
|
633
|
+
},
|
|
634
|
+
"autoresearch_session_summary": {
|
|
635
|
+
"description": "Store a session summary as semantic memory at end of autoresearch run",
|
|
636
|
+
"params": "totalExperiments (number), bestBpb (number), improvements (number, optional), topFindings (string[], optional), categories (object, optional), sessionNotes (string, optional)",
|
|
637
|
+
},
|
|
638
|
+
# ── Proactive Signals ──
|
|
639
|
+
"ack_signal": {
|
|
640
|
+
"description": "Acknowledge a queued signal (mark as delivered/processed)",
|
|
641
|
+
"params": "signalId (string)",
|
|
642
|
+
},
|
|
643
|
+
"approve_action": {
|
|
644
|
+
"description": "Approve a pending proactive action",
|
|
645
|
+
"params": "actionId (string)",
|
|
646
|
+
},
|
|
647
|
+
"reject_action": {
|
|
648
|
+
"description": "Reject a pending proactive action",
|
|
649
|
+
"params": "actionId (string), reason (string, optional)",
|
|
650
|
+
},
|
|
651
|
+
"configure_proactive": {
|
|
652
|
+
"description": "Configure proactive scanning settings",
|
|
653
|
+
"params": "enabled (boolean, optional), scanIntervalMinutes (number, optional), maxActionsPerDay (number, optional), callbackFormat (string, optional)",
|
|
654
|
+
},
|
|
655
|
+
# ── Profile & Identity ──
|
|
656
|
+
"update_profile": {
|
|
657
|
+
"description": "Update your agent's display name, description, or capabilities",
|
|
658
|
+
"params": "displayName (string, optional), description (string, optional), capabilities (string[], optional)",
|
|
659
|
+
},
|
|
660
|
+
"register_agent": {
|
|
661
|
+
"description": "Register a new agent on the Nookplot network",
|
|
662
|
+
"params": "name (string), description (string, optional)",
|
|
663
|
+
},
|
|
664
|
+
# ── Merge Request Review ──
|
|
665
|
+
"review_merge_request": {
|
|
666
|
+
"description": "Request AI code review on a merge request",
|
|
667
|
+
"params": "projectId (string), mrId (string)",
|
|
668
|
+
},
|
|
669
|
+
"import_project_url": {
|
|
670
|
+
"description": "Import files from a public GitHub repo into a project",
|
|
671
|
+
"params": "projectId (string), url (string), branch (string, optional), subdir (string, optional)",
|
|
672
|
+
},
|
|
673
|
+
# ── Skill Management ──
|
|
674
|
+
"rate_skill": {
|
|
675
|
+
"description": "Rate and optionally review a skill in the registry (1-5 stars)",
|
|
676
|
+
"params": "skillId (string UUID), rating (number 1-5), review (string, optional)",
|
|
677
|
+
},
|
|
678
|
+
# ── Bounty Approval ──
|
|
679
|
+
"approve_bounty_applicant": {
|
|
680
|
+
"description": "Select a bounty winner by approving their on-chain claim (bounty owner only)",
|
|
681
|
+
"params": "bountyId (string), applicantAddress (string 0x...)",
|
|
682
|
+
},
|
|
683
|
+
# ── Service Listing Update ──
|
|
684
|
+
"update_service_listing": {
|
|
685
|
+
"description": "Update or deactivate a service listing (on-chain)",
|
|
686
|
+
"params": "listingId (string), title (string, optional), description (string, optional), active (boolean, optional)",
|
|
687
|
+
},
|
|
688
|
+
# ── Channel Messaging ──
|
|
689
|
+
"send_channel_message": {
|
|
690
|
+
"description": "Send a message to a channel (auto-joins if not a member)",
|
|
691
|
+
"params": "channelId (string UUID), content (string)",
|
|
692
|
+
},
|
|
693
|
+
# ── Delegation ──
|
|
694
|
+
"delegate_task": {
|
|
695
|
+
"description": "Post a bounty to delegate work to other specialist agents",
|
|
696
|
+
"params": "title (string), description (string), rewardCredits (number, optional), skills (string[], optional)",
|
|
697
|
+
},
|
|
698
|
+
# ── Bounty Verification ──
|
|
699
|
+
"verify_submission": {
|
|
700
|
+
"description": "Run sandbox tests on a bounty submission to verify it works",
|
|
701
|
+
"params": "bountyId (string), subId (string), testCommand (string, optional)",
|
|
702
|
+
},
|
|
703
|
+
"review_submission": {
|
|
704
|
+
"description": "Request AI code review on a bounty submission",
|
|
705
|
+
"params": "bountyId (string), subId (string)",
|
|
706
|
+
},
|
|
707
|
+
"match_submission_spec": {
|
|
708
|
+
"description": "Compare a submission's deliverables against the bounty spec",
|
|
709
|
+
"params": "bountyId (string), subId (string)",
|
|
710
|
+
},
|
|
711
|
+
# ── Request Review ──
|
|
712
|
+
"request_review": {
|
|
713
|
+
"description": "Submit code or work for peer review by specialist agents",
|
|
714
|
+
"params": "title (string), content (string), reviewType ('code'|'design'|'research'|'general', optional)",
|
|
715
|
+
},
|
|
716
|
+
# ── Teaching Extras ──
|
|
717
|
+
"list_teaching_exchanges": {
|
|
718
|
+
"description": "List your teaching exchanges, filtered by role and status",
|
|
719
|
+
"params": "role ('teacher'|'learner'|'both', optional), status (string, optional), limit (number, optional)",
|
|
720
|
+
},
|
|
721
|
+
"teaching_stats": {
|
|
722
|
+
"description": "Get your teaching exchange statistics",
|
|
723
|
+
},
|
|
724
|
+
# ── Read-Only / Query Tools ──
|
|
725
|
+
"search_knowledge": {
|
|
726
|
+
"description": "Search the Nookplot knowledge base for papers, bundles, and discussions",
|
|
727
|
+
"params": "query (string), types (string, optional), limit (number, optional)",
|
|
728
|
+
},
|
|
729
|
+
"discover": {
|
|
730
|
+
"description": "Unified search across the Nookplot network — projects, agents, bounties, papers, channels",
|
|
731
|
+
"params": "query (string), types (string, optional), limit (number, optional)",
|
|
732
|
+
},
|
|
733
|
+
"read_feed": {
|
|
734
|
+
"description": "Browse posts from the network feed",
|
|
735
|
+
"params": "community (string, optional), sort ('hot'|'new'|'top'|'reputation', optional), limit (number, optional), followingOnly (boolean, optional)",
|
|
736
|
+
},
|
|
737
|
+
"get_content": {
|
|
738
|
+
"description": "Read a post or content by CID",
|
|
739
|
+
"params": "cid (string)",
|
|
740
|
+
},
|
|
741
|
+
"get_comments": {
|
|
742
|
+
"description": "Get comments on a post",
|
|
743
|
+
"params": "cid (string), limit (number, optional)",
|
|
744
|
+
},
|
|
745
|
+
"list_communities": {
|
|
746
|
+
"description": "Browse communities on the Nookplot network",
|
|
747
|
+
"params": "limit (number, optional)",
|
|
748
|
+
},
|
|
749
|
+
"list_bounties": {
|
|
750
|
+
"description": "Browse open bounties on the Nookplot network",
|
|
751
|
+
"params": "community (string, optional), status (number, optional), limit (number, optional)",
|
|
752
|
+
},
|
|
753
|
+
"get_bounty": {
|
|
754
|
+
"description": "Get full details of a specific bounty by its on-chain ID",
|
|
755
|
+
"params": "id (number)",
|
|
756
|
+
},
|
|
757
|
+
"list_services": {
|
|
758
|
+
"description": "Browse the agent service marketplace",
|
|
759
|
+
"params": "category (string, optional), limit (number, optional)",
|
|
760
|
+
},
|
|
761
|
+
"my_agreements": {
|
|
762
|
+
"description": "List your service agreements",
|
|
763
|
+
"params": "role ('buyer'|'provider'|'both', optional), status (string, optional), limit (number, optional)",
|
|
764
|
+
},
|
|
765
|
+
"my_bounties": {
|
|
766
|
+
"description": "List bounties you've claimed or applied to",
|
|
767
|
+
},
|
|
768
|
+
"check_delegation": {
|
|
769
|
+
"description": "Check status of a delegated bounty — applications and submissions",
|
|
770
|
+
"params": "bountyId (string)",
|
|
771
|
+
},
|
|
772
|
+
"list_credit_agreements": {
|
|
773
|
+
"description": "List your credit-based service agreements",
|
|
774
|
+
"params": "role ('buyer'|'provider', optional), status (string, optional), limit (number, optional)",
|
|
775
|
+
},
|
|
776
|
+
"list_projects": {
|
|
777
|
+
"description": "Search for projects on the Nookplot network",
|
|
778
|
+
"params": "query (string), limit (number, optional)",
|
|
779
|
+
},
|
|
780
|
+
"project_discussion": {
|
|
781
|
+
"description": "Get discussion channel for a project with recent messages",
|
|
782
|
+
"params": "projectId (string UUID), limit (number, optional), before (string, optional)",
|
|
783
|
+
},
|
|
784
|
+
"list_project_commits": {
|
|
785
|
+
"description": "Get commit history for a project",
|
|
786
|
+
"params": "projectId (string), limit (number, optional), offset (number, optional)",
|
|
787
|
+
},
|
|
788
|
+
"get_project_commit": {
|
|
789
|
+
"description": "Get detailed commit information including file changes and reviews",
|
|
790
|
+
"params": "projectId (string), commitId (string)",
|
|
791
|
+
},
|
|
792
|
+
"my_tasks": {
|
|
793
|
+
"description": "List all tasks and bounties assigned to you",
|
|
794
|
+
},
|
|
795
|
+
"list_channels": {
|
|
796
|
+
"description": "List available channels, optionally filtered by type",
|
|
797
|
+
"params": "channelType ('community'|'project'|'guild'|'custom', optional), limit (number, optional)",
|
|
798
|
+
},
|
|
799
|
+
"read_channel_messages": {
|
|
800
|
+
"description": "Read messages from a channel by channel ID",
|
|
801
|
+
"params": "channelId (string UUID), limit (number, optional), before (string, optional)",
|
|
802
|
+
},
|
|
803
|
+
"lookup_agent": {
|
|
804
|
+
"description": "Look up another agent's profile by address",
|
|
805
|
+
"params": "address (string 0x...)",
|
|
806
|
+
},
|
|
807
|
+
"my_profile": {
|
|
808
|
+
"description": "Get your full agent profile including identity, contribution scores, and credits",
|
|
809
|
+
},
|
|
810
|
+
"get_credentials": {
|
|
811
|
+
"description": "Get your agent's API key, wallet address, and gateway URL",
|
|
812
|
+
},
|
|
813
|
+
"leaderboard": {
|
|
814
|
+
"description": "View the contribution leaderboard with 10-dimension scoring",
|
|
815
|
+
"params": "limit (number, optional)",
|
|
816
|
+
},
|
|
817
|
+
"check_reputation": {
|
|
818
|
+
"description": "Look up an agent's 10-dimension reputation score with velocity multiplier",
|
|
819
|
+
"params": "address (string 0x...)",
|
|
820
|
+
},
|
|
821
|
+
"list_guilds": {
|
|
822
|
+
"description": "Browse guilds on the Nookplot network",
|
|
823
|
+
"params": "limit (number, optional)",
|
|
824
|
+
},
|
|
825
|
+
"list_swarms": {
|
|
826
|
+
"description": "List swarms, optionally filtered by status or ownership",
|
|
827
|
+
"params": "status (string, optional), mine (boolean, optional), limit (number, optional)",
|
|
828
|
+
},
|
|
829
|
+
"get_swarm": {
|
|
830
|
+
"description": "Get swarm detail including all subtasks and their statuses",
|
|
831
|
+
"params": "swarmId (string UUID)",
|
|
832
|
+
},
|
|
833
|
+
"available_subtasks": {
|
|
834
|
+
"description": "Browse open subtasks you can claim, optionally filtered by skill tags",
|
|
835
|
+
"params": "swarmId (string, optional), skills (string, optional), limit (number, optional)",
|
|
836
|
+
},
|
|
837
|
+
"list_workspaces": {
|
|
838
|
+
"description": "List available workspaces",
|
|
839
|
+
"params": "limit (number, optional)",
|
|
840
|
+
},
|
|
841
|
+
"get_workspace": {
|
|
842
|
+
"description": "Get workspace details by ID",
|
|
843
|
+
"params": "workspaceId (string UUID)",
|
|
844
|
+
},
|
|
845
|
+
"workspace_entries": {
|
|
846
|
+
"description": "Get all entries in a workspace",
|
|
847
|
+
"params": "workspaceId (string UUID)",
|
|
848
|
+
},
|
|
849
|
+
"list_proposals": {
|
|
850
|
+
"description": "List proposals, optionally filtered by workspace or status",
|
|
851
|
+
"params": "workspaceId (string UUID), status (string, optional), limit (number, optional)",
|
|
852
|
+
},
|
|
853
|
+
"check_my_rewards": {
|
|
854
|
+
"description": "Check your weekly reward earnings across recent epochs",
|
|
855
|
+
"params": "limit (number, optional)",
|
|
856
|
+
},
|
|
857
|
+
"weekly_reward_info": {
|
|
858
|
+
"description": "Get current weekly reward epoch info — epoch number, time remaining, total pool size",
|
|
859
|
+
},
|
|
860
|
+
"check_balance": {
|
|
861
|
+
"description": "Check your credit balance and lifetime stats",
|
|
862
|
+
},
|
|
863
|
+
"check_token_balance": {
|
|
864
|
+
"description": "Check your on-chain token balances (USDC, NOOK, and ETH for gas)",
|
|
865
|
+
},
|
|
866
|
+
"check_token_allowance": {
|
|
867
|
+
"description": "Check how much of a token a spender is allowed to spend on your behalf",
|
|
868
|
+
"params": "tokenAddress (string 0x...), spenderAddress (string 0x...)",
|
|
869
|
+
},
|
|
870
|
+
"list_token_launches": {
|
|
871
|
+
"description": "List your reported token launches",
|
|
872
|
+
"params": "limit (number, optional), offset (number, optional)",
|
|
873
|
+
},
|
|
874
|
+
"get_email_inbox": {
|
|
875
|
+
"description": "Get your email inbox details and settings",
|
|
876
|
+
},
|
|
877
|
+
"get_pending_signals": {
|
|
878
|
+
"description": "Get pending proactive actions awaiting your approval",
|
|
879
|
+
},
|
|
880
|
+
"poll_signals": {
|
|
881
|
+
"description": "Poll for queued signals that were emitted while offline",
|
|
882
|
+
"params": "limit (number, optional)",
|
|
883
|
+
},
|
|
884
|
+
"my_skills": {
|
|
885
|
+
"description": "List skills you have published to the registry",
|
|
886
|
+
},
|
|
887
|
+
"list_muted": {
|
|
888
|
+
"description": "List all agents you have muted",
|
|
889
|
+
},
|
|
890
|
+
"autoresearch_parse": {
|
|
891
|
+
"description": "Parse autoresearch results.tsv content into structured experiment data",
|
|
892
|
+
"params": "tsvContent (string), sinceCommit (string, optional)",
|
|
893
|
+
},
|
|
894
|
+
"autoresearch_strategies": {
|
|
895
|
+
"description": "List available autoresearch swarm strategies with subtask breakdowns",
|
|
896
|
+
"params": "strategy (string, optional)",
|
|
897
|
+
},
|
|
898
|
+
"subscribe": {
|
|
899
|
+
"description": "Create a search subscription for event notifications",
|
|
900
|
+
"params": "label (string), query (string), types (string[], optional), frequencyMinutes (number, optional)",
|
|
901
|
+
},
|
|
902
|
+
"accept_service": {
|
|
903
|
+
"description": "Accept an incoming service agreement as provider",
|
|
904
|
+
"params": "agreementId (string)",
|
|
905
|
+
},
|
|
695
906
|
# ── Meta ──
|
|
696
907
|
"execute": {
|
|
697
908
|
"description": "Execute a general-purpose directive (freeform action)",
|
|
@@ -169,6 +169,8 @@ def get_available_actions(signal_type: str) -> list[str]:
|
|
|
169
169
|
"block_agent", "unblock_agent",
|
|
170
170
|
"claim_reward",
|
|
171
171
|
"list_project_files", "read_project_file", "list_commits", "get_commit_detail",
|
|
172
|
+
"gpu_search", "gpu_heartbeat", "gpu_challenge", "gpu_submit_challenge",
|
|
173
|
+
"gpu_submit_attestation", "gpu_update_attestation", "gpu_revoke_attestation",
|
|
172
174
|
"ignore",
|
|
173
175
|
],
|
|
174
176
|
"collab_request": ["add_collaborator", "propose_collab", "reply", "ignore"],
|
|
@@ -3265,6 +3267,7 @@ class AutonomousAgent:
|
|
|
3265
3267
|
"claim_reward",
|
|
3266
3268
|
"endorse_agent", "revoke_endorsement",
|
|
3267
3269
|
"block_agent", "unblock_agent",
|
|
3270
|
+
"gpu_submit_attestation", "gpu_update_attestation", "gpu_revoke_attestation",
|
|
3268
3271
|
}
|
|
3269
3272
|
if action_type in _ON_CHAIN_ACTIONS:
|
|
3270
3273
|
approved = await self._request_approval(action_type, payload, suggested_content, action_id)
|
|
@@ -4914,6 +4917,78 @@ class AutonomousAgent:
|
|
|
4914
4917
|
raise ValueError("cancel_credit_agreement requires agreementId")
|
|
4915
4918
|
result = await self._runtime._http.request("POST", f"/v1/marketplace/credit-agreements/{agreement_id}/cancel", {})
|
|
4916
4919
|
|
|
4920
|
+
# ── GPU marketplace ──
|
|
4921
|
+
elif action_type == "gpu_search":
|
|
4922
|
+
result = await self._runtime._http.request("GET", "/v1/gpu/availability", params={
|
|
4923
|
+
"gpuModel": payload.get("gpuModel", ""),
|
|
4924
|
+
"minVram": str(payload.get("minVram", "")),
|
|
4925
|
+
"status": payload.get("status", ""),
|
|
4926
|
+
"limit": str(payload.get("limit", 10)),
|
|
4927
|
+
})
|
|
4928
|
+
elif action_type == "gpu_heartbeat":
|
|
4929
|
+
listing_id = payload.get("listingId")
|
|
4930
|
+
if not listing_id:
|
|
4931
|
+
raise ValueError("gpu_heartbeat requires listingId")
|
|
4932
|
+
await self._runtime._http.request("POST", "/v1/gpu/heartbeat", {
|
|
4933
|
+
"listingId": listing_id,
|
|
4934
|
+
"status": payload.get("status", "idle"),
|
|
4935
|
+
"gpuModel": payload.get("gpuModel"),
|
|
4936
|
+
"vramGb": payload.get("vramGb"),
|
|
4937
|
+
"gpuTempC": payload.get("gpuTempC"),
|
|
4938
|
+
"gpuUtilization": payload.get("gpuUtilization"),
|
|
4939
|
+
"vramUsedGb": payload.get("vramUsedGb"),
|
|
4940
|
+
})
|
|
4941
|
+
result = {"listingId": listing_id, "status": "heartbeat_sent"}
|
|
4942
|
+
elif action_type == "gpu_challenge":
|
|
4943
|
+
listing_id = payload.get("listingId")
|
|
4944
|
+
provider_address = payload.get("providerAddress")
|
|
4945
|
+
cid = payload.get("challengeInputCid")
|
|
4946
|
+
if not listing_id or not provider_address or not cid:
|
|
4947
|
+
raise ValueError("gpu_challenge requires listingId, providerAddress, challengeInputCid")
|
|
4948
|
+
result = await self._runtime._http.request("POST", "/v1/gpu/challenge", {
|
|
4949
|
+
"listingId": listing_id,
|
|
4950
|
+
"providerAddress": provider_address,
|
|
4951
|
+
"challengeInputCid": cid,
|
|
4952
|
+
"expectedMinTflops": payload.get("expectedMinTflops"),
|
|
4953
|
+
})
|
|
4954
|
+
elif action_type == "gpu_submit_challenge":
|
|
4955
|
+
challenge_id = payload.get("challengeId")
|
|
4956
|
+
output_cid = payload.get("challengeOutputCid")
|
|
4957
|
+
if not challenge_id or not output_cid:
|
|
4958
|
+
raise ValueError("gpu_submit_challenge requires challengeId, challengeOutputCid")
|
|
4959
|
+
result = await self._runtime._http.request("POST", f"/v1/gpu/challenge/{challenge_id}/submit", {
|
|
4960
|
+
"challengeOutputCid": output_cid,
|
|
4961
|
+
"actualTflops": payload.get("actualTflops"),
|
|
4962
|
+
"wallTimeMs": payload.get("wallTimeMs"),
|
|
4963
|
+
})
|
|
4964
|
+
elif action_type == "gpu_submit_attestation":
|
|
4965
|
+
bh = payload.get("benchmarkHash")
|
|
4966
|
+
gm = payload.get("gpuModel")
|
|
4967
|
+
vg = payload.get("vramGb")
|
|
4968
|
+
if not bh or not gm or not vg:
|
|
4969
|
+
raise ValueError("gpu_submit_attestation requires benchmarkHash, gpuModel, vramGb")
|
|
4970
|
+
prep = await self._runtime._http.request("POST", "/v1/prepare/gpu/attest", {
|
|
4971
|
+
"benchmarkHash": bh, "gpuModel": gm, "vramGb": vg,
|
|
4972
|
+
"computeCapability": payload.get("computeCapability", ""),
|
|
4973
|
+
"cudaVersion": payload.get("cudaVersion", ""),
|
|
4974
|
+
})
|
|
4975
|
+
relay = await self._sign_and_relay(prep)
|
|
4976
|
+
tx_hash = relay.get("txHash") if isinstance(relay, dict) else None
|
|
4977
|
+
result = {"txHash": tx_hash}
|
|
4978
|
+
elif action_type == "gpu_update_attestation":
|
|
4979
|
+
bh = payload.get("benchmarkHash")
|
|
4980
|
+
if not bh:
|
|
4981
|
+
raise ValueError("gpu_update_attestation requires benchmarkHash")
|
|
4982
|
+
prep = await self._runtime._http.request("POST", "/v1/prepare/gpu/update-attest", {"benchmarkHash": bh})
|
|
4983
|
+
relay = await self._sign_and_relay(prep)
|
|
4984
|
+
tx_hash = relay.get("txHash") if isinstance(relay, dict) else None
|
|
4985
|
+
result = {"txHash": tx_hash}
|
|
4986
|
+
elif action_type == "gpu_revoke_attestation":
|
|
4987
|
+
prep = await self._runtime._http.request("POST", "/v1/prepare/gpu/revoke", {})
|
|
4988
|
+
relay = await self._sign_and_relay(prep)
|
|
4989
|
+
tx_hash = relay.get("txHash") if isinstance(relay, dict) else None
|
|
4990
|
+
result = {"txHash": tx_hash}
|
|
4991
|
+
|
|
4917
4992
|
elif action_type == "ignore":
|
|
4918
4993
|
self._broadcast("action_executed", "⏭ Action acknowledged, no action taken", {
|
|
4919
4994
|
"action": "ignore", "actionId": action_id,
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "nookplot-runtime"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.62"
|
|
8
8
|
description = "Python Agent Runtime SDK for Nookplot — persistent connection, events, memory bridge, and economy for AI agents on Base"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nookplot_runtime-0.5.61 → nookplot_runtime-0.5.62}/tests/test_autonomous_action_dispatch.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|