bkper 5.3.3 → 5.3.4
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/lib/agent/extensions/builtins.d.ts +2 -1
- package/lib/agent/extensions/builtins.d.ts.map +1 -1
- package/lib/agent/extensions/builtins.js +2 -6
- package/lib/agent/extensions/builtins.js.map +1 -1
- package/lib/agent/extensions/handoff-goal-editor.d.ts +18 -28
- package/lib/agent/extensions/handoff-goal-editor.d.ts.map +1 -1
- package/lib/agent/extensions/handoff-goal-editor.js +27 -36
- package/lib/agent/extensions/handoff-goal-editor.js.map +1 -1
- package/lib/agent/extensions/handoff.d.ts +3 -1
- package/lib/agent/extensions/handoff.d.ts.map +1 -1
- package/lib/agent/extensions/handoff.js +47 -24
- package/lib/agent/extensions/handoff.js.map +1 -1
- package/lib/agent/interactive/interactive-mode.d.ts +0 -1
- package/lib/agent/interactive/interactive-mode.d.ts.map +1 -1
- package/lib/agent/interactive/interactive-mode.js +2 -22
- package/lib/agent/interactive/interactive-mode.js.map +1 -1
- package/lib/agent/interactive/run-agent-mode.d.ts.map +1 -1
- package/lib/agent/interactive/run-agent-mode.js +8 -1
- package/lib/agent/interactive/run-agent-mode.js.map +1 -1
- package/lib/agent/pi-shared-modules.d.ts +2 -1
- package/lib/agent/pi-shared-modules.d.ts.map +1 -1
- package/lib/agent/pi-shared-modules.js +1 -1
- package/lib/agent/pi-shared-modules.js.map +1 -1
- package/lib/agent/system-prompt.d.ts.map +1 -1
- package/lib/agent/system-prompt.js +1 -8
- package/lib/agent/system-prompt.js.map +1 -1
- package/lib/docs/index.md +0 -3
- package/package.json +1 -2
- package/lib/agent/core-concepts-routing.d.ts +0 -9
- package/lib/agent/core-concepts-routing.d.ts.map +0 -1
- package/lib/agent/core-concepts-routing.js +0 -34
- package/lib/agent/core-concepts-routing.js.map +0 -1
- package/lib/agent/extensions/core-concepts-preload.d.ts +0 -27
- package/lib/agent/extensions/core-concepts-preload.d.ts.map +0 -1
- package/lib/agent/extensions/core-concepts-preload.js +0 -122
- package/lib/agent/extensions/core-concepts-preload.js.map +0 -1
- package/lib/agent/extensions/prompt-routing.d.ts +0 -12
- package/lib/agent/extensions/prompt-routing.d.ts.map +0 -1
- package/lib/agent/extensions/prompt-routing.js +0 -38
- package/lib/agent/extensions/prompt-routing.js.map +0 -1
- package/lib/agent/interactive/pending-user-message.d.ts +0 -24
- package/lib/agent/interactive/pending-user-message.d.ts.map +0 -1
- package/lib/agent/interactive/pending-user-message.js +0 -82
- package/lib/agent/interactive/pending-user-message.js.map +0 -1
- package/lib/agent/prompt-routing.d.ts +0 -33
- package/lib/agent/prompt-routing.d.ts.map +0 -1
- package/lib/agent/prompt-routing.js +0 -106
- package/lib/agent/prompt-routing.js.map +0 -1
|
@@ -2,6 +2,7 @@ import { type ExtensionAPI, type LoadExtensionsResult, type QuietStartup } from
|
|
|
2
2
|
import { runStartupMaintenance } from '../startup-maintenance.js';
|
|
3
3
|
import { type ProviderCredentialManager } from './auth-commands.js';
|
|
4
4
|
import { type HandoffCommandDispatcher } from './handoff.js';
|
|
5
|
+
import type { HandoffGoalEditor } from './handoff-goal-editor.js';
|
|
5
6
|
type ExtensionLoadError = {
|
|
6
7
|
path: string;
|
|
7
8
|
error: string;
|
|
@@ -19,6 +20,6 @@ export declare function normalizeBkperAgentExtensionErrors(errors: ExtensionLoad
|
|
|
19
20
|
export declare function normalizeBkperAgentExtensions(base: LoadExtensionsResult, options: {
|
|
20
21
|
verbose: boolean;
|
|
21
22
|
}): LoadExtensionsResult;
|
|
22
|
-
export declare function registerBkperAgentBuiltins(pi: ExtensionAPI, startupMaintenance?: typeof runStartupMaintenance, settingsManager?: BuiltinsSettings, env?: Record<string, string | undefined>, credentialManager?: ProviderCredentialManager, dispatchHandoffCommand?: HandoffCommandDispatcher): void;
|
|
23
|
+
export declare function registerBkperAgentBuiltins(pi: ExtensionAPI, startupMaintenance?: typeof runStartupMaintenance, settingsManager?: BuiltinsSettings, env?: Record<string, string | undefined>, credentialManager?: ProviderCredentialManager, dispatchHandoffCommand?: HandoffCommandDispatcher, editGoal?: HandoffGoalEditor): void;
|
|
23
24
|
export {};
|
|
24
25
|
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAEH,KAAK,yBAAyB,EACjC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EAMH,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAEH,KAAK,yBAAyB,EACjC,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAGH,KAAK,wBAAwB,EAChC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AAGhE,KAAK,kBAAkB,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACpB,eAAe,IAAI,YAAY,CAAC;IAChC,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAKF,eAAO,MAAM,mCAAmC,0BAA0B,CAAC;AAC3E,eAAO,MAAM,mCAAmC,kCAAkC,CAAC;AAGnF,wBAAgB,qCAAqC,CACjD,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACtD,OAAO,CAET;AAyBD,wBAAgB,kCAAkC,CAC9C,MAAM,EAAE,kBAAkB,EAAE,EAC5B,OAAO,EAAE;IAAC,OAAO,EAAE,OAAO,CAAA;CAAC,GAC5B,kBAAkB,EAAE,CAatB;AAED,wBAAgB,6BAA6B,CACzC,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE;IAAC,OAAO,EAAE,OAAO,CAAA;CAAC,GAC5B,oBAAoB,CAMtB;AAED,wBAAgB,0BAA0B,CACtC,EAAE,EAAE,YAAY,EAChB,kBAAkB,GAAE,OAAO,qBAA6C,EACxE,eAAe,CAAC,EAAE,gBAAgB,EAClC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,iBAAiB,CAAC,EAAE,yBAAyB,EAC7C,sBAAsB,CAAC,EAAE,wBAAwB,EACjD,QAAQ,CAAC,EAAE,iBAAiB,GAC7B,IAAI,CAuBN"}
|
|
@@ -2,8 +2,6 @@ import { createCodemodeExtension, createMcpExtension, createToolSearchExtension,
|
|
|
2
2
|
import { runStartupMaintenance } from '../startup-maintenance.js';
|
|
3
3
|
import { registerBkperAgentAuthExtension, } from './auth-commands.js';
|
|
4
4
|
import { getBkperAiBaseUrlOverride, registerBkperAiProvider, } from './bkper-ai-provider.js';
|
|
5
|
-
import { registerBkperCoreConceptsPreloadExtension } from './core-concepts-preload.js';
|
|
6
|
-
import { registerPromptRoutingExtension } from './prompt-routing.js';
|
|
7
5
|
import { getBkperHandoffShortcutFromFile, registerBkperHandoffExtension, } from './handoff.js';
|
|
8
6
|
import { registerBkperAgentStartupExtension } from './startup.js';
|
|
9
7
|
// Pi currently labels inline extension factories as <inline:N>.
|
|
@@ -42,14 +40,12 @@ export function normalizeBkperAgentExtensionErrors(errors, options) {
|
|
|
42
40
|
export function normalizeBkperAgentExtensions(base, options) {
|
|
43
41
|
return Object.assign(Object.assign({}, base), { extensions: base.extensions.map(normalizeBkperAgentExtension), errors: normalizeBkperAgentExtensionErrors(base.errors, options) });
|
|
44
42
|
}
|
|
45
|
-
export function registerBkperAgentBuiltins(pi, startupMaintenance = runStartupMaintenance, settingsManager, env = process.env, credentialManager, dispatchHandoffCommand) {
|
|
43
|
+
export function registerBkperAgentBuiltins(pi, startupMaintenance = runStartupMaintenance, settingsManager, env = process.env, credentialManager, dispatchHandoffCommand, editGoal) {
|
|
46
44
|
const bkperAiBaseUrlOverride = getBkperAiBaseUrlOverride(env);
|
|
47
|
-
const promptRouter = registerPromptRoutingExtension(pi);
|
|
48
|
-
registerBkperCoreConceptsPreloadExtension(pi, undefined, promptRouter);
|
|
49
45
|
registerBkperAgentStartupExtension(pi, startupMaintenance, settingsManager, bkperAiBaseUrlOverride);
|
|
50
46
|
registerBkperAgentAuthExtension(pi, undefined, credentialManager);
|
|
51
47
|
registerBkperAiProvider(pi, env);
|
|
52
|
-
registerBkperHandoffExtension(pi, dispatchHandoffCommand, getBkperHandoffShortcutFromFile(getAgentDir()));
|
|
48
|
+
registerBkperHandoffExtension(pi, dispatchHandoffCommand, getBkperHandoffShortcutFromFile(getAgentDir()), { editGoal });
|
|
53
49
|
// Registered inactive; the Bkper default tool selection activates it.
|
|
54
50
|
createCodemodeExtension()(pi);
|
|
55
51
|
// Connects servers the user configures in mcp.json; none are configured by default.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../../src/agent/extensions/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,GAKd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACH,+BAA+B,GAElC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,yBAAyB,EACzB,uBAAuB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../../src/agent/extensions/builtins.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
1
|
+
import { type ExtensionContext } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
import { type PromptHistoryRepository } from '../interactive/prompt-history-store.js';
|
|
3
3
|
export declare const HANDOFF_GOAL_EDITOR_TITLE = "Next session goal";
|
|
4
4
|
export interface HandoffPromptTemplate {
|
|
5
5
|
name: string;
|
|
@@ -7,32 +7,22 @@ export interface HandoffPromptTemplate {
|
|
|
7
7
|
argumentHint?: string;
|
|
8
8
|
content: string;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export interface HandoffGoalEditorHost {
|
|
23
|
-
showExtensionEditor(title: string, prefill?: string): Promise<string | undefined>;
|
|
24
|
-
extensionEditor?: {
|
|
25
|
-
editor?: HandoffGoalEditor;
|
|
26
|
-
};
|
|
27
|
-
session?: {
|
|
28
|
-
promptTemplates: ReadonlyArray<HandoffPromptTemplate>;
|
|
29
|
-
};
|
|
30
|
-
sessionManager?: {
|
|
31
|
-
getCwd(): string;
|
|
32
|
-
};
|
|
10
|
+
export type HandoffGoalEditorResult = {
|
|
11
|
+
status: 'submitted';
|
|
12
|
+
text: string;
|
|
13
|
+
} | {
|
|
14
|
+
status: 'cancelled';
|
|
15
|
+
text: string;
|
|
16
|
+
};
|
|
17
|
+
export type HandoffGoalEditor = (prefill: string, context: ExtensionContext) => Promise<HandoffGoalEditorResult>;
|
|
18
|
+
export interface HandoffGoalEditorOptions {
|
|
19
|
+
templates?: ReadonlyArray<HandoffPromptTemplate>;
|
|
20
|
+
history?: PromptHistoryRepository;
|
|
21
|
+
externalEditorCommand?: string;
|
|
33
22
|
}
|
|
34
23
|
export declare function expandHandoffGoalTemplate(goal: string, templates: ReadonlyArray<HandoffPromptTemplate>): string;
|
|
35
|
-
export declare function
|
|
36
|
-
|
|
37
|
-
|
|
24
|
+
export declare function editHandoffGoal(prefill: string, context: {
|
|
25
|
+
ui: Pick<ExtensionContext['ui'], 'custom'>;
|
|
26
|
+
cwd: string;
|
|
27
|
+
}, options?: HandoffGoalEditorOptions): Promise<HandoffGoalEditorResult>;
|
|
38
28
|
//# sourceMappingURL=handoff-goal-editor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff-goal-editor.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/handoff-goal-editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"handoff-goal-editor.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/handoff-goal-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,gBAAgB,EACxB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAGH,KAAK,uBAAuB,EAC/B,MAAM,wCAAwC,CAAC;AAEhD,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,uBAAuB,GAC7B;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GACnC;IAAC,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,CAAC;AAE1C,MAAM,MAAM,iBAAiB,GAAG,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,KACxB,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAEtC,MAAM,WAAW,wBAAwB;IACrC,SAAS,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC;AA+DD,wBAAgB,yBAAyB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,aAAa,CAAC,qBAAqB,CAAC,GAChD,MAAM,CAYR;AAuDD,wBAAsB,eAAe,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAC,EAClE,OAAO,GAAE,wBAA6B,GACvC,OAAO,CAAC,uBAAuB,CAAC,CA8BlC"}
|
|
@@ -7,8 +7,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
10
|
+
import { ExtensionEditorComponent, getAgentDir, } from '@earendil-works/pi-coding-agent';
|
|
11
|
+
import { CombinedAutocompleteProvider, Editor } from '../pi-shared-modules.js';
|
|
12
|
+
import { installPromptHistorySearch } from '../interactive/prompt-history-search.js';
|
|
13
|
+
import { FilePromptHistory, getPromptHistoryPath, } from '../interactive/prompt-history-store.js';
|
|
12
14
|
export const HANDOFF_GOAL_EDITOR_TITLE = 'Next session goal';
|
|
13
15
|
function parseCommandArgs(argsString) {
|
|
14
16
|
const args = [];
|
|
@@ -108,42 +110,31 @@ function createPromptTemplateAutocompleteProvider(templates, cwd) {
|
|
|
108
110
|
shouldTriggerFileCompletion: () => false,
|
|
109
111
|
};
|
|
110
112
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
const result = showExtensionEditor(title, prefill);
|
|
118
|
-
queueMicrotask(() => {
|
|
119
|
-
var _a;
|
|
120
|
-
const editor = (_a = host.extensionEditor) === null || _a === void 0 ? void 0 : _a.editor;
|
|
121
|
-
if ((editor === null || editor === void 0 ? void 0 : editor.getText) && editor.setText && editor.handleInput) {
|
|
122
|
-
installPromptHistorySearch(editor, history, false);
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
const goal = yield result;
|
|
126
|
-
if (goal === null || goal === void 0 ? void 0 : goal.trim()) {
|
|
127
|
-
history.record(goal, 'handoff');
|
|
128
|
-
}
|
|
129
|
-
return goal;
|
|
130
|
-
});
|
|
113
|
+
function getDialogEditor(component) {
|
|
114
|
+
// Use the public component tree rather than Pi's private editor field.
|
|
115
|
+
const editor = component.children.find((child) => child instanceof Editor);
|
|
116
|
+
if (!editor)
|
|
117
|
+
throw new Error('Pi handoff dialog does not contain an editor.');
|
|
118
|
+
return editor;
|
|
131
119
|
}
|
|
132
|
-
export function
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
120
|
+
export function editHandoffGoal(prefill_1, context_1) {
|
|
121
|
+
return __awaiter(this, arguments, void 0, function* (prefill, context, options = {}) {
|
|
122
|
+
var _a, _b;
|
|
123
|
+
const templates = [...((_a = options.templates) !== null && _a !== void 0 ? _a : [])];
|
|
124
|
+
const history = (_b = options.history) !== null && _b !== void 0 ? _b : new FilePromptHistory(getPromptHistoryPath(getAgentDir()));
|
|
125
|
+
const result = yield context.ui.custom((tui, _theme, keybindings, done) => {
|
|
126
|
+
const component = new ExtensionEditorComponent(tui, keybindings, HANDOFF_GOAL_EDITOR_TITLE, prefill, text => done({ status: 'submitted', text }), () => done({ status: 'cancelled', text: editor.getText() }), undefined, options.externalEditorCommand);
|
|
127
|
+
const editor = getDialogEditor(component);
|
|
128
|
+
editor.setAutocompleteProvider(createPromptTemplateAutocompleteProvider(templates, context.cwd));
|
|
129
|
+
installPromptHistorySearch(editor, history, false);
|
|
130
|
+
return component;
|
|
131
|
+
});
|
|
132
|
+
if (result.status === 'submitted') {
|
|
133
|
+
if (result.text.trim())
|
|
134
|
+
history.record(result.text, 'handoff');
|
|
135
|
+
return Object.assign(Object.assign({}, result), { text: expandHandoffGoalTemplate(result.text, templates) });
|
|
144
136
|
}
|
|
145
|
-
|
|
146
|
-
return goal === undefined ? undefined : expandHandoffGoalTemplate(goal, templates);
|
|
137
|
+
return result;
|
|
147
138
|
});
|
|
148
139
|
}
|
|
149
140
|
//# sourceMappingURL=handoff-goal-editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff-goal-editor.js","sourceRoot":"","sources":["../../../src/agent/extensions/handoff-goal-editor.ts"],"names":[],"mappings":";;;;;;;;;
|
|
1
|
+
{"version":3,"file":"handoff-goal-editor.js","sourceRoot":"","sources":["../../../src/agent/extensions/handoff-goal-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { type ExtensionAPI, type ExtensionContext } from '@earendil-works/pi-coding-agent';
|
|
2
2
|
import type { KeyId } from '@earendil-works/pi-tui';
|
|
3
|
+
import { type HandoffGoalEditor } from './handoff-goal-editor.js';
|
|
3
4
|
export interface HandoffGenerationRequest {
|
|
4
5
|
conversation: string;
|
|
5
6
|
goal?: string;
|
|
6
7
|
}
|
|
7
8
|
export interface HandoffDependencies {
|
|
8
9
|
generatePrompt(request: HandoffGenerationRequest, context: ExtensionContext): Promise<string>;
|
|
10
|
+
editGoal: HandoffGoalEditor;
|
|
9
11
|
}
|
|
10
12
|
export type HandoffCommandDispatcher = (command: string) => Promise<void>;
|
|
11
13
|
type KeybindingsConfigValue = string | string[] | undefined;
|
|
12
14
|
type KeybindingsConfig = Record<string, KeybindingsConfigValue>;
|
|
13
15
|
export declare function getBkperHandoffShortcut(bindings: KeybindingsConfig): KeyId | undefined;
|
|
14
16
|
export declare function getBkperHandoffShortcutFromFile(agentDir: string): KeyId | undefined;
|
|
15
|
-
export declare function registerBkperHandoffExtension(pi: Pick<ExtensionAPI, 'registerCommand' | 'registerShortcut'>, dispatchCommand?: HandoffCommandDispatcher, handoffShortcut?: KeyId, dependencies?: HandoffDependencies): void;
|
|
17
|
+
export declare function registerBkperHandoffExtension(pi: Pick<ExtensionAPI, 'registerCommand' | 'registerShortcut'>, dispatchCommand?: HandoffCommandDispatcher, handoffShortcut?: KeyId, dependencies?: Partial<HandoffDependencies>): void;
|
|
16
18
|
export {};
|
|
17
19
|
//# sourceMappingURL=handoff.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/handoff.ts"],"names":[],"mappings":"AAGA,OAAO,EAIH,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"handoff.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/handoff.ts"],"names":[],"mappings":"AAGA,OAAO,EAIH,KAAK,YAAY,EAEjB,KAAK,gBAAgB,EACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAkB,KAAK,iBAAiB,EAAC,MAAM,0BAA0B,CAAC;AA4BjF,MAAM,WAAW,wBAAwB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAChC,cAAc,CAAC,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9F,QAAQ,EAAE,iBAAiB,CAAC;CAC/B;AAED,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1E,KAAK,sBAAsB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AAC5D,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;AAqChE,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,KAAK,GAAG,SAAS,CAItF;AAED,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAwBnF;AA6ID,wBAAgB,6BAA6B,CACzC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,iBAAiB,GAAG,kBAAkB,CAAC,EAC9D,eAAe,CAAC,EAAE,wBAAwB,EAC1C,eAAe,CAAC,EAAE,KAAK,EACvB,YAAY,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAChD,IAAI,CA2EN"}
|
|
@@ -11,7 +11,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
11
11
|
import { readFileSync } from 'node:fs';
|
|
12
12
|
import path from 'node:path';
|
|
13
13
|
import { BorderedLoader, convertToLlm, serializeConversation, } from '@earendil-works/pi-coding-agent';
|
|
14
|
-
import {
|
|
14
|
+
import { editHandoffGoal } from './handoff-goal-editor.js';
|
|
15
15
|
const BKPER_HANDOFF_SHORTCUT = 'ctrl+h';
|
|
16
16
|
const MAX_SESSION_NAME_LENGTH = 80;
|
|
17
17
|
const HANDOFF_SYSTEM_PROMPT = `You are a context transfer assistant. Given a conversation history and the user's goal for a new thread, generate a focused prompt that:
|
|
@@ -145,6 +145,7 @@ function generateWithCurrentModel(context, systemPrompt, prompt, loadingMessage)
|
|
|
145
145
|
});
|
|
146
146
|
}
|
|
147
147
|
const defaultDependencies = {
|
|
148
|
+
editGoal: editHandoffGoal,
|
|
148
149
|
generatePrompt: (request, context) => {
|
|
149
150
|
var _a;
|
|
150
151
|
return generateWithCurrentModel(context, HANDOFF_SYSTEM_PROMPT, `## Conversation History\n\n${request.conversation}\n\n## Goal for New Session\n\n${(_a = request.goal) !== null && _a !== void 0 ? _a : ''}`, 'Preparing handoff...');
|
|
@@ -162,7 +163,7 @@ function performHandoff(goal, context, dependencies) {
|
|
|
162
163
|
const conversation = serializeCurrentConversation(context);
|
|
163
164
|
if (!conversation) {
|
|
164
165
|
context.ui.notify('No conversation to hand off.', 'warning');
|
|
165
|
-
return;
|
|
166
|
+
return false;
|
|
166
167
|
}
|
|
167
168
|
let prompt;
|
|
168
169
|
try {
|
|
@@ -171,10 +172,10 @@ function performHandoff(goal, context, dependencies) {
|
|
|
171
172
|
catch (error) {
|
|
172
173
|
if (error instanceof HandoffCancelledError) {
|
|
173
174
|
context.ui.notify('Handoff cancelled.', 'info');
|
|
174
|
-
return;
|
|
175
|
+
return false;
|
|
175
176
|
}
|
|
176
177
|
context.ui.notify(`Handoff failed: ${normalizeError(error).message}`, 'error');
|
|
177
|
-
return;
|
|
178
|
+
return false;
|
|
178
179
|
}
|
|
179
180
|
const parentSession = context.sessionManager.getSessionFile();
|
|
180
181
|
const result = yield context.newSession({
|
|
@@ -190,9 +191,15 @@ function performHandoff(goal, context, dependencies) {
|
|
|
190
191
|
if (result.cancelled) {
|
|
191
192
|
context.ui.notify('Handoff cancelled.', 'info');
|
|
192
193
|
}
|
|
194
|
+
return !result.cancelled;
|
|
193
195
|
});
|
|
194
196
|
}
|
|
195
|
-
export function registerBkperHandoffExtension(pi, dispatchCommand, handoffShortcut, dependencies =
|
|
197
|
+
export function registerBkperHandoffExtension(pi, dispatchCommand, handoffShortcut, dependencies = {}) {
|
|
198
|
+
var _a, _b;
|
|
199
|
+
const resolvedDependencies = {
|
|
200
|
+
generatePrompt: (_a = dependencies.generatePrompt) !== null && _a !== void 0 ? _a : defaultDependencies.generatePrompt,
|
|
201
|
+
editGoal: (_b = dependencies.editGoal) !== null && _b !== void 0 ? _b : defaultDependencies.editGoal,
|
|
202
|
+
};
|
|
196
203
|
let pendingGoalPrefill;
|
|
197
204
|
if (handoffShortcut) {
|
|
198
205
|
pi.registerShortcut(handoffShortcut, {
|
|
@@ -207,7 +214,11 @@ export function registerBkperHandoffExtension(pi, dispatchCommand, handoffShortc
|
|
|
207
214
|
yield dispatchCommand('/handoff');
|
|
208
215
|
}
|
|
209
216
|
catch (error) {
|
|
210
|
-
|
|
217
|
+
// The command restores its draft once it has consumed the prefill.
|
|
218
|
+
if (pendingGoalPrefill !== undefined) {
|
|
219
|
+
context.ui.setEditorText(pendingGoalPrefill);
|
|
220
|
+
pendingGoalPrefill = undefined;
|
|
221
|
+
}
|
|
211
222
|
context.ui.notify(`Handoff shortcut failed: ${normalizeError(error).message}`, 'error');
|
|
212
223
|
}
|
|
213
224
|
}),
|
|
@@ -216,27 +227,39 @@ export function registerBkperHandoffExtension(pi, dispatchCommand, handoffShortc
|
|
|
216
227
|
pi.registerCommand('handoff', {
|
|
217
228
|
description: 'Continue the current work in a focused new session',
|
|
218
229
|
handler: (args, context) => __awaiter(this, void 0, void 0, function* () {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
const goalPrefill = pendingGoalPrefill !== null && pendingGoalPrefill !== void 0 ? pendingGoalPrefill : '';
|
|
230
|
-
pendingGoalPrefill = undefined;
|
|
231
|
-
const editedGoal = yield context.ui.editor(HANDOFF_GOAL_EDITOR_TITLE, goalPrefill);
|
|
232
|
-
if (editedGoal === undefined || !editedGoal.trim()) {
|
|
233
|
-
context.ui.notify('Handoff cancelled.', 'info');
|
|
230
|
+
let draftToRestore = pendingGoalPrefill;
|
|
231
|
+
pendingGoalPrefill = undefined;
|
|
232
|
+
let completed = false;
|
|
233
|
+
try {
|
|
234
|
+
if (context.mode !== 'tui') {
|
|
235
|
+
context.ui.notify('Handoff requires interactive mode.', 'error');
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
if (!context.model) {
|
|
239
|
+
context.ui.notify('No model selected.', 'error');
|
|
234
240
|
return;
|
|
235
241
|
}
|
|
236
|
-
goal =
|
|
242
|
+
let goal = args.trim();
|
|
243
|
+
if (!goal) {
|
|
244
|
+
const result = yield resolvedDependencies.editGoal(draftToRestore !== null && draftToRestore !== void 0 ? draftToRestore : '', context);
|
|
245
|
+
if (result.status === 'cancelled') {
|
|
246
|
+
draftToRestore = result.text;
|
|
247
|
+
}
|
|
248
|
+
if (result.status === 'cancelled' || !result.text.trim()) {
|
|
249
|
+
context.ui.notify('Handoff cancelled.', 'info');
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
goal = result.text.trim();
|
|
253
|
+
}
|
|
254
|
+
yield context.waitForIdle();
|
|
255
|
+
completed = yield performHandoff(goal, context, resolvedDependencies);
|
|
256
|
+
}
|
|
257
|
+
finally {
|
|
258
|
+
// A successful replacement invalidates this context and owns a new draft.
|
|
259
|
+
if (!completed && context.mode === 'tui' && draftToRestore !== undefined) {
|
|
260
|
+
context.ui.setEditorText(draftToRestore);
|
|
261
|
+
}
|
|
237
262
|
}
|
|
238
|
-
yield context.waitForIdle();
|
|
239
|
-
yield performHandoff(goal, context, dependencies);
|
|
240
263
|
}),
|
|
241
264
|
});
|
|
242
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../../src/agent/extensions/handoff.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACH,cAAc,EACd,YAAY,EACZ,qBAAqB,GAIxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,
|
|
1
|
+
{"version":3,"file":"handoff.js","sourceRoot":"","sources":["../../../src/agent/extensions/handoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { InteractiveMode } from '@earendil-works/pi-coding-agent';
|
|
|
2
2
|
export type InteractiveRuntimeHost = ConstructorParameters<typeof InteractiveMode>[0];
|
|
3
3
|
export declare function suppressPiResumeHintOutput(): () => void;
|
|
4
4
|
export declare class BkperInteractiveMode extends InteractiveMode {
|
|
5
|
-
private restorePendingUserMessage?;
|
|
6
5
|
init(): Promise<void>;
|
|
7
6
|
run(): Promise<void>;
|
|
8
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/agent/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EAElB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"interactive-mode.d.ts","sourceRoot":"","sources":["../../../src/agent/interactive/interactive-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,eAAe,EAElB,MAAM,iCAAiC,CAAC;AAgBzC,MAAM,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAStF,wBAAgB,0BAA0B,IAAI,MAAM,IAAI,CAmBvD;AAED,qBAAa,oBAAqB,SAAQ,eAAe;IAC/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6DrB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAS7B"}
|
|
@@ -9,10 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { getAgentDir, InteractiveMode, } from '@earendil-works/pi-coding-agent';
|
|
11
11
|
import { installBkperAuthCommandRouting } from '../extensions/auth-commands.js';
|
|
12
|
-
import { installHandoffGoalEditorAutocomplete, installHandoffGoalEditorPromptHistory, } from '../extensions/handoff-goal-editor.js';
|
|
13
12
|
import { installPromptHistoryEditor, } from './prompt-history-search.js';
|
|
14
13
|
import { installPromptHistoryShortcut } from './prompt-history-shortcut.js';
|
|
15
|
-
import { installPendingUserMessage, } from './pending-user-message.js';
|
|
16
14
|
import { FilePromptHistory, getPromptHistoryPath, } from './prompt-history-store.js';
|
|
17
15
|
import { installBkperSessionKeybindings, } from './session-keybindings.js';
|
|
18
16
|
const PI_RESUME_HINT_TEXT = 'To resume this session:';
|
|
@@ -38,31 +36,16 @@ export class BkperInteractiveMode extends InteractiveMode {
|
|
|
38
36
|
init: { get: () => super.init }
|
|
39
37
|
});
|
|
40
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
-
var _a
|
|
39
|
+
var _a;
|
|
42
40
|
const interactiveMode = this;
|
|
43
41
|
interactiveMode.getChangelogForDisplay = () => undefined;
|
|
44
42
|
if (interactiveMode.keybindings) {
|
|
45
43
|
installBkperSessionKeybindings(interactiveMode.keybindings);
|
|
46
44
|
}
|
|
47
45
|
yield _super.init.call(this);
|
|
48
|
-
(_a = this.restorePendingUserMessage) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
49
|
-
const pendingMessageHost = this;
|
|
50
|
-
if (pendingMessageHost.session &&
|
|
51
|
-
pendingMessageHost.chatContainer &&
|
|
52
|
-
pendingMessageHost.ui &&
|
|
53
|
-
pendingMessageHost.addMessageToChat &&
|
|
54
|
-
pendingMessageHost.handleEvent) {
|
|
55
|
-
this.restorePendingUserMessage = installPendingUserMessage(pendingMessageHost);
|
|
56
|
-
}
|
|
57
46
|
const authRoutingMode = this;
|
|
58
47
|
const promptHistory = new FilePromptHistory(getPromptHistoryPath(getAgentDir()));
|
|
59
|
-
const
|
|
60
|
-
if (handoffGoalMode.showExtensionEditor) {
|
|
61
|
-
const handoffGoalHost = handoffGoalMode;
|
|
62
|
-
installHandoffGoalEditorPromptHistory(handoffGoalHost, promptHistory);
|
|
63
|
-
installHandoffGoalEditorAutocomplete(handoffGoalHost);
|
|
64
|
-
}
|
|
65
|
-
const providerRegistry = (_b = authRoutingMode.session) === null || _b === void 0 ? void 0 : _b.modelRuntime;
|
|
48
|
+
const providerRegistry = (_a = authRoutingMode.session) === null || _a === void 0 ? void 0 : _a.modelRuntime;
|
|
66
49
|
if (providerRegistry) {
|
|
67
50
|
const editors = new Set([authRoutingMode.defaultEditor, authRoutingMode.editor].filter(editor => editor !== undefined));
|
|
68
51
|
for (const editor of editors) {
|
|
@@ -83,14 +66,11 @@ export class BkperInteractiveMode extends InteractiveMode {
|
|
|
83
66
|
run: { get: () => super.run }
|
|
84
67
|
});
|
|
85
68
|
return __awaiter(this, void 0, void 0, function* () {
|
|
86
|
-
var _a;
|
|
87
69
|
const restoreResumeHintOutput = suppressPiResumeHintOutput();
|
|
88
70
|
try {
|
|
89
71
|
yield _super.run.call(this);
|
|
90
72
|
}
|
|
91
73
|
finally {
|
|
92
|
-
(_a = this.restorePendingUserMessage) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
93
|
-
this.restorePendingUserMessage = undefined;
|
|
94
74
|
restoreResumeHintOutput();
|
|
95
75
|
}
|
|
96
76
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/agent/interactive/interactive-mode.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,WAAW,EACX,eAAe,GAElB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,8BAA8B,EAAC,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"interactive-mode.js","sourceRoot":"","sources":["../../../src/agent/interactive/interactive-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-agent-mode.d.ts","sourceRoot":"","sources":["../../../src/agent/interactive/run-agent-mode.ts"],"names":[],"mappings":"AACA,OAAO,EAQH,KAAK,6BAA6B,EAGrC,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"run-agent-mode.d.ts","sourceRoot":"","sources":["../../../src/agent/interactive/run-agent-mode.ts"],"names":[],"mappings":"AACA,OAAO,EAQH,KAAK,6BAA6B,EAGrC,MAAM,iCAAiC,CAAC;AAWzC,OAAO,EAEH,KAAK,sBAAsB,EAC9B,MAAM,uBAAuB,CAAC;AAW/B,MAAM,WAAW,qBAAqB;IAClC,aAAa,EAAE,MAAM,OAAO,CAAC;QACzB,OAAO,EAAE,sBAAsB,CAAC;QAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,WAAW,CAAC,EAAE,6BAA6B,EAAE,CAAC;KACjD,CAAC,CAAC;IACH,qBAAqB,EAAE,CACnB,OAAO,EAAE,sBAAsB,EAC/B,oBAAoB,CAAC,EAAE,MAAM,KAC5B;QACD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KACxB,CAAC;CACL;AAcD,MAAM,WAAW,cAAc;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,2BAA2B,CACvC,cAAc,GAAE,cAAmB,GACpC,qBAAqB,CAyIvB;AAED,wBAAsB,YAAY,CAC9B,YAAY,GAAE,qBAAqD,GACpE,OAAO,CAAC,IAAI,CAAC,CAUf"}
|
|
@@ -11,8 +11,10 @@ import { join } from 'node:path';
|
|
|
11
11
|
import { createAgentSessionFromServices, createAgentSessionRuntime, createAgentSessionServices, getAgentDir, ModelRuntime, SessionManager, SettingsManager, } from '@earendil-works/pi-coding-agent';
|
|
12
12
|
import { isBkperAgentVerboseDiagnosticsEnabled, normalizeBkperAgentExtensions, registerBkperAgentBuiltins, } from '../extensions/builtins.js';
|
|
13
13
|
import { getBkperAiBaseUrlOverride } from '../extensions/bkper-ai-provider.js';
|
|
14
|
+
import { editHandoffGoal } from '../extensions/handoff-goal-editor.js';
|
|
14
15
|
import { runStartupMaintenance } from '../startup-maintenance.js';
|
|
15
16
|
import { getBkperAgentSystemPrompt } from '../system-prompt.js';
|
|
17
|
+
import { FilePromptHistory, getPromptHistoryPath } from './prompt-history-store.js';
|
|
16
18
|
import { BkperInteractiveMode, } from './interactive-mode.js';
|
|
17
19
|
import { restorePersistedSessionOptions } from './session-restore.js';
|
|
18
20
|
import { applyBkperAgentSettingsDefaults, applyBkperAgentToolSelection, collectSettingsDiagnostics, createStartupSessionManager, overrideDefaultTools, } from './settings.js';
|
|
@@ -51,6 +53,7 @@ export function createAgentModeDependencies(sessionOptions = {}) {
|
|
|
51
53
|
}
|
|
52
54
|
yield promptHandoffCommand(command);
|
|
53
55
|
});
|
|
56
|
+
const promptHistory = new FilePromptHistory(getPromptHistoryPath(agentDir));
|
|
54
57
|
const services = yield createAgentSessionServices({
|
|
55
58
|
cwd,
|
|
56
59
|
agentDir,
|
|
@@ -61,7 +64,11 @@ export function createAgentModeDependencies(sessionOptions = {}) {
|
|
|
61
64
|
systemPromptOverride: () => getBkperAgentSystemPrompt(selectedTools),
|
|
62
65
|
extensionFactories: [
|
|
63
66
|
(pi) => {
|
|
64
|
-
registerBkperAgentBuiltins(pi, runStartupMaintenance, settingsManager, process.env, modelRuntime, dispatchHandoffCommand)
|
|
67
|
+
registerBkperAgentBuiltins(pi, runStartupMaintenance, settingsManager, process.env, modelRuntime, dispatchHandoffCommand, (prefill, context) => editHandoffGoal(prefill, context, {
|
|
68
|
+
history: promptHistory,
|
|
69
|
+
templates: services.resourceLoader.getPrompts().prompts,
|
|
70
|
+
externalEditorCommand: settingsManager.getExternalEditorCommand(),
|
|
71
|
+
}));
|
|
65
72
|
},
|
|
66
73
|
],
|
|
67
74
|
extensionsOverride: base => normalizeBkperAgentExtensions(base, {
|