@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
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signal Action Map — Single source of truth for which actions are available per signal type.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the 4 duplicated `getAvailableActions()` switch statements that existed in:
|
|
5
|
+
* - cli/src/utils/agentLoop.ts
|
|
6
|
+
* - cli/src/commands/listen.ts
|
|
7
|
+
* - runtime/src/autonomous.ts
|
|
8
|
+
* - runtime-py/nookplot_runtime/autonomous.py
|
|
9
|
+
*
|
|
10
|
+
* New tools are auto-discoverable through their ACTION_CATALOG category via `browse_tools`.
|
|
11
|
+
* No switch statements to update when adding new tools.
|
|
12
|
+
*/
|
|
13
|
+
export type SelectionMode = "lenient" | "moderate" | "aggressive" | "strict";
|
|
14
|
+
export declare const CORE_ACTIONS: string[];
|
|
15
|
+
/**
|
|
16
|
+
* Signal type → MAD selection mode for WakeUpStack L2 retrieval.
|
|
17
|
+
*
|
|
18
|
+
* Derived from the retrieval focus each signal type needs:
|
|
19
|
+
* - `aggressive` — focused 1:1 context (DMs, mentions, replies to own post).
|
|
20
|
+
* Want 2–3 tight matches, not scattershot.
|
|
21
|
+
* - `moderate` — standard working set (general channel activity, projects).
|
|
22
|
+
* - `lenient` — exploratory, cross-domain (new projects, multi-step tasks).
|
|
23
|
+
* Cast wide for synthesis.
|
|
24
|
+
*
|
|
25
|
+
* **Scope rule:** only signal types whose handlers actually reach
|
|
26
|
+
* `wakeUpStack.getContext()` live here. Adding an entry for a signal type whose
|
|
27
|
+
* handler doesn't call WakeUpStack is dead code — keep this table in sync with
|
|
28
|
+
* the handler wiring in `autonomous.ts`.
|
|
29
|
+
*
|
|
30
|
+
* Unmapped signal types fall back to `"moderate"` in `WakeUpStack.getContext()`.
|
|
31
|
+
*/
|
|
32
|
+
export declare const SIGNAL_SELECTION_MODE: Record<string, SelectionMode>;
|
|
33
|
+
export declare const SIGNAL_CONTEXT_ACTIONS: Record<string, string[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Returns true when progressive disclosure is enabled for this process.
|
|
36
|
+
*
|
|
37
|
+
* Reads `NOOKPLOT_PROGRESSIVE_DISCLOSURE` from the environment. Default off —
|
|
38
|
+
* existing agents see no behavioral change unless they opt in.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isProgressiveDisclosureEnabled(): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Derive the full list of available actions for a given signal type and loaded categories.
|
|
43
|
+
*
|
|
44
|
+
* Default mode:
|
|
45
|
+
* 1. CORE_ACTIONS (always available, ~30)
|
|
46
|
+
* 2. SIGNAL_CONTEXT_ACTIONS for the signal type (contextual, 0-6)
|
|
47
|
+
* 3. All actions from loaded categories (dynamically loaded via browse_tools)
|
|
48
|
+
*
|
|
49
|
+
* Progressive disclosure mode (NOOKPLOT_PROGRESSIVE_DISCLOSURE=1):
|
|
50
|
+
* Returns CORE_ACTIONS only — signal-context tools become discoverable only
|
|
51
|
+
* via nookplot_search_skills + nookplot_load_skill. More aggressive than
|
|
52
|
+
* browse_tools (which loads a category at a time).
|
|
53
|
+
*
|
|
54
|
+
* @param signalType - The signal type (e.g. "directive", "bounty_claimed")
|
|
55
|
+
* @param loadedCategories - Set of category names loaded via browse_tools
|
|
56
|
+
* @returns Deduplicated array of action names
|
|
57
|
+
*/
|
|
58
|
+
export declare function getAvailableActionsFromMap(signalType: string, loadedCategories: Set<string>): string[];
|
|
59
|
+
//# sourceMappingURL=signalActionMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signalActionMap.d.ts","sourceRoot":"","sources":["../src/signalActionMap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAM7E,eAAO,MAAM,YAAY,EAAE,MAAM,EA4BhC,CAAC;AAOF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAqB/D,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CA+L3D,CAAC;AAGF;;;;;GAKG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAGxD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,MAAM,EAAE,CA0BV"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signal Action Map — Single source of truth for which actions are available per signal type.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the 4 duplicated `getAvailableActions()` switch statements that existed in:
|
|
5
|
+
* - cli/src/utils/agentLoop.ts
|
|
6
|
+
* - cli/src/commands/listen.ts
|
|
7
|
+
* - runtime/src/autonomous.ts
|
|
8
|
+
* - runtime-py/nookplot_runtime/autonomous.py
|
|
9
|
+
*
|
|
10
|
+
* New tools are auto-discoverable through their ACTION_CATALOG category via `browse_tools`.
|
|
11
|
+
* No switch statements to update when adding new tools.
|
|
12
|
+
*/
|
|
13
|
+
import { ACTION_CATALOG } from "./actionCatalog.js";
|
|
14
|
+
// ── Core Actions (~30) ──
|
|
15
|
+
// Every agent gets these on every turn, regardless of signal type.
|
|
16
|
+
// Designed for immediate usefulness without needing to browse categories.
|
|
17
|
+
export const CORE_ACTIONS = [
|
|
18
|
+
// Meta
|
|
19
|
+
"ignore", "browse_tools",
|
|
20
|
+
// Communication
|
|
21
|
+
"reply", "send_dm", "send_message", "send_channel_message",
|
|
22
|
+
// Social
|
|
23
|
+
"follow", "vote", "comment_on_content",
|
|
24
|
+
// Discovery
|
|
25
|
+
"find_agents", "discover", "search_knowledge", "read_feed", "leaderboard",
|
|
26
|
+
// Swarm participation (available_subtasks is useless without claim/submit)
|
|
27
|
+
"available_subtasks", "claim_subtask", "submit_subtask_result",
|
|
28
|
+
// Identity
|
|
29
|
+
"my_profile", "check_balance", "update_profile",
|
|
30
|
+
// Content
|
|
31
|
+
"publish_insight", "post_content",
|
|
32
|
+
// Building (projects + bundles)
|
|
33
|
+
"create_project", "commit_files", "create_bundle",
|
|
34
|
+
"list_project_files", "read_project_file",
|
|
35
|
+
// Knowledge
|
|
36
|
+
"store_knowledge_item", "compile_knowledge",
|
|
37
|
+
// Memory
|
|
38
|
+
"store_memory", "recall_memory",
|
|
39
|
+
// Utility
|
|
40
|
+
"check_reputation", "get_comments",
|
|
41
|
+
// Latent space coordination
|
|
42
|
+
"discover_bundles_semantic", "update_manifest", "suggest_citations",
|
|
43
|
+
// Skill discovery (SRA — universal capability, not specialization-specific)
|
|
44
|
+
"search_skills", "load_skill",
|
|
45
|
+
];
|
|
46
|
+
// ── Signal Context Actions ──
|
|
47
|
+
// Per-signal-type additions. Only the actions *specific* to that signal.
|
|
48
|
+
// "reply" and "ignore" are in CORE_ACTIONS — excluded here (always available).
|
|
49
|
+
// Cross-referenced across all 4 portals for consistency.
|
|
50
|
+
/**
|
|
51
|
+
* Signal type → MAD selection mode for WakeUpStack L2 retrieval.
|
|
52
|
+
*
|
|
53
|
+
* Derived from the retrieval focus each signal type needs:
|
|
54
|
+
* - `aggressive` — focused 1:1 context (DMs, mentions, replies to own post).
|
|
55
|
+
* Want 2–3 tight matches, not scattershot.
|
|
56
|
+
* - `moderate` — standard working set (general channel activity, projects).
|
|
57
|
+
* - `lenient` — exploratory, cross-domain (new projects, multi-step tasks).
|
|
58
|
+
* Cast wide for synthesis.
|
|
59
|
+
*
|
|
60
|
+
* **Scope rule:** only signal types whose handlers actually reach
|
|
61
|
+
* `wakeUpStack.getContext()` live here. Adding an entry for a signal type whose
|
|
62
|
+
* handler doesn't call WakeUpStack is dead code — keep this table in sync with
|
|
63
|
+
* the handler wiring in `autonomous.ts`.
|
|
64
|
+
*
|
|
65
|
+
* Unmapped signal types fall back to `"moderate"` in `WakeUpStack.getContext()`.
|
|
66
|
+
*/
|
|
67
|
+
export const SIGNAL_SELECTION_MODE = {
|
|
68
|
+
// 1:1 DM — handled by handleDmSignal, wired into WakeUpStack by Change 1.
|
|
69
|
+
dm_received: "aggressive",
|
|
70
|
+
// Direct mention in a channel — handleChannelSignal path.
|
|
71
|
+
channel_mention: "aggressive",
|
|
72
|
+
// Reply to the agent's own post — handleChannelSignal path (channelId present).
|
|
73
|
+
reply_to_own_post: "aggressive",
|
|
74
|
+
// General channel participation — standard working set.
|
|
75
|
+
channel_message: "moderate",
|
|
76
|
+
// Project thread discussion — standard context breadth.
|
|
77
|
+
project_discussion: "moderate",
|
|
78
|
+
// New community post — standard breadth.
|
|
79
|
+
new_post_in_community: "moderate",
|
|
80
|
+
// Discovering a new project — cast wide for cross-domain synthesis.
|
|
81
|
+
new_project: "lenient",
|
|
82
|
+
};
|
|
83
|
+
export const SIGNAL_CONTEXT_ACTIONS = {
|
|
84
|
+
// DD-7: directive entry removed — swarm coordination uses DMs
|
|
85
|
+
// ── Communication ──
|
|
86
|
+
collab_request: ["add_collaborator", "propose_collab"],
|
|
87
|
+
xmtp_message: [],
|
|
88
|
+
email_received: ["reply_email", "send_email"],
|
|
89
|
+
// ── Teams ──
|
|
90
|
+
team_assembly_suggested: ["assemble_team"],
|
|
91
|
+
team_invitation: ["accept_invitation", "decline_invitation"],
|
|
92
|
+
team_invitation_accepted: [],
|
|
93
|
+
team_invitation_declined: [],
|
|
94
|
+
// ── Projects ──
|
|
95
|
+
time_to_create_project: ["assemble_team"],
|
|
96
|
+
task_assigned: ["accept", "update_task", "complete_task", "assign_task", "assemble_team"],
|
|
97
|
+
task_completed: ["review", "create_task"],
|
|
98
|
+
task_created: [],
|
|
99
|
+
task_deleted: [],
|
|
100
|
+
milestone_reached: [],
|
|
101
|
+
review_comment_added: [],
|
|
102
|
+
agent_mentioned: ["acknowledge"],
|
|
103
|
+
project_status_update: [],
|
|
104
|
+
file_shared: [],
|
|
105
|
+
status_updated: [],
|
|
106
|
+
new_project: ["propose_collab"],
|
|
107
|
+
interesting_project: ["propose_collab"],
|
|
108
|
+
files_committed: ["get_commit_leaves", "get_commit_children", "create_project_note"],
|
|
109
|
+
pending_review: ["get_commit_leaves", "get_commit_children", "create_project_note"],
|
|
110
|
+
project_forked: ["get_commit_leaves"],
|
|
111
|
+
merge_request_created: ["get_commit_leaves", "get_commit_lineage"],
|
|
112
|
+
// ── Marketplace ──
|
|
113
|
+
service: ["update_service", "create_listing", "create_agreement"],
|
|
114
|
+
time_to_post: ["create_post", "create_bounty", "create_listing", "publish_skill"],
|
|
115
|
+
agreement_created: ["deliver_work", "cancel_agreement", "send_agreement_message"],
|
|
116
|
+
work_delivered: ["settle_agreement", "dispute_agreement", "send_agreement_message", "expire_delivered"],
|
|
117
|
+
agreement_settled: ["submit_review"],
|
|
118
|
+
agreement_disputed: ["send_agreement_message", "expire_dispute"],
|
|
119
|
+
agreement_cancelled: [],
|
|
120
|
+
revision_requested: ["deliver_work", "send_agreement_message"],
|
|
121
|
+
review_received: [],
|
|
122
|
+
// ── Bounties (project-scoped) ──
|
|
123
|
+
bounty_posted_to_project: ["claim"],
|
|
124
|
+
bounty_access_requested: ["grant", "deny"],
|
|
125
|
+
bounty_access_granted: ["claim"],
|
|
126
|
+
bounty_access_denied: [],
|
|
127
|
+
project_bounty_claimed: [],
|
|
128
|
+
project_bounty_completed: [],
|
|
129
|
+
bounty_opportunity: ["apply_bounty", "send_dm"],
|
|
130
|
+
// ── Bounties (application/submission lifecycle) ──
|
|
131
|
+
bounty_application_submitted: ["approve_bounty_application", "approve_bounty_claimer", "reject_bounty_application", "get_verdict_summary"],
|
|
132
|
+
bounty_application_approved: ["claim_bounty"],
|
|
133
|
+
bounty_application_rejected: [],
|
|
134
|
+
// On-chain submit fires this signal too — the creator's next action is approve/dispute.
|
|
135
|
+
bounty_work_submitted: ["select_bounty_submission", "approve_bounty_work", "dispute_bounty", "get_verdict_summary"],
|
|
136
|
+
bounty_submission_selected: ["claim_bounty"],
|
|
137
|
+
bounty_submission_not_selected: [],
|
|
138
|
+
// ── Bounties (on-chain lifecycle) ──
|
|
139
|
+
bounty_claimed: [
|
|
140
|
+
"submit_bounty_work", "submit_bounty_onchain", "unclaim_bounty",
|
|
141
|
+
"approve_bounty_work", "approve_bounty_claimer", "dispute_bounty",
|
|
142
|
+
],
|
|
143
|
+
bounty_work_approved: ["get_bounty_verdict", "get_recent_verdicts"], // V9: worker-side coaching loop — read rationale + history
|
|
144
|
+
bounty_disputed: ["cancel_bounty", "expire_disputed_bounty", "get_bounty_verdict"], // V8: emergency 50/50 exit after 30-day grace; V9: read dispute rationale
|
|
145
|
+
bounty_dispute_grace_expired: ["expire_disputed_bounty"], // V8 L1: 30-day grace elapsed — both parties notified
|
|
146
|
+
bounty_dispute_expired: [], // V8: terminal status, no further action
|
|
147
|
+
bounty_cancelled: [],
|
|
148
|
+
bounty_unclaimed: ["approve_bounty_claimer", "cancel_bounty"],
|
|
149
|
+
bounty_claimer_approved: ["claim_bounty"],
|
|
150
|
+
bounty_expired: [],
|
|
151
|
+
// ── Guilds ──
|
|
152
|
+
guild_opportunity: [
|
|
153
|
+
"join_guild", "approve_guild", "reject_guild", "leave_guild", "propose_guild", "link_project_to_guild",
|
|
154
|
+
// Guild mining (agent-formed guilds)
|
|
155
|
+
"create_mining_guild", "check_guild_mining",
|
|
156
|
+
"join_guild_mining", "leave_guild_mining", "guild_claim_challenge",
|
|
157
|
+
"suggest_challenge_route", "guild_mining_leaderboard", "discover_joinable_guilds",
|
|
158
|
+
"my_guild_status",
|
|
159
|
+
],
|
|
160
|
+
// ── Mining ──
|
|
161
|
+
mining_opportunity: [
|
|
162
|
+
"stake_mining_onchain", "request_mining_unstake", "check_mining_stake",
|
|
163
|
+
"cancel_mining_unstake", "complete_mining_unstake",
|
|
164
|
+
"claim_mining_pool_reward", "claim_and_stake_mining_pool_reward",
|
|
165
|
+
"discover_mining_challenges", "submit_reasoning_trace", "verify_reasoning_submission",
|
|
166
|
+
"claim_mining_reward", "guild_learnings",
|
|
167
|
+
// Guild mining
|
|
168
|
+
"create_mining_guild", "join_guild_mining", "guild_claim_challenge",
|
|
169
|
+
"suggest_challenge_route", "create_multi_step_challenge",
|
|
170
|
+
"claim_mining_subtask", "submit_subtask_trace",
|
|
171
|
+
"discover_joinable_guilds", "discover_verifiable_submissions",
|
|
172
|
+
// Mining read/write actions
|
|
173
|
+
"get_mining_challenge", "create_mining_challenge", "get_reasoning_submission",
|
|
174
|
+
"my_mining_submissions", "mining_stats", "agent_mining_profile",
|
|
175
|
+
"browse_mining_dataset", "access_mining_trace", "check_mining_rewards",
|
|
176
|
+
"post_solve_learning", "mining_epoch", "mining_counter_argument",
|
|
177
|
+
"mining_defend_trace", "mining_authorship_rights", "author_mining_challenge",
|
|
178
|
+
"vote_kick_guild_member", "guild_kick_votes", "guild_active_claims",
|
|
179
|
+
"list_challenge_subtasks", "guild_inference_fund", "claim_inference",
|
|
180
|
+
// Self-discovery
|
|
181
|
+
"my_guild_status", "my_verifications", "get_mining_proof",
|
|
182
|
+
// Knowledge flywheel
|
|
183
|
+
"browse_network_learnings", "challenge_related_learnings",
|
|
184
|
+
"get_learning_detail", "browse_learning_comments",
|
|
185
|
+
"comment_on_learning", "upvote_learning",
|
|
186
|
+
"guild_mining_leaderboard", "check_guild_mining", "leave_guild_mining",
|
|
187
|
+
// Content upload + knowledge bundling
|
|
188
|
+
"upload_mining_content",
|
|
189
|
+
"bundle_mining_learnings", "create_bundle",
|
|
190
|
+
// RLM trajectory mining — track-aware solvers selected by signal.track in
|
|
191
|
+
// availableActionsForTrack(). Bare action names (no nookplot_ prefix) —
|
|
192
|
+
// matches ACTION_CATALOG keys; the cli dispatcher adds the prefix.
|
|
193
|
+
"discover_rlm", "open_rlm_session", "submit_rlm",
|
|
194
|
+
"rlm_repl_exec", "rlm_repl_llm_query", "rlm_repl_finalize", "rlm_provider_poll",
|
|
195
|
+
// Spot-check verifier-track — surfaced to verifiers (other agents
|
|
196
|
+
// earning the 5% verification share by replaying disclosed sub-calls).
|
|
197
|
+
"list_pending_spot_checks", "submit_spot_check_verdict",
|
|
198
|
+
// Embedding mining (Phase 3 — unified mining track).
|
|
199
|
+
"list_embedding_challenges", "submit_embeddings",
|
|
200
|
+
],
|
|
201
|
+
// ── Mining Notifications ──
|
|
202
|
+
submission_verified: [
|
|
203
|
+
"post_solve_learning", "claim_mining_reward", "check_mining_rewards",
|
|
204
|
+
"get_reasoning_submission", "browse_network_learnings",
|
|
205
|
+
"get_learning_detail", "browse_learning_comments",
|
|
206
|
+
],
|
|
207
|
+
// ── Learning Discussions ──
|
|
208
|
+
learning_comment_received: [
|
|
209
|
+
"get_learning_detail", "browse_learning_comments",
|
|
210
|
+
"comment_on_learning", "upvote_learning",
|
|
211
|
+
],
|
|
212
|
+
// ── Intents ──
|
|
213
|
+
intent_matched: ["submit_proposal", "browse_intents"],
|
|
214
|
+
proposal_received: ["accept_proposal", "reject_proposal"],
|
|
215
|
+
intent_accepted: ["complete_intent"],
|
|
216
|
+
// ── Specialization ──
|
|
217
|
+
// Note: search_skills and load_skill moved to CORE_ACTIONS (universal capability).
|
|
218
|
+
// install_skill stays here — it's specialization-specific (persisting to disk).
|
|
219
|
+
specialization_path: ["record_gap", "update_proficiency", "install_skill"],
|
|
220
|
+
// ── Teaching ──
|
|
221
|
+
teaching_proposed: ["accept_teaching", "reject_teaching"],
|
|
222
|
+
teaching_accepted: ["deliver_teaching"],
|
|
223
|
+
teaching_delivered: ["approve_teaching", "reject_teaching"],
|
|
224
|
+
teaching_opportunity: ["propose_teaching", "search_teachers"],
|
|
225
|
+
// ── Credit Agreements ──
|
|
226
|
+
credit_agreement_created: ["accept_credit_agreement", "cancel_credit_agreement"],
|
|
227
|
+
credit_work_delivered: ["complete_credit_agreement", "cancel_credit_agreement"],
|
|
228
|
+
credit_agreement_accepted: ["deliver_credit_work", "cancel_credit_agreement"],
|
|
229
|
+
// ── Knowledge ──
|
|
230
|
+
new_bundle_in_domain: ["cite_insight", "add_knowledge_citation", "store_knowledge_item", "create_embedding_packet", "discover_bundles_semantic"],
|
|
231
|
+
bundle_cited: ["search_knowledge", "add_knowledge_citation", "store_knowledge_item", "cite_insight"],
|
|
232
|
+
dream_prompt: ["search_knowledge", "store_knowledge_item", "compile_knowledge", "get_knowledge_stats", "archive_knowledge_item"],
|
|
233
|
+
// ── Latent Space Coordination ──
|
|
234
|
+
workspace_updated: ["workspace_add_cognitive_item", "workspace_transition_item", "workspace_link_items"],
|
|
235
|
+
manifest_matched: ["create_embedding_packet", "propose_collab", "send_dm"],
|
|
236
|
+
embedding_received: ["discover_bundles_semantic", "suggest_citations"],
|
|
237
|
+
// ── Clarification primitive ──
|
|
238
|
+
clarification_request: ["offer_clarification", "browse_clarification_needs"],
|
|
239
|
+
clarification_offered: ["resolve_clarification", "cancel_clarification"],
|
|
240
|
+
clarification_resolved: ["request_clarification"],
|
|
241
|
+
clarification_timed_out: ["request_clarification"],
|
|
242
|
+
clarification_cancelled: [],
|
|
243
|
+
// ── Webhooks ──
|
|
244
|
+
webhook_received: ["egress_request", "execute_tool"],
|
|
245
|
+
// ── Onboarding ──
|
|
246
|
+
welcome_guide: ["create_post"],
|
|
247
|
+
onboarding_suggestion: [],
|
|
248
|
+
// ── Swarm coordination ──
|
|
249
|
+
swarm_subtask_available: ["available_subtasks", "claim_subtask", "get_swarm", "heartbeat_subtask"],
|
|
250
|
+
swarm_subtask_claimed: ["get_swarm"],
|
|
251
|
+
swarm_result_submitted: ["get_swarm", "aggregate_swarm", "accept_subtask_result", "reject_subtask_result"],
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* Returns true when progressive disclosure is enabled for this process.
|
|
255
|
+
*
|
|
256
|
+
* Reads `NOOKPLOT_PROGRESSIVE_DISCLOSURE` from the environment. Default off —
|
|
257
|
+
* existing agents see no behavioral change unless they opt in.
|
|
258
|
+
*/
|
|
259
|
+
export function isProgressiveDisclosureEnabled() {
|
|
260
|
+
const v = (typeof process !== "undefined" ? process.env?.NOOKPLOT_PROGRESSIVE_DISCLOSURE : undefined) ?? "0";
|
|
261
|
+
return v === "1" || v.toLowerCase() === "true";
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Derive the full list of available actions for a given signal type and loaded categories.
|
|
265
|
+
*
|
|
266
|
+
* Default mode:
|
|
267
|
+
* 1. CORE_ACTIONS (always available, ~30)
|
|
268
|
+
* 2. SIGNAL_CONTEXT_ACTIONS for the signal type (contextual, 0-6)
|
|
269
|
+
* 3. All actions from loaded categories (dynamically loaded via browse_tools)
|
|
270
|
+
*
|
|
271
|
+
* Progressive disclosure mode (NOOKPLOT_PROGRESSIVE_DISCLOSURE=1):
|
|
272
|
+
* Returns CORE_ACTIONS only — signal-context tools become discoverable only
|
|
273
|
+
* via nookplot_search_skills + nookplot_load_skill. More aggressive than
|
|
274
|
+
* browse_tools (which loads a category at a time).
|
|
275
|
+
*
|
|
276
|
+
* @param signalType - The signal type (e.g. "directive", "bounty_claimed")
|
|
277
|
+
* @param loadedCategories - Set of category names loaded via browse_tools
|
|
278
|
+
* @returns Deduplicated array of action names
|
|
279
|
+
*/
|
|
280
|
+
export function getAvailableActionsFromMap(signalType, loadedCategories) {
|
|
281
|
+
// Progressive disclosure: CORE only, regardless of signal/categories.
|
|
282
|
+
if (isProgressiveDisclosureEnabled()) {
|
|
283
|
+
return [...CORE_ACTIONS];
|
|
284
|
+
}
|
|
285
|
+
const actions = new Set(CORE_ACTIONS);
|
|
286
|
+
// Add signal-specific context actions
|
|
287
|
+
const contextActions = SIGNAL_CONTEXT_ACTIONS[signalType];
|
|
288
|
+
if (contextActions) {
|
|
289
|
+
for (const a of contextActions)
|
|
290
|
+
actions.add(a);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
// Unknown signal type — no extra context (core is sufficient)
|
|
294
|
+
}
|
|
295
|
+
// Add all actions from loaded categories
|
|
296
|
+
if (loadedCategories.size > 0) {
|
|
297
|
+
for (const [name, info] of Object.entries(ACTION_CATALOG)) {
|
|
298
|
+
if (info.category && loadedCategories.has(info.category)) {
|
|
299
|
+
actions.add(name);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return Array.from(actions);
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=signalActionMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signalActionMap.js","sourceRoot":"","sources":["../src/signalActionMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared EIP-712 signing utility for the Nookplot Agent Runtime SDK.
|
|
3
|
+
*
|
|
4
|
+
* Used by all managers that need to sign ForwardRequest transactions
|
|
5
|
+
* (memory, social, etc.) for the prepare+relay non-custodial flow.
|
|
6
|
+
*
|
|
7
|
+
* @module signing
|
|
8
|
+
*/
|
|
9
|
+
import type { ConnectionManager } from "./connection.js";
|
|
10
|
+
/** Shape of a prepare endpoint response containing a ForwardRequest. */
|
|
11
|
+
export interface PrepareResponse {
|
|
12
|
+
forwardRequest: {
|
|
13
|
+
from: string;
|
|
14
|
+
to: string;
|
|
15
|
+
value: string;
|
|
16
|
+
gas: string;
|
|
17
|
+
nonce: string;
|
|
18
|
+
deadline: number;
|
|
19
|
+
data: string;
|
|
20
|
+
};
|
|
21
|
+
domain: {
|
|
22
|
+
name: string;
|
|
23
|
+
version: string;
|
|
24
|
+
chainId: number;
|
|
25
|
+
verifyingContract: string;
|
|
26
|
+
};
|
|
27
|
+
types: Record<string, Array<{
|
|
28
|
+
name: string;
|
|
29
|
+
type: string;
|
|
30
|
+
}>>;
|
|
31
|
+
/** Optional DID CID for registration relays. */
|
|
32
|
+
didCid?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Sign a ForwardRequest using EIP-712 typed data signing.
|
|
36
|
+
*
|
|
37
|
+
* Uses dynamic import of ethers to avoid hard dependency.
|
|
38
|
+
* Throws if ethers is not installed.
|
|
39
|
+
*
|
|
40
|
+
* @param privateKey - Agent's Ethereum private key.
|
|
41
|
+
* @param domain - EIP-712 domain data.
|
|
42
|
+
* @param types - EIP-712 type definitions.
|
|
43
|
+
* @param value - The ForwardRequest message to sign.
|
|
44
|
+
* @returns The signature hex string.
|
|
45
|
+
*/
|
|
46
|
+
export declare function signForwardRequest(privateKey: string, domain: Record<string, unknown>, types: Record<string, unknown>, value: Record<string, unknown>): Promise<string>;
|
|
47
|
+
/**
|
|
48
|
+
* Prepare, sign, and relay a ForwardRequest transaction.
|
|
49
|
+
*
|
|
50
|
+
* Convenience wrapper that combines:
|
|
51
|
+
* 1. POST to a prepare endpoint → get unsigned ForwardRequest + EIP-712 context
|
|
52
|
+
* 2. Sign with agent's private key (EIP-712)
|
|
53
|
+
* 3. POST to /v1/relay with flat body ({...forwardRequest, signature})
|
|
54
|
+
*
|
|
55
|
+
* @param connection - ConnectionManager for HTTP requests.
|
|
56
|
+
* @param preparePath - Gateway prepare endpoint path (e.g. "/v1/prepare/follow").
|
|
57
|
+
* @param body - Request body for the prepare endpoint.
|
|
58
|
+
* @returns Relay result with txHash.
|
|
59
|
+
* @throws If private key is missing, ethers not installed, or relay fails.
|
|
60
|
+
*/
|
|
61
|
+
export declare function prepareSignRelay(connection: ConnectionManager, preparePath: string, body: Record<string, unknown>): Promise<{
|
|
62
|
+
txHash: string;
|
|
63
|
+
}>;
|
|
64
|
+
/** Shape of a raw-tx prepare endpoint response (external partner contracts). */
|
|
65
|
+
export interface RawTxResponse {
|
|
66
|
+
txRequests: Array<{
|
|
67
|
+
to: string;
|
|
68
|
+
data: string;
|
|
69
|
+
value: string;
|
|
70
|
+
chainId: number;
|
|
71
|
+
description: string;
|
|
72
|
+
}>;
|
|
73
|
+
meta?: Record<string, unknown>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Prepare and submit raw transactions for partner-protocol contracts
|
|
77
|
+
* (BOTCOIN, etc.) that don't trust Nookplot's forwarder.
|
|
78
|
+
*
|
|
79
|
+
* Flow:
|
|
80
|
+
* 1. POST to prepare endpoint → get array of raw txRequests
|
|
81
|
+
* 2. For each txRequest, sign with agent's private key and submit via RPC
|
|
82
|
+
* 3. Wait for each tx to confirm before submitting the next (ordering matters
|
|
83
|
+
* for approve-then-stake sequences)
|
|
84
|
+
*
|
|
85
|
+
* The agent's wallet pays gas in ETH on Base. Requires the agent to have a
|
|
86
|
+
* funded wallet — no relayer subsidy.
|
|
87
|
+
*
|
|
88
|
+
* @returns txHashes in submission order, plus meta echoed from the gateway.
|
|
89
|
+
*/
|
|
90
|
+
export declare function prepareSignSend(connection: ConnectionManager, preparePath: string, body: Record<string, unknown>): Promise<{
|
|
91
|
+
txHashes: string[];
|
|
92
|
+
meta: Record<string, unknown>;
|
|
93
|
+
}>;
|
|
94
|
+
//# sourceMappingURL=signing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../src/signing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAsBzD,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE;QACd,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC7D,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ7B;AAiDD,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,iBAAiB,EAC7B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAQhE"}
|
package/dist/signing.js
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared EIP-712 signing utility for the Nookplot Agent Runtime SDK.
|
|
3
|
+
*
|
|
4
|
+
* Used by all managers that need to sign ForwardRequest transactions
|
|
5
|
+
* (memory, social, etc.) for the prepare+relay non-custodial flow.
|
|
6
|
+
*
|
|
7
|
+
* @module signing
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Per-agent serialization queue for on-chain actions.
|
|
11
|
+
*
|
|
12
|
+
* Concurrent prepareSignRelay calls for the same agent race on nonce
|
|
13
|
+
* allocation. We chain promises per privateKey so each prepare→sign→relay
|
|
14
|
+
* completes before the next one starts.
|
|
15
|
+
*/
|
|
16
|
+
const agentQueues = new Map();
|
|
17
|
+
function enqueue(key, fn) {
|
|
18
|
+
const prev = agentQueues.get(key) ?? Promise.resolve();
|
|
19
|
+
const next = prev.then(fn, fn);
|
|
20
|
+
agentQueues.set(key, next);
|
|
21
|
+
next.then(() => { if (agentQueues.get(key) === next)
|
|
22
|
+
agentQueues.delete(key); }, () => { if (agentQueues.get(key) === next)
|
|
23
|
+
agentQueues.delete(key); });
|
|
24
|
+
return next;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Sign a ForwardRequest using EIP-712 typed data signing.
|
|
28
|
+
*
|
|
29
|
+
* Uses dynamic import of ethers to avoid hard dependency.
|
|
30
|
+
* Throws if ethers is not installed.
|
|
31
|
+
*
|
|
32
|
+
* @param privateKey - Agent's Ethereum private key.
|
|
33
|
+
* @param domain - EIP-712 domain data.
|
|
34
|
+
* @param types - EIP-712 type definitions.
|
|
35
|
+
* @param value - The ForwardRequest message to sign.
|
|
36
|
+
* @returns The signature hex string.
|
|
37
|
+
*/
|
|
38
|
+
export async function signForwardRequest(privateKey, domain, types, value) {
|
|
39
|
+
try {
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
41
|
+
const mod = (await import("ethers"));
|
|
42
|
+
const ethers = mod.ethers ?? mod;
|
|
43
|
+
const wallet = new ethers.Wallet(privateKey);
|
|
44
|
+
return wallet.signTypedData(domain, types, value);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
if (err && typeof err === "object" && "code" in err && err.code === "MODULE_NOT_FOUND") {
|
|
48
|
+
throw new Error("ethers is not installed. Install it to enable on-chain transactions: npm install ethers");
|
|
49
|
+
}
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Prepare, sign, and relay a ForwardRequest transaction.
|
|
55
|
+
*
|
|
56
|
+
* Convenience wrapper that combines:
|
|
57
|
+
* 1. POST to a prepare endpoint → get unsigned ForwardRequest + EIP-712 context
|
|
58
|
+
* 2. Sign with agent's private key (EIP-712)
|
|
59
|
+
* 3. POST to /v1/relay with flat body ({...forwardRequest, signature})
|
|
60
|
+
*
|
|
61
|
+
* @param connection - ConnectionManager for HTTP requests.
|
|
62
|
+
* @param preparePath - Gateway prepare endpoint path (e.g. "/v1/prepare/follow").
|
|
63
|
+
* @param body - Request body for the prepare endpoint.
|
|
64
|
+
* @returns Relay result with txHash.
|
|
65
|
+
* @throws If private key is missing, ethers not installed, or relay fails.
|
|
66
|
+
*/
|
|
67
|
+
export function prepareSignRelay(connection, preparePath, body) {
|
|
68
|
+
const privateKey = connection.privateKey;
|
|
69
|
+
if (!privateKey) {
|
|
70
|
+
throw new Error("Private key not configured — cannot sign on-chain transactions. Provide privateKey in RuntimeConfig.");
|
|
71
|
+
}
|
|
72
|
+
// Serialize per-agent: concurrent calls queue behind the previous one
|
|
73
|
+
return enqueue(privateKey, () => _prepareSignRelayInner(connection, privateKey, preparePath, body));
|
|
74
|
+
}
|
|
75
|
+
async function _prepareSignRelayInner(connection, privateKey, preparePath, body) {
|
|
76
|
+
/** Run one prepare → sign → relay attempt. */
|
|
77
|
+
const attempt = async () => {
|
|
78
|
+
// Step 1: Prepare — get unsigned ForwardRequest + EIP-712 signing context
|
|
79
|
+
const prep = await connection.request("POST", preparePath, body);
|
|
80
|
+
if (!prep.forwardRequest || !prep.domain || !prep.types) {
|
|
81
|
+
throw new Error(`Gateway did not return a ForwardRequest from ${preparePath} — got keys: ${Object.keys(prep).join(", ")}`);
|
|
82
|
+
}
|
|
83
|
+
// Step 2: Sign the ForwardRequest
|
|
84
|
+
const signature = await signForwardRequest(privateKey, prep.domain, prep.types, prep.forwardRequest);
|
|
85
|
+
// Step 3: Relay — flat body with ForwardRequest fields + signature
|
|
86
|
+
const relayResult = await connection.request("POST", "/v1/relay", { ...prep.forwardRequest, signature });
|
|
87
|
+
return { txHash: relayResult.txHash };
|
|
88
|
+
};
|
|
89
|
+
try {
|
|
90
|
+
return await attempt();
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
// Retry once on nonce conflict — the gateway's NonceTracker may have served
|
|
94
|
+
// a stale nonce if concurrent requests raced or the cache wasn't warm yet.
|
|
95
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
96
|
+
if (message.includes("signature verification failed") || message.includes("nonce")) {
|
|
97
|
+
console.warn(`[nookplot-runtime] Nonce conflict on ${preparePath}, retrying once...`);
|
|
98
|
+
return await attempt();
|
|
99
|
+
}
|
|
100
|
+
throw err;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Prepare and submit raw transactions for partner-protocol contracts
|
|
105
|
+
* (BOTCOIN, etc.) that don't trust Nookplot's forwarder.
|
|
106
|
+
*
|
|
107
|
+
* Flow:
|
|
108
|
+
* 1. POST to prepare endpoint → get array of raw txRequests
|
|
109
|
+
* 2. For each txRequest, sign with agent's private key and submit via RPC
|
|
110
|
+
* 3. Wait for each tx to confirm before submitting the next (ordering matters
|
|
111
|
+
* for approve-then-stake sequences)
|
|
112
|
+
*
|
|
113
|
+
* The agent's wallet pays gas in ETH on Base. Requires the agent to have a
|
|
114
|
+
* funded wallet — no relayer subsidy.
|
|
115
|
+
*
|
|
116
|
+
* @returns txHashes in submission order, plus meta echoed from the gateway.
|
|
117
|
+
*/
|
|
118
|
+
export function prepareSignSend(connection, preparePath, body) {
|
|
119
|
+
const privateKey = connection.privateKey;
|
|
120
|
+
if (!privateKey) {
|
|
121
|
+
throw new Error("Private key not configured — cannot sign on-chain transactions. Provide privateKey in RuntimeConfig.");
|
|
122
|
+
}
|
|
123
|
+
return enqueue(privateKey, () => _prepareSignSendInner(connection, privateKey, preparePath, body));
|
|
124
|
+
}
|
|
125
|
+
async function _prepareSignSendInner(connection, privateKey, preparePath, body) {
|
|
126
|
+
const prep = await connection.request("POST", preparePath, body);
|
|
127
|
+
if (!Array.isArray(prep.txRequests)) {
|
|
128
|
+
throw new Error(`Gateway did not return txRequests from ${preparePath} — got keys: ${Object.keys(prep).join(", ")}`);
|
|
129
|
+
}
|
|
130
|
+
const meta = prep.meta ?? {};
|
|
131
|
+
// Empty array = nothing to do (e.g. claim with no unclaimed epochs)
|
|
132
|
+
if (prep.txRequests.length === 0) {
|
|
133
|
+
return { txHashes: [], meta };
|
|
134
|
+
}
|
|
135
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
136
|
+
const mod = (await import("ethers"));
|
|
137
|
+
const ethers = mod.ethers ?? mod;
|
|
138
|
+
const rpcUrl = connection.config?.rpcUrl ??
|
|
139
|
+
"https://mainnet.base.org";
|
|
140
|
+
const provider = new ethers.JsonRpcProvider(rpcUrl);
|
|
141
|
+
const wallet = new ethers.Wallet(privateKey, provider);
|
|
142
|
+
const txHashes = [];
|
|
143
|
+
for (const req of prep.txRequests) {
|
|
144
|
+
const tx = await wallet.sendTransaction({
|
|
145
|
+
to: req.to,
|
|
146
|
+
data: req.data,
|
|
147
|
+
value: req.value ?? "0",
|
|
148
|
+
chainId: req.chainId,
|
|
149
|
+
});
|
|
150
|
+
const receipt = await tx.wait();
|
|
151
|
+
if (!receipt || receipt.status !== 1) {
|
|
152
|
+
throw new Error(`Transaction reverted: ${req.description} (${tx.hash})`);
|
|
153
|
+
}
|
|
154
|
+
txHashes.push(tx.hash);
|
|
155
|
+
}
|
|
156
|
+
return { txHashes, meta };
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=signing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.js","sourceRoot":"","sources":["../src/signing.ts"],"names":[],"mappings":"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"}
|