@sema-agent/core 1.299.1 → 1.301.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 (102) hide show
  1. package/dist/agents/subagent.d.ts.map +1 -1
  2. package/dist/agents/subagent.js +124 -50
  3. package/dist/agents/subagent.js.map +1 -1
  4. package/dist/core/auto-mode-prompt.d.ts.map +1 -1
  5. package/dist/core/auto-mode-prompt.js +25 -2
  6. package/dist/core/auto-mode-prompt.js.map +1 -1
  7. package/dist/core/checkpoint-store.d.ts +5 -0
  8. package/dist/core/checkpoint-store.d.ts.map +1 -1
  9. package/dist/core/checkpoint-store.js.map +1 -1
  10. package/dist/core/memory-engine/engine.d.ts +2 -2
  11. package/dist/core/memory-engine/engine.d.ts.map +1 -1
  12. package/dist/core/memory-engine/engine.js +3 -3
  13. package/dist/core/memory-engine/engine.js.map +1 -1
  14. package/dist/core/memory-engine/file-backend.d.ts.map +1 -1
  15. package/dist/core/memory-engine/file-backend.js +17 -0
  16. package/dist/core/memory-engine/file-backend.js.map +1 -1
  17. package/dist/core/memory-engine/frontmatter.d.ts.map +1 -1
  18. package/dist/core/memory-engine/frontmatter.js +62 -1
  19. package/dist/core/memory-engine/frontmatter.js.map +1 -1
  20. package/dist/core/memory-engine/memory-backend-contract.d.ts.map +1 -1
  21. package/dist/core/memory-engine/memory-backend-contract.js +45 -0
  22. package/dist/core/memory-engine/memory-backend-contract.js.map +1 -1
  23. package/dist/core/memory-engine/sync-client.d.ts.map +1 -1
  24. package/dist/core/memory-engine/sync-client.js +23 -0
  25. package/dist/core/memory-engine/sync-client.js.map +1 -1
  26. package/dist/core/memory-engine/types.d.ts +7 -0
  27. package/dist/core/memory-engine/types.d.ts.map +1 -1
  28. package/dist/core/runner/prepare-task.d.ts +12 -1
  29. package/dist/core/runner/prepare-task.d.ts.map +1 -1
  30. package/dist/core/runner/prepare-task.js +120 -10
  31. package/dist/core/runner/prepare-task.js.map +1 -1
  32. package/dist/core/runner/prompt-suggestions.d.ts.map +1 -1
  33. package/dist/core/runner/prompt-suggestions.js +14 -2
  34. package/dist/core/runner/prompt-suggestions.js.map +1 -1
  35. package/dist/core/runner/runtask.d.ts.map +1 -1
  36. package/dist/core/runner/runtask.js +177 -59
  37. package/dist/core/runner/runtask.js.map +1 -1
  38. package/dist/core/runner/synthetic-tools.d.ts +11 -1
  39. package/dist/core/runner/synthetic-tools.d.ts.map +1 -1
  40. package/dist/core/runner/synthetic-tools.js +47 -28
  41. package/dist/core/runner/synthetic-tools.js.map +1 -1
  42. package/dist/core/runner/turn-attachments.d.ts +14 -3
  43. package/dist/core/runner/turn-attachments.d.ts.map +1 -1
  44. package/dist/core/runner/turn-attachments.js +59 -7
  45. package/dist/core/runner/turn-attachments.js.map +1 -1
  46. package/dist/core/scheduler.d.ts +5 -0
  47. package/dist/core/scheduler.d.ts.map +1 -1
  48. package/dist/core/scheduler.js.map +1 -1
  49. package/dist/core/task-registry.d.ts +31 -2
  50. package/dist/core/task-registry.d.ts.map +1 -1
  51. package/dist/core/task-registry.js +35 -6
  52. package/dist/core/task-registry.js.map +1 -1
  53. package/dist/core/tool-policy.d.ts +11 -2
  54. package/dist/core/tool-policy.d.ts.map +1 -1
  55. package/dist/core/tool-policy.js +14 -0
  56. package/dist/core/tool-policy.js.map +1 -1
  57. package/dist/core/trace.d.ts.map +1 -1
  58. package/dist/core/trace.js.map +1 -1
  59. package/dist/core/types.d.ts +8 -2
  60. package/dist/core/types.d.ts.map +1 -1
  61. package/dist/core/untrusted-text.d.ts +23 -0
  62. package/dist/core/untrusted-text.d.ts.map +1 -1
  63. package/dist/core/untrusted-text.js +69 -0
  64. package/dist/core/untrusted-text.js.map +1 -1
  65. package/dist/engine/compaction/utils.d.ts.map +1 -1
  66. package/dist/engine/compaction/utils.js +20 -1
  67. package/dist/engine/compaction/utils.js.map +1 -1
  68. package/dist/engine/harness/agent-harness.d.ts +11 -4
  69. package/dist/engine/harness/agent-harness.d.ts.map +1 -1
  70. package/dist/engine/harness/agent-harness.js +23 -6
  71. package/dist/engine/harness/agent-harness.js.map +1 -1
  72. package/dist/engine/harness/messages.d.ts.map +1 -1
  73. package/dist/engine/harness/messages.js +1 -0
  74. package/dist/engine/harness/messages.js.map +1 -1
  75. package/dist/engine/harness/types.d.ts.map +1 -1
  76. package/dist/engine/harness/types.js.map +1 -1
  77. package/dist/engine/llm/types.d.ts +7 -0
  78. package/dist/engine/llm/types.d.ts.map +1 -1
  79. package/dist/engine/loop/agent-loop.js +7 -0
  80. package/dist/engine/loop/agent-loop.js.map +1 -1
  81. package/dist/engine/loop/types.d.ts +1 -0
  82. package/dist/engine/loop/types.d.ts.map +1 -1
  83. package/dist/engine/session/import-validate.d.ts.map +1 -1
  84. package/dist/engine/session/import-validate.js +31 -0
  85. package/dist/engine/session/import-validate.js.map +1 -1
  86. package/dist/index.d.ts +1 -1
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +1 -1
  89. package/dist/index.js.map +1 -1
  90. package/dist/prompts/default.d.ts.map +1 -1
  91. package/dist/prompts/default.js.map +1 -1
  92. package/dist/tools/fs/index.d.ts +0 -1
  93. package/dist/tools/fs/index.d.ts.map +1 -1
  94. package/dist/tools/fs/index.js +2 -3
  95. package/dist/tools/fs/index.js.map +1 -1
  96. package/dist/tools/scheduler-tools.d.ts.map +1 -1
  97. package/dist/tools/scheduler-tools.js +71 -16
  98. package/dist/tools/scheduler-tools.js.map +1 -1
  99. package/dist/tools/worktree.d.ts.map +1 -1
  100. package/dist/tools/worktree.js +6 -5
  101. package/dist/tools/worktree.js.map +1 -1
  102. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { brainToRuntime } from "../runtime.js";
2
2
  import { cacheFamilyOf, usageCostMicroUsd } from "./usage-accounting.js";
3
+ import { cutEnginePrefix, cutEngineSegments, flattenableUserText } from "../untrusted-text.js";
3
4
  const SUGGESTION_MAX_CHARS = 200;
4
5
  const SUGGEST_SYSTEM_PROMPT = `You suggest plausible NEXT prompts a user might send to continue this conversation.
5
6
 
@@ -13,8 +14,19 @@ function renderTranscript(messages) {
13
14
  for (const m of messages) {
14
15
  const role = m.role;
15
16
  if (role === "user") {
16
- const content = m.content;
17
- const text = typeof content === "string" ? content : extractText(content);
17
+ const um = m;
18
+ if (um.engineMinted === true || um.provenance === "engine-note")
19
+ continue;
20
+ const content = um.content;
21
+ const flat = flattenableUserText(content);
22
+ let text;
23
+ if (flat === undefined) {
24
+ text = typeof content === "string" ? content : extractText(content);
25
+ }
26
+ else {
27
+ const bySegments = cutEngineSegments(flat, um.engineSegments);
28
+ text = bySegments.malformed ? flat : bySegments.cut ? bySegments.text : cutEnginePrefix(flat, um.enginePrefixChars).text;
29
+ }
18
30
  if (text.trim())
19
31
  lines.push(`USER: ${text.trim()}`);
20
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-suggestions.js","sourceRoot":"","sources":["../../../src/core/runner/prompt-suggestions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt-suggestions.js","sourceRoot":"","sources":["../../../src/core/runner/prompt-suggestions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtask.d.ts","sourceRoot":"","sources":["../../../src/core/runner/runtask.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAQL,KAAK,UAAU,EAEf,KAAK,eAAe,EACpB,KAAK,YAAY,EAGjB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAgC,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOpF,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAavE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAwBlD,OAAO,KAAK,EAAE,eAAe,EAAsC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAwBhJ,eAAO,MAAM,iBAAiB,OAAO,CAAC;AA4HtC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;AAGzE,UAAU,SAAS;IACjB,EAAE,EAAE,UAAU,CAAC;IAQf,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,aAAa,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IAMvH,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IASjD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAgMD,qBAAa,MAAM;IACjB,OAAO,CAAC,IAAI,CAAa;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEhC,OAAO,CAAC,YAAY,CAAoC;IAOxD,OAAO,CAAC,qBAAqB,CAA6B;IAK1D,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAqC;IAYjF,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA+E;IACxH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAQ;gBAElD,IAAI,EAAE,UAAU;IA+E5B,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAS3C,IAAI,YAAY,IAAI;QAAE,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;KAAE,CAU1G;IAOD,IAAI,YAAY,IAAI;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;KAAE,CAsCzF;YAGa,kBAAkB;IA4BhC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU;YAygBzE,SAAS;YA84GT,iBAAiB;YAsGjB,kBAAkB;YAsElB,YAAY;IA0EpB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAmDtE,MAAM,CACV,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,UAAU,CAAC;IAyBhB,YAAY,CAChB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,gBAAgB,EAoB5B,SAAS,CAAC,EAAE,YAAY,GACvB,OAAO,CAAC,UAAU,CAAC;YA+XR,mBAAmB;YAkGnB,kBAAkB;IAqIhC,OAAO,CAAC,sBAAsB;YA6BhB,kBAAkB;IAgDhC,OAAO,CAAC,qBAAqB;IAwD7B,OAAO,CAAC,qBAAqB;YAKf,MAAM;YAoHN,gBAAgB;CAc/B;AAGD,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAE7E;AA8CD,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"runtask.d.ts","sourceRoot":"","sources":["../../../src/core/runner/runtask.ts"],"names":[],"mappings":"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"}
@@ -20,10 +20,10 @@ import { advanceCursorAfterInline } from "../consolidate-scope.js";
20
20
  import { PushQueue } from "../push-queue.js";
21
21
  import { TtlSessionStore } from "../session-store.js";
22
22
  import { toImageContent } from "./image.js";
23
- import { OUTPUT_TOOL_NAME, resolveOutputRetries } from "./synthetic-tools.js";
23
+ import { OUTPUT_TOOL_NAME, SKILLS_LISTING_PROBE_HEADER, resolveOutputRetries } from "./synthetic-tools.js";
24
24
  import { cacheFamilyOf, usageCostMicroUsd } from "./usage-accounting.js";
25
25
  import { assembleResult, errorCodeOf } from "./assemble-result.js";
26
- import { ATTACHMENT_BYTE_CAP, CHANGED_FILES_MAX, advanceCadenceClock, agentListingDeltaHeader, agentListingInitialHeader, collectDateChange, collectDueAttachments, commitAgentListing, createAttachmentState, rebaseCadenceWindows, reduceToolEnd, renderAgentListingDelta, renderMcpInstructionsDelta, renderOrphanedBackgroundTasks, renderToolsDelta, stampWriteAnchor } from "./turn-attachments.js";
26
+ import { ATTACHMENT_BYTE_CAP, CHANGED_FILES_MAX, SKILLS_LISTING_DELTA_HEADER, advanceCadenceClock, agentListingDeltaHeader, agentListingInitialHeader, collectDateChange, collectDueAttachments, commitAgentListing, commitSkillsListing, createAttachmentState, rebaseCadenceWindows, reduceToolEnd, renderAgentListingDelta, renderMcpInstructionsDelta, renderOrphanedBackgroundTasks, renderSkillsListingDelta, renderToolsDelta, stampWriteAnchor } from "./turn-attachments.js";
27
27
  import { prepareTask } from "./prepare-task.js";
28
28
  import { hasVerifiableStructureSignal } from "./grounding-signal.js";
29
29
  import { hasDestroy, isIsolated } from "../remote-env.js";
@@ -34,6 +34,7 @@ import { reconcileInterruptedSession } from "../session-reconcile.js";
34
34
  import { RunnerSharedToolResultStore } from "../tool-result-store.js";
35
35
  import { formatDiagnosticsBlock } from "../lsp-diagnostics.js";
36
36
  import { canonicalToolName } from "../tool-name-aliases.js";
37
+ import { toolPolicyNameSets } from "../tool-policy.js";
37
38
  import { defaultTaskRegistry } from "../task-registry.js";
38
39
  import { discloseDroppedPending, PendingSessionNotifications, renderTaskNotificationXml, SystemInjectionQueue, taskNotificationDedupKey } from "../task-notification.js";
39
40
  import { ToolDetachHub } from "../tool-detach.js";
@@ -289,7 +290,17 @@ export class Runner {
289
290
  : undefined;
290
291
  return {
291
292
  ...(deps.toolPolicy !== undefined
292
- ? { toolPolicy: { check: (req, signal) => deps.toolPolicy.check(req, signal) } }
293
+ ? {
294
+ toolPolicy: (() => {
295
+ const sets = toolPolicyNameSets(deps.toolPolicy);
296
+ const wrapped = {
297
+ check: (req, signal) => deps.toolPolicy.check(req, signal),
298
+ };
299
+ if (sets.length > 0)
300
+ wrapped.nameSets = sets;
301
+ return wrapped;
302
+ })(),
303
+ }
293
304
  : {}),
294
305
  ...(hooks !== undefined ? { hooks } : {}),
295
306
  };
@@ -504,7 +515,7 @@ export class Runner {
504
515
  }
505
516
  const payload = options?.trusted ? formatHookFeedback(text) : text;
506
517
  try {
507
- await h.harness.steer(payload);
518
+ await h.harness.steer(payload, { provenance: "engine-note" });
508
519
  }
509
520
  catch (e) {
510
521
  if (e instanceof Error && e.code === "invalid_state") {
@@ -637,7 +648,9 @@ export class Runner {
637
648
  queue.push({ type: "task_notification", notification: item.payload, ...notificationIdent() });
638
649
  if (notificationHarness) {
639
650
  const xml = renderTaskNotificationXml(item.payload);
640
- const deliver = item.priority === "later" ? notificationHarness.followUp(xml) : notificationHarness.steer(xml);
651
+ const deliver = item.priority === "later"
652
+ ? notificationHarness.followUp(xml, { provenance: "engine-note" })
653
+ : notificationHarness.steer(xml, { provenance: "engine-note" });
641
654
  void deliver.catch(() => {
642
655
  if (notificationSessionId !== undefined)
643
656
  this.pendingSessionNotifications.pend(notificationSessionId, item.payload);
@@ -683,7 +696,7 @@ export class Runner {
683
696
  for (const payload of discloseDroppedPending(pendingIdle)) {
684
697
  deliveredAtTurnOpen.add(taskNotificationDedupKey(payload));
685
698
  queue.push({ type: "task_notification", notification: payload });
686
- void prepared.harness.nextTurn(renderTaskNotificationXml(payload)).catch(() => {
699
+ void prepared.harness.nextTurn(renderTaskNotificationXml(payload), { provenance: "engine-note" }).catch(() => {
687
700
  this.pendingSessionNotifications.pend(prepared.sessionId, payload);
688
701
  });
689
702
  }
@@ -805,7 +818,10 @@ export class Runner {
805
818
  let groundingSignalPreR9 = false;
806
819
  let groundingSignalPostR9 = false;
807
820
  const attachmentsCfg = spec.attachments;
808
- const attachState = attachmentsCfg !== undefined ? createAttachmentState() : undefined;
821
+ const agentListingOn = attachmentsCfg?.agentListing !== false;
822
+ const skillsListingOn = attachmentsCfg?.skillsListing !== false;
823
+ const listingsLive = (agentListingOn && prepared.agentListing !== undefined) || (skillsListingOn && prepared.skillsListing !== undefined);
824
+ const attachState = attachmentsCfg !== undefined || listingsLive ? createAttachmentState() : undefined;
809
825
  const dateState = prepared.dateChange !== undefined ? { announcedDate: prepared.dateChange.legDate } : undefined;
810
826
  let cadenceTurns = 0;
811
827
  let lastTurnHadToolCalls = false;
@@ -825,33 +841,61 @@ export class Runner {
825
841
  catch {
826
842
  }
827
843
  }
828
- if (attachState !== undefined && attachmentsCfg?.agentListing === true && prepared.agentListing?.seedAnnounced === true) {
829
- const listing = prepared.agentListing;
830
- try {
831
- const headers = [agentListingInitialHeader(listing.toolName), agentListingDeltaHeader(listing.toolName)];
832
- const textOf = (m) => {
833
- const c = m.content;
834
- if (typeof c === "string")
835
- return c;
836
- if (Array.isArray(c)) {
837
- return c
838
- .map((b) => (b !== null && typeof b === "object" && b.type === "text" ? String(b.text ?? "") : ""))
839
- .join("\n");
844
+ if (attachState !== undefined &&
845
+ ((agentListingOn && prepared.agentListing?.seedAnnounced === true) ||
846
+ (skillsListingOn && prepared.skillsListing?.seedAnnounced === true))) {
847
+ const cpListings = resume?.cp.state.announcedListings;
848
+ const textOf = (m) => {
849
+ const c = m.content;
850
+ if (typeof c === "string")
851
+ return c;
852
+ if (Array.isArray(c)) {
853
+ return c
854
+ .map((b) => (b !== null && typeof b === "object" && b.type === "text" ? String(b.text ?? "") : ""))
855
+ .join("\n");
856
+ }
857
+ return "";
858
+ };
859
+ let branchTexts = null;
860
+ const branchIncludes = async (headers) => {
861
+ try {
862
+ if (branchTexts === null) {
863
+ const branch = await prepared.session.getBranch();
864
+ branchTexts = branch.flatMap((e) => (e.type === "message" ? [textOf(e.message)] : []));
840
865
  }
841
- return "";
842
- };
843
- const branch = await prepared.session.getBranch();
844
- const delivered = branch.some((e) => {
845
- if (e.type !== "message")
846
- return false;
847
- const text = textOf(e.message);
848
- return headers.some((h) => text.includes(h));
849
- });
850
- if (delivered) {
866
+ return branchTexts.some((text) => headers.some((h) => text.includes(h)));
867
+ }
868
+ catch {
869
+ return false;
870
+ }
871
+ };
872
+ if (agentListingOn && prepared.agentListing?.seedAnnounced === true) {
873
+ const listing = prepared.agentListing;
874
+ if (cpListings?.agents !== undefined) {
875
+ const descOf = new Map(listing.entries.map((e) => [e.name, e.description]));
876
+ attachState.announcedAgentTypes = new Map(cpListings.agents.map((n) => [n, descOf.get(n) ?? ""]));
877
+ prepared.announcedListingsRef.agents = [...cpListings.agents];
878
+ if (cpListings.models !== undefined) {
879
+ attachState.announcedModels = [...cpListings.models];
880
+ prepared.announcedListingsRef.models = [...cpListings.models];
881
+ }
882
+ }
883
+ else if (await branchIncludes([agentListingInitialHeader(listing.toolName), agentListingDeltaHeader(listing.toolName)])) {
851
884
  attachState.announcedAgentTypes = new Map(listing.entries.map((e) => [e.name, e.description]));
885
+ prepared.announcedListingsRef.agents = listing.entries.map((e) => e.name);
852
886
  }
853
887
  }
854
- catch {
888
+ if (skillsListingOn && prepared.skillsListing?.seedAnnounced === true) {
889
+ const listing = prepared.skillsListing;
890
+ if (cpListings?.skills !== undefined) {
891
+ const descOf = new Map(listing.entries.map((e) => [e.name, e.description]));
892
+ attachState.announcedSkills = new Map(cpListings.skills.map((n) => [n, descOf.get(n) ?? ""]));
893
+ prepared.announcedListingsRef.skills = [...cpListings.skills];
894
+ }
895
+ else if (await branchIncludes([SKILLS_LISTING_PROBE_HEADER, SKILLS_LISTING_DELTA_HEADER])) {
896
+ attachState.announcedSkills = new Map(listing.entries.map((e) => [e.name, e.description]));
897
+ prepared.announcedListingsRef.skills = listing.entries.map((e) => e.name);
898
+ }
855
899
  }
856
900
  }
857
901
  if (spec.finalVerification === true && resume !== undefined) {
@@ -1174,7 +1218,7 @@ export class Runner {
1174
1218
  prepared.callCapRef.finalizeMode = true;
1175
1219
  if (!finalizeInjected) {
1176
1220
  const finalizeText = buildFinalizeText();
1177
- void prepared.harness.steer(finalizeText).catch(() => { });
1221
+ void prepared.harness.steer(finalizeText, { engineMinted: true }).catch(() => { });
1178
1222
  finalizeInjected = true;
1179
1223
  nudgeIdx = nudgeSchedule.length;
1180
1224
  queue.push({ type: "steering_injected", source: "finalize", preview: finalizeText.slice(0, 220), ...ident() });
@@ -1503,6 +1547,7 @@ export class Runner {
1503
1547
  return [
1504
1548
  {
1505
1549
  role: "user",
1550
+ engineMinted: true,
1506
1551
  content: "<system-reminder>[final verification] Your tool calls in this run worked with raw bytes, structural parsing, " +
1507
1552
  "or checksum/digest computation — the deliverable very likely embeds verifiable structure (structural fields, an " +
1508
1553
  "embedded checksum-family value, reference data it must match, or a replayable deterministic path). You MUST " +
@@ -1519,6 +1564,7 @@ export class Runner {
1519
1564
  return [
1520
1565
  {
1521
1566
  role: "user",
1567
+ engineMinted: true,
1522
1568
  content: "<system-reminder>[final verification] Before finishing: re-verify the FINAL deliverable through its REAL entry point, " +
1523
1569
  "exactly as the acceptance criteria would exercise it — execute the binary/function/endpoint directly and read the ACTUAL " +
1524
1570
  "output and exit code. Do NOT rely on earlier self-tests, shell redirections, or assumptions (a program that prints to " +
@@ -1565,6 +1611,7 @@ export class Runner {
1565
1611
  if (result?.additionalContext) {
1566
1612
  messages.push({
1567
1613
  role: "user",
1614
+ engineMinted: true,
1568
1615
  content: formatHookFeedback(`Stop hook additional context: ${result.additionalContext}`),
1569
1616
  timestamp: Date.now(),
1570
1617
  });
@@ -1580,7 +1627,12 @@ export class Runner {
1580
1627
  `Check ctx.stopHookActive in the hook and return success while it's true.`), { phase: "hook", sessionId: prepared.sessionId });
1581
1628
  return [];
1582
1629
  }
1583
- messages.push({ role: "user", content: formatHookFeedback(`Stop hook stopped continuation: ${result.block}`), timestamp: Date.now() });
1630
+ messages.push({
1631
+ role: "user",
1632
+ engineMinted: true,
1633
+ content: formatHookFeedback(`Stop hook stopped continuation: ${result.block}`),
1634
+ timestamp: Date.now(),
1635
+ });
1584
1636
  return messages;
1585
1637
  });
1586
1638
  }
@@ -1708,7 +1760,7 @@ export class Runner {
1708
1760
  prepared.callCapRef.finalizeMode = true;
1709
1761
  nudgeIdx = nudgeSchedule.length;
1710
1762
  const finalizeText = buildFinalizeText();
1711
- void prepared.harness.steer(finalizeText).catch(() => { });
1763
+ void prepared.harness.steer(finalizeText, { engineMinted: true }).catch(() => { });
1712
1764
  boundarySteered = true;
1713
1765
  queue.push({ type: "steering_injected", source: "finalize", preview: finalizeText.slice(0, 220), ...ident() });
1714
1766
  }
@@ -1718,7 +1770,7 @@ export class Runner {
1718
1770
  due = nudgeSchedule[nudgeIdx++];
1719
1771
  }
1720
1772
  if (due) {
1721
- void prepared.harness.steer(due.text).catch(() => { });
1773
+ void prepared.harness.steer(due.text, { engineMinted: true }).catch(() => { });
1722
1774
  nudgesSent += 1;
1723
1775
  boundarySteered = true;
1724
1776
  queue.push({ type: "steering_injected", source: "deadline_nudge", preview: due.text.slice(0, 220), ...ident() });
@@ -1769,23 +1821,23 @@ export class Runner {
1769
1821
  if (files.length > 0) {
1770
1822
  queue.push({ type: "diagnostics", files, isNew: true, ...ident() });
1771
1823
  const block = formatDiagnosticsBlock(files);
1772
- void prepared.harness.steer(block).catch(() => undefined);
1824
+ void prepared.harness.steer(block, { provenance: "engine-note" }).catch(() => undefined);
1773
1825
  boundarySteered = true;
1774
1826
  }
1775
1827
  }
1776
1828
  let boundaryAttachmentBytes = 0;
1777
1829
  let attachmentsPayload;
1778
- if ((dateState !== undefined || (attachState !== undefined && attachmentsCfg !== undefined)) &&
1830
+ if ((dateState !== undefined || attachState !== undefined) &&
1779
1831
  !boundarySteered &&
1780
1832
  !finalizeInjected &&
1781
1833
  finalVerifyInjections === 0 &&
1782
1834
  !prepared.abortController.signal.aborted) {
1783
1835
  const due = [];
1784
- if (attachState !== undefined && attachmentsCfg !== undefined) {
1785
- const changedFilesOn = Boolean(attachmentsCfg.changedFiles);
1836
+ if (attachState !== undefined) {
1837
+ const changedFilesOn = Boolean(attachmentsCfg?.changedFiles);
1786
1838
  let changed;
1787
1839
  if (changedFilesOn && prepared.detectExternalChanges !== undefined) {
1788
- const maxFiles = typeof attachmentsCfg.changedFiles === "object"
1840
+ const maxFiles = typeof attachmentsCfg?.changedFiles === "object"
1789
1841
  ? (attachmentsCfg.changedFiles.maxFiles ?? CHANGED_FILES_MAX)
1790
1842
  : CHANGED_FILES_MAX;
1791
1843
  const SCAN_CEILING_MS = 2_000;
@@ -1800,18 +1852,17 @@ export class Runner {
1800
1852
  attachState.surfacedMtime.delete(p);
1801
1853
  changed = scan.changed;
1802
1854
  }
1803
- const backgroundTasksOn = attachmentsCfg.backgroundTasks === true;
1855
+ const backgroundTasksOn = attachmentsCfg?.backgroundTasks === true;
1804
1856
  const bgTasks = backgroundTasksOn && attachState.postCompactPending ? prepared.listBackgroundTasks() : undefined;
1805
- const toolsDeltaOn = attachmentsCfg.toolsDelta === true;
1857
+ const toolsDeltaOn = attachmentsCfg?.toolsDelta === true;
1806
1858
  const pendingTools = toolsDeltaOn && prepared.toolsDeltaRef !== undefined && prepared.toolsDeltaRef.pending.length > 0
1807
1859
  ? [...prepared.toolsDeltaRef.pending]
1808
1860
  : undefined;
1809
- const agentListingOn = attachmentsCfg.agentListing === true;
1810
- const mcpInstructionsOn = attachmentsCfg.mcpInstructions === true;
1861
+ const mcpInstructionsOn = attachmentsCfg?.mcpInstructions === true;
1811
1862
  const mcpDelta = prepared.mcp.instructionsDelta;
1812
1863
  const mcpAdds = mcpInstructionsOn && mcpDelta.pendingAdds.length > 0 ? [...mcpDelta.pendingAdds] : undefined;
1813
1864
  const mcpRemovals = mcpInstructionsOn && mcpDelta.pendingRemovals.length > 0 ? [...mcpDelta.pendingRemovals] : undefined;
1814
- const budgetUsdOn = attachmentsCfg.budgetUsd === true && maxCostMicroUsd !== undefined && lastTurnHadToolCalls;
1865
+ const budgetUsdOn = attachmentsCfg?.budgetUsd === true && maxCostMicroUsd !== undefined && lastTurnHadToolCalls;
1815
1866
  due.push(...collectDueAttachments(attachState, {
1816
1867
  turn: stats.turns,
1817
1868
  cadenceTurn: cadenceTurns,
@@ -1819,14 +1870,15 @@ export class Runner {
1819
1870
  taskListMounted: taskToolsMounted,
1820
1871
  planActive: prepared.planModeRef.active,
1821
1872
  config: {
1822
- todoReminder: attachmentsCfg.todoReminder === true,
1823
- ...(attachmentsCfg.todoReminderMode !== undefined ? { todoReminderMode: attachmentsCfg.todoReminderMode } : {}),
1873
+ todoReminder: attachmentsCfg?.todoReminder === true,
1874
+ ...(attachmentsCfg?.todoReminderMode !== undefined ? { todoReminderMode: attachmentsCfg.todoReminderMode } : {}),
1824
1875
  changedFiles: changedFilesOn,
1825
- planModeReminder: attachmentsCfg.planModeReminder === true,
1876
+ planModeReminder: attachmentsCfg?.planModeReminder === true,
1826
1877
  budgetUsd: budgetUsdOn,
1827
1878
  backgroundTasks: backgroundTasksOn,
1828
1879
  toolsDelta: toolsDeltaOn,
1829
1880
  agentListing: agentListingOn,
1881
+ skillsListing: skillsListingOn,
1830
1882
  mcpInstructions: mcpInstructionsOn,
1831
1883
  },
1832
1884
  ...(changed !== undefined ? { changedFiles: changed } : {}),
@@ -1836,8 +1888,13 @@ export class Runner {
1836
1888
  ...(bgTasks !== undefined ? { backgroundTasks: bgTasks } : {}),
1837
1889
  ...(pendingTools !== undefined ? { newTools: pendingTools } : {}),
1838
1890
  ...(agentListingOn && prepared.agentListing !== undefined
1839
- ? { agentListing: prepared.agentListing.entries, agentToolName: prepared.agentListing.toolName }
1891
+ ? {
1892
+ agentListing: prepared.agentListing.entries,
1893
+ agentToolName: prepared.agentListing.toolName,
1894
+ ...(prepared.agentListing.models !== undefined ? { agentModels: prepared.agentListing.models } : {}),
1895
+ }
1840
1896
  : {}),
1897
+ ...(skillsListingOn && prepared.skillsListing !== undefined ? { skillsListing: prepared.skillsListing.entries } : {}),
1841
1898
  ...(mcpAdds !== undefined || mcpRemovals !== undefined
1842
1899
  ? { mcpInstructions: { added: mcpAdds ?? [], removed: mcpRemovals ?? [] } }
1843
1900
  : {}),
@@ -1854,9 +1911,20 @@ export class Runner {
1854
1911
  }
1855
1912
  if (agentListingOn && prepared.agentListing !== undefined && due.some((a) => a.source === "agent_listing")) {
1856
1913
  const listing = prepared.agentListing;
1857
- const intactBody = renderAgentListingDelta(attachState, listing.entries, listing.toolName);
1914
+ const intactBody = renderAgentListingDelta(attachState, listing.entries, listing.toolName, listing.models);
1858
1915
  if (intactBody !== undefined && due.some((a) => a.source === "agent_listing" && a.body === intactBody)) {
1859
- commitAgentListing(attachState, listing.entries);
1916
+ commitAgentListing(attachState, listing.entries, listing.models);
1917
+ prepared.announcedListingsRef.agents = listing.entries.map((e) => e.name);
1918
+ if (listing.models !== undefined)
1919
+ prepared.announcedListingsRef.models = [...listing.models];
1920
+ }
1921
+ }
1922
+ if (skillsListingOn && prepared.skillsListing !== undefined && due.some((a) => a.source === "skills_listing")) {
1923
+ const listing = prepared.skillsListing;
1924
+ const intactBody = renderSkillsListingDelta(attachState, listing.entries);
1925
+ if (intactBody !== undefined && due.some((a) => a.source === "skills_listing" && a.body === intactBody)) {
1926
+ commitSkillsListing(attachState, listing.entries);
1927
+ prepared.announcedListingsRef.skills = listing.entries.map((e) => e.name);
1860
1928
  }
1861
1929
  }
1862
1930
  }
@@ -1908,7 +1976,7 @@ export class Runner {
1908
1976
  }
1909
1977
  if (attachmentsPayload !== undefined || batchContextBlock !== undefined) {
1910
1978
  const payload = attachmentsPayload !== undefined && batchContextBlock !== undefined ? `${attachmentsPayload}\n${batchContextBlock}` : (attachmentsPayload ?? batchContextBlock);
1911
- void prepared.harness.steer(payload).catch(() => { });
1979
+ void prepared.harness.steer(payload, { engineMinted: true }).catch(() => { });
1912
1980
  }
1913
1981
  const forceManual = manualCompactRef.requested;
1914
1982
  if ((!withinTaskCompaction && !forceManual) ||
@@ -2166,14 +2234,18 @@ export class Runner {
2166
2234
  continuation += "\n\n" + formatHookFeedback(renderOrphanedBackgroundTasks(orphans));
2167
2235
  }
2168
2236
  }
2237
+ const engineSegments = continuation.length > 0 ? [{ start: 0, end: continuation.length }] : [];
2169
2238
  for (const steer of [resume.cp.state.pendingSteer, resume.wakeMessage]) {
2170
- if (steer) {
2171
- continuation +=
2172
- "\n\n" +
2173
- (steer.trusted ? formatHookFeedback(steer.text) : delimitUntrusted("supervisor steering message", steer.text));
2174
- }
2239
+ if (steer === undefined)
2240
+ continue;
2241
+ const start = continuation.length;
2242
+ continuation +=
2243
+ "\n\n" +
2244
+ (steer.trusted ? formatHookFeedback(steer.text) : delimitUntrusted("supervisor steering message", steer.text));
2245
+ if (steer.trusted)
2246
+ engineSegments.push({ start, end: continuation.length });
2175
2247
  }
2176
- final = await withBrainSinks(() => prepared.harness.prompt(continuation));
2248
+ final = await withBrainSinks(() => prepared.harness.prompt(continuation, { engineSegments }));
2177
2249
  }
2178
2250
  }
2179
2251
  else {
@@ -2190,6 +2262,43 @@ export class Runner {
2190
2262
  effectiveObjective = `${formatHookFeedback(decision.additionalContext)}\n\n${spec.objective}`;
2191
2263
  }
2192
2264
  }
2265
+ const firstFrames = [];
2266
+ if (attachState !== undefined) {
2267
+ const attach = attachState;
2268
+ if (agentListingOn && prepared.agentListing !== undefined) {
2269
+ const listing = prepared.agentListing;
2270
+ const body = renderAgentListingDelta(attach, listing.entries, listing.toolName, listing.models);
2271
+ if (body !== undefined) {
2272
+ firstFrames.push({
2273
+ source: "agent_listing",
2274
+ body,
2275
+ commit: () => {
2276
+ commitAgentListing(attach, listing.entries, listing.models);
2277
+ prepared.announcedListingsRef.agents = listing.entries.map((e) => e.name);
2278
+ if (listing.models !== undefined)
2279
+ prepared.announcedListingsRef.models = [...listing.models];
2280
+ },
2281
+ });
2282
+ }
2283
+ }
2284
+ if (skillsListingOn && prepared.skillsListing !== undefined) {
2285
+ const listing = prepared.skillsListing;
2286
+ const body = renderSkillsListingDelta(attach, listing.entries);
2287
+ if (body !== undefined) {
2288
+ firstFrames.push({
2289
+ source: "skills_listing",
2290
+ body,
2291
+ commit: () => {
2292
+ commitSkillsListing(attach, listing.entries);
2293
+ prepared.announcedListingsRef.skills = listing.entries.map((e) => e.name);
2294
+ },
2295
+ });
2296
+ }
2297
+ }
2298
+ if (firstFrames.length > 0) {
2299
+ effectiveObjective = `${firstFrames.map((f) => `<system-reminder>\n${sanitizeUntrustedText(f.body)}\n</system-reminder>`).join("\n")}\n${effectiveObjective}`;
2300
+ }
2301
+ }
2193
2302
  const precallMicroUsd = maxCostMicroUsd === undefined
2194
2303
  ? 0
2195
2304
  : computeCostMicroUsd({
@@ -2209,7 +2318,16 @@ export class Runner {
2209
2318
  const images = spec.images
2210
2319
  ? await Promise.all(spec.images.map((img) => toImageContent(img, this.deps.allowImageUrl)))
2211
2320
  : undefined;
2212
- final = await withBrainSinks(() => prepared.harness.prompt(effectiveObjective, images && images.length > 0 ? { images } : undefined));
2321
+ for (const f of firstFrames) {
2322
+ f.commit();
2323
+ queue.push({ type: "steering_injected", source: f.source, preview: f.body.slice(0, 220), ...ident() });
2324
+ }
2325
+ attachmentsInjected += firstFrames.length;
2326
+ const enginePrefixChars = effectiveObjective.length - spec.objective.length;
2327
+ final = await withBrainSinks(() => prepared.harness.prompt(effectiveObjective, {
2328
+ ...(images && images.length > 0 ? { images } : {}),
2329
+ ...(enginePrefixChars > 0 ? { enginePrefixChars } : {}),
2330
+ }));
2213
2331
  }
2214
2332
  }
2215
2333
  abortedLive = prepared.abortController.signal.aborted;
@@ -3001,7 +3119,7 @@ export class Runner {
3001
3119
  dr.surfacedIds.add(id);
3002
3120
  for (const k of outcome.surfacedKeys)
3003
3121
  dr.surfacedKeys.add(k);
3004
- await prepared.harness.steer(outcome.block);
3122
+ await prepared.harness.steer(outcome.block, { provenance: "engine-note" });
3005
3123
  }
3006
3124
  catch {
3007
3125
  }