@integrity-labs/agt-cli 0.28.806 → 0.28.807
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-TWZFTSGP.js → chunk-GIV6ORI3.js} +2 -2
- package/dist/{chunk-7TIQODEK.js → chunk-SHQCTBFE.js} +4 -4
- package/dist/{chunk-RMBASAMS.js → chunk-VK35F6O7.js} +21 -1
- package/dist/{chunk-RMBASAMS.js.map → chunk-VK35F6O7.js.map} +1 -1
- package/dist/{claude-pair-runtime-YEW7Y5N2.js → claude-pair-runtime-XZLX2PEL.js} +2 -2
- package/dist/lib/manager-worker.js +13 -13
- package/dist/mcp/direct-chat-channel.js +20 -0
- package/dist/mcp/index.js +78 -1
- package/dist/mcp/origami.js +20 -0
- package/dist/mcp/slack-channel.js +20 -0
- package/dist/mcp/telegram-channel.js +20 -0
- package/dist/{persistent-session-GPVAPK4S.js → persistent-session-LEICQMWY.js} +3 -3
- package/dist/{responsiveness-probe-7FEKDJZW.js → responsiveness-probe-WEXP254C.js} +3 -3
- package/dist/{session-auth-dead-ZBMVGQYW.js → session-auth-dead-AROKHZET.js} +2 -2
- package/package.json +1 -1
- /package/dist/{chunk-TWZFTSGP.js.map → chunk-GIV6ORI3.js.map} +0 -0
- /package/dist/{chunk-7TIQODEK.js.map → chunk-SHQCTBFE.js.map} +0 -0
- /package/dist/{claude-pair-runtime-YEW7Y5N2.js.map → claude-pair-runtime-XZLX2PEL.js.map} +0 -0
- /package/dist/{persistent-session-GPVAPK4S.js.map → persistent-session-LEICQMWY.js.map} +0 -0
- /package/dist/{responsiveness-probe-7FEKDJZW.js.map → responsiveness-probe-WEXP254C.js.map} +0 -0
- /package/dist/{session-auth-dead-ZBMVGQYW.js.map → session-auth-dead-AROKHZET.js.map} +0 -0
|
@@ -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-LEICQMWY.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-XZLX2PEL.js.map
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
safeWriteJsonAtomic,
|
|
59
59
|
setConfigHash,
|
|
60
60
|
tripClass
|
|
61
|
-
} from "../chunk-
|
|
61
|
+
} from "../chunk-SHQCTBFE.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-GIV6ORI3.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-VK35F6O7.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-WEXP254C.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.807" : "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-LEICQMWY.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-LEICQMWY.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-WEXP254C.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-WEXP254C.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-AROKHZET.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-LEICQMWY.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-LEICQMWY.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-XZLX2PEL.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));
|
|
@@ -37279,6 +37279,26 @@ var FLAG_REGISTRY = [
|
|
|
37279
37279
|
// env var is retired.
|
|
37280
37280
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
37281
37281
|
},
|
|
37282
|
+
{
|
|
37283
|
+
key: "slack-manifest-remediate",
|
|
37284
|
+
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.",
|
|
37285
|
+
flagType: "boolean",
|
|
37286
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
37287
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
37288
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
37289
|
+
// customer's Slack app.
|
|
37290
|
+
defaultValue: false,
|
|
37291
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
37292
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
37293
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
37294
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
37295
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
37296
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
37297
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
37298
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
37299
|
+
// unguarded write away.
|
|
37300
|
+
sensitive: true
|
|
37301
|
+
},
|
|
37282
37302
|
{
|
|
37283
37303
|
key: "integration-reauth-reminders",
|
|
37284
37304
|
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 };
|
|
@@ -44363,6 +44384,26 @@ var FLAG_REGISTRY = [
|
|
|
44363
44384
|
// env var is retired.
|
|
44364
44385
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
44365
44386
|
},
|
|
44387
|
+
{
|
|
44388
|
+
key: "slack-manifest-remediate",
|
|
44389
|
+
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.",
|
|
44390
|
+
flagType: "boolean",
|
|
44391
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
44392
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
44393
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
44394
|
+
// customer's Slack app.
|
|
44395
|
+
defaultValue: false,
|
|
44396
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
44397
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
44398
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
44399
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
44400
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
44401
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
44402
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
44403
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
44404
|
+
// unguarded write away.
|
|
44405
|
+
sensitive: true
|
|
44406
|
+
},
|
|
44366
44407
|
{
|
|
44367
44408
|
key: "integration-reauth-reminders",
|
|
44368
44409
|
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 +46009,37 @@ server.tool(
|
|
|
45968
46009
|
}
|
|
45969
46010
|
}
|
|
45970
46011
|
);
|
|
46012
|
+
server.tool(
|
|
46013
|
+
"kanban_respond",
|
|
46014
|
+
'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.',
|
|
46015
|
+
{
|
|
46016
|
+
card_id: external_exports.string().describe(
|
|
46017
|
+
'The card id, exactly as kanban_list shows it under "You are blocking these".'
|
|
46018
|
+
),
|
|
46019
|
+
text: external_exports.string().optional().describe(
|
|
46020
|
+
"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`."
|
|
46021
|
+
),
|
|
46022
|
+
value: external_exports.string().optional().describe("Machine value of a choice, when the card offered options. Otherwise omit."),
|
|
46023
|
+
label: external_exports.string().optional().describe("Human label for that choice, when it differs from the value.")
|
|
46024
|
+
},
|
|
46025
|
+
async (params) => {
|
|
46026
|
+
let data;
|
|
46027
|
+
try {
|
|
46028
|
+
data = await apiPost("/host/kanban/respond", {
|
|
46029
|
+
agent_id: AGT_AGENT_ID,
|
|
46030
|
+
card_id: params.card_id,
|
|
46031
|
+
...params.text ? { text: params.text } : {},
|
|
46032
|
+
...params.value ? { value: params.value } : {},
|
|
46033
|
+
...params.label ? { label: params.label } : {}
|
|
46034
|
+
});
|
|
46035
|
+
} catch (err) {
|
|
46036
|
+
return {
|
|
46037
|
+
content: [{ type: "text", text: `Could not send your answer: ${err.message}` }]
|
|
46038
|
+
};
|
|
46039
|
+
}
|
|
46040
|
+
return { content: [{ type: "text", text: describeKanbanRespondOutcome(data) }] };
|
|
46041
|
+
}
|
|
46042
|
+
);
|
|
45971
46043
|
server.tool(
|
|
45972
46044
|
"kanban_recall",
|
|
45973
46045
|
'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 +47920,11 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
47848
47920
|
// ENG-8281: the inverse of assign_kanban_to_human — take a human-assigned
|
|
47849
47921
|
// card back so the agent can finally close it.
|
|
47850
47922
|
"kanban_recall",
|
|
47923
|
+
// ENG-9838: the UNBLOCKING direction of waiting_on_agent. Parking already
|
|
47924
|
+
// notified the target; the answer had no route back, so every agent-to-agent
|
|
47925
|
+
// park needed a second, unlinked card carrying the answer beside the card it
|
|
47926
|
+
// was meant to unblock.
|
|
47927
|
+
"kanban_respond",
|
|
47851
47928
|
// ENG-9050: the return path for delegated work.
|
|
47852
47929
|
"kanban_reopen",
|
|
47853
47930
|
// ENG-9375: the READ path over a teammate's board (counts only).
|
package/dist/mcp/origami.js
CHANGED
|
@@ -43003,6 +43003,26 @@ var FLAG_REGISTRY = [
|
|
|
43003
43003
|
// env var is retired.
|
|
43004
43004
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
43005
43005
|
},
|
|
43006
|
+
{
|
|
43007
|
+
key: "slack-manifest-remediate",
|
|
43008
|
+
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.",
|
|
43009
|
+
flagType: "boolean",
|
|
43010
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
43011
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
43012
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
43013
|
+
// customer's Slack app.
|
|
43014
|
+
defaultValue: false,
|
|
43015
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
43016
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
43017
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
43018
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
43019
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
43020
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
43021
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
43022
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
43023
|
+
// unguarded write away.
|
|
43024
|
+
sensitive: true
|
|
43025
|
+
},
|
|
43006
43026
|
{
|
|
43007
43027
|
key: "integration-reauth-reminders",
|
|
43008
43028
|
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.",
|
|
@@ -37526,6 +37526,26 @@ var FLAG_REGISTRY = [
|
|
|
37526
37526
|
// env var is retired.
|
|
37527
37527
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
37528
37528
|
},
|
|
37529
|
+
{
|
|
37530
|
+
key: "slack-manifest-remediate",
|
|
37531
|
+
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.",
|
|
37532
|
+
flagType: "boolean",
|
|
37533
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
37534
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
37535
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
37536
|
+
// customer's Slack app.
|
|
37537
|
+
defaultValue: false,
|
|
37538
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
37539
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
37540
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
37541
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
37542
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
37543
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
37544
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
37545
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
37546
|
+
// unguarded write away.
|
|
37547
|
+
sensitive: true
|
|
37548
|
+
},
|
|
37529
37549
|
{
|
|
37530
37550
|
key: "integration-reauth-reminders",
|
|
37531
37551
|
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.",
|
|
@@ -37684,6 +37684,26 @@ var FLAG_REGISTRY = [
|
|
|
37684
37684
|
// env var is retired.
|
|
37685
37685
|
envVar: "AUGMENTED_CONNECTIVITY_ESCALATION_ENABLED"
|
|
37686
37686
|
},
|
|
37687
|
+
{
|
|
37688
|
+
key: "slack-manifest-remediate",
|
|
37689
|
+
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.",
|
|
37690
|
+
flagType: "boolean",
|
|
37691
|
+
// Declared safe value is `false` (alert-only), matching the cron's compiled
|
|
37692
|
+
// default. The fail-safe direction is the opposite of a paging gate's and
|
|
37693
|
+
// matters more: a flag-DB read error must never authorise a WRITE to a
|
|
37694
|
+
// customer's Slack app.
|
|
37695
|
+
defaultValue: false,
|
|
37696
|
+
// Operator override, same precedence and vocabulary as the connectivity
|
|
37697
|
+
// escalation gate above, so an operator who knows one knows both.
|
|
37698
|
+
envVar: "AUGMENTED_SLACK_MANIFEST_REMEDIATE_ENABLED",
|
|
37699
|
+
// ADR-0022 §4. NOTE this is where it diverges from the connectivity gate it
|
|
37700
|
+
// otherwise mirrors, and the divergence is the point: arming THAT one only
|
|
37701
|
+
// causes alerts to open, while arming THIS one authorises a cron to REPLACE
|
|
37702
|
+
// manifests on customer-owned Slack apps. That is precisely the class the
|
|
37703
|
+
// sensitive marker exists for — a control whose relaxation should not be one
|
|
37704
|
+
// unguarded write away.
|
|
37705
|
+
sensitive: true
|
|
37706
|
+
},
|
|
37687
37707
|
{
|
|
37688
37708
|
key: "integration-reauth-reminders",
|
|
37689
37709
|
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-GIV6ORI3.js";
|
|
53
|
+
import "./chunk-VK35F6O7.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-LEICQMWY.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-GIV6ORI3.js";
|
|
4
|
+
import "./chunk-VK35F6O7.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-WEXP254C.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VK35F6O7.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-AROKHZET.js.map
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|