@integrity-labs/agt-cli 0.28.806 → 0.28.808
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-7TIQODEK.js → chunk-LLR42RME.js} +4 -4
- package/dist/{chunk-RMBASAMS.js → chunk-SWUBTUYM.js} +49 -3
- package/dist/chunk-SWUBTUYM.js.map +1 -0
- package/dist/{chunk-TWZFTSGP.js → chunk-TLPQULYH.js} +2 -2
- package/dist/{claude-pair-runtime-YEW7Y5N2.js → claude-pair-runtime-FUT7SLRJ.js} +2 -2
- package/dist/lib/manager-worker.js +13 -13
- package/dist/mcp/direct-chat-channel.js +21 -0
- package/dist/mcp/index.js +79 -1
- package/dist/mcp/origami.js +21 -0
- package/dist/mcp/slack-channel.js +21 -0
- package/dist/mcp/telegram-channel.js +21 -0
- package/dist/{persistent-session-GPVAPK4S.js → persistent-session-Q23JIYBR.js} +3 -3
- package/dist/{responsiveness-probe-7FEKDJZW.js → responsiveness-probe-T2I27SCG.js} +3 -3
- package/dist/{session-auth-dead-ZBMVGQYW.js → session-auth-dead-O7DBSJ3W.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-RMBASAMS.js.map +0 -1
- /package/dist/{chunk-7TIQODEK.js.map → chunk-LLR42RME.js.map} +0 -0
- /package/dist/{chunk-TWZFTSGP.js.map → chunk-TLPQULYH.js.map} +0 -0
- /package/dist/{claude-pair-runtime-YEW7Y5N2.js.map → claude-pair-runtime-FUT7SLRJ.js.map} +0 -0
- /package/dist/{persistent-session-GPVAPK4S.js.map → persistent-session-Q23JIYBR.js.map} +0 -0
- /package/dist/{responsiveness-probe-7FEKDJZW.js.map → responsiveness-probe-T2I27SCG.js.map} +0 -0
- /package/dist/{session-auth-dead-ZBMVGQYW.js.map → session-auth-dead-O7DBSJ3W.js.map} +0 -0
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
rotateDailySession,
|
|
19
19
|
sessionFileExists,
|
|
20
20
|
todayLocalIso
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-SWUBTUYM.js";
|
|
22
22
|
import {
|
|
23
23
|
reapOrphanChannelMcps
|
|
24
24
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -5209,4 +5209,4 @@ export {
|
|
|
5209
5209
|
stopAllSessionsAndWait,
|
|
5210
5210
|
getProjectDir
|
|
5211
5211
|
};
|
|
5212
|
-
//# sourceMappingURL=chunk-
|
|
5212
|
+
//# sourceMappingURL=chunk-TLPQULYH.js.map
|
|
@@ -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-Q23JIYBR.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-FUT7SLRJ.js.map
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
safeWriteJsonAtomic,
|
|
59
59
|
setConfigHash,
|
|
60
60
|
tripClass
|
|
61
|
-
} from "../chunk-
|
|
61
|
+
} from "../chunk-LLR42RME.js";
|
|
62
62
|
import {
|
|
63
63
|
getProjectDir as getProjectDir2,
|
|
64
64
|
getReadyTasks,
|
|
@@ -123,7 +123,7 @@ import {
|
|
|
123
123
|
takeZombieDetection,
|
|
124
124
|
toOpencodeModel,
|
|
125
125
|
writeEgressAllowlist
|
|
126
|
-
} from "../chunk-
|
|
126
|
+
} from "../chunk-TLPQULYH.js";
|
|
127
127
|
import {
|
|
128
128
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
129
129
|
AnchorSessionClient,
|
|
@@ -215,7 +215,7 @@ import {
|
|
|
215
215
|
subagentActivityAgeSeconds,
|
|
216
216
|
sumTranscriptUsageInWindow,
|
|
217
217
|
transcriptActivityAgeSeconds
|
|
218
|
-
} from "../chunk-
|
|
218
|
+
} from "../chunk-SWUBTUYM.js";
|
|
219
219
|
import {
|
|
220
220
|
reapOrphanChannelMcps
|
|
221
221
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -12918,7 +12918,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
12918
12918
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
12919
12919
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
12920
12920
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
12921
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
12921
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-T2I27SCG.js");
|
|
12922
12922
|
const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
|
|
12923
12923
|
if (newest === null) return null;
|
|
12924
12924
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -13578,7 +13578,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
13578
13578
|
var lastVersionCheckAt = 0;
|
|
13579
13579
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
13580
13580
|
var lastResponsivenessProbeAt = 0;
|
|
13581
|
-
var agtCliVersion = true ? "0.28.
|
|
13581
|
+
var agtCliVersion = true ? "0.28.808" : "dev";
|
|
13582
13582
|
function resolveBrewPath(execFileSync2) {
|
|
13583
13583
|
try {
|
|
13584
13584
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -15125,7 +15125,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
15125
15125
|
if (codeNames.length === 0) return;
|
|
15126
15126
|
void (async () => {
|
|
15127
15127
|
try {
|
|
15128
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15128
|
+
const { collectDiagnostics } = await import("../persistent-session-Q23JIYBR.js");
|
|
15129
15129
|
await api.post("/host/heartbeat", {
|
|
15130
15130
|
host_id: hostId,
|
|
15131
15131
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -15266,7 +15266,7 @@ async function pollCycleInner() {
|
|
|
15266
15266
|
}
|
|
15267
15267
|
try {
|
|
15268
15268
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
15269
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
15269
|
+
const { collectDiagnostics } = await import("../persistent-session-Q23JIYBR.js");
|
|
15270
15270
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
15271
15271
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
|
|
15272
15272
|
let tailscaleHostname;
|
|
@@ -15435,7 +15435,7 @@ async function pollCycleInner() {
|
|
|
15435
15435
|
collectPanelessActivityProbes,
|
|
15436
15436
|
getResponsivenessIntervalMs,
|
|
15437
15437
|
occupancyQualificationClassifications
|
|
15438
|
-
} = await import("../responsiveness-probe-
|
|
15438
|
+
} = await import("../responsiveness-probe-T2I27SCG.js");
|
|
15439
15439
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
15440
15440
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
15441
15441
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -15552,7 +15552,7 @@ async function pollCycleInner() {
|
|
|
15552
15552
|
collectResponsivenessProbes,
|
|
15553
15553
|
livePendingInboundOldestAgeSeconds,
|
|
15554
15554
|
parkPendingInbound
|
|
15555
|
-
} = await import("../responsiveness-probe-
|
|
15555
|
+
} = await import("../responsiveness-probe-T2I27SCG.js");
|
|
15556
15556
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
|
|
15557
15557
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
15558
15558
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -15708,7 +15708,7 @@ async function pollCycleInner() {
|
|
|
15708
15708
|
}
|
|
15709
15709
|
try {
|
|
15710
15710
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
|
|
15711
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
15711
|
+
const { probeSessionAuth } = await import("../session-auth-dead-O7DBSJ3W.js");
|
|
15712
15712
|
const observations = [];
|
|
15713
15713
|
const pendingCacheCommits = [];
|
|
15714
15714
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -19868,7 +19868,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
19868
19868
|
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}`));
|
|
19869
19869
|
void (async () => {
|
|
19870
19870
|
try {
|
|
19871
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
19871
|
+
const { collectDiagnostics } = await import("../persistent-session-Q23JIYBR.js");
|
|
19872
19872
|
await api.post("/host/heartbeat", {
|
|
19873
19873
|
host_id: hostId,
|
|
19874
19874
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -19914,7 +19914,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
19914
19914
|
}
|
|
19915
19915
|
try {
|
|
19916
19916
|
const hostId = await getHostId();
|
|
19917
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
19917
|
+
const { collectDiagnostics } = await import("../persistent-session-Q23JIYBR.js");
|
|
19918
19918
|
await api.post("/host/heartbeat", {
|
|
19919
19919
|
host_id: hostId,
|
|
19920
19920
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
|
|
@@ -20550,7 +20550,7 @@ async function processClaudePairSessions(agents) {
|
|
|
20550
20550
|
killPairSession,
|
|
20551
20551
|
pairTmuxSession,
|
|
20552
20552
|
finalizeClaudePairOnboarding
|
|
20553
|
-
} = await import("../claude-pair-runtime-
|
|
20553
|
+
} = await import("../claude-pair-runtime-FUT7SLRJ.js");
|
|
20554
20554
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
20555
20555
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
20556
20556
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -31990,6 +31990,7 @@ var CLAUDE_MD_CHARS_PER_TOKEN = 3.57;
|
|
|
31990
31990
|
var CLAUDE_MD_CONTEXT_WINDOW_TOKENS = 2e5;
|
|
31991
31991
|
var CLAUDE_MD_ALARM_SHARE = 0.1;
|
|
31992
31992
|
var CLAUDE_MD_CONTEXT_ALARM_CHARS = Math.round(CLAUDE_MD_CONTEXT_WINDOW_TOKENS * CLAUDE_MD_ALARM_SHARE * CLAUDE_MD_CHARS_PER_TOKEN);
|
|
31993
|
+
var CLAUDE_MD_WARN_INTERVAL_MS = 60 * 60 * 1e3;
|
|
31993
31994
|
|
|
31994
31995
|
// ../core/dist/integrations/context-validator.js
|
|
31995
31996
|
var import__2 = __toESM(require__(), 1);
|
|
@@ -37279,6 +37280,26 @@ var FLAG_REGISTRY = [
|
|
|
37279
37280
|
// env var is retired.
|
|
37280
37281
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
37281
37282
|
},
|
|
37283
|
+
{
|
|
37284
|
+
key: "slack-manifest-remediate",
|
|
37285
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
37286
|
+
flagType: "boolean",
|
|
37287
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
37288
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
37289
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
37290
|
+
// customer's Slack app.
|
|
37291
|
+
defaultValue: false,
|
|
37292
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
37293
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
37294
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
37295
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
37296
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
37297
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
37298
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
37299
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
37300
|
+
// unguarded write away.
|
|
37301
|
+
sensitive: true
|
|
37302
|
+
},
|
|
37282
37303
|
{
|
|
37283
37304
|
key: "integration-reauth-reminders",
|
|
37284
37305
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
package/dist/mcp/index.js
CHANGED
|
@@ -37099,7 +37099,7 @@ function renderKanbanList(items, nowMs = Date.now()) {
|
|
|
37099
37099
|
return lines.join("\n");
|
|
37100
37100
|
}
|
|
37101
37101
|
var BLOCKED_ON_ME_SECTION_HEADING = "You are blocking these (another agent has stopped)";
|
|
37102
|
-
var BLOCKED_ON_ME_SECTION_NOTE = "_Another agent has PARKED its own work until you act. These are not your cards and not pullable work \u2014 you cannot move, note or complete them, and they do not count toward your in-progress load. Do the thing named, then
|
|
37102
|
+
var BLOCKED_ON_ME_SECTION_NOTE = "_Another agent has PARKED its own work until you act. These are not your cards and not pullable work \u2014 you cannot move, note or complete them, and they do not count toward your in-progress load. Do the thing named, then answer with `kanban_respond` (card_id + your answer) \u2014 that delivers it ON the parked card and un-parks it. Do NOT open a second card to carry the answer._";
|
|
37103
37103
|
var HUMAN_ASSIGNED_SECTION_HEADING = "Assigned to a person (not yours to action)";
|
|
37104
37104
|
var HUMAN_ASSIGNED_SECTION_NOTE = "_These belong to a person, not to you. You cannot move, note or complete them \u2014 every kanban write is refused. If the work is finished (or was never really theirs), use `kanban_recall` to pull the card back onto your board, then close it as normal._";
|
|
37105
37105
|
|
|
@@ -37824,6 +37824,27 @@ function formatKanbanLogResult(label, data, match = {}) {
|
|
|
37824
37824
|
};
|
|
37825
37825
|
}
|
|
37826
37826
|
|
|
37827
|
+
// src/kanban-respond-outcome.ts
|
|
37828
|
+
function describeKanbanRespondOutcome(data) {
|
|
37829
|
+
if (data.ok && data.delivered !== false) {
|
|
37830
|
+
return "Answer delivered. Their card is un-parked and back on their board \u2014 they will pick it up from here, so it is off your plate.";
|
|
37831
|
+
}
|
|
37832
|
+
if (data.reason === "recorded_undelivered" || data.ok && data.delivered === false) {
|
|
37833
|
+
return "Your answer was recorded and the card un-parked, but delivery to that agent could not be confirmed \u2014 tell them directly as well so it is not lost.";
|
|
37834
|
+
}
|
|
37835
|
+
const refusal = REFUSAL_MESSAGES[data.reason ?? ""];
|
|
37836
|
+
if (refusal) return refusal(data);
|
|
37837
|
+
return data.error ?? "Could not send your answer.";
|
|
37838
|
+
}
|
|
37839
|
+
var REFUSAL_MESSAGES = {
|
|
37840
|
+
not_found: () => 'No card is parked on you with that id. Re-read kanban_list \u2014 only cards under "You are blocking these" can be answered here, and the id must be copied exactly.',
|
|
37841
|
+
self_block: () => "That card is parked on YOU by you \u2014 a self-block, almost always a mistyped code_name when it was parked. Fix it on your own card rather than answering it.",
|
|
37842
|
+
already_responded: () => "Someone already answered that card, so it has resumed. Nothing more to do.",
|
|
37843
|
+
not_actionable: (d) => `That card is no longer parked (status: ${d.status ?? "unknown"}), so there is nothing to un-park. The agent has moved on.`,
|
|
37844
|
+
recorded_not_unparked: () => "Your answer was recorded but the card could not be un-parked, so the agent is still blocked \u2014 tell them directly and check the card."
|
|
37845
|
+
};
|
|
37846
|
+
var HANDLED_REFUSAL_REASONS = Object.keys(REFUSAL_MESSAGES).sort();
|
|
37847
|
+
|
|
37827
37848
|
// src/kanban-update.ts
|
|
37828
37849
|
function buildKanbanUpdateItem(id, fields) {
|
|
37829
37850
|
const item = { id };
|
|
@@ -39513,6 +39534,7 @@ var CLAUDE_MD_CHARS_PER_TOKEN = 3.57;
|
|
|
39513
39534
|
var CLAUDE_MD_CONTEXT_WINDOW_TOKENS = 2e5;
|
|
39514
39535
|
var CLAUDE_MD_ALARM_SHARE = 0.1;
|
|
39515
39536
|
var CLAUDE_MD_CONTEXT_ALARM_CHARS = Math.round(CLAUDE_MD_CONTEXT_WINDOW_TOKENS * CLAUDE_MD_ALARM_SHARE * CLAUDE_MD_CHARS_PER_TOKEN);
|
|
39537
|
+
var CLAUDE_MD_WARN_INTERVAL_MS = 60 * 60 * 1e3;
|
|
39516
39538
|
|
|
39517
39539
|
// ../core/dist/integrations/context-validator.js
|
|
39518
39540
|
var import__2 = __toESM(require__(), 1);
|
|
@@ -44363,6 +44385,26 @@ var FLAG_REGISTRY = [
|
|
|
44363
44385
|
// env var is retired.
|
|
44364
44386
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
44365
44387
|
},
|
|
44388
|
+
{
|
|
44389
|
+
key: "slack-manifest-remediate",
|
|
44390
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
44391
|
+
flagType: "boolean",
|
|
44392
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
44393
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
44394
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
44395
|
+
// customer's Slack app.
|
|
44396
|
+
defaultValue: false,
|
|
44397
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
44398
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
44399
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
44400
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
44401
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
44402
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
44403
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
44404
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
44405
|
+
// unguarded write away.
|
|
44406
|
+
sensitive: true
|
|
44407
|
+
},
|
|
44366
44408
|
{
|
|
44367
44409
|
key: "integration-reauth-reminders",
|
|
44368
44410
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
|
@@ -45968,6 +46010,37 @@ server.tool(
|
|
|
45968
46010
|
}
|
|
45969
46011
|
}
|
|
45970
46012
|
);
|
|
46013
|
+
server.tool(
|
|
46014
|
+
"kanban_respond",
|
|
46015
|
+
'Answer a card ANOTHER agent parked on you, and un-park it so they can resume. Use this for any card in the "You are blocking these" section of kanban_list: that agent has STOPPED until you act, and this is the only way your answer reaches the card they are blocked on. Do the thing they asked, then send the answer here. Do NOT create a second card to carry it - they would end up with the parked card AND a separate one holding the thing that unblocks it, joined by nothing. You can only respond to a card that names YOU in its wait.',
|
|
46016
|
+
{
|
|
46017
|
+
card_id: external_exports.string().describe(
|
|
46018
|
+
'The card id, exactly as kanban_list shows it under "You are blocking these".'
|
|
46019
|
+
),
|
|
46020
|
+
text: external_exports.string().optional().describe(
|
|
46021
|
+
"Your answer, self-contained. This is what the blocked agent resumes on, so give it the ANSWER rather than a pointer to one - it cannot see your board, your session or your files. Required unless you are picking a choice with `value`."
|
|
46022
|
+
),
|
|
46023
|
+
value: external_exports.string().optional().describe("Machine value of a choice, when the card offered options. Otherwise omit."),
|
|
46024
|
+
label: external_exports.string().optional().describe("Human label for that choice, when it differs from the value.")
|
|
46025
|
+
},
|
|
46026
|
+
async (params) => {
|
|
46027
|
+
let data;
|
|
46028
|
+
try {
|
|
46029
|
+
data = await apiPost("/host/kanban/respond", {
|
|
46030
|
+
agent_id: AGT_AGENT_ID,
|
|
46031
|
+
card_id: params.card_id,
|
|
46032
|
+
...params.text ? { text: params.text } : {},
|
|
46033
|
+
...params.value ? { value: params.value } : {},
|
|
46034
|
+
...params.label ? { label: params.label } : {}
|
|
46035
|
+
});
|
|
46036
|
+
} catch (err) {
|
|
46037
|
+
return {
|
|
46038
|
+
content: [{ type: "text", text: `Could not send your answer: ${err.message}` }]
|
|
46039
|
+
};
|
|
46040
|
+
}
|
|
46041
|
+
return { content: [{ type: "text", text: describeKanbanRespondOutcome(data) }] };
|
|
46042
|
+
}
|
|
46043
|
+
);
|
|
45971
46044
|
server.tool(
|
|
45972
46045
|
"kanban_recall",
|
|
45973
46046
|
'Pull a card you assigned to a HUMAN teammate back onto your own board. Use this when a card shows under "Assigned to a person" in kanban_list and you need to act on it - typically because the person finished the work (or it is no longer needed) and the card has to be closed. While a card is assigned to a person, every kanban write to it is refused; recall makes it yours again so kanban_move / kanban_done / kanban_log work. Recall does NOT complete the card - after recalling, close it yourself with kanban_done and a result. You can only recall a card you assigned.',
|
|
@@ -47848,6 +47921,11 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
47848
47921
|
// ENG-8281: the inverse of assign_kanban_to_human — take a human-assigned
|
|
47849
47922
|
// card back so the agent can finally close it.
|
|
47850
47923
|
"kanban_recall",
|
|
47924
|
+
// ENG-9838: the UNBLOCKING direction of waiting_on_agent. Parking already
|
|
47925
|
+
// notified the target; the answer had no route back, so every agent-to-agent
|
|
47926
|
+
// park needed a second, unlinked card carrying the answer beside the card it
|
|
47927
|
+
// was meant to unblock.
|
|
47928
|
+
"kanban_respond",
|
|
47851
47929
|
// ENG-9050: the return path for delegated work.
|
|
47852
47930
|
"kanban_reopen",
|
|
47853
47931
|
// ENG-9375: the READ path over a teammate's board (counts only).
|
package/dist/mcp/origami.js
CHANGED
|
@@ -38174,6 +38174,7 @@ var CLAUDE_MD_CHARS_PER_TOKEN = 3.57;
|
|
|
38174
38174
|
var CLAUDE_MD_CONTEXT_WINDOW_TOKENS = 2e5;
|
|
38175
38175
|
var CLAUDE_MD_ALARM_SHARE = 0.1;
|
|
38176
38176
|
var CLAUDE_MD_CONTEXT_ALARM_CHARS = Math.round(CLAUDE_MD_CONTEXT_WINDOW_TOKENS * CLAUDE_MD_ALARM_SHARE * CLAUDE_MD_CHARS_PER_TOKEN);
|
|
38177
|
+
var CLAUDE_MD_WARN_INTERVAL_MS = 60 * 60 * 1e3;
|
|
38177
38178
|
|
|
38178
38179
|
// ../core/dist/integrations/context-validator.js
|
|
38179
38180
|
var import__2 = __toESM(require__(), 1);
|
|
@@ -43003,6 +43004,26 @@ var FLAG_REGISTRY = [
|
|
|
43003
43004
|
// env var is retired.
|
|
43004
43005
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
43005
43006
|
},
|
|
43007
|
+
{
|
|
43008
|
+
key: "slack-manifest-remediate",
|
|
43009
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
43010
|
+
flagType: "boolean",
|
|
43011
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
43012
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
43013
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
43014
|
+
// customer's Slack app.
|
|
43015
|
+
defaultValue: false,
|
|
43016
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
43017
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
43018
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
43019
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
43020
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
43021
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
43022
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
43023
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
43024
|
+
// unguarded write away.
|
|
43025
|
+
sensitive: true
|
|
43026
|
+
},
|
|
43006
43027
|
{
|
|
43007
43028
|
key: "integration-reauth-reminders",
|
|
43008
43029
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
|
@@ -32284,6 +32284,7 @@ var CLAUDE_MD_CHARS_PER_TOKEN = 3.57;
|
|
|
32284
32284
|
var CLAUDE_MD_CONTEXT_WINDOW_TOKENS = 2e5;
|
|
32285
32285
|
var CLAUDE_MD_ALARM_SHARE = 0.1;
|
|
32286
32286
|
var CLAUDE_MD_CONTEXT_ALARM_CHARS = Math.round(CLAUDE_MD_CONTEXT_WINDOW_TOKENS * CLAUDE_MD_ALARM_SHARE * CLAUDE_MD_CHARS_PER_TOKEN);
|
|
32287
|
+
var CLAUDE_MD_WARN_INTERVAL_MS = 60 * 60 * 1e3;
|
|
32287
32288
|
|
|
32288
32289
|
// ../core/dist/integrations/context-validator.js
|
|
32289
32290
|
var import__2 = __toESM(require__(), 1);
|
|
@@ -37526,6 +37527,26 @@ var FLAG_REGISTRY = [
|
|
|
37526
37527
|
// env var is retired.
|
|
37527
37528
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
37528
37529
|
},
|
|
37530
|
+
{
|
|
37531
|
+
key: "slack-manifest-remediate",
|
|
37532
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
37533
|
+
flagType: "boolean",
|
|
37534
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
37535
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
37536
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
37537
|
+
// customer's Slack app.
|
|
37538
|
+
defaultValue: false,
|
|
37539
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
37540
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
37541
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
37542
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
37543
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
37544
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
37545
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
37546
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
37547
|
+
// unguarded write away.
|
|
37548
|
+
sensitive: true
|
|
37549
|
+
},
|
|
37529
37550
|
{
|
|
37530
37551
|
key: "integration-reauth-reminders",
|
|
37531
37552
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
|
@@ -32448,6 +32448,7 @@ var CLAUDE_MD_CHARS_PER_TOKEN = 3.57;
|
|
|
32448
32448
|
var CLAUDE_MD_CONTEXT_WINDOW_TOKENS = 2e5;
|
|
32449
32449
|
var CLAUDE_MD_ALARM_SHARE = 0.1;
|
|
32450
32450
|
var CLAUDE_MD_CONTEXT_ALARM_CHARS = Math.round(CLAUDE_MD_CONTEXT_WINDOW_TOKENS * CLAUDE_MD_ALARM_SHARE * CLAUDE_MD_CHARS_PER_TOKEN);
|
|
32451
|
+
var CLAUDE_MD_WARN_INTERVAL_MS = 60 * 60 * 1e3;
|
|
32451
32452
|
|
|
32452
32453
|
// ../core/dist/integrations/context-validator.js
|
|
32453
32454
|
var import__2 = __toESM(require__(), 1);
|
|
@@ -37684,6 +37685,26 @@ var FLAG_REGISTRY = [
|
|
|
37684
37685
|
// env var is retired.
|
|
37685
37686
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
37686
37687
|
},
|
|
37688
|
+
{
|
|
37689
|
+
key: "slack-manifest-remediate",
|
|
37690
|
+
description: "Let the Slack manifest drift monitor PUSH, not just alert (ENG-9963). updateSlackManifest had exactly one caller \u2014 a console button \u2014 so nothing but a human click ever pushed a manifest; ENG-7762 changed the generator with no rollout mechanism and 26 agents went 53 days with no working per-agent slash commands. When on, the daily drift cron pushes the generated manifest for a drifted agent. When off it alerts exactly as before. NOTE what arming this authorises: a push REPLACES a customer-owned Slack app's entire manifest, so the cron only ever pushes drift whose diffs are purely additive (isSafelyRemediable) \u2014 an app with live-only entries a push would destroy is declined and left for a human. Boolean gate; ships dark.",
|
|
37691
|
+
flagType: "boolean",
|
|
37692
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
37693
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
37694
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
37695
|
+
// customer's Slack app.
|
|
37696
|
+
defaultValue: false,
|
|
37697
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
37698
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
37699
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
37700
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
37701
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
37702
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
37703
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
37704
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
37705
|
+
// unguarded write away.
|
|
37706
|
+
sensitive: true
|
|
37707
|
+
},
|
|
37687
37708
|
{
|
|
37688
37709
|
key: "integration-reauth-reminders",
|
|
37689
37710
|
description: "Re-notify an integration that stays in needs_reauth (ENG-8370). Failure notification is at-most-once PER TRANSITION, so an integration nobody repairs is announced once and then silent forever - prod carried a row failing every 30-minute tick for ~21 days on a single day-one notification. When on, the IntegrationReauthReminder cron re-fires the existing reconnect notification on a backoff measured from failure ONSET (+1d, +3d, +7d, then weekly), skipping rows an operator has muted. When off the cron still scans and logs what it WOULD have sent, so the volume can be sized before anyone is messaged. Boolean gate; ships dark.",
|
|
@@ -49,8 +49,8 @@ import {
|
|
|
49
49
|
writeDirectChatSessionState,
|
|
50
50
|
writeEgressAllowlist,
|
|
51
51
|
writePersistentClaudeWrapper
|
|
52
|
-
} from "./chunk-
|
|
53
|
-
import "./chunk-
|
|
52
|
+
} from "./chunk-TLPQULYH.js";
|
|
53
|
+
import "./chunk-SWUBTUYM.js";
|
|
54
54
|
import "./chunk-XWVM4KPK.js";
|
|
55
55
|
export {
|
|
56
56
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -104,4 +104,4 @@ export {
|
|
|
104
104
|
writeEgressAllowlist,
|
|
105
105
|
writePersistentClaudeWrapper
|
|
106
106
|
};
|
|
107
|
-
//# sourceMappingURL=persistent-session-
|
|
107
|
+
//# sourceMappingURL=persistent-session-Q23JIYBR.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-TLPQULYH.js";
|
|
4
|
+
import "./chunk-SWUBTUYM.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -745,4 +745,4 @@ export {
|
|
|
745
745
|
readAndResetSlackReplyBindingClassifications,
|
|
746
746
|
readAndResetSlackReplyTargetClassifications
|
|
747
747
|
};
|
|
748
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
748
|
+
//# sourceMappingURL=responsiveness-probe-T2I27SCG.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SWUBTUYM.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-O7DBSJ3W.js.map
|