@sema-agent/client-core 0.91.0 → 0.92.0
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/CHANGELOG.md +172 -0
- package/README.md +31 -21
- package/dist/adapt/arms.js +4 -12
- package/dist/adapt/panelTasks.d.ts +0 -2
- package/dist/adapt/panelTasks.js +6 -26
- package/dist/adapt.js +2 -2
- package/dist/adapter/activeRunSelfHeal.d.ts +0 -2
- package/dist/adapter/activeRunSelfHeal.js +5 -27
- package/dist/adapter/downstream/terminalToSdkResult.js +16 -7
- package/dist/adapter/runStream.js +3 -1
- package/dist/askSurvivesStandingAnswer.d.ts +4 -1
- package/dist/askSurvivesStandingAnswer.js +13 -0
- package/dist/autoModeUnavailable.js +3 -2
- package/dist/cloudConfigWireCaps.js +5 -4
- package/dist/compensations.js +5 -5
- package/dist/controlRouter.d.ts +23 -23
- package/dist/controlRouter.js +114 -49
- package/dist/coreValuePorts.d.ts +4 -2
- package/dist/coreValuePorts.js +5 -0
- package/dist/decideFailureNote.js +4 -2
- package/dist/decideReceipt.d.ts +9 -0
- package/dist/decideReceipt.js +62 -1
- package/dist/displayUntrusted.js +2 -1
- package/dist/effectiveFacts.d.ts +14 -4
- package/dist/effectiveFacts.js +45 -5
- package/dist/engineAgentAbsence.js +2 -1
- package/dist/engineCapReader.js +16 -10
- package/dist/engineCapsCache.d.ts +2 -0
- package/dist/engineCapsCache.js +13 -2
- package/dist/engineErrorCodes.d.ts +14 -0
- package/dist/engineErrorCodes.js +37 -0
- package/dist/engineNoticeCodes.d.ts +14 -0
- package/dist/engineNoticeCodes.js +71 -0
- package/dist/executionLaneCapability.js +2 -0
- package/dist/gateOutcome.js +2 -17
- package/dist/gateVocabulary.d.ts +2 -4
- package/dist/gateVocabulary.js +3 -11
- package/dist/generated/engineFactTables.d.ts +16 -1
- package/dist/generated/engineFactTables.js +81 -0
- package/dist/generated/engineNoticeTables.js +3 -0
- package/dist/generated/settingsSchemaTables.d.ts +8 -0
- package/dist/generated/settingsSchemaTables.js +40 -0
- package/dist/hitl/allowRuleShadow.d.ts +21 -0
- package/dist/hitl/allowRuleShadow.js +167 -0
- package/dist/hitl/askClassPair.d.ts +14 -0
- package/dist/hitl/askClassPair.js +42 -0
- package/dist/hitl/askGateWire.js +1 -0
- package/dist/hitl/askSurvivesPosture.d.ts +5 -0
- package/dist/hitl/askSurvivesPosture.js +17 -0
- package/dist/hitl/automaticAnswerVerdict.d.ts +21 -0
- package/dist/hitl/automaticAnswerVerdict.js +143 -0
- package/dist/hitl/crashConverged.d.ts +1 -0
- package/dist/hitl/crashConverged.js +1 -1
- package/dist/hitl/frameRouter.d.ts +2 -0
- package/dist/hitl/frameRouter.js +66 -14
- package/dist/hitl/gateLedger.d.ts +6 -0
- package/dist/hitl/gateLedger.js +34 -5
- package/dist/hitl/hitlHostSurface.d.ts +2 -0
- package/dist/hitl/hitlHostSurface.js +7 -0
- package/dist/hitl/livePendingAsk.js +24 -5
- package/dist/hitl/parkResolver.js +3 -1
- package/dist/hitl/persistedRulesWire.d.ts +4 -1
- package/dist/hitl/persistedRulesWire.js +9 -2
- package/dist/hitl/planReviewWire.js +2 -2
- package/dist/hitl/replayedApproval.d.ts +21 -0
- package/dist/hitl/replayedApproval.js +89 -0
- package/dist/hitl/sessionPolicyDeliverable.js +20 -2
- package/dist/hitl/sessionPolicyWire.d.ts +8 -0
- package/dist/hitl/sessionPolicyWire.js +12 -2
- package/dist/hitl/toolApprovalWire.d.ts +6 -1
- package/dist/hitl/toolApprovalWire.js +20 -40
- package/dist/hookMatcherVerdict.js +2 -1
- package/dist/humanTurn.js +3 -4
- package/dist/index.d.ts +15 -5
- package/dist/index.js +12 -3
- package/dist/inheritEnvWire.js +3 -4
- package/dist/mcpLiveness.js +2 -1
- package/dist/memoryVerbsWire.d.ts +1 -1
- package/dist/memoryVerbsWire.js +3 -0
- package/dist/model/catalog.js +2 -1
- package/dist/model/providerPresets.d.ts +3 -1
- package/dist/model/tierVocabulary.d.ts +2 -1
- package/dist/model/tierVocabulary.js +3 -8
- package/dist/peerFrames.js +2 -2
- package/dist/permissionRuleIssue.js +9 -6
- package/dist/permissionsDeclaration.d.ts +7 -1
- package/dist/permissionsDeclaration.js +29 -20
- package/dist/pluginHooksWire.js +2 -11
- package/dist/promptProfileWireCaps.d.ts +2 -1
- package/dist/protocolSegment.d.ts +9 -0
- package/dist/protocolSegment.js +28 -0
- package/dist/request/taskRequest.js +1 -15
- package/dist/ruleCompileVerdict.d.ts +2 -0
- package/dist/ruleCompileVerdict.js +13 -0
- package/dist/ruleRemovalConsequence.d.ts +2 -1
- package/dist/runCancelContext.d.ts +12 -0
- package/dist/runCancelContext.js +83 -1
- package/dist/seam.js +1 -1
- package/dist/seatContract.d.ts +2 -1
- package/dist/sessionMemoryStatus.d.ts +2 -4
- package/dist/sessionSyncFileHistoryCapability.d.ts +18 -0
- package/dist/sessionSyncFileHistoryCapability.js +50 -0
- package/dist/skillToolListsCapability.d.ts +18 -0
- package/dist/skillToolListsCapability.js +50 -0
- package/dist/sqlEngineCapability.js +1 -8
- package/dist/steerPriorityCapability.d.ts +18 -0
- package/dist/steerPriorityCapability.js +80 -0
- package/dist/steerReceipt.d.ts +9 -0
- package/dist/steerReceipt.js +25 -0
- package/dist/subagent/engineSubagentSteer.js +2 -9
- package/dist/supportFloor.js +2 -2
- package/dist/toolResult.d.ts +8 -0
- package/dist/toolResult.js +47 -3
- package/dist/types/engineState.d.ts +2 -12
- package/dist/userInvokedSkillsCapability.d.ts +18 -0
- package/dist/userInvokedSkillsCapability.js +50 -0
- package/dist/wireFailureShape.d.ts +2 -0
- package/dist/wireFailureShape.js +4 -0
- package/dist/workflowsJournalCapability.d.ts +18 -0
- package/dist/workflowsJournalCapability.js +50 -0
- package/dist/writeProtectionCapability.d.ts +2 -4
- package/docs/INTEGRATION-CLIENTS.md +624 -12
- package/package.json +2 -2
|
@@ -2,11 +2,12 @@ import { APPROVAL_CARD_PORT_KEY_MISMATCH_REASON, DEFAULT_DENY_REASON, DecideTran
|
|
|
2
2
|
import { askParkRowArm } from './askParkRowRouting.js';
|
|
3
3
|
import { hostLog } from '../host.js';
|
|
4
4
|
import { readOwnNonEmptyString } from '../ownKey.js';
|
|
5
|
+
import { readAskClassPair } from './askClassPair.js';
|
|
6
|
+
import { legacyShadowedRuleTextOf, readAllowRuleShadowFromWire } from './allowRuleShadow.js';
|
|
5
7
|
import { createSessionSlot, DEFAULT_SESSION_KEY } from '../sessionSlot.js';
|
|
6
8
|
import { readEngineActiveBgTasks } from '../fleet/fleetLedger.js';
|
|
7
9
|
import { observeCancelByDeny, surfaceRememberNotApplied, surfaceEditNotForwarded, surfaceEditRefusedOnBlindAsk, surfaceRuleArmNotSent, surfaceRuleArmRejected } from './hitlHostSurface.js';
|
|
8
10
|
import { approvalCallKey, liveFrameCallKey } from './gateIdentity.js';
|
|
9
|
-
import { isRuleStoreUnreadableKind } from '../gateVocabulary.js';
|
|
10
11
|
import { isApprovalMandateWord } from '../gateVocabulary.js';
|
|
11
12
|
import { denyAttributionRefusalFromError } from '../wireRefusalCopy.js';
|
|
12
13
|
import { decideFailureNote } from '../decideFailureNote.js';
|
|
@@ -192,9 +193,8 @@ export async function surfaceFsApprovalAndDecide(deps, taskId, argsByCall, signa
|
|
|
192
193
|
const ruleOffersReadOnly = readRuleOfferSupply(pending.ruleOffers, pending.ruleSuggestions);
|
|
193
194
|
const durableProbeCause = pending.riskDescriptor?.probeCause;
|
|
194
195
|
const durableProbeReason = readProbeReason(pending.riskDescriptor);
|
|
195
|
-
const
|
|
196
|
+
const durableShadow = readAllowRuleShadowFromWire(pending, 'row');
|
|
196
197
|
const durableRuleOffersAbsence = pending.ruleOffersAbsence;
|
|
197
|
-
const durableRuleStoreUnreadable = readRuleStoreUnreadable(pending.ruleStoreUnreadable);
|
|
198
198
|
deps.onPresented?.();
|
|
199
199
|
const card = await surfaceApprovalCard({
|
|
200
200
|
toolName,
|
|
@@ -218,12 +218,9 @@ export async function surfaceFsApprovalAndDecide(deps, taskId, argsByCall, signa
|
|
|
218
218
|
...(ruleOffersReadOnly !== undefined ? { ruleOffersReadOnly } : {}),
|
|
219
219
|
...(isWireRecordCarrier(durableProbeCause) ? { probeCause: durableProbeCause } : {}),
|
|
220
220
|
...(durableProbeReason !== undefined ? { probeReason: durableProbeReason } : {}),
|
|
221
|
-
...(
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
...(typeof durableShadowedRule === 'string' && durableShadowedRule.trim() !== ''
|
|
225
|
-
? { persistedRuleShadowed: durableShadowedRule }
|
|
226
|
-
: {}),
|
|
221
|
+
...(readRememberRefused(pending) ? { rememberRefused: true } : {}),
|
|
222
|
+
...(durableShadow !== undefined ? { allowRuleShadow: durableShadow } : {}),
|
|
223
|
+
...((t) => (t !== undefined ? { persistedRuleShadowed: t } : {}))(legacyShadowedRuleTextOf(durableShadow)),
|
|
227
224
|
...(typeof durableRuleOffersAbsence === 'string' && durableRuleOffersAbsence !== ''
|
|
228
225
|
? { ruleOffersAbsence: durableRuleOffersAbsence }
|
|
229
226
|
: {}),
|
|
@@ -399,8 +396,10 @@ export const TOOL_APPROVAL_FRAME_KEYS_MIRROR = [
|
|
|
399
396
|
'inputHasBidi',
|
|
400
397
|
'parked',
|
|
401
398
|
'persistedRuleShadowed',
|
|
399
|
+
'allowRuleShadowed',
|
|
402
400
|
'probeCause',
|
|
403
401
|
'probeReason',
|
|
402
|
+
'rememberRefused',
|
|
404
403
|
'ruleEvidence',
|
|
405
404
|
'requiresRealApproval',
|
|
406
405
|
'expiresInMs',
|
|
@@ -445,30 +444,6 @@ export function toolPermissionRequestAskBits(card) {
|
|
|
445
444
|
...(askClassPair ?? {}),
|
|
446
445
|
};
|
|
447
446
|
}
|
|
448
|
-
function readAskClassPair(v) {
|
|
449
|
-
if (typeof v !== 'object' || v === null)
|
|
450
|
-
return undefined;
|
|
451
|
-
const askClass = readOwnNonEmptyString(v, 'askClass');
|
|
452
|
-
if (askClass === undefined || !Object.hasOwn(v, 'classes'))
|
|
453
|
-
return undefined;
|
|
454
|
-
const raw = v.classes;
|
|
455
|
-
if (!Array.isArray(raw) || raw.length === 0)
|
|
456
|
-
return undefined;
|
|
457
|
-
const classes = [];
|
|
458
|
-
const seen = new Set();
|
|
459
|
-
for (let i = 0; i < raw.length; i++) {
|
|
460
|
-
if (!Object.hasOwn(raw, i))
|
|
461
|
-
return undefined;
|
|
462
|
-
const c = raw[i];
|
|
463
|
-
if (typeof c !== 'string' || c === '' || seen.has(c))
|
|
464
|
-
return undefined;
|
|
465
|
-
seen.add(c);
|
|
466
|
-
classes.push(c);
|
|
467
|
-
}
|
|
468
|
-
if (classes[0] !== askClass)
|
|
469
|
-
return undefined;
|
|
470
|
-
return { askClass, classes: Object.freeze(classes) };
|
|
471
|
-
}
|
|
472
447
|
function hasOwnStrictTrue(v, key) {
|
|
473
448
|
return Object.hasOwn(v, key) && v[key] === true;
|
|
474
449
|
}
|
|
@@ -663,6 +638,14 @@ function readProbeReason(v) {
|
|
|
663
638
|
return undefined;
|
|
664
639
|
}
|
|
665
640
|
}
|
|
641
|
+
function readRememberRefused(v) {
|
|
642
|
+
try {
|
|
643
|
+
return typeof v === 'object' && v !== null && Object.hasOwn(v, 'rememberRefused') && v.rememberRefused === true;
|
|
644
|
+
}
|
|
645
|
+
catch {
|
|
646
|
+
return false;
|
|
647
|
+
}
|
|
648
|
+
}
|
|
666
649
|
function isNonNegativeFinite(v) {
|
|
667
650
|
return typeof v === 'number' && Number.isFinite(v) && v >= 0;
|
|
668
651
|
}
|
|
@@ -688,9 +671,6 @@ export function readDenialLimitFallback(v) {
|
|
|
688
671
|
autoDenyAfterMs: d.autoDenyAfterMs,
|
|
689
672
|
};
|
|
690
673
|
}
|
|
691
|
-
function readRuleStoreUnreadable(v) {
|
|
692
|
-
return isRuleStoreUnreadableKind(v) ? v : undefined;
|
|
693
|
-
}
|
|
694
674
|
function isRuleOfferMatch(v) {
|
|
695
675
|
return typeof v === 'string' && RULE_OFFER_MATCHES.includes(v);
|
|
696
676
|
}
|
|
@@ -876,6 +856,7 @@ export async function surfaceToolApprovalFrameAndRespond(frame, respond, streamA
|
|
|
876
856
|
const argsNotRealInput = argsFallback || lane?.argsUnavailable === true;
|
|
877
857
|
const ruleOffers = readRuleOfferSupply(frame.ruleOffers, frame.ruleSuggestions);
|
|
878
858
|
const denialLimitFallback = readDenialLimitFallback(frame.denialLimitFallback);
|
|
859
|
+
const frameShadow = readAllowRuleShadowFromWire(frame, 'frame');
|
|
879
860
|
const card = await surfaceApprovalCard({
|
|
880
861
|
toolName,
|
|
881
862
|
args: args,
|
|
@@ -902,11 +883,11 @@ export async function surfaceToolApprovalFrameAndRespond(frame, respond, streamA
|
|
|
902
883
|
? { delegation: frame.delegation }
|
|
903
884
|
: {}),
|
|
904
885
|
...(ruleOffers !== undefined ? { ruleOffers } : {}),
|
|
905
|
-
...(
|
|
906
|
-
|
|
907
|
-
: {}),
|
|
886
|
+
...((sh) => (sh !== undefined ? { allowRuleShadow: sh } : {}))(frameShadow),
|
|
887
|
+
...((t) => (t !== undefined ? { persistedRuleShadowed: t } : {}))(legacyShadowedRuleTextOf(frameShadow)),
|
|
908
888
|
...(isWireRecordCarrier(frame.probeCause) ? { probeCause: frame.probeCause } : {}),
|
|
909
889
|
...((r) => (r !== undefined ? { probeReason: r } : {}))(readProbeReason(frame)),
|
|
890
|
+
...(readRememberRefused(frame) ? { rememberRefused: true } : {}),
|
|
910
891
|
...(isWireRecordCarrier(frame.ruleEvidence) ? { ruleEvidence: frame.ruleEvidence } : {}),
|
|
911
892
|
...(frame.requiresRealApproval === true ? { requiresRealApproval: true } : {}),
|
|
912
893
|
...(hasOwnStrictTrue(frame, 'mandated') ? { mandated: true } : {}),
|
|
@@ -917,7 +898,6 @@ export async function surfaceToolApprovalFrameAndRespond(frame, respond, streamA
|
|
|
917
898
|
? { ruleOffersAbsence: frame.ruleOffersAbsence }
|
|
918
899
|
: {}),
|
|
919
900
|
...(denialLimitFallback !== undefined ? { denialLimitFallback } : {}),
|
|
920
|
-
...((k) => (k !== undefined ? { ruleStoreUnreadable: k } : {}))(readRuleStoreUnreadable(frame.ruleStoreUnreadable)),
|
|
921
901
|
...((o) => (o !== undefined ? { origin: o } : {}))(readOwnNonEmptyString(frame, 'origin')),
|
|
922
902
|
...(readAskClassPair(frame) ?? {}),
|
|
923
903
|
});
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HOOK_TOOL_ALIASES } from './hookToolAliases.js';
|
|
2
|
-
|
|
2
|
+
import { SETTINGS_TOOL_NAME_MATCHER_EVENTS } from './generated/settingsSchemaTables.js';
|
|
3
|
+
const TOOL_NAME_MATCHER_EVENTS = new Set(SETTINGS_TOOL_NAME_MATCHER_EVENTS);
|
|
3
4
|
const MATCHER_MAX_CHARS = 8192;
|
|
4
5
|
const PATTERN_WORK_BUDGET = 10_000_000;
|
|
5
6
|
const PATTERN_MAX_DEPTH = 32;
|
package/dist/humanTurn.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
+
import { CORE_MAX_PENDING_STEER_CHARS, CORE_MCP_IMAGE_MAX_BASE64 } from './generated/engineFactTables.js';
|
|
1
2
|
import { mintEnvelopeOf, mintReferenceOf } from './userAttachmentEnvelope.js';
|
|
2
3
|
import { readEncodingShares, readHumanTurnInput } from './humanTurnRead.js';
|
|
3
4
|
const REQUEST_BODY_MAX_BYTES = 8 * 1024 * 1024;
|
|
4
5
|
const IMAGE_SEAT_MAX_COUNT = 20;
|
|
5
|
-
const IMAGE_MAX_BASE64_CHARS_EACH = 6 * 1024 * 1024;
|
|
6
6
|
const IMAGE_SEAT_MAX_BASE64_CHARS_TOTAL = 6 * 1024 * 1024;
|
|
7
|
-
const STEER_MAX_CHARS = 16000;
|
|
8
7
|
const STEER_REMINDER_TAG = /<\s*\/?\s*system-reminder(?:\s[^>]*)?>/i;
|
|
9
8
|
const STEER_CONTROL_CHARS = /[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/;
|
|
10
9
|
function utf8Length(s) {
|
|
@@ -46,7 +45,7 @@ function steerRefusal(text) {
|
|
|
46
45
|
return 'reminder_tag';
|
|
47
46
|
if (STEER_CONTROL_CHARS.test(text))
|
|
48
47
|
return 'control_char';
|
|
49
|
-
if (text.length >
|
|
48
|
+
if (text.length > CORE_MAX_PENDING_STEER_CHARS)
|
|
50
49
|
return 'too_long';
|
|
51
50
|
return undefined;
|
|
52
51
|
}
|
|
@@ -148,7 +147,7 @@ function encodeObjective(v) {
|
|
|
148
147
|
let count = 0;
|
|
149
148
|
let total = 0;
|
|
150
149
|
const seat = (len) => {
|
|
151
|
-
if (len >
|
|
150
|
+
if (len > CORE_MCP_IMAGE_MAX_BASE64)
|
|
152
151
|
return 'image_too_large';
|
|
153
152
|
if (count + 1 > IMAGE_SEAT_MAX_COUNT)
|
|
154
153
|
return 'seat_count';
|
package/dist/index.d.ts
CHANGED
|
@@ -50,6 +50,11 @@ export * from './mcpPanel.js';
|
|
|
50
50
|
export * from './mcpLiveness.js';
|
|
51
51
|
export * from './mcpEngineLeg.js';
|
|
52
52
|
export * from './mcpProbeCapability.js';
|
|
53
|
+
export * from './sessionSyncFileHistoryCapability.js';
|
|
54
|
+
export * from './workflowsJournalCapability.js';
|
|
55
|
+
export * from './userInvokedSkillsCapability.js';
|
|
56
|
+
export * from './skillToolListsCapability.js';
|
|
57
|
+
export * from './steerPriorityCapability.js';
|
|
53
58
|
export * from './mcpProbeWire.js';
|
|
54
59
|
export * from './effectiveFacts.js';
|
|
55
60
|
export * from './gateOutcome.js';
|
|
@@ -69,14 +74,15 @@ export type { DisplayUntrustedOptions, DisplayMark, DisplayMarkSpan, DisplayUntr
|
|
|
69
74
|
export type * from './types/engineState.js';
|
|
70
75
|
export * from './hostEnv.js';
|
|
71
76
|
export * from './unrefTimer.js';
|
|
72
|
-
export { ControlRouter, ControlSafetyError, errCodes, steerRefusalAdviceOf, steeringRefusedBeforeEngine, type ControlClientLike, type ControlRouterOptions, type ControlSafetyCode, type ErrCodes, type
|
|
77
|
+
export { ControlRouter, ControlSafetyError, errCodes, steerBodyOf, steerRefusalAdviceOf, steeringRefusedBeforeEngine, type ControlClientLike, type ControlRouterOptions, type ControlRouterSteerOptions, type ControlSafetyCode, type ErrCodes, type RunsResourceLike, type SteerBody, type SteerBodyInput, type SteerRefusalAdvice, type SteeringRefusedBeforeEngine, } from './controlRouter.js';
|
|
78
|
+
export { readSteerReceipt, type SteerReceiptReading } from './steerReceipt.js';
|
|
73
79
|
export * from './sseIdleTriage.js';
|
|
74
80
|
export * from './engineWireSdk.js';
|
|
75
81
|
export * from './classifierVerdictWire.js';
|
|
76
82
|
export { stripSystemReminderBlocks, unwrapSystemReminder } from './systemReminderTag.js';
|
|
77
83
|
export { findSystemReminderOpenTag, type SystemReminderOpenTagSpan } from './systemReminderTag.js';
|
|
78
|
-
export { ACTIVE_RUN_BUSY_ERROR_CODE, asModelFallbackReason, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_REFUSAL_CODES, CONFIG_STRATEGY_FIND_LIMIT_INVALID, CONFIG_STRATEGY_MAX_SIZE_INVALID, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, FLEET_LEASE_UNAVAILABLE, GATE_PARKED_ERROR_CODE, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDelegationCapCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isRulesRefusalCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, RULES_LEGACY_TOOL_NAME, SCENARIO_NOT_ALLOWED_ERROR_CODE, STATUS_DERIVED_COARSE_CODES, STOP_CONFLICT_CODES, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, WORKFLOW_PARK_REFUSAL_CODES, } from './engineErrorCodes.js';
|
|
79
|
-
export type { DelegationCapDisposition, ModelFallbackReason, } from './engineErrorCodes.js';
|
|
84
|
+
export { ACTIVE_RUN_BUSY_ERROR_CODE, APPROVAL_EXPIRED, ASK_GONE, asModelFallbackReason, CAPABILITY_OPERATOR_PRINCIPALS_REQUIRED, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_IMAGE_INVALID, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_REFUSAL_CODES, CONFIG_STRATEGY_FIND_LIMIT_INVALID, CONFIG_STRATEGY_MAX_SIZE_INVALID, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, FLEET_LEASE_UNAVAILABLE, GATE_PARKED_ERROR_CODE, imageInvalidFailureNoteOf, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDelegationCapCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isRulesRefusalCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, operatorGateRefusalContent, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, RULES_LEGACY_TOOL_NAME, RUN_DEATH_VERDICT_CODES, RUN_ORPHANED, RUN_STALLED, runDeathVerdictNoteOf, SCENARIO_NOT_ALLOWED_ERROR_CODE, STATUS_DERIVED_COARSE_CODES, STOP_CONFLICT_CODES, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, WORKFLOW_PARK_REFUSAL_CODES, } from './engineErrorCodes.js';
|
|
85
|
+
export type { DelegationCapDisposition, ModelFallbackReason, OperatorGateRefusal, RunDeathVerdictCode, } from './engineErrorCodes.js';
|
|
80
86
|
export * from './agentsWireCaps.js';
|
|
81
87
|
export * from './attachmentsWireCaps.js';
|
|
82
88
|
export * from './clientContextWireCaps.js';
|
|
@@ -119,7 +125,7 @@ export * from './request/taskRequest.js';
|
|
|
119
125
|
export { disableSkillsDeclaration, disableSkillsDeclarationSettled } from './disableSkillsWire.js';
|
|
120
126
|
export type { DisableSkillsDeclaration } from './disableSkillsWire.js';
|
|
121
127
|
export { PERMISSIONS_KEPT_REASONS, permissionsDeclaration, permissionsDeclarationReport } from './permissionsDeclaration.js';
|
|
122
|
-
export type { PermissionsDeclaration, PermissionsDeclarationBuckets, PermissionsDeclarationInput, PermissionsDeclarationReport, PermissionsKeptReason, PermissionsKeptRule, PermissionsRewrittenRule, PermissionsUncheckedRule, WireRuleOrigin, WireRuleOrigins, } from './permissionsDeclaration.js';
|
|
128
|
+
export type { PermissionsDeclaration, PermissionsDeclarationBuckets, PermissionsDeclarationInput, PermissionsDeclarationReport, PermissionsKeptReason, PermissionsKeptRule, PermissionsRewrittenRule, PermissionsUncheckedRule, PermissionsUnreachableRule, WireRuleOrigin, WireRuleOrigins, } from './permissionsDeclaration.js';
|
|
123
129
|
export * from './clientSlice.js';
|
|
124
130
|
export * from './host.js';
|
|
125
131
|
export { abortableSleep } from './abortableSleep.js';
|
|
@@ -195,7 +201,7 @@ export * from './hitl/suspendedReopen.js';
|
|
|
195
201
|
export * from './hitl/approvalOutcomeNote.js';
|
|
196
202
|
export * from './hitl/approvalResolution.js';
|
|
197
203
|
export { toolEndOutputText, ENGINE_ABORT_TOOL_RESULT } from './hitl/frameRouter.js';
|
|
198
|
-
export { _resetHitlHostSurfaceForTest, CANCEL_DENY_BUDGET_MS, CANCEL_DENY_WARN_TEXT, EDIT_NOT_FORWARDED_WARN_TEXT, EDIT_REFUSED_ON_BLIND_ASK_WARN_TEXT, hitlHostSurfaceFor, hitlHostSurfaceMisses, hitlHostSurfaceMissesFor, installHitlHostSurface, installHitlHostSurfaceFor, observeCancelByDeny, REMEMBER_NOT_APPLIED_WARN_TEXT, RULE_NOT_SENT_REJECTED_WARN_TEXT, RULE_NOT_SENT_WARN_TEXT, surfaceEditRefusedOnBlindAsk, surfaceForCurrentSession, surfaceRememberNotApplied, } from './hitl/hitlHostSurface.js';
|
|
204
|
+
export { _resetHitlHostSurfaceForTest, CANCEL_DENY_BUDGET_MS, CANCEL_DENY_WARN_TEXT, EDIT_NOT_FORWARDED_WARN_TEXT, EDIT_REFUSED_ON_BLIND_ASK_WARN_TEXT, hitlHostSurfaceFor, hitlHostSurfaceMisses, hitlHostSurfaceMissesFor, installHitlHostSurface, installHitlHostSurfaceFor, observeCancelByDeny, REMEMBER_NOT_APPLIED_WARN_TEXT, REPLAYED_APPROVAL_LIST_UNREADABLE_WARN_TEXT, RULE_NOT_SENT_REJECTED_WARN_TEXT, RULE_NOT_SENT_WARN_TEXT, surfaceEditRefusedOnBlindAsk, surfaceForCurrentSession, surfaceRememberNotApplied, } from './hitl/hitlHostSurface.js';
|
|
199
205
|
export type { ClassifierDenyContext, HitlHostSurface, HitlNotice, } from './hitl/hitlHostSurface.js';
|
|
200
206
|
export * from './hitl/toolApprovalWire.js';
|
|
201
207
|
export * from './hitl/editedRuleTextPrecheck.js';
|
|
@@ -215,7 +221,11 @@ export * from './hitl/sessionPolicyWire.js';
|
|
|
215
221
|
export * from './hitl/sessionPolicyDeliverable.js';
|
|
216
222
|
export * from './hitl/approvalsFeed.js';
|
|
217
223
|
export * from './hitl/livePendingAsk.js';
|
|
224
|
+
export { replayedApprovalDisposition } from './hitl/replayedApproval.js';
|
|
225
|
+
export type { ReplayedApprovalDisposition, ReplayPendingBasis } from './hitl/replayedApproval.js';
|
|
218
226
|
export * from './hitl/askSurvivesPosture.js';
|
|
227
|
+
export { automaticAnswerVerdict, type AutomaticAnswerLane, type AutomaticAnswerFacts, type AutomaticAnswerRoad, type AutomaticAnswerUnknownWhy, type AutomaticAnswerVerdict, } from './hitl/automaticAnswerVerdict.js';
|
|
228
|
+
export { readApprovalAllowRuleShadow, approvalAllowRuleShadowed, type ApprovalAllowRuleShadow, type ApprovalAllowRuleShadowMember, type AllowRuleShadowedWireMember, } from './hitl/allowRuleShadow.js';
|
|
219
229
|
export { projectCrashConverged } from './hitl/crashConverged.js';
|
|
220
230
|
export type { ApprovalsListEnvelope, CrashConvergedOrphanState, CrashConvergedProjection, CrashConvergedRow } from './hitl/crashConverged.js';
|
|
221
231
|
export * from './hitl/crashConvergedNotice.js';
|
package/dist/index.js
CHANGED
|
@@ -44,6 +44,11 @@ export * from './mcpPanel.js';
|
|
|
44
44
|
export * from './mcpLiveness.js';
|
|
45
45
|
export * from './mcpEngineLeg.js';
|
|
46
46
|
export * from './mcpProbeCapability.js';
|
|
47
|
+
export * from './sessionSyncFileHistoryCapability.js';
|
|
48
|
+
export * from './workflowsJournalCapability.js';
|
|
49
|
+
export * from './userInvokedSkillsCapability.js';
|
|
50
|
+
export * from './skillToolListsCapability.js';
|
|
51
|
+
export * from './steerPriorityCapability.js';
|
|
47
52
|
export * from './mcpProbeWire.js';
|
|
48
53
|
export * from './effectiveFacts.js';
|
|
49
54
|
export * from './gateOutcome.js';
|
|
@@ -61,13 +66,14 @@ export * from './fleetTaskDesc.js';
|
|
|
61
66
|
export { displayUntrusted, displayUntrustedMarks } from './displayUntrusted.js';
|
|
62
67
|
export * from './hostEnv.js';
|
|
63
68
|
export * from './unrefTimer.js';
|
|
64
|
-
export { ControlRouter, ControlSafetyError, errCodes, steerRefusalAdviceOf, steeringRefusedBeforeEngine, } from './controlRouter.js';
|
|
69
|
+
export { ControlRouter, ControlSafetyError, errCodes, steerBodyOf, steerRefusalAdviceOf, steeringRefusedBeforeEngine, } from './controlRouter.js';
|
|
70
|
+
export { readSteerReceipt } from './steerReceipt.js';
|
|
65
71
|
export * from './sseIdleTriage.js';
|
|
66
72
|
export * from './engineWireSdk.js';
|
|
67
73
|
export * from './classifierVerdictWire.js';
|
|
68
74
|
export { stripSystemReminderBlocks, unwrapSystemReminder } from './systemReminderTag.js';
|
|
69
75
|
export { findSystemReminderOpenTag } from './systemReminderTag.js';
|
|
70
|
-
export { ACTIVE_RUN_BUSY_ERROR_CODE, asModelFallbackReason, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_REFUSAL_CODES, CONFIG_STRATEGY_FIND_LIMIT_INVALID, CONFIG_STRATEGY_MAX_SIZE_INVALID, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, FLEET_LEASE_UNAVAILABLE, GATE_PARKED_ERROR_CODE, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDelegationCapCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isRulesRefusalCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, RULES_LEGACY_TOOL_NAME, SCENARIO_NOT_ALLOWED_ERROR_CODE, STATUS_DERIVED_COARSE_CODES, STOP_CONFLICT_CODES, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, WORKFLOW_PARK_REFUSAL_CODES, } from './engineErrorCodes.js';
|
|
76
|
+
export { ACTIVE_RUN_BUSY_ERROR_CODE, APPROVAL_EXPIRED, ASK_GONE, asModelFallbackReason, CAPABILITY_OPERATOR_PRINCIPALS_REQUIRED, CAPABILITY_SELF_ORCHESTRATION_REQUIRED, CONFIG_DELEGATION_ENTRY_CAPS, CONFIG_IMAGE_INVALID, CONFIG_LEGACY_TOOL_NAME, CONFIG_LIMIT_INVALID, CONFIG_LIMIT_UNKNOWN_KEY, CONFIG_MEMORY_PROJECT_KEY_SPELLING, CONFIG_MEMORY_WRITE_SCOPE_MISMATCH, CONFIG_REFUSAL_CODES, CONFIG_STRATEGY_FIND_LIMIT_INVALID, CONFIG_STRATEGY_MAX_SIZE_INVALID, CORRUPT_SESSION_ERROR_CODE, DECIDE_CLAIM_LOST, DECIDE_GATE_MOVED, DECIDE_NOT_PARKED, DECIDE_PARK_MOVED_CODES, DECIDE_WORKFLOW_HOST_UNKNOWN, DECIDE_WORKFLOW_LANE_CODES, DECIDE_WORKFLOW_REMEMBER_UNSUPPORTED, DELEGATION_CAP_CODES, DELEGATION_CONCURRENCY_CAP, DELEGATION_SESSION_CAP, delegationCapDispositionOf, DRAINING_ERROR_CODE, ENGINE_STOP_REASONS, engineStopReasonToCc, ENV_LIFETIME_EXPIRED, FLEET_LEASE_UNAVAILABLE, GATE_PARKED_ERROR_CODE, imageInvalidFailureNoteOf, isConfigRefusalCode, isCorruptSessionCode, isDecideParkMovedCode, isDelegationCapCode, isInterruptedToolEndCode, isLimitsExceededCode, isRewindFamilyCode, isRulesRefusalCode, isStatusDerivedCoarseCode, isWorkflowParkRefusalCode, LIMITS_MAX_COST_EXCEEDED, LIMITS_MAX_TOKENS_EXCEEDED, LIMITS_MAX_TURNS_EXCEEDED, LIMITS_MAX_WALLTIME_EXCEEDED, MCP_SERVER_REVOKED, MODEL_FALLBACK_INHERIT_NO_TIER_BINDING, operatorGateRefusalContent, OUTPUT_INVALID, PARKED_RESUME_STARTUP_FAILED, RESUME_AT_ERROR_CODE_PREFIX, RESUME_CONTEXT_UNAVAILABLE, RESUME_ENV_FAILED, RESUME_PLACEMENT_MISMATCH, RESUME_POLICY_FOLD_CODE, RESUME_PREFLIGHT_REJECTED, RESUME_REOPEN_CODES, RESUME_RETRY_LATER_CODES, RESUME_TOOL_CONTRACT_MISMATCH, RESUME_TOOL_UNAVAILABLE, RESUME_USAGE_WINDOW_EXHAUSTED, REWIND_ERROR_CODE_PREFIXES, RULES_LEGACY_TOOL_NAME, RUN_DEATH_VERDICT_CODES, RUN_ORPHANED, RUN_STALLED, runDeathVerdictNoteOf, SCENARIO_NOT_ALLOWED_ERROR_CODE, STATUS_DERIVED_COARSE_CODES, STOP_CONFLICT_CODES, STREAM_MAX_DURATION, TOOL_END_INTERRUPTED_NEVER_STARTED, TOOL_END_INTERRUPTED_OUTCOME_UNKNOWN, USAGE_WINDOW_EXHAUSTED, WORKFLOW_PARK_REFUSAL_CODES, } from './engineErrorCodes.js';
|
|
71
77
|
export * from './agentsWireCaps.js';
|
|
72
78
|
export * from './attachmentsWireCaps.js';
|
|
73
79
|
export * from './clientContextWireCaps.js';
|
|
@@ -170,7 +176,7 @@ export * from './hitl/suspendedReopen.js';
|
|
|
170
176
|
export * from './hitl/approvalOutcomeNote.js';
|
|
171
177
|
export * from './hitl/approvalResolution.js';
|
|
172
178
|
export { toolEndOutputText, ENGINE_ABORT_TOOL_RESULT } from './hitl/frameRouter.js';
|
|
173
|
-
export { _resetHitlHostSurfaceForTest, CANCEL_DENY_BUDGET_MS, CANCEL_DENY_WARN_TEXT, EDIT_NOT_FORWARDED_WARN_TEXT, EDIT_REFUSED_ON_BLIND_ASK_WARN_TEXT, hitlHostSurfaceFor, hitlHostSurfaceMisses, hitlHostSurfaceMissesFor, installHitlHostSurface, installHitlHostSurfaceFor, observeCancelByDeny, REMEMBER_NOT_APPLIED_WARN_TEXT, RULE_NOT_SENT_REJECTED_WARN_TEXT, RULE_NOT_SENT_WARN_TEXT, surfaceEditRefusedOnBlindAsk, surfaceForCurrentSession, surfaceRememberNotApplied, } from './hitl/hitlHostSurface.js';
|
|
179
|
+
export { _resetHitlHostSurfaceForTest, CANCEL_DENY_BUDGET_MS, CANCEL_DENY_WARN_TEXT, EDIT_NOT_FORWARDED_WARN_TEXT, EDIT_REFUSED_ON_BLIND_ASK_WARN_TEXT, hitlHostSurfaceFor, hitlHostSurfaceMisses, hitlHostSurfaceMissesFor, installHitlHostSurface, installHitlHostSurfaceFor, observeCancelByDeny, REMEMBER_NOT_APPLIED_WARN_TEXT, REPLAYED_APPROVAL_LIST_UNREADABLE_WARN_TEXT, RULE_NOT_SENT_REJECTED_WARN_TEXT, RULE_NOT_SENT_WARN_TEXT, surfaceEditRefusedOnBlindAsk, surfaceForCurrentSession, surfaceRememberNotApplied, } from './hitl/hitlHostSurface.js';
|
|
174
180
|
export * from './hitl/toolApprovalWire.js';
|
|
175
181
|
export * from './hitl/editedRuleTextPrecheck.js';
|
|
176
182
|
export * from './coreValuePorts.js';
|
|
@@ -189,7 +195,10 @@ export * from './hitl/sessionPolicyWire.js';
|
|
|
189
195
|
export * from './hitl/sessionPolicyDeliverable.js';
|
|
190
196
|
export * from './hitl/approvalsFeed.js';
|
|
191
197
|
export * from './hitl/livePendingAsk.js';
|
|
198
|
+
export { replayedApprovalDisposition } from './hitl/replayedApproval.js';
|
|
192
199
|
export * from './hitl/askSurvivesPosture.js';
|
|
200
|
+
export { automaticAnswerVerdict, } from './hitl/automaticAnswerVerdict.js';
|
|
201
|
+
export { readApprovalAllowRuleShadow, approvalAllowRuleShadowed, } from './hitl/allowRuleShadow.js';
|
|
193
202
|
export { projectCrashConverged } from './hitl/crashConverged.js';
|
|
194
203
|
export * from './hitl/crashConvergedNotice.js';
|
|
195
204
|
export * from './interactiveHalt.js';
|
package/dist/inheritEnvWire.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { INHERIT_ENV_WORDS, isInheritEnvWord } from './request/taskRequest.js';
|
|
2
2
|
import { settingsPermissionBucketRefusalFromError } from './wireRefusalCopy.js';
|
|
3
|
+
import { engineVersionTier } from './supportFloor.js';
|
|
3
4
|
export const INHERIT_ENV_MIN_SERVER = Object.freeze([7, 106, 0]);
|
|
4
5
|
export function inheritEnvServerSupport(version) {
|
|
5
6
|
const mm = typeof version === 'string' ? /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/.exec(version) : null;
|
|
@@ -21,11 +22,9 @@ export function inheritEnvDeclaration(word, serverVersion) {
|
|
|
21
22
|
if (!isInheritEnvWord(word)) {
|
|
22
23
|
throw new TypeError(`inheritEnvDeclaration: inheritEnv 只接受 ${INHERIT_ENV_WORDS.map((w) => `'${w}'`).join(' / ')} 或缺席 —— 收到 ${Array.isArray(word) ? 'typeof=object / array' : `typeof=${typeof word}`}。坏词在版本判定之前就拒:「这一次不发」不许顺手吞掉一个打错字的声明。错误文本只报形状,不回显值。`);
|
|
23
24
|
}
|
|
24
|
-
|
|
25
|
-
if (support === 'supported')
|
|
25
|
+
if (engineVersionTier(serverVersion) !== 'unknown')
|
|
26
26
|
return Object.freeze({ field: Object.freeze({ inheritEnv: word }) });
|
|
27
|
-
|
|
28
|
-
return Object.freeze({ field: Object.freeze({}), withheld: Object.freeze({ cause, word }) });
|
|
27
|
+
return Object.freeze({ field: Object.freeze({}), withheld: Object.freeze({ cause: 'server_version_unknown', word }) });
|
|
29
28
|
}
|
|
30
29
|
const WITHHELD_NOTICES = Object.freeze({
|
|
31
30
|
server_too_old: Object.freeze({
|
package/dist/mcpLiveness.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { CORE_MCP_LIVENESS_STATES } from './generated/engineFactTables.js';
|
|
2
|
+
export const MCP_LIVENESS_STATES = CORE_MCP_LIVENESS_STATES;
|
|
2
3
|
void MCP_LIVENESS_STATES;
|
|
3
4
|
void true;
|
|
4
5
|
void true;
|
|
@@ -19,7 +19,7 @@ export interface MemoryFacade {
|
|
|
19
19
|
signal?: AbortSignal;
|
|
20
20
|
}): Promise<MemoryOriginClearReceipt>;
|
|
21
21
|
}
|
|
22
|
-
export declare const MEMORY_VERB_REFUSAL_CAUSES: readonly ["face_absent", "client_too_old", "unreadable_request", "store_absent", "operator_only", "unauthorized", "service_token_required", "id_invalid", "request_id_required", "body_shape", "query_invalid", "selector_invalid", "evidence_unavailable", "selector_mismatch", "census_incomplete", "clear_unattributed", "clear_invalid", "clear_not_marked", "clear_challenged", "clear_conflict", "clear_pending"];
|
|
22
|
+
export declare const MEMORY_VERB_REFUSAL_CAUSES: readonly ["face_absent", "client_too_old", "unreadable_request", "store_absent", "operator_only", "operators_unconfigured", "unauthorized", "service_token_required", "id_invalid", "request_id_required", "body_shape", "query_invalid", "selector_invalid", "evidence_unavailable", "selector_mismatch", "census_incomplete", "clear_unattributed", "clear_invalid", "clear_not_marked", "clear_challenged", "clear_conflict", "clear_pending"];
|
|
23
23
|
export type MemoryVerbRefusalCause = (typeof MEMORY_VERB_REFUSAL_CAUSES)[number];
|
|
24
24
|
export declare const MEMORY_VERB_UNKNOWN_WHYS: readonly ["no_verdict", "server_fault", "control_plane_corrupt", "clear_unknown", "clear_failed", "result_unreadable", "unsupported_version", "identity_mismatch", "unclassified"];
|
|
25
25
|
export type MemoryVerbUnknownWhy = (typeof MEMORY_VERB_UNKNOWN_WHYS)[number];
|
package/dist/memoryVerbsWire.js
CHANGED
|
@@ -8,6 +8,7 @@ export const MEMORY_VERB_REFUSAL_CAUSES = Object.freeze([
|
|
|
8
8
|
'unreadable_request',
|
|
9
9
|
'store_absent',
|
|
10
10
|
'operator_only',
|
|
11
|
+
'operators_unconfigured',
|
|
11
12
|
'unauthorized',
|
|
12
13
|
'service_token_required',
|
|
13
14
|
'id_invalid',
|
|
@@ -51,6 +52,8 @@ export function classifyMemoryFailure(e) {
|
|
|
51
52
|
return refusedBy('unauthorized', message);
|
|
52
53
|
case 'auth.operator_only':
|
|
53
54
|
return refusedBy('operator_only', message);
|
|
55
|
+
case 'capability.operator_principals_required':
|
|
56
|
+
return refusedBy('operators_unconfigured', message);
|
|
54
57
|
case 'auth.service_token_required':
|
|
55
58
|
return refusedBy('service_token_required', message);
|
|
56
59
|
case 'capability.memory_engine_required':
|
package/dist/model/catalog.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PROVIDER_PRESETS } from './providerPresets.js';
|
|
2
|
+
import { SETTINGS_MODEL_API_WORDS } from '../generated/settingsSchemaTables.js';
|
|
2
3
|
export const CATALOG_SCHEMA_VERSION_MIN = 1;
|
|
3
4
|
export const CATALOG_SCHEMA_VERSION_MAX = 1;
|
|
4
5
|
export function isSupportedCatalogSchemaVersion(v) {
|
|
@@ -15,7 +16,7 @@ function isProviderRow(v) {
|
|
|
15
16
|
r.id.length > 0 &&
|
|
16
17
|
typeof r.name === 'string' &&
|
|
17
18
|
typeof r.baseUrl === 'string' &&
|
|
18
|
-
|
|
19
|
+
typeof r.api === 'string' && SETTINGS_MODEL_API_WORDS.includes(r.api) &&
|
|
19
20
|
typeof r.authEnv === 'string' &&
|
|
20
21
|
Array.isArray(r.models));
|
|
21
22
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { SETTINGS_MODEL_API_WORDS } from '../generated/settingsSchemaTables.js';
|
|
2
|
+
export type ModelApiWord = (typeof SETTINGS_MODEL_API_WORDS)[number];
|
|
1
3
|
export type PresetModel = {
|
|
2
4
|
id: string;
|
|
3
5
|
contextWindow: number;
|
|
@@ -8,7 +10,7 @@ export type ProviderPreset = {
|
|
|
8
10
|
id: string;
|
|
9
11
|
name: string;
|
|
10
12
|
baseUrl: string;
|
|
11
|
-
api:
|
|
13
|
+
api: ModelApiWord;
|
|
12
14
|
authEnv: string;
|
|
13
15
|
models: PresetModel[];
|
|
14
16
|
modelViaFamily?: boolean;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { CORE_DEFAULT_TIER_ORDER } from '../generated/engineFactTables.js';
|
|
2
|
+
export type Tier = (typeof CORE_DEFAULT_TIER_ORDER)[number];
|
|
2
3
|
export declare const TIER_ORDER: readonly Tier[];
|
|
3
4
|
export declare const SURFACED_TIERS: readonly Tier[];
|
|
4
5
|
export declare const CC_TIER_ALIASES: Readonly<Record<string, Tier>>;
|
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { CORE_CC_MODEL_TIER_ALIASES, CORE_DEFAULT_TIER_ORDER } from '../generated/engineFactTables.js';
|
|
2
|
+
export const TIER_ORDER = CORE_DEFAULT_TIER_ORDER;
|
|
2
3
|
export const SURFACED_TIERS = ['max', 'pro', 'flash', 'lite'];
|
|
3
|
-
export const CC_TIER_ALIASES =
|
|
4
|
-
fable: 'max',
|
|
5
|
-
mythos: 'max',
|
|
6
|
-
opus: 'pro',
|
|
7
|
-
sonnet: 'flash',
|
|
8
|
-
haiku: 'lite',
|
|
9
|
-
};
|
|
4
|
+
export const CC_TIER_ALIASES = CORE_CC_MODEL_TIER_ALIASES;
|
|
10
5
|
export const DEFAULT_TIER = 'pro';
|
|
11
6
|
export const TIER_BLURBS = {
|
|
12
7
|
ultra: 'reserved above max — binds when a stronger model lands',
|
package/dist/peerFrames.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { applyDisplayFace, LEGACY_NAME_FACE } from './displayUntrusted.js';
|
|
2
|
-
import { CORE_ENGINE_AUTHORITY_ENVELOPE_TAGS } from './generated/engineFactTables.js';
|
|
2
|
+
import { CORE_ENGINE_AUTHORITY_ENVELOPE_TAGS, CORE_PERMISSION_MODE_CLASSES } from './generated/engineFactTables.js';
|
|
3
3
|
const WIRE_KEY_FROM = 'from';
|
|
4
4
|
const WIRE_KEY_BODY = 'body';
|
|
5
5
|
const WIRE_KEY_KIND = 'kind';
|
|
@@ -21,7 +21,7 @@ export const AGENT_MESSAGE_TAG = 'agent-message';
|
|
|
21
21
|
export const CROSS_SESSION_MESSAGE_TAG = 'cross-session-message';
|
|
22
22
|
export const PEER_FRAME_LANES = Object.freeze(['agent_message', 'cross_session_message', 'cross_session_notice']);
|
|
23
23
|
export const CROSS_SESSION_NOTICE_KINDS = Object.freeze(['delivery_notice', 'idle_notice']);
|
|
24
|
-
export const PEER_MODE_CLASSES =
|
|
24
|
+
export const PEER_MODE_CLASSES = CORE_PERMISSION_MODE_CLASSES;
|
|
25
25
|
function dataProp(o, key) {
|
|
26
26
|
if (o === null || typeof o !== 'object')
|
|
27
27
|
return undefined;
|
|
@@ -3,15 +3,15 @@ export const PERMISSION_RULE_ISSUE_CODES = Object.freeze([
|
|
|
3
3
|
'invalid.empty_tool',
|
|
4
4
|
'invalid.paren',
|
|
5
5
|
'invalid.param_split',
|
|
6
|
-
'invalid.allow_param_rule',
|
|
7
6
|
'invalid.primary_field',
|
|
8
7
|
'invalid.cap_exceeded',
|
|
9
|
-
'unsupported.
|
|
8
|
+
'unsupported.allow',
|
|
9
|
+
'invalid.behavior',
|
|
10
10
|
'invalid.command_rule',
|
|
11
|
+
'invalid.entry_type',
|
|
11
12
|
'unsupported.param_unknown',
|
|
12
13
|
'unsupported.param_non_scalar',
|
|
13
14
|
'unsupported.tool_unknown',
|
|
14
|
-
'unsupported.file_glob',
|
|
15
15
|
'unsupported.path_base',
|
|
16
16
|
'unsupported.mcp_paren',
|
|
17
17
|
'unsupported.covering_paren',
|
|
@@ -22,18 +22,21 @@ const ISSUE_SENTENCES = Object.freeze({
|
|
|
22
22
|
'invalid.empty_tool': 'this rule is invalid: it names no tool',
|
|
23
23
|
'invalid.paren': 'this rule is invalid: its parentheses do not parse (escape a literal one as \\( or \\))',
|
|
24
24
|
'invalid.param_split': 'this rule is invalid: its parentheses do not hold a parameter rule written name:pattern',
|
|
25
|
-
'invalid.allow_param_rule': 'this rule is invalid: an allow rule cannot carry a parameter pattern — only bare tool rules auto-allow',
|
|
26
25
|
'invalid.primary_field': "this rule is invalid: it patterns the tool's primary field, which matches the whole trimmed string rather than a prefix",
|
|
27
26
|
'invalid.cap_exceeded': 'this rule set is invalid: it is over one of the deployment caps (rule count, rule length, pattern length, or star count)',
|
|
27
|
+
'invalid.behavior': 'this rule is invalid: its behavior is neither deny nor ask, so it would never fire',
|
|
28
28
|
'invalid.command_rule': 'this rule is invalid: the command pattern was rejected by the command-rule validator',
|
|
29
|
-
'
|
|
29
|
+
'invalid.entry_type': 'this allow list is invalid: it must be a list of rule strings, and it or one of its entries is not a string',
|
|
30
|
+
'unsupported.allow': 'an allow rule is not supported in a rule set that only says deny or ask — a standing approval belongs on the allow list instead',
|
|
30
31
|
'unsupported.param_unknown': 'this parameter rule is not supported: the tool carries no such parameter, so it could never match',
|
|
31
32
|
'unsupported.param_non_scalar': 'this parameter rule is not supported: that parameter holds an object or an array, so it could never match',
|
|
32
33
|
'unsupported.tool_unknown': "this rule is not supported on this leg: the resolver it supplied does not know the tool, so the rule's face cannot be checked",
|
|
33
|
-
'unsupported.file_glob': 'a standing approval by path belongs in the consent store, so this allow rule is not supported here (deny and ask path rules do compile)',
|
|
34
34
|
'unsupported.path_base': 'this path rule is not supported as spelled: it needs a base this policy was not given, so it would reach nothing and is refused rather than compiled',
|
|
35
35
|
'unsupported.mcp_paren': 'a parenthesised parameter rule is not supported on an MCP tool name',
|
|
36
36
|
'unsupported.covering_paren': 'a parenthesised parameter rule is not supported on a covering protocol name — the parameter grammar is keyed by an exact tool name, so no mounted tool could ever bear it',
|
|
37
|
+
'invalid.allow_param_rule': 'this rule is invalid: an allow rule cannot carry a parameter pattern — only bare tool rules auto-allow',
|
|
38
|
+
'unsupported.bash_prefix': 'a standing approval for a command belongs in the persisted-rule store, so this allow rule is not supported here (deny and ask rules with the same shape do compile)',
|
|
39
|
+
'unsupported.file_glob': 'a standing approval by path belongs in the consent store, so this allow rule is not supported here (deny and ask path rules do compile)',
|
|
37
40
|
});
|
|
38
41
|
const PARAM_SPLIT_WITH_COLON = 'this rule is invalid: a parameter rule is written name:pattern, and the name before the colon or the pattern after it is empty';
|
|
39
42
|
const PARAM_SPLIT_NO_COLON = 'this rule is invalid: there is no colon inside the parentheses, so this is not a parameter rule (a parameter rule is written name:pattern)';
|
|
@@ -22,7 +22,7 @@ export interface PermissionsDeclarationBuckets {
|
|
|
22
22
|
export interface PermissionsDeclaration {
|
|
23
23
|
permissions?: PermissionsDeclarationBuckets;
|
|
24
24
|
}
|
|
25
|
-
export declare const PERMISSIONS_KEPT_REASONS: readonly ["allow_capability_off", "settings_read_not_clean", "empty_rule", "paren_in_tool_name", "retired_tool_name", "unprefixed_namespaced_name", "incomplete_protocol_name", "home_relative_path", "compile_refused", "content_form_not_grantable", "judge_failed", "duplicate"];
|
|
25
|
+
export declare const PERMISSIONS_KEPT_REASONS: readonly ["allow_capability_off", "settings_read_not_clean", "empty_rule", "paren_in_tool_name", "retired_tool_name", "unprefixed_namespaced_name", "incomplete_protocol_name", "unminted_protocol_segment", "home_relative_path", "compile_refused", "content_form_not_grantable", "judge_failed", "duplicate"];
|
|
26
26
|
export type PermissionsKeptReason = (typeof PERMISSIONS_KEPT_REASONS)[number];
|
|
27
27
|
export interface PermissionsKeptRule {
|
|
28
28
|
rule: string;
|
|
@@ -38,10 +38,16 @@ export interface PermissionsUncheckedRule {
|
|
|
38
38
|
rule: string;
|
|
39
39
|
bucket: 'deny' | 'ask';
|
|
40
40
|
}
|
|
41
|
+
export interface PermissionsUnreachableRule {
|
|
42
|
+
rule: string;
|
|
43
|
+
bucket: 'deny' | 'ask';
|
|
44
|
+
mintedPrefix?: string;
|
|
45
|
+
}
|
|
41
46
|
export interface PermissionsDeclarationReport extends PermissionsDeclaration {
|
|
42
47
|
kept: PermissionsKeptRule[];
|
|
43
48
|
rewritten: PermissionsRewrittenRule[];
|
|
44
49
|
unchecked: PermissionsUncheckedRule[];
|
|
50
|
+
unreachable: PermissionsUnreachableRule[];
|
|
45
51
|
}
|
|
46
52
|
export declare function permissionsDeclaration(input: PermissionsDeclarationInput, caps: PermissionsAllowGrantReading): PermissionsDeclaration;
|
|
47
53
|
export declare function permissionsDeclarationReport(input: PermissionsDeclarationInput, caps: PermissionsAllowGrantReading): PermissionsDeclarationReport;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { hasCoreValuePort, protocolOf, retiredToolNames, ruleToolGrammarOf
|
|
1
|
+
import { hasCoreValuePort, protocolOf, retiredToolNames, ruleToolGrammarOf } from './coreValuePorts.js';
|
|
2
|
+
import { protocolSegmentOf } from './protocolSegment.js';
|
|
3
|
+
import { ruleCompileVerdict } from './ruleCompileVerdict.js';
|
|
2
4
|
import { allowRulesGate } from './permissionsAllowGrantCapability.js';
|
|
3
5
|
const RULE_TRUST_ORDER = [
|
|
4
6
|
'policySettings',
|
|
@@ -17,6 +19,7 @@ export const PERMISSIONS_KEPT_REASONS = Object.freeze([
|
|
|
17
19
|
'retired_tool_name',
|
|
18
20
|
'unprefixed_namespaced_name',
|
|
19
21
|
'incomplete_protocol_name',
|
|
22
|
+
'unminted_protocol_segment',
|
|
20
23
|
'home_relative_path',
|
|
21
24
|
'compile_refused',
|
|
22
25
|
'content_form_not_grantable',
|
|
@@ -93,19 +96,14 @@ function wholeServerRuleName(name) {
|
|
|
93
96
|
const peer = read.slice(ns.prefix.length);
|
|
94
97
|
return peer !== '' && !peer.includes('__') && !peer.endsWith('_') ? `${read}__*` : name;
|
|
95
98
|
}
|
|
96
|
-
const
|
|
97
|
-
function compileVerdict(rule, behavior) {
|
|
98
|
-
try {
|
|
99
|
-
const issues = validatePermissionRules([{ rule, behavior }], { pathBases: { root: RULE_ROOT } });
|
|
100
|
-
if (!Array.isArray(issues))
|
|
101
|
-
return 'unknown';
|
|
102
|
-
return issues.length === 0 ? 'compiles' : 'refused';
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
return 'unknown';
|
|
106
|
-
}
|
|
107
|
-
}
|
|
99
|
+
const compileVerdict = ruleCompileVerdict;
|
|
108
100
|
const kept = (reason) => ({ sent: false, reason });
|
|
101
|
+
function sentFate(wire, toolName, unchecked) {
|
|
102
|
+
const segment = protocolSegmentOf(toolName);
|
|
103
|
+
return segment.kind === 'unminted'
|
|
104
|
+
? { sent: true, wire, unchecked, unreachable: segment.minted !== undefined ? { minted: segment.minted } : {} }
|
|
105
|
+
: { sent: true, wire, unchecked };
|
|
106
|
+
}
|
|
109
107
|
function judgeList(rules, behavior) {
|
|
110
108
|
let portsChecked = false;
|
|
111
109
|
return rules.map((rule) => {
|
|
@@ -121,24 +119,31 @@ function judgeList(rules, behavior) {
|
|
|
121
119
|
const issue = wireIssue(name);
|
|
122
120
|
if (issue !== undefined)
|
|
123
121
|
return kept(issue);
|
|
124
|
-
|
|
122
|
+
if (behavior === 'allow') {
|
|
123
|
+
const segment = protocolSegmentOf(name);
|
|
124
|
+
if (segment.kind === 'unminted')
|
|
125
|
+
return kept('unminted_protocol_segment');
|
|
126
|
+
if (segment.kind === 'unknown')
|
|
127
|
+
return kept('judge_failed');
|
|
128
|
+
}
|
|
129
|
+
const verdict = compileVerdict(name, behavior === 'ask' ? 'ask' : 'deny');
|
|
125
130
|
if (verdict === 'refused')
|
|
126
131
|
return kept('compile_refused');
|
|
127
132
|
if (verdict === 'unknown' && behavior === 'allow')
|
|
128
133
|
return kept('judge_failed');
|
|
129
|
-
return { sent: true, wire: name, unchecked: verdict === 'unknown'
|
|
134
|
+
return behavior === 'allow' ? { sent: true, wire: name, unchecked: false } : sentFate(name, name, verdict === 'unknown');
|
|
130
135
|
}
|
|
131
136
|
const issue = wireIssue(parsed.toolName);
|
|
132
137
|
if (issue !== undefined)
|
|
133
138
|
return kept(issue);
|
|
134
139
|
if (ruleToolGrammarOf(parsed.toolName) === 'path' && parsed.ruleContent.startsWith('~/'))
|
|
135
140
|
return kept('home_relative_path');
|
|
141
|
+
if (behavior === 'allow')
|
|
142
|
+
return kept('content_form_not_grantable');
|
|
136
143
|
const verdict = compileVerdict(rule, behavior);
|
|
137
144
|
if (verdict === 'refused')
|
|
138
|
-
return kept(
|
|
139
|
-
|
|
140
|
-
return kept('judge_failed');
|
|
141
|
-
return { sent: true, wire: rule, unchecked: verdict === 'unknown' };
|
|
145
|
+
return kept('compile_refused');
|
|
146
|
+
return sentFate(rule, parsed.toolName, verdict === 'unknown');
|
|
142
147
|
});
|
|
143
148
|
}
|
|
144
149
|
function outsideSettingsFiles(origin) {
|
|
@@ -275,6 +280,7 @@ function assemble(input, caps) {
|
|
|
275
280
|
const keptRows = [];
|
|
276
281
|
const rewritten = [];
|
|
277
282
|
const unchecked = [];
|
|
283
|
+
const unreachable = [];
|
|
278
284
|
const rows = [
|
|
279
285
|
['deny', [...denySlots, ...cliSlots], denyJ],
|
|
280
286
|
['ask', askSlots, askJ],
|
|
@@ -293,9 +299,12 @@ function assemble(input, caps) {
|
|
|
293
299
|
const f = (winner.list === 'cliDeny' ? j.fates[denySlots.length + winner.at] : j.fates[winner.at]);
|
|
294
300
|
if (f.sent && f.unchecked && bucket !== 'allow')
|
|
295
301
|
unchecked.push({ rule: wire, bucket });
|
|
302
|
+
if (f.sent && f.unreachable !== undefined && bucket !== 'allow') {
|
|
303
|
+
unreachable.push({ rule: wire, bucket, ...(f.unreachable.minted !== undefined ? { mintedPrefix: f.unreachable.minted } : {}) });
|
|
304
|
+
}
|
|
296
305
|
}
|
|
297
306
|
}
|
|
298
|
-
return { buckets, report: { kept: keptRows, rewritten, unchecked } };
|
|
307
|
+
return { buckets, report: { kept: keptRows, rewritten, unchecked, unreachable } };
|
|
299
308
|
}
|
|
300
309
|
export function permissionsDeclaration(input, caps) {
|
|
301
310
|
const { buckets } = assemble(input, caps);
|