@markusylisiurunen/tau 0.2.63 → 0.2.64

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 (48) hide show
  1. package/dist/core/async/cli.js +68 -104
  2. package/dist/core/async/cli.js.map +1 -1
  3. package/dist/core/async/http_protocol.js +119 -8
  4. package/dist/core/async/http_protocol.js.map +1 -1
  5. package/dist/core/async/http_server.js +120 -240
  6. package/dist/core/async/http_server.js.map +1 -1
  7. package/dist/core/async/index.js +1 -1
  8. package/dist/core/async/index.js.map +1 -1
  9. package/dist/core/async/server_config.js +161 -356
  10. package/dist/core/async/server_config.js.map +1 -1
  11. package/dist/core/async/telegram.js +191 -133
  12. package/dist/core/async/telegram.js.map +1 -1
  13. package/dist/core/config/content_loader.js +57 -205
  14. package/dist/core/config/content_loader.js.map +1 -1
  15. package/dist/core/config/markdown_frontmatter.js +34 -0
  16. package/dist/core/config/markdown_frontmatter.js.map +1 -0
  17. package/dist/core/config/schema.js +266 -332
  18. package/dist/core/config/schema.js.map +1 -1
  19. package/dist/core/config/skill_parser.js +8 -32
  20. package/dist/core/config/skill_parser.js.map +1 -1
  21. package/dist/core/config/skills_loader.js +32 -18
  22. package/dist/core/config/skills_loader.js.map +1 -1
  23. package/dist/core/events/index.js +1 -0
  24. package/dist/core/events/index.js.map +1 -1
  25. package/dist/core/events/parser.js +115 -0
  26. package/dist/core/events/parser.js.map +1 -0
  27. package/dist/core/index.js +1 -1
  28. package/dist/core/index.js.map +1 -1
  29. package/dist/core/modes/rpc_protocol.js +249 -189
  30. package/dist/core/modes/rpc_protocol.js.map +1 -1
  31. package/dist/core/tools/send_input_to_agent.js +7 -12
  32. package/dist/core/tools/send_input_to_agent.js.map +1 -1
  33. package/dist/core/tools/spawn_agent.js +13 -14
  34. package/dist/core/tools/spawn_agent.js.map +1 -1
  35. package/dist/core/tools/terminate_agent.js +6 -11
  36. package/dist/core/tools/terminate_agent.js.map +1 -1
  37. package/dist/core/tools/wait_for_agent.js +6 -11
  38. package/dist/core/tools/wait_for_agent.js.map +1 -1
  39. package/dist/core/utils/mistral_transcription.js +13 -21
  40. package/dist/core/utils/mistral_transcription.js.map +1 -1
  41. package/dist/core/utils/parallel_api.js +15 -19
  42. package/dist/core/utils/parallel_api.js.map +1 -1
  43. package/dist/core/utils/zod.js +7 -0
  44. package/dist/core/utils/zod.js.map +1 -1
  45. package/dist/core/version.js +1 -1
  46. package/dist/tui/chat_controller/session_maintenance_service.js +98 -171
  47. package/dist/tui/chat_controller/session_maintenance_service.js.map +1 -1
  48. package/package.json +1 -1
@@ -1,7 +1,8 @@
1
1
  import { timingSafeEqual } from "node:crypto";
2
2
  import { createServer } from "node:http";
3
+ import { assertNever } from "../utils/never.js";
3
4
  import { AsyncCronSchedulerError, } from "./cron.js";
4
- import { AsyncHttpBodyParseError, AsyncHttpBodyTooLargeError, isRecord, readJsonBody, readStringField, sendError, sendOk, } from "./http_protocol.js";
5
+ import { AsyncHttpBodyParseError, AsyncHttpBodyTooLargeError, AsyncHttpRequestParseError, decodeAsyncHttpRoute, parseCreateSessionBody, parseCronRunsQuery, parseSendMessageBody, readJsonBody, sendError, sendOk, } from "./http_protocol.js";
5
6
  import { AsyncSessionManagerError, } from "./session_manager.js";
6
7
  function isAuthorized(request, authToken) {
7
8
  const header = request.headers.authorization;
@@ -15,90 +16,6 @@ function isAuthorized(request, authToken) {
15
16
  }
16
17
  return timingSafeEqual(expected, received);
17
18
  }
18
- function decodePathSegment(value) {
19
- try {
20
- return decodeURIComponent(value);
21
- }
22
- catch {
23
- return undefined;
24
- }
25
- }
26
- function parseSessionPath(pathname) {
27
- const sessionMatch = /^\/v1\/sessions\/([^/]+)$/.exec(pathname);
28
- if (sessionMatch) {
29
- const segment = sessionMatch[1];
30
- if (segment === undefined) {
31
- return "invalid";
32
- }
33
- const sessionId = decodePathSegment(segment);
34
- if (!sessionId) {
35
- return "invalid";
36
- }
37
- return { route: "session", sessionId };
38
- }
39
- const logsMatch = /^\/v1\/sessions\/([^/]+)\/logs$/.exec(pathname);
40
- if (logsMatch) {
41
- const segment = logsMatch[1];
42
- if (segment === undefined) {
43
- return "invalid";
44
- }
45
- const sessionId = decodePathSegment(segment);
46
- if (!sessionId) {
47
- return "invalid";
48
- }
49
- return { route: "logs", sessionId };
50
- }
51
- const messagesMatch = /^\/v1\/sessions\/([^/]+)\/messages$/.exec(pathname);
52
- if (messagesMatch) {
53
- const segment = messagesMatch[1];
54
- if (segment === undefined) {
55
- return "invalid";
56
- }
57
- const sessionId = decodePathSegment(segment);
58
- if (!sessionId) {
59
- return "invalid";
60
- }
61
- return { route: "messages", sessionId };
62
- }
63
- const interruptMatch = /^\/v1\/sessions\/([^/]+)\/interrupt$/.exec(pathname);
64
- if (interruptMatch) {
65
- const segment = interruptMatch[1];
66
- if (segment === undefined) {
67
- return "invalid";
68
- }
69
- const sessionId = decodePathSegment(segment);
70
- if (!sessionId) {
71
- return "invalid";
72
- }
73
- return { route: "interrupt", sessionId };
74
- }
75
- return undefined;
76
- }
77
- function parseCronPath(pathname) {
78
- if (pathname === "/v1/cron/jobs") {
79
- return { route: "cron-jobs" };
80
- }
81
- if (pathname === "/v1/cron/runs") {
82
- return { route: "cron-runs" };
83
- }
84
- const manualRunMatch = /^\/v1\/cron\/jobs\/([^/]+)\/run$/.exec(pathname);
85
- if (manualRunMatch) {
86
- const segment = manualRunMatch[1];
87
- if (segment === undefined) {
88
- return "invalid";
89
- }
90
- const jobId = decodePathSegment(segment);
91
- if (!jobId) {
92
- return "invalid";
93
- }
94
- return { route: "cron-run", jobId };
95
- }
96
- return undefined;
97
- }
98
- function hasOnlyKeys(source, allowedKeys) {
99
- const allowed = new Set(allowedKeys);
100
- return Object.keys(source).every((key) => allowed.has(key));
101
- }
102
19
  function mapSessionErrorStatus(error) {
103
20
  switch (error.code) {
104
21
  case "not_found":
@@ -112,37 +29,6 @@ function mapSessionErrorStatus(error) {
112
29
  return 400;
113
30
  }
114
31
  }
115
- function readCreateBody(raw) {
116
- if (!isRecord(raw) || !hasOnlyKeys(raw, ["projectId", "prompt"])) {
117
- return undefined;
118
- }
119
- const projectId = readStringField(raw, "projectId");
120
- if (!projectId) {
121
- return undefined;
122
- }
123
- const promptValue = raw.prompt;
124
- if (promptValue === undefined) {
125
- return { projectId };
126
- }
127
- if (typeof promptValue !== "string") {
128
- return undefined;
129
- }
130
- const prompt = promptValue.trim();
131
- if (!prompt) {
132
- return undefined;
133
- }
134
- return { projectId, prompt };
135
- }
136
- function readSendBody(raw) {
137
- if (!isRecord(raw) || !hasOnlyKeys(raw, ["text"])) {
138
- return undefined;
139
- }
140
- const text = readStringField(raw, "text");
141
- if (!text) {
142
- return undefined;
143
- }
144
- return { text };
145
- }
146
32
  async function readRequestBody(request, response) {
147
33
  try {
148
34
  return await readJsonBody(request);
@@ -172,19 +58,6 @@ function serializeSession(session) {
172
58
  function serializeCronRun(run) {
173
59
  return { ...run };
174
60
  }
175
- function parsePositiveLimit(raw) {
176
- if (raw === null) {
177
- return undefined;
178
- }
179
- if (!/^\d+$/.test(raw)) {
180
- return undefined;
181
- }
182
- const parsed = Number.parseInt(raw, 10);
183
- if (!Number.isSafeInteger(parsed) || parsed <= 0) {
184
- return undefined;
185
- }
186
- return parsed;
187
- }
188
61
  export async function startAsyncHttpServer(options) {
189
62
  const server = createServer((request, response) => {
190
63
  void (async () => {
@@ -199,154 +72,161 @@ export async function startAsyncHttpServer(options) {
199
72
  }
200
73
  const method = request.method;
201
74
  const url = new URL(request.url, `http://${options.host}:${options.port}`);
202
- if (url.pathname === "/healthz") {
203
- sendOk(response, 200, { status: "ok" });
204
- return;
205
- }
206
75
  if (url.pathname.startsWith("/v1/") && !isAuthorized(request, options.authToken)) {
207
76
  response.setHeader("www-authenticate", 'Bearer realm="tau-async"');
208
77
  sendError(response, 401, "unauthorized");
209
78
  return;
210
79
  }
211
- const cronRoute = parseCronPath(url.pathname);
212
- if (cronRoute === "invalid") {
213
- sendError(response, 400, "invalid cron job id");
80
+ let route;
81
+ try {
82
+ route = decodeAsyncHttpRoute(method, url.pathname);
83
+ }
84
+ catch (error) {
85
+ if (error instanceof AsyncHttpRequestParseError) {
86
+ sendError(response, error.statusCode, error.message);
87
+ return;
88
+ }
89
+ throw error;
90
+ }
91
+ if (route === "not-found") {
92
+ sendError(response, 404, "not found");
214
93
  return;
215
94
  }
216
- if (cronRoute) {
217
- const cronScheduler = options.cronScheduler;
218
- if (!cronScheduler) {
219
- sendError(response, 404, "cron scheduler not enabled");
95
+ if (route === "method-not-allowed") {
96
+ sendError(response, 405, "method not allowed");
97
+ return;
98
+ }
99
+ switch (route.route) {
100
+ case "healthz": {
101
+ sendOk(response, 200, { status: "ok" });
220
102
  return;
221
103
  }
222
- if (cronRoute.route === "cron-jobs" && method === "GET") {
223
- sendOk(response, 200, { jobs: cronScheduler.listJobs() });
104
+ case "create-session": {
105
+ try {
106
+ const rawBody = await readRequestBody(request, response);
107
+ if (rawBody === undefined) {
108
+ return;
109
+ }
110
+ const parsed = parseCreateSessionBody(rawBody);
111
+ const session = await options.sessionManager.createSession(parsed);
112
+ sendOk(response, 201, { session: serializeSession(session) });
113
+ }
114
+ catch (error) {
115
+ if (error instanceof AsyncHttpRequestParseError) {
116
+ sendError(response, error.statusCode, error.message);
117
+ return;
118
+ }
119
+ handleManagerError(response, error, "failed to create session");
120
+ }
224
121
  return;
225
122
  }
226
- if (cronRoute.route === "cron-runs" && method === "GET") {
227
- const limitRaw = url.searchParams.get("limit");
228
- const limit = parsePositiveLimit(limitRaw);
229
- if (limitRaw !== null && limit === undefined) {
230
- sendError(response, 400, "invalid limit query parameter");
123
+ case "list-sessions": {
124
+ const sessions = options.sessionManager.listSessions().map(serializeSession);
125
+ sendOk(response, 200, { sessions });
126
+ return;
127
+ }
128
+ case "get-session": {
129
+ const session = options.sessionManager.getSession(route.sessionId);
130
+ if (!session) {
131
+ sendError(response, 404, "session not found");
231
132
  return;
232
133
  }
233
- const hasJobIdQuery = url.searchParams.has("jobId");
234
- const jobId = url.searchParams.get("jobId")?.trim();
235
- if (hasJobIdQuery && !jobId) {
236
- sendError(response, 400, "invalid jobId query parameter");
134
+ sendOk(response, 200, { session: serializeSession(session) });
135
+ return;
136
+ }
137
+ case "get-session-logs": {
138
+ const logs = options.sessionManager.getLogs(route.sessionId);
139
+ if (!logs) {
140
+ sendError(response, 404, "session not found");
237
141
  return;
238
142
  }
239
- const runs = cronScheduler
240
- .listRuns({
241
- ...(jobId ? { jobId } : {}),
242
- ...(limit ? { limit } : {}),
243
- })
244
- .map(serializeCronRun);
245
- sendOk(response, 200, { runs });
143
+ sendOk(response, 200, { logs });
246
144
  return;
247
145
  }
248
- if (cronRoute.route === "cron-run" && method === "POST") {
146
+ case "send-message": {
249
147
  try {
250
- const run = await cronScheduler.triggerJobNow(cronRoute.jobId);
251
- sendOk(response, 200, { run: serializeCronRun(run) });
148
+ const rawBody = await readRequestBody(request, response);
149
+ if (rawBody === undefined) {
150
+ return;
151
+ }
152
+ const parsed = parseSendMessageBody(rawBody);
153
+ const session = await options.sessionManager.sendMessage(route.sessionId, parsed.text);
154
+ sendOk(response, 200, { session: serializeSession(session) });
252
155
  }
253
156
  catch (error) {
254
- if (error instanceof AsyncCronSchedulerError && error.code === "not_found") {
255
- sendError(response, 404, "cron job not found");
157
+ if (error instanceof AsyncHttpRequestParseError) {
158
+ sendError(response, error.statusCode, error.message);
256
159
  return;
257
160
  }
258
- sendError(response, 500, "failed to trigger cron job");
161
+ handleManagerError(response, error, "failed to send message");
259
162
  }
260
163
  return;
261
164
  }
262
- sendError(response, 405, "method not allowed");
263
- return;
264
- }
265
- if (url.pathname === "/v1/sessions" && method === "POST") {
266
- try {
267
- const rawBody = await readRequestBody(request, response);
268
- if (rawBody === undefined) {
269
- return;
165
+ case "interrupt-session": {
166
+ try {
167
+ const interrupted = await options.sessionManager.interruptSession(route.sessionId);
168
+ sendOk(response, 200, {
169
+ session: serializeSession(interrupted.session),
170
+ interrupted: interrupted.interrupted,
171
+ isTurnRunning: interrupted.isTurnRunning,
172
+ });
270
173
  }
271
- const parsed = readCreateBody(rawBody);
272
- if (!parsed) {
273
- sendError(response, 400, "invalid request body");
274
- return;
174
+ catch (error) {
175
+ handleManagerError(response, error, "failed to interrupt session");
275
176
  }
276
- const session = await options.sessionManager.createSession(parsed);
277
- sendOk(response, 201, { session: serializeSession(session) });
278
- }
279
- catch (error) {
280
- handleManagerError(response, error, "failed to create session");
281
- }
282
- return;
283
- }
284
- if (url.pathname === "/v1/sessions" && method === "GET") {
285
- const sessions = options.sessionManager.listSessions().map(serializeSession);
286
- sendOk(response, 200, { sessions });
287
- return;
288
- }
289
- const route = parseSessionPath(url.pathname);
290
- if (route === "invalid") {
291
- sendError(response, 400, "invalid session id");
292
- return;
293
- }
294
- if (!route) {
295
- sendError(response, 404, "not found");
296
- return;
297
- }
298
- if (route.route === "session" && method === "GET") {
299
- const session = options.sessionManager.getSession(route.sessionId);
300
- if (!session) {
301
- sendError(response, 404, "session not found");
302
177
  return;
303
178
  }
304
- sendOk(response, 200, { session: serializeSession(session) });
305
- return;
306
- }
307
- if (route.route === "logs" && method === "GET") {
308
- const logs = options.sessionManager.getLogs(route.sessionId);
309
- if (!logs) {
310
- sendError(response, 404, "session not found");
179
+ case "list-cron-jobs": {
180
+ const cronScheduler = options.cronScheduler;
181
+ if (!cronScheduler) {
182
+ sendError(response, 404, "cron scheduler not enabled");
183
+ return;
184
+ }
185
+ sendOk(response, 200, { jobs: cronScheduler.listJobs() });
311
186
  return;
312
187
  }
313
- sendOk(response, 200, { logs });
314
- return;
315
- }
316
- if (route.route === "messages" && method === "POST") {
317
- try {
318
- const rawBody = await readRequestBody(request, response);
319
- if (rawBody === undefined) {
188
+ case "list-cron-runs": {
189
+ const cronScheduler = options.cronScheduler;
190
+ if (!cronScheduler) {
191
+ sendError(response, 404, "cron scheduler not enabled");
320
192
  return;
321
193
  }
322
- const parsed = readSendBody(rawBody);
323
- if (!parsed) {
324
- sendError(response, 400, "invalid request body");
325
- return;
194
+ try {
195
+ const query = parseCronRunsQuery(url.searchParams);
196
+ const runs = cronScheduler.listRuns(query).map(serializeCronRun);
197
+ sendOk(response, 200, { runs });
326
198
  }
327
- const session = await options.sessionManager.sendMessage(route.sessionId, parsed.text);
328
- sendOk(response, 200, { session: serializeSession(session) });
329
- }
330
- catch (error) {
331
- handleManagerError(response, error, "failed to send message");
332
- }
333
- return;
334
- }
335
- if (route.route === "interrupt" && method === "POST") {
336
- try {
337
- const interrupted = await options.sessionManager.interruptSession(route.sessionId);
338
- sendOk(response, 200, {
339
- session: serializeSession(interrupted.session),
340
- interrupted: interrupted.interrupted,
341
- isTurnRunning: interrupted.isTurnRunning,
342
- });
199
+ catch (error) {
200
+ if (error instanceof AsyncHttpRequestParseError) {
201
+ sendError(response, error.statusCode, error.message);
202
+ return;
203
+ }
204
+ throw error;
205
+ }
206
+ return;
343
207
  }
344
- catch (error) {
345
- handleManagerError(response, error, "failed to interrupt session");
208
+ case "trigger-cron-job": {
209
+ const cronScheduler = options.cronScheduler;
210
+ if (!cronScheduler) {
211
+ sendError(response, 404, "cron scheduler not enabled");
212
+ return;
213
+ }
214
+ try {
215
+ const run = await cronScheduler.triggerJobNow(route.jobId);
216
+ sendOk(response, 200, { run: serializeCronRun(run) });
217
+ }
218
+ catch (error) {
219
+ if (error instanceof AsyncCronSchedulerError && error.code === "not_found") {
220
+ sendError(response, 404, "cron job not found");
221
+ return;
222
+ }
223
+ sendError(response, 500, "failed to trigger cron job");
224
+ }
225
+ return;
346
226
  }
347
- return;
227
+ default:
228
+ assertNever(route);
348
229
  }
349
- sendError(response, 405, "method not allowed");
350
230
  }
351
231
  catch {
352
232
  if (!response.headersSent) {
@@ -1 +1 @@
1
- {"version":3,"file":"http_server.js","sourceRoot":"","sources":["../../../src/core/async/http_server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http_server.js","sourceRoot":"","sources":["../../../src/core/async/http_server.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export { AsyncCliError, printAsyncHelp, runAsyncCommand } from "./cli.js";
2
2
  export { AsyncCronSchedulerError, matchesCronSchedule, parseCronSchedule, startAsyncCronScheduler, } from "./cron.js";
3
3
  export { AsyncDaemonRuntimeError, startAsyncDaemonRuntime } from "./daemon_runtime.js";
4
- export { isRecord, readJsonBody, readStringField, sendError, sendJson, sendOk, } from "./http_protocol.js";
4
+ export { AsyncHttpRequestParseError, decodeAsyncHttpRoute, parseCreateSessionBody, parseCronRunsQuery, parseSendMessageBody, readJsonBody, sendError, sendJson, sendOk, } from "./http_protocol.js";
5
5
  export { startAsyncHttpServer } from "./http_server.js";
6
6
  export { AsyncDaemonConfigError, loadAsyncDaemonConfig } from "./server_config.js";
7
7
  export { AsyncSessionManagerError, createAsyncSessionManager, createScopedAsyncSessionManager, } from "./session_manager.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/async/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAe1E,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAOvF,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,SAAS,EACT,QAAQ,EACR,MAAM,GACP,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAanF,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAS1D,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/async/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAe1E,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,MAAM,GACP,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAanF,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAS1D,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC"}