@integrity-labs/agt-cli 0.28.158 → 0.28.160
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 +8 -7
- package/dist/bin/agt.js.map +1 -1
- package/dist/{chunk-3OLFOA4F.js → chunk-23U3HSVH.js} +33 -3
- package/dist/chunk-23U3HSVH.js.map +1 -0
- package/dist/{chunk-TLX6ORJ5.js → chunk-65FVM2UA.js} +85 -1
- package/dist/chunk-65FVM2UA.js.map +1 -0
- package/dist/{chunk-E6ABR63O.js → chunk-GZG5JRRX.js} +2 -2
- package/dist/{claude-pair-runtime-SXO5Q5R6.js → claude-pair-runtime-HN3PEIZ2.js} +2 -2
- package/dist/lib/manager-worker.js +44 -37
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/{persistent-session-N7WFONZC.js → persistent-session-TSVRKR7F.js} +3 -3
- package/dist/{responsiveness-probe-UXJY4YRL.js → responsiveness-probe-DXPMUSVR.js} +3 -3
- package/package.json +1 -1
- package/dist/chunk-3OLFOA4F.js.map +0 -1
- package/dist/chunk-TLX6ORJ5.js.map +0 -1
- /package/dist/{chunk-E6ABR63O.js.map → chunk-GZG5JRRX.js.map} +0 -0
- /package/dist/{claude-pair-runtime-SXO5Q5R6.js.map → claude-pair-runtime-HN3PEIZ2.js.map} +0 -0
- /package/dist/{persistent-session-N7WFONZC.js.map → persistent-session-TSVRKR7F.js.map} +0 -0
- /package/dist/{responsiveness-probe-UXJY4YRL.js.map → responsiveness-probe-DXPMUSVR.js.map} +0 -0
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
formatMissingVar,
|
|
4
4
|
isClaudeFastMode,
|
|
5
5
|
probeMcpEnvSubstitution
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-65FVM2UA.js";
|
|
7
7
|
import {
|
|
8
8
|
reapOrphanChannelMcps
|
|
9
9
|
} from "./chunk-XWVM4KPK.js";
|
|
@@ -1588,4 +1588,4 @@ export {
|
|
|
1588
1588
|
stopAllSessionsAndWait,
|
|
1589
1589
|
getProjectDir
|
|
1590
1590
|
};
|
|
1591
|
-
//# sourceMappingURL=chunk-
|
|
1591
|
+
//# sourceMappingURL=chunk-GZG5JRRX.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-TSVRKR7F.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-HN3PEIZ2.js.map
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
requireHost,
|
|
29
29
|
safeWriteJsonAtomic,
|
|
30
30
|
setConfigHash
|
|
31
|
-
} from "../chunk-
|
|
31
|
+
} from "../chunk-23U3HSVH.js";
|
|
32
32
|
import {
|
|
33
33
|
getProjectDir as getProjectDir2,
|
|
34
34
|
getReadyTasks,
|
|
@@ -70,8 +70,10 @@ import {
|
|
|
70
70
|
takeZombieDetection,
|
|
71
71
|
transcriptActivityAgeSeconds,
|
|
72
72
|
writeEgressAllowlist
|
|
73
|
-
} from "../chunk-
|
|
73
|
+
} from "../chunk-GZG5JRRX.js";
|
|
74
74
|
import {
|
|
75
|
+
CONVERSATION_FAILURE_CATEGORIES,
|
|
76
|
+
DEFAULT_FRAMEWORK,
|
|
75
77
|
FLAGS_SCHEMA_VERSION,
|
|
76
78
|
FLAG_REGISTRY,
|
|
77
79
|
KANBAN_CHECK_COMMAND,
|
|
@@ -80,6 +82,7 @@ import {
|
|
|
80
82
|
StreamEncoder,
|
|
81
83
|
appendDmFooter,
|
|
82
84
|
attributeTranscriptUsageByRun,
|
|
85
|
+
buildFailureCategoryPromptLines,
|
|
83
86
|
buildScheduledTaskContextBlocks,
|
|
84
87
|
classifyActor,
|
|
85
88
|
classifyOutput,
|
|
@@ -89,6 +92,7 @@ import {
|
|
|
89
92
|
formatActorId,
|
|
90
93
|
formatRunMarker,
|
|
91
94
|
getFramework,
|
|
95
|
+
isConversationFailureCategory,
|
|
92
96
|
isEmptyTotals,
|
|
93
97
|
isOnboardingArea,
|
|
94
98
|
isParseError,
|
|
@@ -107,7 +111,7 @@ import {
|
|
|
107
111
|
resolveChannels,
|
|
108
112
|
resolveDmTarget,
|
|
109
113
|
sumTranscriptUsageInWindow
|
|
110
|
-
} from "../chunk-
|
|
114
|
+
} from "../chunk-65FVM2UA.js";
|
|
111
115
|
import {
|
|
112
116
|
parsePsRows,
|
|
113
117
|
reapOrphanChannelMcps
|
|
@@ -2498,9 +2502,10 @@ Score the agent's success:
|
|
|
2498
2502
|
- score: integer 0-100 (0 = ignored/unhelpful/wrong, 100 = fully resolved the user's need)
|
|
2499
2503
|
- verdict: "success" (need clearly met), "partial" (some help but incomplete/ambiguous), or "failure" (did not help / made it worse)
|
|
2500
2504
|
- summary: ONE short sentence (max 140 chars) explaining the score. Do NOT quote sensitive user content.
|
|
2505
|
+
- failure_category: ONLY when verdict is "failure", the single best-fitting reason from this exact set: ${buildFailureCategoryPromptLines()}. Use null when verdict is "success" or "partial".
|
|
2501
2506
|
|
|
2502
2507
|
Respond with ONLY a JSON object, no other text:
|
|
2503
|
-
{"score": 0-100, "verdict": "success|partial|failure", "summary": "..."}`;
|
|
2508
|
+
{"score": 0-100, "verdict": "success|partial|failure", "summary": "...", "failure_category": "${CONVERSATION_FAILURE_CATEGORIES.join("|")} or null"}`;
|
|
2504
2509
|
}
|
|
2505
2510
|
function parseVerdict(raw) {
|
|
2506
2511
|
const match = raw.match(/\{[\s\S]*\}/);
|
|
@@ -2515,7 +2520,8 @@ function parseVerdict(raw) {
|
|
|
2515
2520
|
if (!Number.isFinite(score) || score < 0 || score > 100) return null;
|
|
2516
2521
|
if (obj.verdict !== "success" && obj.verdict !== "partial" && obj.verdict !== "failure") return null;
|
|
2517
2522
|
const summary = typeof obj.summary === "string" ? obj.summary.slice(0, 140) : "";
|
|
2518
|
-
|
|
2523
|
+
const failureCategory = obj.verdict === "failure" && isConversationFailureCategory(obj.failure_category) ? obj.failure_category : null;
|
|
2524
|
+
return { score: Math.round(score), verdict: obj.verdict, summary, failureCategory };
|
|
2519
2525
|
}
|
|
2520
2526
|
async function maybeEvaluateConversations(args) {
|
|
2521
2527
|
const { api: api2, backend, codeName, agentId, log: log2 } = args;
|
|
@@ -2585,6 +2591,7 @@ async function maybeEvaluateConversations(args) {
|
|
|
2585
2591
|
score: verdict.score,
|
|
2586
2592
|
verdict: verdict.verdict,
|
|
2587
2593
|
summary: verdict.summary,
|
|
2594
|
+
failure_category: verdict.failureCategory,
|
|
2588
2595
|
model: backend.model
|
|
2589
2596
|
});
|
|
2590
2597
|
log2(
|
|
@@ -4529,7 +4536,7 @@ function cacheAgentDeliveryMetadata(codeName, refreshData) {
|
|
|
4529
4536
|
const agentRow = refreshData["agent"] ?? {};
|
|
4530
4537
|
const displayName = agentRow["display_name"] ?? codeName;
|
|
4531
4538
|
const ownerTeamName = agentRow["owner_team_name"] ?? null;
|
|
4532
|
-
const framework = agentRow["framework"] ??
|
|
4539
|
+
const framework = agentRow["framework"] ?? DEFAULT_FRAMEWORK;
|
|
4533
4540
|
const reportsToPersonId = agentRow["reports_to"] ?? null;
|
|
4534
4541
|
const reportsToType = agentRow["reports_to_type"] ?? null;
|
|
4535
4542
|
const channelConfigs = refreshData["channel_configs"] ?? {};
|
|
@@ -6842,7 +6849,7 @@ var frameworkBinaryChecked = /* @__PURE__ */ new Set();
|
|
|
6842
6849
|
var agentRuntimeAuthenticated = false;
|
|
6843
6850
|
var lastManagedSettingsStatus = null;
|
|
6844
6851
|
function resolveAgentFramework(codeName) {
|
|
6845
|
-
const frameworkId = agentFrameworkCache.get(codeName) ??
|
|
6852
|
+
const frameworkId = agentFrameworkCache.get(codeName) ?? DEFAULT_FRAMEWORK;
|
|
6846
6853
|
return getFramework(frameworkId);
|
|
6847
6854
|
}
|
|
6848
6855
|
var gatewayPool = null;
|
|
@@ -6871,7 +6878,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
6871
6878
|
var lastVersionCheckAt = 0;
|
|
6872
6879
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
6873
6880
|
var lastResponsivenessProbeAt = 0;
|
|
6874
|
-
var agtCliVersion = true ? "0.28.
|
|
6881
|
+
var agtCliVersion = true ? "0.28.160" : "dev";
|
|
6875
6882
|
function resolveBrewPath(execFileSync4) {
|
|
6876
6883
|
try {
|
|
6877
6884
|
const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -7718,7 +7725,7 @@ async function migrateToProfiles() {
|
|
|
7718
7725
|
const agents = sharedConfig["agents"];
|
|
7719
7726
|
const agentList = agents?.["list"] ?? [];
|
|
7720
7727
|
if (agentList.length === 0) return;
|
|
7721
|
-
const adapter = getFramework(
|
|
7728
|
+
const adapter = getFramework(DEFAULT_FRAMEWORK);
|
|
7722
7729
|
let migrated = 0;
|
|
7723
7730
|
for (const agentEntry of agentList) {
|
|
7724
7731
|
const codeName = agentEntry["id"];
|
|
@@ -7994,7 +8001,7 @@ async function pollCycle() {
|
|
|
7994
8001
|
if (now - lastVersionCheckAt > VERSION_CHECK_INTERVAL_MS) {
|
|
7995
8002
|
try {
|
|
7996
8003
|
const firstAgent = state6.agents[0];
|
|
7997
|
-
const versionAdapter = firstAgent ? resolveAgentFramework(firstAgent.codeName) : getFramework(
|
|
8004
|
+
const versionAdapter = firstAgent ? resolveAgentFramework(firstAgent.codeName) : getFramework(DEFAULT_FRAMEWORK);
|
|
7998
8005
|
if (versionAdapter.getVersion) {
|
|
7999
8006
|
cachedFrameworkVersion = await versionAdapter.getVersion();
|
|
8000
8007
|
}
|
|
@@ -8004,7 +8011,7 @@ async function pollCycle() {
|
|
|
8004
8011
|
}
|
|
8005
8012
|
try {
|
|
8006
8013
|
const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
|
|
8007
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
8014
|
+
const { collectDiagnostics } = await import("../persistent-session-TSVRKR7F.js");
|
|
8008
8015
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
8009
8016
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
|
|
8010
8017
|
let tailscaleHostname;
|
|
@@ -8152,7 +8159,7 @@ async function pollCycle() {
|
|
|
8152
8159
|
const {
|
|
8153
8160
|
collectResponsivenessProbes,
|
|
8154
8161
|
getResponsivenessIntervalMs
|
|
8155
|
-
} = await import("../responsiveness-probe-
|
|
8162
|
+
} = await import("../responsiveness-probe-DXPMUSVR.js");
|
|
8156
8163
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
8157
8164
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
8158
8165
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -8184,7 +8191,7 @@ async function pollCycle() {
|
|
|
8184
8191
|
collectResponsivenessProbes,
|
|
8185
8192
|
livePendingInboundOldestAgeSeconds,
|
|
8186
8193
|
parkPendingInbound
|
|
8187
|
-
} = await import("../responsiveness-probe-
|
|
8194
|
+
} = await import("../responsiveness-probe-DXPMUSVR.js");
|
|
8188
8195
|
const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
|
|
8189
8196
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
8190
8197
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -8469,7 +8476,7 @@ async function pollCycle() {
|
|
|
8469
8476
|
});
|
|
8470
8477
|
}
|
|
8471
8478
|
{
|
|
8472
|
-
const claudeCodeAgents = agentStates.filter((a) => a.status === "active").filter((a) => (agentFrameworkCache.get(a.codeName) ??
|
|
8479
|
+
const claudeCodeAgents = agentStates.filter((a) => a.status === "active").filter((a) => (agentFrameworkCache.get(a.codeName) ?? DEFAULT_FRAMEWORK) === "claude-code").map((a) => a.codeName);
|
|
8473
8480
|
checkChannelInputs(claudeCodeAgents, {
|
|
8474
8481
|
capturePane: (codeName) => {
|
|
8475
8482
|
try {
|
|
@@ -8860,7 +8867,7 @@ async function processAgent(agent, agentStates) {
|
|
|
8860
8867
|
});
|
|
8861
8868
|
return;
|
|
8862
8869
|
}
|
|
8863
|
-
const frameworkId = refreshData.agent.framework ??
|
|
8870
|
+
const frameworkId = refreshData.agent.framework ?? DEFAULT_FRAMEWORK;
|
|
8864
8871
|
agentFrameworkCache.set(agent.code_name, frameworkId);
|
|
8865
8872
|
const frameworkAdapter = getFramework(frameworkId);
|
|
8866
8873
|
agentDir = join16(frameworkAdapter.getAgentDir(agent.code_name), "provision");
|
|
@@ -9256,7 +9263,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9256
9263
|
previousChannelIds,
|
|
9257
9264
|
currentChannelIds,
|
|
9258
9265
|
sessionMode: refreshData.agent.session_mode,
|
|
9259
|
-
framework: agentFrameworkCache.get(agent.code_name) ??
|
|
9266
|
+
framework: agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK,
|
|
9260
9267
|
sessionHealthy: isSessionHealthy(agent.code_name)
|
|
9261
9268
|
}) : { restart: false, added: [], removed: [] };
|
|
9262
9269
|
const quarantineOnlyRemoval = restartDecision.restart && restartDecision.added.length === 0 && restartDecision.removed.length > 0 && restartDecision.removed.every((c) => quarantinedChannels.has(c));
|
|
@@ -9313,7 +9320,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9313
9320
|
previousHash: prevSenderPolicyHash,
|
|
9314
9321
|
currentHash: senderPolicyHash,
|
|
9315
9322
|
sessionMode: refreshData.agent.session_mode,
|
|
9316
|
-
framework: agentFrameworkCache.get(agent.code_name) ??
|
|
9323
|
+
framework: agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK,
|
|
9317
9324
|
sessionHealthy: isSessionHealthy(agent.code_name),
|
|
9318
9325
|
channelSetRestartAlreadyScheduled: channelSetRestartScheduled
|
|
9319
9326
|
}) : { restart: false, firstPoll: prevSenderPolicyHash === void 0, changed: false };
|
|
@@ -9355,7 +9362,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9355
9362
|
previousHash: prevBehaviourHash,
|
|
9356
9363
|
currentHash: behaviourHash,
|
|
9357
9364
|
sessionMode: refreshData.agent.session_mode,
|
|
9358
|
-
framework: agentFrameworkCache.get(agent.code_name) ??
|
|
9365
|
+
framework: agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK,
|
|
9359
9366
|
sessionHealthy: isSessionHealthy(agent.code_name),
|
|
9360
9367
|
// A channel-set or sender-policy restart scheduled this tick will
|
|
9361
9368
|
// respawn the MCP children with the freshly-written env for free.
|
|
@@ -9402,7 +9409,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9402
9409
|
previousHash: prevSlackBehaviourHash,
|
|
9403
9410
|
currentHash: slackBehaviourHash,
|
|
9404
9411
|
sessionMode: refreshData.agent.session_mode,
|
|
9405
|
-
framework: agentFrameworkCache.get(agent.code_name) ??
|
|
9412
|
+
framework: agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK,
|
|
9406
9413
|
sessionHealthy: isSessionHealthy(agent.code_name),
|
|
9407
9414
|
// A channel-set, sender-policy, or msteams-behaviour restart
|
|
9408
9415
|
// scheduled this tick respawns the MCP children with the
|
|
@@ -9440,7 +9447,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9440
9447
|
}
|
|
9441
9448
|
}
|
|
9442
9449
|
const agentSessionMode = refreshData.agent.session_mode;
|
|
9443
|
-
if (agentSessionMode === "persistent" && (agentFrameworkCache.get(agent.code_name) ??
|
|
9450
|
+
if (agentSessionMode === "persistent" && (agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK) === "claude-code") {
|
|
9444
9451
|
try {
|
|
9445
9452
|
const agentProvisionDir = agentDir;
|
|
9446
9453
|
const projectDir = join16(homedir9(), ".augmented", agent.code_name, "project");
|
|
@@ -9482,7 +9489,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9482
9489
|
if (directChatTz) directChatEnv["TZ"] = directChatTz;
|
|
9483
9490
|
if (!frameworkAdapter.writeMcpServer) {
|
|
9484
9491
|
throw new Error(
|
|
9485
|
-
`[direct-chat] Framework '${frameworkAdapter.id}' must implement writeMcpServer for direct-chat provisioning (agent=${agent.code_name}, cachedFramework=${agentFrameworkCache.get(agent.code_name) ??
|
|
9492
|
+
`[direct-chat] Framework '${frameworkAdapter.id}' must implement writeMcpServer for direct-chat provisioning (agent=${agent.code_name}, cachedFramework=${agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK})`
|
|
9486
9493
|
);
|
|
9487
9494
|
}
|
|
9488
9495
|
frameworkAdapter.writeMcpServer(agent.code_name, "direct-chat", {
|
|
@@ -9589,7 +9596,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9589
9596
|
frameworkAdapter.writeIntegrations(agent.code_name, integrations, agent.agent_id);
|
|
9590
9597
|
}
|
|
9591
9598
|
log(`Integrations provisioned for '${agent.code_name}' (${integrations.length} integration(s))`);
|
|
9592
|
-
const fw = agentFrameworkCache.get(agent.code_name) ??
|
|
9599
|
+
const fw = agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK;
|
|
9593
9600
|
let rotationHandled = true;
|
|
9594
9601
|
if (fw === "claude-code" && isSessionHealthy(agent.code_name)) {
|
|
9595
9602
|
try {
|
|
@@ -9633,7 +9640,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9633
9640
|
needsGatewayRestart = true;
|
|
9634
9641
|
}
|
|
9635
9642
|
}
|
|
9636
|
-
const fwForMcp = agentFrameworkCache.get(agent.code_name) ??
|
|
9643
|
+
const fwForMcp = agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK;
|
|
9637
9644
|
if (frameworkAdapter.writeMcpServer) {
|
|
9638
9645
|
try {
|
|
9639
9646
|
const toolkitData = await api.post("/host/managed-toolkits", { agent_ids: [agent.agent_id] });
|
|
@@ -9750,7 +9757,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9750
9757
|
}
|
|
9751
9758
|
let tasks = refreshData.scheduled_tasks ?? [];
|
|
9752
9759
|
const existingTemplateIds = new Set(tasks.map((t) => t.template_id));
|
|
9753
|
-
const kanbanWorkRetired = (agentFrameworkCache.get(agent.code_name) ??
|
|
9760
|
+
const kanbanWorkRetired = (agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK) === "claude-code" && agentSessionMode === "persistent";
|
|
9754
9761
|
try {
|
|
9755
9762
|
const defaultsData = await api.post("/host/resolve-default-schedules", { agent_id: agent.agent_id });
|
|
9756
9763
|
const allSchedules = (defaultsData.schedules ?? []).filter(
|
|
@@ -9925,7 +9932,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9925
9932
|
log(`Global skill install failed for '${agent.code_name}': ${err.message}`);
|
|
9926
9933
|
}
|
|
9927
9934
|
try {
|
|
9928
|
-
const agentFwForIndex = agentFrameworkCache.get(agent.code_name) ??
|
|
9935
|
+
const agentFwForIndex = agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK;
|
|
9929
9936
|
if (agentFwForIndex === "claude-code") {
|
|
9930
9937
|
await refreshSkillsIndexInClaudeMd(config.configDir, agent.code_name, log);
|
|
9931
9938
|
}
|
|
@@ -9965,7 +9972,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9965
9972
|
}
|
|
9966
9973
|
}
|
|
9967
9974
|
}
|
|
9968
|
-
const agentFwForToolkits = agentFrameworkCache.get(agent.code_name) ??
|
|
9975
|
+
const agentFwForToolkits = agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK;
|
|
9969
9976
|
const toolkitsList = refreshAny.integration_toolkits ?? refreshAny.plugin_toolkits ?? [];
|
|
9970
9977
|
if (agentFwForToolkits === "claude-code" && toolkitsList.length) {
|
|
9971
9978
|
const toolkitUnion = /* @__PURE__ */ new Set();
|
|
@@ -9976,7 +9983,7 @@ async function processAgent(agent, agentStates) {
|
|
|
9976
9983
|
await ensureToolkitCli(toolkitSlug);
|
|
9977
9984
|
}
|
|
9978
9985
|
}
|
|
9979
|
-
const agentFw2 = agentFrameworkCache.get(agent.code_name) ??
|
|
9986
|
+
const agentFw2 = agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK;
|
|
9980
9987
|
if (agentFw2 === "claude-code" && installedIntegrationSkills.length > 0 && isSessionHealthy(agent.code_name)) {
|
|
9981
9988
|
const names = installedIntegrationSkills.join(", ");
|
|
9982
9989
|
injectMessage(
|
|
@@ -10002,7 +10009,7 @@ async function processAgent(agent, agentStates) {
|
|
|
10002
10009
|
boardItems = kanbanBoardCache.get(agent.code_name) ?? [];
|
|
10003
10010
|
}
|
|
10004
10011
|
}
|
|
10005
|
-
const agentFw = agentFrameworkCache.get(agent.code_name) ??
|
|
10012
|
+
const agentFw = agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK;
|
|
10006
10013
|
const sessionMode = refreshData.agent.session_mode ?? "oneshot";
|
|
10007
10014
|
const wantsHybridInject = isKanbanHybridEnabled();
|
|
10008
10015
|
if (agentFw === "claude-code" && sessionMode === "persistent") {
|
|
@@ -10316,7 +10323,7 @@ async function processAgent(agent, agentStates) {
|
|
|
10316
10323
|
(j) => typeof j.name === "string" && j.name.includes("kanban-work")
|
|
10317
10324
|
);
|
|
10318
10325
|
if (kanbanJob?.id) {
|
|
10319
|
-
const cliBin = resolveAgentFramework(agent.code_name).cliBinary ?? "
|
|
10326
|
+
const cliBin = resolveAgentFramework(agent.code_name).cliBinary ?? "claude";
|
|
10320
10327
|
log(`Work trigger: firing kanban-work for '${agent.code_name}'`);
|
|
10321
10328
|
execFilePromise(cliBin, ["--profile", agent.code_name, "cron", "run", kanbanJob.id]).then(() => log(`Work trigger succeeded for '${agent.code_name}'`)).catch((err) => log(`Work trigger failed for '${agent.code_name}': ${err.message}`));
|
|
10322
10329
|
}
|
|
@@ -10456,7 +10463,7 @@ In progress for ${age} minutes \u2014 auto-failed`).catch(() => {
|
|
|
10456
10463
|
agentState.writtenHashes.delete(agent.agent_id);
|
|
10457
10464
|
}
|
|
10458
10465
|
try {
|
|
10459
|
-
const obFramework = agentFrameworkCache.get(agent.code_name) ??
|
|
10466
|
+
const obFramework = agentFrameworkCache.get(agent.code_name) ?? DEFAULT_FRAMEWORK;
|
|
10460
10467
|
const obSessionMode = refreshData.agent.session_mode;
|
|
10461
10468
|
if (obFramework === "claude-code" && obSessionMode === "persistent") {
|
|
10462
10469
|
const obState = coerceOnboardingState(
|
|
@@ -11146,7 +11153,7 @@ function ensureRealtimeKanbanStarted(agentStates) {
|
|
|
11146
11153
|
if (item.source_type === "scheduled_task") return;
|
|
11147
11154
|
const agent = agentStates.find((a) => a.agentId === item.agent_id);
|
|
11148
11155
|
if (!agent) return;
|
|
11149
|
-
const agentFw = agentFrameworkCache.get(agent.codeName) ??
|
|
11156
|
+
const agentFw = agentFrameworkCache.get(agent.codeName) ?? DEFAULT_FRAMEWORK;
|
|
11150
11157
|
if (agentFw === "claude-code") {
|
|
11151
11158
|
if (isSessionHealthy(agent.codeName)) {
|
|
11152
11159
|
injectMessage(agent.codeName, "task", `New task added to your board: id=${item.id} title=${JSON.stringify(item.title)} priority=${item.priority}. Call kanban_move("${item.id}", "in_progress") and start working.`, {
|
|
@@ -11256,7 +11263,7 @@ var directChatInFlight = /* @__PURE__ */ new Set();
|
|
|
11256
11263
|
async function pollDirectChatMessages(agentStates) {
|
|
11257
11264
|
for (const agent of agentStates) {
|
|
11258
11265
|
if (agent.status !== "active") continue;
|
|
11259
|
-
const fw = agentFrameworkCache.get(agent.codeName) ??
|
|
11266
|
+
const fw = agentFrameworkCache.get(agent.codeName) ?? DEFAULT_FRAMEWORK;
|
|
11260
11267
|
if (fw === "openclaw" && (!agent.gatewayRunning || !agent.gatewayPort)) continue;
|
|
11261
11268
|
try {
|
|
11262
11269
|
const data = await api.post("/host/direct-chat/poll", { agent_id: agent.agentId });
|
|
@@ -11274,7 +11281,7 @@ async function pollDirectChatMessages(agentStates) {
|
|
|
11274
11281
|
}
|
|
11275
11282
|
async function processDirectChatMessage(agent, msg) {
|
|
11276
11283
|
noteInbound(agent.codeName);
|
|
11277
|
-
const fw = agentFrameworkCache.get(agent.codeName) ??
|
|
11284
|
+
const fw = agentFrameworkCache.get(agent.codeName) ?? DEFAULT_FRAMEWORK;
|
|
11278
11285
|
log(`[direct-chat] Processing message for '${agent.codeName}' (fw=${fw}): id=${msg.id} len=${msg.content.length}`);
|
|
11279
11286
|
if (isDirectChatMessageExpired(msg.created_at, Date.now(), directChatMaxAgeMs())) {
|
|
11280
11287
|
log(`[direct-chat] Expired backlog message for '${agent.codeName}' (msg=${msg.id}, created_at=${msg.created_at}) \u2014 draining without delivery`);
|
|
@@ -11475,7 +11482,7 @@ async function harvestCronResults(codeName, tasks, gatewayPort) {
|
|
|
11475
11482
|
const gwArgs = ["--url", `ws://127.0.0.1:${gatewayPort}`, ...token ? ["--token", token] : []];
|
|
11476
11483
|
let gatewayJobs = [];
|
|
11477
11484
|
try {
|
|
11478
|
-
const cliBin = resolveAgentFramework(codeName).cliBinary ?? "
|
|
11485
|
+
const cliBin = resolveAgentFramework(codeName).cliBinary ?? "claude";
|
|
11479
11486
|
const { stdout } = await execFilePromise(cliBin, ["--profile", codeName, "cron", "list", "--json", ...gwArgs]);
|
|
11480
11487
|
const parsed = JSON.parse(stdout);
|
|
11481
11488
|
gatewayJobs = parsed.jobs ?? [];
|
|
@@ -11494,7 +11501,7 @@ async function harvestCronResults(codeName, tasks, gatewayPort) {
|
|
|
11494
11501
|
if (!STANDUP_TEMPLATES.has(templateId) && !TASK_UPDATE_TEMPLATES.has(templateId) && !PLAN_TEMPLATES.has(templateId) && !KANBAN_WORK_TEMPLATES.has(templateId)) continue;
|
|
11495
11502
|
let runs = [];
|
|
11496
11503
|
try {
|
|
11497
|
-
const cliBin2 = resolveAgentFramework(codeName).cliBinary ?? "
|
|
11504
|
+
const cliBin2 = resolveAgentFramework(codeName).cliBinary ?? "claude";
|
|
11498
11505
|
const { stdout } = await execFilePromise(cliBin2, ["--profile", codeName, "cron", "runs", "--id", jobId, ...gwArgs]);
|
|
11499
11506
|
const parsed = JSON.parse(stdout);
|
|
11500
11507
|
runs = parsed.entries ?? [];
|
|
@@ -11594,7 +11601,7 @@ async function monitorCronHealth(agentStates) {
|
|
|
11594
11601
|
const gwArgs = ["--url", `ws://127.0.0.1:${agent.gatewayPort}`, ...token ? ["--token", token] : []];
|
|
11595
11602
|
let jobs = [];
|
|
11596
11603
|
try {
|
|
11597
|
-
const cliBin = resolveAgentFramework(agent.codeName).cliBinary ?? "
|
|
11604
|
+
const cliBin = resolveAgentFramework(agent.codeName).cliBinary ?? "claude";
|
|
11598
11605
|
const { stdout } = await execFilePromise(cliBin, ["--profile", agent.codeName, "cron", "list", "--json", ...gwArgs]);
|
|
11599
11606
|
const parsed = JSON.parse(stdout);
|
|
11600
11607
|
jobs = parsed.jobs ?? [];
|
|
@@ -11685,7 +11692,7 @@ async function processClaudePairSessions(agents) {
|
|
|
11685
11692
|
killPairSession,
|
|
11686
11693
|
pairTmuxSession,
|
|
11687
11694
|
finalizeClaudePairOnboarding
|
|
11688
|
-
} = await import("../claude-pair-runtime-
|
|
11695
|
+
} = await import("../claude-pair-runtime-HN3PEIZ2.js");
|
|
11689
11696
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
11690
11697
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
11691
11698
|
const killed = await killPairSession(pairTmuxSession(pairId));
|