crewly 1.8.9 → 1.8.12
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/config/constants.d.ts.map +1 -0
- package/config/index.d.ts.map +1 -0
- package/config/roles/_common/memory-instructions.md +6 -5
- package/config/roles/_common/wiki-instructions.md +49 -0
- package/config/roles/architect/prompt.md +2 -2
- package/config/roles/backend-developer/prompt.md +2 -2
- package/config/roles/designer/prompt.md +2 -2
- package/config/roles/developer/prompt.md +2 -2
- package/config/roles/frontend-developer/prompt.md +2 -2
- package/config/roles/fullstack-dev/prompt.md +2 -2
- package/config/roles/generalist/prompt.md +2 -2
- package/config/roles/ops/prompt.md +2 -2
- package/config/roles/orchestrator/prompt.md +135 -11
- package/config/roles/product-manager/prompt.md +2 -2
- package/config/roles/qa/prompt.md +2 -2
- package/config/roles/qa-engineer/prompt.md +2 -2
- package/config/roles/researcher/prompt.md +15 -6
- package/config/roles/sales/prompt.md +2 -2
- package/config/roles/support/prompt.md +2 -2
- package/config/roles/team-leader/prompt.md +17 -2
- package/config/roles/tpm/prompt.md +2 -2
- package/config/roles/ux-designer/prompt.md +2 -2
- package/config/skills/orchestrator/wiki-cleanup/SKILL.md +89 -0
- package/config/skills/orchestrator/wiki-cleanup/execute.sh +139 -0
- package/config/skills/orchestrator/wiki-lint/SKILL.md +75 -0
- package/config/skills/orchestrator/wiki-lint/execute.sh +66 -0
- package/config/skills/orchestrator/wiki-migrate/SKILL.md +103 -0
- package/config/skills/orchestrator/wiki-migrate/execute.sh +82 -0
- package/config/skills/orchestrator/wiki-process-queue/SKILL.md +9 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +169 -0
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +1779 -0
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +18 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +63 -0
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +5 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts +109 -0
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js +419 -4
- package/dist/backend/backend/src/controllers/wiki/wiki.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.js +11 -1
- package/dist/backend/backend/src/controllers/wiki/wiki.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +78 -3
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/index.js.orc-bak-20260529 +3130 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +513 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +1568 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.d.ts +86 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.js +147 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts +68 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js +131 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts +130 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js +263 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts +74 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js +140 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts +29 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +279 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +340 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +1176 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts +79 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js +145 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts +79 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js +218 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +16 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js +16 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts +135 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js +185 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +141 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +310 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts +91 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js +143 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts +103 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js +256 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +143 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +264 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts +13 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +91 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +135 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +1937 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-builder.service.js +1 -1
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts +429 -0
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.js +852 -0
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.js.map +1 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +171 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.js +725 -0
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +50 -0
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +45 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +34 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts +118 -0
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.js +326 -0
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.d.ts +72 -0
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.js +186 -0
- package/dist/backend/backend/src/services/wiki/wiki-backlinks.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts +27 -4
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js +133 -10
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.d.ts +18 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js +15 -4
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts +74 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js +154 -0
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.d.ts +160 -0
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.js +399 -0
- package/dist/backend/backend/src/services/wiki/wiki-cleanup.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.d.ts +182 -0
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.js +505 -0
- package/dist/backend/backend/src/services/wiki/wiki-lint.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +232 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +1416 -0
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.d.ts +51 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.js +102 -0
- package/dist/backend/backend/src/services/wiki/wiki-recent.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts +104 -0
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js +229 -0
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts +90 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.js +190 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts +164 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js +675 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js.map +1 -0
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.js +65 -0
- package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/backend/backend/src/types/auto-assign.types.d.ts +271 -0
- package/dist/backend/backend/src/types/auto-assign.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/auto-assign.types.js +136 -0
- package/dist/backend/backend/src/types/auto-assign.types.js.map +1 -0
- package/dist/backend/backend/src/types/cron-task.types.d.ts +16 -1
- package/dist/backend/backend/src/types/cron-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts +111 -0
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/esm-require.utils.js +124 -0
- package/dist/backend/backend/src/utils/esm-require.utils.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +220 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js +37 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts +56 -0
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js +91 -0
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts +159 -0
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.js +304 -0
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.js.map +1 -0
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts +115 -0
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js +215 -0
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/embedding-provider.d.ts +78 -0
- package/dist/cli/backend/src/services/memory/embedding-provider.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/embedding-provider.js +179 -0
- package/dist/cli/backend/src/services/memory/embedding-provider.js.map +1 -0
- package/dist/cli/backend/src/services/memory/vector-store.service.d.ts +331 -0
- package/dist/cli/backend/src/services/memory/vector-store.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/vector-store.service.js +814 -0
- package/dist/cli/backend/src/services/memory/vector-store.service.js.map +1 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts +171 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.js +725 -0
- package/dist/cli/backend/src/services/project/task-tracking.service.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +45 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/types/auto-assign.types.d.ts +271 -0
- package/dist/cli/backend/src/types/auto-assign.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/auto-assign.types.js +136 -0
- package/dist/cli/backend/src/types/auto-assign.types.js.map +1 -0
- package/dist/cli/cli/src/index.js +0 -0
- package/frontend/dist/assets/{index-db3f5041.css → index-068bb4f6.css} +10 -1
- package/frontend/dist/assets/index-c24ceb15.js +4960 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/config/skills/agent/core/query-knowledge/SKILL.md +0 -87
- package/config/skills/agent/core/query-knowledge/execute.sh +0 -30
- package/config/skills/orchestrator/query-knowledge/SKILL.md +0 -75
- package/config/skills/orchestrator/query-knowledge/execute.sh +0 -30
- package/frontend/dist/assets/index-cc115bb4.js +0 -4926
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crewly Agent Runner Service
|
|
3
|
+
*
|
|
4
|
+
* Core reasoning loop for the Crewly Agent runtime. Wraps Vercel AI SDK's
|
|
5
|
+
* generateText with conversation history management, context compaction,
|
|
6
|
+
* and structured result tracking.
|
|
7
|
+
*
|
|
8
|
+
* @module services/agent/crewly-agent/agent-runner.service
|
|
9
|
+
*/
|
|
10
|
+
import { ModelManager } from './model-manager.js';
|
|
11
|
+
import { CrewlyApiClient } from './api-client.js';
|
|
12
|
+
import { ApprovalQueueService } from './approval-queue.service.js';
|
|
13
|
+
import { type CrewlyAgentConfig, type ConversationState, type AgentRunResult, type ToolCallRecord, type CompactionResult, type ContextBudgetStatus, type AuditEntry, type SecurityPolicy, type StreamingEventCallbacks } from './types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Detects looping behavior in tool calls: consecutive identical calls or
|
|
16
|
+
* consecutive error responses from the same tool.
|
|
17
|
+
*
|
|
18
|
+
* Usage: create per-run, call `recordToolCall()` in onStepFinish, check `loopDetected`.
|
|
19
|
+
*/
|
|
20
|
+
export declare class ToolCallLoopDetector {
|
|
21
|
+
private readonly identicalThreshold;
|
|
22
|
+
private readonly errorThreshold;
|
|
23
|
+
/** Consecutive identical tool call fingerprints */
|
|
24
|
+
private consecutiveIdentical;
|
|
25
|
+
private lastFingerprint;
|
|
26
|
+
/** Consecutive error results from the same tool */
|
|
27
|
+
private consecutiveErrors;
|
|
28
|
+
private lastErrorTool;
|
|
29
|
+
/** Whether a loop was detected */
|
|
30
|
+
loopDetected: boolean;
|
|
31
|
+
/** Human-readable reason when loop is detected */
|
|
32
|
+
loopReason: string;
|
|
33
|
+
constructor(identicalThreshold?: number, errorThreshold?: number);
|
|
34
|
+
/**
|
|
35
|
+
* Record a tool call and check for loop patterns.
|
|
36
|
+
*
|
|
37
|
+
* @param toolName - Name of the tool called
|
|
38
|
+
* @param args - Arguments passed to the tool
|
|
39
|
+
* @param result - Result returned by the tool
|
|
40
|
+
* @returns True if a loop was just detected on this call
|
|
41
|
+
*/
|
|
42
|
+
recordToolCall(toolName: string, args: Record<string, unknown>, result: unknown): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a tool result looks like an error (404, HTTP error codes, error strings).
|
|
45
|
+
*/
|
|
46
|
+
private isErrorResult;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Core agent runner that manages the AI SDK generateText loop.
|
|
50
|
+
*
|
|
51
|
+
* Responsibilities:
|
|
52
|
+
* - Maintains conversation history (messages array)
|
|
53
|
+
* - Calls generateText with tools and maxSteps for agentic behavior
|
|
54
|
+
* - Tracks token usage across invocations
|
|
55
|
+
* - Triggers context compaction when history grows too large
|
|
56
|
+
* - Serializes concurrent message handling
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const runner = new AgentRunnerService(config);
|
|
61
|
+
* await runner.initialize();
|
|
62
|
+
* const result = await runner.run('Check all team statuses');
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
/** Function type for generateText — used for dependency injection in tests */
|
|
66
|
+
type GenerateTextFn = (opts: Record<string, unknown>) => Promise<Record<string, unknown>>;
|
|
67
|
+
export declare class AgentRunnerService {
|
|
68
|
+
private config;
|
|
69
|
+
private modelManager;
|
|
70
|
+
private apiClient;
|
|
71
|
+
private model;
|
|
72
|
+
/**
|
|
73
|
+
* Per-conversation state map. Each Slack thread (or web chat
|
|
74
|
+
* conversation) gets its own `ConversationState` so the LLM
|
|
75
|
+
* context is isolated — messages from thread A never leak into
|
|
76
|
+
* the prompt when responding to thread B. The conversation key
|
|
77
|
+
* is the chat-v2 channel id (e.g. `slack-D0AC7-1777760999-956969`)
|
|
78
|
+
* derived from the inbound message's `[CHAT:xxx]` marker, the
|
|
79
|
+
* `[SLACK:channel:threadTs]` marker, or — if neither is present
|
|
80
|
+
* — the literal `__default__` for runtime cases like REPL or
|
|
81
|
+
* scheduled-check inputs that have no thread identity.
|
|
82
|
+
*
|
|
83
|
+
* 2026-05-15 fix per goal: "一个 Slack thread 代表一个 chat
|
|
84
|
+
* thread, 不同 Slack thread 之间不会串联在一起."
|
|
85
|
+
*/
|
|
86
|
+
private conversationStates;
|
|
87
|
+
/**
|
|
88
|
+
* Active conversation key for the message currently being
|
|
89
|
+
* processed. `processQueue` sets this before each `executeRun`
|
|
90
|
+
* so the getter `this.state` resolves to the right per-thread
|
|
91
|
+
* state without every call site needing to know about the map.
|
|
92
|
+
*/
|
|
93
|
+
private currentConversationKey;
|
|
94
|
+
/**
|
|
95
|
+
* Effective system prompt — captured at construction time and
|
|
96
|
+
* applied to every fresh per-conversation state created on
|
|
97
|
+
* demand. Held on the instance so `getOrCreateState` doesn't
|
|
98
|
+
* need to recompute the eval-mode stripping logic.
|
|
99
|
+
*/
|
|
100
|
+
private readonly effectiveSystemPrompt;
|
|
101
|
+
/**
|
|
102
|
+
* Soft cap on how many distinct conversation states we hold in
|
|
103
|
+
* memory. When exceeded, the least-recently-active state is
|
|
104
|
+
* evicted (its messages live on in chat-v2 SQLite so the next
|
|
105
|
+
* access can re-hydrate). Prevents unbounded growth when a busy
|
|
106
|
+
* agent participates in thousands of Slack threads over time.
|
|
107
|
+
*/
|
|
108
|
+
private readonly MAX_LIVE_CONVERSATIONS;
|
|
109
|
+
/**
|
|
110
|
+
* Backward-compatible getter: every existing `this.state.X`
|
|
111
|
+
* call site automatically routes to the active per-conversation
|
|
112
|
+
* state. Lazy-creates a fresh state on first access for a new
|
|
113
|
+
* conversation key.
|
|
114
|
+
*/
|
|
115
|
+
private get state();
|
|
116
|
+
/**
|
|
117
|
+
* Look up or create the ConversationState for a given key.
|
|
118
|
+
* Evicts the least-recently-active state when the live-set
|
|
119
|
+
* size exceeds {@link MAX_LIVE_CONVERSATIONS}.
|
|
120
|
+
*
|
|
121
|
+
* @param key - Conversation key (chat-v2 channel id or `__default__`)
|
|
122
|
+
* @returns The per-conversation state object
|
|
123
|
+
*/
|
|
124
|
+
private getOrCreateConversationState;
|
|
125
|
+
/**
|
|
126
|
+
* Test / introspection helper — number of active conversation
|
|
127
|
+
* states the runner currently holds. Surfaces in
|
|
128
|
+
* `getConversationStatus` for observability.
|
|
129
|
+
*
|
|
130
|
+
* @returns Number of live per-conversation states
|
|
131
|
+
*/
|
|
132
|
+
getConversationCount(): number;
|
|
133
|
+
private processing;
|
|
134
|
+
private messageQueue;
|
|
135
|
+
private auditLog;
|
|
136
|
+
private securityPolicy;
|
|
137
|
+
/** Current conversationId extracted from [CHAT:xxx] prefix */
|
|
138
|
+
private currentConversationId?;
|
|
139
|
+
/** Last known conversationId — used as fallback when a message has no explicit conversationId */
|
|
140
|
+
private lastKnownConversationId?;
|
|
141
|
+
/** Current Slack context (channelId + threadTs) for routing NOTIFY responses */
|
|
142
|
+
private currentSlackContext?;
|
|
143
|
+
/** MCP client for external tool integration */
|
|
144
|
+
private mcpClient;
|
|
145
|
+
/** Cached MCP tool definitions loaded during initialization */
|
|
146
|
+
private mcpToolDefs;
|
|
147
|
+
/** Approval queue for tools requiring explicit approval (shared singleton) */
|
|
148
|
+
private approvalQueue;
|
|
149
|
+
private tracing;
|
|
150
|
+
/** Guards against concurrent compaction — only one compaction at a time */
|
|
151
|
+
private compacting;
|
|
152
|
+
/** AbortController for the current run — allows external cancellation */
|
|
153
|
+
private currentRunAbort;
|
|
154
|
+
/** Streaming event callbacks — set per run by the runtime service */
|
|
155
|
+
private streamingCallbacks;
|
|
156
|
+
/** Output filter for redacting API keys from agent responses */
|
|
157
|
+
private outputFilter;
|
|
158
|
+
/** @internal Override for testing — replaces the AI SDK generateText call */
|
|
159
|
+
_generateTextFn: GenerateTextFn | null;
|
|
160
|
+
/**
|
|
161
|
+
* Create a new AgentRunnerService.
|
|
162
|
+
*
|
|
163
|
+
* @param config - Agent configuration
|
|
164
|
+
* @param modelManager - Optional model manager instance (for testing)
|
|
165
|
+
* @param apiClient - Optional API client instance (for testing)
|
|
166
|
+
*/
|
|
167
|
+
constructor(config: CrewlyAgentConfig, modelManager?: ModelManager, apiClient?: CrewlyApiClient);
|
|
168
|
+
/**
|
|
169
|
+
* Regex patterns that match TL delegation-first instructions in the system prompt.
|
|
170
|
+
* These cause the agent to delegate instead of implementing in eval sandboxes.
|
|
171
|
+
*/
|
|
172
|
+
private static readonly DELEGATION_PATTERNS;
|
|
173
|
+
/**
|
|
174
|
+
* Eval-mode override instruction injected after stripping delegation instructions.
|
|
175
|
+
* Tells the agent to implement directly.
|
|
176
|
+
*/
|
|
177
|
+
private static readonly EVAL_MODE_OVERRIDE;
|
|
178
|
+
/**
|
|
179
|
+
* Strip delegation-first instructions from a system prompt for eval mode.
|
|
180
|
+
*
|
|
181
|
+
* Removes TL delegation SOP sections, delegation-first protocol blocks,
|
|
182
|
+
* and anti-pattern warnings that cause the agent to delegate instead of
|
|
183
|
+
* implementing. Injects an eval-mode override instruction.
|
|
184
|
+
*
|
|
185
|
+
* @param prompt - Original system prompt
|
|
186
|
+
* @returns Cleaned prompt with eval-mode overrides
|
|
187
|
+
*/
|
|
188
|
+
static stripDelegationInstructions(prompt: string): string;
|
|
189
|
+
/**
|
|
190
|
+
* Patterns that indicate the task expects a file to be created.
|
|
191
|
+
* Matches phrases like "create health.controller.ts", "write team-health.json",
|
|
192
|
+
* "produce a report file", etc.
|
|
193
|
+
*/
|
|
194
|
+
private static readonly FILE_CREATION_PATTERNS;
|
|
195
|
+
/**
|
|
196
|
+
* Extract expected output file names from the task prompt.
|
|
197
|
+
*
|
|
198
|
+
* Scans the message for file creation patterns and returns the
|
|
199
|
+
* list of file names the task expects to be produced.
|
|
200
|
+
*
|
|
201
|
+
* @param taskPrompt - The original task prompt/message
|
|
202
|
+
* @returns Array of expected file names (basename only)
|
|
203
|
+
*/
|
|
204
|
+
static extractExpectedOutputFiles(taskPrompt: string): string[];
|
|
205
|
+
/**
|
|
206
|
+
* Check if the agent's tool calls produced the expected output files.
|
|
207
|
+
*
|
|
208
|
+
* Examines write_file and edit_file tool calls to see if the expected
|
|
209
|
+
* files were written. Returns the list of missing files.
|
|
210
|
+
*
|
|
211
|
+
* @param expectedFiles - File names expected to be created
|
|
212
|
+
* @param toolCalls - Tool calls made during the run
|
|
213
|
+
* @returns Array of file names that were NOT written
|
|
214
|
+
*/
|
|
215
|
+
static checkMissingDeliverables(expectedFiles: string[], toolCalls: ToolCallRecord[]): string[];
|
|
216
|
+
/**
|
|
217
|
+
* Initialize the agent runner by loading the model.
|
|
218
|
+
* Must be called before run().
|
|
219
|
+
*
|
|
220
|
+
* @throws Error if the model cannot be loaded
|
|
221
|
+
*/
|
|
222
|
+
initialize(): Promise<void>;
|
|
223
|
+
/**
|
|
224
|
+
* Run the agent with a new user message.
|
|
225
|
+
*
|
|
226
|
+
* Messages are queued and processed serially to prevent concurrent
|
|
227
|
+
* generateText calls which would corrupt conversation state.
|
|
228
|
+
*
|
|
229
|
+
* @param message - User/system message to process
|
|
230
|
+
* @param conversationId - Optional conversation ID for routing
|
|
231
|
+
* @param metadata - Optional metadata (Slack context, etc.)
|
|
232
|
+
* @param options - Optional abort signal and streaming callbacks
|
|
233
|
+
* @returns Result of the agent run including text, tool calls, and usage
|
|
234
|
+
*/
|
|
235
|
+
run(message: string, conversationId?: string, metadata?: Record<string, string>, options?: {
|
|
236
|
+
abortSignal?: AbortSignal;
|
|
237
|
+
streaming?: StreamingEventCallbacks;
|
|
238
|
+
}): Promise<AgentRunResult>;
|
|
239
|
+
/**
|
|
240
|
+
* Abort the current in-progress run.
|
|
241
|
+
* Signals the active streamText/generateText call to cancel.
|
|
242
|
+
*
|
|
243
|
+
* @returns True if an active run was aborted, false if no run was in progress
|
|
244
|
+
*/
|
|
245
|
+
abortCurrentRun(): boolean;
|
|
246
|
+
/**
|
|
247
|
+
* Check if the agent is currently processing a message.
|
|
248
|
+
*
|
|
249
|
+
* @returns True if processing is in progress
|
|
250
|
+
*/
|
|
251
|
+
isProcessing(): boolean;
|
|
252
|
+
/**
|
|
253
|
+
* Get current conversation state (for inspection/debugging).
|
|
254
|
+
*
|
|
255
|
+
* @returns Current conversation state
|
|
256
|
+
*/
|
|
257
|
+
getState(): ConversationState;
|
|
258
|
+
/**
|
|
259
|
+
* Shut down the agent runner, disconnecting MCP servers.
|
|
260
|
+
*
|
|
261
|
+
* Should be called when the agent session ends to clean up
|
|
262
|
+
* child processes spawned by MCP server connections.
|
|
263
|
+
*/
|
|
264
|
+
shutdown(): Promise<void>;
|
|
265
|
+
/**
|
|
266
|
+
* Get the names of connected MCP servers.
|
|
267
|
+
*
|
|
268
|
+
* @returns Array of server names, or empty if no MCP client is configured
|
|
269
|
+
*/
|
|
270
|
+
getMcpServerNames(): string[];
|
|
271
|
+
/**
|
|
272
|
+
* Get the number of MCP tools currently loaded.
|
|
273
|
+
*
|
|
274
|
+
* @returns Number of MCP tool definitions
|
|
275
|
+
*/
|
|
276
|
+
getMcpToolCount(): number;
|
|
277
|
+
/**
|
|
278
|
+
* Get the current Slack context (channelId + threadTs).
|
|
279
|
+
* Used by the runtime service to inject Slack awareness into the agent.
|
|
280
|
+
*
|
|
281
|
+
* @returns Current Slack context or undefined
|
|
282
|
+
*/
|
|
283
|
+
getSlackContext(): {
|
|
284
|
+
channelId: string;
|
|
285
|
+
threadTs?: string;
|
|
286
|
+
} | undefined;
|
|
287
|
+
/**
|
|
288
|
+
* Get the number of messages in the conversation history.
|
|
289
|
+
*
|
|
290
|
+
* @returns Message count
|
|
291
|
+
*/
|
|
292
|
+
getHistoryLength(): number;
|
|
293
|
+
/**
|
|
294
|
+
* Check if the agent runner has been initialized.
|
|
295
|
+
*
|
|
296
|
+
* @returns True if initialize() has been called successfully
|
|
297
|
+
*/
|
|
298
|
+
isInitialized(): boolean;
|
|
299
|
+
/**
|
|
300
|
+
* Get current context budget status.
|
|
301
|
+
*
|
|
302
|
+
* Calculates token usage as a percentage of the model's context window
|
|
303
|
+
* and determines the budget level (normal/warning/critical).
|
|
304
|
+
*
|
|
305
|
+
* @returns ContextBudgetStatus with usage stats and level
|
|
306
|
+
*/
|
|
307
|
+
getContextBudget(): ContextBudgetStatus;
|
|
308
|
+
/**
|
|
309
|
+
* Process queued messages serially.
|
|
310
|
+
*/
|
|
311
|
+
private processQueue;
|
|
312
|
+
/**
|
|
313
|
+
* Execute a single streamText run with the current conversation context.
|
|
314
|
+
*
|
|
315
|
+
* Uses streamText for real-time token emission and tool call feedback.
|
|
316
|
+
* Falls back to generateText when _generateTextFn is set (testing).
|
|
317
|
+
*
|
|
318
|
+
* @param message - New message to add to the conversation
|
|
319
|
+
* @param externalAbortSignal - Optional external abort signal for cancellation
|
|
320
|
+
* @returns Agent run result
|
|
321
|
+
*/
|
|
322
|
+
private executeRun;
|
|
323
|
+
/**
|
|
324
|
+
* Check if an error is recoverable and eligible for automatic retry.
|
|
325
|
+
*
|
|
326
|
+
* Recoverable errors include:
|
|
327
|
+
* - HTTP 429 (rate limit)
|
|
328
|
+
* - HTTP 5xx (server errors)
|
|
329
|
+
* - Network timeouts and connection errors
|
|
330
|
+
*
|
|
331
|
+
* @param error - The error to classify
|
|
332
|
+
* @returns True if the error is recoverable
|
|
333
|
+
*/
|
|
334
|
+
private isRecoverableError;
|
|
335
|
+
/**
|
|
336
|
+
* Check if an error indicates the context length was exceeded.
|
|
337
|
+
*
|
|
338
|
+
* @param error - The error to classify
|
|
339
|
+
* @returns True if the error is a context length exceeded error
|
|
340
|
+
*/
|
|
341
|
+
private isContextLengthError;
|
|
342
|
+
/**
|
|
343
|
+
* Sleep for a specified duration.
|
|
344
|
+
*
|
|
345
|
+
* @param ms - Milliseconds to sleep
|
|
346
|
+
* @returns Promise that resolves after the delay
|
|
347
|
+
*/
|
|
348
|
+
private sleep;
|
|
349
|
+
/**
|
|
350
|
+
* Execute run using streamText for real-time streaming output.
|
|
351
|
+
* This is the production path — emits events as tokens arrive.
|
|
352
|
+
*
|
|
353
|
+
* Includes automatic retry with exponential backoff for recoverable errors
|
|
354
|
+
* (429, 5xx, network) and progressive context trimming for context length errors.
|
|
355
|
+
*/
|
|
356
|
+
private executeRunWithStreamText;
|
|
357
|
+
/**
|
|
358
|
+
* Single attempt of streamText execution (no retry logic).
|
|
359
|
+
*/
|
|
360
|
+
private executeStreamTextAttempt;
|
|
361
|
+
/**
|
|
362
|
+
* Execute run using generateText (batch mode).
|
|
363
|
+
* Used when _generateTextFn is set for testing, or as fallback.
|
|
364
|
+
*
|
|
365
|
+
* Includes automatic retry with exponential backoff for recoverable errors
|
|
366
|
+
* and progressive context trimming for context length errors.
|
|
367
|
+
*/
|
|
368
|
+
private executeRunWithGenerateText;
|
|
369
|
+
/**
|
|
370
|
+
* Single attempt of generateText execution (no retry logic).
|
|
371
|
+
*/
|
|
372
|
+
private executeGenerateTextAttempt;
|
|
373
|
+
/**
|
|
374
|
+
* Remove the oldest non-system messages to reduce context size.
|
|
375
|
+
* Preserves the most recent messages and any system-role messages.
|
|
376
|
+
*/
|
|
377
|
+
private trimOldestNonSystemMessages;
|
|
378
|
+
/**
|
|
379
|
+
* Handle a detected tool call loop by injecting a corrective system message
|
|
380
|
+
* into conversation history and returning a structured result.
|
|
381
|
+
*
|
|
382
|
+
* @param detector - The loop detector with reason details
|
|
383
|
+
* @param toolCalls - Tool calls collected so far
|
|
384
|
+
* @param steps - Number of steps taken
|
|
385
|
+
* @returns AgentRunResult with the loop warning as text
|
|
386
|
+
*/
|
|
387
|
+
private handleLoopDetected;
|
|
388
|
+
/**
|
|
389
|
+
* Execute the Stop Hook: check if the agent produced all required deliverables.
|
|
390
|
+
*
|
|
391
|
+
* Scans the original task prompt (first user message) for expected output files,
|
|
392
|
+
* then checks if write_file/edit_file tool calls created them. If files are
|
|
393
|
+
* missing, injects a corrective prompt and runs one more generateText call
|
|
394
|
+
* with tools so the agent can create the missing deliverables.
|
|
395
|
+
*
|
|
396
|
+
* Inspired by Claude Code's Stop hook which blocks the agent from finishing
|
|
397
|
+
* until task requirements are met.
|
|
398
|
+
*
|
|
399
|
+
* @param toolCalls - Tool calls made so far
|
|
400
|
+
* @param tools - Available tools for the follow-up run
|
|
401
|
+
* @param abortSignal - Abort signal for cancellation
|
|
402
|
+
* @returns Additional AgentRunResult from the follow-up, or null if no action needed
|
|
403
|
+
*/
|
|
404
|
+
private executeStopHook;
|
|
405
|
+
/**
|
|
406
|
+
* Request a text summary from the model when the previous response had tool calls
|
|
407
|
+
* but no text output. Injects a follow-up user message and makes a single
|
|
408
|
+
* generateText call with no tools to force a text-only response.
|
|
409
|
+
*
|
|
410
|
+
* @returns The summary text, or empty string if the fallback also fails
|
|
411
|
+
*/
|
|
412
|
+
private requestSummaryFallback;
|
|
413
|
+
/**
|
|
414
|
+
* Public method for agent-initiated context compaction.
|
|
415
|
+
* Called by the compact_memory tool to intelligently summarize conversation state.
|
|
416
|
+
*
|
|
417
|
+
* Uses the model to generate a structured summary preserving:
|
|
418
|
+
* - Active tasks and their status
|
|
419
|
+
* - Key decisions made
|
|
420
|
+
* - Important findings and blockers
|
|
421
|
+
* - Current working context
|
|
422
|
+
*
|
|
423
|
+
* @returns CompactionResult with before/after stats
|
|
424
|
+
*/
|
|
425
|
+
requestCompaction(): Promise<CompactionResult>;
|
|
426
|
+
/**
|
|
427
|
+
* Get the security audit log.
|
|
428
|
+
*
|
|
429
|
+
* @param limit - Maximum number of entries to return (most recent first)
|
|
430
|
+
* @returns Array of audit entries
|
|
431
|
+
*/
|
|
432
|
+
getAuditLog(limit?: number): AuditEntry[];
|
|
433
|
+
/**
|
|
434
|
+
* Get the current security policy.
|
|
435
|
+
*
|
|
436
|
+
* @returns Current security policy configuration
|
|
437
|
+
*/
|
|
438
|
+
getSecurityPolicy(): SecurityPolicy;
|
|
439
|
+
/**
|
|
440
|
+
* Update the security policy.
|
|
441
|
+
*
|
|
442
|
+
* @param updates - Partial security policy to merge
|
|
443
|
+
*/
|
|
444
|
+
updateSecurityPolicy(updates: Partial<SecurityPolicy>): void;
|
|
445
|
+
/**
|
|
446
|
+
* Get the approval queue service instance.
|
|
447
|
+
* Used by the approvals controller to manage pending approvals.
|
|
448
|
+
*
|
|
449
|
+
* @returns The ApprovalQueueService instance
|
|
450
|
+
*/
|
|
451
|
+
getApprovalQueue(): ApprovalQueueService;
|
|
452
|
+
/**
|
|
453
|
+
* Record an audit entry for a tool invocation.
|
|
454
|
+
*
|
|
455
|
+
* @param entry - Audit entry to record
|
|
456
|
+
*/
|
|
457
|
+
private recordAudit;
|
|
458
|
+
/**
|
|
459
|
+
* Check if a tool is allowed to execute under the current security policy.
|
|
460
|
+
*
|
|
461
|
+
* Evaluates the tool against two checks:
|
|
462
|
+
* 1. blockedTools — tools explicitly blocked by name (returns blocked=true)
|
|
463
|
+
* 2. requireApproval — tools whose sensitivity requires approval (returns requiresApproval=true)
|
|
464
|
+
*
|
|
465
|
+
* @param toolName - Name of the tool being invoked
|
|
466
|
+
* @param sensitivity - Sensitivity classification of the tool
|
|
467
|
+
* @returns ApprovalCheckResult indicating if execution is allowed
|
|
468
|
+
*/
|
|
469
|
+
private checkApproval;
|
|
470
|
+
/**
|
|
471
|
+
* Get filtered audit log entries.
|
|
472
|
+
*
|
|
473
|
+
* @param filters - Query filters for limit, sensitivity, and toolName
|
|
474
|
+
* @returns Filtered audit entries (most recent first)
|
|
475
|
+
*/
|
|
476
|
+
private getFilteredAuditLog;
|
|
477
|
+
/**
|
|
478
|
+
* Compact conversation history using AI-generated structured summary.
|
|
479
|
+
*
|
|
480
|
+
* Keeps the most recent messages and uses the model to generate an
|
|
481
|
+
* intelligent summary of older messages that preserves critical state:
|
|
482
|
+
* decisions, active tasks, findings, and working context.
|
|
483
|
+
*
|
|
484
|
+
* Falls back to truncation-based summary if AI summarization fails.
|
|
485
|
+
*
|
|
486
|
+
* @returns CompactionResult with before/after statistics
|
|
487
|
+
*/
|
|
488
|
+
private compactHistory;
|
|
489
|
+
/**
|
|
490
|
+
* Generate an AI-powered structured summary of conversation messages.
|
|
491
|
+
*
|
|
492
|
+
* Asks the model to extract and preserve critical state from the
|
|
493
|
+
* conversation history in a structured format. Pre-extracted critical
|
|
494
|
+
* items from ContextFlushService are included in the prompt to ensure
|
|
495
|
+
* they are preserved even if the AI would otherwise miss them.
|
|
496
|
+
*
|
|
497
|
+
* @param messages - Messages to summarize
|
|
498
|
+
* @param extractedItems - Critical items extracted by ContextFlushService
|
|
499
|
+
* @returns Structured summary string
|
|
500
|
+
*/
|
|
501
|
+
private generateAISummary;
|
|
502
|
+
/**
|
|
503
|
+
* Generate a truncation-based fallback summary when AI summarization fails.
|
|
504
|
+
* Includes pre-extracted critical items so they survive compaction.
|
|
505
|
+
*
|
|
506
|
+
* @param messages - Messages to summarize
|
|
507
|
+
* @param extractedItems - Critical items extracted by ContextFlushService
|
|
508
|
+
* @returns Simple concatenated summary string
|
|
509
|
+
*/
|
|
510
|
+
private generateFallbackSummary;
|
|
511
|
+
}
|
|
512
|
+
export {};
|
|
513
|
+
//# sourceMappingURL=agent-runner.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-runner.service.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/agent/crewly-agent/agent-runner.service.ts"],"names":[],"mappings":"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"}
|