@junctionpanel/server 0.1.81 → 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.
- package/dist/server/server/agent/agent-manager.d.ts +2 -0
- package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
- package/dist/server/server/agent/agent-manager.js +115 -2
- package/dist/server/server/agent/agent-manager.js.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.d.ts +2 -0
- package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
- package/dist/server/server/agent/agent-sdk-types.js.map +1 -1
- package/dist/server/server/agent/harness/context.d.ts +21 -0
- package/dist/server/server/agent/harness/context.d.ts.map +1 -0
- package/dist/server/server/agent/harness/context.js +541 -0
- package/dist/server/server/agent/harness/context.js.map +1 -0
- package/dist/server/server/agent/harness/memory.d.ts +17 -0
- package/dist/server/server/agent/harness/memory.d.ts.map +1 -0
- package/dist/server/server/agent/harness/memory.js +261 -0
- package/dist/server/server/agent/harness/memory.js.map +1 -0
- package/dist/server/server/agent/harness/types.d.ts +114 -0
- package/dist/server/server/agent/harness/types.d.ts.map +1 -0
- package/dist/server/server/agent/harness/types.js +3 -0
- package/dist/server/server/agent/harness/types.js.map +1 -0
- package/dist/server/server/agent/providers/gemini-agent.d.ts +1 -1
- package/dist/server/server/agent/providers/gemini-agent.d.ts.map +1 -1
- package/dist/server/server/agent/providers/gemini-agent.js +24 -12
- package/dist/server/server/agent/providers/gemini-agent.js.map +1 -1
- package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
- package/dist/server/server/persisted-config.d.ts +4 -4
- package/dist/server/shared/messages.d.ts +20 -20
- 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 @@
|
|
|
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":"AAAA,OAAO,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAShD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EAGX,oBAAoB,EACpB,sBAAsB,EAEtB,sBAAsB,EACtB,gBAAgB,EAIhB,YAAY,EACZ,kBAAkB,EAElB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,0BAA0B,EAE1B,wBAAwB,EAExB,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,8BAA8B,CAAC;AAqBtC,QAAA,MAAM,YAAY,mDAAoD,CAAC;AAavE,KAAK,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAGlD,KAAK,wBAAwB,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AA+B7D,KAAK,mBAAmB,GAAG,OAAO,GAAG,oBAAoB,CAAC;AAwB1D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoD/B,CAAC;AA6EH,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCASjB,CAAC;AAEjB,KAAK,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAGzE,KAAK,yBAAyB,GAAG;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAqRF,wBAAsB,sBAAsB,CAC1C,eAAe,CAAC,EAAE,uBAAuB,GACxC,OAAO,CAAC,mBAAmB,CAAC,CA6C9B;AAED,wBAAgB,kCAAkC,IAAI,IAAI,CAGzD;AA6GD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAgB5E;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG;IACF,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAQA;AAED,wBAAgB,oBAAoB,
|
|
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
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
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")) {
|