@junctionpanel/server 0.1.80 → 0.1.82

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 (34) 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 +24 -12
  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/persisted-config.d.ts +4 -4
  26. package/dist/server/server/session.d.ts.map +1 -1
  27. package/dist/server/server/session.js +7 -9
  28. package/dist/server/server/session.js.map +1 -1
  29. package/dist/server/shared/messages.d.ts +20 -20
  30. package/dist/server/utils/checkout-git.d.ts +2 -0
  31. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  32. package/dist/server/utils/checkout-git.js +74 -29
  33. package/dist/server/utils/checkout-git.js.map +1 -1
  34. package/package.json +2 -2
@@ -0,0 +1,261 @@
1
+ const FILE_LIST_LIMIT = 12;
2
+ const LIST_LIMIT = 8;
3
+ const COMMAND_SNIPPET_LIMIT = 120;
4
+ function unique(values) {
5
+ return Array.from(new Set(values));
6
+ }
7
+ function take(values, limit) {
8
+ return unique(values
9
+ .map((value) => value.trim())
10
+ .filter((value) => value.length > 0)
11
+ .slice(0, limit));
12
+ }
13
+ function shorten(value, limit = COMMAND_SNIPPET_LIMIT) {
14
+ if (value.length <= limit) {
15
+ return value;
16
+ }
17
+ return `${value.slice(0, Math.max(0, limit - 3)).trimEnd()}...`;
18
+ }
19
+ function isValidationCommand(command) {
20
+ const lower = command.trim().toLowerCase();
21
+ if (!lower) {
22
+ return false;
23
+ }
24
+ return (lower.includes("test") ||
25
+ lower.includes("jest") ||
26
+ lower.includes("vitest") ||
27
+ lower.includes("pytest") ||
28
+ lower.includes("build") ||
29
+ lower.includes("typecheck") ||
30
+ lower.includes("tsc -p") ||
31
+ lower.includes("cargo test") ||
32
+ lower.includes("go test"));
33
+ }
34
+ function summarizeAssistantMessage(items) {
35
+ for (let index = items.length - 1; index >= 0; index -= 1) {
36
+ const item = items[index];
37
+ if (!item || item.type !== "assistant_message") {
38
+ continue;
39
+ }
40
+ const firstLine = item.text
41
+ .split("\n")
42
+ .map((line) => line.trim())
43
+ .find((line) => line.length > 0);
44
+ if (firstLine) {
45
+ return firstLine;
46
+ }
47
+ }
48
+ return null;
49
+ }
50
+ function summarizeToolAction(item) {
51
+ const detail = item.detail;
52
+ switch (detail.type) {
53
+ case "read":
54
+ return `Read ${detail.filePath}`;
55
+ case "edit":
56
+ return `Edited ${detail.filePath}`;
57
+ case "write":
58
+ return `Wrote ${detail.filePath}`;
59
+ case "search":
60
+ return `Searched ${detail.query}`;
61
+ case "shell":
62
+ return `Ran ${shorten(detail.command)}`;
63
+ case "sub_agent":
64
+ return detail.description ? `Delegated ${detail.description}` : "Delegated sub-agent work";
65
+ case "workspace_bootstrap":
66
+ return `Bootstrapped ${detail.workspaceName}`;
67
+ case "worktree_setup":
68
+ return `Prepared worktree ${detail.worktreePath}`;
69
+ case "plain_text":
70
+ return detail.label ?? null;
71
+ default:
72
+ return null;
73
+ }
74
+ }
75
+ function buildValidationRecord(command, status, timestamp) {
76
+ return {
77
+ command,
78
+ status,
79
+ timestamp,
80
+ };
81
+ }
82
+ function resolveVerificationState(input) {
83
+ if (input.lastFailedValidation) {
84
+ return "failed";
85
+ }
86
+ if (input.lastSuccessfulValidation) {
87
+ return "passed";
88
+ }
89
+ if (input.changedFiles.length === 0) {
90
+ return "not_needed";
91
+ }
92
+ if (input.outcome === "needs_verification") {
93
+ return "pending";
94
+ }
95
+ return "pending";
96
+ }
97
+ function buildBlockers(input) {
98
+ const blockers = [];
99
+ if (input.outcome === "blocked_on_permission") {
100
+ blockers.push("Waiting for permission approval.");
101
+ }
102
+ if (input.outcome === "blocked_on_feedback") {
103
+ blockers.push("Waiting for user feedback.");
104
+ }
105
+ if (input.verificationState === "pending" &&
106
+ input.changedFiles.length > 0 &&
107
+ input.outcome === "needs_verification") {
108
+ blockers.push("Verification still needed before claiming completion.");
109
+ }
110
+ if (input.outcome === "provider_error") {
111
+ blockers.push("Provider or execution error interrupted the turn.");
112
+ }
113
+ if (input.lastFailedValidation) {
114
+ blockers.push(`Verification failed: ${input.lastFailedValidation.command}`);
115
+ }
116
+ if (input.assistantSummary && input.assistantSummary.toLowerCase().includes("blocked")) {
117
+ blockers.push(input.assistantSummary);
118
+ }
119
+ return take(blockers, LIST_LIMIT);
120
+ }
121
+ function buildNextRequiredAction(input) {
122
+ if (input.lastFailedValidation) {
123
+ return `Fix the failing validation: ${input.lastFailedValidation.command}`;
124
+ }
125
+ if (input.changedFiles.length > 0 &&
126
+ input.verificationState === "pending" &&
127
+ (input.classification === "implement" ||
128
+ input.classification === "debug" ||
129
+ input.classification === "review")) {
130
+ return "Run verification before declaring completion.";
131
+ }
132
+ return input.blockers[0] ?? null;
133
+ }
134
+ function buildUiSummary(actions, assistantSummary) {
135
+ if (actions.length === 0) {
136
+ return assistantSummary;
137
+ }
138
+ if (actions.length === 1) {
139
+ return actions[0];
140
+ }
141
+ return `${actions[0]}; ${actions[1]}`;
142
+ }
143
+ export function summarizeTurnFromTimeline(input) {
144
+ const inspectedFiles = [];
145
+ const changedFiles = [];
146
+ const commands = [];
147
+ const verificationCommands = [];
148
+ const actions = [];
149
+ let lastSuccessfulValidation = null;
150
+ let lastFailedValidation = null;
151
+ for (const item of input.items) {
152
+ if (item.type !== "tool_call") {
153
+ continue;
154
+ }
155
+ const action = summarizeToolAction(item);
156
+ if (action) {
157
+ actions.push(action);
158
+ }
159
+ switch (item.detail.type) {
160
+ case "read":
161
+ inspectedFiles.push(item.detail.filePath);
162
+ break;
163
+ case "edit":
164
+ case "write":
165
+ changedFiles.push(item.detail.filePath);
166
+ break;
167
+ case "shell": {
168
+ commands.push(item.detail.command);
169
+ if (!isValidationCommand(item.detail.command)) {
170
+ break;
171
+ }
172
+ verificationCommands.push(item.detail.command);
173
+ if (item.status === "completed") {
174
+ lastSuccessfulValidation = buildValidationRecord(item.detail.command, "passed", input.timestamp);
175
+ }
176
+ else if (item.status === "failed") {
177
+ lastFailedValidation = buildValidationRecord(item.detail.command, "failed", input.timestamp);
178
+ }
179
+ break;
180
+ }
181
+ default:
182
+ break;
183
+ }
184
+ }
185
+ const assistantSummary = summarizeAssistantMessage(input.items);
186
+ const verificationState = resolveVerificationState({
187
+ changedFiles,
188
+ lastSuccessfulValidation,
189
+ lastFailedValidation,
190
+ outcome: input.outcome,
191
+ });
192
+ const blockers = buildBlockers({
193
+ outcome: input.outcome,
194
+ verificationState,
195
+ changedFiles,
196
+ lastFailedValidation,
197
+ assistantSummary,
198
+ });
199
+ const nextRequiredAction = buildNextRequiredAction({
200
+ classification: input.classification,
201
+ changedFiles,
202
+ verificationState,
203
+ lastFailedValidation,
204
+ blockers,
205
+ });
206
+ return {
207
+ timestamp: input.timestamp,
208
+ classification: input.classification,
209
+ outcome: input.outcome,
210
+ objective: input.objective,
211
+ uiSummary: buildUiSummary(actions, assistantSummary),
212
+ actions: take(actions, LIST_LIMIT),
213
+ inspectedFiles: take(inspectedFiles, FILE_LIST_LIMIT),
214
+ changedFiles: take(changedFiles, FILE_LIST_LIMIT),
215
+ commands: take(commands, LIST_LIMIT),
216
+ verificationCommands: take(verificationCommands, LIST_LIMIT),
217
+ verificationState,
218
+ lastSuccessfulValidation,
219
+ lastFailedValidation,
220
+ blockers,
221
+ nextRequiredAction,
222
+ turnStartSeq: input.turnStartSeq,
223
+ turnEndSeq: input.turnEndSeq,
224
+ };
225
+ }
226
+ export function updateSessionState(existingState, summary, metadata) {
227
+ const recentActions = take([...(existingState?.recentActions ?? []), ...summary.actions], LIST_LIMIT);
228
+ const inspectedFiles = take([...(existingState?.inspectedFiles ?? []), ...summary.inspectedFiles], FILE_LIST_LIMIT);
229
+ const changedFiles = take([...(existingState?.changedFiles ?? []), ...summary.changedFiles], FILE_LIST_LIMIT);
230
+ let verificationState = existingState?.verificationState ?? "not_needed";
231
+ if (summary.lastFailedValidation) {
232
+ verificationState = "failed";
233
+ }
234
+ else if (summary.lastSuccessfulValidation) {
235
+ verificationState = "passed";
236
+ }
237
+ else if (summary.changedFiles.length > 0) {
238
+ verificationState = summary.verificationState;
239
+ }
240
+ const blockers = summary.outcome === "completed" && summary.verificationState !== "failed"
241
+ ? []
242
+ : take([...(existingState?.blockers ?? []), ...summary.blockers], LIST_LIMIT);
243
+ return {
244
+ objective: summary.objective || existingState?.objective || "Continue the current task.",
245
+ modeId: metadata?.modeId ?? existingState?.modeId ?? null,
246
+ modelId: metadata?.modelId ?? existingState?.modelId ?? null,
247
+ thinkingOptionId: metadata?.thinkingOptionId ?? existingState?.thinkingOptionId ?? null,
248
+ recentActions,
249
+ inspectedFiles,
250
+ changedFiles,
251
+ verificationState,
252
+ lastSuccessfulValidation: summary.lastSuccessfulValidation ?? existingState?.lastSuccessfulValidation ?? null,
253
+ lastFailedValidation: summary.lastFailedValidation ??
254
+ (summary.lastSuccessfulValidation ? null : existingState?.lastFailedValidation ?? null),
255
+ blockers,
256
+ nextRequiredAction: summary.nextRequiredAction ?? existingState?.nextRequiredAction ?? null,
257
+ lastOutcome: summary.outcome,
258
+ lastUpdatedAt: summary.timestamp,
259
+ };
260
+ }
261
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../../src/server/agent/harness/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ export declare const JUNCTION_HARNESS_VERSION = "v2";
2
+ export declare const JUNCTION_HARNESS_PROMPT_DYNAMIC_BOUNDARY = "<junction_harness_dynamic_boundary />";
3
+ export type HarnessTaskClassification = "inspect" | "plan" | "implement" | "debug" | "review" | "structured_output";
4
+ export type HarnessTurnOutcome = "completed" | "blocked_on_permission" | "blocked_on_feedback" | "needs_verification" | "provider_error" | "canceled";
5
+ export type HarnessWorkspaceSynopsis = {
6
+ repoRoot: string;
7
+ relativeCwd: string;
8
+ packageManager: string | null;
9
+ rootEntries: string[];
10
+ manifestPaths: string[];
11
+ gitRootDetected: boolean;
12
+ };
13
+ export type HarnessInstructionSource = {
14
+ path: string;
15
+ content: string;
16
+ };
17
+ export type HarnessPromptLayerId = "base" | "repo_instructions" | "workspace" | "policy" | "session_state" | "last_turn";
18
+ export type HarnessPromptLayer = {
19
+ id: HarnessPromptLayerId;
20
+ cacheScope: "static" | "dynamic";
21
+ title: string;
22
+ content: string;
23
+ };
24
+ export type HarnessTrustState = "trusted" | "restricted" | "untrusted";
25
+ export type HarnessVerificationState = "not_needed" | "pending" | "passed" | "failed";
26
+ export type HarnessValidationRecord = {
27
+ command: string;
28
+ status: "passed" | "failed";
29
+ timestamp: string;
30
+ };
31
+ export type HarnessTurnSummary = {
32
+ timestamp: string;
33
+ classification: HarnessTaskClassification;
34
+ outcome: HarnessTurnOutcome;
35
+ objective: string;
36
+ uiSummary: string | null;
37
+ actions: string[];
38
+ inspectedFiles: string[];
39
+ changedFiles: string[];
40
+ commands: string[];
41
+ verificationCommands: string[];
42
+ verificationState: HarnessVerificationState;
43
+ lastSuccessfulValidation: HarnessValidationRecord | null;
44
+ lastFailedValidation: HarnessValidationRecord | null;
45
+ blockers: string[];
46
+ nextRequiredAction: string | null;
47
+ turnStartSeq: number;
48
+ turnEndSeq: number;
49
+ };
50
+ export type HarnessSessionState = {
51
+ objective: string;
52
+ modeId: string | null;
53
+ modelId: string | null;
54
+ thinkingOptionId: string | null;
55
+ recentActions: string[];
56
+ inspectedFiles: string[];
57
+ changedFiles: string[];
58
+ verificationState: HarnessVerificationState;
59
+ lastSuccessfulValidation: HarnessValidationRecord | null;
60
+ lastFailedValidation: HarnessValidationRecord | null;
61
+ blockers: string[];
62
+ nextRequiredAction: string | null;
63
+ lastOutcome: HarnessTurnOutcome | null;
64
+ lastUpdatedAt: string;
65
+ };
66
+ export type JunctionHarnessSessionExtra = {
67
+ baseSystemPrompt?: string;
68
+ lastCompiledSystemPrompt?: string;
69
+ workspaceSynopsis?: HarnessWorkspaceSynopsis;
70
+ trustState?: HarnessTrustState;
71
+ promptCacheBoundary?: string;
72
+ contextLayers?: HarnessPromptLayerId[];
73
+ sessionState?: HarnessSessionState;
74
+ lastTurnSummary?: HarnessTurnSummary;
75
+ lastValidatedAt?: string | null;
76
+ currentTurn?: {
77
+ classification: HarnessTaskClassification;
78
+ objective: string;
79
+ turnStartSeq: number;
80
+ startedAt: string;
81
+ };
82
+ providerInstructionStrategy?: string;
83
+ harnessVersion?: string;
84
+ };
85
+ export type JunctionHarnessRuntimeExtra = {
86
+ harnessVersion: string;
87
+ providerInstructionStrategy: string;
88
+ promptCacheBoundary: string;
89
+ contextLayers: HarnessPromptLayerId[];
90
+ trustState: HarnessTrustState;
91
+ verification: {
92
+ state: HarnessVerificationState;
93
+ lastValidatedAt: string | null;
94
+ };
95
+ sessionStateAvailable: boolean;
96
+ lastTurnSummaryAvailable: boolean;
97
+ };
98
+ export type HarnessContext = {
99
+ classification: HarnessTaskClassification;
100
+ objective: string;
101
+ providerInstructionStrategy: string;
102
+ workspaceSynopsis: HarnessWorkspaceSynopsis;
103
+ trustState: HarnessTrustState;
104
+ instructionSources: HarnessInstructionSource[];
105
+ promptLayers: HarnessPromptLayer[];
106
+ sessionState: HarnessSessionState | null;
107
+ lastTurnSummary: HarnessTurnSummary | null;
108
+ currentModeId: string | null;
109
+ modelId: string | null;
110
+ thinkingOptionId: string | null;
111
+ pendingPermissionCount: number;
112
+ lastError: string | null;
113
+ };
114
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/harness/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export const JUNCTION_HARNESS_VERSION = "v2";
2
+ export const JUNCTION_HARNESS_PROMPT_DYNAMIC_BOUNDARY = "<junction_harness_dynamic_boundary />";
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/server/agent/harness/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,wCAAwC,GACnD,uCAAuC,CAAC"}
@@ -694,7 +694,7 @@ export declare function getRequestedGeminiSessionState(config: {
694
694
  modeId: GeminiModeId | null;
695
695
  modelId: string | null;
696
696
  };
697
- export declare function toGeminiPromptBlocks(prompt: AgentPromptInput): acp.ContentBlock[];
697
+ export declare function toGeminiPromptBlocks(prompt: AgentPromptInput, systemPrompt?: string | null): acp.ContentBlock[];
698
698
  export declare function toGeminiToolTimelineItem(params: {
699
699
  toolName: string;
700
700
  callId?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-agent.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/providers/gemini-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gemini-agent.d.ts","sourceRoot":"","sources":["../../../../../src/server/agent/providers/gemini-agent.ts"],"names":[],"mappings":"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"}
@@ -504,17 +504,29 @@ export function getRequestedGeminiSessionState(config) {
504
504
  : null,
505
505
  };
506
506
  }
507
- export function toGeminiPromptBlocks(prompt) {
508
- if (typeof prompt === "string") {
509
- return [{ type: "text", text: prompt }];
510
- }
511
- return prompt.map((block) => block.type === "text"
512
- ? { type: "text", text: block.text }
513
- : {
514
- type: "image",
515
- data: block.data,
516
- mimeType: block.mimeType,
517
- });
507
+ export function toGeminiPromptBlocks(prompt, systemPrompt) {
508
+ const promptBlocks = typeof prompt === "string"
509
+ ? [{ type: "text", text: prompt }]
510
+ : prompt.map((block) => block.type === "text"
511
+ ? { type: "text", text: block.text }
512
+ : {
513
+ type: "image",
514
+ data: block.data,
515
+ mimeType: block.mimeType,
516
+ });
517
+ const normalizedSystemPrompt = typeof systemPrompt === "string" ? systemPrompt.trim() : "";
518
+ if (!normalizedSystemPrompt) {
519
+ return promptBlocks;
520
+ }
521
+ const systemPromptBlock = {
522
+ type: "text",
523
+ text: [
524
+ '<junction_context source="system_fallback">',
525
+ normalizedSystemPrompt,
526
+ "</junction_context>",
527
+ ].join("\n"),
528
+ };
529
+ return [systemPromptBlock, ...promptBlocks];
518
530
  }
519
531
  function normalizeToolStatus(status) {
520
532
  const normalized = status?.trim().toLowerCase() ?? "";
@@ -1700,7 +1712,7 @@ class GeminiAgentSession {
1700
1712
  try {
1701
1713
  const response = await connection.prompt({
1702
1714
  sessionId: this.sessionId,
1703
- prompt: toGeminiPromptBlocks(prompt),
1715
+ prompt: toGeminiPromptBlocks(prompt, this.config.systemPrompt),
1704
1716
  });
1705
1717
  if (response.stopReason === "cancelled") {
1706
1718
  if (!this.finalizeActiveTurn(turnState, "canceled")) {