@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,394 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Unified configuration types for TENEX
|
|
5
|
+
* All configuration files use the same schemas for both global and project contexts
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// =====================================================================================
|
|
9
|
+
// MAIN CONFIG SCHEMA (config.json)
|
|
10
|
+
// =====================================================================================
|
|
11
|
+
|
|
12
|
+
export interface TenexConfig {
|
|
13
|
+
// Global fields
|
|
14
|
+
whitelistedPubkeys?: string[];
|
|
15
|
+
tenexPrivateKey?: string; // Backend private key for publishing TENEX announcements
|
|
16
|
+
backendName?: string; // Name for the TENEX backend profile (default: "tenex backend")
|
|
17
|
+
projectsBase?: string; // Base directory for all projects (default: ~/tenex)
|
|
18
|
+
relays?: string[]; // Nostr relay URLs
|
|
19
|
+
blossomServerUrl?: string; // Blossom server URL for blob uploads (default: https://blossom.primal.net)
|
|
20
|
+
|
|
21
|
+
// Logging configuration
|
|
22
|
+
logging?: {
|
|
23
|
+
logFile?: string; // Path to log file (default: ~/.tenex/daemon.log)
|
|
24
|
+
level?: "silent" | "error" | "warn" | "info" | "debug"; // Log level (inherits from LOG_LEVEL env var if not set)
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
// Summarization configuration
|
|
28
|
+
summarization?: {
|
|
29
|
+
inactivityTimeout?: number; // Milliseconds to wait after last activity before generating summary (default: 300000 = 5 minutes)
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Telemetry configuration
|
|
33
|
+
telemetry?: {
|
|
34
|
+
enabled?: boolean; // Enable OpenTelemetry tracing (default: true)
|
|
35
|
+
serviceName?: string; // OTL trace service name (default: 'tenex-daemon')
|
|
36
|
+
endpoint?: string; // OTLP HTTP endpoint URL (default: http://localhost:4318/v1/traces)
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Global system prompt configuration
|
|
40
|
+
// When set, this content is added to ALL projects' system prompts
|
|
41
|
+
globalSystemPrompt?: {
|
|
42
|
+
enabled?: boolean; // Enable the global system prompt (default: true when content exists)
|
|
43
|
+
content?: string; // The actual system prompt content
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// Escalation agent configuration
|
|
47
|
+
// When set, ask() tool calls are routed through this agent instead of directly to the user
|
|
48
|
+
escalation?: {
|
|
49
|
+
agent?: string; // Agent slug to route ask() calls through (acts as first line of defense)
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
// Compression configuration
|
|
53
|
+
// Controls conversation history compression to manage context window
|
|
54
|
+
compression?: {
|
|
55
|
+
enabled?: boolean; // Enable compression (default: true)
|
|
56
|
+
tokenThreshold?: number; // Token count that triggers compression (default: 50000)
|
|
57
|
+
tokenBudget?: number; // Target token count after compression (default: 40000)
|
|
58
|
+
slidingWindowSize?: number; // Number of recent messages to keep in fallback mode (default: 50)
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// Intervention configuration
|
|
62
|
+
// Monitors agent work completions and triggers human-replica review if user doesn't respond
|
|
63
|
+
intervention?: {
|
|
64
|
+
enabled?: boolean; // Enable intervention monitoring (default: false)
|
|
65
|
+
agent?: string; // Agent slug to notify when user doesn't respond (required if enabled)
|
|
66
|
+
timeout?: number; // Milliseconds to wait for user response (default: 300000 = 5 minutes)
|
|
67
|
+
conversationInactivityTimeoutSeconds?: number; // Seconds since last user message to skip intervention (default: 120 = 2 minutes). If user was active within this window when agent tags them, skip intervention entirely.
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// APNs push notification configuration
|
|
71
|
+
apns?: {
|
|
72
|
+
enabled?: boolean; // Master switch (default: false)
|
|
73
|
+
keyPath?: string; // Path to .p8 key file from Apple
|
|
74
|
+
keyId?: string; // Apple Key ID (from developer portal)
|
|
75
|
+
teamId?: string; // Apple Team ID
|
|
76
|
+
bundleId?: string; // App Bundle ID (e.g., com.example.tenex)
|
|
77
|
+
production?: boolean; // true = api.push.apple.com, false = api.sandbox.push.apple.com
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// NIP-46 remote signing configuration
|
|
81
|
+
nip46?: {
|
|
82
|
+
enabled?: boolean; // Master switch (default: false)
|
|
83
|
+
signingTimeoutMs?: number; // Per-request timeout (default: 30000)
|
|
84
|
+
maxRetries?: number; // Per-request retries (default: 2)
|
|
85
|
+
owners?: Record<string, { // Per-owner config, keyed by hex pubkey
|
|
86
|
+
bunkerUri?: string; // bunker://pubkey?relay=wss://...
|
|
87
|
+
}>;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// Project fields (optional for global config)
|
|
91
|
+
description?: string;
|
|
92
|
+
repoUrl?: string;
|
|
93
|
+
projectNaddr?: string;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export const TenexConfigSchema = z.object({
|
|
97
|
+
whitelistedPubkeys: z.array(z.string()).optional(),
|
|
98
|
+
tenexPrivateKey: z.string().optional(),
|
|
99
|
+
backendName: z.string().optional(),
|
|
100
|
+
projectsBase: z.string().optional(),
|
|
101
|
+
relays: z.array(z.string()).optional(),
|
|
102
|
+
blossomServerUrl: z.string().optional(),
|
|
103
|
+
logging: z
|
|
104
|
+
.object({
|
|
105
|
+
logFile: z.string().optional(),
|
|
106
|
+
level: z.enum(["silent", "error", "warn", "info", "debug"]).optional(),
|
|
107
|
+
})
|
|
108
|
+
.optional(),
|
|
109
|
+
summarization: z
|
|
110
|
+
.object({
|
|
111
|
+
inactivityTimeout: z.number().optional(),
|
|
112
|
+
})
|
|
113
|
+
.optional(),
|
|
114
|
+
telemetry: z
|
|
115
|
+
.object({
|
|
116
|
+
enabled: z.boolean().optional(),
|
|
117
|
+
serviceName: z.string().optional(),
|
|
118
|
+
endpoint: z.string().optional(),
|
|
119
|
+
})
|
|
120
|
+
.optional(),
|
|
121
|
+
globalSystemPrompt: z
|
|
122
|
+
.object({
|
|
123
|
+
enabled: z.boolean().optional(),
|
|
124
|
+
content: z.string().optional(),
|
|
125
|
+
})
|
|
126
|
+
.optional(),
|
|
127
|
+
escalation: z
|
|
128
|
+
.object({
|
|
129
|
+
agent: z.string().optional(),
|
|
130
|
+
})
|
|
131
|
+
.optional(),
|
|
132
|
+
compression: z
|
|
133
|
+
.object({
|
|
134
|
+
enabled: z.boolean().optional(),
|
|
135
|
+
tokenThreshold: z.number().optional(),
|
|
136
|
+
tokenBudget: z.number().optional(),
|
|
137
|
+
slidingWindowSize: z.number().optional(),
|
|
138
|
+
})
|
|
139
|
+
.optional(),
|
|
140
|
+
intervention: z
|
|
141
|
+
.object({
|
|
142
|
+
enabled: z.boolean().optional(),
|
|
143
|
+
agent: z.string().optional(),
|
|
144
|
+
timeout: z.number().optional(),
|
|
145
|
+
conversationInactivityTimeoutSeconds: z.number().optional(),
|
|
146
|
+
})
|
|
147
|
+
.optional(),
|
|
148
|
+
apns: z
|
|
149
|
+
.object({
|
|
150
|
+
enabled: z.boolean().optional(),
|
|
151
|
+
keyPath: z.string().optional(),
|
|
152
|
+
keyId: z.string().optional(),
|
|
153
|
+
teamId: z.string().optional(),
|
|
154
|
+
bundleId: z.string().optional(),
|
|
155
|
+
production: z.boolean().optional(),
|
|
156
|
+
})
|
|
157
|
+
.optional(),
|
|
158
|
+
nip46: z
|
|
159
|
+
.object({
|
|
160
|
+
enabled: z.boolean().optional(),
|
|
161
|
+
signingTimeoutMs: z.number().optional(),
|
|
162
|
+
maxRetries: z.number().optional(),
|
|
163
|
+
owners: z
|
|
164
|
+
.record(
|
|
165
|
+
z.string(),
|
|
166
|
+
z.object({
|
|
167
|
+
bunkerUri: z.string().optional(),
|
|
168
|
+
})
|
|
169
|
+
)
|
|
170
|
+
.optional(),
|
|
171
|
+
})
|
|
172
|
+
.optional(),
|
|
173
|
+
description: z.string().optional(),
|
|
174
|
+
repoUrl: z.string().optional(),
|
|
175
|
+
projectNaddr: z.string().optional(),
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
// =====================================================================================
|
|
179
|
+
// LLM SCHEMA (llms.json)
|
|
180
|
+
// =====================================================================================
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Meta model variant configuration
|
|
184
|
+
* Defines a variant within a meta model that maps to a specific underlying model
|
|
185
|
+
*/
|
|
186
|
+
export interface MetaModelVariant {
|
|
187
|
+
/** The underlying LLM configuration name to use for this variant */
|
|
188
|
+
model: string;
|
|
189
|
+
/** Keywords that trigger this variant (e.g., ["think", "ponder"]) */
|
|
190
|
+
keywords?: string[];
|
|
191
|
+
/** Description of when to use this variant - shown in system prompt */
|
|
192
|
+
description?: string;
|
|
193
|
+
/** Optional additional system prompt to inject when this variant is active */
|
|
194
|
+
systemPrompt?: string;
|
|
195
|
+
/** Priority tier for conflict resolution (higher number = higher priority) */
|
|
196
|
+
tier?: number;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Meta model configuration
|
|
201
|
+
* A meta model is a virtual model that dynamically selects from underlying models
|
|
202
|
+
*/
|
|
203
|
+
export interface MetaModelConfiguration {
|
|
204
|
+
/** Must be "meta" to identify this as a meta model */
|
|
205
|
+
provider: "meta";
|
|
206
|
+
/** Map of variant names to their configurations */
|
|
207
|
+
variants: Record<string, MetaModelVariant>;
|
|
208
|
+
/** Default variant to use when no keyword matches */
|
|
209
|
+
default: string;
|
|
210
|
+
/** Optional description shown in system prompt preamble */
|
|
211
|
+
description?: string;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Individual LLM configuration
|
|
216
|
+
*/
|
|
217
|
+
export interface LLMConfiguration {
|
|
218
|
+
provider: string;
|
|
219
|
+
model: string;
|
|
220
|
+
temperature?: number;
|
|
221
|
+
maxTokens?: number;
|
|
222
|
+
topP?: number;
|
|
223
|
+
/** Reasoning effort level (for codex-app-server provider) */
|
|
224
|
+
reasoningEffort?: "none" | "low" | "medium" | "high" | "xhigh";
|
|
225
|
+
[key: string]: unknown; // Allow additional provider-specific settings
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Type guard to check if a configuration is a meta model
|
|
230
|
+
*/
|
|
231
|
+
export function isMetaModelConfiguration(config: LLMConfiguration | MetaModelConfiguration): config is MetaModelConfiguration {
|
|
232
|
+
return config.provider === "meta" && "variants" in config;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Any LLM configuration type (standard or meta model)
|
|
237
|
+
*/
|
|
238
|
+
export type AnyLLMConfiguration = LLMConfiguration | MetaModelConfiguration;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Main LLM configuration structure
|
|
242
|
+
*/
|
|
243
|
+
export interface TenexLLMs {
|
|
244
|
+
configurations: Record<string, AnyLLMConfiguration>;
|
|
245
|
+
default?: string;
|
|
246
|
+
summarization?: string; // Named config to use for generating summaries (kind 513 events)
|
|
247
|
+
supervision?: string; // Named config to use for agent supervision
|
|
248
|
+
search?: string; // Named config to use for search operations
|
|
249
|
+
promptCompilation?: string; // Named config to use for prompt compilation (compiling lessons into system prompts)
|
|
250
|
+
compression?: string; // Named config to use for conversation history compression
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Schema for meta model variant
|
|
255
|
+
*/
|
|
256
|
+
export const MetaModelVariantSchema = z.object({
|
|
257
|
+
model: z.string(),
|
|
258
|
+
keywords: z.array(z.string()).optional(),
|
|
259
|
+
description: z.string().optional(),
|
|
260
|
+
systemPrompt: z.string().optional(),
|
|
261
|
+
tier: z.number().optional(),
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Schema for meta model configuration
|
|
266
|
+
*/
|
|
267
|
+
export const MetaModelConfigurationSchema = z.object({
|
|
268
|
+
provider: z.literal("meta"),
|
|
269
|
+
variants: z.record(z.string(), MetaModelVariantSchema),
|
|
270
|
+
default: z.string(),
|
|
271
|
+
description: z.string().optional(),
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Schema for standard LLM configuration
|
|
276
|
+
*/
|
|
277
|
+
export const StandardLLMConfigurationSchema = z
|
|
278
|
+
.object({
|
|
279
|
+
provider: z.string(),
|
|
280
|
+
model: z.string(),
|
|
281
|
+
temperature: z.number().optional(),
|
|
282
|
+
maxTokens: z.number().optional(),
|
|
283
|
+
topP: z.number().optional(),
|
|
284
|
+
reasoningEffort: z.enum(["none", "low", "medium", "high", "xhigh"]).optional(),
|
|
285
|
+
})
|
|
286
|
+
.passthrough(); // Allow additional properties
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Union schema that accepts either standard or meta model configurations
|
|
290
|
+
*/
|
|
291
|
+
export const LLMConfigurationSchema = z.union([
|
|
292
|
+
MetaModelConfigurationSchema,
|
|
293
|
+
StandardLLMConfigurationSchema,
|
|
294
|
+
]);
|
|
295
|
+
|
|
296
|
+
export const TenexLLMsSchema = z.object({
|
|
297
|
+
configurations: z.record(z.string(), LLMConfigurationSchema).default({}),
|
|
298
|
+
default: z.string().optional(),
|
|
299
|
+
summarization: z.string().optional(),
|
|
300
|
+
supervision: z.string().optional(),
|
|
301
|
+
search: z.string().optional(),
|
|
302
|
+
promptCompilation: z.string().optional(),
|
|
303
|
+
compression: z.string().optional(),
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
// =====================================================================================
|
|
307
|
+
// PROVIDER CREDENTIALS SCHEMA (providers.json)
|
|
308
|
+
// =====================================================================================
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Provider credentials configuration
|
|
312
|
+
* Contains API keys and connection details for external providers
|
|
313
|
+
*/
|
|
314
|
+
export interface ProviderCredentials {
|
|
315
|
+
apiKey: string | string[];
|
|
316
|
+
baseUrl?: string;
|
|
317
|
+
timeout?: number;
|
|
318
|
+
options?: Record<string, unknown>;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Main provider credentials structure
|
|
323
|
+
*/
|
|
324
|
+
export interface TenexProviders {
|
|
325
|
+
providers: Record<string, ProviderCredentials>;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export const ProviderCredentialsSchema = z.object({
|
|
329
|
+
apiKey: z.union([z.string(), z.array(z.string())]),
|
|
330
|
+
baseUrl: z.string().optional(),
|
|
331
|
+
timeout: z.number().optional(),
|
|
332
|
+
options: z.record(z.string(), z.unknown()).optional(),
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
export const TenexProvidersSchema = z.object({
|
|
336
|
+
providers: z.record(z.string(), ProviderCredentialsSchema).default({}),
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
// =====================================================================================
|
|
340
|
+
// MCP SCHEMA (mcp.json)
|
|
341
|
+
// =====================================================================================
|
|
342
|
+
|
|
343
|
+
export interface MCPServerConfig {
|
|
344
|
+
command: string;
|
|
345
|
+
args: string[];
|
|
346
|
+
env?: Record<string, string>;
|
|
347
|
+
description?: string;
|
|
348
|
+
allowedPaths?: string[];
|
|
349
|
+
eventId?: string; // Nostr event ID this server was installed from
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
export interface TenexMCP {
|
|
353
|
+
servers: Record<string, MCPServerConfig>;
|
|
354
|
+
enabled: boolean;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
export const MCPServerConfigSchema = z.object({
|
|
358
|
+
command: z.string(),
|
|
359
|
+
args: z.array(z.string()),
|
|
360
|
+
env: z.record(z.string(), z.string()).optional(),
|
|
361
|
+
description: z.string().optional(),
|
|
362
|
+
allowedPaths: z.array(z.string()).optional(),
|
|
363
|
+
eventId: z.string().optional(),
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
export const TenexMCPSchema = z.object({
|
|
367
|
+
servers: z.record(z.string(), MCPServerConfigSchema).default({}),
|
|
368
|
+
enabled: z.boolean().default(true),
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
// =====================================================================================
|
|
372
|
+
// LOADED CONFIGURATION STATE
|
|
373
|
+
// =====================================================================================
|
|
374
|
+
|
|
375
|
+
export interface LoadedConfig {
|
|
376
|
+
config: TenexConfig;
|
|
377
|
+
llms: TenexLLMs;
|
|
378
|
+
mcp: TenexMCP;
|
|
379
|
+
providers: TenexProviders;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// =====================================================================================
|
|
383
|
+
// HELPER TYPES
|
|
384
|
+
// =====================================================================================
|
|
385
|
+
|
|
386
|
+
// resolveApiKey has moved to @/llm/providers/key-manager — re-export for backwards compatibility
|
|
387
|
+
export { resolveApiKey } from "@/llm/providers/key-manager";
|
|
388
|
+
|
|
389
|
+
export type ConfigFile = "config.json" | "llms.json" | "mcp.json" | "providers.json";
|
|
390
|
+
|
|
391
|
+
export interface ConfigPaths {
|
|
392
|
+
global: string;
|
|
393
|
+
project?: string;
|
|
394
|
+
}
|