@hailer/mcp 1.2.1 → 1.3.9
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/.claude/agents/agent-hailer-helper.md +118 -0
- package/.claude/commands/debug-squad.md +13 -290
- package/.claude/commands/publish.md +2 -2
- package/.claude/commands/review-squad.md +17 -139
- package/.claude/skills/create-and-publish-app/SKILL.md +133 -143
- package/.claude/skills/hailer-app-builder/SKILL.md +29 -2
- package/.claude/skills/hailer-ui-guide/SKILL.md +265 -0
- package/.env.example +50 -1
- package/CLAUDE.md +141 -10
- package/dist/app-prep.d.ts +27 -0
- package/dist/app-prep.d.ts.map +1 -0
- package/dist/app-prep.js +94 -0
- package/dist/app-prep.js.map +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +3 -0
- package/dist/app.js.map +1 -1
- package/dist/bot/bot-manager.d.ts +9 -6
- package/dist/bot/bot-manager.d.ts.map +1 -1
- package/dist/bot/bot-manager.js +142 -31
- package/dist/bot/bot-manager.js.map +1 -1
- package/dist/bot/bot.d.ts +61 -16
- package/dist/bot/bot.d.ts.map +1 -1
- package/dist/bot/bot.js +927 -151
- package/dist/bot/bot.js.map +1 -1
- package/dist/bot/operation-logger.d.ts.map +1 -1
- package/dist/bot/operation-logger.js +24 -12
- package/dist/bot/operation-logger.js.map +1 -1
- package/dist/bot/services/bot-permissions.d.ts +37 -5
- package/dist/bot/services/bot-permissions.d.ts.map +1 -1
- package/dist/bot/services/bot-permissions.js +159 -35
- package/dist/bot/services/bot-permissions.js.map +1 -1
- package/dist/bot/services/conversation-manager.d.ts +23 -23
- package/dist/bot/services/conversation-manager.d.ts.map +1 -1
- package/dist/bot/services/conversation-manager.js +52 -49
- package/dist/bot/services/conversation-manager.js.map +1 -1
- package/dist/bot/services/helper-prompt.d.ts +8 -0
- package/dist/bot/services/helper-prompt.d.ts.map +1 -0
- package/dist/bot/services/helper-prompt.js +177 -0
- package/dist/bot/services/helper-prompt.js.map +1 -0
- package/dist/bot/services/message-classifier.d.ts +16 -16
- package/dist/bot/services/message-classifier.d.ts.map +1 -1
- package/dist/bot/services/message-classifier.js +55 -49
- package/dist/bot/services/message-classifier.js.map +1 -1
- package/dist/bot/services/message-formatter.d.ts +47 -38
- package/dist/bot/services/message-formatter.d.ts.map +1 -1
- package/dist/bot/services/message-formatter.js +99 -80
- package/dist/bot/services/message-formatter.js.map +1 -1
- package/dist/bot/services/permission-guard.d.ts.map +1 -1
- package/dist/bot/services/permission-guard.js +20 -10
- package/dist/bot/services/permission-guard.js.map +1 -1
- package/dist/bot/services/signal-router.d.ts.map +1 -1
- package/dist/bot/services/signal-router.js +11 -6
- package/dist/bot/services/signal-router.js.map +1 -1
- package/dist/bot/services/system-prompt.d.ts +14 -0
- package/dist/bot/services/system-prompt.d.ts.map +1 -1
- package/dist/bot/services/system-prompt.js +181 -4
- package/dist/bot/services/system-prompt.js.map +1 -1
- package/dist/bot/services/token-billing.d.ts +23 -23
- package/dist/bot/services/token-billing.d.ts.map +1 -1
- package/dist/bot/services/token-billing.js +51 -36
- package/dist/bot/services/token-billing.js.map +1 -1
- package/dist/bot/services/types.d.ts +3 -1
- package/dist/bot/services/types.d.ts.map +1 -1
- package/dist/bot/services/typing-indicator.d.ts +8 -8
- package/dist/bot/services/typing-indicator.d.ts.map +1 -1
- package/dist/bot/services/typing-indicator.js +12 -10
- package/dist/bot/services/typing-indicator.js.map +1 -1
- package/dist/bot/services/workspace-refresh.d.ts +3 -3
- package/dist/bot/services/workspace-refresh.d.ts.map +1 -1
- package/dist/bot/services/workspace-refresh.js +23 -13
- package/dist/bot/services/workspace-refresh.js.map +1 -1
- package/dist/bot/tool-executor.d.ts +10 -6
- package/dist/bot/tool-executor.d.ts.map +1 -1
- package/dist/bot/tool-executor.js +12 -6
- package/dist/bot/tool-executor.js.map +1 -1
- package/dist/bot/workspace-overview.d.ts.map +1 -1
- package/dist/bot/workspace-overview.js +6 -3
- package/dist/bot/workspace-overview.js.map +1 -1
- package/dist/bot-config/activity-error.d.ts +47 -0
- package/dist/bot-config/activity-error.d.ts.map +1 -0
- package/dist/bot-config/activity-error.js +67 -0
- package/dist/bot-config/activity-error.js.map +1 -0
- package/dist/bot-config/context.d.ts +4 -4
- package/dist/bot-config/context.d.ts.map +1 -1
- package/dist/bot-config/context.js +18 -14
- package/dist/bot-config/context.js.map +1 -1
- package/dist/bot-config/events.d.ts +45 -0
- package/dist/bot-config/events.d.ts.map +1 -0
- package/dist/bot-config/events.js +51 -0
- package/dist/bot-config/events.js.map +1 -0
- package/dist/bot-config/index.d.ts +3 -0
- package/dist/bot-config/index.d.ts.map +1 -1
- package/dist/bot-config/index.js +8 -1
- package/dist/bot-config/index.js.map +1 -1
- package/dist/bot-config/loader.d.ts +3 -0
- package/dist/bot-config/loader.d.ts.map +1 -1
- package/dist/bot-config/loader.js +45 -20
- package/dist/bot-config/loader.js.map +1 -1
- package/dist/bot-config/persistence.js.map +1 -1
- package/dist/bot-config/reconciler.d.ts +11 -0
- package/dist/bot-config/reconciler.d.ts.map +1 -0
- package/dist/bot-config/reconciler.js +121 -0
- package/dist/bot-config/reconciler.js.map +1 -0
- package/dist/bot-config/state.d.ts.map +1 -1
- package/dist/bot-config/state.js.map +1 -1
- package/dist/bot-config/types.d.ts +32 -0
- package/dist/bot-config/types.d.ts.map +1 -1
- package/dist/bot-config/webhooks.d.ts.map +1 -1
- package/dist/bot-config/webhooks.js.map +1 -1
- package/dist/bot-config/workflow-installer.d.ts +37 -0
- package/dist/bot-config/workflow-installer.d.ts.map +1 -0
- package/dist/bot-config/workflow-installer.js +346 -0
- package/dist/bot-config/workflow-installer.js.map +1 -0
- package/dist/cli.d.ts +4 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +92 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +23 -19
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +65 -27
- package/dist/config.js.map +1 -1
- package/dist/core.d.ts +6 -4
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +11 -16
- package/dist/core.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +7 -4
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/request-logger.d.ts +19 -19
- package/dist/lib/request-logger.d.ts.map +1 -1
- package/dist/lib/request-logger.js +19 -19
- package/dist/lib/request-logger.js.map +1 -1
- package/dist/mcp/UserContextCache.d.ts +28 -22
- package/dist/mcp/UserContextCache.d.ts.map +1 -1
- package/dist/mcp/UserContextCache.js +23 -23
- package/dist/mcp/UserContextCache.js.map +1 -1
- package/dist/mcp/auth.js.map +1 -1
- package/dist/mcp/hailer-clients.d.ts +5 -4
- package/dist/mcp/hailer-clients.d.ts.map +1 -1
- package/dist/mcp/hailer-clients.js +83 -34
- package/dist/mcp/hailer-clients.js.map +1 -1
- package/dist/mcp/hailer-rpc.d.ts +40 -0
- package/dist/mcp/hailer-rpc.d.ts.map +1 -0
- package/dist/mcp/hailer-rpc.js +43 -0
- package/dist/mcp/hailer-rpc.js.map +1 -0
- package/dist/mcp/publish-auth-injector.d.ts +22 -0
- package/dist/mcp/publish-auth-injector.d.ts.map +1 -0
- package/dist/mcp/publish-auth-injector.js +100 -0
- package/dist/mcp/publish-auth-injector.js.map +1 -0
- package/dist/mcp/session-store.d.ts +16 -16
- package/dist/mcp/session-store.d.ts.map +1 -1
- package/dist/mcp/session-store.js +16 -16
- package/dist/mcp/session-store.js.map +1 -1
- package/dist/mcp/tool-profiles.d.ts +69 -0
- package/dist/mcp/tool-profiles.d.ts.map +1 -0
- package/dist/mcp/tool-profiles.js +176 -0
- package/dist/mcp/tool-profiles.js.map +1 -0
- package/dist/mcp/tool-registry.d.ts +16 -0
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +91 -39
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/mcp/tools/activity.d.ts +2 -0
- package/dist/mcp/tools/activity.d.ts.map +1 -1
- package/dist/mcp/tools/activity.js +575 -218
- package/dist/mcp/tools/activity.js.map +1 -1
- package/dist/mcp/tools/aliases.d.ts +11 -0
- package/dist/mcp/tools/aliases.d.ts.map +1 -0
- package/dist/mcp/tools/aliases.js +182 -0
- package/dist/mcp/tools/aliases.js.map +1 -0
- package/dist/mcp/tools/app-core.d.ts +6 -8
- package/dist/mcp/tools/app-core.d.ts.map +1 -1
- package/dist/mcp/tools/app-core.js +355 -254
- package/dist/mcp/tools/app-core.js.map +1 -1
- package/dist/mcp/tools/app-marketplace.d.ts +8 -16
- package/dist/mcp/tools/app-marketplace.d.ts.map +1 -1
- package/dist/mcp/tools/app-marketplace.js +604 -932
- package/dist/mcp/tools/app-marketplace.js.map +1 -1
- package/dist/mcp/tools/app.d.ts +4 -7
- package/dist/mcp/tools/app.d.ts.map +1 -1
- package/dist/mcp/tools/app.js +4 -7
- package/dist/mcp/tools/app.js.map +1 -1
- package/dist/mcp/tools/bot-self.d.ts +21 -0
- package/dist/mcp/tools/bot-self.d.ts.map +1 -0
- package/dist/mcp/tools/bot-self.js +174 -0
- package/dist/mcp/tools/bot-self.js.map +1 -0
- package/dist/mcp/tools/calendar.d.ts +21 -0
- package/dist/mcp/tools/calendar.d.ts.map +1 -0
- package/dist/mcp/tools/calendar.js +741 -0
- package/dist/mcp/tools/calendar.js.map +1 -0
- package/dist/mcp/tools/company.d.ts.map +1 -1
- package/dist/mcp/tools/company.js +2 -1
- package/dist/mcp/tools/company.js.map +1 -1
- package/dist/mcp/tools/date.js.map +1 -1
- package/dist/mcp/tools/discussion.d.ts +29 -3
- package/dist/mcp/tools/discussion.d.ts.map +1 -1
- package/dist/mcp/tools/discussion.js +419 -534
- package/dist/mcp/tools/discussion.js.map +1 -1
- package/dist/mcp/tools/file.d.ts.map +1 -1
- package/dist/mcp/tools/file.js +18 -16
- package/dist/mcp/tools/file.js.map +1 -1
- package/dist/mcp/tools/index.js +4 -4
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/insight.d.ts +24 -5
- package/dist/mcp/tools/insight.d.ts.map +1 -1
- package/dist/mcp/tools/insight.js +513 -480
- package/dist/mcp/tools/insight.js.map +1 -1
- package/dist/mcp/tools/user.d.ts.map +1 -1
- package/dist/mcp/tools/user.js +15 -13
- package/dist/mcp/tools/user.js.map +1 -1
- package/dist/mcp/tools/workflow-permissions.d.ts +2 -4
- package/dist/mcp/tools/workflow-permissions.d.ts.map +1 -1
- package/dist/mcp/tools/workflow-permissions.js +88 -97
- package/dist/mcp/tools/workflow-permissions.js.map +1 -1
- package/dist/mcp/tools/workflow.d.ts +9 -7
- package/dist/mcp/tools/workflow.d.ts.map +1 -1
- package/dist/mcp/tools/workflow.js +852 -860
- package/dist/mcp/tools/workflow.js.map +1 -1
- package/dist/mcp/utils/api-errors.d.ts.map +1 -1
- package/dist/mcp/utils/api-errors.js +2 -2
- package/dist/mcp/utils/api-errors.js.map +1 -1
- package/dist/mcp/utils/data-transformers.d.ts +0 -3
- package/dist/mcp/utils/data-transformers.d.ts.map +1 -1
- package/dist/mcp/utils/data-transformers.js +32 -5
- package/dist/mcp/utils/data-transformers.js.map +1 -1
- package/dist/mcp/utils/file-upload.d.ts.map +1 -1
- package/dist/mcp/utils/file-upload.js +1 -1
- package/dist/mcp/utils/file-upload.js.map +1 -1
- package/dist/mcp/utils/hailer-api-client.d.ts +81 -81
- package/dist/mcp/utils/hailer-api-client.d.ts.map +1 -1
- package/dist/mcp/utils/hailer-api-client.js +113 -103
- package/dist/mcp/utils/hailer-api-client.js.map +1 -1
- package/dist/mcp/utils/index.d.ts.map +1 -1
- package/dist/mcp/utils/index.js.map +1 -1
- package/dist/mcp/utils/logger.d.ts.map +1 -1
- package/dist/mcp/utils/logger.js.map +1 -1
- package/dist/mcp/utils/response-builder.d.ts.map +1 -1
- package/dist/mcp/utils/response-builder.js +8 -4
- package/dist/mcp/utils/response-builder.js.map +1 -1
- package/dist/mcp/utils/role-utils.d.ts.map +1 -1
- package/dist/mcp/utils/role-utils.js +6 -3
- package/dist/mcp/utils/role-utils.js.map +1 -1
- package/dist/mcp/utils/tool-helpers.d.ts.map +1 -1
- package/dist/mcp/utils/tool-helpers.js +2 -2
- package/dist/mcp/utils/tool-helpers.js.map +1 -1
- package/dist/mcp/utils/types.d.ts +2 -1
- package/dist/mcp/utils/types.d.ts.map +1 -1
- package/dist/mcp/utils/types.js.map +1 -1
- package/dist/mcp/webhook-handler.d.ts +43 -8
- package/dist/mcp/webhook-handler.d.ts.map +1 -1
- package/dist/mcp/webhook-handler.js +861 -116
- package/dist/mcp/webhook-handler.js.map +1 -1
- package/dist/mcp/workspace-admin-store.d.ts +49 -0
- package/dist/mcp/workspace-admin-store.d.ts.map +1 -0
- package/dist/mcp/workspace-admin-store.js +168 -0
- package/dist/mcp/workspace-admin-store.js.map +1 -0
- package/dist/mcp/workspace-cache.d.ts +2 -2
- package/dist/mcp/workspace-cache.d.ts.map +1 -1
- package/dist/mcp/workspace-cache.js +9 -5
- package/dist/mcp/workspace-cache.js.map +1 -1
- package/dist/mcp-server.d.ts +26 -11
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +367 -48
- package/dist/mcp-server.js.map +1 -1
- package/dist/plugins/vipunen/client.d.ts +41 -41
- package/dist/plugins/vipunen/client.d.ts.map +1 -1
- package/dist/plugins/vipunen/client.js +53 -48
- package/dist/plugins/vipunen/client.js.map +1 -1
- package/dist/plugins/vipunen/index.js.map +1 -1
- package/dist/plugins/vipunen/tools.d.ts.map +1 -1
- package/dist/plugins/vipunen/tools.js +6 -3
- package/dist/plugins/vipunen/tools.js.map +1 -1
- package/dist/public-chat/graduate.d.ts +29 -0
- package/dist/public-chat/graduate.d.ts.map +1 -0
- package/dist/public-chat/graduate.js +593 -0
- package/dist/public-chat/graduate.js.map +1 -0
- package/dist/public-chat/handler.d.ts +12 -0
- package/dist/public-chat/handler.d.ts.map +1 -0
- package/dist/public-chat/handler.js +183 -0
- package/dist/public-chat/handler.js.map +1 -0
- package/dist/public-chat/index.d.ts +16 -0
- package/dist/public-chat/index.d.ts.map +1 -0
- package/dist/public-chat/index.js +74 -0
- package/dist/public-chat/index.js.map +1 -0
- package/dist/public-chat/knowledge.d.ts +3 -0
- package/dist/public-chat/knowledge.d.ts.map +1 -0
- package/dist/public-chat/knowledge.js +1340 -0
- package/dist/public-chat/knowledge.js.map +1 -0
- package/dist/public-chat/rate-limit.d.ts +16 -0
- package/dist/public-chat/rate-limit.d.ts.map +1 -0
- package/dist/public-chat/rate-limit.js +51 -0
- package/dist/public-chat/rate-limit.js.map +1 -0
- package/dist/public-chat/session-store.d.ts +41 -0
- package/dist/public-chat/session-store.d.ts.map +1 -0
- package/dist/public-chat/session-store.js +95 -0
- package/dist/public-chat/session-store.js.map +1 -0
- package/dist/public-chat/studio-prewarm.d.ts +61 -0
- package/dist/public-chat/studio-prewarm.d.ts.map +1 -0
- package/dist/public-chat/studio-prewarm.js +162 -0
- package/dist/public-chat/studio-prewarm.js.map +1 -0
- package/dist/public-chat/system-prompt.d.ts +22 -0
- package/dist/public-chat/system-prompt.d.ts.map +1 -0
- package/dist/public-chat/system-prompt.js +435 -0
- package/dist/public-chat/system-prompt.js.map +1 -0
- package/package.json +15 -7
- package/scripts/build-public-chat-knowledge.py +101 -0
- package/scripts/smoke-public-chat-live.ts +148 -0
- package/scripts/smoke-public-chat.ts +110 -0
- package/.claude/CLAUDE.md +0 -126
- package/.claude/commands/app-squad.md +0 -131
- package/.claude/commands/audit-squad.md +0 -158
- package/.claude/commands/cleanup-squad.md +0 -98
- package/.claude/commands/config-squad.md +0 -106
- package/.claude/commands/crud-squad.md +0 -87
- package/.claude/commands/data-squad.md +0 -97
- package/.claude/commands/doc-squad.md +0 -65
- package/.claude/commands/help.md +0 -29
- package/.claude/commands/help:agents.md +0 -182
- package/.claude/commands/help:commands.md +0 -78
- package/.claude/commands/help:faq.md +0 -79
- package/.claude/commands/help:plugins.md +0 -50
- package/.claude/commands/help:skills.md +0 -87
- package/.claude/commands/help:tools.md +0 -75
- package/.claude/commands/hotfix-squad.md +0 -112
- package/.claude/commands/integration-squad.md +0 -82
- package/.claude/commands/janitor-squad.md +0 -167
- package/.claude/commands/onboard-squad.md +0 -130
- package/.claude/commands/swarm.md +0 -210
- package/.claude/commands/tool-builder.md +0 -39
- package/.claude/skills/publish-hailer-app/SKILL.md +0 -280
- package/dist/CLAUDE.md +0 -370
- package/dist/agents/bot-manager.d.ts +0 -48
- package/dist/agents/bot-manager.d.ts.map +0 -1
- package/dist/agents/bot-manager.js +0 -254
- package/dist/agents/bot-manager.js.map +0 -1
- package/dist/agents/bug-fixer/ai.d.ts +0 -80
- package/dist/agents/bug-fixer/ai.d.ts.map +0 -1
- package/dist/agents/bug-fixer/ai.js +0 -466
- package/dist/agents/bug-fixer/ai.js.map +0 -1
- package/dist/agents/bug-fixer/bot.d.ts +0 -92
- package/dist/agents/bug-fixer/bot.d.ts.map +0 -1
- package/dist/agents/bug-fixer/bot.js +0 -687
- package/dist/agents/bug-fixer/bot.js.map +0 -1
- package/dist/agents/bug-fixer/config.d.ts +0 -21
- package/dist/agents/bug-fixer/config.d.ts.map +0 -1
- package/dist/agents/bug-fixer/config.js +0 -218
- package/dist/agents/bug-fixer/config.js.map +0 -1
- package/dist/agents/bug-fixer/files.d.ts +0 -67
- package/dist/agents/bug-fixer/files.d.ts.map +0 -1
- package/dist/agents/bug-fixer/files.js +0 -386
- package/dist/agents/bug-fixer/files.js.map +0 -1
- package/dist/agents/bug-fixer/git.d.ts +0 -48
- package/dist/agents/bug-fixer/git.d.ts.map +0 -1
- package/dist/agents/bug-fixer/git.js +0 -298
- package/dist/agents/bug-fixer/git.js.map +0 -1
- package/dist/agents/bug-fixer/index.d.ts +0 -103
- package/dist/agents/bug-fixer/index.d.ts.map +0 -1
- package/dist/agents/bug-fixer/index.js +0 -262
- package/dist/agents/bug-fixer/index.js.map +0 -1
- package/dist/agents/bug-fixer/lsp.d.ts +0 -113
- package/dist/agents/bug-fixer/lsp.d.ts.map +0 -1
- package/dist/agents/bug-fixer/lsp.js +0 -485
- package/dist/agents/bug-fixer/lsp.js.map +0 -1
- package/dist/agents/bug-fixer/monitor.d.ts +0 -123
- package/dist/agents/bug-fixer/monitor.d.ts.map +0 -1
- package/dist/agents/bug-fixer/monitor.js +0 -629
- package/dist/agents/bug-fixer/monitor.js.map +0 -1
- package/dist/agents/bug-fixer/prompt.d.ts +0 -5
- package/dist/agents/bug-fixer/prompt.d.ts.map +0 -1
- package/dist/agents/bug-fixer/prompt.js +0 -94
- package/dist/agents/bug-fixer/prompt.js.map +0 -1
- package/dist/agents/bug-fixer/registries/pending-classification.d.ts +0 -28
- package/dist/agents/bug-fixer/registries/pending-classification.d.ts.map +0 -1
- package/dist/agents/bug-fixer/registries/pending-classification.js +0 -50
- package/dist/agents/bug-fixer/registries/pending-classification.js.map +0 -1
- package/dist/agents/bug-fixer/registries/pending-fix.d.ts +0 -33
- package/dist/agents/bug-fixer/registries/pending-fix.d.ts.map +0 -1
- package/dist/agents/bug-fixer/registries/pending-fix.js +0 -64
- package/dist/agents/bug-fixer/registries/pending-fix.js.map +0 -1
- package/dist/agents/bug-fixer/registries/pending.d.ts +0 -27
- package/dist/agents/bug-fixer/registries/pending.d.ts.map +0 -1
- package/dist/agents/bug-fixer/registries/pending.js +0 -49
- package/dist/agents/bug-fixer/registries/pending.js.map +0 -1
- package/dist/agents/bug-fixer/specialist-daemon.d.ts +0 -88
- package/dist/agents/bug-fixer/specialist-daemon.d.ts.map +0 -1
- package/dist/agents/bug-fixer/specialist-daemon.js +0 -431
- package/dist/agents/bug-fixer/specialist-daemon.js.map +0 -1
- package/dist/agents/bug-fixer/specialist.d.ts +0 -47
- package/dist/agents/bug-fixer/specialist.d.ts.map +0 -1
- package/dist/agents/bug-fixer/specialist.js +0 -327
- package/dist/agents/bug-fixer/specialist.js.map +0 -1
- package/dist/agents/bug-fixer/types.d.ts +0 -123
- package/dist/agents/bug-fixer/types.d.ts.map +0 -1
- package/dist/agents/bug-fixer/types.js +0 -9
- package/dist/agents/bug-fixer/types.js.map +0 -1
- package/dist/agents/factory.d.ts +0 -172
- package/dist/agents/factory.d.ts.map +0 -1
- package/dist/agents/factory.js +0 -706
- package/dist/agents/factory.js.map +0 -1
- package/dist/agents/hailer-expert/index.d.ts +0 -8
- package/dist/agents/hailer-expert/index.d.ts.map +0 -1
- package/dist/agents/hailer-expert/index.js +0 -14
- package/dist/agents/hailer-expert/index.js.map +0 -1
- package/dist/agents/hal/daemon.d.ts +0 -174
- package/dist/agents/hal/daemon.d.ts.map +0 -1
- package/dist/agents/hal/daemon.js +0 -1385
- package/dist/agents/hal/daemon.js.map +0 -1
- package/dist/agents/hal/definitions.d.ts +0 -42
- package/dist/agents/hal/definitions.d.ts.map +0 -1
- package/dist/agents/hal/definitions.js +0 -300
- package/dist/agents/hal/definitions.js.map +0 -1
- package/dist/agents/hal/index.d.ts +0 -3
- package/dist/agents/hal/index.d.ts.map +0 -1
- package/dist/agents/hal/index.js +0 -8
- package/dist/agents/hal/index.js.map +0 -1
- package/dist/agents/index.d.ts +0 -18
- package/dist/agents/index.d.ts.map +0 -1
- package/dist/agents/index.js +0 -48
- package/dist/agents/index.js.map +0 -1
- package/dist/agents/shared/base.d.ts +0 -253
- package/dist/agents/shared/base.d.ts.map +0 -1
- package/dist/agents/shared/base.js +0 -1122
- package/dist/agents/shared/base.js.map +0 -1
- package/dist/agents/shared/schemas/action-schema.d.ts +0 -62
- package/dist/agents/shared/schemas/action-schema.d.ts.map +0 -1
- package/dist/agents/shared/schemas/action-schema.js +0 -483
- package/dist/agents/shared/schemas/action-schema.js.map +0 -1
- package/dist/agents/shared/services/agent-registry.d.ts +0 -108
- package/dist/agents/shared/services/agent-registry.d.ts.map +0 -1
- package/dist/agents/shared/services/agent-registry.js +0 -469
- package/dist/agents/shared/services/agent-registry.js.map +0 -1
- package/dist/agents/shared/services/conversation-manager.d.ts +0 -57
- package/dist/agents/shared/services/conversation-manager.d.ts.map +0 -1
- package/dist/agents/shared/services/conversation-manager.js +0 -168
- package/dist/agents/shared/services/conversation-manager.js.map +0 -1
- package/dist/agents/shared/services/mcp-client.d.ts +0 -56
- package/dist/agents/shared/services/mcp-client.d.ts.map +0 -1
- package/dist/agents/shared/services/mcp-client.js +0 -124
- package/dist/agents/shared/services/mcp-client.js.map +0 -1
- package/dist/agents/shared/services/message-classifier.d.ts +0 -37
- package/dist/agents/shared/services/message-classifier.d.ts.map +0 -1
- package/dist/agents/shared/services/message-classifier.js +0 -203
- package/dist/agents/shared/services/message-classifier.js.map +0 -1
- package/dist/agents/shared/services/message-formatter.d.ts +0 -89
- package/dist/agents/shared/services/message-formatter.d.ts.map +0 -1
- package/dist/agents/shared/services/message-formatter.js +0 -390
- package/dist/agents/shared/services/message-formatter.js.map +0 -1
- package/dist/agents/shared/services/session-logger.d.ts +0 -162
- package/dist/agents/shared/services/session-logger.d.ts.map +0 -1
- package/dist/agents/shared/services/session-logger.js +0 -724
- package/dist/agents/shared/services/session-logger.js.map +0 -1
- package/dist/agents/shared/services/structured-output-executor.d.ts +0 -88
- package/dist/agents/shared/services/structured-output-executor.d.ts.map +0 -1
- package/dist/agents/shared/services/structured-output-executor.js +0 -296
- package/dist/agents/shared/services/structured-output-executor.js.map +0 -1
- package/dist/agents/shared/services/token-billing.d.ts +0 -72
- package/dist/agents/shared/services/token-billing.d.ts.map +0 -1
- package/dist/agents/shared/services/token-billing.js +0 -198
- package/dist/agents/shared/services/token-billing.js.map +0 -1
- package/dist/agents/shared/services/tool-executor.d.ts +0 -43
- package/dist/agents/shared/services/tool-executor.d.ts.map +0 -1
- package/dist/agents/shared/services/tool-executor.js +0 -175
- package/dist/agents/shared/services/tool-executor.js.map +0 -1
- package/dist/agents/shared/services/typing-indicator.d.ts +0 -24
- package/dist/agents/shared/services/typing-indicator.d.ts.map +0 -1
- package/dist/agents/shared/services/typing-indicator.js +0 -54
- package/dist/agents/shared/services/typing-indicator.js.map +0 -1
- package/dist/agents/shared/services/workspace-schema-cache.d.ts +0 -122
- package/dist/agents/shared/services/workspace-schema-cache.d.ts.map +0 -1
- package/dist/agents/shared/services/workspace-schema-cache.js +0 -507
- package/dist/agents/shared/services/workspace-schema-cache.js.map +0 -1
- package/dist/agents/shared/specialist.d.ts +0 -91
- package/dist/agents/shared/specialist.d.ts.map +0 -1
- package/dist/agents/shared/specialist.js +0 -399
- package/dist/agents/shared/specialist.js.map +0 -1
- package/dist/agents/shared/tool-schema-loader.d.ts +0 -65
- package/dist/agents/shared/tool-schema-loader.d.ts.map +0 -1
- package/dist/agents/shared/tool-schema-loader.js +0 -238
- package/dist/agents/shared/tool-schema-loader.js.map +0 -1
- package/dist/agents/shared/types.d.ts +0 -190
- package/dist/agents/shared/types.d.ts.map +0 -1
- package/dist/agents/shared/types.js +0 -13
- package/dist/agents/shared/types.js.map +0 -1
- package/dist/bot/bot-config.d.ts +0 -37
- package/dist/bot/bot-config.d.ts.map +0 -1
- package/dist/bot/bot-config.js +0 -219
- package/dist/bot/bot-config.js.map +0 -1
- package/dist/bot/services/__tests__/permission-guard.test.d.ts +0 -2
- package/dist/bot/services/__tests__/permission-guard.test.d.ts.map +0 -1
- package/dist/bot/services/__tests__/permission-guard.test.js +0 -357
- package/dist/bot/services/__tests__/permission-guard.test.js.map +0 -1
- package/dist/bot/services/session-logger.d.ts +0 -162
- package/dist/bot/services/session-logger.d.ts.map +0 -1
- package/dist/bot/services/session-logger.js +0 -724
- package/dist/bot/services/session-logger.js.map +0 -1
- package/dist/bot/services/workspace-schema-cache.d.ts +0 -122
- package/dist/bot/services/workspace-schema-cache.d.ts.map +0 -1
- package/dist/bot/services/workspace-schema-cache.js +0 -506
- package/dist/bot/services/workspace-schema-cache.js.map +0 -1
- package/dist/bot-config/tools.d.ts +0 -28
- package/dist/bot-config/tools.d.ts.map +0 -1
- package/dist/bot-config/tools.js +0 -279
- package/dist/bot-config/tools.js.map +0 -1
- package/dist/client/agents/base.d.ts +0 -207
- package/dist/client/agents/base.d.ts.map +0 -1
- package/dist/client/agents/base.js +0 -744
- package/dist/client/agents/base.js.map +0 -1
- package/dist/client/agents/definitions.d.ts +0 -53
- package/dist/client/agents/definitions.d.ts.map +0 -1
- package/dist/client/agents/definitions.js +0 -263
- package/dist/client/agents/definitions.js.map +0 -1
- package/dist/client/agents/orchestrator.d.ts +0 -141
- package/dist/client/agents/orchestrator.d.ts.map +0 -1
- package/dist/client/agents/orchestrator.js +0 -1062
- package/dist/client/agents/orchestrator.js.map +0 -1
- package/dist/client/agents/specialist.d.ts +0 -86
- package/dist/client/agents/specialist.d.ts.map +0 -1
- package/dist/client/agents/specialist.js +0 -340
- package/dist/client/agents/specialist.js.map +0 -1
- package/dist/client/bot-entrypoint.d.ts +0 -7
- package/dist/client/bot-entrypoint.d.ts.map +0 -1
- package/dist/client/bot-entrypoint.js +0 -103
- package/dist/client/bot-entrypoint.js.map +0 -1
- package/dist/client/bot-manager.d.ts +0 -44
- package/dist/client/bot-manager.d.ts.map +0 -1
- package/dist/client/bot-manager.js +0 -173
- package/dist/client/bot-manager.js.map +0 -1
- package/dist/client/bot-runner.d.ts +0 -35
- package/dist/client/bot-runner.d.ts.map +0 -1
- package/dist/client/bot-runner.js +0 -188
- package/dist/client/bot-runner.js.map +0 -1
- package/dist/client/chat-agent-daemon.d.ts +0 -464
- package/dist/client/chat-agent-daemon.d.ts.map +0 -1
- package/dist/client/chat-agent-daemon.js +0 -1774
- package/dist/client/chat-agent-daemon.js.map +0 -1
- package/dist/client/daemon-factory.d.ts +0 -106
- package/dist/client/daemon-factory.d.ts.map +0 -1
- package/dist/client/daemon-factory.js +0 -301
- package/dist/client/daemon-factory.js.map +0 -1
- package/dist/client/factory.d.ts +0 -111
- package/dist/client/factory.d.ts.map +0 -1
- package/dist/client/factory.js +0 -314
- package/dist/client/factory.js.map +0 -1
- package/dist/client/index.d.ts +0 -17
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -38
- package/dist/client/index.js.map +0 -1
- package/dist/client/multi-bot-manager.d.ts +0 -42
- package/dist/client/multi-bot-manager.d.ts.map +0 -1
- package/dist/client/multi-bot-manager.js +0 -161
- package/dist/client/multi-bot-manager.js.map +0 -1
- package/dist/client/orchestrator-daemon.d.ts +0 -87
- package/dist/client/orchestrator-daemon.d.ts.map +0 -1
- package/dist/client/orchestrator-daemon.js +0 -444
- package/dist/client/orchestrator-daemon.js.map +0 -1
- package/dist/client/server.d.ts +0 -8
- package/dist/client/server.d.ts.map +0 -1
- package/dist/client/server.js +0 -251
- package/dist/client/server.js.map +0 -1
- package/dist/client/services/agent-registry.d.ts +0 -108
- package/dist/client/services/agent-registry.d.ts.map +0 -1
- package/dist/client/services/agent-registry.js +0 -630
- package/dist/client/services/agent-registry.js.map +0 -1
- package/dist/client/services/conversation-manager.d.ts +0 -50
- package/dist/client/services/conversation-manager.d.ts.map +0 -1
- package/dist/client/services/conversation-manager.js +0 -136
- package/dist/client/services/conversation-manager.js.map +0 -1
- package/dist/client/services/mcp-client.d.ts +0 -48
- package/dist/client/services/mcp-client.d.ts.map +0 -1
- package/dist/client/services/mcp-client.js +0 -105
- package/dist/client/services/mcp-client.js.map +0 -1
- package/dist/client/services/message-classifier.d.ts +0 -37
- package/dist/client/services/message-classifier.d.ts.map +0 -1
- package/dist/client/services/message-classifier.js +0 -187
- package/dist/client/services/message-classifier.js.map +0 -1
- package/dist/client/services/message-formatter.d.ts +0 -84
- package/dist/client/services/message-formatter.d.ts.map +0 -1
- package/dist/client/services/message-formatter.js +0 -353
- package/dist/client/services/message-formatter.js.map +0 -1
- package/dist/client/services/session-logger.d.ts +0 -106
- package/dist/client/services/session-logger.d.ts.map +0 -1
- package/dist/client/services/session-logger.js +0 -446
- package/dist/client/services/session-logger.js.map +0 -1
- package/dist/client/services/tool-executor.d.ts +0 -41
- package/dist/client/services/tool-executor.d.ts.map +0 -1
- package/dist/client/services/tool-executor.js +0 -169
- package/dist/client/services/tool-executor.js.map +0 -1
- package/dist/client/services/workspace-schema-cache.d.ts +0 -149
- package/dist/client/services/workspace-schema-cache.d.ts.map +0 -1
- package/dist/client/services/workspace-schema-cache.js +0 -732
- package/dist/client/services/workspace-schema-cache.js.map +0 -1
- package/dist/client/specialist-daemon.d.ts +0 -77
- package/dist/client/specialist-daemon.d.ts.map +0 -1
- package/dist/client/specialist-daemon.js +0 -197
- package/dist/client/specialist-daemon.js.map +0 -1
- package/dist/client/specialists.d.ts +0 -53
- package/dist/client/specialists.d.ts.map +0 -1
- package/dist/client/specialists.js +0 -178
- package/dist/client/specialists.js.map +0 -1
- package/dist/client/tool-schema-loader.d.ts +0 -62
- package/dist/client/tool-schema-loader.d.ts.map +0 -1
- package/dist/client/tool-schema-loader.js +0 -232
- package/dist/client/tool-schema-loader.js.map +0 -1
- package/dist/client/types.d.ts +0 -327
- package/dist/client/types.d.ts.map +0 -1
- package/dist/client/types.js +0 -121
- package/dist/client/types.js.map +0 -1
- package/dist/commands/seed-config.d.ts +0 -9
- package/dist/commands/seed-config.d.ts.map +0 -1
- package/dist/commands/seed-config.js +0 -377
- package/dist/commands/seed-config.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -11
- package/dist/commands/setup.d.ts.map +0 -1
- package/dist/commands/setup.js +0 -320
- package/dist/commands/setup.js.map +0 -1
- package/dist/lib/discussion-lock.d.ts +0 -42
- package/dist/lib/discussion-lock.d.ts.map +0 -1
- package/dist/lib/discussion-lock.js +0 -110
- package/dist/lib/discussion-lock.js.map +0 -1
- package/dist/mcp/signal-handler.d.ts +0 -82
- package/dist/mcp/signal-handler.d.ts.map +0 -1
- package/dist/mcp/signal-handler.js +0 -406
- package/dist/mcp/signal-handler.js.map +0 -1
- package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts +0 -2
- package/dist/mcp/tools/__tests__/discussion-forward.test.d.ts.map +0 -1
- package/dist/mcp/tools/__tests__/discussion-forward.test.js +0 -218
- package/dist/mcp/tools/__tests__/discussion-forward.test.js.map +0 -1
- package/dist/mcp/tools/app-member.d.ts +0 -14
- package/dist/mcp/tools/app-member.d.ts.map +0 -1
- package/dist/mcp/tools/app-member.js +0 -195
- package/dist/mcp/tools/app-member.js.map +0 -1
- package/dist/mcp/tools/app-scaffold.d.ts +0 -14
- package/dist/mcp/tools/app-scaffold.d.ts.map +0 -1
- package/dist/mcp/tools/app-scaffold.js +0 -581
- package/dist/mcp/tools/app-scaffold.js.map +0 -1
- package/dist/mcp/tools/bot-config/constants.d.ts +0 -23
- package/dist/mcp/tools/bot-config/constants.d.ts.map +0 -1
- package/dist/mcp/tools/bot-config/constants.js +0 -94
- package/dist/mcp/tools/bot-config/constants.js.map +0 -1
- package/dist/mcp/tools/bot-config/core.d.ts +0 -253
- package/dist/mcp/tools/bot-config/core.d.ts.map +0 -1
- package/dist/mcp/tools/bot-config/core.js +0 -2456
- package/dist/mcp/tools/bot-config/core.js.map +0 -1
- package/dist/mcp/tools/bot-config/index.d.ts +0 -10
- package/dist/mcp/tools/bot-config/index.d.ts.map +0 -1
- package/dist/mcp/tools/bot-config/index.js +0 -59
- package/dist/mcp/tools/bot-config/index.js.map +0 -1
- package/dist/mcp/tools/bot-config/tools.d.ts +0 -7
- package/dist/mcp/tools/bot-config/tools.d.ts.map +0 -1
- package/dist/mcp/tools/bot-config/tools.js +0 -15
- package/dist/mcp/tools/bot-config/tools.js.map +0 -1
- package/dist/mcp/tools/bot-config/types.d.ts +0 -50
- package/dist/mcp/tools/bot-config/types.d.ts.map +0 -1
- package/dist/mcp/tools/bot-config/types.js +0 -6
- package/dist/mcp/tools/bot-config/types.js.map +0 -1
- package/dist/mcp/tools/bug-fixer-tools.d.ts +0 -45
- package/dist/mcp/tools/bug-fixer-tools.d.ts.map +0 -1
- package/dist/mcp/tools/bug-fixer-tools.js +0 -1096
- package/dist/mcp/tools/bug-fixer-tools.js.map +0 -1
- package/dist/mcp/tools/document.d.ts +0 -11
- package/dist/mcp/tools/document.d.ts.map +0 -1
- package/dist/mcp/tools/document.js +0 -741
- package/dist/mcp/tools/document.js.map +0 -1
- package/dist/mcp/tools/investigate.d.ts +0 -9
- package/dist/mcp/tools/investigate.d.ts.map +0 -1
- package/dist/mcp/tools/investigate.js +0 -254
- package/dist/mcp/tools/investigate.js.map +0 -1
- package/dist/mcp/utils/pagination.d.ts +0 -40
- package/dist/mcp/utils/pagination.d.ts.map +0 -1
- package/dist/mcp/utils/pagination.js +0 -55
- package/dist/mcp/utils/pagination.js.map +0 -1
- package/dist/modules/bug-reports/bug-config.d.ts +0 -25
- package/dist/modules/bug-reports/bug-config.d.ts.map +0 -1
- package/dist/modules/bug-reports/bug-config.js +0 -187
- package/dist/modules/bug-reports/bug-config.js.map +0 -1
- package/dist/modules/bug-reports/bug-monitor.d.ts +0 -108
- package/dist/modules/bug-reports/bug-monitor.d.ts.map +0 -1
- package/dist/modules/bug-reports/bug-monitor.js +0 -510
- package/dist/modules/bug-reports/bug-monitor.js.map +0 -1
- package/dist/modules/bug-reports/giuseppe-agent.d.ts +0 -58
- package/dist/modules/bug-reports/giuseppe-agent.d.ts.map +0 -1
- package/dist/modules/bug-reports/giuseppe-agent.js +0 -467
- package/dist/modules/bug-reports/giuseppe-agent.js.map +0 -1
- package/dist/modules/bug-reports/giuseppe-ai.d.ts +0 -83
- package/dist/modules/bug-reports/giuseppe-ai.d.ts.map +0 -1
- package/dist/modules/bug-reports/giuseppe-ai.js +0 -466
- package/dist/modules/bug-reports/giuseppe-ai.js.map +0 -1
- package/dist/modules/bug-reports/giuseppe-bot.d.ts +0 -110
- package/dist/modules/bug-reports/giuseppe-bot.d.ts.map +0 -1
- package/dist/modules/bug-reports/giuseppe-bot.js +0 -804
- package/dist/modules/bug-reports/giuseppe-bot.js.map +0 -1
- package/dist/modules/bug-reports/giuseppe-daemon.d.ts +0 -80
- package/dist/modules/bug-reports/giuseppe-daemon.d.ts.map +0 -1
- package/dist/modules/bug-reports/giuseppe-daemon.js +0 -617
- package/dist/modules/bug-reports/giuseppe-daemon.js.map +0 -1
- package/dist/modules/bug-reports/giuseppe-files.d.ts +0 -64
- package/dist/modules/bug-reports/giuseppe-files.d.ts.map +0 -1
- package/dist/modules/bug-reports/giuseppe-files.js +0 -375
- package/dist/modules/bug-reports/giuseppe-files.js.map +0 -1
- package/dist/modules/bug-reports/giuseppe-git.d.ts +0 -48
- package/dist/modules/bug-reports/giuseppe-git.d.ts.map +0 -1
- package/dist/modules/bug-reports/giuseppe-git.js +0 -298
- package/dist/modules/bug-reports/giuseppe-git.js.map +0 -1
- package/dist/modules/bug-reports/giuseppe-lsp.d.ts +0 -113
- package/dist/modules/bug-reports/giuseppe-lsp.d.ts.map +0 -1
- package/dist/modules/bug-reports/giuseppe-lsp.js +0 -485
- package/dist/modules/bug-reports/giuseppe-lsp.js.map +0 -1
- package/dist/modules/bug-reports/giuseppe-prompt.d.ts +0 -5
- package/dist/modules/bug-reports/giuseppe-prompt.d.ts.map +0 -1
- package/dist/modules/bug-reports/giuseppe-prompt.js +0 -94
- package/dist/modules/bug-reports/giuseppe-prompt.js.map +0 -1
- package/dist/modules/bug-reports/index.d.ts +0 -77
- package/dist/modules/bug-reports/index.d.ts.map +0 -1
- package/dist/modules/bug-reports/index.js +0 -215
- package/dist/modules/bug-reports/index.js.map +0 -1
- package/dist/modules/bug-reports/pending-classification-registry.d.ts +0 -28
- package/dist/modules/bug-reports/pending-classification-registry.d.ts.map +0 -1
- package/dist/modules/bug-reports/pending-classification-registry.js +0 -50
- package/dist/modules/bug-reports/pending-classification-registry.js.map +0 -1
- package/dist/modules/bug-reports/pending-fix-registry.d.ts +0 -30
- package/dist/modules/bug-reports/pending-fix-registry.d.ts.map +0 -1
- package/dist/modules/bug-reports/pending-fix-registry.js +0 -42
- package/dist/modules/bug-reports/pending-fix-registry.js.map +0 -1
- package/dist/modules/bug-reports/pending-registry.d.ts +0 -27
- package/dist/modules/bug-reports/pending-registry.d.ts.map +0 -1
- package/dist/modules/bug-reports/pending-registry.js +0 -49
- package/dist/modules/bug-reports/pending-registry.js.map +0 -1
- package/dist/modules/bug-reports/types.d.ts +0 -123
- package/dist/modules/bug-reports/types.d.ts.map +0 -1
- package/dist/modules/bug-reports/types.js +0 -9
- package/dist/modules/bug-reports/types.js.map +0 -1
- package/dist/plugins/bug-fixer/index.d.ts +0 -2
- package/dist/plugins/bug-fixer/index.d.ts.map +0 -1
- package/dist/plugins/bug-fixer/index.js +0 -18
- package/dist/plugins/bug-fixer/index.js.map +0 -1
- package/dist/plugins/bug-fixer/tools.d.ts +0 -45
- package/dist/plugins/bug-fixer/tools.d.ts.map +0 -1
- package/dist/plugins/bug-fixer/tools.js +0 -1096
- package/dist/plugins/bug-fixer/tools.js.map +0 -1
- package/dist/plugins/vipunen/__tests__/tools.test.d.ts +0 -10
- package/dist/plugins/vipunen/__tests__/tools.test.d.ts.map +0 -1
- package/dist/plugins/vipunen/__tests__/tools.test.js +0 -646
- package/dist/plugins/vipunen/__tests__/tools.test.js.map +0 -1
- package/dist/routes/agents.d.ts +0 -44
- package/dist/routes/agents.d.ts.map +0 -1
- package/dist/routes/agents.js +0 -311
- package/dist/routes/agents.js.map +0 -1
- package/dist/services/agent-credential-store.d.ts +0 -73
- package/dist/services/agent-credential-store.d.ts.map +0 -1
- package/dist/services/agent-credential-store.js +0 -212
- package/dist/services/agent-credential-store.js.map +0 -1
- package/dist/stdio-server.d.ts +0 -14
- package/dist/stdio-server.d.ts.map +0 -1
- package/dist/stdio-server.js +0 -101
- package/dist/stdio-server.js.map +0 -1
- package/dist/workspace/context.d.ts +0 -148
- package/dist/workspace/context.d.ts.map +0 -1
- package/dist/workspace/context.js +0 -339
- package/dist/workspace/context.js.map +0 -1
- package/dist/workspace/credentials.d.ts +0 -55
- package/dist/workspace/credentials.d.ts.map +0 -1
- package/dist/workspace/credentials.js +0 -239
- package/dist/workspace/credentials.js.map +0 -1
- package/dist/workspace/index.d.ts +0 -21
- package/dist/workspace/index.d.ts.map +0 -1
- package/dist/workspace/index.js +0 -45
- package/dist/workspace/index.js.map +0 -1
- package/dist/workspace/loader.d.ts +0 -27
- package/dist/workspace/loader.d.ts.map +0 -1
- package/dist/workspace/loader.js +0 -222
- package/dist/workspace/loader.js.map +0 -1
- package/dist/workspace/schema.d.ts +0 -37
- package/dist/workspace/schema.d.ts.map +0 -1
- package/dist/workspace/schema.js +0 -192
- package/dist/workspace/schema.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../../src/bot/services/conversation-manager.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAQH,MAAa,mBAAmB;IAIpB;IACA;IACA;
|
|
1
|
+
{"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../../../src/bot/services/conversation-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hailer Helper Assistant — system prompt used when helperMode is enabled.
|
|
3
|
+
*
|
|
4
|
+
* Replaces any per-bot customPrompt. Combined with platformRules and
|
|
5
|
+
* platformFeatures by buildSystemPrompt().
|
|
6
|
+
*/
|
|
7
|
+
export declare const HELPER_SYSTEM_PROMPT = "You are Hailer Helper, a friendly assistant that helps users navigate the Hailer platform and can give a guided tour of their workspace.\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nHELPER MODE (default)\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nYour role:\n- Help users find where to click and what buttons do\n- Guide users through creating, editing, and moving activities\n- Explain Hailer concepts (workflow, phase, activity, field) in simple terms\n- Troubleshoot \"I can't find/see/do X\" problems\n- Teach users how Hailer works, not just give commands\n\n<ui-knowledge>\n## Hailer Layout\n\nHailer uses a three-column layout:\n- Left sidebar (56px): Icon menu - Discussions, Feed, Calendar, Activities, Apps, People, Settings (admins only)\n- Main content: Current page (kanban board, table, etc.)\n- Right sidenav (400px): Activity/discussion details panel\n\n## Activities (Workflows)\n\nKanban view: Phases are columns left-to-right. Cards represent activities.\n- Create: Click the + button on workflow card header\n- Open: Click any card\n- Move: Drag to another column, or use phase dropdown in sidenav\n\n## Activity Sidenav Tabs\n1. Detail (activity icon) - Main fields\n2. Participants (group icon) - Followers\n3. Discussion (chat icon) - Activity chat\n4. Files (paperclip icon) - Attachments\n5. Location (pin icon) - Map\n6. Linked (link icon) - Related activities\n7. Options (gear icon) - Settings\n\nEdit mode: Save/Cancel buttons appear at bottom.\n</ui-knowledge>\n\n<context-format>\nUser context is provided as JSON showing where they are:\n- location.section: 'activities', 'discussions', etc.\n- view.mode: 'kanban', 'table', etc.\n- view.workflowName: Current workflow\n- view.phases: Available phases in order\n- sidenav.open: Is panel open\n- sidenav.activeTab: Current tab\n- sidenav.activity: Open activity info\n- sidenav.buttons: Visible buttons\n- user.role: 'admin', 'user', 'guest'\n</context-format>\n\n<ui-highlighting>\nIMPORTANT: You MUST use <bot-action> tags when user asks \"where\" something is!\n\nFormat: <bot-action type=\"highlight\" target=\"TARGET_NAME\" />\n\nAvailable targets:\n\nWORKFLOW CARD HEADER:\n- add-activity-button: + button to create new activity\n- create-workflow-button: Create new workflow button\n- workflow-settings-button: Gear icon (settings)\n- workflow-star-icon-button: Star/favorite button\n- edit-workflow-button: \"...\" menu button (see more)\n- copy-workflow-button: Copy workflow (inside menu)\n- workflow-name: Workflow title text\n\nKANBAN VIEW:\n- kanban-activity-card: Activity card on kanban board\n- workflow-phases: Phase columns container\n- workflow-phase-name: Phase name header\n\nTOPBAR & NAVIGATION:\n- activity-count: Activity counter badge\n- fields-filter: Fields filter button\n- workflow-list-back-button: Back to workflow list\n\nWhen user asks \"where is the button to create activity\" you MUST respond:\n\"Click the + button on the workflow card header. <bot-action type=\"highlight\" target=\"add-activity-button\" />\"\n\nALWAYS include the <bot-action> tag at the end of your response when answering \"where\" questions!\n</ui-highlighting>\n\n<response-rules>\n1. Be specific: \"Click the + button on the workflow card\" not \"add an activity\"\n2. Reference visible elements from context\n3. Use <bot-action> tags when user asks \"where is...\", \"how do I find...\", or seems lost\n4. Explain concepts simply:\n - Phase = column on kanban, stages of work\n - Activity = card/task in workflow\n - Workflow = the whole board\n5. One step at a time - don't overwhelm\n6. Be encouraging\n7. Use actual names from context (workflow names, phase names)\n8. If user.role is not admin, don't mention Settings\n9. **Colleague nudge after creating a workflow**: when you successfully install_workflow (whether the user asked directly or it happened as part of a tour step), end that reply with a single short line offering to invite a teammate. Example: \"Want me to invite a teammate to this \u2014 share the workspace with someone on your team?\" \u2014 wait for their answer, don't preemptively call any invite tool. This is mandatory once per fresh workflow. Skip it ONLY if (a) the workflow you just created is the \"Onboarding Progress\" tracking workflow (that's internal scaffolding, not real work), (b) the workspace already has more than one human user, or (c) the user is mid-tour and the very next tour step is \"Engage colleagues\" (the step covers it).\n</response-rules>\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\nGUIDED TOUR MODE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\nActivate when the user asks for a tour, onboarding, tutorial, or says things like \"show me around\", \"what can I do here\", \"how do I start\", \"give me a tour\", \"teach me\" \u2014 OR when they tell you the workspace has just been set up and ask you to show them around (that is how a freshly-built workspace hands the user over to you).\n\nThis is a tour of the user's OWN, REAL workspace \u2014 not a canned demo. In the common case the workspace has ALREADY been built for them: a separate autonomous builder set up their workflows, fields, phases, and seeded sample records from what they described before they arrived, and usually a custom app on top. Your job is to walk them through what they ACTUALLY have, using their real names \u2014 NEVER to fabricate a generic \"My First Project\" demo or duplicate what already exists.\n\n<discover-first>\nBefore you start the tour, find out what actually exists \u2014 never assume:\n1. Call describe_workflows to see the real workflows. Ignore internal scaffolding such as an \"Onboarding Progress\" workflow.\n2. For a workflow you're about to show, call list_activities to see the seeded sample records, and read the page context (view.workflowName, view.phases) for the real phase and field names.\n3. Call list_apps to see whether a custom app was built. The app may still be getting finished at the moment the tour begins \u2014 if it isn't there yet, say so plainly and focus on the workflows; tell them the app will appear shortly.\nDo all discovery with read-only tools. Do NOT create workflows or activities to \"demonstrate\" \u2014 the point is to reveal what's already theirs.\n</discover-first>\n\n<empty-workspace-fallback>\nIf discovery shows the workspace is essentially empty (no real workflows beyond scaffolding), the build either hasn't landed yet or this isn't a freshly-built workspace. Do NOT invent a throwaway demo. Instead: briefly explain the core concepts (workflow, phase, activity, field), then offer to build something REAL with them \u2014 one workflow at a time, based on what they actually want to track, asking what fits their work. Skip the scripted tour shape below.\n</empty-workspace-fallback>\n\n<execution-rules>\n- ONE STEP PER MESSAGE. Wait for the user before moving on. Never auto-advance, never dump the whole tour at once.\n- Use the user's REAL names everywhere \u2014 their workflow names, phase names, field names, app name. Never placeholders.\n- Do NOT create demo workflows or demo activities during the tour. You are showing what's already there. (If the user explicitly asks you to add something real, that's fine \u2014 but it isn't part of the tour script, and the colleague-nudge rule still applies.)\n- EVERY message has two parts: (a) EXPLAIN what they're looking at and why it matters (2-3 sentences \u2014 they're learning, not just watching), then (b) end with numbered options whose last item continues the tour.\n- After pointing at something, give a navigation link or a <bot-action> highlight so they can actually see it.\n- A short reply (a number, \"ok\", \"yes\", \"next\", \"continue\", and the same in the user's language) means CONTINUE \u2014 read your progress activity for where you are and do the next step. Never ask \"what do you want?\" mid-tour for a short reply.\n- Keep the user's language. Be encouraging and concrete.\n</execution-rules>\n\n<tour-shape>\nAdapt this to whatever actually exists \u2014 the number of workflows is not fixed.\n\n1. WELCOME & ORIENT\n Greet them, acknowledge their workspace was just set up based on what they described, and give a one-line map of what they now have \u2014 name each real workflow and the app (if present). Don't go deep yet.\n Options, e.g.: 1) Dig into <first real workflow> 2) First, what's a workflow? 3) Show me the app.\n\n2. TOUR EACH REAL WORKFLOW (one workflow per step)\n For the workflow: explain what it's for, name its phases (the stages an item moves through) and the key fields, then point at the seeded sample activities so they see real data in context. Show how to open a card and how to move it between phases, with a navigation link and relevant highlights. If two workflows are related through an activitylink field, point that connection out. If there are several workflows, cover them one per message.\n Options: a deeper question about this workflow / how to do something with it (assign, filter) / continue to the next workflow.\n\n3. THE APP\n If an app was built, explain what it does and where to find it (Apps in the left sidebar), with a navigation link. If it isn't ready yet, say it's still being finished and they'll see it under Apps shortly.\n Options: a question about the app / continue.\n\n4. ENGAGE COLLEAGUES\n Hailer becomes real once their team is in it \u2014 a colleague gets their own login, sees these workflows, can be assigned activities, and joins discussions. Offer to invite someone now (you just need an email). If they ask about permissions, explain Guest (limited) / Member (standard) / Admin (settings + invites) / Owner (billing + plan). Don't invite without an explicit email AND go-ahead.\n Options: 1) Invite a teammate now (give me their email) 2) What are the permission levels? 3) Skip for now \u2014 wrap up.\n\n5. WRAP UP\n Summarize what they now have and a couple of concrete next steps (add their own records, tweak a field, invite the team). If they invited a teammate, mention them by name. Remind them they can ask you anything about their workspace any time, that they can change how you behave \u2014 tone, persona, language, even your picture \u2014 just by asking here, and that account-level settings live in the AI Hub app.\n</tour-shape>\n\n<progress-tracking>\nTrack where you are with an activity so a short \"continue\" always resumes correctly \u2014 but never block the tour on it.\n1. On each message, look for an \"Onboarding Progress\" workflow via describe_workflows. If it exists, find this user's activity and read its currentStep field; you are mid-tour at that step.\n2. If it doesn't exist, you MAY create a minimal one (fields: currentStep numeric, status text) once to track progress \u2014 but if creation fails, just keep track within the conversation and carry on. Never let progress bookkeeping stall the actual tour.\n3. After completing a step, bump currentStep and wait for the user.\n4. Because the tour adapts to however many real workflows exist, treat currentStep as \"where in the shape above am I\" (welcome \u2192 workflows \u2192 app \u2192 colleagues \u2192 wrap up), not a fixed script line.\n</progress-tracking>\n\n<error-handling>\n- If a discovery call fails, retry once, then describe what you can from the page context rather than stalling.\n- Never say \"I don't have context\" \u2014 discover it with the read-only tools.\n- If the workspace looks empty mid-tour, fall back to the empty-workspace path rather than inventing content.\n- Never crash the tour \u2014 always recover gracefully.\n</error-handling>";
|
|
8
|
+
//# sourceMappingURL=helper-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper-prompt.d.ts","sourceRoot":"","sources":["../../../src/bot/services/helper-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,oBAAoB,0sYAsKf,CAAC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Hailer Helper Assistant — system prompt used when helperMode is enabled.
|
|
4
|
+
*
|
|
5
|
+
* Replaces any per-bot customPrompt. Combined with platformRules and
|
|
6
|
+
* platformFeatures by buildSystemPrompt().
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.HELPER_SYSTEM_PROMPT = void 0;
|
|
10
|
+
exports.HELPER_SYSTEM_PROMPT = `You are Hailer Helper, a friendly assistant that helps users navigate the Hailer platform and can give a guided tour of their workspace.
|
|
11
|
+
|
|
12
|
+
═══════════════════════════════════════════
|
|
13
|
+
HELPER MODE (default)
|
|
14
|
+
═══════════════════════════════════════════
|
|
15
|
+
|
|
16
|
+
Your role:
|
|
17
|
+
- Help users find where to click and what buttons do
|
|
18
|
+
- Guide users through creating, editing, and moving activities
|
|
19
|
+
- Explain Hailer concepts (workflow, phase, activity, field) in simple terms
|
|
20
|
+
- Troubleshoot "I can't find/see/do X" problems
|
|
21
|
+
- Teach users how Hailer works, not just give commands
|
|
22
|
+
|
|
23
|
+
<ui-knowledge>
|
|
24
|
+
## Hailer Layout
|
|
25
|
+
|
|
26
|
+
Hailer uses a three-column layout:
|
|
27
|
+
- Left sidebar (56px): Icon menu - Discussions, Feed, Calendar, Activities, Apps, People, Settings (admins only)
|
|
28
|
+
- Main content: Current page (kanban board, table, etc.)
|
|
29
|
+
- Right sidenav (400px): Activity/discussion details panel
|
|
30
|
+
|
|
31
|
+
## Activities (Workflows)
|
|
32
|
+
|
|
33
|
+
Kanban view: Phases are columns left-to-right. Cards represent activities.
|
|
34
|
+
- Create: Click the + button on workflow card header
|
|
35
|
+
- Open: Click any card
|
|
36
|
+
- Move: Drag to another column, or use phase dropdown in sidenav
|
|
37
|
+
|
|
38
|
+
## Activity Sidenav Tabs
|
|
39
|
+
1. Detail (activity icon) - Main fields
|
|
40
|
+
2. Participants (group icon) - Followers
|
|
41
|
+
3. Discussion (chat icon) - Activity chat
|
|
42
|
+
4. Files (paperclip icon) - Attachments
|
|
43
|
+
5. Location (pin icon) - Map
|
|
44
|
+
6. Linked (link icon) - Related activities
|
|
45
|
+
7. Options (gear icon) - Settings
|
|
46
|
+
|
|
47
|
+
Edit mode: Save/Cancel buttons appear at bottom.
|
|
48
|
+
</ui-knowledge>
|
|
49
|
+
|
|
50
|
+
<context-format>
|
|
51
|
+
User context is provided as JSON showing where they are:
|
|
52
|
+
- location.section: 'activities', 'discussions', etc.
|
|
53
|
+
- view.mode: 'kanban', 'table', etc.
|
|
54
|
+
- view.workflowName: Current workflow
|
|
55
|
+
- view.phases: Available phases in order
|
|
56
|
+
- sidenav.open: Is panel open
|
|
57
|
+
- sidenav.activeTab: Current tab
|
|
58
|
+
- sidenav.activity: Open activity info
|
|
59
|
+
- sidenav.buttons: Visible buttons
|
|
60
|
+
- user.role: 'admin', 'user', 'guest'
|
|
61
|
+
</context-format>
|
|
62
|
+
|
|
63
|
+
<ui-highlighting>
|
|
64
|
+
IMPORTANT: You MUST use <bot-action> tags when user asks "where" something is!
|
|
65
|
+
|
|
66
|
+
Format: <bot-action type="highlight" target="TARGET_NAME" />
|
|
67
|
+
|
|
68
|
+
Available targets:
|
|
69
|
+
|
|
70
|
+
WORKFLOW CARD HEADER:
|
|
71
|
+
- add-activity-button: + button to create new activity
|
|
72
|
+
- create-workflow-button: Create new workflow button
|
|
73
|
+
- workflow-settings-button: Gear icon (settings)
|
|
74
|
+
- workflow-star-icon-button: Star/favorite button
|
|
75
|
+
- edit-workflow-button: "..." menu button (see more)
|
|
76
|
+
- copy-workflow-button: Copy workflow (inside menu)
|
|
77
|
+
- workflow-name: Workflow title text
|
|
78
|
+
|
|
79
|
+
KANBAN VIEW:
|
|
80
|
+
- kanban-activity-card: Activity card on kanban board
|
|
81
|
+
- workflow-phases: Phase columns container
|
|
82
|
+
- workflow-phase-name: Phase name header
|
|
83
|
+
|
|
84
|
+
TOPBAR & NAVIGATION:
|
|
85
|
+
- activity-count: Activity counter badge
|
|
86
|
+
- fields-filter: Fields filter button
|
|
87
|
+
- workflow-list-back-button: Back to workflow list
|
|
88
|
+
|
|
89
|
+
When user asks "where is the button to create activity" you MUST respond:
|
|
90
|
+
"Click the + button on the workflow card header. <bot-action type="highlight" target="add-activity-button" />"
|
|
91
|
+
|
|
92
|
+
ALWAYS include the <bot-action> tag at the end of your response when answering "where" questions!
|
|
93
|
+
</ui-highlighting>
|
|
94
|
+
|
|
95
|
+
<response-rules>
|
|
96
|
+
1. Be specific: "Click the + button on the workflow card" not "add an activity"
|
|
97
|
+
2. Reference visible elements from context
|
|
98
|
+
3. Use <bot-action> tags when user asks "where is...", "how do I find...", or seems lost
|
|
99
|
+
4. Explain concepts simply:
|
|
100
|
+
- Phase = column on kanban, stages of work
|
|
101
|
+
- Activity = card/task in workflow
|
|
102
|
+
- Workflow = the whole board
|
|
103
|
+
5. One step at a time - don't overwhelm
|
|
104
|
+
6. Be encouraging
|
|
105
|
+
7. Use actual names from context (workflow names, phase names)
|
|
106
|
+
8. If user.role is not admin, don't mention Settings
|
|
107
|
+
9. **Colleague nudge after creating a workflow**: when you successfully install_workflow (whether the user asked directly or it happened as part of a tour step), end that reply with a single short line offering to invite a teammate. Example: "Want me to invite a teammate to this — share the workspace with someone on your team?" — wait for their answer, don't preemptively call any invite tool. This is mandatory once per fresh workflow. Skip it ONLY if (a) the workflow you just created is the "Onboarding Progress" tracking workflow (that's internal scaffolding, not real work), (b) the workspace already has more than one human user, or (c) the user is mid-tour and the very next tour step is "Engage colleagues" (the step covers it).
|
|
108
|
+
</response-rules>
|
|
109
|
+
|
|
110
|
+
═══════════════════════════════════════════
|
|
111
|
+
GUIDED TOUR MODE
|
|
112
|
+
═══════════════════════════════════════════
|
|
113
|
+
|
|
114
|
+
Activate when the user asks for a tour, onboarding, tutorial, or says things like "show me around", "what can I do here", "how do I start", "give me a tour", "teach me" — OR when they tell you the workspace has just been set up and ask you to show them around (that is how a freshly-built workspace hands the user over to you).
|
|
115
|
+
|
|
116
|
+
This is a tour of the user's OWN, REAL workspace — not a canned demo. In the common case the workspace has ALREADY been built for them: a separate autonomous builder set up their workflows, fields, phases, and seeded sample records from what they described before they arrived, and usually a custom app on top. Your job is to walk them through what they ACTUALLY have, using their real names — NEVER to fabricate a generic "My First Project" demo or duplicate what already exists.
|
|
117
|
+
|
|
118
|
+
<discover-first>
|
|
119
|
+
Before you start the tour, find out what actually exists — never assume:
|
|
120
|
+
1. Call describe_workflows to see the real workflows. Ignore internal scaffolding such as an "Onboarding Progress" workflow.
|
|
121
|
+
2. For a workflow you're about to show, call list_activities to see the seeded sample records, and read the page context (view.workflowName, view.phases) for the real phase and field names.
|
|
122
|
+
3. Call list_apps to see whether a custom app was built. The app may still be getting finished at the moment the tour begins — if it isn't there yet, say so plainly and focus on the workflows; tell them the app will appear shortly.
|
|
123
|
+
Do all discovery with read-only tools. Do NOT create workflows or activities to "demonstrate" — the point is to reveal what's already theirs.
|
|
124
|
+
</discover-first>
|
|
125
|
+
|
|
126
|
+
<empty-workspace-fallback>
|
|
127
|
+
If discovery shows the workspace is essentially empty (no real workflows beyond scaffolding), the build either hasn't landed yet or this isn't a freshly-built workspace. Do NOT invent a throwaway demo. Instead: briefly explain the core concepts (workflow, phase, activity, field), then offer to build something REAL with them — one workflow at a time, based on what they actually want to track, asking what fits their work. Skip the scripted tour shape below.
|
|
128
|
+
</empty-workspace-fallback>
|
|
129
|
+
|
|
130
|
+
<execution-rules>
|
|
131
|
+
- ONE STEP PER MESSAGE. Wait for the user before moving on. Never auto-advance, never dump the whole tour at once.
|
|
132
|
+
- Use the user's REAL names everywhere — their workflow names, phase names, field names, app name. Never placeholders.
|
|
133
|
+
- Do NOT create demo workflows or demo activities during the tour. You are showing what's already there. (If the user explicitly asks you to add something real, that's fine — but it isn't part of the tour script, and the colleague-nudge rule still applies.)
|
|
134
|
+
- EVERY message has two parts: (a) EXPLAIN what they're looking at and why it matters (2-3 sentences — they're learning, not just watching), then (b) end with numbered options whose last item continues the tour.
|
|
135
|
+
- After pointing at something, give a navigation link or a <bot-action> highlight so they can actually see it.
|
|
136
|
+
- A short reply (a number, "ok", "yes", "next", "continue", and the same in the user's language) means CONTINUE — read your progress activity for where you are and do the next step. Never ask "what do you want?" mid-tour for a short reply.
|
|
137
|
+
- Keep the user's language. Be encouraging and concrete.
|
|
138
|
+
</execution-rules>
|
|
139
|
+
|
|
140
|
+
<tour-shape>
|
|
141
|
+
Adapt this to whatever actually exists — the number of workflows is not fixed.
|
|
142
|
+
|
|
143
|
+
1. WELCOME & ORIENT
|
|
144
|
+
Greet them, acknowledge their workspace was just set up based on what they described, and give a one-line map of what they now have — name each real workflow and the app (if present). Don't go deep yet.
|
|
145
|
+
Options, e.g.: 1) Dig into <first real workflow> 2) First, what's a workflow? 3) Show me the app.
|
|
146
|
+
|
|
147
|
+
2. TOUR EACH REAL WORKFLOW (one workflow per step)
|
|
148
|
+
For the workflow: explain what it's for, name its phases (the stages an item moves through) and the key fields, then point at the seeded sample activities so they see real data in context. Show how to open a card and how to move it between phases, with a navigation link and relevant highlights. If two workflows are related through an activitylink field, point that connection out. If there are several workflows, cover them one per message.
|
|
149
|
+
Options: a deeper question about this workflow / how to do something with it (assign, filter) / continue to the next workflow.
|
|
150
|
+
|
|
151
|
+
3. THE APP
|
|
152
|
+
If an app was built, explain what it does and where to find it (Apps in the left sidebar), with a navigation link. If it isn't ready yet, say it's still being finished and they'll see it under Apps shortly.
|
|
153
|
+
Options: a question about the app / continue.
|
|
154
|
+
|
|
155
|
+
4. ENGAGE COLLEAGUES
|
|
156
|
+
Hailer becomes real once their team is in it — a colleague gets their own login, sees these workflows, can be assigned activities, and joins discussions. Offer to invite someone now (you just need an email). If they ask about permissions, explain Guest (limited) / Member (standard) / Admin (settings + invites) / Owner (billing + plan). Don't invite without an explicit email AND go-ahead.
|
|
157
|
+
Options: 1) Invite a teammate now (give me their email) 2) What are the permission levels? 3) Skip for now — wrap up.
|
|
158
|
+
|
|
159
|
+
5. WRAP UP
|
|
160
|
+
Summarize what they now have and a couple of concrete next steps (add their own records, tweak a field, invite the team). If they invited a teammate, mention them by name. Remind them they can ask you anything about their workspace any time, that they can change how you behave — tone, persona, language, even your picture — just by asking here, and that account-level settings live in the AI Hub app.
|
|
161
|
+
</tour-shape>
|
|
162
|
+
|
|
163
|
+
<progress-tracking>
|
|
164
|
+
Track where you are with an activity so a short "continue" always resumes correctly — but never block the tour on it.
|
|
165
|
+
1. On each message, look for an "Onboarding Progress" workflow via describe_workflows. If it exists, find this user's activity and read its currentStep field; you are mid-tour at that step.
|
|
166
|
+
2. If it doesn't exist, you MAY create a minimal one (fields: currentStep numeric, status text) once to track progress — but if creation fails, just keep track within the conversation and carry on. Never let progress bookkeeping stall the actual tour.
|
|
167
|
+
3. After completing a step, bump currentStep and wait for the user.
|
|
168
|
+
4. Because the tour adapts to however many real workflows exist, treat currentStep as "where in the shape above am I" (welcome → workflows → app → colleagues → wrap up), not a fixed script line.
|
|
169
|
+
</progress-tracking>
|
|
170
|
+
|
|
171
|
+
<error-handling>
|
|
172
|
+
- If a discovery call fails, retry once, then describe what you can from the page context rather than stalling.
|
|
173
|
+
- Never say "I don't have context" — discover it with the read-only tools.
|
|
174
|
+
- If the workspace looks empty mid-tour, fall back to the empty-workspace path rather than inventing content.
|
|
175
|
+
- Never crash the tour — always recover gracefully.
|
|
176
|
+
</error-handling>`;
|
|
177
|
+
//# sourceMappingURL=helper-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper-prompt.js","sourceRoot":"","sources":["../../../src/bot/services/helper-prompt.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAsKlB,CAAC"}
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
* - Classifies message priority (high/normal)
|
|
7
7
|
* - Detects mentions, replies, and DMs
|
|
8
8
|
*/
|
|
9
|
-
import { Logger } from
|
|
10
|
-
import { HailerSignal } from
|
|
11
|
-
import { BotConnection, IncomingMessage, HailerMessage } from
|
|
9
|
+
import { Logger } from '../../lib/logger';
|
|
10
|
+
import { HailerSignal } from './types';
|
|
11
|
+
import { BotConnection, IncomingMessage, HailerMessage } from './types';
|
|
12
12
|
export declare class MessageClassifier {
|
|
13
13
|
private botUserId;
|
|
14
14
|
private botConnection;
|
|
@@ -16,27 +16,27 @@ export declare class MessageClassifier {
|
|
|
16
16
|
private mentionPattern;
|
|
17
17
|
constructor(botUserId: string, botConnection: BotConnection, logger: Logger);
|
|
18
18
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
* Extract and classify incoming message from signal
|
|
20
|
+
*/
|
|
21
21
|
extractIncomingMessage(signal: HailerSignal): Promise<IncomingMessage | null>;
|
|
22
22
|
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
* Check if message mentions this bot
|
|
24
|
+
* Uses pre-compiled regex pattern for performance
|
|
25
|
+
*/
|
|
26
26
|
checkMention(content: string): boolean;
|
|
27
27
|
/**
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
* Check if message is a reply to one of our messages using pre-fetched messages.
|
|
29
|
+
* Avoids a redundant API call by reusing the messages already fetched in extractIncomingMessage.
|
|
30
|
+
*/
|
|
31
31
|
checkReplyInMessages(messages: HailerMessage[], messageId: string): boolean;
|
|
32
32
|
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
* Check if this is a 1:1 DM with the bot using pre-loaded discussion data.
|
|
34
|
+
* Avoids a redundant API call by reusing discussion data already fetched in extractIncomingMessage.
|
|
35
|
+
*/
|
|
36
36
|
checkDirectMessageFromData(discData: any, senderId: string): boolean;
|
|
37
37
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
* Check if this is a 1:1 DM with the bot (fallback - fetches discussion from API)
|
|
39
|
+
*/
|
|
40
40
|
checkDirectMessage(discussionId: string, senderId: string): Promise<boolean>;
|
|
41
41
|
}
|
|
42
42
|
//# sourceMappingURL=message-classifier.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-classifier.d.ts","sourceRoot":"","sources":["../../../src/bot/services/message-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"message-classifier.d.ts","sourceRoot":"","sources":["../../../src/bot/services/message-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EACH,aAAa,EACb,eAAe,EAEf,aAAa,EAGhB,MAAM,SAAS,CAAC;AAEjB,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,MAAM;IALd,OAAO,CAAC,cAAc,CAAS;gBAGvB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM;IAStB;;KAEC;IACY,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAoM1F;;;KAGC;IACM,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7C;;;KAGC;IACM,oBAAoB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IASlF;;;KAGC;IACM,0BAA0B,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAY3E;;KAEC;IACY,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CA0B5F"}
|
|
@@ -20,11 +20,11 @@ class MessageClassifier {
|
|
|
20
20
|
this.botConnection = botConnection;
|
|
21
21
|
this.logger = logger;
|
|
22
22
|
// Compile mention pattern once
|
|
23
|
-
this.mentionPattern = new RegExp(`\\[hailerTag\\|[^\\]]+\\]\\(${this.botUserId}\\)`,
|
|
23
|
+
this.mentionPattern = new RegExp(`\\[hailerTag\\|[^\\]]+\\]\\(${this.botUserId}\\)`, 'i');
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
* Extract and classify incoming message from signal
|
|
27
|
+
*/
|
|
28
28
|
async extractIncomingMessage(signal) {
|
|
29
29
|
const { discussion, msg_id, uid } = signal.data;
|
|
30
30
|
// Skip our own messages
|
|
@@ -36,29 +36,31 @@ class MessageClassifier {
|
|
|
36
36
|
return null;
|
|
37
37
|
}
|
|
38
38
|
// Fetch the actual message content
|
|
39
|
-
let messageContent =
|
|
40
|
-
let
|
|
39
|
+
let messageContent = '';
|
|
40
|
+
let messageMeta;
|
|
41
|
+
let senderName = 'Unknown';
|
|
41
42
|
let fileAttachments = [];
|
|
42
43
|
let messages = [];
|
|
43
44
|
try {
|
|
44
|
-
const response = await this.botConnection.client.socket.request(
|
|
45
|
+
const response = await this.botConnection.client.socket.request('v3.discussion.message.latest', [discussion]);
|
|
45
46
|
messages = response?.messages || [];
|
|
46
47
|
let targetMessage = messages.find((msg) => msg._id === msg_id);
|
|
47
48
|
if (!targetMessage) {
|
|
48
|
-
this.logger.warn(
|
|
49
|
+
this.logger.warn('Target message not in latest batch', { discussionId: discussion, messageId: msg_id });
|
|
49
50
|
// Retry once after a short delay — the message may not have been committed to DB yet
|
|
50
51
|
await new Promise(r => setTimeout(r, 500));
|
|
51
|
-
const retryResponse = await this.botConnection.client.socket.request(
|
|
52
|
+
const retryResponse = await this.botConnection.client.socket.request('v3.discussion.message.latest', [discussion]);
|
|
52
53
|
const retryMessages = retryResponse?.messages || [];
|
|
53
54
|
targetMessage = retryMessages.find((msg) => msg._id === msg_id);
|
|
54
55
|
if (!targetMessage) {
|
|
55
|
-
this.logger.error(
|
|
56
|
+
this.logger.error('Target message not found after retry', { discussionId: discussion, messageId: msg_id });
|
|
56
57
|
return null;
|
|
57
58
|
}
|
|
58
59
|
// Update messages array for downstream use (reply detection, etc.)
|
|
59
60
|
messages = retryMessages;
|
|
60
61
|
}
|
|
61
|
-
messageContent = targetMessage.msg || targetMessage.content ||
|
|
62
|
+
messageContent = targetMessage.msg || targetMessage.content || '';
|
|
63
|
+
messageMeta = targetMessage.meta;
|
|
62
64
|
// Extract forwarded message content — forwarded messages have empty msg
|
|
63
65
|
if (!messageContent && targetMessage.forwardMessage) {
|
|
64
66
|
let fwd = targetMessage.forwardMessage;
|
|
@@ -66,8 +68,9 @@ class MessageClassifier {
|
|
|
66
68
|
let depth = 0;
|
|
67
69
|
while (fwd && depth < 10) {
|
|
68
70
|
const fwdText = fwd.msg || fwd.content || '';
|
|
69
|
-
if (fwdText)
|
|
71
|
+
if (fwdText) {
|
|
70
72
|
fwdParts.push(fwdText);
|
|
73
|
+
}
|
|
71
74
|
fwd = fwd.forwardMessage;
|
|
72
75
|
depth++;
|
|
73
76
|
}
|
|
@@ -79,27 +82,27 @@ class MessageClassifier {
|
|
|
79
82
|
if (targetMessage.files && Array.isArray(targetMessage.files) && targetMessage.files.length > 0) {
|
|
80
83
|
fileAttachments = targetMessage.files.map((file) => ({
|
|
81
84
|
fileId: file._id,
|
|
82
|
-
filename: file.filename || file.name ||
|
|
85
|
+
filename: file.filename || file.name || 'unknown',
|
|
83
86
|
size: file.size,
|
|
84
87
|
mime: file.mime || file.type,
|
|
85
88
|
}));
|
|
86
|
-
this.logger.debug(
|
|
89
|
+
this.logger.debug('File attachments detected', {
|
|
87
90
|
messageId: msg_id,
|
|
88
91
|
fileCount: fileAttachments.length,
|
|
89
|
-
fileIds: fileAttachments.map(f => f.fileId).join(
|
|
92
|
+
fileIds: fileAttachments.map(f => f.fileId).join(','),
|
|
90
93
|
});
|
|
91
94
|
}
|
|
92
95
|
// Get sender name: try workspace cache first, then message field
|
|
93
96
|
const cachedUser = this.botConnection.workspaceCache?.usersById[uid];
|
|
94
97
|
const cachedName = cachedUser?.fullName ?? `${cachedUser?.firstname || ''} ${cachedUser?.lastname || ''}`.trim();
|
|
95
|
-
senderName = cachedName || targetMessage.userName ||
|
|
98
|
+
senderName = cachedName || targetMessage.userName || 'Unknown';
|
|
96
99
|
// Skip system messages
|
|
97
|
-
if (targetMessage.type && targetMessage.type !==
|
|
100
|
+
if (targetMessage.type && targetMessage.type !== 'user') {
|
|
98
101
|
return null;
|
|
99
102
|
}
|
|
100
103
|
}
|
|
101
104
|
catch (error) {
|
|
102
|
-
this.logger.warn(
|
|
105
|
+
this.logger.warn('Could not fetch message content', { error });
|
|
103
106
|
return null;
|
|
104
107
|
}
|
|
105
108
|
// Load discussion metadata (used for DM check, activity link, and workspace ID)
|
|
@@ -108,24 +111,24 @@ class MessageClassifier {
|
|
|
108
111
|
let discussionWorkspaceId;
|
|
109
112
|
let discData = null;
|
|
110
113
|
try {
|
|
111
|
-
const discussionResponse = await this.botConnection.client.socket.request(
|
|
114
|
+
const discussionResponse = await this.botConnection.client.socket.request('messenger.load_discussions', [[discussion]]);
|
|
112
115
|
if (discussionResponse && Object.hasOwn(discussionResponse, discussion)) {
|
|
113
116
|
discData = discussionResponse[discussion];
|
|
114
117
|
linkedActivityId = discData.linked_activity;
|
|
115
118
|
linkedActivityName = discData.name; // Discussion name is usually the activity name
|
|
116
119
|
discussionWorkspaceId = discData.cid; // Workspace ID (cid = company ID in Hailer)
|
|
117
|
-
this.logger.debug(
|
|
120
|
+
this.logger.debug('Discussion metadata loaded', {
|
|
118
121
|
discussionId: discussion,
|
|
119
|
-
linkedActivityId: linkedActivityId ||
|
|
120
|
-
linkedActivityName: linkedActivityName ||
|
|
122
|
+
linkedActivityId: linkedActivityId || 'none',
|
|
123
|
+
linkedActivityName: linkedActivityName || 'none',
|
|
121
124
|
hasLinkedActivity: !!linkedActivityId,
|
|
122
|
-
cid: discussionWorkspaceId ||
|
|
123
|
-
discDataKeys: Object.keys(discData).join(
|
|
125
|
+
cid: discussionWorkspaceId || 'not in response',
|
|
126
|
+
discDataKeys: Object.keys(discData).join(','),
|
|
124
127
|
});
|
|
125
128
|
}
|
|
126
129
|
}
|
|
127
130
|
catch (error) {
|
|
128
|
-
this.logger.debug(
|
|
131
|
+
this.logger.debug('Failed to load discussion metadata', {
|
|
129
132
|
discussionId: discussion,
|
|
130
133
|
error: error instanceof Error ? error.message : String(error),
|
|
131
134
|
});
|
|
@@ -136,35 +139,35 @@ class MessageClassifier {
|
|
|
136
139
|
const isDirectMessage = discData
|
|
137
140
|
? this.checkDirectMessageFromData(discData, uid)
|
|
138
141
|
: await this.checkDirectMessage(discussion, uid);
|
|
139
|
-
let priority =
|
|
140
|
-
let priorityReason =
|
|
142
|
+
let priority = 'normal';
|
|
143
|
+
let priorityReason = 'General chat message';
|
|
141
144
|
if (isDirectMessage) {
|
|
142
|
-
priority =
|
|
143
|
-
priorityReason =
|
|
145
|
+
priority = 'high';
|
|
146
|
+
priorityReason = 'Direct message (1:1 conversation)';
|
|
144
147
|
}
|
|
145
148
|
else if (isMention) {
|
|
146
|
-
priority =
|
|
147
|
-
priorityReason =
|
|
149
|
+
priority = 'high';
|
|
150
|
+
priorityReason = 'Bot mentioned in message';
|
|
148
151
|
}
|
|
149
152
|
else if (isReplyToBot) {
|
|
150
|
-
priority =
|
|
153
|
+
priority = 'high';
|
|
151
154
|
priorityReason = "Reply to bot's message";
|
|
152
155
|
}
|
|
153
156
|
// Extract workspaceId - prefer discussion metadata (accurate), fallback to signal
|
|
154
157
|
// Discussion metadata contains authoritative workspace ID from Hailer
|
|
155
158
|
const workspaceId = discussionWorkspaceId || signal.workspaceId;
|
|
156
159
|
if (!workspaceId) {
|
|
157
|
-
this.logger.warn(
|
|
160
|
+
this.logger.warn('Cannot determine workspace - rejecting message for isolation safety', {
|
|
158
161
|
discussionId: discussion,
|
|
159
162
|
messageId: msg_id,
|
|
160
|
-
discussionWorkspaceId: discussionWorkspaceId ||
|
|
161
|
-
signalWorkspaceId: signal.workspaceId ||
|
|
163
|
+
discussionWorkspaceId: discussionWorkspaceId || 'none',
|
|
164
|
+
signalWorkspaceId: signal.workspaceId || 'none',
|
|
162
165
|
});
|
|
163
166
|
return null;
|
|
164
167
|
}
|
|
165
168
|
// Debug log workspace context (normal in multi-tenant setup)
|
|
166
169
|
if (discussionWorkspaceId) {
|
|
167
|
-
this.logger.debug(
|
|
170
|
+
this.logger.debug('Message workspace context', {
|
|
168
171
|
discussionId: discussion,
|
|
169
172
|
workspaceId: discussionWorkspaceId,
|
|
170
173
|
});
|
|
@@ -179,6 +182,7 @@ class MessageClassifier {
|
|
|
179
182
|
senderId: uid,
|
|
180
183
|
senderName,
|
|
181
184
|
content: messageContent,
|
|
185
|
+
meta: messageMeta,
|
|
182
186
|
timestamp: signal.timestamp,
|
|
183
187
|
priority,
|
|
184
188
|
priorityReason,
|
|
@@ -190,16 +194,16 @@ class MessageClassifier {
|
|
|
190
194
|
};
|
|
191
195
|
}
|
|
192
196
|
/**
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
197
|
+
* Check if message mentions this bot
|
|
198
|
+
* Uses pre-compiled regex pattern for performance
|
|
199
|
+
*/
|
|
196
200
|
checkMention(content) {
|
|
197
201
|
return this.mentionPattern.test(content);
|
|
198
202
|
}
|
|
199
203
|
/**
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
204
|
+
* Check if message is a reply to one of our messages using pre-fetched messages.
|
|
205
|
+
* Avoids a redundant API call by reusing the messages already fetched in extractIncomingMessage.
|
|
206
|
+
*/
|
|
203
207
|
checkReplyInMessages(messages, messageId) {
|
|
204
208
|
const targetMessage = messages.find((msg) => msg._id === messageId);
|
|
205
209
|
if (targetMessage?.replyTo) {
|
|
@@ -209,13 +213,14 @@ class MessageClassifier {
|
|
|
209
213
|
return false;
|
|
210
214
|
}
|
|
211
215
|
/**
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
216
|
+
* Check if this is a 1:1 DM with the bot using pre-loaded discussion data.
|
|
217
|
+
* Avoids a redundant API call by reusing discussion data already fetched in extractIncomingMessage.
|
|
218
|
+
*/
|
|
215
219
|
checkDirectMessageFromData(discData, senderId) {
|
|
216
220
|
// Activity discussions are never DMs, even with only 2 participants
|
|
217
|
-
if (discData.linked_activity)
|
|
221
|
+
if (discData.linked_activity) {
|
|
218
222
|
return false;
|
|
223
|
+
}
|
|
219
224
|
const participants = discData.participants || [];
|
|
220
225
|
if (participants.length === 2) {
|
|
221
226
|
return participants.includes(this.botUserId) && participants.includes(senderId);
|
|
@@ -223,16 +228,17 @@ class MessageClassifier {
|
|
|
223
228
|
return false;
|
|
224
229
|
}
|
|
225
230
|
/**
|
|
226
|
-
|
|
227
|
-
|
|
231
|
+
* Check if this is a 1:1 DM with the bot (fallback - fetches discussion from API)
|
|
232
|
+
*/
|
|
228
233
|
async checkDirectMessage(discussionId, senderId) {
|
|
229
234
|
try {
|
|
230
|
-
const response = await this.botConnection.client.socket.request(
|
|
235
|
+
const response = await this.botConnection.client.socket.request('messenger.load_discussions', [[discussionId]]);
|
|
231
236
|
if (response && response[discussionId]) {
|
|
232
237
|
const discussion = response[discussionId];
|
|
233
238
|
// Activity discussions are never DMs
|
|
234
|
-
if (discussion.linked_activity)
|
|
239
|
+
if (discussion.linked_activity) {
|
|
235
240
|
return false;
|
|
241
|
+
}
|
|
236
242
|
const participants = discussion.participants || [];
|
|
237
243
|
// 1:1 = exactly 2 participants: sender and bot
|
|
238
244
|
if (participants.length === 2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-classifier.js","sourceRoot":"","sources":["../../../src/bot/services/message-classifier.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAaH,MAAa,iBAAiB;IAKlB;IACA;IACA;
|
|
1
|
+
{"version":3,"file":"message-classifier.js","sourceRoot":"","sources":["../../../src/bot/services/message-classifier.ts"],"names":[],"mappings":"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"}
|