@integrity-labs/agt-cli 0.28.679 → 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 CHANGED
@@ -40,10 +40,10 @@ import {
40
40
  success,
41
41
  table,
42
42
  warn
43
- } from "../chunk-CLNFPTVG.js";
43
+ } from "../chunk-4JTDWOBW.js";
44
44
  import {
45
45
  readDirectChatSessionState
46
- } from "../chunk-HLJKOJVJ.js";
46
+ } from "../chunk-ZKNKHAHX.js";
47
47
  import {
48
48
  AnchorSessionClient,
49
49
  CHANNEL_REGISTRY,
@@ -73,7 +73,7 @@ import {
73
73
  requiredMcpWildcard,
74
74
  resolveChannels,
75
75
  serializeManifestForSlackCli
76
- } from "../chunk-GDT7JHV6.js";
76
+ } from "../chunk-OOFJUWMT.js";
77
77
  import "../chunk-XWVM4KPK.js";
78
78
 
79
79
  // src/bin/agt.ts
@@ -4909,7 +4909,7 @@ import { execFileSync, execSync } from "child_process";
4909
4909
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4910
4910
  import chalk18 from "chalk";
4911
4911
  import ora16 from "ora";
4912
- var cliVersion = true ? "0.28.679" : "dev";
4912
+ var cliVersion = true ? "0.28.680" : "dev";
4913
4913
  async function fetchLatestVersion() {
4914
4914
  const host2 = getHost();
4915
4915
  if (!host2) return null;
@@ -6089,7 +6089,7 @@ function handleError(err) {
6089
6089
  }
6090
6090
 
6091
6091
  // src/bin/agt.ts
6092
- var cliVersion2 = true ? "0.28.679" : "dev";
6092
+ var cliVersion2 = true ? "0.28.680" : "dev";
6093
6093
  var program = new Command();
6094
6094
  program.name("agt").description("Augmented CLI \u2014 agent provisioning and management").version(cliVersion2).option("--json", "Emit machine-readable JSON output (suppress spinners and colors)").option("--skip-update-check", "Skip the automatic update check on startup");
6095
6095
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -12,7 +12,7 @@ import {
12
12
  parseEnvFileEntries,
13
13
  parseEnvIntegrations,
14
14
  shellQuote
15
- } from "./chunk-HLJKOJVJ.js";
15
+ } from "./chunk-ZKNKHAHX.js";
16
16
  import {
17
17
  BIND_FAILURE_QUARANTINE_THRESHOLD,
18
18
  INTEGRATIONS_SECTION_END,
@@ -59,7 +59,7 @@ import {
59
59
  resolveConnectivityProbe,
60
60
  worseConnectivityOutcome,
61
61
  wrapScheduledTaskPrompt
62
- } from "./chunk-GDT7JHV6.js";
62
+ } from "./chunk-OOFJUWMT.js";
63
63
  import {
64
64
  parsePsRows
65
65
  } from "./chunk-XWVM4KPK.js";
@@ -6445,7 +6445,7 @@ function exchangeFailureKind(err) {
6445
6445
  }
6446
6446
 
6447
6447
  // src/lib/api-client.ts
6448
- var agtCliVersion = true ? "0.28.679" : "dev";
6448
+ var agtCliVersion = true ? "0.28.680" : "dev";
6449
6449
  var lastConfigHash = null;
6450
6450
  function setConfigHash(hash) {
6451
6451
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -10187,4 +10187,4 @@ export {
10187
10187
  managerInstallSystemUnitCommand,
10188
10188
  managerUninstallSystemUnitCommand
10189
10189
  };
10190
- //# sourceMappingURL=chunk-CLNFPTVG.js.map
10190
+ //# sourceMappingURL=chunk-4JTDWOBW.js.map
@@ -4964,14 +4964,15 @@ var FLAG_REGISTRY = [
4964
4964
  // hand-written process.env gate) — same posture as memory-extraction /
4965
4965
  // tool-call-audit above. Gives a per-host canary before the DB flag exists.
4966
4966
  envVar: "AGT_SECRET_FILES_TMPFS_ENABLED",
4967
- // Deliberately-unreachable placeholder until this ships: no published CLI
4968
- // carries the manager reader + core writer yet, so reach must report "no
4969
- // host honors" rather than the `honors`-for-everyone that omitting `since`
4970
- // produces. MOVE THIS PIN to the actual auto-published agt-cli version at
4971
- // merge (auto-publish patch-bumps from main; verify against the tarball, the
4972
- // ENG-8575/ENG-9350 lesson) the marker is `setSecretFileTmpfsBacking` in
4973
- // package/dist/lib/manager-worker.js.
4974
- since: "99.0.0"
4967
+ // The real published build that carries the manager reader + core writer,
4968
+ // replacing the deliberately-unreachable `99.0.0` this flag shipped with.
4969
+ // Verified against the tarball (`npm pack @integrity-labs/agt-cli@0.28.678`):
4970
+ // `setSecretFileTmpfsBacking` is present in package/dist/lib/manager-worker.js
4971
+ // and the `secret-files-tmpfs` key ships in the bundle. Auto-publish patch-
4972
+ // bumps from main, so if a CLI-touching PR landed between the ENG-9348 merge
4973
+ // and this one the real cut is higher than 0.28.678 and reach under-reports;
4974
+ // re-verify before flipping the flag on for a canary (ENG-8575/ENG-9350).
4975
+ since: "0.28.678"
4975
4976
  },
4976
4977
  {
4977
4978
  key: "memory-file-tombstones",
@@ -5755,6 +5756,17 @@ var FLAG_REGISTRY = [
5755
5756
  // control that does nothing, which is the ENG-8303 class exactly.
5756
5757
  // enforce arms automated downtime on a customer's production host.
5757
5758
  sensitive: true
5759
+ },
5760
+ {
5761
+ key: "live-meeting-advisor",
5762
+ 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.",
5763
+ flagType: "boolean",
5764
+ defaultValue: false,
5765
+ // Turning it ON arms a per-minute-metered capability AND starts streaming
5766
+ // meeting content to a server-side vet. Both halves are the deliberate,
5767
+ // audited decision ADR-0022 §4 reserves confirmation for — same treatment as
5768
+ // agent-hours-billing-enabled.
5769
+ sensitive: true
5758
5770
  }
5759
5771
  ];
5760
5772
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
@@ -8076,6 +8088,15 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
8076
8088
  // long note on the window-capture click handler for why this is a mode and
8077
8089
  // not just always-on.
8078
8090
  var editMode = false;
8091
+ // ENG-9383: the ONE gate every edit-entry path asks. It exists because the
8092
+ // last time a path was added, the old ones did not come with it: ENG-8477
8093
+ // introduced editMode for the deep-probe handlers and left the ENG-6821
8094
+ // direct click/hover on an arming-only check, so text stayed editable with
8095
+ // the toggle off and the button gated one of two paths. A funnel is the fix
8096
+ // for that class of bug; adding the term twice is only the fix for this
8097
+ // instance of it. A fifth handler cannot forget the mode.
8098
+ function canEdit(){ return editEnabled && editMode && !editing; }
8099
+ var hoverCued = []; // ENG-9383: elements currently wearing the mouseover cue
8079
8100
 
8080
8101
  // Element-child indices from <body> down to el. Counts ELEMENT children only
8081
8102
  // (children, not childNodes), matching how the server walks source_html; our
@@ -8269,14 +8290,48 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
8269
8290
  // Hover affordance (only when armed and not mid-edit). Highlight leaves AND
8270
8291
  // inline-only containers (their bare text is per-node editable, ENG-6856).
8271
8292
  document.addEventListener('mouseover', function(e){
8272
- if(!editEnabled||editing) return; var el=e.target;
8273
- if(editable(el)||inlineOnlyEditable(el)){ el.style.cursor='text'; el.style.outline=el.style.outline||'1px dashed rgba(110,231,183,.6)'; el.__alHover=1; }
8293
+ if(!canEdit()) return; var el=e.target;
8294
+ if(editable(el)||inlineOnlyEditable(el)){
8295
+ // ENG-9383: remember what the author's cursor was before we overwrite it.
8296
+ // Blanking it on the way out would delete an inline cursor the artefact
8297
+ // set itself; '' is a legitimate saved value meaning "there was none".
8298
+ if(el.__alCur===undefined) el.__alCur = el.style.cursor || '';
8299
+ el.style.cursor='text'; el.style.outline=el.style.outline||'1px dashed rgba(110,231,183,.6)'; el.__alHover=1; hoverCued.push(el);
8300
+ }
8274
8301
  });
8275
8302
  document.addEventListener('mouseout', function(e){
8276
- var el=e.target; if(el&&el.__alHover&&el!==editing){ el.style.outline=''; el.__alHover=0; }
8303
+ var el=e.target; if(el&&el.__alHover&&el!==editing){ el.style.outline=''; restoreCursor(el); el.__alHover=0; dropHoverCue(el); }
8277
8304
  });
8305
+ // ENG-9383 (CodeRabbit on #4956): the cue is an outline AND an I-beam cursor.
8306
+ // Clearing only the outline leaves the text still saying "you can type here"
8307
+ // on a page that will now refuse the click - the same misdirection this ticket
8308
+ // is about, one property over.
8309
+ function restoreCursor(el){
8310
+ if(el.__alCur!==undefined){ try{ el.style.cursor=el.__alCur; }catch(e){} el.__alCur=undefined; }
8311
+ }
8312
+ // Keep hoverCued bounded. Without this it grows once per hovered element for
8313
+ // the life of the page and pins every one of them against GC - a list that
8314
+ // only ever empties when the viewer toggles the mode off is a leak on any page
8315
+ // nobody toggles.
8316
+ function dropHoverCue(el){
8317
+ var i=hoverCued.indexOf(el); if(i!==-1) hoverCued.splice(i,1);
8318
+ }
8319
+ // ENG-9383: drop every outline the mouseover cue left behind, without waiting
8320
+ // for a mouseout that may never come - the mode can go off while the pointer is
8321
+ // parked on the text, and then the artefact wears a dashed "editable" outline
8322
+ // on a page where you no longer can. Tracked in a list rather than queried back
8323
+ // out of the DOM: more than one element can carry the cue if the pointer moved
8324
+ // between mouseover and mouseout, and the bridge should not depend on a
8325
+ // selector matching an inline style it wrote.
8326
+ function clearHoverCues(){
8327
+ for(var i=0;i<hoverCued.length;i++){
8328
+ var el=hoverCued[i];
8329
+ if(el && el.__alHover && el!==editing){ try{ el.style.outline=''; }catch(e){} restoreCursor(el); el.__alHover=0; }
8330
+ }
8331
+ hoverCued.length=0;
8332
+ }
8278
8333
  document.addEventListener('click', function(e){
8279
- if(!editEnabled||editing) return;
8334
+ if(!canEdit()) return;
8280
8335
  var sel=document.getSelection(); if(sel && String(sel).trim()) return; // a selection => comment flow
8281
8336
  var el=e.target;
8282
8337
  if(editable(el)){ e.preventDefault(); e.stopPropagation(); startEdit(el); return; }
@@ -8320,7 +8375,7 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
8320
8375
  // Deliberately general: nothing here knows about .clickzone or any class name.
8321
8376
  // It fixes any artefact that covers its own content.
8322
8377
  window.addEventListener('click', function(e){
8323
- if(!editEnabled || !editMode || editing) return;
8378
+ if(!canEdit()) return;
8324
8379
  var sel=document.getSelection(); if(sel && String(sel).trim()) return; // selection => comment flow
8325
8380
  var t=e.target;
8326
8381
  // Our own toolbar (Save/Cancel) must keep its clicks.
@@ -8378,7 +8433,7 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
8378
8433
  hoverEl=null;
8379
8434
  }
8380
8435
  document.addEventListener('mousemove', function(e){
8381
- if(!editEnabled || !editMode || editing){ clearDeepHover(); return; }
8436
+ if(!canEdit()){ clearDeepHover(); return; }
8382
8437
  var t=e.target;
8383
8438
  if(editable(t)||inlineOnlyEditable(t)){ clearDeepHover(); return; }
8384
8439
  var now=Date.now(); if(now-hoverProbeAt<80) return; hoverProbeAt=now;
@@ -8478,12 +8533,17 @@ var MARKUP_BRIDGE_SCRIPT = `<script>(function(){
8478
8533
  var d=e.data; if(!d || d['${MARKUP_CONTROL_MARKER}']!==true) return;
8479
8534
  if(d.type==='enable-edit'){ editEnabled=true; }
8480
8535
  else if(d.type==='enable-comment'){ commentEnabled=true; }
8481
- // ENG-8477: the viewer toggled Edit text in the shell. Turning it OFF must
8536
+ // ENG-8477: the viewer toggled Edit mode in the shell. Turning it OFF must
8482
8537
  // also close anything open and drop the hover cue, or the artefact is left
8483
8538
  // wearing our outlines with no way to clear them.
8539
+ // ENG-9383: clearDeepHover() only knows the deep-probe path's outline. The
8540
+ // ENG-6821 mouseover path marks its own element with __alHover and relies on
8541
+ // mouseout to undo it - which never fires if the pointer is still sitting on
8542
+ // the text when the mode goes off, leaving a dashed "you can edit this"
8543
+ // outline on a page where you now cannot. Clear both.
8484
8544
  else if(d.type==='set-edit-mode'){
8485
8545
  editMode = !!d.on;
8486
- if(!editMode){ if(editing) endEdit(false); clearDeepHover(); }
8546
+ if(!editMode){ if(editing) endEdit(false); clearDeepHover(); clearHoverCues(); }
8487
8547
  }
8488
8548
  else if(d.type==='edit-result'){
8489
8549
  if(d.ok){ /* republish hot-swaps the iframe; nothing to do */ }
@@ -12546,4 +12606,4 @@ export {
12546
12606
  minutesSinceLocalMidnight,
12547
12607
  peekCurrentSession
12548
12608
  };
12549
- //# sourceMappingURL=chunk-GDT7JHV6.js.map
12609
+ //# sourceMappingURL=chunk-OOFJUWMT.js.map