@integrity-labs/agt-cli 0.28.678 → 0.28.680
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 +5 -5
- package/dist/{chunk-3PCP5NT2.js → chunk-4JTDWOBW.js} +4 -4
- package/dist/{chunk-5DHJE2G7.js → chunk-OOFJUWMT.js} +77 -17
- package/dist/chunk-OOFJUWMT.js.map +1 -0
- package/dist/{chunk-LTOGVWUR.js → chunk-ZKNKHAHX.js} +2 -2
- package/dist/{claude-pair-runtime-X6CWJNW2.js → claude-pair-runtime-HPCXQDVY.js} +2 -2
- package/dist/lib/manager-worker.js +13 -13
- package/dist/mcp/direct-chat-channel.js +76 -16
- package/dist/mcp/index.js +160 -16
- package/dist/mcp/origami.js +76 -16
- package/dist/mcp/slack-channel.js +76 -16
- package/dist/mcp/telegram-channel.js +76 -16
- package/dist/{persistent-session-EZEYH3PM.js → persistent-session-OQ7MFVEH.js} +3 -3
- package/dist/{responsiveness-probe-VS6GODYP.js → responsiveness-probe-MDL53OT2.js} +3 -3
- package/dist/{session-auth-dead-7U24PZZS.js → session-auth-dead-4OJ2XLH4.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-5DHJE2G7.js.map +0 -1
- /package/dist/{chunk-3PCP5NT2.js.map → chunk-4JTDWOBW.js.map} +0 -0
- /package/dist/{chunk-LTOGVWUR.js.map → chunk-ZKNKHAHX.js.map} +0 -0
- /package/dist/{claude-pair-runtime-X6CWJNW2.js.map → claude-pair-runtime-HPCXQDVY.js.map} +0 -0
- /package/dist/{persistent-session-EZEYH3PM.js.map → persistent-session-OQ7MFVEH.js.map} +0 -0
- /package/dist/{responsiveness-probe-VS6GODYP.js.map → responsiveness-probe-MDL53OT2.js.map} +0 -0
- /package/dist/{session-auth-dead-7U24PZZS.js.map → session-auth-dead-4OJ2XLH4.js.map} +0 -0
package/dist/mcp/origami.js
CHANGED
|
@@ -38499,6 +38499,15 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
38499
38499
|
// long note on the window-capture click handler for why this is a mode and
|
|
38500
38500
|
// not just always-on.
|
|
38501
38501
|
var editMode = false;
|
|
38502
|
+
// ENG-9383: the ONE gate every edit-entry path asks. It exists because the
|
|
38503
|
+
// last time a path was added, the old ones did not come with it: ENG-8477
|
|
38504
|
+
// introduced editMode for the deep-probe handlers and left the ENG-6821
|
|
38505
|
+
// direct click/hover on an arming-only check, so text stayed editable with
|
|
38506
|
+
// the toggle off and the button gated one of two paths. A funnel is the fix
|
|
38507
|
+
// for that class of bug; adding the term twice is only the fix for this
|
|
38508
|
+
// instance of it. A fifth handler cannot forget the mode.
|
|
38509
|
+
function canEdit(){ return editEnabled && editMode && !editing; }
|
|
38510
|
+
var hoverCued = []; // ENG-9383: elements currently wearing the mouseover cue
|
|
38502
38511
|
|
|
38503
38512
|
// Element-child indices from <body> down to el. Counts ELEMENT children only
|
|
38504
38513
|
// (children, not childNodes), matching how the server walks source_html; our
|
|
@@ -38692,14 +38701,48 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
38692
38701
|
// Hover affordance (only when armed and not mid-edit). Highlight leaves AND
|
|
38693
38702
|
// inline-only containers (their bare text is per-node editable, ENG-6856).
|
|
38694
38703
|
document.addEventListener('mouseover', function(e){
|
|
38695
|
-
if(!
|
|
38696
|
-
if(editable(el)||inlineOnlyEditable(el)){
|
|
38704
|
+
if(!canEdit()) return; var el=e.target;
|
|
38705
|
+
if(editable(el)||inlineOnlyEditable(el)){
|
|
38706
|
+
// ENG-9383: remember what the author's cursor was before we overwrite it.
|
|
38707
|
+
// Blanking it on the way out would delete an inline cursor the artefact
|
|
38708
|
+
// set itself; '' is a legitimate saved value meaning "there was none".
|
|
38709
|
+
if(el.__alCur===undefined) el.__alCur = el.style.cursor || '';
|
|
38710
|
+
el.style.cursor='text'; el.style.outline=el.style.outline||'1px dashed rgba(110,231,183,.6)'; el.__alHover=1; hoverCued.push(el);
|
|
38711
|
+
}
|
|
38697
38712
|
});
|
|
38698
38713
|
document.addEventListener('mouseout', function(e){
|
|
38699
|
-
var el=e.target; if(el&&el.__alHover&&el!==editing){ el.style.outline=''; el.__alHover=0; }
|
|
38714
|
+
var el=e.target; if(el&&el.__alHover&&el!==editing){ el.style.outline=''; restoreCursor(el); el.__alHover=0; dropHoverCue(el); }
|
|
38700
38715
|
});
|
|
38716
|
+
// ENG-9383 (CodeRabbit on #4956): the cue is an outline AND an I-beam cursor.
|
|
38717
|
+
// Clearing only the outline leaves the text still saying "you can type here"
|
|
38718
|
+
// on a page that will now refuse the click - the same misdirection this ticket
|
|
38719
|
+
// is about, one property over.
|
|
38720
|
+
function restoreCursor(el){
|
|
38721
|
+
if(el.__alCur!==undefined){ try{ el.style.cursor=el.__alCur; }catch(e){} el.__alCur=undefined; }
|
|
38722
|
+
}
|
|
38723
|
+
// Keep hoverCued bounded. Without this it grows once per hovered element for
|
|
38724
|
+
// the life of the page and pins every one of them against GC - a list that
|
|
38725
|
+
// only ever empties when the viewer toggles the mode off is a leak on any page
|
|
38726
|
+
// nobody toggles.
|
|
38727
|
+
function dropHoverCue(el){
|
|
38728
|
+
var i=hoverCued.indexOf(el); if(i!==-1) hoverCued.splice(i,1);
|
|
38729
|
+
}
|
|
38730
|
+
// ENG-9383: drop every outline the mouseover cue left behind, without waiting
|
|
38731
|
+
// for a mouseout that may never come - the mode can go off while the pointer is
|
|
38732
|
+
// parked on the text, and then the artefact wears a dashed "editable" outline
|
|
38733
|
+
// on a page where you no longer can. Tracked in a list rather than queried back
|
|
38734
|
+
// out of the DOM: more than one element can carry the cue if the pointer moved
|
|
38735
|
+
// between mouseover and mouseout, and the bridge should not depend on a
|
|
38736
|
+
// selector matching an inline style it wrote.
|
|
38737
|
+
function clearHoverCues(){
|
|
38738
|
+
for(var i=0;i<hoverCued.length;i++){
|
|
38739
|
+
var el=hoverCued[i];
|
|
38740
|
+
if(el && el.__alHover && el!==editing){ try{ el.style.outline=''; }catch(e){} restoreCursor(el); el.__alHover=0; }
|
|
38741
|
+
}
|
|
38742
|
+
hoverCued.length=0;
|
|
38743
|
+
}
|
|
38701
38744
|
document.addEventListener('click', function(e){
|
|
38702
|
-
if(!
|
|
38745
|
+
if(!canEdit()) return;
|
|
38703
38746
|
var sel=document.getSelection(); if(sel && String(sel).trim()) return; // a selection => comment flow
|
|
38704
38747
|
var el=e.target;
|
|
38705
38748
|
if(editable(el)){ e.preventDefault(); e.stopPropagation(); startEdit(el); return; }
|
|
@@ -38743,7 +38786,7 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
38743
38786
|
// Deliberately general: nothing here knows about .clickzone or any class name.
|
|
38744
38787
|
// It fixes any artefact that covers its own content.
|
|
38745
38788
|
window.addEventListener('click', function(e){
|
|
38746
|
-
if(!
|
|
38789
|
+
if(!canEdit()) return;
|
|
38747
38790
|
var sel=document.getSelection(); if(sel && String(sel).trim()) return; // selection => comment flow
|
|
38748
38791
|
var t=e.target;
|
|
38749
38792
|
// Our own toolbar (Save/Cancel) must keep its clicks.
|
|
@@ -38801,7 +38844,7 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
38801
38844
|
hoverEl=null;
|
|
38802
38845
|
}
|
|
38803
38846
|
document.addEventListener('mousemove', function(e){
|
|
38804
|
-
if(!
|
|
38847
|
+
if(!canEdit()){ clearDeepHover(); return; }
|
|
38805
38848
|
var t=e.target;
|
|
38806
38849
|
if(editable(t)||inlineOnlyEditable(t)){ clearDeepHover(); return; }
|
|
38807
38850
|
var now=Date.now(); if(now-hoverProbeAt<80) return; hoverProbeAt=now;
|
|
@@ -38901,12 +38944,17 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
38901
38944
|
var d=e.data; if(!d || d['${MARKUP_CONTROL_MARKER}']!==true) return;
|
|
38902
38945
|
if(d.type==='enable-edit'){ editEnabled=true; }
|
|
38903
38946
|
else if(d.type==='enable-comment'){ commentEnabled=true; }
|
|
38904
|
-
// ENG-8477: the viewer toggled Edit
|
|
38947
|
+
// ENG-8477: the viewer toggled Edit mode in the shell. Turning it OFF must
|
|
38905
38948
|
// also close anything open and drop the hover cue, or the artefact is left
|
|
38906
38949
|
// wearing our outlines with no way to clear them.
|
|
38950
|
+
// ENG-9383: clearDeepHover() only knows the deep-probe path's outline. The
|
|
38951
|
+
// ENG-6821 mouseover path marks its own element with __alHover and relies on
|
|
38952
|
+
// mouseout to undo it - which never fires if the pointer is still sitting on
|
|
38953
|
+
// the text when the mode goes off, leaving a dashed "you can edit this"
|
|
38954
|
+
// outline on a page where you now cannot. Clear both.
|
|
38907
38955
|
else if(d.type==='set-edit-mode'){
|
|
38908
38956
|
editMode = !!d.on;
|
|
38909
|
-
if(!editMode){ if(editing) endEdit(false); clearDeepHover(); }
|
|
38957
|
+
if(!editMode){ if(editing) endEdit(false); clearDeepHover(); clearHoverCues(); }
|
|
38910
38958
|
}
|
|
38911
38959
|
else if(d.type==='edit-result'){
|
|
38912
38960
|
if(d.ok){ /* republish hot-swaps the iframe; nothing to do */ }
|
|
@@ -41647,14 +41695,15 @@ var FLAG_REGISTRY = [
|
|
|
41647
41695
|
// hand-written process.env gate) — same posture as memory-extraction /
|
|
41648
41696
|
// tool-call-audit above. Gives a per-host canary before the DB flag exists.
|
|
41649
41697
|
envVar: "AGT_SECRET_FILES_TMPFS_ENABLED",
|
|
41650
|
-
//
|
|
41651
|
-
//
|
|
41652
|
-
//
|
|
41653
|
-
//
|
|
41654
|
-
//
|
|
41655
|
-
//
|
|
41656
|
-
//
|
|
41657
|
-
|
|
41698
|
+
// The real published build that carries the manager reader + core writer,
|
|
41699
|
+
// replacing the deliberately-unreachable `99.0.0` this flag shipped with.
|
|
41700
|
+
// Verified against the tarball (`npm pack @integrity-labs/agt-cli@0.28.678`):
|
|
41701
|
+
// `setSecretFileTmpfsBacking` is present in package/dist/lib/manager-worker.js
|
|
41702
|
+
// and the `secret-files-tmpfs` key ships in the bundle. Auto-publish patch-
|
|
41703
|
+
// bumps from main, so if a CLI-touching PR landed between the ENG-9348 merge
|
|
41704
|
+
// and this one the real cut is higher than 0.28.678 and reach under-reports;
|
|
41705
|
+
// re-verify before flipping the flag on for a canary (ENG-8575/ENG-9350).
|
|
41706
|
+
since: "0.28.678"
|
|
41658
41707
|
},
|
|
41659
41708
|
{
|
|
41660
41709
|
key: "memory-file-tombstones",
|
|
@@ -42438,6 +42487,17 @@ var FLAG_REGISTRY = [
|
|
|
42438
42487
|
// control that does nothing, which is the ENG-8303 class exactly.
|
|
42439
42488
|
// enforce arms automated downtime on a customer's production host.
|
|
42440
42489
|
sensitive: true
|
|
42490
|
+
},
|
|
42491
|
+
{
|
|
42492
|
+
key: "live-meeting-advisor",
|
|
42493
|
+
description: "Live meeting advising in Ninja Notes (ENG-9381). When ON for an org, a person recording a meeting on the Mac may arm an agent to watch it in flight: audio chunks stream to POST /notes/live/:id/chunks, a server-side Haiku vet decides moment by moment whether to escalate, and escalations reach the agent in a server-minted chat thread. Gates the CAPABILITY, not a surface: the refusal is in startLiveAdvisorSession, so a client that ignores the flag still cannot open a session, and GET /notes/destinations reports the same answer as advisor_enabled so the app can skip the arming modal entirely. Boolean gate; ships dark. OFF NEVER COSTS THE RECORDING. An unentitled org \u2014 or a flag read that fails \u2014 costs the advisor only; the microphone still starts and the note is still transcribed and delivered. That direction is deliberate: the user pressed Record and a recording is what they are owed, while arming on a failed read would spend money per minute on a session nobody confirmed. Deliberately NO envVar. This is an org-scoped gate, and an envVar is highest-precedence per ADR-0022 \u2014 a literal in sst.config.ts would pin every stage and make the admin control do nothing, the ENG-8303 class exactly.",
|
|
42494
|
+
flagType: "boolean",
|
|
42495
|
+
defaultValue: false,
|
|
42496
|
+
// Turning it ON arms a per-minute-metered capability AND starts streaming
|
|
42497
|
+
// meeting content to a server-side vet. Both halves are the deliberate,
|
|
42498
|
+
// audited decision ADR-0022 §4 reserves confirmation for — same treatment as
|
|
42499
|
+
// agent-hours-billing-enabled.
|
|
42500
|
+
sensitive: true
|
|
42441
42501
|
}
|
|
42442
42502
|
];
|
|
42443
42503
|
var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
|
|
@@ -32559,6 +32559,15 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32559
32559
|
// long note on the window-capture click handler for why this is a mode and
|
|
32560
32560
|
// not just always-on.
|
|
32561
32561
|
var editMode = false;
|
|
32562
|
+
// ENG-9383: the ONE gate every edit-entry path asks. It exists because the
|
|
32563
|
+
// last time a path was added, the old ones did not come with it: ENG-8477
|
|
32564
|
+
// introduced editMode for the deep-probe handlers and left the ENG-6821
|
|
32565
|
+
// direct click/hover on an arming-only check, so text stayed editable with
|
|
32566
|
+
// the toggle off and the button gated one of two paths. A funnel is the fix
|
|
32567
|
+
// for that class of bug; adding the term twice is only the fix for this
|
|
32568
|
+
// instance of it. A fifth handler cannot forget the mode.
|
|
32569
|
+
function canEdit(){ return editEnabled && editMode && !editing; }
|
|
32570
|
+
var hoverCued = []; // ENG-9383: elements currently wearing the mouseover cue
|
|
32562
32571
|
|
|
32563
32572
|
// Element-child indices from <body> down to el. Counts ELEMENT children only
|
|
32564
32573
|
// (children, not childNodes), matching how the server walks source_html; our
|
|
@@ -32752,14 +32761,48 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32752
32761
|
// Hover affordance (only when armed and not mid-edit). Highlight leaves AND
|
|
32753
32762
|
// inline-only containers (their bare text is per-node editable, ENG-6856).
|
|
32754
32763
|
document.addEventListener('mouseover', function(e){
|
|
32755
|
-
if(!
|
|
32756
|
-
if(editable(el)||inlineOnlyEditable(el)){
|
|
32764
|
+
if(!canEdit()) return; var el=e.target;
|
|
32765
|
+
if(editable(el)||inlineOnlyEditable(el)){
|
|
32766
|
+
// ENG-9383: remember what the author's cursor was before we overwrite it.
|
|
32767
|
+
// Blanking it on the way out would delete an inline cursor the artefact
|
|
32768
|
+
// set itself; '' is a legitimate saved value meaning "there was none".
|
|
32769
|
+
if(el.__alCur===undefined) el.__alCur = el.style.cursor || '';
|
|
32770
|
+
el.style.cursor='text'; el.style.outline=el.style.outline||'1px dashed rgba(110,231,183,.6)'; el.__alHover=1; hoverCued.push(el);
|
|
32771
|
+
}
|
|
32757
32772
|
});
|
|
32758
32773
|
document.addEventListener('mouseout', function(e){
|
|
32759
|
-
var el=e.target; if(el&&el.__alHover&&el!==editing){ el.style.outline=''; el.__alHover=0; }
|
|
32774
|
+
var el=e.target; if(el&&el.__alHover&&el!==editing){ el.style.outline=''; restoreCursor(el); el.__alHover=0; dropHoverCue(el); }
|
|
32760
32775
|
});
|
|
32776
|
+
// ENG-9383 (CodeRabbit on #4956): the cue is an outline AND an I-beam cursor.
|
|
32777
|
+
// Clearing only the outline leaves the text still saying "you can type here"
|
|
32778
|
+
// on a page that will now refuse the click - the same misdirection this ticket
|
|
32779
|
+
// is about, one property over.
|
|
32780
|
+
function restoreCursor(el){
|
|
32781
|
+
if(el.__alCur!==undefined){ try{ el.style.cursor=el.__alCur; }catch(e){} el.__alCur=undefined; }
|
|
32782
|
+
}
|
|
32783
|
+
// Keep hoverCued bounded. Without this it grows once per hovered element for
|
|
32784
|
+
// the life of the page and pins every one of them against GC - a list that
|
|
32785
|
+
// only ever empties when the viewer toggles the mode off is a leak on any page
|
|
32786
|
+
// nobody toggles.
|
|
32787
|
+
function dropHoverCue(el){
|
|
32788
|
+
var i=hoverCued.indexOf(el); if(i!==-1) hoverCued.splice(i,1);
|
|
32789
|
+
}
|
|
32790
|
+
// ENG-9383: drop every outline the mouseover cue left behind, without waiting
|
|
32791
|
+
// for a mouseout that may never come - the mode can go off while the pointer is
|
|
32792
|
+
// parked on the text, and then the artefact wears a dashed "editable" outline
|
|
32793
|
+
// on a page where you no longer can. Tracked in a list rather than queried back
|
|
32794
|
+
// out of the DOM: more than one element can carry the cue if the pointer moved
|
|
32795
|
+
// between mouseover and mouseout, and the bridge should not depend on a
|
|
32796
|
+
// selector matching an inline style it wrote.
|
|
32797
|
+
function clearHoverCues(){
|
|
32798
|
+
for(var i=0;i<hoverCued.length;i++){
|
|
32799
|
+
var el=hoverCued[i];
|
|
32800
|
+
if(el && el.__alHover && el!==editing){ try{ el.style.outline=''; }catch(e){} restoreCursor(el); el.__alHover=0; }
|
|
32801
|
+
}
|
|
32802
|
+
hoverCued.length=0;
|
|
32803
|
+
}
|
|
32761
32804
|
document.addEventListener('click', function(e){
|
|
32762
|
-
if(!
|
|
32805
|
+
if(!canEdit()) return;
|
|
32763
32806
|
var sel=document.getSelection(); if(sel && String(sel).trim()) return; // a selection => comment flow
|
|
32764
32807
|
var el=e.target;
|
|
32765
32808
|
if(editable(el)){ e.preventDefault(); e.stopPropagation(); startEdit(el); return; }
|
|
@@ -32803,7 +32846,7 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32803
32846
|
// Deliberately general: nothing here knows about .clickzone or any class name.
|
|
32804
32847
|
// It fixes any artefact that covers its own content.
|
|
32805
32848
|
window.addEventListener('click', function(e){
|
|
32806
|
-
if(!
|
|
32849
|
+
if(!canEdit()) return;
|
|
32807
32850
|
var sel=document.getSelection(); if(sel && String(sel).trim()) return; // selection => comment flow
|
|
32808
32851
|
var t=e.target;
|
|
32809
32852
|
// Our own toolbar (Save/Cancel) must keep its clicks.
|
|
@@ -32861,7 +32904,7 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32861
32904
|
hoverEl=null;
|
|
32862
32905
|
}
|
|
32863
32906
|
document.addEventListener('mousemove', function(e){
|
|
32864
|
-
if(!
|
|
32907
|
+
if(!canEdit()){ clearDeepHover(); return; }
|
|
32865
32908
|
var t=e.target;
|
|
32866
32909
|
if(editable(t)||inlineOnlyEditable(t)){ clearDeepHover(); return; }
|
|
32867
32910
|
var now=Date.now(); if(now-hoverProbeAt<80) return; hoverProbeAt=now;
|
|
@@ -32961,12 +33004,17 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32961
33004
|
var d=e.data; if(!d || d['${MARKUP_CONTROL_MARKER}']!==true) return;
|
|
32962
33005
|
if(d.type==='enable-edit'){ editEnabled=true; }
|
|
32963
33006
|
else if(d.type==='enable-comment'){ commentEnabled=true; }
|
|
32964
|
-
// ENG-8477: the viewer toggled Edit
|
|
33007
|
+
// ENG-8477: the viewer toggled Edit mode in the shell. Turning it OFF must
|
|
32965
33008
|
// also close anything open and drop the hover cue, or the artefact is left
|
|
32966
33009
|
// wearing our outlines with no way to clear them.
|
|
33010
|
+
// ENG-9383: clearDeepHover() only knows the deep-probe path's outline. The
|
|
33011
|
+
// ENG-6821 mouseover path marks its own element with __alHover and relies on
|
|
33012
|
+
// mouseout to undo it - which never fires if the pointer is still sitting on
|
|
33013
|
+
// the text when the mode goes off, leaving a dashed "you can edit this"
|
|
33014
|
+
// outline on a page where you now cannot. Clear both.
|
|
32967
33015
|
else if(d.type==='set-edit-mode'){
|
|
32968
33016
|
editMode = !!d.on;
|
|
32969
|
-
if(!editMode){ if(editing) endEdit(false); clearDeepHover(); }
|
|
33017
|
+
if(!editMode){ if(editing) endEdit(false); clearDeepHover(); clearHoverCues(); }
|
|
32970
33018
|
}
|
|
32971
33019
|
else if(d.type==='edit-result'){
|
|
32972
33020
|
if(d.ok){ /* republish hot-swaps the iframe; nothing to do */ }
|
|
@@ -36130,14 +36178,15 @@ var FLAG_REGISTRY = [
|
|
|
36130
36178
|
// hand-written process.env gate) — same posture as memory-extraction /
|
|
36131
36179
|
// tool-call-audit above. Gives a per-host canary before the DB flag exists.
|
|
36132
36180
|
envVar: "AGT_SECRET_FILES_TMPFS_ENABLED",
|
|
36133
|
-
//
|
|
36134
|
-
//
|
|
36135
|
-
//
|
|
36136
|
-
//
|
|
36137
|
-
//
|
|
36138
|
-
//
|
|
36139
|
-
//
|
|
36140
|
-
|
|
36181
|
+
// The real published build that carries the manager reader + core writer,
|
|
36182
|
+
// replacing the deliberately-unreachable `99.0.0` this flag shipped with.
|
|
36183
|
+
// Verified against the tarball (`npm pack @integrity-labs/agt-cli@0.28.678`):
|
|
36184
|
+
// `setSecretFileTmpfsBacking` is present in package/dist/lib/manager-worker.js
|
|
36185
|
+
// and the `secret-files-tmpfs` key ships in the bundle. Auto-publish patch-
|
|
36186
|
+
// bumps from main, so if a CLI-touching PR landed between the ENG-9348 merge
|
|
36187
|
+
// and this one the real cut is higher than 0.28.678 and reach under-reports;
|
|
36188
|
+
// re-verify before flipping the flag on for a canary (ENG-8575/ENG-9350).
|
|
36189
|
+
since: "0.28.678"
|
|
36141
36190
|
},
|
|
36142
36191
|
{
|
|
36143
36192
|
key: "memory-file-tombstones",
|
|
@@ -36921,6 +36970,17 @@ var FLAG_REGISTRY = [
|
|
|
36921
36970
|
// control that does nothing, which is the ENG-8303 class exactly.
|
|
36922
36971
|
// enforce arms automated downtime on a customer's production host.
|
|
36923
36972
|
sensitive: true
|
|
36973
|
+
},
|
|
36974
|
+
{
|
|
36975
|
+
key: "live-meeting-advisor",
|
|
36976
|
+
description: "Live meeting advising in Ninja Notes (ENG-9381). When ON for an org, a person recording a meeting on the Mac may arm an agent to watch it in flight: audio chunks stream to POST /notes/live/:id/chunks, a server-side Haiku vet decides moment by moment whether to escalate, and escalations reach the agent in a server-minted chat thread. Gates the CAPABILITY, not a surface: the refusal is in startLiveAdvisorSession, so a client that ignores the flag still cannot open a session, and GET /notes/destinations reports the same answer as advisor_enabled so the app can skip the arming modal entirely. Boolean gate; ships dark. OFF NEVER COSTS THE RECORDING. An unentitled org \u2014 or a flag read that fails \u2014 costs the advisor only; the microphone still starts and the note is still transcribed and delivered. That direction is deliberate: the user pressed Record and a recording is what they are owed, while arming on a failed read would spend money per minute on a session nobody confirmed. Deliberately NO envVar. This is an org-scoped gate, and an envVar is highest-precedence per ADR-0022 \u2014 a literal in sst.config.ts would pin every stage and make the admin control do nothing, the ENG-8303 class exactly.",
|
|
36977
|
+
flagType: "boolean",
|
|
36978
|
+
defaultValue: false,
|
|
36979
|
+
// Turning it ON arms a per-minute-metered capability AND starts streaming
|
|
36980
|
+
// meeting content to a server-side vet. Both halves are the deliberate,
|
|
36981
|
+
// audited decision ADR-0022 §4 reserves confirmation for — same treatment as
|
|
36982
|
+
// agent-hours-billing-enabled.
|
|
36983
|
+
sensitive: true
|
|
36924
36984
|
}
|
|
36925
36985
|
];
|
|
36926
36986
|
var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
|
|
@@ -32709,6 +32709,15 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32709
32709
|
// long note on the window-capture click handler for why this is a mode and
|
|
32710
32710
|
// not just always-on.
|
|
32711
32711
|
var editMode = false;
|
|
32712
|
+
// ENG-9383: the ONE gate every edit-entry path asks. It exists because the
|
|
32713
|
+
// last time a path was added, the old ones did not come with it: ENG-8477
|
|
32714
|
+
// introduced editMode for the deep-probe handlers and left the ENG-6821
|
|
32715
|
+
// direct click/hover on an arming-only check, so text stayed editable with
|
|
32716
|
+
// the toggle off and the button gated one of two paths. A funnel is the fix
|
|
32717
|
+
// for that class of bug; adding the term twice is only the fix for this
|
|
32718
|
+
// instance of it. A fifth handler cannot forget the mode.
|
|
32719
|
+
function canEdit(){ return editEnabled && editMode && !editing; }
|
|
32720
|
+
var hoverCued = []; // ENG-9383: elements currently wearing the mouseover cue
|
|
32712
32721
|
|
|
32713
32722
|
// Element-child indices from <body> down to el. Counts ELEMENT children only
|
|
32714
32723
|
// (children, not childNodes), matching how the server walks source_html; our
|
|
@@ -32902,14 +32911,48 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32902
32911
|
// Hover affordance (only when armed and not mid-edit). Highlight leaves AND
|
|
32903
32912
|
// inline-only containers (their bare text is per-node editable, ENG-6856).
|
|
32904
32913
|
document.addEventListener('mouseover', function(e){
|
|
32905
|
-
if(!
|
|
32906
|
-
if(editable(el)||inlineOnlyEditable(el)){
|
|
32914
|
+
if(!canEdit()) return; var el=e.target;
|
|
32915
|
+
if(editable(el)||inlineOnlyEditable(el)){
|
|
32916
|
+
// ENG-9383: remember what the author's cursor was before we overwrite it.
|
|
32917
|
+
// Blanking it on the way out would delete an inline cursor the artefact
|
|
32918
|
+
// set itself; '' is a legitimate saved value meaning "there was none".
|
|
32919
|
+
if(el.__alCur===undefined) el.__alCur = el.style.cursor || '';
|
|
32920
|
+
el.style.cursor='text'; el.style.outline=el.style.outline||'1px dashed rgba(110,231,183,.6)'; el.__alHover=1; hoverCued.push(el);
|
|
32921
|
+
}
|
|
32907
32922
|
});
|
|
32908
32923
|
document.addEventListener('mouseout', function(e){
|
|
32909
|
-
var el=e.target; if(el&&el.__alHover&&el!==editing){ el.style.outline=''; el.__alHover=0; }
|
|
32924
|
+
var el=e.target; if(el&&el.__alHover&&el!==editing){ el.style.outline=''; restoreCursor(el); el.__alHover=0; dropHoverCue(el); }
|
|
32910
32925
|
});
|
|
32926
|
+
// ENG-9383 (CodeRabbit on #4956): the cue is an outline AND an I-beam cursor.
|
|
32927
|
+
// Clearing only the outline leaves the text still saying "you can type here"
|
|
32928
|
+
// on a page that will now refuse the click - the same misdirection this ticket
|
|
32929
|
+
// is about, one property over.
|
|
32930
|
+
function restoreCursor(el){
|
|
32931
|
+
if(el.__alCur!==undefined){ try{ el.style.cursor=el.__alCur; }catch(e){} el.__alCur=undefined; }
|
|
32932
|
+
}
|
|
32933
|
+
// Keep hoverCued bounded. Without this it grows once per hovered element for
|
|
32934
|
+
// the life of the page and pins every one of them against GC - a list that
|
|
32935
|
+
// only ever empties when the viewer toggles the mode off is a leak on any page
|
|
32936
|
+
// nobody toggles.
|
|
32937
|
+
function dropHoverCue(el){
|
|
32938
|
+
var i=hoverCued.indexOf(el); if(i!==-1) hoverCued.splice(i,1);
|
|
32939
|
+
}
|
|
32940
|
+
// ENG-9383: drop every outline the mouseover cue left behind, without waiting
|
|
32941
|
+
// for a mouseout that may never come - the mode can go off while the pointer is
|
|
32942
|
+
// parked on the text, and then the artefact wears a dashed "editable" outline
|
|
32943
|
+
// on a page where you no longer can. Tracked in a list rather than queried back
|
|
32944
|
+
// out of the DOM: more than one element can carry the cue if the pointer moved
|
|
32945
|
+
// between mouseover and mouseout, and the bridge should not depend on a
|
|
32946
|
+
// selector matching an inline style it wrote.
|
|
32947
|
+
function clearHoverCues(){
|
|
32948
|
+
for(var i=0;i<hoverCued.length;i++){
|
|
32949
|
+
var el=hoverCued[i];
|
|
32950
|
+
if(el && el.__alHover && el!==editing){ try{ el.style.outline=''; }catch(e){} restoreCursor(el); el.__alHover=0; }
|
|
32951
|
+
}
|
|
32952
|
+
hoverCued.length=0;
|
|
32953
|
+
}
|
|
32911
32954
|
document.addEventListener('click', function(e){
|
|
32912
|
-
if(!
|
|
32955
|
+
if(!canEdit()) return;
|
|
32913
32956
|
var sel=document.getSelection(); if(sel && String(sel).trim()) return; // a selection => comment flow
|
|
32914
32957
|
var el=e.target;
|
|
32915
32958
|
if(editable(el)){ e.preventDefault(); e.stopPropagation(); startEdit(el); return; }
|
|
@@ -32953,7 +32996,7 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
32953
32996
|
// Deliberately general: nothing here knows about .clickzone or any class name.
|
|
32954
32997
|
// It fixes any artefact that covers its own content.
|
|
32955
32998
|
window.addEventListener('click', function(e){
|
|
32956
|
-
if(!
|
|
32999
|
+
if(!canEdit()) return;
|
|
32957
33000
|
var sel=document.getSelection(); if(sel && String(sel).trim()) return; // selection => comment flow
|
|
32958
33001
|
var t=e.target;
|
|
32959
33002
|
// Our own toolbar (Save/Cancel) must keep its clicks.
|
|
@@ -33011,7 +33054,7 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
33011
33054
|
hoverEl=null;
|
|
33012
33055
|
}
|
|
33013
33056
|
document.addEventListener('mousemove', function(e){
|
|
33014
|
-
if(!
|
|
33057
|
+
if(!canEdit()){ clearDeepHover(); return; }
|
|
33015
33058
|
var t=e.target;
|
|
33016
33059
|
if(editable(t)||inlineOnlyEditable(t)){ clearDeepHover(); return; }
|
|
33017
33060
|
var now=Date.now(); if(now-hoverProbeAt<80) return; hoverProbeAt=now;
|
|
@@ -33111,12 +33154,17 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
|
|
|
33111
33154
|
var d=e.data; if(!d || d['${MARKUP_CONTROL_MARKER}']!==true) return;
|
|
33112
33155
|
if(d.type==='enable-edit'){ editEnabled=true; }
|
|
33113
33156
|
else if(d.type==='enable-comment'){ commentEnabled=true; }
|
|
33114
|
-
// ENG-8477: the viewer toggled Edit
|
|
33157
|
+
// ENG-8477: the viewer toggled Edit mode in the shell. Turning it OFF must
|
|
33115
33158
|
// also close anything open and drop the hover cue, or the artefact is left
|
|
33116
33159
|
// wearing our outlines with no way to clear them.
|
|
33160
|
+
// ENG-9383: clearDeepHover() only knows the deep-probe path's outline. The
|
|
33161
|
+
// ENG-6821 mouseover path marks its own element with __alHover and relies on
|
|
33162
|
+
// mouseout to undo it - which never fires if the pointer is still sitting on
|
|
33163
|
+
// the text when the mode goes off, leaving a dashed "you can edit this"
|
|
33164
|
+
// outline on a page where you now cannot. Clear both.
|
|
33117
33165
|
else if(d.type==='set-edit-mode'){
|
|
33118
33166
|
editMode = !!d.on;
|
|
33119
|
-
if(!editMode){ if(editing) endEdit(false); clearDeepHover(); }
|
|
33167
|
+
if(!editMode){ if(editing) endEdit(false); clearDeepHover(); clearHoverCues(); }
|
|
33120
33168
|
}
|
|
33121
33169
|
else if(d.type==='edit-result'){
|
|
33122
33170
|
if(d.ok){ /* republish hot-swaps the iframe; nothing to do */ }
|
|
@@ -36274,14 +36322,15 @@ var FLAG_REGISTRY = [
|
|
|
36274
36322
|
// hand-written process.env gate) — same posture as memory-extraction /
|
|
36275
36323
|
// tool-call-audit above. Gives a per-host canary before the DB flag exists.
|
|
36276
36324
|
envVar: "AGT_SECRET_FILES_TMPFS_ENABLED",
|
|
36277
|
-
//
|
|
36278
|
-
//
|
|
36279
|
-
//
|
|
36280
|
-
//
|
|
36281
|
-
//
|
|
36282
|
-
//
|
|
36283
|
-
//
|
|
36284
|
-
|
|
36325
|
+
// The real published build that carries the manager reader + core writer,
|
|
36326
|
+
// replacing the deliberately-unreachable `99.0.0` this flag shipped with.
|
|
36327
|
+
// Verified against the tarball (`npm pack @integrity-labs/agt-cli@0.28.678`):
|
|
36328
|
+
// `setSecretFileTmpfsBacking` is present in package/dist/lib/manager-worker.js
|
|
36329
|
+
// and the `secret-files-tmpfs` key ships in the bundle. Auto-publish patch-
|
|
36330
|
+
// bumps from main, so if a CLI-touching PR landed between the ENG-9348 merge
|
|
36331
|
+
// and this one the real cut is higher than 0.28.678 and reach under-reports;
|
|
36332
|
+
// re-verify before flipping the flag on for a canary (ENG-8575/ENG-9350).
|
|
36333
|
+
since: "0.28.678"
|
|
36285
36334
|
},
|
|
36286
36335
|
{
|
|
36287
36336
|
key: "memory-file-tombstones",
|
|
@@ -37065,6 +37114,17 @@ var FLAG_REGISTRY = [
|
|
|
37065
37114
|
// control that does nothing, which is the ENG-8303 class exactly.
|
|
37066
37115
|
// enforce arms automated downtime on a customer's production host.
|
|
37067
37116
|
sensitive: true
|
|
37117
|
+
},
|
|
37118
|
+
{
|
|
37119
|
+
key: "live-meeting-advisor",
|
|
37120
|
+
description: "Live meeting advising in Ninja Notes (ENG-9381). When ON for an org, a person recording a meeting on the Mac may arm an agent to watch it in flight: audio chunks stream to POST /notes/live/:id/chunks, a server-side Haiku vet decides moment by moment whether to escalate, and escalations reach the agent in a server-minted chat thread. Gates the CAPABILITY, not a surface: the refusal is in startLiveAdvisorSession, so a client that ignores the flag still cannot open a session, and GET /notes/destinations reports the same answer as advisor_enabled so the app can skip the arming modal entirely. Boolean gate; ships dark. OFF NEVER COSTS THE RECORDING. An unentitled org \u2014 or a flag read that fails \u2014 costs the advisor only; the microphone still starts and the note is still transcribed and delivered. That direction is deliberate: the user pressed Record and a recording is what they are owed, while arming on a failed read would spend money per minute on a session nobody confirmed. Deliberately NO envVar. This is an org-scoped gate, and an envVar is highest-precedence per ADR-0022 \u2014 a literal in sst.config.ts would pin every stage and make the admin control do nothing, the ENG-8303 class exactly.",
|
|
37121
|
+
flagType: "boolean",
|
|
37122
|
+
defaultValue: false,
|
|
37123
|
+
// Turning it ON arms a per-minute-metered capability AND starts streaming
|
|
37124
|
+
// meeting content to a server-side vet. Both halves are the deliberate,
|
|
37125
|
+
// audited decision ADR-0022 §4 reserves confirmation for — same treatment as
|
|
37126
|
+
// agent-hours-billing-enabled.
|
|
37127
|
+
sensitive: true
|
|
37068
37128
|
}
|
|
37069
37129
|
];
|
|
37070
37130
|
var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
|
|
@@ -43,8 +43,8 @@ import {
|
|
|
43
43
|
writeDirectChatSessionState,
|
|
44
44
|
writeEgressAllowlist,
|
|
45
45
|
writePersistentClaudeWrapper
|
|
46
|
-
} from "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
} from "./chunk-ZKNKHAHX.js";
|
|
47
|
+
import "./chunk-OOFJUWMT.js";
|
|
48
48
|
import "./chunk-XWVM4KPK.js";
|
|
49
49
|
export {
|
|
50
50
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -92,4 +92,4 @@ export {
|
|
|
92
92
|
writeEgressAllowlist,
|
|
93
93
|
writePersistentClaudeWrapper
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=persistent-session-
|
|
95
|
+
//# sourceMappingURL=persistent-session-OQ7MFVEH.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-ZKNKHAHX.js";
|
|
4
|
+
import "./chunk-OOFJUWMT.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -727,4 +727,4 @@ export {
|
|
|
727
727
|
readAndResetSlackReplyBindingClassifications,
|
|
728
728
|
readAndResetSlackReplyTargetClassifications
|
|
729
729
|
};
|
|
730
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
730
|
+
//# sourceMappingURL=responsiveness-probe-MDL53OT2.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-OOFJUWMT.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/session-auth-dead.ts
|
|
6
6
|
import { closeSync, openSync, readSync, readdirSync, statSync } from "fs";
|
|
@@ -203,4 +203,4 @@ export {
|
|
|
203
203
|
decideSessionAuthState,
|
|
204
204
|
probeSessionAuth
|
|
205
205
|
};
|
|
206
|
-
//# sourceMappingURL=session-auth-dead-
|
|
206
|
+
//# sourceMappingURL=session-auth-dead-4OJ2XLH4.js.map
|