@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.
Files changed (182) hide show
  1. package/CHANGELOG.md +153 -0
  2. package/README.md +37 -24
  3. package/dist/adapt/arms.js +7 -1
  4. package/dist/adapt/textStream.d.ts +2 -0
  5. package/dist/adapt/textStream.js +27 -1
  6. package/dist/adapter/activeRunSelfHeal.d.ts +7 -5
  7. package/dist/adapter/activeRunSelfHeal.js +38 -66
  8. package/dist/adapter/downstream/eventToSdkMessage.js +4 -0
  9. package/dist/adapter/downstream/terminalToSdkResult.d.ts +8 -0
  10. package/dist/adapter/downstream/terminalToSdkResult.js +36 -1
  11. package/dist/adapter/runStream.d.ts +2 -12
  12. package/dist/adapter/runStream.js +46 -19
  13. package/dist/agentSession/engineAgentRegistryRead.js +2 -1
  14. package/dist/agentSession/engineSessionBackgroundStop.js +2 -2
  15. package/dist/attachmentOutcome.d.ts +35 -0
  16. package/dist/attachmentOutcome.js +192 -0
  17. package/dist/attachmentPathPlan.d.ts +67 -0
  18. package/dist/attachmentPathPlan.js +203 -0
  19. package/dist/attachmentRoute.d.ts +9 -1
  20. package/dist/attachmentRoute.js +23 -2
  21. package/dist/declared/supportFloorDeclared.d.ts +1 -1
  22. package/dist/declared/supportFloorDeclared.js +1 -0
  23. package/dist/deviceRebind.js +2 -3
  24. package/dist/displayUntrusted.js +126 -19
  25. package/dist/engineAddress.d.ts +1 -1
  26. package/dist/engineAddress.js +9 -6
  27. package/dist/engineErrorCodes.d.ts +3 -0
  28. package/dist/engineErrorCodes.js +4 -0
  29. package/dist/engineNoticeCodes.d.ts +34 -4
  30. package/dist/engineNoticeCodes.js +133 -6
  31. package/dist/engineUnavailable.d.ts +4 -2
  32. package/dist/engineUnavailable.js +99 -17
  33. package/dist/fleet/fleetLedger.d.ts +9 -3
  34. package/dist/fleet/fleetLedger.js +112 -16
  35. package/dist/fleet/fleetProjection.d.ts +5 -0
  36. package/dist/fleet/fleetProjection.js +9 -1
  37. package/dist/gateVocabulary.d.ts +7 -0
  38. package/dist/gateVocabulary.js +40 -14
  39. package/dist/generated/engineFactTables.d.ts +4 -2
  40. package/dist/generated/engineFactTables.js +198 -2
  41. package/dist/generated/engineNoticeTables.js +56 -8
  42. package/dist/generated/settingsSchemaFns.d.ts +7 -0
  43. package/dist/generated/settingsSchemaFns.js +11 -0
  44. package/dist/generated/settingsSchemaHash.d.ts +1 -0
  45. package/dist/generated/settingsSchemaHash.js +58 -0
  46. package/dist/generated/settingsSchemaOwnKeyRead.js +6 -1
  47. package/dist/generated/settingsSchemaTables.d.ts +3 -2
  48. package/dist/generated/settingsSchemaTables.js +14 -0
  49. package/dist/generated/settingsSchemaTightenVerdict.d.ts +1 -0
  50. package/dist/generated/settingsSchemaTightenVerdict.js +125 -0
  51. package/dist/headlessPermissionModeWire.d.ts +7 -2
  52. package/dist/headlessPermissionModeWire.js +77 -8
  53. package/dist/hitl/approvalDecisionDoor.d.ts +24 -0
  54. package/dist/hitl/approvalDecisionDoor.js +77 -0
  55. package/dist/hitl/approvalDelivery.d.ts +6 -0
  56. package/dist/hitl/approvalDelivery.js +57 -7
  57. package/dist/hitl/approvalResolution.d.ts +6 -3
  58. package/dist/hitl/approvalResolution.js +24 -2
  59. package/dist/hitl/approvalsFeed.js +1 -1
  60. package/dist/hitl/automaticAnswerVerdict.d.ts +1 -1
  61. package/dist/hitl/decisionSend.d.ts +7 -4
  62. package/dist/hitl/decisionSend.js +90 -41
  63. package/dist/hitl/frameRouter.d.ts +3 -3
  64. package/dist/hitl/frameRouter.js +5 -0
  65. package/dist/hitl/hitlBridge.d.ts +1 -0
  66. package/dist/hitl/hitlBridge.js +17 -4
  67. package/dist/hitl/hitlHostSurface.d.ts +3 -2
  68. package/dist/hitl/hitlHostSurface.js +5 -3
  69. package/dist/hitl/legacyApprovalShapes.d.ts +142 -0
  70. package/dist/hitl/legacyApprovalShapes.js +1 -0
  71. package/dist/hitl/livePendingAsk.d.ts +4 -4
  72. package/dist/hitl/livePendingAsk.js +5 -3
  73. package/dist/hitl/parkResolver.js +1 -1
  74. package/dist/hitl/persistedRulesWire.js +2 -2
  75. package/dist/hitl/planReviewCard.d.ts +4 -2
  76. package/dist/hitl/planReviewCard.js +66 -1
  77. package/dist/hitl/planReviewWire.d.ts +34 -2
  78. package/dist/hitl/planReviewWire.js +326 -150
  79. package/dist/hitl/sessionPolicyWire.js +16 -7
  80. package/dist/hitl/subagentSource.d.ts +1 -0
  81. package/dist/hitl/subagentSource.js +11 -0
  82. package/dist/hitl/toolApprovalWire.d.ts +34 -10
  83. package/dist/hitl/toolApprovalWire.js +182 -33
  84. package/dist/hookMatcherVerdict.d.ts +2 -1
  85. package/dist/hookMatcherVerdict.js +3 -2
  86. package/dist/hooksReaderGenerations.d.ts +8 -0
  87. package/dist/hooksReaderGenerations.js +49 -0
  88. package/dist/hooksWireCaps.js +43 -18
  89. package/dist/hostSettingsSource.d.ts +1 -1
  90. package/dist/hostSettingsSource.js +2 -2
  91. package/dist/hostTurnSettings.d.ts +2 -2
  92. package/dist/hostTurnSettings.js +87 -47
  93. package/dist/humanTurn.d.ts +2 -1
  94. package/dist/humanTurn.js +44 -13
  95. package/dist/humanTurnRead.d.ts +7 -0
  96. package/dist/humanTurnRead.js +23 -14
  97. package/dist/humanTurnSentences.js +3 -0
  98. package/dist/i18n/messages.en.d.ts +93 -5
  99. package/dist/i18n/messages.en.js +100 -12
  100. package/dist/i18n/messages.zh.js +110 -15
  101. package/dist/index.d.ts +29 -15
  102. package/dist/index.js +17 -9
  103. package/dist/liveModelCatalog.js +1 -0
  104. package/dist/liveQuestionStore.d.ts +2 -0
  105. package/dist/liveQuestionStore.js +7 -2
  106. package/dist/localConfig/kernel.d.ts +2 -1
  107. package/dist/localConfig/kernel.js +12 -18
  108. package/dist/localConfig/mcp/edit.js +25 -27
  109. package/dist/localConfig/mcp/servers.js +5 -8
  110. package/dist/localConfig/modelPool.d.ts +6 -1
  111. package/dist/localConfig/modelPool.js +104 -27
  112. package/dist/localConfig/modelPoolWords.d.ts +2 -0
  113. package/dist/localConfig/modelPoolWords.js +1 -0
  114. package/dist/localConfig/settingsWrite.js +1 -14
  115. package/dist/localConfig/skills.js +9 -16
  116. package/dist/localEngineSpawn.d.ts +29 -1
  117. package/dist/localEngineSpawn.js +62 -1
  118. package/dist/mcpLiveness.d.ts +1 -1
  119. package/dist/mcpProbeWire.js +2 -2
  120. package/dist/mcpReconnect.js +2 -2
  121. package/dist/model/catalogLoader.js +3 -17
  122. package/dist/model/onboardJudgement.d.ts +8 -0
  123. package/dist/model/onboardJudgement.js +8 -3
  124. package/dist/model/onboardSteps.d.ts +19 -0
  125. package/dist/model/onboardSteps.js +76 -0
  126. package/dist/notifications.js +20 -12
  127. package/dist/ownKey.d.ts +4 -0
  128. package/dist/ownKey.js +61 -0
  129. package/dist/pathShape.d.ts +14 -0
  130. package/dist/pathShape.js +44 -0
  131. package/dist/planReviewCardFacts.d.ts +3 -0
  132. package/dist/planReviewCardFacts.js +20 -3
  133. package/dist/planReviewOutcomeCause.d.ts +2 -0
  134. package/dist/planReviewOutcomeCause.js +12 -0
  135. package/dist/pluginHooksWire.d.ts +20 -8
  136. package/dist/pluginHooksWire.js +204 -86
  137. package/dist/prepareRefusal.d.ts +2 -0
  138. package/dist/prepareRefusal.js +11 -1
  139. package/dist/request/taskRequest.js +3 -1
  140. package/dist/resultFrameKeys.d.ts +1 -0
  141. package/dist/resultFrameKeys.js +3 -0
  142. package/dist/resumeRefusalCopy.js +3 -1
  143. package/dist/retryStatus.d.ts +11 -1
  144. package/dist/retryStatus.js +15 -4
  145. package/dist/runTerminal.d.ts +1 -0
  146. package/dist/runTerminal.js +15 -1
  147. package/dist/sdkWireTransit.d.ts +1 -1
  148. package/dist/seatContract.d.ts +12 -3
  149. package/dist/seatContract.js +24 -13
  150. package/dist/sessionEngine.js +1 -1
  151. package/dist/sessionHooksRoster.js +8 -6
  152. package/dist/sessionIdSegment.d.ts +0 -1
  153. package/dist/sessionIdSegment.js +1 -3
  154. package/dist/sessionMemoryErase.js +2 -2
  155. package/dist/sessionMemoryStatus.js +2 -1
  156. package/dist/sessionOccupant.d.ts +29 -0
  157. package/dist/sessionOccupant.js +78 -0
  158. package/dist/settingsHooksSalvage.d.ts +4 -1
  159. package/dist/settingsHooksSalvage.js +22 -9
  160. package/dist/skillOverrideChain.d.ts +3 -0
  161. package/dist/skillOverrideChain.js +31 -4
  162. package/dist/skillsWireCaps.d.ts +16 -2
  163. package/dist/skillsWireCaps.js +47 -20
  164. package/dist/subagent/agentStateDetail.js +32 -8
  165. package/dist/subagent/engineCompactWire.js +48 -36
  166. package/dist/subagent/engineDelegatedPrompt.d.ts +3 -2
  167. package/dist/subagent/engineDelegatedPrompt.js +65 -28
  168. package/dist/subagentEditOutcomes.d.ts +9 -0
  169. package/dist/subagentEditOutcomes.js +43 -0
  170. package/dist/supportFloor.d.ts +2 -1
  171. package/dist/supportFloor.js +1 -1
  172. package/dist/toolResult.js +4 -2
  173. package/dist/toolRoster.d.ts +1 -0
  174. package/dist/toolRoster.js +1 -0
  175. package/dist/usageAnalytics.js +2 -1
  176. package/dist/userAttachmentEnvelope.d.ts +11 -0
  177. package/dist/userAttachmentEnvelope.js +7 -2
  178. package/dist/userAttachmentSeat.d.ts +7 -1
  179. package/dist/userAttachmentSeat.js +44 -7
  180. package/dist/wiringInstructionsAttribution.js +8 -2
  181. package/docs/INTEGRATION-CLIENTS.md +1654 -16
  182. package/package.json +5 -5
package/dist/humanTurn.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { CORE_IMAGE_ADMISSION_HARD_IMAGE_BASE64_CHARS, CORE_MAX_PENDING_STEER_CHARS, CORE_USER_ATTACHMENT_LABEL_MAX } from './generated/engineFactTables.js';
2
- import { mintEnvelopeOf, mintReferenceOf, seatTextOf } from './userAttachmentEnvelope.js';
2
+ import { mintEnvelopeOf, mintPathPointerOf, mintReferenceOf, seatTextOf } from './userAttachmentEnvelope.js';
3
3
  import { readEncodingShares, readHumanTurnInput } from './humanTurnRead.js';
4
4
  import { putOwnKey } from './ownKey.js';
5
5
  import { msg, renderMessage } from './i18n/translate.js';
@@ -76,11 +76,11 @@ function steerRefusal(text) {
76
76
  return 'too_long';
77
77
  return undefined;
78
78
  }
79
- function textOf(p) {
79
+ function textOf(p, pointers) {
80
80
  if (p.form === 'reference')
81
81
  return mintReferenceOf(p.a.d);
82
82
  if (p.form === 'seat')
83
- return '';
83
+ return pointers && p.a.d.kind === 'path' ? mintPathPointerOf(p.a.d) : '';
84
84
  return mintEnvelopeOf(p.a.d, p.seated ? 'attached' : 'not-attached');
85
85
  }
86
86
  const digits = (n) => String(n).length;
@@ -100,10 +100,14 @@ function seatEntryOf(a, maxRenderedTextChars) {
100
100
  return undefined;
101
101
  return a.d.kind === 'text' ? { name, text, startLine } : { name, text };
102
102
  }
103
- function compose(items, placements) {
104
- const perItem = items.map((it, i) => [...placements.filter((p) => p.item === i).map(textOf), it.text].filter((s) => s.length > 0).join('\n\n'));
103
+ function compose(items, placements, pointers = false) {
104
+ const perItem = items.map((it, i) => [...placements.filter((p) => p.item === i).map((p) => textOf(p, pointers)), it.text].filter((s) => s.length > 0).join('\n\n'));
105
105
  return perItem.filter((s) => s.length > 0).join('\n');
106
106
  }
107
+ function composeObjective(items, placements) {
108
+ const text = compose(items, placements);
109
+ return text.trim() === '' && placements.some((p) => p.form === 'seat' && p.a.d.kind === 'path') ? compose(items, placements, true) : text;
110
+ }
107
111
  function seatedImages(items, pastedWhy, placements) {
108
112
  const out = [];
109
113
  items.forEach((it, i) => {
@@ -127,6 +131,9 @@ const ENCODER_WHY_LIST = [
127
131
  'seat_total',
128
132
  'lane_has_no_image_seat',
129
133
  'lane_has_no_attachment_id_seat',
134
+ 'lane_has_no_path_seat',
135
+ 'path_not_admitted',
136
+ 'path_seat_count',
130
137
  ];
131
138
  const encoderWhysExhaustive = true;
132
139
  void encoderWhysExhaustive;
@@ -146,7 +153,7 @@ function records(lane, items, pastedWhy, placements) {
146
153
  for (const p of placements) {
147
154
  if (p.item !== i)
148
155
  continue;
149
- push(i, p.form !== 'reference' ? { kind: 'attachment_ref', ref: p.a.uuid, status: 'full' } : { kind: 'attachment_ref', ref: p.a.uuid, status: 'none', why: lane === 'objective' ? 'body_budget' : 'steer_admission' });
156
+ push(i, p.form !== 'reference' ? { kind: 'attachment_ref', ref: p.a.uuid, status: 'full' } : { kind: 'attachment_ref', ref: p.a.uuid, status: 'none', why: p.refWhy ?? (lane === 'objective' ? 'body_budget' : 'steer_admission') });
150
157
  if (p.a.pixels !== undefined) {
151
158
  if (lane === 'steer')
152
159
  push(i, { kind: 'image', ref: p.a.uuid, status: 'none', why: 'lane_has_no_image_seat' });
@@ -238,7 +245,7 @@ function encodeObjective(v) {
238
245
  const placements = [];
239
246
  items.forEach((it, i) => {
240
247
  for (const a of it.attachments) {
241
- const p = { item: i, a, form: 'content', seated: false, seatWhy: undefined, entry: undefined };
248
+ const p = { item: i, a, form: 'content', seated: false, seatWhy: undefined, entry: undefined, refWhy: undefined };
242
249
  if (a.pixels !== undefined) {
243
250
  if (v.vision === 'no')
244
251
  p.seatWhy = 'vision_no';
@@ -250,10 +257,29 @@ function encodeObjective(v) {
250
257
  placements.push(p);
251
258
  }
252
259
  });
260
+ let pathSeated = 0;
261
+ for (const p of placements) {
262
+ const d = p.a.d;
263
+ if (d.kind !== 'path')
264
+ continue;
265
+ if (v.pathSeats === undefined) {
266
+ p.form = 'reference';
267
+ p.refWhy = 'path_not_admitted';
268
+ }
269
+ else if (pathSeated >= v.pathSeats) {
270
+ p.form = 'reference';
271
+ p.refWhy = 'path_seat_count';
272
+ }
273
+ else {
274
+ p.form = 'seat';
275
+ p.entry = d.entry;
276
+ pathSeated += 1;
277
+ }
278
+ }
253
279
  if (v.seat !== undefined) {
254
280
  let n = 0;
255
281
  for (const p of placements) {
256
- if (n >= v.seat.maxEntries)
282
+ if (pathSeated + n >= v.seat.maxEntries)
257
283
  break;
258
284
  const entry = seatEntryOf(p.a, v.seat.maxRenderedTextChars);
259
285
  if (entry === undefined)
@@ -264,7 +290,7 @@ function encodeObjective(v) {
264
290
  }
265
291
  if (n > 0 && compose(items, placements).trim() === '') {
266
292
  for (const p of placements) {
267
- if (p.form === 'seat') {
293
+ if (p.form === 'seat' && p.a.d.kind !== 'path') {
268
294
  p.form = 'content';
269
295
  p.entry = undefined;
270
296
  }
@@ -273,7 +299,7 @@ function encodeObjective(v) {
273
299
  }
274
300
  const ids = items.flatMap((it) => it.attachmentIds);
275
301
  for (;;) {
276
- const text = compose(items, placements);
302
+ const text = composeObjective(items, placements);
277
303
  const images = seatedImages(items, pastedWhy, placements);
278
304
  const seated = placements.filter((p) => p.form === 'seat');
279
305
  const entries = seated.map((p) => p.entry);
@@ -298,6 +324,8 @@ function encodeObjective(v) {
298
324
  placements.forEach((p, k) => {
299
325
  if (p.form === 'reference')
300
326
  return;
327
+ if (p.a.d.kind === 'path')
328
+ return;
301
329
  if (p.form === 'seat') {
302
330
  const cost = jsonBytes(p.entry) + 1;
303
331
  if (cost >= pickCost) {
@@ -306,7 +334,7 @@ function encodeObjective(v) {
306
334
  }
307
335
  return;
308
336
  }
309
- const cost = jsonBytes(textOf(p)) + (p.seated && p.a.pixels !== undefined ? jsonBytes({ data: p.a.pixels.data, mimeType: p.a.pixels.mimeType }) : 0);
337
+ const cost = jsonBytes(textOf(p, false)) + (p.seated && p.a.pixels !== undefined ? jsonBytes({ data: p.a.pixels.data, mimeType: p.a.pixels.mimeType }) : 0);
310
338
  if (cost >= pickCost) {
311
339
  pick = k;
312
340
  pickCost = cost;
@@ -321,8 +349,11 @@ function encodeSteer(v) {
321
349
  const { items } = v;
322
350
  const placements = [];
323
351
  items.forEach((it, i) => {
324
- for (const a of it.attachments)
325
- placements.push({ item: i, a, form: 'content', seated: false, seatWhy: undefined, entry: undefined });
352
+ for (const a of it.attachments) {
353
+ placements.push(a.d.kind === 'path'
354
+ ? { item: i, a, form: 'reference', seated: false, seatWhy: undefined, entry: undefined, refWhy: 'lane_has_no_path_seat' }
355
+ : { item: i, a, form: 'content', seated: false, seatWhy: undefined, entry: undefined, refWhy: undefined });
356
+ }
326
357
  });
327
358
  let text = compose(items, placements);
328
359
  let refusal = steerRefusal(text);
@@ -3,6 +3,7 @@ import type { UserAttachmentDescriptor, UserAttachmentMcpResourcePart, UserAttac
3
3
  import type { HumanTurnAttachment, HumanTurnEncoding, HumanTurnInput, HumanTurnMissing } from './humanTurn.js';
4
4
  import type { ImageVision } from './liveModelCatalog.js';
5
5
  import { type UserAttachmentSeatLimits } from './userAttachmentSeat.js';
6
+ import { type UserAttachmentPathEntry } from './attachmentPathPlan.js';
6
7
  export interface CellView {
7
8
  cellType: string | undefined;
8
9
  source: string | undefined;
@@ -70,6 +71,11 @@ export type DescriptorView = {
70
71
  name: string;
71
72
  parts: UserAttachmentMcpResourcePart[];
72
73
  truncated: boolean;
74
+ } | {
75
+ kind: 'path';
76
+ name: string;
77
+ path: string;
78
+ entry: UserAttachmentPathEntry;
73
79
  };
74
80
  export declare function readDescriptor(x: UserAttachmentDescriptor | HumanTurnAttachment['descriptor'], imageDelivery: 'required' | 'ignored'): DescriptorView | undefined;
75
81
  type Reason = Exclude<Extract<HumanTurnEncoding, {
@@ -106,6 +112,7 @@ export interface InputView {
106
112
  lane: 'objective' | 'steer';
107
113
  vision: ImageVision;
108
114
  seat: UserAttachmentSeatLimits | undefined;
115
+ pathSeats: number | undefined;
109
116
  otherBodyBytes: number;
110
117
  items: ItemView[];
111
118
  }
@@ -1,5 +1,6 @@
1
1
  import { appendOwnElement } from './ownKey.js';
2
2
  import { userAttachmentSeatAdmits } from './userAttachmentSeat.js';
3
+ import { pathEntryOf, presentSeatLimitsOf } from './attachmentPathPlan.js';
3
4
  const descriptorKindsAligned = true;
4
5
  void descriptorKindsAligned;
5
6
  const MALFORMED = Object.freeze({});
@@ -171,6 +172,13 @@ function readDescriptorAny(x, imageDelivery) {
171
172
  bad();
172
173
  return { kind, server: str(ownData(o, 'server')), uri: str(ownData(o, 'uri')), name: name(), parts: ownArray(ownData(o, 'parts')).map(readMcpPart), truncated: truncated };
173
174
  }
175
+ case 'path': {
176
+ const verdict = pathEntryOf(o);
177
+ if ('why' in verdict)
178
+ bad();
179
+ const entry = verdict.entry;
180
+ return { kind, name: name(), path: entry.path, entry };
181
+ }
174
182
  default:
175
183
  return undefined;
176
184
  }
@@ -270,23 +278,24 @@ function readItem(x) {
270
278
  }),
271
279
  };
272
280
  }
273
- function seatLimitsOf(caps) {
281
+ function seatOf(caps, lane) {
274
282
  try {
275
283
  const reading = ownData(caps, 'userAttachments');
276
284
  if (reading === undefined)
277
- return undefined;
278
- if (userAttachmentSeatAdmits(reading) !== 'yes')
279
- return undefined;
280
- const limits = ownData(reading, 'limits');
281
- if (!isPlainObject(limits))
282
- return undefined;
283
- const maxEntries = ownData(limits, 'maxEntries');
284
- const maxRenderedTextChars = ownData(limits, 'maxRenderedTextChars');
285
- const ok = (n) => typeof n === 'number' && Number.isSafeInteger(n) && n >= 1;
286
- return ok(maxEntries) && ok(maxRenderedTextChars) ? { maxEntries, maxRenderedTextChars } : undefined;
285
+ return { content: undefined, pathSeats: undefined };
286
+ const scenario = ownData(caps, 'scenario');
287
+ const limits = presentSeatLimitsOf(reading);
288
+ if (limits === undefined)
289
+ return { content: undefined, pathSeats: undefined };
290
+ const card = scenario === undefined ? {} : { scenario: scenario };
291
+ const seat = reading;
292
+ return {
293
+ content: userAttachmentSeatAdmits(seat, { supply: 'content_text', lane: 'objective', ...card }) === 'yes' ? limits : undefined,
294
+ pathSeats: userAttachmentSeatAdmits(seat, { supply: 'path', lane, ...card }) === 'yes' ? limits.maxEntries : undefined,
295
+ };
287
296
  }
288
297
  catch {
289
- return undefined;
298
+ return { content: undefined, pathSeats: undefined };
290
299
  }
291
300
  }
292
301
  function readInputAny(x) {
@@ -302,7 +311,7 @@ function readInputAny(x) {
302
311
  const vision = ownData(caps, 'vision');
303
312
  if (vision !== undefined && vision !== 'yes' && vision !== 'no' && vision !== 'unknown')
304
313
  reject('malformed_input');
305
- const seat = seatLimitsOf(caps);
314
+ const { content: seat, pathSeats } = seatOf(caps, lane);
306
315
  let otherBodyBytes = 0;
307
316
  if (lane === 'objective') {
308
317
  const ob = ownData(o, 'otherBodyBytes');
@@ -348,7 +357,7 @@ function readInputAny(x) {
348
357
  }
349
358
  if (items.every((it) => it.text.length === 0 && it.images.length === 0 && it.attachments.length === 0 && it.attachmentIds.length === 0))
350
359
  reject('empty');
351
- return { lane: lane, vision: vision ?? 'unknown', seat, otherBodyBytes, items };
360
+ return { lane: lane, vision: vision ?? 'unknown', seat, pathSeats, otherBodyBytes, items };
352
361
  }
353
362
  export function readHumanTurnInput(input) {
354
363
  try {
@@ -36,6 +36,9 @@ const DEGRADED_KEYS = {
36
36
  steer_admission: ['session.humanTurn.degraded.steerAdmission.one', 'session.humanTurn.degraded.steerAdmission.other'],
37
37
  lane_has_no_image_seat: ['session.humanTurn.degraded.noImageSeat.one', 'session.humanTurn.degraded.noImageSeat.other'],
38
38
  lane_has_no_attachment_id_seat: ['session.humanTurn.degraded.noAttachmentIdSeat.one', 'session.humanTurn.degraded.noAttachmentIdSeat.other'],
39
+ lane_has_no_path_seat: ['session.humanTurn.degraded.noPathSeat.one', 'session.humanTurn.degraded.noPathSeat.other'],
40
+ path_not_admitted: ['session.humanTurn.degraded.pathNotAdmitted.one', 'session.humanTurn.degraded.pathNotAdmitted.other'],
41
+ path_seat_count: ['session.humanTurn.degraded.pathSeatCount.one', 'session.humanTurn.degraded.pathSeatCount.other'],
39
42
  };
40
43
  function modelFragment(modelName, lang) {
41
44
  return typeof modelName === 'string' && modelName.length > 0 ? renderMessage(msg('session.humanTurn.modelFragment', { model: modelName }), lang) : '';
@@ -317,6 +317,12 @@ declare const EN: {
317
317
  'approval.policyDeny.tail': string;
318
318
  'approval.decision.grantChanged': string;
319
319
  'approval.decision.answerInvalid': string;
320
+ 'approval.routeMissing.line': string;
321
+ 'approval.notSent.noVerb': string;
322
+ 'approval.notSent.cardUnreadable': string;
323
+ 'approval.notSent.noVerbOldServer': string;
324
+ 'approval.decision.notSentOldServer': string;
325
+ 'approval.decision.notSentNewerAddress': string;
320
326
  'approval.editRefusal.stem': string;
321
327
  'approval.editRefusal.line': string;
322
328
  'approval.editRefusal.parkReason': string;
@@ -406,6 +412,8 @@ declare const EN: {
406
412
  'resume.refusal.parentConstraintMissing': string;
407
413
  'resume.refusal.parentConstraintMismatch': string;
408
414
  'resume.refusal.constraintUnprojectable': string;
415
+ 'resume.refusal.isolationScopeMismatch': string;
416
+ 'resume.refusal.agentDefinitionMismatch': string;
409
417
  'resume.refusal.preflightWaitable': string;
410
418
  'resume.refusal.preflightNoWait': string;
411
419
  'resume.refusal.policyBlock': string;
@@ -455,7 +463,6 @@ declare const EN: {
455
463
  'resume.refusal.park.blockedInteractive': string;
456
464
  'session.selfHeal.wayOut.interactive': string;
457
465
  'session.selfHeal.freshSession.default': string;
458
- 'session.selfHeal.freshSession.defaultCapitalized': string;
459
466
  'session.selfHeal.gate.kind': string;
460
467
  'session.selfHeal.gate.generic': string;
461
468
  'session.selfHeal.handle.run': string;
@@ -474,6 +481,8 @@ declare const EN: {
474
481
  'session.selfHeal.injected.steerRejected': string;
475
482
  'session.selfHeal.injected.decisionInFlight': string;
476
483
  'session.selfHeal.injected.dismissedPlan': string;
484
+ 'session.selfHeal.injected.planReopenConversationLeft': string;
485
+ 'session.selfHeal.injected.planReopenConversationUnconfirmed': string;
477
486
  'session.selfHeal.injected.queuedOn': string;
478
487
  'session.selfHeal.injected.queuedShown': string;
479
488
  'session.selfHeal.injected.queuedInFlight': string;
@@ -512,6 +521,8 @@ declare const EN: {
512
521
  'session.selfHeal.row.planReopenFailed.dismissed': string;
513
522
  'session.selfHeal.row.planReopenFailed.withKeep': string;
514
523
  'session.selfHeal.row.planReopenFailed.noKeep': string;
524
+ 'session.selfHeal.row.planReopenFailed.conversationLeft': string;
525
+ 'session.selfHeal.row.planReopenFailed.conversationUnconfirmed': string;
515
526
  'session.selfHeal.row.steered.textOnly': string;
516
527
  'session.selfHeal.row.steered.tail.following': string;
517
528
  'session.selfHeal.row.steered.tail.watch': string;
@@ -572,9 +583,12 @@ declare const EN: {
572
583
  'session.selfHeal.endRun.engineInteractive.noId': string;
573
584
  'session.selfHeal.wakeOn.engine': string;
574
585
  'session.selfHeal.wakeOn.host': string;
575
- 'session.selfHeal.headless.decide': string;
576
- 'session.selfHeal.headless.statusOnly': string;
577
- 'session.selfHeal.headless.neverReleased': string;
586
+ 'session.busy.running': string;
587
+ 'session.busy.parked': string;
588
+ 'session.busy.parkedDecide': string;
589
+ 'session.busy.unreadable': string;
590
+ 'session.busy.released': string;
591
+ 'session.busy.freshSession.interactive': string;
578
592
  'approval.deniedBy.policy': string;
579
593
  'approval.deniedBy.hook': string;
580
594
  'approval.deniedBy.org': string;
@@ -596,11 +610,22 @@ declare const EN: {
596
610
  'approval.origin.hook': string;
597
611
  'approval.origin.askRule': string;
598
612
  'approval.origin.denialLimitFallback': string;
613
+ 'approval.origin.integrityGuard': string;
599
614
  'approval.origin.shellGateTighten': string;
600
615
  'approval.origin.safetyTighten': string;
601
616
  'approval.origin.policy': string;
602
617
  'approval.origin.unknownWithWord': string;
603
618
  'approval.origin.unknownNoWord': string;
619
+ 'approval.originHeadline.ancestorMarked': string;
620
+ 'approval.originHeadline.orgUnavailable': string;
621
+ 'approval.originHeadline.orgRule': string;
622
+ 'approval.originHeadline.ruleStoreUnavailable': string;
623
+ 'approval.originHeadline.hook': string;
624
+ 'approval.originHeadline.denialLimitFallback': string;
625
+ 'approval.originHeadline.shellGateTighten': string;
626
+ 'approval.originHeadline.safetyTighten': string;
627
+ 'approval.originHeadline.integrityGuard': string;
628
+ 'approval.originHeadline.unknown': string;
604
629
  'approval.ruleOffer.absence.allowOutranked': string;
605
630
  'approval.ruleOffer.absence.askRuleMatched': string;
606
631
  'approval.ruleOffer.absence.askRuleMatchedDeploymentList': string;
@@ -862,8 +887,21 @@ declare const EN: {
862
887
  'notice.classifier.denialLimit.tail': string;
863
888
  'notice.task.lateApproval': string;
864
889
  'notice.task.haltUnconsumed': string;
890
+ 'notice.turnInterrupted.extensionAbort': string;
891
+ 'notice.turnInterrupted.extensionAbortNamed': string;
865
892
  'notice.steering.parkedInputBlocked': string;
866
893
  'notice.model.capabilityDowngraded.image': string;
894
+ 'notice.rewind.boundaryUnrecorded.notSaved': string;
895
+ 'notice.rewind.boundaryUnrecorded.timedOut': string;
896
+ 'notice.rewind.boundaryUnrecorded.tail': string;
897
+ 'notice.inheritEnv.declaredLate': string;
898
+ 'notice.mods.stopEnded.point.run': string;
899
+ 'notice.mods.stopEnded.point.agent': string;
900
+ 'notice.mods.stopEnded.point.other': string;
901
+ 'notice.mods.stopEnded.lead.named': string;
902
+ 'notice.mods.stopEnded.lead.anon': string;
903
+ 'notice.mods.stopEnded.reason': string;
904
+ 'notice.mods.stopEnded.tail': string;
867
905
  'rules.refusal.sentence.one': string;
868
906
  'rules.refusal.sentence.other': string;
869
907
  'rules.refusal.item': string;
@@ -909,6 +947,8 @@ declare const EN: {
909
947
  'config.hooks.httpPolicy.urlListMalformed': string;
910
948
  'config.hooks.httpPolicy.envListMalformed': string;
911
949
  'config.hooks.httpPolicy.layerUnreadable': string;
950
+ 'config.hooks.layerWithheld.degraded': string;
951
+ 'config.hooks.plan.reason.layerDegraded': string;
912
952
  'config.hooks.layerWithheld.trust': string;
913
953
  'config.taskRequest.memoryOff.settingsSectionNotObject': string;
914
954
  'config.taskRequest.memoryOff.enabledNotBoolean': string;
@@ -1198,6 +1238,12 @@ declare const EN: {
1198
1238
  'session.humanTurn.degraded.noImageSeat.other': string;
1199
1239
  'session.humanTurn.degraded.noAttachmentIdSeat.one': string;
1200
1240
  'session.humanTurn.degraded.noAttachmentIdSeat.other': string;
1241
+ 'session.humanTurn.degraded.noPathSeat.one': string;
1242
+ 'session.humanTurn.degraded.noPathSeat.other': string;
1243
+ 'session.humanTurn.degraded.pathNotAdmitted.one': string;
1244
+ 'session.humanTurn.degraded.pathNotAdmitted.other': string;
1245
+ 'session.humanTurn.degraded.pathSeatCount.one': string;
1246
+ 'session.humanTurn.degraded.pathSeatCount.other': string;
1201
1247
  'session.humanTurn.printVision.no': string;
1202
1248
  'session.humanTurn.printVision.unknown': string;
1203
1249
  'config.scenarioRefusal.source.ruling': string;
@@ -1272,6 +1318,7 @@ declare const EN: {
1272
1318
  'notice.wireRefusal.unsupportedRule.stored.other': string;
1273
1319
  'notice.prepareRefusal.draftKept': string;
1274
1320
  'notice.prepareRefusal.mcpServerNameCollision': string;
1321
+ 'notice.prepareRefusal.userAttachmentPath': string;
1275
1322
  'notice.retry.source.unifiedHeader': string;
1276
1323
  'notice.retry.source.providerCode': string;
1277
1324
  'notice.retry.source.status': string;
@@ -1322,7 +1369,7 @@ declare const EN: {
1322
1369
  'doctor.wiring.fleetTranscripts.noPromise': string;
1323
1370
  'doctor.wiring.fleetTranscripts.unknownTier': string;
1324
1371
  'config.attachments.refusal.credentialShapedWord': string;
1325
- 'session.subagent.delegatedPrompt.absence.notOwnedAfterRestart': string;
1372
+ 'session.subagent.delegatedPrompt.absence.anchorUnreported': string;
1326
1373
  'session.subagent.delegatedPrompt.absence.notInStore': string;
1327
1374
  'session.subagent.delegatedPrompt.absence.forbidden': string;
1328
1375
  'session.subagent.delegatedPrompt.absence.promptAbsent': string;
@@ -1346,6 +1393,7 @@ declare const EN: {
1346
1393
  'config.hooks.plan.keyNotRead.manyKeys': string;
1347
1394
  'config.hooks.plan.keyNotRead.more': string;
1348
1395
  'config.hooks.plan.keyNotRead.withOnFailure': string;
1396
+ 'config.hooks.plan.keyNotRead.readerFieldsUnreadable': string;
1349
1397
  'config.hooks.plan.reason.sourceNotAuthored': string;
1350
1398
  'config.hooks.plan.sourceNotAuthored.oneKey': string;
1351
1399
  'config.hooks.plan.sourceNotAuthored.manyKeys': string;
@@ -1435,6 +1483,7 @@ declare const EN: {
1435
1483
  'config.localConfig.disclosure.decidedBy': string;
1436
1484
  'config.localConfig.disclosure.shadowed': string;
1437
1485
  'config.localConfig.disclosure.tierGroupOverridden': string;
1486
+ 'config.localConfig.disclosure.shadowUnknown': string;
1438
1487
  'config.localConfig.disclosure.tierGroupOverriddenNamed': string;
1439
1488
  'config.localConfig.layer.userSettings': string;
1440
1489
  'config.localConfig.layer.projectSettings': string;
@@ -1487,6 +1536,9 @@ declare const EN: {
1487
1536
  'approval.planReview.note.tooLarge': string;
1488
1537
  'approval.planReview.note.notCarried': string;
1489
1538
  'approval.planReview.note.unknown': string;
1539
+ 'approval.planReview.heading.plain': string;
1540
+ 'approval.planReview.heading.gate': string;
1541
+ 'approval.planReview.heading.replaces': string;
1490
1542
  'approval.planReview.askAgain.shown': string;
1491
1543
  'approval.planReview.askAgain.marked': string;
1492
1544
  'approval.planReview.askAgain.tooLarge': string;
@@ -1498,6 +1550,19 @@ declare const EN: {
1498
1550
  'approval.planReview.decision.cardMissing': string;
1499
1551
  'approval.planReview.decision.gateMoved': string;
1500
1552
  'approval.planReview.decision.gateUntrusted': string;
1553
+ 'approval.planReview.decision.sentWithoutGateId': string;
1554
+ 'approval.planReview.bridge.gateIdMissing': string;
1555
+ 'approval.planReview.notice.what.approve': string;
1556
+ 'approval.planReview.notice.what.reject': string;
1557
+ 'approval.planReview.notice.what.askAgain': string;
1558
+ 'approval.planReview.notice.what.unknown': string;
1559
+ 'approval.planReview.notice.notSent': string;
1560
+ 'approval.planReview.notice.refused': string;
1561
+ 'approval.planReview.notice.stillParked': string;
1562
+ 'approval.planReview.notice.storedForm': string;
1563
+ 'approval.planReview.notice.unconfirmed': string;
1564
+ 'approval.planReview.notice.wayOut': string;
1565
+ 'approval.planReview.notice.cardOnScreen': string;
1501
1566
  'approval.planReview.option.askAgain.label': string;
1502
1567
  'approval.planReview.option.askAgain.description': string;
1503
1568
  'localEngine.behind.cliUpdate': string;
@@ -1536,6 +1601,8 @@ declare const EN: {
1536
1601
  'localEngine.settingsLayer.unspecified': string;
1537
1602
  'localEngine.bootRefusal': string;
1538
1603
  'localEngine.firstShare': string;
1604
+ 'localEngine.bindNotAcknowledged': string;
1605
+ 'localEngine.bindAcknowledged': string;
1539
1606
  'localEngine.phase.starting': string;
1540
1607
  'localEngine.phase.dormant': string;
1541
1608
  'localEngine.phase.draining': string;
@@ -1627,6 +1694,7 @@ declare const EN: {
1627
1694
  'engine.bootRefusal.withWaysOut': string;
1628
1695
  'engine.bootRefusal.withFix': string;
1629
1696
  'engine.bootRefusal.waysOut': string;
1697
+ 'engine.bootRefusal.waysOutFour': string;
1630
1698
  'engine.bootRefusal.who.sema': string;
1631
1699
  'engine.bootRefusal.who.semaAtLeast': string;
1632
1700
  'engine.bootRefusal.who.app': string;
@@ -1647,6 +1715,10 @@ declare const EN: {
1647
1715
  'engine.bootRefusal.folder.default': string;
1648
1716
  'engine.bootRefusal.repair': string;
1649
1717
  'engine.bootRefusal.repairDeployment': string;
1718
+ 'engine.bootRefusal.release.atLeast': string;
1719
+ 'engine.bootRefusal.release.any': string;
1720
+ 'engine.bootRefusal.migration': string;
1721
+ 'engine.bootRefusal.migrationDeployment': string;
1650
1722
  'session.devices.repoint.done': string;
1651
1723
  'session.devices.repoint.unverified': string;
1652
1724
  'session.devices.repoint.undetermined': string;
@@ -1660,12 +1732,28 @@ declare const EN: {
1660
1732
  'session.devices.repoint.refused.targetOccupied': string;
1661
1733
  'session.devices.repoint.refused.unarmed': string;
1662
1734
  'session.devices.repoint.refused.rosterUnbound': string;
1735
+ 'attachments.outcome.attached.row': string;
1736
+ 'attachments.outcome.partial.row': string;
1737
+ 'attachments.outcome.notAttached.row': string;
1738
+ 'attachments.outcome.notAttachedDeclined.row': string;
1739
+ 'attachments.outcome.refused.row': string;
1740
+ 'attachments.outcome.refusedNamed.row': string;
1741
+ 'attachments.outcome.unknown.row': string;
1663
1742
  'attachments.withheld.toolsElsewhere.row': string;
1664
1743
  'attachments.withheld.toolsLocationUnconfirmed.row': string;
1665
1744
  'attachments.withheld.toolsElsewhere.model': string;
1666
1745
  'attachments.withheld.toolsLocationUnconfirmed.model': string;
1667
1746
  'attachments.localCopy.model': string;
1747
+ 'attachments.pathOverflow.seatCount.row': string;
1748
+ 'attachments.pathOverflow.linesInvalid.row': string;
1749
+ 'attachments.pathOverflow.pathInvalid.row': string;
1750
+ 'attachments.pathPointer.model': string;
1668
1751
  'session.compaction.canceled': string;
1752
+ 'session.compaction.notRunning.willRetry': string;
1753
+ 'session.compaction.notRunning.final': string;
1754
+ 'session.subagent.editOutcomes.allApplied.one': string;
1755
+ 'session.subagent.editOutcomes.allApplied.other': string;
1756
+ 'session.subagent.editOutcomes.mixed': string;
1669
1757
  'localEngine.health.answer.unansweredTimeout': string;
1670
1758
  'localEngine.health.answer.unansweredNetwork': string;
1671
1759
  'localEngine.health.answer.ok': string;