@sema-agent/client-core 0.112.0 → 0.113.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 +153 -0
- package/README.md +37 -24
- package/dist/adapt/arms.js +7 -1
- package/dist/adapt/textStream.d.ts +2 -0
- package/dist/adapt/textStream.js +27 -1
- package/dist/adapter/activeRunSelfHeal.d.ts +7 -5
- package/dist/adapter/activeRunSelfHeal.js +38 -66
- package/dist/adapter/downstream/eventToSdkMessage.js +4 -0
- package/dist/adapter/downstream/terminalToSdkResult.d.ts +8 -0
- package/dist/adapter/downstream/terminalToSdkResult.js +36 -1
- package/dist/adapter/runStream.d.ts +2 -12
- package/dist/adapter/runStream.js +46 -19
- package/dist/agentSession/engineAgentRegistryRead.js +2 -1
- package/dist/agentSession/engineSessionBackgroundStop.js +2 -2
- package/dist/attachmentOutcome.d.ts +35 -0
- package/dist/attachmentOutcome.js +192 -0
- package/dist/attachmentPathPlan.d.ts +67 -0
- package/dist/attachmentPathPlan.js +203 -0
- package/dist/attachmentRoute.d.ts +9 -1
- package/dist/attachmentRoute.js +23 -2
- package/dist/declared/supportFloorDeclared.d.ts +1 -1
- package/dist/declared/supportFloorDeclared.js +1 -0
- package/dist/deviceRebind.js +2 -3
- package/dist/displayUntrusted.js +126 -19
- package/dist/engineAddress.d.ts +1 -1
- package/dist/engineAddress.js +9 -6
- package/dist/engineErrorCodes.d.ts +3 -0
- package/dist/engineErrorCodes.js +4 -0
- package/dist/engineNoticeCodes.d.ts +34 -4
- package/dist/engineNoticeCodes.js +133 -6
- package/dist/engineUnavailable.d.ts +4 -2
- package/dist/engineUnavailable.js +99 -17
- package/dist/fleet/fleetLedger.d.ts +9 -3
- package/dist/fleet/fleetLedger.js +112 -16
- package/dist/fleet/fleetProjection.d.ts +5 -0
- package/dist/fleet/fleetProjection.js +9 -1
- package/dist/gateVocabulary.d.ts +7 -0
- package/dist/gateVocabulary.js +40 -14
- package/dist/generated/engineFactTables.d.ts +4 -2
- package/dist/generated/engineFactTables.js +198 -2
- package/dist/generated/engineNoticeTables.js +56 -8
- package/dist/generated/settingsSchemaFns.d.ts +7 -0
- package/dist/generated/settingsSchemaFns.js +11 -0
- package/dist/generated/settingsSchemaHash.d.ts +1 -0
- package/dist/generated/settingsSchemaHash.js +58 -0
- package/dist/generated/settingsSchemaOwnKeyRead.js +6 -1
- package/dist/generated/settingsSchemaTables.d.ts +3 -2
- package/dist/generated/settingsSchemaTables.js +14 -0
- package/dist/generated/settingsSchemaTightenVerdict.d.ts +1 -0
- package/dist/generated/settingsSchemaTightenVerdict.js +125 -0
- package/dist/headlessPermissionModeWire.d.ts +7 -2
- package/dist/headlessPermissionModeWire.js +77 -8
- package/dist/hitl/approvalDecisionDoor.d.ts +24 -0
- package/dist/hitl/approvalDecisionDoor.js +77 -0
- package/dist/hitl/approvalDelivery.d.ts +6 -0
- package/dist/hitl/approvalDelivery.js +57 -7
- package/dist/hitl/approvalResolution.d.ts +6 -3
- package/dist/hitl/approvalResolution.js +24 -2
- package/dist/hitl/approvalsFeed.js +1 -1
- package/dist/hitl/automaticAnswerVerdict.d.ts +1 -1
- package/dist/hitl/decisionSend.d.ts +7 -4
- package/dist/hitl/decisionSend.js +90 -41
- package/dist/hitl/frameRouter.d.ts +3 -3
- package/dist/hitl/frameRouter.js +5 -0
- package/dist/hitl/hitlBridge.d.ts +1 -0
- package/dist/hitl/hitlBridge.js +17 -4
- package/dist/hitl/hitlHostSurface.d.ts +3 -2
- package/dist/hitl/hitlHostSurface.js +5 -3
- package/dist/hitl/legacyApprovalShapes.d.ts +142 -0
- package/dist/hitl/legacyApprovalShapes.js +1 -0
- package/dist/hitl/livePendingAsk.d.ts +4 -4
- package/dist/hitl/livePendingAsk.js +5 -3
- package/dist/hitl/parkResolver.js +1 -1
- package/dist/hitl/persistedRulesWire.js +2 -2
- package/dist/hitl/planReviewCard.d.ts +4 -2
- package/dist/hitl/planReviewCard.js +66 -1
- package/dist/hitl/planReviewWire.d.ts +34 -2
- package/dist/hitl/planReviewWire.js +326 -150
- package/dist/hitl/sessionPolicyWire.js +16 -7
- package/dist/hitl/subagentSource.d.ts +1 -0
- package/dist/hitl/subagentSource.js +11 -0
- package/dist/hitl/toolApprovalWire.d.ts +34 -10
- package/dist/hitl/toolApprovalWire.js +182 -33
- package/dist/hookMatcherVerdict.d.ts +2 -1
- package/dist/hookMatcherVerdict.js +3 -2
- package/dist/hooksReaderGenerations.d.ts +8 -0
- package/dist/hooksReaderGenerations.js +49 -0
- package/dist/hooksWireCaps.js +43 -18
- package/dist/hostSettingsSource.d.ts +1 -1
- package/dist/hostSettingsSource.js +2 -2
- package/dist/hostTurnSettings.d.ts +2 -2
- package/dist/hostTurnSettings.js +87 -47
- package/dist/humanTurn.d.ts +2 -1
- package/dist/humanTurn.js +44 -13
- package/dist/humanTurnRead.d.ts +7 -0
- package/dist/humanTurnRead.js +23 -14
- package/dist/humanTurnSentences.js +3 -0
- package/dist/i18n/messages.en.d.ts +93 -5
- package/dist/i18n/messages.en.js +100 -12
- package/dist/i18n/messages.zh.js +110 -15
- package/dist/index.d.ts +29 -15
- package/dist/index.js +17 -9
- package/dist/liveModelCatalog.js +1 -0
- package/dist/liveQuestionStore.d.ts +2 -0
- package/dist/liveQuestionStore.js +7 -2
- package/dist/localConfig/kernel.d.ts +2 -1
- package/dist/localConfig/kernel.js +12 -18
- package/dist/localConfig/mcp/edit.js +25 -27
- package/dist/localConfig/mcp/servers.js +5 -8
- package/dist/localConfig/modelPool.d.ts +6 -1
- package/dist/localConfig/modelPool.js +104 -27
- package/dist/localConfig/modelPoolWords.d.ts +2 -0
- package/dist/localConfig/modelPoolWords.js +1 -0
- package/dist/localConfig/settingsWrite.js +1 -14
- package/dist/localConfig/skills.js +9 -16
- package/dist/localEngineSpawn.d.ts +29 -1
- package/dist/localEngineSpawn.js +62 -1
- package/dist/mcpLiveness.d.ts +1 -1
- package/dist/mcpProbeWire.js +2 -2
- package/dist/mcpReconnect.js +2 -2
- package/dist/model/catalogLoader.js +3 -17
- package/dist/model/onboardJudgement.d.ts +8 -0
- package/dist/model/onboardJudgement.js +8 -3
- package/dist/model/onboardSteps.d.ts +19 -0
- package/dist/model/onboardSteps.js +76 -0
- package/dist/notifications.js +20 -12
- package/dist/ownKey.d.ts +4 -0
- package/dist/ownKey.js +61 -0
- package/dist/pathShape.d.ts +14 -0
- package/dist/pathShape.js +44 -0
- package/dist/planReviewCardFacts.d.ts +3 -0
- package/dist/planReviewCardFacts.js +20 -3
- package/dist/planReviewOutcomeCause.d.ts +2 -0
- package/dist/planReviewOutcomeCause.js +12 -0
- package/dist/pluginHooksWire.d.ts +20 -8
- package/dist/pluginHooksWire.js +204 -86
- package/dist/prepareRefusal.d.ts +2 -0
- package/dist/prepareRefusal.js +11 -1
- package/dist/request/taskRequest.js +3 -1
- package/dist/resultFrameKeys.d.ts +1 -0
- package/dist/resultFrameKeys.js +3 -0
- package/dist/resumeRefusalCopy.js +3 -1
- package/dist/retryStatus.d.ts +11 -1
- package/dist/retryStatus.js +15 -4
- package/dist/runTerminal.d.ts +1 -0
- package/dist/runTerminal.js +15 -1
- package/dist/sdkWireTransit.d.ts +1 -1
- package/dist/seatContract.d.ts +12 -3
- package/dist/seatContract.js +24 -13
- package/dist/sessionEngine.js +1 -1
- package/dist/sessionHooksRoster.js +8 -6
- package/dist/sessionIdSegment.d.ts +0 -1
- package/dist/sessionIdSegment.js +1 -3
- package/dist/sessionMemoryErase.js +2 -2
- package/dist/sessionMemoryStatus.js +2 -1
- package/dist/sessionOccupant.d.ts +29 -0
- package/dist/sessionOccupant.js +78 -0
- package/dist/settingsHooksSalvage.d.ts +4 -1
- package/dist/settingsHooksSalvage.js +22 -9
- package/dist/skillOverrideChain.d.ts +3 -0
- package/dist/skillOverrideChain.js +31 -4
- package/dist/skillsWireCaps.d.ts +16 -2
- package/dist/skillsWireCaps.js +47 -20
- package/dist/subagent/agentStateDetail.js +32 -8
- package/dist/subagent/engineCompactWire.js +48 -36
- package/dist/subagent/engineDelegatedPrompt.d.ts +3 -2
- package/dist/subagent/engineDelegatedPrompt.js +65 -28
- package/dist/subagentEditOutcomes.d.ts +9 -0
- package/dist/subagentEditOutcomes.js +43 -0
- package/dist/supportFloor.d.ts +2 -1
- package/dist/supportFloor.js +1 -1
- package/dist/toolResult.js +4 -2
- package/dist/toolRoster.d.ts +1 -0
- package/dist/toolRoster.js +1 -0
- package/dist/usageAnalytics.js +2 -1
- package/dist/userAttachmentEnvelope.d.ts +11 -0
- package/dist/userAttachmentEnvelope.js +7 -2
- package/dist/userAttachmentSeat.d.ts +7 -1
- package/dist/userAttachmentSeat.js +44 -7
- package/dist/wiringInstructionsAttribution.js +8 -2
- package/docs/INTEGRATION-CLIENTS.md +1654 -16
- package/package.json +5 -5
package/dist/displayUntrusted.js
CHANGED
|
@@ -5198,7 +5198,27 @@ function pairModeOf(o, face) {
|
|
|
5198
5198
|
return 'off';
|
|
5199
5199
|
return o.escapeBackslashes === true ? 'on' : o.escapeBackslashes === 'auto' ? 'auto' : 'off';
|
|
5200
5200
|
}
|
|
5201
|
-
function
|
|
5201
|
+
function scanWithLead(text, o, trace, lead) {
|
|
5202
|
+
if (lead === '')
|
|
5203
|
+
return scanAndMask(text, o, trace);
|
|
5204
|
+
const r = scanAndMask(`${lead}${text}`, o, trace);
|
|
5205
|
+
if (!r.text.startsWith(lead))
|
|
5206
|
+
return trace ? { text: REDACTED_SECRET, origin: new Int32Array(REDACTED_SECRET.length).fill(-1) } : { text: REDACTED_SECRET };
|
|
5207
|
+
const mid = r.text.slice(lead.length);
|
|
5208
|
+
const second = scanAndMask(mid, o, trace);
|
|
5209
|
+
if (!trace)
|
|
5210
|
+
return { text: second.text };
|
|
5211
|
+
if (second.text === text && mid === text)
|
|
5212
|
+
return { text };
|
|
5213
|
+
const origin = new Int32Array(second.text.length);
|
|
5214
|
+
for (let k = 0; k < second.text.length; k++) {
|
|
5215
|
+
const m = second.origin === undefined ? k : (second.origin[k] ?? -1);
|
|
5216
|
+
const s = m < 0 ? -1 : r.origin === undefined ? lead.length + m : (r.origin[lead.length + m] ?? -1);
|
|
5217
|
+
origin[k] = s >= lead.length ? s - lead.length : -1;
|
|
5218
|
+
}
|
|
5219
|
+
return { text: second.text, origin };
|
|
5220
|
+
}
|
|
5221
|
+
function renderUntrusted(text, opts, ledger, queryByShape = false, wholeAddress = false, lead = '') {
|
|
5202
5222
|
const input = displayInputText(text);
|
|
5203
5223
|
const o = opts ?? {};
|
|
5204
5224
|
const face = publicFace(o);
|
|
@@ -5207,7 +5227,7 @@ function renderUntrusted(text, opts, ledger, queryByShape = false, wholeAddress
|
|
|
5207
5227
|
const book = ledger ?? (mode !== 'off' ? { cps: [], lens: [] } : null);
|
|
5208
5228
|
if (book === null) {
|
|
5209
5229
|
return runDisplaySteps(input, {
|
|
5210
|
-
wash: (s) =>
|
|
5230
|
+
wash: (s) => scanWithLead(s, scan, false, lead).text,
|
|
5211
5231
|
paint: (s) => applyDisplayFace(s, face),
|
|
5212
5232
|
cap: (s) => capDisplay(s, o.max, face.mark),
|
|
5213
5233
|
text: (s) => s,
|
|
@@ -5216,7 +5236,7 @@ function renderUntrusted(text, opts, ledger, queryByShape = false, wholeAddress
|
|
|
5216
5236
|
let paired = mode === 'on';
|
|
5217
5237
|
const out = runDisplaySteps({ text: input, ids: new Int32Array(input.length).fill(-1) }, {
|
|
5218
5238
|
wash: (t) => {
|
|
5219
|
-
const r =
|
|
5239
|
+
const r = scanWithLead(t.text, scan, true, lead);
|
|
5220
5240
|
return r.text === t.text ? t : { text: r.text, ids: carryIds(t.ids, r.origin) };
|
|
5221
5241
|
},
|
|
5222
5242
|
paint: (t) => faceTracked(t, face, book),
|
|
@@ -5485,8 +5505,10 @@ export function queryCarriesCredential(query) {
|
|
|
5485
5505
|
return scanAndMask(probe, UPLOAD_SCAN_OPTIONS, false).text !== probe;
|
|
5486
5506
|
}
|
|
5487
5507
|
export function displayConfiguredUrl(url, opts = {}) {
|
|
5488
|
-
const reading = typeof url === 'string' ? configuredAddressReading(url) : null;
|
|
5489
|
-
const out =
|
|
5508
|
+
const reading = typeof url === 'string' ? configuredAddressReading(url, true) : null;
|
|
5509
|
+
const out = reading === null || reading.withheld
|
|
5510
|
+
? renderUntrusted(reading === null ? url : REDACTED_SECRET, opts, null, 'relaxed', true)
|
|
5511
|
+
: renderUntrusted(reading.text, opts, null, reading.everyQueryValue ? false : 'relaxed', true, reading.lead);
|
|
5490
5512
|
return typeof out === 'string' ? out : out.tracked.text;
|
|
5491
5513
|
}
|
|
5492
5514
|
function parserViewOf(url) {
|
|
@@ -5795,6 +5817,8 @@ function coversHidden(from, to, image) {
|
|
|
5795
5817
|
return true;
|
|
5796
5818
|
}
|
|
5797
5819
|
const CONFIGURED_ADDRESS_WITHHELD = Object.freeze({ withheld: true });
|
|
5820
|
+
const readAsIs = (text) => ({ withheld: false, text, lead: '', everyQueryValue: false, masked: false });
|
|
5821
|
+
const BORROWED_SCHEME = 'https://';
|
|
5798
5822
|
function rebuiltKeepsRuns(url, rebuilt, hidden) {
|
|
5799
5823
|
const [fwdA, fwdB] = rebuilt.toRebuilt;
|
|
5800
5824
|
for (let i = 0; i < url.length;) {
|
|
@@ -5819,7 +5843,7 @@ function rebuiltKeepsRuns(url, rebuilt, hidden) {
|
|
|
5819
5843
|
function readingOf(url, rebuilt, n1) {
|
|
5820
5844
|
if (!n1) {
|
|
5821
5845
|
const hidden = hiddenUnits(url, 'strict');
|
|
5822
|
-
return hidden !== null && rebuiltKeepsRuns(url, rebuilt, hidden) ?
|
|
5846
|
+
return hidden !== null && rebuiltKeepsRuns(url, rebuilt, hidden) ? readAsIs(rebuilt.text) : CONFIGURED_ADDRESS_WITHHELD;
|
|
5823
5847
|
}
|
|
5824
5848
|
let original = true;
|
|
5825
5849
|
let viaRebuilt = true;
|
|
@@ -5831,40 +5855,123 @@ function readingOf(url, rebuilt, n1) {
|
|
|
5831
5855
|
original &&= coversHidden(hiddenRebuilt, hiddenOriginal, rebuilt.toOriginal);
|
|
5832
5856
|
viaRebuilt &&= coversHidden(hiddenOriginal, hiddenRebuilt, rebuilt.toRebuilt);
|
|
5833
5857
|
}
|
|
5834
|
-
return original ?
|
|
5858
|
+
return original ? readAsIs(url) : viaRebuilt ? readAsIs(rebuilt.text) : CONFIGURED_ADDRESS_WITHHELD;
|
|
5835
5859
|
}
|
|
5836
|
-
function configuredAddressReading(url) {
|
|
5860
|
+
function configuredAddressReading(url, address) {
|
|
5837
5861
|
const view = parserViewOf(url);
|
|
5838
|
-
if (userinfoBoundaryAmbiguous(view))
|
|
5862
|
+
if (userinfoBoundaryAmbiguous(view) || slashUserinfoBoundaryAmbiguous(view))
|
|
5839
5863
|
return CONFIGURED_ADDRESS_WITHHELD;
|
|
5864
|
+
const extra = extraSlashUserinfoSpan(view);
|
|
5865
|
+
if (extra !== null)
|
|
5866
|
+
return maskedUserinfoReading(view, extra[0], extra[1], address);
|
|
5840
5867
|
if (!/^[A-Za-z][A-Za-z0-9+.-]*:/.test(view))
|
|
5841
|
-
return
|
|
5868
|
+
return schemelessAddressReading(url, view, address);
|
|
5842
5869
|
if (/^[A-Za-z][A-Za-z0-9+.-]*:\/\//.test(view)) {
|
|
5843
5870
|
const n1 = authorityHasBackslash(view) ? rebuiltAddress(url) : null;
|
|
5844
|
-
return n1 === null ?
|
|
5871
|
+
return n1 === null ? readAsIs(url) : readingOf(url, restoreAtoms(url, n1), true);
|
|
5845
5872
|
}
|
|
5846
5873
|
const rebuilt = rebuiltAddress(url);
|
|
5847
5874
|
if (rebuilt !== null)
|
|
5848
5875
|
return readingOf(url, rebuilt, false);
|
|
5849
|
-
if (/^(?:https?|wss?|ftp):/i.test(view) && /[@?#]/.test(view)
|
|
5850
|
-
|
|
5851
|
-
|
|
5876
|
+
if (/^(?:https?|wss?|ftp):/i.test(view) && /[@?#]/.test(view)) {
|
|
5877
|
+
const at = schemelessUserinfoEnd(view, false);
|
|
5878
|
+
return at > 0 ? maskedUserinfoReading(view, 0, at, address) : CONFIGURED_ADDRESS_WITHHELD;
|
|
5879
|
+
}
|
|
5880
|
+
return schemelessAddressReading(url, view, address);
|
|
5881
|
+
}
|
|
5882
|
+
function authorityStartOf(view) {
|
|
5883
|
+
const special = /^(?:https?|wss?|ftp):\/\/\/*/i.exec(view);
|
|
5884
|
+
if (special !== null)
|
|
5885
|
+
return special[0].length;
|
|
5886
|
+
if (/^(?:https?|wss?|ftp):/i.test(view))
|
|
5887
|
+
return -1;
|
|
5888
|
+
return /^(?:[A-Za-z][A-Za-z0-9+.-]*:)*?[A-Za-z][A-Za-z0-9+.-]*:\/\//.exec(view)?.[0].length ?? 0;
|
|
5889
|
+
}
|
|
5890
|
+
function authorityEndOf(view, from) {
|
|
5891
|
+
let end = from;
|
|
5892
|
+
while (end < view.length && !'/\\?#'.includes(view.charAt(end)))
|
|
5893
|
+
end++;
|
|
5894
|
+
return end;
|
|
5852
5895
|
}
|
|
5853
|
-
function
|
|
5896
|
+
function slashUserinfoBoundaryAmbiguous(view) {
|
|
5897
|
+
const from = authorityStartOf(view);
|
|
5898
|
+
if (from < 0)
|
|
5899
|
+
return false;
|
|
5900
|
+
const end = authorityEndOf(view, from);
|
|
5901
|
+
const authority = view.slice(from, end);
|
|
5902
|
+
const extra = /^(?:https?|wss?|ftp):\/\/\//i.test(view);
|
|
5903
|
+
if (authority.includes('@') || authority.startsWith('[') || (view.charAt(end) !== '/' && !(extra && view.charAt(end) === '\\')))
|
|
5904
|
+
return false;
|
|
5905
|
+
const colon = authority.indexOf(':');
|
|
5906
|
+
if (colon === -1 || /^[0-9]*$/.test(authority.slice(colon + 1)))
|
|
5907
|
+
return false;
|
|
5908
|
+
let stop = end;
|
|
5909
|
+
while (stop < view.length && view.charAt(stop) !== '?' && view.charAt(stop) !== '#')
|
|
5910
|
+
stop++;
|
|
5911
|
+
return view.slice(end, stop).includes('@');
|
|
5912
|
+
}
|
|
5913
|
+
function extraSlashUserinfoSpan(view) {
|
|
5914
|
+
if (!/^(?:https?|wss?|ftp):\/\/\//i.test(view))
|
|
5915
|
+
return null;
|
|
5916
|
+
const from = authorityStartOf(view);
|
|
5917
|
+
const authority = view.slice(from, authorityEndOf(view, from));
|
|
5918
|
+
const at = authority.lastIndexOf('@');
|
|
5919
|
+
return at > 0 && authority.slice(0, at) !== REDACTED_USERINFO ? [from, from + at] : null;
|
|
5920
|
+
}
|
|
5921
|
+
function maskedUserinfoReading(view, from, at, address) {
|
|
5922
|
+
const inner = configuredAddressReading(`${view.slice(0, from)}${REDACTED_USERINFO}${view.slice(at)}`, address);
|
|
5923
|
+
if (inner.withheld)
|
|
5924
|
+
return inner;
|
|
5925
|
+
return { ...inner, masked: inner.masked || view.slice(from, at) !== REDACTED_USERINFO };
|
|
5926
|
+
}
|
|
5927
|
+
const SCHEMELESS_EMPTY_PASSWORD = /^[A-Za-z0-9._~%+-]*:@/;
|
|
5928
|
+
const SCHEMELESS_EMPTY_HOST = /^[A-Za-z0-9._~%+-]*:[^\s/]*?@(?=[/\\?#]|$)/;
|
|
5929
|
+
const ADDRESS_USERNAME = /^(?:[A-Za-z0-9._~%+-]+@)+/;
|
|
5930
|
+
const SCHEMELESS_HOST_LEAD = /^(?:\[[0-9A-Fa-f:.]+\]|[A-Za-z0-9-]+(?:[.][A-Za-z0-9-]+)*[.]?)(?::[0-9]+)?(?=[/?#;]|$)/;
|
|
5931
|
+
function schemelessUserinfoEnd(view, bareForms = true) {
|
|
5932
|
+
if (!view.includes('@'))
|
|
5933
|
+
return -1;
|
|
5854
5934
|
const V = buildScanView(view, WASH_OPTIONS);
|
|
5855
5935
|
const S = separatedSurface(view, V);
|
|
5856
5936
|
const out = [];
|
|
5857
5937
|
userinfoCandidates(S, out, true);
|
|
5858
|
-
|
|
5938
|
+
let end = -1;
|
|
5939
|
+
for (const c of out) {
|
|
5940
|
+
if (c.kind !== 'userinfo' || S.rawStart(c.a) !== 0)
|
|
5941
|
+
continue;
|
|
5942
|
+
const at = S.rawStart(c.b);
|
|
5943
|
+
if (view.charAt(at) === '@')
|
|
5944
|
+
end = Math.max(end, at);
|
|
5945
|
+
}
|
|
5946
|
+
if (end !== -1 || !bareForms)
|
|
5947
|
+
return end;
|
|
5948
|
+
const a = SCHEMELESS_EMPTY_PASSWORD.exec(view);
|
|
5949
|
+
const b = SCHEMELESS_EMPTY_HOST.exec(view);
|
|
5950
|
+
return Math.max(a === null ? -1 : a[0].length - 1, b === null ? -1 : b[0].length - 1);
|
|
5951
|
+
}
|
|
5952
|
+
function schemelessAddressReading(url, view, address) {
|
|
5953
|
+
if (view.startsWith(`${REDACTED_USERINFO}@`))
|
|
5954
|
+
return { withheld: false, text: view, lead: BORROWED_SCHEME, everyQueryValue: true, masked: false };
|
|
5955
|
+
const at = schemelessUserinfoEnd(view);
|
|
5956
|
+
if (at > 0)
|
|
5957
|
+
return maskedUserinfoReading(view, 0, at, address);
|
|
5958
|
+
const named = address ? ADDRESS_USERNAME.exec(view) : null;
|
|
5959
|
+
if (named !== null)
|
|
5960
|
+
return maskedUserinfoReading(view, 0, named[0].length - 1, address);
|
|
5961
|
+
const host = SCHEMELESS_HOST_LEAD.exec(view);
|
|
5962
|
+
if (host !== null && /[.\]]|^localhost(?::|$)/i.test(host[0]) && /[?#;]/.test(view.slice(host[0].length)) && !isRelativeRequestAt(view, 0)) {
|
|
5963
|
+
return { withheld: false, text: view, lead: BORROWED_SCHEME, everyQueryValue: false, masked: false };
|
|
5964
|
+
}
|
|
5965
|
+
return readAsIs(url);
|
|
5859
5966
|
}
|
|
5860
5967
|
export function configuredValueCarriesCredential(value) {
|
|
5861
5968
|
if (typeof value !== 'string' || value.length === 0)
|
|
5862
5969
|
return false;
|
|
5863
|
-
const reading = configuredAddressReading(value);
|
|
5864
|
-
if (reading.withheld)
|
|
5970
|
+
const reading = configuredAddressReading(value, false);
|
|
5971
|
+
if (reading.withheld || reading.masked)
|
|
5865
5972
|
return true;
|
|
5866
5973
|
const text = reading.text;
|
|
5867
|
-
const r =
|
|
5974
|
+
const r = scanWithLead(text, scanOptionsOf({}, publicFace({}), reading.everyQueryValue ? false : 'strict', true), true, reading.lead);
|
|
5868
5975
|
const origin = r.origin;
|
|
5869
5976
|
if (r.text === text || origin === undefined)
|
|
5870
5977
|
return false;
|
package/dist/engineAddress.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare function hasUnsafeAddressCharacter(s: string): boolean;
|
|
2
2
|
export declare function tupleOriginUrlOf(raw: string): URL | undefined;
|
|
3
|
-
export declare function carriesNoCredentialSlots(
|
|
3
|
+
export declare function carriesNoCredentialSlots(raw: string): boolean;
|
|
4
4
|
export declare function isCenterRelativePath(path: string): boolean;
|
package/dist/engineAddress.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { SETTINGS_HTTP_URL_FLAWS, SETTINGS_IS_HIERARCHICAL_URL } from './generated/settingsSchemaFns.js';
|
|
2
|
+
import { pathShapeOf } from './pathShape.js';
|
|
1
3
|
export function hasUnsafeAddressCharacter(s) {
|
|
2
4
|
return /[\s\u0000-\u001f\u007f-\u009f\\]/u.test(s);
|
|
3
5
|
}
|
|
@@ -10,8 +12,11 @@ export function tupleOriginUrlOf(raw) {
|
|
|
10
12
|
return undefined;
|
|
11
13
|
}
|
|
12
14
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
const CREDENTIAL_SLOTS = Object.freeze(['userinfo', 'query', 'fragment']);
|
|
16
|
+
export function carriesNoCredentialSlots(raw) {
|
|
17
|
+
if (!SETTINGS_IS_HIERARCHICAL_URL(raw))
|
|
18
|
+
return false;
|
|
19
|
+
return SETTINGS_HTTP_URL_FLAWS(raw, CREDENTIAL_SLOTS).every((flaw) => flaw === 'not-http-url');
|
|
15
20
|
}
|
|
16
21
|
export function isCenterRelativePath(path) {
|
|
17
22
|
if (path.length === 0 || path.charCodeAt(0) !== 0x2f)
|
|
@@ -21,8 +26,6 @@ export function isCenterRelativePath(path) {
|
|
|
21
26
|
return false;
|
|
22
27
|
if (hasUnsafeAddressCharacter(path) || path.includes('?') || path.includes('#'))
|
|
23
28
|
return false;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return decoded !== '.' && decoded !== '..';
|
|
27
|
-
});
|
|
29
|
+
const shape = pathShapeOf(path.replace(/%2e/gi, '.'));
|
|
30
|
+
return shape !== undefined && !shape.hasDotSegment;
|
|
28
31
|
}
|
|
@@ -108,6 +108,8 @@ export declare const RESUME_COMPOSITION_MISMATCH = "resume.composition_mismatch"
|
|
|
108
108
|
export declare const RESUME_PARENT_CONSTRAINT_MISSING = "resume.parent_constraint_missing";
|
|
109
109
|
export declare const RESUME_PARENT_CONSTRAINT_MISMATCH = "resume.parent_constraint_mismatch";
|
|
110
110
|
export declare const RESUME_CONSTRAINT_UNPROJECTABLE = "resume.constraint_unprojectable";
|
|
111
|
+
export declare const RESUME_ISOLATION_SCOPE_MISMATCH = "resume.isolation_scope_mismatch";
|
|
112
|
+
export declare const RESUME_AGENT_DEFINITION_MISMATCH = "resume.agent_definition_mismatch";
|
|
111
113
|
export declare const RESUME_CONTEXT_UNAVAILABLE = "conflict.resume_context_unavailable";
|
|
112
114
|
export declare const RESUME_RETRY_LATER_CODES: readonly string[];
|
|
113
115
|
export declare const RESUME_ENV_FAILED = "resume.env_failed";
|
|
@@ -143,6 +145,7 @@ export declare function isDecideAlreadyResolvedCode(code: string | null | undefi
|
|
|
143
145
|
export declare const ASK_GONE = "gone.ask";
|
|
144
146
|
export declare const ASK_GONE_PARKED = "gone.ask_parked";
|
|
145
147
|
export declare const ASK_NOT_FOUND = "not_found.ask";
|
|
148
|
+
export declare const ROUTE_NOT_FOUND = "not_found.route";
|
|
146
149
|
export declare const ASK_IDEMPOTENCY_CONFLICT = "conflict.ask_idempotency";
|
|
147
150
|
export declare const ASK_PARKING_RETRY = "parking.ask_retry";
|
|
148
151
|
export declare const ASK_DECISION_LANE_DISABLED = "feature.approval_ask_disabled";
|
package/dist/engineErrorCodes.js
CHANGED
|
@@ -186,6 +186,8 @@ export const RESUME_COMPOSITION_MISMATCH = 'resume.composition_mismatch';
|
|
|
186
186
|
export const RESUME_PARENT_CONSTRAINT_MISSING = 'resume.parent_constraint_missing';
|
|
187
187
|
export const RESUME_PARENT_CONSTRAINT_MISMATCH = 'resume.parent_constraint_mismatch';
|
|
188
188
|
export const RESUME_CONSTRAINT_UNPROJECTABLE = 'resume.constraint_unprojectable';
|
|
189
|
+
export const RESUME_ISOLATION_SCOPE_MISMATCH = 'resume.isolation_scope_mismatch';
|
|
190
|
+
export const RESUME_AGENT_DEFINITION_MISMATCH = 'resume.agent_definition_mismatch';
|
|
189
191
|
export const RESUME_CONTEXT_UNAVAILABLE = 'conflict.resume_context_unavailable';
|
|
190
192
|
export const RESUME_RETRY_LATER_CODES = Object.freeze([
|
|
191
193
|
RESUME_USAGE_WINDOW_EXHAUSTED,
|
|
@@ -250,6 +252,7 @@ export function isDecideAlreadyResolvedCode(code) {
|
|
|
250
252
|
export const ASK_GONE = 'gone.ask';
|
|
251
253
|
export const ASK_GONE_PARKED = 'gone.ask_parked';
|
|
252
254
|
export const ASK_NOT_FOUND = 'not_found.ask';
|
|
255
|
+
export const ROUTE_NOT_FOUND = 'not_found.route';
|
|
253
256
|
export const ASK_IDEMPOTENCY_CONFLICT = 'conflict.ask_idempotency';
|
|
254
257
|
export const ASK_PARKING_RETRY = 'parking.ask_retry';
|
|
255
258
|
export const ASK_DECISION_LANE_DISABLED = 'feature.approval_ask_disabled';
|
|
@@ -336,3 +339,4 @@ export function engineStopReasonToCc(stopReason) {
|
|
|
336
339
|
const row = ENGINE_STOP_REASON_TO_CC[stopReason];
|
|
337
340
|
return typeof row === 'string' || row === null ? row : undefined;
|
|
338
341
|
}
|
|
342
|
+
void true;
|
|
@@ -231,8 +231,10 @@ export interface UndrainedInputsVerdict {
|
|
|
231
231
|
export declare function undrainedInputsVerdict(facts: Pick<UserInputUndrainedFactsView, 'count' | 'cause' | 'inputIds' | 'childSessionId'> | null | undefined, ledger: UndrainedInputsLedger | null | undefined): UndrainedInputsVerdict | undefined;
|
|
232
232
|
export declare function userInputUndrainedNotice(facts: Pick<UserInputUndrainedFactsView, 'kind' | 'count' | 'cause' | 'childSessionId' | 'inputKind'>, lang?: UiLanguage): string | undefined;
|
|
233
233
|
export interface TurnInterruptedFactsView {
|
|
234
|
-
lane: 'input_now' | 'user_halt' | 'unrecognized';
|
|
234
|
+
lane: 'input_now' | 'user_halt' | 'extension_abort' | 'unrecognized';
|
|
235
235
|
inputId?: string;
|
|
236
|
+
extension?: string;
|
|
237
|
+
turn?: number;
|
|
236
238
|
cause?: string;
|
|
237
239
|
sessionId?: string;
|
|
238
240
|
runId?: string;
|
|
@@ -240,8 +242,8 @@ export interface TurnInterruptedFactsView {
|
|
|
240
242
|
actorId?: string;
|
|
241
243
|
}
|
|
242
244
|
export declare function readTurnInterrupted(notice: unknown): TurnInterruptedFactsView | undefined;
|
|
243
|
-
export declare function turnInterruptedNotice(facts: Pick<TurnInterruptedFactsView, 'lane'
|
|
244
|
-
export type SteerCutVerdict = 'this_input' | 'other_input' | 'user_halt' | 'unattributed' | 'not_a_cut';
|
|
245
|
+
export declare function turnInterruptedNotice(facts: Pick<TurnInterruptedFactsView, 'lane' | 'extension'>, lang?: UiLanguage): string | undefined;
|
|
246
|
+
export type SteerCutVerdict = 'this_input' | 'other_input' | 'user_halt' | 'extension_abort' | 'unattributed' | 'not_a_cut';
|
|
245
247
|
export declare function steerCutVerdict(notice: unknown, messageId: string | undefined): SteerCutVerdict;
|
|
246
248
|
export type FinishReasonUnknownFactsView = FinishReasonUnknownDetail;
|
|
247
249
|
export declare function readFinishReasonUnknown(notice: unknown): FinishReasonUnknownFactsView | undefined;
|
|
@@ -263,7 +265,7 @@ export interface ContextMediaRemovedFactsView {
|
|
|
263
265
|
export declare function readContextMediaRemoved(notice: {} | null | undefined): ContextMediaRemovedFactsView | undefined;
|
|
264
266
|
export interface McpAuthorizationRequiredFactsView {
|
|
265
267
|
server: string;
|
|
266
|
-
reason
|
|
268
|
+
reason?: string;
|
|
267
269
|
authorizeUrl?: string;
|
|
268
270
|
sessionId: string;
|
|
269
271
|
runId: string;
|
|
@@ -412,6 +414,31 @@ export interface ModelCapabilityDowngradedFactsView {
|
|
|
412
414
|
runId: string;
|
|
413
415
|
}
|
|
414
416
|
export declare function readModelCapabilityDowngraded(notice: {} | null | undefined): ModelCapabilityDowngradedFactsView | undefined;
|
|
417
|
+
export interface RewindBoundaryUnrecordedFactsView {
|
|
418
|
+
sessionId: string;
|
|
419
|
+
entryId: string;
|
|
420
|
+
cause: string;
|
|
421
|
+
}
|
|
422
|
+
export declare function readRewindBoundaryUnrecorded(notice: {} | null | undefined): RewindBoundaryUnrecordedFactsView | undefined;
|
|
423
|
+
export interface InheritEnvDeclaredLateFactsView {
|
|
424
|
+
index: number;
|
|
425
|
+
name: string;
|
|
426
|
+
}
|
|
427
|
+
export declare function readInheritEnvDeclaredLate(notice: {} | null | undefined): InheritEnvDeclaredLateFactsView | undefined;
|
|
428
|
+
export interface ModsStopEndedFactsView {
|
|
429
|
+
event: string;
|
|
430
|
+
seat: string;
|
|
431
|
+
sessionId: string;
|
|
432
|
+
runId: string;
|
|
433
|
+
registration?: string;
|
|
434
|
+
reason?: string;
|
|
435
|
+
sourceSessionId?: string;
|
|
436
|
+
agentId?: string;
|
|
437
|
+
}
|
|
438
|
+
export declare function readModsStopEnded(notice: {} | null | undefined): ModsStopEndedFactsView | undefined;
|
|
439
|
+
export declare function rewindBoundaryUnrecordedSentence(facts: Pick<RewindBoundaryUnrecordedFactsView, 'sessionId' | 'entryId' | 'cause'>, lang?: UiLanguage): string | undefined;
|
|
440
|
+
export declare function inheritEnvDeclaredLateSentence(facts: Pick<InheritEnvDeclaredLateFactsView, 'index' | 'name'>, lang?: UiLanguage): string | undefined;
|
|
441
|
+
export declare function modsStopEndedSentence(facts: Pick<ModsStopEndedFactsView, 'event' | 'seat' | 'sessionId' | 'runId' | 'registration' | 'reason'>, lang?: UiLanguage): string | undefined;
|
|
415
442
|
export declare const ENGINE_NOTICE_FACT_READERS: Readonly<{
|
|
416
443
|
readonly 'mcp.injection_dropped': typeof readMcpInjectionDrop;
|
|
417
444
|
readonly 'delegation.ask_unresolvable': typeof readAskUnresolvable;
|
|
@@ -454,6 +481,9 @@ export declare const ENGINE_NOTICE_FACT_READERS: Readonly<{
|
|
|
454
481
|
readonly 'steering.parked_input_blocked': typeof readSteeringParkedInputBlocked;
|
|
455
482
|
readonly 'delegation.delivery_discarded': typeof readDeliveryDiscarded;
|
|
456
483
|
readonly 'model.capability_downgraded': typeof readModelCapabilityDowngraded;
|
|
484
|
+
readonly 'rewind.boundary_unrecorded': typeof readRewindBoundaryUnrecorded;
|
|
485
|
+
readonly 'config.inherit_env_declared_late': typeof readInheritEnvDeclaredLate;
|
|
486
|
+
readonly 'mods.stop_ended': typeof readModsStopEnded;
|
|
457
487
|
}>;
|
|
458
488
|
type FactReaderTable = typeof ENGINE_NOTICE_FACT_READERS;
|
|
459
489
|
export type EngineNoticeFactsCode = keyof FactReaderTable;
|
|
@@ -10,7 +10,11 @@ const CATALOG = new Set(ENGINE_NOTICE_CODES);
|
|
|
10
10
|
function audienceRow(table, code) {
|
|
11
11
|
return Object.hasOwn(table, code) ? table[code] : undefined;
|
|
12
12
|
}
|
|
13
|
-
const LEGACY_NOTICE_AUDIENCE = Object.freeze({
|
|
13
|
+
const LEGACY_NOTICE_AUDIENCE = Object.freeze({
|
|
14
|
+
'context.image_removed': 'user',
|
|
15
|
+
'session.records_skipped': 'user',
|
|
16
|
+
'instructions.source_changed': 'user',
|
|
17
|
+
});
|
|
14
18
|
export function engineNoticeInCatalog(code) {
|
|
15
19
|
return typeof code === 'string' && (CATALOG.has(code) || Object.hasOwn(LEGACY_NOTICE_AUDIENCE, code));
|
|
16
20
|
}
|
|
@@ -969,7 +973,15 @@ function readTurnInterruptedOf(notice) {
|
|
|
969
973
|
const causeRaw = ownSeat(o, 'cause');
|
|
970
974
|
const cause = nonEmpty(causeRaw);
|
|
971
975
|
const inputId = nonEmpty(ownSeat(o, 'inputId'));
|
|
972
|
-
const lane = causeRaw === undefined && inputId !== undefined
|
|
976
|
+
const lane = causeRaw === undefined && inputId !== undefined
|
|
977
|
+
? 'input_now'
|
|
978
|
+
: cause === 'user_halt'
|
|
979
|
+
? 'user_halt'
|
|
980
|
+
: cause === 'extension_abort'
|
|
981
|
+
? 'extension_abort'
|
|
982
|
+
: 'unrecognized';
|
|
983
|
+
const extension = lane === 'extension_abort' ? nonEmpty(optionalOwnSeat(o, 'extension')) : undefined;
|
|
984
|
+
const turn = lane === 'extension_abort' ? positiveInt(optionalOwnSeat(o, 'turn')) : undefined;
|
|
973
985
|
const sessionId = nonEmpty(optionalOwnSeat(o, 'sessionId'));
|
|
974
986
|
const runId = nonEmpty(optionalOwnSeat(o, 'runId'));
|
|
975
987
|
const taskId = nonEmpty(optionalOwnSeat(o, 'taskId'));
|
|
@@ -977,6 +989,8 @@ function readTurnInterruptedOf(notice) {
|
|
|
977
989
|
return {
|
|
978
990
|
lane,
|
|
979
991
|
...(lane === 'input_now' && inputId !== undefined ? { inputId } : {}),
|
|
992
|
+
...(extension !== undefined ? { extension } : {}),
|
|
993
|
+
...(turn !== undefined ? { turn } : {}),
|
|
980
994
|
...(cause !== undefined ? { cause } : {}),
|
|
981
995
|
...(sessionId !== undefined ? { sessionId } : {}),
|
|
982
996
|
...(runId !== undefined ? { runId } : {}),
|
|
@@ -989,11 +1003,17 @@ const TURN_INTERRUPTED_SENTENCE = Object.freeze({
|
|
|
989
1003
|
user_halt: 'You stopped the run — the running turn was cut, and tool calls that had already finished keep their results.',
|
|
990
1004
|
unrecognized: 'A running turn was cut for a reason this version does not recognise — tool calls that had already finished keep their results.',
|
|
991
1005
|
});
|
|
992
|
-
export function turnInterruptedNotice(facts) {
|
|
1006
|
+
export function turnInterruptedNotice(facts, lang) {
|
|
993
1007
|
try {
|
|
994
1008
|
if (facts === null || typeof facts !== 'object' || Array.isArray(facts) || !Object.hasOwn(facts, 'lane'))
|
|
995
1009
|
return undefined;
|
|
996
1010
|
const lane = facts.lane;
|
|
1011
|
+
if (lane === 'extension_abort') {
|
|
1012
|
+
const shown = shownName(viewOptStr(facts, 'extension'));
|
|
1013
|
+
return shown !== undefined
|
|
1014
|
+
? renderMessage(msg('notice.turnInterrupted.extensionAbortNamed', { extension: shown }), lang)
|
|
1015
|
+
: renderMessage(msg('notice.turnInterrupted.extensionAbort'), lang);
|
|
1016
|
+
}
|
|
997
1017
|
return typeof lane === 'string' && Object.hasOwn(TURN_INTERRUPTED_SENTENCE, lane)
|
|
998
1018
|
? TURN_INTERRUPTED_SENTENCE[lane]
|
|
999
1019
|
: undefined;
|
|
@@ -1019,6 +1039,8 @@ export function steerCutVerdict(notice, messageId) {
|
|
|
1019
1039
|
return 'unattributed';
|
|
1020
1040
|
if (facts.lane === 'user_halt')
|
|
1021
1041
|
return 'user_halt';
|
|
1042
|
+
if (facts.lane === 'extension_abort')
|
|
1043
|
+
return 'extension_abort';
|
|
1022
1044
|
if (typeof messageId !== 'string' || messageId.length === 0 || facts.inputId === undefined)
|
|
1023
1045
|
return 'unattributed';
|
|
1024
1046
|
return facts.inputId === messageId ? 'this_input' : 'other_input';
|
|
@@ -1111,13 +1133,13 @@ function readMcpAuthorizationRequiredOf(notice) {
|
|
|
1111
1133
|
return undefined;
|
|
1112
1134
|
const o = d;
|
|
1113
1135
|
const server = nonEmpty(ownSeat(o, 'server'));
|
|
1114
|
-
const reason = nonEmpty(ownSeat(o, 'reason'));
|
|
1115
1136
|
const sessionId = nonEmpty(ownSeat(o, 'sessionId'));
|
|
1116
1137
|
const runId = nonEmpty(ownSeat(o, 'runId'));
|
|
1117
|
-
if (server === undefined ||
|
|
1138
|
+
if (server === undefined || sessionId === undefined || runId === undefined)
|
|
1118
1139
|
return undefined;
|
|
1140
|
+
const reason = nonEmpty(optionalOwnSeat(o, 'reason'));
|
|
1119
1141
|
const authorizeUrl = nonEmpty(optionalOwnSeat(o, 'authorizeUrl'));
|
|
1120
|
-
return { server, reason, ...(authorizeUrl !== undefined ? { authorizeUrl } : {}), sessionId, runId };
|
|
1142
|
+
return { server, ...(reason !== undefined ? { reason } : {}), ...(authorizeUrl !== undefined ? { authorizeUrl } : {}), sessionId, runId };
|
|
1121
1143
|
}
|
|
1122
1144
|
export function readSessionLineageRerooted(notice) {
|
|
1123
1145
|
return guardedRead(notice, readSessionLineageRerootedOf);
|
|
@@ -1746,6 +1768,108 @@ export function readModelCapabilityDowngraded(notice) {
|
|
|
1746
1768
|
return { model, capability, status, sessionId, runId };
|
|
1747
1769
|
});
|
|
1748
1770
|
}
|
|
1771
|
+
const REWIND_BOUNDARY_TIMEOUT_CAUSE = 'aborted';
|
|
1772
|
+
export function readRewindBoundaryUnrecorded(notice) {
|
|
1773
|
+
return guardedRead(notice, (n) => {
|
|
1774
|
+
const o = userCodeDetail(n, 'rewind.boundary_unrecorded');
|
|
1775
|
+
if (o === undefined)
|
|
1776
|
+
return undefined;
|
|
1777
|
+
const sessionId = dataStr(o, 'sessionId');
|
|
1778
|
+
const entryId = dataStr(o, 'entryId');
|
|
1779
|
+
const cause = dataStr(o, 'cause');
|
|
1780
|
+
if (sessionId === undefined || entryId === undefined || cause === undefined)
|
|
1781
|
+
return undefined;
|
|
1782
|
+
return { sessionId, entryId, cause };
|
|
1783
|
+
});
|
|
1784
|
+
}
|
|
1785
|
+
export function readInheritEnvDeclaredLate(notice) {
|
|
1786
|
+
return guardedRead(notice, (n) => {
|
|
1787
|
+
const o = userCodeDetail(n, 'config.inherit_env_declared_late');
|
|
1788
|
+
if (o === undefined)
|
|
1789
|
+
return undefined;
|
|
1790
|
+
const index = dataCount(o, 'index');
|
|
1791
|
+
const name = dataStr(o, 'name');
|
|
1792
|
+
if (index === undefined || name === undefined)
|
|
1793
|
+
return undefined;
|
|
1794
|
+
return { index, name };
|
|
1795
|
+
});
|
|
1796
|
+
}
|
|
1797
|
+
export function readModsStopEnded(notice) {
|
|
1798
|
+
return guardedRead(notice, (n) => {
|
|
1799
|
+
const o = userCodeDetail(n, 'mods.stop_ended');
|
|
1800
|
+
if (o === undefined)
|
|
1801
|
+
return undefined;
|
|
1802
|
+
const event = dataStr(o, 'event');
|
|
1803
|
+
const seat = dataStr(o, 'seat');
|
|
1804
|
+
const sessionId = dataStr(o, 'sessionId');
|
|
1805
|
+
const runId = dataStr(o, 'runId');
|
|
1806
|
+
if (event === undefined || seat === undefined || sessionId === undefined || runId === undefined)
|
|
1807
|
+
return undefined;
|
|
1808
|
+
const registration = optDataStr(o, 'registration');
|
|
1809
|
+
const reason = optDataStr(o, 'reason');
|
|
1810
|
+
const sourceSessionId = optDataStr(o, 'sourceSessionId');
|
|
1811
|
+
const agentId = optDataStr(o, 'agentId');
|
|
1812
|
+
return {
|
|
1813
|
+
event,
|
|
1814
|
+
seat,
|
|
1815
|
+
sessionId,
|
|
1816
|
+
runId,
|
|
1817
|
+
...(registration !== undefined ? { registration } : {}),
|
|
1818
|
+
...(reason !== undefined ? { reason } : {}),
|
|
1819
|
+
...(sourceSessionId !== undefined ? { sourceSessionId } : {}),
|
|
1820
|
+
...(agentId !== undefined ? { agentId } : {}),
|
|
1821
|
+
};
|
|
1822
|
+
});
|
|
1823
|
+
}
|
|
1824
|
+
export function rewindBoundaryUnrecordedSentence(facts, lang) {
|
|
1825
|
+
try {
|
|
1826
|
+
if (viewStr(facts, 'sessionId') === undefined || viewStr(facts, 'entryId') === undefined)
|
|
1827
|
+
return undefined;
|
|
1828
|
+
const cause = viewStr(facts, 'cause');
|
|
1829
|
+
if (cause === undefined)
|
|
1830
|
+
return undefined;
|
|
1831
|
+
const lead = cause === REWIND_BOUNDARY_TIMEOUT_CAUSE ? 'notice.rewind.boundaryUnrecorded.timedOut' : 'notice.rewind.boundaryUnrecorded.notSaved';
|
|
1832
|
+
return joinSentences([renderMessage(msg(lead), lang), renderMessage(msg('notice.rewind.boundaryUnrecorded.tail'), lang)], lang);
|
|
1833
|
+
}
|
|
1834
|
+
catch {
|
|
1835
|
+
return undefined;
|
|
1836
|
+
}
|
|
1837
|
+
}
|
|
1838
|
+
export function inheritEnvDeclaredLateSentence(facts, lang) {
|
|
1839
|
+
try {
|
|
1840
|
+
const index = viewCount(facts, 'index');
|
|
1841
|
+
const name = shownName(viewStr(facts, 'name'));
|
|
1842
|
+
if (index === undefined || name === undefined)
|
|
1843
|
+
return undefined;
|
|
1844
|
+
return renderMessage(msg('notice.inheritEnv.declaredLate', { name, index }), lang);
|
|
1845
|
+
}
|
|
1846
|
+
catch {
|
|
1847
|
+
return undefined;
|
|
1848
|
+
}
|
|
1849
|
+
}
|
|
1850
|
+
function stopEndedPointKey(event) {
|
|
1851
|
+
return event === 'classic.Stop' ? 'notice.mods.stopEnded.point.run' : event === 'classic.SubagentStop' ? 'notice.mods.stopEnded.point.agent' : 'notice.mods.stopEnded.point.other';
|
|
1852
|
+
}
|
|
1853
|
+
export function modsStopEndedSentence(facts, lang) {
|
|
1854
|
+
try {
|
|
1855
|
+
const event = viewStr(facts, 'event');
|
|
1856
|
+
if (event === undefined || viewStr(facts, 'seat') === undefined || viewStr(facts, 'sessionId') === undefined || viewStr(facts, 'runId') === undefined)
|
|
1857
|
+
return undefined;
|
|
1858
|
+
const registration = shownName(viewOptStr(facts, 'registration'));
|
|
1859
|
+
const reason = shownText(viewOptStr(facts, 'reason'), 200);
|
|
1860
|
+
const point = msg(stopEndedPointKey(event));
|
|
1861
|
+
return joinSentences([
|
|
1862
|
+
registration !== undefined
|
|
1863
|
+
? renderMessage(msg('notice.mods.stopEnded.lead.named', { registration, point }), lang)
|
|
1864
|
+
: renderMessage(msg('notice.mods.stopEnded.lead.anon', { point }), lang),
|
|
1865
|
+
reason !== undefined ? renderMessage(msg('notice.mods.stopEnded.reason', { reason }), lang) : undefined,
|
|
1866
|
+
renderMessage(msg('notice.mods.stopEnded.tail'), lang),
|
|
1867
|
+
], lang);
|
|
1868
|
+
}
|
|
1869
|
+
catch {
|
|
1870
|
+
return undefined;
|
|
1871
|
+
}
|
|
1872
|
+
}
|
|
1749
1873
|
export const ENGINE_NOTICE_FACT_READERS = Object.freeze({
|
|
1750
1874
|
'mcp.injection_dropped': readMcpInjectionDrop,
|
|
1751
1875
|
'delegation.ask_unresolvable': readAskUnresolvable,
|
|
@@ -1788,6 +1912,9 @@ export const ENGINE_NOTICE_FACT_READERS = Object.freeze({
|
|
|
1788
1912
|
'steering.parked_input_blocked': readSteeringParkedInputBlocked,
|
|
1789
1913
|
'delegation.delivery_discarded': readDeliveryDiscarded,
|
|
1790
1914
|
'model.capability_downgraded': readModelCapabilityDowngraded,
|
|
1915
|
+
'rewind.boundary_unrecorded': readRewindBoundaryUnrecorded,
|
|
1916
|
+
'config.inherit_env_declared_late': readInheritEnvDeclaredLate,
|
|
1917
|
+
'mods.stop_ended': readModsStopEnded,
|
|
1791
1918
|
});
|
|
1792
1919
|
const _factReaderTablePin = true;
|
|
1793
1920
|
void _factReaderTablePin;
|
|
@@ -13,8 +13,8 @@ export type EngineBootRefusalForm = {
|
|
|
13
13
|
} | {
|
|
14
14
|
readonly kind: 'deployment';
|
|
15
15
|
};
|
|
16
|
-
export type EngineDataRootVariant = 'newer_root' | 'unreadable' | 'unknown';
|
|
17
|
-
export type EngineBootWayOut = 'newer_build' | 'separate_data_root' | 'restore_backup' | 'repair_access';
|
|
16
|
+
export type EngineDataRootVariant = 'newer_root' | 'unreadable' | 'skipped_migration' | 'unknown';
|
|
17
|
+
export type EngineBootWayOut = 'newer_build' | 'separate_data_root' | 'restore_backup' | 'repair_access' | 'start_migration_release';
|
|
18
18
|
export declare const ENGINE_BOOT_REFUSAL_CODES: Readonly<Record<string, EngineBootRefusalReason>>;
|
|
19
19
|
export interface LocalEngineBootRefusal {
|
|
20
20
|
readonly code?: string;
|
|
@@ -28,6 +28,8 @@ export interface LocalEngineBootRefusal {
|
|
|
28
28
|
readonly engineVersion?: string;
|
|
29
29
|
readonly markerPath?: string;
|
|
30
30
|
readonly waysOut?: readonly EngineBootWayOut[];
|
|
31
|
+
readonly migrationRelease?: string;
|
|
32
|
+
readonly waysOutUnrecognized?: true;
|
|
31
33
|
}
|
|
32
34
|
export declare function engineBootRefusalOf(lines: readonly string[], scrub: (s: string) => string): LocalEngineBootRefusal | undefined;
|
|
33
35
|
export declare function engineBootRefusalSentence(refusal: LocalEngineBootRefusal, lang?: UiLanguage, form?: EngineBootRefusalForm): string | undefined;
|