@volter/supercode-teams 0.3.183 → 0.3.184
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.
- package/package.json +1 -1
- package/terminal-mail.mjs +17 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volter/supercode-teams",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.184",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A machine daemon serving this machine's doors, and a local or remote Teams server for shared session discovery, OpenTelemetry ingestion and access to enrolled machines.",
|
|
6
6
|
"license": "MIT",
|
package/terminal-mail.mjs
CHANGED
|
@@ -264,6 +264,23 @@ export class TerminalMailbox {
|
|
|
264
264
|
batch.error = 'codex-update-prompt: delivery retained; restart Codex with check_for_update_on_startup=false';
|
|
265
265
|
this.save(); this.log({ delivered: false, queued: true, reason: batch.error, message_ids: batch.message_ids }); return;
|
|
266
266
|
}
|
|
267
|
+
if (batch.kind === 'codex' && batch.phase === 'pasted' && batch.enters >= 3 && Date.now() - batch.last_enter >= 5000) {
|
|
268
|
+
// Every Enter is spent and the transcript, read above from the paste's own offset, holds no such message. A
|
|
269
|
+
// composer that reads empty with no turn running holds neither the paste nor a turn that could still take it
|
|
270
|
+
// (Codex writes a message entered during a turn when that turn takes it or ends): this paste will never be
|
|
271
|
+
// confirmed, and left active it holds every later message behind it for good. It is refused, never pasted
|
|
272
|
+
// again, and the queue moves on. Read twice, then the transcript once more; a draft, a running turn or an
|
|
273
|
+
// unreadable screen leaves the batch waiting on its transcript.
|
|
274
|
+
let lost = true;
|
|
275
|
+
for (let check = 0; lost && check < 2; check++) {
|
|
276
|
+
const screen = await this.host.capture(this.session.id, { lines: 200, preserveEscapes: true });
|
|
277
|
+
lost = composerText(batch.kind, screen) === '' && !/\besc to (?:interrupt|cancel)\b/iu.test(screen);
|
|
278
|
+
if (lost && check === 0) await pause(200);
|
|
279
|
+
}
|
|
280
|
+
if (lost && !confirmed(batch)) {
|
|
281
|
+
await this.recordRefusal(batch, 'native transcript unconfirmed after Enter retries; composer empty'); return;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
267
284
|
if (batch.kind === 'claude-code' && batch.phase === 'prepared' && batch.expiresAt && Date.now() >= batch.expiresAt) {
|
|
268
285
|
await this.recordRefusal(batch, 'delivery deadline elapsed; no input pasted'); return;
|
|
269
286
|
}
|