@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.
Files changed (427) hide show
  1. package/README.md +194 -0
  2. package/dist/backend-wrapper.cjs +3 -0
  3. package/dist/src/index.js +331928 -0
  4. package/package.json +103 -0
  5. package/src/agents/AgentRegistry.ts +418 -0
  6. package/src/agents/AgentStorage.ts +1133 -0
  7. package/src/agents/ConfigResolver.ts +229 -0
  8. package/src/agents/agent-installer.ts +236 -0
  9. package/src/agents/agent-loader.ts +241 -0
  10. package/src/agents/constants.ts +82 -0
  11. package/src/agents/errors.ts +48 -0
  12. package/src/agents/execution/AgentExecutor.ts +561 -0
  13. package/src/agents/execution/ExecutionContextFactory.ts +112 -0
  14. package/src/agents/execution/MessageCompiler.ts +597 -0
  15. package/src/agents/execution/MessageSyncer.ts +100 -0
  16. package/src/agents/execution/PostCompletionChecker.ts +278 -0
  17. package/src/agents/execution/ProgressMonitor.ts +50 -0
  18. package/src/agents/execution/RALResolver.ts +177 -0
  19. package/src/agents/execution/SessionManager.ts +181 -0
  20. package/src/agents/execution/StreamCallbacks.ts +312 -0
  21. package/src/agents/execution/StreamExecutionHandler.ts +579 -0
  22. package/src/agents/execution/StreamSetup.ts +313 -0
  23. package/src/agents/execution/ToolEventHandlers.ts +239 -0
  24. package/src/agents/execution/ToolExecutionTracker.ts +498 -0
  25. package/src/agents/execution/ToolResultUtils.ts +97 -0
  26. package/src/agents/execution/ToolSupervisionWrapper.ts +174 -0
  27. package/src/agents/execution/constants.ts +16 -0
  28. package/src/agents/execution/index.ts +3 -0
  29. package/src/agents/execution/types.ts +96 -0
  30. package/src/agents/execution/utils.ts +26 -0
  31. package/src/agents/index.ts +4 -0
  32. package/src/agents/script-installer.ts +266 -0
  33. package/src/agents/supervision/SupervisorLLMService.ts +253 -0
  34. package/src/agents/supervision/SupervisorOrchestrator.ts +471 -0
  35. package/src/agents/supervision/heuristics/ConsecutiveToolsWithoutTodoHeuristic.ts +73 -0
  36. package/src/agents/supervision/heuristics/DelegationClaimHeuristic.ts +80 -0
  37. package/src/agents/supervision/heuristics/HeuristicRegistry.ts +114 -0
  38. package/src/agents/supervision/heuristics/PendingTodosHeuristic.ts +93 -0
  39. package/src/agents/supervision/heuristics/SilentAgentHeuristic.ts +54 -0
  40. package/src/agents/supervision/heuristics/index.ts +5 -0
  41. package/src/agents/supervision/index.ts +28 -0
  42. package/src/agents/supervision/registerHeuristics.ts +110 -0
  43. package/src/agents/supervision/supervisionHealthCheck.ts +123 -0
  44. package/src/agents/supervision/types.ts +171 -0
  45. package/src/agents/tool-names.ts +46 -0
  46. package/src/agents/tool-normalization.ts +184 -0
  47. package/src/agents/types/index.ts +2 -0
  48. package/src/agents/types/runtime.ts +74 -0
  49. package/src/agents/types/storage.ts +145 -0
  50. package/src/commands/agent/import/index.ts +6 -0
  51. package/src/commands/agent/import/openclaw-distiller.ts +57 -0
  52. package/src/commands/agent/import/openclaw-reader.ts +141 -0
  53. package/src/commands/agent/import/openclaw.ts +154 -0
  54. package/src/commands/agent/index.ts +6 -0
  55. package/src/commands/agent.ts +215 -0
  56. package/src/commands/daemon.ts +198 -0
  57. package/src/commands/doctor.ts +134 -0
  58. package/src/commands/setup/embed.ts +228 -0
  59. package/src/commands/setup/global-system-prompt.ts +223 -0
  60. package/src/commands/setup/image.ts +179 -0
  61. package/src/commands/setup/index.ts +16 -0
  62. package/src/commands/setup/interactive.ts +95 -0
  63. package/src/commands/setup/llm.ts +38 -0
  64. package/src/commands/setup/onboarding.ts +294 -0
  65. package/src/commands/setup/providers.ts +27 -0
  66. package/src/constants.ts +34 -0
  67. package/src/conversations/ConversationDiskReader.ts +148 -0
  68. package/src/conversations/ConversationRegistry.ts +728 -0
  69. package/src/conversations/ConversationStore.ts +868 -0
  70. package/src/conversations/MessageBuilder.ts +866 -0
  71. package/src/conversations/executionTime.ts +62 -0
  72. package/src/conversations/formatters/DelegationXmlFormatter.ts +64 -0
  73. package/src/conversations/formatters/ThreadedConversationFormatter.ts +303 -0
  74. package/src/conversations/formatters/index.ts +9 -0
  75. package/src/conversations/formatters/utils/MessageFormatter.ts +46 -0
  76. package/src/conversations/formatters/utils/TimestampFormatter.ts +56 -0
  77. package/src/conversations/formatters/utils/TreeBuilder.ts +131 -0
  78. package/src/conversations/formatters/utils/TreeRenderer.ts +49 -0
  79. package/src/conversations/index.ts +2 -0
  80. package/src/conversations/persistence/ToolMessageStorage.ts +143 -0
  81. package/src/conversations/search/ConversationIndexManager.ts +393 -0
  82. package/src/conversations/search/QueryParser.ts +114 -0
  83. package/src/conversations/search/SearchEngine.ts +175 -0
  84. package/src/conversations/search/SnippetExtractor.ts +345 -0
  85. package/src/conversations/search/embeddings/ConversationEmbeddingService.ts +484 -0
  86. package/src/conversations/search/embeddings/ConversationIndexingJob.ts +320 -0
  87. package/src/conversations/search/embeddings/IndexingStateManager.ts +338 -0
  88. package/src/conversations/search/embeddings/index.ts +18 -0
  89. package/src/conversations/search/index.ts +49 -0
  90. package/src/conversations/search/types.ts +124 -0
  91. package/src/conversations/services/CategoryManager.ts +160 -0
  92. package/src/conversations/services/ConversationResolver.ts +296 -0
  93. package/src/conversations/services/ConversationSummarizer.ts +234 -0
  94. package/src/conversations/services/MetadataDebounceManager.ts +188 -0
  95. package/src/conversations/services/index.ts +2 -0
  96. package/src/conversations/types.ts +148 -0
  97. package/src/conversations/utils/content-utils.ts +69 -0
  98. package/src/conversations/utils/image-placeholder.ts +281 -0
  99. package/src/conversations/utils/image-url-utils.ts +171 -0
  100. package/src/conversations/utils/multimodal-content.ts +90 -0
  101. package/src/conversations/utils/tool-result-truncator.ts +159 -0
  102. package/src/daemon/Daemon.ts +1883 -0
  103. package/src/daemon/ProjectRuntime.ts +657 -0
  104. package/src/daemon/RestartState.ts +152 -0
  105. package/src/daemon/RuntimeLifecycle.ts +268 -0
  106. package/src/daemon/SubscriptionManager.ts +305 -0
  107. package/src/daemon/UnixSocketTransport.ts +318 -0
  108. package/src/daemon/filters/SubscriptionFilterBuilder.ts +119 -0
  109. package/src/daemon/index.ts +9 -0
  110. package/src/daemon/routing/DaemonRouter.ts +491 -0
  111. package/src/daemon/types.ts +150 -0
  112. package/src/daemon/utils/routing-log.ts +76 -0
  113. package/src/daemon/utils/telemetry.ts +173 -0
  114. package/src/event-handler/agentDeletion.ts +383 -0
  115. package/src/event-handler/index.ts +749 -0
  116. package/src/event-handler/newConversation.ts +165 -0
  117. package/src/event-handler/project.ts +166 -0
  118. package/src/event-handler/reply.ts +18 -0
  119. package/src/events/NDKAgentDefinition.ts +292 -0
  120. package/src/events/NDKAgentLesson.ts +106 -0
  121. package/src/events/NDKEventMetadata.ts +34 -0
  122. package/src/events/NDKMCPTool.ts +60 -0
  123. package/src/events/NDKProjectStatus.ts +384 -0
  124. package/src/events/index.ts +4 -0
  125. package/src/index.ts +126 -0
  126. package/src/lib/agent-home.ts +334 -0
  127. package/src/lib/error-formatter.ts +200 -0
  128. package/src/lib/fs/filesystem.ts +128 -0
  129. package/src/lib/fs/index.ts +1 -0
  130. package/src/lib/json-parser.ts +30 -0
  131. package/src/lib/string.ts +15 -0
  132. package/src/lib/time.ts +74 -0
  133. package/src/llm/ChunkHandler.ts +277 -0
  134. package/src/llm/FinishHandler.ts +250 -0
  135. package/src/llm/LLMConfigEditor.ts +154 -0
  136. package/src/llm/LLMServiceFactory.ts +230 -0
  137. package/src/llm/MessageProcessor.ts +90 -0
  138. package/src/llm/RecordingState.ts +37 -0
  139. package/src/llm/StreamPublisher.ts +40 -0
  140. package/src/llm/TracingUtils.ts +77 -0
  141. package/src/llm/chunk-validators.ts +57 -0
  142. package/src/llm/constants.ts +6 -0
  143. package/src/llm/index.ts +12 -0
  144. package/src/llm/meta/MetaModelResolver.ts +352 -0
  145. package/src/llm/meta/index.ts +11 -0
  146. package/src/llm/middleware/flight-recorder.ts +188 -0
  147. package/src/llm/providers/MockProvider.ts +332 -0
  148. package/src/llm/providers/agent/ClaudeCodeProvider.ts +343 -0
  149. package/src/llm/providers/agent/ClaudeCodeToolsAdapter.ts +203 -0
  150. package/src/llm/providers/agent/CodexAppServerProvider.ts +214 -0
  151. package/src/llm/providers/agent/CodexAppServerToolsAdapter.ts +91 -0
  152. package/src/llm/providers/agent/index.ts +10 -0
  153. package/src/llm/providers/base/AgentProvider.ts +107 -0
  154. package/src/llm/providers/base/BaseProvider.ts +114 -0
  155. package/src/llm/providers/base/StandardProvider.ts +38 -0
  156. package/src/llm/providers/base/index.ts +9 -0
  157. package/src/llm/providers/index.ts +106 -0
  158. package/src/llm/providers/key-manager.ts +238 -0
  159. package/src/llm/providers/ollama-models.ts +105 -0
  160. package/src/llm/providers/openrouter-models.ts +102 -0
  161. package/src/llm/providers/provider-ids.ts +18 -0
  162. package/src/llm/providers/registry/ProviderRegistry.ts +414 -0
  163. package/src/llm/providers/registry/index.ts +7 -0
  164. package/src/llm/providers/standard/AnthropicProvider.ts +71 -0
  165. package/src/llm/providers/standard/OllamaProvider.ts +59 -0
  166. package/src/llm/providers/standard/OpenAIProvider.ts +44 -0
  167. package/src/llm/providers/standard/OpenRouterProvider.ts +103 -0
  168. package/src/llm/providers/standard/index.ts +10 -0
  169. package/src/llm/providers/types.ts +194 -0
  170. package/src/llm/providers/usage-metadata.ts +78 -0
  171. package/src/llm/service.ts +713 -0
  172. package/src/llm/types.ts +167 -0
  173. package/src/llm/utils/ConfigurationManager.ts +650 -0
  174. package/src/llm/utils/ConfigurationTester.ts +229 -0
  175. package/src/llm/utils/ModelSelector.ts +212 -0
  176. package/src/llm/utils/ProviderConfigUI.ts +177 -0
  177. package/src/llm/utils/claudeCodePromptCompiler.ts +141 -0
  178. package/src/llm/utils/codex-models.ts +53 -0
  179. package/src/llm/utils/context-window-cache.ts +30 -0
  180. package/src/llm/utils/models-dev-cache.ts +267 -0
  181. package/src/llm/utils/provider-setup.ts +50 -0
  182. package/src/llm/utils/tool-errors.ts +78 -0
  183. package/src/llm/utils/usage.ts +74 -0
  184. package/src/logging/EventRoutingLogger.ts +205 -0
  185. package/src/nostr/AgentEventDecoder.ts +357 -0
  186. package/src/nostr/AgentEventEncoder.ts +677 -0
  187. package/src/nostr/AgentProfilePublisher.ts +657 -0
  188. package/src/nostr/AgentPublisher.ts +437 -0
  189. package/src/nostr/BlossomService.ts +226 -0
  190. package/src/nostr/InterventionPublisher.ts +132 -0
  191. package/src/nostr/TagExtractor.ts +228 -0
  192. package/src/nostr/collectEvents.ts +83 -0
  193. package/src/nostr/constants.ts +38 -0
  194. package/src/nostr/encryption.ts +26 -0
  195. package/src/nostr/index.ts +31 -0
  196. package/src/nostr/keys.ts +17 -0
  197. package/src/nostr/kinds.ts +37 -0
  198. package/src/nostr/ndkClient.ts +72 -0
  199. package/src/nostr/relays.ts +43 -0
  200. package/src/nostr/trace-context.ts +39 -0
  201. package/src/nostr/types.ts +227 -0
  202. package/src/nostr/utils.ts +84 -0
  203. package/src/prompts/core/FragmentRegistry.ts +30 -0
  204. package/src/prompts/core/PromptBuilder.ts +98 -0
  205. package/src/prompts/core/index.ts +3 -0
  206. package/src/prompts/core/types.ts +13 -0
  207. package/src/prompts/fragments/00-global-system-prompt.ts +44 -0
  208. package/src/prompts/fragments/01-agent-identity.ts +69 -0
  209. package/src/prompts/fragments/02-agent-home-directory.ts +114 -0
  210. package/src/prompts/fragments/03-system-reminders-explanation.ts +14 -0
  211. package/src/prompts/fragments/04-relay-configuration.ts +38 -0
  212. package/src/prompts/fragments/05-delegation-chain.ts +45 -0
  213. package/src/prompts/fragments/06-agent-todos.ts +74 -0
  214. package/src/prompts/fragments/06-todo-usage-guidance.ts +34 -0
  215. package/src/prompts/fragments/07-meta-project-context.ts +234 -0
  216. package/src/prompts/fragments/08-active-conversations.ts +382 -0
  217. package/src/prompts/fragments/09-recent-conversations.ts +153 -0
  218. package/src/prompts/fragments/10-referenced-article.ts +21 -0
  219. package/src/prompts/fragments/11-nudges.ts +134 -0
  220. package/src/prompts/fragments/12-skills.ts +127 -0
  221. package/src/prompts/fragments/13-available-nudges.ts +122 -0
  222. package/src/prompts/fragments/15-available-agents.ts +53 -0
  223. package/src/prompts/fragments/16-stay-in-your-lane.ts +41 -0
  224. package/src/prompts/fragments/17-todo-before-delegation.ts +39 -0
  225. package/src/prompts/fragments/20-voice-mode.ts +62 -0
  226. package/src/prompts/fragments/22-scheduled-tasks.ts +175 -0
  227. package/src/prompts/fragments/24-retrieved-lessons.ts +26 -0
  228. package/src/prompts/fragments/25-rag-instructions.ts +333 -0
  229. package/src/prompts/fragments/26-mcp-resources.ts +237 -0
  230. package/src/prompts/fragments/27-memorized-reports.ts +77 -0
  231. package/src/prompts/fragments/28-agent-directed-monitoring.ts +32 -0
  232. package/src/prompts/fragments/29-rag-collections.ts +50 -0
  233. package/src/prompts/fragments/30-worktree-context.ts +98 -0
  234. package/src/prompts/fragments/31-agents-md-guidance.ts +96 -0
  235. package/src/prompts/fragments/32-process-metrics.ts +72 -0
  236. package/src/prompts/fragments/debug-mode.ts +48 -0
  237. package/src/prompts/fragments/delegation-completion.ts +44 -0
  238. package/src/prompts/fragments/index.ts +91 -0
  239. package/src/prompts/index.ts +21 -0
  240. package/src/prompts/utils/systemPromptBuilder.ts +777 -0
  241. package/src/scripts/migrate-prefix-index.ts +157 -0
  242. package/src/services/AgentDefinitionMonitor.ts +701 -0
  243. package/src/services/ConfigService.ts +723 -0
  244. package/src/services/CooldownRegistry.ts +199 -0
  245. package/src/services/LLMOperationsRegistry.ts +424 -0
  246. package/src/services/OwnerAgentListService.ts +354 -0
  247. package/src/services/PubkeyService.ts +308 -0
  248. package/src/services/agents/AgentMetadataStore.ts +72 -0
  249. package/src/services/agents/AgentResolution.ts +59 -0
  250. package/src/services/agents/EscalationService.ts +281 -0
  251. package/src/services/agents/NDKAgentDiscovery.ts +95 -0
  252. package/src/services/agents/index.ts +7 -0
  253. package/src/services/agents-md/AgentsMdService.ts +184 -0
  254. package/src/services/agents-md/SystemReminderInjector.ts +238 -0
  255. package/src/services/agents-md/index.ts +11 -0
  256. package/src/services/apns/APNsClient.ts +203 -0
  257. package/src/services/apns/APNsService.ts +358 -0
  258. package/src/services/apns/index.ts +11 -0
  259. package/src/services/apns/types.ts +80 -0
  260. package/src/services/compression/CompressionService.ts +445 -0
  261. package/src/services/compression/compression-schema.ts +28 -0
  262. package/src/services/compression/compression-types.ts +74 -0
  263. package/src/services/compression/compression-utils.ts +587 -0
  264. package/src/services/config/types.ts +394 -0
  265. package/src/services/dispatch/AgentDispatchService.ts +937 -0
  266. package/src/services/dispatch/AgentRouter.ts +181 -0
  267. package/src/services/dispatch/DelegationCompletionHandler.ts +232 -0
  268. package/src/services/embedding/EmbeddingProvider.ts +188 -0
  269. package/src/services/embedding/index.ts +5 -0
  270. package/src/services/event-context/EventContextService.ts +108 -0
  271. package/src/services/event-context/index.ts +2 -0
  272. package/src/services/heuristics/ContextBuilder.ts +106 -0
  273. package/src/services/heuristics/HeuristicEngine.ts +200 -0
  274. package/src/services/heuristics/formatters.ts +58 -0
  275. package/src/services/heuristics/index.ts +12 -0
  276. package/src/services/heuristics/rules/index.ts +25 -0
  277. package/src/services/heuristics/rules/todoBeforeDelegation.ts +69 -0
  278. package/src/services/heuristics/rules/todoReminderOnToolUse.ts +63 -0
  279. package/src/services/heuristics/types.ts +144 -0
  280. package/src/services/image/ImageGenerationService.ts +389 -0
  281. package/src/services/image/index.ts +12 -0
  282. package/src/services/intervention/InterventionService.ts +1352 -0
  283. package/src/services/intervention/index.ts +7 -0
  284. package/src/services/mcp/MCPManager.ts +683 -0
  285. package/src/services/mcp/McpNotificationDelivery.ts +139 -0
  286. package/src/services/mcp/McpSubscriptionService.ts +653 -0
  287. package/src/services/mcp/mcpInstaller.ts +130 -0
  288. package/src/services/nip46/Nip46SigningLog.ts +81 -0
  289. package/src/services/nip46/Nip46SigningService.ts +467 -0
  290. package/src/services/nip46/index.ts +4 -0
  291. package/src/services/nudge/NudgeService.ts +224 -0
  292. package/src/services/nudge/NudgeWhitelistService.ts +382 -0
  293. package/src/services/nudge/index.ts +5 -0
  294. package/src/services/nudge/types.ts +83 -0
  295. package/src/services/projects/ProjectContext.ts +672 -0
  296. package/src/services/projects/ProjectContextStore.ts +102 -0
  297. package/src/services/projects/index.ts +6 -0
  298. package/src/services/prompt-compiler/index.ts +15 -0
  299. package/src/services/prompt-compiler/prompt-compiler-service.ts +1143 -0
  300. package/src/services/pubkey-gate/PubkeyGateService.ts +93 -0
  301. package/src/services/pubkey-gate/index.ts +1 -0
  302. package/src/services/rag/EmbeddingProviderFactory.ts +292 -0
  303. package/src/services/rag/LanceDBMaintenanceService.ts +211 -0
  304. package/src/services/rag/RAGDatabaseService.ts +173 -0
  305. package/src/services/rag/RAGOperations.ts +682 -0
  306. package/src/services/rag/RAGService.ts +240 -0
  307. package/src/services/rag/RagSubscriptionService.ts +618 -0
  308. package/src/services/rag/rag-utils.ts +174 -0
  309. package/src/services/ral/PendingDelegationsRegistry.ts +168 -0
  310. package/src/services/ral/RALRegistry.ts +2782 -0
  311. package/src/services/ral/index.ts +4 -0
  312. package/src/services/ral/types.ts +292 -0
  313. package/src/services/reports/LocalReportStore.ts +380 -0
  314. package/src/services/reports/ReportEmbeddingService.ts +430 -0
  315. package/src/services/reports/ReportService.ts +440 -0
  316. package/src/services/reports/articleUtils.ts +52 -0
  317. package/src/services/reports/index.ts +7 -0
  318. package/src/services/scheduling/SchedulerService.ts +1057 -0
  319. package/src/services/scheduling/errors.ts +14 -0
  320. package/src/services/scheduling/index.ts +7 -0
  321. package/src/services/scheduling/utils.ts +77 -0
  322. package/src/services/search/SearchProviderRegistry.ts +78 -0
  323. package/src/services/search/UnifiedSearchService.ts +218 -0
  324. package/src/services/search/index.ts +47 -0
  325. package/src/services/search/projectFilter.ts +22 -0
  326. package/src/services/search/providers/ConversationSearchProvider.ts +48 -0
  327. package/src/services/search/providers/LessonSearchProvider.ts +75 -0
  328. package/src/services/search/providers/ReportSearchProvider.ts +49 -0
  329. package/src/services/search/types.ts +144 -0
  330. package/src/services/skill/SkillService.ts +482 -0
  331. package/src/services/skill/index.ts +2 -0
  332. package/src/services/skill/types.ts +70 -0
  333. package/src/services/status/OperationsStatusService.ts +276 -0
  334. package/src/services/status/ProjectStatusService.ts +522 -0
  335. package/src/services/status/index.ts +11 -0
  336. package/src/services/storage/PrefixKVStore.ts +242 -0
  337. package/src/services/storage/index.ts +1 -0
  338. package/src/services/system-reminder/SystemReminderUtils.ts +96 -0
  339. package/src/services/system-reminder/index.ts +7 -0
  340. package/src/services/trust-pubkeys/TrustPubkeyService.ts +325 -0
  341. package/src/services/trust-pubkeys/index.ts +2 -0
  342. package/src/telemetry/ConversationSpanManager.ts +111 -0
  343. package/src/telemetry/EventLoopMonitor.ts +206 -0
  344. package/src/telemetry/LLMSpanRegistry.ts +20 -0
  345. package/src/telemetry/NostrSpanProcessor.ts +89 -0
  346. package/src/telemetry/ToolCallSpanProcessor.ts +66 -0
  347. package/src/telemetry/diagnostics.ts +27 -0
  348. package/src/telemetry/setup.ts +120 -0
  349. package/src/tools/implementations/agents_discover.ts +121 -0
  350. package/src/tools/implementations/agents_hire.ts +127 -0
  351. package/src/tools/implementations/agents_list.ts +96 -0
  352. package/src/tools/implementations/agents_publish.ts +611 -0
  353. package/src/tools/implementations/agents_read.ts +173 -0
  354. package/src/tools/implementations/agents_write.ts +200 -0
  355. package/src/tools/implementations/ask.ts +411 -0
  356. package/src/tools/implementations/change_model.ts +141 -0
  357. package/src/tools/implementations/conversation_get.ts +661 -0
  358. package/src/tools/implementations/conversation_list.ts +377 -0
  359. package/src/tools/implementations/conversation_search.ts +370 -0
  360. package/src/tools/implementations/delegate.ts +327 -0
  361. package/src/tools/implementations/delegate_crossproject.ts +209 -0
  362. package/src/tools/implementations/delegate_followup.ts +300 -0
  363. package/src/tools/implementations/fs_edit.ts +162 -0
  364. package/src/tools/implementations/fs_glob.ts +182 -0
  365. package/src/tools/implementations/fs_grep.ts +513 -0
  366. package/src/tools/implementations/fs_read.ts +332 -0
  367. package/src/tools/implementations/fs_write.ts +113 -0
  368. package/src/tools/implementations/generate_image.ts +259 -0
  369. package/src/tools/implementations/home_fs.ts +515 -0
  370. package/src/tools/implementations/kill.ts +651 -0
  371. package/src/tools/implementations/learn.ts +166 -0
  372. package/src/tools/implementations/lesson-formatter.ts +38 -0
  373. package/src/tools/implementations/lesson_delete.ts +164 -0
  374. package/src/tools/implementations/lesson_get.ts +105 -0
  375. package/src/tools/implementations/lessons_list.ts +153 -0
  376. package/src/tools/implementations/mcp_resource_read.ts +161 -0
  377. package/src/tools/implementations/mcp_subscribe.ts +158 -0
  378. package/src/tools/implementations/mcp_subscription_stop.ts +85 -0
  379. package/src/tools/implementations/nostr_fetch.ts +149 -0
  380. package/src/tools/implementations/nostr_publish_as_user.ts +353 -0
  381. package/src/tools/implementations/project_list.ts +146 -0
  382. package/src/tools/implementations/rag_add_documents.ts +573 -0
  383. package/src/tools/implementations/rag_create_collection.ts +65 -0
  384. package/src/tools/implementations/rag_delete_collection.ts +68 -0
  385. package/src/tools/implementations/rag_list_collections.ts +77 -0
  386. package/src/tools/implementations/rag_query.ts +107 -0
  387. package/src/tools/implementations/rag_subscription_create.ts +105 -0
  388. package/src/tools/implementations/rag_subscription_delete.ts +80 -0
  389. package/src/tools/implementations/rag_subscription_get.ts +123 -0
  390. package/src/tools/implementations/rag_subscription_list.ts +128 -0
  391. package/src/tools/implementations/report_delete.ts +79 -0
  392. package/src/tools/implementations/report_read.ts +160 -0
  393. package/src/tools/implementations/report_write.ts +278 -0
  394. package/src/tools/implementations/reports_list.ts +77 -0
  395. package/src/tools/implementations/schedule_task.ts +104 -0
  396. package/src/tools/implementations/schedule_task_cancel.ts +62 -0
  397. package/src/tools/implementations/schedule_task_once.ts +128 -0
  398. package/src/tools/implementations/schedule_tasks_list.ts +79 -0
  399. package/src/tools/implementations/search.ts +160 -0
  400. package/src/tools/implementations/shell.ts +553 -0
  401. package/src/tools/implementations/todo.ts +260 -0
  402. package/src/tools/implementations/upload_blob.ts +381 -0
  403. package/src/tools/implementations/web_fetch.ts +153 -0
  404. package/src/tools/implementations/web_search.ts +250 -0
  405. package/src/tools/registry.ts +670 -0
  406. package/src/tools/types.ts +177 -0
  407. package/src/tools/utils.ts +256 -0
  408. package/src/types/event-ids.ts +320 -0
  409. package/src/types/index.ts +46 -0
  410. package/src/utils/agentFetcher.ts +107 -0
  411. package/src/utils/cli-error.ts +29 -0
  412. package/src/utils/conversation-id.ts +27 -0
  413. package/src/utils/conversation-utils.ts +1 -0
  414. package/src/utils/delegation-chain.ts +357 -0
  415. package/src/utils/error-handler.ts +42 -0
  416. package/src/utils/git/gitignore.ts +69 -0
  417. package/src/utils/git/index.ts +2 -0
  418. package/src/utils/git/initializeGitRepo.ts +204 -0
  419. package/src/utils/git/worktree.ts +260 -0
  420. package/src/utils/lessonFormatter.ts +70 -0
  421. package/src/utils/lessonTrust.ts +24 -0
  422. package/src/utils/lockfile.ts +123 -0
  423. package/src/utils/logger.ts +149 -0
  424. package/src/utils/nostr-entity-parser.ts +365 -0
  425. package/src/utils/process.ts +49 -0
  426. package/src/wrapper.ts +262 -0
  427. package/tsconfig.json +41 -0
@@ -0,0 +1,50 @@
1
+ import type { PromptFragment } from "../core/types";
2
+
3
+ /**
4
+ * RAG collections attribution fragment - shows agents which RAG collections
5
+ * they have contributed to and their document counts.
6
+ *
7
+ * This fragment leverages the provenance tracking metadata (agent_pubkey)
8
+ * added during document ingestion to surface personalized collection stats.
9
+ *
10
+ * Registration: This fragment is registered explicitly in fragments/index.ts
11
+ * following the project's explicit registration pattern.
12
+ */
13
+ interface RAGCollectionStats {
14
+ name: string;
15
+ agentDocCount: number;
16
+ totalDocCount: number;
17
+ }
18
+
19
+ interface RAGCollectionsArgs {
20
+ /** The agent's public key for filtering contributions */
21
+ agentPubkey: string;
22
+ /** Pre-fetched collection statistics (avoids async in template) */
23
+ collections: RAGCollectionStats[];
24
+ }
25
+
26
+ export const ragCollectionsFragment: PromptFragment<RAGCollectionsArgs> = {
27
+ id: "rag-collections",
28
+ priority: 29, // After agent-directed-monitoring (28), before worktree-context (30)
29
+ template: ({ collections }) => {
30
+ // Filter to only collections where the agent has contributions
31
+ const agentCollections = collections.filter((c) => c.agentDocCount > 0);
32
+
33
+ if (agentCollections.length === 0) {
34
+ return ""; // No RAG contributions - omit section entirely
35
+ }
36
+
37
+ const parts: string[] = [];
38
+ parts.push("## Your RAG Collections\n");
39
+ parts.push("Collections you've contributed to:");
40
+
41
+ for (const collection of agentCollections) {
42
+ parts.push(
43
+ `- \`${collection.name}\` — ${collection.agentDocCount} docs by you (${collection.totalDocCount} total)`
44
+ );
45
+ }
46
+
47
+ return parts.join("\n");
48
+ },
49
+ expectedArgs: "{ agentPubkey: string, collections: RAGCollectionStats[] }",
50
+ };
@@ -0,0 +1,98 @@
1
+ import type { AgentInstance } from "@/agents/types";
2
+ import { config } from "@/services/ConfigService";
3
+ import { fragmentRegistry } from "../core/FragmentRegistry";
4
+ import type { PromptFragment } from "../core/types";
5
+ import { listWorktrees, loadWorktreeMetadata, type WorktreeMetadata } from "@/utils/git/worktree";
6
+ import { logger } from "@/utils/logger";
7
+
8
+ /**
9
+ * Worktree context for the fragment.
10
+ */
11
+ interface WorktreeContext {
12
+ workingDirectory: string;
13
+ currentBranch: string;
14
+ /**
15
+ * Project directory (normal git repository root).
16
+ * Worktrees are in .worktrees/ subdirectory.
17
+ */
18
+ projectBasePath: string;
19
+ agent: AgentInstance;
20
+ }
21
+
22
+ /**
23
+ * Worktree context fragment for agents.
24
+ * Shows current working directory and available worktrees.
25
+ */
26
+ interface WorktreeContextArgs {
27
+ context: WorktreeContext;
28
+ }
29
+
30
+ export const worktreeContextFragment: PromptFragment<WorktreeContextArgs> = {
31
+ id: "worktree-context",
32
+ priority: 30,
33
+ template: async ({ context }) => {
34
+ const parts: string[] = [];
35
+
36
+ // Get worktree information
37
+ const workingDirectory = context.workingDirectory;
38
+ const currentBranch = context.currentBranch;
39
+
40
+ // List worktrees first to determine what to show
41
+ let worktrees: Array<{ branch: string; path: string }> = [];
42
+ let metadata: Record<string, WorktreeMetadata> = {};
43
+ let hasFeatureWorktrees = false;
44
+
45
+ try {
46
+ worktrees = await listWorktrees(context.projectBasePath);
47
+ metadata = await loadWorktreeMetadata(context.projectBasePath, config.getConfigPath("projects"));
48
+ // Check if there are worktrees in .worktrees/ directory (beyond the main repo)
49
+ hasFeatureWorktrees = worktrees.some(wt => wt.path.includes("/.worktrees/"));
50
+ } catch (error) {
51
+ // If we can't list worktrees (e.g., not a git repo yet), just skip
52
+ logger.warn("Failed to list worktrees", { error });
53
+ }
54
+
55
+ parts.push("## Git Worktree Context\n");
56
+ parts.push("This project uses git worktrees for parallel work on different branches.");
57
+ parts.push("The default branch is checked out at the project root.");
58
+ if (hasFeatureWorktrees) {
59
+ parts.push(`Feature branches are in \`${context.projectBasePath}/.worktrees/\` (branch slashes become underscores).`);
60
+ }
61
+ parts.push("All standard git commands (status, commit, push, etc.) work normally.");
62
+ parts.push("");
63
+ parts.push(`**Current Working Directory:** ${workingDirectory}`);
64
+ parts.push(`**Current Branch:** ${currentBranch}`);
65
+ parts.push(`**Project Root:** ${context.projectBasePath}`);
66
+ parts.push("");
67
+
68
+ if (worktrees.length > 0) {
69
+ parts.push("### Available Worktrees:");
70
+ for (const wt of worktrees) {
71
+ const meta = metadata[wt.branch];
72
+ const isCurrent = wt.branch === currentBranch;
73
+
74
+ parts.push(`- **${wt.branch}**${isCurrent ? " [YOU ARE HERE]" : ""}`);
75
+ parts.push(` - Path: ${wt.path}`);
76
+
77
+ if (meta) {
78
+ parts.push(` - Created by: ${meta.createdBy.substring(0, 8)}...`);
79
+ parts.push(` - Conversation: ${meta.conversationId.substring(0, 8)}...`);
80
+ parts.push(` - Parent branch: ${meta.parentBranch}`);
81
+ }
82
+ }
83
+ parts.push("");
84
+ }
85
+
86
+ // Add worktree commands guidance
87
+ parts.push("### Delegation with Worktrees:");
88
+ parts.push("When using `delegate`, you can specify `branch: \"<name>\"` to create and work in an isolated worktree.");
89
+ parts.push("The worktree will be created from your current branch in `.worktrees/`, and the delegated agent will work in that isolation.");
90
+ parts.push("You are responsible for merging or cleaning up worktrees you create.");
91
+ parts.push("");
92
+
93
+ return parts.join("\n");
94
+ },
95
+ };
96
+
97
+ // Register the fragment
98
+ fragmentRegistry.register(worktreeContextFragment);
@@ -0,0 +1,96 @@
1
+ /**
2
+ * AGENTS.md Guidance Fragment
3
+ *
4
+ * This fragment is ALWAYS included in the system prompt to inform agents about
5
+ * the AGENTS.md system. It provides guidance to agents about:
6
+ * - What AGENTS.md files are and how they work
7
+ * - How to write and update AGENTS.md files
8
+ * - The hierarchical nature of AGENTS.md inheritance
9
+ *
10
+ * When the project has no root AGENTS.md, it explicitly states so.
11
+ */
12
+
13
+ import { fragmentRegistry } from "../core/FragmentRegistry";
14
+ import type { PromptFragment } from "../core/types";
15
+
16
+ /**
17
+ * Maximum length for root AGENTS.md content to be included directly in the system prompt.
18
+ * Beyond this threshold, the content is omitted to avoid bloating the prompt.
19
+ * Short AGENTS.md files (< 2000 chars) typically contain essential project guidelines
20
+ * that benefit from being in the system prompt context.
21
+ */
22
+ const MAX_ROOT_CONTENT_LENGTH_FOR_SYSTEM_PROMPT = 2000;
23
+
24
+ interface AgentsMdGuidanceArgs {
25
+ /** Whether the project has an AGENTS.md at the root */
26
+ hasRootAgentsMd: boolean;
27
+ /** Content of the root AGENTS.md (for context) */
28
+ rootAgentsMdContent?: string;
29
+ }
30
+
31
+ export const agentsMdGuidanceFragment: PromptFragment<AgentsMdGuidanceArgs> = {
32
+ id: "agents-md-guidance",
33
+ priority: 31, // After worktree context (30)
34
+ template: ({ hasRootAgentsMd, rootAgentsMdContent }) => {
35
+ const parts: string[] = [];
36
+
37
+ parts.push("## AGENTS.md Guidelines\n");
38
+
39
+ // When no root AGENTS.md exists, explicitly state so
40
+ if (!hasRootAgentsMd) {
41
+ parts.push(
42
+ "No root AGENTS.md file exists for this project. " +
43
+ "AGENTS.md files provide contextual guidelines for AI agents working in specific directories. " +
44
+ "If you need to establish project-specific conventions, commands, or guidelines, " +
45
+ "consider creating an AGENTS.md file at the project root."
46
+ );
47
+ return parts.join("\n");
48
+ }
49
+
50
+ parts.push(`This project uses AGENTS.md files to provide contextual guidelines for different directories.
51
+
52
+ ### How AGENTS.md Works
53
+ - AGENTS.md files serve as a "README for Agents," containing context, commands, and conventions.
54
+ - Unlike human-focused READMEs, these files focus on actionable instructions (build steps, test commands, code style).
55
+ - **Automatic Injection**: When you use tools that interact with files in a directory containing an AGENTS.md, the system automatically injects relevant AGENTS.md content as a \`<system-reminder>\`. You do NOT need to manually search for or read these files—they are provided to you when relevant.
56
+ - Multiple AGENTS.md files may apply (Root + Directory specific). The system handles this hierarchy automatically.
57
+ - Deeper, more specific AGENTS.md files override general root instructions.
58
+
59
+ ### Writing AGENTS.md Files
60
+ When working in a directory that needs specific agent guidance:
61
+ 1. Create an AGENTS.md file in that directory.
62
+ 2. Focus on **executable commands** (test/build) and **strict conventions**.
63
+ 3. Do not duplicate generic info; focus on what is unique to this directory.
64
+
65
+ ### AGENTS.md Format
66
+ \`\`\`markdown
67
+ # Directory Context
68
+ Specific architectural details or business logic for this directory.
69
+
70
+ ## Commands
71
+ - Test: \`npm test path/to/dir\`
72
+ - Lint: \`npm run lint:specific\`
73
+
74
+ ## Conventions
75
+ - Code Style: Functional patterns preferred
76
+ - Naming: CamelCase for files, PascalCase for classes
77
+
78
+ ## Related
79
+ - [API Docs](./docs/api.md)
80
+ \`\`\``);
81
+
82
+ // If root AGENTS.md content is available and short, include it
83
+ if (rootAgentsMdContent && rootAgentsMdContent.length < MAX_ROOT_CONTENT_LENGTH_FOR_SYSTEM_PROMPT) {
84
+ parts.push("\n### Root AGENTS.md\n");
85
+ parts.push("This project's root AGENTS.md:\n");
86
+ parts.push("```");
87
+ parts.push(rootAgentsMdContent.trim());
88
+ parts.push("```");
89
+ }
90
+
91
+ return parts.join("\n");
92
+ },
93
+ };
94
+
95
+ // Register the fragment
96
+ fragmentRegistry.register(agentsMdGuidanceFragment);
@@ -0,0 +1,72 @@
1
+ import os from "node:os";
2
+ import type { PromptFragment } from "../core/types";
3
+
4
+ /**
5
+ * Process metrics fragment.
6
+ * Provides agents with runtime metadata about the backend process:
7
+ * PID, process uptime, CPU/memory usage, and system uptime.
8
+ */
9
+ export const processMetricsFragment: PromptFragment<Record<string, never>> = {
10
+ id: "process-metrics",
11
+ priority: 4, // Alongside relay-configuration, environment metadata
12
+ template: () => {
13
+ const pid = process.pid;
14
+ const uptimeSeconds = process.uptime();
15
+
16
+ // Format process uptime: show seconds when < 60s, otherwise minutes
17
+ const processUptimeStr =
18
+ uptimeSeconds < 60
19
+ ? `${Math.floor(uptimeSeconds)}s`
20
+ : `${Math.floor(uptimeSeconds / 60)}m`;
21
+
22
+ // CPU usage: average over process lifetime as percentage
23
+ const cpuUsage = process.cpuUsage();
24
+ const totalCpuMicros = cpuUsage.user + cpuUsage.system;
25
+ const numCpus = os.cpus().length;
26
+ const cpuPercentStr =
27
+ uptimeSeconds > 0 && numCpus > 0
28
+ ? `${((totalCpuMicros / (uptimeSeconds * 1_000_000) / numCpus) * 100).toFixed(1)}%`
29
+ : "n/a";
30
+
31
+ // Memory usage: RSS as percentage of total system memory
32
+ const rss = process.memoryUsage().rss;
33
+ const totalMem = os.totalmem();
34
+ const memPercentStr =
35
+ totalMem > 0
36
+ ? `${((rss / totalMem) * 100).toFixed(1)}%`
37
+ : "n/a";
38
+
39
+ // System uptime
40
+ const sysUptimeSeconds = os.uptime();
41
+ const sysUptimeHours = Math.floor(sysUptimeSeconds / 3600);
42
+ const sysUptimeMinutes = Math.floor((sysUptimeSeconds % 3600) / 60);
43
+
44
+ const sysUptimeStr =
45
+ sysUptimeHours > 0
46
+ ? `${sysUptimeHours}h ${sysUptimeMinutes}m`
47
+ : sysUptimeSeconds < 60
48
+ ? `${Math.floor(sysUptimeSeconds)}s`
49
+ : `${sysUptimeMinutes}m`;
50
+
51
+ const lines = [
52
+ "## Process Metrics",
53
+ `- PID: ${pid}`,
54
+ `- Process uptime: ${processUptimeStr}`,
55
+ `- CPU usage: ${cpuPercentStr}`,
56
+ `- Memory usage: ${memPercentStr} (${formatBytes(rss)} RSS)`,
57
+ `- System uptime: ${sysUptimeStr}`,
58
+ ];
59
+
60
+ return lines.join("\n");
61
+ },
62
+ };
63
+
64
+ function formatBytes(bytes: number): string {
65
+ if (bytes < 1024) return `${bytes}B`;
66
+ const kb = bytes / 1024;
67
+ if (kb < 1024) return `${Math.round(kb)}KB`;
68
+ const mb = kb / 1024;
69
+ if (mb < 1024) return `${Math.round(mb)}MB`;
70
+ const gb = mb / 1024;
71
+ return `${gb.toFixed(1)}GB`;
72
+ }
@@ -0,0 +1,48 @@
1
+ import type { NDKEvent } from "@nostr-dev-kit/ndk";
2
+ import type { PromptFragment } from "../core/types";
3
+
4
+ /**
5
+ * Fragment for debug mode meta-cognitive analysis
6
+ * Applied when the user includes #debug in their message
7
+ */
8
+ export const debugModeFragment: PromptFragment<{ enabled: boolean }> = {
9
+ id: "debug-mode",
10
+ priority: 100, // High priority to ensure it appears after system prompt
11
+ template: (data) => {
12
+ if (!data.enabled) return "";
13
+
14
+ return `
15
+ === DEBUG MODE: META-COGNITIVE ANALYSIS REQUESTED ===
16
+
17
+ The user has included "#debug" in their message. They are asking you to explain your decision-making process.
18
+
19
+ Provide a transparent, honest analysis of:
20
+
21
+ 1. Transparent response of the decision-making process. <-- This is the critical part.
22
+ 2. Your understanding of the current status of the current conversation. What was said recently? Who did what? Which agents are involved and what was the last thing they accomplished. Include textual quotes from the agents and users that are involved in the conversation.
23
+ 3. **System Prompt Influence**: Which specific parts of your system prompt or instructions guided this decision
24
+ 4. **Reasoning Chain**: The step-by-step thought process that led to your choice
25
+ 5. **Alternatives Considered**: Other approaches you evaluated but didn't choose, and why
26
+ 6. **Assumptions Made**: Any implicit assumptions about the project, user needs, or context
27
+ 7. **Constraints Applied**: Technical, architectural, or guideline constraints that limited options
28
+ 8. **Confidence Level**: How certain you were about this decision and any doubts you had
29
+ 9. **Pattern Matching**: If you followed a common pattern or best practice, explain why it seemed applicable
30
+
31
+ Be completely transparent about your internal process. If you made a mistake or could have done better, acknowledge it. The goal is to help the user understand exactly how you arrived at your decision.
32
+
33
+ ONLY reply to the question being asked; do NOT perform any other action, do NOT call any tool. Do not apologize. Just transparently respond.
34
+ === END DEBUG MODE ===`;
35
+ },
36
+ };
37
+
38
+ // Note: Fragment is registered in the fragments/index.ts file
39
+
40
+ /**
41
+ * Helper function to check if debug mode is enabled
42
+ */
43
+ export function isDebugMode(triggeringEvent: NDKEvent | undefined): boolean {
44
+ if (!triggeringEvent || !triggeringEvent.content) {
45
+ return false;
46
+ }
47
+ return triggeringEvent.content.includes("#debug");
48
+ }
@@ -0,0 +1,44 @@
1
+ import type { PromptFragment } from "../core/types";
2
+
3
+ /**
4
+ * Fragment for delegation completion instructions
5
+ * Applied when an agent is reactivated after a delegated task completes.
6
+ * Differentiates between partial completion (some pending) and full completion.
7
+ */
8
+ export const delegationCompletionFragment: PromptFragment<{
9
+ isDelegationCompletion?: boolean;
10
+ hasPendingDelegations?: boolean;
11
+ }> = {
12
+ id: "delegation-completion",
13
+ priority: 95, // High priority to ensure agent sees this instruction
14
+ template: (data) => {
15
+ if (!data.isDelegationCompletion) return "";
16
+
17
+ if (data.hasPendingDelegations) {
18
+ return `
19
+ === DELEGATION UPDATE ===
20
+
21
+ One or more delegated tasks have completed. The response(s) are in the conversation above.
22
+ You are still waiting for other delegations to complete.
23
+
24
+ You may:
25
+ - Acknowledge receipt of partial results
26
+ - Ask follow-up questions to completed agents
27
+ - Wait silently for remaining delegations
28
+ - Take other actions as appropriate
29
+
30
+ === END UPDATE ===`;
31
+ }
32
+
33
+ return `
34
+ === ALL DELEGATIONS COMPLETE ===
35
+
36
+ All delegated tasks have completed. The responses are in the conversation above.
37
+
38
+ Synthesize the results and respond to the user.
39
+
40
+ === END NOTIFICATION ===`;
41
+ },
42
+ };
43
+
44
+ // Note: Fragment is registered in the fragments/index.ts file
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Fragment registration manifest
3
+ * Explicitly registers all prompt fragments in the system
4
+ * This replaces the implicit import side-effects pattern
5
+ */
6
+
7
+ import { fragmentRegistry } from "../core/FragmentRegistry";
8
+
9
+ // Import all fragment definitions
10
+ import { globalSystemPromptFragment } from "./00-global-system-prompt";
11
+ import { agentIdentityFragment } from "./01-agent-identity";
12
+ import { agentHomeDirectoryFragment } from "./02-agent-home-directory";
13
+ import { systemRemindersExplanationFragment } from "./03-system-reminders-explanation";
14
+ import { relayConfigurationFragment } from "./04-relay-configuration";
15
+ import { delegationChainFragment } from "./05-delegation-chain";
16
+ import { agentTodosFragment } from "./06-agent-todos";
17
+ import { metaProjectContextFragment } from "./07-meta-project-context";
18
+ import { activeConversationsFragment } from "./08-active-conversations";
19
+ import { recentConversationsFragment } from "./09-recent-conversations";
20
+ import { todoUsageGuidanceFragment } from "./06-todo-usage-guidance";
21
+ // 10-referenced-article uses inline registration, no named export
22
+ import "./10-referenced-article";
23
+ import { availableAgentsFragment } from "./15-available-agents";
24
+ import { stayInYourLaneFragment } from "./16-stay-in-your-lane";
25
+ import { todoBeforeDelegationFragment } from "./17-todo-before-delegation";
26
+ // 20-voice-mode doesn't export the fragment, it's registered inline
27
+ import "./20-voice-mode";
28
+ import { nudgesFragment } from "./11-nudges";
29
+ import { skillsFragment } from "./12-skills";
30
+ import { availableNudgesAndSkillsFragment } from "./13-available-nudges";
31
+ import { scheduledTasksFragment } from "./22-scheduled-tasks";
32
+ import { retrievedLessonsFragment } from "./24-retrieved-lessons";
33
+ import { ragInstructionsFragment } from "./25-rag-instructions";
34
+ import { mcpResourcesFragment } from "./26-mcp-resources";
35
+ import { memorizedReportsFragment } from "./27-memorized-reports";
36
+ import { agentDirectedMonitoringFragment } from "./28-agent-directed-monitoring";
37
+ import { ragCollectionsFragment } from "./29-rag-collections";
38
+ import { worktreeContextFragment } from "./30-worktree-context";
39
+ import { agentsMdGuidanceFragment } from "./31-agents-md-guidance";
40
+ import { debugModeFragment } from "./debug-mode";
41
+ import { delegationCompletionFragment } from "./delegation-completion";
42
+
43
+ /**
44
+ * Register all fragments explicitly
45
+ * This provides a clear view of all available fragments
46
+ */
47
+ export function registerAllFragments(): void {
48
+ // Global user-configured prompt (ordered with other fragments by priority)
49
+ fragmentRegistry.register(globalSystemPromptFragment);
50
+
51
+ // Core identity and context
52
+ fragmentRegistry.register(agentIdentityFragment);
53
+ fragmentRegistry.register(agentHomeDirectoryFragment);
54
+ fragmentRegistry.register(systemRemindersExplanationFragment);
55
+ fragmentRegistry.register(relayConfigurationFragment);
56
+ fragmentRegistry.register(delegationChainFragment);
57
+ fragmentRegistry.register(agentTodosFragment);
58
+ fragmentRegistry.register(todoUsageGuidanceFragment);
59
+ fragmentRegistry.register(metaProjectContextFragment);
60
+ fragmentRegistry.register(activeConversationsFragment);
61
+ fragmentRegistry.register(recentConversationsFragment);
62
+ fragmentRegistry.register(debugModeFragment);
63
+ fragmentRegistry.register(delegationCompletionFragment);
64
+
65
+ // Agent collaboration
66
+ fragmentRegistry.register(availableAgentsFragment);
67
+ fragmentRegistry.register(stayInYourLaneFragment);
68
+ fragmentRegistry.register(todoBeforeDelegationFragment);
69
+
70
+ // Behavioral guidance
71
+ // voice-mode and referenced-article are registered via side effects
72
+ fragmentRegistry.register(nudgesFragment);
73
+ fragmentRegistry.register(skillsFragment);
74
+ fragmentRegistry.register(availableNudgesAndSkillsFragment);
75
+
76
+ // Scheduled tasks context
77
+ fragmentRegistry.register(scheduledTasksFragment);
78
+
79
+ // Context and learning
80
+ fragmentRegistry.register(retrievedLessonsFragment);
81
+ fragmentRegistry.register(ragInstructionsFragment);
82
+ fragmentRegistry.register(mcpResourcesFragment);
83
+ fragmentRegistry.register(memorizedReportsFragment);
84
+ fragmentRegistry.register(agentDirectedMonitoringFragment);
85
+ fragmentRegistry.register(ragCollectionsFragment);
86
+ fragmentRegistry.register(worktreeContextFragment);
87
+ fragmentRegistry.register(agentsMdGuidanceFragment);
88
+ }
89
+
90
+ // Auto-register all fragments on import
91
+ registerAllFragments();
@@ -0,0 +1,21 @@
1
+ // Export core functionality
2
+
3
+ export { FragmentRegistry, fragmentRegistry } from "./core/FragmentRegistry";
4
+ export { PromptBuilder } from "./core/PromptBuilder";
5
+ export type { FragmentConfig, PromptFragment } from "./core/types";
6
+
7
+ // Import all fragments to ensure they're registered when the module is imported
8
+ // Priority 01 - Identity
9
+ import "./fragments/01-agent-identity";
10
+
11
+ // Priority 10 - Early context
12
+ import "./fragments/10-referenced-article"; // Conditional
13
+
14
+ // Priority 15 - Available agents
15
+ import "./fragments/15-available-agents";
16
+
17
+ // Priority 20 - Mode context
18
+ import "./fragments/20-voice-mode"; // Conditional
19
+
20
+ // Priority 24 - Lessons
21
+ import "./fragments/24-retrieved-lessons"; // Shared