@hailer/mcp 1.1.15 → 1.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/bot-manager.d.ts +48 -0
- package/dist/agents/bot-manager.d.ts.map +1 -0
- package/dist/agents/bot-manager.js +254 -0
- package/dist/agents/bot-manager.js.map +1 -0
- package/dist/agents/bug-fixer/ai.d.ts +80 -0
- package/dist/agents/bug-fixer/ai.d.ts.map +1 -0
- package/dist/agents/bug-fixer/ai.js +466 -0
- package/dist/agents/bug-fixer/ai.js.map +1 -0
- package/dist/agents/bug-fixer/bot.d.ts +92 -0
- package/dist/agents/bug-fixer/bot.d.ts.map +1 -0
- package/dist/agents/bug-fixer/bot.js +687 -0
- package/dist/agents/bug-fixer/bot.js.map +1 -0
- package/dist/agents/bug-fixer/config.d.ts +21 -0
- package/dist/agents/bug-fixer/config.d.ts.map +1 -0
- package/dist/agents/bug-fixer/config.js +218 -0
- package/dist/agents/bug-fixer/config.js.map +1 -0
- package/dist/agents/bug-fixer/files.d.ts +67 -0
- package/dist/agents/bug-fixer/files.d.ts.map +1 -0
- package/dist/agents/bug-fixer/files.js +386 -0
- package/dist/agents/bug-fixer/files.js.map +1 -0
- package/dist/agents/bug-fixer/git.d.ts +48 -0
- package/dist/agents/bug-fixer/git.d.ts.map +1 -0
- package/dist/agents/bug-fixer/git.js +298 -0
- package/dist/agents/bug-fixer/git.js.map +1 -0
- package/dist/agents/bug-fixer/index.d.ts +103 -0
- package/dist/agents/bug-fixer/index.d.ts.map +1 -0
- package/dist/agents/bug-fixer/index.js +262 -0
- package/dist/agents/bug-fixer/index.js.map +1 -0
- package/dist/agents/bug-fixer/lsp.d.ts +113 -0
- package/dist/agents/bug-fixer/lsp.d.ts.map +1 -0
- package/dist/agents/bug-fixer/lsp.js +485 -0
- package/dist/agents/bug-fixer/lsp.js.map +1 -0
- package/dist/agents/bug-fixer/monitor.d.ts +123 -0
- package/dist/agents/bug-fixer/monitor.d.ts.map +1 -0
- package/dist/agents/bug-fixer/monitor.js +629 -0
- package/dist/agents/bug-fixer/monitor.js.map +1 -0
- package/dist/agents/bug-fixer/prompt.d.ts +5 -0
- package/dist/agents/bug-fixer/prompt.d.ts.map +1 -0
- package/dist/agents/bug-fixer/prompt.js +94 -0
- package/dist/agents/bug-fixer/prompt.js.map +1 -0
- package/dist/agents/bug-fixer/registries/pending-classification.d.ts +28 -0
- package/dist/agents/bug-fixer/registries/pending-classification.d.ts.map +1 -0
- package/dist/agents/bug-fixer/registries/pending-classification.js +50 -0
- package/dist/agents/bug-fixer/registries/pending-classification.js.map +1 -0
- package/dist/agents/bug-fixer/registries/pending-fix.d.ts +33 -0
- package/dist/agents/bug-fixer/registries/pending-fix.d.ts.map +1 -0
- package/dist/agents/bug-fixer/registries/pending-fix.js +64 -0
- package/dist/agents/bug-fixer/registries/pending-fix.js.map +1 -0
- package/dist/agents/bug-fixer/registries/pending.d.ts +27 -0
- package/dist/agents/bug-fixer/registries/pending.d.ts.map +1 -0
- package/dist/agents/bug-fixer/registries/pending.js +49 -0
- package/dist/agents/bug-fixer/registries/pending.js.map +1 -0
- package/dist/agents/bug-fixer/specialist-daemon.d.ts +88 -0
- package/dist/agents/bug-fixer/specialist-daemon.d.ts.map +1 -0
- package/dist/agents/bug-fixer/specialist-daemon.js +431 -0
- package/dist/agents/bug-fixer/specialist-daemon.js.map +1 -0
- package/dist/agents/bug-fixer/specialist.d.ts +47 -0
- package/dist/agents/bug-fixer/specialist.d.ts.map +1 -0
- package/dist/agents/bug-fixer/specialist.js +327 -0
- package/dist/agents/bug-fixer/specialist.js.map +1 -0
- package/dist/agents/bug-fixer/types.d.ts +123 -0
- package/dist/agents/bug-fixer/types.d.ts.map +1 -0
- package/dist/agents/bug-fixer/types.js +9 -0
- package/dist/agents/bug-fixer/types.js.map +1 -0
- package/dist/agents/factory.d.ts +172 -0
- package/dist/agents/factory.d.ts.map +1 -0
- package/dist/agents/factory.js +706 -0
- package/dist/agents/factory.js.map +1 -0
- package/dist/agents/hailer-expert/index.d.ts +8 -0
- package/dist/agents/hailer-expert/index.d.ts.map +1 -0
- package/dist/agents/hailer-expert/index.js +14 -0
- package/dist/agents/hailer-expert/index.js.map +1 -0
- package/dist/agents/hal/daemon.d.ts +174 -0
- package/dist/agents/hal/daemon.d.ts.map +1 -0
- package/dist/agents/hal/daemon.js +1385 -0
- package/dist/agents/hal/daemon.js.map +1 -0
- package/dist/agents/hal/definitions.d.ts +42 -0
- package/dist/agents/hal/definitions.d.ts.map +1 -0
- package/dist/agents/hal/definitions.js +300 -0
- package/dist/agents/hal/definitions.js.map +1 -0
- package/dist/agents/hal/index.d.ts +3 -0
- package/dist/agents/hal/index.d.ts.map +1 -0
- package/dist/agents/hal/index.js +8 -0
- package/dist/agents/hal/index.js.map +1 -0
- package/dist/agents/index.d.ts +18 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +48 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/shared/base.d.ts +253 -0
- package/dist/agents/shared/base.d.ts.map +1 -0
- package/dist/agents/shared/base.js +1122 -0
- package/dist/agents/shared/base.js.map +1 -0
- package/dist/agents/shared/schemas/action-schema.d.ts +62 -0
- package/dist/agents/shared/schemas/action-schema.d.ts.map +1 -0
- package/dist/agents/shared/schemas/action-schema.js +483 -0
- package/dist/agents/shared/schemas/action-schema.js.map +1 -0
- package/dist/agents/shared/services/agent-registry.d.ts +108 -0
- package/dist/agents/shared/services/agent-registry.d.ts.map +1 -0
- package/dist/agents/shared/services/agent-registry.js +469 -0
- package/dist/agents/shared/services/agent-registry.js.map +1 -0
- package/dist/agents/shared/services/conversation-manager.d.ts +57 -0
- package/dist/agents/shared/services/conversation-manager.d.ts.map +1 -0
- package/dist/agents/shared/services/conversation-manager.js +168 -0
- package/dist/agents/shared/services/conversation-manager.js.map +1 -0
- package/dist/agents/shared/services/mcp-client.d.ts +56 -0
- package/dist/agents/shared/services/mcp-client.d.ts.map +1 -0
- package/dist/agents/shared/services/mcp-client.js +124 -0
- package/dist/agents/shared/services/mcp-client.js.map +1 -0
- package/dist/agents/shared/services/message-classifier.d.ts +37 -0
- package/dist/agents/shared/services/message-classifier.d.ts.map +1 -0
- package/dist/agents/shared/services/message-classifier.js +203 -0
- package/dist/agents/shared/services/message-classifier.js.map +1 -0
- package/dist/agents/shared/services/message-formatter.d.ts +89 -0
- package/dist/agents/shared/services/message-formatter.d.ts.map +1 -0
- package/dist/agents/shared/services/message-formatter.js +390 -0
- package/dist/agents/shared/services/message-formatter.js.map +1 -0
- package/dist/agents/shared/services/session-logger.d.ts +162 -0
- package/dist/agents/shared/services/session-logger.d.ts.map +1 -0
- package/dist/agents/shared/services/session-logger.js +724 -0
- package/dist/agents/shared/services/session-logger.js.map +1 -0
- package/dist/agents/shared/services/structured-output-executor.d.ts +88 -0
- package/dist/agents/shared/services/structured-output-executor.d.ts.map +1 -0
- package/dist/agents/shared/services/structured-output-executor.js +296 -0
- package/dist/agents/shared/services/structured-output-executor.js.map +1 -0
- package/dist/agents/shared/services/token-billing.d.ts +72 -0
- package/dist/agents/shared/services/token-billing.d.ts.map +1 -0
- package/dist/agents/shared/services/token-billing.js +198 -0
- package/dist/agents/shared/services/token-billing.js.map +1 -0
- package/dist/agents/shared/services/tool-executor.d.ts +43 -0
- package/dist/agents/shared/services/tool-executor.d.ts.map +1 -0
- package/dist/agents/shared/services/tool-executor.js +175 -0
- package/dist/agents/shared/services/tool-executor.js.map +1 -0
- package/dist/agents/shared/services/typing-indicator.d.ts +24 -0
- package/dist/agents/shared/services/typing-indicator.d.ts.map +1 -0
- package/dist/agents/shared/services/typing-indicator.js +54 -0
- package/dist/agents/shared/services/typing-indicator.js.map +1 -0
- package/dist/agents/shared/services/workspace-schema-cache.d.ts +122 -0
- package/dist/agents/shared/services/workspace-schema-cache.d.ts.map +1 -0
- package/dist/agents/shared/services/workspace-schema-cache.js +507 -0
- package/dist/agents/shared/services/workspace-schema-cache.js.map +1 -0
- package/dist/agents/shared/specialist.d.ts +91 -0
- package/dist/agents/shared/specialist.d.ts.map +1 -0
- package/dist/agents/shared/specialist.js +399 -0
- package/dist/agents/shared/specialist.js.map +1 -0
- package/dist/agents/shared/tool-schema-loader.d.ts +65 -0
- package/dist/agents/shared/tool-schema-loader.d.ts.map +1 -0
- package/dist/agents/shared/tool-schema-loader.js +238 -0
- package/dist/agents/shared/tool-schema-loader.js.map +1 -0
- package/dist/agents/shared/types.d.ts +190 -0
- package/dist/agents/shared/types.d.ts.map +1 -0
- package/dist/agents/shared/types.js +13 -0
- package/dist/agents/shared/types.js.map +1 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js.map +1 -0
- package/dist/bot/bot-config.d.ts.map +1 -0
- package/dist/bot/bot-config.js.map +1 -0
- package/dist/bot/bot-manager.d.ts.map +1 -0
- package/dist/bot/bot-manager.js.map +1 -0
- package/dist/bot/bot.d.ts.map +1 -0
- package/dist/bot/bot.js.map +1 -0
- package/dist/bot/operation-logger.d.ts.map +1 -0
- package/dist/bot/operation-logger.js.map +1 -0
- package/dist/bot/services/__tests__/permission-guard.test.d.ts +2 -0
- package/dist/bot/services/__tests__/permission-guard.test.d.ts.map +1 -0
- package/dist/bot/services/__tests__/permission-guard.test.js +357 -0
- package/dist/bot/services/__tests__/permission-guard.test.js.map +1 -0
- package/dist/bot/services/conversation-manager.d.ts.map +1 -0
- package/dist/bot/services/conversation-manager.js.map +1 -0
- package/dist/bot/services/index.d.ts.map +1 -0
- package/dist/bot/services/index.js.map +1 -0
- package/dist/bot/services/message-classifier.d.ts.map +1 -0
- package/dist/bot/services/message-classifier.js.map +1 -0
- package/dist/bot/services/message-formatter.d.ts.map +1 -0
- package/dist/bot/services/message-formatter.js.map +1 -0
- package/dist/bot/services/permission-guard.d.ts.map +1 -0
- package/dist/bot/services/permission-guard.js.map +1 -0
- package/dist/bot/services/session-logger.d.ts.map +1 -0
- package/dist/bot/services/session-logger.js.map +1 -0
- package/dist/bot/services/token-billing.d.ts.map +1 -0
- package/dist/bot/services/token-billing.js.map +1 -0
- package/dist/bot/services/types.d.ts.map +1 -0
- package/dist/bot/services/types.js.map +1 -0
- package/dist/bot/services/typing-indicator.d.ts.map +1 -0
- package/dist/bot/services/typing-indicator.js.map +1 -0
- package/dist/bot/services/workspace-schema-cache.d.ts.map +1 -0
- package/dist/bot/services/workspace-schema-cache.js.map +1 -0
- package/dist/bot/tool-executor.d.ts.map +1 -0
- package/dist/bot/tool-executor.js.map +1 -0
- package/dist/bot/workspace-overview.d.ts.map +1 -0
- package/dist/bot/workspace-overview.js.map +1 -0
- package/dist/bot-config/constants.d.ts +42 -0
- package/dist/bot-config/constants.d.ts.map +1 -0
- package/dist/bot-config/constants.js +118 -0
- package/dist/bot-config/constants.js.map +1 -0
- package/dist/bot-config/context.d.ts +157 -0
- package/dist/bot-config/context.d.ts.map +1 -0
- package/dist/bot-config/context.js +475 -0
- package/dist/bot-config/context.js.map +1 -0
- package/dist/bot-config/index.d.ts +21 -0
- package/dist/bot-config/index.d.ts.map +1 -0
- package/dist/bot-config/index.js +104 -0
- package/dist/bot-config/index.js.map +1 -0
- package/dist/bot-config/loader.d.ts +28 -0
- package/dist/bot-config/loader.d.ts.map +1 -0
- package/dist/bot-config/loader.js +194 -0
- package/dist/bot-config/loader.js.map +1 -0
- package/dist/bot-config/persistence.d.ts +68 -0
- package/dist/bot-config/persistence.d.ts.map +1 -0
- package/dist/bot-config/persistence.js +261 -0
- package/dist/bot-config/persistence.js.map +1 -0
- package/dist/bot-config/state.d.ts +56 -0
- package/dist/bot-config/state.d.ts.map +1 -0
- package/dist/bot-config/state.js +197 -0
- package/dist/bot-config/state.js.map +1 -0
- package/dist/bot-config/tools.d.ts +28 -0
- package/dist/bot-config/tools.d.ts.map +1 -0
- package/dist/bot-config/tools.js +279 -0
- package/dist/bot-config/tools.js.map +1 -0
- package/dist/bot-config/types.d.ts +45 -0
- package/dist/bot-config/types.d.ts.map +1 -0
- package/dist/bot-config/types.js +9 -0
- package/dist/bot-config/types.js.map +1 -0
- package/dist/bot-config/webhooks.d.ts +27 -0
- package/dist/bot-config/webhooks.d.ts.map +1 -0
- package/dist/bot-config/webhooks.js +212 -0
- package/dist/bot-config/webhooks.js.map +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/agents/base.d.ts +207 -0
- package/dist/client/agents/base.d.ts.map +1 -0
- package/dist/client/agents/base.js +744 -0
- package/dist/client/agents/base.js.map +1 -0
- package/dist/client/agents/definitions.d.ts +53 -0
- package/dist/client/agents/definitions.d.ts.map +1 -0
- package/dist/client/agents/definitions.js +263 -0
- package/dist/client/agents/definitions.js.map +1 -0
- package/dist/client/agents/orchestrator.d.ts +141 -0
- package/dist/client/agents/orchestrator.d.ts.map +1 -0
- package/dist/client/agents/orchestrator.js +1062 -0
- package/dist/client/agents/orchestrator.js.map +1 -0
- package/dist/client/agents/specialist.d.ts +86 -0
- package/dist/client/agents/specialist.d.ts.map +1 -0
- package/dist/client/agents/specialist.js +340 -0
- package/dist/client/agents/specialist.js.map +1 -0
- package/dist/client/bot-entrypoint.d.ts +7 -0
- package/dist/client/bot-entrypoint.d.ts.map +1 -0
- package/dist/client/bot-entrypoint.js +103 -0
- package/dist/client/bot-entrypoint.js.map +1 -0
- package/dist/client/bot-manager.d.ts +44 -0
- package/dist/client/bot-manager.d.ts.map +1 -0
- package/dist/client/bot-manager.js +173 -0
- package/dist/client/bot-manager.js.map +1 -0
- package/dist/client/bot-runner.d.ts +35 -0
- package/dist/client/bot-runner.d.ts.map +1 -0
- package/dist/client/bot-runner.js +188 -0
- package/dist/client/bot-runner.js.map +1 -0
- package/dist/client/chat-agent-daemon.d.ts +464 -0
- package/dist/client/chat-agent-daemon.d.ts.map +1 -0
- package/dist/client/chat-agent-daemon.js +1774 -0
- package/dist/client/chat-agent-daemon.js.map +1 -0
- package/dist/client/daemon-factory.d.ts +106 -0
- package/dist/client/daemon-factory.d.ts.map +1 -0
- package/dist/client/daemon-factory.js +301 -0
- package/dist/client/daemon-factory.js.map +1 -0
- package/dist/client/factory.d.ts +111 -0
- package/dist/client/factory.d.ts.map +1 -0
- package/dist/client/factory.js +314 -0
- package/dist/client/factory.js.map +1 -0
- package/dist/client/index.d.ts +17 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +38 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/multi-bot-manager.d.ts +42 -0
- package/dist/client/multi-bot-manager.d.ts.map +1 -0
- package/dist/client/multi-bot-manager.js +161 -0
- package/dist/client/multi-bot-manager.js.map +1 -0
- package/dist/client/orchestrator-daemon.d.ts +87 -0
- package/dist/client/orchestrator-daemon.d.ts.map +1 -0
- package/dist/client/orchestrator-daemon.js +444 -0
- package/dist/client/orchestrator-daemon.js.map +1 -0
- package/dist/client/server.d.ts +8 -0
- package/dist/client/server.d.ts.map +1 -0
- package/dist/client/server.js +251 -0
- package/dist/client/server.js.map +1 -0
- package/dist/client/services/agent-registry.d.ts +108 -0
- package/dist/client/services/agent-registry.d.ts.map +1 -0
- package/dist/client/services/agent-registry.js +630 -0
- package/dist/client/services/agent-registry.js.map +1 -0
- package/dist/client/services/conversation-manager.d.ts +50 -0
- package/dist/client/services/conversation-manager.d.ts.map +1 -0
- package/dist/client/services/conversation-manager.js +136 -0
- package/dist/client/services/conversation-manager.js.map +1 -0
- package/dist/client/services/mcp-client.d.ts +48 -0
- package/dist/client/services/mcp-client.d.ts.map +1 -0
- package/dist/client/services/mcp-client.js +105 -0
- package/dist/client/services/mcp-client.js.map +1 -0
- package/dist/client/services/message-classifier.d.ts +37 -0
- package/dist/client/services/message-classifier.d.ts.map +1 -0
- package/dist/client/services/message-classifier.js +187 -0
- package/dist/client/services/message-classifier.js.map +1 -0
- package/dist/client/services/message-formatter.d.ts +84 -0
- package/dist/client/services/message-formatter.d.ts.map +1 -0
- package/dist/client/services/message-formatter.js +353 -0
- package/dist/client/services/message-formatter.js.map +1 -0
- package/dist/client/services/session-logger.d.ts +106 -0
- package/dist/client/services/session-logger.d.ts.map +1 -0
- package/dist/client/services/session-logger.js +446 -0
- package/dist/client/services/session-logger.js.map +1 -0
- package/dist/client/services/tool-executor.d.ts +41 -0
- package/dist/client/services/tool-executor.d.ts.map +1 -0
- package/dist/client/services/tool-executor.js +169 -0
- package/dist/client/services/tool-executor.js.map +1 -0
- package/dist/client/services/workspace-schema-cache.d.ts +149 -0
- package/dist/client/services/workspace-schema-cache.d.ts.map +1 -0
- package/dist/client/services/workspace-schema-cache.js +732 -0
- package/dist/client/services/workspace-schema-cache.js.map +1 -0
- package/dist/client/specialist-daemon.d.ts +77 -0
- package/dist/client/specialist-daemon.d.ts.map +1 -0
- package/dist/client/specialist-daemon.js +197 -0
- package/dist/client/specialist-daemon.js.map +1 -0
- package/dist/client/specialists.d.ts +53 -0
- package/dist/client/specialists.d.ts.map +1 -0
- package/dist/client/specialists.js +178 -0
- package/dist/client/specialists.js.map +1 -0
- package/dist/client/tool-schema-loader.d.ts +62 -0
- package/dist/client/tool-schema-loader.d.ts.map +1 -0
- package/dist/client/tool-schema-loader.js +232 -0
- package/dist/client/tool-schema-loader.js.map +1 -0
- package/dist/client/types.d.ts +327 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +121 -0
- package/dist/client/types.js.map +1 -0
- package/dist/commands/seed-config.d.ts +9 -0
- package/dist/commands/seed-config.d.ts.map +1 -0
- package/dist/commands/seed-config.js +392 -0
- package/dist/commands/seed-config.js.map +1 -0
- package/dist/commands/setup.d.ts +11 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +320 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js.map +1 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js.map +1 -0
- package/dist/lib/discussion-lock.d.ts.map +1 -0
- package/dist/lib/discussion-lock.js.map +1 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/request-logger.d.ts.map +1 -0
- package/dist/lib/request-logger.js.map +1 -0
- package/dist/mcp/UserContextCache.d.ts.map +1 -0
- package/dist/mcp/UserContextCache.js.map +1 -0
- package/dist/mcp/auth.d.ts.map +1 -0
- package/dist/mcp/auth.js.map +1 -0
- package/dist/mcp/hailer-clients.d.ts.map +1 -0
- package/dist/mcp/hailer-clients.js.map +1 -0
- package/dist/mcp/session-store.d.ts.map +1 -0
- package/dist/mcp/session-store.js.map +1 -0
- package/dist/mcp/signal-handler.d.ts.map +1 -0
- package/dist/mcp/signal-handler.js.map +1 -0
- package/dist/mcp/tool-registry.d.ts.map +1 -0
- package/dist/mcp/tool-registry.js.map +1 -0
- package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts +2 -0
- package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/discussion-forward.test.js +218 -0
- package/dist/mcp/tools/__tests__/discussion-forward.test.js.map +1 -0
- package/dist/mcp/tools/activity.d.ts.map +1 -0
- package/dist/mcp/tools/activity.js.map +1 -0
- package/dist/mcp/tools/app-core.d.ts.map +1 -0
- package/dist/mcp/tools/app-core.js.map +1 -0
- package/dist/mcp/tools/app-marketplace.d.ts.map +1 -0
- package/dist/mcp/tools/app-marketplace.js.map +1 -0
- package/dist/mcp/tools/app-member.d.ts.map +1 -0
- package/dist/mcp/tools/app-member.js.map +1 -0
- package/dist/mcp/tools/app-scaffold.d.ts.map +1 -0
- package/dist/mcp/tools/app-scaffold.js.map +1 -0
- package/dist/mcp/tools/app.d.ts.map +1 -0
- package/dist/mcp/tools/app.js.map +1 -0
- package/dist/mcp/tools/bot-config/constants.d.ts.map +1 -0
- package/dist/mcp/tools/bot-config/constants.js.map +1 -0
- package/dist/mcp/tools/bot-config/core.d.ts.map +1 -0
- package/dist/mcp/tools/bot-config/core.js.map +1 -0
- package/dist/mcp/tools/bot-config/index.d.ts.map +1 -0
- package/dist/mcp/tools/bot-config/index.js.map +1 -0
- package/dist/mcp/tools/bot-config/tools.d.ts.map +1 -0
- package/dist/mcp/tools/bot-config/tools.js.map +1 -0
- package/dist/mcp/tools/bot-config/types.d.ts.map +1 -0
- package/dist/mcp/tools/bot-config/types.js.map +1 -0
- package/dist/mcp/tools/bug-fixer-tools.d.ts.map +1 -0
- package/dist/mcp/tools/bug-fixer-tools.js.map +1 -0
- package/dist/mcp/tools/company.d.ts.map +1 -0
- package/dist/mcp/tools/company.js.map +1 -0
- package/dist/mcp/tools/discussion.d.ts.map +1 -0
- package/dist/mcp/tools/discussion.js.map +1 -0
- package/dist/mcp/tools/document.d.ts.map +1 -0
- package/dist/mcp/tools/document.js.map +1 -0
- package/dist/mcp/tools/file.d.ts.map +1 -0
- package/dist/mcp/tools/file.js.map +1 -0
- package/dist/mcp/tools/insight.d.ts.map +1 -0
- package/dist/mcp/tools/insight.js.map +1 -0
- package/dist/mcp/tools/investigate.d.ts.map +1 -0
- package/dist/mcp/tools/investigate.js.map +1 -0
- package/dist/mcp/tools/user.d.ts.map +1 -0
- package/dist/mcp/tools/user.js.map +1 -0
- package/dist/mcp/tools/workflow-permissions.d.ts.map +1 -0
- package/dist/mcp/tools/workflow-permissions.js.map +1 -0
- package/dist/mcp/tools/workflow.d.ts.map +1 -0
- package/dist/mcp/tools/workflow.js.map +1 -0
- package/dist/mcp/utils/api-errors.d.ts.map +1 -0
- package/dist/mcp/utils/api-errors.js.map +1 -0
- package/dist/mcp/utils/data-transformers.d.ts.map +1 -0
- package/dist/mcp/utils/data-transformers.js.map +1 -0
- package/dist/mcp/utils/file-upload.d.ts.map +1 -0
- package/dist/mcp/utils/file-upload.js.map +1 -0
- package/dist/mcp/utils/hailer-api-client.d.ts.map +1 -0
- package/dist/mcp/utils/hailer-api-client.js.map +1 -0
- package/dist/mcp/utils/index.d.ts.map +1 -0
- package/dist/mcp/utils/index.js.map +1 -0
- package/dist/mcp/utils/logger.d.ts.map +1 -0
- package/dist/mcp/utils/logger.js.map +1 -0
- package/dist/mcp/utils/pagination.d.ts.map +1 -0
- package/dist/mcp/utils/pagination.js.map +1 -0
- package/dist/mcp/utils/response-builder.d.ts.map +1 -0
- package/dist/mcp/utils/response-builder.js.map +1 -0
- package/dist/mcp/utils/role-utils.d.ts.map +1 -0
- package/dist/mcp/utils/role-utils.js.map +1 -0
- package/dist/mcp/utils/tool-helpers.d.ts.map +1 -0
- package/dist/mcp/utils/tool-helpers.js.map +1 -0
- package/dist/mcp/utils/types.d.ts.map +1 -0
- package/dist/mcp/utils/types.js.map +1 -0
- package/dist/mcp/webhook-handler.d.ts.map +1 -0
- package/dist/mcp/webhook-handler.js.map +1 -0
- package/dist/mcp/workspace-cache.d.ts.map +1 -0
- package/dist/mcp/workspace-cache.js.map +1 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/modules/bug-reports/bug-config.d.ts +25 -0
- package/dist/modules/bug-reports/bug-config.d.ts.map +1 -0
- package/dist/modules/bug-reports/bug-config.js +187 -0
- package/dist/modules/bug-reports/bug-config.js.map +1 -0
- package/dist/modules/bug-reports/bug-monitor.d.ts +108 -0
- package/dist/modules/bug-reports/bug-monitor.d.ts.map +1 -0
- package/dist/modules/bug-reports/bug-monitor.js +510 -0
- package/dist/modules/bug-reports/bug-monitor.js.map +1 -0
- package/dist/modules/bug-reports/giuseppe-agent.d.ts +58 -0
- package/dist/modules/bug-reports/giuseppe-agent.d.ts.map +1 -0
- package/dist/modules/bug-reports/giuseppe-agent.js +467 -0
- package/dist/modules/bug-reports/giuseppe-agent.js.map +1 -0
- package/dist/modules/bug-reports/giuseppe-ai.d.ts +83 -0
- package/dist/modules/bug-reports/giuseppe-ai.d.ts.map +1 -0
- package/dist/modules/bug-reports/giuseppe-ai.js +466 -0
- package/dist/modules/bug-reports/giuseppe-ai.js.map +1 -0
- package/dist/modules/bug-reports/giuseppe-bot.d.ts +110 -0
- package/dist/modules/bug-reports/giuseppe-bot.d.ts.map +1 -0
- package/dist/modules/bug-reports/giuseppe-bot.js +804 -0
- package/dist/modules/bug-reports/giuseppe-bot.js.map +1 -0
- package/dist/modules/bug-reports/giuseppe-daemon.d.ts +80 -0
- package/dist/modules/bug-reports/giuseppe-daemon.d.ts.map +1 -0
- package/dist/modules/bug-reports/giuseppe-daemon.js +617 -0
- package/dist/modules/bug-reports/giuseppe-daemon.js.map +1 -0
- package/dist/modules/bug-reports/giuseppe-files.d.ts +64 -0
- package/dist/modules/bug-reports/giuseppe-files.d.ts.map +1 -0
- package/dist/modules/bug-reports/giuseppe-files.js +375 -0
- package/dist/modules/bug-reports/giuseppe-files.js.map +1 -0
- package/dist/modules/bug-reports/giuseppe-git.d.ts +48 -0
- package/dist/modules/bug-reports/giuseppe-git.d.ts.map +1 -0
- package/dist/modules/bug-reports/giuseppe-git.js +298 -0
- package/dist/modules/bug-reports/giuseppe-git.js.map +1 -0
- package/dist/modules/bug-reports/giuseppe-lsp.d.ts +113 -0
- package/dist/modules/bug-reports/giuseppe-lsp.d.ts.map +1 -0
- package/dist/modules/bug-reports/giuseppe-lsp.js +485 -0
- package/dist/modules/bug-reports/giuseppe-lsp.js.map +1 -0
- package/dist/modules/bug-reports/giuseppe-prompt.d.ts +5 -0
- package/dist/modules/bug-reports/giuseppe-prompt.d.ts.map +1 -0
- package/dist/modules/bug-reports/giuseppe-prompt.js +94 -0
- package/dist/modules/bug-reports/giuseppe-prompt.js.map +1 -0
- package/dist/modules/bug-reports/index.d.ts +77 -0
- package/dist/modules/bug-reports/index.d.ts.map +1 -0
- package/dist/modules/bug-reports/index.js +215 -0
- package/dist/modules/bug-reports/index.js.map +1 -0
- package/dist/modules/bug-reports/pending-classification-registry.d.ts +28 -0
- package/dist/modules/bug-reports/pending-classification-registry.d.ts.map +1 -0
- package/dist/modules/bug-reports/pending-classification-registry.js +50 -0
- package/dist/modules/bug-reports/pending-classification-registry.js.map +1 -0
- package/dist/modules/bug-reports/pending-fix-registry.d.ts +30 -0
- package/dist/modules/bug-reports/pending-fix-registry.d.ts.map +1 -0
- package/dist/modules/bug-reports/pending-fix-registry.js +42 -0
- package/dist/modules/bug-reports/pending-fix-registry.js.map +1 -0
- package/dist/modules/bug-reports/pending-registry.d.ts +27 -0
- package/dist/modules/bug-reports/pending-registry.d.ts.map +1 -0
- package/dist/modules/bug-reports/pending-registry.js +49 -0
- package/dist/modules/bug-reports/pending-registry.js.map +1 -0
- package/dist/modules/bug-reports/types.d.ts +123 -0
- package/dist/modules/bug-reports/types.d.ts.map +1 -0
- package/dist/modules/bug-reports/types.js +9 -0
- package/dist/modules/bug-reports/types.js.map +1 -0
- package/dist/plugins/bug-fixer/index.d.ts.map +1 -0
- package/dist/plugins/bug-fixer/index.js.map +1 -0
- package/dist/plugins/bug-fixer/tools.d.ts.map +1 -0
- package/dist/plugins/bug-fixer/tools.js.map +1 -0
- package/dist/plugins/vipunen/__tests__/tools.test.d.ts +10 -0
- package/dist/plugins/vipunen/__tests__/tools.test.d.ts.map +1 -0
- package/dist/plugins/vipunen/__tests__/tools.test.js +646 -0
- package/dist/plugins/vipunen/__tests__/tools.test.js.map +1 -0
- package/dist/plugins/vipunen/client.d.ts.map +1 -0
- package/dist/plugins/vipunen/client.js.map +1 -0
- package/dist/plugins/vipunen/index.d.ts.map +1 -0
- package/dist/plugins/vipunen/index.js.map +1 -0
- package/dist/plugins/vipunen/tools.d.ts.map +1 -0
- package/dist/plugins/vipunen/tools.js.map +1 -0
- package/dist/routes/agents.d.ts +44 -0
- package/dist/routes/agents.d.ts.map +1 -0
- package/dist/routes/agents.js +311 -0
- package/dist/routes/agents.js.map +1 -0
- package/dist/services/agent-credential-store.d.ts +73 -0
- package/dist/services/agent-credential-store.d.ts.map +1 -0
- package/dist/services/agent-credential-store.js +212 -0
- package/dist/services/agent-credential-store.js.map +1 -0
- package/dist/stdio-server.d.ts.map +1 -0
- package/dist/stdio-server.js.map +1 -0
- package/dist/workspace/context.d.ts +148 -0
- package/dist/workspace/context.d.ts.map +1 -0
- package/dist/workspace/context.js +339 -0
- package/dist/workspace/context.js.map +1 -0
- package/dist/workspace/credentials.d.ts +55 -0
- package/dist/workspace/credentials.d.ts.map +1 -0
- package/dist/workspace/credentials.js +239 -0
- package/dist/workspace/credentials.js.map +1 -0
- package/dist/workspace/index.d.ts +21 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +45 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/loader.d.ts +27 -0
- package/dist/workspace/loader.d.ts.map +1 -0
- package/dist/workspace/loader.js +222 -0
- package/dist/workspace/loader.js.map +1 -0
- package/dist/workspace/schema.d.ts +37 -0
- package/dist/workspace/schema.d.ts.map +1 -0
- package/dist/workspace/schema.js +192 -0
- package/dist/workspace/schema.js.map +1 -0
- package/package.json +13 -1
- package/.claude/.context-watchdog.json +0 -1
- package/.claude/.session-checked +0 -1
- package/test-billing-server.js +0 -136
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Registry Service
|
|
3
|
+
*
|
|
4
|
+
* Handles registration of agents in Hailer workspace workflows:
|
|
5
|
+
* - Agent Directory: Main registry of all bots
|
|
6
|
+
* - Positions: Job descriptions/roles
|
|
7
|
+
* - Teams: Groups of agents
|
|
8
|
+
* - Tool Registry: MCP server configurations
|
|
9
|
+
* - MCP Config: Per-agent MCP configuration
|
|
10
|
+
*
|
|
11
|
+
* WORKSPACE ISOLATION: Uses WorkspaceSchemaCacheService for dynamic ID lookup.
|
|
12
|
+
* Never relies on hardcoded IDs - each workspace has its own workflow IDs.
|
|
13
|
+
*/
|
|
14
|
+
import { Logger } from "../../../lib/logger";
|
|
15
|
+
import { McpToolCallback } from "../../shared/types";
|
|
16
|
+
import { ToolIndexEntry } from "../tool-schema-loader";
|
|
17
|
+
import { WorkspaceSchemaCacheService } from "./workspace-schema-cache";
|
|
18
|
+
export interface AgentInfo {
|
|
19
|
+
firstName: string;
|
|
20
|
+
lastName: string;
|
|
21
|
+
description: string;
|
|
22
|
+
email: string;
|
|
23
|
+
userId: string;
|
|
24
|
+
}
|
|
25
|
+
export interface PositionDetails {
|
|
26
|
+
name: string;
|
|
27
|
+
purpose: string;
|
|
28
|
+
personaTone: string;
|
|
29
|
+
coreCapabilities: string;
|
|
30
|
+
boundaries: string;
|
|
31
|
+
}
|
|
32
|
+
export declare class AgentRegistryService {
|
|
33
|
+
private schemaCache;
|
|
34
|
+
private logger;
|
|
35
|
+
private callMcpTool;
|
|
36
|
+
private getDefaultTeamId;
|
|
37
|
+
private agentDirectoryId;
|
|
38
|
+
private positionId;
|
|
39
|
+
private teamId;
|
|
40
|
+
private toolRegistryId;
|
|
41
|
+
private mcpConfigId;
|
|
42
|
+
constructor(schemaCache: WorkspaceSchemaCacheService, logger: Logger, callMcpTool: McpToolCallback, getDefaultTeamId: () => string | undefined);
|
|
43
|
+
/**
|
|
44
|
+
* Get agent directory ID
|
|
45
|
+
*/
|
|
46
|
+
getAgentDirectoryId(): string | null;
|
|
47
|
+
/**
|
|
48
|
+
* Get position ID
|
|
49
|
+
*/
|
|
50
|
+
getPositionId(): string | null;
|
|
51
|
+
/**
|
|
52
|
+
* Get team ID
|
|
53
|
+
*/
|
|
54
|
+
getTeamId(): string | null;
|
|
55
|
+
/**
|
|
56
|
+
* Register all agent data across all workflows
|
|
57
|
+
* Uses schemaCache for dynamic workflow ID lookup
|
|
58
|
+
*/
|
|
59
|
+
registerAllAgentData(agentInfo: AgentInfo, positionDetails: PositionDetails, mcpServerUrl: string, toolIndex: ToolIndexEntry[], workspaceId: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Register this agent in the Agent Directory
|
|
62
|
+
* Uses dynamic schema lookup for workflow/field IDs
|
|
63
|
+
*/
|
|
64
|
+
private registerAgentInDirectory;
|
|
65
|
+
/**
|
|
66
|
+
* Find phase ID by trying multiple names (case insensitive, partial match)
|
|
67
|
+
*/
|
|
68
|
+
private findPhaseId;
|
|
69
|
+
/**
|
|
70
|
+
* Common find-or-create pattern used by registration methods
|
|
71
|
+
* Searches for existing activity, creates if not found
|
|
72
|
+
*/
|
|
73
|
+
private findOrCreateActivity;
|
|
74
|
+
/**
|
|
75
|
+
* Find existing agent entry by hailerProfile (userId) - most reliable method
|
|
76
|
+
*/
|
|
77
|
+
private findAgentByUserId;
|
|
78
|
+
/**
|
|
79
|
+
* Parse first activity from list_activities response
|
|
80
|
+
*/
|
|
81
|
+
private parseFirstActivity;
|
|
82
|
+
/**
|
|
83
|
+
* Register/find shared Team for AI agents
|
|
84
|
+
*/
|
|
85
|
+
private registerTeam;
|
|
86
|
+
/**
|
|
87
|
+
* Register MCP server in Tool Registry (per-agent)
|
|
88
|
+
*/
|
|
89
|
+
private registerToolRegistry;
|
|
90
|
+
/**
|
|
91
|
+
* Register Position for this agent
|
|
92
|
+
*/
|
|
93
|
+
private registerPosition;
|
|
94
|
+
/**
|
|
95
|
+
* Register MCP Config for this agent
|
|
96
|
+
*/
|
|
97
|
+
private registerMcpConfig;
|
|
98
|
+
/**
|
|
99
|
+
* Link Agent Directory entry to Position and Team
|
|
100
|
+
*/
|
|
101
|
+
private linkAgentToPositionAndTeam;
|
|
102
|
+
/**
|
|
103
|
+
* Extract activity ID from MCP tool response text
|
|
104
|
+
* Looks for JSON block with created_ids or falls back to regex patterns
|
|
105
|
+
*/
|
|
106
|
+
private extractActivityId;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=agent-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.d.ts","sourceRoot":"","sources":["../../../../src/agents/shared/services/agent-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,2BAA2B,EAAkB,MAAM,0BAA0B,CAAC;AA0BvF,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,gBAAgB;IAV1B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAuB;gBAGhC,WAAW,EAAE,2BAA2B,EACxC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,eAAe,EAC5B,gBAAgB,EAAE,MAAM,MAAM,GAAG,SAAS;IAGpD;;OAEG;IACI,mBAAmB,IAAI,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACI,aAAa,IAAI,MAAM,GAAG,IAAI;IAIrC;;OAEG;IACI,SAAS,IAAI,MAAM,GAAG,IAAI;IAIjC;;;OAGG;IACU,oBAAoB,CAC/B,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,cAAc,EAAE,EAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA+ChB;;;OAGG;YACW,wBAAwB;IAqCtC;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;;OAGG;YACW,oBAAoB;IA0ClC;;OAEG;YACW,iBAAiB;IA0C/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;YACW,YAAY;IA4B1B;;OAEG;YACW,oBAAoB;IA+BlC;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,iBAAiB;IAiD/B;;OAEG;YACW,0BAA0B;IA0CxC;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAiB1B"}
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Registry Service
|
|
4
|
+
*
|
|
5
|
+
* Handles registration of agents in Hailer workspace workflows:
|
|
6
|
+
* - Agent Directory: Main registry of all bots
|
|
7
|
+
* - Positions: Job descriptions/roles
|
|
8
|
+
* - Teams: Groups of agents
|
|
9
|
+
* - Tool Registry: MCP server configurations
|
|
10
|
+
* - MCP Config: Per-agent MCP configuration
|
|
11
|
+
*
|
|
12
|
+
* WORKSPACE ISOLATION: Uses WorkspaceSchemaCacheService for dynamic ID lookup.
|
|
13
|
+
* Never relies on hardcoded IDs - each workspace has its own workflow IDs.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.AgentRegistryService = void 0;
|
|
17
|
+
const config_1 = require("../../../config");
|
|
18
|
+
/**
|
|
19
|
+
* Field key variants for multi-locale support
|
|
20
|
+
* Maps logical field name to possible keys in different templates/locales
|
|
21
|
+
*/
|
|
22
|
+
const FIELD_KEYS = {
|
|
23
|
+
firstName: ["firstName"],
|
|
24
|
+
lastName: ["lastName"],
|
|
25
|
+
description: ["description"],
|
|
26
|
+
email: ["agentEmailInHailer", "email"],
|
|
27
|
+
hailerProfile: ["hailerProfile"],
|
|
28
|
+
startDate: ["startDate"],
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Find field ID by trying multiple key variants
|
|
32
|
+
*/
|
|
33
|
+
function findFieldId(fields, keys) {
|
|
34
|
+
for (const key of keys) {
|
|
35
|
+
if (fields[key])
|
|
36
|
+
return fields[key];
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
class AgentRegistryService {
|
|
41
|
+
schemaCache;
|
|
42
|
+
logger;
|
|
43
|
+
callMcpTool;
|
|
44
|
+
getDefaultTeamId;
|
|
45
|
+
agentDirectoryId = null;
|
|
46
|
+
positionId = null;
|
|
47
|
+
teamId = null;
|
|
48
|
+
toolRegistryId = null;
|
|
49
|
+
mcpConfigId = null;
|
|
50
|
+
constructor(schemaCache, logger, callMcpTool, getDefaultTeamId) {
|
|
51
|
+
this.schemaCache = schemaCache;
|
|
52
|
+
this.logger = logger;
|
|
53
|
+
this.callMcpTool = callMcpTool;
|
|
54
|
+
this.getDefaultTeamId = getDefaultTeamId;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get agent directory ID
|
|
58
|
+
*/
|
|
59
|
+
getAgentDirectoryId() {
|
|
60
|
+
return this.agentDirectoryId;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get position ID
|
|
64
|
+
*/
|
|
65
|
+
getPositionId() {
|
|
66
|
+
return this.positionId;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get team ID
|
|
70
|
+
*/
|
|
71
|
+
getTeamId() {
|
|
72
|
+
return this.teamId;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Register all agent data across all workflows
|
|
76
|
+
* Uses schemaCache for dynamic workflow ID lookup
|
|
77
|
+
*/
|
|
78
|
+
async registerAllAgentData(agentInfo, positionDetails, mcpServerUrl, toolIndex, workspaceId) {
|
|
79
|
+
this.logger.info("Starting full agent registration", { workspaceId });
|
|
80
|
+
// Verify schema cache has required workflows
|
|
81
|
+
const agentDirSchema = this.schemaCache.getAgentDirectorySchema(workspaceId);
|
|
82
|
+
if (!agentDirSchema) {
|
|
83
|
+
this.logger.warn("Agent Directory workflow not found in workspace - skipping registration", { workspaceId });
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
// 1. Register in Agent Directory first (required for other links)
|
|
88
|
+
await this.registerAgentInDirectory(agentInfo, workspaceId);
|
|
89
|
+
// 2. Create/find shared Team for AI agents
|
|
90
|
+
await this.registerTeam(workspaceId);
|
|
91
|
+
// 3. Register MCP server in Tool Registry (per-agent)
|
|
92
|
+
const agentName = `${agentInfo.firstName} ${agentInfo.lastName}`;
|
|
93
|
+
await this.registerToolRegistry(mcpServerUrl, toolIndex, workspaceId, agentName);
|
|
94
|
+
// 4. Create Position for this agent
|
|
95
|
+
await this.registerPosition(positionDetails, workspaceId);
|
|
96
|
+
// 5. Create MCP Config for this agent
|
|
97
|
+
await this.registerMcpConfig(agentInfo, workspaceId);
|
|
98
|
+
// 6. Update Agent Directory with Position and Team links
|
|
99
|
+
await this.linkAgentToPositionAndTeam(workspaceId);
|
|
100
|
+
this.logger.info("Full agent registration completed", {
|
|
101
|
+
workspaceId,
|
|
102
|
+
agentDirectoryId: this.agentDirectoryId,
|
|
103
|
+
positionId: this.positionId,
|
|
104
|
+
teamId: this.teamId,
|
|
105
|
+
toolRegistryId: this.toolRegistryId,
|
|
106
|
+
mcpConfigId: this.mcpConfigId,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
this.logger.warn("Agent registration incomplete", {
|
|
111
|
+
error: error instanceof Error ? error.message : String(error),
|
|
112
|
+
workspaceId,
|
|
113
|
+
agentDirectoryId: this.agentDirectoryId,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Register this agent in the Agent Directory
|
|
119
|
+
* Uses dynamic schema lookup for workflow/field IDs
|
|
120
|
+
*/
|
|
121
|
+
async registerAgentInDirectory(agentInfo, workspaceId) {
|
|
122
|
+
const schema = this.schemaCache.getAgentDirectorySchema(workspaceId);
|
|
123
|
+
if (!schema) {
|
|
124
|
+
this.logger.debug("Skipping agent directory registration - no schema");
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
this.logger.info("Registering agent in directory", {
|
|
128
|
+
email: (0, config_1.maskEmail)(agentInfo.email),
|
|
129
|
+
userId: agentInfo.userId,
|
|
130
|
+
workflowId: schema.workflowId,
|
|
131
|
+
});
|
|
132
|
+
try {
|
|
133
|
+
// Find existing agent by hailerProfile (userId)
|
|
134
|
+
// NOTE: Agents must be created via AI Hub - no auto-creation on startup
|
|
135
|
+
const existingAgent = await this.findAgentByUserId(agentInfo.userId, schema);
|
|
136
|
+
if (existingAgent) {
|
|
137
|
+
this.agentDirectoryId = existingAgent._id;
|
|
138
|
+
this.logger.info("Found existing agent in directory", {
|
|
139
|
+
agentDirectoryId: this.agentDirectoryId,
|
|
140
|
+
name: existingAgent.name,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
this.logger.info("Agent not found in directory - create via AI Hub app", {
|
|
145
|
+
userId: agentInfo.userId,
|
|
146
|
+
email: (0, config_1.maskEmail)(agentInfo.email),
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
this.logger.warn("Failed to find agent in directory", {
|
|
152
|
+
error: error instanceof Error ? error.message : String(error),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Find phase ID by trying multiple names (case insensitive, partial match)
|
|
158
|
+
*/
|
|
159
|
+
findPhaseId(phases, preferredNames) {
|
|
160
|
+
// Normalize phase keys for lookup
|
|
161
|
+
const normalizedPhases = Object.entries(phases).map(([name, id]) => ({
|
|
162
|
+
name: name.toLowerCase(),
|
|
163
|
+
id,
|
|
164
|
+
}));
|
|
165
|
+
// Try each preferred name in order
|
|
166
|
+
for (const preferred of preferredNames) {
|
|
167
|
+
const match = normalizedPhases.find(p => p.name.includes(preferred.toLowerCase()));
|
|
168
|
+
if (match)
|
|
169
|
+
return match.id;
|
|
170
|
+
}
|
|
171
|
+
// Fallback to first phase
|
|
172
|
+
return Object.values(phases)[0];
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Common find-or-create pattern used by registration methods
|
|
176
|
+
* Searches for existing activity, creates if not found
|
|
177
|
+
*/
|
|
178
|
+
async findOrCreateActivity(schema, activityName, fields, preferredPhases, searchField) {
|
|
179
|
+
const phaseId = this.findPhaseId(schema.phases, preferredPhases);
|
|
180
|
+
const wsTeamId = this.getDefaultTeamId();
|
|
181
|
+
try {
|
|
182
|
+
// Search for existing
|
|
183
|
+
const result = await this.callMcpTool("list_activities", {
|
|
184
|
+
workflowId: schema.workflowId,
|
|
185
|
+
phaseId,
|
|
186
|
+
fields: searchField ? [searchField] : [],
|
|
187
|
+
search: activityName,
|
|
188
|
+
limit: 1,
|
|
189
|
+
});
|
|
190
|
+
const existingId = this.extractActivityId(result?.content?.[0]?.text);
|
|
191
|
+
if (existingId) {
|
|
192
|
+
return existingId;
|
|
193
|
+
}
|
|
194
|
+
// Create new
|
|
195
|
+
const createParams = {
|
|
196
|
+
workflowId: schema.workflowId,
|
|
197
|
+
name: activityName,
|
|
198
|
+
phaseId,
|
|
199
|
+
fields,
|
|
200
|
+
};
|
|
201
|
+
if (wsTeamId)
|
|
202
|
+
createParams.teamId = wsTeamId;
|
|
203
|
+
const createResult = await this.callMcpTool("create_activity", createParams);
|
|
204
|
+
return this.extractActivityId(createResult?.content?.[0]?.text);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
this.logger.warn("findOrCreateActivity failed", { activityName, error });
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Find existing agent entry by hailerProfile (userId) - most reliable method
|
|
213
|
+
*/
|
|
214
|
+
async findAgentByUserId(userId, schema) {
|
|
215
|
+
const hailerProfileFieldId = findFieldId(schema.fields, FIELD_KEYS.hailerProfile);
|
|
216
|
+
if (!hailerProfileFieldId) {
|
|
217
|
+
this.logger.debug("No hailerProfile field in Agent Directory schema");
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
// Search across all phases (agent might be in any phase)
|
|
221
|
+
const phasesToSearch = Object.values(schema.phases);
|
|
222
|
+
for (const phaseId of phasesToSearch) {
|
|
223
|
+
try {
|
|
224
|
+
const result = await this.callMcpTool("list_activities", {
|
|
225
|
+
workflowId: schema.workflowId,
|
|
226
|
+
phaseId,
|
|
227
|
+
fields: [hailerProfileFieldId],
|
|
228
|
+
filters: {
|
|
229
|
+
[hailerProfileFieldId]: {
|
|
230
|
+
operator: "equals",
|
|
231
|
+
value: userId,
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
limit: 1,
|
|
235
|
+
});
|
|
236
|
+
const resultText = result?.content?.[0]?.text;
|
|
237
|
+
if (resultText) {
|
|
238
|
+
const activity = this.parseFirstActivity(resultText);
|
|
239
|
+
if (activity) {
|
|
240
|
+
this.logger.debug("Found agent by userId", { phaseId, activityId: activity._id });
|
|
241
|
+
return activity;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
this.logger.debug("Error searching phase for agent", { phaseId, error });
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Parse first activity from list_activities response
|
|
253
|
+
*/
|
|
254
|
+
parseFirstActivity(text) {
|
|
255
|
+
try {
|
|
256
|
+
// Try JSON parse first
|
|
257
|
+
const jsonMatch = text.match(/```json\s*([\s\S]*?)\s*```/) ||
|
|
258
|
+
text.match(/\[[\s\S]*?\]/);
|
|
259
|
+
if (jsonMatch) {
|
|
260
|
+
const jsonStr = jsonMatch[1] || jsonMatch[0];
|
|
261
|
+
const activities = JSON.parse(jsonStr);
|
|
262
|
+
if (Array.isArray(activities) && activities.length > 0) {
|
|
263
|
+
return activities[0];
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
// Regex fallback
|
|
269
|
+
const idMatch = text.match(/"_id":\s*"([a-f0-9]{24})"/i);
|
|
270
|
+
const nameMatch = text.match(/"name":\s*"([^"]+)"/i);
|
|
271
|
+
if (idMatch) {
|
|
272
|
+
return { _id: idMatch[1], name: nameMatch?.[1] || "Unknown" };
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Register/find shared Team for AI agents
|
|
279
|
+
*/
|
|
280
|
+
async registerTeam(workspaceId) {
|
|
281
|
+
const schema = this.schemaCache.getTeamsSchema(workspaceId);
|
|
282
|
+
if (!schema) {
|
|
283
|
+
this.logger.debug("Teams workflow not found - skipping team registration");
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
const teamName = "AI Agents";
|
|
287
|
+
const infoFieldId = schema.fields["teamInfo"] || schema.fields["info"] || schema.fields["Tiimi-info"];
|
|
288
|
+
const fields = {};
|
|
289
|
+
if (infoFieldId) {
|
|
290
|
+
fields[infoFieldId] = "Team of AI agent bots that assist with workspace operations.";
|
|
291
|
+
}
|
|
292
|
+
this.teamId = await this.findOrCreateActivity(schema, teamName, fields, ["tiimit", "teams", "active"], infoFieldId);
|
|
293
|
+
if (this.teamId) {
|
|
294
|
+
this.logger.info("Team registered", { teamId: this.teamId });
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Register MCP server in Tool Registry (per-agent)
|
|
299
|
+
*/
|
|
300
|
+
async registerToolRegistry(mcpServerUrl, toolIndex, workspaceId, agentName) {
|
|
301
|
+
const schema = this.schemaCache.getToolRegistrySchema(workspaceId);
|
|
302
|
+
if (!schema) {
|
|
303
|
+
this.logger.debug("Tool Registry workflow not found - skipping");
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const serverName = `MCP Tools - ${agentName}`;
|
|
307
|
+
const baseUrlFieldId = schema.fields["mcpBaseUrl"] || schema.fields["baseUrl"] || schema.fields["mcp_base_url"];
|
|
308
|
+
const protocolFieldId = schema.fields["protocolVersion"] || schema.fields["protocol_version"];
|
|
309
|
+
const toolRegistryFieldId = schema.fields["toolRegistry"] || schema.fields["tool_registry"];
|
|
310
|
+
const toolNames = toolIndex.map((t) => t.name).join(", ");
|
|
311
|
+
const fields = {};
|
|
312
|
+
if (baseUrlFieldId)
|
|
313
|
+
fields[baseUrlFieldId] = mcpServerUrl;
|
|
314
|
+
if (protocolFieldId)
|
|
315
|
+
fields[protocolFieldId] = "2024-11-05";
|
|
316
|
+
if (toolRegistryFieldId)
|
|
317
|
+
fields[toolRegistryFieldId] = `Available tools (${toolIndex.length}):\n${toolNames}`;
|
|
318
|
+
this.toolRegistryId = await this.findOrCreateActivity(schema, serverName, fields, ["active", "new phase"], baseUrlFieldId);
|
|
319
|
+
if (this.toolRegistryId) {
|
|
320
|
+
this.logger.info("Tool Registry registered", { toolRegistryId: this.toolRegistryId });
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Register Position for this agent
|
|
325
|
+
*/
|
|
326
|
+
async registerPosition(details, workspaceId) {
|
|
327
|
+
const schema = this.schemaCache.getPositionsSchema(workspaceId);
|
|
328
|
+
if (!schema) {
|
|
329
|
+
this.logger.debug("Positions workflow not found - skipping");
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
const purposeFieldId = schema.fields["purpose"] || schema.fields["Purpose"];
|
|
333
|
+
const personaFieldId = schema.fields["personaTone"] || schema.fields["Persona & Tone"];
|
|
334
|
+
const capabilitiesFieldId = schema.fields["coreCapabilities"] || schema.fields["Core Capabilities"];
|
|
335
|
+
const boundariesFieldId = schema.fields["boundaries"] || schema.fields["Boundaries & Restrictions"];
|
|
336
|
+
const multiAllowedFieldId = schema.fields["multipleAllowed"] || schema.fields[">1 allowed in role"];
|
|
337
|
+
const agentCountFieldId = schema.fields["numberOfAgents"] || schema.fields["Number of agents in position"];
|
|
338
|
+
const fields = {};
|
|
339
|
+
if (purposeFieldId)
|
|
340
|
+
fields[purposeFieldId] = details.purpose;
|
|
341
|
+
if (personaFieldId)
|
|
342
|
+
fields[personaFieldId] = details.personaTone;
|
|
343
|
+
if (capabilitiesFieldId)
|
|
344
|
+
fields[capabilitiesFieldId] = details.coreCapabilities;
|
|
345
|
+
if (boundariesFieldId)
|
|
346
|
+
fields[boundariesFieldId] = details.boundaries;
|
|
347
|
+
if (multiAllowedFieldId)
|
|
348
|
+
fields[multiAllowedFieldId] = "Yes";
|
|
349
|
+
if (agentCountFieldId)
|
|
350
|
+
fields[agentCountFieldId] = 1;
|
|
351
|
+
this.positionId = await this.findOrCreateActivity(schema, details.name, fields, ["positiot", "positions", "active"], purposeFieldId);
|
|
352
|
+
if (this.positionId) {
|
|
353
|
+
this.logger.info("Position registered", { positionId: this.positionId });
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Register MCP Config for this agent
|
|
358
|
+
*/
|
|
359
|
+
async registerMcpConfig(agentInfo, workspaceId) {
|
|
360
|
+
if (!this.agentDirectoryId) {
|
|
361
|
+
this.logger.debug("Skipping MCP config - no agent directory ID");
|
|
362
|
+
return;
|
|
363
|
+
}
|
|
364
|
+
const schema = this.schemaCache.getMcpConfigSchema(workspaceId);
|
|
365
|
+
if (!schema) {
|
|
366
|
+
this.logger.debug("MCP Config workflow not found - skipping");
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
const configName = `${agentInfo.firstName} ${agentInfo.lastName} Config`;
|
|
370
|
+
const agentNameFieldId = schema.fields["agentName"] || schema.fields["agent_name"];
|
|
371
|
+
const agentIdFieldId = schema.fields["agentId"] || schema.fields["Agent_ID"];
|
|
372
|
+
const workspaceIdFieldId = schema.fields["workspaceId"] || schema.fields["workspace_id"];
|
|
373
|
+
const permissionsFieldId = schema.fields["permissions"] || schema.fields["Permissions"];
|
|
374
|
+
const permCreateFieldId = schema.fields["permissionCreate"] || schema.fields["Create"];
|
|
375
|
+
const permReadFieldId = schema.fields["permissionRead"] || schema.fields["Read"];
|
|
376
|
+
const permUpdateFieldId = schema.fields["permissionUpdate"] || schema.fields["Update"];
|
|
377
|
+
const permDeleteFieldId = schema.fields["permissionDelete"] || schema.fields["Delete"];
|
|
378
|
+
const accessToFieldId = schema.fields["accessTo"] || schema.fields["Access to"];
|
|
379
|
+
const fields = {};
|
|
380
|
+
if (agentNameFieldId)
|
|
381
|
+
fields[agentNameFieldId] = this.agentDirectoryId;
|
|
382
|
+
if (agentIdFieldId)
|
|
383
|
+
fields[agentIdFieldId] = agentInfo.userId;
|
|
384
|
+
if (workspaceIdFieldId)
|
|
385
|
+
fields[workspaceIdFieldId] = workspaceId;
|
|
386
|
+
if (permissionsFieldId)
|
|
387
|
+
fields[permissionsFieldId] = "read, write";
|
|
388
|
+
if (permCreateFieldId)
|
|
389
|
+
fields[permCreateFieldId] = 1;
|
|
390
|
+
if (permReadFieldId)
|
|
391
|
+
fields[permReadFieldId] = 1;
|
|
392
|
+
if (permUpdateFieldId)
|
|
393
|
+
fields[permUpdateFieldId] = 1;
|
|
394
|
+
if (permDeleteFieldId)
|
|
395
|
+
fields[permDeleteFieldId] = 0;
|
|
396
|
+
if (this.toolRegistryId && accessToFieldId) {
|
|
397
|
+
fields[accessToFieldId] = this.toolRegistryId;
|
|
398
|
+
}
|
|
399
|
+
this.mcpConfigId = await this.findOrCreateActivity(schema, configName, fields, ["active", "new phase"], agentIdFieldId);
|
|
400
|
+
if (this.mcpConfigId) {
|
|
401
|
+
this.logger.info("MCP Config registered", { mcpConfigId: this.mcpConfigId });
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Link Agent Directory entry to Position and Team
|
|
406
|
+
*/
|
|
407
|
+
async linkAgentToPositionAndTeam(workspaceId) {
|
|
408
|
+
if (!this.agentDirectoryId) {
|
|
409
|
+
this.logger.debug("Skipping agent linking - no agent directory ID");
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
const schema = this.schemaCache.getAgentDirectorySchema(workspaceId);
|
|
413
|
+
if (!schema)
|
|
414
|
+
return;
|
|
415
|
+
// Get field IDs with fallbacks
|
|
416
|
+
const positionFieldId = schema.fields["position"] || schema.fields["Työpositio"];
|
|
417
|
+
const teamFieldId = schema.fields["team"] || schema.fields["Tiimi"];
|
|
418
|
+
const updates = {};
|
|
419
|
+
if (this.positionId && positionFieldId) {
|
|
420
|
+
updates[positionFieldId] = this.positionId;
|
|
421
|
+
}
|
|
422
|
+
if (this.teamId && teamFieldId) {
|
|
423
|
+
updates[teamFieldId] = this.teamId;
|
|
424
|
+
}
|
|
425
|
+
if (Object.keys(updates).length === 0) {
|
|
426
|
+
this.logger.debug("No links to update");
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
try {
|
|
430
|
+
await this.callMcpTool("update_activity", {
|
|
431
|
+
activityId: this.agentDirectoryId,
|
|
432
|
+
fields: updates,
|
|
433
|
+
});
|
|
434
|
+
this.logger.info("Linked agent to Position and Team", {
|
|
435
|
+
agentDirectoryId: this.agentDirectoryId,
|
|
436
|
+
positionId: this.positionId,
|
|
437
|
+
teamId: this.teamId,
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
catch (error) {
|
|
441
|
+
this.logger.warn("Failed to link agent to Position/Team", { error });
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Extract activity ID from MCP tool response text
|
|
446
|
+
* Looks for JSON block with created_ids or falls back to regex patterns
|
|
447
|
+
*/
|
|
448
|
+
extractActivityId(text) {
|
|
449
|
+
if (!text)
|
|
450
|
+
return null;
|
|
451
|
+
// Primary: Parse JSON block from create_activity response
|
|
452
|
+
try {
|
|
453
|
+
const jsonMatch = text.match(/```json\s*([\s\S]*?)\s*```/);
|
|
454
|
+
if (jsonMatch) {
|
|
455
|
+
const data = JSON.parse(jsonMatch[1]);
|
|
456
|
+
if (data.created_ids?.[0])
|
|
457
|
+
return data.created_ids[0];
|
|
458
|
+
if (data._id)
|
|
459
|
+
return data._id;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
catch { /* ignore parse errors */ }
|
|
463
|
+
// Fallback: Look for any 24-char hex ID
|
|
464
|
+
const idMatch = text.match(/[a-f0-9]{24}/i);
|
|
465
|
+
return idMatch ? idMatch[0] : null;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
exports.AgentRegistryService = AgentRegistryService;
|
|
469
|
+
//# sourceMappingURL=agent-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../../../src/agents/shared/services/agent-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation Manager Service
|
|
3
|
+
*
|
|
4
|
+
* Manages per-discussion conversation state:
|
|
5
|
+
* - LRU cache of conversation histories
|
|
6
|
+
* - Context size management with summarization
|
|
7
|
+
* - Conversation state access
|
|
8
|
+
*/
|
|
9
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
10
|
+
import { Logger } from "../../../lib/logger";
|
|
11
|
+
/** Conversation message using Anthropic's MessageParam type */
|
|
12
|
+
export type ConversationMessage = Anthropic.MessageParam;
|
|
13
|
+
export declare class ConversationManager {
|
|
14
|
+
private maxConversations;
|
|
15
|
+
private maxContextMessages;
|
|
16
|
+
private anthropicClient;
|
|
17
|
+
private logger;
|
|
18
|
+
private conversationsByDiscussion;
|
|
19
|
+
constructor(maxConversations: number, maxContextMessages: number, anthropicClient: Anthropic, logger: Logger);
|
|
20
|
+
/**
|
|
21
|
+
* Get or create conversation history for a specific discussion
|
|
22
|
+
* Each discussion has its own isolated context to prevent bloat
|
|
23
|
+
* Uses LRU eviction when map exceeds maxConversations
|
|
24
|
+
*/
|
|
25
|
+
getConversation(discussionId: string): ConversationMessage[];
|
|
26
|
+
/**
|
|
27
|
+
* Add a message to a conversation
|
|
28
|
+
*/
|
|
29
|
+
addMessage(discussionId: string, message: ConversationMessage): void;
|
|
30
|
+
/**
|
|
31
|
+
* Manage conversation context size - truncate if too large
|
|
32
|
+
* Uses simple truncation instead of LLM summarization to save ~1000 tokens per overflow
|
|
33
|
+
*/
|
|
34
|
+
manageContextSize(discussionId: string): void;
|
|
35
|
+
/**
|
|
36
|
+
* Get conversation state for debugging
|
|
37
|
+
*/
|
|
38
|
+
getState(currentDiscussionId?: string): {
|
|
39
|
+
discussionCount: number;
|
|
40
|
+
currentMessageCount: number;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Get full conversation for a discussion (for debugging)
|
|
44
|
+
*/
|
|
45
|
+
getFullConversation(discussionId?: string): ConversationMessage[];
|
|
46
|
+
/**
|
|
47
|
+
* Clear all conversations
|
|
48
|
+
*/
|
|
49
|
+
clear(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Prepare conversation for API call with Anthropic prompt caching
|
|
52
|
+
* Adds cache_control to the last assistant message to cache conversation history
|
|
53
|
+
* Returns a COPY - does not modify the original conversation
|
|
54
|
+
*/
|
|
55
|
+
prepareForCaching(conversation: ConversationMessage[]): ConversationMessage[];
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=conversation-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-manager.d.ts","sourceRoot":"","sources":["../../../../src/agents/shared/services/conversation-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,+DAA+D;AAC/D,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,YAAY,CAAC;AAEzD,qBAAa,mBAAmB;IAI5B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,MAAM;IANhB,OAAO,CAAC,yBAAyB,CAAiD;gBAGxE,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,SAAS,EAC1B,MAAM,EAAE,MAAM;IAGxB;;;;OAIG;IACI,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,EAAE;IA0BnE;;OAEG;IACI,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAK3E;;;OAGG;IACI,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAuBpD;;OAEG;IACI,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG;QAC7C,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;KAC7B;IAUD;;OAEG;IACI,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,mBAAmB,EAAE;IASxE;;OAEG;IACI,KAAK,IAAI,IAAI;IAIpB;;;;OAIG;IACI,iBAAiB,CAAC,YAAY,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE;CA2DrF"}
|