@tenex-chat/backend 0.9.1
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/README.md +194 -0
- package/dist/backend-wrapper.cjs +3 -0
- package/dist/src/index.js +331928 -0
- package/package.json +103 -0
- package/src/agents/AgentRegistry.ts +418 -0
- package/src/agents/AgentStorage.ts +1133 -0
- package/src/agents/ConfigResolver.ts +229 -0
- package/src/agents/agent-installer.ts +236 -0
- package/src/agents/agent-loader.ts +241 -0
- package/src/agents/constants.ts +82 -0
- package/src/agents/errors.ts +48 -0
- package/src/agents/execution/AgentExecutor.ts +561 -0
- package/src/agents/execution/ExecutionContextFactory.ts +112 -0
- package/src/agents/execution/MessageCompiler.ts +597 -0
- package/src/agents/execution/MessageSyncer.ts +100 -0
- package/src/agents/execution/PostCompletionChecker.ts +278 -0
- package/src/agents/execution/ProgressMonitor.ts +50 -0
- package/src/agents/execution/RALResolver.ts +177 -0
- package/src/agents/execution/SessionManager.ts +181 -0
- package/src/agents/execution/StreamCallbacks.ts +312 -0
- package/src/agents/execution/StreamExecutionHandler.ts +579 -0
- package/src/agents/execution/StreamSetup.ts +313 -0
- package/src/agents/execution/ToolEventHandlers.ts +239 -0
- package/src/agents/execution/ToolExecutionTracker.ts +498 -0
- package/src/agents/execution/ToolResultUtils.ts +97 -0
- package/src/agents/execution/ToolSupervisionWrapper.ts +174 -0
- package/src/agents/execution/constants.ts +16 -0
- package/src/agents/execution/index.ts +3 -0
- package/src/agents/execution/types.ts +96 -0
- package/src/agents/execution/utils.ts +26 -0
- package/src/agents/index.ts +4 -0
- package/src/agents/script-installer.ts +266 -0
- package/src/agents/supervision/SupervisorLLMService.ts +253 -0
- package/src/agents/supervision/SupervisorOrchestrator.ts +471 -0
- package/src/agents/supervision/heuristics/ConsecutiveToolsWithoutTodoHeuristic.ts +73 -0
- package/src/agents/supervision/heuristics/DelegationClaimHeuristic.ts +80 -0
- package/src/agents/supervision/heuristics/HeuristicRegistry.ts +114 -0
- package/src/agents/supervision/heuristics/PendingTodosHeuristic.ts +93 -0
- package/src/agents/supervision/heuristics/SilentAgentHeuristic.ts +54 -0
- package/src/agents/supervision/heuristics/index.ts +5 -0
- package/src/agents/supervision/index.ts +28 -0
- package/src/agents/supervision/registerHeuristics.ts +110 -0
- package/src/agents/supervision/supervisionHealthCheck.ts +123 -0
- package/src/agents/supervision/types.ts +171 -0
- package/src/agents/tool-names.ts +46 -0
- package/src/agents/tool-normalization.ts +184 -0
- package/src/agents/types/index.ts +2 -0
- package/src/agents/types/runtime.ts +74 -0
- package/src/agents/types/storage.ts +145 -0
- package/src/commands/agent/import/index.ts +6 -0
- package/src/commands/agent/import/openclaw-distiller.ts +57 -0
- package/src/commands/agent/import/openclaw-reader.ts +141 -0
- package/src/commands/agent/import/openclaw.ts +154 -0
- package/src/commands/agent/index.ts +6 -0
- package/src/commands/agent.ts +215 -0
- package/src/commands/daemon.ts +198 -0
- package/src/commands/doctor.ts +134 -0
- package/src/commands/setup/embed.ts +228 -0
- package/src/commands/setup/global-system-prompt.ts +223 -0
- package/src/commands/setup/image.ts +179 -0
- package/src/commands/setup/index.ts +16 -0
- package/src/commands/setup/interactive.ts +95 -0
- package/src/commands/setup/llm.ts +38 -0
- package/src/commands/setup/onboarding.ts +294 -0
- package/src/commands/setup/providers.ts +27 -0
- package/src/constants.ts +34 -0
- package/src/conversations/ConversationDiskReader.ts +148 -0
- package/src/conversations/ConversationRegistry.ts +728 -0
- package/src/conversations/ConversationStore.ts +868 -0
- package/src/conversations/MessageBuilder.ts +866 -0
- package/src/conversations/executionTime.ts +62 -0
- package/src/conversations/formatters/DelegationXmlFormatter.ts +64 -0
- package/src/conversations/formatters/ThreadedConversationFormatter.ts +303 -0
- package/src/conversations/formatters/index.ts +9 -0
- package/src/conversations/formatters/utils/MessageFormatter.ts +46 -0
- package/src/conversations/formatters/utils/TimestampFormatter.ts +56 -0
- package/src/conversations/formatters/utils/TreeBuilder.ts +131 -0
- package/src/conversations/formatters/utils/TreeRenderer.ts +49 -0
- package/src/conversations/index.ts +2 -0
- package/src/conversations/persistence/ToolMessageStorage.ts +143 -0
- package/src/conversations/search/ConversationIndexManager.ts +393 -0
- package/src/conversations/search/QueryParser.ts +114 -0
- package/src/conversations/search/SearchEngine.ts +175 -0
- package/src/conversations/search/SnippetExtractor.ts +345 -0
- package/src/conversations/search/embeddings/ConversationEmbeddingService.ts +484 -0
- package/src/conversations/search/embeddings/ConversationIndexingJob.ts +320 -0
- package/src/conversations/search/embeddings/IndexingStateManager.ts +338 -0
- package/src/conversations/search/embeddings/index.ts +18 -0
- package/src/conversations/search/index.ts +49 -0
- package/src/conversations/search/types.ts +124 -0
- package/src/conversations/services/CategoryManager.ts +160 -0
- package/src/conversations/services/ConversationResolver.ts +296 -0
- package/src/conversations/services/ConversationSummarizer.ts +234 -0
- package/src/conversations/services/MetadataDebounceManager.ts +188 -0
- package/src/conversations/services/index.ts +2 -0
- package/src/conversations/types.ts +148 -0
- package/src/conversations/utils/content-utils.ts +69 -0
- package/src/conversations/utils/image-placeholder.ts +281 -0
- package/src/conversations/utils/image-url-utils.ts +171 -0
- package/src/conversations/utils/multimodal-content.ts +90 -0
- package/src/conversations/utils/tool-result-truncator.ts +159 -0
- package/src/daemon/Daemon.ts +1883 -0
- package/src/daemon/ProjectRuntime.ts +657 -0
- package/src/daemon/RestartState.ts +152 -0
- package/src/daemon/RuntimeLifecycle.ts +268 -0
- package/src/daemon/SubscriptionManager.ts +305 -0
- package/src/daemon/UnixSocketTransport.ts +318 -0
- package/src/daemon/filters/SubscriptionFilterBuilder.ts +119 -0
- package/src/daemon/index.ts +9 -0
- package/src/daemon/routing/DaemonRouter.ts +491 -0
- package/src/daemon/types.ts +150 -0
- package/src/daemon/utils/routing-log.ts +76 -0
- package/src/daemon/utils/telemetry.ts +173 -0
- package/src/event-handler/agentDeletion.ts +383 -0
- package/src/event-handler/index.ts +749 -0
- package/src/event-handler/newConversation.ts +165 -0
- package/src/event-handler/project.ts +166 -0
- package/src/event-handler/reply.ts +18 -0
- package/src/events/NDKAgentDefinition.ts +292 -0
- package/src/events/NDKAgentLesson.ts +106 -0
- package/src/events/NDKEventMetadata.ts +34 -0
- package/src/events/NDKMCPTool.ts +60 -0
- package/src/events/NDKProjectStatus.ts +384 -0
- package/src/events/index.ts +4 -0
- package/src/index.ts +126 -0
- package/src/lib/agent-home.ts +334 -0
- package/src/lib/error-formatter.ts +200 -0
- package/src/lib/fs/filesystem.ts +128 -0
- package/src/lib/fs/index.ts +1 -0
- package/src/lib/json-parser.ts +30 -0
- package/src/lib/string.ts +15 -0
- package/src/lib/time.ts +74 -0
- package/src/llm/ChunkHandler.ts +277 -0
- package/src/llm/FinishHandler.ts +250 -0
- package/src/llm/LLMConfigEditor.ts +154 -0
- package/src/llm/LLMServiceFactory.ts +230 -0
- package/src/llm/MessageProcessor.ts +90 -0
- package/src/llm/RecordingState.ts +37 -0
- package/src/llm/StreamPublisher.ts +40 -0
- package/src/llm/TracingUtils.ts +77 -0
- package/src/llm/chunk-validators.ts +57 -0
- package/src/llm/constants.ts +6 -0
- package/src/llm/index.ts +12 -0
- package/src/llm/meta/MetaModelResolver.ts +352 -0
- package/src/llm/meta/index.ts +11 -0
- package/src/llm/middleware/flight-recorder.ts +188 -0
- package/src/llm/providers/MockProvider.ts +332 -0
- package/src/llm/providers/agent/ClaudeCodeProvider.ts +343 -0
- package/src/llm/providers/agent/ClaudeCodeToolsAdapter.ts +203 -0
- package/src/llm/providers/agent/CodexAppServerProvider.ts +214 -0
- package/src/llm/providers/agent/CodexAppServerToolsAdapter.ts +91 -0
- package/src/llm/providers/agent/index.ts +10 -0
- package/src/llm/providers/base/AgentProvider.ts +107 -0
- package/src/llm/providers/base/BaseProvider.ts +114 -0
- package/src/llm/providers/base/StandardProvider.ts +38 -0
- package/src/llm/providers/base/index.ts +9 -0
- package/src/llm/providers/index.ts +106 -0
- package/src/llm/providers/key-manager.ts +238 -0
- package/src/llm/providers/ollama-models.ts +105 -0
- package/src/llm/providers/openrouter-models.ts +102 -0
- package/src/llm/providers/provider-ids.ts +18 -0
- package/src/llm/providers/registry/ProviderRegistry.ts +414 -0
- package/src/llm/providers/registry/index.ts +7 -0
- package/src/llm/providers/standard/AnthropicProvider.ts +71 -0
- package/src/llm/providers/standard/OllamaProvider.ts +59 -0
- package/src/llm/providers/standard/OpenAIProvider.ts +44 -0
- package/src/llm/providers/standard/OpenRouterProvider.ts +103 -0
- package/src/llm/providers/standard/index.ts +10 -0
- package/src/llm/providers/types.ts +194 -0
- package/src/llm/providers/usage-metadata.ts +78 -0
- package/src/llm/service.ts +713 -0
- package/src/llm/types.ts +167 -0
- package/src/llm/utils/ConfigurationManager.ts +650 -0
- package/src/llm/utils/ConfigurationTester.ts +229 -0
- package/src/llm/utils/ModelSelector.ts +212 -0
- package/src/llm/utils/ProviderConfigUI.ts +177 -0
- package/src/llm/utils/claudeCodePromptCompiler.ts +141 -0
- package/src/llm/utils/codex-models.ts +53 -0
- package/src/llm/utils/context-window-cache.ts +30 -0
- package/src/llm/utils/models-dev-cache.ts +267 -0
- package/src/llm/utils/provider-setup.ts +50 -0
- package/src/llm/utils/tool-errors.ts +78 -0
- package/src/llm/utils/usage.ts +74 -0
- package/src/logging/EventRoutingLogger.ts +205 -0
- package/src/nostr/AgentEventDecoder.ts +357 -0
- package/src/nostr/AgentEventEncoder.ts +677 -0
- package/src/nostr/AgentProfilePublisher.ts +657 -0
- package/src/nostr/AgentPublisher.ts +437 -0
- package/src/nostr/BlossomService.ts +226 -0
- package/src/nostr/InterventionPublisher.ts +132 -0
- package/src/nostr/TagExtractor.ts +228 -0
- package/src/nostr/collectEvents.ts +83 -0
- package/src/nostr/constants.ts +38 -0
- package/src/nostr/encryption.ts +26 -0
- package/src/nostr/index.ts +31 -0
- package/src/nostr/keys.ts +17 -0
- package/src/nostr/kinds.ts +37 -0
- package/src/nostr/ndkClient.ts +72 -0
- package/src/nostr/relays.ts +43 -0
- package/src/nostr/trace-context.ts +39 -0
- package/src/nostr/types.ts +227 -0
- package/src/nostr/utils.ts +84 -0
- package/src/prompts/core/FragmentRegistry.ts +30 -0
- package/src/prompts/core/PromptBuilder.ts +98 -0
- package/src/prompts/core/index.ts +3 -0
- package/src/prompts/core/types.ts +13 -0
- package/src/prompts/fragments/00-global-system-prompt.ts +44 -0
- package/src/prompts/fragments/01-agent-identity.ts +69 -0
- package/src/prompts/fragments/02-agent-home-directory.ts +114 -0
- package/src/prompts/fragments/03-system-reminders-explanation.ts +14 -0
- package/src/prompts/fragments/04-relay-configuration.ts +38 -0
- package/src/prompts/fragments/05-delegation-chain.ts +45 -0
- package/src/prompts/fragments/06-agent-todos.ts +74 -0
- package/src/prompts/fragments/06-todo-usage-guidance.ts +34 -0
- package/src/prompts/fragments/07-meta-project-context.ts +234 -0
- package/src/prompts/fragments/08-active-conversations.ts +382 -0
- package/src/prompts/fragments/09-recent-conversations.ts +153 -0
- package/src/prompts/fragments/10-referenced-article.ts +21 -0
- package/src/prompts/fragments/11-nudges.ts +134 -0
- package/src/prompts/fragments/12-skills.ts +127 -0
- package/src/prompts/fragments/13-available-nudges.ts +122 -0
- package/src/prompts/fragments/15-available-agents.ts +53 -0
- package/src/prompts/fragments/16-stay-in-your-lane.ts +41 -0
- package/src/prompts/fragments/17-todo-before-delegation.ts +39 -0
- package/src/prompts/fragments/20-voice-mode.ts +62 -0
- package/src/prompts/fragments/22-scheduled-tasks.ts +175 -0
- package/src/prompts/fragments/24-retrieved-lessons.ts +26 -0
- package/src/prompts/fragments/25-rag-instructions.ts +333 -0
- package/src/prompts/fragments/26-mcp-resources.ts +237 -0
- package/src/prompts/fragments/27-memorized-reports.ts +77 -0
- package/src/prompts/fragments/28-agent-directed-monitoring.ts +32 -0
- package/src/prompts/fragments/29-rag-collections.ts +50 -0
- package/src/prompts/fragments/30-worktree-context.ts +98 -0
- package/src/prompts/fragments/31-agents-md-guidance.ts +96 -0
- package/src/prompts/fragments/32-process-metrics.ts +72 -0
- package/src/prompts/fragments/debug-mode.ts +48 -0
- package/src/prompts/fragments/delegation-completion.ts +44 -0
- package/src/prompts/fragments/index.ts +91 -0
- package/src/prompts/index.ts +21 -0
- package/src/prompts/utils/systemPromptBuilder.ts +777 -0
- package/src/scripts/migrate-prefix-index.ts +157 -0
- package/src/services/AgentDefinitionMonitor.ts +701 -0
- package/src/services/ConfigService.ts +723 -0
- package/src/services/CooldownRegistry.ts +199 -0
- package/src/services/LLMOperationsRegistry.ts +424 -0
- package/src/services/OwnerAgentListService.ts +354 -0
- package/src/services/PubkeyService.ts +308 -0
- package/src/services/agents/AgentMetadataStore.ts +72 -0
- package/src/services/agents/AgentResolution.ts +59 -0
- package/src/services/agents/EscalationService.ts +281 -0
- package/src/services/agents/NDKAgentDiscovery.ts +95 -0
- package/src/services/agents/index.ts +7 -0
- package/src/services/agents-md/AgentsMdService.ts +184 -0
- package/src/services/agents-md/SystemReminderInjector.ts +238 -0
- package/src/services/agents-md/index.ts +11 -0
- package/src/services/apns/APNsClient.ts +203 -0
- package/src/services/apns/APNsService.ts +358 -0
- package/src/services/apns/index.ts +11 -0
- package/src/services/apns/types.ts +80 -0
- package/src/services/compression/CompressionService.ts +445 -0
- package/src/services/compression/compression-schema.ts +28 -0
- package/src/services/compression/compression-types.ts +74 -0
- package/src/services/compression/compression-utils.ts +587 -0
- package/src/services/config/types.ts +394 -0
- package/src/services/dispatch/AgentDispatchService.ts +937 -0
- package/src/services/dispatch/AgentRouter.ts +181 -0
- package/src/services/dispatch/DelegationCompletionHandler.ts +232 -0
- package/src/services/embedding/EmbeddingProvider.ts +188 -0
- package/src/services/embedding/index.ts +5 -0
- package/src/services/event-context/EventContextService.ts +108 -0
- package/src/services/event-context/index.ts +2 -0
- package/src/services/heuristics/ContextBuilder.ts +106 -0
- package/src/services/heuristics/HeuristicEngine.ts +200 -0
- package/src/services/heuristics/formatters.ts +58 -0
- package/src/services/heuristics/index.ts +12 -0
- package/src/services/heuristics/rules/index.ts +25 -0
- package/src/services/heuristics/rules/todoBeforeDelegation.ts +69 -0
- package/src/services/heuristics/rules/todoReminderOnToolUse.ts +63 -0
- package/src/services/heuristics/types.ts +144 -0
- package/src/services/image/ImageGenerationService.ts +389 -0
- package/src/services/image/index.ts +12 -0
- package/src/services/intervention/InterventionService.ts +1352 -0
- package/src/services/intervention/index.ts +7 -0
- package/src/services/mcp/MCPManager.ts +683 -0
- package/src/services/mcp/McpNotificationDelivery.ts +139 -0
- package/src/services/mcp/McpSubscriptionService.ts +653 -0
- package/src/services/mcp/mcpInstaller.ts +130 -0
- package/src/services/nip46/Nip46SigningLog.ts +81 -0
- package/src/services/nip46/Nip46SigningService.ts +467 -0
- package/src/services/nip46/index.ts +4 -0
- package/src/services/nudge/NudgeService.ts +224 -0
- package/src/services/nudge/NudgeWhitelistService.ts +382 -0
- package/src/services/nudge/index.ts +5 -0
- package/src/services/nudge/types.ts +83 -0
- package/src/services/projects/ProjectContext.ts +672 -0
- package/src/services/projects/ProjectContextStore.ts +102 -0
- package/src/services/projects/index.ts +6 -0
- package/src/services/prompt-compiler/index.ts +15 -0
- package/src/services/prompt-compiler/prompt-compiler-service.ts +1143 -0
- package/src/services/pubkey-gate/PubkeyGateService.ts +93 -0
- package/src/services/pubkey-gate/index.ts +1 -0
- package/src/services/rag/EmbeddingProviderFactory.ts +292 -0
- package/src/services/rag/LanceDBMaintenanceService.ts +211 -0
- package/src/services/rag/RAGDatabaseService.ts +173 -0
- package/src/services/rag/RAGOperations.ts +682 -0
- package/src/services/rag/RAGService.ts +240 -0
- package/src/services/rag/RagSubscriptionService.ts +618 -0
- package/src/services/rag/rag-utils.ts +174 -0
- package/src/services/ral/PendingDelegationsRegistry.ts +168 -0
- package/src/services/ral/RALRegistry.ts +2782 -0
- package/src/services/ral/index.ts +4 -0
- package/src/services/ral/types.ts +292 -0
- package/src/services/reports/LocalReportStore.ts +380 -0
- package/src/services/reports/ReportEmbeddingService.ts +430 -0
- package/src/services/reports/ReportService.ts +440 -0
- package/src/services/reports/articleUtils.ts +52 -0
- package/src/services/reports/index.ts +7 -0
- package/src/services/scheduling/SchedulerService.ts +1057 -0
- package/src/services/scheduling/errors.ts +14 -0
- package/src/services/scheduling/index.ts +7 -0
- package/src/services/scheduling/utils.ts +77 -0
- package/src/services/search/SearchProviderRegistry.ts +78 -0
- package/src/services/search/UnifiedSearchService.ts +218 -0
- package/src/services/search/index.ts +47 -0
- package/src/services/search/projectFilter.ts +22 -0
- package/src/services/search/providers/ConversationSearchProvider.ts +48 -0
- package/src/services/search/providers/LessonSearchProvider.ts +75 -0
- package/src/services/search/providers/ReportSearchProvider.ts +49 -0
- package/src/services/search/types.ts +144 -0
- package/src/services/skill/SkillService.ts +482 -0
- package/src/services/skill/index.ts +2 -0
- package/src/services/skill/types.ts +70 -0
- package/src/services/status/OperationsStatusService.ts +276 -0
- package/src/services/status/ProjectStatusService.ts +522 -0
- package/src/services/status/index.ts +11 -0
- package/src/services/storage/PrefixKVStore.ts +242 -0
- package/src/services/storage/index.ts +1 -0
- package/src/services/system-reminder/SystemReminderUtils.ts +96 -0
- package/src/services/system-reminder/index.ts +7 -0
- package/src/services/trust-pubkeys/TrustPubkeyService.ts +325 -0
- package/src/services/trust-pubkeys/index.ts +2 -0
- package/src/telemetry/ConversationSpanManager.ts +111 -0
- package/src/telemetry/EventLoopMonitor.ts +206 -0
- package/src/telemetry/LLMSpanRegistry.ts +20 -0
- package/src/telemetry/NostrSpanProcessor.ts +89 -0
- package/src/telemetry/ToolCallSpanProcessor.ts +66 -0
- package/src/telemetry/diagnostics.ts +27 -0
- package/src/telemetry/setup.ts +120 -0
- package/src/tools/implementations/agents_discover.ts +121 -0
- package/src/tools/implementations/agents_hire.ts +127 -0
- package/src/tools/implementations/agents_list.ts +96 -0
- package/src/tools/implementations/agents_publish.ts +611 -0
- package/src/tools/implementations/agents_read.ts +173 -0
- package/src/tools/implementations/agents_write.ts +200 -0
- package/src/tools/implementations/ask.ts +411 -0
- package/src/tools/implementations/change_model.ts +141 -0
- package/src/tools/implementations/conversation_get.ts +661 -0
- package/src/tools/implementations/conversation_list.ts +377 -0
- package/src/tools/implementations/conversation_search.ts +370 -0
- package/src/tools/implementations/delegate.ts +327 -0
- package/src/tools/implementations/delegate_crossproject.ts +209 -0
- package/src/tools/implementations/delegate_followup.ts +300 -0
- package/src/tools/implementations/fs_edit.ts +162 -0
- package/src/tools/implementations/fs_glob.ts +182 -0
- package/src/tools/implementations/fs_grep.ts +513 -0
- package/src/tools/implementations/fs_read.ts +332 -0
- package/src/tools/implementations/fs_write.ts +113 -0
- package/src/tools/implementations/generate_image.ts +259 -0
- package/src/tools/implementations/home_fs.ts +515 -0
- package/src/tools/implementations/kill.ts +651 -0
- package/src/tools/implementations/learn.ts +166 -0
- package/src/tools/implementations/lesson-formatter.ts +38 -0
- package/src/tools/implementations/lesson_delete.ts +164 -0
- package/src/tools/implementations/lesson_get.ts +105 -0
- package/src/tools/implementations/lessons_list.ts +153 -0
- package/src/tools/implementations/mcp_resource_read.ts +161 -0
- package/src/tools/implementations/mcp_subscribe.ts +158 -0
- package/src/tools/implementations/mcp_subscription_stop.ts +85 -0
- package/src/tools/implementations/nostr_fetch.ts +149 -0
- package/src/tools/implementations/nostr_publish_as_user.ts +353 -0
- package/src/tools/implementations/project_list.ts +146 -0
- package/src/tools/implementations/rag_add_documents.ts +573 -0
- package/src/tools/implementations/rag_create_collection.ts +65 -0
- package/src/tools/implementations/rag_delete_collection.ts +68 -0
- package/src/tools/implementations/rag_list_collections.ts +77 -0
- package/src/tools/implementations/rag_query.ts +107 -0
- package/src/tools/implementations/rag_subscription_create.ts +105 -0
- package/src/tools/implementations/rag_subscription_delete.ts +80 -0
- package/src/tools/implementations/rag_subscription_get.ts +123 -0
- package/src/tools/implementations/rag_subscription_list.ts +128 -0
- package/src/tools/implementations/report_delete.ts +79 -0
- package/src/tools/implementations/report_read.ts +160 -0
- package/src/tools/implementations/report_write.ts +278 -0
- package/src/tools/implementations/reports_list.ts +77 -0
- package/src/tools/implementations/schedule_task.ts +104 -0
- package/src/tools/implementations/schedule_task_cancel.ts +62 -0
- package/src/tools/implementations/schedule_task_once.ts +128 -0
- package/src/tools/implementations/schedule_tasks_list.ts +79 -0
- package/src/tools/implementations/search.ts +160 -0
- package/src/tools/implementations/shell.ts +553 -0
- package/src/tools/implementations/todo.ts +260 -0
- package/src/tools/implementations/upload_blob.ts +381 -0
- package/src/tools/implementations/web_fetch.ts +153 -0
- package/src/tools/implementations/web_search.ts +250 -0
- package/src/tools/registry.ts +670 -0
- package/src/tools/types.ts +177 -0
- package/src/tools/utils.ts +256 -0
- package/src/types/event-ids.ts +320 -0
- package/src/types/index.ts +46 -0
- package/src/utils/agentFetcher.ts +107 -0
- package/src/utils/cli-error.ts +29 -0
- package/src/utils/conversation-id.ts +27 -0
- package/src/utils/conversation-utils.ts +1 -0
- package/src/utils/delegation-chain.ts +357 -0
- package/src/utils/error-handler.ts +42 -0
- package/src/utils/git/gitignore.ts +69 -0
- package/src/utils/git/index.ts +2 -0
- package/src/utils/git/initializeGitRepo.ts +204 -0
- package/src/utils/git/worktree.ts +260 -0
- package/src/utils/lessonFormatter.ts +70 -0
- package/src/utils/lessonTrust.ts +24 -0
- package/src/utils/lockfile.ts +123 -0
- package/src/utils/logger.ts +149 -0
- package/src/utils/nostr-entity-parser.ts +365 -0
- package/src/utils/process.ts +49 -0
- package/src/wrapper.ts +262 -0
- package/tsconfig.json +41 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { logger } from "@/utils/logger";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* JSON-serializable primitive value.
|
|
5
|
+
*/
|
|
6
|
+
export type JsonPrimitive = string | number | boolean | null;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* JSON-serializable value (recursive).
|
|
10
|
+
*/
|
|
11
|
+
export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* JSON-serializable object.
|
|
15
|
+
*/
|
|
16
|
+
export interface JsonObject {
|
|
17
|
+
[key: string]: JsonValue;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* JSON-serializable array.
|
|
22
|
+
*/
|
|
23
|
+
export type JsonArray = JsonValue[];
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Document metadata with known common fields and extensibility.
|
|
27
|
+
*/
|
|
28
|
+
export interface DocumentMetadata {
|
|
29
|
+
language?: string;
|
|
30
|
+
type?: string;
|
|
31
|
+
category?: string;
|
|
32
|
+
tags?: string[];
|
|
33
|
+
author?: string;
|
|
34
|
+
title?: string;
|
|
35
|
+
uri?: string;
|
|
36
|
+
[key: string]: JsonValue | undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* LanceDB stored document structure (what gets stored in the DB).
|
|
41
|
+
*/
|
|
42
|
+
export interface LanceDBStoredDocument {
|
|
43
|
+
id: string;
|
|
44
|
+
content: string;
|
|
45
|
+
vector: number[];
|
|
46
|
+
metadata: string;
|
|
47
|
+
timestamp: number;
|
|
48
|
+
source: string;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* LanceDB query result structure (what comes back from queries).
|
|
53
|
+
*/
|
|
54
|
+
export interface LanceDBResult {
|
|
55
|
+
id: string | undefined;
|
|
56
|
+
content: string | undefined;
|
|
57
|
+
metadata?: string | Record<string, unknown>;
|
|
58
|
+
timestamp: number | undefined;
|
|
59
|
+
source: string | undefined;
|
|
60
|
+
vector?: number[];
|
|
61
|
+
_distance?: number;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* RAG-specific document interface for mapping.
|
|
66
|
+
*/
|
|
67
|
+
export interface MappedRAGDocument {
|
|
68
|
+
id: string;
|
|
69
|
+
content: string;
|
|
70
|
+
metadata: DocumentMetadata;
|
|
71
|
+
timestamp: number;
|
|
72
|
+
source: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Type guard to validate JSON object structure.
|
|
77
|
+
*/
|
|
78
|
+
function isJsonObject(value: unknown): value is JsonObject {
|
|
79
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Type guard to validate DocumentMetadata structure.
|
|
84
|
+
*/
|
|
85
|
+
export function isDocumentMetadata(value: unknown): value is DocumentMetadata {
|
|
86
|
+
if (!isJsonObject(value)) return false;
|
|
87
|
+
|
|
88
|
+
// Validate optional known fields if present
|
|
89
|
+
if (value.language !== undefined && typeof value.language !== "string") return false;
|
|
90
|
+
if (value.type !== undefined && typeof value.type !== "string") return false;
|
|
91
|
+
if (value.category !== undefined && typeof value.category !== "string") return false;
|
|
92
|
+
if (value.author !== undefined && typeof value.author !== "string") return false;
|
|
93
|
+
if (value.title !== undefined && typeof value.title !== "string") return false;
|
|
94
|
+
if (value.uri !== undefined && typeof value.uri !== "string") return false;
|
|
95
|
+
|
|
96
|
+
// Deep validation for tags array - ensure all elements are strings
|
|
97
|
+
if (value.tags !== undefined) {
|
|
98
|
+
if (!Array.isArray(value.tags)) return false;
|
|
99
|
+
if (!value.tags.every((tag): tag is string => typeof tag === "string")) return false;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Parse document metadata from JSON string or object with type validation.
|
|
107
|
+
*/
|
|
108
|
+
export function parseDocumentMetadata(
|
|
109
|
+
metadata: string | DocumentMetadata | Record<string, unknown> | undefined
|
|
110
|
+
): DocumentMetadata {
|
|
111
|
+
if (!metadata) return {};
|
|
112
|
+
|
|
113
|
+
if (typeof metadata === "string") {
|
|
114
|
+
try {
|
|
115
|
+
const parsed = JSON.parse(metadata);
|
|
116
|
+
if (!isDocumentMetadata(parsed)) {
|
|
117
|
+
logger.warn("Parsed metadata does not match DocumentMetadata schema", { parsed });
|
|
118
|
+
return {};
|
|
119
|
+
}
|
|
120
|
+
return parsed;
|
|
121
|
+
} catch (error) {
|
|
122
|
+
logger.warn("Failed to parse document metadata", { error, metadata });
|
|
123
|
+
return {};
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (!isDocumentMetadata(metadata)) {
|
|
128
|
+
logger.warn("Metadata object does not match DocumentMetadata schema", { metadata });
|
|
129
|
+
return {};
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return metadata;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Map LanceDB query result to RAG document format.
|
|
137
|
+
* Handles metadata parsing and field extraction.
|
|
138
|
+
*/
|
|
139
|
+
export function mapLanceResultToDocument(result: LanceDBResult): MappedRAGDocument {
|
|
140
|
+
return {
|
|
141
|
+
id: result.id ?? "",
|
|
142
|
+
content: result.content ?? "",
|
|
143
|
+
metadata: parseDocumentMetadata(result.metadata),
|
|
144
|
+
timestamp: result.timestamp ?? Date.now(),
|
|
145
|
+
source: result.source ?? "unknown",
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Calculate relevance score from vector distance.
|
|
151
|
+
* Converts L2 (Euclidean) distance to similarity score (0-1 range).
|
|
152
|
+
*
|
|
153
|
+
* METRIC ASSUMPTION: This formula assumes L2 (Euclidean) distance metric.
|
|
154
|
+
* If LanceDB is configured to use a different metric (e.g., cosine similarity),
|
|
155
|
+
* this conversion would need adjustment:
|
|
156
|
+
* - L2 distance: Use 1/(1+d) as implemented here
|
|
157
|
+
* - Cosine similarity: Already in [0,1] or [-1,1], may need different mapping
|
|
158
|
+
* - Cosine distance: Use 1-d for distances in [0,2] range
|
|
159
|
+
*
|
|
160
|
+
* OpenAI's text-embedding-3-large returns L2 distances typically in
|
|
161
|
+
* the ~1.2-1.8 range, NOT normalized [0,1]. The formula 1/(1+distance)
|
|
162
|
+
* properly handles this:
|
|
163
|
+
* - distance = 0 → similarity = 1.0
|
|
164
|
+
* - distance = 1 → similarity = 0.5
|
|
165
|
+
* - distance = 1.5 → similarity = 0.4
|
|
166
|
+
* - distance = 2 → similarity = 0.33
|
|
167
|
+
*/
|
|
168
|
+
export function calculateRelevanceScore(distance: number | undefined): number {
|
|
169
|
+
if (distance === undefined || distance === null) return 0;
|
|
170
|
+
if (!Number.isFinite(distance)) return 0;
|
|
171
|
+
if (distance < 0) return 0;
|
|
172
|
+
// Convert L2 distance to similarity: closer distance = higher similarity
|
|
173
|
+
return 1 / (1 + distance);
|
|
174
|
+
}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PendingDelegationsRegistry - Tracks event references for tag correlation
|
|
3
|
+
*
|
|
4
|
+
* This registry stores event references at creation time (in AgentPublisher/tools)
|
|
5
|
+
* and retrieves them at tool completion time (in ToolExecutionTracker).
|
|
6
|
+
*
|
|
7
|
+
* This solves the problem of MCP result transformation stripping reference info:
|
|
8
|
+
* - Registration happens at the source before any transformation
|
|
9
|
+
* - Consumption happens in ToolExecutionTracker.completeExecution
|
|
10
|
+
* - Works identically for both MCP and non-MCP code paths
|
|
11
|
+
*
|
|
12
|
+
* Supports:
|
|
13
|
+
* - Delegation event IDs (q-tags) - for ask/delegate tools
|
|
14
|
+
* - Addressable events (a-tags) - for report_write tool
|
|
15
|
+
*
|
|
16
|
+
* Key: (agentPubkey, conversationId)
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
import { logger } from "@/utils/logger";
|
|
20
|
+
|
|
21
|
+
type RegistryKey = `${string}:${string}`; // agentPubkey:conversationId
|
|
22
|
+
|
|
23
|
+
interface PendingReferences {
|
|
24
|
+
delegations: string[];
|
|
25
|
+
addressableEvents: string[];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
class PendingDelegationsRegistryImpl {
|
|
29
|
+
private pending = new Map<RegistryKey, PendingReferences>();
|
|
30
|
+
|
|
31
|
+
private makeKey(agentPubkey: string, conversationId: string): RegistryKey {
|
|
32
|
+
return `${agentPubkey}:${conversationId}`;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
private getOrCreate(key: RegistryKey): PendingReferences {
|
|
36
|
+
let refs = this.pending.get(key);
|
|
37
|
+
if (!refs) {
|
|
38
|
+
refs = { delegations: [], addressableEvents: [] };
|
|
39
|
+
this.pending.set(key, refs);
|
|
40
|
+
}
|
|
41
|
+
return refs;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Register a delegation event ID (for q-tags).
|
|
46
|
+
* Called by AgentPublisher when creating ask/delegate events.
|
|
47
|
+
*/
|
|
48
|
+
register(agentPubkey: string, conversationId: string, delegationEventId: string): void {
|
|
49
|
+
const key = this.makeKey(agentPubkey, conversationId);
|
|
50
|
+
const refs = this.getOrCreate(key);
|
|
51
|
+
refs.delegations.push(delegationEventId);
|
|
52
|
+
|
|
53
|
+
logger.debug("[PendingDelegationsRegistry] Registered delegation", {
|
|
54
|
+
agentPubkey: agentPubkey.substring(0, 8),
|
|
55
|
+
conversationId: conversationId.substring(0, 8),
|
|
56
|
+
delegationEventId: delegationEventId.substring(0, 8),
|
|
57
|
+
totalPending: refs.delegations.length,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Register an addressable event reference (for a-tags).
|
|
63
|
+
* Called by tools that create addressable events (e.g., report_write).
|
|
64
|
+
* Format: "30023:pubkey:d-tag"
|
|
65
|
+
*/
|
|
66
|
+
registerAddressable(agentPubkey: string, conversationId: string, addressableRef: string): void {
|
|
67
|
+
const key = this.makeKey(agentPubkey, conversationId);
|
|
68
|
+
const refs = this.getOrCreate(key);
|
|
69
|
+
refs.addressableEvents.push(addressableRef);
|
|
70
|
+
|
|
71
|
+
logger.debug("[PendingDelegationsRegistry] Registered addressable event", {
|
|
72
|
+
agentPubkey: agentPubkey.substring(0, 8),
|
|
73
|
+
conversationId: conversationId.substring(0, 8),
|
|
74
|
+
addressableRef: addressableRef.substring(0, 30),
|
|
75
|
+
totalPending: refs.addressableEvents.length,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Consume (retrieve and clear) all pending delegation event IDs.
|
|
81
|
+
* Called by ToolExecutionTracker when completing a delegation tool.
|
|
82
|
+
*/
|
|
83
|
+
consume(agentPubkey: string, conversationId: string): string[] {
|
|
84
|
+
const key = this.makeKey(agentPubkey, conversationId);
|
|
85
|
+
const refs = this.pending.get(key);
|
|
86
|
+
if (!refs) return [];
|
|
87
|
+
|
|
88
|
+
const delegations = refs.delegations;
|
|
89
|
+
refs.delegations = [];
|
|
90
|
+
|
|
91
|
+
// Clean up if both arrays are empty
|
|
92
|
+
if (refs.addressableEvents.length === 0) {
|
|
93
|
+
this.pending.delete(key);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (delegations.length > 0) {
|
|
97
|
+
logger.debug("[PendingDelegationsRegistry] Consumed delegations", {
|
|
98
|
+
agentPubkey: agentPubkey.substring(0, 8),
|
|
99
|
+
conversationId: conversationId.substring(0, 8),
|
|
100
|
+
count: delegations.length,
|
|
101
|
+
eventIds: delegations.map((id) => id.substring(0, 8)),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return delegations;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Consume (retrieve and clear) all pending addressable event references.
|
|
110
|
+
* Called by ToolExecutionTracker when completing an addressable event tool.
|
|
111
|
+
*/
|
|
112
|
+
consumeAddressable(agentPubkey: string, conversationId: string): string[] {
|
|
113
|
+
const key = this.makeKey(agentPubkey, conversationId);
|
|
114
|
+
const refs = this.pending.get(key);
|
|
115
|
+
if (!refs) return [];
|
|
116
|
+
|
|
117
|
+
const addressableEvents = refs.addressableEvents;
|
|
118
|
+
refs.addressableEvents = [];
|
|
119
|
+
|
|
120
|
+
// Clean up if both arrays are empty
|
|
121
|
+
if (refs.delegations.length === 0) {
|
|
122
|
+
this.pending.delete(key);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (addressableEvents.length > 0) {
|
|
126
|
+
logger.debug("[PendingDelegationsRegistry] Consumed addressable events", {
|
|
127
|
+
agentPubkey: agentPubkey.substring(0, 8),
|
|
128
|
+
conversationId: conversationId.substring(0, 8),
|
|
129
|
+
count: addressableEvents.length,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return addressableEvents;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Peek at pending delegations without consuming them.
|
|
138
|
+
*/
|
|
139
|
+
peek(agentPubkey: string, conversationId: string): string[] {
|
|
140
|
+
const key = this.makeKey(agentPubkey, conversationId);
|
|
141
|
+
return [...(this.pending.get(key)?.delegations || [])];
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Peek at pending addressable events without consuming them.
|
|
146
|
+
*/
|
|
147
|
+
peekAddressable(agentPubkey: string, conversationId: string): string[] {
|
|
148
|
+
const key = this.makeKey(agentPubkey, conversationId);
|
|
149
|
+
return [...(this.pending.get(key)?.addressableEvents || [])];
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Clear all pending references.
|
|
154
|
+
*/
|
|
155
|
+
clear(): void {
|
|
156
|
+
this.pending.clear();
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Get the number of conversations with pending references.
|
|
161
|
+
*/
|
|
162
|
+
get size(): number {
|
|
163
|
+
return this.pending.size;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Export singleton instance
|
|
168
|
+
export const PendingDelegationsRegistry = new PendingDelegationsRegistryImpl();
|