crewly 1.0.8 → 1.0.11
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.ts +59 -0
- package/config/index.ts +2 -0
- package/config/roles/architect/prompt.md +8 -5
- package/config/roles/backend-developer/prompt.md +24 -5
- package/config/roles/designer/prompt.md +6 -5
- package/config/roles/developer/prompt.md +27 -5
- package/config/roles/frontend-developer/prompt.md +24 -5
- package/config/roles/fullstack-dev/prompt.md +24 -5
- package/config/roles/generalist/prompt.md +9 -5
- package/config/roles/orchestrator/prompt.md +126 -15
- package/config/roles/product-manager/prompt.md +6 -5
- package/config/roles/qa/prompt.md +24 -5
- package/config/roles/qa-engineer/prompt.md +24 -5
- package/config/roles/sales/prompt.md +6 -5
- package/config/roles/support/prompt.md +6 -5
- package/config/roles/tpm/prompt.md +6 -5
- package/config/skills/agent/_common/lib.sh +4 -0
- package/config/skills/agent/core/accept-task/execute.sh +21 -0
- package/config/skills/agent/core/accept-task/instructions.md +20 -0
- package/config/skills/agent/core/accept-task/skill.json +20 -0
- package/config/skills/agent/core/block-task/execute.sh +26 -0
- package/config/skills/agent/core/block-task/instructions.md +22 -0
- package/config/skills/agent/core/block-task/skill.json +20 -0
- package/config/skills/agent/core/check-quality-gates/execute.sh +20 -0
- package/config/skills/agent/core/check-quality-gates/instructions.md +23 -0
- package/config/skills/agent/core/check-quality-gates/skill.json +20 -0
- package/config/skills/agent/core/complete-task/execute.sh +29 -0
- package/config/skills/agent/core/complete-task/instructions.md +53 -0
- package/config/skills/agent/core/complete-task/skill.json +20 -0
- package/config/skills/agent/core/get-my-context/execute.sh +23 -0
- package/config/skills/agent/core/get-my-context/instructions.md +21 -0
- package/config/skills/agent/core/get-my-context/skill.json +20 -0
- package/config/skills/agent/core/get-sops/execute.sh +24 -0
- package/config/skills/agent/core/get-sops/instructions.md +21 -0
- package/config/skills/agent/core/get-sops/skill.json +20 -0
- package/config/skills/agent/core/get-team-status/execute.sh +8 -0
- package/config/skills/agent/core/get-team-status/instructions.md +17 -0
- package/config/skills/agent/core/get-team-status/skill.json +20 -0
- package/config/skills/agent/core/heartbeat/execute.sh +22 -0
- package/config/skills/agent/core/heartbeat/instructions.md +23 -0
- package/config/skills/agent/core/heartbeat/skill.json +20 -0
- package/config/skills/agent/core/manage-knowledge/execute.sh +60 -0
- package/config/skills/agent/core/manage-knowledge/instructions.md +46 -0
- package/config/skills/agent/core/marketplace-search/execute.sh +77 -0
- package/config/skills/agent/core/marketplace-search/instructions.md +59 -0
- package/config/skills/agent/core/marketplace-search/skill.json +20 -0
- package/config/skills/agent/core/query-knowledge/execute.sh +30 -0
- package/config/skills/agent/core/query-knowledge/instructions.md +47 -0
- package/config/skills/agent/core/query-knowledge/skill.json +20 -0
- package/config/skills/agent/core/read-task/execute.sh +15 -0
- package/config/skills/agent/core/read-task/instructions.md +19 -0
- package/config/skills/agent/core/read-task/skill.json +20 -0
- package/config/skills/agent/core/recall/execute.sh +24 -0
- package/config/skills/agent/core/recall/instructions.md +23 -0
- package/config/skills/agent/core/recall/skill.json +20 -0
- package/config/skills/agent/core/record-learning/execute.sh +29 -0
- package/config/skills/agent/core/record-learning/instructions.md +24 -0
- package/config/skills/agent/core/record-learning/skill.json +20 -0
- package/config/skills/agent/core/register-self/execute.sh +28 -0
- package/config/skills/agent/core/register-self/instructions.md +18 -0
- package/config/skills/agent/core/register-self/skill.json +20 -0
- package/config/skills/agent/core/remember/execute.sh +29 -0
- package/config/skills/agent/core/remember/instructions.md +24 -0
- package/config/skills/agent/core/remember/skill.json +20 -0
- package/config/skills/agent/core/report-progress/execute.sh +28 -0
- package/config/skills/agent/core/report-progress/instructions.md +25 -0
- package/config/skills/agent/core/report-progress/skill.json +20 -0
- package/config/skills/agent/core/report-status/execute.sh +35 -0
- package/config/skills/agent/core/report-status/instructions.md +36 -0
- package/config/skills/agent/core/report-status/skill.json +20 -0
- package/config/skills/agent/core/send-chat-response/execute.sh +26 -0
- package/config/skills/agent/core/send-chat-response/instructions.md +22 -0
- package/config/skills/agent/core/send-chat-response/skill.json +20 -0
- package/config/skills/agent/core/send-message/execute.sh +17 -0
- package/config/skills/agent/core/send-message/instructions.md +20 -0
- package/config/skills/agent/core/send-message/skill.json +20 -0
- package/config/skills/orchestrator/delegate-task/execute.sh +1 -1
- package/config/skills/orchestrator/schedule-check/instructions.md +6 -0
- package/config/skills/registry.json +850 -0
- package/config/templates/research-team.json +2 -2
- package/dist/backend/backend/src/constants.d.ts +89 -4
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +84 -6
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/index.d.ts +1 -1
- package/dist/backend/backend/src/controllers/marketplace/index.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/index.js +1 -1
- package/dist/backend/backend/src/controllers/marketplace/index.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts +64 -8
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js +194 -96
- package/dist/backend/backend/src/controllers/marketplace/marketplace.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +7 -2
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +30 -13
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +37 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts +51 -8
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +201 -11
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts +16 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.js +99 -9
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js +11 -4
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts +11 -0
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js +18 -0
- package/dist/backend/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +13 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +21 -0
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +227 -91
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.d.ts +12 -0
- package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.js +23 -1
- package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts +6 -0
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js +10 -0
- package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/index.d.ts +1 -0
- package/dist/backend/backend/src/services/marketplace/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/index.js +2 -0
- package/dist/backend/backend/src/services/marketplace/index.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +10 -9
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +262 -73
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts +71 -0
- package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js +339 -0
- package/dist/backend/backend/src/services/marketplace/marketplace-submission.service.js.map +1 -0
- package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts +4 -15
- package/dist/backend/backend/src/services/marketplace/marketplace.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace.service.js +172 -27
- package/dist/backend/backend/src/services/marketplace/marketplace.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts +30 -2
- package/dist/backend/backend/src/services/messaging/message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/message-queue.service.js +79 -3
- package/dist/backend/backend/src/services/messaging/message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +57 -4
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +20 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +31 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.d.ts +20 -0
- package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-adapter.js +22 -1
- package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +19 -0
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +31 -2
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +14 -0
- package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts +9 -0
- package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js +24 -1
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts +7 -13
- package/dist/backend/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js +38 -47
- package/dist/backend/backend/src/services/skill/skill-catalog.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill.service.d.ts +3 -0
- package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill.service.js +17 -0
- package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
- package/dist/backend/backend/src/types/chat.types.d.ts +5 -5
- package/dist/backend/backend/src/types/chat.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/chat.types.js +21 -1
- package/dist/backend/backend/src/types/chat.types.js.map +1 -1
- package/dist/backend/backend/src/types/marketplace.types.d.ts +37 -0
- package/dist/backend/backend/src/types/marketplace.types.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +3 -5
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/backend/config/constants.d.ts +41 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +57 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/index.d.ts +2 -2
- package/dist/backend/config/index.d.ts.map +1 -1
- package/dist/backend/config/index.js +2 -2
- package/dist/backend/config/index.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +89 -4
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +84 -6
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts +40 -0
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -0
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js +74 -0
- package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -0
- package/dist/cli/backend/src/types/chat.types.d.ts +5 -5
- package/dist/cli/backend/src/types/chat.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/chat.types.js +21 -1
- package/dist/cli/backend/src/types/chat.types.js.map +1 -1
- package/dist/cli/cli/src/commands/onboard.d.ts +11 -1
- package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/onboard.js +118 -18
- package/dist/cli/cli/src/commands/onboard.js.map +1 -1
- package/dist/cli/cli/src/commands/publish.d.ts +14 -6
- package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/publish.js +32 -8
- package/dist/cli/cli/src/commands/publish.js.map +1 -1
- package/dist/cli/cli/src/commands/seed-marketplace.d.ts +28 -0
- package/dist/cli/cli/src/commands/seed-marketplace.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/seed-marketplace.js +148 -0
- package/dist/cli/cli/src/commands/seed-marketplace.js.map +1 -0
- package/dist/cli/cli/src/index.js +9 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.d.ts +17 -4
- package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.js +172 -58
- package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
- package/dist/cli/config/constants.d.ts +41 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +57 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/index.d.ts +2 -2
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +2 -2
- package/dist/cli/config/index.js.map +1 -1
- package/frontend/dist/assets/{index-68d1eb5a.js → index-0a245b0d.js} +242 -242
- package/frontend/dist/assets/{index-c5043a83.css → index-6972eeee.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +2 -2
- package/config/skills/chrome-browser/instructions.md +0 -42
- package/config/skills/chrome-browser/skill.json +0 -39
- package/config/skills/nano-banana-image/generate.sh +0 -73
- package/config/skills/nano-banana-image/instructions.md +0 -50
- package/config/skills/nano-banana-image/skill.json +0 -39
- package/config/skills/playwright-chrome-browser/instructions.md +0 -95
- package/config/skills/playwright-chrome-browser/skill.json +0 -44
|
@@ -2,14 +2,18 @@
|
|
|
2
2
|
* Context Window Monitor Service
|
|
3
3
|
*
|
|
4
4
|
* Monitors PTY session output for context window usage percentages and triggers
|
|
5
|
-
* proactive warnings and
|
|
5
|
+
* proactive warnings and runtime-native compaction when thresholds are exceeded.
|
|
6
6
|
*
|
|
7
|
-
* When an agent's
|
|
7
|
+
* When an agent's session reports context usage (e.g., "85% context"),
|
|
8
8
|
* this service detects the percentage, evaluates it against configured thresholds,
|
|
9
9
|
* and takes action:
|
|
10
10
|
* - Yellow (70%): Publishes a warning event
|
|
11
|
-
* - Red (85%): Publishes a warning
|
|
12
|
-
* - Critical (95%):
|
|
11
|
+
* - Red (85%): Publishes a warning + triggers runtime compact (/compact or /compress)
|
|
12
|
+
* - Critical (95%): Retries compact with cooldown; auto-recovery disabled by default
|
|
13
|
+
*
|
|
14
|
+
* Strategy: prefer runtime-native compact/compress commands which preserve session
|
|
15
|
+
* state over session kill + restart which loses all context. Auto-recovery is
|
|
16
|
+
* available as a last resort via AUTO_RECOVERY_ENABLED constant.
|
|
13
17
|
*
|
|
14
18
|
* Follows the PTY subscription pattern from RuntimeExitMonitorService and the
|
|
15
19
|
* lifecycle/restart pattern from AgentHeartbeatMonitorService.
|
|
@@ -25,7 +29,7 @@ import { getTerminalGateway } from '../../websocket/terminal.gateway.js';
|
|
|
25
29
|
import { PtyActivityTrackerService } from './pty-activity-tracker.service.js';
|
|
26
30
|
import { RuntimeExitMonitorService } from './runtime-exit-monitor.service.js';
|
|
27
31
|
import { stripAnsiCodes } from '../../utils/terminal-output.utils.js';
|
|
28
|
-
import { CONTEXT_WINDOW_MONITOR_CONSTANTS, AGENT_SUSPEND_CONSTANTS, SESSION_COMMAND_DELAYS, } from '../../constants.js';
|
|
32
|
+
import { CONTEXT_WINDOW_MONITOR_CONSTANTS, RUNTIME_COMPACT_COMMANDS, RUNTIME_TYPES, AGENT_SUSPEND_CONSTANTS, SESSION_COMMAND_DELAYS, } from '../../constants.js';
|
|
29
33
|
// =============================================================================
|
|
30
34
|
// Regex patterns for detecting context usage percentages in PTY output
|
|
31
35
|
// =============================================================================
|
|
@@ -154,8 +158,9 @@ export class ContextWindowMonitorService {
|
|
|
154
158
|
* @param memberId - Team member ID
|
|
155
159
|
* @param teamId - Team ID
|
|
156
160
|
* @param role - Agent role
|
|
161
|
+
* @param runtimeType - Runtime type (defaults to 'claude-code')
|
|
157
162
|
*/
|
|
158
|
-
startSessionMonitoring(sessionName, memberId, teamId, role) {
|
|
163
|
+
startSessionMonitoring(sessionName, memberId, teamId, role, runtimeType = RUNTIME_TYPES.CLAUDE_CODE) {
|
|
159
164
|
// Stop any existing monitoring for this session
|
|
160
165
|
if (this.sessionSubscriptions.has(sessionName)) {
|
|
161
166
|
this.stopSessionMonitoring(sessionName);
|
|
@@ -176,12 +181,16 @@ export class ContextWindowMonitorService {
|
|
|
176
181
|
memberId,
|
|
177
182
|
teamId,
|
|
178
183
|
role,
|
|
184
|
+
runtimeType,
|
|
179
185
|
contextPercent: 0,
|
|
180
186
|
level: 'normal',
|
|
181
187
|
lastDetectedAt: Date.now(),
|
|
182
188
|
recoveryTriggered: false,
|
|
183
189
|
recoveryCount: 0,
|
|
184
190
|
recoveryTimestamps: [],
|
|
191
|
+
compactAttempts: 0,
|
|
192
|
+
compactInProgress: false,
|
|
193
|
+
lastCompactAt: 0,
|
|
185
194
|
};
|
|
186
195
|
this.contextStates.set(sessionName, state);
|
|
187
196
|
// Subscribe to PTY data
|
|
@@ -211,6 +220,7 @@ export class ContextWindowMonitorService {
|
|
|
211
220
|
this.sessionSubscriptions.delete(sessionName);
|
|
212
221
|
}
|
|
213
222
|
this.contextStates.delete(sessionName);
|
|
223
|
+
this.proactiveCompactLastTriggered.delete(sessionName);
|
|
214
224
|
this.logger.debug('Stopped context window monitoring', { sessionName });
|
|
215
225
|
}
|
|
216
226
|
/**
|
|
@@ -302,6 +312,11 @@ export class ContextWindowMonitorService {
|
|
|
302
312
|
}
|
|
303
313
|
else {
|
|
304
314
|
state.level = 'normal';
|
|
315
|
+
// Reset compact tracking when context drops back to normal
|
|
316
|
+
if (previousLevel !== 'normal') {
|
|
317
|
+
state.compactAttempts = 0;
|
|
318
|
+
state.compactInProgress = false;
|
|
319
|
+
}
|
|
305
320
|
}
|
|
306
321
|
// Only fire events on level transitions (not repeated at same level)
|
|
307
322
|
if (state.level !== previousLevel && state.level !== 'normal') {
|
|
@@ -310,7 +325,12 @@ export class ContextWindowMonitorService {
|
|
|
310
325
|
}
|
|
311
326
|
/**
|
|
312
327
|
* Evaluate threshold transitions and take appropriate actions.
|
|
313
|
-
*
|
|
328
|
+
*
|
|
329
|
+
* Strategy (compact-first):
|
|
330
|
+
* 1. Yellow (70%): Publish warning event only
|
|
331
|
+
* 2. Red (85%): Publish warning + trigger runtime-native compact/compress
|
|
332
|
+
* 3. Critical (95%): Retry compact; periodic checks will continue retrying
|
|
333
|
+
* with cooldown. Auto-recovery (kill + restart) only if enabled.
|
|
314
334
|
*
|
|
315
335
|
* @param state - Current context window state
|
|
316
336
|
* @param previousLevel - The level before this update
|
|
@@ -326,11 +346,33 @@ export class ContextWindowMonitorService {
|
|
|
326
346
|
if (state.level === 'yellow' || state.level === 'red') {
|
|
327
347
|
this.publishContextEvent(state, 'agent:context_warning');
|
|
328
348
|
}
|
|
329
|
-
//
|
|
349
|
+
// At red level: try compact before things get critical
|
|
350
|
+
if (state.level === 'red' && !state.compactInProgress) {
|
|
351
|
+
if (state.compactAttempts < CONTEXT_WINDOW_MONITOR_CONSTANTS.MAX_COMPACT_ATTEMPTS) {
|
|
352
|
+
this.triggerCompact(state).catch((err) => {
|
|
353
|
+
this.logger.error('Compact failed', {
|
|
354
|
+
sessionName: state.sessionName,
|
|
355
|
+
error: err instanceof Error ? err.message : String(err),
|
|
356
|
+
});
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// Critical level: try compact, or fall back to recovery if enabled
|
|
330
361
|
if (state.level === 'critical') {
|
|
331
362
|
this.publishContextEvent(state, 'agent:context_critical');
|
|
332
|
-
if
|
|
363
|
+
// Try compact if we haven't hit the limit yet
|
|
364
|
+
if (!state.compactInProgress &&
|
|
365
|
+
state.compactAttempts < CONTEXT_WINDOW_MONITOR_CONSTANTS.MAX_COMPACT_ATTEMPTS) {
|
|
366
|
+
this.triggerCompact(state).catch((err) => {
|
|
367
|
+
this.logger.error('Compact at critical failed', {
|
|
368
|
+
sessionName: state.sessionName,
|
|
369
|
+
error: err instanceof Error ? err.message : String(err),
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
else if (CONTEXT_WINDOW_MONITOR_CONSTANTS.AUTO_RECOVERY_ENABLED &&
|
|
333
374
|
!state.recoveryTriggered) {
|
|
375
|
+
// Auto-recovery enabled and compact exhausted — kill + restart
|
|
334
376
|
state.recoveryTriggered = true;
|
|
335
377
|
this.triggerAutoRecovery(state).catch((err) => {
|
|
336
378
|
this.logger.error('Auto-recovery failed', {
|
|
@@ -339,6 +381,15 @@ export class ContextWindowMonitorService {
|
|
|
339
381
|
});
|
|
340
382
|
});
|
|
341
383
|
}
|
|
384
|
+
else if (!CONTEXT_WINDOW_MONITOR_CONSTANTS.AUTO_RECOVERY_ENABLED) {
|
|
385
|
+
// Auto-recovery disabled — periodic checks will retry compact
|
|
386
|
+
// after COMPACT_RETRY_COOLDOWN_MS via performCheck()
|
|
387
|
+
this.logger.warn('Context critical, compact exhausted, auto-recovery disabled. Periodic retry will continue.', {
|
|
388
|
+
sessionName: state.sessionName,
|
|
389
|
+
contextPercent: state.contextPercent,
|
|
390
|
+
compactAttempts: state.compactAttempts,
|
|
391
|
+
});
|
|
392
|
+
}
|
|
342
393
|
}
|
|
343
394
|
// Broadcast to frontend
|
|
344
395
|
this.broadcastContextWarning(state);
|
|
@@ -393,6 +444,70 @@ export class ContextWindowMonitorService {
|
|
|
393
444
|
timestamp: new Date().toISOString(),
|
|
394
445
|
});
|
|
395
446
|
}
|
|
447
|
+
/**
|
|
448
|
+
* Trigger context compaction by sending the runtime's native compact command.
|
|
449
|
+
*
|
|
450
|
+
* Writes the appropriate slash command (e.g., `/compact` for Claude Code,
|
|
451
|
+
* `/compress` for Gemini CLI) to the PTY session stdin. The runtime handles
|
|
452
|
+
* the actual compression — typically via LLM-based summarization.
|
|
453
|
+
*
|
|
454
|
+
* @param state - Context window state for the session to compact
|
|
455
|
+
*/
|
|
456
|
+
async triggerCompact(state) {
|
|
457
|
+
const backend = this.sessionBackend || getSessionBackendSync();
|
|
458
|
+
if (!backend) {
|
|
459
|
+
this.logger.warn('Cannot trigger compact: session backend not available', {
|
|
460
|
+
sessionName: state.sessionName,
|
|
461
|
+
});
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
const session = backend.getSession(state.sessionName);
|
|
465
|
+
if (!session) {
|
|
466
|
+
this.logger.warn('Cannot trigger compact: session not found', {
|
|
467
|
+
sessionName: state.sessionName,
|
|
468
|
+
});
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
const command = RUNTIME_COMPACT_COMMANDS[state.runtimeType];
|
|
472
|
+
if (!command) {
|
|
473
|
+
this.logger.warn('No compact command for runtime type', {
|
|
474
|
+
sessionName: state.sessionName,
|
|
475
|
+
runtimeType: state.runtimeType,
|
|
476
|
+
});
|
|
477
|
+
return;
|
|
478
|
+
}
|
|
479
|
+
state.compactInProgress = true;
|
|
480
|
+
state.compactAttempts++;
|
|
481
|
+
state.lastCompactAt = Date.now();
|
|
482
|
+
this.logger.info('Triggering context compaction', {
|
|
483
|
+
sessionName: state.sessionName,
|
|
484
|
+
runtimeType: state.runtimeType,
|
|
485
|
+
command,
|
|
486
|
+
attempt: state.compactAttempts,
|
|
487
|
+
contextPercent: state.contextPercent,
|
|
488
|
+
});
|
|
489
|
+
// Send Escape first to clear any in-progress input, then the compact command
|
|
490
|
+
session.write('\x1b');
|
|
491
|
+
await new Promise(resolve => setTimeout(resolve, 200));
|
|
492
|
+
session.write(command + '\r');
|
|
493
|
+
// After COMPACT_WAIT_MS, mark compact as no longer in progress
|
|
494
|
+
// so further threshold evaluations can proceed
|
|
495
|
+
setTimeout(() => {
|
|
496
|
+
state.compactInProgress = false;
|
|
497
|
+
}, CONTEXT_WINDOW_MONITOR_CONSTANTS.COMPACT_WAIT_MS);
|
|
498
|
+
// Broadcast compact status to frontend
|
|
499
|
+
const terminalGateway = getTerminalGateway();
|
|
500
|
+
if (terminalGateway) {
|
|
501
|
+
terminalGateway.broadcastContextWindowStatus({
|
|
502
|
+
sessionName: state.sessionName,
|
|
503
|
+
memberId: state.memberId,
|
|
504
|
+
teamId: state.teamId,
|
|
505
|
+
contextPercent: state.contextPercent,
|
|
506
|
+
level: state.level,
|
|
507
|
+
timestamp: new Date().toISOString(),
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
}
|
|
396
511
|
/**
|
|
397
512
|
* Trigger auto-recovery for a session at critical context usage.
|
|
398
513
|
*
|
|
@@ -588,12 +703,19 @@ export class ContextWindowMonitorService {
|
|
|
588
703
|
});
|
|
589
704
|
}
|
|
590
705
|
/**
|
|
591
|
-
* Periodic check for stale states and
|
|
592
|
-
*
|
|
706
|
+
* Periodic check for stale states, cleanup, compact retries, and proactive compaction.
|
|
707
|
+
*
|
|
708
|
+
* For stale sessions (no context % detected recently), resets to normal.
|
|
709
|
+
* For critical sessions with exhausted compacts, retries compact after
|
|
710
|
+
* COMPACT_RETRY_COOLDOWN_MS has elapsed since the last attempt.
|
|
711
|
+
* For all monitored sessions, checks cumulative output bytes and triggers
|
|
712
|
+
* proactive compact when threshold is exceeded.
|
|
593
713
|
*/
|
|
594
714
|
performCheck() {
|
|
595
715
|
const now = Date.now();
|
|
596
716
|
const staleThreshold = CONTEXT_WINDOW_MONITOR_CONSTANTS.STALE_DETECTION_THRESHOLD_MS;
|
|
717
|
+
// Proactive compact based on cumulative output volume
|
|
718
|
+
this.checkProactiveCompact(now);
|
|
597
719
|
for (const [sessionName, state] of this.contextStates) {
|
|
598
720
|
const timeSinceLastDetection = now - state.lastDetectedAt;
|
|
599
721
|
// Clean up stale states (no context % detected for a while)
|
|
@@ -604,9 +726,76 @@ export class ContextWindowMonitorService {
|
|
|
604
726
|
});
|
|
605
727
|
state.level = 'normal';
|
|
606
728
|
state.recoveryTriggered = false;
|
|
729
|
+
state.compactAttempts = 0;
|
|
730
|
+
state.compactInProgress = false;
|
|
731
|
+
continue;
|
|
732
|
+
}
|
|
733
|
+
// Retry compact for critical sessions after cooldown
|
|
734
|
+
if (state.level === 'critical' &&
|
|
735
|
+
!state.compactInProgress &&
|
|
736
|
+
!state.recoveryTriggered &&
|
|
737
|
+
state.compactAttempts >= CONTEXT_WINDOW_MONITOR_CONSTANTS.MAX_COMPACT_ATTEMPTS) {
|
|
738
|
+
const timeSinceLastCompact = now - state.lastCompactAt;
|
|
739
|
+
if (timeSinceLastCompact >= CONTEXT_WINDOW_MONITOR_CONSTANTS.COMPACT_RETRY_COOLDOWN_MS) {
|
|
740
|
+
this.logger.info('Retrying compact after cooldown for critical session', {
|
|
741
|
+
sessionName,
|
|
742
|
+
contextPercent: state.contextPercent,
|
|
743
|
+
compactAttempts: state.compactAttempts,
|
|
744
|
+
timeSinceLastCompactMs: timeSinceLastCompact,
|
|
745
|
+
});
|
|
746
|
+
// Reset attempts to allow one more try
|
|
747
|
+
state.compactAttempts = CONTEXT_WINDOW_MONITOR_CONSTANTS.MAX_COMPACT_ATTEMPTS - 1;
|
|
748
|
+
this.triggerCompact(state).catch((err) => {
|
|
749
|
+
this.logger.error('Compact retry failed', {
|
|
750
|
+
sessionName: state.sessionName,
|
|
751
|
+
error: err instanceof Error ? err.message : String(err),
|
|
752
|
+
});
|
|
753
|
+
});
|
|
754
|
+
}
|
|
607
755
|
}
|
|
608
756
|
}
|
|
609
757
|
}
|
|
758
|
+
/** Timestamp of last proactive compact per session for cooldown tracking */
|
|
759
|
+
proactiveCompactLastTriggered = new Map();
|
|
760
|
+
/**
|
|
761
|
+
* Check all monitored sessions for cumulative output volume and trigger
|
|
762
|
+
* proactive compact when the threshold is exceeded.
|
|
763
|
+
*
|
|
764
|
+
* @param now - Current timestamp in epoch ms
|
|
765
|
+
*/
|
|
766
|
+
checkProactiveCompact(now) {
|
|
767
|
+
const backend = this.sessionBackend || getSessionBackendSync();
|
|
768
|
+
if (!backend || !backend.getCumulativeOutputBytes || !backend.resetCumulativeOutput) {
|
|
769
|
+
return;
|
|
770
|
+
}
|
|
771
|
+
for (const [sessionName, state] of this.contextStates) {
|
|
772
|
+
if (state.compactInProgress) {
|
|
773
|
+
continue;
|
|
774
|
+
}
|
|
775
|
+
const cumulativeBytes = backend.getCumulativeOutputBytes(sessionName);
|
|
776
|
+
if (cumulativeBytes < CONTEXT_WINDOW_MONITOR_CONSTANTS.PROACTIVE_COMPACT_THRESHOLD_BYTES) {
|
|
777
|
+
continue;
|
|
778
|
+
}
|
|
779
|
+
// Check cooldown
|
|
780
|
+
const lastTriggered = this.proactiveCompactLastTriggered.get(sessionName) ?? 0;
|
|
781
|
+
if (now - lastTriggered < CONTEXT_WINDOW_MONITOR_CONSTANTS.PROACTIVE_COMPACT_COOLDOWN_MS) {
|
|
782
|
+
continue;
|
|
783
|
+
}
|
|
784
|
+
this.logger.info('Proactive compact triggered by cumulative output volume', {
|
|
785
|
+
sessionName,
|
|
786
|
+
cumulativeBytes,
|
|
787
|
+
thresholdBytes: CONTEXT_WINDOW_MONITOR_CONSTANTS.PROACTIVE_COMPACT_THRESHOLD_BYTES,
|
|
788
|
+
});
|
|
789
|
+
this.proactiveCompactLastTriggered.set(sessionName, now);
|
|
790
|
+
backend.resetCumulativeOutput(sessionName);
|
|
791
|
+
this.triggerCompact(state).catch((err) => {
|
|
792
|
+
this.logger.error('Proactive compact failed', {
|
|
793
|
+
sessionName,
|
|
794
|
+
error: err instanceof Error ? err.message : String(err),
|
|
795
|
+
});
|
|
796
|
+
});
|
|
797
|
+
}
|
|
798
|
+
}
|
|
610
799
|
/**
|
|
611
800
|
* Destroy all PTY subscriptions. Used during resetInstance.
|
|
612
801
|
*/
|
|
@@ -616,6 +805,7 @@ export class ContextWindowMonitorService {
|
|
|
616
805
|
}
|
|
617
806
|
this.sessionSubscriptions.clear();
|
|
618
807
|
this.contextStates.clear();
|
|
808
|
+
this.proactiveCompactLastTriggered.clear();
|
|
619
809
|
}
|
|
620
810
|
}
|
|
621
811
|
//# sourceMappingURL=context-window-monitor.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-window-monitor.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/context-window-monitor.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-window-monitor.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/context-window-monitor.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,13 @@ export declare class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
17
17
|
*/
|
|
18
18
|
protected getRuntimeReadyPatterns(): string[];
|
|
19
19
|
/**
|
|
20
|
-
* Gemini CLI specific exit patterns for runtime exit detection
|
|
20
|
+
* Gemini CLI specific exit patterns for runtime exit detection.
|
|
21
|
+
*
|
|
22
|
+
* Includes both clean exit patterns (e.g. "Agent powering down") and
|
|
23
|
+
* failure patterns that indicate the CLI is stuck or crashed and needs
|
|
24
|
+
* recovery (e.g. API quota exhaustion, network errors).
|
|
25
|
+
*
|
|
26
|
+
* @returns Array of RegExp patterns that match runtime exit or failure output
|
|
21
27
|
*/
|
|
22
28
|
protected getRuntimeExitPatterns(): RegExp[];
|
|
23
29
|
/**
|
|
@@ -43,6 +49,15 @@ export declare class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
43
49
|
* @param projectPath - Project directory where `.gemini/settings.json` will be created
|
|
44
50
|
*/
|
|
45
51
|
ensureGeminiMcpConfig(projectPath: string): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Ensure the project root `.env` file contains GOOGLE_GENAI_API_KEY.
|
|
54
|
+
* Gemini CLI reads this key from `.env` in the working directory.
|
|
55
|
+
* If the key exists in the process environment but not in `.env`, append it.
|
|
56
|
+
* Also ensures `.gitignore` includes `.env` to prevent accidental commits.
|
|
57
|
+
*
|
|
58
|
+
* @param projectPath - Project directory where `.env` will be created/updated
|
|
59
|
+
*/
|
|
60
|
+
private ensureGeminiEnvFile;
|
|
46
61
|
/**
|
|
47
62
|
* Check if Gemini CLI is installed and configured
|
|
48
63
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-runtime.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/gemini-runtime.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini-runtime.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/gemini-runtime.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAA4D,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGhH;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,mBAAmB;gBAChD,aAAa,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM;IAIpE,SAAS,CAAC,cAAc,IAAI,WAAW;IAIvC;;OAEG;cACa,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+B5E;;OAEG;IACH,SAAS,CAAC,uBAAuB,IAAI,MAAM,EAAE;IAW7C;;;;;;;;OAQG;IACH,SAAS,CAAC,sBAAsB,IAAI,MAAM,EAAE;IAW5C;;OAEG;IACH,SAAS,CAAC,uBAAuB,IAAI,MAAM,EAAE;IAY7C;;;;;;;;OAQG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CpF;;;;;;;OAOG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/D;;;;;;;OAOG;YACW,mBAAmB;IAoEjC;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC;QACxC,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IAgBF;;OAEG;IACG,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7D,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IAeF;;;OAGG;IACG,qBAAqB,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KAChB,CAAC;IAuFF;;;OAGG;IACG,8BAA8B,CACnC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC;QACV,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACnE,CAAC;CAmDF"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { promises as fsPromises } from 'fs';
|
|
1
2
|
import * as os from 'os';
|
|
2
3
|
import * as path from 'path';
|
|
3
4
|
import { RuntimeAgentService } from './runtime-agent.service.abstract.js';
|
|
4
|
-
import { CREWLY_CONSTANTS, RUNTIME_TYPES } from '../../constants.js';
|
|
5
|
+
import { CREWLY_CONSTANTS, RUNTIME_TYPES, GEMINI_FAILURE_PATTERNS } from '../../constants.js';
|
|
6
|
+
import { delay } from '../../utils/async.utils.js';
|
|
5
7
|
/**
|
|
6
8
|
* Gemini CLI specific runtime service implementation.
|
|
7
9
|
* Handles Gemini CLI initialization, detection, and interaction patterns.
|
|
@@ -25,12 +27,12 @@ export class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
25
27
|
const beforeOutput = this.sessionHelper.capturePane(sessionName, 20);
|
|
26
28
|
// Send the '/' key to detect changes (triggers command palette)
|
|
27
29
|
await this.sessionHelper.sendKey(sessionName, '/');
|
|
28
|
-
await
|
|
30
|
+
await delay(2000);
|
|
29
31
|
// Capture the output after sending '/'
|
|
30
32
|
const afterOutput = this.sessionHelper.capturePane(sessionName, 20);
|
|
31
33
|
// Clear the '/' by sending Backspace (safe in TUI — just deletes the character)
|
|
32
34
|
await this.sessionHelper.sendKey(sessionName, 'Backspace');
|
|
33
|
-
await
|
|
35
|
+
await delay(500);
|
|
34
36
|
const hasOutputChange = afterOutput.length - beforeOutput.length > 5;
|
|
35
37
|
this.logger.debug('Gemini detection completed', {
|
|
36
38
|
sessionName,
|
|
@@ -54,12 +56,22 @@ export class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
54
56
|
];
|
|
55
57
|
}
|
|
56
58
|
/**
|
|
57
|
-
* Gemini CLI specific exit patterns for runtime exit detection
|
|
59
|
+
* Gemini CLI specific exit patterns for runtime exit detection.
|
|
60
|
+
*
|
|
61
|
+
* Includes both clean exit patterns (e.g. "Agent powering down") and
|
|
62
|
+
* failure patterns that indicate the CLI is stuck or crashed and needs
|
|
63
|
+
* recovery (e.g. API quota exhaustion, network errors).
|
|
64
|
+
*
|
|
65
|
+
* @returns Array of RegExp patterns that match runtime exit or failure output
|
|
58
66
|
*/
|
|
59
67
|
getRuntimeExitPatterns() {
|
|
60
68
|
return [
|
|
69
|
+
// Clean exit patterns
|
|
61
70
|
/Agent powering down/i,
|
|
62
71
|
/Interaction Summary/,
|
|
72
|
+
// Gemini CLI failure/stuck patterns — CLI may crash or become
|
|
73
|
+
// unresponsive when these errors occur, requiring a restart
|
|
74
|
+
...GEMINI_FAILURE_PATTERNS,
|
|
63
75
|
];
|
|
64
76
|
}
|
|
65
77
|
/**
|
|
@@ -98,11 +110,13 @@ export class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
98
110
|
// This is done before the allowlist step because it's a filesystem operation
|
|
99
111
|
// that doesn't depend on the CLI being ready for interactive commands.
|
|
100
112
|
await this.ensureGeminiMcpConfig(effectiveProjectPath);
|
|
113
|
+
// Ensure GOOGLE_GENAI_API_KEY is in the project .env file
|
|
114
|
+
await this.ensureGeminiEnvFile(effectiveProjectPath);
|
|
101
115
|
// Wait for Gemini CLI's async auto-update check to complete before
|
|
102
116
|
// sending commands. The auto-update notification (e.g., "Automatic
|
|
103
117
|
// update failed") appears shortly after startup and can interfere
|
|
104
118
|
// with slash command processing if we send /directory add too early.
|
|
105
|
-
await
|
|
119
|
+
await delay(3000);
|
|
106
120
|
// Add ~/.crewly, the Crewly project root, and the target project to the allowlist.
|
|
107
121
|
// The target project path may differ from projectRoot when the agent works on a
|
|
108
122
|
// separate project (e.g., business_os vs crewly).
|
|
@@ -130,6 +144,82 @@ export class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
130
144
|
const settingsPath = path.join(projectPath, '.gemini', 'settings.json');
|
|
131
145
|
await this.ensureMcpConfig(settingsPath, projectPath);
|
|
132
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Ensure the project root `.env` file contains GOOGLE_GENAI_API_KEY.
|
|
149
|
+
* Gemini CLI reads this key from `.env` in the working directory.
|
|
150
|
+
* If the key exists in the process environment but not in `.env`, append it.
|
|
151
|
+
* Also ensures `.gitignore` includes `.env` to prevent accidental commits.
|
|
152
|
+
*
|
|
153
|
+
* @param projectPath - Project directory where `.env` will be created/updated
|
|
154
|
+
*/
|
|
155
|
+
async ensureGeminiEnvFile(projectPath) {
|
|
156
|
+
const apiKey = process.env.GOOGLE_GENAI_API_KEY;
|
|
157
|
+
if (!apiKey) {
|
|
158
|
+
this.logger.debug('GOOGLE_GENAI_API_KEY not found in process environment, skipping .env setup');
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const envPath = path.join(projectPath, '.env');
|
|
162
|
+
const envLine = `GOOGLE_GENAI_API_KEY="${apiKey}"`;
|
|
163
|
+
try {
|
|
164
|
+
// Check if .env already contains the key
|
|
165
|
+
let existingContent = null;
|
|
166
|
+
try {
|
|
167
|
+
existingContent = await fsPromises.readFile(envPath, 'utf8');
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// File doesn't exist yet
|
|
171
|
+
}
|
|
172
|
+
if (existingContent !== null) {
|
|
173
|
+
if (existingContent.includes('GOOGLE_GENAI_API_KEY=')) {
|
|
174
|
+
this.logger.debug('GOOGLE_GENAI_API_KEY already present in .env', { projectPath });
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
// Append to existing .env
|
|
178
|
+
const separator = existingContent.endsWith('\n') ? '' : '\n';
|
|
179
|
+
await fsPromises.appendFile(envPath, `${separator}${envLine}\n`);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
// Create new .env
|
|
183
|
+
await fsPromises.writeFile(envPath, `${envLine}\n`);
|
|
184
|
+
}
|
|
185
|
+
this.logger.info('Added GOOGLE_GENAI_API_KEY to .env', { projectPath });
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
this.logger.warn('Failed to write GOOGLE_GENAI_API_KEY to .env (non-fatal)', {
|
|
189
|
+
projectPath,
|
|
190
|
+
error: error instanceof Error ? error.message : String(error),
|
|
191
|
+
});
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
// Ensure .gitignore includes .env
|
|
195
|
+
try {
|
|
196
|
+
const gitignorePath = path.join(projectPath, '.gitignore');
|
|
197
|
+
let gitignoreContent = null;
|
|
198
|
+
try {
|
|
199
|
+
gitignoreContent = await fsPromises.readFile(gitignorePath, 'utf8');
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// File doesn't exist yet
|
|
203
|
+
}
|
|
204
|
+
if (gitignoreContent !== null) {
|
|
205
|
+
if (!gitignoreContent.split('\n').some(line => line.trim() === '.env')) {
|
|
206
|
+
const separator = gitignoreContent.endsWith('\n') ? '' : '\n';
|
|
207
|
+
await fsPromises.appendFile(gitignorePath, `${separator}.env\n`);
|
|
208
|
+
this.logger.info('Added .env to .gitignore', { projectPath });
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
await fsPromises.writeFile(gitignorePath, '.env\n');
|
|
213
|
+
this.logger.info('Created .gitignore with .env entry', { projectPath });
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
this.logger.warn('Failed to update .gitignore (non-fatal)', {
|
|
218
|
+
projectPath,
|
|
219
|
+
error: error instanceof Error ? error.message : String(error),
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
133
223
|
/**
|
|
134
224
|
* Check if Gemini CLI is installed and configured
|
|
135
225
|
*/
|
|
@@ -186,7 +276,7 @@ export class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
186
276
|
// Do NOT send Escape (defocuses TUI permanently) or Ctrl+C
|
|
187
277
|
// (triggers /quit on empty prompt).
|
|
188
278
|
await this.sessionHelper.sendEnter(sessionName);
|
|
189
|
-
await
|
|
279
|
+
await delay(1000);
|
|
190
280
|
// Capture output before sending to verify the command was processed.
|
|
191
281
|
// Use 100 lines (not 20) because Gemini CLI TUI has a fixed layout:
|
|
192
282
|
// messages area at top, input box + status at bottom (~15-20 lines).
|
|
@@ -198,7 +288,7 @@ export class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
198
288
|
const addCommand = `/directory add ${projectPath} `;
|
|
199
289
|
await this.sessionHelper.sendMessage(sessionName, addCommand);
|
|
200
290
|
// Wait for command to complete
|
|
201
|
-
await
|
|
291
|
+
await delay(2000);
|
|
202
292
|
// Verify: check if output changed (slash commands produce confirmation)
|
|
203
293
|
const afterOutput = this.sessionHelper.capturePane(sessionName, 100);
|
|
204
294
|
const outputChanged = beforeOutput !== afterOutput;
|
|
@@ -223,7 +313,7 @@ export class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
223
313
|
outputChanged,
|
|
224
314
|
});
|
|
225
315
|
// Wait before retry to let any notification/overlay clear
|
|
226
|
-
await
|
|
316
|
+
await delay(2000);
|
|
227
317
|
}
|
|
228
318
|
catch (error) {
|
|
229
319
|
this.logger.error('Failed to add project to Gemini CLI allowlist', {
|
|
@@ -281,7 +371,7 @@ export class GeminiRuntimeService extends RuntimeAgentService {
|
|
|
281
371
|
});
|
|
282
372
|
}
|
|
283
373
|
// Small delay between commands
|
|
284
|
-
await
|
|
374
|
+
await delay(500);
|
|
285
375
|
}
|
|
286
376
|
const message = `Added ${successCount}/${projectPaths.length} projects to Gemini CLI allowlist`;
|
|
287
377
|
this.logger.info('Completed adding multiple projects to Gemini CLI allowlist', {
|