@hailer/mcp 1.1.16 → 1.1.17-beta.0
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/CLAUDE.md +117 -320
- package/.claude/commands/app-squad.md +86 -90
- package/.claude/commands/audit-squad.md +19 -19
- package/.claude/commands/autoplan.md +3 -3
- package/.claude/commands/cleanup-squad.md +16 -16
- package/.claude/commands/config-squad.md +30 -30
- package/.claude/commands/crud-squad.md +23 -23
- package/.claude/commands/data-squad.md +21 -21
- package/.claude/commands/debug-squad.md +44 -44
- package/.claude/commands/doc-squad.md +16 -16
- package/.claude/commands/help:agents.md +130 -99
- package/.claude/commands/help:commands.md +15 -15
- package/.claude/commands/help:faq.md +17 -17
- package/.claude/commands/help:plugins.md +1 -1
- package/.claude/commands/help:skills.md +18 -24
- package/.claude/commands/hotfix-squad.md +22 -22
- package/.claude/commands/integration-squad.md +22 -22
- package/.claude/commands/janitor-squad.md +31 -31
- package/.claude/commands/learn-auto.md +5 -5
- package/.claude/commands/learn.md +12 -20
- package/.claude/commands/onboard-squad.md +39 -49
- package/.claude/commands/plan-workspace.md +2 -2
- package/.claude/commands/publish.md +32 -37
- package/.claude/commands/review-squad.md +27 -27
- package/.claude/commands/stats.md +26 -12
- package/.claude/commands/swarm.md +25 -25
- package/.claude/skills/chrome-mcp-reference/SKILL.md +5 -0
- package/.claude/skills/hailer-api-client/SKILL.md +55 -16
- package/.claude/skills/hailer-app-builder/SKILL.md +4 -270
- package/.claude/skills/hailer-apps-pictures/SKILL.md +3 -3
- package/.claude/skills/hailer-design-system/SKILL.md +96 -4
- package/.claude/skills/hailer-monolith-automations/SKILL.md +138 -116
- package/.claude/skills/hailer-permissions-system/SKILL.md +6 -9
- package/.claude/skills/hailer-project-protocol/SKILL.md +20 -110
- package/.claude/skills/integration-patterns/SKILL.md +6 -6
- package/.claude/skills/lsp-setup/SKILL.md +8 -9
- package/.claude/skills/sdk-activity-patterns/SKILL.md +238 -0
- package/.claude/skills/{SDK-document-templates → sdk-document-templates}/SKILL.md +13 -340
- package/.claude/skills/{SDK-function-fields → sdk-function-fields}/SKILL.md +8 -40
- package/.claude/skills/{SDK-insight-queries → sdk-insight-queries}/SKILL.md +114 -392
- package/.claude/skills/{SDK-ws-config-skill → sdk-ws-config-skill}/SKILL.md +79 -310
- package/.claude/skills/zapier-hailer-patterns/SKILL.md +84 -361
- package/.opencode/package-lock.json +117 -0
- package/CLAUDE.md +5 -358
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +10 -127
- package/dist/app.js.map +1 -1
- package/dist/bot/bot-manager.d.ts +3 -14
- package/dist/bot/bot-manager.d.ts.map +1 -1
- package/dist/bot/bot-manager.js +13 -4
- package/dist/bot/bot-manager.js.map +1 -1
- package/dist/bot/bot.d.ts +23 -102
- package/dist/bot/bot.d.ts.map +1 -1
- package/dist/bot/bot.js +356 -1212
- package/dist/bot/bot.js.map +1 -1
- package/dist/bot/services/bot-permissions.d.ts +50 -0
- package/dist/bot/services/bot-permissions.d.ts.map +1 -0
- package/dist/bot/services/bot-permissions.js +198 -0
- package/dist/bot/services/bot-permissions.js.map +1 -0
- package/dist/bot/services/index.d.ts +4 -2
- package/dist/bot/services/index.d.ts.map +1 -1
- package/dist/bot/services/index.js +10 -5
- package/dist/bot/services/index.js.map +1 -1
- package/dist/bot/services/message-classifier.d.ts +1 -1
- package/dist/bot/services/message-classifier.d.ts.map +1 -1
- package/dist/bot/services/message-classifier.js.map +1 -1
- package/dist/bot/services/signal-router.d.ts +32 -0
- package/dist/bot/services/signal-router.d.ts.map +1 -0
- package/dist/bot/services/signal-router.js +132 -0
- package/dist/bot/services/signal-router.js.map +1 -0
- package/dist/bot/services/system-prompt.d.ts +12 -0
- package/dist/bot/services/system-prompt.d.ts.map +1 -0
- package/dist/bot/services/system-prompt.js +93 -0
- package/dist/bot/services/system-prompt.js.map +1 -0
- package/dist/bot/services/types.d.ts +7 -34
- package/dist/bot/services/types.d.ts.map +1 -1
- package/dist/bot/services/types.js +0 -3
- package/dist/bot/services/types.js.map +1 -1
- package/dist/bot/services/workspace-refresh.d.ts +47 -0
- package/dist/bot/services/workspace-refresh.d.ts.map +1 -0
- package/dist/bot/services/workspace-refresh.js +154 -0
- package/dist/bot/services/workspace-refresh.js.map +1 -0
- package/dist/bot-config/constants.d.ts +0 -36
- package/dist/bot-config/constants.d.ts.map +1 -1
- package/dist/bot-config/constants.js +1 -76
- package/dist/bot-config/constants.js.map +1 -1
- package/dist/bot-config/context.d.ts +2 -42
- package/dist/bot-config/context.d.ts.map +1 -1
- package/dist/bot-config/context.js +13 -134
- package/dist/bot-config/context.js.map +1 -1
- package/dist/bot-config/index.d.ts +6 -15
- package/dist/bot-config/index.d.ts.map +1 -1
- package/dist/bot-config/index.js +5 -80
- package/dist/bot-config/index.js.map +1 -1
- package/dist/bot-config/loader.d.ts +16 -4
- package/dist/bot-config/loader.d.ts.map +1 -1
- package/dist/bot-config/loader.js +187 -96
- package/dist/bot-config/loader.js.map +1 -1
- package/dist/bot-config/persistence.d.ts +1 -52
- package/dist/bot-config/persistence.d.ts.map +1 -1
- package/dist/bot-config/persistence.js +3 -213
- package/dist/bot-config/persistence.js.map +1 -1
- package/dist/bot-config/state.d.ts +0 -41
- package/dist/bot-config/state.d.ts.map +1 -1
- package/dist/bot-config/state.js +0 -151
- package/dist/bot-config/state.js.map +1 -1
- package/dist/bot-config/tools.d.ts +1 -1
- package/dist/bot-config/tools.js +27 -27
- package/dist/bot-config/tools.js.map +1 -1
- package/dist/bot-config/types.d.ts +39 -32
- package/dist/bot-config/types.d.ts.map +1 -1
- package/dist/bot-config/types.js +0 -3
- package/dist/bot-config/types.js.map +1 -1
- package/dist/bot-config/webhooks.d.ts +0 -4
- package/dist/bot-config/webhooks.d.ts.map +1 -1
- package/dist/bot-config/webhooks.js +0 -13
- package/dist/bot-config/webhooks.js.map +1 -1
- package/dist/commands/seed-config.js +16 -31
- package/dist/commands/seed-config.js.map +1 -1
- package/dist/config.d.ts +0 -9
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -15
- package/dist/config.js.map +1 -1
- package/dist/mcp/hailer-clients.js +2 -2
- package/dist/mcp/hailer-clients.js.map +1 -1
- package/dist/mcp/tool-registry.d.ts +10 -115
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +39 -363
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/mcp/tools/activity.d.ts +3 -0
- package/dist/mcp/tools/activity.d.ts.map +1 -1
- package/dist/mcp/tools/activity.js +8 -1
- package/dist/mcp/tools/activity.js.map +1 -1
- package/dist/mcp/tools/app-core.d.ts +3 -0
- package/dist/mcp/tools/app-core.d.ts.map +1 -1
- package/dist/mcp/tools/app-core.js +9 -2
- package/dist/mcp/tools/app-core.js.map +1 -1
- package/dist/mcp/tools/app-marketplace.d.ts +3 -0
- package/dist/mcp/tools/app-marketplace.d.ts.map +1 -1
- package/dist/mcp/tools/app-marketplace.js +13 -1
- package/dist/mcp/tools/app-marketplace.js.map +1 -1
- package/dist/mcp/tools/app-member.d.ts +3 -0
- package/dist/mcp/tools/app-member.d.ts.map +1 -1
- package/dist/mcp/tools/app-member.js +6 -1
- package/dist/mcp/tools/app-member.js.map +1 -1
- package/dist/mcp/tools/app-scaffold.d.ts +3 -0
- package/dist/mcp/tools/app-scaffold.d.ts.map +1 -1
- package/dist/mcp/tools/app-scaffold.js +15 -11
- package/dist/mcp/tools/app-scaffold.js.map +1 -1
- package/dist/mcp/tools/company.d.ts +3 -0
- package/dist/mcp/tools/company.d.ts.map +1 -1
- package/dist/mcp/tools/company.js +5 -1
- package/dist/mcp/tools/company.js.map +1 -1
- package/dist/mcp/tools/discussion.d.ts +3 -0
- package/dist/mcp/tools/discussion.d.ts.map +1 -1
- package/dist/mcp/tools/discussion.js +13 -2
- package/dist/mcp/tools/discussion.js.map +1 -1
- package/dist/mcp/tools/file.d.ts +3 -0
- package/dist/mcp/tools/file.d.ts.map +1 -1
- package/dist/mcp/tools/file.js +6 -1
- package/dist/mcp/tools/file.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +7 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +34 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/insight.d.ts +3 -0
- package/dist/mcp/tools/insight.d.ts.map +1 -1
- package/dist/mcp/tools/insight.js +18 -8
- package/dist/mcp/tools/insight.js.map +1 -1
- package/dist/mcp/tools/user.d.ts +3 -0
- package/dist/mcp/tools/user.d.ts.map +1 -1
- package/dist/mcp/tools/user.js +6 -1
- package/dist/mcp/tools/user.js.map +1 -1
- package/dist/mcp/tools/workflow-permissions.d.ts +3 -0
- package/dist/mcp/tools/workflow-permissions.d.ts.map +1 -1
- package/dist/mcp/tools/workflow-permissions.js +8 -1
- package/dist/mcp/tools/workflow-permissions.js.map +1 -1
- package/dist/mcp/tools/workflow.d.ts +3 -0
- package/dist/mcp/tools/workflow.d.ts.map +1 -1
- package/dist/mcp/tools/workflow.js +29 -28
- package/dist/mcp/tools/workflow.js.map +1 -1
- package/dist/mcp/utils/index.d.ts +4 -11
- package/dist/mcp/utils/index.d.ts.map +1 -1
- package/dist/mcp/utils/index.js +5 -36
- package/dist/mcp/utils/index.js.map +1 -1
- package/dist/mcp/utils/role-utils.d.ts +0 -32
- package/dist/mcp/utils/role-utils.d.ts.map +1 -1
- package/dist/mcp/utils/role-utils.js +0 -73
- package/dist/mcp/utils/role-utils.js.map +1 -1
- package/dist/mcp/utils/tool-helpers.d.ts +0 -25
- package/dist/mcp/utils/tool-helpers.d.ts.map +1 -1
- package/dist/mcp/utils/tool-helpers.js +0 -34
- package/dist/mcp/utils/tool-helpers.js.map +1 -1
- package/dist/mcp/webhook-handler.d.ts +4 -34
- package/dist/mcp/webhook-handler.d.ts.map +1 -1
- package/dist/mcp/webhook-handler.js +57 -74
- package/dist/mcp/webhook-handler.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +3 -78
- package/dist/mcp-server.js.map +1 -1
- package/package.json +1 -2
- package/.claude/agents/agent-ada-skill-builder.md +0 -94
- package/.claude/agents/agent-alejandro-function-fields.md +0 -342
- package/.claude/agents/agent-bjorn-config-audit.md +0 -103
- package/.claude/agents/agent-builder-agent-creator.md +0 -130
- package/.claude/agents/agent-code-simplifier.md +0 -53
- package/.claude/agents/agent-dmitri-activity-crud.md +0 -159
- package/.claude/agents/agent-giuseppe-app-builder.md +0 -208
- package/.claude/agents/agent-gunther-mcp-tools.md +0 -39
- package/.claude/agents/agent-helga-workflow-config.md +0 -204
- package/.claude/agents/agent-igor-activity-mover-automation.md +0 -125
- package/.claude/agents/agent-ingrid-doc-templates.md +0 -261
- package/.claude/agents/agent-ivan-monolith.md +0 -154
- package/.claude/agents/agent-kenji-data-reader.md +0 -86
- package/.claude/agents/agent-lars-code-inspector.md +0 -102
- package/.claude/agents/agent-marco-mockup-builder.md +0 -110
- package/.claude/agents/agent-marcus-api-documenter.md +0 -323
- package/.claude/agents/agent-marketplace-publisher.md +0 -280
- package/.claude/agents/agent-marketplace-reviewer.md +0 -309
- package/.claude/agents/agent-permissions-handler.md +0 -208
- package/.claude/agents/agent-simple-writer.md +0 -48
- package/.claude/agents/agent-svetlana-code-review.md +0 -171
- package/.claude/agents/agent-tanya-test-runner.md +0 -333
- package/.claude/agents/agent-ui-designer.md +0 -100
- package/.claude/agents/agent-viktor-sql-insights.md +0 -212
- package/.claude/agents/agent-web-search.md +0 -55
- package/.claude/agents/agent-yevgeni-discussions.md +0 -45
- package/.claude/agents/agent-zara-zapier.md +0 -159
- package/.claude/skills/SDK-activity-patterns/SKILL.md +0 -428
- package/.claude/skills/SDK-generate-skill/SKILL.md +0 -92
- package/.claude/skills/SDK-init-skill/SKILL.md +0 -127
- package/.claude/skills/agent-structure/SKILL.md +0 -98
- package/.claude/skills/delegation-routing/SKILL.md +0 -202
- package/.claude/skills/frontend-design/SKILL.md +0 -254
- package/.claude/skills/hailer-activity-mover/SKILL.md +0 -213
- package/.claude/skills/hailer-rest-api/SKILL.md +0 -61
- package/.claude/skills/hailer-rest-api/hailer-activities.md +0 -184
- package/.claude/skills/hailer-rest-api/hailer-admin.md +0 -473
- package/.claude/skills/hailer-rest-api/hailer-calendar.md +0 -256
- package/.claude/skills/hailer-rest-api/hailer-feed.md +0 -249
- package/.claude/skills/hailer-rest-api/hailer-insights.md +0 -195
- package/.claude/skills/hailer-rest-api/hailer-messaging.md +0 -276
- package/.claude/skills/hailer-rest-api/hailer-workflows.md +0 -283
- package/.claude/skills/insight-join-patterns/SKILL.md +0 -174
- package/.claude/skills/json-only-output/SKILL.md +0 -72
- package/.claude/skills/mcp-direct-tools/SKILL.md +0 -153
- package/.claude/skills/optional-parameters/SKILL.md +0 -72
- package/.claude/skills/tool-parameter-usage/SKILL.md +0 -126
- package/.claude/skills/tool-response-verification/SKILL.md +0 -92
- package/.opencode/agent/agent-ada-skill-builder.md +0 -35
- package/.opencode/agent/agent-alejandro-function-fields.md +0 -39
- package/.opencode/agent/agent-bjorn-config-audit.md +0 -36
- package/.opencode/agent/agent-builder-agent-creator.md +0 -39
- package/.opencode/agent/agent-code-simplifier.md +0 -31
- package/.opencode/agent/agent-dmitri-activity-crud.md +0 -40
- package/.opencode/agent/agent-giuseppe-app-builder.md +0 -37
- package/.opencode/agent/agent-gunther-mcp-tools.md +0 -39
- package/.opencode/agent/agent-helga-workflow-config.md +0 -204
- package/.opencode/agent/agent-igor-activity-mover-automation.md +0 -46
- package/.opencode/agent/agent-ingrid-doc-templates.md +0 -39
- package/.opencode/agent/agent-ivan-monolith.md +0 -46
- package/.opencode/agent/agent-kenji-data-reader.md +0 -53
- package/.opencode/agent/agent-lars-code-inspector.md +0 -28
- package/.opencode/agent/agent-marco-mockup-builder.md +0 -42
- package/.opencode/agent/agent-marcus-api-documenter.md +0 -53
- package/.opencode/agent/agent-marketplace-publisher.md +0 -44
- package/.opencode/agent/agent-marketplace-reviewer.md +0 -42
- package/.opencode/agent/agent-permissions-handler.md +0 -50
- package/.opencode/agent/agent-simple-writer.md +0 -45
- package/.opencode/agent/agent-svetlana-code-review.md +0 -39
- package/.opencode/agent/agent-tanya-test-runner.md +0 -57
- package/.opencode/agent/agent-ui-designer.md +0 -56
- package/.opencode/agent/agent-viktor-sql-insights.md +0 -34
- package/.opencode/agent/agent-web-search.md +0 -42
- package/.opencode/agent/agent-yevgeni-discussions.md +0 -37
- package/.opencode/agent/agent-zara-zapier.md +0 -53
- package/.opencode/commands/app-squad.md +0 -135
- package/.opencode/commands/audit-squad.md +0 -158
- package/.opencode/commands/autoplan.md +0 -563
- package/.opencode/commands/cleanup-squad.md +0 -98
- package/.opencode/commands/config-squad.md +0 -106
- package/.opencode/commands/crud-squad.md +0 -87
- package/.opencode/commands/data-squad.md +0 -97
- package/.opencode/commands/debug-squad.md +0 -303
- package/.opencode/commands/doc-squad.md +0 -65
- package/.opencode/commands/handoff.md +0 -137
- package/.opencode/commands/health.md +0 -49
- package/.opencode/commands/help-agents.md +0 -151
- package/.opencode/commands/help-commands.md +0 -32
- package/.opencode/commands/help-faq.md +0 -29
- package/.opencode/commands/help-plugins.md +0 -28
- package/.opencode/commands/help-skills.md +0 -7
- package/.opencode/commands/help-tools.md +0 -40
- package/.opencode/commands/help.md +0 -28
- package/.opencode/commands/hotfix-squad.md +0 -112
- package/.opencode/commands/integration-squad.md +0 -82
- package/.opencode/commands/janitor-squad.md +0 -167
- package/.opencode/commands/learn-auto.md +0 -120
- package/.opencode/commands/learn.md +0 -120
- package/.opencode/commands/mcp-list.md +0 -27
- package/.opencode/commands/onboard-squad.md +0 -140
- package/.opencode/commands/plan-workspace.md +0 -732
- package/.opencode/commands/prd.md +0 -131
- package/.opencode/commands/project-status.md +0 -82
- package/.opencode/commands/publish.md +0 -138
- package/.opencode/commands/recap.md +0 -69
- package/.opencode/commands/restore.md +0 -64
- package/.opencode/commands/review-squad.md +0 -152
- package/.opencode/commands/save.md +0 -24
- package/.opencode/commands/stats.md +0 -19
- package/.opencode/commands/swarm.md +0 -210
- package/.opencode/commands/tool-builder.md +0 -39
- package/.opencode/commands/ws-pull.md +0 -44
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SignalRouter — rate limiting, dedup, discussion state, engagement logic.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from Bot to keep signal handling separate from LLM processing.
|
|
5
|
+
*/
|
|
6
|
+
import { Logger } from '../../lib/logger';
|
|
7
|
+
import { IncomingMessage, DiscussionState, ResponseMode } from './types';
|
|
8
|
+
export declare class SignalRouter {
|
|
9
|
+
private logger;
|
|
10
|
+
private processedMessageIds;
|
|
11
|
+
private signalTimestampsPerDiscussion;
|
|
12
|
+
private globalSignalTimestamps;
|
|
13
|
+
private discussionStates;
|
|
14
|
+
/** Discussions currently being processed (concurrency guard) */
|
|
15
|
+
readonly processingDiscussions: Set<string>;
|
|
16
|
+
constructor(logger: Logger);
|
|
17
|
+
/** Returns true if this message was already seen. Adds it to the set if not. */
|
|
18
|
+
isDuplicate(dedupKey: string): boolean;
|
|
19
|
+
removeDedupKey(key: string): void;
|
|
20
|
+
private pruneDedup;
|
|
21
|
+
/** Returns true if the message should be dropped due to rate limiting. */
|
|
22
|
+
isRateLimited(discussionId: string): boolean;
|
|
23
|
+
getOrCreateState(discussionId: string): DiscussionState;
|
|
24
|
+
getState(discussionId: string): DiscussionState | undefined;
|
|
25
|
+
get disengageThreshold(): number;
|
|
26
|
+
/** Check if a message should trigger a bot response based on response mode. */
|
|
27
|
+
checkTrigger(message: IncomingMessage, responseMode: ResponseMode): boolean;
|
|
28
|
+
/** Check if a message is an explicit trigger (mention, reply, or DM). */
|
|
29
|
+
isExplicitTrigger(message: IncomingMessage): boolean;
|
|
30
|
+
clear(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=signal-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-router.d.ts","sourceRoot":"","sources":["../../../src/bot/services/signal-router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQzE,qBAAa,YAAY;IASX,OAAO,CAAC,MAAM;IAR1B,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,6BAA6B,CAA+B;IACpE,OAAO,CAAC,sBAAsB,CAAgB;IAC9C,OAAO,CAAC,gBAAgB,CAAsC;IAE9D,gEAAgE;IAChE,QAAQ,CAAC,qBAAqB,cAAqB;gBAE/B,MAAM,EAAE,MAAM;IAIlC,gFAAgF;IAChF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAOtC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIjC,OAAO,CAAC,UAAU;IASlB,0EAA0E;IAC1E,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAgC5C,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe;IA0BvD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI3D,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAID,+EAA+E;IAC/E,YAAY,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO;IAW3E,yEAAyE;IACzE,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO;IAMpD,KAAK,IAAI,IAAI;CASd"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SignalRouter — rate limiting, dedup, discussion state, engagement logic.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from Bot to keep signal handling separate from LLM processing.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SignalRouter = void 0;
|
|
9
|
+
const RATE_LIMIT_WINDOW = 60_000;
|
|
10
|
+
const RATE_LIMIT_PER_DISCUSSION = 30;
|
|
11
|
+
const RATE_LIMIT_GLOBAL = 100;
|
|
12
|
+
const DISENGAGE_THRESHOLD = 5;
|
|
13
|
+
const MAX_DISCUSSION_STATES = 200;
|
|
14
|
+
class SignalRouter {
|
|
15
|
+
logger;
|
|
16
|
+
processedMessageIds = new Set();
|
|
17
|
+
signalTimestampsPerDiscussion = new Map();
|
|
18
|
+
globalSignalTimestamps = [];
|
|
19
|
+
discussionStates = new Map();
|
|
20
|
+
/** Discussions currently being processed (concurrency guard) */
|
|
21
|
+
processingDiscussions = new Set();
|
|
22
|
+
constructor(logger) {
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
}
|
|
25
|
+
// ===== DEDUP =====
|
|
26
|
+
/** Returns true if this message was already seen. Adds it to the set if not. */
|
|
27
|
+
isDuplicate(dedupKey) {
|
|
28
|
+
if (this.processedMessageIds.has(dedupKey))
|
|
29
|
+
return true;
|
|
30
|
+
this.processedMessageIds.add(dedupKey);
|
|
31
|
+
this.pruneDedup();
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
removeDedupKey(key) {
|
|
35
|
+
this.processedMessageIds.delete(key);
|
|
36
|
+
}
|
|
37
|
+
pruneDedup() {
|
|
38
|
+
if (this.processedMessageIds.size > 500) {
|
|
39
|
+
const ids = Array.from(this.processedMessageIds);
|
|
40
|
+
this.processedMessageIds = new Set(ids.slice(-250));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// ===== RATE LIMITING =====
|
|
44
|
+
/** Returns true if the message should be dropped due to rate limiting. */
|
|
45
|
+
isRateLimited(discussionId) {
|
|
46
|
+
const now = Date.now();
|
|
47
|
+
const cutoff = now - RATE_LIMIT_WINDOW;
|
|
48
|
+
// Per-discussion (check only, don't push yet)
|
|
49
|
+
let discTimestamps = this.signalTimestampsPerDiscussion.get(discussionId);
|
|
50
|
+
if (!discTimestamps) {
|
|
51
|
+
discTimestamps = [];
|
|
52
|
+
this.signalTimestampsPerDiscussion.set(discussionId, discTimestamps);
|
|
53
|
+
}
|
|
54
|
+
while (discTimestamps.length > 0 && discTimestamps[0] < cutoff)
|
|
55
|
+
discTimestamps.shift();
|
|
56
|
+
if (discTimestamps.length >= RATE_LIMIT_PER_DISCUSSION) {
|
|
57
|
+
this.logger.warn('Per-discussion rate limit exceeded', { discussionId, count: discTimestamps.length });
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
// Global
|
|
61
|
+
while (this.globalSignalTimestamps.length > 0 && this.globalSignalTimestamps[0] < cutoff)
|
|
62
|
+
this.globalSignalTimestamps.shift();
|
|
63
|
+
if (this.globalSignalTimestamps.length >= RATE_LIMIT_GLOBAL) {
|
|
64
|
+
this.logger.warn('Global rate limit exceeded', { count: this.globalSignalTimestamps.length });
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
// Both checks passed — now record the timestamps
|
|
68
|
+
discTimestamps.push(now);
|
|
69
|
+
this.globalSignalTimestamps.push(now);
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
// ===== DISCUSSION STATE =====
|
|
73
|
+
getOrCreateState(discussionId) {
|
|
74
|
+
let state = this.discussionStates.get(discussionId);
|
|
75
|
+
if (state) {
|
|
76
|
+
// LRU: move to end
|
|
77
|
+
this.discussionStates.delete(discussionId);
|
|
78
|
+
this.discussionStates.set(discussionId, state);
|
|
79
|
+
return state;
|
|
80
|
+
}
|
|
81
|
+
// Evict oldest if at capacity
|
|
82
|
+
if (this.discussionStates.size >= MAX_DISCUSSION_STATES) {
|
|
83
|
+
const oldest = this.discussionStates.keys().next().value;
|
|
84
|
+
if (oldest)
|
|
85
|
+
this.discussionStates.delete(oldest);
|
|
86
|
+
}
|
|
87
|
+
state = {
|
|
88
|
+
contextBuffer: [],
|
|
89
|
+
abortController: null,
|
|
90
|
+
state: 'idle',
|
|
91
|
+
consecutiveNonResponses: 0,
|
|
92
|
+
lastProgressTime: 0,
|
|
93
|
+
};
|
|
94
|
+
this.discussionStates.set(discussionId, state);
|
|
95
|
+
return state;
|
|
96
|
+
}
|
|
97
|
+
getState(discussionId) {
|
|
98
|
+
return this.discussionStates.get(discussionId);
|
|
99
|
+
}
|
|
100
|
+
get disengageThreshold() {
|
|
101
|
+
return DISENGAGE_THRESHOLD;
|
|
102
|
+
}
|
|
103
|
+
// ===== ENGAGEMENT =====
|
|
104
|
+
/** Check if a message should trigger a bot response based on response mode. */
|
|
105
|
+
checkTrigger(message, responseMode) {
|
|
106
|
+
if (message.isPrivateDiscussion)
|
|
107
|
+
return true;
|
|
108
|
+
switch (responseMode) {
|
|
109
|
+
case 'mention_only': return message.isMention;
|
|
110
|
+
case 'reply_only': return message.isReplyToBot;
|
|
111
|
+
case 'mention_or_reply': return message.isMention || message.isReplyToBot;
|
|
112
|
+
case 'always':
|
|
113
|
+
default: return true;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/** Check if a message is an explicit trigger (mention, reply, or DM). */
|
|
117
|
+
isExplicitTrigger(message) {
|
|
118
|
+
return message.isMention || message.isReplyToBot || message.isPrivateDiscussion;
|
|
119
|
+
}
|
|
120
|
+
// ===== CLEANUP =====
|
|
121
|
+
clear() {
|
|
122
|
+
for (const [, state] of this.discussionStates) {
|
|
123
|
+
state.abortController?.abort();
|
|
124
|
+
}
|
|
125
|
+
this.discussionStates.clear();
|
|
126
|
+
this.signalTimestampsPerDiscussion.clear();
|
|
127
|
+
this.globalSignalTimestamps = [];
|
|
128
|
+
this.processingDiscussions.clear();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.SignalRouter = SignalRouter;
|
|
132
|
+
//# sourceMappingURL=signal-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-router.js","sourceRoot":"","sources":["../../../src/bot/services/signal-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System prompt builder for bot instances.
|
|
3
|
+
*/
|
|
4
|
+
import { HailerV2CoreInitResponse } from '../../mcp/utils/types';
|
|
5
|
+
/** Build the full system prompt for the LLM. */
|
|
6
|
+
export declare function buildSystemPrompt(opts: {
|
|
7
|
+
init: HailerV2CoreInitResponse | null;
|
|
8
|
+
userId: string;
|
|
9
|
+
workspaceOverview: string;
|
|
10
|
+
customPrompt?: string;
|
|
11
|
+
}): string;
|
|
12
|
+
//# sourceMappingURL=system-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../../src/bot/services/system-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAYjE,gDAAgD;AAChD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,IAAI,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAgFT"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* System prompt builder for bot instances.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildSystemPrompt = buildSystemPrompt;
|
|
7
|
+
/** Resolve the bot's display name from init data. */
|
|
8
|
+
function getBotDisplayName(init, userId) {
|
|
9
|
+
if (!init?.users || !userId)
|
|
10
|
+
return 'Assistant';
|
|
11
|
+
const user = init.users[userId];
|
|
12
|
+
if (!user)
|
|
13
|
+
return 'Assistant';
|
|
14
|
+
const name = user.display_name || user.fullName ||
|
|
15
|
+
`${user.firstname || ''} ${user.lastname || ''}`.trim();
|
|
16
|
+
return name || 'Assistant';
|
|
17
|
+
}
|
|
18
|
+
/** Build the full system prompt for the LLM. */
|
|
19
|
+
function buildSystemPrompt(opts) {
|
|
20
|
+
const wsName = opts.init?.network?.name || 'Workspace';
|
|
21
|
+
const botName = getBotDisplayName(opts.init, opts.userId);
|
|
22
|
+
const identity = `<bot-identity>
|
|
23
|
+
Your user ID: ${opts.userId}
|
|
24
|
+
Your display name: ${botName}
|
|
25
|
+
Workspace: ${wsName}
|
|
26
|
+
</bot-identity>`;
|
|
27
|
+
const platformRules = `<platform-rules>
|
|
28
|
+
- Use tools to answer questions — don't guess or make up data.
|
|
29
|
+
- When a tool call fails, tell the user what failed and why. Never silently try alternatives.
|
|
30
|
+
- For bulk operations, batch into groups of 25-50 per tool call.
|
|
31
|
+
- NEVER output raw URLs like https://app.hailer.com/...
|
|
32
|
+
|
|
33
|
+
HAILERTAG LINKING (mandatory — no exceptions):
|
|
34
|
+
- EVERY activity, user, or discussion reference MUST be a clickable link: [Display Name](objectId)
|
|
35
|
+
- Examples: [AC Milan deal](691ffe654217e9e8434e578a), [John Smith](691ffe654217e9e8434e5123)
|
|
36
|
+
- Tool responses include both names and IDs — ALWAYS use them to create links.
|
|
37
|
+
- If you have an ID and a name, link it. No bold text, no plain text, no raw IDs.
|
|
38
|
+
- NEVER use links for workflows, phases, teams, or groups — those don't support linking. Use plain text names.
|
|
39
|
+
- NEVER output bare 24-character hex IDs.
|
|
40
|
+
|
|
41
|
+
DISCUSSION PRIVACY:
|
|
42
|
+
- Private DMs with other users are confidential. Never reveal their existence, IDs, or content.
|
|
43
|
+
- Activity discussions are open — check them freely. The system enforces permissions automatically.
|
|
44
|
+
- When asked about shared discussions with someone, check activity discussions for that person. If a tool call is denied, just skip that discussion and move on — don't explain the permission system to the user.
|
|
45
|
+
</platform-rules>`;
|
|
46
|
+
const now = new Date();
|
|
47
|
+
const isoDate = now.toISOString().split('T')[0];
|
|
48
|
+
const dayOfWeek = now.getUTCDay();
|
|
49
|
+
const weekNum = Math.ceil(((+now - +new Date(now.getFullYear(), 0, 1)) / 86400000 + new Date(now.getFullYear(), 0, 1).getDay() + 1) / 7);
|
|
50
|
+
const dateContext = `<current-date>
|
|
51
|
+
Today: ${now.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })} (${isoDate}, ISO week ${weekNum}, day ${dayOfWeek})
|
|
52
|
+
Time: ${now.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit', hour12: false, timeZone: 'Europe/Helsinki' })} Europe/Helsinki
|
|
53
|
+
Year: ${now.getFullYear()}
|
|
54
|
+
|
|
55
|
+
DATE HANDLING — CRITICAL:
|
|
56
|
+
- The current year is ${now.getFullYear()}. When no year is specified, ALWAYS use ${now.getFullYear()} (or ${now.getFullYear() + 1} if the date has already passed this year).
|
|
57
|
+
- European/Finnish dates use DD.MM.YYYY or DD.M.YYYY format (day first, NOT month first). "18.7.2026" = July 18, 2026. "3.12" = December 3. Never confuse day and month.
|
|
58
|
+
- Resolve relative dates in any language (Finnish, Swedish, English, etc.) by calculating from today's date.
|
|
59
|
+
- For activity date fields, always output YYYY-MM-DD format. The system auto-converts to timestamps.
|
|
60
|
+
- If a date is ambiguous, ask the user to clarify.
|
|
61
|
+
</current-date>`;
|
|
62
|
+
const wsContext = `<workspace-context>
|
|
63
|
+
${opts.workspaceOverview}
|
|
64
|
+
</workspace-context>`;
|
|
65
|
+
if (opts.customPrompt?.trim()) {
|
|
66
|
+
const body = opts.customPrompt.trim()
|
|
67
|
+
.replace(/\{wsName\}/g, wsName)
|
|
68
|
+
.replace(/\{userId\}/g, opts.userId)
|
|
69
|
+
.replace(/\{botName\}/g, botName);
|
|
70
|
+
return `${body}\n\n${platformRules}\n\n${identity}\n\n${dateContext}\n\n${wsContext}`;
|
|
71
|
+
}
|
|
72
|
+
const defaultBehavior = `<behavior>
|
|
73
|
+
- Be concise. Short answers, no filler.
|
|
74
|
+
- Never list your capabilities unprompted.
|
|
75
|
+
- Never use emojis unless the user does first.
|
|
76
|
+
- ACT FIRST. When the user asks for something, use your tools and get the answer. Do NOT ask "would you like me to check?" or list the steps you could take. Just do it. You have 10 tool iterations — use them.
|
|
77
|
+
- Only ask for clarification when the request is genuinely ambiguous (e.g. which workflow, which player).
|
|
78
|
+
- When showing data, use clean formatting. Don't over-explain.
|
|
79
|
+
- Always reference actual workspace data — never speak in generic terms.
|
|
80
|
+
</behavior>`;
|
|
81
|
+
return `You are a workspace assistant for "${wsName}" on Hailer.
|
|
82
|
+
|
|
83
|
+
${identity}
|
|
84
|
+
|
|
85
|
+
${platformRules}
|
|
86
|
+
|
|
87
|
+
${defaultBehavior}
|
|
88
|
+
|
|
89
|
+
${dateContext}
|
|
90
|
+
|
|
91
|
+
${wsContext}`;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=system-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../src/bot/services/system-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
* Shared types for bot service layer.
|
|
5
5
|
* These are decoupled from the agent system's types.
|
|
6
6
|
*/
|
|
7
|
+
export type HailerSignalType = 'activities.updated' | 'activities.created' | 'activities.deleted' | 'discussion.message' | 'messenger.new' | 'user.joined' | 'user.left' | 'workspace.updated' | 'process.updated' | 'cache.invalidate' | 'company.new_invitation';
|
|
8
|
+
export interface HailerSignal {
|
|
9
|
+
type: HailerSignalType;
|
|
10
|
+
data: Record<string, unknown>;
|
|
11
|
+
timestamp: number;
|
|
12
|
+
workspaceId?: string;
|
|
13
|
+
}
|
|
7
14
|
/** Response from v3.discussion.message.latest */
|
|
8
15
|
export interface MessageLatestResponse {
|
|
9
16
|
messages: HailerMessage[];
|
|
@@ -128,40 +135,6 @@ export interface DiscussionState {
|
|
|
128
135
|
consecutiveNonResponses: number;
|
|
129
136
|
lastProgressTime: number;
|
|
130
137
|
}
|
|
131
|
-
export interface SessionMetrics {
|
|
132
|
-
inputTokens: number;
|
|
133
|
-
outputTokens: number;
|
|
134
|
-
cacheCreationTokens: number;
|
|
135
|
-
cacheReadTokens: number;
|
|
136
|
-
toolCalls: number;
|
|
137
|
-
writeOperations: number;
|
|
138
|
-
messagesProcessed: number;
|
|
139
|
-
responsesPosted: number;
|
|
140
|
-
apiCalls: number;
|
|
141
|
-
}
|
|
142
|
-
/** Detail about a write operation */
|
|
143
|
-
export interface WriteDetail {
|
|
144
|
-
tool: string;
|
|
145
|
-
what: string;
|
|
146
|
-
targetId?: string;
|
|
147
|
-
}
|
|
148
|
-
export interface ActivitySession {
|
|
149
|
-
activityId: string;
|
|
150
|
-
activityName: string;
|
|
151
|
-
discussionId: string;
|
|
152
|
-
workspaceId: string;
|
|
153
|
-
startTime: number;
|
|
154
|
-
lastActivityTime: number;
|
|
155
|
-
metrics: SessionMetrics;
|
|
156
|
-
actions: string[];
|
|
157
|
-
previousLogId: string | null;
|
|
158
|
-
conversation: string[];
|
|
159
|
-
writeDetails: WriteDetail[];
|
|
160
|
-
triggerRequest: string | null;
|
|
161
|
-
requestedBy: string | null;
|
|
162
|
-
requestedById: string | null;
|
|
163
|
-
}
|
|
164
|
-
export declare const SESSION_IDLE_TIMEOUT = 60000;
|
|
165
138
|
/** MCP tool result from server */
|
|
166
139
|
export interface McpToolResult {
|
|
167
140
|
content?: Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/bot/services/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/bot/services/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,MAAM,gBAAgB,GACxB,oBAAoB,GACpB,oBAAoB,GACpB,oBAAoB,GACpB,oBAAoB,GACpB,eAAe,GACf,aAAa,GACb,WAAW,GACX,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,wBAAwB,CAAC;AAE7B,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,iDAAiD;AACjD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,sCAAsC;AACtC,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAID,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,MAAM,EAAE;YACN,OAAO,EAAE;gBACP,CAAC,MAAM,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;gBACzF,CAAC,MAAM,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;gBAClG,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC3E,CAAC,MAAM,EAAE,uCAAuC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC1F,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;aAC7C,CAAC;SACH,CAAC;KACH,CAAC;IACF,cAAc,CAAC,EAAE;QACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;YACxB,EAAE,EAAE,MAAM,CAAC;YACX,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;QACH,KAAK,EAAE,KAAK,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;QACH,OAAO,CAAC,EAAE;YACR,SAAS,CAAC,EAAE,KAAK,CAAC;gBAAE,GAAG,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAClD,CAAC;KACH,CAAC;CACH;AAID,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,cAAc,GAAG,YAAY,GAAG,kBAAkB,CAAC;AAEzF,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAED,8CAA8C;AAC9C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iDAAiD;AACjD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,eAAe,EAAE,CAAC;IACjC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAID,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD;AAED,uCAAuC;AACvC,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC"}
|
|
@@ -6,7 +6,4 @@
|
|
|
6
6
|
* These are decoupled from the agent system's types.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.SESSION_IDLE_TIMEOUT = void 0;
|
|
10
|
-
// ===== CONSTANTS =====
|
|
11
|
-
exports.SESSION_IDLE_TIMEOUT = 60_000; // 60 seconds
|
|
12
9
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/bot/services/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/bot/services/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkspaceRefresh — debounced workspace data refresh from Hailer signals.
|
|
3
|
+
*
|
|
4
|
+
* When process.updated, workspace.updated, or cache.invalidate signals fire,
|
|
5
|
+
* schedules a single debounced API call to re-fetch and rebuild caches.
|
|
6
|
+
*/
|
|
7
|
+
import { Logger } from '../../lib/logger';
|
|
8
|
+
import { HailerClient } from '../../mcp/hailer-clients';
|
|
9
|
+
import { HailerV2CoreInitResponse } from '../../mcp/utils/types';
|
|
10
|
+
import { WorkspaceCache } from '../../mcp/workspace-cache';
|
|
11
|
+
import { UserContext } from '../../mcp/UserContextCache';
|
|
12
|
+
import { BotPermissions } from './bot-permissions';
|
|
13
|
+
export interface WorkspaceState {
|
|
14
|
+
init: HailerV2CoreInitResponse;
|
|
15
|
+
workspaceCache: WorkspaceCache;
|
|
16
|
+
workspaceOverview: string;
|
|
17
|
+
workspaceId: string | undefined;
|
|
18
|
+
}
|
|
19
|
+
export declare class WorkspaceRefresh {
|
|
20
|
+
private logger;
|
|
21
|
+
private refreshTimer;
|
|
22
|
+
private refreshDirty;
|
|
23
|
+
private refreshScope;
|
|
24
|
+
private isRefreshing;
|
|
25
|
+
private refreshQueued;
|
|
26
|
+
constructor(logger: Logger);
|
|
27
|
+
/** Schedule a debounced refresh. Scopes: 'processes', 'network', 'full'. */
|
|
28
|
+
schedule(scope: 'processes' | 'network' | 'full'): void;
|
|
29
|
+
/** Set the callback that does the actual refresh. */
|
|
30
|
+
private onRefresh;
|
|
31
|
+
/** Wire up the refresh handler. */
|
|
32
|
+
setHandler(handler: (scopes: Set<string>) => Promise<void>): void;
|
|
33
|
+
private execute;
|
|
34
|
+
/** Cancel pending refresh. */
|
|
35
|
+
cancel(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Perform the actual data refresh: fetch fresh init, rebuild caches.
|
|
38
|
+
* Static helper so bot.ts can use it in the handler callback.
|
|
39
|
+
*/
|
|
40
|
+
static refresh(client: HailerClient, scopes: Set<string>, currentInit: HailerV2CoreInitResponse, configWorkspaceId: string | undefined, permissions: BotPermissions, userContext: UserContext | null, logger: Logger): Promise<WorkspaceState>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Backfill workspaceCache.usersById with entries from network.members
|
|
44
|
+
* that are missing from init.users (partial user list).
|
|
45
|
+
*/
|
|
46
|
+
export declare function backfillWorkspaceCacheMembers(workspaceCache: WorkspaceCache, init: HailerV2CoreInitResponse, logger: Logger): void;
|
|
47
|
+
//# sourceMappingURL=workspace-refresh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-refresh.d.ts","sourceRoot":"","sources":["../../../src/bot/services/workspace-refresh.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAA0B,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAwB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,wBAAwB,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED,qBAAa,gBAAgB;IAQzB,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;gBAGpB,MAAM,EAAE,MAAM;IAGxB,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI;IAYvD,qDAAqD;IACrD,OAAO,CAAC,SAAS,CAAyD;IAE1E,mCAAmC;IACnC,UAAU,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;YAInD,OAAO;IAyBrB,8BAA8B;IAC9B,MAAM,IAAI,IAAI;IAOd;;;OAGG;WACU,OAAO,CAClB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EACnB,WAAW,EAAE,wBAAwB,EACrC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,WAAW,EAAE,cAAc,EAC3B,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,CAAC;CA6C3B;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,wBAAwB,EAC9B,MAAM,EAAE,MAAM,GACb,IAAI,CAwBN"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WorkspaceRefresh — debounced workspace data refresh from Hailer signals.
|
|
4
|
+
*
|
|
5
|
+
* When process.updated, workspace.updated, or cache.invalidate signals fire,
|
|
6
|
+
* schedules a single debounced API call to re-fetch and rebuild caches.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.WorkspaceRefresh = void 0;
|
|
10
|
+
exports.backfillWorkspaceCacheMembers = backfillWorkspaceCacheMembers;
|
|
11
|
+
const types_1 = require("../../mcp/utils/types");
|
|
12
|
+
const workspace_cache_1 = require("../../mcp/workspace-cache");
|
|
13
|
+
const workspace_overview_1 = require("../workspace-overview");
|
|
14
|
+
class WorkspaceRefresh {
|
|
15
|
+
logger;
|
|
16
|
+
refreshTimer = null;
|
|
17
|
+
refreshDirty = false;
|
|
18
|
+
refreshScope = new Set();
|
|
19
|
+
isRefreshing = false;
|
|
20
|
+
refreshQueued = false;
|
|
21
|
+
constructor(logger) {
|
|
22
|
+
this.logger = logger;
|
|
23
|
+
}
|
|
24
|
+
/** Schedule a debounced refresh. Scopes: 'processes', 'network', 'full'. */
|
|
25
|
+
schedule(scope) {
|
|
26
|
+
this.refreshDirty = true;
|
|
27
|
+
if (scope === 'full') {
|
|
28
|
+
this.refreshScope.clear();
|
|
29
|
+
this.refreshScope.add('full');
|
|
30
|
+
}
|
|
31
|
+
else if (!this.refreshScope.has('full')) {
|
|
32
|
+
this.refreshScope.add(scope);
|
|
33
|
+
}
|
|
34
|
+
if (this.refreshTimer)
|
|
35
|
+
clearTimeout(this.refreshTimer);
|
|
36
|
+
this.refreshTimer = setTimeout(() => this.execute(), 2000);
|
|
37
|
+
}
|
|
38
|
+
/** Set the callback that does the actual refresh. */
|
|
39
|
+
onRefresh = null;
|
|
40
|
+
/** Wire up the refresh handler. */
|
|
41
|
+
setHandler(handler) {
|
|
42
|
+
this.onRefresh = handler;
|
|
43
|
+
}
|
|
44
|
+
async execute() {
|
|
45
|
+
if (!this.refreshDirty || !this.onRefresh)
|
|
46
|
+
return;
|
|
47
|
+
if (this.isRefreshing) {
|
|
48
|
+
this.refreshQueued = true;
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.isRefreshing = true;
|
|
52
|
+
this.refreshDirty = false;
|
|
53
|
+
const scopes = new Set(this.refreshScope);
|
|
54
|
+
this.refreshScope.clear();
|
|
55
|
+
this.refreshTimer = null;
|
|
56
|
+
try {
|
|
57
|
+
await this.onRefresh(scopes);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
this.logger.error('Failed to refresh workspace data', error);
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
this.isRefreshing = false;
|
|
64
|
+
if (this.refreshQueued) {
|
|
65
|
+
this.refreshQueued = false;
|
|
66
|
+
this.execute();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/** Cancel pending refresh. */
|
|
71
|
+
cancel() {
|
|
72
|
+
if (this.refreshTimer) {
|
|
73
|
+
clearTimeout(this.refreshTimer);
|
|
74
|
+
this.refreshTimer = null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Perform the actual data refresh: fetch fresh init, rebuild caches.
|
|
79
|
+
* Static helper so bot.ts can use it in the handler callback.
|
|
80
|
+
*/
|
|
81
|
+
static async refresh(client, scopes, currentInit, configWorkspaceId, permissions, userContext, logger) {
|
|
82
|
+
const isFull = scopes.has('full');
|
|
83
|
+
const keys = isFull
|
|
84
|
+
? ['processes', 'users', 'network', 'networks', 'teams', 'groups']
|
|
85
|
+
: Array.from(scopes);
|
|
86
|
+
if (keys.includes('processes') && !keys.includes('users'))
|
|
87
|
+
keys.push('users');
|
|
88
|
+
logger.debug('Refreshing workspace data', { keys });
|
|
89
|
+
const freshData = await client.socket.request('v2.core.init', [keys]);
|
|
90
|
+
(0, types_1.normalizeInitProcesses)(freshData);
|
|
91
|
+
// Merge fresh data
|
|
92
|
+
if (freshData.processes)
|
|
93
|
+
currentInit.processes = freshData.processes;
|
|
94
|
+
if (freshData.users)
|
|
95
|
+
currentInit.users = freshData.users;
|
|
96
|
+
if (freshData.network)
|
|
97
|
+
currentInit.network = freshData.network;
|
|
98
|
+
if (freshData.networks)
|
|
99
|
+
currentInit.networks = freshData.networks;
|
|
100
|
+
if (freshData.teams)
|
|
101
|
+
currentInit.teams = freshData.teams;
|
|
102
|
+
if (freshData.groups)
|
|
103
|
+
currentInit.groups = freshData.groups;
|
|
104
|
+
const workspaceId = currentInit.network?._id || configWorkspaceId;
|
|
105
|
+
// Rebuild caches
|
|
106
|
+
const workspaceCache = (0, workspace_cache_1.createWorkspaceCache)(currentInit, {
|
|
107
|
+
excludeTranslations: true,
|
|
108
|
+
excludeSystemMessages: true,
|
|
109
|
+
excludeEmptyFields: true,
|
|
110
|
+
compactUserData: true,
|
|
111
|
+
includeWorkspaceNamesInTools: false,
|
|
112
|
+
});
|
|
113
|
+
backfillWorkspaceCacheMembers(workspaceCache, currentInit, logger);
|
|
114
|
+
permissions.build(currentInit, workspaceId);
|
|
115
|
+
const workspaceOverview = (0, workspace_overview_1.generateWorkspaceOverview)(currentInit);
|
|
116
|
+
// Update UserContext
|
|
117
|
+
if (userContext) {
|
|
118
|
+
userContext.init = currentInit;
|
|
119
|
+
userContext.workspaceCache = workspaceCache;
|
|
120
|
+
}
|
|
121
|
+
return { init: currentInit, workspaceCache, workspaceOverview, workspaceId };
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.WorkspaceRefresh = WorkspaceRefresh;
|
|
125
|
+
/**
|
|
126
|
+
* Backfill workspaceCache.usersById with entries from network.members
|
|
127
|
+
* that are missing from init.users (partial user list).
|
|
128
|
+
*/
|
|
129
|
+
function backfillWorkspaceCacheMembers(workspaceCache, init, logger) {
|
|
130
|
+
const network = init.network;
|
|
131
|
+
if (!network?.members)
|
|
132
|
+
return;
|
|
133
|
+
const members = Array.isArray(network.members) ? network.members : Object.values(network.members);
|
|
134
|
+
let backfilled = 0;
|
|
135
|
+
for (const member of members) {
|
|
136
|
+
if (member.uid && !workspaceCache.usersById[member.uid]) {
|
|
137
|
+
const stub = {
|
|
138
|
+
id: member.uid,
|
|
139
|
+
firstname: member.firstname || '',
|
|
140
|
+
lastname: member.lastname || '',
|
|
141
|
+
fullName: member.firstname && member.lastname
|
|
142
|
+
? `${member.firstname} ${member.lastname}`
|
|
143
|
+
: member.firstname || member.lastname || '',
|
|
144
|
+
companies: [],
|
|
145
|
+
lastSeen: 0,
|
|
146
|
+
};
|
|
147
|
+
workspaceCache.usersById[member.uid] = stub;
|
|
148
|
+
workspaceCache.users.push(stub);
|
|
149
|
+
backfilled++;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
logger.debug('Workspace cache member backfill', { totalMembers: members.length, backfilled });
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=workspace-refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-refresh.js","sourceRoot":"","sources":["../../../src/bot/services/workspace-refresh.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Bot Configuration Constants
|
|
3
|
-
*
|
|
4
|
-
* Consolidated from mcp/tools/bot-config/constants.ts
|
|
5
3
|
*/
|
|
6
|
-
/** Legacy state file (deprecated - use .bot-config/*.json instead) */
|
|
7
|
-
export declare const LOCAL_STATE_FILE: string;
|
|
8
|
-
/** Directory for schema configs */
|
|
9
|
-
export declare const SCHEMAS_DIR: string;
|
|
10
|
-
/** Credentials file */
|
|
11
|
-
export declare const LOCAL_CREDENTIALS_FILE: string;
|
|
12
4
|
/** Bot config directory */
|
|
13
5
|
export declare const BOT_CONFIG_DIR: string;
|
|
14
|
-
/** Window for deduplicating signals */
|
|
15
|
-
export declare const SIGNAL_DEDUP_WINDOW_MS = 5000;
|
|
16
|
-
/** Debounce time for restart triggers */
|
|
17
|
-
export declare const RESTART_DEBOUNCE_MS = 500;
|
|
18
|
-
/** Workflow name patterns for Agent Directory */
|
|
19
|
-
export declare const AGENT_DIRECTORY_PATTERNS: string[];
|
|
20
|
-
/** Phase name patterns for deployed/active bots */
|
|
21
|
-
export declare const DEPLOYED_PHASE_PATTERNS: string[];
|
|
22
|
-
/** Phase name patterns for retired/disabled bots */
|
|
23
|
-
export declare const RETIRED_PHASE_PATTERNS: string[];
|
|
24
|
-
export declare const FIELD_KEY_HAILER_PROFILE: string[];
|
|
25
|
-
export declare const FIELD_KEY_EMAIL: string[];
|
|
26
|
-
export declare const FIELD_KEY_PASSWORD: string[];
|
|
27
|
-
export declare const FIELD_KEY_BOT_TYPE: string[];
|
|
28
|
-
export declare const FIELD_KEY_SCHEMA_CONFIG: string[];
|
|
29
|
-
export declare const FIELD_KEY_SYSTEM_PROMPT: string[];
|
|
30
|
-
/** Fallback activity IDs when discovery fails */
|
|
31
|
-
export declare const LEGACY_AGENT_ACTIVITY_IDS: Record<string, string>;
|
|
32
|
-
export interface BotInfo {
|
|
33
|
-
id: string;
|
|
34
|
-
name: string;
|
|
35
|
-
description: string;
|
|
36
|
-
icon: string;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Available bots - single source of truth
|
|
40
|
-
*/
|
|
41
|
-
export declare const AVAILABLE_BOTS: BotInfo[];
|
|
42
6
|
//# sourceMappingURL=constants.d.ts.map
|