@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.
Files changed (300) hide show
  1. package/dist/agent/agent-client.d.ts +14 -0
  2. package/dist/agent/agent-client.d.ts.map +1 -0
  3. package/dist/agent/agent-config.d.ts +24 -0
  4. package/dist/agent/agent-config.d.ts.map +1 -0
  5. package/dist/agent/conversation-writer.d.ts +13 -0
  6. package/dist/agent/conversation-writer.d.ts.map +1 -0
  7. package/dist/agent/dedupe.d.ts +6 -0
  8. package/dist/agent/dedupe.d.ts.map +1 -0
  9. package/dist/agent/errors.d.ts +23 -0
  10. package/dist/agent/errors.d.ts.map +1 -0
  11. package/dist/agent/handle-send-agent-input.d.ts +21 -0
  12. package/dist/agent/handle-send-agent-input.d.ts.map +1 -0
  13. package/dist/agent/handle-start-agent-session.d.ts +21 -0
  14. package/dist/agent/handle-start-agent-session.d.ts.map +1 -0
  15. package/dist/agent/history-mapper.d.ts +4 -0
  16. package/dist/agent/history-mapper.d.ts.map +1 -0
  17. package/dist/agent/payload-guard.d.ts +29 -0
  18. package/dist/agent/payload-guard.d.ts.map +1 -0
  19. package/dist/api/app.d.ts +28 -0
  20. package/dist/api/app.d.ts.map +1 -0
  21. package/dist/api/handlers/conversations.handlers.d.ts +69 -0
  22. package/dist/api/handlers/conversations.handlers.d.ts.map +1 -0
  23. package/dist/api/handlers/http-helpers.d.ts +50 -0
  24. package/dist/api/handlers/http-helpers.d.ts.map +1 -0
  25. package/dist/api/handlers/sessions.handlers.d.ts +236 -0
  26. package/dist/api/handlers/sessions.handlers.d.ts.map +1 -0
  27. package/dist/api/middleware/auth.middleware.d.ts +5 -0
  28. package/dist/api/middleware/auth.middleware.d.ts.map +1 -0
  29. package/dist/api/middleware/cors.middleware.d.ts +5 -0
  30. package/dist/api/middleware/cors.middleware.d.ts.map +1 -0
  31. package/dist/api/middleware/error.middleware.d.ts +4 -0
  32. package/dist/api/middleware/error.middleware.d.ts.map +1 -0
  33. package/dist/api/routes/backup.routes.d.ts +5 -0
  34. package/dist/api/routes/backup.routes.d.ts.map +1 -0
  35. package/dist/api/routes/browse.routes.d.ts +5 -0
  36. package/dist/api/routes/browse.routes.d.ts.map +1 -0
  37. package/dist/api/routes/cacheAlert.routes.d.ts +5 -0
  38. package/dist/api/routes/cacheAlert.routes.d.ts.map +1 -0
  39. package/dist/api/routes/config.routes.d.ts +5 -0
  40. package/dist/api/routes/config.routes.d.ts.map +1 -0
  41. package/dist/api/routes/conversations.routes.d.ts +5 -0
  42. package/dist/api/routes/conversations.routes.d.ts.map +1 -0
  43. package/dist/api/routes/devices.routes.d.ts +17 -0
  44. package/dist/api/routes/devices.routes.d.ts.map +1 -0
  45. package/dist/api/routes/diagnostics.routes.d.ts +5 -0
  46. package/dist/api/routes/diagnostics.routes.d.ts.map +1 -0
  47. package/dist/api/routes/health.routes.d.ts +5 -0
  48. package/dist/api/routes/health.routes.d.ts.map +1 -0
  49. package/dist/api/routes/logs.routes.d.ts +3 -0
  50. package/dist/api/routes/logs.routes.d.ts.map +1 -0
  51. package/dist/api/routes/misc.routes.d.ts +77 -0
  52. package/dist/api/routes/misc.routes.d.ts.map +1 -0
  53. package/dist/api/routes/pair.routes.d.ts +5 -0
  54. package/dist/api/routes/pair.routes.d.ts.map +1 -0
  55. package/dist/api/routes/progress.routes.d.ts +39 -0
  56. package/dist/api/routes/progress.routes.d.ts.map +1 -0
  57. package/dist/api/routes/projects.routes.d.ts +5 -0
  58. package/dist/api/routes/projects.routes.d.ts.map +1 -0
  59. package/dist/api/routes/providers.routes.d.ts +19 -0
  60. package/dist/api/routes/providers.routes.d.ts.map +1 -0
  61. package/dist/api/routes/scanner.routes.d.ts +5 -0
  62. package/dist/api/routes/scanner.routes.d.ts.map +1 -0
  63. package/dist/api/routes/sessions.routes.d.ts +6 -0
  64. package/dist/api/routes/sessions.routes.d.ts.map +1 -0
  65. package/dist/api/routes/ws.routes.d.ts +7 -0
  66. package/dist/api/routes/ws.routes.d.ts.map +1 -0
  67. package/dist/api/types/api-deps.d.ts +114 -0
  68. package/dist/api/types/api-deps.d.ts.map +1 -0
  69. package/dist/auth.d.ts +81 -0
  70. package/dist/auth.d.ts.map +1 -0
  71. package/dist/browse.d.ts +17 -0
  72. package/dist/browse.d.ts.map +1 -0
  73. package/dist/claude-flags.d.ts +76 -0
  74. package/dist/claude-flags.d.ts.map +1 -0
  75. package/dist/cli.cjs +121 -7
  76. package/dist/cli.cjs.map +1 -1
  77. package/dist/codex-pty-runner.d.ts +90 -0
  78. package/dist/codex-pty-runner.d.ts.map +1 -0
  79. package/dist/config/update-config.d.ts +13 -0
  80. package/dist/config/update-config.d.ts.map +1 -0
  81. package/dist/conversation-cache.d.ts +336 -0
  82. package/dist/conversation-cache.d.ts.map +1 -0
  83. package/dist/db/config.d.ts +11 -0
  84. package/dist/db/config.d.ts.map +1 -0
  85. package/dist/db/index.d.ts +5 -0
  86. package/dist/db/index.d.ts.map +1 -0
  87. package/dist/db/migrations.d.ts +3 -0
  88. package/dist/db/migrations.d.ts.map +1 -0
  89. package/dist/db/pool.d.ts +5 -0
  90. package/dist/db/pool.d.ts.map +1 -0
  91. package/dist/db/query-timing.d.ts +52 -0
  92. package/dist/db/query-timing.d.ts.map +1 -0
  93. package/dist/db/repositories/cacheMetadata.repository.d.ts +12 -0
  94. package/dist/db/repositories/cacheMetadata.repository.d.ts.map +1 -0
  95. package/dist/db/repositories/conversations.repository.d.ts +27 -0
  96. package/dist/db/repositories/conversations.repository.d.ts.map +1 -0
  97. package/dist/db/repositories/devices.repository.d.ts +137 -0
  98. package/dist/db/repositories/devices.repository.d.ts.map +1 -0
  99. package/dist/db/repositories/managed-sessions.repository.d.ts +127 -0
  100. package/dist/db/repositories/managed-sessions.repository.d.ts.map +1 -0
  101. package/dist/db/repositories/projects.repository.d.ts +28 -0
  102. package/dist/db/repositories/projects.repository.d.ts.map +1 -0
  103. package/dist/db/repositories/push.repository.d.ts +186 -0
  104. package/dist/db/repositories/push.repository.d.ts.map +1 -0
  105. package/dist/db/repositories/sessions.repository.d.ts +16 -0
  106. package/dist/db/repositories/sessions.repository.d.ts.map +1 -0
  107. package/dist/db/runtime-store.d.ts +80 -0
  108. package/dist/db/runtime-store.d.ts.map +1 -0
  109. package/dist/db/sqlite-migrate.d.ts +13 -0
  110. package/dist/db/sqlite-migrate.d.ts.map +1 -0
  111. package/dist/db/upload-records.d.ts +11 -0
  112. package/dist/db/upload-records.d.ts.map +1 -0
  113. package/dist/e2ee/noise.d.ts +261 -0
  114. package/dist/e2ee/noise.d.ts.map +1 -0
  115. package/dist/e2ee/pair-payload.d.ts +60 -0
  116. package/dist/e2ee/pair-payload.d.ts.map +1 -0
  117. package/dist/e2ee/pair-request.d.ts +24 -0
  118. package/dist/e2ee/pair-request.d.ts.map +1 -0
  119. package/dist/external-tails.d.ts +91 -0
  120. package/dist/external-tails.d.ts.map +1 -0
  121. package/dist/feature-flags.d.ts +212 -0
  122. package/dist/feature-flags.d.ts.map +1 -0
  123. package/dist/handlers/handleListProjects.d.ts +3 -0
  124. package/dist/handlers/handleListProjects.d.ts.map +1 -0
  125. package/dist/index.cjs +101 -2
  126. package/dist/index.cjs.map +1 -1
  127. package/dist/index.d.ts +18 -2571
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +101 -2
  130. package/dist/index.js.map +1 -1
  131. package/dist/lifecycle/constants.d.ts +21 -0
  132. package/dist/lifecycle/constants.d.ts.map +1 -0
  133. package/dist/lifecycle/process-liveness.d.ts +7 -0
  134. package/dist/lifecycle/process-liveness.d.ts.map +1 -0
  135. package/dist/live-session-manager.d.ts +59 -0
  136. package/dist/live-session-manager.d.ts.map +1 -0
  137. package/dist/logger.d.ts +14 -0
  138. package/dist/logger.d.ts.map +1 -0
  139. package/dist/pair-store.d.ts +60 -0
  140. package/dist/pair-store.d.ts.map +1 -0
  141. package/dist/platform.d.ts +25 -0
  142. package/dist/platform.d.ts.map +1 -0
  143. package/dist/process-discovery.d.ts +35 -0
  144. package/dist/process-discovery.d.ts.map +1 -0
  145. package/dist/providers.d.ts +7 -0
  146. package/dist/providers.d.ts.map +1 -0
  147. package/dist/pty-host/protocol.d.ts +270 -0
  148. package/dist/pty-host/protocol.d.ts.map +1 -0
  149. package/dist/pty-host/remote-session-runner.d.ts +133 -0
  150. package/dist/pty-host/remote-session-runner.d.ts.map +1 -0
  151. package/dist/pty-host/socket.d.ts +54 -0
  152. package/dist/pty-host/socket.d.ts.map +1 -0
  153. package/dist/pty-host/spawn-host.d.ts +30 -0
  154. package/dist/pty-host/spawn-host.d.ts.map +1 -0
  155. package/dist/pty-manager.d.ts +65 -0
  156. package/dist/pty-manager.d.ts.map +1 -0
  157. package/dist/pty-shared.d.ts +27 -0
  158. package/dist/pty-shared.d.ts.map +1 -0
  159. package/dist/scanner-manager.d.ts +126 -0
  160. package/dist/scanner-manager.d.ts.map +1 -0
  161. package/dist/schemas/cacheAlert.schema.d.ts +14 -0
  162. package/dist/schemas/cacheAlert.schema.d.ts.map +1 -0
  163. package/dist/schemas/claudeFlags.schema.d.ts +7 -0
  164. package/dist/schemas/claudeFlags.schema.d.ts.map +1 -0
  165. package/dist/schemas/project.schema.d.ts +18 -0
  166. package/dist/schemas/project.schema.d.ts.map +1 -0
  167. package/dist/schemas/updateConfig.schema.d.ts +19 -0
  168. package/dist/schemas/updateConfig.schema.d.ts.map +1 -0
  169. package/dist/seal.d.ts +14 -0
  170. package/dist/seal.d.ts.map +1 -0
  171. package/dist/server-identity.d.ts +43 -0
  172. package/dist/server-identity.d.ts.map +1 -0
  173. package/dist/server-wiring.d.ts +189 -0
  174. package/dist/server-wiring.d.ts.map +1 -0
  175. package/dist/server.d.ts +404 -0
  176. package/dist/server.d.ts.map +1 -0
  177. package/dist/services/backup/backup.d.ts +103 -0
  178. package/dist/services/backup/backup.d.ts.map +1 -0
  179. package/dist/services/cache/cacheMetadata.d.ts +8 -0
  180. package/dist/services/cache/cacheMetadata.d.ts.map +1 -0
  181. package/dist/services/cache-integrity/alertStore.d.ts +24 -0
  182. package/dist/services/cache-integrity/alertStore.d.ts.map +1 -0
  183. package/dist/services/cache-integrity/backup.d.ts +8 -0
  184. package/dist/services/cache-integrity/backup.d.ts.map +1 -0
  185. package/dist/services/cache-integrity/cacheIntegrityMonitor.d.ts +71 -0
  186. package/dist/services/cache-integrity/cacheIntegrityMonitor.d.ts.map +1 -0
  187. package/dist/services/conversations/conversationWatcher.d.ts +99 -0
  188. package/dist/services/conversations/conversationWatcher.d.ts.map +1 -0
  189. package/dist/services/conversations/findSearchTarget.d.ts +30 -0
  190. package/dist/services/conversations/findSearchTarget.d.ts.map +1 -0
  191. package/dist/services/conversations/isAgentConversation.d.ts +8 -0
  192. package/dist/services/conversations/isAgentConversation.d.ts.map +1 -0
  193. package/dist/services/conversations/pruneAgentConversations.d.ts +8 -0
  194. package/dist/services/conversations/pruneAgentConversations.d.ts.map +1 -0
  195. package/dist/services/conversations/refreshConversationCache.d.ts +27 -0
  196. package/dist/services/conversations/refreshConversationCache.d.ts.map +1 -0
  197. package/dist/services/conversations/shouldRefreshProjectsFromHdd.d.ts +33 -0
  198. package/dist/services/conversations/shouldRefreshProjectsFromHdd.d.ts.map +1 -0
  199. package/dist/services/diagnostics/diagnostics.d.ts +66 -0
  200. package/dist/services/diagnostics/diagnostics.d.ts.map +1 -0
  201. package/dist/services/projectChats/deriveProjectChatTitle.d.ts +15 -0
  202. package/dist/services/projectChats/deriveProjectChatTitle.d.ts.map +1 -0
  203. package/dist/services/projects/ensureProjectsForConversations.d.ts +15 -0
  204. package/dist/services/projects/ensureProjectsForConversations.d.ts.map +1 -0
  205. package/dist/services/providers/capabilities.d.ts +105 -0
  206. package/dist/services/providers/capabilities.d.ts.map +1 -0
  207. package/dist/services/providers/providerHealth.d.ts +72 -0
  208. package/dist/services/providers/providerHealth.d.ts.map +1 -0
  209. package/dist/services/push/apnsClient.d.ts +105 -0
  210. package/dist/services/push/apnsClient.d.ts.map +1 -0
  211. package/dist/services/push/expoPushSender.d.ts +37 -0
  212. package/dist/services/push/expoPushSender.d.ts.map +1 -0
  213. package/dist/services/push/liveActivityContentState.d.ts +60 -0
  214. package/dist/services/push/liveActivityContentState.d.ts.map +1 -0
  215. package/dist/services/push/liveActivityNotifier.d.ts +49 -0
  216. package/dist/services/push/liveActivityNotifier.d.ts.map +1 -0
  217. package/dist/services/push/liveActivityRenewal.d.ts +63 -0
  218. package/dist/services/push/liveActivityRenewal.d.ts.map +1 -0
  219. package/dist/services/push/liveActivitySender.d.ts +88 -0
  220. package/dist/services/push/liveActivitySender.d.ts.map +1 -0
  221. package/dist/services/push/waitingInputNotifier.d.ts +41 -0
  222. package/dist/services/push/waitingInputNotifier.d.ts.map +1 -0
  223. package/dist/services/questions/answersToKeystrokes.d.ts +8 -0
  224. package/dist/services/questions/answersToKeystrokes.d.ts.map +1 -0
  225. package/dist/services/questions/codexGateAnswers.d.ts +14 -0
  226. package/dist/services/questions/codexGateAnswers.d.ts.map +1 -0
  227. package/dist/services/questions/codexScreen.d.ts +74 -0
  228. package/dist/services/questions/codexScreen.d.ts.map +1 -0
  229. package/dist/services/questions/detectAskUserQuestion.d.ts +6 -0
  230. package/dist/services/questions/detectAskUserQuestion.d.ts.map +1 -0
  231. package/dist/services/questions/detectPermissionGate.d.ts +62 -0
  232. package/dist/services/questions/detectPermissionGate.d.ts.map +1 -0
  233. package/dist/services/questions/detectQuestionFromScreen.d.ts +30 -0
  234. package/dist/services/questions/detectQuestionFromScreen.d.ts.map +1 -0
  235. package/dist/services/questions/detectShellPrompt.d.ts +18 -0
  236. package/dist/services/questions/detectShellPrompt.d.ts.map +1 -0
  237. package/dist/services/questions/parseAgentPhase.d.ts +12 -0
  238. package/dist/services/questions/parseAgentPhase.d.ts.map +1 -0
  239. package/dist/services/questions/parseStatusLine.d.ts +19 -0
  240. package/dist/services/questions/parseStatusLine.d.ts.map +1 -0
  241. package/dist/services/questions/questionBroadcast.d.ts +18 -0
  242. package/dist/services/questions/questionBroadcast.d.ts.map +1 -0
  243. package/dist/services/questions/resolveAnswer.d.ts +16 -0
  244. package/dist/services/questions/resolveAnswer.d.ts.map +1 -0
  245. package/dist/services/search/searchQuery.d.ts +78 -0
  246. package/dist/services/search/searchQuery.d.ts.map +1 -0
  247. package/dist/services/security/capabilities.d.ts +50 -0
  248. package/dist/services/security/capabilities.d.ts.map +1 -0
  249. package/dist/services/sessions/autoResumeOnBoot.d.ts +28 -0
  250. package/dist/services/sessions/autoResumeOnBoot.d.ts.map +1 -0
  251. package/dist/services/sessions/codexRolloutOwner.d.ts +55 -0
  252. package/dist/services/sessions/codexRolloutOwner.d.ts.map +1 -0
  253. package/dist/services/sessions/conversationBusy.d.ts +32 -0
  254. package/dist/services/sessions/conversationBusy.d.ts.map +1 -0
  255. package/dist/services/sessions/idempotency.d.ts +67 -0
  256. package/dist/services/sessions/idempotency.d.ts.map +1 -0
  257. package/dist/services/sessions/reconcileSessions.d.ts +63 -0
  258. package/dist/services/sessions/reconcileSessions.d.ts.map +1 -0
  259. package/dist/services/sessions/rehydrateSessions.d.ts +68 -0
  260. package/dist/services/sessions/rehydrateSessions.d.ts.map +1 -0
  261. package/dist/services/sessions/resumeIdentity.d.ts +16 -0
  262. package/dist/services/sessions/resumeIdentity.d.ts.map +1 -0
  263. package/dist/session-registry-boot.d.ts +142 -0
  264. package/dist/session-registry-boot.d.ts.map +1 -0
  265. package/dist/session-store.d.ts +32 -0
  266. package/dist/session-store.d.ts.map +1 -0
  267. package/dist/session-watchers.d.ts +60 -0
  268. package/dist/session-watchers.d.ts.map +1 -0
  269. package/dist/types.d.ts +616 -0
  270. package/dist/types.d.ts.map +1 -0
  271. package/dist/uploads.d.ts +16 -0
  272. package/dist/uploads.d.ts.map +1 -0
  273. package/dist/utils/bootToken.d.ts +3 -0
  274. package/dist/utils/bootToken.d.ts.map +1 -0
  275. package/dist/utils/canonicalizeFilePath.d.ts +75 -0
  276. package/dist/utils/canonicalizeFilePath.d.ts.map +1 -0
  277. package/dist/utils/canonicalizeProjectPath.d.ts +13 -0
  278. package/dist/utils/canonicalizeProjectPath.d.ts.map +1 -0
  279. package/dist/utils/codexConversationLine.d.ts +38 -0
  280. package/dist/utils/codexConversationLine.d.ts.map +1 -0
  281. package/dist/utils/conversationEtag.d.ts +19 -0
  282. package/dist/utils/conversationEtag.d.ts.map +1 -0
  283. package/dist/utils/dates.d.ts +12 -0
  284. package/dist/utils/dates.d.ts.map +1 -0
  285. package/dist/utils/debounce.d.ts +15 -0
  286. package/dist/utils/debounce.d.ts.map +1 -0
  287. package/dist/utils/deriveSessionName.d.ts +10 -0
  288. package/dist/utils/deriveSessionName.d.ts.map +1 -0
  289. package/dist/utils/fileIdentity.d.ts +36 -0
  290. package/dist/utils/fileIdentity.d.ts.map +1 -0
  291. package/dist/utils/isScannedSnapshotStale.d.ts +16 -0
  292. package/dist/utils/isScannedSnapshotStale.d.ts.map +1 -0
  293. package/dist/utils/scanProgressThrottle.d.ts +12 -0
  294. package/dist/utils/scanProgressThrottle.d.ts.map +1 -0
  295. package/dist/version.d.ts +3 -0
  296. package/dist/version.d.ts.map +1 -0
  297. package/dist/ws-hub.d.ts +15 -0
  298. package/dist/ws-hub.d.ts.map +1 -0
  299. package/package.json +3 -4
  300. package/dist/index.d.cts +0 -2571
@@ -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,3 @@
1
+ /** Computed once per process — this is machine state, not a live reading. */
2
+ export declare function currentBootToken(): string;
3
+ //# sourceMappingURL=bootToken.d.ts.map
@@ -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"}