@markusylisiurunen/tau 0.2.128 → 0.3.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 (232) hide show
  1. package/README.md +130 -75
  2. package/dist/core/async/cli.js +12 -2
  3. package/dist/core/async/cli.js.map +1 -1
  4. package/dist/core/async/http_protocol.js +7 -1
  5. package/dist/core/async/http_protocol.js.map +1 -1
  6. package/dist/core/async/http_server.js +9 -1
  7. package/dist/core/async/http_server.js.map +1 -1
  8. package/dist/core/async/index.js.map +1 -1
  9. package/dist/core/async/session_manager.js +94 -51
  10. package/dist/core/async/session_manager.js.map +1 -1
  11. package/dist/core/auth/auth_manager.js +0 -92
  12. package/dist/core/auth/auth_manager.js.map +1 -1
  13. package/dist/core/auth/credential_store.js +247 -0
  14. package/dist/core/auth/credential_store.js.map +1 -0
  15. package/dist/core/auth/index.js +0 -1
  16. package/dist/core/auth/index.js.map +1 -1
  17. package/dist/core/cli.js +12 -15
  18. package/dist/core/cli.js.map +1 -1
  19. package/dist/core/commands/registry.js +11 -55
  20. package/dist/core/commands/registry.js.map +1 -1
  21. package/dist/core/config/index.js.map +1 -1
  22. package/dist/core/config/runtime.js +0 -1
  23. package/dist/core/config/runtime.js.map +1 -1
  24. package/dist/core/config/schema.js +102 -17
  25. package/dist/core/config/schema.js.map +1 -1
  26. package/dist/core/debug.js +1 -20
  27. package/dist/core/debug.js.map +1 -1
  28. package/dist/core/diff_review/{session.js → bridge.js} +57 -114
  29. package/dist/core/diff_review/bridge.js.map +1 -0
  30. package/dist/core/diff_review/index.js +2 -3
  31. package/dist/core/diff_review/index.js.map +1 -1
  32. package/dist/core/diff_review/review_thread.js +48 -23
  33. package/dist/core/diff_review/review_thread.js.map +1 -1
  34. package/dist/core/diff_review/snapshot.js +40 -11
  35. package/dist/core/diff_review/snapshot.js.map +1 -1
  36. package/dist/core/events/parser.js +43 -12
  37. package/dist/core/events/parser.js.map +1 -1
  38. package/dist/core/index.js +1 -2
  39. package/dist/core/index.js.map +1 -1
  40. package/dist/core/models/catalog.js +3 -3
  41. package/dist/core/models/catalog.js.map +1 -1
  42. package/dist/core/modes/index.js +1 -2
  43. package/dist/core/modes/index.js.map +1 -1
  44. package/dist/core/modes/rpc_server.js +15 -325
  45. package/dist/core/modes/rpc_server.js.map +1 -1
  46. package/dist/core/modes/websocket_server.js +181 -0
  47. package/dist/core/modes/websocket_server.js.map +1 -0
  48. package/dist/core/personas.js +11 -1
  49. package/dist/core/personas.js.map +1 -1
  50. package/dist/core/runtime/chat_runtime.js +19 -12
  51. package/dist/core/runtime/chat_runtime.js.map +1 -1
  52. package/dist/core/runtime/conversation_turn_runtime.js +16 -1
  53. package/dist/core/runtime/conversation_turn_runtime.js.map +1 -1
  54. package/dist/core/runtime/runtime_bootstrap.js +326 -0
  55. package/dist/core/runtime/runtime_bootstrap.js.map +1 -1
  56. package/dist/core/runtime/steering.js +6 -0
  57. package/dist/core/runtime/steering.js.map +1 -0
  58. package/dist/core/session/compaction.js +225 -22
  59. package/dist/core/session/compaction.js.map +1 -1
  60. package/dist/core/session/core_session.js +9 -0
  61. package/dist/core/session/core_session.js.map +1 -1
  62. package/dist/core/session/direct_bash.js +34 -0
  63. package/dist/core/session/direct_bash.js.map +1 -0
  64. package/dist/core/session/pruning.js +595 -0
  65. package/dist/core/session/pruning.js.map +1 -0
  66. package/dist/core/session/runner.js +47 -8
  67. package/dist/core/session/runner.js.map +1 -1
  68. package/dist/core/session/session_engine.js +128 -55
  69. package/dist/core/session/session_engine.js.map +1 -1
  70. package/dist/core/static/prompts/diff-review-wrapper.md +1 -1
  71. package/dist/core/subagents/subagent_engine.js +19 -27
  72. package/dist/core/subagents/subagent_engine.js.map +1 -1
  73. package/dist/core/tools/catalog.js.map +1 -1
  74. package/dist/core/tools/diff_review.js +12 -12
  75. package/dist/core/tools/diff_review.js.map +1 -1
  76. package/dist/core/tools/execution_backend.js +9 -2
  77. package/dist/core/tools/execution_backend.js.map +1 -1
  78. package/dist/core/tools/registry.js.map +1 -1
  79. package/dist/core/usage/logs.js.map +1 -1
  80. package/dist/core/utils/compact.js +3 -1
  81. package/dist/core/utils/compact.js.map +1 -1
  82. package/dist/core/utils/context.js +1 -1
  83. package/dist/core/utils/context.js.map +1 -1
  84. package/dist/core/utils/context_builder.js +1 -18
  85. package/dist/core/utils/context_builder.js.map +1 -1
  86. package/dist/core/utils/gemini_speech.js +1 -1
  87. package/dist/core/utils/gemini_speech.js.map +1 -1
  88. package/dist/core/utils/model_stream.js +105 -14
  89. package/dist/core/utils/model_stream.js.map +1 -1
  90. package/dist/core/utils/project_files.js +11 -16
  91. package/dist/core/utils/project_files.js.map +1 -1
  92. package/dist/core/utils/spawn_capture.js +2 -2
  93. package/dist/core/utils/spawn_capture.js.map +1 -1
  94. package/dist/core/utils/user_metadata.js +35 -2
  95. package/dist/core/utils/user_metadata.js.map +1 -1
  96. package/dist/core/version.js +1 -1
  97. package/dist/core/version.js.map +1 -1
  98. package/dist/diff_tool/app/dist/assets/{index-jn1I_CPZ.js → index-ivRn2dP2.js} +34 -34
  99. package/dist/diff_tool/app/dist/index.html +1 -1
  100. package/dist/execution/cloudflare_sandbox_execution_environment.js +400 -0
  101. package/dist/execution/cloudflare_sandbox_execution_environment.js.map +1 -0
  102. package/dist/execution/execution_environment.js +24 -0
  103. package/dist/execution/execution_environment.js.map +1 -0
  104. package/dist/execution/fly_sprite_execution_environment.js +559 -0
  105. package/dist/execution/fly_sprite_execution_environment.js.map +1 -0
  106. package/dist/execution/local_execution_environment.js +93 -0
  107. package/dist/execution/local_execution_environment.js.map +1 -0
  108. package/dist/execution/runtime_config_snapshot.js +209 -0
  109. package/dist/execution/runtime_config_snapshot.js.map +1 -0
  110. package/dist/execution/sandbox_tool_helpers.js +55 -0
  111. package/dist/execution/sandbox_tool_helpers.js.map +1 -0
  112. package/dist/execution/tool_backend_execution_environment.js +55 -0
  113. package/dist/execution/tool_backend_execution_environment.js.map +1 -0
  114. package/dist/host/hosted_ephemeral_agent_session.js +286 -0
  115. package/dist/host/hosted_ephemeral_agent_session.js.map +1 -0
  116. package/dist/host/index.js +3 -0
  117. package/dist/host/index.js.map +1 -0
  118. package/dist/host/local_session_host.js +1464 -0
  119. package/dist/host/local_session_host.js.map +1 -0
  120. package/dist/host/session_host.js +2 -0
  121. package/dist/host/session_host.js.map +1 -0
  122. package/dist/host/session_protocol_handler.js +873 -0
  123. package/dist/host/session_protocol_handler.js.map +1 -0
  124. package/dist/main.js +537 -77
  125. package/dist/main.js.map +1 -1
  126. package/dist/protocol/index.d.ts +2 -0
  127. package/dist/protocol/index.js +2 -0
  128. package/dist/protocol/index.js.map +1 -0
  129. package/dist/protocol/session_protocol.d.ts +691 -0
  130. package/dist/protocol/session_protocol.js +2117 -0
  131. package/dist/protocol/session_protocol.js.map +1 -0
  132. package/dist/sdk/client.d.ts +2 -1
  133. package/dist/sdk/client.js +136 -392
  134. package/dist/sdk/client.js.map +1 -1
  135. package/dist/sdk/index.d.ts +7 -4
  136. package/dist/sdk/index.js +4 -2
  137. package/dist/sdk/index.js.map +1 -1
  138. package/dist/sdk/session.d.ts +5 -0
  139. package/dist/sdk/session.js +406 -0
  140. package/dist/sdk/session.js.map +1 -0
  141. package/dist/sdk/types.d.ts +97 -78
  142. package/dist/store/file_session_store.js +157 -0
  143. package/dist/store/file_session_store.js.map +1 -0
  144. package/dist/store/memory_session_store.js +24 -0
  145. package/dist/store/memory_session_store.js.map +1 -0
  146. package/dist/store/session_store.js +32 -0
  147. package/dist/store/session_store.js.map +1 -0
  148. package/dist/transport/errors.d.ts +29 -0
  149. package/dist/{sdk → transport}/errors.js +5 -5
  150. package/dist/transport/errors.js.map +1 -0
  151. package/dist/transport/in_process_session_transport.js +102 -0
  152. package/dist/transport/in_process_session_transport.js.map +1 -0
  153. package/dist/transport/index.d.ts +7 -0
  154. package/dist/transport/index.js +4 -0
  155. package/dist/transport/index.js.map +1 -0
  156. package/dist/transport/pending_session_protocol_requests.js +67 -0
  157. package/dist/transport/pending_session_protocol_requests.js.map +1 -0
  158. package/dist/transport/session_protocol_transport_helpers.js +98 -0
  159. package/dist/transport/session_protocol_transport_helpers.js.map +1 -0
  160. package/dist/transport/session_transport.d.ts +11 -0
  161. package/dist/transport/session_transport.js +2 -0
  162. package/dist/transport/session_transport.js.map +1 -0
  163. package/dist/transport/stdio_session_transport.d.ts +38 -0
  164. package/dist/transport/stdio_session_transport.js +243 -0
  165. package/dist/transport/stdio_session_transport.js.map +1 -0
  166. package/dist/transport/websocket_session_transport.d.ts +52 -0
  167. package/dist/transport/websocket_session_transport.js +235 -0
  168. package/dist/transport/websocket_session_transport.js.map +1 -0
  169. package/dist/tui/chat_controller/assistant_clipboard.js +39 -0
  170. package/dist/tui/chat_controller/assistant_clipboard.js.map +1 -0
  171. package/dist/tui/chat_controller/command_hints.js +43 -0
  172. package/dist/tui/chat_controller/command_hints.js.map +1 -0
  173. package/dist/tui/chat_controller/diff_review_service.js +9 -9
  174. package/dist/tui/chat_controller/diff_review_service.js.map +1 -1
  175. package/dist/tui/chat_controller/diff_review_user_message.js +17 -0
  176. package/dist/tui/chat_controller/diff_review_user_message.js.map +1 -0
  177. package/dist/tui/chat_controller/history_labels.js +8 -0
  178. package/dist/tui/chat_controller/history_labels.js.map +1 -0
  179. package/dist/tui/chat_controller/history_message_model.js +36 -0
  180. package/dist/tui/chat_controller/history_message_model.js.map +1 -0
  181. package/dist/tui/chat_controller/queued_user_messages.js +18 -1
  182. package/dist/tui/chat_controller/queued_user_messages.js.map +1 -1
  183. package/dist/tui/chat_controller/status_format.js +22 -0
  184. package/dist/tui/chat_controller/status_format.js.map +1 -0
  185. package/dist/tui/chat_view.js +3 -1
  186. package/dist/tui/chat_view.js.map +1 -1
  187. package/dist/tui/index.js +1 -1
  188. package/dist/tui/index.js.map +1 -1
  189. package/dist/tui/listen_capture.js +87 -0
  190. package/dist/tui/listen_capture.js.map +1 -0
  191. package/dist/tui/memory_mode.js +23 -0
  192. package/dist/tui/memory_mode.js.map +1 -0
  193. package/dist/tui/session_chat_app.js +227 -0
  194. package/dist/tui/session_chat_app.js.map +1 -0
  195. package/dist/tui/session_chat_controller.js +2167 -0
  196. package/dist/tui/session_chat_controller.js.map +1 -0
  197. package/dist/tui/session_tool_execution_backend.js +170 -0
  198. package/dist/tui/session_tool_execution_backend.js.map +1 -0
  199. package/dist/tui/speech_playback.js +107 -0
  200. package/dist/tui/speech_playback.js.map +1 -0
  201. package/dist/tui/ui/assistant_message.js +27 -21
  202. package/dist/tui/ui/assistant_message.js.map +1 -1
  203. package/dist/tui/ui/components/editor.js +17 -13
  204. package/dist/tui/ui/components/editor.js.map +1 -1
  205. package/dist/tui/ui/custom_editor.js +25 -5
  206. package/dist/tui/ui/custom_editor.js.map +1 -1
  207. package/dist/tui/ui/queued_messages.js +1 -1
  208. package/dist/tui/ui/queued_messages.js.map +1 -1
  209. package/dist/tui/ui/slash_autocomplete.js +14 -36
  210. package/dist/tui/ui/slash_autocomplete.js.map +1 -1
  211. package/dist/tui/ui/tool_ui_registry.js +21 -0
  212. package/dist/tui/ui/tool_ui_registry.js.map +1 -1
  213. package/package.json +14 -11
  214. package/dist/core/auth/credential_resolver.js +0 -36
  215. package/dist/core/auth/credential_resolver.js.map +0 -1
  216. package/dist/core/config/bash_commands.js +0 -44
  217. package/dist/core/config/bash_commands.js.map +0 -1
  218. package/dist/core/diff_review/session.js.map +0 -1
  219. package/dist/core/modes/rpc_adapter.js +0 -17
  220. package/dist/core/modes/rpc_adapter.js.map +0 -1
  221. package/dist/core/modes/rpc_protocol.js +0 -500
  222. package/dist/core/modes/rpc_protocol.js.map +0 -1
  223. package/dist/core/session/checkpoint.js +0 -34
  224. package/dist/core/session/checkpoint.js.map +0 -1
  225. package/dist/sdk/errors.d.ts +0 -33
  226. package/dist/sdk/errors.js.map +0 -1
  227. package/dist/tui/app.js +0 -64
  228. package/dist/tui/app.js.map +0 -1
  229. package/dist/tui/chat_controller/session_maintenance_service.js +0 -634
  230. package/dist/tui/chat_controller/session_maintenance_service.js.map +0 -1
  231. package/dist/tui/chat_controller.js +0 -2532
  232. package/dist/tui/chat_controller.js.map +0 -1
@@ -0,0 +1,157 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { mkdir, readdir, readFile, rename, rm, writeFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import { basename, join } from "node:path";
5
+ import { validateSessionProtocolResult } from "../protocol/session_protocol.js";
6
+ import { assertExpectedSessionRevision, validateSessionStoreSnapshot, } from "./session_store.js";
7
+ const SNAPSHOT_FILE_EXTENSION = ".json";
8
+ const SNAPSHOT_LOCK_TIMEOUT_MS = 30_000;
9
+ const SNAPSHOT_LOCK_RETRY_MS = 10;
10
+ export function getDefaultSessionStoreDirectory(homeDir) {
11
+ return join(homeDir ?? homedir(), ".config", "tau", "sessions");
12
+ }
13
+ export class FileSessionStore {
14
+ directory;
15
+ constructor(options) {
16
+ this.directory = options.directory;
17
+ }
18
+ async commitSessionSnapshot(snapshot, options = {}) {
19
+ const validated = validateSessionStoreSnapshot(snapshot);
20
+ await this.withSnapshotLock(validated.sessionId, async () => {
21
+ const current = await this.loadSessionUnlocked(validated.sessionId);
22
+ assertExpectedSessionRevision(validated.sessionId, options.expectedRevision, current);
23
+ const finalPath = this.snapshotPath(validated.sessionId);
24
+ const tempPath = `${finalPath}.${process.pid}.${Date.now()}.${randomUUID()}.tmp`;
25
+ await writeFile(tempPath, `${JSON.stringify(validated)}\n`, "utf8");
26
+ await rename(tempPath, finalPath);
27
+ });
28
+ }
29
+ async loadSession(sessionId) {
30
+ let raw;
31
+ try {
32
+ raw = await readFile(this.snapshotPath(sessionId), "utf8");
33
+ }
34
+ catch (error) {
35
+ if (isNotFound(error)) {
36
+ return undefined;
37
+ }
38
+ throw error;
39
+ }
40
+ return parseStoredSnapshot(sessionId, raw);
41
+ }
42
+ async listSessionSnapshots() {
43
+ const filenames = await this.snapshotFilenames();
44
+ const snapshots = [];
45
+ for (const filename of filenames) {
46
+ const sessionId = sessionIdFromSnapshotFilename(filename);
47
+ const snapshot = await this.loadSession(sessionId);
48
+ if (snapshot) {
49
+ snapshots.push(snapshot);
50
+ }
51
+ }
52
+ return snapshots;
53
+ }
54
+ async deleteSession(sessionId, options = {}) {
55
+ await this.withSnapshotLock(sessionId, async () => {
56
+ const current = await this.loadSessionUnlocked(sessionId);
57
+ assertExpectedSessionRevision(sessionId, options.expectedRevision, current);
58
+ await rm(this.snapshotPath(sessionId), { force: true });
59
+ });
60
+ }
61
+ async loadSessionUnlocked(sessionId) {
62
+ let raw;
63
+ try {
64
+ raw = await readFile(this.snapshotPath(sessionId), "utf8");
65
+ }
66
+ catch (error) {
67
+ if (isNotFound(error)) {
68
+ return undefined;
69
+ }
70
+ throw error;
71
+ }
72
+ return parseStoredSnapshot(sessionId, raw);
73
+ }
74
+ async snapshotFilenames() {
75
+ let entries;
76
+ try {
77
+ entries = await readdir(this.directory);
78
+ }
79
+ catch (error) {
80
+ if (isNotFound(error)) {
81
+ return [];
82
+ }
83
+ throw error;
84
+ }
85
+ return entries
86
+ .filter((entry) => entry.endsWith(SNAPSHOT_FILE_EXTENSION))
87
+ .sort((a, b) => a.localeCompare(b));
88
+ }
89
+ snapshotPath(sessionId) {
90
+ return join(this.directory, snapshotFilename(sessionId));
91
+ }
92
+ snapshotLockPath(sessionId) {
93
+ return `${this.snapshotPath(sessionId)}.lock`;
94
+ }
95
+ async withSnapshotLock(sessionId, handler) {
96
+ await mkdir(this.directory, { recursive: true });
97
+ const lockPath = this.snapshotLockPath(sessionId);
98
+ const startedAt = Date.now();
99
+ while (true) {
100
+ try {
101
+ await mkdir(lockPath);
102
+ break;
103
+ }
104
+ catch (error) {
105
+ if (!isAlreadyExists(error)) {
106
+ throw error;
107
+ }
108
+ if (Date.now() - startedAt > SNAPSHOT_LOCK_TIMEOUT_MS) {
109
+ throw new Error(`timed out waiting for stored session snapshot lock: ${sessionId}`);
110
+ }
111
+ await sleep(SNAPSHOT_LOCK_RETRY_MS);
112
+ }
113
+ }
114
+ try {
115
+ return await handler();
116
+ }
117
+ finally {
118
+ await rm(lockPath, { recursive: true, force: true });
119
+ }
120
+ }
121
+ }
122
+ function parseStoredSnapshot(sessionId, raw) {
123
+ let parsed;
124
+ try {
125
+ parsed = JSON.parse(raw);
126
+ }
127
+ catch (error) {
128
+ throw new Error(`stored session snapshot is not valid JSON: ${sessionId}`, { cause: error });
129
+ }
130
+ const snapshot = validateSessionProtocolResult("session.snapshot", parsed);
131
+ if (!snapshot.ok) {
132
+ throw new Error(`stored session snapshot is invalid: ${sessionId}`, {
133
+ cause: new Error(snapshot.error.message),
134
+ });
135
+ }
136
+ if (snapshot.value.sessionId !== sessionId) {
137
+ throw new Error(`stored session snapshot id mismatch: ${sessionId}`);
138
+ }
139
+ return snapshot.value;
140
+ }
141
+ function snapshotFilename(sessionId) {
142
+ return `${Buffer.from(sessionId, "utf8").toString("base64url")}${SNAPSHOT_FILE_EXTENSION}`;
143
+ }
144
+ function sessionIdFromSnapshotFilename(filename) {
145
+ const encoded = basename(filename, SNAPSHOT_FILE_EXTENSION);
146
+ return Buffer.from(encoded, "base64url").toString("utf8");
147
+ }
148
+ function isNotFound(error) {
149
+ return error instanceof Error && "code" in error && error.code === "ENOENT";
150
+ }
151
+ function isAlreadyExists(error) {
152
+ return error instanceof Error && "code" in error && error.code === "EEXIST";
153
+ }
154
+ function sleep(ms) {
155
+ return new Promise((resolve) => setTimeout(resolve, ms));
156
+ }
157
+ //# sourceMappingURL=file_session_store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file_session_store.js","sourceRoot":"","sources":["../../src/store/file_session_store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { assertExpectedSessionRevision, validateSessionStoreSnapshot, } from "./session_store.js";
2
+ export class MemorySessionStore {
3
+ snapshots = new Map();
4
+ async commitSessionSnapshot(snapshot, options = {}) {
5
+ const validated = validateSessionStoreSnapshot(snapshot);
6
+ assertExpectedSessionRevision(validated.sessionId, options.expectedRevision, this.snapshots.get(validated.sessionId));
7
+ this.snapshots.set(validated.sessionId, cloneSessionSnapshot(validated));
8
+ }
9
+ async loadSession(sessionId) {
10
+ const snapshot = this.snapshots.get(sessionId);
11
+ return snapshot ? cloneSessionSnapshot(snapshot) : undefined;
12
+ }
13
+ async listSessionSnapshots() {
14
+ return [...this.snapshots.values()].map((snapshot) => cloneSessionSnapshot(snapshot));
15
+ }
16
+ async deleteSession(sessionId, options = {}) {
17
+ assertExpectedSessionRevision(sessionId, options.expectedRevision, this.snapshots.get(sessionId));
18
+ this.snapshots.delete(sessionId);
19
+ }
20
+ }
21
+ function cloneSessionSnapshot(snapshot) {
22
+ return structuredClone(snapshot);
23
+ }
24
+ //# sourceMappingURL=memory_session_store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory_session_store.js","sourceRoot":"","sources":["../../src/store/memory_session_store.ts"],"names":[],"mappings":"AACA,OAAO,EACL,6BAA6B,EAI7B,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,OAAO,kBAAkB;IACZ,SAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IAExE,KAAK,CAAC,qBAAqB,CACzB,QAAiC,EACjC,UAAqC,EAAE;QAEvC,MAAM,SAAS,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QACzD,6BAA6B,CAC3B,SAAS,CAAC,SAAS,EACnB,OAAO,CAAC,gBAAgB,EACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CACxC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,UAAqC,EAAE;QAC5E,6BAA6B,CAC3B,SAAS,EACT,OAAO,CAAC,gBAAgB,EACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAC9B,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;CACF;AAED,SAAS,oBAAoB,CAAC,QAAiC;IAC7D,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { validateSessionProtocolResult } from "../protocol/session_protocol.js";
2
+ export class SessionStoreConflictError extends Error {
3
+ sessionId;
4
+ expectedRevision;
5
+ actualRevision;
6
+ constructor(sessionId, expectedRevision, actualRevision) {
7
+ super(`stored session snapshot revision conflict for ${sessionId}: expected ${expectedRevision}, found ${actualRevision}`);
8
+ this.sessionId = sessionId;
9
+ this.expectedRevision = expectedRevision;
10
+ this.actualRevision = actualRevision;
11
+ this.name = "SessionStoreConflictError";
12
+ }
13
+ }
14
+ export function validateSessionStoreSnapshot(snapshot) {
15
+ const parsed = validateSessionProtocolResult("session.snapshot", snapshot);
16
+ if (!parsed.ok) {
17
+ throw new Error("session snapshot is invalid", {
18
+ cause: new Error(parsed.error.message),
19
+ });
20
+ }
21
+ return parsed.value;
22
+ }
23
+ export function assertExpectedSessionRevision(sessionId, expectedRevision, current) {
24
+ if (expectedRevision === undefined) {
25
+ return;
26
+ }
27
+ const actualRevision = current?.revision ?? 0;
28
+ if (actualRevision !== expectedRevision) {
29
+ throw new SessionStoreConflictError(sessionId, expectedRevision, actualRevision);
30
+ }
31
+ }
32
+ //# sourceMappingURL=session_store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session_store.js","sourceRoot":"","sources":["../../src/store/session_store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAoBhF,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAEvC;IACA;IACA;IAHX,YACW,SAAiB,EACjB,gBAAwB,EACxB,cAAsB;QAE/B,KAAK,CACH,iDAAiD,SAAS,cAAc,gBAAgB,WAAW,cAAc,EAAE,CACpH,CAAC;QANO,cAAS,GAAT,SAAS,CAAQ;QACjB,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,mBAAc,GAAd,cAAc,CAAQ;QAK/B,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAiC;IAEjC,MAAM,MAAM,GAAG,6BAA6B,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAC3E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,6BAA6B,EAAE;YAC7C,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,SAAiB,EACjB,gBAAoC,EACpC,OAA4C;IAE5C,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;IAC9C,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;QACxC,MAAM,IAAI,yBAAyB,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { SessionProtocolError, SessionProtocolErrorCode, SessionProtocolRequestId } from "../protocol/session_protocol.js";
2
+ export type TauSessionProtocolErrorCode = SessionProtocolErrorCode;
3
+ export type TauSessionProtocolError = SessionProtocolError;
4
+ export declare class TauSessionClientError extends Error {
5
+ constructor(message: string, options?: ErrorOptions);
6
+ }
7
+ export declare class TauSessionProtocolResponseError extends TauSessionClientError {
8
+ readonly code: TauSessionProtocolErrorCode;
9
+ readonly requestId: SessionProtocolRequestId;
10
+ readonly data?: unknown;
11
+ constructor(options: {
12
+ requestId: SessionProtocolRequestId;
13
+ error: TauSessionProtocolError;
14
+ });
15
+ }
16
+ export declare class TauTransportError extends TauSessionClientError {
17
+ constructor(message: string, options?: ErrorOptions);
18
+ }
19
+ export declare class TauProcessError extends TauTransportError {
20
+ readonly exitCode: number | null;
21
+ readonly signal: NodeJS.Signals | null;
22
+ readonly stderr: string;
23
+ constructor(message: string, options?: {
24
+ exitCode?: number | null;
25
+ signal?: NodeJS.Signals | null;
26
+ stderr?: string;
27
+ cause?: unknown;
28
+ });
29
+ }
@@ -1,22 +1,22 @@
1
- export class TauSdkError extends Error {
1
+ export class TauSessionClientError extends Error {
2
2
  constructor(message, options) {
3
3
  super(message, options);
4
- this.name = "TauSdkError";
4
+ this.name = "TauSessionClientError";
5
5
  }
6
6
  }
7
- export class TauRpcResponseError extends TauSdkError {
7
+ export class TauSessionProtocolResponseError extends TauSessionClientError {
8
8
  code;
9
9
  requestId;
10
10
  data;
11
11
  constructor(options) {
12
12
  super(options.error.message);
13
- this.name = "TauRpcResponseError";
13
+ this.name = "TauSessionProtocolResponseError";
14
14
  this.code = options.error.code;
15
15
  this.requestId = options.requestId;
16
16
  this.data = options.error.data;
17
17
  }
18
18
  }
19
- export class TauTransportError extends TauSdkError {
19
+ export class TauTransportError extends TauSessionClientError {
20
20
  constructor(message, options) {
21
21
  super(message, options);
22
22
  this.name = "TauTransportError";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/transport/errors.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,+BAAgC,SAAQ,qBAAqB;IAC/D,IAAI,CAA8B;IAClC,SAAS,CAA2B;IACpC,IAAI,CAAW;IAExB,YAAY,OAAgF;QAC1F,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IAC1D,YAAY,OAAe,EAAE,OAAsB;QACjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IAC3C,QAAQ,CAAgB;IACxB,MAAM,CAAwB;IAC9B,MAAM,CAAS;IAExB,YACE,OAAe,EACf,OAKC;QAED,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,102 @@
1
+ import { SessionProtocolHandler } from "../host/session_protocol_handler.js";
2
+ import { TauTransportError } from "./errors.js";
3
+ import { PendingSessionProtocolRequests, } from "./pending_session_protocol_requests.js";
4
+ import { handleSessionProtocolTransportResponse, notifySessionProtocolDeltaListeners, notifySessionProtocolEphemeralListeners, } from "./session_protocol_transport_helpers.js";
5
+ export class InProcessSessionProtocolTransport {
6
+ handler;
7
+ closeMode;
8
+ deltaListeners = new Set();
9
+ ephemeralListeners = new Set();
10
+ pendingRequests = new PendingSessionProtocolRequests();
11
+ readyValue;
12
+ connectPromise;
13
+ isConnected = false;
14
+ isClosed = false;
15
+ constructor(options) {
16
+ this.closeMode = options.closeMode ?? "detach";
17
+ this.handler = new SessionProtocolHandler({
18
+ host: options.host,
19
+ send: (message) => this.handleMessage(message),
20
+ });
21
+ }
22
+ get ready() {
23
+ if (!this.isConnected || !this.readyValue) {
24
+ throw new TauTransportError("tau in-process transport is not connected");
25
+ }
26
+ return this.readyValue;
27
+ }
28
+ async connect(initializeParams, timeoutMs) {
29
+ void timeoutMs;
30
+ if (this.isClosed) {
31
+ throw new TauTransportError("tau in-process transport is closed");
32
+ }
33
+ if (this.isConnected) {
34
+ return;
35
+ }
36
+ this.connectPromise ??= this.establishConnection(initializeParams);
37
+ await this.connectPromise;
38
+ }
39
+ async establishConnection(initializeParams) {
40
+ await this.request("initialize", initializeParams);
41
+ this.isConnected = true;
42
+ }
43
+ request(method, params) {
44
+ if (this.isClosed) {
45
+ return Promise.reject(new TauTransportError("tau in-process transport is closed"));
46
+ }
47
+ let pending;
48
+ try {
49
+ pending = this.pendingRequests.create(method, params);
50
+ }
51
+ catch (error) {
52
+ return Promise.reject(error);
53
+ }
54
+ void this.handler.handleRequest(pending.request).catch((error) => {
55
+ this.pendingRequests.reject(pending.request.id, error);
56
+ });
57
+ return pending.promise;
58
+ }
59
+ onDelta(listener) {
60
+ this.deltaListeners.add(listener);
61
+ return () => {
62
+ this.deltaListeners.delete(listener);
63
+ };
64
+ }
65
+ onEphemeral(listener) {
66
+ this.ephemeralListeners.add(listener);
67
+ return () => {
68
+ this.ephemeralListeners.delete(listener);
69
+ };
70
+ }
71
+ async close() {
72
+ if (this.isClosed) {
73
+ return;
74
+ }
75
+ this.isClosed = true;
76
+ const closeError = new TauTransportError("tau in-process transport was closed");
77
+ this.pendingRequests.rejectAll(closeError);
78
+ this.deltaListeners.clear();
79
+ this.ephemeralListeners.clear();
80
+ await this.handler.close(this.closeMode);
81
+ }
82
+ handleMessage(message) {
83
+ if (message.type === "ready") {
84
+ this.readyValue = message;
85
+ return;
86
+ }
87
+ if (message.type === "session.delta") {
88
+ notifySessionProtocolDeltaListeners(this.deltaListeners, message, {
89
+ ignoreListenerErrors: true,
90
+ });
91
+ return;
92
+ }
93
+ if (message.type === "session.ephemeral") {
94
+ notifySessionProtocolEphemeralListeners(this.ephemeralListeners, message, {
95
+ ignoreListenerErrors: true,
96
+ });
97
+ return;
98
+ }
99
+ handleSessionProtocolTransportResponse(message, this.pendingRequests, () => undefined);
100
+ }
101
+ }
102
+ //# sourceMappingURL=in_process_session_transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in_process_session_transport.js","sourceRoot":"","sources":["../../src/transport/in_process_session_transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAS7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAEL,8BAA8B,GAC/B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,sCAAsC,EACtC,mCAAmC,EACnC,uCAAuC,GACxC,MAAM,yCAAyC,CAAC;AAYjD,MAAM,OAAO,iCAAiC;IAC3B,OAAO,CAAyB;IAChC,SAAS,CAA6B;IACtC,cAAc,GAAG,IAAI,GAAG,EAAgC,CAAC;IACzD,kBAAkB,GAAG,IAAI,GAAG,EAAoC,CAAC;IACjE,eAAe,GAAG,IAAI,8BAA8B,EAAE,CAAC;IAEhE,UAAU,CAA+B;IACzC,cAAc,CAAiB;IAC/B,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAG,KAAK,CAAC;IAEzB,YAAY,OAAiD;QAC3D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAsB,CAAC;YACxC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK;QACP,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,MAAM,IAAI,iBAAiB,CAAC,2CAA2C,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO,CACX,gBAAiD,EACjD,SAAiB;QAEjB,KAAK,SAAS,CAAC;QAEf,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,iBAAiB,CAAC,oCAAoC,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QACnE,MAAM,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,gBAAiD;QAEjD,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,CACL,MAAS,EACT,MAAwC;QAExC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,oCAAoC,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,OAAyC,CAAC;QAC9C,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/D,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,QAAsC;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,QAA0C;QACpD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,qCAAqC,CAAC,CAAC;QAChF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAEO,aAAa,CAAC,OAAuC;QAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACrC,mCAAmC,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE;gBAChE,oBAAoB,EAAE,IAAI;aAC3B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACzC,uCAAuC,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE;gBACxE,oBAAoB,EAAE,IAAI;aAC3B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,sCAAsC,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ export type { TauSessionProtocolError, TauSessionProtocolErrorCode } from "./errors.js";
2
+ export { TauProcessError, TauSessionClientError, TauSessionProtocolResponseError, TauTransportError, } from "./errors.js";
3
+ export type { SessionProtocolDeltaListener, SessionProtocolEphemeralListener, SessionProtocolTransport, } from "./session_transport.js";
4
+ export type { SessionProtocolSpawnedProcess } from "./stdio_session_transport.js";
5
+ export { StdioSessionProtocolTransport } from "./stdio_session_transport.js";
6
+ export type { WebSocketSessionProtocolTransportOptions } from "./websocket_session_transport.js";
7
+ export { WebSocketSessionProtocolTransport } from "./websocket_session_transport.js";
@@ -0,0 +1,4 @@
1
+ export { TauProcessError, TauSessionClientError, TauSessionProtocolResponseError, TauTransportError, } from "./errors.js";
2
+ export { StdioSessionProtocolTransport } from "./stdio_session_transport.js";
3
+ export { WebSocketSessionProtocolTransport } from "./websocket_session_transport.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,+BAA+B,EAC/B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAOrB,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { createSessionProtocolRequest, validateSessionProtocolResult, } from "../protocol/session_protocol.js";
3
+ import { TauSessionProtocolResponseError, TauTransportError } from "./errors.js";
4
+ export class PendingSessionProtocolRequests {
5
+ pendingRequests = new Map();
6
+ create(method, params) {
7
+ const requestId = randomUUID();
8
+ const request = createSessionProtocolRequest(requestId, method, params);
9
+ if (!request.ok) {
10
+ throw new TauSessionProtocolResponseError({
11
+ requestId,
12
+ error: request.error,
13
+ });
14
+ }
15
+ let pending;
16
+ const promise = new Promise((resolve, reject) => {
17
+ pending = {
18
+ requestId,
19
+ resolve: (responseResult) => {
20
+ const result = validateSessionProtocolResult(method, responseResult);
21
+ if (!result.ok) {
22
+ reject(new TauTransportError(`received invalid session protocol response result: ${result.error.message}`));
23
+ return;
24
+ }
25
+ resolve(result.value);
26
+ },
27
+ reject,
28
+ };
29
+ });
30
+ this.pendingRequests.set(requestId, pending);
31
+ return {
32
+ request: request.value,
33
+ promise,
34
+ };
35
+ }
36
+ resolveSuccess(id, result) {
37
+ const pending = this.pendingRequests.get(id);
38
+ if (!pending) {
39
+ return false;
40
+ }
41
+ this.pendingRequests.delete(id);
42
+ pending.resolve(result);
43
+ return true;
44
+ }
45
+ rejectProtocolError(id, error) {
46
+ return this.reject(id, new TauSessionProtocolResponseError({
47
+ requestId: id,
48
+ error,
49
+ }));
50
+ }
51
+ reject(id, error) {
52
+ const pending = this.pendingRequests.get(id);
53
+ if (!pending) {
54
+ return false;
55
+ }
56
+ this.pendingRequests.delete(id);
57
+ pending.reject(error);
58
+ return true;
59
+ }
60
+ rejectAll(error) {
61
+ for (const pending of this.pendingRequests.values()) {
62
+ pending.reject(error);
63
+ }
64
+ this.pendingRequests.clear();
65
+ }
66
+ }
67
+ //# sourceMappingURL=pending_session_protocol_requests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pending_session_protocol_requests.js","sourceRoot":"","sources":["../../src/transport/pending_session_protocol_requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,4BAA4B,EAO5B,6BAA6B,GAC9B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAajF,MAAM,OAAO,8BAA8B;IACxB,eAAe,GAAG,IAAI,GAAG,EAA4C,CAAC;IAEvF,MAAM,CACJ,MAAS,EACT,MAAwC;QAExC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,+BAA+B,CAAC;gBACxC,SAAS;gBACT,KAAK,EAAE,OAAO,CAAC,KAAK;aACrB,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAwB,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,OAAO,CAAmC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChF,OAAO,GAAG;gBACR,SAAS;gBACT,OAAO,EAAE,CAAC,cAAc,EAAE,EAAE;oBAC1B,MAAM,MAAM,GAAG,6BAA6B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;oBACrE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;wBACf,MAAM,CACJ,IAAI,iBAAiB,CACnB,sDAAsD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAC7E,CACF,CAAC;wBACF,OAAO;oBACT,CAAC;oBAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACxB,CAAC;gBACD,MAAM;aACP,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,KAAK;YACtB,OAAO;SACR,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,EAA4B,EAAE,MAAe;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CAAC,EAA4B,EAAE,KAA2B;QAC3E,OAAO,IAAI,CAAC,MAAM,CAChB,EAAE,EACF,IAAI,+BAA+B,CAAC;YAClC,SAAS,EAAE,EAAE;YACb,KAAK;SACN,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,EAA4B,EAAE,KAAc;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CAAC,KAAc;QACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;CACF"}
@@ -0,0 +1,98 @@
1
+ import { TauTransportError } from "./errors.js";
2
+ export function createDeferred() {
3
+ let resolve;
4
+ let reject;
5
+ const promise = new Promise((res, rej) => {
6
+ resolve = res;
7
+ reject = rej;
8
+ });
9
+ return { promise, resolve, reject };
10
+ }
11
+ export function withTimeout(promise, timeoutMs, timeoutError) {
12
+ let timeout;
13
+ const timeoutPromise = new Promise((_, reject) => {
14
+ timeout = setTimeout(() => reject(timeoutError), timeoutMs);
15
+ timeout.unref?.();
16
+ });
17
+ return Promise.race([promise, timeoutPromise]).finally(() => {
18
+ clearTimeout(timeout);
19
+ });
20
+ }
21
+ function delay(timeoutMs) {
22
+ return new Promise((resolve) => {
23
+ const timeout = setTimeout(resolve, timeoutMs);
24
+ timeout.unref?.();
25
+ });
26
+ }
27
+ export async function waitForPromiseOrTimeout(promise, timeoutMs) {
28
+ await Promise.race([promise, delay(timeoutMs)]);
29
+ }
30
+ export function notifySessionProtocolDeltaListeners(listeners, message, options = {}) {
31
+ for (const listener of [...listeners]) {
32
+ if (!options.ignoreListenerErrors) {
33
+ listener(message);
34
+ continue;
35
+ }
36
+ try {
37
+ listener(message);
38
+ }
39
+ catch {
40
+ // listener failures must not break transport processing
41
+ }
42
+ }
43
+ }
44
+ export function notifySessionProtocolEphemeralListeners(listeners, message, options = {}) {
45
+ for (const listener of [...listeners]) {
46
+ if (!options.ignoreListenerErrors) {
47
+ listener(message);
48
+ continue;
49
+ }
50
+ try {
51
+ listener(message);
52
+ }
53
+ catch {
54
+ // listener failures must not break transport processing
55
+ }
56
+ }
57
+ }
58
+ export function handleSessionProtocolTransportResponse(message, pendingRequests, failTransport) {
59
+ if (message.ok) {
60
+ const resolved = pendingRequests.resolveSuccess(message.id, message.result);
61
+ if (!resolved) {
62
+ failTransport(new TauTransportError(`received response for unknown session protocol request '${message.id}'`));
63
+ }
64
+ return;
65
+ }
66
+ if (message.id === null) {
67
+ failTransport(new TauTransportError("received uncorrelated session protocol error response"));
68
+ return;
69
+ }
70
+ const rejected = pendingRequests.rejectProtocolError(message.id, message.error);
71
+ if (!rejected) {
72
+ failTransport(new TauTransportError(`received response for unknown session protocol request '${message.id}'`));
73
+ }
74
+ }
75
+ export function handleSessionProtocolTransportParseFailure(options) {
76
+ const { failure, pendingRequests, failTransport, malformedJsonPeer, invalidPayloadPeer } = options;
77
+ if (failure.messageType === "response" && failure.id !== null) {
78
+ const rejected = pendingRequests.reject(failure.id, new TauTransportError("received malformed session protocol response"));
79
+ if (!rejected) {
80
+ failTransport(new TauTransportError(`received malformed response for unknown session protocol request '${failure.id}'`));
81
+ }
82
+ return;
83
+ }
84
+ if (failure.reason === "parse_error") {
85
+ failTransport(new TauTransportError(`received malformed JSON from ${malformedJsonPeer}`));
86
+ return;
87
+ }
88
+ if (failure.reason === "response_invalid_id") {
89
+ failTransport(new TauTransportError("received response without a valid request id"));
90
+ return;
91
+ }
92
+ if (failure.reason === "unsupported_version" || failure.reason === "unsupported_message_type") {
93
+ failTransport(new TauTransportError(`received ${failure.error.message} from ${invalidPayloadPeer}`));
94
+ return;
95
+ }
96
+ failTransport(new TauTransportError(`received invalid session protocol payload from ${invalidPayloadPeer}: ${failure.error.message}`));
97
+ }
98
+ //# sourceMappingURL=session_protocol_transport_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session_protocol_transport_helpers.js","sourceRoot":"","sources":["../../src/transport/session_protocol_transport_helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { SessionProtocolDeltaMessage, SessionProtocolEphemeralMessage, SessionProtocolInitializeParams, SessionProtocolMethod, SessionProtocolParamsByMethod, SessionProtocolReadyMessage, SessionProtocolResultByMethod } from "../protocol/session_protocol.js";
2
+ export type SessionProtocolDeltaListener = (delta: SessionProtocolDeltaMessage) => void;
3
+ export type SessionProtocolEphemeralListener = (message: SessionProtocolEphemeralMessage) => void;
4
+ export type SessionProtocolTransport = {
5
+ readonly ready: SessionProtocolReadyMessage;
6
+ connect(initializeParams: SessionProtocolInitializeParams, timeoutMs: number): Promise<void>;
7
+ request<M extends SessionProtocolMethod>(method: M, params: SessionProtocolParamsByMethod[M]): Promise<SessionProtocolResultByMethod[M]>;
8
+ onDelta(listener: SessionProtocolDeltaListener): () => void;
9
+ onEphemeral(listener: SessionProtocolEphemeralListener): () => void;
10
+ close(): Promise<void>;
11
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=session_transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session_transport.js","sourceRoot":"","sources":["../../src/transport/session_transport.ts"],"names":[],"mappings":""}