nookplot-runtime 0.5.131__tar.gz → 0.5.132__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.131 → nookplot_runtime-0.5.132}/PKG-INFO +1 -1
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/client.py +14 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/pyproject.toml +1 -1
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_client.py +34 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/.gitignore +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/README.md +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/SKILL.md +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/__init__.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/action_catalog.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/action_catalog_generated.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/api_sub_categories.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/artifact_embeddings.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/autonomous.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/cognitive_workspace.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/content_safety.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/conversation/__init__.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/conversation/compaction_memory.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/conversation/conversation_log_store.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/conversation/conversation_memory.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/conversation/model_limits.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/cro.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/default_guardrails.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/doom_loop.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/embedding_exchange.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/evaluator.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/events.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/formatters.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/goal_loop.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/guardrails.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/hooks.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/knowledge_context.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/manifest.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/manifest_activation_hook.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/mining.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/profiles.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/query_segmentation.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/sandbox.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/signal_action_map.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/surplus_inference.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/types.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/usdc_budget.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/wake_up_stack.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/x402.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/requirements.lock +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/__init__.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/conversation/__init__.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/conversation/test_compaction_memory.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/helpers/__init__.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/helpers/mock_runtime.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_api_marketplace.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_api_sub_categories.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_autonomous_action_dispatch.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_autonomous_dedup.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_autonomous_doom_loop.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_autonomous_guardrails.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_autonomous_hooks.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_autonomous_lifecycle.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_autonomous_loaded_skill_refs.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_autonomous_mining_track.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_bounty_create.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_content_safety.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_doom_loop.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_economy_surplus_branch.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_external_mcp_tools.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_get_available_actions.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_goal_loop.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_guardrails.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_hooks.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_latent_space.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_manifest_activation_hook.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_mining.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_pack_gating.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_profiles.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_query_segmentation.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_sandbox.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_signal_action_map.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_surplus_inference.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_usdc_budget.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_wake_up_stack.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_workspace_opportunity.py +0 -0
- {nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_x402.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.132
|
|
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
|
|
@@ -6219,6 +6219,20 @@ class NookplotRuntime:
|
|
|
6219
6219
|
self._heartbeat_interval = heartbeat_interval_ms / 1000.0
|
|
6220
6220
|
self._rpc_url = rpc_url
|
|
6221
6221
|
|
|
6222
|
+
# Fail fast on the surplus-without-key footgun (mirrors the TS runtime +
|
|
6223
|
+
# CLI validateConfig). Surplus inference signs each x402 payment with the
|
|
6224
|
+
# agent's OWN key, so an API-key-only agent would construct fine but raise
|
|
6225
|
+
# a keyless SurplusError on the FIRST inference call — deep in the
|
|
6226
|
+
# autonomous loop, easily mistaken for an outage. Per-call
|
|
6227
|
+
# `inference_source` overrides are still validated at call time.
|
|
6228
|
+
if inference_source == "surplus" and not private_key:
|
|
6229
|
+
raise ValueError(
|
|
6230
|
+
"NookplotRuntime: inference_source is 'surplus' but no private_key was "
|
|
6231
|
+
"provided. Surplus pays per call in USDC via x402 and REQUIRES a local "
|
|
6232
|
+
"signing key. Pass private_key, or set inference_source to 'platform' to "
|
|
6233
|
+
"route inference through the gateway."
|
|
6234
|
+
)
|
|
6235
|
+
|
|
6222
6236
|
self._http = _HttpClient(
|
|
6223
6237
|
gateway_url,
|
|
6224
6238
|
api_key,
|
|
@@ -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.132"
|
|
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"
|
|
@@ -381,3 +381,37 @@ def test_inbox_message_parsing() -> None:
|
|
|
381
381
|
assert msg.from_address == "0xAAA"
|
|
382
382
|
assert msg.from_name == "Agent A"
|
|
383
383
|
assert msg.read_at is None
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
# ============================================================
|
|
387
|
+
# Constructor — surplus fail-fast guard
|
|
388
|
+
# ============================================================
|
|
389
|
+
# Mirrors the TS runtime + CLI validateConfig: inference_source="surplus"
|
|
390
|
+
# REQUIRES a local signing key, else every inference call would raise a keyless
|
|
391
|
+
# SurplusError deep in the autonomous loop (easily mistaken for an outage).
|
|
392
|
+
# Fail fast at construction instead. The call-time keyless behavior is covered
|
|
393
|
+
# in test_economy_surplus_branch.py (which builds _HttpClient directly, BELOW
|
|
394
|
+
# this top-level guard — so per-call overrides still validate at call time).
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
def test_surplus_without_private_key_raises() -> None:
|
|
398
|
+
"""inference_source='surplus' + no private_key → ValueError at construction."""
|
|
399
|
+
with pytest.raises(ValueError, match="inference_source is 'surplus'"):
|
|
400
|
+
NookplotRuntime(GATEWAY_URL, API_KEY, inference_source="surplus")
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
@pytest.mark.asyncio
|
|
404
|
+
async def test_surplus_with_private_key_constructs() -> None:
|
|
405
|
+
"""inference_source='surplus' WITH a private_key constructs fine."""
|
|
406
|
+
runtime = NookplotRuntime(
|
|
407
|
+
GATEWAY_URL, API_KEY, private_key="0x" + "ab" * 32, inference_source="surplus"
|
|
408
|
+
)
|
|
409
|
+
assert runtime._private_key is not None
|
|
410
|
+
await runtime._http.close()
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
@pytest.mark.asyncio
|
|
414
|
+
async def test_platform_without_private_key_constructs() -> None:
|
|
415
|
+
"""Default/platform source needs no key (gateway-metered / read-only agent)."""
|
|
416
|
+
runtime = NookplotRuntime(GATEWAY_URL, API_KEY, inference_source="platform")
|
|
417
|
+
await runtime._http.close()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/action_catalog_generated.py
RENAMED
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/api_sub_categories.py
RENAMED
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/artifact_embeddings.py
RENAMED
|
File without changes
|
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/cognitive_workspace.py
RENAMED
|
File without changes
|
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/conversation/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/conversation/model_limits.py
RENAMED
|
File without changes
|
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/default_guardrails.py
RENAMED
|
File without changes
|
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/embedding_exchange.py
RENAMED
|
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.131 → nookplot_runtime-0.5.132}/nookplot_runtime/manifest_activation_hook.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/nookplot_runtime/query_segmentation.py
RENAMED
|
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.131 → nookplot_runtime-0.5.132}/tests/conversation/test_compaction_memory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/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
|
{nookplot_runtime-0.5.131 → nookplot_runtime-0.5.132}/tests/test_autonomous_loaded_skill_refs.py
RENAMED
|
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.131 → nookplot_runtime-0.5.132}/tests/test_manifest_activation_hook.py
RENAMED
|
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
|