@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.
- 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 +120 -10
- 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 +177 -59
- 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/tool-policy.d.ts +11 -2
- package/dist/core/tool-policy.d.ts.map +1 -1
- package/dist/core/tool-policy.js +14 -0
- package/dist/core/tool-policy.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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/default.d.ts.map +1 -1
- package/dist/prompts/default.js.map +1 -1
- package/dist/tools/fs/index.d.ts +0 -1
- package/dist/tools/fs/index.d.ts.map +1 -1
- package/dist/tools/fs/index.js +2 -3
- package/dist/tools/fs/index.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/dist/tools/worktree.d.ts.map +1 -1
- package/dist/tools/worktree.js +6 -5
- package/dist/tools/worktree.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;
|
|
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
|
-
? {
|
|
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"
|
|
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
|
|
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 &&
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
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
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
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
|
-
|
|
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({
|
|
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 ||
|
|
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
|
|
1785
|
-
const changedFilesOn = Boolean(attachmentsCfg
|
|
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
|
|
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
|
|
1855
|
+
const backgroundTasksOn = attachmentsCfg?.backgroundTasks === true;
|
|
1804
1856
|
const bgTasks = backgroundTasksOn && attachState.postCompactPending ? prepared.listBackgroundTasks() : undefined;
|
|
1805
|
-
const toolsDeltaOn = attachmentsCfg
|
|
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
|
|
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
|
|
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
|
|
1823
|
-
...(attachmentsCfg
|
|
1873
|
+
todoReminder: attachmentsCfg?.todoReminder === true,
|
|
1874
|
+
...(attachmentsCfg?.todoReminderMode !== undefined ? { todoReminderMode: attachmentsCfg.todoReminderMode } : {}),
|
|
1824
1875
|
changedFiles: changedFilesOn,
|
|
1825
|
-
planModeReminder: attachmentsCfg
|
|
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
|
-
? {
|
|
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
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
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
|
-
|
|
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
|
}
|