@junctionpanel/server 0.1.81 → 0.1.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/server/server/agent/agent-manager.d.ts +2 -0
  2. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  3. package/dist/server/server/agent/agent-manager.js +115 -2
  4. package/dist/server/server/agent/agent-manager.js.map +1 -1
  5. package/dist/server/server/agent/agent-sdk-types.d.ts +2 -0
  6. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  7. package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
  8. package/dist/server/server/agent/harness/context.d.ts +21 -0
  9. package/dist/server/server/agent/harness/context.d.ts.map +1 -0
  10. package/dist/server/server/agent/harness/context.js +541 -0
  11. package/dist/server/server/agent/harness/context.js.map +1 -0
  12. package/dist/server/server/agent/harness/memory.d.ts +17 -0
  13. package/dist/server/server/agent/harness/memory.d.ts.map +1 -0
  14. package/dist/server/server/agent/harness/memory.js +261 -0
  15. package/dist/server/server/agent/harness/memory.js.map +1 -0
  16. package/dist/server/server/agent/harness/types.d.ts +114 -0
  17. package/dist/server/server/agent/harness/types.d.ts.map +1 -0
  18. package/dist/server/server/agent/harness/types.js +3 -0
  19. package/dist/server/server/agent/harness/types.js.map +1 -0
  20. package/dist/server/server/agent/providers/gemini-agent.d.ts +1 -1
  21. package/dist/server/server/agent/providers/gemini-agent.d.ts.map +1 -1
  22. package/dist/server/server/agent/providers/gemini-agent.js +26 -13
  23. package/dist/server/server/agent/providers/gemini-agent.js.map +1 -1
  24. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  25. package/dist/server/server/exports.d.ts +1 -0
  26. package/dist/server/server/exports.d.ts.map +1 -1
  27. package/dist/server/server/exports.js +1 -0
  28. package/dist/server/server/exports.js.map +1 -1
  29. package/dist/server/server/persisted-config.d.ts +4 -4
  30. package/dist/server/shared/messages.d.ts +20 -20
  31. package/dist/server/shared/switchboard.d.ts +174 -0
  32. package/dist/server/shared/switchboard.d.ts.map +1 -0
  33. package/dist/server/shared/switchboard.js +172 -0
  34. package/dist/server/shared/switchboard.js.map +1 -0
  35. package/package.json +2 -2
@@ -0,0 +1,541 @@
1
+ import { access, readFile, readdir } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { JUNCTION_HARNESS_PROMPT_DYNAMIC_BOUNDARY, JUNCTION_HARNESS_VERSION, } from "./types.js";
4
+ const REPO_INSTRUCTION_FILE_NAMES = ["AGENTS.md", "AGENT.md"];
5
+ const ROOT_ENTRY_LIMIT = 8;
6
+ const MANIFEST_PATH_LIMIT = 8;
7
+ const INSTRUCTION_CHAR_LIMIT = 6000;
8
+ const SYSTEM_PROMPT_SECTION_LIMIT = 10000;
9
+ const MEMORY_LIST_LIMIT = 6;
10
+ function truncateText(value, maxChars) {
11
+ if (value.length <= maxChars) {
12
+ return value;
13
+ }
14
+ return `${value.slice(0, Math.max(0, maxChars - 17)).trimEnd()}\n[truncated by Junction]`;
15
+ }
16
+ function unique(values) {
17
+ return Array.from(new Set(values));
18
+ }
19
+ async function pathExists(pathValue) {
20
+ try {
21
+ await access(pathValue);
22
+ return true;
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ async function findRepoRoot(startCwd) {
29
+ let current = path.resolve(startCwd);
30
+ while (true) {
31
+ if (await pathExists(path.join(current, ".git"))) {
32
+ return { repoRoot: current, gitRootDetected: true };
33
+ }
34
+ const parent = path.dirname(current);
35
+ if (parent === current) {
36
+ return {
37
+ repoRoot: path.resolve(startCwd),
38
+ gitRootDetected: false,
39
+ };
40
+ }
41
+ current = parent;
42
+ }
43
+ }
44
+ async function listRootEntries(repoRoot) {
45
+ try {
46
+ const entries = await readdir(repoRoot, { withFileTypes: true });
47
+ return entries
48
+ .filter((entry) => entry.name !== ".git")
49
+ .map((entry) => entry.name)
50
+ .sort((left, right) => left.localeCompare(right))
51
+ .slice(0, ROOT_ENTRY_LIMIT);
52
+ }
53
+ catch {
54
+ return [];
55
+ }
56
+ }
57
+ async function collectManifestPaths(repoRoot) {
58
+ const manifestCandidates = [
59
+ "package.json",
60
+ "pnpm-workspace.yaml",
61
+ "pnpm-lock.yaml",
62
+ "turbo.json",
63
+ "tsconfig.json",
64
+ "tsconfig.base.json",
65
+ "pyproject.toml",
66
+ "Cargo.toml",
67
+ "go.mod",
68
+ ];
69
+ const manifests = [];
70
+ for (const candidate of manifestCandidates) {
71
+ if (await pathExists(path.join(repoRoot, candidate))) {
72
+ manifests.push(candidate);
73
+ }
74
+ }
75
+ return manifests.slice(0, MANIFEST_PATH_LIMIT);
76
+ }
77
+ async function detectPackageManager(repoRoot) {
78
+ const candidates = [
79
+ { fileName: "pnpm-lock.yaml", label: "pnpm" },
80
+ { fileName: "package-lock.json", label: "npm" },
81
+ { fileName: "yarn.lock", label: "yarn" },
82
+ { fileName: "bun.lockb", label: "bun" },
83
+ { fileName: "bun.lock", label: "bun" },
84
+ { fileName: "Cargo.toml", label: "cargo" },
85
+ { fileName: "go.mod", label: "go" },
86
+ { fileName: "pyproject.toml", label: "python" },
87
+ ];
88
+ for (const candidate of candidates) {
89
+ if (await pathExists(path.join(repoRoot, candidate.fileName))) {
90
+ return candidate.label;
91
+ }
92
+ }
93
+ return null;
94
+ }
95
+ async function readInstructionFile(filePath) {
96
+ try {
97
+ const content = (await readFile(filePath, "utf8")).trim();
98
+ if (!content) {
99
+ return null;
100
+ }
101
+ return truncateText(content, INSTRUCTION_CHAR_LIMIT);
102
+ }
103
+ catch {
104
+ return null;
105
+ }
106
+ }
107
+ function getPathChain(repoRoot, cwd) {
108
+ const normalizedRoot = path.resolve(repoRoot);
109
+ const normalizedCwd = path.resolve(cwd);
110
+ if (!normalizedCwd.startsWith(normalizedRoot)) {
111
+ return [normalizedRoot];
112
+ }
113
+ const parts = path
114
+ .relative(normalizedRoot, normalizedCwd)
115
+ .split(path.sep)
116
+ .filter((part) => part.length > 0);
117
+ const chain = [normalizedRoot];
118
+ let current = normalizedRoot;
119
+ for (const part of parts) {
120
+ current = path.join(current, part);
121
+ chain.push(current);
122
+ }
123
+ return chain;
124
+ }
125
+ async function collectInstructionSources(repoRoot, cwd) {
126
+ const sources = [];
127
+ for (const dirPath of getPathChain(repoRoot, cwd)) {
128
+ for (const fileName of REPO_INSTRUCTION_FILE_NAMES) {
129
+ const filePath = path.join(dirPath, fileName);
130
+ const content = await readInstructionFile(filePath);
131
+ if (!content) {
132
+ continue;
133
+ }
134
+ sources.push({
135
+ path: filePath,
136
+ content,
137
+ });
138
+ }
139
+ }
140
+ return sources;
141
+ }
142
+ function promptInputToText(prompt) {
143
+ if (typeof prompt === "string") {
144
+ return prompt.trim();
145
+ }
146
+ return prompt
147
+ .filter((block) => block.type === "text")
148
+ .map((block) => block.text.trim())
149
+ .filter((text) => text.length > 0)
150
+ .join("\n\n")
151
+ .trim();
152
+ }
153
+ function firstNonEmptyLine(value) {
154
+ for (const line of value.split("\n")) {
155
+ const trimmed = line.trim();
156
+ if (trimmed.length > 0) {
157
+ return trimmed;
158
+ }
159
+ }
160
+ return null;
161
+ }
162
+ function summarizeList(values, limit) {
163
+ return unique(values
164
+ .map((value) => value.trim())
165
+ .filter((value) => value.length > 0)
166
+ .slice(0, limit));
167
+ }
168
+ function formatInstructionSources(sources) {
169
+ if (sources.length === 0) {
170
+ return null;
171
+ }
172
+ return sources
173
+ .map((source) => {
174
+ const fileName = path.basename(source.path);
175
+ return [`From ${fileName}:`, source.content].join("\n");
176
+ })
177
+ .join("\n\n");
178
+ }
179
+ function formatSessionState(sessionState) {
180
+ if (!sessionState) {
181
+ return null;
182
+ }
183
+ const lines = [
184
+ `Objective: ${sessionState.objective}`,
185
+ sessionState.modeId ? `Mode: ${sessionState.modeId}` : null,
186
+ sessionState.modelId ? `Model: ${sessionState.modelId}` : null,
187
+ sessionState.thinkingOptionId ? `Thinking: ${sessionState.thinkingOptionId}` : null,
188
+ sessionState.recentActions.length > 0
189
+ ? `Recent actions: ${summarizeList(sessionState.recentActions, MEMORY_LIST_LIMIT).join("; ")}`
190
+ : null,
191
+ sessionState.changedFiles.length > 0
192
+ ? `Changed files: ${summarizeList(sessionState.changedFiles, MEMORY_LIST_LIMIT).join(", ")}`
193
+ : null,
194
+ sessionState.inspectedFiles.length > 0
195
+ ? `Inspected files: ${summarizeList(sessionState.inspectedFiles, MEMORY_LIST_LIMIT).join(", ")}`
196
+ : null,
197
+ `Verification state: ${sessionState.verificationState}`,
198
+ sessionState.lastSuccessfulValidation
199
+ ? `Last passing validation: ${sessionState.lastSuccessfulValidation.command}`
200
+ : null,
201
+ sessionState.lastFailedValidation
202
+ ? `Last failing validation: ${sessionState.lastFailedValidation.command}`
203
+ : null,
204
+ sessionState.blockers.length > 0
205
+ ? `Blockers: ${summarizeList(sessionState.blockers, MEMORY_LIST_LIMIT).join("; ")}`
206
+ : null,
207
+ sessionState.nextRequiredAction
208
+ ? `Next required action: ${sessionState.nextRequiredAction}`
209
+ : null,
210
+ ].filter((line) => typeof line === "string" && line.length > 0);
211
+ return lines.length > 0 ? lines.join("\n") : null;
212
+ }
213
+ function formatLastTurnSummary(summary) {
214
+ if (!summary) {
215
+ return null;
216
+ }
217
+ const lines = [
218
+ `Outcome: ${summary.outcome}`,
219
+ summary.uiSummary ? `Summary: ${summary.uiSummary}` : null,
220
+ summary.actions.length > 0
221
+ ? `Actions: ${summarizeList(summary.actions, MEMORY_LIST_LIMIT).join("; ")}`
222
+ : null,
223
+ summary.changedFiles.length > 0
224
+ ? `Changed files: ${summarizeList(summary.changedFiles, MEMORY_LIST_LIMIT).join(", ")}`
225
+ : null,
226
+ summary.verificationCommands.length > 0
227
+ ? `Verification commands: ${summarizeList(summary.verificationCommands, MEMORY_LIST_LIMIT).join("; ")}`
228
+ : null,
229
+ `Verification state: ${summary.verificationState}`,
230
+ summary.blockers.length > 0
231
+ ? `Blockers: ${summarizeList(summary.blockers, MEMORY_LIST_LIMIT).join("; ")}`
232
+ : null,
233
+ summary.nextRequiredAction ? `Next required action: ${summary.nextRequiredAction}` : null,
234
+ ].filter((line) => typeof line === "string" && line.length > 0);
235
+ return lines.length > 0 ? lines.join("\n") : null;
236
+ }
237
+ function determineTrustState(workspaceSynopsis, instructionSources) {
238
+ if (!workspaceSynopsis.gitRootDetected) {
239
+ return "untrusted";
240
+ }
241
+ if (instructionSources.length === 0) {
242
+ return "restricted";
243
+ }
244
+ return "trusted";
245
+ }
246
+ function createPromptLayer(layer) {
247
+ if (!layer.content.trim()) {
248
+ return null;
249
+ }
250
+ return layer;
251
+ }
252
+ function buildPromptLayers(input) {
253
+ const layers = [
254
+ createPromptLayer({
255
+ id: "base",
256
+ cacheScope: "static",
257
+ title: "Harness Base",
258
+ content: [
259
+ "You are running inside Junction's managed coding-agent harness.",
260
+ "Preserve continuity across turns, reuse known repository facts, and avoid redundant exploration unless facts may have changed.",
261
+ "Prefer tool-verified claims over narrative summaries when deciding whether work is complete.",
262
+ "Be explicit about blockers, verification status, and the next required action.",
263
+ ].join("\n"),
264
+ }),
265
+ createPromptLayer({
266
+ id: "repo_instructions",
267
+ cacheScope: "static",
268
+ title: "Repository Instructions",
269
+ content: formatInstructionSources(input.instructionSources) ??
270
+ "No repository instruction files were discovered in the current path chain.",
271
+ }),
272
+ createPromptLayer({
273
+ id: "workspace",
274
+ cacheScope: "static",
275
+ title: "Workspace Facts",
276
+ content: [
277
+ `Repository root: ${input.workspaceSynopsis.repoRoot}`,
278
+ `Current working directory: ${input.workspaceSynopsis.relativeCwd}`,
279
+ input.workspaceSynopsis.packageManager
280
+ ? `Package manager: ${input.workspaceSynopsis.packageManager}`
281
+ : null,
282
+ input.workspaceSynopsis.manifestPaths.length > 0
283
+ ? `Manifest files: ${input.workspaceSynopsis.manifestPaths.join(", ")}`
284
+ : null,
285
+ input.workspaceSynopsis.rootEntries.length > 0
286
+ ? `Root entries: ${input.workspaceSynopsis.rootEntries.join(", ")}`
287
+ : null,
288
+ ]
289
+ .filter((line) => typeof line === "string" && line.length > 0)
290
+ .join("\n"),
291
+ }),
292
+ createPromptLayer({
293
+ id: "policy",
294
+ cacheScope: "static",
295
+ title: "Harness Policy",
296
+ content: [
297
+ `Trust state: ${input.trustState}`,
298
+ `Provider instruction strategy: ${input.providerInstructionStrategy}`,
299
+ input.trustState === "trusted"
300
+ ? "Repository instructions may be treated as trusted local guidance for this session."
301
+ : "Repository instructions should be treated conservatively; prefer direct inspection over assumptions.",
302
+ ].join("\n"),
303
+ }),
304
+ createPromptLayer({
305
+ id: "session_state",
306
+ cacheScope: "dynamic",
307
+ title: "Current Session State",
308
+ content: [
309
+ `Objective: ${input.objective}`,
310
+ `Task classification: ${input.classification}`,
311
+ input.currentModeId ? `Mode: ${input.currentModeId}` : null,
312
+ input.modelId ? `Model: ${input.modelId}` : null,
313
+ input.thinkingOptionId ? `Thinking: ${input.thinkingOptionId}` : null,
314
+ input.pendingPermissionCount > 0
315
+ ? `Pending permissions: ${input.pendingPermissionCount}`
316
+ : null,
317
+ input.lastError ? `Last error: ${input.lastError}` : null,
318
+ formatSessionState(input.sessionState
319
+ ? {
320
+ ...input.sessionState,
321
+ modeId: input.sessionState.modeId ?? input.currentModeId,
322
+ modelId: input.sessionState.modelId ?? input.modelId,
323
+ thinkingOptionId: input.sessionState.thinkingOptionId ?? input.thinkingOptionId,
324
+ }
325
+ : null),
326
+ ]
327
+ .filter((line) => typeof line === "string" && line.length > 0)
328
+ .join("\n"),
329
+ }),
330
+ createPromptLayer({
331
+ id: "last_turn",
332
+ cacheScope: "dynamic",
333
+ title: "Latest Turn Summary",
334
+ content: formatLastTurnSummary(input.lastTurnSummary) ?? "",
335
+ }),
336
+ ].filter((layer) => layer !== null);
337
+ return layers;
338
+ }
339
+ function renderPromptLayer(layer) {
340
+ return [
341
+ `<junction_layer id="${layer.id}" cache="${layer.cacheScope}">`,
342
+ layer.title,
343
+ layer.content,
344
+ "</junction_layer>",
345
+ ].join("\n");
346
+ }
347
+ export function classifyHarnessTask(prompt) {
348
+ const text = promptInputToText(prompt).toLowerCase();
349
+ if (!text) {
350
+ return "implement";
351
+ }
352
+ if (text.includes("respond with json") ||
353
+ text.includes("json schema") ||
354
+ text.includes("structured output") ||
355
+ text.includes("output schema")) {
356
+ return "structured_output";
357
+ }
358
+ if (text.includes("code review") || text.includes("review this") || text.includes("audit")) {
359
+ return "review";
360
+ }
361
+ if (text.includes("plan") ||
362
+ text.includes("approach") ||
363
+ text.includes("design") ||
364
+ text.includes("spec")) {
365
+ return "plan";
366
+ }
367
+ if (text.includes("debug") ||
368
+ text.includes("investigate") ||
369
+ text.includes("why") ||
370
+ text.includes("broken") ||
371
+ text.includes("failing") ||
372
+ text.includes("error")) {
373
+ return "debug";
374
+ }
375
+ if (text.includes("explain") ||
376
+ text.includes("inspect") ||
377
+ text.includes("understand") ||
378
+ text.includes("what does") ||
379
+ text.includes("where is")) {
380
+ return "inspect";
381
+ }
382
+ return "implement";
383
+ }
384
+ export function buildHarnessObjective(prompt) {
385
+ const text = promptInputToText(prompt);
386
+ const line = firstNonEmptyLine(text);
387
+ return line ? truncateText(line, 240) : "Continue the current task.";
388
+ }
389
+ export function getHarnessSessionExtra(config) {
390
+ const extra = config.extra;
391
+ return extra?.junctionHarness;
392
+ }
393
+ export function setHarnessSessionExtra(config, nextExtra) {
394
+ const existing = getHarnessSessionExtra(config) ?? {};
395
+ config.extra = {
396
+ ...(config.extra ?? {}),
397
+ junctionHarness: {
398
+ ...existing,
399
+ ...nextExtra,
400
+ },
401
+ };
402
+ }
403
+ export function getHarnessSessionState(config) {
404
+ return getHarnessSessionExtra(config)?.sessionState ?? null;
405
+ }
406
+ export function getHarnessLastTurnSummary(config) {
407
+ return getHarnessSessionExtra(config)?.lastTurnSummary ?? null;
408
+ }
409
+ export async function buildWorkspaceSynopsis(cwd) {
410
+ const { repoRoot, gitRootDetected } = await findRepoRoot(cwd);
411
+ const [packageManager, rootEntries, manifestPaths] = await Promise.all([
412
+ detectPackageManager(repoRoot),
413
+ listRootEntries(repoRoot),
414
+ collectManifestPaths(repoRoot),
415
+ ]);
416
+ const relativeCwd = path.relative(repoRoot, cwd) || ".";
417
+ return {
418
+ repoRoot,
419
+ relativeCwd,
420
+ packageManager,
421
+ rootEntries,
422
+ manifestPaths,
423
+ gitRootDetected,
424
+ };
425
+ }
426
+ export async function buildHarnessContext(input) {
427
+ const existingHarnessExtra = getHarnessSessionExtra(input.agent.config);
428
+ const workspaceSynopsis = existingHarnessExtra?.workspaceSynopsis ?? (await buildWorkspaceSynopsis(input.agent.cwd));
429
+ const instructionSources = await collectInstructionSources(workspaceSynopsis.repoRoot, input.agent.cwd);
430
+ const classification = classifyHarnessTask(input.prompt);
431
+ const objective = buildHarnessObjective(input.prompt);
432
+ const sessionState = getHarnessSessionState(input.agent.config);
433
+ const lastTurnSummary = getHarnessLastTurnSummary(input.agent.config);
434
+ const trustState = determineTrustState(workspaceSynopsis, instructionSources);
435
+ const currentModeId = input.agent.currentModeId ?? null;
436
+ const modelId = input.agent.runtimeInfo?.model ?? input.agent.config.model ?? null;
437
+ const thinkingOptionId = input.agent.runtimeInfo?.thinkingOptionId ?? input.agent.config.thinkingOptionId ?? null;
438
+ const promptLayers = buildPromptLayers({
439
+ classification,
440
+ objective,
441
+ providerInstructionStrategy: input.providerInstructionStrategy,
442
+ workspaceSynopsis,
443
+ trustState,
444
+ instructionSources,
445
+ sessionState,
446
+ lastTurnSummary,
447
+ currentModeId,
448
+ modelId,
449
+ thinkingOptionId,
450
+ pendingPermissionCount: input.agent.pendingPermissions.size,
451
+ lastError: input.agent.lastError ?? null,
452
+ });
453
+ return {
454
+ classification,
455
+ objective,
456
+ providerInstructionStrategy: input.providerInstructionStrategy,
457
+ workspaceSynopsis,
458
+ trustState,
459
+ instructionSources,
460
+ promptLayers,
461
+ sessionState,
462
+ lastTurnSummary,
463
+ currentModeId,
464
+ modelId,
465
+ thinkingOptionId,
466
+ pendingPermissionCount: input.agent.pendingPermissions.size,
467
+ lastError: input.agent.lastError ?? null,
468
+ };
469
+ }
470
+ export function compileHarnessSystemPrompt(context) {
471
+ const staticLayers = context.promptLayers.filter((layer) => layer.cacheScope === "static");
472
+ const dynamicLayers = context.promptLayers.filter((layer) => layer.cacheScope === "dynamic");
473
+ const sections = [
474
+ ...staticLayers.map(renderPromptLayer),
475
+ dynamicLayers.length > 0 ? JUNCTION_HARNESS_PROMPT_DYNAMIC_BOUNDARY : null,
476
+ ...dynamicLayers.map(renderPromptLayer),
477
+ ].filter((section) => typeof section === "string" && section.length > 0);
478
+ return truncateText(sections.join("\n\n"), SYSTEM_PROMPT_SECTION_LIMIT);
479
+ }
480
+ export function resolveHarnessBaseSystemPrompt(config) {
481
+ const harnessExtra = getHarnessSessionExtra(config);
482
+ const currentPrompt = typeof config.systemPrompt === "string" && config.systemPrompt.trim().length > 0
483
+ ? config.systemPrompt.trim()
484
+ : undefined;
485
+ if (currentPrompt &&
486
+ currentPrompt !== harnessExtra?.lastCompiledSystemPrompt &&
487
+ currentPrompt !== harnessExtra?.baseSystemPrompt) {
488
+ setHarnessSessionExtra(config, { baseSystemPrompt: currentPrompt });
489
+ return currentPrompt;
490
+ }
491
+ if (harnessExtra?.baseSystemPrompt?.trim()) {
492
+ return harnessExtra.baseSystemPrompt.trim();
493
+ }
494
+ return currentPrompt;
495
+ }
496
+ export function applyHarnessSystemPrompt(config, compiledHarnessPrompt) {
497
+ const basePrompt = resolveHarnessBaseSystemPrompt(config);
498
+ const nextPrompt = [basePrompt, compiledHarnessPrompt]
499
+ .filter((entry) => typeof entry === "string" && entry.trim().length > 0)
500
+ .join("\n\n");
501
+ config.systemPrompt = nextPrompt;
502
+ setHarnessSessionExtra(config, {
503
+ lastCompiledSystemPrompt: nextPrompt,
504
+ promptCacheBoundary: JUNCTION_HARNESS_PROMPT_DYNAMIC_BOUNDARY,
505
+ harnessVersion: JUNCTION_HARNESS_VERSION,
506
+ });
507
+ return nextPrompt;
508
+ }
509
+ export function buildHarnessRuntimeExtra(config) {
510
+ const harnessExtra = getHarnessSessionExtra(config);
511
+ if (!harnessExtra) {
512
+ return null;
513
+ }
514
+ return {
515
+ harnessVersion: harnessExtra.harnessVersion ?? JUNCTION_HARNESS_VERSION,
516
+ providerInstructionStrategy: harnessExtra.providerInstructionStrategy ?? "provider_native",
517
+ promptCacheBoundary: harnessExtra.promptCacheBoundary ?? JUNCTION_HARNESS_PROMPT_DYNAMIC_BOUNDARY,
518
+ contextLayers: harnessExtra.contextLayers ?? [],
519
+ trustState: harnessExtra.trustState ?? "restricted",
520
+ verification: {
521
+ state: harnessExtra.sessionState?.verificationState ?? "not_needed",
522
+ lastValidatedAt: harnessExtra.lastValidatedAt ?? null,
523
+ },
524
+ sessionStateAvailable: harnessExtra.sessionState !== undefined,
525
+ lastTurnSummaryAvailable: harnessExtra.lastTurnSummary !== undefined,
526
+ };
527
+ }
528
+ export function mergeRuntimeInfoWithHarness(runtimeInfo, config) {
529
+ const harnessRuntimeExtra = buildHarnessRuntimeExtra(config);
530
+ if (!harnessRuntimeExtra) {
531
+ return runtimeInfo;
532
+ }
533
+ return {
534
+ ...runtimeInfo,
535
+ extra: {
536
+ ...(runtimeInfo.extra ?? {}),
537
+ junctionHarness: harnessRuntimeExtra,
538
+ },
539
+ };
540
+ }
541
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../src/server/agent/harness/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { AgentTimelineItem } from "../agent-sdk-types.js";
2
+ import type { HarnessSessionState, HarnessTaskClassification, HarnessTurnOutcome, HarnessTurnSummary } from "./types.js";
3
+ export declare function summarizeTurnFromTimeline(input: {
4
+ objective: string;
5
+ classification: HarnessTaskClassification;
6
+ outcome: HarnessTurnOutcome;
7
+ items: readonly AgentTimelineItem[];
8
+ turnStartSeq: number;
9
+ turnEndSeq: number;
10
+ timestamp: string;
11
+ }): HarnessTurnSummary;
12
+ export declare function updateSessionState(existingState: HarnessSessionState | null, summary: HarnessTurnSummary, metadata?: {
13
+ modeId?: string | null;
14
+ modelId?: string | null;
15
+ thinkingOptionId?: string | null;
16
+ }): HarnessSessionState;
17
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/harness/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAwB,MAAM,uBAAuB,CAAC;AACrF,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAyLpB,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,yBAAyB,CAAC;IAC1C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,kBAAkB,CA8FrB;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,mBAAmB,GAAG,IAAI,EACzC,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,CAAC,EAAE;IACT,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GACA,mBAAmB,CAiDrB"}