@threadbase-sh/streamer 1.63.0 → 1.64.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 +230 -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 +20 -5
- 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.d.ts +18 -2571
- package/dist/index.d.ts.map +1 -0
- 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 +184 -0
- package/dist/server-wiring.d.ts.map +1 -0
- package/dist/server.d.ts +390 -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
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,616 @@
|
|
|
1
|
+
import type { Stage } from "@threadbase-sh/agent-types";
|
|
2
|
+
import type { ProgressDedupeLRU } from "./agent/dedupe";
|
|
3
|
+
import type { ClaudeFlagValues, EffortLevel, PermissionMode } from "./claude-flags";
|
|
4
|
+
import type { FeatureFlagValues } from "./feature-flags";
|
|
5
|
+
import type { ProviderName } from "./providers";
|
|
6
|
+
export type SessionStatus = "running" | "waiting_input" | "idle";
|
|
7
|
+
/**
|
|
8
|
+
* Phase axis *inside* `status === "running"` — what the agent is doing during a
|
|
9
|
+
* turn. Deliberately a separate field rather than new SessionStatus members:
|
|
10
|
+
* VALID_STATUSES rejects unknown values and the store drops sessions outside
|
|
11
|
+
* the requested set, so a new status string would make those sessions vanish
|
|
12
|
+
* from already-shipped apps. Additive fields are safe; additive values in a
|
|
13
|
+
* union a shipped client filters on are not.
|
|
14
|
+
*
|
|
15
|
+
* The full set is defined here even though Codex only ever emits `working`
|
|
16
|
+
* (its status bar is binary — Ready/Working, and claiming otherwise would be
|
|
17
|
+
* invention). Defining it up front keeps a two-valued provider from fixing the
|
|
18
|
+
* field's shape before Claude's richer footer lands. Consumers must ignore an
|
|
19
|
+
* unrecognised value rather than coerce it.
|
|
20
|
+
*
|
|
21
|
+
* This union lives in exactly one place. Two independently-maintained copies of
|
|
22
|
+
* a TUI-derived grammar have already drifted once (tb-mobile PR #647).
|
|
23
|
+
*/
|
|
24
|
+
export type AgentPhase = "thinking" | "streaming" | "hooks" | "acting" | "working";
|
|
25
|
+
/**
|
|
26
|
+
* Process-lifetime axis for a managed session (C1 durable session runtime).
|
|
27
|
+
* Orthogonal to SessionStatus — see SessionResponse.lifecycle for why the two
|
|
28
|
+
* are separate, and docs/architecture/2026-07-24-durable-session-runtime.md.
|
|
29
|
+
*/
|
|
30
|
+
export type SessionLifecycle = "attached" | "starting" | "detached" | "orphaned" | "resumable" | "completed" | "failed";
|
|
31
|
+
/**
|
|
32
|
+
* How a SessionStatus was derived (C3).
|
|
33
|
+
* See docs/architecture/2026-07-24-session-state-confidence.md.
|
|
34
|
+
*
|
|
35
|
+
* The runners already compute this at every transition — it was written to a log
|
|
36
|
+
* line and discarded, so a status reached by a timer expiring was indistinguishable
|
|
37
|
+
* on the wire from one reached by observing a prompt marker.
|
|
38
|
+
*/
|
|
39
|
+
export type StatusSource = "spawn" | "prompt-marker" | "screen-marker" | "user-input" | "process-exit" | "timeout-fallback" | "quiet-fallback" | "shutdown";
|
|
40
|
+
/**
|
|
41
|
+
* How much to trust the status.
|
|
42
|
+
*
|
|
43
|
+
* `observed` — something in the stream or the process told us.
|
|
44
|
+
* `inferred` — a timer expired and we picked the most likely state.
|
|
45
|
+
*
|
|
46
|
+
* Deliberately two buckets rather than a numeric score: a percentage would imply
|
|
47
|
+
* a calibration we have no data to support. The point is that a guess must never
|
|
48
|
+
* be presented as an observation.
|
|
49
|
+
*/
|
|
50
|
+
export type StatusConfidence = "observed" | "inferred";
|
|
51
|
+
/** Confidence implied by each source. Inference is exactly the timer-driven paths. */
|
|
52
|
+
export declare function confidenceForSource(source: StatusSource): StatusConfidence;
|
|
53
|
+
export interface ManagedSession {
|
|
54
|
+
id: string;
|
|
55
|
+
provider?: ProviderName;
|
|
56
|
+
projectId?: string;
|
|
57
|
+
projectPath: string;
|
|
58
|
+
projectName: string;
|
|
59
|
+
branch: string;
|
|
60
|
+
status: SessionStatus;
|
|
61
|
+
startedAt: Date;
|
|
62
|
+
completedAt: Date | null;
|
|
63
|
+
promptCount: number;
|
|
64
|
+
lastOutput: string;
|
|
65
|
+
failureReason?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Machine-readable companion to `failureReason`, set only when the runner
|
|
68
|
+
* recognised the failure. Currently just `codex_active_writer` (Codex's
|
|
69
|
+
* single-writer lock), which the resume path maps to a structured 409 rather
|
|
70
|
+
* than reporting a spawn as successful. Absent for every other failure.
|
|
71
|
+
*/
|
|
72
|
+
failureCode?: string;
|
|
73
|
+
sessionName?: string;
|
|
74
|
+
model?: string;
|
|
75
|
+
account?: string;
|
|
76
|
+
messageCount?: number;
|
|
77
|
+
preview?: string;
|
|
78
|
+
firstMessageText?: string;
|
|
79
|
+
firstMessageAt?: Date;
|
|
80
|
+
lastMessageText?: string;
|
|
81
|
+
lastMessageAt?: Date;
|
|
82
|
+
lastActivityAt?: Date;
|
|
83
|
+
/**
|
|
84
|
+
* How `status` was derived, and when (C3). Confidence is derived from the
|
|
85
|
+
* source via confidenceForSource — storing both would let them disagree.
|
|
86
|
+
*/
|
|
87
|
+
statusSource?: StatusSource;
|
|
88
|
+
statusUpdatedAt?: Date;
|
|
89
|
+
/**
|
|
90
|
+
* Agent phase within a running turn, scraped from the rendered screen.
|
|
91
|
+
* Optional internally (every existing construction site predates it), but
|
|
92
|
+
* managedToResponse emits it unconditionally as `?? null` — on the wire
|
|
93
|
+
* absence must never be a third state, because the client merges session
|
|
94
|
+
* frames and a merge cannot express a removed key.
|
|
95
|
+
*
|
|
96
|
+
* Cleared in markReady() for the running -> waiting_input turn end, which is
|
|
97
|
+
* the only exit a runner observes on screen. Every other way out of `running`
|
|
98
|
+
* — handleExit, putOnHold, failStartup — is enforced by SessionStore
|
|
99
|
+
* .updateManaged() instead: a phase exists only while the status is
|
|
100
|
+
* `running`, so leaving it clears the field.
|
|
101
|
+
*/
|
|
102
|
+
subStatus?: AgentPhase | null;
|
|
103
|
+
filePath?: string;
|
|
104
|
+
resumedFromConversationId?: string;
|
|
105
|
+
/**
|
|
106
|
+
* This session was seeded from the durable registry at boot, not spawned by
|
|
107
|
+
* this run — there is no PTY behind it and never was one in this process.
|
|
108
|
+
*
|
|
109
|
+
* INTERNAL. It never reaches the wire: `managedToResponse` translates it into
|
|
110
|
+
* the already-defined `ownership: "historical"` + `lifecycle: "resumable"`
|
|
111
|
+
* pair, so no client needs to learn a new field to render a recovered session.
|
|
112
|
+
* Cleared implicitly when a resume overwrites the stub with a real session.
|
|
113
|
+
*/
|
|
114
|
+
rehydrated?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* This live session was re-adopted from the pty-host during boot rather than
|
|
117
|
+
* spawned by this streamer process. Internal lifecycle provenance only.
|
|
118
|
+
*/
|
|
119
|
+
reconciled?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* What this session was doing when the streamer stopped it, for a stub whose
|
|
122
|
+
* `status` had to flatten to `idle`. Only ever set from a registry row whose
|
|
123
|
+
* `status_source` is `shutdown` — the one source that means "we ended this",
|
|
124
|
+
* as opposed to the agent finishing or a crash freezing the row mid-turn.
|
|
125
|
+
*/
|
|
126
|
+
interruptedStatus?: "running" | "waiting_input";
|
|
127
|
+
/**
|
|
128
|
+
* Set once a live session's underlying persisted conversation file is
|
|
129
|
+
* discovered after the fact (currently: fresh Codex sessions, whose
|
|
130
|
+
* rollout id isn't known until the CLI creates its own JSONL). Distinct
|
|
131
|
+
* from `resumedFromConversationId` (resume flow) and `conversationId` on
|
|
132
|
+
* `SessionResponse` (stable mobile deep-link alias, always === id for the
|
|
133
|
+
* lifetime of a live PTY) — must never be written into either of those.
|
|
134
|
+
*/
|
|
135
|
+
boundConversationId?: string;
|
|
136
|
+
/**
|
|
137
|
+
* Source conversation this session was FORKED from (`codex fork`). Distinct
|
|
138
|
+
* from `resumedFromConversationId`: a resume continues one conversation, a
|
|
139
|
+
* fork starts a second one whose history diverges from the source at the fork
|
|
140
|
+
* point — and the source keeps its own owner, which is the entire point.
|
|
141
|
+
*/
|
|
142
|
+
forkedFromConversationId?: string;
|
|
143
|
+
/**
|
|
144
|
+
* Multi-agent mode only. Per-session in-memory LRU of progress event ids
|
|
145
|
+
* seen by the webhook receiver. Used to drop Temporal-replay duplicates
|
|
146
|
+
* before they reach the WebSocket. See spec §7.1.
|
|
147
|
+
*/
|
|
148
|
+
progressDedupeIds?: ProgressDedupeLRU;
|
|
149
|
+
/** Multi-agent: current stage of the active turn (advisory; advisory wire field). */
|
|
150
|
+
stage?: Stage | string;
|
|
151
|
+
/** Multi-agent: ms since the session last emitted a stage transition. */
|
|
152
|
+
stalledSinceMs?: number;
|
|
153
|
+
/** Multi-agent: 1 or 2 when stage === "rework". */
|
|
154
|
+
reworkAttempt?: number;
|
|
155
|
+
/**
|
|
156
|
+
* Multi-agent: id of the in-flight turn, or null when idle. Set when
|
|
157
|
+
* `POST /api/sessions/:id/input` accepts a request; cleared by the webhook
|
|
158
|
+
* receiver on stage=done or terminal_failure. Undefined in PTY mode.
|
|
159
|
+
*/
|
|
160
|
+
currentTurnId?: string | null;
|
|
161
|
+
/**
|
|
162
|
+
* Multi-agent resume: stable identity of the underlying conversation
|
|
163
|
+
* (the JSONL filename), distinct from `id` which is per-orchestrator-instance.
|
|
164
|
+
* Undefined in PTY mode (PTY uses `resumedFromConversationId` instead).
|
|
165
|
+
*/
|
|
166
|
+
conversationId?: string;
|
|
167
|
+
}
|
|
168
|
+
export interface DiscoveredProcess {
|
|
169
|
+
pid: number;
|
|
170
|
+
projectPath: string;
|
|
171
|
+
projectName: string;
|
|
172
|
+
branch: string;
|
|
173
|
+
conversationId: string | null;
|
|
174
|
+
startedAt: Date;
|
|
175
|
+
}
|
|
176
|
+
export interface AskOption {
|
|
177
|
+
label: string;
|
|
178
|
+
description: string;
|
|
179
|
+
preview?: string;
|
|
180
|
+
}
|
|
181
|
+
export interface AskQuestion {
|
|
182
|
+
question: string;
|
|
183
|
+
header: string;
|
|
184
|
+
multiSelect: boolean;
|
|
185
|
+
options: AskOption[];
|
|
186
|
+
}
|
|
187
|
+
export interface PermissionOption {
|
|
188
|
+
index: number;
|
|
189
|
+
label: string;
|
|
190
|
+
answerKeys?: string;
|
|
191
|
+
}
|
|
192
|
+
export interface UserMessage {
|
|
193
|
+
text: string;
|
|
194
|
+
ts: number;
|
|
195
|
+
}
|
|
196
|
+
export type WSMessage = {
|
|
197
|
+
type: "terminal_output";
|
|
198
|
+
sessionId: string;
|
|
199
|
+
data: string;
|
|
200
|
+
seq?: number;
|
|
201
|
+
} | {
|
|
202
|
+
type: "session_update";
|
|
203
|
+
session?: SessionResponse;
|
|
204
|
+
sessionId?: string;
|
|
205
|
+
turnId?: string;
|
|
206
|
+
stage?: Stage | string;
|
|
207
|
+
stalledSinceMs?: number;
|
|
208
|
+
reworkAttempt?: number;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Agent phase changed within a running turn. Scoped to that session's
|
|
212
|
+
* subscribers, like terminal_output and user_message.
|
|
213
|
+
*
|
|
214
|
+
* A minimal frame rather than a SessionResponse copy, deliberately:
|
|
215
|
+
* managedToResponse recomputes `elapsedMs` from `new Date()` on every call
|
|
216
|
+
* for a live session, so a session copy would differ on every tick whether
|
|
217
|
+
* or not the phase changed — and a client that merges frames would get a
|
|
218
|
+
* fresh object identity several times a second, re-rendering every consumer
|
|
219
|
+
* for the whole turn.
|
|
220
|
+
*
|
|
221
|
+
* `phase` is always present and is `null` when there is no phase. Absence
|
|
222
|
+
* must never carry meaning: clients merge session state, and a merge cannot
|
|
223
|
+
* express a removed key, so an omitted field would keep its previous value
|
|
224
|
+
* and the indicator would latch on a finished turn.
|
|
225
|
+
*/
|
|
226
|
+
| {
|
|
227
|
+
type: "session_phase";
|
|
228
|
+
sessionId: string;
|
|
229
|
+
phase: AgentPhase | null;
|
|
230
|
+
updatedAt: string;
|
|
231
|
+
} | {
|
|
232
|
+
type: "session_list";
|
|
233
|
+
sessions: readonly SessionResponse[];
|
|
234
|
+
} | {
|
|
235
|
+
type: "conversation_event";
|
|
236
|
+
sessionId: string;
|
|
237
|
+
line: string;
|
|
238
|
+
} | {
|
|
239
|
+
type: "conversation_events";
|
|
240
|
+
sessionId: string;
|
|
241
|
+
lines: string[];
|
|
242
|
+
seqs?: (number | null)[];
|
|
243
|
+
} | {
|
|
244
|
+
type: "conversation_updated";
|
|
245
|
+
conversationId: string;
|
|
246
|
+
messageCount: number;
|
|
247
|
+
lastActivity: string;
|
|
248
|
+
ownership: "external" | "managed";
|
|
249
|
+
} | {
|
|
250
|
+
type: "question";
|
|
251
|
+
sessionId: string;
|
|
252
|
+
toolUseId: string;
|
|
253
|
+
questions: AskQuestion[];
|
|
254
|
+
} | {
|
|
255
|
+
type: "question_cancelled";
|
|
256
|
+
sessionId: string;
|
|
257
|
+
toolUseId: string;
|
|
258
|
+
} | {
|
|
259
|
+
type: "permission";
|
|
260
|
+
sessionId: string;
|
|
261
|
+
prompt?: string;
|
|
262
|
+
detail?: string;
|
|
263
|
+
options: PermissionOption[];
|
|
264
|
+
cursor?: number;
|
|
265
|
+
} | {
|
|
266
|
+
type: "permission_cancelled";
|
|
267
|
+
sessionId: string;
|
|
268
|
+
} | {
|
|
269
|
+
type: "ping";
|
|
270
|
+
ts: number;
|
|
271
|
+
} | {
|
|
272
|
+
type: "user_message";
|
|
273
|
+
sessionId: string;
|
|
274
|
+
text: string;
|
|
275
|
+
ts: number;
|
|
276
|
+
} | {
|
|
277
|
+
type: "terminal_replay";
|
|
278
|
+
sessionId: string;
|
|
279
|
+
lines: string[];
|
|
280
|
+
userMessages?: UserMessage[];
|
|
281
|
+
seq?: number;
|
|
282
|
+
} | {
|
|
283
|
+
type: "session_ready";
|
|
284
|
+
session: SessionResponse;
|
|
285
|
+
} | {
|
|
286
|
+
type: "agent_output";
|
|
287
|
+
sessionId: string;
|
|
288
|
+
turnId: string;
|
|
289
|
+
role: "worker" | "reviewer" | "signoff";
|
|
290
|
+
content: string;
|
|
291
|
+
partial?: boolean;
|
|
292
|
+
reviewerOverruled?: boolean;
|
|
293
|
+
stage?: Stage | string;
|
|
294
|
+
reworkAttempt?: number;
|
|
295
|
+
} | {
|
|
296
|
+
type: "turn_failure";
|
|
297
|
+
sessionId: string;
|
|
298
|
+
turnId: string;
|
|
299
|
+
reason: string;
|
|
300
|
+
} | {
|
|
301
|
+
type: "cache_ready";
|
|
302
|
+
} | {
|
|
303
|
+
type: "scan_progress";
|
|
304
|
+
scanned: number;
|
|
305
|
+
total: number;
|
|
306
|
+
} | {
|
|
307
|
+
type: "cache_alert";
|
|
308
|
+
fingerprint: string;
|
|
309
|
+
severity: "high" | "low";
|
|
310
|
+
missingCount: number;
|
|
311
|
+
totalRows: number;
|
|
312
|
+
detectedAt: string;
|
|
313
|
+
sample: {
|
|
314
|
+
id: string;
|
|
315
|
+
title?: string;
|
|
316
|
+
}[];
|
|
317
|
+
} | {
|
|
318
|
+
type: "cache_alert_resolved";
|
|
319
|
+
fingerprint: string;
|
|
320
|
+
action: CacheAlertResolveAction;
|
|
321
|
+
};
|
|
322
|
+
/** The four cache-integrity resolution actions (POST /api/cache/alert/resolve). */
|
|
323
|
+
export type CacheAlertResolveAction = "prune_all" | "prune_selected" | "ignore" | "reset_rescan";
|
|
324
|
+
export type ServerWarmupState = "startup" | "cache_reset" | "conversation_refresh";
|
|
325
|
+
export interface ServerWarmingUpResponse {
|
|
326
|
+
error: "Server is warming up";
|
|
327
|
+
code: "SERVER_WARMING_UP";
|
|
328
|
+
warmupState: ServerWarmupState;
|
|
329
|
+
}
|
|
330
|
+
export interface SessionResponse {
|
|
331
|
+
id: string;
|
|
332
|
+
conversationId: string;
|
|
333
|
+
provider?: ProviderName;
|
|
334
|
+
projectId?: string;
|
|
335
|
+
status: SessionStatus;
|
|
336
|
+
projectPath: string;
|
|
337
|
+
projectName: string;
|
|
338
|
+
branch: string;
|
|
339
|
+
lastOutput: string;
|
|
340
|
+
elapsedMs: number;
|
|
341
|
+
promptCount: number;
|
|
342
|
+
startedAt: string;
|
|
343
|
+
completedAt: string | null;
|
|
344
|
+
ptyAttached: boolean;
|
|
345
|
+
/**
|
|
346
|
+
* Process-lifetime axis, orthogonal to `status` (C1).
|
|
347
|
+
*
|
|
348
|
+
* `status` answers "what is the agent doing" (running / waiting_input /
|
|
349
|
+
* idle); `lifecycle` answers "does this process still exist and do we own
|
|
350
|
+
* it". They were conflated before: `idle` meant finished, killed-to-save-
|
|
351
|
+
* resources, and externally-discovered all at once, so a client could not
|
|
352
|
+
* tell a completed session from one we terminated.
|
|
353
|
+
*
|
|
354
|
+
* Additive and optional — `ptyAttached` keeps its meaning (=== "attached"),
|
|
355
|
+
* so a client that ignores this behaves exactly as it did before. `"starting"`
|
|
356
|
+
* is additive in the same way: a session we hold no PTY for and have observed
|
|
357
|
+
* no exit for reports it instead of the `"completed"` it used to, so a client
|
|
358
|
+
* can tell "not attached yet" from "ended" (tb-mobile #508).
|
|
359
|
+
*/
|
|
360
|
+
/**
|
|
361
|
+
* How `status` was derived and how far to trust it (C3). Additive: `status`
|
|
362
|
+
* keeps its exact meaning, so a client ignoring these behaves as before.
|
|
363
|
+
* An `inferred` confidence means a timer expired and we assumed — not that
|
|
364
|
+
* anything in the stream confirmed the state.
|
|
365
|
+
*/
|
|
366
|
+
statusSource?: StatusSource;
|
|
367
|
+
statusConfidence?: StatusConfidence;
|
|
368
|
+
statusUpdatedAt?: string;
|
|
369
|
+
lifecycle?: SessionLifecycle;
|
|
370
|
+
/** How `lifecycle` was determined, so stale values are visible not implied. */
|
|
371
|
+
lifecycleSource?: "spawn" | "exit" | "probe" | "reconcile";
|
|
372
|
+
lifecycleUpdatedAt?: string;
|
|
373
|
+
/**
|
|
374
|
+
* ADDITIVE (plan Phase 5). What a recovered session was doing when the
|
|
375
|
+
* streamer stopped it, so a client can say "interrupted mid-response" instead
|
|
376
|
+
* of the `idle` its `status` is forced to report — a stub holds no PTY, and a
|
|
377
|
+
* novel SessionStatus value would be dropped by `?status=` filtering on
|
|
378
|
+
* already-shipped clients. Present only on rows whose `status_source` was
|
|
379
|
+
* `shutdown`; older clients ignore it.
|
|
380
|
+
*/
|
|
381
|
+
interruptedStatus?: "running" | "waiting_input";
|
|
382
|
+
failureReason?: string;
|
|
383
|
+
pid?: number;
|
|
384
|
+
sessionName?: string;
|
|
385
|
+
model?: string;
|
|
386
|
+
/**
|
|
387
|
+
* Reasoning-effort tier scraped from the live PTY status line (e.g. "high").
|
|
388
|
+
* Live sessions only — absent for historical/resumable conversations.
|
|
389
|
+
*/
|
|
390
|
+
effort?: string;
|
|
391
|
+
/**
|
|
392
|
+
* Active permission mode from the live PTY status line (e.g. "accept edits on").
|
|
393
|
+
* Live sessions only.
|
|
394
|
+
*/
|
|
395
|
+
permissionMode?: string;
|
|
396
|
+
/**
|
|
397
|
+
* Agent phase within a running turn, scraped from the rendered PTY screen.
|
|
398
|
+
*
|
|
399
|
+
* NOT optional, and always serialised — `null` when there is no phase. A
|
|
400
|
+
* client that merges session frames (`{...prev, ...next}`) cannot express a
|
|
401
|
+
* removed key, so an omitted field would keep its previous value and the
|
|
402
|
+
* indicator would latch on a finished turn. That is the bug tb-mobile PR #647
|
|
403
|
+
* shipped; absence must never carry meaning here.
|
|
404
|
+
*
|
|
405
|
+
* Consequently this must NOT be moved into the `...(x != null && { x })`
|
|
406
|
+
* guard block in managedToResponse: `!= null` catches null and undefined
|
|
407
|
+
* alike and would convert an explicit clear back into absence.
|
|
408
|
+
*/
|
|
409
|
+
subStatus: AgentPhase | null;
|
|
410
|
+
account?: string;
|
|
411
|
+
messageCount?: number;
|
|
412
|
+
preview?: string;
|
|
413
|
+
firstMessageText?: string;
|
|
414
|
+
firstMessageAt?: string;
|
|
415
|
+
lastMessageText?: string;
|
|
416
|
+
lastMessageAt?: string;
|
|
417
|
+
lastActivityAt?: string;
|
|
418
|
+
filePath?: string;
|
|
419
|
+
resumedFromConversationId?: string;
|
|
420
|
+
/** See `ManagedSession.forkedFromConversationId`. Additive; older clients ignore it. */
|
|
421
|
+
forkedFromConversationId?: string;
|
|
422
|
+
/** See `ManagedSession.boundConversationId` — never repurposes `conversationId`. */
|
|
423
|
+
boundConversationId?: string;
|
|
424
|
+
/**
|
|
425
|
+
* Who owns the underlying process. Additive — older clients ignore it, and it
|
|
426
|
+
* deliberately does NOT introduce a new `status` value: `VALID_STATUSES`
|
|
427
|
+
* rejects unknown values in `?status=` and the store drops sessions outside
|
|
428
|
+
* the requested set, so a new status string would make these sessions vanish
|
|
429
|
+
* from already-shipped apps.
|
|
430
|
+
* managed — this streamer spawned and holds the PTY
|
|
431
|
+
* external — a process we discovered but do not own (read-only)
|
|
432
|
+
* historical — a cached conversation, no process known
|
|
433
|
+
*/
|
|
434
|
+
ownership?: SessionOwnership;
|
|
435
|
+
/**
|
|
436
|
+
* Whether the process is believed to be running. Only ever "alive" when
|
|
437
|
+
* discovery actually saw it; never guessed from file activity.
|
|
438
|
+
*/
|
|
439
|
+
processLiveness?: ProcessLiveness;
|
|
440
|
+
/**
|
|
441
|
+
* INFERRED from JSONL writes, never authoritative: "active_writing" means the
|
|
442
|
+
* transcript grew recently, which cannot distinguish a generating agent from
|
|
443
|
+
* one blocked on a permission gate (gates are screen-only). Absent for
|
|
444
|
+
* sessions we own — their `status` is the authoritative signal.
|
|
445
|
+
*/
|
|
446
|
+
activity?: SessionActivity;
|
|
447
|
+
}
|
|
448
|
+
export type SessionOwnership = "managed" | "external" | "historical";
|
|
449
|
+
export type ProcessLiveness = "alive" | "gone" | "unknown";
|
|
450
|
+
export interface SessionActivity {
|
|
451
|
+
state: "active_writing" | "quiet";
|
|
452
|
+
lastEventAt: string;
|
|
453
|
+
source: "jsonl";
|
|
454
|
+
}
|
|
455
|
+
export interface ConversationListResponse {
|
|
456
|
+
conversations: unknown[];
|
|
457
|
+
hasMore: boolean;
|
|
458
|
+
offset: number;
|
|
459
|
+
total: number;
|
|
460
|
+
}
|
|
461
|
+
export type SessionSortKey = "startedAt" | "lastActivityAt" | "projectName" | "status";
|
|
462
|
+
export type SortOrder = "asc" | "desc";
|
|
463
|
+
export interface SessionListPage {
|
|
464
|
+
/** Response copies, like `SessionStore.list()` — see the note there. */
|
|
465
|
+
sessions: readonly Readonly<SessionResponse>[];
|
|
466
|
+
nextCursor: string | null;
|
|
467
|
+
total: number;
|
|
468
|
+
}
|
|
469
|
+
export interface SessionListQuery {
|
|
470
|
+
limit: number;
|
|
471
|
+
cursor?: string;
|
|
472
|
+
sortBy: SessionSortKey;
|
|
473
|
+
order: SortOrder;
|
|
474
|
+
status?: SessionStatus[];
|
|
475
|
+
}
|
|
476
|
+
export interface SessionCursor {
|
|
477
|
+
k: string | number;
|
|
478
|
+
id: string;
|
|
479
|
+
}
|
|
480
|
+
export interface ServerConfig {
|
|
481
|
+
port: number;
|
|
482
|
+
host?: string;
|
|
483
|
+
apiKey?: string;
|
|
484
|
+
/** 'cli' when --api-key was passed; rotation persists in-memory only and reverts on restart */
|
|
485
|
+
apiKeySource?: "config" | "cli";
|
|
486
|
+
localNoAuth?: boolean;
|
|
487
|
+
verbose?: boolean;
|
|
488
|
+
logMenubarRequests?: boolean;
|
|
489
|
+
browseRoot?: string;
|
|
490
|
+
publicUrl?: string;
|
|
491
|
+
browserCors?: string;
|
|
492
|
+
disableDb?: boolean;
|
|
493
|
+
scanProfiles?: Array<{
|
|
494
|
+
id: string;
|
|
495
|
+
label: string;
|
|
496
|
+
configDir: string;
|
|
497
|
+
enabled: boolean;
|
|
498
|
+
emoji: string;
|
|
499
|
+
}>;
|
|
500
|
+
codexRoots?: string[];
|
|
501
|
+
scannerPersistent?: boolean;
|
|
502
|
+
skipStartupWarmup?: boolean;
|
|
503
|
+
ptyGracePeriodMs?: number;
|
|
504
|
+
/**
|
|
505
|
+
* Re-start interrupted sessions at boot instead of listing them for the user
|
|
506
|
+
* to tap (plan Phase 7). A boolean here rather than the tri-state the loader
|
|
507
|
+
* returns: by the time a ServerConfig is built the "never asked" case has
|
|
508
|
+
* already resolved to false. Precedence: explicit here → `auto_resume_on_boot`
|
|
509
|
+
* in server.yaml → false. Never enabled implicitly — it is the one setting
|
|
510
|
+
* that starts an agent nobody asked for in that moment.
|
|
511
|
+
*/
|
|
512
|
+
autoResumeOnBoot?: boolean;
|
|
513
|
+
cacheDir?: string;
|
|
514
|
+
runtimeDbPath?: string;
|
|
515
|
+
tailSize?: number;
|
|
516
|
+
directoryScanDebounceMs?: number;
|
|
517
|
+
defaultSystemPrompt?: string;
|
|
518
|
+
codexSystemPromptEnabled?: boolean;
|
|
519
|
+
featureFlags?: FeatureFlagValues;
|
|
520
|
+
defaultPermissionMode?: PermissionMode;
|
|
521
|
+
defaultModel?: string;
|
|
522
|
+
defaultEffort?: EffortLevel;
|
|
523
|
+
claudeFlags?: ClaudeFlagValues;
|
|
524
|
+
claudeExtraArgs?: string;
|
|
525
|
+
}
|
|
526
|
+
export interface PTYManagerOptions {
|
|
527
|
+
onOutput?: (sessionId: string, data: string) => void;
|
|
528
|
+
onStatusChange?: (session: ManagedSession) => void;
|
|
529
|
+
onReady?: (session: ManagedSession) => void;
|
|
530
|
+
onPermissionChange?: (sessionId: string, gate: {
|
|
531
|
+
prompt?: string;
|
|
532
|
+
detail?: string;
|
|
533
|
+
options: PermissionOption[];
|
|
534
|
+
cursor?: number;
|
|
535
|
+
} | null) => void;
|
|
536
|
+
/**
|
|
537
|
+
* Fired when the agent's phase within a running turn changes, including to
|
|
538
|
+
* `null` at turn end. Additive; absent in tests that omit it.
|
|
539
|
+
*
|
|
540
|
+
* Deliberately NOT routed through onStatusChange, even though that callback
|
|
541
|
+
* already exists and is already relayed across the pty-host boundary. Its
|
|
542
|
+
* handler writes a DB row per invocation with no same-status guard, refreshes
|
|
543
|
+
* the scanner index, broadcasts globally, and pokes the APNs and push
|
|
544
|
+
* notifiers — machinery built for a handful of transitions per session, not
|
|
545
|
+
* for a signal that can fire every SCRAPE_THROTTLE_MS.
|
|
546
|
+
*
|
|
547
|
+
* The server must broadcast this to that session's subscribers only
|
|
548
|
+
* (wsHub.broadcastToClients), as a minimal frame rather than a SessionResponse
|
|
549
|
+
* copy: managedToResponse recomputes elapsedMs on every call, so a session
|
|
550
|
+
* copy would differ every tick and re-render every client consumer of that
|
|
551
|
+
* session for the whole turn.
|
|
552
|
+
*/
|
|
553
|
+
onPhaseChange?: (sessionId: string, phase: AgentPhase | null) => void;
|
|
554
|
+
onLiveQuestion?: (sessionId: string, questions: AskQuestion[]) => void;
|
|
555
|
+
onLiveQuestionGone?: (sessionId: string) => void;
|
|
556
|
+
onUserMessage?: (sessionId: string, text: string, ts: number) => void;
|
|
557
|
+
logger?: import("./logger").Logger;
|
|
558
|
+
}
|
|
559
|
+
export interface StartSessionOptions {
|
|
560
|
+
projectPath: string;
|
|
561
|
+
projectName?: string;
|
|
562
|
+
branch?: string;
|
|
563
|
+
/**
|
|
564
|
+
* Provider-side id to resume from, when it differs from `sessionId`. Codex
|
|
565
|
+
* keys a fresh session by a local placeholder UUID and only learns its real
|
|
566
|
+
* rollout id once it writes the file, so resuming needs the rollout id in
|
|
567
|
+
* argv while the session keeps the placeholder the client navigated to.
|
|
568
|
+
* Absent means "resume by the session id", which is what every Claude session
|
|
569
|
+
* does — PTYManager ignores this field entirely.
|
|
570
|
+
*/
|
|
571
|
+
resumeId?: string;
|
|
572
|
+
permissionMode?: PermissionMode;
|
|
573
|
+
model?: string;
|
|
574
|
+
effort?: EffortLevel;
|
|
575
|
+
claudeFlags?: ClaudeFlagValues;
|
|
576
|
+
claudeExtraArgs?: string;
|
|
577
|
+
}
|
|
578
|
+
export interface StartForkSessionOptions {
|
|
579
|
+
/**
|
|
580
|
+
* Provider-side id of the conversation to fork FROM (for Codex, the rollout
|
|
581
|
+
* id — never a local placeholder). The forked session gets its own id; the
|
|
582
|
+
* two identities are deliberately kept distinct.
|
|
583
|
+
*/
|
|
584
|
+
forkFromId: string;
|
|
585
|
+
projectPath: string;
|
|
586
|
+
projectName?: string;
|
|
587
|
+
branch?: string;
|
|
588
|
+
}
|
|
589
|
+
export interface StartFreshSessionOptions {
|
|
590
|
+
projectPath: string;
|
|
591
|
+
projectName?: string;
|
|
592
|
+
systemPrompt?: string;
|
|
593
|
+
permissionMode?: PermissionMode;
|
|
594
|
+
model?: string;
|
|
595
|
+
effort?: EffortLevel;
|
|
596
|
+
claudeFlags?: ClaudeFlagValues;
|
|
597
|
+
claudeExtraArgs?: string;
|
|
598
|
+
}
|
|
599
|
+
export interface SessionRunner {
|
|
600
|
+
start(sessionId: string, options: StartSessionOptions): Promise<ManagedSession>;
|
|
601
|
+
startFresh(options: StartFreshSessionOptions): Promise<ManagedSession>;
|
|
602
|
+
sendInput(sessionId: string, input: string): number;
|
|
603
|
+
sendKeys(sessionId: string, keys: string): void;
|
|
604
|
+
cancel(sessionId: string): void;
|
|
605
|
+
killPid(pid: number): void;
|
|
606
|
+
putOnHold(sessionId: string): void;
|
|
607
|
+
getOutput(sessionId: string): string;
|
|
608
|
+
getOutputLines(sessionId: string, maxLines: number): Promise<string[]>;
|
|
609
|
+
getInputHistory(sessionId: string): UserMessage[];
|
|
610
|
+
getPid(sessionId: string): number | null;
|
|
611
|
+
getSession(sessionId: string): ManagedSession | null;
|
|
612
|
+
hasSession(sessionId: string): boolean;
|
|
613
|
+
listSessions(): ManagedSession[];
|
|
614
|
+
dispose(): void;
|
|
615
|
+
}
|
|
616
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SaveUploadInput {
|
|
2
|
+
sessionId: string;
|
|
3
|
+
projectPath: string;
|
|
4
|
+
originalName: string;
|
|
5
|
+
mimeType: string;
|
|
6
|
+
dataBase64: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SavedUpload {
|
|
9
|
+
id: string;
|
|
10
|
+
filePath: string;
|
|
11
|
+
originalName: string;
|
|
12
|
+
mimeType: string;
|
|
13
|
+
sizeBytes: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function saveUploadFile(input: SaveUploadInput): Promise<SavedUpload>;
|
|
16
|
+
//# sourceMappingURL=uploads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../src/uploads.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CA6BjF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootToken.d.ts","sourceRoot":"","sources":["../../src/utils/bootToken.ts"],"names":[],"mappings":"AAoBA,6EAA6E;AAC7E,wBAAgB,gBAAgB,IAAI,MAAM,CAGzC"}
|