@integrity-labs/agt-cli 0.28.244 → 0.28.246
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 +4 -4
- package/dist/{chunk-JKTHAXOS.js → chunk-KN77CF2P.js} +3 -3
- package/dist/{chunk-ZS2T67OF.js → chunk-NFO3GOL3.js} +13 -1
- package/dist/{chunk-ZS2T67OF.js.map → chunk-NFO3GOL3.js.map} +1 -1
- package/dist/{claude-pair-runtime-OURKHXEW.js → claude-pair-runtime-HHEVB5WF.js} +2 -2
- package/dist/lib/manager-worker.js +10 -10
- package/dist/mcp/origami.js +12 -0
- package/dist/mcp/slack-channel.js +31 -6
- package/dist/{persistent-session-X427LHOW.js → persistent-session-7BQ2OE2R.js} +2 -2
- package/dist/{responsiveness-probe-CFF27A7B.js → responsiveness-probe-MUY7HOGQ.js} +2 -2
- package/package.json +1 -1
- /package/dist/{chunk-JKTHAXOS.js.map → chunk-KN77CF2P.js.map} +0 -0
- /package/dist/{claude-pair-runtime-OURKHXEW.js.map → claude-pair-runtime-HHEVB5WF.js.map} +0 -0
- /package/dist/{persistent-session-X427LHOW.js.map → persistent-session-7BQ2OE2R.js.map} +0 -0
- /package/dist/{responsiveness-probe-CFF27A7B.js.map → responsiveness-probe-MUY7HOGQ.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-7BQ2OE2R.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-HHEVB5WF.js.map
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
requireHost,
|
|
38
38
|
safeWriteJsonAtomic,
|
|
39
39
|
setConfigHash
|
|
40
|
-
} from "../chunk-
|
|
40
|
+
} from "../chunk-KN77CF2P.js";
|
|
41
41
|
import {
|
|
42
42
|
getProjectDir as getProjectDir2,
|
|
43
43
|
getReadyTasks,
|
|
@@ -122,7 +122,7 @@ import {
|
|
|
122
122
|
takeZombieDetection,
|
|
123
123
|
transcriptActivityAgeSeconds,
|
|
124
124
|
writeEgressAllowlist
|
|
125
|
-
} from "../chunk-
|
|
125
|
+
} from "../chunk-NFO3GOL3.js";
|
|
126
126
|
import {
|
|
127
127
|
reapOrphanChannelMcps
|
|
128
128
|
} from "../chunk-XWVM4KPK.js";
|
|
@@ -6509,7 +6509,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
6509
6509
|
var lastVersionCheckAt = 0;
|
|
6510
6510
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
6511
6511
|
var lastResponsivenessProbeAt = 0;
|
|
6512
|
-
var agtCliVersion = true ? "0.28.
|
|
6512
|
+
var agtCliVersion = true ? "0.28.246" : "dev";
|
|
6513
6513
|
function resolveBrewPath(execFileSync2) {
|
|
6514
6514
|
try {
|
|
6515
6515
|
const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -7359,7 +7359,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
7359
7359
|
if (codeNames.length === 0) return;
|
|
7360
7360
|
void (async () => {
|
|
7361
7361
|
try {
|
|
7362
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
7362
|
+
const { collectDiagnostics } = await import("../persistent-session-7BQ2OE2R.js");
|
|
7363
7363
|
await api.post("/host/heartbeat", {
|
|
7364
7364
|
host_id: hostId,
|
|
7365
7365
|
agent_diagnostics: collectDiagnostics(codeNames)
|
|
@@ -7457,7 +7457,7 @@ async function pollCycle() {
|
|
|
7457
7457
|
}
|
|
7458
7458
|
try {
|
|
7459
7459
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
7460
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
7460
|
+
const { collectDiagnostics } = await import("../persistent-session-7BQ2OE2R.js");
|
|
7461
7461
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
7462
7462
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
|
|
7463
7463
|
let tailscaleHostname;
|
|
@@ -7605,7 +7605,7 @@ async function pollCycle() {
|
|
|
7605
7605
|
const {
|
|
7606
7606
|
collectResponsivenessProbes,
|
|
7607
7607
|
getResponsivenessIntervalMs
|
|
7608
|
-
} = await import("../responsiveness-probe-
|
|
7608
|
+
} = await import("../responsiveness-probe-MUY7HOGQ.js");
|
|
7609
7609
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
7610
7610
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
7611
7611
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -7637,7 +7637,7 @@ async function pollCycle() {
|
|
|
7637
7637
|
collectResponsivenessProbes,
|
|
7638
7638
|
livePendingInboundOldestAgeSeconds,
|
|
7639
7639
|
parkPendingInbound
|
|
7640
|
-
} = await import("../responsiveness-probe-
|
|
7640
|
+
} = await import("../responsiveness-probe-MUY7HOGQ.js");
|
|
7641
7641
|
const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
|
|
7642
7642
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
7643
7643
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -10452,7 +10452,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
10452
10452
|
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}`));
|
|
10453
10453
|
void (async () => {
|
|
10454
10454
|
try {
|
|
10455
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
10455
|
+
const { collectDiagnostics } = await import("../persistent-session-7BQ2OE2R.js");
|
|
10456
10456
|
await api.post("/host/heartbeat", {
|
|
10457
10457
|
host_id: hostId,
|
|
10458
10458
|
agent_diagnostics: collectDiagnostics([codeName])
|
|
@@ -10502,7 +10502,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
10502
10502
|
}
|
|
10503
10503
|
try {
|
|
10504
10504
|
const hostId = await getHostId();
|
|
10505
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
10505
|
+
const { collectDiagnostics } = await import("../persistent-session-7BQ2OE2R.js");
|
|
10506
10506
|
await api.post("/host/heartbeat", {
|
|
10507
10507
|
host_id: hostId,
|
|
10508
10508
|
agent_diagnostics: collectDiagnostics([codeName])
|
|
@@ -10893,7 +10893,7 @@ async function processClaudePairSessions(agents) {
|
|
|
10893
10893
|
killPairSession,
|
|
10894
10894
|
pairTmuxSession,
|
|
10895
10895
|
finalizeClaudePairOnboarding
|
|
10896
|
-
} = await import("../claude-pair-runtime-
|
|
10896
|
+
} = await import("../claude-pair-runtime-HHEVB5WF.js");
|
|
10897
10897
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
10898
10898
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
10899
10899
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
package/dist/mcp/origami.js
CHANGED
|
@@ -39832,6 +39832,18 @@ var FLAG_REGISTRY = [
|
|
|
39832
39832
|
defaultValue: false,
|
|
39833
39833
|
public: true
|
|
39834
39834
|
},
|
|
39835
|
+
{
|
|
39836
|
+
key: "agent-offers",
|
|
39837
|
+
description: "Agent Routines and the Offers surface (ADR-0041 D4a/D8, ENG-7417): the capability-discovery surface where an agent earns the right to propose a Routine (an Offer) from observed repetition, elicitation, or its template. off = the surface is fully dark (no candidate intake, no Offer creation, no delivery). shadow = the observer runs and would-be Offers are written with a shadow marker, visible to platform admins only, never delivered - the D4a calibration mode that must hit the precision bar on real transcripts before any org goes live. on = the full surface for the org. Evaluated API-side only (the observed feeder additionally requires the memory-extraction flag, whose pipeline it rides), so no host materialisation seam is needed. Flipping off kills candidate intake and Offer delivery but NOT already accepted Routines - their runtimes are ordinary scheduled tasks / kanban templates the user consented to; disabling those is an explicit per-routine revoke (D5b). Ships dark; per-org rollout from the admin Feature Flags page.",
|
|
39838
|
+
flagType: "enum",
|
|
39839
|
+
allowedValues: ["off", "shadow", "on"],
|
|
39840
|
+
// Declared safe value is `off` (fully dark). Fail-safe direction: a flag-DB
|
|
39841
|
+
// read error must never start accumulating routine candidates or delivering
|
|
39842
|
+
// proactive Offers on its own. Shadow is a deliberate per-org calibration
|
|
39843
|
+
// step, not the absent-flag fallback. No envVar - net-new API-side control
|
|
39844
|
+
// with no pre-flags env gate to migrate (ADR-0022 / check-new-env-gates.sh).
|
|
39845
|
+
defaultValue: "off"
|
|
39846
|
+
},
|
|
39835
39847
|
{
|
|
39836
39848
|
key: "channel-quarantine-mode",
|
|
39837
39849
|
description: "Optional-channel quarantine (ENG-5932): off = disabled, shadow = log matches only, enforce = quarantine.",
|
|
@@ -14339,7 +14339,14 @@ function renderSlackBlocks(blocks) {
|
|
|
14339
14339
|
const out = [];
|
|
14340
14340
|
try {
|
|
14341
14341
|
for (const block of asArray(blocks)) {
|
|
14342
|
-
if (!isRecord(block)
|
|
14342
|
+
if (!isRecord(block)) continue;
|
|
14343
|
+
if (isTableElement(block)) {
|
|
14344
|
+
hadTable = true;
|
|
14345
|
+
const rendered = renderTable(block);
|
|
14346
|
+
if (rendered.trim().length > 0) out.push(rendered);
|
|
14347
|
+
continue;
|
|
14348
|
+
}
|
|
14349
|
+
if (asString(block.type) !== "rich_text") continue;
|
|
14343
14350
|
for (const section of asArray(block.elements)) {
|
|
14344
14351
|
if (isTableElement(section)) hadTable = true;
|
|
14345
14352
|
const rendered = renderSection(section, 0);
|
|
@@ -16939,7 +16946,7 @@ function describeLivePending(registry2, now) {
|
|
|
16939
16946
|
}).join("; ");
|
|
16940
16947
|
}
|
|
16941
16948
|
function resolveReplyBinding(input) {
|
|
16942
|
-
const { mode, args, registry: registry2 } = input;
|
|
16949
|
+
const { mode, args, registry: registry2, knownThread } = input;
|
|
16943
16950
|
const now = input.now ?? Date.now();
|
|
16944
16951
|
const modelChannel = args.channel;
|
|
16945
16952
|
const modelThread = args.thread_ts;
|
|
@@ -16962,7 +16969,7 @@ function resolveReplyBinding(input) {
|
|
|
16962
16969
|
unknownInboundId: true
|
|
16963
16970
|
};
|
|
16964
16971
|
}
|
|
16965
|
-
return classifyByCoords(mode, args, registry2, now, true);
|
|
16972
|
+
return classifyByCoords(mode, args, registry2, now, true, knownThread);
|
|
16966
16973
|
}
|
|
16967
16974
|
if (args.proactive === true) {
|
|
16968
16975
|
return {
|
|
@@ -16972,9 +16979,9 @@ function resolveReplyBinding(input) {
|
|
|
16972
16979
|
unknownInboundId: false
|
|
16973
16980
|
};
|
|
16974
16981
|
}
|
|
16975
|
-
return classifyByCoords(mode, args, registry2, now, false);
|
|
16982
|
+
return classifyByCoords(mode, args, registry2, now, false, knownThread);
|
|
16976
16983
|
}
|
|
16977
|
-
function classifyByCoords(mode, args, registry2, now, unknownInboundId) {
|
|
16984
|
+
function classifyByCoords(mode, args, registry2, now, unknownInboundId, knownThread) {
|
|
16978
16985
|
const modelChannel = args.channel;
|
|
16979
16986
|
const modelThread = args.thread_ts;
|
|
16980
16987
|
const matched = matchByCoords(registry2, modelChannel, args.message_ts, modelThread);
|
|
@@ -16994,6 +17001,15 @@ function classifyByCoords(mode, args, registry2, now, unknownInboundId) {
|
|
|
16994
17001
|
unknownInboundId
|
|
16995
17002
|
};
|
|
16996
17003
|
}
|
|
17004
|
+
const participatesInThread = !!modelChannel && (!!modelThread && knownThread?.(modelChannel, modelThread) || !!args.message_ts && knownThread?.(modelChannel, args.message_ts)) === true;
|
|
17005
|
+
if (participatesInThread) {
|
|
17006
|
+
return {
|
|
17007
|
+
channel: modelChannel,
|
|
17008
|
+
threadTs: modelThread,
|
|
17009
|
+
classification: "known_thread",
|
|
17010
|
+
unknownInboundId
|
|
17011
|
+
};
|
|
17012
|
+
}
|
|
16997
17013
|
const decision = {
|
|
16998
17014
|
channel: modelChannel,
|
|
16999
17015
|
threadTs: modelThread,
|
|
@@ -20462,7 +20478,16 @@ mcp.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
20462
20478
|
const binding = resolveReplyBinding({
|
|
20463
20479
|
mode: bindingMode,
|
|
20464
20480
|
args: { inbound_id, channel, thread_ts, message_ts, proactive },
|
|
20465
|
-
registry: slackInboundRegistry
|
|
20481
|
+
registry: slackInboundRegistry,
|
|
20482
|
+
// ENG-7409: the persisted bot_posted thread-participation signal (survives
|
|
20483
|
+
// restart via loadThreadStore). A reply into a thread the agent has posted
|
|
20484
|
+
// in is a legitimate follow-up, so it must not be flagged unknown_target
|
|
20485
|
+
// even when no live inbound marker survives - this is what stops warn from
|
|
20486
|
+
// nagging (and enforce from blocking) ordinary in-thread conversation.
|
|
20487
|
+
knownThread: (c, t) => {
|
|
20488
|
+
const k = buildThreadKey(c, t);
|
|
20489
|
+
return !!k && !!trackedThreads.get(k)?.bot_posted;
|
|
20490
|
+
}
|
|
20466
20491
|
});
|
|
20467
20492
|
recordReplyBindingClassification(SLACK_AGENT_DIR, "slack", {
|
|
20468
20493
|
classification: binding.classification,
|
|
@@ -36,7 +36,7 @@ import {
|
|
|
36
36
|
writeDirectChatSessionState,
|
|
37
37
|
writeEgressAllowlist,
|
|
38
38
|
writePersistentClaudeWrapper
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-NFO3GOL3.js";
|
|
40
40
|
import "./chunk-XWVM4KPK.js";
|
|
41
41
|
export {
|
|
42
42
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -77,4 +77,4 @@ export {
|
|
|
77
77
|
writeEgressAllowlist,
|
|
78
78
|
writePersistentClaudeWrapper
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=persistent-session-
|
|
80
|
+
//# sourceMappingURL=persistent-session-7BQ2OE2R.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NFO3GOL3.js";
|
|
4
4
|
import "./chunk-XWVM4KPK.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/responsiveness-probe.ts
|
|
@@ -418,4 +418,4 @@ export {
|
|
|
418
418
|
readAndResetSlackReplyBindingClassifications,
|
|
419
419
|
readAndResetSlackReplyTargetClassifications
|
|
420
420
|
};
|
|
421
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
421
|
+
//# sourceMappingURL=responsiveness-probe-MUY7HOGQ.js.map
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|