@timetotest/cli 0.3.0 → 0.3.2

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 (63) hide show
  1. package/README.md +12 -2
  2. package/dist/bin/ttt.js +0 -6
  3. package/dist/bin/ttt.js.map +1 -1
  4. package/dist/package.json +2 -1
  5. package/dist/src/commands/chat/ChatApp.js +102 -61
  6. package/dist/src/commands/chat/ChatApp.js.map +1 -1
  7. package/dist/src/commands/chat/OnboardingApp.js +49 -0
  8. package/dist/src/commands/chat/OnboardingApp.js.map +1 -0
  9. package/dist/src/commands/chat/components/Banner.js +1 -1
  10. package/dist/src/commands/chat/components/Banner.js.map +1 -1
  11. package/dist/src/commands/chat/components/ChatInput.js +16 -3
  12. package/dist/src/commands/chat/components/ChatInput.js.map +1 -1
  13. package/dist/src/commands/chat/components/TodoPanel.js +71 -0
  14. package/dist/src/commands/chat/components/TodoPanel.js.map +1 -0
  15. package/dist/src/commands/chat-ink.js +116 -292
  16. package/dist/src/commands/chat-ink.js.map +1 -1
  17. package/dist/src/lib/__tests__/code-mode-integration.test.js +45 -356
  18. package/dist/src/lib/__tests__/code-mode-integration.test.js.map +1 -1
  19. package/dist/src/lib/__tests__/tool-executor-mode-gating.test.js +46 -0
  20. package/dist/src/lib/__tests__/tool-executor-mode-gating.test.js.map +1 -0
  21. package/dist/src/lib/__tests__/ui-browser-integration.test.js +35 -0
  22. package/dist/src/lib/__tests__/ui-browser-integration.test.js.map +1 -0
  23. package/dist/src/lib/agent-orchestrator.js +16 -717
  24. package/dist/src/lib/agent-orchestrator.js.map +1 -1
  25. package/dist/src/lib/backend-loop-client.js +364 -0
  26. package/dist/src/lib/backend-loop-client.js.map +1 -0
  27. package/dist/src/lib/cli-tool-manifest.js +71 -0
  28. package/dist/src/lib/cli-tool-manifest.js.map +1 -0
  29. package/dist/src/lib/config.js +60 -9
  30. package/dist/src/lib/config.js.map +1 -1
  31. package/dist/src/lib/conversation/turns.js +58 -0
  32. package/dist/src/lib/conversation/turns.js.map +1 -0
  33. package/dist/src/lib/events.js +20 -4
  34. package/dist/src/lib/events.js.map +1 -1
  35. package/dist/src/lib/http.js +7 -2
  36. package/dist/src/lib/http.js.map +1 -1
  37. package/dist/src/lib/prompts/templates.js +18 -0
  38. package/dist/src/lib/prompts/templates.js.map +1 -1
  39. package/dist/src/lib/session-manager.js +74 -33
  40. package/dist/src/lib/session-manager.js.map +1 -1
  41. package/dist/src/lib/socket.js +15 -3
  42. package/dist/src/lib/socket.js.map +1 -1
  43. package/dist/src/lib/todo.js +7 -0
  44. package/dist/src/lib/todo.js.map +1 -0
  45. package/dist/src/lib/tool-executor.js +196 -51
  46. package/dist/src/lib/tool-executor.js.map +1 -1
  47. package/dist/src/lib/tui/events.js +10 -9
  48. package/dist/src/lib/tui/events.js.map +1 -1
  49. package/dist/src/lib/utils/json.js +15 -0
  50. package/dist/src/lib/utils/json.js.map +1 -0
  51. package/package.json +2 -1
  52. package/dist/src/commands/report.js +0 -25
  53. package/dist/src/commands/report.js.map +0 -1
  54. package/dist/src/commands/restart.js +0 -17
  55. package/dist/src/commands/restart.js.map +0 -1
  56. package/dist/src/commands/share.js +0 -18
  57. package/dist/src/commands/share.js.map +0 -1
  58. package/dist/src/lib/context-compactor.js +0 -310
  59. package/dist/src/lib/context-compactor.js.map +0 -1
  60. package/dist/src/lib/tool-registry.js +0 -971
  61. package/dist/src/lib/tool-registry.js.map +0 -1
  62. package/dist/src/lib/tool-result-pruner.js +0 -384
  63. package/dist/src/lib/tool-result-pruner.js.map +0 -1
@@ -0,0 +1,58 @@
1
+ export function splitSystemMessages(messages) {
2
+ return {
3
+ systemMessages: messages.filter((m) => m.role === "system"),
4
+ conversationMessages: messages.filter((m) => m.role !== "system"),
5
+ };
6
+ }
7
+ /**
8
+ * Groups messages into "turns" while keeping tool-calling structure intact:
9
+ * user -> assistant -> tool*
10
+ *
11
+ * If orphaned assistant/tool messages exist (should be rare), they are returned
12
+ * as single-message turns so callers can cap/compact safely.
13
+ */
14
+ export function groupIntoTurns(messages) {
15
+ const turns = [];
16
+ let i = 0;
17
+ while (i < messages.length) {
18
+ const msg = messages[i];
19
+ if (msg.role === "user") {
20
+ const startIndex = i;
21
+ const collected = [msg];
22
+ i++;
23
+ let assistantMessage;
24
+ if (i < messages.length && messages[i].role === "assistant") {
25
+ assistantMessage = messages[i];
26
+ collected.push(assistantMessage);
27
+ i++;
28
+ }
29
+ const toolMessages = [];
30
+ while (i < messages.length && messages[i].role === "tool") {
31
+ toolMessages.push(messages[i]);
32
+ collected.push(messages[i]);
33
+ i++;
34
+ }
35
+ turns.push({
36
+ startIndex,
37
+ endIndex: startIndex + collected.length - 1,
38
+ messages: collected,
39
+ userMessage: msg,
40
+ assistantMessage,
41
+ toolMessages,
42
+ });
43
+ continue;
44
+ }
45
+ // Orphaned message (assistant/tool) - keep it as its own turn.
46
+ turns.push({
47
+ startIndex: i,
48
+ endIndex: i,
49
+ messages: [msg],
50
+ userMessage: undefined,
51
+ assistantMessage: msg.role === "assistant" ? msg : undefined,
52
+ toolMessages: msg.role === "tool" ? [msg] : [],
53
+ });
54
+ i++;
55
+ }
56
+ return turns;
57
+ }
58
+ //# sourceMappingURL=turns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turns.js","sourceRoot":"","sources":["../../../../src/lib/conversation/turns.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,mBAAmB,CAAC,QAAmB;IAIrD,OAAO;QACL,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC3D,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;KAClE,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAmB;IAChD,MAAM,KAAK,GAAuB,EAAE,CAAC;IAErC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAEzB,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,CAAC,CAAC;YACrB,MAAM,SAAS,GAAc,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC,EAAE,CAAC;YAEJ,IAAI,gBAAqC,CAAC;YAC1C,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7D,gBAAgB,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;gBAChC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACjC,CAAC,EAAE,CAAC;YACN,CAAC;YAED,MAAM,YAAY,GAAc,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3D,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;gBAChC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;gBAC7B,CAAC,EAAE,CAAC;YACN,CAAC;YAED,KAAK,CAAC,IAAI,CAAC;gBACT,UAAU;gBACV,QAAQ,EAAE,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;gBAC3C,QAAQ,EAAE,SAAS;gBACnB,WAAW,EAAE,GAAG;gBAChB,gBAAgB;gBAChB,YAAY;aACb,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,+DAA+D;QAC/D,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC,GAAG,CAAC;YACf,WAAW,EAAE,SAAS;YACtB,gBAAgB,EAAE,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YAC5D,YAAY,EAAE,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;SAC/C,CAAC,CAAC;QACH,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,10 +1,24 @@
1
1
  import { formatEventLines } from "./tui.js";
2
2
  // Helper functions for building selectors
3
3
  export function buildTestSelector(testId) {
4
- return { session_kind: "test", ids: { test_id: testId } };
4
+ return { session_kind: "test", test_id: testId };
5
+ }
6
+ export function buildAskSelector(conversationId) {
7
+ return { session_kind: "ask", conversation_id: conversationId };
5
8
  }
6
9
  export function buildSubagentSelector(subagentId, parent) {
7
- return { session_kind: "subagent", ids: { subagent_id: subagentId }, parent };
10
+ // Back-compat for older callers: accept parent shape with `ids`.
11
+ let normalizedParent = parent;
12
+ if (parent && parent.ids) {
13
+ const ids = parent.ids || {};
14
+ if (parent.session_kind === "test") {
15
+ normalizedParent = { session_kind: "test", test_id: ids.test_id };
16
+ }
17
+ else if (parent.session_kind === "ask") {
18
+ normalizedParent = { session_kind: "ask", conversation_id: ids.conversation_id };
19
+ }
20
+ }
21
+ return { session_kind: "subagent", subagent_id: subagentId, parent: normalizedParent };
8
22
  }
9
23
  // Enhanced event processing with unified envelope support
10
24
  export function processUnifiedEvent(eventType, payload) {
@@ -14,12 +28,14 @@ export function processUnifiedEvent(eventType, payload) {
14
28
  ? {
15
29
  type: canonicalType,
16
30
  session_kind: payload.session_kind,
17
- ids: payload.ids || {},
18
31
  parent: payload.parent,
19
32
  actor: payload.actor,
20
33
  correlation_id: payload.correlation_id,
21
- timestamp: payload.timestamp || Date.now(),
34
+ timestamp: payload.timestamp ? Date.parse(payload.timestamp) || Date.now() : Date.now(),
22
35
  data: payload.data || payload,
36
+ test_id: payload.test_id,
37
+ conversation_id: payload.conversation_id,
38
+ subagent_id: payload.subagent_id,
23
39
  }
24
40
  : null;
25
41
  return { canonicalType, envelope };
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/lib/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/lib/events.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@ import axios from "axios";
2
2
  import { getAuthToken, resolveApiUrl } from "./config.js";
3
3
  export function createHttpClient(baseUrl) {
4
4
  const apiUrl = resolveApiUrl(baseUrl);
5
- const token = getAuthToken();
6
5
  const instance = axios.create({ baseURL: apiUrl, timeout: 600000 });
7
6
  instance.interceptors.request.use((config) => {
7
+ const token = getAuthToken();
8
8
  if (token) {
9
9
  config.headers = config.headers || {};
10
10
  config.headers["Authorization"] = `Bearer ${token}`;
@@ -20,7 +20,8 @@ export function createAgentHttpClient(options) {
20
20
  timeout: options.timeoutMs ?? 600000,
21
21
  });
22
22
  instance.interceptors.request.use((config) => {
23
- const token = options.token || getAuthToken();
23
+ // Prefer latest persisted token so re-auth in active sessions is picked up.
24
+ const token = getAuthToken() || options.token;
24
25
  if (token) {
25
26
  config.headers = config.headers || {};
26
27
  config.headers["Authorization"] = `Bearer ${token}`;
@@ -48,6 +49,10 @@ export function createAgentHttpClient(options) {
48
49
  const response = await instance.post("/api/v1/start-test", payload, { params });
49
50
  return response.data;
50
51
  },
52
+ async startAgentLoop(payload) {
53
+ const response = await instance.post("/api/v1/agent/loop", payload);
54
+ return response.data;
55
+ },
51
56
  async get(url, config) {
52
57
  return instance.get(url, config);
53
58
  },
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/lib/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/lib/http.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,7 @@ You have these tools for code exploration and analysis:
49
49
  ### General
50
50
  - **finish**: Call when the task is complete with a summary.
51
51
  - **set_testing_mode**: Switch to a different mode (ui, api, code).
52
+ - **todo**: Maintain an execution todo list (create tasks, set status, track blockers). Use ids internally; never expose ids to users.
52
53
 
53
54
  ## Workflow Guidelines
54
55
 
@@ -128,6 +129,23 @@ Follow this structured process from start to finish.
128
129
 
129
130
  # 3. Rules of Engagement: Tools & Interaction
130
131
 
132
+ <todo_management>
133
+ - Use the **todo** tool to track what you plan to do and what has been completed.
134
+ - Create todos early (action="init" with a title/description, then action="add" with items).
135
+ - Keep exactly one active item in_progress at a time; focus it with action="focus" when needed.
136
+ - Update status immediately after each step:
137
+ - pending -> in_progress when you start
138
+ - in_progress -> completed on success
139
+ - in_progress -> failed with a concise blocker in metadata.reason if blocked
140
+ - Do not expose todo IDs in any user-facing text. IDs are for tool calls only.
141
+
142
+ Examples:
143
+ - todo(action="init", title="Checkout flow", description="E2E smoke checks", reset=true)
144
+ - todo(action="add", todos=[{title:"Open homepage"},{title:"Add item to cart"}])
145
+ - todo(action="update", id="<todo_id>", status="in_progress")
146
+ - todo(action="update", id="<todo_id>", status="failed", metadata={reason:"Login form missing on page"})
147
+ </todo_management>
148
+
131
149
  <element_selection_strategy>
132
150
  Snapshot Cache: The CLI refreshes the accessibility snapshot after major UI actions. Query it with browser_snapshot_query using text and/or role filters to retrieve refs instead of capturing new snapshots yourself.
133
151
  Snapshot Query: Use browser_snapshot_query to look up refs by text or role from the cached snapshot. If the CLI reports the cache is stale, perform a new UI action (navigate, click, etc.) and it will refresh automatically.
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/lib/prompts/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EAwEoC,CAAC;AAEhF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA2JqC,CAAC;AAE7E,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,mBAAmB,EAAE,uBAAuB;IAC5C,cAAc,EAAE,uBAAuB;IACvC,eAAe,EAAE,uBAAuB;IACxC,gBAAgB,EAAE,2BAA2B;CACrC,CAAC"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/lib/prompts/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+EAyEoC,CAAC;AAEhF,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EA4KqC,CAAC;AAE7E,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,mBAAmB,EAAE,uBAAuB;IAC5C,cAAc,EAAE,uBAAuB;IACvC,eAAe,EAAE,uBAAuB;IACxC,gBAAgB,EAAE,2BAA2B;CACrC,CAAC"}
@@ -16,6 +16,45 @@ export class SessionManager {
16
16
  this.sessionPath = path.join(SESSIONS_DIR, this.sessionId);
17
17
  this.initializeSession();
18
18
  }
19
+ createDefaultConfig() {
20
+ const now = Date.now();
21
+ return {
22
+ id: this.sessionId,
23
+ mode: "local",
24
+ testingMode: "ui",
25
+ createdAt: now,
26
+ updatedAt: now,
27
+ };
28
+ }
29
+ readJsonFile(filePath, fallback, validate) {
30
+ try {
31
+ if (!fs.existsSync(filePath)) {
32
+ return fallback;
33
+ }
34
+ const parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"));
35
+ if (validate && !validate(parsed)) {
36
+ return fallback;
37
+ }
38
+ return parsed;
39
+ }
40
+ catch {
41
+ return fallback;
42
+ }
43
+ }
44
+ static isSessionConfig(value) {
45
+ if (!value || typeof value !== "object")
46
+ return false;
47
+ const candidate = value;
48
+ return (typeof candidate.id === "string" &&
49
+ (candidate.mode === "local" || candidate.mode === "remote") &&
50
+ (candidate.testingMode === "ui" ||
51
+ candidate.testingMode === "api" ||
52
+ candidate.testingMode === "code") &&
53
+ typeof candidate.createdAt === "number" &&
54
+ Number.isFinite(candidate.createdAt) &&
55
+ typeof candidate.updatedAt === "number" &&
56
+ Number.isFinite(candidate.updatedAt));
57
+ }
19
58
  initializeSession() {
20
59
  if (!fs.existsSync(SESSIONS_DIR)) {
21
60
  fs.mkdirSync(SESSIONS_DIR, { recursive: true });
@@ -24,26 +63,13 @@ export class SessionManager {
24
63
  fs.mkdirSync(this.sessionPath, { recursive: true });
25
64
  }
26
65
  const configPath = path.join(this.sessionPath, "config.json");
27
- if (fs.existsSync(configPath)) {
28
- const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
29
- this.session = {
30
- config,
31
- messages: this.loadMessages(),
32
- artifacts: this.loadArtifacts(),
33
- };
34
- }
35
- else {
36
- this.session = {
37
- config: {
38
- id: this.sessionId,
39
- mode: "local",
40
- testingMode: "ui",
41
- createdAt: Date.now(),
42
- updatedAt: Date.now(),
43
- },
44
- messages: [],
45
- artifacts: {},
46
- };
66
+ const config = this.readJsonFile(configPath, this.createDefaultConfig(), SessionManager.isSessionConfig);
67
+ this.session = {
68
+ config,
69
+ messages: this.loadMessages(),
70
+ artifacts: this.loadArtifacts(),
71
+ };
72
+ if (!fs.existsSync(configPath)) {
47
73
  this.saveConfig();
48
74
  }
49
75
  }
@@ -55,17 +81,11 @@ export class SessionManager {
55
81
  }
56
82
  loadMessages() {
57
83
  const messagesPath = path.join(this.sessionPath, "messages.json");
58
- if (fs.existsSync(messagesPath)) {
59
- return JSON.parse(fs.readFileSync(messagesPath, "utf-8"));
60
- }
61
- return [];
84
+ return this.readJsonFile(messagesPath, [], (value) => Array.isArray(value));
62
85
  }
63
86
  loadArtifacts() {
64
87
  const artifactsPath = path.join(this.sessionPath, "artifacts.json");
65
- if (fs.existsSync(artifactsPath)) {
66
- return JSON.parse(fs.readFileSync(artifactsPath, "utf-8"));
67
- }
68
- return {};
88
+ return this.readJsonFile(artifactsPath, {}, (value) => !!value && typeof value === "object" && !Array.isArray(value));
69
89
  }
70
90
  addMessage(message) {
71
91
  if (!this.session)
@@ -86,6 +106,14 @@ export class SessionManager {
86
106
  this.saveMessages();
87
107
  this.saveConfig();
88
108
  }
109
+ replaceMessages(messages) {
110
+ if (!this.session)
111
+ return;
112
+ this.session.messages = messages;
113
+ this.session.config.updatedAt = Date.now();
114
+ this.saveMessages();
115
+ this.saveConfig();
116
+ }
89
117
  saveMessages() {
90
118
  if (!this.session)
91
119
  return;
@@ -168,8 +196,15 @@ export class SessionManager {
168
196
  for (const dir of dirs) {
169
197
  const configPath = path.join(SESSIONS_DIR, dir, "config.json");
170
198
  if (fs.existsSync(configPath)) {
171
- const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
172
- sessions.push(config);
199
+ try {
200
+ const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
201
+ if (SessionManager.isSessionConfig(config)) {
202
+ sessions.push(config);
203
+ }
204
+ }
205
+ catch {
206
+ // Skip invalid session config entries.
207
+ }
173
208
  }
174
209
  }
175
210
  return sessions.sort((a, b) => b.updatedAt - a.updatedAt);
@@ -190,9 +225,15 @@ export class SessionManager {
190
225
  for (const dir of dirs) {
191
226
  const configPath = path.join(SESSIONS_DIR, dir, "config.json");
192
227
  if (fs.existsSync(configPath)) {
193
- const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
194
- if (now - config.updatedAt > retentionMs) {
195
- fs.rmSync(path.join(SESSIONS_DIR, dir), { recursive: true });
228
+ try {
229
+ const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
230
+ if (SessionManager.isSessionConfig(config) &&
231
+ now - config.updatedAt > retentionMs) {
232
+ fs.rmSync(path.join(SESSIONS_DIR, dir), { recursive: true });
233
+ }
234
+ }
235
+ catch {
236
+ // Ignore malformed session metadata.
196
237
  }
197
238
  }
198
239
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/lib/session-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/lib/session-manager.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { io } from "socket.io-client";
2
2
  import { getAuthToken, resolveSocketUrl } from "./config.js";
3
- import { buildTestSelector, } from "./events.js";
3
+ import { buildTestSelector, buildAskSelector, } from "./events.js";
4
4
  // Track selectors per-socket for reliable resubscription
5
5
  const socketSubscriptions = new WeakMap();
6
6
  const socketsWithConnectHandler = new WeakSet();
@@ -52,11 +52,23 @@ export function connectAndSubscribe(testId, socketUrlOverride) {
52
52
  subscribeWithTracking(socket, selector);
53
53
  return socket;
54
54
  }
55
+ export function connectAndSubscribeAsk(conversationId, socketUrlOverride) {
56
+ const socketUrl = resolveSocketUrl(socketUrlOverride);
57
+ const token = getAuthToken();
58
+ const socket = io(socketUrl, {
59
+ path: "/socket.io",
60
+ transports: ["websocket", "polling"],
61
+ auth: token ? { token } : undefined,
62
+ });
63
+ const selector = buildAskSelector(conversationId);
64
+ subscribeWithTracking(socket, selector);
65
+ return socket;
66
+ }
55
67
  export function stopSession(socket, selector) {
56
- socket.emit("stop_session", { selector, timestamp: Date.now() });
68
+ socket.emit("stop_session", { ...selector, timestamp: Date.now() });
57
69
  }
58
70
  export function interruptSession(socket, selector, context) {
59
- socket.emit("interrupt_session", { selector, context, timestamp: Date.now() });
71
+ socket.emit("interrupt_session", { ...selector, context, timestamp: Date.now() });
60
72
  }
61
73
  export function provideUserInput(socket, selector, requestId, inputData, inputType = "custom") {
62
74
  socket.emit("provide_user_input", {
@@ -1 +1 @@
1
- {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/lib/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,EAAS,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC3D,OAAO,EAEL,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,yDAAyD;AACzD,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAgC,CAAC;AACxE,MAAM,yBAAyB,GAAG,IAAI,OAAO,EAAU,CAAC;AAExD,SAAS,wBAAwB,CAAC,MAAc;IAC9C,IAAI,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO;IAClD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACxB,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE,IAAI;YAAE,OAAO;QAC7B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IACH,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc,EAAE,QAAyB;IAClE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,QAAyB;IACpE,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAc,EACd,QAAyB;IAEzB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAOD,MAAM,UAAU,mBAAmB,CACjC,MAAuB,EACvB,iBAA0B;IAE1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,SAAS,EAAE;QAC3B,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;QACpC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC,SAAS;KAClC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC3C,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAExC,OAAO,MAAM,CAAC;AAChB,CAAC;AAID,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,QAAyB;IACnE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,QAAyB,EACzB,OAAgB;IAEhB,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,QAAyB,EACzB,SAAiB,EACjB,SAAiB,EACjB,YAAoB,QAAQ;IAE5B,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;QAChC,QAAQ;QACR,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../src/lib/socket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export function createEmptyTodoList() {
2
+ return {
3
+ todos: [],
4
+ updated_at: new Date().toISOString(),
5
+ };
6
+ }
7
+ //# sourceMappingURL=todo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo.js","sourceRoot":"","sources":["../../../src/lib/todo.ts"],"names":[],"mappings":"AAyBA,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,KAAK,EAAE,EAAE;QACT,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC"}