@integrity-labs/agt-cli 0.28.507 → 0.28.508

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.
@@ -10371,6 +10371,54 @@ var FLAG_REGISTRY = [
10371
10371
  // Turning this on lets agents originate proposals that create customer
10372
10372
  // infrastructure once approved — same posture as augmented-support-writes.
10373
10373
  sensitive: true
10374
+ },
10375
+ {
10376
+ key: "github-broker-credentials",
10377
+ description: "Deliver GitHub App installation tokens to `git` and the `gh` CLI through the broker credential endpoint at USE time, instead of materializing them into the agent process environment at spawn (ENG-8344). A GitHub App installation token has a ~1h TTL, so the spawn-frozen GITHUB_ACCESS_TOKEN / GITHUB_TOKEN pair rotates hourly; the wrapper sources `.env.integrations` exactly once, so the only way a running agent sees the new value is a full session respawn (measured: 6 agents, ~144 kills/day). ENG-8343 stopped those kills landing mid-turn; this removes them. ON: `POST /host/agent-integrations` stops minting the installation token into the payload for auth_type=github_app rows (so computeIntegrationsHash stops seeing a rotating value) and marks the row credential_delivery=broker; the claudecode adapter then writes a git credential helper + a `gh` shim that fetch a fresh token per use from POST /host/agent-integrations/github/credential (ENG-8264 name addressing). OFF (default): byte-for-byte today's behaviour - the token is minted into the payload and materialized as GITHUB_ACCESS_TOKEN / GITHUB_TOKEN, no helper, no shim. NOTE the scope of the security claim: this removes the token from the agent's ENVIRONMENT, which is what stops the respawns. It does NOT make the token unreachable by a determined agent - the agent can invoke the helper itself. Strictly better than today, not a sandbox. Evaluated API-side only, per agent, in POST /host/agent-integrations; no host-side envVar. The host does not read this flag - it keys off the resulting credential_delivery marker on the row - so there is deliberately no host override that could put the token back on its own. Roll back from the flag.",
10378
+ flagType: "boolean",
10379
+ // Declared safe value is `false` = today's env delivery. Fail-safe direction:
10380
+ // a flag-DB read error must never strip `git`/`gh` credentials off a live
10381
+ // agent, which is what the ON path does when its host has no helper writer.
10382
+ defaultValue: false,
10383
+ // Flipping ON changes how every GitHub App agent on the scope authenticates
10384
+ // `git push` / `gh`. A bad flip takes those away, so it is a deliberate,
10385
+ // confirmed action (ADR-0022 §4).
10386
+ sensitive: true,
10387
+ // Set even though the flag is evaluated centrally, because `since` is a
10388
+ // REACH threshold ("a host this old has no consumer code for the flag") and
10389
+ // that is exactly the hazard here: the host does not read the flag, but it
10390
+ // does need the claudecode adapter's helper/shim writer and the wrapper PATH
10391
+ // prepend. On a host too old for those, the API would stop shipping the
10392
+ // token and NOTHING would replace it. Without `since` the flip-reach modal
10393
+ // reports FULL reach and hides that.
10394
+ //
10395
+ // DELIBERATE UNREACHABLE PLACEHOLDER - NOT A REAL THRESHOLD YET.
10396
+ // The sibling entries in this registry (`slack-hot-thread-guard` 0.28.339,
10397
+ // `slack-scheduled-channel-guard` 0.28.421) are BISECTED from published npm
10398
+ // artifacts, which is only possible AFTER this merges and publishes. A
10399
+ // pre-merge guess cannot be right, and the two directions are not
10400
+ // symmetric:
10401
+ // - too HIGH -> hosts classify `stale`, the modal over-warns. Annoying.
10402
+ // - too LOW -> hosts classify `honors` while carrying NO helper writer,
10403
+ // the modal promises full reach, and a flip strips `git`/
10404
+ // `gh` credentials with nothing replacing them. Outage.
10405
+ // So this is pinned ABOVE every published release on purpose: it classifies
10406
+ // EVERY host as `stale`, so the modal reports no reach rather than reach it
10407
+ // has no basis for. That is the intended pre-bisect state.
10408
+ //
10409
+ // BUT `since` IS ADVISORY, NOT A GUARD. It is read in exactly one place -
10410
+ // `computeFlagReach` behind GET /admin/reach, which renders the flip-reach
10411
+ // modal. `evaluate.ts` never reads it and neither does the override write
10412
+ // path. The placeholder therefore changes what an operator is TOLD; it does
10413
+ // not stop a flip on an under-`since` host. What actually holds the line
10414
+ // here is `defaultValue: false` plus `sensitive: true` plus the runbook.
10415
+ //
10416
+ // BEFORE THIS FLAG IS FLIPPED ANYWHERE: bisect the published dist for the
10417
+ // first agt-cli whose claudecode adapter writes agt-bin/ and whose wrapper
10418
+ // prepends it, then replace this with that exact version. The rollout
10419
+ // runbook gates on it. Leaving the placeholder in place is safe (nothing
10420
+ // flips); shipping a guessed number is not.
10421
+ since: "0.29.0"
10374
10422
  }
10375
10423
  ];
10376
10424
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
@@ -13705,6 +13753,10 @@ function writePersistentClaudeWrapper(args) {
13705
13753
  "set +a"
13706
13754
  );
13707
13755
  }
13756
+ const brokerBinDir = join6(projectDir, ".claude", "agt-bin");
13757
+ if (existsSync6(brokerBinDir)) {
13758
+ wrapperLines.push(`export PATH=${JSON.stringify(brokerBinDir)}:"$PATH"`);
13759
+ }
13708
13760
  const initPromptArg = initPrompt ? `${JSON.stringify(initPrompt)} ` : "";
13709
13761
  wrapperLines.push(
13710
13762
  `exec ${JSON.stringify(claudeBin)} ${initPromptArg}${claudeArgsJoined}`
@@ -14856,4 +14908,4 @@ export {
14856
14908
  stopAllSessionsAndWait,
14857
14909
  getProjectDir
14858
14910
  };
14859
- //# sourceMappingURL=chunk-4PRR22KH.js.map
14911
+ //# sourceMappingURL=chunk-LNPJI2AE.js.map