crewly 1.20.196 → 1.20.198
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/roles/orchestrator/prompt.md +8 -9
- package/config/roles/team-leader/prompt.md +6 -0
- package/config/skills/agent/computer-use/SKILL.md +16 -0
- package/config/skills/agent/core/ask-owner/SKILL.md +14 -0
- package/config/skills/agent/core/ask-owner/execute.sh +19 -1
- package/config/skills/agent/core/ask-owner/execute.test.sh +12 -0
- package/config/skills/agent/core/gmail-send/SKILL.md +16 -0
- package/config/skills/agent/core/reply-channel/SKILL.md +16 -0
- package/config/skills/agent/core/slack-post/SKILL.md +16 -0
- package/config/skills/agent/core/whatsapp-send/SKILL.md +16 -0
- package/config/skills/agent/remote-browser/SKILL.md +43 -7
- package/config/skills/registry.json +7 -7
- package/dist/backend/backend/src/constants.d.ts +143 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +159 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +12 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +170 -9
- package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.js +5 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +37 -52
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.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 +13 -0
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +17 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +102 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js +5 -8
- package/dist/backend/backend/src/services/agent/agent-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +12 -0
- 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 +275 -241
- 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.map +1 -1
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js +5 -6
- package/dist/backend/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +6 -0
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +2 -1
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +12 -8
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -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 +32 -27
- package/dist/backend/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/owner-stopped.registry.d.ts +44 -0
- package/dist/backend/backend/src/services/agent/owner-stopped.registry.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/owner-stopped.registry.js +54 -0
- package/dist/backend/backend/src/services/agent/owner-stopped.registry.js.map +1 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +4 -4
- 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.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +4 -8
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +19 -4
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -5
- package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts +2 -2
- package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-approval.service.js +13 -2
- package/dist/backend/backend/src/services/browser/browser-approval.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-outbound-guard.d.ts +214 -0
- package/dist/backend/backend/src/services/browser/browser-outbound-guard.d.ts.map +1 -0
- package/dist/backend/backend/src/services/browser/browser-outbound-guard.js +466 -0
- package/dist/backend/backend/src/services/browser/browser-outbound-guard.js.map +1 -0
- package/dist/backend/backend/src/services/browser/browser-session.service.d.ts +57 -3
- package/dist/backend/backend/src/services/browser/browser-session.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-session.service.js +148 -63
- package/dist/backend/backend/src/services/browser/browser-session.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/held-action-store.d.ts +4 -0
- package/dist/backend/backend/src/services/browser/held-action-store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/held-action-store.js.map +1 -1
- package/dist/backend/backend/src/services/browser/owner-browser-input.d.ts +98 -10
- package/dist/backend/backend/src/services/browser/owner-browser-input.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/owner-browser-input.js +126 -11
- package/dist/backend/backend/src/services/browser/owner-browser-input.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-initializer.js +6 -8
- package/dist/backend/backend/src/services/cloud/cloud-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts +129 -0
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js +196 -0
- package/dist/backend/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +42 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +88 -10
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.js +5 -0
- package/dist/backend/backend/src/services/monitoring/agent-hook-state.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 +5 -9
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +11 -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 +14 -0
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts +37 -0
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js +78 -0
- package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +13 -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 +118 -105
- 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 +267 -298
- package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/backend/backend/src/services/session/tui-input-guard.d.ts +144 -0
- package/dist/backend/backend/src/services/session/tui-input-guard.d.ts.map +1 -0
- package/dist/backend/backend/src/services/session/tui-input-guard.js +312 -0
- package/dist/backend/backend/src/services/session/tui-input-guard.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +14 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +31 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +82 -4
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/trace/trace.types.d.ts +2 -2
- package/dist/backend/backend/src/services/trace/trace.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/trace/trace.types.js +4 -0
- package/dist/backend/backend/src/services/trace/trace.types.js.map +1 -1
- package/dist/backend/backend/src/services/trace/turn-origin.d.ts +70 -0
- package/dist/backend/backend/src/services/trace/turn-origin.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/turn-origin.js +198 -0
- package/dist/backend/backend/src/services/trace/turn-origin.js.map +1 -0
- package/dist/backend/backend/src/types/slack.types.d.ts +8 -0
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/terminal-string-ops.js +3 -2
- package/dist/backend/backend/src/utils/terminal-string-ops.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +143 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +159 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +12 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +275 -241
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.js +5 -6
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +6 -0
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +2 -1
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +12 -8
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +32 -27
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +4 -4
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +4 -8
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +19 -4
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -5
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts +129 -0
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js +196 -0
- package/dist/cli/backend/src/services/messaging/input-blocked-retry.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +42 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +88 -10
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +11 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +14 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +37 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +78 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +13 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts +118 -105
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-command-helper.js +267 -298
- package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
- package/dist/cli/backend/src/services/session/tui-input-guard.d.ts +144 -0
- package/dist/cli/backend/src/services/session/tui-input-guard.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/tui-input-guard.js +312 -0
- package/dist/cli/backend/src/services/session/tui-input-guard.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +14 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +31 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +82 -4
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/trace/trace.types.d.ts +2 -2
- package/dist/cli/backend/src/services/trace/trace.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/trace/trace.types.js +4 -0
- package/dist/cli/backend/src/services/trace/trace.types.js.map +1 -1
- package/dist/cli/backend/src/services/trace/turn-origin.d.ts +70 -0
- package/dist/cli/backend/src/services/trace/turn-origin.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/turn-origin.js +198 -0
- package/dist/cli/backend/src/services/trace/turn-origin.js.map +1 -0
- package/dist/cli/backend/src/types/slack.types.d.ts +8 -0
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/slack.types.js.map +1 -1
- package/dist/cli/backend/src/utils/terminal-string-ops.d.ts.map +1 -1
- package/dist/cli/backend/src/utils/terminal-string-ops.js +3 -2
- package/dist/cli/backend/src/utils/terminal-string-ops.js.map +1 -1
- package/frontend/dist/assets/index-5cbcf45b.css +42 -0
- package/frontend/dist/assets/{index-edfa8e04.js → index-63a33dbf.js} +283 -283
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts +0 -118
- package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/agent/agent-suspend.service.js +0 -304
- package/dist/cli/backend/src/services/agent/agent-suspend.service.js.map +0 -1
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts +0 -100
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.js +0 -149
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.js.map +0 -1
- package/frontend/dist/assets/index-bfa0e2e8.css +0 -42
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* @module session-command-helper
|
|
17
17
|
*/
|
|
18
18
|
import type { ISession, ISessionBackend } from './session-backend.interface.js';
|
|
19
|
+
import { type TuiInputReading, type TuiInputStage } from './tui-input-guard.js';
|
|
19
20
|
/**
|
|
20
21
|
* Key code mappings for special keys
|
|
21
22
|
*/
|
|
@@ -29,6 +30,32 @@ export declare const KEY_CODES: Record<string, string>;
|
|
|
29
30
|
export declare class SessionCommandHelper {
|
|
30
31
|
private logger;
|
|
31
32
|
private backend;
|
|
33
|
+
/**
|
|
34
|
+
* Per session: the collapsed paste marker ("[Pasted text #1 +29 lines]",
|
|
35
|
+
* "[Pasted Content 1234 chars]") the runtime showed right after the
|
|
36
|
+
* harness pasted `message`. Proof that a marker still in the box later is
|
|
37
|
+
* ours, so a lost Enter can be recovered. Shared across helper instances.
|
|
38
|
+
*/
|
|
39
|
+
private static readonly ownPasteMarkers;
|
|
40
|
+
/** Clock for the marker record (tests). */
|
|
41
|
+
static now: () => number;
|
|
42
|
+
/**
|
|
43
|
+
* Forget the recorded paste marker of a session: its runtime is being
|
|
44
|
+
* (re)started, a shell line is typed, or the session is created/killed —
|
|
45
|
+
* Claude Code's paste counter restarts at #1, and Codex markers carry only
|
|
46
|
+
* a character count, so an old record could match the owner's paste.
|
|
47
|
+
*
|
|
48
|
+
* @param sessionName - The session
|
|
49
|
+
*/
|
|
50
|
+
static forgetOwnPaste(sessionName: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* The recorded marker, while it may still be ours: at most
|
|
53
|
+
* OWN_MARKER_TTL_MS after our paste.
|
|
54
|
+
*
|
|
55
|
+
* @param sessionName - The session
|
|
56
|
+
* @returns The marker, or undefined
|
|
57
|
+
*/
|
|
58
|
+
private static ownMarkerFor;
|
|
32
59
|
constructor(backend: ISessionBackend);
|
|
33
60
|
/**
|
|
34
61
|
* Get a session by name, throwing an error if it doesn't exist.
|
|
@@ -47,15 +74,102 @@ export declare class SessionCommandHelper {
|
|
|
47
74
|
*/
|
|
48
75
|
getSession(sessionName: string): ISession | undefined;
|
|
49
76
|
/**
|
|
50
|
-
* Send a message to
|
|
51
|
-
*
|
|
52
|
-
*
|
|
77
|
+
* Send a message to an agent session and submit it with Enter — guarded.
|
|
78
|
+
*
|
|
79
|
+
* The harness only submits its own text (2026-10-03 phantom-input
|
|
80
|
+
* incident: a predicted "owner" message sitting in Claude Code's input
|
|
81
|
+
* was submitted with a delivery):
|
|
82
|
+
*
|
|
83
|
+
* 1. Before typing, the input box must be readable and empty. A leftover
|
|
84
|
+
* exact copy of this message (an earlier attempt) is cleared; anything
|
|
85
|
+
* else — someone's half-typed text, an unreadable screen — is left
|
|
86
|
+
* untouched and nothing is typed.
|
|
87
|
+
* 2. The message is pasted (bracketed paste) without Enter.
|
|
88
|
+
* 3. Enter is pressed only when the box holds exactly the message (or the
|
|
89
|
+
* runtime's collapsed "[Pasted text …]" marker). Otherwise nothing is
|
|
90
|
+
* submitted and nothing is cleared: text we cannot prove is ours is
|
|
91
|
+
* never wiped.
|
|
92
|
+
*
|
|
93
|
+
* A refusal throws `TuiInputGuardError`; agent delivery keeps the message
|
|
94
|
+
* queued and retries (AgentRegistrationService). Shell command lines
|
|
95
|
+
* typed before a runtime starts use {@link sendShellLine} instead.
|
|
53
96
|
*
|
|
54
97
|
* @param sessionName - The session to send to
|
|
55
98
|
* @param message - The message to send
|
|
56
99
|
* @throws Error if session does not exist
|
|
100
|
+
* @throws TuiInputGuardError when the box is unreadable or not ours
|
|
101
|
+
*/
|
|
102
|
+
sendMessage(sessionName: string, message: string, options?: {
|
|
103
|
+
recordPasteMarker?: boolean;
|
|
104
|
+
}): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* After a delivery: if the box still holds the collapsed marker of our
|
|
107
|
+
* own paste, the Enter was lost — press Enter once and look again. Runs
|
|
108
|
+
* whatever the caller's success checks said: a fast-reply or weak-signal
|
|
109
|
+
* check can report "delivered" while the marker is still sitting there.
|
|
110
|
+
*
|
|
111
|
+
* @param sessionName - The session
|
|
112
|
+
* @returns `clear` (no marker of ours in the box), `submitted` (Enter took
|
|
113
|
+
* it), or `stuck` (still there after one Enter — not delivered)
|
|
114
|
+
*/
|
|
115
|
+
ensureOwnPasteSubmitted(sessionName: string): Promise<'clear' | 'submitted' | 'stuck'>;
|
|
116
|
+
/**
|
|
117
|
+
* Forget recorded paste markers (tests).
|
|
118
|
+
*/
|
|
119
|
+
static resetOwnPasteMarkersForTesting(): void;
|
|
120
|
+
/**
|
|
121
|
+
* Type a command line into a plain shell and run it (paste + Enter).
|
|
122
|
+
*
|
|
123
|
+
* Only for the lines Crewly types into a session's login shell before a
|
|
124
|
+
* runtime starts there (history off, `cd`, PATH, the launch command). It
|
|
125
|
+
* does not read an input box: a shell has none. Never use it to talk to
|
|
126
|
+
* an agent — that is {@link sendMessage}.
|
|
127
|
+
*
|
|
128
|
+
* @param sessionName - The session
|
|
129
|
+
* @param line - The command line
|
|
130
|
+
*/
|
|
131
|
+
sendShellLine(sessionName: string, line: string): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* Read what an agent's input box really holds, relative to a message.
|
|
134
|
+
*
|
|
135
|
+
* Uses the backend's faint-free screen view, so ghost text (Claude Code's
|
|
136
|
+
* prompt suggestion, placeholders) reads as an empty box. Returns
|
|
137
|
+
* `unknown` when the backend has no styled capture or no input box of a
|
|
138
|
+
* known layout is on screen.
|
|
139
|
+
*
|
|
140
|
+
* @param sessionName - The session to read
|
|
141
|
+
* @param message - The harness's message to compare against ('' for none)
|
|
142
|
+
* @param stage - Why it is read (see classifyTuiInput)
|
|
143
|
+
* @returns The reading
|
|
144
|
+
*/
|
|
145
|
+
readInputBox(sessionName: string, message: string, stage?: TuiInputStage): TuiInputReading;
|
|
146
|
+
/**
|
|
147
|
+
* Empty the input box — only call it for text proven to be the harness's
|
|
148
|
+
* own. Sends Ctrl+U then Backspace (clear the line, join the empty line to
|
|
149
|
+
* the one above), re-reading after each pair, until the box reads empty;
|
|
150
|
+
* one pair per line plus a margin (verified live on Claude Code, Codex
|
|
151
|
+
* and Gemini). A box that stops being readable is not "cleared": the
|
|
152
|
+
* final reading is then `unknown`, and callers treat only `empty` as
|
|
153
|
+
* success. Never sends Escape (cancels a running Claude Code turn; twice
|
|
154
|
+
* opens Rewind) or Ctrl+C (twice exits).
|
|
155
|
+
*
|
|
156
|
+
* @param sessionName - The session
|
|
157
|
+
* @param message - The harness's message, for classification
|
|
158
|
+
* @param current - A reading just taken (saves one re-read)
|
|
159
|
+
* @returns The final reading (`empty` when cleared)
|
|
57
160
|
*/
|
|
58
|
-
|
|
161
|
+
clearInputBox(sessionName: string, message: string, current?: TuiInputReading): Promise<TuiInputReading>;
|
|
162
|
+
/**
|
|
163
|
+
* Press Enter only when the input box holds exactly the harness's text.
|
|
164
|
+
* The safe replacement for "press Enter / Tab+Enter to recover a stuck
|
|
165
|
+
* message": an empty box (which may show a ghost suggestion) or a box
|
|
166
|
+
* with anyone else's text is never submitted.
|
|
167
|
+
*
|
|
168
|
+
* @param sessionName - The session
|
|
169
|
+
* @param message - The message the harness wrote
|
|
170
|
+
* @returns The reading; Enter was pressed only when its state is `ours`
|
|
171
|
+
*/
|
|
172
|
+
submitIfInputIsOurs(sessionName: string, message: string): Promise<TuiInputReading>;
|
|
59
173
|
/**
|
|
60
174
|
* Send a key to a session
|
|
61
175
|
*
|
|
@@ -76,20 +190,6 @@ export declare class SessionCommandHelper {
|
|
|
76
190
|
* Send Escape key to a session
|
|
77
191
|
*/
|
|
78
192
|
sendEscape(sessionName: string): Promise<void>;
|
|
79
|
-
/**
|
|
80
|
-
* Gemini-specific message delivery (#130).
|
|
81
|
-
*
|
|
82
|
-
* Handles Ink TUI quirks:
|
|
83
|
-
* 1. Sends Escape to exit sub-modes (shell mode, error overlay)
|
|
84
|
-
* 2. Writes the message text
|
|
85
|
-
* 3. Uses a longer delay before Enter (Ink TUI needs processing time)
|
|
86
|
-
* 4. Verifies the message text left the input area (accepted)
|
|
87
|
-
*
|
|
88
|
-
* @param sessionName - The session to send to
|
|
89
|
-
* @param message - The message to send
|
|
90
|
-
* @returns true if post-write verification shows message was accepted
|
|
91
|
-
*/
|
|
92
|
-
sendMessageGemini(sessionName: string, message: string): Promise<boolean>;
|
|
93
193
|
/**
|
|
94
194
|
* Detect and dismiss interactive prompts (e.g., plan mode) before message delivery.
|
|
95
195
|
* Checks the last terminal output for plan mode patterns and sends Escape to exit
|
|
@@ -255,93 +355,6 @@ export declare class SessionCommandHelper {
|
|
|
255
355
|
matchedId: string;
|
|
256
356
|
buffer: string;
|
|
257
357
|
}>;
|
|
258
|
-
/**
|
|
259
|
-
* Send message and wait for delivery confirmation via events.
|
|
260
|
-
*
|
|
261
|
-
* This is the core event-driven message delivery method. It:
|
|
262
|
-
* 1. Sends the message to the terminal
|
|
263
|
-
* 2. Subscribes to output to detect confirmation patterns
|
|
264
|
-
* 3. Resolves when confirmation is detected or timeout occurs
|
|
265
|
-
*
|
|
266
|
-
* @param sessionName - The session to send to
|
|
267
|
-
* @param message - The message to send
|
|
268
|
-
* @param confirmationPattern - Pattern indicating successful delivery
|
|
269
|
-
* @param timeoutMs - Maximum time to wait for confirmation
|
|
270
|
-
* @returns Promise resolving to true if confirmed, false if timeout
|
|
271
|
-
*
|
|
272
|
-
* @example
|
|
273
|
-
* ```typescript
|
|
274
|
-
* // Send message and wait for processing indicator
|
|
275
|
-
* const confirmed = await helper.sendMessageWithConfirmation(
|
|
276
|
-
* 'agent-1',
|
|
277
|
-
* 'Hello Claude',
|
|
278
|
-
* /⠋|⠙|⠹|Thinking/,
|
|
279
|
-
* 5000
|
|
280
|
-
* );
|
|
281
|
-
* ```
|
|
282
|
-
*/
|
|
283
|
-
sendMessageWithConfirmation(sessionName: string, message: string, confirmationPattern: RegExp | string, timeoutMs?: number): Promise<boolean>;
|
|
284
|
-
/**
|
|
285
|
-
* Smart message sending with event-driven paste detection.
|
|
286
|
-
*
|
|
287
|
-
* This method intelligently handles bracketed paste mode by:
|
|
288
|
-
* 1. Sending the message text
|
|
289
|
-
* 2. Waiting for "[Pasted text" indicator (paste received)
|
|
290
|
-
* 3. Sending Enter key only after paste is confirmed
|
|
291
|
-
* 4. Optionally waiting for processing indicators
|
|
292
|
-
*
|
|
293
|
-
* This is much more reliable than fixed delays because it detects
|
|
294
|
-
* the actual terminal state rather than guessing timing.
|
|
295
|
-
*
|
|
296
|
-
* @param sessionName - The session to send to
|
|
297
|
-
* @param message - The message to send
|
|
298
|
-
* @param options - Configuration options
|
|
299
|
-
* @returns Promise with delivery result
|
|
300
|
-
*
|
|
301
|
-
* @example
|
|
302
|
-
* ```typescript
|
|
303
|
-
* const result = await helper.sendMessageSmart('agent-1', 'Hello', {
|
|
304
|
-
* waitForProcessing: true,
|
|
305
|
-
* pasteTimeout: 3000,
|
|
306
|
-
* });
|
|
307
|
-
* if (result.pasteDetected && result.processingStarted) {
|
|
308
|
-
* console.log('Message delivered and being processed');
|
|
309
|
-
* }
|
|
310
|
-
* ```
|
|
311
|
-
*/
|
|
312
|
-
sendMessageSmart(sessionName: string, message: string, options?: {
|
|
313
|
-
/** Timeout for detecting paste confirmation (ms) */
|
|
314
|
-
pasteTimeout?: number;
|
|
315
|
-
/** Timeout for detecting processing start (ms) */
|
|
316
|
-
processingTimeout?: number;
|
|
317
|
-
/** Whether to wait for processing indicators after sending */
|
|
318
|
-
waitForProcessing?: boolean;
|
|
319
|
-
/** Custom pattern for paste detection (default: /\[Pasted text/) */
|
|
320
|
-
pastePattern?: RegExp;
|
|
321
|
-
/** Custom pattern for processing detection (default: spinner/thinking) */
|
|
322
|
-
processingPattern?: RegExp;
|
|
323
|
-
/** Fallback delay if paste not detected (ms) - sends Enter anyway */
|
|
324
|
-
fallbackDelay?: number;
|
|
325
|
-
}): Promise<{
|
|
326
|
-
pasteDetected: boolean;
|
|
327
|
-
enterSent: boolean;
|
|
328
|
-
processingStarted: boolean;
|
|
329
|
-
usedFallback: boolean;
|
|
330
|
-
}>;
|
|
331
|
-
/**
|
|
332
|
-
* Send message with retry logic using smart detection.
|
|
333
|
-
*
|
|
334
|
-
* Attempts to deliver a message with intelligent retry behavior:
|
|
335
|
-
* - Uses event-driven paste detection
|
|
336
|
-
* - Retries with Enter key if message appears stuck
|
|
337
|
-
* - Detects common failure modes (prompt still visible, no response)
|
|
338
|
-
*
|
|
339
|
-
* @param sessionName - The session to send to
|
|
340
|
-
* @param message - The message to send
|
|
341
|
-
* @param maxRetries - Maximum number of retry attempts
|
|
342
|
-
* @returns Promise resolving to true if message was successfully processed
|
|
343
|
-
*/
|
|
344
|
-
sendMessageWithSmartRetry(sessionName: string, message: string, maxRetries?: number): Promise<boolean>;
|
|
345
358
|
/**
|
|
346
359
|
* Write raw data to session without Enter key.
|
|
347
360
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-command-helper.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/session/session-command-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"session-command-helper.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/session/session-command-helper.ts"],"names":[],"mappings":"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"}
|