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,259 @@
|
|
|
1
|
+
// engine/handlers/conversation.ts
|
|
2
|
+
// 会話まわり: 本文送信(chat_send, Claude)・設問回答・サブエージェント履歴・
|
|
3
|
+
// 会話一覧(claude+codex マージ)・本文検索・画像オンデマンド配信。
|
|
4
|
+
import { randomUUID } from "node:crypto";
|
|
5
|
+
import * as fs from "node:fs";
|
|
6
|
+
import * as os from "node:os";
|
|
7
|
+
import * as path from "node:path";
|
|
8
|
+
import { PROTOCOL_V2 } from "../../protocol.js";
|
|
9
|
+
import { annotateLiveSessions, buildLiveSessionIndex, } from "../../sessions/liveSessionJoin.js";
|
|
10
|
+
import { searchClaudeSessions } from "../../sessions/sessionSearch.js";
|
|
11
|
+
import { engineDiag, subscribeConversation, writeError } from "../context.js";
|
|
12
|
+
/** chat_send 経路の常時診断ログ(pending 固まり事案の事後解析用)。失敗しても本処理を妨げない。 */
|
|
13
|
+
function chatSendDiag(message) {
|
|
14
|
+
try {
|
|
15
|
+
fs.appendFileSync(path.join(os.homedir(), ".tailii", "chat-send.log"), `[${new Date().toISOString()} pid=${process.pid}] ${message}\n`);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// 診断ログは best-effort。
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export const conversationHandlers = {
|
|
22
|
+
session_preview_watch: (message, ctx) => {
|
|
23
|
+
// 一覧 Mission Control: 一覧表示中だけ有効化される。応答不要(冪等・再入場で再送)。
|
|
24
|
+
ctx.listPreviewWatch.enabled = message.enabled;
|
|
25
|
+
engineDiag(`session_preview_watch enabled=${message.enabled}`);
|
|
26
|
+
ctx.hubLink.send({ type: "session_preview_watch", enabled: message.enabled });
|
|
27
|
+
},
|
|
28
|
+
chat_send: (message, ctx) => {
|
|
29
|
+
const { writer, state, metadataStore } = ctx;
|
|
30
|
+
const v = state.negotiatedVersion;
|
|
31
|
+
const meta = metadataStore?.get(message.session) ?? null;
|
|
32
|
+
if (meta?.agent === "codex") {
|
|
33
|
+
writeError(writer, v, message.id, "chat_send_unsupported", "Codex セッションは codex_turn_start を使用してください。");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// chat_send はチャット画面を前面表示した状態でしか届かない。engine 再生成や Hub 再起動の
|
|
37
|
+
// 狭間で前面購読(preview=true)が失われたままだと、本文は background 購読の押し込みで
|
|
38
|
+
// 進むのにライブビュー(pane_preview)だけ消灯し続ける。ここで前面購読を自己修復する。
|
|
39
|
+
if (ctx.activeChatSession.name !== message.session) {
|
|
40
|
+
chatSendDiag(`heal subscribe session=${message.session} previousActive=${ctx.activeChatSession.name ?? "nil"}`);
|
|
41
|
+
subscribeConversation(ctx, message.session);
|
|
42
|
+
}
|
|
43
|
+
// Hub は設問表示中、durable queue を保持したまま pane 注入可能になるまで応答を
|
|
44
|
+
// 保留する。read loop 自体がこの RPC を await すると、後続 question_answer を読めず
|
|
45
|
+
// 循環待ちになるため相関処理だけを非同期化する。ACK は注入完了の意味を維持する。
|
|
46
|
+
// timeout は無限にしない: hub 側で応答が失われた場合にバブルが永遠に pending の
|
|
47
|
+
// まま固まる(実障害)。アプリは durable Outbox + 同一 clientMessageId 再送で
|
|
48
|
+
// 冪等に回復するため、長めの上限で失敗を返す方が安全。
|
|
49
|
+
void (async () => {
|
|
50
|
+
chatSendDiag(`recv id=${message.id} session=${message.session} cmid=${message.clientMessageId}`);
|
|
51
|
+
try {
|
|
52
|
+
const result = await ctx.hubRpc({ type: "chat_send", id: message.id, session: message.session,
|
|
53
|
+
clientMessageId: message.clientMessageId, text: message.text,
|
|
54
|
+
...(message.explicitRetry === true ? { explicitRetry: true } : {}) }, message.id, 90_000);
|
|
55
|
+
chatSendDiag(`result id=${result.id} status=${result.status}`);
|
|
56
|
+
writer.write({ type: "chat_send_result", v, id: result.id, status: result.status,
|
|
57
|
+
...(result.error !== undefined ? { error: result.error } : {}) });
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
chatSendDiag(`failed id=${message.id} error=${String(error).slice(0, 120)}`);
|
|
61
|
+
writeError(writer, v, message.id, "chat_send_failed", String(error));
|
|
62
|
+
}
|
|
63
|
+
})();
|
|
64
|
+
},
|
|
65
|
+
pending_message_delete: (message, ctx) => {
|
|
66
|
+
const { writer, state } = ctx;
|
|
67
|
+
const v = state.negotiatedVersion;
|
|
68
|
+
void (async () => {
|
|
69
|
+
try {
|
|
70
|
+
const result = await ctx.hubRpc({
|
|
71
|
+
type: "pending_message_delete",
|
|
72
|
+
id: message.id,
|
|
73
|
+
session: message.session,
|
|
74
|
+
clientMessageId: message.clientMessageId,
|
|
75
|
+
kind: message.kind,
|
|
76
|
+
}, message.id, 5_000);
|
|
77
|
+
writer.write({
|
|
78
|
+
type: "pending_message_delete_result",
|
|
79
|
+
v,
|
|
80
|
+
id: result.id,
|
|
81
|
+
status: result.status,
|
|
82
|
+
...(result.error !== undefined ? { error: result.error } : {}),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
writeError(writer, v, message.id, "pending_message_delete_failed", String(error));
|
|
87
|
+
}
|
|
88
|
+
})();
|
|
89
|
+
},
|
|
90
|
+
question_answer: async (message, ctx) => {
|
|
91
|
+
const { writer, state } = ctx;
|
|
92
|
+
const v = state.negotiatedVersion;
|
|
93
|
+
try {
|
|
94
|
+
const requestId = randomUUID();
|
|
95
|
+
const result = await ctx.hubRpc({ type: "question_answer_submit", id: requestId, session: message.session,
|
|
96
|
+
questionId: message.id, answers: message.answers }, requestId, 2_000);
|
|
97
|
+
if (result.status === "accepted") {
|
|
98
|
+
writer.write({ type: "remote_pending_cleared", v, id: message.id,
|
|
99
|
+
session: message.session, kind: "question" });
|
|
100
|
+
}
|
|
101
|
+
else if (result.status === "already_resolved") {
|
|
102
|
+
// 送信失敗(要リトライ)と区別できるコードで返す。iOS はこのコードでは
|
|
103
|
+
// 設問シートを復元しない(他所で回答済みの正常系, question-answer-retry)。
|
|
104
|
+
writeError(writer, v, message.id, "question_already_answered", "この設問は既に回答済みです。");
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
writeError(writer, v, message.id, "question_answer_failed", "設問が見つかりませんでした。時間をおいて再試行してください。");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
writeError(writer, v, message.id, "question_answer_failed", String(error));
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
subagent_transcript_request: async (message, ctx) => {
|
|
115
|
+
const { writer } = ctx;
|
|
116
|
+
const session = ctx.activeChatSession.name;
|
|
117
|
+
let result = {
|
|
118
|
+
type: "subagent_transcript_response",
|
|
119
|
+
v: PROTOCOL_V2,
|
|
120
|
+
id: message.id,
|
|
121
|
+
nodeId: message.nodeId,
|
|
122
|
+
entries: [],
|
|
123
|
+
omitted: 0,
|
|
124
|
+
};
|
|
125
|
+
if (session !== null) {
|
|
126
|
+
try {
|
|
127
|
+
const response = await ctx.hubRpc({
|
|
128
|
+
type: "conversation_subagent_transcript_request",
|
|
129
|
+
id: message.id,
|
|
130
|
+
session,
|
|
131
|
+
nodeId: message.nodeId,
|
|
132
|
+
}, message.id, 1_500);
|
|
133
|
+
result = response.payload;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Hub 不達・対象 tail 不在は空応答にして、iOS の 10 秒待ちを発生させない。
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
writer.write(result);
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
process.stderr.write(`[tailii-host engine] subagent_transcript_response 書込失敗: ${String(error)}\n`);
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
claude_session_list_request: async (message, ctx) => {
|
|
147
|
+
const { writer, state } = ctx;
|
|
148
|
+
const v = state.negotiatedVersion;
|
|
149
|
+
// 会話一覧: claude(jsonl) + codex(rollout) をマージし updatedAt 降順で返す(agent-tag)。
|
|
150
|
+
// store 未注入時はその分を空一覧扱い(後方互換 — 会話機能なし)。
|
|
151
|
+
engineDiag(`claude_session_list_request id=${message.id}`);
|
|
152
|
+
const claudeSessions = ctx.claudeSessionStore?.list() ?? [];
|
|
153
|
+
const codexSessions = ctx.codexSessionStore === null
|
|
154
|
+
? []
|
|
155
|
+
: ctx.codexAppServer === null
|
|
156
|
+
? ctx.codexSessionStore.list()
|
|
157
|
+
: await ctx.codexSessionStore.listWithAppServer(ctx.codexAppServer);
|
|
158
|
+
const sessions = [...claudeSessions, ...codexSessions].sort((lhs, rhs) => {
|
|
159
|
+
const l = lhs.updatedAt ?? Number.MIN_SAFE_INTEGER;
|
|
160
|
+
const r = rhs.updatedAt ?? Number.MIN_SAFE_INTEGER;
|
|
161
|
+
if (l !== r)
|
|
162
|
+
return r - l;
|
|
163
|
+
return lhs.sessionId < rhs.sessionId ? -1 : lhs.sessionId > rhs.sessionId ? 1 : 0;
|
|
164
|
+
});
|
|
165
|
+
// live-pill: 生存セッションを 1 回だけ列挙し、会話 id + agent で各行へ join する。
|
|
166
|
+
// 失敗時は annotate なしで返し、`liveSessionsResolved` も載せない(嘘の「全停止」を出さない)。
|
|
167
|
+
let annotated = sessions;
|
|
168
|
+
let liveResolved = false;
|
|
169
|
+
try {
|
|
170
|
+
const live = await ctx.sessionManager.list();
|
|
171
|
+
const index = buildLiveSessionIndex(live, (name) => ctx.metadataStore?.get(name)?.createdAt ?? null);
|
|
172
|
+
annotated = annotateLiveSessions(sessions, index);
|
|
173
|
+
liveResolved = true;
|
|
174
|
+
engineDiag(`claude_session_list live join count=${index.size}`);
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
engineDiag(`claude_session_list live join 失敗: ${String(error)}`);
|
|
178
|
+
}
|
|
179
|
+
engineDiag(`claude_session_list_response id=${message.id} count=${sessions.length} liveResolved=${liveResolved}`);
|
|
180
|
+
try {
|
|
181
|
+
writer.write({
|
|
182
|
+
type: "claude_session_list_response", v, id: message.id, claudeSessions: annotated,
|
|
183
|
+
...(liveResolved ? { liveSessionsResolved: true } : {}),
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
process.stderr.write(`[tailii-host engine] claude_session_list_response 書込失敗: ${String(error)}\n`);
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
codex_thread_title_set: async (message, ctx) => {
|
|
191
|
+
const { writer, state, codexAppServer } = ctx;
|
|
192
|
+
const v = state.negotiatedVersion;
|
|
193
|
+
if (codexAppServer === null) {
|
|
194
|
+
writer.write({
|
|
195
|
+
type: "codex_thread_title_set_result",
|
|
196
|
+
v,
|
|
197
|
+
id: message.id,
|
|
198
|
+
ok: false,
|
|
199
|
+
error: "Codex App Server is unavailable",
|
|
200
|
+
});
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
try {
|
|
204
|
+
await codexAppServer.setThreadName(message.threadId, message.title);
|
|
205
|
+
writer.write({
|
|
206
|
+
type: "codex_thread_title_set_result",
|
|
207
|
+
v,
|
|
208
|
+
id: message.id,
|
|
209
|
+
ok: true,
|
|
210
|
+
error: null,
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
writer.write({
|
|
215
|
+
type: "codex_thread_title_set_result",
|
|
216
|
+
v,
|
|
217
|
+
id: message.id,
|
|
218
|
+
ok: false,
|
|
219
|
+
error: String(error),
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
session_search_request: (message, ctx) => {
|
|
224
|
+
const { writer, state } = ctx;
|
|
225
|
+
const v = state.negotiatedVersion;
|
|
226
|
+
// Claude 会話本文検索。長時間 read loop を塞がないよう検索関数側で件数/時間/読取量を制限する。
|
|
227
|
+
engineDiag(`session_search_request id=${message.id} query=${message.query}`);
|
|
228
|
+
const response = ctx.claudeSessionStore !== null
|
|
229
|
+
? searchClaudeSessions(ctx.claudeSessionStore, message.query, { limit: message.limit })
|
|
230
|
+
: { results: [], stats: { scannedFiles: 0, truncated: false } };
|
|
231
|
+
engineDiag(`session_search_response id=${message.id} count=${response.results.length} scanned=${response.stats.scannedFiles} truncated=${response.stats.truncated}`);
|
|
232
|
+
try {
|
|
233
|
+
writer.write({ type: "session_search_response", v, id: message.id, results: response.results });
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
process.stderr.write(`[tailii-host engine] session_search_response 書込失敗: ${String(error)}\n`);
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
image_fetch_request: (message, ctx) => {
|
|
240
|
+
const { writer, state } = ctx;
|
|
241
|
+
const v = state.negotiatedVersion;
|
|
242
|
+
// 原本オンデマンド分割配信。index 逆引きし、分割 image_fetch_response を順に書く。
|
|
243
|
+
if (ctx.imageService === null) {
|
|
244
|
+
// 未注入時は画像を扱わない(後方互換)。要求元が沈黙で待たないよう error を返す。
|
|
245
|
+
writeError(writer, v, message.id, "image_not_found", "画像機能は無効です。");
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
for (const response of ctx.imageService.fetch(message.id)) {
|
|
249
|
+
try {
|
|
250
|
+
writer.write(response);
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
process.stderr.write(`[tailii-host engine] image_fetch_response 書込失敗: ${String(error)}\n`);
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
//# sourceMappingURL=conversation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../../src/engine/handlers/conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// engine/handlers/core.ts
|
|
2
|
+
// チャネル制御と host 設定: バージョン交渉(channel_hello)と
|
|
3
|
+
// 端末バックエンド設定の読み書き(backend_get/backend_set, session-backend)。
|
|
4
|
+
import { engineDiag } from "../context.js";
|
|
5
|
+
export const coreHandlers = {
|
|
6
|
+
channel_hello: (message, ctx) => {
|
|
7
|
+
const { state } = ctx;
|
|
8
|
+
// 採用版 = min(自分の maxVersion, 相手の maxVersion)(4.3)。
|
|
9
|
+
state.negotiatedVersion = Math.min(state.ownMaxVersion, message.maxVersion);
|
|
10
|
+
process.stderr.write(`[tailii-host engine] channel_hello negotiated v=${state.negotiatedVersion}\n`);
|
|
11
|
+
},
|
|
12
|
+
backend_get_request: (message, ctx) => {
|
|
13
|
+
const { writer, state } = ctx;
|
|
14
|
+
const v = state.negotiatedVersion;
|
|
15
|
+
// 端末バックエンド設定の読み取り(アプリ設定画面, session-backend)。
|
|
16
|
+
engineDiag(`backend_get_request id=${message.id}`);
|
|
17
|
+
writer.write({
|
|
18
|
+
type: "backend_get_response",
|
|
19
|
+
v,
|
|
20
|
+
id: message.id,
|
|
21
|
+
backend: ctx.backendKind(),
|
|
22
|
+
herdrInstalled: ctx.herdrInstalledProbe(),
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
backend_set_request: (message, ctx) => {
|
|
26
|
+
const { writer, state } = ctx;
|
|
27
|
+
const v = state.negotiatedVersion;
|
|
28
|
+
// 端末バックエンド設定の書き込み。稼働系は常時 Composite なので再起動不要、
|
|
29
|
+
// 「次に起動するセッション」から反映される。herdr 未導入時は書かずに失敗を返す。
|
|
30
|
+
engineDiag(`backend_set_request id=${message.id} backend=${message.backend}`);
|
|
31
|
+
if (message.backend === "herdr" && !ctx.herdrInstalledProbe()) {
|
|
32
|
+
writer.write({
|
|
33
|
+
type: "backend_set_response",
|
|
34
|
+
v,
|
|
35
|
+
id: message.id,
|
|
36
|
+
ok: false,
|
|
37
|
+
backend: ctx.backendKind(),
|
|
38
|
+
error: "herdr が見つかりません(~/.local/bin/herdr)。導入後に切り替えてください。",
|
|
39
|
+
});
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
ctx.backendWriter(message.backend);
|
|
44
|
+
writer.write({
|
|
45
|
+
type: "backend_set_response",
|
|
46
|
+
v,
|
|
47
|
+
id: message.id,
|
|
48
|
+
ok: true,
|
|
49
|
+
backend: message.backend,
|
|
50
|
+
error: null,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
engineDiag(`backend_set_response 失敗 id=${message.id}: ${String(error)}`);
|
|
55
|
+
writer.write({
|
|
56
|
+
type: "backend_set_response",
|
|
57
|
+
v,
|
|
58
|
+
id: message.id,
|
|
59
|
+
ok: false,
|
|
60
|
+
backend: ctx.backendKind(),
|
|
61
|
+
error: String(error),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/engine/handlers/core.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,2CAA2C;AAC3C,6DAA6D;AAE7D,OAAO,EAAE,UAAU,EAAwB,MAAM,eAAe,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAoB;IAC3C,aAAa,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;QAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QACtB,kDAAkD;QAClD,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mDAAmD,KAAK,CAAC,iBAAiB,IAAI,CAC/E,CAAC;IACJ,CAAC;IAED,mBAAmB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAClC,6CAA6C;QAC7C,UAAU,CAAC,0BAA0B,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC;YACX,IAAI,EAAE,sBAAsB;YAC5B,CAAC;YACD,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;YAC1B,cAAc,EAAE,GAAG,CAAC,mBAAmB,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;QACpC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC;QAClC,6CAA6C;QAC7C,6CAA6C;QAC7C,UAAU,CAAC,0BAA0B,OAAO,CAAC,EAAE,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9E,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC9D,MAAM,CAAC,KAAK,CAAC;gBACX,IAAI,EAAE,sBAAsB;gBAC5B,CAAC;gBACD,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC1B,KAAK,EAAE,mDAAmD;aAC3D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC;gBACX,IAAI,EAAE,sBAAsB;gBAC5B,CAAC;gBACD,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,EAAE,EAAE,IAAI;gBACR,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,8BAA8B,OAAO,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,KAAK,CAAC;gBACX,IAAI,EAAE,sBAAsB;gBAC5B,CAAC;gBACD,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC1B,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// engine/handlers/git.ts
|
|
2
|
+
// git ブラウズ/操作: status・diff・log・branch 一覧・checkout・discard・init・
|
|
3
|
+
// worktree 作成/削除。失敗は各 response の空/ok=false 形で返し error 封筒にしない。
|
|
4
|
+
import { gitBranchList, gitCheckout, gitDiff, gitDiscard, gitInit, gitLog, gitStatus, gitWorktreeCreate, gitWorktreeRemove, } from "../../services/gitService.js";
|
|
5
|
+
import { engineDiag } from "../context.js";
|
|
6
|
+
export const gitHandlers = {
|
|
7
|
+
git_status_request: async (message, ctx) => {
|
|
8
|
+
const { writer, state } = ctx;
|
|
9
|
+
const v = state.negotiatedVersion;
|
|
10
|
+
engineDiag(`git_status_request id=${message.id} path=${message.path}`);
|
|
11
|
+
try {
|
|
12
|
+
writer.write({ type: "git_status_response", v, id: message.id, ...await gitStatus(message.path) });
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
engineDiag(`git_status_response 失敗 id=${message.id}: ${String(error)}`);
|
|
16
|
+
writer.write({
|
|
17
|
+
type: "git_status_response", v, id: message.id, isRepo: false,
|
|
18
|
+
branch: "", upstream: null, ahead: 0, behind: 0, files: [],
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
git_diff_request: async (message, ctx) => {
|
|
23
|
+
const { writer, state } = ctx;
|
|
24
|
+
const v = state.negotiatedVersion;
|
|
25
|
+
try {
|
|
26
|
+
const response = await gitDiff(message.path, {
|
|
27
|
+
file: message.file, staged: message.staged, commit: message.commit,
|
|
28
|
+
});
|
|
29
|
+
writer.write({ type: "git_diff_response", v, id: message.id, ...response });
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
engineDiag(`git_diff_response 失敗 id=${message.id}: ${String(error)}`);
|
|
33
|
+
writer.write({ type: "git_diff_response", v, id: message.id, isRepo: false, diff: "", truncated: false });
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
git_log_request: async (message, ctx) => {
|
|
37
|
+
const { writer, state } = ctx;
|
|
38
|
+
const v = state.negotiatedVersion;
|
|
39
|
+
try {
|
|
40
|
+
const response = await gitLog(message.path, message.limit);
|
|
41
|
+
writer.write({ type: "git_log_response", v, id: message.id, ...response });
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
engineDiag(`git_log_response 失敗 id=${message.id}: ${String(error)}`);
|
|
45
|
+
writer.write({ type: "git_log_response", v, id: message.id, isRepo: false, commits: [] });
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
git_branch_list_request: async (message, ctx) => {
|
|
49
|
+
const { writer, state } = ctx;
|
|
50
|
+
const v = state.negotiatedVersion;
|
|
51
|
+
try {
|
|
52
|
+
const response = await gitBranchList(message.path);
|
|
53
|
+
writer.write({ type: "git_branch_list_response", v, id: message.id, ...response });
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
engineDiag(`git_branch_list_response 失敗 id=${message.id}: ${String(error)}`);
|
|
57
|
+
writer.write({ type: "git_branch_list_response", v, id: message.id, isRepo: false, branches: [] });
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
git_checkout_request: async (message, ctx) => {
|
|
61
|
+
const { writer, state } = ctx;
|
|
62
|
+
const v = state.negotiatedVersion;
|
|
63
|
+
try {
|
|
64
|
+
const response = await gitCheckout(message.path, message.branch, message.create);
|
|
65
|
+
writer.write({ type: "git_checkout_response", v, id: message.id, ...response });
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
engineDiag(`git_checkout_response 失敗 id=${message.id}: ${String(error)}`);
|
|
69
|
+
writer.write({
|
|
70
|
+
type: "git_checkout_response", v, id: message.id,
|
|
71
|
+
ok: false, branch: message.branch, error: String(error),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
git_discard_request: async (message, ctx) => {
|
|
76
|
+
const { writer, state } = ctx;
|
|
77
|
+
const v = state.negotiatedVersion;
|
|
78
|
+
try {
|
|
79
|
+
const response = await gitDiscard(message.path, message.files);
|
|
80
|
+
writer.write({ type: "git_discard_response", v, id: message.id, ...response });
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
engineDiag(`git_discard_response 失敗 id=${message.id}: ${String(error)}`);
|
|
84
|
+
writer.write({ type: "git_discard_response", v, id: message.id, ok: false, error: String(error) });
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
git_init_request: async (message, ctx) => {
|
|
88
|
+
const { writer, state } = ctx;
|
|
89
|
+
const v = state.negotiatedVersion;
|
|
90
|
+
try {
|
|
91
|
+
const response = await gitInit(message.path);
|
|
92
|
+
writer.write({ type: "git_init_response", v, id: message.id, ...response });
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
engineDiag(`git_init_response 失敗 id=${message.id}: ${String(error)}`);
|
|
96
|
+
writer.write({ type: "git_init_response", v, id: message.id, ok: false, error: String(error) });
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
git_worktree_create_request: async (message, ctx) => {
|
|
100
|
+
const { writer, state } = ctx;
|
|
101
|
+
const v = state.negotiatedVersion;
|
|
102
|
+
try {
|
|
103
|
+
const response = await gitWorktreeCreate(message.path, message.baseBranch);
|
|
104
|
+
writer.write({ type: "git_worktree_create_response", v, id: message.id, ...response });
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
engineDiag(`git_worktree_create_response 失敗 id=${message.id}: ${String(error)}`);
|
|
108
|
+
writer.write({
|
|
109
|
+
type: "git_worktree_create_response", v, id: message.id,
|
|
110
|
+
ok: false, branch: "", worktreePath: "", error: String(error),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
git_worktree_remove_request: async (message, ctx) => {
|
|
115
|
+
const { writer, state } = ctx;
|
|
116
|
+
const v = state.negotiatedVersion;
|
|
117
|
+
try {
|
|
118
|
+
const response = await gitWorktreeRemove(message.path, message.force);
|
|
119
|
+
writer.write({ type: "git_worktree_remove_response", v, id: message.id, ...response });
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
engineDiag(`git_worktree_remove_response 失敗 id=${message.id}: ${String(error)}`);
|
|
123
|
+
writer.write({ type: "git_worktree_remove_response", v, id: message.id, ok: false, error: String(error) });
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/engine/handlers/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// engine/handlers/index.ts
|
|
2
|
+
// 全ドメインのハンドラを 1 つの registry に合成する。handleLine(engine.ts)は
|
|
3
|
+
// decode 済み ControlMessage の type でここから引く。1 type = 1 ハンドラ
|
|
4
|
+
// (重複キーは後勝ちになるため、追加時は既存ドメインとの重複に注意)。
|
|
5
|
+
import { createAccountUsageHandlers } from "./accountUsage.js";
|
|
6
|
+
import { claudeModelHandlers } from "./claudeModels.js";
|
|
7
|
+
import { codexHandlers } from "./codex.js";
|
|
8
|
+
import { conversationHandlers } from "./conversation.js";
|
|
9
|
+
import { coreHandlers } from "./core.js";
|
|
10
|
+
import { gitHandlers } from "./git.js";
|
|
11
|
+
import { modeHandlers } from "./mode.js";
|
|
12
|
+
import { officialAppHandlers } from "./officialApps.js";
|
|
13
|
+
import { previewHandlers } from "./preview.js";
|
|
14
|
+
import { selfUpdateHandlers } from "./selfUpdate.js";
|
|
15
|
+
import { sessionHandlers } from "./session.js";
|
|
16
|
+
import { usageHandlers } from "./usage.js";
|
|
17
|
+
import { workspaceHandlers } from "./workspace.js";
|
|
18
|
+
export const ENGINE_HANDLERS = {
|
|
19
|
+
...coreHandlers,
|
|
20
|
+
...sessionHandlers,
|
|
21
|
+
...conversationHandlers,
|
|
22
|
+
...codexHandlers,
|
|
23
|
+
...claudeModelHandlers,
|
|
24
|
+
...officialAppHandlers,
|
|
25
|
+
...modeHandlers,
|
|
26
|
+
...usageHandlers,
|
|
27
|
+
// TTL メモを閉包に持つため、registry 合成時に 1 インスタンスだけ作る(プロセス内で共有)。
|
|
28
|
+
...createAccountUsageHandlers(),
|
|
29
|
+
...workspaceHandlers,
|
|
30
|
+
...gitHandlers,
|
|
31
|
+
...previewHandlers,
|
|
32
|
+
...selfUpdateHandlers,
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/handlers/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,yDAAyD;AACzD,0DAA0D;AAC1D,qCAAqC;AAGrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C,GAAG,YAAY;IACf,GAAG,eAAe;IAClB,GAAG,oBAAoB;IACvB,GAAG,aAAa;IAChB,GAAG,mBAAmB;IACtB,GAAG,mBAAmB;IACtB,GAAG,YAAY;IACf,GAAG,aAAa;IAChB,uDAAuD;IACvD,GAAG,0BAA0B,EAAE;IAC/B,GAAG,iBAAiB;IACpB,GAAG,WAAW;IACd,GAAG,eAAe;IAClB,GAAG,kBAAkB;CACtB,CAAC"}
|