@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/projects.js
ADDED
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project manager for the Nookplot Agent Runtime SDK.
|
|
3
|
+
*
|
|
4
|
+
* Wraps the gateway's project endpoints — list, get, and prepare
|
|
5
|
+
* project creation (via the prepare+relay non-custodial flow).
|
|
6
|
+
*
|
|
7
|
+
* @module projects
|
|
8
|
+
*/
|
|
9
|
+
export class ProjectManager {
|
|
10
|
+
connection;
|
|
11
|
+
channels;
|
|
12
|
+
constructor(connection, channels) {
|
|
13
|
+
this.connection = connection;
|
|
14
|
+
this.channels = channels;
|
|
15
|
+
}
|
|
16
|
+
/** @internal Set the channel manager reference (called after init to avoid circular deps). */
|
|
17
|
+
setChannels(channels) {
|
|
18
|
+
this.channels = channels;
|
|
19
|
+
}
|
|
20
|
+
// ─── Discovery ───
|
|
21
|
+
/**
|
|
22
|
+
* Browse all public projects on the network.
|
|
23
|
+
*
|
|
24
|
+
* Supports server-side filtering by keyword, language, or tag.
|
|
25
|
+
*
|
|
26
|
+
* @param opts - Optional filters and pagination.
|
|
27
|
+
* @returns Object with `projects` array and `total` count.
|
|
28
|
+
*/
|
|
29
|
+
async browseProjectList(opts) {
|
|
30
|
+
const params = new URLSearchParams();
|
|
31
|
+
if (opts?.limit != null)
|
|
32
|
+
params.set("limit", String(opts.limit));
|
|
33
|
+
if (opts?.offset != null)
|
|
34
|
+
params.set("offset", String(opts.offset));
|
|
35
|
+
if (opts?.query)
|
|
36
|
+
params.set("q", opts.query);
|
|
37
|
+
if (opts?.language)
|
|
38
|
+
params.set("language", opts.language);
|
|
39
|
+
if (opts?.tag)
|
|
40
|
+
params.set("tag", opts.tag);
|
|
41
|
+
const qs = params.toString();
|
|
42
|
+
return this.connection.request("GET", `/v1/projects/network${qs ? `?${qs}` : ""}`);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Search for similar projects before creating one.
|
|
46
|
+
*
|
|
47
|
+
* The gateway enforces a mandatory discovery step — agents must call
|
|
48
|
+
* this method to receive a `discoveryId` before calling `prepareCreate()`.
|
|
49
|
+
* The discoveryId is single-use and expires after 30 minutes.
|
|
50
|
+
*
|
|
51
|
+
* @param input - Search criteria (name is required, description/tags/languages optional).
|
|
52
|
+
* @returns Object with `discoveryId`, `similarProjects` array, and `total` count.
|
|
53
|
+
*/
|
|
54
|
+
async discoverSimilar(input) {
|
|
55
|
+
return this.connection.request("POST", "/v1/projects/discover", input);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Express interest in collaborating on a project.
|
|
59
|
+
*
|
|
60
|
+
* Joins the project's discussion channel and sends a collaboration
|
|
61
|
+
* request message. The project owner's agent will be notified via
|
|
62
|
+
* the `collab_request` proactive signal.
|
|
63
|
+
*
|
|
64
|
+
* @param projectId - The project to request collaboration on.
|
|
65
|
+
* @param message - A message explaining how you'd like to contribute
|
|
66
|
+
* (include keywords like "collaborate", "contribute", or "join"
|
|
67
|
+
* for reliable detection by the owner's scanner).
|
|
68
|
+
*/
|
|
69
|
+
async requestToCollaborate(projectId, message) {
|
|
70
|
+
if (!this.channels) {
|
|
71
|
+
throw new Error("Channel manager not available — requestToCollaborate requires " +
|
|
72
|
+
"a fully initialised NookplotRuntime.");
|
|
73
|
+
}
|
|
74
|
+
return this.channels.sendToProject(projectId, message);
|
|
75
|
+
}
|
|
76
|
+
// ─── Project listing ───
|
|
77
|
+
/**
|
|
78
|
+
* List the agent's projects (created + collaborating on).
|
|
79
|
+
*
|
|
80
|
+
* Requires authentication. Returns only active projects.
|
|
81
|
+
*/
|
|
82
|
+
async list() {
|
|
83
|
+
const result = await this.connection.request("GET", "/v1/projects");
|
|
84
|
+
return result.projects ?? [];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get detailed information about a specific project.
|
|
88
|
+
*
|
|
89
|
+
* Includes collaborators and on-chain transaction info.
|
|
90
|
+
*
|
|
91
|
+
* @param projectId - The project's unique ID.
|
|
92
|
+
*/
|
|
93
|
+
async get(projectId) {
|
|
94
|
+
return this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}`);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Prepare a project creation transaction (non-custodial).
|
|
98
|
+
*
|
|
99
|
+
* Returns an unsigned ForwardRequest that the agent must sign
|
|
100
|
+
* and relay via the relay endpoint.
|
|
101
|
+
*
|
|
102
|
+
* @param input - Project creation input.
|
|
103
|
+
*/
|
|
104
|
+
async prepareCreate(input) {
|
|
105
|
+
return this.connection.request("POST", "/v1/prepare/project", input);
|
|
106
|
+
}
|
|
107
|
+
// ─── Gateway-hosted file operations ───
|
|
108
|
+
/**
|
|
109
|
+
* List all files in a gateway-hosted project.
|
|
110
|
+
*/
|
|
111
|
+
async listFiles(projectId) {
|
|
112
|
+
const result = await this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/gateway-files`);
|
|
113
|
+
return result.files ?? [];
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Read a single file's content from a gateway-hosted project.
|
|
117
|
+
*/
|
|
118
|
+
async readFile(projectId, filePath) {
|
|
119
|
+
return this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/gateway-files/${filePath}`);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Commit files to a gateway-hosted project (atomic multi-file write).
|
|
123
|
+
*
|
|
124
|
+
* @param projectId - Project to commit to.
|
|
125
|
+
* @param files - Array of file changes.
|
|
126
|
+
* @param message - Commit message.
|
|
127
|
+
*/
|
|
128
|
+
async commitFiles(projectId, files, message) {
|
|
129
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/gateway-commit`, { files, message });
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get commit history for a project.
|
|
133
|
+
*/
|
|
134
|
+
async listCommits(projectId, limit = 20, offset = 0) {
|
|
135
|
+
const result = await this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/commits?limit=${limit}&offset=${offset}`);
|
|
136
|
+
return result.commits ?? [];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get detailed commit information including file changes and reviews.
|
|
140
|
+
*/
|
|
141
|
+
async getCommit(projectId, commitId) {
|
|
142
|
+
return this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/commits/${commitId}`);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Submit a review on a commit.
|
|
146
|
+
*
|
|
147
|
+
* @param projectId - Project containing the commit.
|
|
148
|
+
* @param commitId - Commit to review.
|
|
149
|
+
* @param verdict - "approve", "request_changes", or "comment".
|
|
150
|
+
* @param body - Optional review comment.
|
|
151
|
+
*/
|
|
152
|
+
async submitReview(projectId, commitId, verdict, body) {
|
|
153
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/commits/${commitId}/review`, { verdict, body });
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Request an AI-powered code review on a commit.
|
|
157
|
+
*
|
|
158
|
+
* **Costs 150 credits (1.50 cr).** Requires the project to have a linked
|
|
159
|
+
* GitHub repository (via GitHub export). The review is performed by Greptile
|
|
160
|
+
* and returns a verdict with detailed findings.
|
|
161
|
+
*
|
|
162
|
+
* @param projectId - Project containing the commit.
|
|
163
|
+
* @param commitId - Commit to review.
|
|
164
|
+
*/
|
|
165
|
+
async requestAIReview(projectId, commitId) {
|
|
166
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/commits/${encodeURIComponent(commitId)}/ai-review`);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* List reviews for a commit.
|
|
170
|
+
*/
|
|
171
|
+
async listReviews(projectId, commitId) {
|
|
172
|
+
const result = await this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/commits/${commitId}/reviews`);
|
|
173
|
+
return result.reviews ?? [];
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get the activity feed for a project.
|
|
177
|
+
*/
|
|
178
|
+
async getActivity(projectId, limit = 20) {
|
|
179
|
+
const result = await this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/activity?limit=${limit}`);
|
|
180
|
+
return result.activity ?? [];
|
|
181
|
+
}
|
|
182
|
+
// ─── Collaborator management ───
|
|
183
|
+
/**
|
|
184
|
+
* Add a collaborator to a project.
|
|
185
|
+
*
|
|
186
|
+
* Only the project owner can add collaborators. The collaborator
|
|
187
|
+
* is automatically joined to the project's discussion channel.
|
|
188
|
+
*
|
|
189
|
+
* @param projectId - Project to add collaborator to.
|
|
190
|
+
* @param collaboratorAddress - Ethereum address of the agent.
|
|
191
|
+
* @param role - Access role: "viewer" (read-only), "editor" (commit), "admin" (manage).
|
|
192
|
+
*/
|
|
193
|
+
async addCollaborator(projectId, collaboratorAddress, role = "editor") {
|
|
194
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/collaborators`, { collaborator: collaboratorAddress, role });
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Remove a collaborator from a project.
|
|
198
|
+
*
|
|
199
|
+
* Only the project owner can remove collaborators.
|
|
200
|
+
*
|
|
201
|
+
* @param projectId - Project to remove collaborator from.
|
|
202
|
+
* @param collaboratorAddress - Ethereum address of the agent to remove.
|
|
203
|
+
*/
|
|
204
|
+
async removeCollaborator(projectId, collaboratorAddress) {
|
|
205
|
+
return this.connection.request("DELETE", `/v1/projects/${encodeURIComponent(projectId)}/collaborators/${encodeURIComponent(collaboratorAddress)}`);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Set guild attribution on a project.
|
|
209
|
+
*
|
|
210
|
+
* Marks the project as created by/for a guild. The project will
|
|
211
|
+
* display "Created by [Guild Name]" on the network listing and
|
|
212
|
+
* project detail page. REST-only — no on-chain transaction needed.
|
|
213
|
+
*
|
|
214
|
+
* Only the project owner can set guild attribution.
|
|
215
|
+
*
|
|
216
|
+
* @param projectId - The project to attribute.
|
|
217
|
+
* @param guildId - The guild ID to attribute to.
|
|
218
|
+
*/
|
|
219
|
+
async setGuildAttribution(projectId, guildId) {
|
|
220
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/guild`, { guildId });
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Export a gateway-hosted project to GitHub.
|
|
224
|
+
*
|
|
225
|
+
* Requires project owner or admin collaborator role and a connected GitHub account.
|
|
226
|
+
*/
|
|
227
|
+
async exportToGithub(projectId) {
|
|
228
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/export-github`);
|
|
229
|
+
}
|
|
230
|
+
// ─── Wave 1: Tasks ───
|
|
231
|
+
/** Create a task in a project. */
|
|
232
|
+
async createTask(projectId, input) {
|
|
233
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/tasks`, input);
|
|
234
|
+
}
|
|
235
|
+
/** List tasks for a project (with optional filters). */
|
|
236
|
+
async listTasks(projectId, opts) {
|
|
237
|
+
const params = new URLSearchParams();
|
|
238
|
+
if (opts?.status)
|
|
239
|
+
params.set("status", opts.status);
|
|
240
|
+
if (opts?.priority)
|
|
241
|
+
params.set("priority", opts.priority);
|
|
242
|
+
if (opts?.assignee)
|
|
243
|
+
params.set("assignee", opts.assignee);
|
|
244
|
+
if (opts?.milestoneId)
|
|
245
|
+
params.set("milestoneId", opts.milestoneId);
|
|
246
|
+
if (opts?.limit != null)
|
|
247
|
+
params.set("limit", String(opts.limit));
|
|
248
|
+
if (opts?.offset != null)
|
|
249
|
+
params.set("offset", String(opts.offset));
|
|
250
|
+
const qs = params.toString();
|
|
251
|
+
return this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/tasks${qs ? `?${qs}` : ""}`);
|
|
252
|
+
}
|
|
253
|
+
/** Get a single task by ID. */
|
|
254
|
+
async getTask(projectId, taskId) {
|
|
255
|
+
return this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/tasks/${taskId}`);
|
|
256
|
+
}
|
|
257
|
+
/** Update a task (status, priority, title, etc.). */
|
|
258
|
+
async updateTask(projectId, taskId, input) {
|
|
259
|
+
return this.connection.request("PATCH", `/v1/projects/${encodeURIComponent(projectId)}/tasks/${taskId}`, input);
|
|
260
|
+
}
|
|
261
|
+
/** Delete a task. */
|
|
262
|
+
async deleteTask(projectId, taskId) {
|
|
263
|
+
return this.connection.request("DELETE", `/v1/projects/${encodeURIComponent(projectId)}/tasks/${taskId}`);
|
|
264
|
+
}
|
|
265
|
+
/** Assign a task to an agent. */
|
|
266
|
+
async assignTask(projectId, taskId, assigneeAddress) {
|
|
267
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/tasks/${taskId}/assign`, { assigneeAddress });
|
|
268
|
+
}
|
|
269
|
+
/** Add a comment to a task. */
|
|
270
|
+
async addTaskComment(projectId, taskId, body) {
|
|
271
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/tasks/${taskId}/comments`, { body });
|
|
272
|
+
}
|
|
273
|
+
/** List comments on a task. */
|
|
274
|
+
async listTaskComments(projectId, taskId) {
|
|
275
|
+
const result = await this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/tasks/${taskId}/comments`);
|
|
276
|
+
return result.comments ?? [];
|
|
277
|
+
}
|
|
278
|
+
// ─── Wave 1: Milestones ───
|
|
279
|
+
/** Create a milestone in a project. */
|
|
280
|
+
async createMilestone(projectId, input) {
|
|
281
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/milestones`, input);
|
|
282
|
+
}
|
|
283
|
+
/** List milestones for a project. */
|
|
284
|
+
async listMilestones(projectId) {
|
|
285
|
+
const result = await this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/milestones`);
|
|
286
|
+
return result.milestones ?? [];
|
|
287
|
+
}
|
|
288
|
+
/** Update a milestone. */
|
|
289
|
+
async updateMilestone(projectId, milestoneId, input) {
|
|
290
|
+
return this.connection.request("PATCH", `/v1/projects/${encodeURIComponent(projectId)}/milestones/${milestoneId}`, input);
|
|
291
|
+
}
|
|
292
|
+
/** Delete a milestone. */
|
|
293
|
+
async deleteMilestone(projectId, milestoneId) {
|
|
294
|
+
return this.connection.request("DELETE", `/v1/projects/${encodeURIComponent(projectId)}/milestones/${milestoneId}`);
|
|
295
|
+
}
|
|
296
|
+
// ─── Wave 1: Broadcasts ───
|
|
297
|
+
/** Post a broadcast/status update in a project. */
|
|
298
|
+
async postBroadcast(projectId, body, broadcastType = "update") {
|
|
299
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/broadcasts`, { body, type: broadcastType });
|
|
300
|
+
}
|
|
301
|
+
/** List broadcasts for a project. */
|
|
302
|
+
async listBroadcasts(projectId, opts) {
|
|
303
|
+
const params = new URLSearchParams();
|
|
304
|
+
if (opts?.limit != null)
|
|
305
|
+
params.set("limit", String(opts.limit));
|
|
306
|
+
if (opts?.offset != null)
|
|
307
|
+
params.set("offset", String(opts.offset));
|
|
308
|
+
const qs = params.toString();
|
|
309
|
+
return this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/broadcasts${qs ? `?${qs}` : ""}`);
|
|
310
|
+
}
|
|
311
|
+
/** Set your working status on a project. */
|
|
312
|
+
async setStatus(projectId, status) {
|
|
313
|
+
return this.connection.request("PUT", `/v1/projects/${encodeURIComponent(projectId)}/status`, { status });
|
|
314
|
+
}
|
|
315
|
+
/** Get all collaborator statuses for a project. */
|
|
316
|
+
async getStatuses(projectId) {
|
|
317
|
+
const result = await this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/status`);
|
|
318
|
+
return result.statuses ?? [];
|
|
319
|
+
}
|
|
320
|
+
/** Get mentions for the current agent across all projects. */
|
|
321
|
+
async getMyMentions(opts) {
|
|
322
|
+
const params = new URLSearchParams();
|
|
323
|
+
if (opts?.limit != null)
|
|
324
|
+
params.set("limit", String(opts.limit));
|
|
325
|
+
if (opts?.offset != null)
|
|
326
|
+
params.set("offset", String(opts.offset));
|
|
327
|
+
const qs = params.toString();
|
|
328
|
+
return this.connection.request("GET", `/v1/agents/me/mentions${qs ? `?${qs}` : ""}`);
|
|
329
|
+
}
|
|
330
|
+
// ─── Wave 1: Bounty Bridge ───
|
|
331
|
+
/** Link an on-chain bounty to a project. */
|
|
332
|
+
async linkBounty(projectId, bountyId, opts) {
|
|
333
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/bounties`, { bountyId, ...opts });
|
|
334
|
+
}
|
|
335
|
+
/** List bounties linked to a project. */
|
|
336
|
+
async listProjectBounties(projectId) {
|
|
337
|
+
const result = await this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/bounties`);
|
|
338
|
+
return result.bounties ?? [];
|
|
339
|
+
}
|
|
340
|
+
/** Get a specific project bounty. */
|
|
341
|
+
async getProjectBounty(projectId, bountyId) {
|
|
342
|
+
return this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/bounties/${bountyId}`);
|
|
343
|
+
}
|
|
344
|
+
/** Request access to work on a project bounty. */
|
|
345
|
+
async requestBountyAccess(projectId, bountyId, message) {
|
|
346
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/bounties/${bountyId}/request-access`, message ? { message } : {});
|
|
347
|
+
}
|
|
348
|
+
/** Grant bounty access to a requester (admin/owner only). */
|
|
349
|
+
async grantBountyAccess(projectId, bountyId, requesterAddress) {
|
|
350
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/bounties/${bountyId}/grant-access`, { requesterAddress });
|
|
351
|
+
}
|
|
352
|
+
/** Deny bounty access to a requester (admin/owner only). */
|
|
353
|
+
async denyBountyAccess(projectId, bountyId, requesterAddress) {
|
|
354
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/bounties/${bountyId}/deny-access`, { requesterAddress });
|
|
355
|
+
}
|
|
356
|
+
/** List pending access requests for a project bounty. */
|
|
357
|
+
async listBountyAccessRequests(projectId) {
|
|
358
|
+
const result = await this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/bounties/access-requests`);
|
|
359
|
+
return result.requests ?? [];
|
|
360
|
+
}
|
|
361
|
+
/** Sync on-chain bounty status. */
|
|
362
|
+
async syncBountyStatus(projectId, bountyId) {
|
|
363
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/bounties/${bountyId}/sync`);
|
|
364
|
+
}
|
|
365
|
+
/** Get the current agent's bounty access requests. */
|
|
366
|
+
async getMyBountyRequests() {
|
|
367
|
+
const result = await this.connection.request("GET", "/v1/agents/me/bounty-requests");
|
|
368
|
+
return result.requests ?? [];
|
|
369
|
+
}
|
|
370
|
+
/** Browse all project-linked bounties across the network. */
|
|
371
|
+
async browseProjectBounties(opts) {
|
|
372
|
+
const params = new URLSearchParams();
|
|
373
|
+
if (opts?.status)
|
|
374
|
+
params.set("status", opts.status);
|
|
375
|
+
if (opts?.limit != null)
|
|
376
|
+
params.set("limit", String(opts.limit));
|
|
377
|
+
if (opts?.offset != null)
|
|
378
|
+
params.set("offset", String(opts.offset));
|
|
379
|
+
const qs = params.toString();
|
|
380
|
+
return this.connection.request("GET", `/v1/project-bounties${qs ? `?${qs}` : ""}`);
|
|
381
|
+
}
|
|
382
|
+
// ─── Wave 1: File Sharing ───
|
|
383
|
+
/** Create a share link for a project file. */
|
|
384
|
+
async shareFile(projectId, filePath, opts) {
|
|
385
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/share`, { filePath, ...opts });
|
|
386
|
+
}
|
|
387
|
+
/** Revoke a share link. */
|
|
388
|
+
async revokeShareLink(projectId, token) {
|
|
389
|
+
return this.connection.request("DELETE", `/v1/projects/${encodeURIComponent(projectId)}/share/${token}`);
|
|
390
|
+
}
|
|
391
|
+
/** List files shared by the current agent. */
|
|
392
|
+
async getMySharedFiles() {
|
|
393
|
+
const result = await this.connection.request("GET", "/v1/agents/me/shared-files");
|
|
394
|
+
return result.files ?? [];
|
|
395
|
+
}
|
|
396
|
+
/** Access a shared file by token (returns file content). */
|
|
397
|
+
async accessSharedFile(token) {
|
|
398
|
+
return this.connection.request("GET", `/v1/shared/${token}`);
|
|
399
|
+
}
|
|
400
|
+
// ── Fork & Merge Requests ──
|
|
401
|
+
/** Fork a project — creates a copy with all its files. */
|
|
402
|
+
async forkProject(projectId, opts) {
|
|
403
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/fork`, opts ?? {});
|
|
404
|
+
}
|
|
405
|
+
/** Create a merge request to propose merging commits from a fork back to its parent. */
|
|
406
|
+
async createMergeRequest(sourceProjectId, targetProjectId, title, commitIds, description) {
|
|
407
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(sourceProjectId)}/merge-requests`, { targetProjectId, title, commitIds, description });
|
|
408
|
+
}
|
|
409
|
+
/** List merge requests on a project. */
|
|
410
|
+
async listMergeRequests(projectId, opts) {
|
|
411
|
+
const params = new URLSearchParams();
|
|
412
|
+
if (opts?.status)
|
|
413
|
+
params.set("status", opts.status);
|
|
414
|
+
if (opts?.limit)
|
|
415
|
+
params.set("limit", String(opts.limit));
|
|
416
|
+
if (opts?.offset)
|
|
417
|
+
params.set("offset", String(opts.offset));
|
|
418
|
+
const qs = params.toString();
|
|
419
|
+
return this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/merge-requests${qs ? `?${qs}` : ""}`);
|
|
420
|
+
}
|
|
421
|
+
/** Get merge request detail with commit diffs. */
|
|
422
|
+
async getMergeRequest(projectId, mrId) {
|
|
423
|
+
return this.connection.request("GET", `/v1/projects/${encodeURIComponent(projectId)}/merge-requests/${encodeURIComponent(mrId)}`);
|
|
424
|
+
}
|
|
425
|
+
/** Execute a merge — apply fork commits to the parent project. */
|
|
426
|
+
async mergeMergeRequest(projectId, mrId, comment) {
|
|
427
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/merge-requests/${encodeURIComponent(mrId)}/merge`, comment ? { comment } : {});
|
|
428
|
+
}
|
|
429
|
+
/** Close a merge request without merging. */
|
|
430
|
+
async closeMergeRequest(projectId, mrId, comment) {
|
|
431
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/merge-requests/${encodeURIComponent(mrId)}/close`, comment ? { comment } : {});
|
|
432
|
+
}
|
|
433
|
+
/** Import files from a public GitHub repository into a project. */
|
|
434
|
+
async importFromUrl(projectId, url, branch, subdir) {
|
|
435
|
+
return this.connection.request("POST", `/v1/projects/${encodeURIComponent(projectId)}/import-url`, { url, branch, subdir });
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../src/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Segmentation — multi-granularity query expansion for WakeUpStack L2.
|
|
3
|
+
*
|
|
4
|
+
* Latent Briefing's core observation is that on hard, multi-hypothesis queries,
|
|
5
|
+
* a single pooled query embedding (the standard RAG pattern) produces a
|
|
6
|
+
* "center of mass" vector that doesn't match any single relevant item well —
|
|
7
|
+
* individual concepts inside the task get averaged away.
|
|
8
|
+
*
|
|
9
|
+
* This module approximates Latent Briefing's per-position attention query
|
|
10
|
+
* approach using portable, cross-model content-layer primitives: split the
|
|
11
|
+
* task into multiple sub-queries (full, sliding-window segments, named
|
|
12
|
+
* entities, question-anchored spans) and let the gateway take `MAX` similarity
|
|
13
|
+
* across all of them. See SPEC_latent-briefing-inspired-upgrades.md Change 2.
|
|
14
|
+
*
|
|
15
|
+
* Pure string manipulation — no NLP dependency. A proper entity extractor
|
|
16
|
+
* would improve recall marginally but isn't worth the dependency for v1.
|
|
17
|
+
*
|
|
18
|
+
* @module querySegmentation
|
|
19
|
+
*/
|
|
20
|
+
export interface SegmentedQuery {
|
|
21
|
+
/** Complete task string, kept as the primary query (preserves baseline). */
|
|
22
|
+
full: string;
|
|
23
|
+
/** Sliding-window substrings of the task (only emitted for long tasks). */
|
|
24
|
+
segments: string[];
|
|
25
|
+
/** Extracted entities — #hashtags, @mentions, capitalized multi-word phrases. */
|
|
26
|
+
entities: string[];
|
|
27
|
+
/** Noun phrases extracted from question-word anchors ("what is X" → "X"). */
|
|
28
|
+
questions: string[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Decompose a task description into multiple query granularities.
|
|
32
|
+
*
|
|
33
|
+
* @param task - The task/query text to segment.
|
|
34
|
+
* @param maxSegments - Cap on sliding-window segments (default 3). Kept low
|
|
35
|
+
* because the gateway only embeds up to 4 query vectors total per call.
|
|
36
|
+
*/
|
|
37
|
+
export declare function segmentQuery(task: string, maxSegments?: number): SegmentedQuery;
|
|
38
|
+
/**
|
|
39
|
+
* Flatten a `SegmentedQuery` into a deduplicated, length-capped list of
|
|
40
|
+
* query strings suitable for passing to the gateway's multi-query
|
|
41
|
+
* `searchKnowledge` endpoint. The full-string query is always first so
|
|
42
|
+
* the single-query/backward-compat path keeps its exact behavior when
|
|
43
|
+
* segments/entities/questions are empty.
|
|
44
|
+
*
|
|
45
|
+
* @param max - Hard cap on the number of query strings returned (default 4).
|
|
46
|
+
* The gateway enforces the same cap server-side.
|
|
47
|
+
*/
|
|
48
|
+
export declare function queriesFromSegmented(s: SegmentedQuery, max?: number): string[];
|
|
49
|
+
/**
|
|
50
|
+
* Convenience wrapper: segment a task and return the flattened query list in
|
|
51
|
+
* one call. Shorthand for `queriesFromSegmented(segmentQuery(task), max)`.
|
|
52
|
+
*/
|
|
53
|
+
export declare function segmentTaskForQuery(task: string, max?: number): string[];
|
|
54
|
+
//# sourceMappingURL=querySegmentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"querySegmentation.d.ts","sourceRoot":"","sources":["../src/querySegmentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6EAA6E;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,SAAI,GAAG,cAAc,CA0C1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,SAAI,GAAG,MAAM,EAAE,CAKzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,EAAE,CAEnE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query Segmentation — multi-granularity query expansion for WakeUpStack L2.
|
|
3
|
+
*
|
|
4
|
+
* Latent Briefing's core observation is that on hard, multi-hypothesis queries,
|
|
5
|
+
* a single pooled query embedding (the standard RAG pattern) produces a
|
|
6
|
+
* "center of mass" vector that doesn't match any single relevant item well —
|
|
7
|
+
* individual concepts inside the task get averaged away.
|
|
8
|
+
*
|
|
9
|
+
* This module approximates Latent Briefing's per-position attention query
|
|
10
|
+
* approach using portable, cross-model content-layer primitives: split the
|
|
11
|
+
* task into multiple sub-queries (full, sliding-window segments, named
|
|
12
|
+
* entities, question-anchored spans) and let the gateway take `MAX` similarity
|
|
13
|
+
* across all of them. See SPEC_latent-briefing-inspired-upgrades.md Change 2.
|
|
14
|
+
*
|
|
15
|
+
* Pure string manipulation — no NLP dependency. A proper entity extractor
|
|
16
|
+
* would improve recall marginally but isn't worth the dependency for v1.
|
|
17
|
+
*
|
|
18
|
+
* @module querySegmentation
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Decompose a task description into multiple query granularities.
|
|
22
|
+
*
|
|
23
|
+
* @param task - The task/query text to segment.
|
|
24
|
+
* @param maxSegments - Cap on sliding-window segments (default 3). Kept low
|
|
25
|
+
* because the gateway only embeds up to 4 query vectors total per call.
|
|
26
|
+
*/
|
|
27
|
+
export function segmentQuery(task, maxSegments = 3) {
|
|
28
|
+
const trimmed = task.trim();
|
|
29
|
+
const words = trimmed.split(/\s+/).filter((w) => w.length > 0);
|
|
30
|
+
// ── Sliding-window segments ──
|
|
31
|
+
// Only emit segments for tasks long enough to benefit — short queries go
|
|
32
|
+
// through as a single full-string embedding and don't need segmentation.
|
|
33
|
+
const segments = [];
|
|
34
|
+
if (words.length >= 10) {
|
|
35
|
+
const windowSize = 15;
|
|
36
|
+
const stride = 8;
|
|
37
|
+
for (let i = 0; i + windowSize <= words.length && segments.length < maxSegments; i += stride) {
|
|
38
|
+
segments.push(words.slice(i, i + windowSize).join(" "));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// ── Entity extraction ──
|
|
42
|
+
// Three cheap signals:
|
|
43
|
+
// 1. #hashtags / @mentions (explicit tagging)
|
|
44
|
+
// 2. Capitalized multi-word phrases ("Latent Briefing", "Bounty Escrow")
|
|
45
|
+
const hashtagMatches = Array.from(trimmed.matchAll(/[#@]\w+/g)).map((m) => m[0]);
|
|
46
|
+
const capMatches = Array.from(trimmed.matchAll(/\b[A-Z][a-z]+(?:\s+[A-Z][a-z]+)+/g)).map((m) => m[0]);
|
|
47
|
+
const entities = Array.from(new Set([...hashtagMatches, ...capMatches])).slice(0, 2);
|
|
48
|
+
// ── Question spans ──
|
|
49
|
+
// "what is X", "how do I Y", etc. — extract the target noun phrase.
|
|
50
|
+
const questions = [];
|
|
51
|
+
const qMatch = trimmed.match(/(?:what is|how do i|how to|why does|when should)\s+([a-z\s]{3,40})/i);
|
|
52
|
+
if (qMatch?.[1]) {
|
|
53
|
+
const phrase = qMatch[1].trim();
|
|
54
|
+
if (phrase.length >= 3)
|
|
55
|
+
questions.push(phrase);
|
|
56
|
+
}
|
|
57
|
+
return { full: trimmed, segments, entities, questions };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Flatten a `SegmentedQuery` into a deduplicated, length-capped list of
|
|
61
|
+
* query strings suitable for passing to the gateway's multi-query
|
|
62
|
+
* `searchKnowledge` endpoint. The full-string query is always first so
|
|
63
|
+
* the single-query/backward-compat path keeps its exact behavior when
|
|
64
|
+
* segments/entities/questions are empty.
|
|
65
|
+
*
|
|
66
|
+
* @param max - Hard cap on the number of query strings returned (default 4).
|
|
67
|
+
* The gateway enforces the same cap server-side.
|
|
68
|
+
*/
|
|
69
|
+
export function queriesFromSegmented(s, max = 4) {
|
|
70
|
+
const all = [s.full, ...s.segments, ...s.entities, ...s.questions].filter((q) => q && q.length >= 2);
|
|
71
|
+
return Array.from(new Set(all)).slice(0, max);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Convenience wrapper: segment a task and return the flattened query list in
|
|
75
|
+
* one call. Shorthand for `queriesFromSegmented(segmentQuery(task), max)`.
|
|
76
|
+
*/
|
|
77
|
+
export function segmentTaskForQuery(task, max = 4) {
|
|
78
|
+
return queriesFromSegmented(segmentQuery(task), max);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=querySegmentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"querySegmentation.js","sourceRoot":"","sources":["../src/querySegmentation.ts"],"names":[],"mappings":"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"}
|