@sema-agent/core 1.300.0 → 1.302.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 +17 -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 +34 -1
- 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 +8 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.d.ts +16 -1
- package/dist/core/runner/prepare-task.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.js +109 -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 +190 -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 +32 -3
- package/dist/core/runner/turn-attachments.d.ts.map +1 -1
- package/dist/core/runner/turn-attachments.js +146 -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 +17 -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, collectInstructionsChange, commitAgentListing, commitInstructionsChange, 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,8 +818,15 @@ 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;
|
|
826
|
+
const instrProbe = this.deps.probeInstructionSources;
|
|
827
|
+
const instrState = instrProbe !== undefined && prepared.instructionSources !== undefined && prepared.instructionSources.length > 0
|
|
828
|
+
? { lastAnnouncedHash: new Map(prepared.instructionSources.map((s) => [s.path, s.contentHash])) }
|
|
829
|
+
: undefined;
|
|
821
830
|
let cadenceTurns = 0;
|
|
822
831
|
let lastTurnHadToolCalls = false;
|
|
823
832
|
if (attachState !== undefined && attachmentsCfg?.backgroundTasks === true) {
|
|
@@ -836,33 +845,61 @@ export class Runner {
|
|
|
836
845
|
catch {
|
|
837
846
|
}
|
|
838
847
|
}
|
|
839
|
-
if (attachState !== undefined &&
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
848
|
+
if (attachState !== undefined &&
|
|
849
|
+
((agentListingOn && prepared.agentListing?.seedAnnounced === true) ||
|
|
850
|
+
(skillsListingOn && prepared.skillsListing?.seedAnnounced === true))) {
|
|
851
|
+
const cpListings = resume?.cp.state.announcedListings;
|
|
852
|
+
const textOf = (m) => {
|
|
853
|
+
const c = m.content;
|
|
854
|
+
if (typeof c === "string")
|
|
855
|
+
return c;
|
|
856
|
+
if (Array.isArray(c)) {
|
|
857
|
+
return c
|
|
858
|
+
.map((b) => (b !== null && typeof b === "object" && b.type === "text" ? String(b.text ?? "") : ""))
|
|
859
|
+
.join("\n");
|
|
860
|
+
}
|
|
861
|
+
return "";
|
|
862
|
+
};
|
|
863
|
+
let branchTexts = null;
|
|
864
|
+
const branchIncludes = async (headers) => {
|
|
865
|
+
try {
|
|
866
|
+
if (branchTexts === null) {
|
|
867
|
+
const branch = await prepared.session.getBranch();
|
|
868
|
+
branchTexts = branch.flatMap((e) => (e.type === "message" ? [textOf(e.message)] : []));
|
|
851
869
|
}
|
|
852
|
-
return
|
|
853
|
-
}
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
870
|
+
return branchTexts.some((text) => headers.some((h) => text.includes(h)));
|
|
871
|
+
}
|
|
872
|
+
catch {
|
|
873
|
+
return false;
|
|
874
|
+
}
|
|
875
|
+
};
|
|
876
|
+
if (agentListingOn && prepared.agentListing?.seedAnnounced === true) {
|
|
877
|
+
const listing = prepared.agentListing;
|
|
878
|
+
if (cpListings?.agents !== undefined) {
|
|
879
|
+
const descOf = new Map(listing.entries.map((e) => [e.name, e.description]));
|
|
880
|
+
attachState.announcedAgentTypes = new Map(cpListings.agents.map((n) => [n, descOf.get(n) ?? ""]));
|
|
881
|
+
prepared.announcedListingsRef.agents = [...cpListings.agents];
|
|
882
|
+
if (cpListings.models !== undefined) {
|
|
883
|
+
attachState.announcedModels = [...cpListings.models];
|
|
884
|
+
prepared.announcedListingsRef.models = [...cpListings.models];
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
else if (await branchIncludes([agentListingInitialHeader(listing.toolName), agentListingDeltaHeader(listing.toolName)])) {
|
|
862
888
|
attachState.announcedAgentTypes = new Map(listing.entries.map((e) => [e.name, e.description]));
|
|
889
|
+
prepared.announcedListingsRef.agents = listing.entries.map((e) => e.name);
|
|
863
890
|
}
|
|
864
891
|
}
|
|
865
|
-
|
|
892
|
+
if (skillsListingOn && prepared.skillsListing?.seedAnnounced === true) {
|
|
893
|
+
const listing = prepared.skillsListing;
|
|
894
|
+
if (cpListings?.skills !== undefined) {
|
|
895
|
+
const descOf = new Map(listing.entries.map((e) => [e.name, e.description]));
|
|
896
|
+
attachState.announcedSkills = new Map(cpListings.skills.map((n) => [n, descOf.get(n) ?? ""]));
|
|
897
|
+
prepared.announcedListingsRef.skills = [...cpListings.skills];
|
|
898
|
+
}
|
|
899
|
+
else if (await branchIncludes([SKILLS_LISTING_PROBE_HEADER, SKILLS_LISTING_DELTA_HEADER])) {
|
|
900
|
+
attachState.announcedSkills = new Map(listing.entries.map((e) => [e.name, e.description]));
|
|
901
|
+
prepared.announcedListingsRef.skills = listing.entries.map((e) => e.name);
|
|
902
|
+
}
|
|
866
903
|
}
|
|
867
904
|
}
|
|
868
905
|
if (spec.finalVerification === true && resume !== undefined) {
|
|
@@ -1185,7 +1222,7 @@ export class Runner {
|
|
|
1185
1222
|
prepared.callCapRef.finalizeMode = true;
|
|
1186
1223
|
if (!finalizeInjected) {
|
|
1187
1224
|
const finalizeText = buildFinalizeText();
|
|
1188
|
-
void prepared.harness.steer(finalizeText).catch(() => { });
|
|
1225
|
+
void prepared.harness.steer(finalizeText, { engineMinted: true }).catch(() => { });
|
|
1189
1226
|
finalizeInjected = true;
|
|
1190
1227
|
nudgeIdx = nudgeSchedule.length;
|
|
1191
1228
|
queue.push({ type: "steering_injected", source: "finalize", preview: finalizeText.slice(0, 220), ...ident() });
|
|
@@ -1514,6 +1551,7 @@ export class Runner {
|
|
|
1514
1551
|
return [
|
|
1515
1552
|
{
|
|
1516
1553
|
role: "user",
|
|
1554
|
+
engineMinted: true,
|
|
1517
1555
|
content: "<system-reminder>[final verification] Your tool calls in this run worked with raw bytes, structural parsing, " +
|
|
1518
1556
|
"or checksum/digest computation — the deliverable very likely embeds verifiable structure (structural fields, an " +
|
|
1519
1557
|
"embedded checksum-family value, reference data it must match, or a replayable deterministic path). You MUST " +
|
|
@@ -1530,6 +1568,7 @@ export class Runner {
|
|
|
1530
1568
|
return [
|
|
1531
1569
|
{
|
|
1532
1570
|
role: "user",
|
|
1571
|
+
engineMinted: true,
|
|
1533
1572
|
content: "<system-reminder>[final verification] Before finishing: re-verify the FINAL deliverable through its REAL entry point, " +
|
|
1534
1573
|
"exactly as the acceptance criteria would exercise it — execute the binary/function/endpoint directly and read the ACTUAL " +
|
|
1535
1574
|
"output and exit code. Do NOT rely on earlier self-tests, shell redirections, or assumptions (a program that prints to " +
|
|
@@ -1576,6 +1615,7 @@ export class Runner {
|
|
|
1576
1615
|
if (result?.additionalContext) {
|
|
1577
1616
|
messages.push({
|
|
1578
1617
|
role: "user",
|
|
1618
|
+
engineMinted: true,
|
|
1579
1619
|
content: formatHookFeedback(`Stop hook additional context: ${result.additionalContext}`),
|
|
1580
1620
|
timestamp: Date.now(),
|
|
1581
1621
|
});
|
|
@@ -1591,7 +1631,12 @@ export class Runner {
|
|
|
1591
1631
|
`Check ctx.stopHookActive in the hook and return success while it's true.`), { phase: "hook", sessionId: prepared.sessionId });
|
|
1592
1632
|
return [];
|
|
1593
1633
|
}
|
|
1594
|
-
messages.push({
|
|
1634
|
+
messages.push({
|
|
1635
|
+
role: "user",
|
|
1636
|
+
engineMinted: true,
|
|
1637
|
+
content: formatHookFeedback(`Stop hook stopped continuation: ${result.block}`),
|
|
1638
|
+
timestamp: Date.now(),
|
|
1639
|
+
});
|
|
1595
1640
|
return messages;
|
|
1596
1641
|
});
|
|
1597
1642
|
}
|
|
@@ -1719,7 +1764,7 @@ export class Runner {
|
|
|
1719
1764
|
prepared.callCapRef.finalizeMode = true;
|
|
1720
1765
|
nudgeIdx = nudgeSchedule.length;
|
|
1721
1766
|
const finalizeText = buildFinalizeText();
|
|
1722
|
-
void prepared.harness.steer(finalizeText).catch(() => { });
|
|
1767
|
+
void prepared.harness.steer(finalizeText, { engineMinted: true }).catch(() => { });
|
|
1723
1768
|
boundarySteered = true;
|
|
1724
1769
|
queue.push({ type: "steering_injected", source: "finalize", preview: finalizeText.slice(0, 220), ...ident() });
|
|
1725
1770
|
}
|
|
@@ -1729,7 +1774,7 @@ export class Runner {
|
|
|
1729
1774
|
due = nudgeSchedule[nudgeIdx++];
|
|
1730
1775
|
}
|
|
1731
1776
|
if (due) {
|
|
1732
|
-
void prepared.harness.steer(due.text).catch(() => { });
|
|
1777
|
+
void prepared.harness.steer(due.text, { engineMinted: true }).catch(() => { });
|
|
1733
1778
|
nudgesSent += 1;
|
|
1734
1779
|
boundarySteered = true;
|
|
1735
1780
|
queue.push({ type: "steering_injected", source: "deadline_nudge", preview: due.text.slice(0, 220), ...ident() });
|
|
@@ -1780,23 +1825,23 @@ export class Runner {
|
|
|
1780
1825
|
if (files.length > 0) {
|
|
1781
1826
|
queue.push({ type: "diagnostics", files, isNew: true, ...ident() });
|
|
1782
1827
|
const block = formatDiagnosticsBlock(files);
|
|
1783
|
-
void prepared.harness.steer(block).catch(() => undefined);
|
|
1828
|
+
void prepared.harness.steer(block, { provenance: "engine-note" }).catch(() => undefined);
|
|
1784
1829
|
boundarySteered = true;
|
|
1785
1830
|
}
|
|
1786
1831
|
}
|
|
1787
1832
|
let boundaryAttachmentBytes = 0;
|
|
1788
1833
|
let attachmentsPayload;
|
|
1789
|
-
if ((dateState !== undefined ||
|
|
1834
|
+
if ((dateState !== undefined || instrState !== undefined || attachState !== undefined) &&
|
|
1790
1835
|
!boundarySteered &&
|
|
1791
1836
|
!finalizeInjected &&
|
|
1792
1837
|
finalVerifyInjections === 0 &&
|
|
1793
1838
|
!prepared.abortController.signal.aborted) {
|
|
1794
1839
|
const due = [];
|
|
1795
|
-
if (attachState !== undefined
|
|
1796
|
-
const changedFilesOn = Boolean(attachmentsCfg
|
|
1840
|
+
if (attachState !== undefined) {
|
|
1841
|
+
const changedFilesOn = Boolean(attachmentsCfg?.changedFiles);
|
|
1797
1842
|
let changed;
|
|
1798
1843
|
if (changedFilesOn && prepared.detectExternalChanges !== undefined) {
|
|
1799
|
-
const maxFiles = typeof attachmentsCfg
|
|
1844
|
+
const maxFiles = typeof attachmentsCfg?.changedFiles === "object"
|
|
1800
1845
|
? (attachmentsCfg.changedFiles.maxFiles ?? CHANGED_FILES_MAX)
|
|
1801
1846
|
: CHANGED_FILES_MAX;
|
|
1802
1847
|
const SCAN_CEILING_MS = 2_000;
|
|
@@ -1811,18 +1856,17 @@ export class Runner {
|
|
|
1811
1856
|
attachState.surfacedMtime.delete(p);
|
|
1812
1857
|
changed = scan.changed;
|
|
1813
1858
|
}
|
|
1814
|
-
const backgroundTasksOn = attachmentsCfg
|
|
1859
|
+
const backgroundTasksOn = attachmentsCfg?.backgroundTasks === true;
|
|
1815
1860
|
const bgTasks = backgroundTasksOn && attachState.postCompactPending ? prepared.listBackgroundTasks() : undefined;
|
|
1816
|
-
const toolsDeltaOn = attachmentsCfg
|
|
1861
|
+
const toolsDeltaOn = attachmentsCfg?.toolsDelta === true;
|
|
1817
1862
|
const pendingTools = toolsDeltaOn && prepared.toolsDeltaRef !== undefined && prepared.toolsDeltaRef.pending.length > 0
|
|
1818
1863
|
? [...prepared.toolsDeltaRef.pending]
|
|
1819
1864
|
: undefined;
|
|
1820
|
-
const
|
|
1821
|
-
const mcpInstructionsOn = attachmentsCfg.mcpInstructions === true;
|
|
1865
|
+
const mcpInstructionsOn = attachmentsCfg?.mcpInstructions === true;
|
|
1822
1866
|
const mcpDelta = prepared.mcp.instructionsDelta;
|
|
1823
1867
|
const mcpAdds = mcpInstructionsOn && mcpDelta.pendingAdds.length > 0 ? [...mcpDelta.pendingAdds] : undefined;
|
|
1824
1868
|
const mcpRemovals = mcpInstructionsOn && mcpDelta.pendingRemovals.length > 0 ? [...mcpDelta.pendingRemovals] : undefined;
|
|
1825
|
-
const budgetUsdOn = attachmentsCfg
|
|
1869
|
+
const budgetUsdOn = attachmentsCfg?.budgetUsd === true && maxCostMicroUsd !== undefined && lastTurnHadToolCalls;
|
|
1826
1870
|
due.push(...collectDueAttachments(attachState, {
|
|
1827
1871
|
turn: stats.turns,
|
|
1828
1872
|
cadenceTurn: cadenceTurns,
|
|
@@ -1830,14 +1874,15 @@ export class Runner {
|
|
|
1830
1874
|
taskListMounted: taskToolsMounted,
|
|
1831
1875
|
planActive: prepared.planModeRef.active,
|
|
1832
1876
|
config: {
|
|
1833
|
-
todoReminder: attachmentsCfg
|
|
1834
|
-
...(attachmentsCfg
|
|
1877
|
+
todoReminder: attachmentsCfg?.todoReminder === true,
|
|
1878
|
+
...(attachmentsCfg?.todoReminderMode !== undefined ? { todoReminderMode: attachmentsCfg.todoReminderMode } : {}),
|
|
1835
1879
|
changedFiles: changedFilesOn,
|
|
1836
|
-
planModeReminder: attachmentsCfg
|
|
1880
|
+
planModeReminder: attachmentsCfg?.planModeReminder === true,
|
|
1837
1881
|
budgetUsd: budgetUsdOn,
|
|
1838
1882
|
backgroundTasks: backgroundTasksOn,
|
|
1839
1883
|
toolsDelta: toolsDeltaOn,
|
|
1840
1884
|
agentListing: agentListingOn,
|
|
1885
|
+
skillsListing: skillsListingOn,
|
|
1841
1886
|
mcpInstructions: mcpInstructionsOn,
|
|
1842
1887
|
},
|
|
1843
1888
|
...(changed !== undefined ? { changedFiles: changed } : {}),
|
|
@@ -1847,8 +1892,13 @@ export class Runner {
|
|
|
1847
1892
|
...(bgTasks !== undefined ? { backgroundTasks: bgTasks } : {}),
|
|
1848
1893
|
...(pendingTools !== undefined ? { newTools: pendingTools } : {}),
|
|
1849
1894
|
...(agentListingOn && prepared.agentListing !== undefined
|
|
1850
|
-
? {
|
|
1895
|
+
? {
|
|
1896
|
+
agentListing: prepared.agentListing.entries,
|
|
1897
|
+
agentToolName: prepared.agentListing.toolName,
|
|
1898
|
+
...(prepared.agentListing.models !== undefined ? { agentModels: prepared.agentListing.models } : {}),
|
|
1899
|
+
}
|
|
1851
1900
|
: {}),
|
|
1901
|
+
...(skillsListingOn && prepared.skillsListing !== undefined ? { skillsListing: prepared.skillsListing.entries } : {}),
|
|
1852
1902
|
...(mcpAdds !== undefined || mcpRemovals !== undefined
|
|
1853
1903
|
? { mcpInstructions: { added: mcpAdds ?? [], removed: mcpRemovals ?? [] } }
|
|
1854
1904
|
: {}),
|
|
@@ -1865,9 +1915,20 @@ export class Runner {
|
|
|
1865
1915
|
}
|
|
1866
1916
|
if (agentListingOn && prepared.agentListing !== undefined && due.some((a) => a.source === "agent_listing")) {
|
|
1867
1917
|
const listing = prepared.agentListing;
|
|
1868
|
-
const intactBody = renderAgentListingDelta(attachState, listing.entries, listing.toolName);
|
|
1918
|
+
const intactBody = renderAgentListingDelta(attachState, listing.entries, listing.toolName, listing.models);
|
|
1869
1919
|
if (intactBody !== undefined && due.some((a) => a.source === "agent_listing" && a.body === intactBody)) {
|
|
1870
|
-
commitAgentListing(attachState, listing.entries);
|
|
1920
|
+
commitAgentListing(attachState, listing.entries, listing.models);
|
|
1921
|
+
prepared.announcedListingsRef.agents = listing.entries.map((e) => e.name);
|
|
1922
|
+
if (listing.models !== undefined)
|
|
1923
|
+
prepared.announcedListingsRef.models = [...listing.models];
|
|
1924
|
+
}
|
|
1925
|
+
}
|
|
1926
|
+
if (skillsListingOn && prepared.skillsListing !== undefined && due.some((a) => a.source === "skills_listing")) {
|
|
1927
|
+
const listing = prepared.skillsListing;
|
|
1928
|
+
const intactBody = renderSkillsListingDelta(attachState, listing.entries);
|
|
1929
|
+
if (intactBody !== undefined && due.some((a) => a.source === "skills_listing" && a.body === intactBody)) {
|
|
1930
|
+
commitSkillsListing(attachState, listing.entries);
|
|
1931
|
+
prepared.announcedListingsRef.skills = listing.entries.map((e) => e.name);
|
|
1871
1932
|
}
|
|
1872
1933
|
}
|
|
1873
1934
|
}
|
|
@@ -1879,6 +1940,27 @@ export class Runner {
|
|
|
1879
1940
|
dateState.announcedDate = today;
|
|
1880
1941
|
}
|
|
1881
1942
|
}
|
|
1943
|
+
if (instrState !== undefined && instrProbe !== undefined && lastTurnHadToolCalls) {
|
|
1944
|
+
let probed = null;
|
|
1945
|
+
try {
|
|
1946
|
+
const PROBE_CEILING_MS = 2_000;
|
|
1947
|
+
probed = await Promise.race([
|
|
1948
|
+
instrProbe(prepared.instructionSources),
|
|
1949
|
+
new Promise((resolve) => {
|
|
1950
|
+
const t = setTimeout(() => resolve(null), PROBE_CEILING_MS);
|
|
1951
|
+
t.unref?.();
|
|
1952
|
+
}),
|
|
1953
|
+
]);
|
|
1954
|
+
}
|
|
1955
|
+
catch {
|
|
1956
|
+
probed = null;
|
|
1957
|
+
}
|
|
1958
|
+
const cand = collectInstructionsChange(instrState, probed);
|
|
1959
|
+
if (cand !== undefined) {
|
|
1960
|
+
due.splice(due.length > 0 && due[0].source === "date_change" ? 1 : 0, 0, cand.attachment);
|
|
1961
|
+
commitInstructionsChange(instrState, cand.announced);
|
|
1962
|
+
}
|
|
1963
|
+
}
|
|
1882
1964
|
if (due.length > 0) {
|
|
1883
1965
|
attachmentsPayload = due.map((a) => `<system-reminder>\n${sanitizeUntrustedText(a.body)}\n</system-reminder>`).join("\n");
|
|
1884
1966
|
for (const a of due)
|
|
@@ -1919,7 +2001,7 @@ export class Runner {
|
|
|
1919
2001
|
}
|
|
1920
2002
|
if (attachmentsPayload !== undefined || batchContextBlock !== undefined) {
|
|
1921
2003
|
const payload = attachmentsPayload !== undefined && batchContextBlock !== undefined ? `${attachmentsPayload}\n${batchContextBlock}` : (attachmentsPayload ?? batchContextBlock);
|
|
1922
|
-
void prepared.harness.steer(payload).catch(() => { });
|
|
2004
|
+
void prepared.harness.steer(payload, { engineMinted: true }).catch(() => { });
|
|
1923
2005
|
}
|
|
1924
2006
|
const forceManual = manualCompactRef.requested;
|
|
1925
2007
|
if ((!withinTaskCompaction && !forceManual) ||
|
|
@@ -2177,14 +2259,18 @@ export class Runner {
|
|
|
2177
2259
|
continuation += "\n\n" + formatHookFeedback(renderOrphanedBackgroundTasks(orphans));
|
|
2178
2260
|
}
|
|
2179
2261
|
}
|
|
2262
|
+
const engineSegments = continuation.length > 0 ? [{ start: 0, end: continuation.length }] : [];
|
|
2180
2263
|
for (const steer of [resume.cp.state.pendingSteer, resume.wakeMessage]) {
|
|
2181
|
-
if (steer)
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2264
|
+
if (steer === undefined)
|
|
2265
|
+
continue;
|
|
2266
|
+
const start = continuation.length;
|
|
2267
|
+
continuation +=
|
|
2268
|
+
"\n\n" +
|
|
2269
|
+
(steer.trusted ? formatHookFeedback(steer.text) : delimitUntrusted("supervisor steering message", steer.text));
|
|
2270
|
+
if (steer.trusted)
|
|
2271
|
+
engineSegments.push({ start, end: continuation.length });
|
|
2186
2272
|
}
|
|
2187
|
-
final = await withBrainSinks(() => prepared.harness.prompt(continuation));
|
|
2273
|
+
final = await withBrainSinks(() => prepared.harness.prompt(continuation, { engineSegments }));
|
|
2188
2274
|
}
|
|
2189
2275
|
}
|
|
2190
2276
|
else {
|
|
@@ -2201,6 +2287,43 @@ export class Runner {
|
|
|
2201
2287
|
effectiveObjective = `${formatHookFeedback(decision.additionalContext)}\n\n${spec.objective}`;
|
|
2202
2288
|
}
|
|
2203
2289
|
}
|
|
2290
|
+
const firstFrames = [];
|
|
2291
|
+
if (attachState !== undefined) {
|
|
2292
|
+
const attach = attachState;
|
|
2293
|
+
if (agentListingOn && prepared.agentListing !== undefined) {
|
|
2294
|
+
const listing = prepared.agentListing;
|
|
2295
|
+
const body = renderAgentListingDelta(attach, listing.entries, listing.toolName, listing.models);
|
|
2296
|
+
if (body !== undefined) {
|
|
2297
|
+
firstFrames.push({
|
|
2298
|
+
source: "agent_listing",
|
|
2299
|
+
body,
|
|
2300
|
+
commit: () => {
|
|
2301
|
+
commitAgentListing(attach, listing.entries, listing.models);
|
|
2302
|
+
prepared.announcedListingsRef.agents = listing.entries.map((e) => e.name);
|
|
2303
|
+
if (listing.models !== undefined)
|
|
2304
|
+
prepared.announcedListingsRef.models = [...listing.models];
|
|
2305
|
+
},
|
|
2306
|
+
});
|
|
2307
|
+
}
|
|
2308
|
+
}
|
|
2309
|
+
if (skillsListingOn && prepared.skillsListing !== undefined) {
|
|
2310
|
+
const listing = prepared.skillsListing;
|
|
2311
|
+
const body = renderSkillsListingDelta(attach, listing.entries);
|
|
2312
|
+
if (body !== undefined) {
|
|
2313
|
+
firstFrames.push({
|
|
2314
|
+
source: "skills_listing",
|
|
2315
|
+
body,
|
|
2316
|
+
commit: () => {
|
|
2317
|
+
commitSkillsListing(attach, listing.entries);
|
|
2318
|
+
prepared.announcedListingsRef.skills = listing.entries.map((e) => e.name);
|
|
2319
|
+
},
|
|
2320
|
+
});
|
|
2321
|
+
}
|
|
2322
|
+
}
|
|
2323
|
+
if (firstFrames.length > 0) {
|
|
2324
|
+
effectiveObjective = `${firstFrames.map((f) => `<system-reminder>\n${sanitizeUntrustedText(f.body)}\n</system-reminder>`).join("\n")}\n${effectiveObjective}`;
|
|
2325
|
+
}
|
|
2326
|
+
}
|
|
2204
2327
|
const precallMicroUsd = maxCostMicroUsd === undefined
|
|
2205
2328
|
? 0
|
|
2206
2329
|
: computeCostMicroUsd({
|
|
@@ -2220,7 +2343,16 @@ export class Runner {
|
|
|
2220
2343
|
const images = spec.images
|
|
2221
2344
|
? await Promise.all(spec.images.map((img) => toImageContent(img, this.deps.allowImageUrl)))
|
|
2222
2345
|
: undefined;
|
|
2223
|
-
|
|
2346
|
+
for (const f of firstFrames) {
|
|
2347
|
+
f.commit();
|
|
2348
|
+
queue.push({ type: "steering_injected", source: f.source, preview: f.body.slice(0, 220), ...ident() });
|
|
2349
|
+
}
|
|
2350
|
+
attachmentsInjected += firstFrames.length;
|
|
2351
|
+
const enginePrefixChars = effectiveObjective.length - spec.objective.length;
|
|
2352
|
+
final = await withBrainSinks(() => prepared.harness.prompt(effectiveObjective, {
|
|
2353
|
+
...(images && images.length > 0 ? { images } : {}),
|
|
2354
|
+
...(enginePrefixChars > 0 ? { enginePrefixChars } : {}),
|
|
2355
|
+
}));
|
|
2224
2356
|
}
|
|
2225
2357
|
}
|
|
2226
2358
|
abortedLive = prepared.abortController.signal.aborted;
|
|
@@ -3012,7 +3144,7 @@ export class Runner {
|
|
|
3012
3144
|
dr.surfacedIds.add(id);
|
|
3013
3145
|
for (const k of outcome.surfacedKeys)
|
|
3014
3146
|
dr.surfacedKeys.add(k);
|
|
3015
|
-
await prepared.harness.steer(outcome.block);
|
|
3147
|
+
await prepared.harness.steer(outcome.block, { provenance: "engine-note" });
|
|
3016
3148
|
}
|
|
3017
3149
|
catch {
|
|
3018
3150
|
}
|