cueline 0.1.6 → 0.1.7

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 (162) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +27 -0
  4. package/README.ja.md +29 -7
  5. package/README.ko.md +29 -7
  6. package/README.md +78 -11
  7. package/README.zh-CN.md +29 -7
  8. package/README.zh-TW.md +36 -8
  9. package/config/routing.schema.json +3 -0
  10. package/dist/src/api-caller-work.js +58 -14
  11. package/dist/src/api-caller-work.js.map +1 -1
  12. package/dist/src/api-contracts.d.ts +49 -0
  13. package/dist/src/api-controller-handoff.js +30 -38
  14. package/dist/src/api-controller-handoff.js.map +1 -1
  15. package/dist/src/api-run-verification.d.ts +3 -0
  16. package/dist/src/api-run-verification.js +174 -0
  17. package/dist/src/api-run-verification.js.map +1 -0
  18. package/dist/src/api-runtime-lifecycle.d.ts +6 -1
  19. package/dist/src/api-runtime-lifecycle.js +97 -8
  20. package/dist/src/api-runtime-lifecycle.js.map +1 -1
  21. package/dist/src/api.d.ts +17 -3
  22. package/dist/src/api.js +105 -38
  23. package/dist/src/api.js.map +1 -1
  24. package/dist/src/browser/browser-adapter.d.ts +15 -0
  25. package/dist/src/browser/codex-iab/bootstrap.d.ts +20 -0
  26. package/dist/src/browser/codex-iab/bootstrap.js +173 -9
  27. package/dist/src/browser/codex-iab/bootstrap.js.map +1 -1
  28. package/dist/src/browser/codex-iab/chatgpt-client.d.ts +3 -0
  29. package/dist/src/browser/codex-iab/chatgpt-client.js +115 -57
  30. package/dist/src/browser/codex-iab/chatgpt-client.js.map +1 -1
  31. package/dist/src/browser/codex-iab/probe.d.ts +36 -0
  32. package/dist/src/browser/codex-iab/probe.js +217 -0
  33. package/dist/src/browser/codex-iab/probe.js.map +1 -0
  34. package/dist/src/browser/codex-iab/recovery-evidence.d.ts +1 -1
  35. package/dist/src/browser/codex-iab/recovery-evidence.js +7 -10
  36. package/dist/src/browser/codex-iab/recovery-evidence.js.map +1 -1
  37. package/dist/src/browser/codex-iab/selectors.d.ts +1 -0
  38. package/dist/src/browser/codex-iab/selectors.js +1 -0
  39. package/dist/src/browser/codex-iab/selectors.js.map +1 -1
  40. package/dist/src/browser/codex-iab/send-button.d.ts +5 -0
  41. package/dist/src/browser/codex-iab/send-button.js +62 -0
  42. package/dist/src/browser/codex-iab/send-button.js.map +1 -0
  43. package/dist/src/browser/codex-iab/submission-url.js +6 -15
  44. package/dist/src/browser/codex-iab/submission-url.js.map +1 -1
  45. package/dist/src/browser/codex-iab/tab-discovery.js +45 -12
  46. package/dist/src/browser/codex-iab/tab-discovery.js.map +1 -1
  47. package/dist/src/browser/codex-iab/timing-options.d.ts +1 -0
  48. package/dist/src/browser/codex-iab/timing-options.js +5 -0
  49. package/dist/src/browser/codex-iab/timing-options.js.map +1 -0
  50. package/dist/src/cli/health-commands.d.ts +2 -0
  51. package/dist/src/cli/health-commands.js +191 -0
  52. package/dist/src/cli/health-commands.js.map +1 -0
  53. package/dist/src/cli/io.d.ts +4 -0
  54. package/dist/src/cli/io.js +2 -0
  55. package/dist/src/cli/io.js.map +1 -0
  56. package/dist/src/cli/main.d.ts +1 -5
  57. package/dist/src/cli/main.js +159 -77
  58. package/dist/src/cli/main.js.map +1 -1
  59. package/dist/src/cli/observation-commands.d.ts +2 -0
  60. package/dist/src/cli/observation-commands.js +239 -0
  61. package/dist/src/cli/observation-commands.js.map +1 -0
  62. package/dist/src/cli/run-status-view.d.ts +79 -0
  63. package/dist/src/cli/run-status-view.js +112 -0
  64. package/dist/src/cli/run-status-view.js.map +1 -0
  65. package/dist/src/core/controller-command-execution.d.ts +2 -2
  66. package/dist/src/core/controller-command-execution.js +82 -16
  67. package/dist/src/core/controller-command-execution.js.map +1 -1
  68. package/dist/src/core/controller-conversation-archive.d.ts +11 -0
  69. package/dist/src/core/controller-conversation-archive.js +109 -0
  70. package/dist/src/core/controller-conversation-archive.js.map +1 -0
  71. package/dist/src/core/controller-loop.d.ts +7 -1
  72. package/dist/src/core/controller-loop.js +114 -23
  73. package/dist/src/core/controller-loop.js.map +1 -1
  74. package/dist/src/core/controller-turn.d.ts +14 -2
  75. package/dist/src/core/controller-turn.js +109 -40
  76. package/dist/src/core/controller-turn.js.map +1 -1
  77. package/dist/src/core/controller-types.d.ts +2 -0
  78. package/dist/src/core/conversation-url.d.ts +3 -0
  79. package/dist/src/core/conversation-url.js +34 -0
  80. package/dist/src/core/conversation-url.js.map +1 -0
  81. package/dist/src/core/run-status.d.ts +9 -2
  82. package/dist/src/core/run-status.js +38 -25
  83. package/dist/src/core/run-status.js.map +1 -1
  84. package/dist/src/core/state-machine.d.ts +21 -1
  85. package/dist/src/core/state-machine.js +138 -13
  86. package/dist/src/core/state-machine.js.map +1 -1
  87. package/dist/src/core/timing.d.ts +9 -0
  88. package/dist/src/core/timing.js +22 -0
  89. package/dist/src/core/timing.js.map +1 -0
  90. package/dist/src/diagnostics/run-doctor.d.ts +22 -0
  91. package/dist/src/diagnostics/run-doctor.js +197 -0
  92. package/dist/src/diagnostics/run-doctor.js.map +1 -0
  93. package/dist/src/jobs/status.d.ts +5 -2
  94. package/dist/src/jobs/status.js +172 -12
  95. package/dist/src/jobs/status.js.map +1 -1
  96. package/dist/src/jobs/supervisor.js +57 -8
  97. package/dist/src/jobs/supervisor.js.map +1 -1
  98. package/dist/src/observation/run-handoff.d.ts +86 -0
  99. package/dist/src/observation/run-handoff.js +309 -0
  100. package/dist/src/observation/run-handoff.js.map +1 -0
  101. package/dist/src/observation/run-timeline.d.ts +32 -0
  102. package/dist/src/observation/run-timeline.js +278 -0
  103. package/dist/src/observation/run-timeline.js.map +1 -0
  104. package/dist/src/observation/run-watch.d.ts +15 -0
  105. package/dist/src/observation/run-watch.js +82 -0
  106. package/dist/src/observation/run-watch.js.map +1 -0
  107. package/dist/src/protocol/limits.d.ts +3 -0
  108. package/dist/src/protocol/limits.js +4 -0
  109. package/dist/src/protocol/limits.js.map +1 -0
  110. package/dist/src/protocol/lint-command.d.ts +24 -0
  111. package/dist/src/protocol/lint-command.js +210 -0
  112. package/dist/src/protocol/lint-command.js.map +1 -0
  113. package/dist/src/protocol/parse-command.js +4 -0
  114. package/dist/src/protocol/parse-command.js.map +1 -1
  115. package/dist/src/protocol/types.d.ts +12 -0
  116. package/dist/src/protocol/validate-command.js +76 -3
  117. package/dist/src/protocol/validate-command.js.map +1 -1
  118. package/dist/src/router/config-loader.js +23 -2
  119. package/dist/src/router/config-loader.js.map +1 -1
  120. package/dist/src/router/resolver.js +8 -3
  121. package/dist/src/router/resolver.js.map +1 -1
  122. package/dist/src/runners/process-runner.js +55 -12
  123. package/dist/src/runners/process-runner.js.map +1 -1
  124. package/dist/src/runners/runner-adapter.d.ts +2 -0
  125. package/dist/src/runners/runner-adapter.js.map +1 -1
  126. package/dist/src/state/atomic-write.d.ts +6 -0
  127. package/dist/src/state/atomic-write.js +43 -2
  128. package/dist/src/state/atomic-write.js.map +1 -1
  129. package/dist/src/state/cancellation.js +38 -4
  130. package/dist/src/state/cancellation.js.map +1 -1
  131. package/dist/src/state/event-log.js +5 -4
  132. package/dist/src/state/event-log.js.map +1 -1
  133. package/dist/src/state/private-directory.d.ts +5 -0
  134. package/dist/src/state/private-directory.js +37 -0
  135. package/dist/src/state/private-directory.js.map +1 -0
  136. package/dist/src/state/runtime-lease.js +19 -39
  137. package/dist/src/state/runtime-lease.js.map +1 -1
  138. package/dist/src/state/runtime-record-validation.d.ts +6 -0
  139. package/dist/src/state/runtime-record-validation.js +44 -0
  140. package/dist/src/state/runtime-record-validation.js.map +1 -0
  141. package/dist/src/state/runtime-retirement.js +58 -18
  142. package/dist/src/state/runtime-retirement.js.map +1 -1
  143. package/dist/src/state/runtime-takeover-intent.js +2 -2
  144. package/dist/src/state/runtime-takeover-intent.js.map +1 -1
  145. package/dist/src/state/store.d.ts +1 -0
  146. package/dist/src/state/store.js +12 -6
  147. package/dist/src/state/store.js.map +1 -1
  148. package/dist/src/version.d.ts +1 -1
  149. package/dist/src/version.js +1 -1
  150. package/docs/architecture.md +4 -4
  151. package/docs/compatibility.md +1 -1
  152. package/docs/controller-protocol.md +38 -7
  153. package/docs/experiments/protocol-lint.md +40 -0
  154. package/docs/experiments/run-doctor.md +39 -0
  155. package/docs/experiments/run-handoff.md +39 -0
  156. package/docs/experiments/run-timeline.md +35 -0
  157. package/docs/experiments/run-watch.md +31 -0
  158. package/docs/runner-contract.md +4 -3
  159. package/docs/state-and-recovery.md +15 -5
  160. package/package.json +1 -1
  161. package/schemas/controller-command.schema.json +89 -4
  162. package/skills/cueline/SKILL.md +13 -7
package/dist/src/api.js CHANGED
@@ -1,17 +1,23 @@
1
+ import path from "node:path";
1
2
  import { fileURLToPath } from "node:url";
2
3
  import { confirmManualControllerSubmission } from "./api-controller-handoff.js";
4
+ import { verifyCueLineRun } from "./api-run-verification.js";
3
5
  import { claimCueLineCallerJob, heartbeatCueLineCallerJob, reconcileExpiredCallerWorkClaims, releaseCueLineCallerJob, startCueLineCallerJob, } from "./api-caller-work.js";
4
6
  import { isTerminalRun, reconcileCueLineRuntime, terminalResult, } from "./api-runtime-lifecycle.js";
5
7
  import { createCodexIabAdapter } from "./browser/codex-iab/chatgpt-client.js";
6
- import { continueControllerLoop, createControllerRun, runControllerLoop, } from "./core/controller-loop.js";
8
+ import { probeCodexIab } from "./browser/codex-iab/probe.js";
9
+ import { continueControllerLoop, createControllerRun, runControllerLoop, validateControllerRuntimeOptions, } from "./core/controller-loop.js";
10
+ import { controllerConversationArchiveNeedsRecovery } from "./core/controller-conversation-archive.js";
11
+ import { sameChatGptConversationUrl } from "./core/conversation-url.js";
7
12
  import { CueLineError } from "./core/errors.js";
8
13
  import { loadPersistedRunState, loadPersistedRunStore, } from "./core/persisted-run.js";
9
14
  import { runtimeCwd, runtimeEnvironment } from "./core/runtime.js";
15
+ import { validatedTimerDelay } from "./core/timing.js";
10
16
  import { assertRunCanContinue, isSafeStaleCallerObservationRecovery, } from "./core/run-status.js";
11
17
  import { JobStatusStore } from "./jobs/status.js";
12
18
  import { JobSupervisor } from "./jobs/supervisor.js";
13
19
  import { executableAvailability } from "./router/availability.js";
14
- import { loadRoutingConfig } from "./router/config-loader.js";
20
+ import { loadRoutingConfig, parseRoutingConfig } from "./router/config-loader.js";
15
21
  import { materializeRunnerSpec } from "./router/materialize.js";
16
22
  import { resolveRoute, validateRouteReference } from "./router/resolver.js";
17
23
  import { ProcessRunner } from "./runners/process-runner.js";
@@ -30,18 +36,10 @@ export function defaultRoutingConfigPath() {
30
36
  export function routingConfigPath(environment = runtimeEnvironment(), explicitPath) {
31
37
  return explicitPath ?? environment.CUELINE_CONFIG ?? defaultRoutingConfigPath();
32
38
  }
33
- function normalizedConversationUrl(value) {
34
- try {
35
- const parsed = new URL(value);
36
- return `${parsed.origin}${parsed.pathname}`;
37
- }
38
- catch {
39
- return value;
40
- }
41
- }
42
39
  async function resolvedRoutingConfig(options, environment) {
43
- return (options.routingConfig ??
44
- (await loadRoutingConfig(routingConfigPath(environment, options.routingConfigPath))));
40
+ return options.routingConfig === undefined
41
+ ? loadRoutingConfig(routingConfigPath(environment, options.routingConfigPath))
42
+ : parseRoutingConfig(options.routingConfig);
45
43
  }
46
44
  function registryFor(config) {
47
45
  const executables = new Set();
@@ -69,12 +67,13 @@ function routingInstruction(config, availability, executor) {
69
67
  .map((candidate) => candidate.id);
70
68
  return `${name} [${candidates.length > 0 ? candidates.join(", ") : "unavailable"}]`;
71
69
  });
72
- return `Available routing lanes: ${lanes.join("; ")}. Use only a listed lane. Select an optional candidate with the field runner; never use runner_id or place a runner ID in lane.`;
70
+ return `Available routing lanes: ${lanes.join("; ")}. Use only a listed lane. Select an optional candidate with the field runner; never use runner_id or place a runner ID in lane. If you provide workdir, it must be an absolute path; omit it to use the workspace bound by the local runtime.`;
73
71
  }
74
72
  async function prepareRuntime(options, persistedConversationUrl, persistedExecutor) {
75
73
  const environment = options.environment ?? runtimeEnvironment();
76
74
  const home = options.home ?? defaultCueLineHome(environment);
77
- const cwd = options.cwd ?? runtimeCwd();
75
+ const cwd = path.resolve(options.cwd ?? runtimeCwd());
76
+ const executor = persistedExecutor ?? options.executor ?? "caller";
78
77
  const config = await resolvedRoutingConfig(options, environment);
79
78
  const availability = executableAvailability(environment, cwd);
80
79
  const registry = registryFor(config);
@@ -93,9 +92,18 @@ async function prepareRuntime(options, persistedConversationUrl, persistedExecut
93
92
  jobSupervisor,
94
93
  validateJobSpec(job) {
95
94
  validateRouteReference(job.lane, config, job.runner);
95
+ if (executor === "process") {
96
+ if (job.workdir !== undefined && !path.isAbsolute(job.workdir)) {
97
+ throw new CueLineError("PROCESS_WORKDIR_ABSOLUTE_REQUIRED", "Process jobs must use an absolute workdir; omit workdir to bind the run's current workspace.");
98
+ }
99
+ job.workdir = path.resolve(job.workdir ?? cwd);
100
+ }
96
101
  },
97
102
  resolveRunnerSpec(jobId, job) {
98
- const route = resolveRoute(job.lane, config, availability, job.runner);
103
+ const jobAvailability = job.workdir === undefined || job.workdir === cwd
104
+ ? availability
105
+ : executableAvailability(environment, job.workdir);
106
+ const route = resolveRoute(job.lane, config, jobAvailability, job.runner);
99
107
  return materializeRunnerSpec(jobId, job, route, {
100
108
  cwd,
101
109
  ...(options.defaultTimeoutMs === undefined
@@ -104,12 +112,20 @@ async function prepareRuntime(options, persistedConversationUrl, persistedExecut
104
112
  });
105
113
  },
106
114
  controllerInstructions: [
107
- routingInstruction(config, availability, persistedExecutor ?? options.executor ?? "caller"),
115
+ routingInstruction(config, availability, executor),
108
116
  ],
109
117
  ...(conversationUrl === undefined ? {} : { conversationUrl }),
110
118
  home,
111
119
  };
112
120
  }
121
+ function validateDefaultProcessTimeout(options) {
122
+ if (options.defaultTimeoutMs === undefined)
123
+ return;
124
+ validatedTimerDelay(options.defaultTimeoutMs, {
125
+ code: "PROCESS_TIMEOUT_INVALID",
126
+ name: "defaultTimeoutMs",
127
+ });
128
+ }
113
129
  export async function startCueLineRun(options) {
114
130
  assertNotNested(options.environment ?? runtimeEnvironment());
115
131
  return createControllerRun({
@@ -121,11 +137,18 @@ export async function startCueLineRun(options) {
121
137
  ? {}
122
138
  : { allowProcessExecution: options.allowProcessExecution }),
123
139
  ...(options.maxRounds === undefined ? {} : { maxRounds: options.maxRounds }),
140
+ ...(options.archiveControllerConversationOnComplete === undefined
141
+ ? {}
142
+ : {
143
+ archiveControllerConversationOnComplete: options.archiveControllerConversationOnComplete,
144
+ }),
124
145
  ...(options.now === undefined ? {} : { now: options.now }),
125
146
  });
126
147
  }
127
148
  export async function runCueLine(options) {
128
149
  assertNotNested(options.environment ?? runtimeEnvironment());
150
+ validateControllerRuntimeOptions(options);
151
+ validateDefaultProcessTimeout(options);
129
152
  const runtime = await prepareRuntime(options);
130
153
  return runControllerLoop({
131
154
  request: options.request,
@@ -135,6 +158,11 @@ export async function runCueLine(options) {
135
158
  ...(options.allowProcessExecution === undefined
136
159
  ? {}
137
160
  : { allowProcessExecution: options.allowProcessExecution }),
161
+ ...(options.archiveControllerConversationOnComplete === undefined
162
+ ? {}
163
+ : {
164
+ archiveControllerConversationOnComplete: options.archiveControllerConversationOnComplete,
165
+ }),
138
166
  returnAfterControllerSubmission: (options.executor ?? "caller") === "caller",
139
167
  ...(options.maxRounds === undefined ? {} : { maxRounds: options.maxRounds }),
140
168
  ...(options.maxRepairAttempts === undefined
@@ -157,9 +185,40 @@ export async function runCueLine(options) {
157
185
  export async function continueCueLineRun(options) {
158
186
  const environment = options.environment ?? runtimeEnvironment();
159
187
  const home = options.home ?? defaultCueLineHome(environment);
188
+ if (options.manualSendConfirmed === true && options.reconcileRequestId === undefined) {
189
+ throw new CueLineError("CONTROLLER_RECONCILIATION_REQUEST_REQUIRED", "manualSendConfirmed requires the exact reconcileRequestId.");
190
+ }
191
+ let state = await loadPersistedRunState(home, options.runId);
192
+ if (options.archiveControllerConversationOnComplete !== undefined &&
193
+ options.archiveControllerConversationOnComplete !==
194
+ (state.controllerConversationArchive?.enabled ?? false)) {
195
+ throw new CueLineError("CONTROLLER_CONVERSATION_ARCHIVE_POLICY_MISMATCH", `Run '${options.runId}' has a different durable controller conversation archive policy.`);
196
+ }
197
+ if (options.conversationUrl !== undefined &&
198
+ state.conversationUrl !== null &&
199
+ !sameChatGptConversationUrl(options.conversationUrl, state.conversationUrl)) {
200
+ throw new CueLineError("CONTROLLER_RECONCILIATION_CONVERSATION_MISMATCH", `Run '${options.runId}' is already bound to a different ChatGPT conversation.`);
201
+ }
202
+ let recoverControllerArchive = controllerConversationArchiveNeedsRecovery(state);
203
+ if (isTerminalRun(state) &&
204
+ !recoverControllerArchive &&
205
+ options.manualSendConfirmed !== true) {
206
+ return terminalResult(state);
207
+ }
208
+ let preparedRuntime;
160
209
  if (options.manualSendConfirmed === true) {
161
- if (options.reconcileRequestId === undefined) {
162
- throw new CueLineError("CONTROLLER_RECONCILIATION_REQUEST_REQUIRED", "manualSendConfirmed requires the exact reconcileRequestId.");
210
+ assertNotNested(environment);
211
+ validateControllerRuntimeOptions(options);
212
+ validateDefaultProcessTimeout(options);
213
+ if (options.executor !== undefined && options.executor !== state.executor) {
214
+ throw new CueLineError("RUN_EXECUTOR_MISMATCH", `Run '${options.runId}' uses executor '${state.executor}', not '${options.executor}'.`);
215
+ }
216
+ if (state.executor === "process" &&
217
+ (!state.allowProcessExecution || options.allowProcessExecution !== true)) {
218
+ throw new CueLineError("PROCESS_EXECUTION_NOT_AUTHORIZED", "Continuing a process run requires allowProcessExecution=true in addition to its persisted authorization.");
219
+ }
220
+ if (!isTerminalRun(state)) {
221
+ preparedRuntime = await prepareRuntime(options, state.conversationUrl ?? undefined, state.executor);
163
222
  }
164
223
  await confirmManualControllerSubmission(options.runId, {
165
224
  home,
@@ -168,15 +227,10 @@ export async function continueCueLineRun(options) {
168
227
  ? {}
169
228
  : { conversationUrl: options.conversationUrl }),
170
229
  });
230
+ state = await loadPersistedRunState(home, options.runId);
231
+ recoverControllerArchive = controllerConversationArchiveNeedsRecovery(state);
171
232
  }
172
- let state = await loadPersistedRunState(home, options.runId);
173
- if (options.conversationUrl !== undefined &&
174
- state.conversationUrl !== null &&
175
- normalizedConversationUrl(options.conversationUrl) !==
176
- normalizedConversationUrl(state.conversationUrl)) {
177
- throw new CueLineError("CONTROLLER_RECONCILIATION_CONVERSATION_MISMATCH", `Run '${options.runId}' is already bound to a different ChatGPT conversation.`);
178
- }
179
- if (isTerminalRun(state)) {
233
+ if (isTerminalRun(state) && !recoverControllerArchive) {
180
234
  return terminalResult(state);
181
235
  }
182
236
  let runtime = await readRuntimeLease(home, options.runId, {
@@ -235,23 +289,30 @@ export async function continueCueLineRun(options) {
235
289
  });
236
290
  }
237
291
  const cancellation = await readCancellationObservation(home, options.runId);
238
- if (!isSafeStaleCallerObservationRecovery(state, runtime, cancellation)) {
292
+ if (!recoverControllerArchive &&
293
+ !isSafeStaleCallerObservationRecovery(state, runtime, cancellation)) {
239
294
  assertRunCanContinue(state, runtime, cancellation);
240
295
  }
241
- assertNotNested(environment);
242
- if (options.executor !== undefined && options.executor !== state.executor) {
243
- throw new CueLineError("RUN_EXECUTOR_MISMATCH", `Run '${options.runId}' uses executor '${state.executor}', not '${options.executor}'.`);
244
- }
245
- if (state.executor === "process" &&
246
- (!state.allowProcessExecution || options.allowProcessExecution !== true)) {
247
- throw new CueLineError("PROCESS_EXECUTION_NOT_AUTHORIZED", "Continuing a process run requires allowProcessExecution=true in addition to its persisted authorization.");
296
+ if (preparedRuntime === undefined) {
297
+ assertNotNested(environment);
298
+ if (options.executor !== undefined && options.executor !== state.executor) {
299
+ throw new CueLineError("RUN_EXECUTOR_MISMATCH", `Run '${options.runId}' uses executor '${state.executor}', not '${options.executor}'.`);
300
+ }
301
+ if (!recoverControllerArchive &&
302
+ state.executor === "process" &&
303
+ (!state.allowProcessExecution || options.allowProcessExecution !== true)) {
304
+ throw new CueLineError("PROCESS_EXECUTION_NOT_AUTHORIZED", "Continuing a process run requires allowProcessExecution=true in addition to its persisted authorization.");
305
+ }
306
+ validateControllerRuntimeOptions(options);
307
+ validateDefaultProcessTimeout(options);
308
+ preparedRuntime = await prepareRuntime(options, state.conversationUrl ?? undefined, state.executor);
248
309
  }
249
- const preparedRuntime = await prepareRuntime(options, state.conversationUrl ?? undefined, state.executor);
250
310
  return continueControllerLoop({
251
311
  runId: options.runId,
252
312
  ...preparedRuntime,
253
313
  executor: state.executor,
254
314
  ...(state.executor === "process" ? { allowProcessExecution: true } : {}),
315
+ archiveControllerConversationOnComplete: state.controllerConversationArchive?.enabled === true,
255
316
  returnAfterControllerSubmission: state.executor === "caller",
256
317
  ...(options.reconcileRequestId === undefined
257
318
  ? {}
@@ -279,7 +340,13 @@ export async function continueCueLineRun(options) {
279
340
  }
280
341
  export { confirmManualControllerSubmission, submitCueLineCallerJobResult, } from "./api-controller-handoff.js";
281
342
  export { claimCueLineCallerJob, heartbeatCueLineCallerJob, releaseCueLineCallerJob, startCueLineCallerJob, };
282
- export { cancelCueLineJob, cancelCueLineRun, loadCueLineRunState, loadCueLineRunStatus, reconcileCueLineRuntime, takeoverCueLineRuntime, } from "./api-runtime-lifecycle.js";
283
- export { createCodexIabAdapter };
343
+ export { cancelCueLineJob, cancelCueLineRun, listCueLineRuns, loadCueLineRunState, loadCueLineRunStatus, reconcileCueLineRuntime, takeoverCueLineRuntime, } from "./api-runtime-lifecycle.js";
344
+ export { diagnoseCueLineRun, diagnoseCueLineRunStatus, } from "./diagnostics/run-doctor.js";
345
+ export { verifyCueLineRun };
346
+ export { createCodexIabAdapter, probeCodexIab };
347
+ export { waitForCueLineRunChange } from "./observation/run-watch.js";
348
+ export { lintControllerCommandText } from "./protocol/lint-command.js";
349
+ export { buildCueLineRunHandoff, createCueLineRunHandoff, renderCueLineRunHandoffMarkdown, } from "./observation/run-handoff.js";
350
+ export { buildCueLineRunTimeline, loadCueLineRunTimeline, } from "./observation/run-timeline.js";
284
351
  export { CUELINE_VERSION } from "./version.js";
285
352
  //# sourceMappingURL=api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,19 @@ export interface BrowserTurnCheckpoint {
33
33
  export interface BrowserTurnHooks {
34
34
  onCheckpoint?: (checkpoint: BrowserTurnCheckpoint) => Promise<void>;
35
35
  }
36
+ export interface BrowserConversationArchiveInput {
37
+ conversationUrl: string;
38
+ signal?: AbortSignal;
39
+ }
40
+ export interface BrowserConversationArchiveEvidence {
41
+ conversationUrl: string;
42
+ proof: "conversation_url_changed";
43
+ postActionUrl: string;
44
+ }
45
+ export interface BrowserConversationArchiveHooks {
46
+ /** Durable write-ahead checkpoint that must finish before the one Archive click. */
47
+ onBeforeArchiveClick?: () => Promise<void>;
48
+ }
36
49
  export interface BrowserAdapter {
37
50
  /**
38
51
  * Declares that `controller_turn_requested` is durably recorded before any
@@ -45,4 +58,6 @@ export interface BrowserAdapter {
45
58
  observeTurn?(input: BrowserTurnInput): Promise<ControllerTurn | undefined>;
46
59
  sendTurn(input: BrowserTurnInput, hooks?: BrowserTurnHooks): Promise<ControllerTurn>;
47
60
  recoverTurn?(input: BrowserTurnInput): Promise<ControllerTurn>;
61
+ /** Archive one exact completed controller conversation. Implementations must never retry the archive click. */
62
+ archiveConversation?(input: BrowserConversationArchiveInput, hooks?: BrowserConversationArchiveHooks): Promise<BrowserConversationArchiveEvidence>;
48
63
  }
@@ -15,6 +15,19 @@ export interface PageComposerState {
15
15
  attachmentCount: number;
16
16
  sendButtonEnabled: boolean;
17
17
  }
18
+ export interface PageProbeState {
19
+ pageUrl: string;
20
+ isAnswering: boolean;
21
+ assistantMessageCount: number;
22
+ lastMessageRole: "assistant" | "user" | null;
23
+ assistantModelSlug: string | null;
24
+ selectedModelLabel: string | null;
25
+ modelLabelCount: number;
26
+ composerState: "missing" | "empty" | "inline_present" | "attachment_ready";
27
+ inlineTextLength: number;
28
+ attachmentCount: number;
29
+ sendButtonState: "missing" | "disabled" | "enabled" | "ambiguous";
30
+ }
18
31
  export interface IabLocator {
19
32
  count(): Promise<number>;
20
33
  fill(value: string, options?: Record<string, unknown>): Promise<void>;
@@ -25,6 +38,8 @@ export interface IabLocator {
25
38
  state: "visible";
26
39
  timeoutMs: number;
27
40
  }): Promise<void>;
41
+ isVisible?(): Promise<boolean>;
42
+ isEnabled?(): Promise<boolean>;
28
43
  }
29
44
  export interface IabPlaywright {
30
45
  getByRole(role: string, query: {
@@ -83,4 +98,9 @@ declare global {
83
98
  export declare function resolveIabBrowser(requested?: IabBrowser): Promise<IabBrowser>;
84
99
  export declare function readPageChatState(tab: IabTab): Promise<PageChatState>;
85
100
  export declare function readPageComposerState(tab: IabTab, expectedPrompt: string, sendButtonNames: readonly string[]): Promise<PageComposerState>;
101
+ /**
102
+ * Read a redacted diagnostic snapshot. This evaluator intentionally returns no
103
+ * prompt text, message text, attachment names, cookies, or storage values.
104
+ */
105
+ export declare function readPageProbeState(tab: IabTab): Promise<PageProbeState>;
86
106
  export {};
@@ -25,12 +25,12 @@ export async function readPageChatState(tab) {
25
25
  return tab.playwright.evaluate(() => {
26
26
  const buttons = Array.from(document.querySelectorAll("button"));
27
27
  const isAnswering = buttons.some((button) => {
28
- const label = [button.getAttribute("aria-label"), button.textContent]
29
- .filter(Boolean)
30
- .join(" ")
28
+ const ariaLabel = button.getAttribute("aria-label")?.trim();
29
+ const label = (ariaLabel || button.textContent || "")
31
30
  .replace(/\s+/g, " ")
32
31
  .trim();
33
- if (!/stop/i.test(label) || !/(answer|generat|respond|stream|thinking)/i.test(label)) {
32
+ if (!/(stop|停止|中止|중지|정지)/i.test(label) ||
33
+ !/(answer|generat|respond|response|stream|thinking|回答|回覆|作答|生成|產生|思考|応答|생성|답변|응답)/i.test(label)) {
34
34
  return false;
35
35
  }
36
36
  if (button.disabled ||
@@ -102,8 +102,8 @@ export async function readPageComposerState(tab, expectedPrompt, sendButtonNames
102
102
  const normalize = (value) => String(value ?? "")
103
103
  .replace(/\u00a0/g, " ")
104
104
  .replace(/\r\n?/g, "\n")
105
- .replace(/[ \t]*\n[ \t]*/g, "\n")
106
- .replace(/\n{2,}/g, "\n")
105
+ .replace(/[ \t]+\n/g, "\n")
106
+ .replace(/\n(?:[ \t]*\n)+/g, "\n")
107
107
  .trim();
108
108
  const composer = document.querySelector('#prompt-textarea[contenteditable="true"]');
109
109
  const inlineText = normalize(composer && "innerText" in composer
@@ -125,9 +125,46 @@ export async function readPageComposerState(tab, expectedPrompt, sendButtonNames
125
125
  const sendButtonEnabled = Array.from(root.querySelectorAll("button")).some((element) => {
126
126
  const button = element;
127
127
  const label = normalize(button.getAttribute("aria-label") ?? button.innerText ?? button.textContent);
128
- return (sendButtonNames.includes(label) &&
129
- !button.disabled &&
130
- button.getAttribute("aria-disabled") !== "true");
128
+ const hiddenAncestor = typeof button.closest === "function" &&
129
+ button.closest('[hidden], [aria-hidden="true"], [inert]') !== null;
130
+ if (!sendButtonNames.includes(label) ||
131
+ button.disabled ||
132
+ button.hidden ||
133
+ button.getAttribute("aria-disabled") === "true" ||
134
+ button.getAttribute("aria-hidden") === "true" ||
135
+ hiddenAncestor) {
136
+ return false;
137
+ }
138
+ const checkVisibility = button.checkVisibility;
139
+ if (typeof checkVisibility === "function") {
140
+ try {
141
+ if (!checkVisibility.call(button, {
142
+ checkOpacity: true,
143
+ checkVisibilityCSS: true,
144
+ })) {
145
+ return false;
146
+ }
147
+ }
148
+ catch {
149
+ // Explicit style and geometry checks below remain the fallback.
150
+ }
151
+ }
152
+ if (typeof getComputedStyle === "function") {
153
+ const style = getComputedStyle(button);
154
+ if (style.display === "none" ||
155
+ style.visibility === "hidden" ||
156
+ style.visibility === "collapse" ||
157
+ style.pointerEvents === "none" ||
158
+ Number(style.opacity) === 0) {
159
+ return false;
160
+ }
161
+ }
162
+ if (typeof button.getBoundingClientRect === "function") {
163
+ const bounds = button.getBoundingClientRect();
164
+ if (bounds.width <= 0 || bounds.height <= 0)
165
+ return false;
166
+ }
167
+ return typeof button.getClientRects !== "function" || button.getClientRects().length > 0;
131
168
  });
132
169
  const attachmentCount = attachmentElements.size;
133
170
  const state = inlineText !== "" && inlineText === expected
@@ -147,4 +184,131 @@ export async function readPageComposerState(tab, expectedPrompt, sendButtonNames
147
184
  sendButtonNames: [...sendButtonNames],
148
185
  });
149
186
  }
187
+ /**
188
+ * Read a redacted diagnostic snapshot. This evaluator intentionally returns no
189
+ * prompt text, message text, attachment names, cookies, or storage values.
190
+ */
191
+ export async function readPageProbeState(tab) {
192
+ return tab.playwright.evaluate(({ diagnosticProbe: _diagnosticProbe }) => {
193
+ const normalize = (value) => String(value ?? "")
194
+ .replace(/\u00a0/g, " ")
195
+ .replace(/\r\n?/g, "\n")
196
+ .replace(/[ \t]+\n/g, "\n")
197
+ .replace(/\n(?:[ \t]*\n)+/g, "\n")
198
+ .trim();
199
+ const isVisible = (element) => {
200
+ const htmlElement = element;
201
+ if (htmlElement.hidden ||
202
+ element.getAttribute("aria-hidden") === "true" ||
203
+ element.closest('[hidden], [aria-hidden="true"], [inert]') !== null) {
204
+ return false;
205
+ }
206
+ if (typeof htmlElement.checkVisibility === "function") {
207
+ try {
208
+ if (!htmlElement.checkVisibility({
209
+ checkOpacity: true,
210
+ checkVisibilityCSS: true,
211
+ })) {
212
+ return false;
213
+ }
214
+ }
215
+ catch {
216
+ // Fall through to explicit style and geometry checks.
217
+ }
218
+ }
219
+ const style = getComputedStyle(element);
220
+ if (style.display === "none" ||
221
+ style.visibility === "hidden" ||
222
+ style.visibility === "collapse" ||
223
+ style.pointerEvents === "none" ||
224
+ Number(style.opacity) === 0) {
225
+ return false;
226
+ }
227
+ const bounds = element.getBoundingClientRect();
228
+ return bounds.width > 0 && bounds.height > 0 && element.getClientRects().length > 0;
229
+ };
230
+ const buttons = Array.from(document.querySelectorAll("button"));
231
+ const isAnswering = buttons.some((element) => {
232
+ const button = element;
233
+ const ariaLabel = normalize(button.getAttribute("aria-label"));
234
+ const label = ariaLabel || normalize(button.textContent);
235
+ return (/(stop|停止|中止|중지|정지)/i.test(label) &&
236
+ /(answer|generat|respond|response|stream|thinking|回答|回覆|作答|生成|產生|思考|応答|생성|답변|응답)/i.test(label) &&
237
+ !button.disabled &&
238
+ button.getAttribute("aria-disabled") !== "true" &&
239
+ isVisible(button));
240
+ });
241
+ const messages = Array.from(document.querySelectorAll("[data-message-author-role]"));
242
+ const assistantMessages = messages.filter((message) => message.getAttribute("data-message-author-role") === "assistant");
243
+ const lastRole = messages.at(-1)?.getAttribute("data-message-author-role");
244
+ const lastMessageRole = lastRole === "assistant" || lastRole === "user" ? lastRole : null;
245
+ const assistantModelSlug = assistantMessages.at(-1)?.getAttribute("data-message-model-slug") ?? null;
246
+ const knownModel = /^(?:Instant(?:\s+\d+(?:\.\d+)*)?|Medium|High|Extra High|Thinking|Auto|Pro(?:\s+(?:Standard|Extended))?)$/i;
247
+ const modelLabels = Array.from(document.querySelectorAll("button.__composer-pill"))
248
+ .filter(isVisible)
249
+ .map((element) => normalize(element.getAttribute("aria-label") ??
250
+ element.innerText ??
251
+ element.textContent))
252
+ .filter((label) => knownModel.test(label));
253
+ const selectedModelLabel = modelLabels.length === 1 ? modelLabels[0] : null;
254
+ const composer = document.querySelector('#prompt-textarea[contenteditable="true"]');
255
+ const inlineText = normalize(composer && "innerText" in composer
256
+ ? composer.innerText
257
+ : composer?.textContent);
258
+ const root = composer?.closest("form") ?? composer?.parentElement?.parentElement ?? document;
259
+ const attachmentElements = new Set();
260
+ for (const element of Array.from(root.querySelectorAll('[data-testid="file-upload-preview"], [data-testid*="attachment"][data-testid*="preview"], [data-testid*="file"][data-testid*="preview"], [class*="attachment"][class*="pill"], [class*="file"][class*="pill"], button[aria-label]'))) {
261
+ const label = normalize(element.getAttribute("aria-label"));
262
+ const testId = normalize(element.getAttribute("data-testid"));
263
+ const classes = normalize(element.getAttribute("class"));
264
+ if (/(?:remove|delete).*(?:file|attachment)|(?:file|attachment).*(?:remove|delete)|移除.*(?:檔案|附件)|刪除.*(?:檔案|附件)/i.test(label) ||
265
+ /(?:file-upload-preview|attachment.*preview|file.*preview)/i.test(testId) ||
266
+ /(?:attachment|file).*(?:pill|chip)|(?:pill|chip).*(?:attachment|file)/i.test(classes)) {
267
+ attachmentElements.add(element);
268
+ }
269
+ }
270
+ const attachmentCount = attachmentElements.size;
271
+ const composerState = composer === null
272
+ ? "missing"
273
+ : attachmentCount > 0
274
+ ? "attachment_ready"
275
+ : inlineText.length > 0
276
+ ? "inline_present"
277
+ : "empty";
278
+ const sendButtonNames = new Set([
279
+ "Send prompt",
280
+ "Send message",
281
+ "傳送提示",
282
+ "傳送訊息",
283
+ "送出提示",
284
+ "送出訊息",
285
+ ]);
286
+ const sendButtons = Array.from(root.querySelectorAll("button")).filter((element) => {
287
+ const label = normalize(element.getAttribute("aria-label") ??
288
+ element.innerText ??
289
+ element.textContent);
290
+ return sendButtonNames.has(label) && isVisible(element);
291
+ });
292
+ const sendButtonState = sendButtons.length === 0
293
+ ? "missing"
294
+ : sendButtons.length > 1
295
+ ? "ambiguous"
296
+ : sendButtons[0].disabled || sendButtons[0].getAttribute("aria-disabled") === "true"
297
+ ? "disabled"
298
+ : "enabled";
299
+ return {
300
+ pageUrl: window.location.href,
301
+ isAnswering,
302
+ assistantMessageCount: assistantMessages.length,
303
+ lastMessageRole,
304
+ assistantModelSlug,
305
+ selectedModelLabel,
306
+ modelLabelCount: modelLabels.length,
307
+ composerState,
308
+ inlineTextLength: inlineText.length,
309
+ attachmentCount,
310
+ sendButtonState,
311
+ };
312
+ }, { diagnosticProbe: true });
313
+ }
150
314
  //# sourceMappingURL=bootstrap.js.map