@threadbase-sh/streamer 1.63.0 → 1.65.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/dist/agent/agent-client.d.ts +14 -0
- package/dist/agent/agent-client.d.ts.map +1 -0
- package/dist/agent/agent-config.d.ts +24 -0
- package/dist/agent/agent-config.d.ts.map +1 -0
- package/dist/agent/conversation-writer.d.ts +13 -0
- package/dist/agent/conversation-writer.d.ts.map +1 -0
- package/dist/agent/dedupe.d.ts +6 -0
- package/dist/agent/dedupe.d.ts.map +1 -0
- package/dist/agent/errors.d.ts +23 -0
- package/dist/agent/errors.d.ts.map +1 -0
- package/dist/agent/handle-send-agent-input.d.ts +21 -0
- package/dist/agent/handle-send-agent-input.d.ts.map +1 -0
- package/dist/agent/handle-start-agent-session.d.ts +21 -0
- package/dist/agent/handle-start-agent-session.d.ts.map +1 -0
- package/dist/agent/history-mapper.d.ts +4 -0
- package/dist/agent/history-mapper.d.ts.map +1 -0
- package/dist/agent/payload-guard.d.ts +29 -0
- package/dist/agent/payload-guard.d.ts.map +1 -0
- package/dist/api/app.d.ts +28 -0
- package/dist/api/app.d.ts.map +1 -0
- package/dist/api/handlers/conversations.handlers.d.ts +69 -0
- package/dist/api/handlers/conversations.handlers.d.ts.map +1 -0
- package/dist/api/handlers/http-helpers.d.ts +50 -0
- package/dist/api/handlers/http-helpers.d.ts.map +1 -0
- package/dist/api/handlers/sessions.handlers.d.ts +236 -0
- package/dist/api/handlers/sessions.handlers.d.ts.map +1 -0
- package/dist/api/middleware/auth.middleware.d.ts +5 -0
- package/dist/api/middleware/auth.middleware.d.ts.map +1 -0
- package/dist/api/middleware/cors.middleware.d.ts +5 -0
- package/dist/api/middleware/cors.middleware.d.ts.map +1 -0
- package/dist/api/middleware/error.middleware.d.ts +4 -0
- package/dist/api/middleware/error.middleware.d.ts.map +1 -0
- package/dist/api/routes/backup.routes.d.ts +5 -0
- package/dist/api/routes/backup.routes.d.ts.map +1 -0
- package/dist/api/routes/browse.routes.d.ts +5 -0
- package/dist/api/routes/browse.routes.d.ts.map +1 -0
- package/dist/api/routes/cacheAlert.routes.d.ts +5 -0
- package/dist/api/routes/cacheAlert.routes.d.ts.map +1 -0
- package/dist/api/routes/config.routes.d.ts +5 -0
- package/dist/api/routes/config.routes.d.ts.map +1 -0
- package/dist/api/routes/conversations.routes.d.ts +5 -0
- package/dist/api/routes/conversations.routes.d.ts.map +1 -0
- package/dist/api/routes/devices.routes.d.ts +17 -0
- package/dist/api/routes/devices.routes.d.ts.map +1 -0
- package/dist/api/routes/diagnostics.routes.d.ts +5 -0
- package/dist/api/routes/diagnostics.routes.d.ts.map +1 -0
- package/dist/api/routes/health.routes.d.ts +5 -0
- package/dist/api/routes/health.routes.d.ts.map +1 -0
- package/dist/api/routes/logs.routes.d.ts +3 -0
- package/dist/api/routes/logs.routes.d.ts.map +1 -0
- package/dist/api/routes/misc.routes.d.ts +77 -0
- package/dist/api/routes/misc.routes.d.ts.map +1 -0
- package/dist/api/routes/pair.routes.d.ts +5 -0
- package/dist/api/routes/pair.routes.d.ts.map +1 -0
- package/dist/api/routes/progress.routes.d.ts +39 -0
- package/dist/api/routes/progress.routes.d.ts.map +1 -0
- package/dist/api/routes/projects.routes.d.ts +5 -0
- package/dist/api/routes/projects.routes.d.ts.map +1 -0
- package/dist/api/routes/providers.routes.d.ts +19 -0
- package/dist/api/routes/providers.routes.d.ts.map +1 -0
- package/dist/api/routes/scanner.routes.d.ts +5 -0
- package/dist/api/routes/scanner.routes.d.ts.map +1 -0
- package/dist/api/routes/sessions.routes.d.ts +6 -0
- package/dist/api/routes/sessions.routes.d.ts.map +1 -0
- package/dist/api/routes/ws.routes.d.ts +7 -0
- package/dist/api/routes/ws.routes.d.ts.map +1 -0
- package/dist/api/types/api-deps.d.ts +114 -0
- package/dist/api/types/api-deps.d.ts.map +1 -0
- package/dist/auth.d.ts +81 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/browse.d.ts +17 -0
- package/dist/browse.d.ts.map +1 -0
- package/dist/claude-flags.d.ts +76 -0
- package/dist/claude-flags.d.ts.map +1 -0
- package/dist/cli.cjs +121 -7
- package/dist/cli.cjs.map +1 -1
- package/dist/codex-pty-runner.d.ts +90 -0
- package/dist/codex-pty-runner.d.ts.map +1 -0
- package/dist/config/update-config.d.ts +13 -0
- package/dist/config/update-config.d.ts.map +1 -0
- package/dist/conversation-cache.d.ts +336 -0
- package/dist/conversation-cache.d.ts.map +1 -0
- package/dist/db/config.d.ts +11 -0
- package/dist/db/config.d.ts.map +1 -0
- package/dist/db/index.d.ts +5 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/migrations.d.ts +3 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/pool.d.ts +5 -0
- package/dist/db/pool.d.ts.map +1 -0
- package/dist/db/query-timing.d.ts +52 -0
- package/dist/db/query-timing.d.ts.map +1 -0
- package/dist/db/repositories/cacheMetadata.repository.d.ts +12 -0
- package/dist/db/repositories/cacheMetadata.repository.d.ts.map +1 -0
- package/dist/db/repositories/conversations.repository.d.ts +27 -0
- package/dist/db/repositories/conversations.repository.d.ts.map +1 -0
- package/dist/db/repositories/devices.repository.d.ts +137 -0
- package/dist/db/repositories/devices.repository.d.ts.map +1 -0
- package/dist/db/repositories/managed-sessions.repository.d.ts +127 -0
- package/dist/db/repositories/managed-sessions.repository.d.ts.map +1 -0
- package/dist/db/repositories/projects.repository.d.ts +28 -0
- package/dist/db/repositories/projects.repository.d.ts.map +1 -0
- package/dist/db/repositories/push.repository.d.ts +186 -0
- package/dist/db/repositories/push.repository.d.ts.map +1 -0
- package/dist/db/repositories/sessions.repository.d.ts +16 -0
- package/dist/db/repositories/sessions.repository.d.ts.map +1 -0
- package/dist/db/runtime-store.d.ts +80 -0
- package/dist/db/runtime-store.d.ts.map +1 -0
- package/dist/db/sqlite-migrate.d.ts +13 -0
- package/dist/db/sqlite-migrate.d.ts.map +1 -0
- package/dist/db/upload-records.d.ts +11 -0
- package/dist/db/upload-records.d.ts.map +1 -0
- package/dist/e2ee/noise.d.ts +261 -0
- package/dist/e2ee/noise.d.ts.map +1 -0
- package/dist/e2ee/pair-payload.d.ts +60 -0
- package/dist/e2ee/pair-payload.d.ts.map +1 -0
- package/dist/e2ee/pair-request.d.ts +24 -0
- package/dist/e2ee/pair-request.d.ts.map +1 -0
- package/dist/external-tails.d.ts +91 -0
- package/dist/external-tails.d.ts.map +1 -0
- package/dist/feature-flags.d.ts +212 -0
- package/dist/feature-flags.d.ts.map +1 -0
- package/dist/handlers/handleListProjects.d.ts +3 -0
- package/dist/handlers/handleListProjects.d.ts.map +1 -0
- package/dist/index.cjs +101 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +18 -2571
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +101 -2
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/constants.d.ts +21 -0
- package/dist/lifecycle/constants.d.ts.map +1 -0
- package/dist/lifecycle/process-liveness.d.ts +7 -0
- package/dist/lifecycle/process-liveness.d.ts.map +1 -0
- package/dist/live-session-manager.d.ts +59 -0
- package/dist/live-session-manager.d.ts.map +1 -0
- package/dist/logger.d.ts +14 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/pair-store.d.ts +60 -0
- package/dist/pair-store.d.ts.map +1 -0
- package/dist/platform.d.ts +25 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/process-discovery.d.ts +35 -0
- package/dist/process-discovery.d.ts.map +1 -0
- package/dist/providers.d.ts +7 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/pty-host/protocol.d.ts +270 -0
- package/dist/pty-host/protocol.d.ts.map +1 -0
- package/dist/pty-host/remote-session-runner.d.ts +133 -0
- package/dist/pty-host/remote-session-runner.d.ts.map +1 -0
- package/dist/pty-host/socket.d.ts +54 -0
- package/dist/pty-host/socket.d.ts.map +1 -0
- package/dist/pty-host/spawn-host.d.ts +30 -0
- package/dist/pty-host/spawn-host.d.ts.map +1 -0
- package/dist/pty-manager.d.ts +65 -0
- package/dist/pty-manager.d.ts.map +1 -0
- package/dist/pty-shared.d.ts +27 -0
- package/dist/pty-shared.d.ts.map +1 -0
- package/dist/scanner-manager.d.ts +126 -0
- package/dist/scanner-manager.d.ts.map +1 -0
- package/dist/schemas/cacheAlert.schema.d.ts +14 -0
- package/dist/schemas/cacheAlert.schema.d.ts.map +1 -0
- package/dist/schemas/claudeFlags.schema.d.ts +7 -0
- package/dist/schemas/claudeFlags.schema.d.ts.map +1 -0
- package/dist/schemas/project.schema.d.ts +18 -0
- package/dist/schemas/project.schema.d.ts.map +1 -0
- package/dist/schemas/updateConfig.schema.d.ts +19 -0
- package/dist/schemas/updateConfig.schema.d.ts.map +1 -0
- package/dist/seal.d.ts +14 -0
- package/dist/seal.d.ts.map +1 -0
- package/dist/server-identity.d.ts +43 -0
- package/dist/server-identity.d.ts.map +1 -0
- package/dist/server-wiring.d.ts +189 -0
- package/dist/server-wiring.d.ts.map +1 -0
- package/dist/server.d.ts +404 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/services/backup/backup.d.ts +103 -0
- package/dist/services/backup/backup.d.ts.map +1 -0
- package/dist/services/cache/cacheMetadata.d.ts +8 -0
- package/dist/services/cache/cacheMetadata.d.ts.map +1 -0
- package/dist/services/cache-integrity/alertStore.d.ts +24 -0
- package/dist/services/cache-integrity/alertStore.d.ts.map +1 -0
- package/dist/services/cache-integrity/backup.d.ts +8 -0
- package/dist/services/cache-integrity/backup.d.ts.map +1 -0
- package/dist/services/cache-integrity/cacheIntegrityMonitor.d.ts +71 -0
- package/dist/services/cache-integrity/cacheIntegrityMonitor.d.ts.map +1 -0
- package/dist/services/conversations/conversationWatcher.d.ts +99 -0
- package/dist/services/conversations/conversationWatcher.d.ts.map +1 -0
- package/dist/services/conversations/findSearchTarget.d.ts +30 -0
- package/dist/services/conversations/findSearchTarget.d.ts.map +1 -0
- package/dist/services/conversations/isAgentConversation.d.ts +8 -0
- package/dist/services/conversations/isAgentConversation.d.ts.map +1 -0
- package/dist/services/conversations/pruneAgentConversations.d.ts +8 -0
- package/dist/services/conversations/pruneAgentConversations.d.ts.map +1 -0
- package/dist/services/conversations/refreshConversationCache.d.ts +27 -0
- package/dist/services/conversations/refreshConversationCache.d.ts.map +1 -0
- package/dist/services/conversations/shouldRefreshProjectsFromHdd.d.ts +33 -0
- package/dist/services/conversations/shouldRefreshProjectsFromHdd.d.ts.map +1 -0
- package/dist/services/diagnostics/diagnostics.d.ts +66 -0
- package/dist/services/diagnostics/diagnostics.d.ts.map +1 -0
- package/dist/services/projectChats/deriveProjectChatTitle.d.ts +15 -0
- package/dist/services/projectChats/deriveProjectChatTitle.d.ts.map +1 -0
- package/dist/services/projects/ensureProjectsForConversations.d.ts +15 -0
- package/dist/services/projects/ensureProjectsForConversations.d.ts.map +1 -0
- package/dist/services/providers/capabilities.d.ts +105 -0
- package/dist/services/providers/capabilities.d.ts.map +1 -0
- package/dist/services/providers/providerHealth.d.ts +72 -0
- package/dist/services/providers/providerHealth.d.ts.map +1 -0
- package/dist/services/push/apnsClient.d.ts +105 -0
- package/dist/services/push/apnsClient.d.ts.map +1 -0
- package/dist/services/push/expoPushSender.d.ts +37 -0
- package/dist/services/push/expoPushSender.d.ts.map +1 -0
- package/dist/services/push/liveActivityContentState.d.ts +60 -0
- package/dist/services/push/liveActivityContentState.d.ts.map +1 -0
- package/dist/services/push/liveActivityNotifier.d.ts +49 -0
- package/dist/services/push/liveActivityNotifier.d.ts.map +1 -0
- package/dist/services/push/liveActivityRenewal.d.ts +63 -0
- package/dist/services/push/liveActivityRenewal.d.ts.map +1 -0
- package/dist/services/push/liveActivitySender.d.ts +88 -0
- package/dist/services/push/liveActivitySender.d.ts.map +1 -0
- package/dist/services/push/waitingInputNotifier.d.ts +41 -0
- package/dist/services/push/waitingInputNotifier.d.ts.map +1 -0
- package/dist/services/questions/answersToKeystrokes.d.ts +8 -0
- package/dist/services/questions/answersToKeystrokes.d.ts.map +1 -0
- package/dist/services/questions/codexGateAnswers.d.ts +14 -0
- package/dist/services/questions/codexGateAnswers.d.ts.map +1 -0
- package/dist/services/questions/codexScreen.d.ts +74 -0
- package/dist/services/questions/codexScreen.d.ts.map +1 -0
- package/dist/services/questions/detectAskUserQuestion.d.ts +6 -0
- package/dist/services/questions/detectAskUserQuestion.d.ts.map +1 -0
- package/dist/services/questions/detectPermissionGate.d.ts +62 -0
- package/dist/services/questions/detectPermissionGate.d.ts.map +1 -0
- package/dist/services/questions/detectQuestionFromScreen.d.ts +30 -0
- package/dist/services/questions/detectQuestionFromScreen.d.ts.map +1 -0
- package/dist/services/questions/detectShellPrompt.d.ts +18 -0
- package/dist/services/questions/detectShellPrompt.d.ts.map +1 -0
- package/dist/services/questions/parseAgentPhase.d.ts +12 -0
- package/dist/services/questions/parseAgentPhase.d.ts.map +1 -0
- package/dist/services/questions/parseStatusLine.d.ts +19 -0
- package/dist/services/questions/parseStatusLine.d.ts.map +1 -0
- package/dist/services/questions/questionBroadcast.d.ts +18 -0
- package/dist/services/questions/questionBroadcast.d.ts.map +1 -0
- package/dist/services/questions/resolveAnswer.d.ts +16 -0
- package/dist/services/questions/resolveAnswer.d.ts.map +1 -0
- package/dist/services/search/searchQuery.d.ts +78 -0
- package/dist/services/search/searchQuery.d.ts.map +1 -0
- package/dist/services/security/capabilities.d.ts +50 -0
- package/dist/services/security/capabilities.d.ts.map +1 -0
- package/dist/services/sessions/autoResumeOnBoot.d.ts +28 -0
- package/dist/services/sessions/autoResumeOnBoot.d.ts.map +1 -0
- package/dist/services/sessions/codexRolloutOwner.d.ts +55 -0
- package/dist/services/sessions/codexRolloutOwner.d.ts.map +1 -0
- package/dist/services/sessions/conversationBusy.d.ts +32 -0
- package/dist/services/sessions/conversationBusy.d.ts.map +1 -0
- package/dist/services/sessions/idempotency.d.ts +67 -0
- package/dist/services/sessions/idempotency.d.ts.map +1 -0
- package/dist/services/sessions/reconcileSessions.d.ts +63 -0
- package/dist/services/sessions/reconcileSessions.d.ts.map +1 -0
- package/dist/services/sessions/rehydrateSessions.d.ts +68 -0
- package/dist/services/sessions/rehydrateSessions.d.ts.map +1 -0
- package/dist/services/sessions/resumeIdentity.d.ts +16 -0
- package/dist/services/sessions/resumeIdentity.d.ts.map +1 -0
- package/dist/session-registry-boot.d.ts +142 -0
- package/dist/session-registry-boot.d.ts.map +1 -0
- package/dist/session-store.d.ts +32 -0
- package/dist/session-store.d.ts.map +1 -0
- package/dist/session-watchers.d.ts +60 -0
- package/dist/session-watchers.d.ts.map +1 -0
- package/dist/types.d.ts +616 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/uploads.d.ts +16 -0
- package/dist/uploads.d.ts.map +1 -0
- package/dist/utils/bootToken.d.ts +3 -0
- package/dist/utils/bootToken.d.ts.map +1 -0
- package/dist/utils/canonicalizeFilePath.d.ts +75 -0
- package/dist/utils/canonicalizeFilePath.d.ts.map +1 -0
- package/dist/utils/canonicalizeProjectPath.d.ts +13 -0
- package/dist/utils/canonicalizeProjectPath.d.ts.map +1 -0
- package/dist/utils/codexConversationLine.d.ts +38 -0
- package/dist/utils/codexConversationLine.d.ts.map +1 -0
- package/dist/utils/conversationEtag.d.ts +19 -0
- package/dist/utils/conversationEtag.d.ts.map +1 -0
- package/dist/utils/dates.d.ts +12 -0
- package/dist/utils/dates.d.ts.map +1 -0
- package/dist/utils/debounce.d.ts +15 -0
- package/dist/utils/debounce.d.ts.map +1 -0
- package/dist/utils/deriveSessionName.d.ts +10 -0
- package/dist/utils/deriveSessionName.d.ts.map +1 -0
- package/dist/utils/fileIdentity.d.ts +36 -0
- package/dist/utils/fileIdentity.d.ts.map +1 -0
- package/dist/utils/isScannedSnapshotStale.d.ts +16 -0
- package/dist/utils/isScannedSnapshotStale.d.ts.map +1 -0
- package/dist/utils/scanProgressThrottle.d.ts +12 -0
- package/dist/utils/scanProgressThrottle.d.ts.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/ws-hub.d.ts +15 -0
- package/dist/ws-hub.d.ts.map +1 -0
- package/package.json +3 -4
- package/dist/index.d.cts +0 -2571
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Client } from "@temporalio/client";
|
|
2
|
+
import type { UserInputSignal } from "@threadbase-sh/agent-types";
|
|
3
|
+
export interface AgentClient {
|
|
4
|
+
startSession(sessionId: string): Promise<string>;
|
|
5
|
+
sendUserInput(sessionId: string, payload: UserInputSignal): Promise<void>;
|
|
6
|
+
endSession(sessionId: string): Promise<void>;
|
|
7
|
+
getSessionStage(sessionId: string): Promise<string>;
|
|
8
|
+
}
|
|
9
|
+
export interface AgentClientOpts {
|
|
10
|
+
temporalClient: Client;
|
|
11
|
+
taskQueue: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function createAgentClient({ temporalClient, taskQueue }: AgentClientOpts): AgentClient;
|
|
14
|
+
//# sourceMappingURL=agent-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-client.d.ts","sourceRoot":"","sources":["../../src/agent/agent-client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAqBlE,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,wBAAgB,iBAAiB,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,eAAe,GAAG,WAAW,CAyB7F"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface AgentConfig {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
temporal: {
|
|
4
|
+
address: string;
|
|
5
|
+
namespace: string;
|
|
6
|
+
taskQueue: string;
|
|
7
|
+
};
|
|
8
|
+
webhook: {
|
|
9
|
+
hmacSecret: string;
|
|
10
|
+
timestampSkewSeconds: number;
|
|
11
|
+
};
|
|
12
|
+
dedupe: {
|
|
13
|
+
perSessionCapacity: number;
|
|
14
|
+
};
|
|
15
|
+
payload: {
|
|
16
|
+
limitBytes: number;
|
|
17
|
+
trajectoryLogBytes: number;
|
|
18
|
+
trajectoryLogTurns: number;
|
|
19
|
+
};
|
|
20
|
+
sessionBusyRetryMs: number;
|
|
21
|
+
conversationsDir: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function readAgentConfig(env?: NodeJS.ProcessEnv): AgentConfig;
|
|
24
|
+
//# sourceMappingURL=agent-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../src/agent/agent-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,MAAM,EAAE;QACN,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAoBD,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,CAoCjF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface AppendArgs {
|
|
2
|
+
sessionId: string;
|
|
3
|
+
turnId: string;
|
|
4
|
+
content: string;
|
|
5
|
+
reviewerOverruled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface ConversationWriter {
|
|
8
|
+
appendAssistantTurn(args: AppendArgs): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare function createConversationWriter(opts: {
|
|
11
|
+
baseDir: string;
|
|
12
|
+
}): ConversationWriter;
|
|
13
|
+
//# sourceMappingURL=conversation-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-writer.d.ts","sourceRoot":"","sources":["../../src/agent/conversation-writer.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAuBtF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dedupe.d.ts","sourceRoot":"","sources":["../../src/agent/dedupe.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CA0B3E"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const AgentErrorCode: {
|
|
2
|
+
readonly SESSION_NOT_FOUND: "SESSION_NOT_FOUND";
|
|
3
|
+
readonly SESSION_HISTORY_FULL: "SESSION_HISTORY_FULL";
|
|
4
|
+
readonly SESSION_BUSY: "SESSION_BUSY";
|
|
5
|
+
readonly INVALID_SESSION_STATE: "INVALID_SESSION_STATE";
|
|
6
|
+
readonly CONVERSATION_NOT_FOUND: "CONVERSATION_NOT_FOUND";
|
|
7
|
+
readonly INPUT_REQUIRED: "INPUT_REQUIRED";
|
|
8
|
+
readonly INVALID_BODY: "INVALID_BODY";
|
|
9
|
+
readonly TEMPORAL_UNAVAILABLE: "TEMPORAL_UNAVAILABLE";
|
|
10
|
+
readonly NOT_APPLICABLE_IN_MULTI_AGENT_MODE: "NOT_APPLICABLE_IN_MULTI_AGENT_MODE";
|
|
11
|
+
readonly INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
12
|
+
};
|
|
13
|
+
export type AgentErrorCode = (typeof AgentErrorCode)[keyof typeof AgentErrorCode];
|
|
14
|
+
/**
|
|
15
|
+
* Build a structured error response. `error` and `code` are canonical;
|
|
16
|
+
* `extra` may carry hint fields like `retryAfterMs` or `limitBytes` but
|
|
17
|
+
* cannot override the canonical fields.
|
|
18
|
+
*/
|
|
19
|
+
export declare function agentErrorResponse(code: AgentErrorCode, message: string, extra?: Record<string, unknown>): {
|
|
20
|
+
error: string;
|
|
21
|
+
code: AgentErrorCode;
|
|
22
|
+
} & Record<string, unknown>;
|
|
23
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/agent/errors.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc;aACzB,iBAAiB,EAAE,mBAAmB;aACtC,oBAAoB,EAAE,sBAAsB;aAC5C,YAAY,EAAE,cAAc;aAC5B,qBAAqB,EAAE,uBAAuB;aAC9C,sBAAsB,EAAE,wBAAwB;aAChD,cAAc,EAAE,gBAAgB;aAChC,YAAY,EAAE,cAAc;aAC5B,oBAAoB,EAAE,sBAAsB;aAC5C,kCAAkC,EAAE,oCAAoC;aACxE,cAAc,EAAE,gBAAgB;CACxB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAElF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAClC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEnE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ConversationCache } from "../conversation-cache";
|
|
2
|
+
import type { ManagedSession } from "../types";
|
|
3
|
+
import type { AgentClient } from "./agent-client";
|
|
4
|
+
import type { AgentConfig } from "./agent-config";
|
|
5
|
+
export interface SendInputBody {
|
|
6
|
+
text?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SendAgentInputDeps {
|
|
9
|
+
sessionStore: {
|
|
10
|
+
getManaged: (sessionId: string) => ManagedSession | null;
|
|
11
|
+
};
|
|
12
|
+
cache: ConversationCache;
|
|
13
|
+
agentClient: AgentClient;
|
|
14
|
+
agentConfig: AgentConfig;
|
|
15
|
+
}
|
|
16
|
+
export interface SendAgentInputResult {
|
|
17
|
+
status: number;
|
|
18
|
+
body: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export declare function handleSendAgentInput(sessionId: string, body: SendInputBody, deps: SendAgentInputDeps): Promise<SendAgentInputResult>;
|
|
21
|
+
//# sourceMappingURL=handle-send-agent-input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-send-agent-input.d.ts","sourceRoot":"","sources":["../../src/agent/handle-send-agent-input.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOlD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE;QACZ,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,cAAc,GAAG,IAAI,CAAC;KAC1D,CAAC;IACF,KAAK,EAAE,iBAAiB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAyF/B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ManagedSession } from "../types";
|
|
2
|
+
import type { AgentClient } from "./agent-client";
|
|
3
|
+
import type { AgentConfig } from "./agent-config";
|
|
4
|
+
export interface StartSessionBody {
|
|
5
|
+
conversationId?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface StartAgentSessionDeps {
|
|
8
|
+
sessionStore: {
|
|
9
|
+
addManaged: (session: ManagedSession) => void;
|
|
10
|
+
initAgentSession: (sessionId: string, dedupeCapacity: number) => void;
|
|
11
|
+
};
|
|
12
|
+
agentClient: AgentClient;
|
|
13
|
+
conversationsDir: string;
|
|
14
|
+
agentConfig: AgentConfig;
|
|
15
|
+
}
|
|
16
|
+
export interface StartAgentSessionResult {
|
|
17
|
+
status: number;
|
|
18
|
+
body: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export declare function handleStartAgentSession(body: unknown, deps: StartAgentSessionDeps): Promise<StartAgentSessionResult>;
|
|
21
|
+
//# sourceMappingURL=handle-start-agent-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-start-agent-session.d.ts","sourceRoot":"","sources":["../../src/agent/handle-start-agent-session.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE;QACZ,UAAU,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;QAC9C,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;KACvE,CAAC;IACF,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAuBD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,uBAAuB,CAAC,CA+DlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-mapper.d.ts","sourceRoot":"","sources":["../../src/agent/history-mapper.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAiCxD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,gBAAgB,EAAE,CAsBtF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { UserInputSignal } from "@threadbase-sh/agent-types";
|
|
2
|
+
export interface PayloadMeasurement {
|
|
3
|
+
bytes: number;
|
|
4
|
+
exceedsLimit: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Serialize the signal and measure its byte size. Returns both the count and
|
|
8
|
+
* whether it exceeds the supplied limit.
|
|
9
|
+
*
|
|
10
|
+
* Callers should refuse the input and return 413 SESSION_HISTORY_FULL when
|
|
11
|
+
* `exceedsLimit` is true.
|
|
12
|
+
*/
|
|
13
|
+
export declare function measureSignalPayload(signal: UserInputSignal, limitBytes: number): PayloadMeasurement;
|
|
14
|
+
export interface TrajectoryConfig {
|
|
15
|
+
trajectoryLogBytes: number;
|
|
16
|
+
trajectoryLogTurns: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Trajectory log trigger. Fires when EITHER:
|
|
20
|
+
* - The session has reached a turn count that's a multiple of 5, starting at
|
|
21
|
+
* `trajectoryLogTurns` (default 20), OR
|
|
22
|
+
* - The composed signal is >= `trajectoryLogBytes` (default 500 KB) regardless
|
|
23
|
+
* of turn count.
|
|
24
|
+
*
|
|
25
|
+
* Returning true means the caller should emit a WARN log line with current
|
|
26
|
+
* size + turn count + percentage-of-limit info.
|
|
27
|
+
*/
|
|
28
|
+
export declare function shouldLogTrajectory(turnCount: number, bytes: number, cfg: TrajectoryConfig): boolean;
|
|
29
|
+
//# sourceMappingURL=payload-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload-guard.d.ts","sourceRoot":"","sources":["../../src/agent/payload-guard.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,GACjB,kBAAkB,CAGpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,gBAAgB,GACpB,OAAO,CAIT"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { HttpBindings } from "@hono/node-server";
|
|
2
|
+
import { Hono } from "hono";
|
|
3
|
+
import type { UpgradeWebSocket } from "hono/ws";
|
|
4
|
+
import type { WebSocket } from "ws";
|
|
5
|
+
import type { Principal } from "../services/security/capabilities";
|
|
6
|
+
import type { ApiDeps } from "./types/api-deps";
|
|
7
|
+
export type AppEnv = {
|
|
8
|
+
Bindings: HttpBindings;
|
|
9
|
+
Variables: {
|
|
10
|
+
requestId?: string;
|
|
11
|
+
validatedBody?: unknown;
|
|
12
|
+
validatedQuery?: unknown;
|
|
13
|
+
/** Who is making this request (C5). Set by authMiddleware. */
|
|
14
|
+
principal?: Principal;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The query string with only its numeric values kept.
|
|
19
|
+
*
|
|
20
|
+
* Pagination is the thing the log needs to show (`limit`, `offset`,
|
|
21
|
+
* `before_index`, `msg_limit`), and those are numbers. Everything else —
|
|
22
|
+
* `?path=/Users/...`, ids, search terms — is a value we deliberately do not
|
|
23
|
+
* log, so the key is kept and the value is dropped. Returns undefined for a
|
|
24
|
+
* bare path so the field stays absent rather than empty.
|
|
25
|
+
*/
|
|
26
|
+
export declare function summarizeQuery(query: Record<string, string>): string | undefined;
|
|
27
|
+
export declare const createHonoApp: (deps: ApiDeps, upgradeWebSocket?: UpgradeWebSocket<WebSocket>) => Hono<AppEnv, import("hono/types").BlankSchema, "/">;
|
|
28
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/api/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAqBnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE;QACT,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,8DAA8D;QAC9D,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB,CAAC;CACH,CAAC;AAKF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,SAAS,CAIhF;AA4BD,eAAO,MAAM,aAAa,SAAU,OAAO,qBAAqB,gBAAgB,CAAC,SAAS,CAAC,wDA6D1F,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { type Conversation } from "@threadbase-sh/scanner";
|
|
2
|
+
import type { IncomingMessage, ServerResponse } from "http";
|
|
3
|
+
import { ConversationCache } from "../../conversation-cache";
|
|
4
|
+
import type { LiveSessionManager } from "../../live-session-manager";
|
|
5
|
+
import type { Logger } from "../../logger";
|
|
6
|
+
import type { ScannerManager, ScanProfile } from "../../scanner-manager";
|
|
7
|
+
import type { SessionStore } from "../../session-store";
|
|
8
|
+
import type { ServerWarmupState } from "../../types";
|
|
9
|
+
import type { WSHub } from "../../ws-hub";
|
|
10
|
+
/**
|
|
11
|
+
* Everything ConversationHandlers reads from the server. Collaborators
|
|
12
|
+
* constructed once in the server constructor are passed by reference; anything
|
|
13
|
+
* bound later (the cache opens during listen() and is rebound by the integrity
|
|
14
|
+
* monitor's reset-and-rescan) or swapped by tests (`log`) is a thunk, for the
|
|
15
|
+
* same reason ApiDeps passes `cache: () => ConversationCache | null`.
|
|
16
|
+
*
|
|
17
|
+
* The warm-up gate, the cache-write tracker and the three conversation-id
|
|
18
|
+
* resolvers stay late-bound calls back into the server rather than moved code:
|
|
19
|
+
* they read state (`activeWarmups`, `inFlightCacheWrites`, `sessionFileMap`)
|
|
20
|
+
* that spans well beyond conversations.
|
|
21
|
+
*/
|
|
22
|
+
export type ConversationHandlersDeps = {
|
|
23
|
+
scannerManager: ScannerManager;
|
|
24
|
+
sessionStore: SessionStore;
|
|
25
|
+
ptyManager: LiveSessionManager;
|
|
26
|
+
wsHub: WSHub;
|
|
27
|
+
scanProfiles: ScanProfile[] | undefined;
|
|
28
|
+
cache: () => ConversationCache | null;
|
|
29
|
+
log: () => Logger;
|
|
30
|
+
rejectIfWarmingUp: (res: ServerResponse) => boolean;
|
|
31
|
+
withWarmup: <T>(state: ServerWarmupState, operation: () => Promise<T>) => Promise<T>;
|
|
32
|
+
trackCacheWrite: (task: Promise<unknown>) => void;
|
|
33
|
+
resolveConversationLookupId: (uuid: string) => string;
|
|
34
|
+
findLiveSessionFilePath: (uuid: string) => string | null;
|
|
35
|
+
isBoundConversationLive: (boundId: string) => boolean;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* The conversation read surface: listing, counting, project summaries, the
|
|
39
|
+
* single-conversation detail fetch (pagination + ETag + stale-while-revalidate)
|
|
40
|
+
* and search — plus the JSONL/cwd resolvers the resume and adopt paths share.
|
|
41
|
+
*
|
|
42
|
+
* Extracted from StreamerServer so conversation work stops editing the server
|
|
43
|
+
* file (see docs/plans/2026-07-12-server-ts-split.md, PR 4). State stays on the
|
|
44
|
+
* server: this class only reads it through `deps`.
|
|
45
|
+
*/
|
|
46
|
+
export declare class ConversationHandlers {
|
|
47
|
+
private deps;
|
|
48
|
+
constructor(deps: ConversationHandlersDeps);
|
|
49
|
+
private get scannerManager();
|
|
50
|
+
private get sessionStore();
|
|
51
|
+
private get ptyManager();
|
|
52
|
+
private get wsHub();
|
|
53
|
+
private get scanProfiles();
|
|
54
|
+
private get cache();
|
|
55
|
+
private get log();
|
|
56
|
+
handleListConversations(url: URL, res: ServerResponse): Promise<void>;
|
|
57
|
+
handleConversationsCount(url: URL, res: ServerResponse): Promise<void>;
|
|
58
|
+
private refreshCountInBackground;
|
|
59
|
+
handleGetRecentSessions(url: URL, res: ServerResponse): void;
|
|
60
|
+
handleGetPopularProjects(url: URL, res: ServerResponse): void;
|
|
61
|
+
handleGetProjectSummaries(url: URL, res: ServerResponse): void;
|
|
62
|
+
findJsonlPath(uuid: string): string | null;
|
|
63
|
+
readCwdFromJsonl(filePath: string): Promise<string | null>;
|
|
64
|
+
findConversationByUuid(uuid: string): Promise<Conversation | null>;
|
|
65
|
+
handleGetConversation(id: string, url: URL, res: ServerResponse, ifNoneMatch?: string): Promise<void>;
|
|
66
|
+
handleSearchTarget(id: string, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
67
|
+
handleSearch(url: URL, res: ServerResponse): Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=conversations.handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.handlers.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/conversations.handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "http";
|
|
2
|
+
import type { ConversationListItem } from "../../conversation-cache";
|
|
3
|
+
import type { SessionListQuery } from "../../types";
|
|
4
|
+
export declare function classifyResumability(cwd: string | null | undefined): {
|
|
5
|
+
resumable: boolean;
|
|
6
|
+
unavailable_reason?: "path_missing" | "worktree_removed";
|
|
7
|
+
};
|
|
8
|
+
export declare function conversationToResumableSession(c: ConversationListItem): {
|
|
9
|
+
type: "conversation";
|
|
10
|
+
id: string;
|
|
11
|
+
conversationId: string;
|
|
12
|
+
status: "on_hold";
|
|
13
|
+
ownership: "historical";
|
|
14
|
+
lifecycle: "resumable";
|
|
15
|
+
lifecycleSource: "reconcile";
|
|
16
|
+
ptyAttached: boolean;
|
|
17
|
+
projectId: string | undefined;
|
|
18
|
+
projectPath: string;
|
|
19
|
+
projectName: string;
|
|
20
|
+
branch: string | undefined;
|
|
21
|
+
lastOutput: string;
|
|
22
|
+
elapsedMs: number;
|
|
23
|
+
subStatus: null;
|
|
24
|
+
promptCount: number;
|
|
25
|
+
startedAt: string;
|
|
26
|
+
completedAt: null;
|
|
27
|
+
lastActivityAt: string;
|
|
28
|
+
sessionName?: string | undefined;
|
|
29
|
+
model?: string | undefined;
|
|
30
|
+
account?: string | undefined;
|
|
31
|
+
messageCount: number;
|
|
32
|
+
preview?: string | undefined;
|
|
33
|
+
firstMessageText?: string | undefined;
|
|
34
|
+
lastMessageText?: string | undefined;
|
|
35
|
+
filePath: string;
|
|
36
|
+
provider: "claude-code" | "codex-cli";
|
|
37
|
+
resumable: boolean;
|
|
38
|
+
unavailable_reason?: "path_missing" | "worktree_removed" | undefined;
|
|
39
|
+
};
|
|
40
|
+
export declare function json(res: ServerResponse, status: number, data: unknown): void;
|
|
41
|
+
export declare function writeHonoResponse(honoRes: Response, res: ServerResponse): Promise<void>;
|
|
42
|
+
export declare function intParam(url: URL, name: string, defaultValue: number): number;
|
|
43
|
+
export type ParsedSessionListQuery = {
|
|
44
|
+
query: SessionListQuery;
|
|
45
|
+
} | {
|
|
46
|
+
error: string;
|
|
47
|
+
};
|
|
48
|
+
export declare function parseSessionListQuery(url: URL): ParsedSessionListQuery;
|
|
49
|
+
export declare function readBody(req: IncomingMessage): Promise<any>;
|
|
50
|
+
//# sourceMappingURL=http-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-helpers.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/http-helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,KAAK,EACV,gBAAgB,EAIjB,MAAM,aAAa,CAAC;AASrB,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG;IACpE,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,CAAC,EAAE,cAAc,GAAG,kBAAkB,CAAC;CAC1D,CAQA;AAED,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,oBAAoB;UAI5D,cAAc;;;YAGZ,SAAS;eAKN,YAAY;eACZ,WAAW;qBACL,WAAW;;;;;;;;;;;;;;;;;;;;;;;;EAgC/B;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAG7E;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7F;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAK7E;AASD,MAAM,MAAM,sBAAsB,GAAG;IAAE,KAAK,EAAE,gBAAgB,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,sBAAsB,CAyCtE;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAc3D"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import type { EventEmitter } from "events";
|
|
2
|
+
import type { IncomingMessage, ServerResponse } from "http";
|
|
3
|
+
import type { WebSocket } from "ws";
|
|
4
|
+
import type { AgentClient } from "../../agent/agent-client";
|
|
5
|
+
import type { AgentConfig } from "../../agent/agent-config";
|
|
6
|
+
import type { ClaudeFlagValues, EffortLevel, PermissionMode } from "../../claude-flags";
|
|
7
|
+
import type { ConversationCache } from "../../conversation-cache";
|
|
8
|
+
import type { createPool } from "../../db";
|
|
9
|
+
import type { ExternalTailManager } from "../../external-tails";
|
|
10
|
+
import type { LiveSessionManager } from "../../live-session-manager";
|
|
11
|
+
import type { Logger } from "../../logger";
|
|
12
|
+
import { type ProviderName } from "../../providers";
|
|
13
|
+
import type { ScannerManager } from "../../scanner-manager";
|
|
14
|
+
import type { ResumeFailure, ResumeOutcome } from "../../server";
|
|
15
|
+
import type { IdempotencyStore } from "../../services/sessions/idempotency";
|
|
16
|
+
import type { SessionRegistryBoot } from "../../session-registry-boot";
|
|
17
|
+
import type { SessionStore } from "../../session-store";
|
|
18
|
+
import type { SessionWatchers } from "../../session-watchers";
|
|
19
|
+
import type { AskQuestion, DiscoveredProcess, ManagedSession, PermissionOption, SessionResponse } from "../../types";
|
|
20
|
+
import type { WSHub } from "../../ws-hub";
|
|
21
|
+
export declare const RESUME_DISCOVERY_TIMEOUT_MS = 750;
|
|
22
|
+
export declare const ADOPT_KILL_TIMEOUT_MS = 5000;
|
|
23
|
+
export declare function waitForProcessExit(pid: number, timeoutMs: number, pollMs?: number): Promise<boolean>;
|
|
24
|
+
/**
|
|
25
|
+
* Everything SessionHandlers reads from the server. Same split as
|
|
26
|
+
* ConversationHandlersDeps: collaborators the server constructor already built
|
|
27
|
+
* are passed by reference (Maps and Sets keep identity, so a mutation here is
|
|
28
|
+
* the same mutation the server and its tests observe), anything bound later or
|
|
29
|
+
* swapped by tests is a thunk, and the handful of methods that stay on
|
|
30
|
+
* StreamerServer are late-bound calls back into it.
|
|
31
|
+
*
|
|
32
|
+
* Nothing here owns state. `pendingQuestions`, `pendingPermission`,
|
|
33
|
+
* `contendedSessions`, `selfPtyEndedAt`, `sessionFileMap`, `sessionSubscribers`
|
|
34
|
+
* and `idempotency` remain StreamerServer instance properties — tests reach
|
|
35
|
+
* into them through `(server as any)`, and the WS/PTY callbacks that also read
|
|
36
|
+
* them never moved.
|
|
37
|
+
*/
|
|
38
|
+
export type SessionHandlersDeps = {
|
|
39
|
+
sessionStore: SessionStore;
|
|
40
|
+
ptyManager: LiveSessionManager;
|
|
41
|
+
wsHub: WSHub;
|
|
42
|
+
scannerManager: ScannerManager;
|
|
43
|
+
sessionWatchers: SessionWatchers;
|
|
44
|
+
registryBoot: SessionRegistryBoot;
|
|
45
|
+
externalTailManager: ExternalTailManager;
|
|
46
|
+
idempotency: IdempotencyStore;
|
|
47
|
+
sessionStatusBus: EventEmitter;
|
|
48
|
+
sessionFileMap: Map<string, string>;
|
|
49
|
+
pendingQuestions: Map<string, {
|
|
50
|
+
toolUseId: string;
|
|
51
|
+
questions: AskQuestion[];
|
|
52
|
+
origin: "pty" | "jsonl";
|
|
53
|
+
}>;
|
|
54
|
+
pendingQuestionKey: Map<string, string>;
|
|
55
|
+
pendingPermission: Map<string, {
|
|
56
|
+
prompt?: string;
|
|
57
|
+
detail?: string;
|
|
58
|
+
options: PermissionOption[];
|
|
59
|
+
cursor?: number;
|
|
60
|
+
}>;
|
|
61
|
+
pendingPermissionKey: Map<string, string>;
|
|
62
|
+
contendedSessions: Set<string>;
|
|
63
|
+
selfPtyEndedAt: Map<string, number>;
|
|
64
|
+
sessionSubscribers: Map<string, Set<WebSocket>>;
|
|
65
|
+
agentConfig: AgentConfig;
|
|
66
|
+
agentClient: AgentClient | null;
|
|
67
|
+
defaultSystemPrompt: string;
|
|
68
|
+
codexSystemPromptEnabled: boolean;
|
|
69
|
+
cacheDir: string;
|
|
70
|
+
cache: () => ConversationCache | null;
|
|
71
|
+
log: () => Logger;
|
|
72
|
+
browseRoot: () => string | null;
|
|
73
|
+
claudeFlags: () => ClaudeFlagValues;
|
|
74
|
+
claudeExtraArgs: () => string | undefined;
|
|
75
|
+
dbPool: () => Awaited<ReturnType<typeof createPool>> | null;
|
|
76
|
+
dbInstanceId: () => string | null;
|
|
77
|
+
discoveryCache: () => {
|
|
78
|
+
entries: DiscoveredProcess[];
|
|
79
|
+
fetchedAt: number;
|
|
80
|
+
} | null;
|
|
81
|
+
setDiscoveryCache: (value: {
|
|
82
|
+
entries: DiscoveredProcess[];
|
|
83
|
+
fetchedAt: number;
|
|
84
|
+
} | null) => void;
|
|
85
|
+
discoveryInFlight: () => Promise<DiscoveredProcess[]> | null;
|
|
86
|
+
setDiscoveryInFlight: (value: Promise<DiscoveredProcess[]> | null) => void;
|
|
87
|
+
rejectIfWarmingUp: (res: ServerResponse) => boolean;
|
|
88
|
+
ptyAttachedIds: () => Set<string>;
|
|
89
|
+
withReconciledLifecycle: (sessions: readonly SessionResponse[]) => readonly SessionResponse[];
|
|
90
|
+
broadcastOrUnicastSessionList: (req: IncomingMessage) => void;
|
|
91
|
+
checkSessionStartRateLimit: (ip: string) => boolean;
|
|
92
|
+
checkSessionInputRateLimit: (sessionId: string) => boolean;
|
|
93
|
+
spawnFlagOverrides: () => {
|
|
94
|
+
permissionMode: PermissionMode;
|
|
95
|
+
model: string;
|
|
96
|
+
effort: EffortLevel;
|
|
97
|
+
};
|
|
98
|
+
resolveConversationTarget: (sessionId: string) => Promise<ResumeFailure | {
|
|
99
|
+
ok: true;
|
|
100
|
+
historyId: string;
|
|
101
|
+
jsonlPath: string | null;
|
|
102
|
+
historyPath: string | null;
|
|
103
|
+
conv: any;
|
|
104
|
+
projectPath: string;
|
|
105
|
+
provider: ProviderName;
|
|
106
|
+
}>;
|
|
107
|
+
waitForStartupOutcome: (sessionId: string, timeoutMs: number) => Promise<{
|
|
108
|
+
outcome: "ready" | "failed" | "timeout";
|
|
109
|
+
session: ManagedSession | null;
|
|
110
|
+
}>;
|
|
111
|
+
forgetSession: (sessionId: string) => void;
|
|
112
|
+
abandonFailedStart: (sessionId: string) => void;
|
|
113
|
+
enrichResumedSessionAsync: (sessionId: string, projectPath: string, conv: any) => void;
|
|
114
|
+
findJsonlPath: (uuid: string) => string | null;
|
|
115
|
+
readCwdFromJsonl: (filePath: string) => Promise<string | null>;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* The session lifecycle surface: list/get, start, resume, fork, adopt, input,
|
|
119
|
+
* answers, permission gates, uploads, stop/cancel and session names.
|
|
120
|
+
*
|
|
121
|
+
* Extracted from StreamerServer so session work stops editing the server file
|
|
122
|
+
* (see docs/plans/2026-07-12-server-ts-split.md, PR 8). State stays on the
|
|
123
|
+
* server: this class only reads and mutates it through `deps`.
|
|
124
|
+
*/
|
|
125
|
+
export declare class SessionHandlers {
|
|
126
|
+
private deps;
|
|
127
|
+
constructor(deps: SessionHandlersDeps);
|
|
128
|
+
private get sessionStore();
|
|
129
|
+
private get ptyManager();
|
|
130
|
+
private get wsHub();
|
|
131
|
+
private get scannerManager();
|
|
132
|
+
private get sessionWatchers();
|
|
133
|
+
private get registryBoot();
|
|
134
|
+
private get externalTailManager();
|
|
135
|
+
private get idempotency();
|
|
136
|
+
private get sessionStatusBus();
|
|
137
|
+
private get sessionFileMap();
|
|
138
|
+
private get pendingQuestions();
|
|
139
|
+
private get pendingQuestionKey();
|
|
140
|
+
private get pendingPermission();
|
|
141
|
+
private get pendingPermissionKey();
|
|
142
|
+
private get contendedSessions();
|
|
143
|
+
private get selfPtyEndedAt();
|
|
144
|
+
private get sessionSubscribers();
|
|
145
|
+
private get agentConfig();
|
|
146
|
+
private get agentClient();
|
|
147
|
+
private get defaultSystemPrompt();
|
|
148
|
+
private get codexSystemPromptEnabled();
|
|
149
|
+
private get cacheDir();
|
|
150
|
+
private get cache();
|
|
151
|
+
private get log();
|
|
152
|
+
private get browseRoot();
|
|
153
|
+
private get claudeFlags();
|
|
154
|
+
private get claudeExtraArgs();
|
|
155
|
+
private get dbPool();
|
|
156
|
+
private get dbInstanceId();
|
|
157
|
+
private get discoveryCache();
|
|
158
|
+
private set discoveryCache(value);
|
|
159
|
+
private get discoveryInFlight();
|
|
160
|
+
private set discoveryInFlight(value);
|
|
161
|
+
handleListSessions(url: URL, res: ServerResponse): Promise<void>;
|
|
162
|
+
/**
|
|
163
|
+
* Refresh the discovered-process list, sharing one in-flight enumeration
|
|
164
|
+
* across concurrent callers and honouring the 15s TTL cache.
|
|
165
|
+
*/
|
|
166
|
+
private refreshDiscovery;
|
|
167
|
+
handleGetSession(sessionId: string, res: ServerResponse): Promise<void>;
|
|
168
|
+
handleResume(req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* `POST /api/sessions/:id/fork` — continue a conversation this streamer is
|
|
171
|
+
* not allowed to resume, without touching whoever owns it.
|
|
172
|
+
*
|
|
173
|
+
* Codex only (`codex fork <id>`): Claude Code has no equivalent, and there is
|
|
174
|
+
* no safe generic fallback — quietly resuming instead would attach to the
|
|
175
|
+
* exact writer the caller is trying to leave alone, which is the failure this
|
|
176
|
+
* endpoint exists to avoid.
|
|
177
|
+
*
|
|
178
|
+
* NOT idempotent by default: every accepted call starts another Codex
|
|
179
|
+
* process and another rollout. Clients that retry on timeout must send
|
|
180
|
+
* `idempotencyKey`, which replays the first outcome for 10 minutes (same
|
|
181
|
+
* store and semantics as `POST /:id/input`).
|
|
182
|
+
*/
|
|
183
|
+
handleFork(sessionId: string, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
184
|
+
/**
|
|
185
|
+
* Resume a session, from an HTTP request or from the boot path.
|
|
186
|
+
*
|
|
187
|
+
* Extracted from `handleResume` so both callers hit the **same collision
|
|
188
|
+
* probe** (plan Phase 7c). The probe is what stops this streamer attaching to
|
|
189
|
+
* a conversation an external terminal already owns; a second, hand-adapted
|
|
190
|
+
* copy of this sequence in the boot path is how two agents end up appending
|
|
191
|
+
* to one JSONL at 4am with nobody watching.
|
|
192
|
+
*
|
|
193
|
+
* Returns a typed reason rather than writing a response, so the HTTP caller
|
|
194
|
+
* maps it to a status code and the boot caller logs it.
|
|
195
|
+
*/
|
|
196
|
+
resumeSession(opts: {
|
|
197
|
+
sessionId: string;
|
|
198
|
+
force?: boolean;
|
|
199
|
+
projectName?: string;
|
|
200
|
+
branch?: string;
|
|
201
|
+
}): Promise<ResumeOutcome>;
|
|
202
|
+
handleSendInput(sessionId: string, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
203
|
+
handleLiveQuestion(sessionId: string, questions: AskQuestion[]): void;
|
|
204
|
+
handlePermissionChange(sessionId: string, gate: {
|
|
205
|
+
prompt?: string;
|
|
206
|
+
detail?: string;
|
|
207
|
+
options: PermissionOption[];
|
|
208
|
+
cursor?: number;
|
|
209
|
+
} | null): void;
|
|
210
|
+
handleSendAnswer(sessionId: string, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
211
|
+
private questionMenuStillOpen;
|
|
212
|
+
handleUploadFile(sessionId: string, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
213
|
+
handleGetOutput(sessionId: string, res: ServerResponse): void;
|
|
214
|
+
handleCancel(sessionId: string, res: ServerResponse): void;
|
|
215
|
+
handleStopSession(sessionId: string, res: ServerResponse): Promise<void>;
|
|
216
|
+
/**
|
|
217
|
+
* An unused start: the user never submitted a prompt, and the conversation
|
|
218
|
+
* cache has no row for this id (empty Codex/Claude often never write a JSONL).
|
|
219
|
+
* `conversationId === sessionId` is not evidence of history — only the cache
|
|
220
|
+
* is. promptCount > 0 or a cache hit keeps today's hold path.
|
|
221
|
+
*/
|
|
222
|
+
private shouldForgetEmptySession;
|
|
223
|
+
private hasCachedConversationFor;
|
|
224
|
+
private forgetEmptyStoppedSession;
|
|
225
|
+
/**
|
|
226
|
+
* Same empty-unused check stop uses (promptCount === 0 and no cache row,
|
|
227
|
+
* including boundConversationId / resumedFromConversationId). Safe after
|
|
228
|
+
* putOnHold: the runner may already have dropped the live session.
|
|
229
|
+
*/
|
|
230
|
+
forgetIfEmptyUnused(sessionId: string): void;
|
|
231
|
+
handleAdopt(sessionId: string, res: ServerResponse): Promise<void>;
|
|
232
|
+
handleStartSession(req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
233
|
+
handleSetSessionName(sessionId: string, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
234
|
+
handleGetSessionNames(res: ServerResponse): void;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=sessions.handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.handlers.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/sessions.handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from "hono";
|
|
2
|
+
import type { AppEnv } from "../app";
|
|
3
|
+
import type { ApiDeps } from "../types/api-deps";
|
|
4
|
+
export declare const authMiddleware: (deps: Pick<ApiDeps, "apiKey" | "localNoAuth" | "devicesRepo">) => MiddlewareHandler<AppEnv>;
|
|
5
|
+
//# sourceMappingURL=auth.middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../../src/api/middleware/auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAS9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAiBjD,eAAO,MAAM,cAAc,SAClB,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAC,KAAG,iBAAiB,CAAC,MAAM,CAyFxF,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from "hono";
|
|
2
|
+
import type { AppEnv } from "../app";
|
|
3
|
+
export declare function resolveAllowedOrigins(raw: string | undefined): Set<string> | null;
|
|
4
|
+
export declare const corsMiddleware: (configValue?: string) => MiddlewareHandler<AppEnv>;
|
|
5
|
+
//# sourceMappingURL=cors.middleware.d.ts.map
|