cueline 0.1.3 → 0.1.5

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 (109) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/.codex-plugin/plugin.json +3 -3
  3. package/CHANGELOG.md +36 -0
  4. package/README.ja.md +57 -22
  5. package/README.ko.md +57 -22
  6. package/README.md +64 -24
  7. package/README.zh-CN.md +57 -22
  8. package/README.zh-TW.md +60 -23
  9. package/dist/src/api-contracts.d.ts +77 -0
  10. package/dist/src/api-contracts.js +2 -0
  11. package/dist/src/api-contracts.js.map +1 -0
  12. package/dist/src/api-controller-handoff.d.ts +6 -0
  13. package/dist/src/api-controller-handoff.js +272 -0
  14. package/dist/src/api-controller-handoff.js.map +1 -0
  15. package/dist/src/api-runtime-lifecycle.d.ts +22 -0
  16. package/dist/src/api-runtime-lifecycle.js +564 -0
  17. package/dist/src/api-runtime-lifecycle.js.map +1 -0
  18. package/dist/src/api.d.ts +6 -46
  19. package/dist/src/api.js +125 -133
  20. package/dist/src/api.js.map +1 -1
  21. package/dist/src/browser/browser-adapter.d.ts +15 -1
  22. package/dist/src/browser/codex-iab/bootstrap.d.ts +11 -0
  23. package/dist/src/browser/codex-iab/bootstrap.js +56 -0
  24. package/dist/src/browser/codex-iab/bootstrap.js.map +1 -1
  25. package/dist/src/browser/codex-iab/chatgpt-client.js +243 -156
  26. package/dist/src/browser/codex-iab/chatgpt-client.js.map +1 -1
  27. package/dist/src/browser/codex-iab/recovery-evidence.d.ts +6 -0
  28. package/dist/src/browser/codex-iab/recovery-evidence.js +37 -0
  29. package/dist/src/browser/codex-iab/recovery-evidence.js.map +1 -0
  30. package/dist/src/browser/codex-iab/submission-url.d.ts +2 -0
  31. package/dist/src/browser/codex-iab/submission-url.js +57 -0
  32. package/dist/src/browser/codex-iab/submission-url.js.map +1 -0
  33. package/dist/src/browser/codex-iab/tab-discovery.d.ts +3 -0
  34. package/dist/src/browser/codex-iab/tab-discovery.js +61 -0
  35. package/dist/src/browser/codex-iab/tab-discovery.js.map +1 -0
  36. package/dist/src/cli/main.js +200 -45
  37. package/dist/src/cli/main.js.map +1 -1
  38. package/dist/src/core/controller-abort.d.ts +1 -0
  39. package/dist/src/core/controller-abort.js +11 -0
  40. package/dist/src/core/controller-abort.js.map +1 -0
  41. package/dist/src/core/controller-command-execution.d.ts +9 -0
  42. package/dist/src/core/controller-command-execution.js +299 -0
  43. package/dist/src/core/controller-command-execution.js.map +1 -0
  44. package/dist/src/core/controller-loop.d.ts +3 -43
  45. package/dist/src/core/controller-loop.js +261 -334
  46. package/dist/src/core/controller-loop.js.map +1 -1
  47. package/dist/src/core/controller-turn.d.ts +16 -0
  48. package/dist/src/core/controller-turn.js +315 -0
  49. package/dist/src/core/controller-turn.js.map +1 -0
  50. package/dist/src/core/controller-types.d.ts +58 -0
  51. package/dist/src/core/controller-types.js +2 -0
  52. package/dist/src/core/controller-types.js.map +1 -0
  53. package/dist/src/core/persisted-run.d.ts +4 -0
  54. package/dist/src/core/persisted-run.js +19 -0
  55. package/dist/src/core/persisted-run.js.map +1 -0
  56. package/dist/src/core/process-liveness.d.ts +2 -0
  57. package/dist/src/core/process-liveness.js +44 -0
  58. package/dist/src/core/process-liveness.js.map +1 -0
  59. package/dist/src/core/run-status.d.ts +6 -3
  60. package/dist/src/core/run-status.js +75 -10
  61. package/dist/src/core/run-status.js.map +1 -1
  62. package/dist/src/core/state-machine.d.ts +17 -3
  63. package/dist/src/core/state-machine.js +163 -15
  64. package/dist/src/core/state-machine.js.map +1 -1
  65. package/dist/src/jobs/status.d.ts +1 -1
  66. package/dist/src/jobs/supervisor.js +3 -1
  67. package/dist/src/jobs/supervisor.js.map +1 -1
  68. package/dist/src/router/resolver.d.ts +2 -1
  69. package/dist/src/router/resolver.js +31 -19
  70. package/dist/src/router/resolver.js.map +1 -1
  71. package/dist/src/runners/process-runner.js +59 -6
  72. package/dist/src/runners/process-runner.js.map +1 -1
  73. package/dist/src/state/atomic-write.js +17 -2
  74. package/dist/src/state/atomic-write.js.map +1 -1
  75. package/dist/src/state/cancellation.d.ts +1 -1
  76. package/dist/src/state/cancellation.js +10 -2
  77. package/dist/src/state/cancellation.js.map +1 -1
  78. package/dist/src/state/event-log.d.ts +17 -1
  79. package/dist/src/state/event-log.js +328 -18
  80. package/dist/src/state/event-log.js.map +1 -1
  81. package/dist/src/state/paths.d.ts +1 -0
  82. package/dist/src/state/paths.js +1 -0
  83. package/dist/src/state/paths.js.map +1 -1
  84. package/dist/src/state/runtime-lease.d.ts +25 -0
  85. package/dist/src/state/runtime-lease.js +607 -59
  86. package/dist/src/state/runtime-lease.js.map +1 -1
  87. package/dist/src/state/runtime-retirement.d.ts +16 -0
  88. package/dist/src/state/runtime-retirement.js +95 -0
  89. package/dist/src/state/runtime-retirement.js.map +1 -0
  90. package/dist/src/state/runtime-takeover-intent.d.ts +1 -0
  91. package/dist/src/state/runtime-takeover-intent.js +18 -0
  92. package/dist/src/state/runtime-takeover-intent.js.map +1 -0
  93. package/dist/src/state/store.d.ts +12 -1
  94. package/dist/src/state/store.js +246 -40
  95. package/dist/src/state/store.js.map +1 -1
  96. package/dist/src/version.d.ts +1 -1
  97. package/dist/src/version.js +1 -1
  98. package/docs/architecture.md +16 -11
  99. package/docs/assets/cueline-loop-en.svg +11 -10
  100. package/docs/assets/cueline-loop-ja.svg +11 -10
  101. package/docs/assets/cueline-loop-ko.svg +11 -10
  102. package/docs/assets/cueline-loop-zh-CN.svg +11 -10
  103. package/docs/assets/cueline-loop-zh-TW.svg +11 -10
  104. package/docs/compatibility.md +15 -9
  105. package/docs/controller-protocol.md +7 -5
  106. package/docs/runner-contract.md +19 -5
  107. package/docs/state-and-recovery.md +52 -22
  108. package/package.json +2 -2
  109. package/skills/cueline/SKILL.md +66 -17
@@ -1,6 +1,9 @@
1
1
  import { CueLineError } from "../../core/errors.js";
2
- import { readPageChatState, resolveIabBrowser, } from "./bootstrap.js";
2
+ import { readPageChatState, readPageComposerState, resolveIabBrowser, } from "./bootstrap.js";
3
3
  import { CHATGPT_URL, COMPOSER_TEXTBOX_NAMES, SEND_BUTTON_NAMES } from "./selectors.js";
4
+ import { hasExactControllerEnvelopeIdentity, isProLabel, isProModelSlug, normalizedConversationUrl, normalizedMessageText } from "./recovery-evidence.js";
5
+ import { captureConversationUrlAfterSubmit } from "./submission-url.js";
6
+ import { acquireChatGptTab, isTabUnavailableError } from "./tab-discovery.js";
4
7
  const DEFAULT_TIMEOUT_MS = 30 * 60 * 1_000;
5
8
  const DEFAULT_POLL_INTERVAL_MS = 1_000;
6
9
  const DEFAULT_STABLE_MS = 1_500;
@@ -10,7 +13,8 @@ const MODEL_PICKER_SELECTOR = "button.__composer-pill";
10
13
  const REQUIRED_MODEL_LABEL = "Pro";
11
14
  const MODEL_LABEL_READ_ATTEMPTS = 50;
12
15
  const MODEL_LABEL_RETRY_INTERVAL_MS = 100;
13
- const TAB_DISCOVERY_RETRY_MS = 100;
16
+ const COMPOSER_READY_TIMEOUT_MS = 30_000;
17
+ const COMPOSER_READY_STABLE_MS = 250;
14
18
  function throwIfCancelled(signal) {
15
19
  if (signal?.aborted !== true)
16
20
  return;
@@ -48,9 +52,9 @@ async function findUniqueLocator(tab, role, names) {
48
52
  }
49
53
  return undefined;
50
54
  }
51
- async function clickVisibleSendButtonByCoordinates(tab) {
55
+ async function findVisibleSendButtonCoordinates(tab) {
52
56
  if (!tab.cua?.click)
53
- return false;
57
+ return undefined;
54
58
  const target = await tab.playwright.evaluate(({ sendButtonNames }) => {
55
59
  const normalize = (value) => String(value ?? "").trim().replace(/\s+/g, " ");
56
60
  const candidates = Array.from(document.querySelectorAll("button")).filter((element) => {
@@ -83,11 +87,9 @@ async function clickVisibleSendButtonByCoordinates(tab) {
83
87
  !Number.isFinite(target.y) ||
84
88
  target.x < 0 ||
85
89
  target.y < 0) {
86
- return false;
90
+ return undefined;
87
91
  }
88
- await tab.cua.click({ x: Math.round(target.x), y: Math.round(target.y) });
89
- await tab.playwright.waitForTimeout(100);
90
- return true;
92
+ return { x: Math.round(target.x), y: Math.round(target.y) };
91
93
  }
92
94
  async function findHydratedComposer(tab) {
93
95
  if (!tab.playwright.locator)
@@ -104,31 +106,8 @@ async function findHydratedComposer(tab) {
104
106
  function isConversationUrl(url) {
105
107
  return /^https:\/\/chatgpt\.com\/c\/[A-Za-z0-9-]+/.test(url);
106
108
  }
107
- function isTransientClickError(error) {
108
- const message = error instanceof Error ? error.message : String(error);
109
- return /deadline exceeded|timed? out|timeout|detached|stale|not enabled|not visible/i.test(message);
110
- }
111
- function isTabUnavailableError(error) {
112
- const message = error instanceof Error ? error.message : String(error);
113
- return /tab not found|existing tabs: none|webview attach|cdp operation exceeded|target closed|page closed|browser.*disconnected/i.test(message);
114
- }
115
- function normalizedConversationUrl(url) {
116
- try {
117
- const parsed = new URL(url);
118
- return `${parsed.origin}${parsed.pathname}`;
119
- }
120
- catch {
121
- return url;
122
- }
123
- }
124
- function isProLabel(label) {
125
- return /^Pro(?:\s+(?:Standard|Extended))?$/i.test(label ?? "");
126
- }
127
- function isProModelSlug(slug) {
128
- return /(?:^|-)pro(?:-|$)/i.test(slug ?? "");
129
- }
130
- function normalizedMessageText(value) {
131
- return (value ?? "").replace(/\r\n/g, "\n").trim();
109
+ function ambiguousSubmissionError(error) {
110
+ return new CueLineError("CONTROLLER_SUBMISSION_AMBIGUOUS", "The send-button click failed without proving whether ChatGPT accepted the prompt. Refusing a second click; reconcile the exact conversation instead.", { cause: error });
132
111
  }
133
112
  function submissionStateForStage(stage) {
134
113
  if (stage === "pre_submit")
@@ -169,6 +148,7 @@ async function readComposerModelLabelWhenReady(tab, signal) {
169
148
  return null;
170
149
  }
171
150
  class CodexIabAdapter {
151
+ submissionCheckpointContract = "write_ahead_v1";
172
152
  #options;
173
153
  #browser;
174
154
  #tab;
@@ -205,50 +185,11 @@ class CodexIabAdapter {
205
185
  this.#tab = undefined;
206
186
  }
207
187
  const browser = await this.#getBrowser();
208
- const targetUrl = this.#conversationUrl;
209
- const matchesTarget = (url) => targetUrl
210
- ? normalizedConversationUrl(url) === normalizedConversationUrl(targetUrl)
211
- : url.startsWith(CHATGPT_URL);
212
- let tab;
213
- const canDiscover = browser.tabs.selected !== undefined ||
214
- browser.tabs.list !== undefined ||
215
- browser.user?.openTabs !== undefined;
216
- const discoveryPasses = canDiscover ? 2 : 1;
217
- for (let pass = 0; pass < discoveryPasses && tab === undefined; pass += 1) {
218
- const selected = await browser.tabs.selected?.();
219
- if (selected && matchesTarget((await selected.url()) ?? "")) {
220
- tab = selected;
221
- break;
222
- }
223
- const sessionTabs = (await browser.tabs.list?.()) ?? [];
224
- const sessionCandidate = sessionTabs.find((candidate) => matchesTarget(String(candidate.url ?? "")));
225
- if (sessionCandidate?.id && browser.tabs.get) {
226
- tab = await browser.tabs.get(sessionCandidate.id);
227
- }
228
- if (tab === undefined) {
229
- const openTabs = (await browser.user?.openTabs?.()) ?? [];
230
- const candidate = openTabs.find((openTab) => matchesTarget(String(openTab.url ?? "")));
231
- if (candidate && browser.user?.claimTab) {
232
- tab = await browser.user.claimTab(candidate);
233
- }
234
- }
235
- if (tab === undefined && pass < discoveryPasses - 1) {
236
- await delay(TAB_DISCOVERY_RETRY_MS);
237
- }
238
- }
239
- if (tab === undefined) {
240
- tab = await browser.tabs.new();
241
- await tab.goto(targetUrl ?? CHATGPT_URL);
242
- }
243
- await tab.playwright.waitForLoadState?.({
244
- state: "domcontentloaded",
245
- timeoutMs: 30_000,
246
- });
247
- this.#tab = tab;
248
- return tab;
188
+ this.#tab = await acquireChatGptTab(browser, this.#conversationUrl);
189
+ return this.#tab;
249
190
  }
250
- async #ensureProModel(tab) {
251
- let label = await readComposerModelLabel(tab);
191
+ async #ensureProModel(tab, signal) {
192
+ let label = await readComposerModelLabelWhenReady(tab, signal);
252
193
  if (isProLabel(label))
253
194
  return label;
254
195
  if (label === null) {
@@ -280,6 +221,7 @@ class CodexIabAdapter {
280
221
  return true;
281
222
  }
282
223
  return (await readPageChatState(tab).catch(() => ({
224
+ pageUrl: "",
283
225
  isAnswering: false,
284
226
  assistantText: "",
285
227
  assistantMessageCount: 0,
@@ -288,45 +230,33 @@ class CodexIabAdapter {
288
230
  lastMessageRole: null,
289
231
  }))).isAnswering;
290
232
  }
291
- async #clickSend(tab) {
233
+ async #resolveSendTarget(tab) {
234
+ const locator = await findUniqueLocator(tab, "button", SEND_BUTTON_NAMES);
235
+ if (locator)
236
+ return { kind: "locator", locator };
237
+ const coordinate = await findVisibleSendButtonCoordinates(tab);
238
+ if (coordinate)
239
+ return { kind: "coordinate", ...coordinate };
240
+ throw new CueLineError("SEND_BUTTON_MISSING", "Could not find ChatGPT's send button.");
241
+ }
242
+ async #clickSend(tab, target) {
292
243
  const previousUrl = (await tab.url()) ?? "";
293
- let lastError;
294
- let locatorClickAttempted = false;
295
- for (let attempt = 0; attempt < 2; attempt += 1) {
296
- const button = await findUniqueLocator(tab, "button", SEND_BUTTON_NAMES);
297
- if (!button) {
298
- if (attempt > 0 && await this.#submissionStarted(tab, previousUrl)) {
299
- return;
300
- }
301
- lastError = new CueLineError("SEND_BUTTON_MISSING", "Could not find ChatGPT's send button.");
302
- break;
303
- }
304
- try {
305
- locatorClickAttempted = true;
306
- await button.click({ timeoutMs: 10_000 });
307
- return;
244
+ try {
245
+ if (target.kind === "locator") {
246
+ await target.locator.click({ timeoutMs: 10_000 });
308
247
  }
309
- catch (error) {
310
- if (await this.#submissionStarted(tab, previousUrl)) {
311
- return;
312
- }
313
- if (!isTransientClickError(error)) {
314
- throw error;
315
- }
316
- lastError = error;
317
- if (attempt === 0) {
318
- await tab.playwright.domSnapshot();
319
- await tab.playwright.waitForTimeout(250);
320
- if (await this.#submissionStarted(tab, previousUrl))
321
- return;
322
- if (await clickVisibleSendButtonByCoordinates(tab))
323
- return;
324
- }
248
+ else {
249
+ await tab.cua.click({ x: target.x, y: target.y });
250
+ await tab.playwright.waitForTimeout(100);
325
251
  }
326
252
  }
327
- if (!locatorClickAttempted && await clickVisibleSendButtonByCoordinates(tab))
328
- return;
329
- throw lastError ?? new CueLineError("SEND_BUTTON_MISSING", "Could not find ChatGPT's send button.");
253
+ catch (error) {
254
+ if (await this.#submissionStarted(tab, previousUrl))
255
+ return;
256
+ if (isTabUnavailableError(error))
257
+ throw error;
258
+ throw ambiguousSubmissionError(error);
259
+ }
330
260
  }
331
261
  async #waitForCompletion(tab, baseline, signal) {
332
262
  const deadline = Date.now() + this.#options.timeoutMs;
@@ -356,19 +286,22 @@ class CodexIabAdapter {
356
286
  }
357
287
  throw new CueLineError("CHATGPT_RESPONSE_TIMEOUT", "ChatGPT did not finish before timeout.");
358
288
  }
359
- async #waitForRecoveredCompletion(tab, expectedPrompt, signal) {
289
+ async #waitForRecoveredCompletion(tab, expectedPrompt, allowVisiblePromptMismatch, manualSendConfirmed, baselineAssistantMessageCount, expectedConversationUrl, expectedIdentity, signal) {
290
+ const attachmentBaseline = allowVisiblePromptMismatch
291
+ ? baselineAssistantMessageCount
292
+ : undefined;
293
+ if (allowVisiblePromptMismatch &&
294
+ attachmentBaseline === undefined &&
295
+ !manualSendConfirmed) {
296
+ throw new CueLineError("CONTROLLER_RECONCILIATION_BASELINE_REQUIRED", "Attachment recovery requires the durable pre-submit assistant message count; refusing to import a possibly stale response.");
297
+ }
360
298
  const deadline = Date.now() + this.#options.timeoutMs;
361
299
  let stableText = "";
362
300
  let stableSince = 0;
363
301
  while (Date.now() < deadline) {
364
302
  throwIfCancelled(signal);
365
- const state = await readPageChatState(tab);
366
- if (normalizedMessageText(state.lastUserText) !== normalizedMessageText(expectedPrompt)) {
367
- throw new CueLineError("CONTROLLER_RECONCILIATION_MISMATCH", "The exact conversation's last user message does not match the pending CueLine prompt. Refusing to import an unrelated response.");
368
- }
369
- if (!state.isAnswering &&
370
- state.lastMessageRole === "assistant" &&
371
- state.assistantText !== "") {
303
+ const state = await this.#readRecoveredCandidate(tab, expectedPrompt, allowVisiblePromptMismatch, manualSendConfirmed, attachmentBaseline, expectedConversationUrl, expectedIdentity);
304
+ if (state !== undefined) {
372
305
  if (state.assistantText !== stableText) {
373
306
  stableText = state.assistantText;
374
307
  stableSince = Date.now();
@@ -384,6 +317,83 @@ class CodexIabAdapter {
384
317
  }
385
318
  throw new CueLineError("CONTROLLER_RECONCILIATION_TIMEOUT", "The existing ChatGPT response did not become readable before timeout; no prompt was sent.");
386
319
  }
320
+ async #readRecoveredCandidate(tab, expectedPrompt, allowVisiblePromptMismatch, manualSendConfirmed, attachmentBaseline, expectedConversationUrl, expectedIdentity) {
321
+ const state = await readPageChatState(tab);
322
+ if (normalizedConversationUrl(state.pageUrl) !==
323
+ normalizedConversationUrl(expectedConversationUrl)) {
324
+ throw new CueLineError("CONTROLLER_RECONCILIATION_CONVERSATION_MISMATCH", "The response evidence was read from a different ChatGPT conversation DOM.");
325
+ }
326
+ if (attachmentBaseline !== undefined &&
327
+ state.assistantMessageCount <= attachmentBaseline)
328
+ return undefined;
329
+ if (manualSendConfirmed &&
330
+ attachmentBaseline === undefined &&
331
+ !hasExactControllerEnvelopeIdentity(state.assistantText, expectedIdentity))
332
+ return undefined;
333
+ if (state.lastUserText === null && !manualSendConfirmed)
334
+ return undefined;
335
+ if (!allowVisiblePromptMismatch &&
336
+ normalizedMessageText(state.lastUserText) !== normalizedMessageText(expectedPrompt)) {
337
+ throw new CueLineError("CONTROLLER_RECONCILIATION_MISMATCH", "The exact conversation's last user message does not match the pending CueLine prompt. Refusing to import an unrelated response.");
338
+ }
339
+ return !state.isAnswering &&
340
+ state.lastMessageRole === "assistant" &&
341
+ state.assistantText !== ""
342
+ ? state
343
+ : undefined;
344
+ }
345
+ async #observeRecoveredCompletion(tab, expectedPrompt, allowVisiblePromptMismatch, manualSendConfirmed, baselineAssistantMessageCount, expectedConversationUrl, expectedIdentity, signal) {
346
+ if (allowVisiblePromptMismatch &&
347
+ baselineAssistantMessageCount === undefined &&
348
+ !manualSendConfirmed) {
349
+ throw new CueLineError("CONTROLLER_RECONCILIATION_BASELINE_REQUIRED", "Attachment recovery requires the durable pre-submit assistant message count; refusing to import a possibly stale response.");
350
+ }
351
+ throwIfCancelled(signal);
352
+ const first = await this.#readRecoveredCandidate(tab, expectedPrompt, allowVisiblePromptMismatch, manualSendConfirmed, allowVisiblePromptMismatch ? baselineAssistantMessageCount : undefined, expectedConversationUrl, expectedIdentity);
353
+ if (first === undefined)
354
+ return undefined;
355
+ if (this.#options.stableMs > 0)
356
+ await delay(this.#options.stableMs, signal);
357
+ const second = await this.#readRecoveredCandidate(tab, expectedPrompt, allowVisiblePromptMismatch, manualSendConfirmed, allowVisiblePromptMismatch ? baselineAssistantMessageCount : undefined, expectedConversationUrl, expectedIdentity);
358
+ return second !== undefined &&
359
+ second.assistantText === first.assistantText &&
360
+ second.assistantMessageCount === first.assistantMessageCount &&
361
+ second.assistantModelSlug === first.assistantModelSlug
362
+ ? second
363
+ : undefined;
364
+ }
365
+ async #waitForComposerReady(tab, expectedPrompt, baselineAttachmentCount, signal) {
366
+ const deadline = Date.now() + Math.min(COMPOSER_READY_TIMEOUT_MS, this.#options.timeoutMs);
367
+ const stableRequirement = Math.min(COMPOSER_READY_STABLE_MS, this.#options.stableMs);
368
+ let stableSignature = "";
369
+ let stableSince = 0;
370
+ let lastState = await readPageComposerState(tab, expectedPrompt, SEND_BUTTON_NAMES);
371
+ while (Date.now() < deadline) {
372
+ throwIfCancelled(signal);
373
+ const state = await readPageComposerState(tab, expectedPrompt, SEND_BUTTON_NAMES);
374
+ lastState = state;
375
+ const ready = state.sendButtonEnabled &&
376
+ (state.state === "inline_ready" ||
377
+ (state.state === "attachment_ready" &&
378
+ state.attachmentCount > baselineAttachmentCount));
379
+ const signature = `${state.state}:${state.inlineTextLength}:${state.attachmentCount}:${state.sendButtonEnabled}`;
380
+ if (ready) {
381
+ if (signature !== stableSignature) {
382
+ stableSignature = signature;
383
+ stableSince = Date.now();
384
+ }
385
+ if (Date.now() - stableSince >= stableRequirement && ready) {
386
+ return state.state === "inline_ready" ? "inline_ready" : "attachment_ready";
387
+ }
388
+ }
389
+ else {
390
+ stableSignature = "";
391
+ stableSince = 0;
392
+ }
393
+ await delay(Math.min(this.#options.pollIntervalMs, 100), signal);
394
+ }
395
+ throw new CueLineError("CONTROLLER_PROMPT_NOT_READY", "ChatGPT exposed neither the exact inline prompt nor an attachment with an enabled send button after the composer settled.", { details: { composer_state: lastState.state, attachment_count: lastState.attachmentCount } });
396
+ }
387
397
  async #resultFromCompletedTurn(tab, selectedModelLabel, completed) {
388
398
  if (!isProModelSlug(completed.assistantModelSlug)) {
389
399
  throw new CueLineError("PRO_MODEL_MISMATCH", `ChatGPT returned model '${completed.assistantModelSlug ?? "unknown"}' after Pro was selected. Refusing the controller response.`, {
@@ -393,7 +403,10 @@ class CodexIabAdapter {
393
403
  },
394
404
  });
395
405
  }
396
- const conversationUrl = (await tab.url()) ?? "";
406
+ // Bind response text and URL from one DOM evaluation. A later CDP URL
407
+ // read can observe navigation to another conversation and must never be
408
+ // paired with this completed assistant message.
409
+ const conversationUrl = completed.pageUrl;
397
410
  if (isConversationUrl(conversationUrl))
398
411
  this.#conversationUrl = conversationUrl;
399
412
  const title = await tab.title?.();
@@ -410,7 +423,7 @@ class CodexIabAdapter {
410
423
  ...(title === undefined || title === "" ? {} : { title }),
411
424
  };
412
425
  }
413
- async #sendTurnOnce(input, context, hooks) {
426
+ async #submitTurnOnce(input, context, hooks, requireRecoverableCheckpoint = false) {
414
427
  throwIfCancelled(input.signal);
415
428
  const tab = await this.#getTab();
416
429
  throwIfCancelled(input.signal);
@@ -419,27 +432,50 @@ class CodexIabAdapter {
419
432
  if (!composer) {
420
433
  throw new CueLineError("COMPOSER_MISSING", "Could not find ChatGPT's message composer.");
421
434
  }
422
- context.selectedModelLabel = await this.#ensureProModel(tab);
435
+ context.selectedModelLabel = await this.#ensureProModel(tab, input.signal);
423
436
  context.baseline = await readPageChatState(tab);
437
+ const composerBaseline = await readPageComposerState(tab, input.prompt, SEND_BUTTON_NAMES);
438
+ if (composerBaseline.attachmentCount > 0) {
439
+ throw new CueLineError("CONTROLLER_PROMPT_NOT_READY", "The ChatGPT composer already contains an attachment. Refusing to mix it with the current controller prompt.", {
440
+ details: {
441
+ composer_state: composerBaseline.state,
442
+ attachment_count: composerBaseline.attachmentCount,
443
+ },
444
+ });
445
+ }
424
446
  await composer.fill(input.prompt, {});
425
447
  throwIfCancelled(input.signal);
426
- await this.#emitCheckpoint(tab, context, hooks, "possibly_sent");
448
+ context.composerPromptState = await this.#waitForComposerReady(tab, input.prompt, composerBaseline.attachmentCount, input.signal);
449
+ const sendTarget = await this.#resolveSendTarget(tab);
450
+ await this.#emitCheckpoint(tab, context, hooks, "submitting");
427
451
  context.stage = "submitting";
428
- await this.#clickSend(tab);
452
+ await this.#clickSend(tab, sendTarget);
453
+ if (requireRecoverableCheckpoint) {
454
+ this.#conversationUrl = await captureConversationUrlAfterSubmit(tab, this.#conversationUrl, this.#options.timeoutMs, this.#options.pollIntervalMs, input.signal);
455
+ }
429
456
  context.stage = "submitted";
430
- await this.#emitCheckpoint(tab, context, hooks, "submitted");
457
+ await this.#emitCheckpoint(tab, context, hooks, "submitted", requireRecoverableCheckpoint ? this.#conversationUrl : undefined);
458
+ return tab;
459
+ }
460
+ async #sendTurnOnce(input, context, hooks) {
461
+ const tab = await this.#submitTurnOnce(input, context, hooks);
431
462
  const completed = await this.#waitForCompletion(tab, context.baseline, input.signal);
432
463
  return this.#resultFromCompletedTurn(tab, context.selectedModelLabel, completed);
433
464
  }
434
- async #emitCheckpoint(tab, context, hooks, submissionState) {
435
- if (!context.baseline || !context.selectedModelLabel)
465
+ async #emitCheckpoint(tab, context, hooks, submissionState, capturedConversationUrl) {
466
+ if (!context.baseline || !context.selectedModelLabel || !context.composerPromptState)
436
467
  return;
437
- const currentUrl = (await tab.url().catch(() => "")) ?? "";
438
- if (isConversationUrl(currentUrl))
439
- this.#conversationUrl = currentUrl;
468
+ const currentUrl = capturedConversationUrl ?? (await tab.url().catch(() => "")) ?? "";
469
+ const checkpointUrl = isConversationUrl(currentUrl) ? currentUrl : this.#conversationUrl;
470
+ if (checkpointUrl !== undefined && isConversationUrl(checkpointUrl)) {
471
+ this.#conversationUrl = checkpointUrl;
472
+ }
440
473
  await hooks?.onCheckpoint?.({
441
474
  submissionState,
442
- ...(isConversationUrl(currentUrl) ? { conversationUrl: currentUrl } : {}),
475
+ composerPromptState: context.composerPromptState,
476
+ ...(checkpointUrl !== undefined && isConversationUrl(checkpointUrl)
477
+ ? { conversationUrl: checkpointUrl }
478
+ : {}),
443
479
  selectedModelLabel: context.selectedModelLabel,
444
480
  baselineAssistantMessageCount: context.baseline.assistantMessageCount,
445
481
  });
@@ -517,7 +553,23 @@ class CodexIabAdapter {
517
553
  }
518
554
  }
519
555
  }
520
- async recoverTurn(input) {
556
+ async submitTurn(input, hooks) {
557
+ const context = { stage: "pre_submit" };
558
+ try {
559
+ await this.#submitTurnOnce(input, context, hooks, true);
560
+ }
561
+ catch (error) {
562
+ if (!isTabUnavailableError(error) || context.stage !== "pre_submit") {
563
+ throw this.#browserFailure(error, context, input);
564
+ }
565
+ this.#tab = undefined;
566
+ const retryContext = { stage: "pre_submit" };
567
+ await this.#submitTurnOnce(input, retryContext, hooks, true).catch((retryError) => {
568
+ throw this.#browserFailure(retryError, retryContext, input);
569
+ });
570
+ }
571
+ }
572
+ async #readExistingTurn(input, waitForCompletion) {
521
573
  throwIfCancelled(input.signal);
522
574
  if (this.#conversationUrl === undefined) {
523
575
  throw new CueLineError("CONTROLLER_RECONCILIATION_URL_REQUIRED", "CueLine needs the exact persisted ChatGPT conversation URL to recover without sending.", {
@@ -528,33 +580,68 @@ class CodexIabAdapter {
528
580
  },
529
581
  });
530
582
  }
583
+ const tab = await this.#getTab();
584
+ throwIfCancelled(input.signal);
585
+ const selectedModelLabel = await readComposerModelLabelWhenReady(tab, input.signal);
586
+ if (!isProLabel(selectedModelLabel)) {
587
+ throw new CueLineError("CONTROLLER_RECONCILIATION_MODEL_UNVERIFIED", "The existing conversation does not currently expose a Pro composer label; refusing to import the response without both model checks.");
588
+ }
589
+ const allowVisiblePromptMismatch = input.manualSendConfirmed === true || input.attachmentPromptExpected === true;
590
+ const baselineAssistantMessageCount = typeof input.baselineAssistantMessageCount === "number" &&
591
+ Number.isSafeInteger(input.baselineAssistantMessageCount) &&
592
+ input.baselineAssistantMessageCount >= 0
593
+ ? input.baselineAssistantMessageCount
594
+ : undefined;
595
+ const expectedIdentity = {
596
+ runId: input.runId, round: input.round, requestId: input.requestId,
597
+ };
598
+ const completed = waitForCompletion
599
+ ? await this.#waitForRecoveredCompletion(tab, input.prompt, allowVisiblePromptMismatch, input.manualSendConfirmed === true, baselineAssistantMessageCount, this.#conversationUrl, expectedIdentity, input.signal)
600
+ : await this.#observeRecoveredCompletion(tab, input.prompt, allowVisiblePromptMismatch, input.manualSendConfirmed === true, baselineAssistantMessageCount, this.#conversationUrl, expectedIdentity, input.signal);
601
+ if (completed === undefined)
602
+ return undefined;
603
+ const recoveredUrl = (await tab.url()) ?? "";
604
+ if (normalizedConversationUrl(recoveredUrl) !==
605
+ normalizedConversationUrl(this.#conversationUrl)) {
606
+ throw new CueLineError("CONTROLLER_RECONCILIATION_CONVERSATION_MISMATCH", "The recovered response is no longer on the exact persisted ChatGPT conversation URL.");
607
+ }
608
+ return this.#resultFromCompletedTurn(tab, selectedModelLabel, completed);
609
+ }
610
+ #reconciliationFailure(error, input) {
611
+ const message = error instanceof Error ? error.message : String(error);
612
+ const existingDetails = error instanceof CueLineError &&
613
+ typeof error.details === "object" &&
614
+ error.details !== null &&
615
+ !Array.isArray(error.details)
616
+ ? error.details
617
+ : {};
618
+ return new CueLineError(error instanceof CueLineError ? error.code : "IAB_RECONCILIATION_FAILED", message, {
619
+ cause: error,
620
+ details: {
621
+ ...existingDetails,
622
+ stage: "reconciling",
623
+ submission_state: "possibly_sent",
624
+ request_id: input.requestId,
625
+ },
626
+ });
627
+ }
628
+ async observeTurn(input) {
531
629
  try {
532
- const tab = await this.#getTab();
533
- throwIfCancelled(input.signal);
534
- const selectedModelLabel = await readComposerModelLabelWhenReady(tab, input.signal);
535
- if (!isProLabel(selectedModelLabel)) {
536
- throw new CueLineError("CONTROLLER_RECONCILIATION_MODEL_UNVERIFIED", "The existing conversation does not currently expose a Pro composer label; refusing to import the response without both model checks.");
537
- }
538
- const completed = await this.#waitForRecoveredCompletion(tab, input.prompt, input.signal);
539
- return this.#resultFromCompletedTurn(tab, selectedModelLabel, completed);
630
+ return await this.#readExistingTurn(input, false);
540
631
  }
541
632
  catch (error) {
542
- const message = error instanceof Error ? error.message : String(error);
543
- const existingDetails = error instanceof CueLineError &&
544
- typeof error.details === "object" &&
545
- error.details !== null &&
546
- !Array.isArray(error.details)
547
- ? error.details
548
- : {};
549
- throw new CueLineError(error instanceof CueLineError ? error.code : "IAB_RECONCILIATION_FAILED", message, {
550
- cause: error,
551
- details: {
552
- ...existingDetails,
553
- stage: "reconciling",
554
- submission_state: "possibly_sent",
555
- request_id: input.requestId,
556
- },
557
- });
633
+ throw this.#reconciliationFailure(error, input);
634
+ }
635
+ }
636
+ async recoverTurn(input) {
637
+ try {
638
+ const turn = await this.#readExistingTurn(input, true);
639
+ if (turn === undefined)
640
+ throw new Error("IAB_RECOVERY_RETURNED_WITHOUT_RESPONSE");
641
+ return turn;
642
+ }
643
+ catch (error) {
644
+ throw this.#reconciliationFailure(error, input);
558
645
  }
559
646
  }
560
647
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chatgpt-client.js","sourceRoot":"","sources":["../../../../src/browser/codex-iab/chatgpt-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatgpt-client.js","sourceRoot":"","sources":["../../../../src/browser/codex-iab/chatgpt-client.ts"],"names":[],"mappings":"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"}