@nookplot/runtime 0.5.131 → 0.5.132
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.
- package/dist/__tests__/apiMarketplace.test.d.ts +2 -0
- package/dist/__tests__/apiMarketplace.test.d.ts.map +1 -0
- package/dist/__tests__/apiMarketplace.test.js +102 -0
- package/dist/__tests__/apiMarketplace.test.js.map +1 -0
- package/dist/__tests__/autonomous.actionDispatch.test.d.ts +2 -0
- package/dist/__tests__/autonomous.actionDispatch.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.actionDispatch.test.js +287 -0
- package/dist/__tests__/autonomous.actionDispatch.test.js.map +1 -0
- package/dist/__tests__/autonomous.dedup.test.d.ts +2 -0
- package/dist/__tests__/autonomous.dedup.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.dedup.test.js +125 -0
- package/dist/__tests__/autonomous.dedup.test.js.map +1 -0
- package/dist/__tests__/autonomous.doomLoop.test.d.ts +2 -0
- package/dist/__tests__/autonomous.doomLoop.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.doomLoop.test.js +126 -0
- package/dist/__tests__/autonomous.doomLoop.test.js.map +1 -0
- package/dist/__tests__/autonomous.getAvailableActions.test.d.ts +2 -0
- package/dist/__tests__/autonomous.getAvailableActions.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.getAvailableActions.test.js +233 -0
- package/dist/__tests__/autonomous.getAvailableActions.test.js.map +1 -0
- package/dist/__tests__/autonomous.guardrails.test.d.ts +2 -0
- package/dist/__tests__/autonomous.guardrails.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.guardrails.test.js +215 -0
- package/dist/__tests__/autonomous.guardrails.test.js.map +1 -0
- package/dist/__tests__/autonomous.hooks.test.d.ts +2 -0
- package/dist/__tests__/autonomous.hooks.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.hooks.test.js +107 -0
- package/dist/__tests__/autonomous.hooks.test.js.map +1 -0
- package/dist/__tests__/autonomous.latentSpace.test.d.ts +2 -0
- package/dist/__tests__/autonomous.latentSpace.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.latentSpace.test.js +224 -0
- package/dist/__tests__/autonomous.latentSpace.test.js.map +1 -0
- package/dist/__tests__/autonomous.lifecycle.test.d.ts +2 -0
- package/dist/__tests__/autonomous.lifecycle.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.lifecycle.test.js +147 -0
- package/dist/__tests__/autonomous.lifecycle.test.js.map +1 -0
- package/dist/__tests__/autonomous.loadedSkillRefs.test.d.ts +2 -0
- package/dist/__tests__/autonomous.loadedSkillRefs.test.d.ts.map +1 -0
- package/dist/__tests__/autonomous.loadedSkillRefs.test.js +150 -0
- package/dist/__tests__/autonomous.loadedSkillRefs.test.js.map +1 -0
- package/dist/__tests__/chatEngine.episodicHook.test.d.ts +2 -0
- package/dist/__tests__/chatEngine.episodicHook.test.d.ts.map +1 -0
- package/dist/__tests__/chatEngine.episodicHook.test.js +160 -0
- package/dist/__tests__/chatEngine.episodicHook.test.js.map +1 -0
- package/dist/__tests__/chatEngine.test.d.ts +2 -0
- package/dist/__tests__/chatEngine.test.d.ts.map +1 -0
- package/dist/__tests__/chatEngine.test.js +482 -0
- package/dist/__tests__/chatEngine.test.js.map +1 -0
- package/dist/__tests__/codegen-drift.test.d.ts +23 -0
- package/dist/__tests__/codegen-drift.test.d.ts.map +1 -0
- package/dist/__tests__/codegen-drift.test.js +185 -0
- package/dist/__tests__/codegen-drift.test.js.map +1 -0
- package/dist/__tests__/contentSafety.test.d.ts +2 -0
- package/dist/__tests__/contentSafety.test.d.ts.map +1 -0
- package/dist/__tests__/contentSafety.test.js +90 -0
- package/dist/__tests__/contentSafety.test.js.map +1 -0
- package/dist/__tests__/conversation/compactionMemory.test.d.ts +2 -0
- package/dist/__tests__/conversation/compactionMemory.test.d.ts.map +1 -0
- package/dist/__tests__/conversation/compactionMemory.test.js +447 -0
- package/dist/__tests__/conversation/compactionMemory.test.js.map +1 -0
- package/dist/__tests__/conversation/modelThresholdsParity.test.d.ts +2 -0
- package/dist/__tests__/conversation/modelThresholdsParity.test.d.ts.map +1 -0
- package/dist/__tests__/conversation/modelThresholdsParity.test.js +79 -0
- package/dist/__tests__/conversation/modelThresholdsParity.test.js.map +1 -0
- package/dist/__tests__/doomLoop.test.d.ts +6 -0
- package/dist/__tests__/doomLoop.test.d.ts.map +1 -0
- package/dist/__tests__/doomLoop.test.js +144 -0
- package/dist/__tests__/doomLoop.test.js.map +1 -0
- package/dist/__tests__/guardrails.test.d.ts +2 -0
- package/dist/__tests__/guardrails.test.d.ts.map +1 -0
- package/dist/__tests__/guardrails.test.js +236 -0
- package/dist/__tests__/guardrails.test.js.map +1 -0
- package/dist/__tests__/helpers/mockRuntime.d.ts +11 -0
- package/dist/__tests__/helpers/mockRuntime.d.ts.map +1 -0
- package/dist/__tests__/helpers/mockRuntime.js +146 -0
- package/dist/__tests__/helpers/mockRuntime.js.map +1 -0
- package/dist/__tests__/hooks.test.d.ts +9 -0
- package/dist/__tests__/hooks.test.d.ts.map +1 -0
- package/dist/__tests__/hooks.test.js +192 -0
- package/dist/__tests__/hooks.test.js.map +1 -0
- package/dist/__tests__/manifestActivationHook.test.d.ts +2 -0
- package/dist/__tests__/manifestActivationHook.test.d.ts.map +1 -0
- package/dist/__tests__/manifestActivationHook.test.js +312 -0
- package/dist/__tests__/manifestActivationHook.test.js.map +1 -0
- package/dist/__tests__/memory.test.d.ts +2 -0
- package/dist/__tests__/memory.test.d.ts.map +1 -0
- package/dist/__tests__/memory.test.js +192 -0
- package/dist/__tests__/memory.test.js.map +1 -0
- package/dist/__tests__/onChainActions.parity.test.d.ts +12 -0
- package/dist/__tests__/onChainActions.parity.test.d.ts.map +1 -0
- package/dist/__tests__/onChainActions.parity.test.js +104 -0
- package/dist/__tests__/onChainActions.parity.test.js.map +1 -0
- package/dist/__tests__/querySegmentation.test.d.ts +2 -0
- package/dist/__tests__/querySegmentation.test.d.ts.map +1 -0
- package/dist/__tests__/querySegmentation.test.js +187 -0
- package/dist/__tests__/querySegmentation.test.js.map +1 -0
- package/dist/__tests__/sandbox.test.d.ts +13 -0
- package/dist/__tests__/sandbox.test.d.ts.map +1 -0
- package/dist/__tests__/sandbox.test.js +413 -0
- package/dist/__tests__/sandbox.test.js.map +1 -0
- package/dist/__tests__/signing.test.d.ts +2 -0
- package/dist/__tests__/signing.test.d.ts.map +1 -0
- package/dist/__tests__/signing.test.js +260 -0
- package/dist/__tests__/signing.test.js.map +1 -0
- package/dist/__tests__/wakeUpStack.test.d.ts +2 -0
- package/dist/__tests__/wakeUpStack.test.d.ts.map +1 -0
- package/dist/__tests__/wakeUpStack.test.js +239 -0
- package/dist/__tests__/wakeUpStack.test.js.map +1 -0
- package/dist/actionCatalog.d.ts +57 -0
- package/dist/actionCatalog.d.ts.map +1 -0
- package/dist/actionCatalog.generated.d.ts +4 -0
- package/dist/actionCatalog.generated.d.ts.map +1 -0
- package/dist/actionCatalog.generated.js +2194 -0
- package/dist/actionCatalog.generated.js.map +1 -0
- package/dist/actionCatalog.js +214 -0
- package/dist/actionCatalog.js.map +1 -0
- package/dist/api-marketplace.d.ts +111 -0
- package/dist/api-marketplace.d.ts.map +1 -0
- package/dist/api-marketplace.js +154 -0
- package/dist/api-marketplace.js.map +1 -0
- package/dist/artifactEmbeddings.d.ts +69 -0
- package/dist/artifactEmbeddings.d.ts.map +1 -0
- package/dist/artifactEmbeddings.js +52 -0
- package/dist/artifactEmbeddings.js.map +1 -0
- package/dist/autonomous.d.ts +271 -0
- package/dist/autonomous.d.ts.map +1 -0
- package/dist/autonomous.js +3517 -0
- package/dist/autonomous.js.map +1 -0
- package/dist/bounties.d.ts +112 -0
- package/dist/bounties.d.ts.map +1 -0
- package/dist/bounties.js +140 -0
- package/dist/bounties.js.map +1 -0
- package/dist/bundles.d.ts +174 -0
- package/dist/bundles.d.ts.map +1 -0
- package/dist/bundles.js +208 -0
- package/dist/bundles.js.map +1 -0
- package/dist/channels.d.ts +131 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +227 -0
- package/dist/channels.js.map +1 -0
- package/dist/chat/chatEngine.d.ts +138 -0
- package/dist/chat/chatEngine.d.ts.map +1 -0
- package/dist/chat/chatEngine.js +613 -0
- package/dist/chat/chatEngine.js.map +1 -0
- package/dist/chat/index.d.ts +30 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +29 -0
- package/dist/chat/index.js.map +1 -0
- package/dist/chat/terminal.d.ts +19 -0
- package/dist/chat/terminal.d.ts.map +1 -0
- package/dist/chat/terminal.js +17 -0
- package/dist/chat/terminal.js.map +1 -0
- package/dist/chat/terminals/discordTerminal.d.ts +22 -0
- package/dist/chat/terminals/discordTerminal.d.ts.map +1 -0
- package/dist/chat/terminals/discordTerminal.js +132 -0
- package/dist/chat/terminals/discordTerminal.js.map +1 -0
- package/dist/chat/terminals/openclawTerminal.d.ts +43 -0
- package/dist/chat/terminals/openclawTerminal.d.ts.map +1 -0
- package/dist/chat/terminals/openclawTerminal.js +186 -0
- package/dist/chat/terminals/openclawTerminal.js.map +1 -0
- package/dist/chat/terminals/stdinTerminal.d.ts +18 -0
- package/dist/chat/terminals/stdinTerminal.d.ts.map +1 -0
- package/dist/chat/terminals/stdinTerminal.js +58 -0
- package/dist/chat/terminals/stdinTerminal.js.map +1 -0
- package/dist/chat/terminals/telegramTerminal.d.ts +27 -0
- package/dist/chat/terminals/telegramTerminal.d.ts.map +1 -0
- package/dist/chat/terminals/telegramTerminal.js +123 -0
- package/dist/chat/terminals/telegramTerminal.js.map +1 -0
- package/dist/cognitiveWorkspace.d.ts +107 -0
- package/dist/cognitiveWorkspace.d.ts.map +1 -0
- package/dist/cognitiveWorkspace.js +94 -0
- package/dist/cognitiveWorkspace.js.map +1 -0
- package/dist/communities.d.ts +40 -0
- package/dist/communities.d.ts.map +1 -0
- package/dist/communities.js +53 -0
- package/dist/communities.js.map +1 -0
- package/dist/connection.d.ts +90 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +429 -0
- package/dist/connection.js.map +1 -0
- package/dist/contentSafety.d.ts +64 -0
- package/dist/contentSafety.d.ts.map +1 -0
- package/dist/contentSafety.js +119 -0
- package/dist/contentSafety.js.map +1 -0
- package/dist/conversation/compactionMemory.d.ts +124 -0
- package/dist/conversation/compactionMemory.d.ts.map +1 -0
- package/dist/conversation/compactionMemory.js +379 -0
- package/dist/conversation/compactionMemory.js.map +1 -0
- package/dist/conversation/conversationLogStore.d.ts +111 -0
- package/dist/conversation/conversationLogStore.d.ts.map +1 -0
- package/dist/conversation/conversationLogStore.js +248 -0
- package/dist/conversation/conversationLogStore.js.map +1 -0
- package/dist/conversation/conversationMemory.d.ts +59 -0
- package/dist/conversation/conversationMemory.d.ts.map +1 -0
- package/dist/conversation/conversationMemory.js +32 -0
- package/dist/conversation/conversationMemory.js.map +1 -0
- package/dist/conversation/index.d.ts +16 -0
- package/dist/conversation/index.d.ts.map +1 -0
- package/dist/conversation/index.js +5 -0
- package/dist/conversation/index.js.map +1 -0
- package/dist/conversation/modelLimits.d.ts +43 -0
- package/dist/conversation/modelLimits.d.ts.map +1 -0
- package/dist/conversation/modelLimits.js +67 -0
- package/dist/conversation/modelLimits.js.map +1 -0
- package/dist/cro.d.ts +243 -0
- package/dist/cro.d.ts.map +1 -0
- package/dist/cro.js +263 -0
- package/dist/cro.js.map +1 -0
- package/dist/defaultGuardrails.d.ts +21 -0
- package/dist/defaultGuardrails.d.ts.map +1 -0
- package/dist/defaultGuardrails.js +90 -0
- package/dist/defaultGuardrails.js.map +1 -0
- package/dist/delegations.d.ts +63 -0
- package/dist/delegations.d.ts.map +1 -0
- package/dist/delegations.js +41 -0
- package/dist/delegations.js.map +1 -0
- package/dist/discovery.d.ts +172 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +300 -0
- package/dist/discovery.js.map +1 -0
- package/dist/doomLoop.d.ts +52 -0
- package/dist/doomLoop.d.ts.map +1 -0
- package/dist/doomLoop.js +173 -0
- package/dist/doomLoop.js.map +1 -0
- package/dist/economy.d.ts +244 -0
- package/dist/economy.d.ts.map +1 -0
- package/dist/economy.js +263 -0
- package/dist/economy.js.map +1 -0
- package/dist/email.d.ts +125 -0
- package/dist/email.d.ts.map +1 -0
- package/dist/email.js +91 -0
- package/dist/email.js.map +1 -0
- package/dist/embeddingExchange.d.ts +141 -0
- package/dist/embeddingExchange.d.ts.map +1 -0
- package/dist/embeddingExchange.js +95 -0
- package/dist/embeddingExchange.js.map +1 -0
- package/dist/episodicMemoryHook.d.ts +39 -0
- package/dist/episodicMemoryHook.d.ts.map +1 -0
- package/dist/episodicMemoryHook.js +58 -0
- package/dist/episodicMemoryHook.js.map +1 -0
- package/dist/evaluator.d.ts +113 -0
- package/dist/evaluator.d.ts.map +1 -0
- package/dist/evaluator.js +144 -0
- package/dist/evaluator.js.map +1 -0
- package/dist/events.d.ts +58 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +86 -0
- package/dist/events.js.map +1 -0
- package/dist/formatters.d.ts +31 -0
- package/dist/formatters.d.ts.map +1 -0
- package/dist/formatters.js +227 -0
- package/dist/formatters.js.map +1 -0
- package/dist/gpu.d.ts +137 -0
- package/dist/gpu.d.ts.map +1 -0
- package/dist/gpu.js +166 -0
- package/dist/gpu.js.map +1 -0
- package/dist/guardrails.d.ts +182 -0
- package/dist/guardrails.d.ts.map +1 -0
- package/dist/guardrails.js +277 -0
- package/dist/guardrails.js.map +1 -0
- package/dist/guilds.d.ts +158 -0
- package/dist/guilds.d.ts.map +1 -0
- package/dist/guilds.js +205 -0
- package/dist/guilds.js.map +1 -0
- package/dist/heartbeat.d.ts +43 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +72 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/hooks.d.ts +172 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +91 -0
- package/dist/hooks.js.map +1 -0
- package/dist/identity.d.ts +61 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +76 -0
- package/dist/identity.js.map +1 -0
- package/dist/inbox.d.ts +77 -0
- package/dist/inbox.d.ts.map +1 -0
- package/dist/inbox.js +98 -0
- package/dist/inbox.js.map +1 -0
- package/dist/index.d.ts +321 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +361 -0
- package/dist/index.js.map +1 -0
- package/dist/insights.d.ts +166 -0
- package/dist/insights.d.ts.map +1 -0
- package/dist/insights.js +100 -0
- package/dist/insights.js.map +1 -0
- package/dist/intents.d.ts +132 -0
- package/dist/intents.d.ts.map +1 -0
- package/dist/intents.js +81 -0
- package/dist/intents.js.map +1 -0
- package/dist/knowledgeContext.d.ts +68 -0
- package/dist/knowledgeContext.d.ts.map +1 -0
- package/dist/knowledgeContext.js +109 -0
- package/dist/knowledgeContext.js.map +1 -0
- package/dist/leaderboard.d.ts +30 -0
- package/dist/leaderboard.d.ts.map +1 -0
- package/dist/leaderboard.js +34 -0
- package/dist/leaderboard.js.map +1 -0
- package/dist/manifest.d.ts +127 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +123 -0
- package/dist/manifest.js.map +1 -0
- package/dist/manifestActivationHook.d.ts +72 -0
- package/dist/manifestActivationHook.d.ts.map +1 -0
- package/dist/manifestActivationHook.js +180 -0
- package/dist/manifestActivationHook.js.map +1 -0
- package/dist/marketplace.d.ts +156 -0
- package/dist/marketplace.d.ts.map +1 -0
- package/dist/marketplace.js +215 -0
- package/dist/marketplace.js.map +1 -0
- package/dist/matching.d.ts +192 -0
- package/dist/matching.d.ts.map +1 -0
- package/dist/matching.js +138 -0
- package/dist/matching.js.map +1 -0
- package/dist/memory.d.ts +287 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +379 -0
- package/dist/memory.js.map +1 -0
- package/dist/mining.d.ts +155 -0
- package/dist/mining.d.ts.map +1 -0
- package/dist/mining.js +365 -0
- package/dist/mining.js.map +1 -0
- package/dist/oracle.d.ts +30 -0
- package/dist/oracle.d.ts.map +1 -0
- package/dist/oracle.js +31 -0
- package/dist/oracle.js.map +1 -0
- package/dist/policies.d.ts +132 -0
- package/dist/policies.d.ts.map +1 -0
- package/dist/policies.js +62 -0
- package/dist/policies.js.map +1 -0
- package/dist/proactive.d.ts +197 -0
- package/dist/proactive.d.ts.map +1 -0
- package/dist/proactive.js +229 -0
- package/dist/proactive.js.map +1 -0
- package/dist/projects.d.ts +307 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +438 -0
- package/dist/projects.js.map +1 -0
- package/dist/querySegmentation.d.ts +54 -0
- package/dist/querySegmentation.d.ts.map +1 -0
- package/dist/querySegmentation.js +80 -0
- package/dist/querySegmentation.js.map +1 -0
- package/dist/sandbox.d.ts +156 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +425 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/signalActionMap.d.ts +59 -0
- package/dist/signalActionMap.d.ts.map +1 -0
- package/dist/signalActionMap.js +305 -0
- package/dist/signalActionMap.js.map +1 -0
- package/dist/signing.d.ts +94 -0
- package/dist/signing.d.ts.map +1 -0
- package/dist/signing.js +158 -0
- package/dist/signing.js.map +1 -0
- package/dist/social.d.ts +176 -0
- package/dist/social.d.ts.map +1 -0
- package/dist/social.js +232 -0
- package/dist/social.js.map +1 -0
- package/dist/specialization.d.ts +108 -0
- package/dist/specialization.d.ts.map +1 -0
- package/dist/specialization.js +104 -0
- package/dist/specialization.js.map +1 -0
- package/dist/swarms.d.ts +106 -0
- package/dist/swarms.d.ts.map +1 -0
- package/dist/swarms.js +99 -0
- package/dist/swarms.js.map +1 -0
- package/dist/teaching.d.ts +171 -0
- package/dist/teaching.d.ts.map +1 -0
- package/dist/teaching.js +87 -0
- package/dist/teaching.js.map +1 -0
- package/dist/tools.d.ts +223 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +325 -0
- package/dist/tools.js.map +1 -0
- package/dist/treasury-ops.d.ts +101 -0
- package/dist/treasury-ops.d.ts.map +1 -0
- package/dist/treasury-ops.js +59 -0
- package/dist/treasury-ops.js.map +1 -0
- package/dist/types.d.ts +1193 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/wakeUpStack.d.ts +94 -0
- package/dist/wakeUpStack.d.ts.map +1 -0
- package/dist/wakeUpStack.js +215 -0
- package/dist/wakeUpStack.js.map +1 -0
- package/dist/workspace.d.ts +318 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +207 -0
- package/dist/workspace.js.map +1 -0
- package/dist/xmtp.d.ts +85 -0
- package/dist/xmtp.d.ts.map +1 -0
- package/dist/xmtp.js +250 -0
- package/dist/xmtp.js.map +1 -0
- package/package.json +1 -1
package/dist/doomLoop.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Doom-loop detector — catches stuck agents that call the same tool with
|
|
3
|
+
* the same args 3+ times, or cycle through an `A,B,A,B`-style pattern.
|
|
4
|
+
*
|
|
5
|
+
* TypeScript parity with `runtime-py/nookplot_runtime/doom_loop.py`.
|
|
6
|
+
*
|
|
7
|
+
* Consumer-agnostic: callers pass either a list of OpenAI/litellm-shaped
|
|
8
|
+
* messages (`{role, tool_calls: [{function: {name, arguments}}]}`) or a
|
|
9
|
+
* pre-extracted list of `ToolCallSignature` values.
|
|
10
|
+
*
|
|
11
|
+
* The primary entry point is {@link checkForDoomLoop}. The goal loop uses
|
|
12
|
+
* {@link checkForDoomLoopFromSignatures} directly since it tracks action
|
|
13
|
+
* decisions, not raw LLM messages.
|
|
14
|
+
*
|
|
15
|
+
* Returned value is the offending tool name (string) or `null`. For repeating
|
|
16
|
+
* patterns, the first tool in the repeating unit is returned.
|
|
17
|
+
*
|
|
18
|
+
* @module doomLoop
|
|
19
|
+
*/
|
|
20
|
+
import { createHash } from "node:crypto";
|
|
21
|
+
export const DEFAULT_LOOKBACK = 30;
|
|
22
|
+
export const IDENTICAL_THRESHOLD = 3;
|
|
23
|
+
export const MIN_PATTERN_LEN = 2;
|
|
24
|
+
export const MAX_PATTERN_LEN = 5;
|
|
25
|
+
export const MIN_PATTERN_REPS = 2;
|
|
26
|
+
function stableStringify(value) {
|
|
27
|
+
const replacer = (_key, v) => {
|
|
28
|
+
if (v && typeof v === "object" && !Array.isArray(v)) {
|
|
29
|
+
const sorted = {};
|
|
30
|
+
for (const k of Object.keys(v).sort()) {
|
|
31
|
+
sorted[k] = v[k];
|
|
32
|
+
}
|
|
33
|
+
return sorted;
|
|
34
|
+
}
|
|
35
|
+
return v;
|
|
36
|
+
};
|
|
37
|
+
return JSON.stringify(value, replacer);
|
|
38
|
+
}
|
|
39
|
+
function hashArgs(args) {
|
|
40
|
+
let payload;
|
|
41
|
+
if (typeof args === "string") {
|
|
42
|
+
payload = args;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
try {
|
|
46
|
+
payload = stableStringify(args);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
payload = String(args);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return createHash("md5").update(payload).digest("hex").slice(0, 12);
|
|
53
|
+
}
|
|
54
|
+
function get(obj, key) {
|
|
55
|
+
if (obj === null || obj === undefined)
|
|
56
|
+
return undefined;
|
|
57
|
+
if (typeof obj !== "object")
|
|
58
|
+
return undefined;
|
|
59
|
+
return obj[key];
|
|
60
|
+
}
|
|
61
|
+
function sigEquals(a, b) {
|
|
62
|
+
return a.name === b.name && a.argsHash === b.argsHash;
|
|
63
|
+
}
|
|
64
|
+
function sliceEquals(a, b) {
|
|
65
|
+
if (a.length !== b.length)
|
|
66
|
+
return false;
|
|
67
|
+
for (let i = 0; i < a.length; i++) {
|
|
68
|
+
if (!sigEquals(a[i], b[i]))
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Pull tool-call signatures out of the last `lookback` assistant messages.
|
|
75
|
+
* Non-assistant messages and messages without `tool_calls` are skipped.
|
|
76
|
+
*/
|
|
77
|
+
export function extractRecentToolSignatures(messages, lookback = DEFAULT_LOOKBACK) {
|
|
78
|
+
const recent = messages.length > lookback ? messages.slice(-lookback) : messages;
|
|
79
|
+
const signatures = [];
|
|
80
|
+
for (const msg of recent) {
|
|
81
|
+
if (get(msg, "role") !== "assistant")
|
|
82
|
+
continue;
|
|
83
|
+
const toolCalls = get(msg, "tool_calls");
|
|
84
|
+
if (!Array.isArray(toolCalls) || toolCalls.length === 0)
|
|
85
|
+
continue;
|
|
86
|
+
for (const tc of toolCalls) {
|
|
87
|
+
const fn = get(tc, "function");
|
|
88
|
+
if (fn === undefined || fn === null)
|
|
89
|
+
continue;
|
|
90
|
+
const name = get(fn, "name");
|
|
91
|
+
if (typeof name !== "string" || name.length === 0)
|
|
92
|
+
continue;
|
|
93
|
+
const args = get(fn, "arguments") ?? "";
|
|
94
|
+
signatures.push({ name, argsHash: hashArgs(args) });
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return signatures;
|
|
98
|
+
}
|
|
99
|
+
/** Return the tool name if `threshold` or more identical consecutive calls exist. */
|
|
100
|
+
export function detectIdenticalConsecutive(signatures, threshold = IDENTICAL_THRESHOLD) {
|
|
101
|
+
if (signatures.length < threshold)
|
|
102
|
+
return null;
|
|
103
|
+
let count = 1;
|
|
104
|
+
for (let i = 1; i < signatures.length; i++) {
|
|
105
|
+
if (sigEquals(signatures[i], signatures[i - 1])) {
|
|
106
|
+
count++;
|
|
107
|
+
if (count >= threshold)
|
|
108
|
+
return signatures[i].name;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
count = 1;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Detect an `[A,B]`-style repeating unit at the tail with 2+ repetitions.
|
|
118
|
+
* Scans unit lengths from 2 to 5. The smallest matching pattern wins.
|
|
119
|
+
*/
|
|
120
|
+
export function detectRepeatingSequence(signatures) {
|
|
121
|
+
const n = signatures.length;
|
|
122
|
+
for (let seqLen = MIN_PATTERN_LEN; seqLen <= MAX_PATTERN_LEN; seqLen++) {
|
|
123
|
+
const minRequired = seqLen * MIN_PATTERN_REPS;
|
|
124
|
+
if (n < minRequired)
|
|
125
|
+
continue;
|
|
126
|
+
const tail = signatures.slice(-minRequired);
|
|
127
|
+
const pattern = tail.slice(0, seqLen);
|
|
128
|
+
let reps = 0;
|
|
129
|
+
for (let start = n - seqLen; start >= 0; start -= seqLen) {
|
|
130
|
+
const chunk = signatures.slice(start, start + seqLen);
|
|
131
|
+
if (sliceEquals(chunk, pattern)) {
|
|
132
|
+
reps++;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (reps >= MIN_PATTERN_REPS)
|
|
139
|
+
return pattern;
|
|
140
|
+
}
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
/** Return the offending tool name, or `null` if no doom loop is present. */
|
|
144
|
+
export function checkForDoomLoopFromSignatures(signatures) {
|
|
145
|
+
if (signatures.length < IDENTICAL_THRESHOLD)
|
|
146
|
+
return null;
|
|
147
|
+
const offender = detectIdenticalConsecutive(signatures, IDENTICAL_THRESHOLD);
|
|
148
|
+
if (offender)
|
|
149
|
+
return offender;
|
|
150
|
+
const pattern = detectRepeatingSequence(signatures);
|
|
151
|
+
if (pattern)
|
|
152
|
+
return pattern[0].name;
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Check recent messages for a doom loop.
|
|
157
|
+
* Returns the offending tool name, or `null` if no loop is detected.
|
|
158
|
+
*/
|
|
159
|
+
export function checkForDoomLoop(messages, lookback = DEFAULT_LOOKBACK) {
|
|
160
|
+
const signatures = extractRecentToolSignatures(messages, lookback);
|
|
161
|
+
return checkForDoomLoopFromSignatures(signatures);
|
|
162
|
+
}
|
|
163
|
+
/** Compose the system-inject message used after a doom loop is detected. */
|
|
164
|
+
export function buildCorrectivePrompt(offender) {
|
|
165
|
+
return (`⚠ Doom loop detected on '${offender}'. Change approach: either use a ` +
|
|
166
|
+
`DIFFERENT tool, or if you must use '${offender}', call it with meaningfully ` +
|
|
167
|
+
`different args. Otherwise declare noop or needs_capability.`);
|
|
168
|
+
}
|
|
169
|
+
/** Helper for callers that build their own signature list: hash args and construct. */
|
|
170
|
+
export function makeSignature(name, args) {
|
|
171
|
+
return { name, argsHash: hashArgs(args) };
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=doomLoop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doomLoop.js","sourceRoot":"","sources":["../src/doomLoop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Economy manager for the Nookplot Agent Runtime SDK.
|
|
3
|
+
*
|
|
4
|
+
* Provides a unified view of an agent's economic position —
|
|
5
|
+
* credits, revenue, BYOK keys, and inference access. Wraps
|
|
6
|
+
* existing gateway endpoints without adding new server-side logic.
|
|
7
|
+
*
|
|
8
|
+
* @module economy
|
|
9
|
+
*/
|
|
10
|
+
import type { ConnectionManager } from "./connection.js";
|
|
11
|
+
import type { BalanceInfo, CreditPack, InferenceMessage, InferenceOptions, InferenceResult, UsageSummary, RevenueConfig, EarningsSummary } from "./types.js";
|
|
12
|
+
export declare class EconomyManager {
|
|
13
|
+
private readonly connection;
|
|
14
|
+
constructor(connection: ConnectionManager);
|
|
15
|
+
/**
|
|
16
|
+
* Get the unified balance — credits + claimable revenue.
|
|
17
|
+
*/
|
|
18
|
+
getBalance(): Promise<BalanceInfo>;
|
|
19
|
+
/**
|
|
20
|
+
* Get available credit packs for purchase.
|
|
21
|
+
*
|
|
22
|
+
* Returns pack definitions with USDC prices and credit amounts.
|
|
23
|
+
* No authentication required.
|
|
24
|
+
*/
|
|
25
|
+
getAvailablePacks(): Promise<CreditPack[]>;
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Top-up has been replaced by on-chain credit pack purchases.
|
|
28
|
+
* Use {@link getAvailablePacks} to view packs and purchase via the
|
|
29
|
+
* CreditPurchase smart contract.
|
|
30
|
+
*/
|
|
31
|
+
topUpCredits(_amount: number): Promise<{
|
|
32
|
+
balance: number;
|
|
33
|
+
}>;
|
|
34
|
+
/**
|
|
35
|
+
* Get usage summary for a time period.
|
|
36
|
+
*
|
|
37
|
+
* @param days - Number of days to look back (default: 30).
|
|
38
|
+
*/
|
|
39
|
+
getUsage(days?: number): Promise<UsageSummary>;
|
|
40
|
+
/**
|
|
41
|
+
* Get credit transaction history.
|
|
42
|
+
*
|
|
43
|
+
* @param limit - Max transactions to return.
|
|
44
|
+
* @param offset - Pagination offset.
|
|
45
|
+
*/
|
|
46
|
+
getTransactions(limit?: number, offset?: number): Promise<{
|
|
47
|
+
transactions: Array<Record<string, unknown>>;
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
* Set auto-convert percentage (revenue → credits).
|
|
51
|
+
*
|
|
52
|
+
* @param percentage - Percentage of revenue to auto-convert (0-100).
|
|
53
|
+
*/
|
|
54
|
+
setAutoConvert(percentage: number): Promise<{
|
|
55
|
+
success: boolean;
|
|
56
|
+
}>;
|
|
57
|
+
/**
|
|
58
|
+
* Make an LLM inference call using credits.
|
|
59
|
+
*
|
|
60
|
+
* @param messages - Conversation messages.
|
|
61
|
+
* @param options - Model, provider, temperature, etc.
|
|
62
|
+
*/
|
|
63
|
+
inference(messages: InferenceMessage[], options?: InferenceOptions): Promise<InferenceResult>;
|
|
64
|
+
/**
|
|
65
|
+
* Make a streaming LLM inference call (SSE).
|
|
66
|
+
*
|
|
67
|
+
* Returns the full response after streaming completes.
|
|
68
|
+
* For true streaming, use the connection's HTTP client directly.
|
|
69
|
+
*
|
|
70
|
+
* @param messages - Conversation messages.
|
|
71
|
+
* @param options - Model, provider, temperature, etc.
|
|
72
|
+
*/
|
|
73
|
+
inferenceStream(messages: InferenceMessage[], options?: InferenceOptions): Promise<InferenceResult>;
|
|
74
|
+
/**
|
|
75
|
+
* List available inference models.
|
|
76
|
+
*/
|
|
77
|
+
getModels(): Promise<{
|
|
78
|
+
models: Array<{
|
|
79
|
+
id: string;
|
|
80
|
+
provider: string;
|
|
81
|
+
name: string;
|
|
82
|
+
}>;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Get inference call history.
|
|
86
|
+
*
|
|
87
|
+
* @param limit - Max entries to return.
|
|
88
|
+
* @param offset - Pagination offset.
|
|
89
|
+
*/
|
|
90
|
+
getInferenceHistory(limit?: number, offset?: number): Promise<{
|
|
91
|
+
entries: Array<Record<string, unknown>>;
|
|
92
|
+
}>;
|
|
93
|
+
/**
|
|
94
|
+
* Store a BYOK API key for a provider.
|
|
95
|
+
*
|
|
96
|
+
* @param provider - Provider name (e.g., "anthropic", "openai").
|
|
97
|
+
* @param apiKey - The API key to store (encrypted at rest).
|
|
98
|
+
*/
|
|
99
|
+
storeApiKey(provider: string, apiKey: string): Promise<{
|
|
100
|
+
success: boolean;
|
|
101
|
+
}>;
|
|
102
|
+
/**
|
|
103
|
+
* Remove a stored BYOK API key.
|
|
104
|
+
*
|
|
105
|
+
* @param provider - Provider name to remove.
|
|
106
|
+
*/
|
|
107
|
+
removeApiKey(provider: string): Promise<{
|
|
108
|
+
success: boolean;
|
|
109
|
+
}>;
|
|
110
|
+
/**
|
|
111
|
+
* List stored BYOK providers.
|
|
112
|
+
*/
|
|
113
|
+
listApiKeys(): Promise<{
|
|
114
|
+
providers: string[];
|
|
115
|
+
}>;
|
|
116
|
+
/**
|
|
117
|
+
* Claim earned revenue.
|
|
118
|
+
*/
|
|
119
|
+
claimEarnings(): Promise<{
|
|
120
|
+
claimed: number;
|
|
121
|
+
txHash?: string;
|
|
122
|
+
}>;
|
|
123
|
+
/**
|
|
124
|
+
* Get earnings summary.
|
|
125
|
+
*/
|
|
126
|
+
getEarnings(): Promise<EarningsSummary>;
|
|
127
|
+
/**
|
|
128
|
+
* Get revenue share configuration.
|
|
129
|
+
*/
|
|
130
|
+
getRevenueConfig(): Promise<RevenueConfig>;
|
|
131
|
+
/**
|
|
132
|
+
* Set revenue share configuration.
|
|
133
|
+
*
|
|
134
|
+
* @param config - Revenue share percentages.
|
|
135
|
+
*/
|
|
136
|
+
setRevenueConfig(config: Partial<RevenueConfig>): Promise<{
|
|
137
|
+
success: boolean;
|
|
138
|
+
}>;
|
|
139
|
+
/**
|
|
140
|
+
* Get distribution history.
|
|
141
|
+
*
|
|
142
|
+
* @param limit - Max entries to return.
|
|
143
|
+
*/
|
|
144
|
+
getDistributionHistory(limit?: number): Promise<{
|
|
145
|
+
history: Array<Record<string, unknown>>;
|
|
146
|
+
}>;
|
|
147
|
+
/**
|
|
148
|
+
* Check weekly reward earnings across recent epochs.
|
|
149
|
+
*
|
|
150
|
+
* Returns score, tier, reward amount, and whether each epoch's reward
|
|
151
|
+
* has been claimed. Use this to decide if you should call claim_reward.
|
|
152
|
+
*
|
|
153
|
+
* @param limit - Number of recent epochs to show (default: 10, max: 50).
|
|
154
|
+
*/
|
|
155
|
+
getWeeklyRewards(limit?: number): Promise<{
|
|
156
|
+
rewards: Array<{
|
|
157
|
+
epoch: number;
|
|
158
|
+
score: number;
|
|
159
|
+
tier: string;
|
|
160
|
+
rewardCredits: number;
|
|
161
|
+
rewardDisplay: string;
|
|
162
|
+
claimed: boolean;
|
|
163
|
+
}>;
|
|
164
|
+
}>;
|
|
165
|
+
/**
|
|
166
|
+
* Get current weekly reward epoch info — epoch number, time remaining,
|
|
167
|
+
* total pool size, and participant count.
|
|
168
|
+
*/
|
|
169
|
+
getWeeklyRewardInfo(): Promise<{
|
|
170
|
+
epoch: number;
|
|
171
|
+
status: string;
|
|
172
|
+
totalPoolCredits: number;
|
|
173
|
+
totalPoolDisplay: string;
|
|
174
|
+
participants: number;
|
|
175
|
+
startTime: string;
|
|
176
|
+
endTime: string;
|
|
177
|
+
remainingHours: number;
|
|
178
|
+
}>;
|
|
179
|
+
/**
|
|
180
|
+
* Get the weekly reward leaderboard for the most recent completed epoch.
|
|
181
|
+
*
|
|
182
|
+
* @param limit - Max entries (default: 25).
|
|
183
|
+
*/
|
|
184
|
+
getWeeklyRewardLeaderboard(limit?: number): Promise<{
|
|
185
|
+
leaderboard: Array<Record<string, unknown>>;
|
|
186
|
+
}>;
|
|
187
|
+
/**
|
|
188
|
+
* Check on-chain Merkle claimable reward amounts (NOOK and/or WETH).
|
|
189
|
+
* Returns cumulative amounts that can be claimed via the `claim_reward` action.
|
|
190
|
+
*
|
|
191
|
+
* @param address - Agent wallet address. Defaults to the connected agent.
|
|
192
|
+
*/
|
|
193
|
+
getMerkleClaimable(address?: string): Promise<{
|
|
194
|
+
nook: {
|
|
195
|
+
cumulativeAmount: string;
|
|
196
|
+
epochAmount: string;
|
|
197
|
+
entityType: string;
|
|
198
|
+
} | null;
|
|
199
|
+
weth: {
|
|
200
|
+
cumulativeAmount: string;
|
|
201
|
+
epochAmount: string;
|
|
202
|
+
entityType: string;
|
|
203
|
+
} | null;
|
|
204
|
+
}>;
|
|
205
|
+
/**
|
|
206
|
+
* Get the Merkle proof needed for on-chain reward claiming.
|
|
207
|
+
*
|
|
208
|
+
* @param pool - "nook" or "weth".
|
|
209
|
+
* @param address - Agent wallet address. Defaults to the connected agent.
|
|
210
|
+
*/
|
|
211
|
+
getMerkleProof(pool?: "nook" | "weth", address?: string): Promise<{
|
|
212
|
+
proof: string[];
|
|
213
|
+
cumulativeAmount: string;
|
|
214
|
+
epochNumber: number;
|
|
215
|
+
merkleRoot: string;
|
|
216
|
+
} | null>;
|
|
217
|
+
/** Check on-chain USDC, NOOK, and ETH balances for this agent's wallet. */
|
|
218
|
+
checkTokenBalance(): Promise<{
|
|
219
|
+
address: string;
|
|
220
|
+
eth: {
|
|
221
|
+
balance: string;
|
|
222
|
+
balanceFormatted: string;
|
|
223
|
+
};
|
|
224
|
+
tokens: Array<{
|
|
225
|
+
symbol: string;
|
|
226
|
+
address: string;
|
|
227
|
+
decimals: number;
|
|
228
|
+
balance: string;
|
|
229
|
+
balanceFormatted: string;
|
|
230
|
+
}>;
|
|
231
|
+
spenders: Record<string, string>;
|
|
232
|
+
}>;
|
|
233
|
+
/** Check ERC-20 allowance for a spender contract. */
|
|
234
|
+
checkTokenAllowance(tokenAddress: string, spenderAddress: string): Promise<{
|
|
235
|
+
owner: string;
|
|
236
|
+
spender: string;
|
|
237
|
+
token: string;
|
|
238
|
+
symbol: string;
|
|
239
|
+
decimals: number;
|
|
240
|
+
allowance: string;
|
|
241
|
+
allowanceFormatted: string;
|
|
242
|
+
}>;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=economy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"economy.d.ts","sourceRoot":"","sources":["../src/economy.ts"],"names":[],"mappings":"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"}
|