tailii-host 0.1.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -10
- package/dist/{broker.d.ts → approval/broker.d.ts} +9 -5
- package/dist/{broker.js → approval/broker.js} +42 -6
- package/dist/approval/broker.js.map +1 -0
- package/dist/{hook.d.ts → approval/hook.d.ts} +48 -7
- package/dist/{hook.js → approval/hook.js} +359 -50
- package/dist/approval/hook.js.map +1 -0
- package/dist/backend/herdr.d.ts +260 -0
- package/dist/backend/herdr.js +838 -0
- package/dist/backend/herdr.js.map +1 -0
- package/dist/backend/sessionBackend.d.ts +81 -0
- package/dist/backend/sessionBackend.js +114 -0
- package/dist/backend/sessionBackend.js.map +1 -0
- package/dist/backend/tmux.d.ts +125 -0
- package/dist/backend/tmux.js +392 -0
- package/dist/backend/tmux.js.map +1 -0
- package/dist/{chatTailController.d.ts → chat/chatTailController.d.ts} +29 -6
- package/dist/{chatTailController.js → chat/chatTailController.js} +94 -18
- package/dist/chat/chatTailController.js.map +1 -0
- package/dist/{imageService.d.ts → chat/imageService.d.ts} +12 -1
- package/dist/{imageService.js → chat/imageService.js} +39 -11
- package/dist/chat/imageService.js.map +1 -0
- package/dist/chat/remoteQuestionMonitor.d.ts +27 -0
- package/dist/chat/remoteQuestionMonitor.js +128 -0
- package/dist/chat/remoteQuestionMonitor.js.map +1 -0
- package/dist/chat/subagentTailer.d.ts +30 -0
- package/dist/chat/subagentTailer.js +704 -0
- package/dist/chat/subagentTailer.js.map +1 -0
- package/dist/chat/subagentTranscript.d.ts +20 -0
- package/dist/chat/subagentTranscript.js +273 -0
- package/dist/chat/subagentTranscript.js.map +1 -0
- package/dist/{transcriptTailer.d.ts → chat/transcriptTailer.d.ts} +12 -1
- package/dist/{transcriptTailer.js → chat/transcriptTailer.js} +183 -10
- package/dist/chat/transcriptTailer.js.map +1 -0
- package/dist/cli.js +24 -10
- package/dist/cli.js.map +1 -1
- package/dist/codex/codexAccountUsage.d.ts +22 -0
- package/dist/codex/codexAccountUsage.js +128 -0
- package/dist/codex/codexAccountUsage.js.map +1 -0
- package/dist/codex/codexAppServer.d.ts +166 -0
- package/dist/codex/codexAppServer.js +1297 -0
- package/dist/codex/codexAppServer.js.map +1 -0
- package/dist/codex/codexNativeTurnController.d.ts +153 -0
- package/dist/codex/codexNativeTurnController.js +673 -0
- package/dist/codex/codexNativeTurnController.js.map +1 -0
- package/dist/codex/codexRolloutTailer.d.ts +100 -0
- package/dist/codex/codexRolloutTailer.js +568 -0
- package/dist/codex/codexRolloutTailer.js.map +1 -0
- package/dist/{codexSessionStore.d.ts → codex/codexSessionStore.d.ts} +10 -2
- package/dist/{codexSessionStore.js → codex/codexSessionStore.js} +184 -15
- package/dist/codex/codexSessionStore.js.map +1 -0
- package/dist/codex/codexSubagentTracker.d.ts +21 -0
- package/dist/codex/codexSubagentTracker.js +281 -0
- package/dist/codex/codexSubagentTracker.js.map +1 -0
- package/dist/codex/codexToolActivity.d.ts +69 -0
- package/dist/codex/codexToolActivity.js +425 -0
- package/dist/codex/codexToolActivity.js.map +1 -0
- package/dist/{codexUsage.d.ts → codex/codexUsage.d.ts} +1 -1
- package/dist/{codexUsage.js → codex/codexUsage.js} +19 -26
- package/dist/codex/codexUsage.js.map +1 -0
- package/dist/commands/doctor.d.ts +65 -0
- package/dist/commands/doctor.js +425 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/{hookSettings.d.ts → commands/hookSettings.d.ts} +14 -1
- package/dist/{hookSettings.js → commands/hookSettings.js} +96 -12
- package/dist/commands/hookSettings.js.map +1 -0
- package/dist/{kick.js → commands/kick.js} +16 -1
- package/dist/commands/kick.js.map +1 -0
- package/dist/{launch.d.ts → commands/launch.d.ts} +67 -5
- package/dist/commands/launch.js +716 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/legacyHomeMigration.js.map +1 -0
- package/dist/{pairingCode.d.ts → commands/pairingCode.d.ts} +29 -2
- package/dist/{pairingCode.js → commands/pairingCode.js} +120 -11
- package/dist/commands/pairingCode.js.map +1 -0
- package/dist/{pushTokenCommand.d.ts → commands/pushTokenCommand.d.ts} +1 -1
- package/dist/{pushTokenCommand.js → commands/pushTokenCommand.js} +2 -2
- package/dist/commands/pushTokenCommand.js.map +1 -0
- package/dist/commands/selfUpdate.d.ts +71 -0
- package/dist/commands/selfUpdate.js +536 -0
- package/dist/commands/selfUpdate.js.map +1 -0
- package/dist/{setup.d.ts → commands/setup.d.ts} +17 -6
- package/dist/{setup.js → commands/setup.js} +133 -75
- package/dist/commands/setup.js.map +1 -0
- package/dist/engine/context.d.ts +145 -0
- package/dist/engine/context.js +184 -0
- package/dist/engine/context.js.map +1 -0
- package/dist/engine/engine.d.ts +121 -0
- package/dist/engine/engine.js +808 -0
- package/dist/engine/engine.js.map +1 -0
- package/dist/engine/handlers/accountUsage.d.ts +53 -0
- package/dist/engine/handlers/accountUsage.js +203 -0
- package/dist/engine/handlers/accountUsage.js.map +1 -0
- package/dist/engine/handlers/claudeModels.d.ts +2 -0
- package/dist/engine/handlers/claudeModels.js +23 -0
- package/dist/engine/handlers/claudeModels.js.map +1 -0
- package/dist/engine/handlers/codex.d.ts +2 -0
- package/dist/engine/handlers/codex.js +97 -0
- package/dist/engine/handlers/codex.js.map +1 -0
- package/dist/engine/handlers/conversation.d.ts +2 -0
- package/dist/engine/handlers/conversation.js +259 -0
- package/dist/engine/handlers/conversation.js.map +1 -0
- package/dist/engine/handlers/core.d.ts +2 -0
- package/dist/engine/handlers/core.js +66 -0
- package/dist/engine/handlers/core.js.map +1 -0
- package/dist/engine/handlers/git.d.ts +2 -0
- package/dist/engine/handlers/git.js +127 -0
- package/dist/engine/handlers/git.js.map +1 -0
- package/dist/engine/handlers/index.d.ts +2 -0
- package/dist/engine/handlers/index.js +34 -0
- package/dist/engine/handlers/index.js.map +1 -0
- package/dist/engine/handlers/mode.d.ts +2 -0
- package/dist/engine/handlers/mode.js +194 -0
- package/dist/engine/handlers/mode.js.map +1 -0
- package/dist/engine/handlers/officialApps.d.ts +2 -0
- package/dist/engine/handlers/officialApps.js +79 -0
- package/dist/engine/handlers/officialApps.js.map +1 -0
- package/dist/engine/handlers/preview.d.ts +2 -0
- package/dist/engine/handlers/preview.js +59 -0
- package/dist/engine/handlers/preview.js.map +1 -0
- package/dist/engine/handlers/selfUpdate.d.ts +2 -0
- package/dist/engine/handlers/selfUpdate.js +52 -0
- package/dist/engine/handlers/selfUpdate.js.map +1 -0
- package/dist/engine/handlers/session.d.ts +2 -0
- package/dist/engine/handlers/session.js +385 -0
- package/dist/engine/handlers/session.js.map +1 -0
- package/dist/engine/handlers/usage.d.ts +2 -0
- package/dist/engine/handlers/usage.js +96 -0
- package/dist/engine/handlers/usage.js.map +1 -0
- package/dist/engine/handlers/workspace.d.ts +2 -0
- package/dist/engine/handlers/workspace.js +110 -0
- package/dist/engine/handlers/workspace.js.map +1 -0
- package/dist/engine/slashCommands.d.ts +3 -0
- package/dist/engine/slashCommands.js +211 -0
- package/dist/engine/slashCommands.js.map +1 -0
- package/dist/hub/engineRelaySocket.d.ts +58 -0
- package/dist/hub/engineRelaySocket.js +161 -0
- package/dist/hub/engineRelaySocket.js.map +1 -0
- package/dist/hub/hubClient.d.ts +28 -0
- package/dist/hub/hubClient.js +187 -0
- package/dist/hub/hubClient.js.map +1 -0
- package/dist/hub/hubDaemon.d.ts +69 -0
- package/dist/hub/hubDaemon.js +466 -0
- package/dist/hub/hubDaemon.js.map +1 -0
- package/dist/hub/hubProtocol.d.ts +161 -0
- package/dist/hub/hubProtocol.js +379 -0
- package/dist/hub/hubProtocol.js.map +1 -0
- package/dist/hub/panePreviewPump.d.ts +65 -0
- package/dist/hub/panePreviewPump.js +187 -0
- package/dist/hub/panePreviewPump.js.map +1 -0
- package/dist/hub/questionInjection.d.ts +19 -0
- package/dist/hub/questionInjection.js +126 -0
- package/dist/hub/questionInjection.js.map +1 -0
- package/dist/hub/reaper.d.ts +74 -0
- package/dist/hub/reaper.js +333 -0
- package/dist/hub/reaper.js.map +1 -0
- package/dist/hub/sessionHub.d.ts +203 -0
- package/dist/hub/sessionHub.js +1862 -0
- package/dist/hub/sessionHub.js.map +1 -0
- package/dist/protocol/common.d.ts +18 -0
- package/dist/protocol/common.js +78 -0
- package/dist/protocol/common.js.map +1 -0
- package/dist/protocol/decode.d.ts +3 -0
- package/dist/protocol/decode.js +1058 -0
- package/dist/protocol/decode.js.map +1 -0
- package/dist/protocol/encode.d.ts +3 -0
- package/dist/protocol/encode.js +84 -0
- package/dist/protocol/encode.js.map +1 -0
- package/dist/protocol/messages.d.ts +1025 -0
- package/dist/protocol/messages.js +8 -0
- package/dist/protocol/messages.js.map +1 -0
- package/dist/protocol.d.ts +4 -329
- package/dist/protocol.js +13 -531
- package/dist/protocol.js.map +1 -1
- package/dist/push/apnsConfigStore.js.map +1 -0
- package/dist/push/apnsJwtProvider.js.map +1 -0
- package/dist/{apnsSender.js.map → push/apnsSender.js.map} +1 -1
- package/dist/{approvalPushNotifier.js → push/approvalPushNotifier.js} +1 -1
- package/dist/push/approvalPushNotifier.js.map +1 -0
- package/dist/push/deviceTokenStore.js.map +1 -0
- package/dist/{pushTypes.js → push/pushTypes.js} +1 -1
- package/dist/push/pushTypes.js.map +1 -0
- package/dist/push/sendLog.js.map +1 -0
- package/dist/services/accountIdentity.d.ts +44 -0
- package/dist/services/accountIdentity.js +184 -0
- package/dist/services/accountIdentity.js.map +1 -0
- package/dist/services/claudeCredentialRefresh.d.ts +30 -0
- package/dist/services/claudeCredentialRefresh.js +345 -0
- package/dist/services/claudeCredentialRefresh.js.map +1 -0
- package/dist/services/claudeModelCatalog.d.ts +21 -0
- package/dist/services/claudeModelCatalog.js +181 -0
- package/dist/services/claudeModelCatalog.js.map +1 -0
- package/dist/{dirLister.d.ts → services/dirLister.d.ts} +9 -4
- package/dist/services/dirLister.js +169 -0
- package/dist/services/dirLister.js.map +1 -0
- package/dist/services/fileService.d.ts +10 -0
- package/dist/services/fileService.js +123 -0
- package/dist/services/fileService.js.map +1 -0
- package/dist/services/gitService.d.ts +79 -0
- package/dist/services/gitService.js +648 -0
- package/dist/services/gitService.js.map +1 -0
- package/dist/services/hostVersions.d.ts +38 -0
- package/dist/services/hostVersions.js +120 -0
- package/dist/services/hostVersions.js.map +1 -0
- package/dist/services/officialApps.d.ts +148 -0
- package/dist/services/officialApps.js +1079 -0
- package/dist/services/officialApps.js.map +1 -0
- package/dist/services/planUsageFetcher.d.ts +119 -0
- package/dist/services/planUsageFetcher.js +357 -0
- package/dist/services/planUsageFetcher.js.map +1 -0
- package/dist/services/previewServer.d.ts +31 -0
- package/dist/services/previewServer.js +233 -0
- package/dist/services/previewServer.js.map +1 -0
- package/dist/services/quicGateway.d.ts +143 -0
- package/dist/services/quicGateway.js +292 -0
- package/dist/services/quicGateway.js.map +1 -0
- package/dist/services/serveService.d.ts +50 -0
- package/dist/services/serveService.js +302 -0
- package/dist/services/serveService.js.map +1 -0
- package/dist/services/usageAggregator.js.map +1 -0
- package/dist/sessions/claudeSessionStore.d.ts +80 -0
- package/dist/sessions/claudeSessionStore.js +477 -0
- package/dist/sessions/claudeSessionStore.js.map +1 -0
- package/dist/sessions/heartbeat.d.ts +24 -0
- package/dist/sessions/heartbeat.js +86 -0
- package/dist/sessions/heartbeat.js.map +1 -0
- package/dist/sessions/liveSessionJoin.d.ts +20 -0
- package/dist/sessions/liveSessionJoin.js +80 -0
- package/dist/sessions/liveSessionJoin.js.map +1 -0
- package/dist/sessions/sessionActivityProvider.d.ts +14 -0
- package/dist/sessions/sessionActivityProvider.js +57 -0
- package/dist/sessions/sessionActivityProvider.js.map +1 -0
- package/dist/{sessionListService.d.ts → sessions/sessionListService.d.ts} +3 -3
- package/dist/{sessionListService.js → sessions/sessionListService.js} +23 -6
- package/dist/sessions/sessionListService.js.map +1 -0
- package/dist/{sessionMetadataStore.d.ts → sessions/sessionMetadataStore.d.ts} +18 -0
- package/dist/{sessionMetadataStore.js → sessions/sessionMetadataStore.js} +36 -1
- package/dist/sessions/sessionMetadataStore.js.map +1 -0
- package/dist/{sessionSearch.d.ts → sessions/sessionSearch.d.ts} +1 -1
- package/dist/sessions/sessionSearch.js.map +1 -0
- package/dist/shared/hostDisplayName.d.ts +11 -0
- package/dist/shared/hostDisplayName.js +50 -0
- package/dist/shared/hostDisplayName.js.map +1 -0
- package/dist/{lineWriter.d.ts → shared/lineWriter.d.ts} +1 -1
- package/dist/{lineWriter.js → shared/lineWriter.js} +1 -1
- package/dist/shared/lineWriter.js.map +1 -0
- package/dist/{observationLog.js.map → shared/observationLog.js.map} +1 -1
- package/dist/{paths.d.ts → shared/paths.d.ts} +7 -0
- package/dist/{paths.js → shared/paths.js} +9 -0
- package/dist/shared/paths.js.map +1 -0
- package/dist/shared/permissionMode.d.ts +10 -0
- package/dist/shared/permissionMode.js +51 -0
- package/dist/shared/permissionMode.js.map +1 -0
- package/dist/shared/skillInjection.d.ts +9 -0
- package/dist/shared/skillInjection.js +16 -0
- package/dist/shared/skillInjection.js.map +1 -0
- package/dist/shared/sleep.js.map +1 -0
- package/dist/{socketPath.d.ts → shared/socketPath.d.ts} +4 -0
- package/dist/{socketPath.js → shared/socketPath.js} +22 -0
- package/dist/shared/socketPath.js.map +1 -0
- package/dist/shared/version.js.map +1 -0
- package/package.json +13 -7
- package/dist/apnsConfigStore.js.map +0 -1
- package/dist/apnsJwtProvider.js.map +0 -1
- package/dist/approvalPushNotifier.js.map +0 -1
- package/dist/broker.js.map +0 -1
- package/dist/chatTailController.js.map +0 -1
- package/dist/claudeSessionStore.d.ts +0 -15
- package/dist/claudeSessionStore.js +0 -201
- package/dist/claudeSessionStore.js.map +0 -1
- package/dist/codexRolloutTailer.d.ts +0 -56
- package/dist/codexRolloutTailer.js +0 -303
- package/dist/codexRolloutTailer.js.map +0 -1
- package/dist/codexSessionStore.js.map +0 -1
- package/dist/codexUsage.js.map +0 -1
- package/dist/deviceTokenStore.js.map +0 -1
- package/dist/dirLister.js +0 -98
- package/dist/dirLister.js.map +0 -1
- package/dist/doctor.d.ts +0 -36
- package/dist/doctor.js +0 -162
- package/dist/doctor.js.map +0 -1
- package/dist/engine.d.ts +0 -85
- package/dist/engine.js +0 -962
- package/dist/engine.js.map +0 -1
- package/dist/hook.js.map +0 -1
- package/dist/hookSettings.js.map +0 -1
- package/dist/idleReaper.d.ts +0 -13
- package/dist/idleReaper.js +0 -30
- package/dist/idleReaper.js.map +0 -1
- package/dist/imageService.js.map +0 -1
- package/dist/kick.js.map +0 -1
- package/dist/launch.js +0 -396
- package/dist/launch.js.map +0 -1
- package/dist/legacyHomeMigration.js.map +0 -1
- package/dist/lineWriter.js.map +0 -1
- package/dist/mdnsAdvertiser.d.ts +0 -46
- package/dist/mdnsAdvertiser.js +0 -268
- package/dist/mdnsAdvertiser.js.map +0 -1
- package/dist/pairingCode.js.map +0 -1
- package/dist/paths.js.map +0 -1
- package/dist/permissionMode.d.ts +0 -8
- package/dist/permissionMode.js +0 -32
- package/dist/permissionMode.js.map +0 -1
- package/dist/planUsageFetcher.d.ts +0 -35
- package/dist/planUsageFetcher.js +0 -172
- package/dist/planUsageFetcher.js.map +0 -1
- package/dist/pushTokenCommand.js.map +0 -1
- package/dist/pushTypes.js.map +0 -1
- package/dist/sendLog.js.map +0 -1
- package/dist/sessionActivityProvider.d.ts +0 -7
- package/dist/sessionActivityProvider.js +0 -44
- package/dist/sessionActivityProvider.js.map +0 -1
- package/dist/sessionIdleTracker.d.ts +0 -19
- package/dist/sessionIdleTracker.js +0 -42
- package/dist/sessionIdleTracker.js.map +0 -1
- package/dist/sessionListService.js.map +0 -1
- package/dist/sessionMetadataStore.js.map +0 -1
- package/dist/sessionSearch.js.map +0 -1
- package/dist/setup.js.map +0 -1
- package/dist/sleep.js.map +0 -1
- package/dist/socketPath.js.map +0 -1
- package/dist/subagentTailer.d.ts +0 -15
- package/dist/subagentTailer.js +0 -399
- package/dist/subagentTailer.js.map +0 -1
- package/dist/tmux.d.ts +0 -62
- package/dist/tmux.js +0 -163
- package/dist/tmux.js.map +0 -1
- package/dist/transcriptTailer.js.map +0 -1
- package/dist/usageAggregator.js.map +0 -1
- package/dist/version.js.map +0 -1
- /package/dist/{kick.d.ts → commands/kick.d.ts} +0 -0
- /package/dist/{legacyHomeMigration.d.ts → commands/legacyHomeMigration.d.ts} +0 -0
- /package/dist/{legacyHomeMigration.js → commands/legacyHomeMigration.js} +0 -0
- /package/dist/{apnsConfigStore.d.ts → push/apnsConfigStore.d.ts} +0 -0
- /package/dist/{apnsConfigStore.js → push/apnsConfigStore.js} +0 -0
- /package/dist/{apnsJwtProvider.d.ts → push/apnsJwtProvider.d.ts} +0 -0
- /package/dist/{apnsJwtProvider.js → push/apnsJwtProvider.js} +0 -0
- /package/dist/{apnsSender.d.ts → push/apnsSender.d.ts} +0 -0
- /package/dist/{apnsSender.js → push/apnsSender.js} +0 -0
- /package/dist/{approvalPushNotifier.d.ts → push/approvalPushNotifier.d.ts} +0 -0
- /package/dist/{deviceTokenStore.d.ts → push/deviceTokenStore.d.ts} +0 -0
- /package/dist/{deviceTokenStore.js → push/deviceTokenStore.js} +0 -0
- /package/dist/{pushTypes.d.ts → push/pushTypes.d.ts} +0 -0
- /package/dist/{sendLog.d.ts → push/sendLog.d.ts} +0 -0
- /package/dist/{sendLog.js → push/sendLog.js} +0 -0
- /package/dist/{usageAggregator.d.ts → services/usageAggregator.d.ts} +0 -0
- /package/dist/{usageAggregator.js → services/usageAggregator.js} +0 -0
- /package/dist/{sessionSearch.js → sessions/sessionSearch.js} +0 -0
- /package/dist/{observationLog.d.ts → shared/observationLog.d.ts} +0 -0
- /package/dist/{observationLog.js → shared/observationLog.js} +0 -0
- /package/dist/{sleep.d.ts → shared/sleep.d.ts} +0 -0
- /package/dist/{sleep.js → shared/sleep.js} +0 -0
- /package/dist/{version.d.ts → shared/version.d.ts} +0 -0
- /package/dist/{version.js → shared/version.js} +0 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { type SessionInfo } from "../protocol.js";
|
|
2
|
+
import { SessionMetadataStore } from "../sessions/sessionMetadataStore.js";
|
|
3
|
+
import { type CapturePaneOptions, type ReattachResult } from "./tmux.js";
|
|
4
|
+
/** herdr コマンド 1 回分の実行結果。 */
|
|
5
|
+
export interface HerdrCommandResult {
|
|
6
|
+
exitCode: number;
|
|
7
|
+
stdout: string;
|
|
8
|
+
stderr: string;
|
|
9
|
+
}
|
|
10
|
+
/** herdr コマンド実行の注入可能な抽象(テストはモックを注入する)。 */
|
|
11
|
+
export type HerdrCommandRunner = (args: string[]) => Promise<HerdrCommandResult>;
|
|
12
|
+
/** herdr 実行ファイルの既定絶対パス(SSH exec は非ログインシェルで PATH 外のため絶対指定)。 */
|
|
13
|
+
export declare function defaultHerdrPath(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Tailii セッション pane を収容する herdr named session。
|
|
16
|
+
* ユーザーの default セッション(普段使いの herdr)を汚さないよう、Tailii は専用の
|
|
17
|
+
* named session(別サーバー・別ソケット `~/.config/herdr/sessions/tailii/`)に全 pane を
|
|
18
|
+
* 収容する。CLI は全操作に `--session tailii` を前置する(runner レベルで一元付与)。
|
|
19
|
+
* まとめて消すときは `herdr session stop tailii` → `herdr session delete tailii`。
|
|
20
|
+
*/
|
|
21
|
+
export declare const HERDR_TAILII_SESSION = "tailii";
|
|
22
|
+
/** herdr が導入済みか(backend_get の可用性表示・backend_set の検証に使う)。 */
|
|
23
|
+
export declare function herdrInstalled(herdrPath?: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* 実 herdr を起動する既定ランナー。herdr 非0 exit は throw せず結果で表現する。
|
|
26
|
+
* `sessionName`(既定 tailii)を `--session` として全コマンドに前置する。
|
|
27
|
+
*/
|
|
28
|
+
export declare function processHerdrCommandRunner(herdrPath?: string, sessionName?: string): HerdrCommandRunner;
|
|
29
|
+
/** HerdrSessionManager が投げる型付きエラー。 */
|
|
30
|
+
export declare class HerdrFailedError extends Error {
|
|
31
|
+
readonly args: string[];
|
|
32
|
+
readonly exitCode: number;
|
|
33
|
+
readonly stderr: string;
|
|
34
|
+
constructor(args: string[], exitCode: number, stderr: string);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 画面に選択ダイアログのフッター行があるか。チャット本文が「Enter to select」を
|
|
38
|
+
* 引用しただけの偽陽性(誤 Esc・再送スキップの実害)を避けるため、substring では
|
|
39
|
+
* なく trim 後にフッター文言で始まる行だけをダイアログとみなす。
|
|
40
|
+
*/
|
|
41
|
+
export declare function screenHasSelectionFooter(screen: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* 入力反映検証に使う probe(本文の**末尾側**)。検証不能な本文(空など)は null。
|
|
44
|
+
*
|
|
45
|
+
* 末尾側なのは composer の表示特性のため: 入力が表示高を超えると composer は下へ
|
|
46
|
+
* スクロールし**先頭行が窓外へ消える**(実測 2.1.220: 10行ペーストで先頭4行が
|
|
47
|
+
* capture から消失)。カーソルは常に末尾にあるので、末尾側の probe だけが
|
|
48
|
+
* 「見えている範囲」との照合を保証できる(先頭24字の旧 probe は多行/長文で
|
|
49
|
+
* 構造的に偽陰性 → 再投入 → 本文二重化の温床だった)。
|
|
50
|
+
*
|
|
51
|
+
* 先頭 `!`(シェルモード)は claude TUI がモード記号として吸い上げ、入力欄本文には
|
|
52
|
+
* 残らない(`!ls -la` は `! ls -la` と描画される)。単一行本文では照合キーからも
|
|
53
|
+
* 落とさないと末尾24字に `!` が含まれるとき反映検証が失敗する。
|
|
54
|
+
*/
|
|
55
|
+
export declare function typedTextProbe(text: string): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* 入力欄テキストに probe が反映されているか(折り返し非依存)。
|
|
58
|
+
* extractClaudeInputBox は表示行を trim + "\n" 連結で返すため、probe が入力欄の
|
|
59
|
+
* 行折り返しをまたぐと生の includes は絶対に一致しない(全角24字=48桁 > 内幅で必発)。
|
|
60
|
+
* この偽陰性が「反映済み本文の再投入 = 初回送信の本文二重化」の根因だった(実機5件)。
|
|
61
|
+
* 空白類(折り返しの改行・trim 痕・全角空白含む)を両辺から除去して照合する。
|
|
62
|
+
*/
|
|
63
|
+
export declare function inputBoxTextIncludesProbe(boxText: string, probe: string): boolean;
|
|
64
|
+
/** herdr CLI の JSON stdout から `result` を取り出す。JSON でない/エラー封筒は null。 */
|
|
65
|
+
export declare function parseHerdrResult(stdout: string): Record<string, unknown> | null;
|
|
66
|
+
/** `pane list` の 1 pane 分。 */
|
|
67
|
+
export interface HerdrPane {
|
|
68
|
+
paneId: string;
|
|
69
|
+
label: string | null;
|
|
70
|
+
/** pane を収容するタブ ID(タブラベル書換=session-title に使う。旧形式は null)。 */
|
|
71
|
+
tabId: string | null;
|
|
72
|
+
}
|
|
73
|
+
/** `pane list` stdout をパースする(形式不明は空配列)。 */
|
|
74
|
+
export declare function parseHerdrPaneList(stdout: string): HerdrPane[];
|
|
75
|
+
/**
|
|
76
|
+
* herdr 0.7.5 の `tab create` が自動付与する既定タブラベル(連番文字列 "1"/"2"…)か。
|
|
77
|
+
* 既定ラベルは「未命名」として扱う: hub tick の自動タイトルは上書きしてよく、
|
|
78
|
+
* 逆方向同期(displayTitle)は人為リネームと誤認して会話タイトルへ取り込んではならない。
|
|
79
|
+
*/
|
|
80
|
+
export declare function isDefaultHerdrTabLabel(label: string): boolean;
|
|
81
|
+
/** `tab list` stdout を tab_id → label のマップにパースする(形式不明は空マップ)。 */
|
|
82
|
+
export declare function parseHerdrTabLabels(stdout: string): Map<string, string>;
|
|
83
|
+
/** `workspace list` から label 一致の workspace_id を探す(不在は null)。 */
|
|
84
|
+
export declare function parseHerdrWorkspaceId(stdout: string, label: string): string | null;
|
|
85
|
+
/** `workspace create` stdout から workspace_id を取り出す(失敗は null)。 */
|
|
86
|
+
export declare function parseHerdrCreatedWorkspaceId(stdout: string): string | null;
|
|
87
|
+
/** `agent start` stdout から pane_id を取り出す(失敗は null)。 */
|
|
88
|
+
export declare function parseHerdrStartedPaneId(stdout: string): string | null;
|
|
89
|
+
/** `tab create` stdout から root pane の pane_id を取り出す(失敗は null)。 */
|
|
90
|
+
export declare function parseHerdrCreatedTabPaneId(stdout: string): string | null;
|
|
91
|
+
/**
|
|
92
|
+
* `pane get` stdout から agent_status を取り出す(判定不能は null)。
|
|
93
|
+
* 0.7.5 では `agent get <name>` が使えない(agent レジストリは herdr の自動検出のみで
|
|
94
|
+
* Tailii のセッション名を知らず agent_not_found になる)ため、pane 単位の status を読む。
|
|
95
|
+
*/
|
|
96
|
+
export declare function parseHerdrPaneAgentStatus(stdout: string): string | null;
|
|
97
|
+
/** `pane process-info` stdout から前面プロセス名を取り出す(判定不能は空文字)。 */
|
|
98
|
+
export declare function parseHerdrForegroundCommand(stdout: string): string;
|
|
99
|
+
/** herdr backend のセッション list / reattach / kill / send / read とメタデータ統合。 */
|
|
100
|
+
export declare class HerdrSessionManager {
|
|
101
|
+
private readonly runner;
|
|
102
|
+
readonly store: SessionMetadataStore;
|
|
103
|
+
private readonly captureLines;
|
|
104
|
+
private readonly protocolVersion;
|
|
105
|
+
/** sendTextSubmit の本文→CR 間隔 ms(実測 300ms 未満で CR が飲まれる。テスト注入用)。 */
|
|
106
|
+
private readonly submitDelayMs;
|
|
107
|
+
/** sendTextSubmit の CR→残留確認 間隔 ms(テスト注入用)。 */
|
|
108
|
+
private readonly submitVerifyDelayMs;
|
|
109
|
+
/** 入力欄へ本文が反映されなかったときの再投入間隔 ms(RC 切断 limbo 対策)。 */
|
|
110
|
+
private readonly inputRetryDelayMs;
|
|
111
|
+
/** clearInputBox の C-u 1回ごとの反映待ち ms(実測レイテンシ 9〜27ms。テスト注入用)。 */
|
|
112
|
+
private readonly clearKeyDelayMs;
|
|
113
|
+
/** 注入前の claude 検出待ちの上限/間隔 ms(テスト注入用)。 */
|
|
114
|
+
private readonly readyTimeoutMs;
|
|
115
|
+
private readonly readyPollMs;
|
|
116
|
+
constructor(options?: {
|
|
117
|
+
runner?: HerdrCommandRunner;
|
|
118
|
+
store?: SessionMetadataStore;
|
|
119
|
+
captureLines?: number;
|
|
120
|
+
protocolVersion?: number;
|
|
121
|
+
submitDelayMs?: number;
|
|
122
|
+
submitVerifyDelayMs?: number;
|
|
123
|
+
inputRetryDelayMs?: number;
|
|
124
|
+
clearKeyDelayMs?: number;
|
|
125
|
+
readyTimeoutMs?: number;
|
|
126
|
+
readyPollMs?: number;
|
|
127
|
+
});
|
|
128
|
+
/**
|
|
129
|
+
* herdr 担当(メタの backend=herdr)のセッションを name/cwd/alive で列挙する(name 昇順)。
|
|
130
|
+
* tmux 側と異なり herdr pane は名前で自己申告しないため、メタデータが列挙の権威。
|
|
131
|
+
* 生存は「記録済み pane ID が現存」または「pane label が session 名に一致」。
|
|
132
|
+
*/
|
|
133
|
+
list(): Promise<SessionInfo[]>;
|
|
134
|
+
/**
|
|
135
|
+
* 生存 pane の session 名 → { tabId, tabLabel } を返す(session-title の自動タイトル同期用)。
|
|
136
|
+
* pane label(= セッション解決の権威)が無い pane・タブ不明の pane は含めない。
|
|
137
|
+
*/
|
|
138
|
+
tabInfoByName(): Promise<Map<string, {
|
|
139
|
+
tabId: string;
|
|
140
|
+
label: string | null;
|
|
141
|
+
}>>;
|
|
142
|
+
/** `tab list` を tab_id → label で読む(失敗は空マップ = displayTitle 無しに倒す)。 */
|
|
143
|
+
private tabLabels;
|
|
144
|
+
/** 既存セッションへ reattach(生存: attached / 不在: session_not_found エラー封筒)。 */
|
|
145
|
+
reattach(name: string): Promise<ReattachResult>;
|
|
146
|
+
/** pane 内のエージェント生存判定。herdr エラーや空出力は二重起動を避けて true に倒す。 */
|
|
147
|
+
agentProcessAlive(name: string): Promise<boolean>;
|
|
148
|
+
/**
|
|
149
|
+
* 会話カスタムタイトルの端末表示追随(session-title): pane を収容するタブのラベルを
|
|
150
|
+
* 書き換える(`tab rename`)。pane の label はセッション解決の権威(findPane の
|
|
151
|
+
* fallback / list の生存判定)なので触らない。title 空/null は解除=セッション名へ戻す
|
|
152
|
+
* (未命名扱いになり hub tick の自動タイトルが再適用される)。
|
|
153
|
+
*/
|
|
154
|
+
setDisplayTitle(name: string, title: string | null): Promise<void>;
|
|
155
|
+
/** 指定セッションの pane のみを閉じる(herdr pane close)。 */
|
|
156
|
+
kill(name: string): Promise<void>;
|
|
157
|
+
/**
|
|
158
|
+
* 本文入力と送信確定を 1 操作で行う(chat 注入・kick 用, SessionBackend 共通面)。
|
|
159
|
+
* 実測(2026-07-22, jsonl を ground truth に検証):
|
|
160
|
+
* - 本文+CR の単一 send-text は不成立(ペースト末尾の改行として除去され本文が残る)
|
|
161
|
+
* - 分割送信でも claude TUI ブート直後は 600ms 間隔の CR すら飲まれる
|
|
162
|
+
* (アイドル時は 300ms 以上で成立。遅れて送る単発 CR は常に成立)
|
|
163
|
+
* よって「本文 → CR → 入力欄を読んで残留確認 → 残っていれば CR 再送」の確認つき
|
|
164
|
+
* リトライで確定させる。submit 済みの空入力への Enter は no-op なので二重送信は起きない。
|
|
165
|
+
*/
|
|
166
|
+
sendTextSubmit(name: string, text: string): Promise<void>;
|
|
167
|
+
/**
|
|
168
|
+
* 入力欄に probe テキストが反映されているか。
|
|
169
|
+
* ペイン履歴の同文エコー(同一メッセージの再送時など)を誤って「入力済み」と
|
|
170
|
+
* 判定しないよう、走査範囲を入力欄(末尾の罫線に挟まれた領域)に限定する。
|
|
171
|
+
* 判定不能は false。
|
|
172
|
+
*/
|
|
173
|
+
private inputBoxContainsText;
|
|
174
|
+
/**
|
|
175
|
+
* 入力欄を空にする(反映検証が偽陰性だったときの再投入前クリア/throw 前の残骸掃除)。
|
|
176
|
+
* C-u(kill-line) のみを繰り返す(実測: 2N-1 回で必ず空になる。Backspace は本文の
|
|
177
|
+
* 実文字を削るため使わない)。空にできたら true。次の場合は false を返し、呼び出し側は
|
|
178
|
+
* 再投入を諦める:
|
|
179
|
+
* - 選択/承認ダイアログ表示中(本文側の罫線を入力欄と誤認して C-u を撃ち込むと
|
|
180
|
+
* 既存の誤 Esc/誤 Continue と同型の実害になるため、書き込み自体をしない)
|
|
181
|
+
* - 入力欄が見えない(罫線が窓外・描画崩れ・capture 失敗)
|
|
182
|
+
* - 上限回数で空にならない(1回150ms×15回=2.25s。iOS の chat_send ACK 予算 18s の
|
|
183
|
+
* 内側で速やかに諦めて明示再送へ倒す)
|
|
184
|
+
*
|
|
185
|
+
* トレードオフ(意図的な設計判断): 中断直後に claude が queued 本文を composer へ
|
|
186
|
+
* 書き戻すタイミングと重なると、そのテキストも C-u で消える(receipt なしの破棄)。
|
|
187
|
+
* 再投入前クリアを省くと「本文二重化」という別のデータ破損になるため、注入経路では
|
|
188
|
+
* 「重複より欠落」を選ぶ(残存の主経路は sendTextSubmit 冒頭の Enter flush が先に守る)。
|
|
189
|
+
*/
|
|
190
|
+
private clearInputBox;
|
|
191
|
+
/**
|
|
192
|
+
* 入力欄がシェルモード(プロンプト `!`)なら Backspace でモード記号を消し、通常入力へ戻す。
|
|
193
|
+
* 本文が残っている状態では呼ばない(呼び出し元が Enter で送信し切ってから使う)。
|
|
194
|
+
*
|
|
195
|
+
* 判定不能・herdr エラーは no-op(fail-open)。pane 不在などの実エラーはここで throw せず、
|
|
196
|
+
* 続く本文注入の `send-text` 失敗として顕在化させる(この補助操作のエラーを表に出すと
|
|
197
|
+
* 「送信できない」原因が Backspace 送出の失敗に見えてしまう)。
|
|
198
|
+
*/
|
|
199
|
+
private exitShellMode;
|
|
200
|
+
/**
|
|
201
|
+
* claude TUI の選択ダイアログ(`Enter to select` フッター)が表示中か。判定不能は false。
|
|
202
|
+
*
|
|
203
|
+
* 窓は入力欄判定より狭い 30 行に据え置く(ダイアログのフッターは画面最下部にあるので
|
|
204
|
+
* 広げる必要が無い一方、閉じたダイアログの転写が viewport に残っていると誤検出し、
|
|
205
|
+
* 不要な Esc で入力欄の打ちかけを「送信されないまま」消してしまう)。
|
|
206
|
+
*/
|
|
207
|
+
private selectionDialogVisible;
|
|
208
|
+
/**
|
|
209
|
+
* claude TUI の入力準備完了(herdr の agent 検出が unknown を抜ける)を待つ。
|
|
210
|
+
* 0.7.5 で `agent get <name>` は常に agent_not_found(レジストリが herdr 自動検出のみで
|
|
211
|
+
* セッション名を知らない)になり、旧実装は毎送信 10s のタイムアウト空回りになっていた
|
|
212
|
+
* (実機FB 2026-07-30: 送信後の pending / ライブビュー点灯が遅い)。pane を解決して
|
|
213
|
+
* `pane get` の agent_status を読む。pane 不在は即 fail-open(後続 sendKeys が
|
|
214
|
+
* pane not found で正しく失敗する)。
|
|
215
|
+
*/
|
|
216
|
+
private waitForAgentReady;
|
|
217
|
+
/**
|
|
218
|
+
* claude TUI の入力欄に未送信テキストが残っているか。
|
|
219
|
+
* 送信済みメッセージのエコーも `❯` で始まるため、入力欄(末尾の罫線に挟まれた領域)
|
|
220
|
+
* だけを見る。判定不能(読取失敗・入力欄を特定できない)は false = 送信成立扱い
|
|
221
|
+
* (fail-open。誤リトライしても空入力 Enter の no-op で無害だが、無限再送はしない側に倒す)。
|
|
222
|
+
*/
|
|
223
|
+
private inputBoxHasPendingText;
|
|
224
|
+
/**
|
|
225
|
+
* 指定セッションの pane へキー/テキストを送出する。
|
|
226
|
+
* literal はテキスト送出。非 literal は herdr が受理するキー名のみ send-keys、
|
|
227
|
+
* BTab は生 Shift+Tab シーケンス、その他(数字キー等)はテキストとして送る。
|
|
228
|
+
*/
|
|
229
|
+
sendKeys(name: string, keys: string[], literal?: boolean): Promise<void>;
|
|
230
|
+
/**
|
|
231
|
+
* pane 末尾 N 行を返す(tmux capture-pane 相当。末尾空行は削る)。
|
|
232
|
+
* joinWrappedLines は herdr の recent-unwrapped(折返し結合済み出力リング)を使い、
|
|
233
|
+
* リング未充填の新規 pane では visible(viewport 全行)へフォールバックする。
|
|
234
|
+
*/
|
|
235
|
+
capturePane(name: string, options?: CapturePaneOptions): Promise<string>;
|
|
236
|
+
/**
|
|
237
|
+
* 入力欄判定用に **viewport 全体**を取る(末尾 N 行で切らない)。
|
|
238
|
+
*
|
|
239
|
+
* claude TUI の入力欄の最大高さは端末サイズにほぼ比例する(実測 2.1.220:
|
|
240
|
+
* 63 行端末で 26 行 / 120 行端末で 55 行)。固定行数の窓では大きな端末で上罫線が
|
|
241
|
+
* 窓外に出て入力欄を見失い、本文を 3 回重ね打ちして送信失敗する。窓を広く取っても
|
|
242
|
+
* `extractClaudeInputBox` は罫線で入力欄を切り出すので過検出にはならない。
|
|
243
|
+
* `--source visible` は viewport 全行を返す(`--lines` は無視される)。
|
|
244
|
+
*/
|
|
245
|
+
private captureVisibleScreen;
|
|
246
|
+
private readPane;
|
|
247
|
+
/**
|
|
248
|
+
* tailii セッションの server を pane ゼロのときだけ停止する(reaper の空サーバー回収)。
|
|
249
|
+
* tmux server の「セッションゼロで自動終了」に対応する挙動。launch 側に ensure(不在なら
|
|
250
|
+
* detached 起動)があるため、停止しても次のセッション起動で自動復帰する。
|
|
251
|
+
* ユーザーが tailii セッション内に手動 pane を作っていた場合は停止しない(pane 総数で判定)。
|
|
252
|
+
*/
|
|
253
|
+
stopServerIfEmpty(): Promise<void>;
|
|
254
|
+
/** 生存 pane の一覧。herdr server 未起動などの失敗は空集合として扱う(tmux `ls` と同じ流儀)。 */
|
|
255
|
+
private livePanes;
|
|
256
|
+
/** セッション名の現存 pane を解決する(記録済み pane ID 優先、無ければ label 一致)。 */
|
|
257
|
+
private findPane;
|
|
258
|
+
/** 入出力 target の pane ID(現存しなければ null)。 */
|
|
259
|
+
private paneTarget;
|
|
260
|
+
}
|