@integrity-labs/agt-cli 0.28.518 → 0.28.519
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/dist/bin/agt.js +4 -4
- package/dist/{chunk-RDDUP6Z4.js → chunk-FRIAJDCT.js} +3 -3
- package/dist/{chunk-SSRYNA7T.js → chunk-XH3O62OZ.js} +54 -5
- package/dist/chunk-XH3O62OZ.js.map +1 -0
- package/dist/{claude-pair-runtime-4JSAVQLI.js → claude-pair-runtime-7SEXFLEZ.js} +2 -2
- package/dist/lib/manager-worker.js +10 -10
- package/dist/mcp/direct-chat-channel.js +53 -4
- package/dist/mcp/origami.js +53 -4
- package/dist/mcp/slack-channel.js +53 -4
- package/dist/mcp/telegram-channel.js +53 -4
- package/dist/{persistent-session-ZB5BXOWR.js → persistent-session-U4GCKL6C.js} +2 -2
- package/dist/{responsiveness-probe-4KU7FOTM.js → responsiveness-probe-G2CAGG6M.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-SSRYNA7T.js.map +0 -1
- /package/dist/{chunk-RDDUP6Z4.js.map → chunk-FRIAJDCT.js.map} +0 -0
- /package/dist/{claude-pair-runtime-4JSAVQLI.js.map → claude-pair-runtime-7SEXFLEZ.js.map} +0 -0
- /package/dist/{persistent-session-ZB5BXOWR.js.map → persistent-session-U4GCKL6C.js.map} +0 -0
- /package/dist/{responsiveness-probe-4KU7FOTM.js.map → responsiveness-probe-G2CAGG6M.js.map} +0 -0
|
@@ -100,7 +100,7 @@ async function spawnPairSession(session) {
|
|
|
100
100
|
return { ok: true };
|
|
101
101
|
} catch {
|
|
102
102
|
}
|
|
103
|
-
const { resolveClaudeBinary } = await import("./persistent-session-
|
|
103
|
+
const { resolveClaudeBinary } = await import("./persistent-session-U4GCKL6C.js");
|
|
104
104
|
const claudeBin = resolveClaudeBinary();
|
|
105
105
|
const pairEnv = {
|
|
106
106
|
...process.env,
|
|
@@ -373,4 +373,4 @@ export {
|
|
|
373
373
|
startClaudePair,
|
|
374
374
|
submitClaudePairCode
|
|
375
375
|
};
|
|
376
|
-
//# sourceMappingURL=claude-pair-runtime-
|
|
376
|
+
//# sourceMappingURL=claude-pair-runtime-7SEXFLEZ.js.map
|
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
safeWriteJsonAtomic,
|
|
54
54
|
setConfigHash,
|
|
55
55
|
tripClass
|
|
56
|
-
} from "../chunk-
|
|
56
|
+
} from "../chunk-FRIAJDCT.js";
|
|
57
57
|
import {
|
|
58
58
|
getProjectDir as getProjectDir2,
|
|
59
59
|
getReadyTasks,
|
|
@@ -177,7 +177,7 @@ import {
|
|
|
177
177
|
toOpencodeModel,
|
|
178
178
|
transcriptActivityAgeSeconds,
|
|
179
179
|
writeEgressAllowlist
|
|
180
|
-
} from "../chunk-
|
|
180
|
+
} from "../chunk-XH3O62OZ.js";
|
|
181
181
|
import {
|
|
182
182
|
reapOrphanChannelMcps
|
|
183
183
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -10106,7 +10106,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
10106
10106
|
var lastVersionCheckAt = 0;
|
|
10107
10107
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
10108
10108
|
var lastResponsivenessProbeAt = 0;
|
|
10109
|
-
var agtCliVersion = true ? "0.28.
|
|
10109
|
+
var agtCliVersion = true ? "0.28.519" : "dev";
|
|
10110
10110
|
function resolveBrewPath(execFileSync2) {
|
|
10111
10111
|
try {
|
|
10112
10112
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -11314,7 +11314,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
11314
11314
|
if (codeNames.length === 0) return;
|
|
11315
11315
|
void (async () => {
|
|
11316
11316
|
try {
|
|
11317
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
11317
|
+
const { collectDiagnostics } = await import("../persistent-session-U4GCKL6C.js");
|
|
11318
11318
|
await api.post("/host/heartbeat", {
|
|
11319
11319
|
host_id: hostId,
|
|
11320
11320
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor)
|
|
@@ -11421,7 +11421,7 @@ async function pollCycle() {
|
|
|
11421
11421
|
}
|
|
11422
11422
|
try {
|
|
11423
11423
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
11424
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
11424
|
+
const { collectDiagnostics } = await import("../persistent-session-U4GCKL6C.js");
|
|
11425
11425
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
11426
11426
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor) : void 0;
|
|
11427
11427
|
let tailscaleHostname;
|
|
@@ -11536,7 +11536,7 @@ async function pollCycle() {
|
|
|
11536
11536
|
collectResponsivenessProbes,
|
|
11537
11537
|
collectPanelessActivityProbes,
|
|
11538
11538
|
getResponsivenessIntervalMs
|
|
11539
|
-
} = await import("../responsiveness-probe-
|
|
11539
|
+
} = await import("../responsiveness-probe-G2CAGG6M.js");
|
|
11540
11540
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
11541
11541
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
11542
11542
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -11600,7 +11600,7 @@ async function pollCycle() {
|
|
|
11600
11600
|
collectResponsivenessProbes,
|
|
11601
11601
|
livePendingInboundOldestAgeSeconds,
|
|
11602
11602
|
parkPendingInbound
|
|
11603
|
-
} = await import("../responsiveness-probe-
|
|
11603
|
+
} = await import("../responsiveness-probe-G2CAGG6M.js");
|
|
11604
11604
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
11605
11605
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
11606
11606
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -15108,7 +15108,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
15108
15108
|
void api.post("/host/restart-ack", { host_id: hostId, agent_id: agentId, restart_requested_at: requestedAt }).catch((err) => log(`[restart-lane] ack failed for '${codeName}': ${err.message}`));
|
|
15109
15109
|
void (async () => {
|
|
15110
15110
|
try {
|
|
15111
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15111
|
+
const { collectDiagnostics } = await import("../persistent-session-U4GCKL6C.js");
|
|
15112
15112
|
await api.post("/host/heartbeat", {
|
|
15113
15113
|
host_id: hostId,
|
|
15114
15114
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
|
|
@@ -15158,7 +15158,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
15158
15158
|
}
|
|
15159
15159
|
try {
|
|
15160
15160
|
const hostId = await getHostId();
|
|
15161
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15161
|
+
const { collectDiagnostics } = await import("../persistent-session-U4GCKL6C.js");
|
|
15162
15162
|
await api.post("/host/heartbeat", {
|
|
15163
15163
|
host_id: hostId,
|
|
15164
15164
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
|
|
@@ -15676,7 +15676,7 @@ async function processClaudePairSessions(agents) {
|
|
|
15676
15676
|
killPairSession,
|
|
15677
15677
|
pairTmuxSession,
|
|
15678
15678
|
finalizeClaudePairOnboarding
|
|
15679
|
-
} = await import("../claude-pair-runtime-
|
|
15679
|
+
} = await import("../claude-pair-runtime-7SEXFLEZ.js");
|
|
15680
15680
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
15681
15681
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
15682
15682
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -32303,11 +32303,60 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32303
32303
|
e.preventDefault(); e.stopPropagation(); startEditTextNode(tn, el);
|
|
32304
32304
|
}
|
|
32305
32305
|
}, true);
|
|
32306
|
-
|
|
32306
|
+
// ENG-8500: while the inline editor is focused, the artefact's OWN keyboard
|
|
32307
|
+
// handlers must not see the keystroke.
|
|
32308
|
+
//
|
|
32309
|
+
// Decks ship as a single self-contained file with their own slide navigation
|
|
32310
|
+
// bound to space and the arrow keys, and that script is agent-authored content
|
|
32311
|
+
// we neither control nor can retro-patch - the published object is immutable,
|
|
32312
|
+
// so every deck already out there has its handler baked in. It also runs FIRST:
|
|
32313
|
+
// the bridge is appended after the artefact HTML (frame.srcdoc = html +
|
|
32314
|
+
// MARKUP_BRIDGE in publisher.ts), so the deck registers its listener before we
|
|
32315
|
+
// register ours.
|
|
32316
|
+
//
|
|
32317
|
+
// The consequence was not a keyboard annoyance, it was silent data corruption.
|
|
32318
|
+
// The deck's handler called preventDefault() on space, so the spaces a viewer
|
|
32319
|
+
// typed never reached the editor and words concatenated -
|
|
32320
|
+
// "albreakevenreached in June 2026" - with Save sitting right there. In English
|
|
32321
|
+
// prose a reader might catch it; in a number, a product name or a URL they
|
|
32322
|
+
// would not.
|
|
32323
|
+
//
|
|
32324
|
+
// Registration order cannot be won, so win on PHASE instead. The capture path
|
|
32325
|
+
// is window -> document -> ... -> target, so a capture listener on the window object
|
|
32326
|
+
// fires before any document-level or bubble-phase listener no matter when it
|
|
32327
|
+
// was registered. stopImmediatePropagation() then keeps the event from ever
|
|
32328
|
+
// reaching the deck.
|
|
32329
|
+
//
|
|
32330
|
+
// The one case this does not beat is an artefact that itself registers on
|
|
32331
|
+
// the window object with capture BEFORE the bridge loads. Deck templates use
|
|
32332
|
+
// document.addEventListener for keydown, so that is theoretical rather
|
|
32333
|
+
// than observed - but it is a real limit and worth knowing before someone
|
|
32334
|
+
// assumes this is airtight.
|
|
32335
|
+
//
|
|
32336
|
+
// Note what is deliberately NOT called for ordinary keys: preventDefault(). The
|
|
32337
|
+
// whole point is that space, arrows, Home/End and PageUp/PageDown do their
|
|
32338
|
+
// normal text-editing work. We suppress the artefact, not the browser.
|
|
32339
|
+
window.addEventListener('keydown', function(e){
|
|
32340
|
+
// Not editing: the artefact keeps its keyboard entirely. Slide navigation
|
|
32341
|
+
// must behave exactly as it does today (ENG-8500 AC2).
|
|
32307
32342
|
if(!editing) return;
|
|
32308
|
-
|
|
32309
|
-
|
|
32310
|
-
|
|
32343
|
+
// Editing, but the keystroke is going somewhere else (the viewer clicked
|
|
32344
|
+
// away, or is in the shell's own UI). Not ours to swallow.
|
|
32345
|
+
var t=e.target;
|
|
32346
|
+
var inEditor = t===editing || (editing.contains && t && t.nodeType && editing.contains(t));
|
|
32347
|
+
if(!inEditor) return;
|
|
32348
|
+
|
|
32349
|
+
// Escape cancels the edit; Enter commits. Both are deliberate terminal
|
|
32350
|
+
// actions rather than text input, so they DO preventDefault - Enter must not
|
|
32351
|
+
// also insert a newline into the field it is closing. Shift+Enter is left
|
|
32352
|
+
// alone as a genuine newline.
|
|
32353
|
+
if(e.key==='Escape'){ e.preventDefault(); e.stopImmediatePropagation(); endEdit(false); return; }
|
|
32354
|
+
if(e.key==='Enter' && !e.shiftKey){ e.preventDefault(); e.stopImmediatePropagation(); endEdit(true); return; }
|
|
32355
|
+
|
|
32356
|
+
// Everything else: let the browser handle it as text input, and stop the
|
|
32357
|
+
// artefact's own handlers from seeing it at all.
|
|
32358
|
+
e.stopImmediatePropagation();
|
|
32359
|
+
}, true);
|
|
32311
32360
|
|
|
32312
32361
|
document.addEventListener('mouseup', function(){
|
|
32313
32362
|
if(editing) return; // a selection inside the editor is for the cursor, not a comment
|
package/dist/mcp/origami.js
CHANGED
|
@@ -38641,11 +38641,60 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
38641
38641
|
e.preventDefault(); e.stopPropagation(); startEditTextNode(tn, el);
|
|
38642
38642
|
}
|
|
38643
38643
|
}, true);
|
|
38644
|
-
|
|
38644
|
+
// ENG-8500: while the inline editor is focused, the artefact's OWN keyboard
|
|
38645
|
+
// handlers must not see the keystroke.
|
|
38646
|
+
//
|
|
38647
|
+
// Decks ship as a single self-contained file with their own slide navigation
|
|
38648
|
+
// bound to space and the arrow keys, and that script is agent-authored content
|
|
38649
|
+
// we neither control nor can retro-patch - the published object is immutable,
|
|
38650
|
+
// so every deck already out there has its handler baked in. It also runs FIRST:
|
|
38651
|
+
// the bridge is appended after the artefact HTML (frame.srcdoc = html +
|
|
38652
|
+
// MARKUP_BRIDGE in publisher.ts), so the deck registers its listener before we
|
|
38653
|
+
// register ours.
|
|
38654
|
+
//
|
|
38655
|
+
// The consequence was not a keyboard annoyance, it was silent data corruption.
|
|
38656
|
+
// The deck's handler called preventDefault() on space, so the spaces a viewer
|
|
38657
|
+
// typed never reached the editor and words concatenated -
|
|
38658
|
+
// "albreakevenreached in June 2026" - with Save sitting right there. In English
|
|
38659
|
+
// prose a reader might catch it; in a number, a product name or a URL they
|
|
38660
|
+
// would not.
|
|
38661
|
+
//
|
|
38662
|
+
// Registration order cannot be won, so win on PHASE instead. The capture path
|
|
38663
|
+
// is window -> document -> ... -> target, so a capture listener on the window object
|
|
38664
|
+
// fires before any document-level or bubble-phase listener no matter when it
|
|
38665
|
+
// was registered. stopImmediatePropagation() then keeps the event from ever
|
|
38666
|
+
// reaching the deck.
|
|
38667
|
+
//
|
|
38668
|
+
// The one case this does not beat is an artefact that itself registers on
|
|
38669
|
+
// the window object with capture BEFORE the bridge loads. Deck templates use
|
|
38670
|
+
// document.addEventListener for keydown, so that is theoretical rather
|
|
38671
|
+
// than observed - but it is a real limit and worth knowing before someone
|
|
38672
|
+
// assumes this is airtight.
|
|
38673
|
+
//
|
|
38674
|
+
// Note what is deliberately NOT called for ordinary keys: preventDefault(). The
|
|
38675
|
+
// whole point is that space, arrows, Home/End and PageUp/PageDown do their
|
|
38676
|
+
// normal text-editing work. We suppress the artefact, not the browser.
|
|
38677
|
+
window.addEventListener('keydown', function(e){
|
|
38678
|
+
// Not editing: the artefact keeps its keyboard entirely. Slide navigation
|
|
38679
|
+
// must behave exactly as it does today (ENG-8500 AC2).
|
|
38645
38680
|
if(!editing) return;
|
|
38646
|
-
|
|
38647
|
-
|
|
38648
|
-
|
|
38681
|
+
// Editing, but the keystroke is going somewhere else (the viewer clicked
|
|
38682
|
+
// away, or is in the shell's own UI). Not ours to swallow.
|
|
38683
|
+
var t=e.target;
|
|
38684
|
+
var inEditor = t===editing || (editing.contains && t && t.nodeType && editing.contains(t));
|
|
38685
|
+
if(!inEditor) return;
|
|
38686
|
+
|
|
38687
|
+
// Escape cancels the edit; Enter commits. Both are deliberate terminal
|
|
38688
|
+
// actions rather than text input, so they DO preventDefault - Enter must not
|
|
38689
|
+
// also insert a newline into the field it is closing. Shift+Enter is left
|
|
38690
|
+
// alone as a genuine newline.
|
|
38691
|
+
if(e.key==='Escape'){ e.preventDefault(); e.stopImmediatePropagation(); endEdit(false); return; }
|
|
38692
|
+
if(e.key==='Enter' && !e.shiftKey){ e.preventDefault(); e.stopImmediatePropagation(); endEdit(true); return; }
|
|
38693
|
+
|
|
38694
|
+
// Everything else: let the browser handle it as text input, and stop the
|
|
38695
|
+
// artefact's own handlers from seeing it at all.
|
|
38696
|
+
e.stopImmediatePropagation();
|
|
38697
|
+
}, true);
|
|
38649
38698
|
|
|
38650
38699
|
document.addEventListener('mouseup', function(){
|
|
38651
38700
|
if(editing) return; // a selection inside the editor is for the cursor, not a comment
|
|
@@ -32525,11 +32525,60 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32525
32525
|
e.preventDefault(); e.stopPropagation(); startEditTextNode(tn, el);
|
|
32526
32526
|
}
|
|
32527
32527
|
}, true);
|
|
32528
|
-
|
|
32528
|
+
// ENG-8500: while the inline editor is focused, the artefact's OWN keyboard
|
|
32529
|
+
// handlers must not see the keystroke.
|
|
32530
|
+
//
|
|
32531
|
+
// Decks ship as a single self-contained file with their own slide navigation
|
|
32532
|
+
// bound to space and the arrow keys, and that script is agent-authored content
|
|
32533
|
+
// we neither control nor can retro-patch - the published object is immutable,
|
|
32534
|
+
// so every deck already out there has its handler baked in. It also runs FIRST:
|
|
32535
|
+
// the bridge is appended after the artefact HTML (frame.srcdoc = html +
|
|
32536
|
+
// MARKUP_BRIDGE in publisher.ts), so the deck registers its listener before we
|
|
32537
|
+
// register ours.
|
|
32538
|
+
//
|
|
32539
|
+
// The consequence was not a keyboard annoyance, it was silent data corruption.
|
|
32540
|
+
// The deck's handler called preventDefault() on space, so the spaces a viewer
|
|
32541
|
+
// typed never reached the editor and words concatenated -
|
|
32542
|
+
// "albreakevenreached in June 2026" - with Save sitting right there. In English
|
|
32543
|
+
// prose a reader might catch it; in a number, a product name or a URL they
|
|
32544
|
+
// would not.
|
|
32545
|
+
//
|
|
32546
|
+
// Registration order cannot be won, so win on PHASE instead. The capture path
|
|
32547
|
+
// is window -> document -> ... -> target, so a capture listener on the window object
|
|
32548
|
+
// fires before any document-level or bubble-phase listener no matter when it
|
|
32549
|
+
// was registered. stopImmediatePropagation() then keeps the event from ever
|
|
32550
|
+
// reaching the deck.
|
|
32551
|
+
//
|
|
32552
|
+
// The one case this does not beat is an artefact that itself registers on
|
|
32553
|
+
// the window object with capture BEFORE the bridge loads. Deck templates use
|
|
32554
|
+
// document.addEventListener for keydown, so that is theoretical rather
|
|
32555
|
+
// than observed - but it is a real limit and worth knowing before someone
|
|
32556
|
+
// assumes this is airtight.
|
|
32557
|
+
//
|
|
32558
|
+
// Note what is deliberately NOT called for ordinary keys: preventDefault(). The
|
|
32559
|
+
// whole point is that space, arrows, Home/End and PageUp/PageDown do their
|
|
32560
|
+
// normal text-editing work. We suppress the artefact, not the browser.
|
|
32561
|
+
window.addEventListener('keydown', function(e){
|
|
32562
|
+
// Not editing: the artefact keeps its keyboard entirely. Slide navigation
|
|
32563
|
+
// must behave exactly as it does today (ENG-8500 AC2).
|
|
32529
32564
|
if(!editing) return;
|
|
32530
|
-
|
|
32531
|
-
|
|
32532
|
-
|
|
32565
|
+
// Editing, but the keystroke is going somewhere else (the viewer clicked
|
|
32566
|
+
// away, or is in the shell's own UI). Not ours to swallow.
|
|
32567
|
+
var t=e.target;
|
|
32568
|
+
var inEditor = t===editing || (editing.contains && t && t.nodeType && editing.contains(t));
|
|
32569
|
+
if(!inEditor) return;
|
|
32570
|
+
|
|
32571
|
+
// Escape cancels the edit; Enter commits. Both are deliberate terminal
|
|
32572
|
+
// actions rather than text input, so they DO preventDefault - Enter must not
|
|
32573
|
+
// also insert a newline into the field it is closing. Shift+Enter is left
|
|
32574
|
+
// alone as a genuine newline.
|
|
32575
|
+
if(e.key==='Escape'){ e.preventDefault(); e.stopImmediatePropagation(); endEdit(false); return; }
|
|
32576
|
+
if(e.key==='Enter' && !e.shiftKey){ e.preventDefault(); e.stopImmediatePropagation(); endEdit(true); return; }
|
|
32577
|
+
|
|
32578
|
+
// Everything else: let the browser handle it as text input, and stop the
|
|
32579
|
+
// artefact's own handlers from seeing it at all.
|
|
32580
|
+
e.stopImmediatePropagation();
|
|
32581
|
+
}, true);
|
|
32533
32582
|
|
|
32534
32583
|
document.addEventListener('mouseup', function(){
|
|
32535
32584
|
if(editing) return; // a selection inside the editor is for the cursor, not a comment
|
|
@@ -32851,11 +32851,60 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32851
32851
|
e.preventDefault(); e.stopPropagation(); startEditTextNode(tn, el);
|
|
32852
32852
|
}
|
|
32853
32853
|
}, true);
|
|
32854
|
-
|
|
32854
|
+
// ENG-8500: while the inline editor is focused, the artefact's OWN keyboard
|
|
32855
|
+
// handlers must not see the keystroke.
|
|
32856
|
+
//
|
|
32857
|
+
// Decks ship as a single self-contained file with their own slide navigation
|
|
32858
|
+
// bound to space and the arrow keys, and that script is agent-authored content
|
|
32859
|
+
// we neither control nor can retro-patch - the published object is immutable,
|
|
32860
|
+
// so every deck already out there has its handler baked in. It also runs FIRST:
|
|
32861
|
+
// the bridge is appended after the artefact HTML (frame.srcdoc = html +
|
|
32862
|
+
// MARKUP_BRIDGE in publisher.ts), so the deck registers its listener before we
|
|
32863
|
+
// register ours.
|
|
32864
|
+
//
|
|
32865
|
+
// The consequence was not a keyboard annoyance, it was silent data corruption.
|
|
32866
|
+
// The deck's handler called preventDefault() on space, so the spaces a viewer
|
|
32867
|
+
// typed never reached the editor and words concatenated -
|
|
32868
|
+
// "albreakevenreached in June 2026" - with Save sitting right there. In English
|
|
32869
|
+
// prose a reader might catch it; in a number, a product name or a URL they
|
|
32870
|
+
// would not.
|
|
32871
|
+
//
|
|
32872
|
+
// Registration order cannot be won, so win on PHASE instead. The capture path
|
|
32873
|
+
// is window -> document -> ... -> target, so a capture listener on the window object
|
|
32874
|
+
// fires before any document-level or bubble-phase listener no matter when it
|
|
32875
|
+
// was registered. stopImmediatePropagation() then keeps the event from ever
|
|
32876
|
+
// reaching the deck.
|
|
32877
|
+
//
|
|
32878
|
+
// The one case this does not beat is an artefact that itself registers on
|
|
32879
|
+
// the window object with capture BEFORE the bridge loads. Deck templates use
|
|
32880
|
+
// document.addEventListener for keydown, so that is theoretical rather
|
|
32881
|
+
// than observed - but it is a real limit and worth knowing before someone
|
|
32882
|
+
// assumes this is airtight.
|
|
32883
|
+
//
|
|
32884
|
+
// Note what is deliberately NOT called for ordinary keys: preventDefault(). The
|
|
32885
|
+
// whole point is that space, arrows, Home/End and PageUp/PageDown do their
|
|
32886
|
+
// normal text-editing work. We suppress the artefact, not the browser.
|
|
32887
|
+
window.addEventListener('keydown', function(e){
|
|
32888
|
+
// Not editing: the artefact keeps its keyboard entirely. Slide navigation
|
|
32889
|
+
// must behave exactly as it does today (ENG-8500 AC2).
|
|
32855
32890
|
if(!editing) return;
|
|
32856
|
-
|
|
32857
|
-
|
|
32858
|
-
|
|
32891
|
+
// Editing, but the keystroke is going somewhere else (the viewer clicked
|
|
32892
|
+
// away, or is in the shell's own UI). Not ours to swallow.
|
|
32893
|
+
var t=e.target;
|
|
32894
|
+
var inEditor = t===editing || (editing.contains && t && t.nodeType && editing.contains(t));
|
|
32895
|
+
if(!inEditor) return;
|
|
32896
|
+
|
|
32897
|
+
// Escape cancels the edit; Enter commits. Both are deliberate terminal
|
|
32898
|
+
// actions rather than text input, so they DO preventDefault - Enter must not
|
|
32899
|
+
// also insert a newline into the field it is closing. Shift+Enter is left
|
|
32900
|
+
// alone as a genuine newline.
|
|
32901
|
+
if(e.key==='Escape'){ e.preventDefault(); e.stopImmediatePropagation(); endEdit(false); return; }
|
|
32902
|
+
if(e.key==='Enter' && !e.shiftKey){ e.preventDefault(); e.stopImmediatePropagation(); endEdit(true); return; }
|
|
32903
|
+
|
|
32904
|
+
// Everything else: let the browser handle it as text input, and stop the
|
|
32905
|
+
// artefact's own handlers from seeing it at all.
|
|
32906
|
+
e.stopImmediatePropagation();
|
|
32907
|
+
}, true);
|
|
32859
32908
|
|
|
32860
32909
|
document.addEventListener('mouseup', function(){
|
|
32861
32910
|
if(editing) return; // a selection inside the editor is for the cursor, not a comment
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
writeDirectChatSessionState,
|
|
38
38
|
writeEgressAllowlist,
|
|
39
39
|
writePersistentClaudeWrapper
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-XH3O62OZ.js";
|
|
41
41
|
import "./chunk-XWVM4KPK.js";
|
|
42
42
|
export {
|
|
43
43
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -79,4 +79,4 @@ export {
|
|
|
79
79
|
writeEgressAllowlist,
|
|
80
80
|
writePersistentClaudeWrapper
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=persistent-session-
|
|
82
|
+
//# sourceMappingURL=persistent-session-U4GCKL6C.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XH3O62OZ.js";
|
|
4
4
|
import "./chunk-XWVM4KPK.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/responsiveness-probe.ts
|
|
@@ -662,4 +662,4 @@ export {
|
|
|
662
662
|
readAndResetSlackReplyBindingClassifications,
|
|
663
663
|
readAndResetSlackReplyTargetClassifications
|
|
664
664
|
};
|
|
665
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
665
|
+
//# sourceMappingURL=responsiveness-probe-G2CAGG6M.js.map
|