metheus-governance-mcp-cli 0.2.216 → 0.2.217
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/cli.mjs +1 -1
- package/lib/runner-orchestration.mjs +64 -58
- package/package.json +1 -1
package/cli.mjs
CHANGED
|
@@ -2797,7 +2797,7 @@ function shouldBypassRunnerStartupLoopForContractFollowup({
|
|
|
2797
2797
|
return false;
|
|
2798
2798
|
}
|
|
2799
2799
|
const executionContractType = String(parsed.executionContractType || "").trim().toLowerCase();
|
|
2800
|
-
if (executionContractType
|
|
2800
|
+
if (!executionContractType) {
|
|
2801
2801
|
return false;
|
|
2802
2802
|
}
|
|
2803
2803
|
const senderBotSelector = normalizeTelegramMentionUsername(
|
|
@@ -1285,19 +1285,6 @@ export async function resolveHumanIntentContext({
|
|
|
1285
1285
|
runnerHumanIntentPromises.set(cacheKey, promise);
|
|
1286
1286
|
}
|
|
1287
1287
|
let humanIntent = await runnerHumanIntentPromises.get(cacheKey);
|
|
1288
|
-
if (!isCompleteHumanIntentContract(humanIntent)) {
|
|
1289
|
-
humanIntent = await analyzeHumanConversationIntentWithContractResolver({
|
|
1290
|
-
text: parsed.body,
|
|
1291
|
-
managedMentions,
|
|
1292
|
-
peerMap,
|
|
1293
|
-
deps,
|
|
1294
|
-
executionPlan,
|
|
1295
|
-
contractGuardrail: {
|
|
1296
|
-
require_complete_contract: true,
|
|
1297
|
-
reason: "Return a complete human intent contract for this managed-bot conversation.",
|
|
1298
|
-
},
|
|
1299
|
-
});
|
|
1300
|
-
}
|
|
1301
1288
|
if (!isCompleteHumanIntentContract(humanIntent)) {
|
|
1302
1289
|
return {
|
|
1303
1290
|
currentBotSelector,
|
|
@@ -1325,42 +1312,60 @@ function buildDirectHumanResponseContract({
|
|
|
1325
1312
|
}) {
|
|
1326
1313
|
const humanIntent = safeObject(humanIntentContext?.humanIntent);
|
|
1327
1314
|
const conversation = safeObject(conversationContext);
|
|
1328
|
-
const
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
ensureArray(conversation.allowedResponderSelectors
|
|
1315
|
+
const preferConversationContract = Boolean(
|
|
1316
|
+
String(conversation.intentMode || "").trim()
|
|
1317
|
+
|| ensureArray(conversation.initialResponderSelectors).length
|
|
1318
|
+
|| ensureArray(conversation.allowedResponderSelectors).length
|
|
1319
|
+
|| String(conversation.leadBotUsername || "").trim()
|
|
1320
|
+
|| String(conversation.summaryBotUsername || "").trim()
|
|
1321
|
+
|| String(conversation.replyExpectation || "").trim(),
|
|
1322
|
+
);
|
|
1323
|
+
const source = preferConversationContract ? conversation : humanIntent;
|
|
1324
|
+
const secondary = preferConversationContract ? humanIntent : conversation;
|
|
1325
|
+
const normalizedAllowedResponderSelectors = uniqueOrdered(
|
|
1326
|
+
ensureArray(source.allowedResponderSelectors)
|
|
1332
1327
|
.map((item) => normalizeMentionSelector(item))
|
|
1333
1328
|
.filter(Boolean),
|
|
1334
1329
|
);
|
|
1335
|
-
const
|
|
1336
|
-
ensureArray(
|
|
1330
|
+
const normalizedInitialResponderSelectors = uniqueOrdered(
|
|
1331
|
+
ensureArray(source.initialResponderSelectors)
|
|
1337
1332
|
.map((item) => normalizeMentionSelector(item))
|
|
1338
1333
|
.filter(Boolean),
|
|
1339
1334
|
);
|
|
1340
|
-
const
|
|
1341
|
-
const
|
|
1335
|
+
const intentMode = String(source.intentMode || secondary.intentMode || "").trim();
|
|
1336
|
+
const allowBotToBot = source.allowBotToBot === true
|
|
1337
|
+
|| (source.allowBotToBot !== false && secondary.allowBotToBot === true);
|
|
1338
|
+
const leadBotSelector = normalizeMentionSelector(
|
|
1339
|
+
source.leadBotUsername || source.leadBotSelector || secondary.leadBotUsername || secondary.leadBotSelector,
|
|
1340
|
+
);
|
|
1341
|
+
const summaryBotSelector = normalizeMentionSelector(
|
|
1342
|
+
source.summaryBotUsername || source.summaryBotSelector || secondary.summaryBotUsername || secondary.summaryBotSelector,
|
|
1343
|
+
);
|
|
1342
1344
|
const replyExpectation = normalizeReplyExpectation(
|
|
1343
|
-
|
|
1345
|
+
source.replyExpectation || secondary.replyExpectation,
|
|
1344
1346
|
"",
|
|
1345
1347
|
);
|
|
1346
1348
|
const intentType = normalizeHumanIntentType(
|
|
1347
|
-
|
|
1349
|
+
source.intentType || secondary.intentType,
|
|
1348
1350
|
"",
|
|
1349
1351
|
);
|
|
1350
1352
|
const allowedContractTypes = uniqueOrdered(
|
|
1351
|
-
ensureArray(
|
|
1353
|
+
ensureArray(source.allowedContractTypes || secondary.allowedContractTypes)
|
|
1352
1354
|
.map((item) => String(item || "").trim().toLowerCase())
|
|
1353
1355
|
.filter(Boolean),
|
|
1354
1356
|
);
|
|
1355
|
-
const requiresActionableContract =
|
|
1356
|
-
||
|
|
1357
|
-
||
|
|
1358
|
-
|
|
1357
|
+
const requiresActionableContract = source.requiresActionableContract === true
|
|
1358
|
+
|| source.require_actionable_contract === true
|
|
1359
|
+
|| (
|
|
1360
|
+
source.requiresActionableContract !== false
|
|
1361
|
+
&& source.require_actionable_contract !== false
|
|
1362
|
+
&& (secondary.requiresActionableContract === true || secondary.require_actionable_contract === true)
|
|
1363
|
+
);
|
|
1359
1364
|
return {
|
|
1360
1365
|
intentMode,
|
|
1361
1366
|
allowBotToBot,
|
|
1362
|
-
allowedResponderSelectors,
|
|
1363
|
-
initialResponderSelectors,
|
|
1367
|
+
allowedResponderSelectors: normalizedAllowedResponderSelectors,
|
|
1368
|
+
initialResponderSelectors: normalizedInitialResponderSelectors,
|
|
1364
1369
|
leadBotSelector,
|
|
1365
1370
|
summaryBotSelector,
|
|
1366
1371
|
replyExpectation,
|
|
@@ -1378,17 +1383,23 @@ function mergeDirectHumanResponseContract({
|
|
|
1378
1383
|
}) {
|
|
1379
1384
|
const base = safeObject(baseContract);
|
|
1380
1385
|
const response = safeObject(responseContract);
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
)
|
|
1386
|
+
void executionContract;
|
|
1387
|
+
void currentBotSelector;
|
|
1388
|
+
const hasExplicitArray = (obj, keys) => keys.some((key) => Object.prototype.hasOwnProperty.call(obj, key));
|
|
1389
|
+
const explicitAllowedResponderSelectors = hasExplicitArray(response, ["human_allowed_responders", "allowed_responders"])
|
|
1390
|
+
? uniqueOrdered(
|
|
1391
|
+
ensureArray(response.human_allowed_responders || response.allowed_responders)
|
|
1392
|
+
.map((item) => normalizeMentionSelector(item))
|
|
1393
|
+
.filter(Boolean),
|
|
1394
|
+
)
|
|
1395
|
+
: null;
|
|
1396
|
+
const explicitInitialResponderSelectors = hasExplicitArray(response, ["human_initial_responders", "initial_responders"])
|
|
1397
|
+
? uniqueOrdered(
|
|
1398
|
+
ensureArray(response.human_initial_responders || response.initial_responders)
|
|
1399
|
+
.map((item) => normalizeMentionSelector(item))
|
|
1400
|
+
.filter(Boolean),
|
|
1401
|
+
)
|
|
1402
|
+
: null;
|
|
1392
1403
|
const intentMode = String(
|
|
1393
1404
|
response.human_intent_mode
|
|
1394
1405
|
|| response.intent_mode
|
|
@@ -1412,21 +1423,18 @@ function mergeDirectHumanResponseContract({
|
|
|
1412
1423
|
: response.allow_bot_to_bot === true || response.allowBotToBot === true
|
|
1413
1424
|
? true
|
|
1414
1425
|
: base.allowBotToBot === true;
|
|
1415
|
-
const allowedResponderSelectors =
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
.map((item) => normalizeMentionSelector(item))
|
|
1428
|
-
.filter(Boolean),
|
|
1429
|
-
].filter(Boolean));
|
|
1426
|
+
const allowedResponderSelectors = explicitAllowedResponderSelectors
|
|
1427
|
+
?? uniqueOrdered(
|
|
1428
|
+
ensureArray(base.allowedResponderSelectors)
|
|
1429
|
+
.map((item) => normalizeMentionSelector(item))
|
|
1430
|
+
.filter(Boolean),
|
|
1431
|
+
);
|
|
1432
|
+
const initialResponderSelectors = explicitInitialResponderSelectors
|
|
1433
|
+
?? uniqueOrdered(
|
|
1434
|
+
ensureArray(base.initialResponderSelectors)
|
|
1435
|
+
.map((item) => normalizeMentionSelector(item))
|
|
1436
|
+
.filter(Boolean),
|
|
1437
|
+
);
|
|
1430
1438
|
const leadBotSelector = normalizeMentionSelector(
|
|
1431
1439
|
response.human_lead_bot
|
|
1432
1440
|
|| response.lead_bot
|
|
@@ -1436,8 +1444,6 @@ function mergeDirectHumanResponseContract({
|
|
|
1436
1444
|
const summaryBotSelector = normalizeMentionSelector(
|
|
1437
1445
|
response.human_summary_bot
|
|
1438
1446
|
|| response.summary_bot
|
|
1439
|
-
|| execution.summaryBot
|
|
1440
|
-
|| execution.summary_bot
|
|
1441
1447
|
|| base.summaryBotSelector
|
|
1442
1448
|
|| "",
|
|
1443
1449
|
);
|