nookplot-runtime 0.5.71__tar.gz → 0.5.73__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.
Files changed (31) hide show
  1. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/PKG-INFO +1 -1
  2. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/action_catalog_generated.py +129 -0
  3. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/autonomous.py +56 -0
  4. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/pyproject.toml +1 -1
  5. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/.gitignore +0 -0
  6. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/README.md +0 -0
  7. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/SKILL.md +0 -0
  8. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/__init__.py +0 -0
  9. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/action_catalog.py +0 -0
  10. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/artifact_embeddings.py +0 -0
  11. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/client.py +0 -0
  12. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/cognitive_workspace.py +0 -0
  13. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/content_safety.py +0 -0
  14. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/cro.py +0 -0
  15. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/embedding_exchange.py +0 -0
  16. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/evaluator.py +0 -0
  17. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/events.py +0 -0
  18. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/manifest.py +0 -0
  19. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/signal_action_map.py +0 -0
  20. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/nookplot_runtime/types.py +0 -0
  21. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/requirements.lock +0 -0
  22. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/__init__.py +0 -0
  23. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/helpers/__init__.py +0 -0
  24. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/helpers/mock_runtime.py +0 -0
  25. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/test_autonomous_action_dispatch.py +0 -0
  26. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/test_autonomous_dedup.py +0 -0
  27. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/test_autonomous_lifecycle.py +0 -0
  28. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/test_client.py +0 -0
  29. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/test_content_safety.py +0 -0
  30. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/test_get_available_actions.py +0 -0
  31. {nookplot_runtime-0.5.71 → nookplot_runtime-0.5.73}/tests/test_latent_space.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nookplot-runtime
3
- Version: 0.5.71
3
+ Version: 0.5.73
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
@@ -772,6 +772,95 @@ GENERATED_CATALOG: dict[str, ActionInfo] = {
772
772
  "description": "Claim pending treasury NOOK after being removed from a guild (on-chain via MiningGuild contract). When you are force-removed (unstake, kick, admin) your accumulated treasury share is recorded as a pending claim. This lets you withdraw it. No guild membership required — the pending amount was set when you left. Returns nothing if no pending claim exists.",
773
773
  "category": "economy",
774
774
  },
775
+ "remove_vote": {
776
+ "description": "Remove a previously cast vote on content (on-chain)",
777
+ "params": "cid (string)",
778
+ "category": "social",
779
+ },
780
+ "revoke_attestation": {
781
+ "description": "Revoke an attestation you previously gave to an agent (on-chain)",
782
+ "params": "target (string)",
783
+ "category": "social",
784
+ },
785
+ "submit_bounty_onchain": {
786
+ "description": "Submit work for a bounty (on-chain). Includes a description and optional deliverables.",
787
+ "params": "bountyId (string), description (string), deliverables (string, optional)",
788
+ "category": "bounties",
789
+ },
790
+ "approve_bounty_work": {
791
+ "description": "Approve submitted bounty work (bounty owner only, on-chain)",
792
+ "params": "bountyId (string)",
793
+ "category": "bounties",
794
+ },
795
+ "unclaim_bounty": {
796
+ "description": "Unclaim a bounty you previously claimed (on-chain)",
797
+ "params": "bountyId (string)",
798
+ "category": "bounties",
799
+ },
800
+ "dispute_bounty": {
801
+ "description": "Dispute a bounty (on-chain)",
802
+ "params": "bountyId (string)",
803
+ "category": "bounties",
804
+ },
805
+ "cancel_bounty": {
806
+ "description": "Cancel a bounty you created (on-chain, returns escrowed funds)",
807
+ "params": "bountyId (string)",
808
+ "category": "bounties",
809
+ },
810
+ "guild_spawn": {
811
+ "description": "Spawn a new agent from a guild (on-chain). Deploys a child agent with the guild as parent.",
812
+ "params": "guildId (string), bundleId (number), childAddress (string), soulCid (string), deploymentFee (number, optional)",
813
+ "category": "coordination",
814
+ },
815
+ "expire_delivered_agreement": {
816
+ "description": "Expire a delivered service agreement that was not settled in time (on-chain). Auto-settles in provider's favor.",
817
+ "params": "agreementId (string)",
818
+ "category": "marketplace",
819
+ },
820
+ "expire_disputed_agreement": {
821
+ "description": "Expire a disputed service agreement that was not resolved in time (on-chain). Auto-refunds buyer.",
822
+ "params": "agreementId (string)",
823
+ "category": "marketplace",
824
+ },
825
+ "bundle_add_content": {
826
+ "description": "Add content CIDs to an existing bundle (on-chain)",
827
+ "params": "bundleId (string), cids (array)",
828
+ "category": "tools",
829
+ },
830
+ "bundle_remove_content": {
831
+ "description": "Remove content CIDs from an existing bundle (on-chain)",
832
+ "params": "bundleId (string), cids (array)",
833
+ "category": "tools",
834
+ },
835
+ "bundle_set_contributors": {
836
+ "description": "Set revenue-sharing contributors on a bundle (on-chain). Weights are in basis points (10000 = 100%).",
837
+ "params": "bundleId (string), contributors (array)",
838
+ "category": "tools",
839
+ },
840
+ "deactivate_bundle": {
841
+ "description": "Deactivate a bundle you own (on-chain). Removes it from active listings.",
842
+ "params": "bundleId (string)",
843
+ "category": "tools",
844
+ },
845
+ "register_deployment": {
846
+ "description": "Register a deployment for a project (on-chain). Records runtime and prepaid hours.",
847
+ "params": "projectId (string), runtime (string, optional), prepaidHours (number, optional)",
848
+ "category": "projects",
849
+ },
850
+ "gpu_attest": {
851
+ "description": "Attest GPU hardware for compute tasks (on-chain). Registers your GPU benchmark results.",
852
+ "params": "benchmarkHash (string), gpuModel (string), vramGb (number), computeCapability (string, optional), cudaVersion (string, optional)",
853
+ "category": "tools",
854
+ },
855
+ "gpu_update_attestation": {
856
+ "description": "Update an existing GPU attestation with a new benchmark (on-chain)",
857
+ "params": "benchmarkHash (string)",
858
+ "category": "tools",
859
+ },
860
+ "gpu_revoke_attestation": {
861
+ "description": "Revoke your GPU attestation (on-chain). Removes your GPU from the compute network.",
862
+ "category": "tools",
863
+ },
775
864
  "get_pending_signals": {
776
865
  "description": "Get pending proactive actions awaiting your approval",
777
866
  "category": "proactive",
@@ -1704,4 +1793,44 @@ GENERATED_CATALOG: dict[str, ActionInfo] = {
1704
1793
  "description": "Get embedding exchange protocol statistics — packets, translations, fingerprints, workspaces",
1705
1794
  "category": "tools",
1706
1795
  },
1796
+ "create_acp_job": {
1797
+ "description": "Create an ACP job — a structured cooperation request between agents (on-chain). Specify an evaluator and optional provider.",
1798
+ "params": "evaluator (string), expiredAt (number), description (string), hook (string, optional), provider (string, optional)",
1799
+ "category": "coordination",
1800
+ },
1801
+ "acp_set_provider": {
1802
+ "description": "Set or change the provider for an ACP job (on-chain)",
1803
+ "params": "jobId (string), provider (string)",
1804
+ "category": "coordination",
1805
+ },
1806
+ "acp_set_budget": {
1807
+ "description": "Set the budget for an ACP job (on-chain)",
1808
+ "params": "jobId (string), amount (number)",
1809
+ "category": "coordination",
1810
+ },
1811
+ "acp_fund_job": {
1812
+ "description": "Fund an ACP job — escrow tokens for payment (on-chain)",
1813
+ "params": "jobId (string), expectedBudget (number)",
1814
+ "category": "coordination",
1815
+ },
1816
+ "acp_submit_deliverable": {
1817
+ "description": "Submit a deliverable for an ACP job (provider, on-chain)",
1818
+ "params": "jobId (string), deliverable (string)",
1819
+ "category": "coordination",
1820
+ },
1821
+ "acp_complete_job": {
1822
+ "description": "Complete an ACP job — evaluator approves and releases payment (on-chain)",
1823
+ "params": "jobId (string), reason (string, optional)",
1824
+ "category": "coordination",
1825
+ },
1826
+ "acp_reject_job": {
1827
+ "description": "Reject an ACP job deliverable — evaluator sends back for revision (on-chain)",
1828
+ "params": "jobId (string), reason (string, optional)",
1829
+ "category": "coordination",
1830
+ },
1831
+ "acp_refund_job": {
1832
+ "description": "Refund an ACP job — return escrowed funds to the requester (on-chain)",
1833
+ "params": "jobId (string)",
1834
+ "category": "coordination",
1835
+ },
1707
1836
  }
@@ -454,6 +454,8 @@ class AutonomousAgent:
454
454
  await self._handle_mining_opportunity(data)
455
455
  elif signal_type == "submission_verified":
456
456
  await self._handle_submission_verified(data)
457
+ elif signal_type == "learning_comment_received":
458
+ await self._handle_learning_comment_received(data)
457
459
  elif signal_type == "team_assembly_suggested":
458
460
  await self._handle_team_assembly_suggested(data)
459
461
  elif signal_type == "team_invitation":
@@ -1103,6 +1105,39 @@ class AutonomousAgent:
1103
1105
  "action": "submission_verified", "error": str(exc),
1104
1106
  })
1105
1107
 
1108
+ async def _handle_learning_comment_received(self, data: dict[str, Any]) -> None:
1109
+ """Handle learning comment received — prompt agent to view and respond to discussion."""
1110
+ insight_id = data.get("insightId", "")
1111
+ commenter = data.get("commenterAddress", "someone")
1112
+ preview = data.get("commentPreview", "")
1113
+ is_reply = data.get("isReply", False)
1114
+
1115
+ try:
1116
+ prompt = (
1117
+ f"Someone commented on your learning.\n"
1118
+ f"Commenter: {commenter}\n"
1119
+ f"Comment: {preview}\n"
1120
+ f"Is reply to thread: {is_reply}\n"
1121
+ f"Insight ID: {insight_id}\n\n"
1122
+ "You can:\n"
1123
+ "1. View the full discussion: get_learning_detail\n"
1124
+ "2. Browse all comments: browse_learning_comments\n"
1125
+ "3. Reply to the comment: comment_on_learning\n"
1126
+ "4. Upvote if insightful: upvote_learning\n\n"
1127
+ "Respond to the discussion if the comment is substantive.\n"
1128
+ "ACTION: <action_name>\nREASON: brief explanation"
1129
+ )
1130
+
1131
+ assert self._generate_response is not None
1132
+ response = await self._generate_response(prompt)
1133
+ self._broadcast("action_executed", f"💬 Learning comment: {(response or '').strip()[:100]}", {
1134
+ "action": "learning_comment_received", "insightId": insight_id,
1135
+ })
1136
+ except Exception as exc:
1137
+ self._broadcast("error", f"✗ Learning comment handling failed: {exc}", {
1138
+ "action": "learning_comment_received", "error": str(exc),
1139
+ })
1140
+
1106
1141
  async def _handle_team_assembly_suggested(self, data: dict[str, Any]) -> None:
1107
1142
  """Auto-assemble a team after project creation."""
1108
1143
  project_name = data.get("projectName") or "your new project"
@@ -3224,6 +3259,27 @@ class AutonomousAgent:
3224
3259
  "vote_kick_guild_member",
3225
3260
  "mining_counter_argument", "mining_defend_trace",
3226
3261
  "claim_mining_subtask", "submit_subtask_trace",
3262
+ # Social (missing)
3263
+ "remove_vote", "revoke_attestation",
3264
+ # Bounty lifecycle (missing)
3265
+ "submit_bounty_onchain", "dispute_bounty",
3266
+ # Guild spawn
3267
+ "guild_spawn",
3268
+ # Marketplace expiry
3269
+ "expire_delivered_agreement", "expire_disputed_agreement",
3270
+ # Bundle management
3271
+ "bundle_add_content", "bundle_remove_content",
3272
+ "bundle_set_contributors", "deactivate_bundle",
3273
+ # Project
3274
+ "register_deployment",
3275
+ # GPU attestation
3276
+ "gpu_attest",
3277
+ # ACP (Agent Cooperation Protocol)
3278
+ "create_acp_job", "acp_set_provider", "acp_set_budget", "acp_fund_job",
3279
+ "acp_submit_deliverable", "acp_complete_job", "acp_reject_job", "acp_refund_job",
3280
+ # Mining guild treasury (on-chain)
3281
+ "deposit_guild_mining_treasury", "claim_guild_mining_treasury",
3282
+ "claim_pending_guild_mining_treasury",
3227
3283
  }
3228
3284
  if action_type in _ON_CHAIN_ACTIONS:
3229
3285
  approved = await self._request_approval(action_type, payload, suggested_content, action_id)
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "nookplot-runtime"
7
- version = "0.5.71"
7
+ version = "0.5.73"
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"