@sema-agent/core 1.300.0 → 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.
- package/dist/agents/subagent.d.ts.map +1 -1
- package/dist/agents/subagent.js +124 -50
- package/dist/agents/subagent.js.map +1 -1
- package/dist/core/auto-mode-prompt.d.ts.map +1 -1
- package/dist/core/auto-mode-prompt.js +25 -2
- package/dist/core/auto-mode-prompt.js.map +1 -1
- package/dist/core/checkpoint-store.d.ts +5 -0
- package/dist/core/checkpoint-store.d.ts.map +1 -1
- package/dist/core/checkpoint-store.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +2 -2
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +3 -3
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/file-backend.d.ts.map +1 -1
- package/dist/core/memory-engine/file-backend.js +17 -0
- package/dist/core/memory-engine/file-backend.js.map +1 -1
- package/dist/core/memory-engine/frontmatter.d.ts.map +1 -1
- package/dist/core/memory-engine/frontmatter.js +62 -1
- package/dist/core/memory-engine/frontmatter.js.map +1 -1
- package/dist/core/memory-engine/memory-backend-contract.d.ts.map +1 -1
- package/dist/core/memory-engine/memory-backend-contract.js +45 -0
- package/dist/core/memory-engine/memory-backend-contract.js.map +1 -1
- package/dist/core/memory-engine/sync-client.d.ts.map +1 -1
- package/dist/core/memory-engine/sync-client.js +23 -0
- package/dist/core/memory-engine/sync-client.js.map +1 -1
- package/dist/core/memory-engine/types.d.ts +7 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.d.ts +12 -1
- package/dist/core/runner/prepare-task.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.js +82 -9
- package/dist/core/runner/prepare-task.js.map +1 -1
- package/dist/core/runner/prompt-suggestions.d.ts.map +1 -1
- package/dist/core/runner/prompt-suggestions.js +14 -2
- package/dist/core/runner/prompt-suggestions.js.map +1 -1
- package/dist/core/runner/runtask.d.ts.map +1 -1
- package/dist/core/runner/runtask.js +165 -58
- package/dist/core/runner/runtask.js.map +1 -1
- package/dist/core/runner/synthetic-tools.d.ts +11 -1
- package/dist/core/runner/synthetic-tools.d.ts.map +1 -1
- package/dist/core/runner/synthetic-tools.js +47 -28
- package/dist/core/runner/synthetic-tools.js.map +1 -1
- package/dist/core/runner/turn-attachments.d.ts +14 -3
- package/dist/core/runner/turn-attachments.d.ts.map +1 -1
- package/dist/core/runner/turn-attachments.js +59 -7
- package/dist/core/runner/turn-attachments.js.map +1 -1
- package/dist/core/scheduler.d.ts +5 -0
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/task-registry.d.ts +31 -2
- package/dist/core/task-registry.d.ts.map +1 -1
- package/dist/core/task-registry.js +35 -6
- package/dist/core/task-registry.js.map +1 -1
- package/dist/core/trace.d.ts.map +1 -1
- package/dist/core/trace.js.map +1 -1
- package/dist/core/types.d.ts +8 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/untrusted-text.d.ts +23 -0
- package/dist/core/untrusted-text.d.ts.map +1 -1
- package/dist/core/untrusted-text.js +69 -0
- package/dist/core/untrusted-text.js.map +1 -1
- package/dist/engine/compaction/utils.d.ts.map +1 -1
- package/dist/engine/compaction/utils.js +20 -1
- package/dist/engine/compaction/utils.js.map +1 -1
- package/dist/engine/harness/agent-harness.d.ts +11 -4
- package/dist/engine/harness/agent-harness.d.ts.map +1 -1
- package/dist/engine/harness/agent-harness.js +23 -6
- package/dist/engine/harness/agent-harness.js.map +1 -1
- package/dist/engine/harness/messages.d.ts.map +1 -1
- package/dist/engine/harness/messages.js +1 -0
- package/dist/engine/harness/messages.js.map +1 -1
- package/dist/engine/harness/types.d.ts.map +1 -1
- package/dist/engine/harness/types.js.map +1 -1
- package/dist/engine/llm/types.d.ts +7 -0
- package/dist/engine/llm/types.d.ts.map +1 -1
- package/dist/engine/loop/agent-loop.js +7 -0
- package/dist/engine/loop/agent-loop.js.map +1 -1
- package/dist/engine/loop/types.d.ts +1 -0
- package/dist/engine/loop/types.d.ts.map +1 -1
- package/dist/engine/session/import-validate.d.ts.map +1 -1
- package/dist/engine/session/import-validate.js +31 -0
- package/dist/engine/session/import-validate.js.map +1 -1
- package/dist/prompts/default.d.ts.map +1 -1
- package/dist/prompts/default.js.map +1 -1
- package/dist/tools/scheduler-tools.d.ts.map +1 -1
- package/dist/tools/scheduler-tools.js +71 -16
- package/dist/tools/scheduler-tools.js.map +1 -1
- 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
|
|
17
|
-
|
|
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":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
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;AAyBlD,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,CAmDzF;YAGa,kBAAkB;IA4BhC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU;
|
|
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";
|
|
@@ -515,7 +515,7 @@ export class Runner {
|
|
|
515
515
|
}
|
|
516
516
|
const payload = options?.trusted ? formatHookFeedback(text) : text;
|
|
517
517
|
try {
|
|
518
|
-
await h.harness.steer(payload);
|
|
518
|
+
await h.harness.steer(payload, { provenance: "engine-note" });
|
|
519
519
|
}
|
|
520
520
|
catch (e) {
|
|
521
521
|
if (e instanceof Error && e.code === "invalid_state") {
|
|
@@ -648,7 +648,9 @@ export class Runner {
|
|
|
648
648
|
queue.push({ type: "task_notification", notification: item.payload, ...notificationIdent() });
|
|
649
649
|
if (notificationHarness) {
|
|
650
650
|
const xml = renderTaskNotificationXml(item.payload);
|
|
651
|
-
const deliver = item.priority === "later"
|
|
651
|
+
const deliver = item.priority === "later"
|
|
652
|
+
? notificationHarness.followUp(xml, { provenance: "engine-note" })
|
|
653
|
+
: notificationHarness.steer(xml, { provenance: "engine-note" });
|
|
652
654
|
void deliver.catch(() => {
|
|
653
655
|
if (notificationSessionId !== undefined)
|
|
654
656
|
this.pendingSessionNotifications.pend(notificationSessionId, item.payload);
|
|
@@ -694,7 +696,7 @@ export class Runner {
|
|
|
694
696
|
for (const payload of discloseDroppedPending(pendingIdle)) {
|
|
695
697
|
deliveredAtTurnOpen.add(taskNotificationDedupKey(payload));
|
|
696
698
|
queue.push({ type: "task_notification", notification: payload });
|
|
697
|
-
void prepared.harness.nextTurn(renderTaskNotificationXml(payload)).catch(() => {
|
|
699
|
+
void prepared.harness.nextTurn(renderTaskNotificationXml(payload), { provenance: "engine-note" }).catch(() => {
|
|
698
700
|
this.pendingSessionNotifications.pend(prepared.sessionId, payload);
|
|
699
701
|
});
|
|
700
702
|
}
|
|
@@ -816,7 +818,10 @@ export class Runner {
|
|
|
816
818
|
let groundingSignalPreR9 = false;
|
|
817
819
|
let groundingSignalPostR9 = false;
|
|
818
820
|
const attachmentsCfg = spec.attachments;
|
|
819
|
-
const
|
|
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;
|
|
820
825
|
const dateState = prepared.dateChange !== undefined ? { announcedDate: prepared.dateChange.legDate } : undefined;
|
|
821
826
|
let cadenceTurns = 0;
|
|
822
827
|
let lastTurnHadToolCalls = false;
|
|
@@ -836,33 +841,61 @@ export class Runner {
|
|
|
836
841
|
catch {
|
|
837
842
|
}
|
|
838
843
|
}
|
|
839
|
-
if (attachState !== undefined &&
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
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)] : []));
|
|
851
865
|
}
|
|
852
|
-
return
|
|
853
|
-
}
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
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)])) {
|
|
862
884
|
attachState.announcedAgentTypes = new Map(listing.entries.map((e) => [e.name, e.description]));
|
|
885
|
+
prepared.announcedListingsRef.agents = listing.entries.map((e) => e.name);
|
|
863
886
|
}
|
|
864
887
|
}
|
|
865
|
-
|
|
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
|
+
}
|
|
866
899
|
}
|
|
867
900
|
}
|
|
868
901
|
if (spec.finalVerification === true && resume !== undefined) {
|
|
@@ -1185,7 +1218,7 @@ export class Runner {
|
|
|
1185
1218
|
prepared.callCapRef.finalizeMode = true;
|
|
1186
1219
|
if (!finalizeInjected) {
|
|
1187
1220
|
const finalizeText = buildFinalizeText();
|
|
1188
|
-
void prepared.harness.steer(finalizeText).catch(() => { });
|
|
1221
|
+
void prepared.harness.steer(finalizeText, { engineMinted: true }).catch(() => { });
|
|
1189
1222
|
finalizeInjected = true;
|
|
1190
1223
|
nudgeIdx = nudgeSchedule.length;
|
|
1191
1224
|
queue.push({ type: "steering_injected", source: "finalize", preview: finalizeText.slice(0, 220), ...ident() });
|
|
@@ -1514,6 +1547,7 @@ export class Runner {
|
|
|
1514
1547
|
return [
|
|
1515
1548
|
{
|
|
1516
1549
|
role: "user",
|
|
1550
|
+
engineMinted: true,
|
|
1517
1551
|
content: "<system-reminder>[final verification] Your tool calls in this run worked with raw bytes, structural parsing, " +
|
|
1518
1552
|
"or checksum/digest computation — the deliverable very likely embeds verifiable structure (structural fields, an " +
|
|
1519
1553
|
"embedded checksum-family value, reference data it must match, or a replayable deterministic path). You MUST " +
|
|
@@ -1530,6 +1564,7 @@ export class Runner {
|
|
|
1530
1564
|
return [
|
|
1531
1565
|
{
|
|
1532
1566
|
role: "user",
|
|
1567
|
+
engineMinted: true,
|
|
1533
1568
|
content: "<system-reminder>[final verification] Before finishing: re-verify the FINAL deliverable through its REAL entry point, " +
|
|
1534
1569
|
"exactly as the acceptance criteria would exercise it — execute the binary/function/endpoint directly and read the ACTUAL " +
|
|
1535
1570
|
"output and exit code. Do NOT rely on earlier self-tests, shell redirections, or assumptions (a program that prints to " +
|
|
@@ -1576,6 +1611,7 @@ export class Runner {
|
|
|
1576
1611
|
if (result?.additionalContext) {
|
|
1577
1612
|
messages.push({
|
|
1578
1613
|
role: "user",
|
|
1614
|
+
engineMinted: true,
|
|
1579
1615
|
content: formatHookFeedback(`Stop hook additional context: ${result.additionalContext}`),
|
|
1580
1616
|
timestamp: Date.now(),
|
|
1581
1617
|
});
|
|
@@ -1591,7 +1627,12 @@ export class Runner {
|
|
|
1591
1627
|
`Check ctx.stopHookActive in the hook and return success while it's true.`), { phase: "hook", sessionId: prepared.sessionId });
|
|
1592
1628
|
return [];
|
|
1593
1629
|
}
|
|
1594
|
-
messages.push({
|
|
1630
|
+
messages.push({
|
|
1631
|
+
role: "user",
|
|
1632
|
+
engineMinted: true,
|
|
1633
|
+
content: formatHookFeedback(`Stop hook stopped continuation: ${result.block}`),
|
|
1634
|
+
timestamp: Date.now(),
|
|
1635
|
+
});
|
|
1595
1636
|
return messages;
|
|
1596
1637
|
});
|
|
1597
1638
|
}
|
|
@@ -1719,7 +1760,7 @@ export class Runner {
|
|
|
1719
1760
|
prepared.callCapRef.finalizeMode = true;
|
|
1720
1761
|
nudgeIdx = nudgeSchedule.length;
|
|
1721
1762
|
const finalizeText = buildFinalizeText();
|
|
1722
|
-
void prepared.harness.steer(finalizeText).catch(() => { });
|
|
1763
|
+
void prepared.harness.steer(finalizeText, { engineMinted: true }).catch(() => { });
|
|
1723
1764
|
boundarySteered = true;
|
|
1724
1765
|
queue.push({ type: "steering_injected", source: "finalize", preview: finalizeText.slice(0, 220), ...ident() });
|
|
1725
1766
|
}
|
|
@@ -1729,7 +1770,7 @@ export class Runner {
|
|
|
1729
1770
|
due = nudgeSchedule[nudgeIdx++];
|
|
1730
1771
|
}
|
|
1731
1772
|
if (due) {
|
|
1732
|
-
void prepared.harness.steer(due.text).catch(() => { });
|
|
1773
|
+
void prepared.harness.steer(due.text, { engineMinted: true }).catch(() => { });
|
|
1733
1774
|
nudgesSent += 1;
|
|
1734
1775
|
boundarySteered = true;
|
|
1735
1776
|
queue.push({ type: "steering_injected", source: "deadline_nudge", preview: due.text.slice(0, 220), ...ident() });
|
|
@@ -1780,23 +1821,23 @@ export class Runner {
|
|
|
1780
1821
|
if (files.length > 0) {
|
|
1781
1822
|
queue.push({ type: "diagnostics", files, isNew: true, ...ident() });
|
|
1782
1823
|
const block = formatDiagnosticsBlock(files);
|
|
1783
|
-
void prepared.harness.steer(block).catch(() => undefined);
|
|
1824
|
+
void prepared.harness.steer(block, { provenance: "engine-note" }).catch(() => undefined);
|
|
1784
1825
|
boundarySteered = true;
|
|
1785
1826
|
}
|
|
1786
1827
|
}
|
|
1787
1828
|
let boundaryAttachmentBytes = 0;
|
|
1788
1829
|
let attachmentsPayload;
|
|
1789
|
-
if ((dateState !== undefined ||
|
|
1830
|
+
if ((dateState !== undefined || attachState !== undefined) &&
|
|
1790
1831
|
!boundarySteered &&
|
|
1791
1832
|
!finalizeInjected &&
|
|
1792
1833
|
finalVerifyInjections === 0 &&
|
|
1793
1834
|
!prepared.abortController.signal.aborted) {
|
|
1794
1835
|
const due = [];
|
|
1795
|
-
if (attachState !== undefined
|
|
1796
|
-
const changedFilesOn = Boolean(attachmentsCfg
|
|
1836
|
+
if (attachState !== undefined) {
|
|
1837
|
+
const changedFilesOn = Boolean(attachmentsCfg?.changedFiles);
|
|
1797
1838
|
let changed;
|
|
1798
1839
|
if (changedFilesOn && prepared.detectExternalChanges !== undefined) {
|
|
1799
|
-
const maxFiles = typeof attachmentsCfg
|
|
1840
|
+
const maxFiles = typeof attachmentsCfg?.changedFiles === "object"
|
|
1800
1841
|
? (attachmentsCfg.changedFiles.maxFiles ?? CHANGED_FILES_MAX)
|
|
1801
1842
|
: CHANGED_FILES_MAX;
|
|
1802
1843
|
const SCAN_CEILING_MS = 2_000;
|
|
@@ -1811,18 +1852,17 @@ export class Runner {
|
|
|
1811
1852
|
attachState.surfacedMtime.delete(p);
|
|
1812
1853
|
changed = scan.changed;
|
|
1813
1854
|
}
|
|
1814
|
-
const backgroundTasksOn = attachmentsCfg
|
|
1855
|
+
const backgroundTasksOn = attachmentsCfg?.backgroundTasks === true;
|
|
1815
1856
|
const bgTasks = backgroundTasksOn && attachState.postCompactPending ? prepared.listBackgroundTasks() : undefined;
|
|
1816
|
-
const toolsDeltaOn = attachmentsCfg
|
|
1857
|
+
const toolsDeltaOn = attachmentsCfg?.toolsDelta === true;
|
|
1817
1858
|
const pendingTools = toolsDeltaOn && prepared.toolsDeltaRef !== undefined && prepared.toolsDeltaRef.pending.length > 0
|
|
1818
1859
|
? [...prepared.toolsDeltaRef.pending]
|
|
1819
1860
|
: undefined;
|
|
1820
|
-
const
|
|
1821
|
-
const mcpInstructionsOn = attachmentsCfg.mcpInstructions === true;
|
|
1861
|
+
const mcpInstructionsOn = attachmentsCfg?.mcpInstructions === true;
|
|
1822
1862
|
const mcpDelta = prepared.mcp.instructionsDelta;
|
|
1823
1863
|
const mcpAdds = mcpInstructionsOn && mcpDelta.pendingAdds.length > 0 ? [...mcpDelta.pendingAdds] : undefined;
|
|
1824
1864
|
const mcpRemovals = mcpInstructionsOn && mcpDelta.pendingRemovals.length > 0 ? [...mcpDelta.pendingRemovals] : undefined;
|
|
1825
|
-
const budgetUsdOn = attachmentsCfg
|
|
1865
|
+
const budgetUsdOn = attachmentsCfg?.budgetUsd === true && maxCostMicroUsd !== undefined && lastTurnHadToolCalls;
|
|
1826
1866
|
due.push(...collectDueAttachments(attachState, {
|
|
1827
1867
|
turn: stats.turns,
|
|
1828
1868
|
cadenceTurn: cadenceTurns,
|
|
@@ -1830,14 +1870,15 @@ export class Runner {
|
|
|
1830
1870
|
taskListMounted: taskToolsMounted,
|
|
1831
1871
|
planActive: prepared.planModeRef.active,
|
|
1832
1872
|
config: {
|
|
1833
|
-
todoReminder: attachmentsCfg
|
|
1834
|
-
...(attachmentsCfg
|
|
1873
|
+
todoReminder: attachmentsCfg?.todoReminder === true,
|
|
1874
|
+
...(attachmentsCfg?.todoReminderMode !== undefined ? { todoReminderMode: attachmentsCfg.todoReminderMode } : {}),
|
|
1835
1875
|
changedFiles: changedFilesOn,
|
|
1836
|
-
planModeReminder: attachmentsCfg
|
|
1876
|
+
planModeReminder: attachmentsCfg?.planModeReminder === true,
|
|
1837
1877
|
budgetUsd: budgetUsdOn,
|
|
1838
1878
|
backgroundTasks: backgroundTasksOn,
|
|
1839
1879
|
toolsDelta: toolsDeltaOn,
|
|
1840
1880
|
agentListing: agentListingOn,
|
|
1881
|
+
skillsListing: skillsListingOn,
|
|
1841
1882
|
mcpInstructions: mcpInstructionsOn,
|
|
1842
1883
|
},
|
|
1843
1884
|
...(changed !== undefined ? { changedFiles: changed } : {}),
|
|
@@ -1847,8 +1888,13 @@ export class Runner {
|
|
|
1847
1888
|
...(bgTasks !== undefined ? { backgroundTasks: bgTasks } : {}),
|
|
1848
1889
|
...(pendingTools !== undefined ? { newTools: pendingTools } : {}),
|
|
1849
1890
|
...(agentListingOn && prepared.agentListing !== undefined
|
|
1850
|
-
? {
|
|
1891
|
+
? {
|
|
1892
|
+
agentListing: prepared.agentListing.entries,
|
|
1893
|
+
agentToolName: prepared.agentListing.toolName,
|
|
1894
|
+
...(prepared.agentListing.models !== undefined ? { agentModels: prepared.agentListing.models } : {}),
|
|
1895
|
+
}
|
|
1851
1896
|
: {}),
|
|
1897
|
+
...(skillsListingOn && prepared.skillsListing !== undefined ? { skillsListing: prepared.skillsListing.entries } : {}),
|
|
1852
1898
|
...(mcpAdds !== undefined || mcpRemovals !== undefined
|
|
1853
1899
|
? { mcpInstructions: { added: mcpAdds ?? [], removed: mcpRemovals ?? [] } }
|
|
1854
1900
|
: {}),
|
|
@@ -1865,9 +1911,20 @@ export class Runner {
|
|
|
1865
1911
|
}
|
|
1866
1912
|
if (agentListingOn && prepared.agentListing !== undefined && due.some((a) => a.source === "agent_listing")) {
|
|
1867
1913
|
const listing = prepared.agentListing;
|
|
1868
|
-
const intactBody = renderAgentListingDelta(attachState, listing.entries, listing.toolName);
|
|
1914
|
+
const intactBody = renderAgentListingDelta(attachState, listing.entries, listing.toolName, listing.models);
|
|
1869
1915
|
if (intactBody !== undefined && due.some((a) => a.source === "agent_listing" && a.body === intactBody)) {
|
|
1870
|
-
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);
|
|
1871
1928
|
}
|
|
1872
1929
|
}
|
|
1873
1930
|
}
|
|
@@ -1919,7 +1976,7 @@ export class Runner {
|
|
|
1919
1976
|
}
|
|
1920
1977
|
if (attachmentsPayload !== undefined || batchContextBlock !== undefined) {
|
|
1921
1978
|
const payload = attachmentsPayload !== undefined && batchContextBlock !== undefined ? `${attachmentsPayload}\n${batchContextBlock}` : (attachmentsPayload ?? batchContextBlock);
|
|
1922
|
-
void prepared.harness.steer(payload).catch(() => { });
|
|
1979
|
+
void prepared.harness.steer(payload, { engineMinted: true }).catch(() => { });
|
|
1923
1980
|
}
|
|
1924
1981
|
const forceManual = manualCompactRef.requested;
|
|
1925
1982
|
if ((!withinTaskCompaction && !forceManual) ||
|
|
@@ -2177,14 +2234,18 @@ export class Runner {
|
|
|
2177
2234
|
continuation += "\n\n" + formatHookFeedback(renderOrphanedBackgroundTasks(orphans));
|
|
2178
2235
|
}
|
|
2179
2236
|
}
|
|
2237
|
+
const engineSegments = continuation.length > 0 ? [{ start: 0, end: continuation.length }] : [];
|
|
2180
2238
|
for (const steer of [resume.cp.state.pendingSteer, resume.wakeMessage]) {
|
|
2181
|
-
if (steer)
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
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 });
|
|
2186
2247
|
}
|
|
2187
|
-
final = await withBrainSinks(() => prepared.harness.prompt(continuation));
|
|
2248
|
+
final = await withBrainSinks(() => prepared.harness.prompt(continuation, { engineSegments }));
|
|
2188
2249
|
}
|
|
2189
2250
|
}
|
|
2190
2251
|
else {
|
|
@@ -2201,6 +2262,43 @@ export class Runner {
|
|
|
2201
2262
|
effectiveObjective = `${formatHookFeedback(decision.additionalContext)}\n\n${spec.objective}`;
|
|
2202
2263
|
}
|
|
2203
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
|
+
}
|
|
2204
2302
|
const precallMicroUsd = maxCostMicroUsd === undefined
|
|
2205
2303
|
? 0
|
|
2206
2304
|
: computeCostMicroUsd({
|
|
@@ -2220,7 +2318,16 @@ export class Runner {
|
|
|
2220
2318
|
const images = spec.images
|
|
2221
2319
|
? await Promise.all(spec.images.map((img) => toImageContent(img, this.deps.allowImageUrl)))
|
|
2222
2320
|
: undefined;
|
|
2223
|
-
|
|
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
|
+
}));
|
|
2224
2331
|
}
|
|
2225
2332
|
}
|
|
2226
2333
|
abortedLive = prepared.abortController.signal.aborted;
|
|
@@ -3012,7 +3119,7 @@ export class Runner {
|
|
|
3012
3119
|
dr.surfacedIds.add(id);
|
|
3013
3120
|
for (const k of outcome.surfacedKeys)
|
|
3014
3121
|
dr.surfacedKeys.add(k);
|
|
3015
|
-
await prepared.harness.steer(outcome.block);
|
|
3122
|
+
await prepared.harness.steer(outcome.block, { provenance: "engine-note" });
|
|
3016
3123
|
}
|
|
3017
3124
|
catch {
|
|
3018
3125
|
}
|