bkper 5.3.2 → 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.map +1 -1
- package/lib/agent/interactive/interactive-mode.js +0 -7
- 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/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":";;;;;;;;;AAAA,OAAO,EACH,wBAAwB,EACxB,WAAW,GAEd,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAC,4BAA4B,EAAE,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAC,0BAA0B,EAAC,MAAM,yCAAyC,CAAC;AACnF,OAAO,EACH,iBAAiB,EACjB,oBAAoB,GAEvB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,CAAC,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AAwB7D,SAAS,gBAAgB,CAAC,UAAkB;IACxC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,OAA2B,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACnB,OAAO,GAAG,SAAS,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,OAAO,IAAI,IAAI,CAAC;YACpB,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACtC,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnB,OAAO,GAAG,EAAE,CAAC;YACjB,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,IAAI,CAAC;QACpB,CAAC;IACL,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,IAAc;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO,OAAO,CAAC,OAAO,CAClB,gFAAgF,EAChF,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;;QACrE,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,KAAK,GACP,aAAa,KAAK,GAAG,IAAI,aAAa,KAAK,WAAW;gBAClD,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAChD,OAAO,KAAK,IAAI,YAAY,CAAC;QACjC,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACxD,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACzC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvD,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YAC3C,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,OAAO,MAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,mCAAI,EAAE,CAAC;IAChD,CAAC,CACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,yBAAyB,CACrC,IAAY,EACZ,SAA+C;;IAE/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,wCAAwC,CAC7C,SAA+C,EAC/C,GAAW;IAEX,MAAM,QAAQ,GAAG,IAAI,4BAA4B,CAC7C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,iBACtB,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAC9B,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAC,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACzE,CAAC,EACH,GAAG,CACN,CAAC;IAEF,OAAO;QACG,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;;;gBACtD,MAAM,gBAAgB,GAAG,CAAC,MAAA,KAAK,CAAC,UAAU,CAAC,mCAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBACvE,IAAI,UAAU,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC3D,OAAO,IAAI,CAAC;gBAChB,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,cAAc,CAC7C,KAAK,EACL,UAAU,EACV,SAAS,kCACL,OAAO,KAAE,KAAK,EAAE,KAAK,IAC5B,CAAC;gBACF,OAAO,WAAW,CAAC,CAAC,iCAAK,WAAW,KAAE,MAAM,EAAE,EAAE,IAAE,CAAC,CAAC,IAAI,CAAC;YAC7D,CAAC;SAAA;QACD,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI;;YAC9C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,OAAO,EAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC;YAC1C,CAAC;YACD,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjE,OAAO;gBACH,KAAK,EAAE,aAAa;gBACpB,UAAU,EAAE,kBAAkB;gBAC9B,SAAS,EAAE,MAAA,MAAA,aAAa,CAAC,kBAAkB,CAAC,0CAAE,MAAM,mCAAI,CAAC;aAC5D,CAAC;QACN,CAAC;QACD,2BAA2B,EAAE,GAAG,EAAE,CAAC,KAAK;KAC3C,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,SAAmC;IACxD,uEAAuE;IACvE,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAClC,CAAC,KAAK,EAAmB,EAAE,CAAC,KAAK,YAAY,MAAM,CACtD,CAAC;IACF,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,UAAgB,eAAe;yDACjC,OAAe,EACf,OAAkE,EAClE,UAAoC,EAAE;;QAEtC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,MAAA,OAAO,CAAC,SAAS,mCAAI,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,OAAO,GACT,MAAA,OAAO,CAAC,OAAO,mCAAI,IAAI,iBAAiB,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;YAC/B,MAAM,SAAS,GAAG,IAAI,wBAAwB,CAC1C,GAAG,EACH,WAAW,EACX,yBAAyB,EACzB,OAAO,EACP,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAC,CAAC,EACzC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,EAAC,CAAC,EACzD,SAAS,EACT,OAAO,CAAC,qBAAqB,CAChC,CAAC;YACF,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,CAAC,uBAAuB,CAC1B,wCAAwC,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CACnE,CAAC;YACF,0BAA0B,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,SAAS,CAAC;QACrB,CAAC,CACJ,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC/D,uCAAW,MAAM,KAAE,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,IAAE;QAChF,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA"}
|
|
@@ -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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"}
|
|
@@ -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,7 +9,6 @@ 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
14
|
import { FilePromptHistory, getPromptHistoryPath, } from './prompt-history-store.js';
|
|
@@ -46,12 +45,6 @@ export class BkperInteractiveMode extends InteractiveMode {
|
|
|
46
45
|
yield _super.init.call(this);
|
|
47
46
|
const authRoutingMode = this;
|
|
48
47
|
const promptHistory = new FilePromptHistory(getPromptHistoryPath(getAgentDir()));
|
|
49
|
-
const handoffGoalMode = this;
|
|
50
|
-
if (handoffGoalMode.showExtensionEditor) {
|
|
51
|
-
const handoffGoalHost = handoffGoalMode;
|
|
52
|
-
installHandoffGoalEditorPromptHistory(handoffGoalHost, promptHistory);
|
|
53
|
-
installHandoffGoalEditorAutocomplete(handoffGoalHost);
|
|
54
|
-
}
|
|
55
48
|
const providerRegistry = (_a = authRoutingMode.session) === null || _a === void 0 ? void 0 : _a.modelRuntime;
|
|
56
49
|
if (providerRegistry) {
|
|
57
50
|
const editors = new Set([authRoutingMode.defaultEditor, authRoutingMode.editor].filter(editor => editor !== undefined));
|
|
@@ -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, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-agent-mode.js","sourceRoot":"","sources":["../../../src/agent/interactive/run-agent-mode.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-agent-mode.js","sourceRoot":"","sources":["../../../src/agent/interactive/run-agent-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,8 @@ export interface PiSharedModulePaths {
|
|
|
15
15
|
}
|
|
16
16
|
/** The files pi-coding-agent, at `codingAgentEntry`, loads for the modules bkper shares with it. */
|
|
17
17
|
export declare function resolvePiSharedModulePaths(codingAgentEntry: string): PiSharedModulePaths;
|
|
18
|
-
export declare const backgroundAnsi: typeof PiTui.backgroundAnsi, Box: typeof PiTui.Box, colorToRgb: typeof PiTui.colorToRgb, CombinedAutocompleteProvider: typeof PiTui.CombinedAutocompleteProvider, foregroundAnsi: typeof PiTui.foregroundAnsi, getKeybindings: typeof PiTui.getKeybindings, indexedColor: typeof PiTui.indexedColor, matchesKey: typeof PiTui.matchesKey, rgbColor: typeof PiTui.rgbColor, truncateToWidth: typeof PiTui.truncateToWidth, TuiAltScreen: typeof PiTui.TuiAltScreen, visibleWidth: typeof PiTui.visibleWidth;
|
|
18
|
+
export declare const backgroundAnsi: typeof PiTui.backgroundAnsi, Box: typeof PiTui.Box, colorToRgb: typeof PiTui.colorToRgb, CombinedAutocompleteProvider: typeof PiTui.CombinedAutocompleteProvider, Editor: typeof PiTui.Editor, foregroundAnsi: typeof PiTui.foregroundAnsi, getKeybindings: typeof PiTui.getKeybindings, indexedColor: typeof PiTui.indexedColor, matchesKey: typeof PiTui.matchesKey, rgbColor: typeof PiTui.rgbColor, truncateToWidth: typeof PiTui.truncateToWidth, TuiAltScreen: typeof PiTui.TuiAltScreen, visibleWidth: typeof PiTui.visibleWidth;
|
|
19
19
|
export type Box = PiTui.Box;
|
|
20
|
+
export type Editor = PiTui.Editor;
|
|
20
21
|
export declare const typesafeSystemOneApi: () => import("@earendil-works/pi-ai").ProviderClassifier;
|
|
21
22
|
//# sourceMappingURL=pi-shared-modules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-shared-modules.d.ts","sourceRoot":"","sources":["../../src/agent/pi-shared-modules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,KAAK,MAAM,wBAAwB,CAAC;AAErD;;;;;;;;;GASG;AAEH,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED,oGAAoG;AACpG,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,mBAAmB,CAcxF;AAiBD,eAAO,MACH,cAAc,+BACd,GAAG,oBACH,UAAU,2BACV,4BAA4B,6CAC5B,cAAc,+BACd,cAAc,+BACd,YAAY,6BACZ,UAAU,2BACV,QAAQ,yBACR,eAAe,gCACf,YAAY,6BACZ,YAAY,2BACP,CAAC;AACV,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"pi-shared-modules.d.ts","sourceRoot":"","sources":["../../src/agent/pi-shared-modules.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,KAAK,MAAM,wBAAwB,CAAC;AAErD;;;;;;;;;GASG;AAEH,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED,oGAAoG;AACpG,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,GAAG,mBAAmB,CAcxF;AAiBD,eAAO,MACH,cAAc,+BACd,GAAG,oBACH,UAAU,2BACV,4BAA4B,6CAC5B,MAAM,uBACN,cAAc,+BACd,cAAc,+BACd,YAAY,6BACZ,UAAU,2BACV,QAAQ,yBACR,eAAe,gCACf,YAAY,6BACZ,YAAY,2BACP,CAAC;AACV,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;AAC5B,MAAM,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAElC,eAAO,MAAO,oBAAoB,0DAAyB,CAAC"}
|
|
@@ -27,6 +27,6 @@ const paths = resolvePiSharedModulePaths(codingAgentEntry);
|
|
|
27
27
|
const requireModule = createRequire(codingAgentEntry);
|
|
28
28
|
const piTui = requireModule(paths.tui);
|
|
29
29
|
const piAiTypesafeSystemOne = requireModule(paths.aiTypesafeSystemOne);
|
|
30
|
-
export const { backgroundAnsi, Box, colorToRgb, CombinedAutocompleteProvider, foregroundAnsi, getKeybindings, indexedColor, matchesKey, rgbColor, truncateToWidth, TuiAltScreen, visibleWidth, } = piTui;
|
|
30
|
+
export const { backgroundAnsi, Box, colorToRgb, CombinedAutocompleteProvider, Editor, foregroundAnsi, getKeybindings, indexedColor, matchesKey, rgbColor, truncateToWidth, TuiAltScreen, visibleWidth, } = piTui;
|
|
31
31
|
export const { typesafeSystemOneApi } = piAiTypesafeSystemOne;
|
|
32
32
|
//# sourceMappingURL=pi-shared-modules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-shared-modules.js","sourceRoot":"","sources":["../../src/agent/pi-shared-modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACnC,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAoB7B,oGAAoG;AACpG,MAAM,UAAU,0BAA0B,CAAC,gBAAwB;IAC/D,MAAM,sBAAsB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC/D,OAAO;QACH,GAAG,EAAE,sBAAsB,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAC7D,0GAA0G;QAC1G,yGAAyG;QACzG,sFAAsF;QACtF,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAC1B,iBAAiB,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,EAClE,MAAM,EACN,KAAK,EACL,6BAA6B,CAChC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuB,EAAE,WAAmB;;IACnE,KAAK,MAAM,cAAc,IAAI,MAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,mCAAI,EAAE,EAAE,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,UAAU,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,eAAe,WAAW,uCAAuC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAChF,MAAM,KAAK,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;AAC3D,uFAAuF;AACvF,MAAM,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACtD,MAAM,KAAK,GAAiB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrD,MAAM,qBAAqB,GAAiC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAErG,MAAM,CAAC,MAAM,EACT,cAAc,EACd,GAAG,EACH,UAAU,EACV,4BAA4B,EAC5B,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,YAAY,GACf,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"pi-shared-modules.js","sourceRoot":"","sources":["../../src/agent/pi-shared-modules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACnC,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAoB7B,oGAAoG;AACpG,MAAM,UAAU,0BAA0B,CAAC,gBAAwB;IAC/D,MAAM,sBAAsB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC/D,OAAO;QACH,GAAG,EAAE,sBAAsB,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAC7D,0GAA0G;QAC1G,yGAAyG;QACzG,sFAAsF;QACtF,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAC1B,iBAAiB,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,EAClE,MAAM,EACN,KAAK,EACL,6BAA6B,CAChC;KACJ,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAuB,EAAE,WAAmB;;IACnE,KAAK,MAAM,cAAc,IAAI,MAAA,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,mCAAI,EAAE,EAAE,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;YAAE,OAAO,UAAU,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,eAAe,WAAW,uCAAuC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAChF,MAAM,KAAK,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;AAC3D,uFAAuF;AACvF,MAAM,aAAa,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACtD,MAAM,KAAK,GAAiB,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACrD,MAAM,qBAAqB,GAAiC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAErG,MAAM,CAAC,MAAM,EACT,cAAc,EACd,GAAG,EACH,UAAU,EACV,4BAA4B,EAC5B,MAAM,EACN,cAAc,EACd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,YAAY,GACf,GAAG,KAAK,CAAC;AAIV,MAAM,CAAC,MAAM,EAAC,oBAAoB,EAAC,GAAG,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAkKA,wBAAgB,yBAAyB,CACrC,aAAa,GAAE,MAAM,EAAsC,GAC5D,MAAM,CAsDR;AA4BD,eAAO,MAAM,yBAAyB,QAKpC,CAAC"}
|
|
@@ -17,13 +17,6 @@ function resolveDocsIndexPath(filename) {
|
|
|
17
17
|
path.resolve(thisDir, '..', '..', 'skill', 'references', filename),
|
|
18
18
|
]);
|
|
19
19
|
}
|
|
20
|
-
function resolveReferenceDocPath(relativePath) {
|
|
21
|
-
const thisDir = path.dirname(fileURLToPath(import.meta.url));
|
|
22
|
-
return resolveFirstExistingPath([
|
|
23
|
-
path.resolve(thisDir, '..', 'docs', relativePath),
|
|
24
|
-
path.resolve(thisDir, '..', '..', 'skill', 'references', relativePath),
|
|
25
|
-
]);
|
|
26
|
-
}
|
|
27
20
|
function resolvePiPackageRoot() {
|
|
28
21
|
const piIndexPath = fileURLToPath(import.meta.resolve('@earendil-works/pi-coding-agent'));
|
|
29
22
|
let dir = path.dirname(piIndexPath);
|
|
@@ -135,7 +128,7 @@ function buildToolPromptSection(selectedTools) {
|
|
|
135
128
|
return `Available tools:\n${toolsList}\n\nIn addition to the tools above, you may have access to other custom tools depending on the project.\n\nGuidelines:\n${guidelineLines.join('\n')}`;
|
|
136
129
|
}
|
|
137
130
|
export function getBkperAgentSystemPrompt(selectedTools = ['read', 'bash', 'edit', 'write']) {
|
|
138
|
-
const coreConceptsPath =
|
|
131
|
+
const coreConceptsPath = resolveDocsIndexPath('core/core-concepts.md');
|
|
139
132
|
const indexPath = resolveDocsIndexPath('index.md');
|
|
140
133
|
const referenceDocsDir = path.dirname(indexPath);
|
|
141
134
|
const piRoot = resolvePiPackageRoot();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,yBAAyB,GAE5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,SAAS,wBAAwB,CAAC,UAAoB;IAClD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,OAAO,wBAAwB,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC;KACrE,CAAC,CAAC;AACP,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"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"}
|
package/lib/docs/index.md
CHANGED
|
@@ -2,11 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Reference docs for Bkper tasks. Load only the specific doc(s) relevant to the task — do not load all of them.
|
|
4
4
|
|
|
5
|
-
For Bkper data, accounting, reporting, tax, or financial-flow tasks, read `core/core-concepts.md` first.
|
|
6
|
-
|
|
7
5
|
For Bkper app implementation, refactoring, or code review, always read `apps/quality.md` alongside the task-specific references. After implementation, review the changed code against the guidelines before considering the work complete.
|
|
8
6
|
|
|
9
|
-
- `core/core-concepts.md` — canonical Bkper data model: resources, movements, balances, accounts, groups, books, transactions, properties, and the zero-sum invariant.
|
|
10
7
|
- `cli/data-management.md` — CLI reference for managing financial data and files: books, accounts, groups, files, transactions, per-account balance queries, query operators (on:, after:, before:, account:, group:), JSON output shapes and jq reshaping, human-review Bkper UI links, batch operations via stdin/piping, collections.
|
|
11
8
|
- `cli/app-management.md` — CLI reference for building and deploying Bkper apps: init/git clone/credential helpers, dev/build/deploy workflow, app install/uninstall, secrets management, app logs, bkper.yaml configuration reference (identity, branding, events, menu integration, deployment).
|
|
12
9
|
- `apps/overview.md` — Platform evaluation and capability overview: use when comparing managed Bkper hosting with self-managed infrastructure or clarifying platform responsibilities; use the task-specific app references for implementation.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bkper",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.4",
|
|
4
4
|
"description": "Official Bkper CLI for accounting data, automation, apps, and AI agents",
|
|
5
5
|
"bin": {
|
|
6
6
|
"bkper": "lib/cli.js"
|
|
@@ -60,7 +60,6 @@
|
|
|
60
60
|
"release:major": "npm version major -m \"chore(release): v%s\"",
|
|
61
61
|
"docs:compliance": "TS_NODE_PROJECT=tsconfig.test.json node --loader ts-node/esm ./test/tools/docs-compliance/check.ts",
|
|
62
62
|
"docs:compliance:live": "TS_NODE_PROJECT=tsconfig.test.json node --loader ts-node/esm ./test/tools/docs-compliance/live.ts",
|
|
63
|
-
"eval:prompt-routing": "bun ./test/tools/prompt-routing/live.ts",
|
|
64
63
|
"upgrade:api": "bun update @bkper/bkper-api-types --latest && bun update bkper-js --latest"
|
|
65
64
|
},
|
|
66
65
|
"dependencies": {
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { PromptRoute } from './prompt-routing.js';
|
|
2
|
-
export type CoreConceptsPreloadLevel = 'none' | 'full';
|
|
3
|
-
export interface CoreConceptsPreloadInput {
|
|
4
|
-
prompt: string;
|
|
5
|
-
}
|
|
6
|
-
/** Conservative keyword fallback only. Jev is the primary detector. */
|
|
7
|
-
export declare function detectCoreConceptsPreloadLevel(input: CoreConceptsPreloadInput): CoreConceptsPreloadLevel;
|
|
8
|
-
export declare const CORE_CONCEPTS_ROUTE: PromptRoute;
|
|
9
|
-
//# sourceMappingURL=core-concepts-routing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-concepts-routing.d.ts","sourceRoot":"","sources":["../../src/agent/core-concepts-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAqB,MAAM,qBAAqB,CAAC;AAazE,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,MAAM,CAAC;AACvD,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,uEAAuE;AACvE,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,wBAAwB,GAChC,wBAAwB,CAW1B;AAED,eAAO,MAAM,mBAAmB,EAAE,WAiBjC,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
const DOCS_PATTERN = /\b(doc|docs|documentation|readme|guide|guides|example|examples|spec|specs|reference)\b/i;
|
|
2
|
-
const ANALYSIS_PATTERN = /\b(review|audit|validate|verify|critique|rewrite|document|describe|explain|design|model|map|check|spot)\b/i;
|
|
3
|
-
const AUTOMATION_PATTERN = /\b(bot|bots|app|apps|automation|automations)\b/i;
|
|
4
|
-
const BOT_PATTERN = /\b(bot|bots)\b/i;
|
|
5
|
-
const SEMANTIC_PATTERN = /\b(bkper|book|books|account|accounts|group|groups|transaction|transactions|balance|balances|incoming|outgoing|asset|assets|liability|liabilities|receivable|receivables|payable|payables|statement|statements|ledger|flow|flows|movement|movements|collection|collections|draft|drafts|checked|unchecked|posted|trashed|tax|taxes)\b/i;
|
|
6
|
-
const FINANCE_PATTERN = /\b(finance|financial|accounting|bookkeeping|money|bank|banking|cash|income|revenue|expense|expenses|budget|budgeting|invoice|invoices|payment|payments|loan|loans|debt|payroll|investment|investments|reconcile|reconciliation|credit|profit|loss|equity|inventory|owe|owed|afford|refund|refunds|salary|interest|dividend|dividends|fee|fees|deposit|deposits|withdrawal|withdrawals|cost|costs|receipt|receipts|contas|transações|transacoes|saldo|saldos|dinheiro|contabilidade)\b/i;
|
|
7
|
-
/** Conservative keyword fallback only. Jev is the primary detector. */
|
|
8
|
-
export function detectCoreConceptsPreloadLevel(input) {
|
|
9
|
-
const prompt = input.prompt.trim();
|
|
10
|
-
if (!prompt)
|
|
11
|
-
return 'none';
|
|
12
|
-
if (SEMANTIC_PATTERN.test(prompt) || FINANCE_PATTERN.test(prompt) || BOT_PATTERN.test(prompt))
|
|
13
|
-
return 'full';
|
|
14
|
-
if ((DOCS_PATTERN.test(prompt) || ANALYSIS_PATTERN.test(prompt)) &&
|
|
15
|
-
AUTOMATION_PATTERN.test(prompt))
|
|
16
|
-
return 'full';
|
|
17
|
-
return 'none';
|
|
18
|
-
}
|
|
19
|
-
export const CORE_CONCEPTS_ROUTE = {
|
|
20
|
-
id: 'bkper-core-concepts',
|
|
21
|
-
threshold: 0.4,
|
|
22
|
-
question: {
|
|
23
|
-
type: 'bool',
|
|
24
|
-
instructions: "Is the user's present goal in `prompt` a finance/accounting task, a Bkper user task, or a task involving the meaning of Bkper's domain model? Use `recentUserMessages` to resolve ambiguous references, but follow explicit topic changes. For app and bot development, answer yes for financial/resource-flow business logic and no for technical infrastructure or general application work. The application's business area or use of Bkper does not by itself make technical work a domain task. Ambiguous Bkper app/bot troubleshooting, reviews, and documentation requests default to domain relevance unless the current task or recent context establishes a technical-only purpose. Do not assume that a documentation review is merely technical.",
|
|
25
|
-
criteria: {
|
|
26
|
-
true: 'Working with finance, money, accounting, bookkeeping, or inventory/resource movements; using or learning Bkper, including user setup, login, permissions, and connecting banks; designing, implementing, debugging, reviewing, explaining, or testing financial rules or Bkper data semantics. Examples of semantics are where resources move, which Accounts/Groups/Books represent a business process, transaction states, balances, taxes, valuation, payments, and refunds. In this CLI, unspecified books, accounts, transactions, checked entries, and bot problems default to Bkper domain tasks unless a different subject or technical cause is established. This includes general Bkper/bot documentation and README reviews whose scope is not limited to installation or tooling.',
|
|
27
|
-
false: "The requested work is general software engineering, UI styling, framework/hosting choice, codebase organization, package installation, compiler/import errors, bundling/build configuration, HTTP routing, deployment/CI plumbing, or configuring the test harness rather than testing business rules. This remains no for Bkper apps/bots and financial products. Vague requests inherit the immediate task's technical subject, not the application's financial domain. Also no for clearly unrelated uses of account, transaction, book, or bot, and unrelated Git work.",
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
fallback(input) {
|
|
31
|
-
return [input.prompt, ...input.recentUserMessages].some(prompt => detectCoreConceptsPreloadLevel({ prompt }) === 'full');
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=core-concepts-routing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-concepts-routing.js","sourceRoot":"","sources":["../../src/agent/core-concepts-routing.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GACd,yFAAyF,CAAC;AAC9F,MAAM,gBAAgB,GAClB,4GAA4G,CAAC;AACjH,MAAM,kBAAkB,GAAG,iDAAiD,CAAC;AAC7E,MAAM,WAAW,GAAG,iBAAiB,CAAC;AACtC,MAAM,gBAAgB,GAClB,uUAAuU,CAAC;AAC5U,MAAM,eAAe,GACjB,wdAAwd,CAAC;AAO7d,uEAAuE;AACvE,MAAM,UAAU,8BAA8B,CAC1C,KAA+B;IAE/B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3B,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QACzF,OAAO,MAAM,CAAC;IAClB,IACI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;QAE/B,OAAO,MAAM,CAAC;IAClB,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAgB;IAC5C,EAAE,EAAE,qBAAqB;IACzB,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM;QACZ,YAAY,EACR,8tBAA8tB;QACluB,QAAQ,EAAE;YACN,IAAI,EAAE,+vBAA+vB;YACrwB,KAAK,EAAE,6iBAA6iB;SACvjB;KACJ;IACD,QAAQ,CAAC,KAAyB;QAC9B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,CACnD,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,EAAC,MAAM,EAAC,CAAC,KAAK,MAAM,CAChE,CAAC;IACN,CAAC;CACJ,CAAC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { type ExtensionAPI } from '@earendil-works/pi-coding-agent';
|
|
2
|
-
import { type PromptLoaderRouter } from './prompt-routing.js';
|
|
3
|
-
export { detectCoreConceptsPreloadLevel } from '../core-concepts-routing.js';
|
|
4
|
-
export type { CoreConceptsPreloadInput, CoreConceptsPreloadLevel } from '../core-concepts-routing.js';
|
|
5
|
-
export interface CoreConceptsPreloadDefinition {
|
|
6
|
-
docPath: string;
|
|
7
|
-
markdown: string;
|
|
8
|
-
}
|
|
9
|
-
/** System prompt section that grounds the session in the Bkper data model. */
|
|
10
|
-
export declare const CORE_CONCEPTS_SECTION = "bkper-core-concepts";
|
|
11
|
-
/**
|
|
12
|
-
* Display-only session entry marking where the section was loaded. Never sent to the model.
|
|
13
|
-
* Sessions saved before the section existed carry custom messages of the same type.
|
|
14
|
-
*/
|
|
15
|
-
export declare const CORE_CONCEPTS_ENTRY_TYPE = "bkper-core-concepts";
|
|
16
|
-
export declare function resolveBkperDocPathFromModuleDir(moduleDir: string, relativePath: string): string;
|
|
17
|
-
export declare function getCoreConceptsDocPath(): string;
|
|
18
|
-
export declare function getDefaultCoreConceptsPreloadDefinition(): CoreConceptsPreloadDefinition;
|
|
19
|
-
/**
|
|
20
|
-
* Grounds accounting and finance sessions in the Bkper data model through a system
|
|
21
|
-
* prompt section. Once loaded, the section is kept for the rest of the session: Pi
|
|
22
|
-
* rebuilds the prompt from its base options on every prompt, so a section that is
|
|
23
|
-
* not set again would be removed. Pi appends the section as a mid-conversation
|
|
24
|
-
* system message, which keeps the cached prefix on models that accept those messages.
|
|
25
|
-
*/
|
|
26
|
-
export declare function registerBkperCoreConceptsPreloadExtension(pi: Pick<ExtensionAPI, 'on' | 'registerEntryRenderer' | 'registerMessageRenderer' | 'appendEntry'>, definition?: CoreConceptsPreloadDefinition, router?: PromptLoaderRouter): void;
|
|
27
|
-
//# sourceMappingURL=core-concepts-preload.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-concepts-preload.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/core-concepts-preload.ts"],"names":[],"mappings":"AAGA,OAAO,EAIH,KAAK,YAAY,EAOpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAiC,KAAK,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAE5F,OAAO,EAAC,8BAA8B,EAAC,MAAM,6BAA6B,CAAC;AAC3E,YAAY,EAAC,wBAAwB,EAAE,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAEpG,MAAM,WAAW,6BAA6B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,wBAAwB,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAK9D,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACrB,MAAM,CAaR;AAOD,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,uCAAuC,IAAI,6BAA6B,CAMvF;AA8ED;;;;;;GAMG;AACH,wBAAgB,yCAAyC,CACrD,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,uBAAuB,GAAG,yBAAyB,GAAG,aAAa,CAAC,EAClG,UAAU,GAAE,6BAAyE,EACrF,MAAM,GAAE,kBAAuD,GAChE,IAAI,CA8BN"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { createReadToolDefinition, } from '@earendil-works/pi-coding-agent';
|
|
5
|
-
import { Box } from '../pi-shared-modules.js';
|
|
6
|
-
import { CORE_CONCEPTS_ROUTE } from '../core-concepts-routing.js';
|
|
7
|
-
import { registerPromptRoutingExtension } from './prompt-routing.js';
|
|
8
|
-
export { detectCoreConceptsPreloadLevel } from '../core-concepts-routing.js';
|
|
9
|
-
/** System prompt section that grounds the session in the Bkper data model. */
|
|
10
|
-
export const CORE_CONCEPTS_SECTION = 'bkper-core-concepts';
|
|
11
|
-
/**
|
|
12
|
-
* Display-only session entry marking where the section was loaded. Never sent to the model.
|
|
13
|
-
* Sessions saved before the section existed carry custom messages of the same type.
|
|
14
|
-
*/
|
|
15
|
-
export const CORE_CONCEPTS_ENTRY_TYPE = 'bkper-core-concepts';
|
|
16
|
-
export function resolveBkperDocPathFromModuleDir(moduleDir, relativePath) {
|
|
17
|
-
const candidates = [
|
|
18
|
-
path.resolve(moduleDir, '..', '..', 'docs', relativePath),
|
|
19
|
-
path.resolve(moduleDir, '..', '..', '..', 'skill', 'references', relativePath),
|
|
20
|
-
];
|
|
21
|
-
for (const candidate of candidates) {
|
|
22
|
-
if (existsSync(candidate)) {
|
|
23
|
-
return candidate;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
return candidates[0];
|
|
27
|
-
}
|
|
28
|
-
function resolveDocPath(relativePath) {
|
|
29
|
-
const thisDir = path.dirname(fileURLToPath(import.meta.url));
|
|
30
|
-
return resolveBkperDocPathFromModuleDir(thisDir, relativePath);
|
|
31
|
-
}
|
|
32
|
-
export function getCoreConceptsDocPath() {
|
|
33
|
-
return resolveDocPath('core/core-concepts.md');
|
|
34
|
-
}
|
|
35
|
-
export function getDefaultCoreConceptsPreloadDefinition() {
|
|
36
|
-
const docPath = getCoreConceptsDocPath();
|
|
37
|
-
return {
|
|
38
|
-
docPath,
|
|
39
|
-
markdown: readFileSync(docPath, 'utf8'),
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
function buildCoreConceptsSection(definition) {
|
|
43
|
-
return `Loaded from \`${definition.docPath}\`. Base all reasoning about Bkper data on this reference.\n\n${definition.markdown}`;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Whether the section was loaded in this branch, replayed from the transcript's system
|
|
47
|
-
* messages. Compaction checkpoints carry the replayed sections, so this survives
|
|
48
|
-
* compaction, resume, and branch navigation. A load that Pi later removed still counts:
|
|
49
|
-
* runs started without before_agent_start, such as extension-triggered turns, rebuild
|
|
50
|
-
* the prompt without the section, and the next prompt must restore it.
|
|
51
|
-
*/
|
|
52
|
-
function wasCoreConceptsLoaded(ctx) {
|
|
53
|
-
const messages = ctx.sessionManager.buildSessionProjection().messages;
|
|
54
|
-
return messages.some(message => { var _a; return message.role === 'system' && typeof ((_a = message.sections) === null || _a === void 0 ? void 0 : _a[CORE_CONCEPTS_SECTION]) === 'string'; });
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Renders the doc with Pi's own read tool renderers, so it looks like a read of the
|
|
58
|
-
* doc: collapsed shows the path, expanded shows the content.
|
|
59
|
-
*/
|
|
60
|
-
function renderCoreConceptsRead(definition, expanded, theme) {
|
|
61
|
-
const cwd = process.cwd();
|
|
62
|
-
const read = createReadToolDefinition(cwd);
|
|
63
|
-
if (!read.renderCall || !read.renderResult) {
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
66
|
-
const args = { path: definition.docPath };
|
|
67
|
-
const context = {
|
|
68
|
-
args,
|
|
69
|
-
toolCallId: CORE_CONCEPTS_ENTRY_TYPE,
|
|
70
|
-
invalidate: () => undefined,
|
|
71
|
-
lastComponent: undefined,
|
|
72
|
-
state: {},
|
|
73
|
-
cwd,
|
|
74
|
-
executionStarted: true,
|
|
75
|
-
argsComplete: true,
|
|
76
|
-
isPartial: false,
|
|
77
|
-
expanded,
|
|
78
|
-
showImages: false,
|
|
79
|
-
isError: false,
|
|
80
|
-
};
|
|
81
|
-
// Same shell Pi uses for a successful tool row.
|
|
82
|
-
const box = new Box(1, 1, (text) => theme.bg('toolSuccessBg', text));
|
|
83
|
-
box.addChild(read.renderCall(args, theme, context));
|
|
84
|
-
box.addChild(read.renderResult({ content: [{ type: 'text', text: definition.markdown }], details: undefined }, { expanded, isPartial: false }, theme, context));
|
|
85
|
-
return box;
|
|
86
|
-
}
|
|
87
|
-
function createCoreConceptsEntryRenderer(definition) {
|
|
88
|
-
return (_entry, options, theme) => renderCoreConceptsRead(definition, options.expanded, theme);
|
|
89
|
-
}
|
|
90
|
-
function createLegacyCoreConceptsMessageRenderer(definition) {
|
|
91
|
-
return (_message, options, theme) => renderCoreConceptsRead(definition, options.expanded, theme);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Grounds accounting and finance sessions in the Bkper data model through a system
|
|
95
|
-
* prompt section. Once loaded, the section is kept for the rest of the session: Pi
|
|
96
|
-
* rebuilds the prompt from its base options on every prompt, so a section that is
|
|
97
|
-
* not set again would be removed. Pi appends the section as a mid-conversation
|
|
98
|
-
* system message, which keeps the cached prefix on models that accept those messages.
|
|
99
|
-
*/
|
|
100
|
-
export function registerBkperCoreConceptsPreloadExtension(pi, definition = getDefaultCoreConceptsPreloadDefinition(), router = registerPromptRoutingExtension(pi)) {
|
|
101
|
-
const section = buildCoreConceptsSection(definition);
|
|
102
|
-
let markLoad = false;
|
|
103
|
-
pi.registerEntryRenderer(CORE_CONCEPTS_ENTRY_TYPE, createCoreConceptsEntryRenderer(definition));
|
|
104
|
-
pi.registerMessageRenderer(CORE_CONCEPTS_ENTRY_TYPE, createLegacyCoreConceptsMessageRenderer(definition));
|
|
105
|
-
router.registerLoader(Object.assign(Object.assign({}, CORE_CONCEPTS_ROUTE), { isLoaded: wasCoreConceptsLoaded, apply(event, _ctx, load, alreadyLoaded) {
|
|
106
|
-
markLoad = false;
|
|
107
|
-
if (!load)
|
|
108
|
-
return;
|
|
109
|
-
event.systemPromptOptions.sections[CORE_CONCEPTS_SECTION] = section;
|
|
110
|
-
markLoad = !alreadyLoaded;
|
|
111
|
-
} }));
|
|
112
|
-
// The user prompt is persisted once its message ends, so the first assistant
|
|
113
|
-
// message is the earliest point where the marker lands after the prompt.
|
|
114
|
-
pi.on('message_start', (event) => {
|
|
115
|
-
if (!markLoad || event.message.role !== 'assistant') {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
markLoad = false;
|
|
119
|
-
pi.appendEntry(CORE_CONCEPTS_ENTRY_TYPE);
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=core-concepts-preload.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-concepts-preload.js","sourceRoot":"","sources":["../../../src/agent/extensions/core-concepts-preload.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { BeforeAgentStartEvent, ExtensionAPI, ExtensionContext } from '@earendil-works/pi-coding-agent';
|
|
2
|
-
import { type PromptRoute } from '../prompt-routing.js';
|
|
3
|
-
/** Loaders own injection and persistence; the router only owns prompt decisions. */
|
|
4
|
-
export interface PromptLoader extends PromptRoute {
|
|
5
|
-
isLoaded(ctx: ExtensionContext): boolean;
|
|
6
|
-
apply(event: BeforeAgentStartEvent, ctx: ExtensionContext, load: boolean, alreadyLoaded: boolean): void;
|
|
7
|
-
}
|
|
8
|
-
export interface PromptLoaderRouter {
|
|
9
|
-
registerLoader(loader: PromptLoader): void;
|
|
10
|
-
}
|
|
11
|
-
export declare function registerPromptRoutingExtension(pi: Pick<ExtensionAPI, 'on'>): PromptLoaderRouter;
|
|
12
|
-
//# sourceMappingURL=prompt-routing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-routing.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/prompt-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAGH,KAAK,WAAW,EACnB,MAAM,sBAAsB,CAAC;AAE9B,oFAAoF;AACpF,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC7C,QAAQ,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC;IACzC,KAAK,CACD,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE,OAAO,EACb,aAAa,EAAE,OAAO,GACvB,IAAI,CAAC;CACX;AAED,MAAM,WAAW,kBAAkB;IAC/B,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC9C;AAED,wBAAgB,8BAA8B,CAAC,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,kBAAkB,CAoC/F"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { buildPromptRoutingInput, evaluatePromptRoutes, } from '../prompt-routing.js';
|
|
11
|
-
export function registerPromptRoutingExtension(pi) {
|
|
12
|
-
const loaders = [];
|
|
13
|
-
pi.on('before_agent_start', (event, ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
14
|
-
var _a;
|
|
15
|
-
const states = loaders.map(loader => ({ loader, loaded: loader.isLoaded(ctx) }));
|
|
16
|
-
const pending = states.filter(state => !state.loaded).map(state => state.loader);
|
|
17
|
-
const decisions = pending.length > 0
|
|
18
|
-
? yield evaluatePromptRoutes(buildPromptRoutingInput(event.prompt, ctx.sessionManager.buildSessionProjection().messages), pending, ctx.modelRegistry, { signal: ctx.signal })
|
|
19
|
-
: {};
|
|
20
|
-
for (const { loader, loaded } of states) {
|
|
21
|
-
loader.apply(event, ctx, loaded || ((_a = decisions[loader.id]) === null || _a === void 0 ? void 0 : _a.load) === true, loaded);
|
|
22
|
-
}
|
|
23
|
-
}));
|
|
24
|
-
return {
|
|
25
|
-
registerLoader(loader) {
|
|
26
|
-
if (loaders.some(existing => existing.id === loader.id)) {
|
|
27
|
-
throw new Error(`Prompt loader already registered: ${loader.id}`);
|
|
28
|
-
}
|
|
29
|
-
if (!Number.isFinite(loader.threshold) ||
|
|
30
|
-
loader.threshold < 0 ||
|
|
31
|
-
loader.threshold > 1) {
|
|
32
|
-
throw new Error(`Invalid prompt routing threshold: ${loader.id}`);
|
|
33
|
-
}
|
|
34
|
-
loaders.push(loader);
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=prompt-routing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-routing.js","sourceRoot":"","sources":["../../../src/agent/extensions/prompt-routing.ts"],"names":[],"mappings":";;;;;;;;;AAKA,OAAO,EACH,uBAAuB,EACvB,oBAAoB,GAEvB,MAAM,sBAAsB,CAAC;AAiB9B,MAAM,UAAU,8BAA8B,CAAC,EAA4B;IACvE,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAO,KAAK,EAAE,GAAG,EAAE,EAAE;;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjF,MAAM,SAAS,GACX,OAAO,CAAC,MAAM,GAAG,CAAC;YACd,CAAC,CAAC,MAAM,oBAAoB,CACtB,uBAAuB,CACnB,KAAK,CAAC,MAAM,EACZ,GAAG,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC,QAAQ,CACvD,EACD,OAAO,EACP,GAAG,CAAC,aAAa,EACjB,EAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAC,CACvB;YACH,CAAC,CAAC,EAAE,CAAC;QACb,KAAK,MAAM,EAAC,MAAM,EAAE,MAAM,EAAC,IAAI,MAAM,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA,MAAA,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,0CAAE,IAAI,MAAK,IAAI,EAAE,MAAM,CAAC,CAAC;QACpF,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;IACH,OAAO;QACH,cAAc,CAAC,MAAM;YACjB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,IACI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;gBAClC,MAAM,CAAC,SAAS,GAAG,CAAC;gBACpB,MAAM,CAAC,SAAS,GAAG,CAAC,EACtB,CAAC;gBACC,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;KACJ,CAAC;AACN,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { ClassifierBoolQuestion } from '@earendil-works/pi-ai';
|
|
2
|
-
import type { ModelRegistry, SessionProjection } from '@earendil-works/pi-coding-agent';
|
|
3
|
-
export declare const PROMPT_ROUTING_MODEL: {
|
|
4
|
-
readonly provider: "bkper";
|
|
5
|
-
readonly id: "jev";
|
|
6
|
-
};
|
|
7
|
-
export declare const PROMPT_ROUTING_TIMEOUT_MS = 5000;
|
|
8
|
-
export interface PromptRoutingInput {
|
|
9
|
-
prompt: string;
|
|
10
|
-
recentUserMessages: string[];
|
|
11
|
-
}
|
|
12
|
-
/** Independent yes/no routes: more than one may match the same prompt. */
|
|
13
|
-
export interface PromptRoute {
|
|
14
|
-
id: string;
|
|
15
|
-
question: ClassifierBoolQuestion;
|
|
16
|
-
threshold: number;
|
|
17
|
-
fallback(input: PromptRoutingInput): boolean;
|
|
18
|
-
}
|
|
19
|
-
export interface PromptRouteDecision {
|
|
20
|
-
load: boolean;
|
|
21
|
-
source: 'classifier' | 'fallback';
|
|
22
|
-
probability?: number;
|
|
23
|
-
reason?: string;
|
|
24
|
-
}
|
|
25
|
-
export type PromptRoutingRegistry = Pick<ModelRegistry, 'getAvailableOfType' | 'classify'>;
|
|
26
|
-
/** Only user text from the current branch is sent; never tool output or images. */
|
|
27
|
-
export declare function buildPromptRoutingInput(prompt: string, messages?: SessionProjection['messages']): PromptRoutingInput;
|
|
28
|
-
/** One bounded Jev call for all pending questions, with a fallback per route. */
|
|
29
|
-
export declare function evaluatePromptRoutes(input: PromptRoutingInput, routes: readonly PromptRoute[], registry: PromptRoutingRegistry, options?: {
|
|
30
|
-
timeoutMs?: number;
|
|
31
|
-
signal?: AbortSignal;
|
|
32
|
-
}): Promise<Record<string, PromptRouteDecision>>;
|
|
33
|
-
//# sourceMappingURL=prompt-routing.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-routing.d.ts","sourceRoot":"","sources":["../../src/agent/prompt-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAC,aAAa,EAAE,iBAAiB,EAAC,MAAM,iCAAiC,CAAC;AAEtF,eAAO,MAAM,oBAAoB;;;CAA0C,CAAC;AAC5E,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAK/C,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,0EAA0E;AAC1E,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,sBAAsB,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC;CAChD;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,EAAE,oBAAoB,GAAG,UAAU,CAAC,CAAC;AAE3F,mFAAmF;AACnF,wBAAgB,uBAAuB,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,iBAAiB,CAAC,UAAU,CAAM,GAC7C,kBAAkB,CAmBpB;AAED,iFAAiF;AACjF,wBAAsB,oBAAoB,CACtC,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,GAAE;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAM,GACzD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CA4E9C"}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
export const PROMPT_ROUTING_MODEL = { provider: 'bkper', id: 'jev' };
|
|
11
|
-
export const PROMPT_ROUTING_TIMEOUT_MS = 5000;
|
|
12
|
-
const MAX_PROMPT_CHARS = 16000;
|
|
13
|
-
const MAX_RECENT_USER_MESSAGES = 3;
|
|
14
|
-
const MAX_CONTEXT_MESSAGE_CHARS = 2000;
|
|
15
|
-
/** Only user text from the current branch is sent; never tool output or images. */
|
|
16
|
-
export function buildPromptRoutingInput(prompt, messages = []) {
|
|
17
|
-
const recentUserMessages = [];
|
|
18
|
-
for (let i = messages.length - 1; i >= 0 && recentUserMessages.length < MAX_RECENT_USER_MESSAGES; i--) {
|
|
19
|
-
const message = messages[i];
|
|
20
|
-
if (message.role !== 'user')
|
|
21
|
-
continue;
|
|
22
|
-
const text = typeof message.content === 'string'
|
|
23
|
-
? message.content
|
|
24
|
-
: message.content
|
|
25
|
-
.filter(block => block.type === 'text')
|
|
26
|
-
.map(block => block.text)
|
|
27
|
-
.join('\n');
|
|
28
|
-
if (text.trim())
|
|
29
|
-
recentUserMessages.unshift(text.slice(0, MAX_CONTEXT_MESSAGE_CHARS));
|
|
30
|
-
}
|
|
31
|
-
return { prompt: prompt.slice(0, MAX_PROMPT_CHARS), recentUserMessages };
|
|
32
|
-
}
|
|
33
|
-
/** One bounded Jev call for all pending questions, with a fallback per route. */
|
|
34
|
-
export function evaluatePromptRoutes(input_1, routes_1, registry_1) {
|
|
35
|
-
return __awaiter(this, arguments, void 0, function* (input, routes, registry, options = {}) {
|
|
36
|
-
var _a, _b, _c, _d;
|
|
37
|
-
if (routes.length === 0)
|
|
38
|
-
return {};
|
|
39
|
-
const fallback = (route, reason) => ({
|
|
40
|
-
load: route.fallback(input),
|
|
41
|
-
source: 'fallback',
|
|
42
|
-
reason,
|
|
43
|
-
});
|
|
44
|
-
const fallbackAll = (reason) => Object.fromEntries(routes.map(route => [route.id, fallback(route, reason)]));
|
|
45
|
-
if (!input.prompt.trim())
|
|
46
|
-
return fallbackAll('Empty prompt.');
|
|
47
|
-
const controller = new AbortController();
|
|
48
|
-
const cancel = () => controller.abort('Routing cancelled.');
|
|
49
|
-
let onAbort;
|
|
50
|
-
const stopped = new Promise(resolve => {
|
|
51
|
-
onAbort = () => resolve(fallbackAll(String(controller.signal.reason)));
|
|
52
|
-
controller.signal.addEventListener('abort', onAbort, { once: true });
|
|
53
|
-
});
|
|
54
|
-
(_a = options.signal) === null || _a === void 0 ? void 0 : _a.addEventListener('abort', cancel, { once: true });
|
|
55
|
-
const timer = setTimeout(() => controller.abort('Routing timed out.'), (_b = options.timeoutMs) !== null && _b !== void 0 ? _b : PROMPT_ROUTING_TIMEOUT_MS);
|
|
56
|
-
if ((_c = options.signal) === null || _c === void 0 ? void 0 : _c.aborted)
|
|
57
|
-
cancel();
|
|
58
|
-
const classify = () => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
var _a;
|
|
60
|
-
try {
|
|
61
|
-
if (controller.signal.aborted)
|
|
62
|
-
return yield stopped;
|
|
63
|
-
const available = yield registry.getAvailableOfType('classifier', PROMPT_ROUTING_MODEL.provider, { signal: controller.signal });
|
|
64
|
-
if (controller.signal.aborted)
|
|
65
|
-
return yield stopped;
|
|
66
|
-
const model = available.find(candidate => candidate.id === PROMPT_ROUTING_MODEL.id);
|
|
67
|
-
if (!model)
|
|
68
|
-
return fallbackAll('Jev unavailable.');
|
|
69
|
-
const result = yield registry.classify(model, {
|
|
70
|
-
state: { prompt: input.prompt, recentUserMessages: input.recentUserMessages },
|
|
71
|
-
questions: Object.fromEntries(routes.map(route => [route.id, route.question])),
|
|
72
|
-
}, { signal: controller.signal });
|
|
73
|
-
if (result.stopReason !== 'stop')
|
|
74
|
-
return fallbackAll((_a = result.errorMessage) !== null && _a !== void 0 ? _a : result.stopReason);
|
|
75
|
-
return Object.fromEntries(routes.map(route => {
|
|
76
|
-
const answer = result.answers[route.id];
|
|
77
|
-
const probability = (answer === null || answer === void 0 ? void 0 : answer.type) === 'bool' ? answer.probability : undefined;
|
|
78
|
-
const decision = probability !== undefined &&
|
|
79
|
-
Number.isFinite(probability) &&
|
|
80
|
-
probability >= 0 &&
|
|
81
|
-
probability <= 1
|
|
82
|
-
? {
|
|
83
|
-
load: probability >= route.threshold,
|
|
84
|
-
source: 'classifier',
|
|
85
|
-
probability,
|
|
86
|
-
}
|
|
87
|
-
: fallback(route, 'Missing or invalid answer.');
|
|
88
|
-
return [route.id, decision];
|
|
89
|
-
}));
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
return fallbackAll(error instanceof Error ? error.message : String(error));
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
try {
|
|
96
|
-
// Race as well as abort: misbehaving providers must not block a user prompt.
|
|
97
|
-
return yield Promise.race([classify(), stopped]);
|
|
98
|
-
}
|
|
99
|
-
finally {
|
|
100
|
-
clearTimeout(timer);
|
|
101
|
-
(_d = options.signal) === null || _d === void 0 ? void 0 : _d.removeEventListener('abort', cancel);
|
|
102
|
-
controller.signal.removeEventListener('abort', onAbort);
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=prompt-routing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-routing.js","sourceRoot":"","sources":["../../src/agent/prompt-routing.ts"],"names":[],"mappings":"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"}
|