@sema-agent/core 1.452.0 → 2.0.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/agent-transcript-tool.d.ts +15 -0
- package/dist/agents/agent-transcript-tool.js +122 -0
- package/dist/agents/cascade.js +5 -8
- package/dist/agents/repair-loop.d.ts +1 -1
- package/dist/agents/repair-loop.js +1 -1
- package/dist/agents/retain-ledger.d.ts +60 -0
- package/dist/agents/retain-ledger.js +225 -0
- package/dist/agents/roster-store.d.ts +1 -0
- package/dist/agents/roster-store.js +9 -0
- package/dist/agents/send-message-tool.d.ts +41 -0
- package/dist/agents/send-message-tool.js +469 -0
- package/dist/agents/subagent.d.ts +33 -108
- package/dist/agents/subagent.js +22 -834
- package/dist/agents/teacher.d.ts +0 -1
- package/dist/agents/teacher.js +0 -9
- package/dist/bin/sema-tb.js +3 -3
- package/dist/brain/anthropic.js +15 -40
- package/dist/brain/openai.js +15 -40
- package/dist/brain/reasoning.d.ts +1 -1
- package/dist/brain/stream-engine.js +2 -2
- package/dist/brain/stream-shared.d.ts +17 -0
- package/dist/brain/stream-shared.js +50 -0
- package/dist/brain/timeout.d.ts +1 -1
- package/dist/brain/timeout.js +1 -1
- package/dist/config/catalog.js +1 -3
- package/dist/config/defaults.d.ts +6 -0
- package/dist/config/defaults.js +6 -0
- package/dist/core/ask-question.d.ts +1 -1
- package/dist/core/background-shell.d.ts +1 -1
- package/dist/core/checkpoint-store.d.ts +0 -1
- package/dist/core/exec-gate.d.ts +1 -1
- package/dist/core/exec-output-tail.d.ts +1 -0
- package/dist/core/exec-output-tail.js +6 -0
- package/dist/core/file-snapshot-store.d.ts +1 -1
- package/dist/core/fs-write-gate-policy.d.ts +1 -1
- package/dist/core/git-worktree-env.d.ts +1 -1
- package/dist/core/hooks.d.ts +1 -1
- package/dist/core/image-downsample.d.ts +44 -0
- package/dist/core/image-downsample.js +97 -0
- package/dist/core/lsp.d.ts +1 -1
- package/dist/core/mcp.d.ts +3 -45
- package/dist/core/mcp.js +2 -97
- package/dist/core/media-byte-cap.d.ts +1 -1
- package/dist/core/memory-recall.d.ts +0 -12
- package/dist/core/memory-recall.js +0 -222
- package/dist/core/memory.d.ts +0 -6
- package/dist/core/memory.js +0 -88
- package/dist/core/message-utils.d.ts +1 -1
- package/dist/core/oracle-isolation.d.ts +1 -1
- package/dist/core/remote-env.d.ts +1 -1
- package/dist/core/roles.d.ts +1 -1
- package/dist/core/runner/active-skill-scope.d.ts +1 -1
- package/dist/core/runner/assemble-result.d.ts +0 -2
- package/dist/core/runner/memory-consolidation.d.ts +1 -1
- package/dist/core/runner/prepare-memory.d.ts +16 -0
- package/dist/core/runner/prepare-memory.js +191 -0
- package/dist/core/runner/prepare-task.d.ts +4 -28
- package/dist/core/runner/prepare-task.js +19 -207
- package/dist/core/runner/prompt-suggestions.d.ts +1 -1
- package/dist/core/runner/runtask.d.ts +2 -3
- package/dist/core/runner/runtask.js +337 -529
- package/dist/core/runner/session-rule-policy.d.ts +1 -1
- package/dist/core/runner/synthetic-tools.d.ts +5 -5
- package/dist/core/runner/synthetic-tools.js +4 -4
- package/dist/core/runner/tool-disclosure.d.ts +3 -3
- package/dist/core/runner/tool-disclosure.js +2 -2
- package/dist/core/runner/tool-output-projection.d.ts +6 -0
- package/dist/core/runner/tool-output-projection.js +81 -0
- package/dist/core/runtime.d.ts +1 -1
- package/dist/core/scheduler.d.ts +1 -1
- package/dist/core/sensitive-path-policy.d.ts +1 -1
- package/dist/core/session-reconcile.d.ts +1 -1
- package/dist/core/session-store.d.ts +2 -1
- package/dist/core/session-store.js +2 -1
- package/dist/core/session.d.ts +0 -1
- package/dist/core/task-registry-agent.d.ts +115 -0
- package/dist/core/task-registry-agent.js +1163 -0
- package/dist/core/task-registry-monitor.d.ts +13 -0
- package/dist/core/task-registry-monitor.js +347 -0
- package/dist/core/task-registry-shared.d.ts +294 -0
- package/dist/core/task-registry-shared.js +271 -0
- package/dist/core/task-registry-workflow.d.ts +5 -0
- package/dist/core/task-registry-workflow.js +143 -0
- package/dist/core/task-registry.d.ts +51 -216
- package/dist/core/task-registry.js +127 -1940
- package/dist/core/task-tool-shape.d.ts +32 -0
- package/dist/core/task-tool-shape.js +83 -0
- package/dist/core/tool-policy.d.ts +1 -2
- package/dist/core/tool-result-budget.d.ts +1 -1
- package/dist/core/tool-result-store.d.ts +2 -2
- package/dist/core/tool-result-store.js +1 -1
- package/dist/core/tools.d.ts +2 -3
- package/dist/core/tools.js +0 -8
- package/dist/core/trace.d.ts +2 -2
- package/dist/core/types.d.ts +0 -29
- package/dist/core/workflow-run-store-contract.d.ts +1 -1
- package/dist/core/workflow-run-store-contract.js +19 -19
- package/dist/engine/execution-env/node-execution-env.d.ts +13 -0
- package/dist/engine/execution-env/node-execution-env.js +55 -25
- package/dist/engine/lsp/frame-decoder.d.ts +1 -1
- package/dist/engine/lsp/frame-decoder.js +1 -1
- package/dist/engine/lsp/node-lsp-manager.d.ts +1 -1
- package/dist/engine/lsp/stdio-lsp-transport.js +2 -2
- package/dist/index.d.ts +16 -14
- package/dist/index.js +13 -11
- package/dist/internal/harness-types.d.ts +7 -0
- package/dist/internal/harness-types.js +1 -0
- package/dist/internal/harness.d.ts +1 -7
- package/dist/internal/harness.js +1 -0
- package/dist/orchestration/goal.js +2 -2
- package/dist/orchestration/run-workflow-tool.d.ts +1 -1
- package/dist/orchestration/workflow-types.d.ts +193 -0
- package/dist/orchestration/workflow-types.js +54 -0
- package/dist/orchestration/workflow.d.ts +3 -193
- package/dist/orchestration/workflow.js +7 -59
- package/dist/prompt-assembly/assemble.d.ts +3 -3
- package/dist/prompt-assembly/assemble.js +0 -16
- package/dist/prompt-assembly/explain.d.ts +1 -1
- package/dist/prompt-assembly/tool-catalog.d.ts +1 -1
- package/dist/prompts/default.d.ts +1 -6
- package/dist/prompts/default.js +3 -11
- package/dist/scenarios/env.d.ts +1 -1
- package/dist/scenarios/full-body.d.ts +0 -3
- package/dist/scenarios/full-body.js +0 -2
- package/dist/stores/file/background-agent-store.d.ts +2 -15
- package/dist/stores/file/background-agent-store.js +30 -100
- package/dist/stores/file/checkpoint-store.d.ts +1 -14
- package/dist/stores/file/checkpoint-store.js +47 -119
- package/dist/stores/file/file-snapshot-store.d.ts +1 -1
- package/dist/stores/file/shared-ledger.d.ts +35 -0
- package/dist/stores/file/shared-ledger.js +94 -0
- package/dist/stores/file/workflow-run-store.d.ts +1 -14
- package/dist/stores/file/workflow-run-store.js +24 -93
- package/dist/tools/fs/bash-readonly-classifier.d.ts +8 -0
- package/dist/tools/fs/bash-readonly-classifier.js +166 -0
- package/dist/tools/fs/fs-bash.d.ts +31 -0
- package/dist/tools/fs/fs-bash.js +672 -0
- package/dist/tools/fs/fs-pdf.d.ts +22 -0
- package/dist/tools/fs/fs-pdf.js +236 -0
- package/dist/tools/fs/fs-read.d.ts +8 -0
- package/dist/tools/fs/fs-read.js +286 -0
- package/dist/tools/fs/fs-search-tools.d.ts +5 -0
- package/dist/tools/fs/fs-search-tools.js +173 -0
- package/dist/tools/fs/fs-shared.d.ts +55 -0
- package/dist/tools/fs/fs-shared.js +144 -0
- package/dist/tools/fs/fs-write.d.ts +8 -0
- package/dist/tools/fs/fs-write.js +423 -0
- package/dist/tools/fs/index.d.ts +12 -65
- package/dist/tools/fs/index.js +26 -2090
- package/dist/tools/fs/pdf.d.ts +1 -1
- package/dist/tools/fs/repo-map.d.ts +3 -3
- package/dist/tools/fs/repo-map.js +1 -1
- package/dist/tools/fs/safety.d.ts +1 -1
- package/dist/tools/fs/search.d.ts +1 -1
- package/dist/tools/monitor.d.ts +1 -1
- package/dist/tools/scheduler-tools.d.ts +1 -1
- package/dist/tools/web.d.ts +2 -2
- package/dist/tools/web.js +1 -1
- package/dist/tools/worktree.d.ts +1 -1
- package/package.json +1 -1
- package/dist/core/dynamic-recall.d.ts +0 -32
- package/dist/core/dynamic-recall.js +0 -76
package/dist/core/roles.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ThinkingLevel } from "../internal/harness.js";
|
|
1
|
+
import type { ThinkingLevel } from "../internal/harness-types.js";
|
|
2
2
|
import type { Model } from "../internal/llm.js";
|
|
3
3
|
import type { ModelRef, ModelRole, ModelRoles } from "./types.js";
|
|
4
4
|
export type { ModelRole, RoleSpec, ModelRoles } from "./types.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ExecutionEnv } from "../../internal/harness.js";
|
|
1
|
+
import type { ExecutionEnv } from "../../internal/harness-types.js";
|
|
2
2
|
import type { SkillManifest, ToolEffect } from "../types.js";
|
|
3
3
|
import type { ToolPolicy } from "../tool-policy.js";
|
|
4
4
|
export type ActiveSkillFrame = {
|
|
@@ -11,13 +11,11 @@ export interface Stats {
|
|
|
11
11
|
outputTokens: number;
|
|
12
12
|
cacheHitRate?: number;
|
|
13
13
|
totalInputTokens?: number;
|
|
14
|
-
costUsd: number;
|
|
15
14
|
costMicroUsd: number;
|
|
16
15
|
nested?: {
|
|
17
16
|
tokens: number;
|
|
18
17
|
turns: number;
|
|
19
18
|
tasks: number;
|
|
20
|
-
costUsd?: number;
|
|
21
19
|
costMicroUsd?: number;
|
|
22
20
|
};
|
|
23
21
|
memory?: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Model } from "../../internal/llm.js";
|
|
2
|
-
import type { ThinkingLevel } from "../../internal/harness.js";
|
|
2
|
+
import type { ThinkingLevel } from "../../internal/harness-types.js";
|
|
3
3
|
import type { Brain } from "../types.js";
|
|
4
4
|
import type { MemoryStore } from "../memory.js";
|
|
5
5
|
import type { ModelPricing } from "../pricing.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BeforeWriteHook, RunnerDeps, TaskSpec } from "../types.js";
|
|
2
|
+
import type { Prepared } from "./prepare-task.js";
|
|
3
|
+
export interface PrepareMemoryInput {
|
|
4
|
+
spec: TaskSpec;
|
|
5
|
+
deps: RunnerDeps;
|
|
6
|
+
sessionId: string;
|
|
7
|
+
taskRootPath: string;
|
|
8
|
+
memoryWriteGateRef: {
|
|
9
|
+
current?: BeforeWriteHook;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface PrepareMemoryResult {
|
|
13
|
+
memoryEngineSession: Prepared["memoryEngineSession"];
|
|
14
|
+
memoryBlock: string | undefined;
|
|
15
|
+
}
|
|
16
|
+
export declare function prepareMemory(input: PrepareMemoryInput): Promise<PrepareMemoryResult>;
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { deriveControlPlaneDir, deriveProjectControlDir, deriveProjectMemoryDir, deriveRepoMemoryDir, drainMemoryAnnouncements, enqueueMemoryAnnouncement, lookupProjectIdHint, recordProjectIdHint, resolveMemoryEngineRoot } from "../memory-engine/layout.js";
|
|
2
|
+
import { classifyScopePlanes, derivePersonalControlDir, derivePersonalMemoryDir, mergeHarvestReports, mergeInjections, needsDualRoots, parsedProjectPlane } from "../memory-engine/dual-root.js";
|
|
3
|
+
import { normalizeMemorySpec } from "../memory.js";
|
|
4
|
+
import { MemoryEngine } from "../memory-engine/engine.js";
|
|
5
|
+
import { assertScopeContractPlacement, parseScopeKey, resolveProjectId } from "../memory-engine/scope-contract.js";
|
|
6
|
+
import { FileMemoryEngineBackend } from "../memory-engine/file-backend.js";
|
|
7
|
+
export async function prepareMemory(input) {
|
|
8
|
+
const { spec, deps, sessionId, taskRootPath, memoryWriteGateRef } = input;
|
|
9
|
+
const memorySpec = normalizeMemorySpec(spec.memory);
|
|
10
|
+
const useMemoryEngine = Boolean(memorySpec && memorySpec.enabled && deps.memoryBackend);
|
|
11
|
+
let memoryEngineSession;
|
|
12
|
+
if (useMemoryEngine && memorySpec) {
|
|
13
|
+
try {
|
|
14
|
+
const backend = deps.memoryBackend;
|
|
15
|
+
const pinned = backend.directoryRoot;
|
|
16
|
+
const engineRoot = resolveMemoryEngineRoot(deps.memoryEngineDir);
|
|
17
|
+
const repoRoot = deps.rootPath ?? taskRootPath;
|
|
18
|
+
let identityKey;
|
|
19
|
+
if (memorySpec.scopeContract === "v2" && repoRoot) {
|
|
20
|
+
const consumesProjectIdentity = [...memorySpec.scopes, ...(memorySpec.writeScope !== null ? [memorySpec.writeScope] : [])]
|
|
21
|
+
.map(parseScopeKey)
|
|
22
|
+
.some((k) => k.kind === "proj" || k.kind === "userproj");
|
|
23
|
+
let marker = null;
|
|
24
|
+
try {
|
|
25
|
+
marker = resolveProjectId(repoRoot);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
if (consumesProjectIdentity)
|
|
29
|
+
throw err;
|
|
30
|
+
deps.onError?.(err instanceof Error ? err : new Error(String(err)), { phase: "config", sessionId });
|
|
31
|
+
}
|
|
32
|
+
if (marker) {
|
|
33
|
+
identityKey = marker.projectId;
|
|
34
|
+
const firstSwitch = lookupProjectIdHint(engineRoot, repoRoot) !== marker.projectId;
|
|
35
|
+
recordProjectIdHint(engineRoot, repoRoot, marker.projectId);
|
|
36
|
+
if (firstSwitch) {
|
|
37
|
+
try {
|
|
38
|
+
const oldCtl = deriveControlPlaneDir(engineRoot, repoRoot);
|
|
39
|
+
const newCtl = deriveProjectControlDir(engineRoot, marker.projectId);
|
|
40
|
+
const drained = drainMemoryAnnouncements(oldCtl);
|
|
41
|
+
for (const ann of drained.queue)
|
|
42
|
+
enqueueMemoryAnnouncement(newCtl, ann);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (memorySpec.writeScope !== null) {
|
|
48
|
+
const w = parseScopeKey(memorySpec.writeScope);
|
|
49
|
+
if ((w.kind === "proj" || w.kind === "userproj") && w.projectId !== marker.projectId) {
|
|
50
|
+
const e = new Error(`memory scope contract v2: writeScope ${memorySpec.writeScope} targets projectId ${w.projectId}, ` +
|
|
51
|
+
`but this checkout's marker (.sema/project) declares ${marker.projectId} — refusing a mis-addressed write.`);
|
|
52
|
+
e.code = "config.memory_project_identity";
|
|
53
|
+
throw e;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const hint = lookupProjectIdHint(engineRoot, repoRoot);
|
|
59
|
+
if (hint !== undefined) {
|
|
60
|
+
deps.onError?.(new Error(`memory project marker missing but recoverable: ${repoRoot} previously carried projectId ${hint} ` +
|
|
61
|
+
`(.sema/project deleted?). Restore the marker to keep the identity-keyed memory mount; this session ` +
|
|
62
|
+
`falls back to the path-derived key.`), { phase: "config", sessionId });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const memoryDir = typeof pinned === "string" && pinned
|
|
67
|
+
? pinned
|
|
68
|
+
: identityKey !== undefined
|
|
69
|
+
? deriveProjectMemoryDir(engineRoot, identityKey)
|
|
70
|
+
: deriveRepoMemoryDir(engineRoot, repoRoot);
|
|
71
|
+
const planes = memorySpec.scopeContract === "v2" ? classifyScopePlanes(memorySpec.scopes, memorySpec.writeScope) : undefined;
|
|
72
|
+
const dual = planes !== undefined && needsDualRoots(planes);
|
|
73
|
+
const personalOnly = planes !== undefined && !dual && planes.project.length === 0 && planes.writePlane !== "project" && (planes.personal.length > 0 || planes.writePlane === "personal");
|
|
74
|
+
if (memorySpec.scopeContract === "v2" && !personalOnly) {
|
|
75
|
+
assertScopeContractPlacement({
|
|
76
|
+
parsedScopes: dual
|
|
77
|
+
? parsedProjectPlane(planes, memorySpec.writeScope)
|
|
78
|
+
: [...memorySpec.scopes, ...(memorySpec.writeScope !== null ? [memorySpec.writeScope] : [])].map(parseScopeKey),
|
|
79
|
+
memoryDir,
|
|
80
|
+
repoRoot,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const personalMemoryDir = derivePersonalMemoryDir(engineRoot);
|
|
84
|
+
const personalControlDir = derivePersonalControlDir(engineRoot);
|
|
85
|
+
const createPersonalEngine = () => new MemoryEngine({
|
|
86
|
+
backend: typeof pinned === "string" && pinned
|
|
87
|
+
? new FileMemoryEngineBackend(personalMemoryDir, { controlDir: personalControlDir })
|
|
88
|
+
: backend,
|
|
89
|
+
memoryDir: personalMemoryDir,
|
|
90
|
+
controlDir: personalControlDir,
|
|
91
|
+
});
|
|
92
|
+
let writeEngine;
|
|
93
|
+
let writeHandle;
|
|
94
|
+
let injectFn;
|
|
95
|
+
let harvestBoth;
|
|
96
|
+
if (dual) {
|
|
97
|
+
const projectEngine = new MemoryEngine({
|
|
98
|
+
backend,
|
|
99
|
+
memoryDir,
|
|
100
|
+
controlDir: identityKey !== undefined ? deriveProjectControlDir(engineRoot, identityKey) : deriveControlPlaneDir(engineRoot, repoRoot),
|
|
101
|
+
});
|
|
102
|
+
const personalEngine = createPersonalEngine();
|
|
103
|
+
const p = planes;
|
|
104
|
+
const projectHandle = await projectEngine.materialize(p.project, p.writePlane === "project" ? memorySpec.writeScope : null);
|
|
105
|
+
const personalHandle = await personalEngine.materialize(p.personal, p.writePlane === "personal" ? memorySpec.writeScope : null);
|
|
106
|
+
const writeIsPersonal = p.writePlane === "personal";
|
|
107
|
+
writeEngine = writeIsPersonal ? personalEngine : projectEngine;
|
|
108
|
+
writeHandle = writeIsPersonal ? personalHandle : projectHandle;
|
|
109
|
+
injectFn = () => mergeInjections(projectEngine.inject(projectHandle), personalEngine.inject(personalHandle));
|
|
110
|
+
harvestBoth = async () => {
|
|
111
|
+
const writeFirst = writeIsPersonal ? [personalEngine, personalHandle] : [projectEngine, projectHandle];
|
|
112
|
+
const readOther = writeIsPersonal ? [projectEngine, projectHandle] : [personalEngine, personalHandle];
|
|
113
|
+
const writeReport = await writeFirst[0].harvest(writeFirst[1]);
|
|
114
|
+
let readReport;
|
|
115
|
+
let readFailure;
|
|
116
|
+
try {
|
|
117
|
+
readReport = await readOther[0].harvest(readOther[1]);
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
readFailure = err instanceof Error ? err.message : String(err);
|
|
121
|
+
}
|
|
122
|
+
const merged = readReport !== undefined ? mergeHarvestReports(writeReport, readReport) : writeReport;
|
|
123
|
+
if (readFailure !== undefined)
|
|
124
|
+
merged.warnings.push(`read-plane harvest failed (write-plane yield committed): ${readFailure}`);
|
|
125
|
+
return merged;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
else if (personalOnly) {
|
|
129
|
+
const personalEngine = createPersonalEngine();
|
|
130
|
+
const handle = await personalEngine.materialize(memorySpec.scopes, memorySpec.writeScope);
|
|
131
|
+
writeEngine = personalEngine;
|
|
132
|
+
writeHandle = handle;
|
|
133
|
+
injectFn = () => personalEngine.inject(handle);
|
|
134
|
+
harvestBoth = () => personalEngine.harvest(handle);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const engine = new MemoryEngine({
|
|
138
|
+
backend,
|
|
139
|
+
memoryDir,
|
|
140
|
+
controlDir: identityKey !== undefined ? deriveProjectControlDir(engineRoot, identityKey) : deriveControlPlaneDir(engineRoot, repoRoot),
|
|
141
|
+
});
|
|
142
|
+
const handle = await engine.materialize(memorySpec.scopes, memorySpec.writeScope);
|
|
143
|
+
writeEngine = engine;
|
|
144
|
+
writeHandle = handle;
|
|
145
|
+
injectFn = () => engine.inject(handle);
|
|
146
|
+
harvestBoth = () => engine.harvest(handle);
|
|
147
|
+
}
|
|
148
|
+
memoryWriteGateRef.current = (w) => writeEngine.gateWrite(writeHandle, w.key, w.content);
|
|
149
|
+
const harvestSafe = async (phase = "terminal") => {
|
|
150
|
+
try {
|
|
151
|
+
const report = await harvestBoth();
|
|
152
|
+
if (!report.ok && report.incident) {
|
|
153
|
+
deps.onError?.(new Error(`memory harvest refused (${report.incident.kind}): ${report.incident.detail}`), { phase: "memory", sessionId });
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
deps.onMemoryHarvestReport?.(report, { sessionId, phase });
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
}
|
|
160
|
+
return report;
|
|
161
|
+
}
|
|
162
|
+
catch (err) {
|
|
163
|
+
try {
|
|
164
|
+
deps.onError?.(err instanceof Error ? err : new Error(String(err)), { phase: "memory", sessionId });
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
}
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
memoryEngineSession = { engine: writeEngine, handle: writeHandle, inject: injectFn, harvest: harvestSafe };
|
|
172
|
+
}
|
|
173
|
+
catch (err) {
|
|
174
|
+
if (typeof err.code === "string" && (err.code.startsWith("config.memory_scope") || err.code.startsWith("config.memory_project"))) {
|
|
175
|
+
throw err;
|
|
176
|
+
}
|
|
177
|
+
deps.onError?.(err instanceof Error ? err : new Error(String(err)), { phase: "memory", sessionId });
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
let memoryBlock;
|
|
181
|
+
if (memorySpec && memorySpec.enabled && !useMemoryEngine) {
|
|
182
|
+
const detail = "TaskSpec.memory is enabled but RunnerDeps.memoryBackend is not configured; memory is inactive for this task (the legacy memoryStore fallback was retired in design/138 S4 and the dep was removed in design/157 B19).";
|
|
183
|
+
deps.onError?.(new Error(detail), { phase: "config", sessionId });
|
|
184
|
+
}
|
|
185
|
+
if (memoryEngineSession) {
|
|
186
|
+
const injection = memoryEngineSession.inject();
|
|
187
|
+
if (injection.block.trim())
|
|
188
|
+
memoryBlock = injection.block;
|
|
189
|
+
}
|
|
190
|
+
return { memoryEngineSession, memoryBlock };
|
|
191
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { AgentHarness, type ThinkingLevel } from "../../internal/harness.js";
|
|
2
2
|
import type { Model } from "../../internal/llm.js";
|
|
3
3
|
import { type MaterializedMcp } from "../mcp.js";
|
|
4
|
-
import { MemoryEngine } from "../memory-engine/engine.js";
|
|
5
4
|
import type { HarvestReport, MemorySessionHandle } from "../memory-engine/types.js";
|
|
6
5
|
import { StoredSession } from "../session.js";
|
|
7
6
|
import type { SessionStore } from "../session.js";
|
|
@@ -12,28 +11,14 @@ import { type CutKillRegistry } from "./cut-kill.js";
|
|
|
12
11
|
import type { SessionPermissionRules } from "../session-policy-store.js";
|
|
13
12
|
import { CacheBreakDetector, type ToolFingerprintInput } from "../cache-break-detector.js";
|
|
14
13
|
import { type OutputRef, type BlockedRef, type SkillListingEntry } from "./synthetic-tools.js";
|
|
15
|
-
import {
|
|
14
|
+
import type { MemoryEngine } from "../memory-engine/engine.js";
|
|
16
15
|
import type { TaskNotificationPayload } from "../task-notification.js";
|
|
17
16
|
import { type CwdRef } from "../../tools/fs/index.js";
|
|
18
17
|
import type { Runner } from "./runtask.js";
|
|
19
18
|
import { type CheckpointGate, type CheckpointState, type CheckpointToken, type ResourceLedger, type ResourceLimitReason } from "../checkpoint-store.js";
|
|
20
19
|
import type { AgentMessage, AgentTool, ExecutionEnv } from "../../internal/harness.js";
|
|
21
|
-
import type {
|
|
20
|
+
import type { RunnerDeps, TaskEvent, TaskSpec, ToolActivity, ToolEffect } from "../types.js";
|
|
22
21
|
import type { RepairBundle } from "../../agents/repair-loop.js";
|
|
23
|
-
export interface PreparedConsolidation {
|
|
24
|
-
scope: string;
|
|
25
|
-
notes: ConsolidationNote[];
|
|
26
|
-
settings: {
|
|
27
|
-
role: ModelRole;
|
|
28
|
-
band: {
|
|
29
|
-
lo: number;
|
|
30
|
-
hi: number;
|
|
31
|
-
};
|
|
32
|
-
searchLimit: number;
|
|
33
|
-
maxNotes: number;
|
|
34
|
-
timeoutSec: number;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
22
|
export declare const DEFAULT_IRREVERSIBLE_SCOPE = "irreversible";
|
|
38
23
|
export declare function checkpointScopeOf(spec: {
|
|
39
24
|
durableApproval?: {
|
|
@@ -61,7 +46,6 @@ export interface Prepared {
|
|
|
61
46
|
tokens: number;
|
|
62
47
|
turns: number;
|
|
63
48
|
tasks: number;
|
|
64
|
-
costUsd: number;
|
|
65
49
|
costMicroUsd: number;
|
|
66
50
|
};
|
|
67
51
|
cwdRef?: CwdRef;
|
|
@@ -88,7 +72,7 @@ export interface Prepared {
|
|
|
88
72
|
tools: ToolFingerprintInput[];
|
|
89
73
|
};
|
|
90
74
|
promptManifest: {
|
|
91
|
-
constitution: "core" | "replaced" | "provider-assembled"
|
|
75
|
+
constitution: "core" | "replaced" | "provider-assembled";
|
|
92
76
|
blocks: Array<{
|
|
93
77
|
id: string;
|
|
94
78
|
chars: number;
|
|
@@ -130,7 +114,6 @@ export interface Prepared {
|
|
|
130
114
|
apply: (committedArtifactDigest?: string) => void;
|
|
131
115
|
} | undefined;
|
|
132
116
|
activeTools: Set<string>;
|
|
133
|
-
consolidation?: PreparedConsolidation;
|
|
134
117
|
memoryEngineSession?: {
|
|
135
118
|
engine: MemoryEngine;
|
|
136
119
|
handle: MemorySessionHandle;
|
|
@@ -255,13 +238,6 @@ export interface Prepared {
|
|
|
255
238
|
trimPressureRef: {
|
|
256
239
|
droppedMessages: boolean;
|
|
257
240
|
};
|
|
258
|
-
dynamicRecall?: {
|
|
259
|
-
selector: import("../memory-recall.js").MemorySelector;
|
|
260
|
-
scopes: string[];
|
|
261
|
-
recentTools: string[];
|
|
262
|
-
surfacedIds: Set<string>;
|
|
263
|
-
surfacedKeys: Set<string>;
|
|
264
|
-
};
|
|
265
241
|
}
|
|
266
242
|
export interface PrepareResume {
|
|
267
243
|
leafId: string;
|
|
@@ -350,4 +326,4 @@ export declare function batchContextAt(messages: AgentMessage[], currentId: stri
|
|
|
350
326
|
completedCallIds: string[];
|
|
351
327
|
};
|
|
352
328
|
export declare function rebaseWorkspacePath(p: string, fromRaw: string, toRaw: string): string;
|
|
353
|
-
export declare function prepareTask(spec: TaskSpec, deps: RunnerDeps, sessions: SessionStore, resume?: PrepareResume,
|
|
329
|
+
export declare function prepareTask(spec: TaskSpec, deps: RunnerDeps, sessions: SessionStore, resume?: PrepareResume, internals?: RunInternals, runnerSelf?: Runner): Promise<Prepared>;
|