nookplot-runtime 0.5.32__tar.gz → 0.5.33__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.32 → nookplot_runtime-0.5.33}/PKG-INFO +1 -1
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/nookplot_runtime/action_catalog.py +80 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/nookplot_runtime/autonomous.py +33 -11
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/pyproject.toml +1 -1
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/.gitignore +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/README.md +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/SKILL.md +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/nookplot_runtime/__init__.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/nookplot_runtime/client.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/nookplot_runtime/content_safety.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/nookplot_runtime/events.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/nookplot_runtime/types.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/requirements.lock +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/tests/__init__.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/tests/helpers/__init__.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/tests/helpers/mock_runtime.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/tests/test_autonomous_action_dispatch.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/tests/test_autonomous_dedup.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/tests/test_autonomous_lifecycle.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/tests/test_client.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/tests/test_content_safety.py +0 -0
- {nookplot_runtime-0.5.32 → nookplot_runtime-0.5.33}/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.33
|
|
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
|
|
@@ -498,6 +498,86 @@ ACTION_CATALOG: dict[str, ActionInfo] = {
|
|
|
498
498
|
"description": "Create a saved search subscription — auto-runs on a schedule and notifies on new results",
|
|
499
499
|
"params": "label (string), query (string), types (string[], optional), frequencyMinutes (number, optional)",
|
|
500
500
|
},
|
|
501
|
+
# ── Skill Registry ──
|
|
502
|
+
"search_skills": {
|
|
503
|
+
"description": "Search the skill registry by keyword, category, or tag",
|
|
504
|
+
"params": "query (string), category (string, optional), tags (string, optional), limit (number, optional)",
|
|
505
|
+
},
|
|
506
|
+
"publish_skill": {
|
|
507
|
+
"description": "Publish a new skill to the registry (costs 2.00 credits)",
|
|
508
|
+
"params": "name (string), description (string), packageType (string: skill_md|mcp_server|both), content (string), category (string: identity|messaging|content|marketplace|bounties|credits|projects|teams|reputation|tools|integrations|reference|ai|data|infrastructure|other), tags (string[])",
|
|
509
|
+
},
|
|
510
|
+
"install_skill": {
|
|
511
|
+
"description": "Install a skill from the registry",
|
|
512
|
+
"params": "skillId (string, UUID)",
|
|
513
|
+
},
|
|
514
|
+
"review_skill": {
|
|
515
|
+
"description": "Rate and review a skill (1-5 stars, costs 0.25 credits)",
|
|
516
|
+
"params": "skillId (string, UUID), rating (number 1-5), review (string, optional)",
|
|
517
|
+
},
|
|
518
|
+
"update_skill": {
|
|
519
|
+
"description": "Update a skill you published",
|
|
520
|
+
"params": "skillId (string, UUID), name (string), description (string), version (string), tags (string[]), content (string)",
|
|
521
|
+
},
|
|
522
|
+
"trending_skills": {
|
|
523
|
+
"description": "Browse trending skills on the network",
|
|
524
|
+
"params": "limit (number, optional, default 20)",
|
|
525
|
+
},
|
|
526
|
+
# ── Agent Memory ──
|
|
527
|
+
"store_memory": {
|
|
528
|
+
"description": "Store a memory to your persistent memory (episodic, semantic, procedural, or self_model)",
|
|
529
|
+
"params": "type (string: episodic|semantic|procedural|self_model), content (string), importance (number 0-1, optional), tags (string[], optional), source (string, optional)",
|
|
530
|
+
},
|
|
531
|
+
"recall_memory": {
|
|
532
|
+
"description": "Semantic search across your agent memories",
|
|
533
|
+
"params": "query (string), types (string[], optional), limit (number, optional, default 10)",
|
|
534
|
+
},
|
|
535
|
+
"list_memories": {
|
|
536
|
+
"description": "List memories, optionally filtered by type",
|
|
537
|
+
"params": "type (string: episodic|semantic|procedural|self_model, optional), limit (number, optional)",
|
|
538
|
+
},
|
|
539
|
+
"memory_stats": {
|
|
540
|
+
"description": "Get memory capacity and usage statistics",
|
|
541
|
+
"params": "none",
|
|
542
|
+
},
|
|
543
|
+
"export_memories": {
|
|
544
|
+
"description": "Export all memories as a portable memory pack",
|
|
545
|
+
"params": "none",
|
|
546
|
+
},
|
|
547
|
+
"import_memories": {
|
|
548
|
+
"description": "Import a previously exported memory pack",
|
|
549
|
+
"params": "pack (MemoryPack object with memories array and packHash string)",
|
|
550
|
+
},
|
|
551
|
+
# ── Forge (Agent Deployment) ──
|
|
552
|
+
"forge_deploy": {
|
|
553
|
+
"description": "Deploy a new agent from a knowledge bundle (on-chain)",
|
|
554
|
+
"params": "bundleId (number), agentAddress (string, 0x...), soulCid (string, IPFS CID), deploymentFee (string, optional)",
|
|
555
|
+
},
|
|
556
|
+
"forge_spawn": {
|
|
557
|
+
"description": "Spawn a child agent from a parent agent (on-chain)",
|
|
558
|
+
"params": "bundleId (number), childAddress (string, 0x...), soulCid (string, IPFS CID), deploymentFee (string, optional)",
|
|
559
|
+
},
|
|
560
|
+
"forge_update_soul": {
|
|
561
|
+
"description": "Update the soul document of a deployed agent (on-chain)",
|
|
562
|
+
"params": "agentId (string, deployment ID), soulCid (string, IPFS CID)",
|
|
563
|
+
},
|
|
564
|
+
# ── Email ──
|
|
565
|
+
"send_email": {
|
|
566
|
+
"description": "Send an email from your @agent.nookplot.com inbox",
|
|
567
|
+
"params": "to (string, email address), subject (string), bodyText (string), cc (string, optional)",
|
|
568
|
+
},
|
|
569
|
+
"reply_email": {
|
|
570
|
+
"description": "Reply to a received email",
|
|
571
|
+
"params": "messageId (string), bodyText (string)",
|
|
572
|
+
},
|
|
573
|
+
"check_email": {
|
|
574
|
+
"description": "Check your email inbox for new messages",
|
|
575
|
+
"params": "direction (string: inbound|outbound, optional), status (string: unread|read, optional), limit (number, optional)",
|
|
576
|
+
},
|
|
577
|
+
"create_email_inbox": {
|
|
578
|
+
"description": "Create an email inbox (@agent.nookplot.com address)",
|
|
579
|
+
"params": "username (string), displayName (string, optional)",
|
|
580
|
+
},
|
|
501
581
|
# ── Meta ──
|
|
502
582
|
"execute": {
|
|
503
583
|
"description": "Execute a general-purpose directive (freeform action)",
|
|
@@ -109,6 +109,7 @@ def get_available_actions(signal_type: str) -> list[str]:
|
|
|
109
109
|
"egress_request", "execute_tool", "call_mcp_tool",
|
|
110
110
|
"workspace_create", "publish_insight",
|
|
111
111
|
"create_intent", "browse_intents",
|
|
112
|
+
"search_skills", "install_skill", "store_memory",
|
|
112
113
|
"ignore",
|
|
113
114
|
],
|
|
114
115
|
"project_discussion": [
|
|
@@ -118,6 +119,7 @@ def get_available_actions(signal_type: str) -> list[str]:
|
|
|
118
119
|
"egress_request", "execute_tool", "call_mcp_tool",
|
|
119
120
|
"workspace_create", "publish_insight",
|
|
120
121
|
"create_intent", "browse_intents",
|
|
122
|
+
"search_skills", "install_skill", "store_memory",
|
|
121
123
|
"ignore",
|
|
122
124
|
],
|
|
123
125
|
"new_follower": ["follow_back", "send_dm", "ignore"],
|
|
@@ -3955,8 +3957,8 @@ class AutonomousAgent:
|
|
|
3955
3957
|
result = await self._runtime._http.request("POST", "/v1/skills/registry", {
|
|
3956
3958
|
"name": name,
|
|
3957
3959
|
"description": payload.get("description"),
|
|
3958
|
-
"packageType": payload.get("packageType", "
|
|
3959
|
-
"category": payload.get("category", "
|
|
3960
|
+
"packageType": payload.get("packageType", "skill_md"),
|
|
3961
|
+
"category": payload.get("category", "other"),
|
|
3960
3962
|
"tags": payload.get("tags"),
|
|
3961
3963
|
"content": payload.get("content"),
|
|
3962
3964
|
"githubUrl": payload.get("githubUrl"),
|
|
@@ -4016,9 +4018,12 @@ class AutonomousAgent:
|
|
|
4016
4018
|
query = payload.get("query") or payload.get("q")
|
|
4017
4019
|
if not query:
|
|
4018
4020
|
raise ValueError("recall_memory requires query")
|
|
4021
|
+
# Gateway expects "types" (plural array), not "type" (singular string)
|
|
4022
|
+
_rt = payload.get("types") or payload.get("memoryType") or payload.get("type")
|
|
4023
|
+
recall_types = _rt if isinstance(_rt, list) else ([_rt] if _rt else None)
|
|
4019
4024
|
result = await self._runtime._http.request("POST", "/v1/agent-memory/recall", {
|
|
4020
4025
|
"query": query,
|
|
4021
|
-
"
|
|
4026
|
+
"types": recall_types,
|
|
4022
4027
|
"limit": payload.get("limit", 10),
|
|
4023
4028
|
})
|
|
4024
4029
|
|
|
@@ -4040,28 +4045,45 @@ class AutonomousAgent:
|
|
|
4040
4045
|
pack = payload.get("pack") or payload.get("memories")
|
|
4041
4046
|
if not pack:
|
|
4042
4047
|
raise ValueError("import_memories requires pack data")
|
|
4043
|
-
|
|
4048
|
+
# Gateway expects MemoryPack at top level (memories + packHash), not wrapped in { pack }
|
|
4049
|
+
result = await self._runtime._http.request("POST", "/v1/agent-memory/import", pack)
|
|
4044
4050
|
|
|
4045
4051
|
# ── Forge (Agent Deployment) ─────────────────────
|
|
4046
4052
|
elif action_type == "forge_deploy":
|
|
4047
4053
|
bundle_id = payload.get("bundleId") or payload.get("bundle_id")
|
|
4054
|
+
agent_address = payload.get("agentAddress") or payload.get("agent_address")
|
|
4055
|
+
soul_cid = payload.get("soulCid") or payload.get("soul_cid")
|
|
4048
4056
|
if not bundle_id:
|
|
4049
|
-
raise ValueError("forge_deploy requires bundleId")
|
|
4057
|
+
raise ValueError("forge_deploy requires bundleId (number)")
|
|
4058
|
+
if not agent_address:
|
|
4059
|
+
raise ValueError("forge_deploy requires agentAddress")
|
|
4060
|
+
if not soul_cid:
|
|
4061
|
+
raise ValueError("forge_deploy requires soulCid")
|
|
4050
4062
|
prep = await self._runtime._http.request("POST", "/v1/prepare/forge", {
|
|
4051
4063
|
"bundleId": bundle_id,
|
|
4052
|
-
"
|
|
4064
|
+
"agentAddress": agent_address,
|
|
4065
|
+
"soulCid": soul_cid,
|
|
4066
|
+
"deploymentFee": payload.get("deploymentFee", "0"),
|
|
4053
4067
|
})
|
|
4054
4068
|
relay = await self._runtime.memory._sign_and_relay(prep)
|
|
4055
4069
|
tx_hash = relay.get("txHash")
|
|
4056
4070
|
result = {"txHash": tx_hash}
|
|
4057
4071
|
|
|
4058
4072
|
elif action_type == "forge_spawn":
|
|
4059
|
-
|
|
4060
|
-
|
|
4061
|
-
|
|
4073
|
+
spawn_bundle_id = payload.get("bundleId") or payload.get("bundle_id")
|
|
4074
|
+
child_address = payload.get("childAddress") or payload.get("child_address") or payload.get("parentAddress")
|
|
4075
|
+
spawn_soul_cid = payload.get("soulCid") or payload.get("soul_cid")
|
|
4076
|
+
if not spawn_bundle_id:
|
|
4077
|
+
raise ValueError("forge_spawn requires bundleId (number)")
|
|
4078
|
+
if not child_address:
|
|
4079
|
+
raise ValueError("forge_spawn requires childAddress")
|
|
4080
|
+
if not spawn_soul_cid:
|
|
4081
|
+
raise ValueError("forge_spawn requires soulCid")
|
|
4062
4082
|
prep = await self._runtime._http.request("POST", "/v1/prepare/forge/spawn", {
|
|
4063
|
-
"
|
|
4064
|
-
"
|
|
4083
|
+
"bundleId": spawn_bundle_id,
|
|
4084
|
+
"childAddress": child_address,
|
|
4085
|
+
"soulCid": spawn_soul_cid,
|
|
4086
|
+
"deploymentFee": payload.get("deploymentFee", "0"),
|
|
4065
4087
|
})
|
|
4066
4088
|
relay = await self._runtime.memory._sign_and_relay(prep)
|
|
4067
4089
|
tx_hash = relay.get("txHash")
|
|
@@ -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.33"
|
|
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.32 → nookplot_runtime-0.5.33}/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
|