@integrity-labs/agt-cli 0.28.1167 → 0.28.1169

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.
Files changed (31) hide show
  1. package/dist/bin/agt.js +6 -6
  2. package/dist/{chunk-7IAJXJ7C.js → chunk-IRTKOKUI.js} +5 -1
  3. package/dist/chunk-IRTKOKUI.js.map +1 -0
  4. package/dist/{chunk-IV2UENRG.js → chunk-KDOITWQH.js} +2 -2
  5. package/dist/{chunk-AJTF72A2.js → chunk-LNWG6TUG.js} +3 -3
  6. package/dist/{chunk-AV4KD3HE.js → chunk-SJ7ZLQXN.js} +2 -2
  7. package/dist/{chunk-7WXWT4PA.js → chunk-UE66JYZN.js} +5 -5
  8. package/dist/{claude-code-updater-WD4NNWY5.js → claude-code-updater-7N6Z6VM3.js} +3 -3
  9. package/dist/{claude-pair-runtime-JWXVVSSG.js → claude-pair-runtime-4PUDIE65.js} +3 -3
  10. package/dist/lib/manager-worker.js +19 -19
  11. package/dist/mcp/direct-chat-channel.js +6 -0
  12. package/dist/mcp/index.js +12 -4
  13. package/dist/mcp/origami.js +4 -0
  14. package/dist/mcp/slack-channel.js +6 -0
  15. package/dist/mcp/telegram-channel.js +6 -0
  16. package/dist/mcp/whatsapp-channel.js +10937 -6790
  17. package/dist/mcp/whatsapp-link.js +10906 -6759
  18. package/dist/{persistent-session-LKJVSRHX.js → persistent-session-GB4SLWPX.js} +4 -4
  19. package/dist/{responsiveness-probe-ZEK2TD5E.js → responsiveness-probe-GIID6ZH2.js} +4 -4
  20. package/dist/{session-auth-dead-TSARKC55.js → session-auth-dead-ZTHC2VD4.js} +3 -3
  21. package/package.json +1 -1
  22. package/dist/chunk-7IAJXJ7C.js.map +0 -1
  23. /package/dist/{chunk-IV2UENRG.js.map → chunk-KDOITWQH.js.map} +0 -0
  24. /package/dist/{chunk-AJTF72A2.js.map → chunk-LNWG6TUG.js.map} +0 -0
  25. /package/dist/{chunk-AV4KD3HE.js.map → chunk-SJ7ZLQXN.js.map} +0 -0
  26. /package/dist/{chunk-7WXWT4PA.js.map → chunk-UE66JYZN.js.map} +0 -0
  27. /package/dist/{claude-code-updater-WD4NNWY5.js.map → claude-code-updater-7N6Z6VM3.js.map} +0 -0
  28. /package/dist/{claude-pair-runtime-JWXVVSSG.js.map → claude-pair-runtime-4PUDIE65.js.map} +0 -0
  29. /package/dist/{persistent-session-LKJVSRHX.js.map → persistent-session-GB4SLWPX.js.map} +0 -0
  30. /package/dist/{responsiveness-probe-ZEK2TD5E.js.map → responsiveness-probe-GIID6ZH2.js.map} +0 -0
  31. /package/dist/{session-auth-dead-TSARKC55.js.map → session-auth-dead-ZTHC2VD4.js.map} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-XWVM4KPK.js";
5
5
  import {
6
6
  FORCED_UPDATE_HARD_DEADLINE_MS
7
- } from "./chunk-7IAJXJ7C.js";
7
+ } from "./chunk-IRTKOKUI.js";
8
8
  import {
9
9
  effectiveClaudeJsonPath
10
10
  } from "./chunk-EL5MWGGH.js";
@@ -722,4 +722,4 @@ export {
722
722
  probeClaudeInstalls,
723
723
  maybeUpdateClaudeCode
724
724
  };
725
- //# sourceMappingURL=chunk-IV2UENRG.js.map
725
+ //# sourceMappingURL=chunk-KDOITWQH.js.map
@@ -4,7 +4,7 @@ import {
4
4
  rotateDailySession,
5
5
  sessionFileExists,
6
6
  todayLocalIso
7
- } from "./chunk-AV4KD3HE.js";
7
+ } from "./chunk-SJ7ZLQXN.js";
8
8
  import {
9
9
  classifyUnanswerablePane,
10
10
  findUsageLimitResetHint,
@@ -47,7 +47,7 @@ import {
47
47
  remoteMcpConnectionEnvInfix,
48
48
  remoteMcpConnectionLabel,
49
49
  remoteMcpConnectionScopedEnvVar
50
- } from "./chunk-7IAJXJ7C.js";
50
+ } from "./chunk-IRTKOKUI.js";
51
51
  import {
52
52
  CLAUDE_CONFIG_DIR_ENV,
53
53
  archiveLegacyClaudeJson,
@@ -6130,4 +6130,4 @@ export {
6130
6130
  stopAllSessionsAndWait,
6131
6131
  getProjectDir
6132
6132
  };
6133
- //# sourceMappingURL=chunk-AJTF72A2.js.map
6133
+ //# sourceMappingURL=chunk-LNWG6TUG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  encodeClaudeProjectPath
3
- } from "./chunk-7IAJXJ7C.js";
3
+ } from "./chunk-IRTKOKUI.js";
4
4
 
5
5
  // src/lib/daily-session.ts
6
6
  import { randomUUID } from "crypto";
@@ -235,4 +235,4 @@ export {
235
235
  peekCurrentSession,
236
236
  readDailySessionPin
237
237
  };
238
- //# sourceMappingURL=chunk-AV4KD3HE.js.map
238
+ //# sourceMappingURL=chunk-SJ7ZLQXN.js.map
@@ -16,11 +16,11 @@ import {
16
16
  parseEnvFileEntries,
17
17
  parseEnvIntegrations,
18
18
  shellQuote
19
- } from "./chunk-AJTF72A2.js";
19
+ } from "./chunk-LNWG6TUG.js";
20
20
  import {
21
21
  readDailySessionPin,
22
22
  sessionTranscriptDir
23
- } from "./chunk-AV4KD3HE.js";
23
+ } from "./chunk-SJ7ZLQXN.js";
24
24
  import {
25
25
  classifyUnanswerablePane,
26
26
  isConsumerTermsDialogVisible,
@@ -90,7 +90,7 @@ import {
90
90
  scanConfigForLiteralSecrets,
91
91
  worseConnectivityOutcome,
92
92
  wrapScheduledTaskPrompt
93
- } from "./chunk-7IAJXJ7C.js";
93
+ } from "./chunk-IRTKOKUI.js";
94
94
  import {
95
95
  claudeJsonPathFor,
96
96
  effectiveClaudeJsonPath,
@@ -8078,7 +8078,7 @@ function exchangeFailureKind(err) {
8078
8078
  }
8079
8079
 
8080
8080
  // src/lib/api-client.ts
8081
- var agtCliVersion = true ? "0.28.1167" : "dev";
8081
+ var agtCliVersion = true ? "0.28.1169" : "dev";
8082
8082
  var lastConfigHash = null;
8083
8083
  function setConfigHash(hash) {
8084
8084
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -13235,4 +13235,4 @@ export {
13235
13235
  managerInstallSystemUnitCommand,
13236
13236
  managerUninstallSystemUnitCommand
13237
13237
  };
13238
- //# sourceMappingURL=chunk-7WXWT4PA.js.map
13238
+ //# sourceMappingURL=chunk-UE66JYZN.js.map
@@ -13,9 +13,9 @@ import {
13
13
  probeClaudeInstalls,
14
14
  readsAsNativeInstall,
15
15
  shouldRunClaudeCodeUpdater
16
- } from "./chunk-IV2UENRG.js";
16
+ } from "./chunk-KDOITWQH.js";
17
17
  import "./chunk-XWVM4KPK.js";
18
- import "./chunk-7IAJXJ7C.js";
18
+ import "./chunk-IRTKOKUI.js";
19
19
  import "./chunk-EL5MWGGH.js";
20
20
  import "./chunk-DGUM43GV.js";
21
21
  export {
@@ -34,4 +34,4 @@ export {
34
34
  readsAsNativeInstall,
35
35
  shouldRunClaudeCodeUpdater
36
36
  };
37
- //# sourceMappingURL=claude-code-updater-WD4NNWY5.js.map
37
+ //# sourceMappingURL=claude-code-updater-7N6Z6VM3.js.map
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  redactPaneFrame,
10
10
  sanitizeTerminalFrame
11
- } from "./chunk-7IAJXJ7C.js";
11
+ } from "./chunk-IRTKOKUI.js";
12
12
  import {
13
13
  CLAUDE_CONFIG_DIR_ENV,
14
14
  claudeConfigDirFor,
@@ -321,7 +321,7 @@ async function spawnPairSession(session) {
321
321
  return { ok: true };
322
322
  } catch {
323
323
  }
324
- const { resolveClaudeBinary } = await import("./persistent-session-LKJVSRHX.js");
324
+ const { resolveClaudeBinary } = await import("./persistent-session-GB4SLWPX.js");
325
325
  const claudeBin = resolveClaudeBinary();
326
326
  const pairEnv = {
327
327
  ...process.env,
@@ -836,4 +836,4 @@ export {
836
836
  startClaudePair,
837
837
  submitClaudePairCode
838
838
  };
839
- //# sourceMappingURL=claude-pair-runtime-JWXVVSSG.js.map
839
+ //# sourceMappingURL=claude-pair-runtime-4PUDIE65.js.map
@@ -77,7 +77,7 @@ import {
77
77
  setConfigHash,
78
78
  shellGuard,
79
79
  tripClass
80
- } from "../chunk-7WXWT4PA.js";
80
+ } from "../chunk-UE66JYZN.js";
81
81
  import {
82
82
  CLAUDE_CODE_SECURITY_FLOOR,
83
83
  SELF_UPDATE_TIMEOUTS,
@@ -91,7 +91,7 @@ import {
91
91
  runSafeCleanup,
92
92
  tightestDiskStat,
93
93
  withPackageCacheLock
94
- } from "../chunk-IV2UENRG.js";
94
+ } from "../chunk-KDOITWQH.js";
95
95
  import {
96
96
  getProjectDir as getProjectDir2,
97
97
  getReadyTasks,
@@ -178,7 +178,7 @@ import {
178
178
  webFetchBaselineValue,
179
179
  webFetchRestartNeeded,
180
180
  writeEgressAllowlist
181
- } from "../chunk-AJTF72A2.js";
181
+ } from "../chunk-LNWG6TUG.js";
182
182
  import {
183
183
  isAgentIdle,
184
184
  isStaleForToday,
@@ -187,7 +187,7 @@ import {
187
187
  sessionTranscriptDir,
188
188
  subagentActivityAgeSeconds,
189
189
  transcriptActivityAgeSeconds
190
- } from "../chunk-AV4KD3HE.js";
190
+ } from "../chunk-SJ7ZLQXN.js";
191
191
  import {
192
192
  classifyUnanswerablePane,
193
193
  focusedConfirmDialogBlock,
@@ -305,7 +305,7 @@ import {
305
305
  serializeAccountEnforcementMarker,
306
306
  stabiliseResetInstant,
307
307
  sumTranscriptUsageInWindow
308
- } from "../chunk-7IAJXJ7C.js";
308
+ } from "../chunk-IRTKOKUI.js";
309
309
  import {
310
310
  CLAUDE_CONFIG_DIR_ENV,
311
311
  claudeConfigDirFor,
@@ -15082,7 +15082,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
15082
15082
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
15083
15083
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
15084
15084
  async function channelInboundActivityAgeSecondsFor(codeName) {
15085
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-ZEK2TD5E.js");
15085
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-GIID6ZH2.js");
15086
15086
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
15087
15087
  if (newest === null) return null;
15088
15088
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -15878,7 +15878,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
15878
15878
  var lastVersionCheckAt = 0;
15879
15879
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
15880
15880
  var lastResponsivenessProbeAt = 0;
15881
- var agtCliVersion = true ? "0.28.1167" : "dev";
15881
+ var agtCliVersion = true ? "0.28.1169" : "dev";
15882
15882
  function resolveBrewPath(execFileSync3) {
15883
15883
  try {
15884
15884
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -17678,7 +17678,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
17678
17678
  if (codeNames.length === 0) return;
17679
17679
  void (async () => {
17680
17680
  try {
17681
- const { collectDiagnostics } = await import("../persistent-session-LKJVSRHX.js");
17681
+ const { collectDiagnostics } = await import("../persistent-session-GB4SLWPX.js");
17682
17682
  await api.post("/host/heartbeat", {
17683
17683
  host_id: hostId,
17684
17684
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -17821,7 +17821,7 @@ async function pollCycleInner() {
17821
17821
  }
17822
17822
  try {
17823
17823
  const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
17824
- const { collectDiagnostics } = await import("../persistent-session-LKJVSRHX.js");
17824
+ const { collectDiagnostics } = await import("../persistent-session-GB4SLWPX.js");
17825
17825
  const diagCodeNames = [...agentState.persistentSessionAgents];
17826
17826
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
17827
17827
  let tailscaleHostname;
@@ -18025,7 +18025,7 @@ async function pollCycleInner() {
18025
18025
  setConfigHash(hbResp?.config_hash ?? null);
18026
18026
  try {
18027
18027
  const desiredClaudeCodeVersion = hbResp?.desired_claude_code_version?.trim();
18028
- const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-WD4NNWY5.js");
18028
+ const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-7N6Z6VM3.js");
18029
18029
  const securityFloor = currentSecurityFloor();
18030
18030
  claudeUpdaterInFlight = true;
18031
18031
  if (desiredClaudeCodeVersion && (claudePairLoop.busy || claudePairingInProgress())) {
@@ -18060,7 +18060,7 @@ async function pollCycleInner() {
18060
18060
  collectPanelessActivityProbes,
18061
18061
  getResponsivenessIntervalMs,
18062
18062
  occupancyQualificationClassifications
18063
- } = await import("../responsiveness-probe-ZEK2TD5E.js");
18063
+ } = await import("../responsiveness-probe-GIID6ZH2.js");
18064
18064
  const probeIntervalMs = getResponsivenessIntervalMs();
18065
18065
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
18066
18066
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -18177,7 +18177,7 @@ async function pollCycleInner() {
18177
18177
  collectResponsivenessProbes,
18178
18178
  livePendingInboundOldestAgeSeconds,
18179
18179
  parkPendingInbound
18180
- } = await import("../responsiveness-probe-ZEK2TD5E.js");
18180
+ } = await import("../responsiveness-probe-GIID6ZH2.js");
18181
18181
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
18182
18182
  const wedgeNow = /* @__PURE__ */ new Date();
18183
18183
  const liveAgents = agentState.persistentSessionAgents;
@@ -18463,7 +18463,7 @@ async function pollCycleInner() {
18463
18463
  }
18464
18464
  }
18465
18465
  );
18466
- const { parkPendingInbound } = await import("../responsiveness-probe-ZEK2TD5E.js");
18466
+ const { parkPendingInbound } = await import("../responsiveness-probe-GIID6ZH2.js");
18467
18467
  const { parked, deadLettered } = parkPendingInbound(codeName, new Date(fatalNowMs));
18468
18468
  paneFatalStreak.delete(codeName);
18469
18469
  paneFatalRestarts.set(codeName, [...history, fatalNowMs]);
@@ -18494,7 +18494,7 @@ async function pollCycleInner() {
18494
18494
  TRANSCRIPT_MOUNT_ESCALATION_REFRESH_MS,
18495
18495
  bindSourceEscalations
18496
18496
  } = await import("../transcript-mount-health-OHE6IVJV.js");
18497
- const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-LKJVSRHX.js");
18497
+ const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-GB4SLWPX.js");
18498
18498
  const mountConfig = resolveTranscriptMountConfig();
18499
18499
  const liveAgents = agentState.persistentSessionAgents;
18500
18500
  for (const tracked of [
@@ -18659,7 +18659,7 @@ async function pollCycleInner() {
18659
18659
  }
18660
18660
  try {
18661
18661
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
18662
- const { probeSessionAuth } = await import("../session-auth-dead-TSARKC55.js");
18662
+ const { probeSessionAuth } = await import("../session-auth-dead-ZTHC2VD4.js");
18663
18663
  const observations = [];
18664
18664
  const pendingCacheCommits = [];
18665
18665
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -23329,7 +23329,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
23329
23329
  try {
23330
23330
  const freshId = rotateSessionForWedge(codeName);
23331
23331
  consecutiveWedgeCycles.delete(codeName);
23332
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-ZEK2TD5E.js");
23332
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-GIID6ZH2.js");
23333
23333
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
23334
23334
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
23335
23335
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -23372,7 +23372,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
23372
23372
  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}`));
23373
23373
  void (async () => {
23374
23374
  try {
23375
- const { collectDiagnostics } = await import("../persistent-session-LKJVSRHX.js");
23375
+ const { collectDiagnostics } = await import("../persistent-session-GB4SLWPX.js");
23376
23376
  await api.post("/host/heartbeat", {
23377
23377
  host_id: hostId,
23378
23378
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -23423,7 +23423,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
23423
23423
  }
23424
23424
  try {
23425
23425
  const hostId = await getHostId();
23426
- const { collectDiagnostics } = await import("../persistent-session-LKJVSRHX.js");
23426
+ const { collectDiagnostics } = await import("../persistent-session-GB4SLWPX.js");
23427
23427
  await api.post("/host/heartbeat", {
23428
23428
  host_id: hostId,
23429
23429
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -24117,7 +24117,7 @@ async function processClaudePairSessions(agents) {
24117
24117
  snapshotPairConfig,
24118
24118
  // ENG-11659: result -> report body + the manager.log line that records it.
24119
24119
  planPairStartReport
24120
- } = await import("../claude-pair-runtime-JWXVVSSG.js");
24120
+ } = await import("../claude-pair-runtime-4PUDIE65.js");
24121
24121
  const { resetClaudeSignin, describeSigninResetForLog, describeSigninResetFailure } = await import("../claude-signin-reset-EF3UO5IK.js");
24122
24122
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
24123
24123
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
@@ -42506,6 +42506,10 @@ var NOTICE_KIND_AUDIENCE = {
42506
42506
  // Second-person instructions to the agent ("Tell the user...", "do not
42507
42507
  // republish"); the user learns the outcome from the agent, not this row.
42508
42508
  canvas_public_approval_resolved: "agent",
42509
+ // ENG-11580: integration.budget.raise approved / denied / approved-but-not-
42510
+ // applied. Addressed to the agent that asked, in that request's session; the
42511
+ // person learns the outcome from the agent (or from the card they tapped).
42512
+ integration_budget_raise_resolved: "agent",
42509
42513
  // A routine fired; the agent picks the work up.
42510
42514
  routine_firing_result: "agent",
42511
42515
  // Live-advisor wake: "Call `live_read` with escalation_id …" — a literal tool
@@ -54000,6 +54004,8 @@ var MAINTENANCE_GATED_TOOLS = /* @__PURE__ */ new Set([
54000
54004
  "onboarding_record_manager_contact",
54001
54005
  "request_batch_approval",
54002
54006
  "request_integration_access",
54007
+ // ENG-11580: files an integration.budget.raise approval row and card.
54008
+ "request_budget_raise",
54003
54009
  "skill_contribute_fragment",
54004
54010
  "skill_create",
54005
54011
  "skill_delete",
package/dist/mcp/index.js CHANGED
@@ -28370,6 +28370,10 @@ var NOTICE_KIND_AUDIENCE = {
28370
28370
  // Second-person instructions to the agent ("Tell the user...", "do not
28371
28371
  // republish"); the user learns the outcome from the agent, not this row.
28372
28372
  canvas_public_approval_resolved: "agent",
28373
+ // ENG-11580: integration.budget.raise approved / denied / approved-but-not-
28374
+ // applied. Addressed to the agent that asked, in that request's session; the
28375
+ // person learns the outcome from the agent (or from the card they tapped).
28376
+ integration_budget_raise_resolved: "agent",
28373
28377
  // A routine fired; the agent picks the work up.
28374
28378
  routine_firing_result: "agent",
28375
28379
  // Live-advisor wake: "Call `live_read` with escalation_id …" — a literal tool
@@ -36411,7 +36415,8 @@ function tableSchema() {
36411
36415
  properties: {
36412
36416
  value: { type: ["string", "number"], maxLength: L.cellText },
36413
36417
  sub: { type: "string", maxLength: L.cellText },
36414
- state: { enum: [...TABLE_CELL_STATES] }
36418
+ state: { enum: [...TABLE_CELL_STATES] },
36419
+ intensity: { type: "number", minimum: 0, maximum: 1 }
36415
36420
  }
36416
36421
  }
36417
36422
  }
@@ -36427,7 +36432,8 @@ function tableSchema() {
36427
36432
  additionalProperties: false,
36428
36433
  properties: {
36429
36434
  state: { enum: [...TABLE_CELL_STATES] },
36430
- label: { type: "string", maxLength: L.label }
36435
+ label: { type: "string", maxLength: L.label },
36436
+ ramp: { type: "boolean" }
36431
36437
  }
36432
36438
  }
36433
36439
  }
@@ -36477,8 +36483,8 @@ var WidgetDefSchema = external_exports.object({
36477
36483
  line \u2192 { categories: string[], series: [{ name, data: number[] }] }
36478
36484
  bar \u2192 { categories: string[], series: [{ name, data: number[] }] }
36479
36485
  donut \u2192 { labels: string[], series: number[] }
36480
- table \u2192 { [rowHeader], columns: string[], rows: [{ label, [sub], cells: [{ [value], [sub], [state] }] }], [legend: [{ state, label }]] }
36481
- Exactly one cell per column in every row. state (${TABLE_CELL_STATES.join("|")}) colours the cell. For a grid coloured by category (e.g. work type), map each category to a state and name it in legend.`
36486
+ table \u2192 { [rowHeader], columns: string[], rows: [{ label, [sub], cells: [{ [value], [sub], [state], [intensity] }] }], [legend: [{ state, label, [ramp] }]] }
36487
+ Exactly one cell per column in every row. state (${TABLE_CELL_STATES.join("|")}) colours the cell. Optional intensity (0-1) shades that state's colour from light to dark for a heatmap (e.g. variance); it needs a non-empty state, and legend ramp: true shows the light-to-dark scale. For a grid coloured by category (e.g. work type), map each category to a state and name it in legend.`
36482
36488
  ),
36483
36489
  title: external_exports.string().optional().describe("Title shown above the widget."),
36484
36490
  prompt: external_exports.string().describe("What future-you reads on every refresh. Tight, specific \u2014 e.g. 'Total Xero revenue last 30 days. value as $N,NNN AUD (whole dollars \u2014 no cents on dashboards), delta vs prior 30d, values = daily revenue.'"),
@@ -47271,6 +47277,8 @@ var MAINTENANCE_GATED_TOOLS = /* @__PURE__ */ new Set([
47271
47277
  "onboarding_record_manager_contact",
47272
47278
  "request_batch_approval",
47273
47279
  "request_integration_access",
47280
+ // ENG-11580: files an integration.budget.raise approval row and card.
47281
+ "request_budget_raise",
47274
47282
  "skill_contribute_fragment",
47275
47283
  "skill_create",
47276
47284
  "skill_delete",
@@ -42500,6 +42500,10 @@ var NOTICE_KIND_AUDIENCE = {
42500
42500
  // Second-person instructions to the agent ("Tell the user...", "do not
42501
42501
  // republish"); the user learns the outcome from the agent, not this row.
42502
42502
  canvas_public_approval_resolved: "agent",
42503
+ // ENG-11580: integration.budget.raise approved / denied / approved-but-not-
42504
+ // applied. Addressed to the agent that asked, in that request's session; the
42505
+ // person learns the outcome from the agent (or from the card they tapped).
42506
+ integration_budget_raise_resolved: "agent",
42503
42507
  // A routine fired; the agent picks the work up.
42504
42508
  routine_firing_result: "agent",
42505
42509
  // Live-advisor wake: "Call `live_read` with escalation_id …" — a literal tool
@@ -30993,6 +30993,8 @@ var MAINTENANCE_GATED_TOOLS = /* @__PURE__ */ new Set([
30993
30993
  "onboarding_record_manager_contact",
30994
30994
  "request_batch_approval",
30995
30995
  "request_integration_access",
30996
+ // ENG-11580: files an integration.budget.raise approval row and card.
30997
+ "request_budget_raise",
30996
30998
  "skill_contribute_fragment",
30997
30999
  "skill_create",
30998
31000
  "skill_delete",
@@ -36914,6 +36916,10 @@ var NOTICE_KIND_AUDIENCE = {
36914
36916
  // Second-person instructions to the agent ("Tell the user...", "do not
36915
36917
  // republish"); the user learns the outcome from the agent, not this row.
36916
36918
  canvas_public_approval_resolved: "agent",
36919
+ // ENG-11580: integration.budget.raise approved / denied / approved-but-not-
36920
+ // applied. Addressed to the agent that asked, in that request's session; the
36921
+ // person learns the outcome from the agent (or from the card they tapped).
36922
+ integration_budget_raise_resolved: "agent",
36917
36923
  // A routine fired; the agent picks the work up.
36918
36924
  routine_firing_result: "agent",
36919
36925
  // Live-advisor wake: "Call `live_read` with escalation_id …" — a literal tool
@@ -31210,6 +31210,8 @@ var MAINTENANCE_GATED_TOOLS = /* @__PURE__ */ new Set([
31210
31210
  "onboarding_record_manager_contact",
31211
31211
  "request_batch_approval",
31212
31212
  "request_integration_access",
31213
+ // ENG-11580: files an integration.budget.raise approval row and card.
31214
+ "request_budget_raise",
31213
31215
  "skill_contribute_fragment",
31214
31216
  "skill_create",
31215
31217
  "skill_delete",
@@ -37125,6 +37127,10 @@ var NOTICE_KIND_AUDIENCE = {
37125
37127
  // Second-person instructions to the agent ("Tell the user...", "do not
37126
37128
  // republish"); the user learns the outcome from the agent, not this row.
37127
37129
  canvas_public_approval_resolved: "agent",
37130
+ // ENG-11580: integration.budget.raise approved / denied / approved-but-not-
37131
+ // applied. Addressed to the agent that asked, in that request's session; the
37132
+ // person learns the outcome from the agent (or from the card they tapped).
37133
+ integration_budget_raise_resolved: "agent",
37128
37134
  // A routine fired; the agent picks the work up.
37129
37135
  routine_firing_result: "agent",
37130
37136
  // Live-advisor wake: "Call `live_read` with escalation_id …" — a literal tool