bkper 4.12.7 → 4.12.9

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.
@@ -1,7 +1,8 @@
1
- import { InteractiveMode } from '@mariozechner/pi-coding-agent';
1
+ import { InteractiveMode, type AgentSessionRuntimeDiagnostic } from '@mariozechner/pi-coding-agent';
2
2
  import { runStartupMaintenance } from './startup-maintenance.js';
3
3
  export type InteractiveRuntimeHost = ConstructorParameters<typeof InteractiveMode>[0];
4
4
  type NotificationType = 'info' | 'warning' | 'error';
5
+ type ScopedThinkingLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
5
6
  type SessionStartContext = {
6
7
  ui: {
7
8
  notify: (message: string, type?: NotificationType) => void;
@@ -11,16 +12,55 @@ type SessionStartHandler = (event: unknown, context: SessionStartContext) => Pro
11
12
  type StartupExtensionAPI = {
12
13
  on: (event: 'session_start', handler: SessionStartHandler) => void;
13
14
  };
15
+ type SettingsError = {
16
+ scope: 'global' | 'project';
17
+ error: Error;
18
+ };
19
+ type SettingsManagerLike = {
20
+ drainErrors(): SettingsError[];
21
+ getSessionDir(): string | undefined;
22
+ getEnabledModels(): string[] | undefined;
23
+ getDefaultProvider(): string | undefined;
24
+ getDefaultModel(): string | undefined;
25
+ getQuietStartup(): boolean;
26
+ };
27
+ type ModelLike = {
28
+ provider: string;
29
+ id: string;
30
+ };
31
+ type ModelRegistryLike<TModel extends ModelLike = ModelLike> = {
32
+ getAvailable(): TModel[];
33
+ find(provider: string, modelId: string): TModel | undefined;
34
+ };
35
+ type SessionManagerLike = {
36
+ buildSessionContext(): {
37
+ messages: unknown[];
38
+ };
39
+ };
40
+ type ScopedModel<TModel extends ModelLike = ModelLike> = {
41
+ model: TModel;
42
+ thinkingLevel?: ScopedThinkingLevel;
43
+ };
44
+ export interface RestoredPersistedSessionOptions<TModel extends ModelLike = ModelLike> {
45
+ model?: TModel;
46
+ thinkingLevel?: ScopedThinkingLevel;
47
+ scopedModels: Array<ScopedModel<TModel>>;
48
+ diagnostics: AgentSessionRuntimeDiagnostic[];
49
+ }
14
50
  export interface AgentModeDependencies {
15
51
  createRuntime: () => Promise<{
16
52
  runtime: InteractiveRuntimeHost;
17
53
  modelFallbackMessage?: string;
54
+ diagnostics?: AgentSessionRuntimeDiagnostic[];
18
55
  }>;
19
56
  createInteractiveMode: (runtime: InteractiveRuntimeHost, modelFallbackMessage?: string) => {
20
57
  run(): Promise<void>;
21
58
  };
22
59
  }
23
- export declare function registerBkperAgentStartupExtension(pi: StartupExtensionAPI, startupMaintenance?: typeof runStartupMaintenance): void;
60
+ export declare function collectSettingsDiagnostics(settingsManager: Pick<SettingsManagerLike, 'drainErrors'>, context: string): AgentSessionRuntimeDiagnostic[];
61
+ export declare function createStartupSessionManager<TSessionManager>(cwd: string, settingsManager: Pick<SettingsManagerLike, 'getSessionDir'>, createSessionManager: (cwd: string, sessionDir?: string) => TSessionManager): TSessionManager;
62
+ export declare function restorePersistedSessionOptions<TModel extends ModelLike>(settingsManager: Pick<SettingsManagerLike, 'getEnabledModels' | 'getDefaultProvider' | 'getDefaultModel'>, modelRegistry: ModelRegistryLike<TModel>, sessionManager: SessionManagerLike): RestoredPersistedSessionOptions<TModel>;
63
+ export declare function registerBkperAgentStartupExtension(pi: StartupExtensionAPI, startupMaintenance?: typeof runStartupMaintenance, settingsManager?: Pick<SettingsManagerLike, 'getQuietStartup'>): void;
24
64
  export declare function runAgentMode(dependencies?: AgentModeDependencies): Promise<void>;
25
65
  export {};
26
66
  //# sourceMappingURL=run-agent-mode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-agent-mode.d.ts","sourceRoot":"","sources":["../../src/agent/run-agent-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,eAAe,EAIlB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,MAAM,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtF,KAAK,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAErD,KAAK,mBAAmB,GAAG;IACvB,EAAE,EAAE;QACA,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;KAC9D,CAAC;CACL,CAAC;AAEF,KAAK,mBAAmB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE3F,KAAK,mBAAmB,GAAG;IACvB,EAAE,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;CACtE,CAAC;AAEF,MAAM,WAAW,qBAAqB;IAClC,aAAa,EAAE,MAAM,OAAO,CAAC;QACzB,OAAO,EAAE,sBAAsB,CAAC;QAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;KACjC,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;AAED,wBAAgB,kCAAkC,CAC9C,EAAE,EAAE,mBAAmB,EACvB,kBAAkB,GAAE,OAAO,qBAA6C,GACzE,IAAI,CAeN;AAqDD,wBAAsB,YAAY,CAC9B,YAAY,GAAE,qBAAmD,GAClE,OAAO,CAAC,IAAI,CAAC,CAOf"}
1
+ {"version":3,"file":"run-agent-mode.d.ts","sourceRoot":"","sources":["../../src/agent/run-agent-mode.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,165 @@ 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 { createAgentSessionFromServices, createAgentSessionRuntime, createAgentSessionServices, getAgentDir, InteractiveMode, SessionManager, } from '@mariozechner/pi-coding-agent';
10
+ import { createAgentSessionFromServices, createAgentSessionRuntime, createAgentSessionServices, getAgentDir, InteractiveMode, SessionManager, SettingsManager, } from '@mariozechner/pi-coding-agent';
11
11
  import { runStartupMaintenance } from './startup-maintenance.js';
12
12
  import { getBkperAgentSystemPrompt } from './system-prompt.js';
13
- export function registerBkperAgentStartupExtension(pi, startupMaintenance = runStartupMaintenance) {
13
+ export function collectSettingsDiagnostics(settingsManager, context) {
14
+ return settingsManager.drainErrors().map(({ scope, error }) => ({
15
+ type: 'warning',
16
+ message: `(${context}, ${scope} settings) ${error.message}`,
17
+ }));
18
+ }
19
+ export function createStartupSessionManager(cwd, settingsManager, createSessionManager) {
20
+ return createSessionManager(cwd, settingsManager.getSessionDir());
21
+ }
22
+ function isSameModel(left, right) {
23
+ return left.provider === right.provider && left.id === right.id;
24
+ }
25
+ function isThinkingLevel(value) {
26
+ return ['off', 'minimal', 'low', 'medium', 'high', 'xhigh'].includes(value);
27
+ }
28
+ function findExactModelMatch(modelReference, availableModels) {
29
+ const trimmedReference = modelReference.trim();
30
+ if (!trimmedReference) {
31
+ return [];
32
+ }
33
+ const normalizedReference = trimmedReference.toLowerCase();
34
+ const canonicalMatches = availableModels.filter(model => `${model.provider}/${model.id}`.toLowerCase() === normalizedReference);
35
+ if (canonicalMatches.length > 0) {
36
+ return canonicalMatches;
37
+ }
38
+ const idMatches = availableModels.filter(model => model.id.toLowerCase() === normalizedReference);
39
+ return idMatches.length === 1 ? idMatches : [];
40
+ }
41
+ function hasWildcard(pattern) {
42
+ return pattern.includes('*') || pattern.includes('?');
43
+ }
44
+ function escapeRegExp(value) {
45
+ return value.replace(/[|\\{}()[\]^$+?.]/g, '\\$&');
46
+ }
47
+ function globToRegExp(pattern) {
48
+ let regex = '^';
49
+ for (const char of pattern) {
50
+ if (char === '*') {
51
+ regex += '.*';
52
+ continue;
53
+ }
54
+ if (char === '?') {
55
+ regex += '.';
56
+ continue;
57
+ }
58
+ regex += escapeRegExp(char);
59
+ }
60
+ regex += '$';
61
+ return new RegExp(regex, 'i');
62
+ }
63
+ function resolvePatternMatches(rawPattern, availableModels) {
64
+ const exactMatches = findExactModelMatch(rawPattern, availableModels);
65
+ if (exactMatches.length > 0) {
66
+ return { matches: exactMatches };
67
+ }
68
+ let pattern = rawPattern.trim();
69
+ let thinkingLevel;
70
+ const lastColonIndex = pattern.lastIndexOf(':');
71
+ if (lastColonIndex !== -1) {
72
+ const suffix = pattern.substring(lastColonIndex + 1).trim();
73
+ if (isThinkingLevel(suffix)) {
74
+ thinkingLevel = suffix;
75
+ pattern = pattern.substring(0, lastColonIndex).trim();
76
+ }
77
+ }
78
+ const exactPatternMatches = findExactModelMatch(pattern, availableModels);
79
+ if (exactPatternMatches.length > 0) {
80
+ return {
81
+ matches: exactPatternMatches,
82
+ thinkingLevel,
83
+ };
84
+ }
85
+ if (!hasWildcard(pattern)) {
86
+ return {
87
+ matches: [],
88
+ thinkingLevel,
89
+ };
90
+ }
91
+ const regex = globToRegExp(pattern);
92
+ const matches = availableModels.filter(model => {
93
+ const fullId = `${model.provider}/${model.id}`;
94
+ return regex.test(fullId) || regex.test(model.id);
95
+ });
96
+ return {
97
+ matches,
98
+ thinkingLevel,
99
+ };
100
+ }
101
+ export function restorePersistedSessionOptions(settingsManager, modelRegistry, sessionManager) {
102
+ var _a;
103
+ const enabledModels = settingsManager.getEnabledModels();
104
+ if (!enabledModels || enabledModels.length === 0) {
105
+ return {
106
+ scopedModels: [],
107
+ diagnostics: [],
108
+ };
109
+ }
110
+ const availableModels = modelRegistry.getAvailable();
111
+ const scopedModels = [];
112
+ const diagnostics = [];
113
+ for (const pattern of enabledModels) {
114
+ const { matches, thinkingLevel } = resolvePatternMatches(pattern, availableModels);
115
+ if (matches.length === 0) {
116
+ diagnostics.push({
117
+ type: 'warning',
118
+ message: `No models match enabledModels pattern "${pattern}"`,
119
+ });
120
+ continue;
121
+ }
122
+ for (const model of matches) {
123
+ if (scopedModels.some(scopedModel => isSameModel(scopedModel.model, model))) {
124
+ continue;
125
+ }
126
+ scopedModels.push({
127
+ model,
128
+ thinkingLevel,
129
+ });
130
+ }
131
+ }
132
+ if (scopedModels.length === 0 || sessionManager.buildSessionContext().messages.length > 0) {
133
+ return {
134
+ scopedModels,
135
+ diagnostics,
136
+ };
137
+ }
138
+ const defaultProvider = settingsManager.getDefaultProvider();
139
+ const defaultModelId = settingsManager.getDefaultModel();
140
+ const defaultModel = defaultProvider && defaultModelId
141
+ ? modelRegistry.find(defaultProvider, defaultModelId)
142
+ : undefined;
143
+ const selectedModel = (_a = (defaultModel
144
+ ? scopedModels.find(scopedModel => isSameModel(scopedModel.model, defaultModel))
145
+ : undefined)) !== null && _a !== void 0 ? _a : scopedModels[0];
146
+ return {
147
+ model: selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.model,
148
+ thinkingLevel: selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.thinkingLevel,
149
+ scopedModels,
150
+ diagnostics,
151
+ };
152
+ }
153
+ function reportDiagnostics(diagnostics) {
154
+ for (const diagnostic of diagnostics) {
155
+ const prefix = diagnostic.type === 'error'
156
+ ? 'Error: '
157
+ : diagnostic.type === 'warning'
158
+ ? 'Warning: '
159
+ : '';
160
+ console.error(`${prefix}${diagnostic.message}`);
161
+ }
162
+ }
163
+ export function registerBkperAgentStartupExtension(pi, startupMaintenance = runStartupMaintenance, settingsManager) {
14
164
  let startupMaintenanceTriggered = false;
15
165
  pi.on('session_start', (_event, ctx) => __awaiter(this, void 0, void 0, function* () {
16
- ctx.ui.notify('Bkper Agent ready.', 'info');
166
+ if (!(settingsManager === null || settingsManager === void 0 ? void 0 : settingsManager.getQuietStartup())) {
167
+ ctx.ui.notify('Bkper Agent ready.', 'info');
168
+ }
17
169
  if (startupMaintenanceTriggered) {
18
170
  return;
19
171
  }
@@ -26,33 +178,48 @@ export function registerBkperAgentStartupExtension(pi, startupMaintenance = runS
26
178
  function createDefaultDependencies() {
27
179
  return {
28
180
  createRuntime: () => __awaiter(this, void 0, void 0, function* () {
181
+ const cwd = process.cwd();
182
+ const agentDir = getAgentDir();
183
+ const startupSettingsManager = SettingsManager.create(cwd, agentDir);
184
+ const startupDiagnostics = collectSettingsDiagnostics(startupSettingsManager, 'startup session lookup');
29
185
  const createRuntime = (_a) => __awaiter(this, [_a], void 0, function* ({ cwd, agentDir, sessionManager, sessionStartEvent, }) {
186
+ const settingsManager = SettingsManager.create(cwd, agentDir);
30
187
  const services = yield createAgentSessionServices({
31
188
  cwd,
32
189
  agentDir,
190
+ settingsManager,
33
191
  resourceLoaderOptions: {
34
192
  systemPromptOverride: () => getBkperAgentSystemPrompt(),
35
193
  extensionFactories: [
36
194
  (pi) => {
37
- registerBkperAgentStartupExtension(pi);
195
+ registerBkperAgentStartupExtension(pi, runStartupMaintenance, settingsManager);
38
196
  },
39
197
  ],
40
198
  },
41
199
  });
200
+ const restoredSessionOptions = restorePersistedSessionOptions(settingsManager, services.modelRegistry, sessionManager);
42
201
  return Object.assign(Object.assign({}, (yield createAgentSessionFromServices({
43
202
  services,
44
203
  sessionManager,
45
204
  sessionStartEvent,
46
- }))), { services, diagnostics: services.diagnostics });
205
+ model: restoredSessionOptions.model,
206
+ thinkingLevel: restoredSessionOptions.thinkingLevel,
207
+ scopedModels: restoredSessionOptions.scopedModels,
208
+ }))), { services, diagnostics: [
209
+ ...services.diagnostics,
210
+ ...collectSettingsDiagnostics(settingsManager, 'runtime creation'),
211
+ ...restoredSessionOptions.diagnostics,
212
+ ] });
47
213
  });
48
214
  const runtime = yield createAgentSessionRuntime(createRuntime, {
49
- cwd: process.cwd(),
50
- agentDir: getAgentDir(),
51
- sessionManager: SessionManager.create(process.cwd()),
215
+ cwd,
216
+ agentDir,
217
+ sessionManager: createStartupSessionManager(cwd, startupSettingsManager, (sessionCwd, sessionDir) => SessionManager.create(sessionCwd, sessionDir)),
52
218
  });
53
219
  return {
54
220
  runtime,
55
221
  modelFallbackMessage: runtime.modelFallbackMessage,
222
+ diagnostics: [...startupDiagnostics, ...runtime.diagnostics],
56
223
  };
57
224
  }),
58
225
  createInteractiveMode: (runtime, modelFallbackMessage) => new InteractiveMode(runtime, {
@@ -65,7 +232,8 @@ export function runAgentMode() {
65
232
  var _a;
66
233
  var _b;
67
234
  (_a = (_b = process.env).PI_SKIP_VERSION_CHECK) !== null && _a !== void 0 ? _a : (_b.PI_SKIP_VERSION_CHECK = '1');
68
- const { runtime, modelFallbackMessage } = yield dependencies.createRuntime();
235
+ const { runtime, modelFallbackMessage, diagnostics = [] } = yield dependencies.createRuntime();
236
+ reportDiagnostics(diagnostics);
69
237
  const mode = dependencies.createInteractiveMode(runtime, modelFallbackMessage);
70
238
  yield mode.run();
71
239
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run-agent-mode.js","sourceRoot":"","sources":["../../src/agent/run-agent-mode.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACH,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,WAAW,EACX,eAAe,EACf,cAAc,GAGjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AA+B/D,MAAM,UAAU,kCAAkC,CAC9C,EAAuB,EACvB,qBAAmD,qBAAqB;IAExE,IAAI,2BAA2B,GAAG,KAAK,CAAC;IAExC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAO,MAAM,EAAE,GAAG,EAAE,EAAE;QACzC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAE5C,IAAI,2BAA2B,EAAE,CAAC;YAC9B,OAAO;QACX,CAAC;QACD,2BAA2B,GAAG,IAAI,CAAC;QAEnC,KAAK,kBAAkB,CAAC;YACpB,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;SAC1D,CAAC,CAAC;IACP,CAAC,CAAA,CAAC,CAAC;AACP,CAAC;AAED,SAAS,yBAAyB;IAC9B,OAAO;QACH,aAAa,EAAE,GAAS,EAAE;YACtB,MAAM,aAAa,GAAqC,KAKrD,EAAE,0CAL0D,EAC3D,GAAG,EACH,QAAQ,EACR,cAAc,EACd,iBAAiB,GACpB;gBACG,MAAM,QAAQ,GAAG,MAAM,0BAA0B,CAAC;oBAC9C,GAAG;oBACH,QAAQ;oBACR,qBAAqB,EAAE;wBACnB,oBAAoB,EAAE,GAAG,EAAE,CAAC,yBAAyB,EAAE;wBACvD,kBAAkB,EAAE;4BAChB,CAAC,EAAgB,EAAE,EAAE;gCACjB,kCAAkC,CAAC,EAAE,CAAC,CAAC;4BAC3C,CAAC;yBACJ;qBACJ;iBACJ,CAAC,CAAC;gBAEH,uCACO,CAAC,MAAM,8BAA8B,CAAC;oBACrC,QAAQ;oBACR,cAAc;oBACd,iBAAiB;iBACpB,CAAC,CAAC,KACH,QAAQ,EACR,WAAW,EAAE,QAAQ,CAAC,WAAW,IACnC;YACN,CAAC,CAAA,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,aAAa,EAAE;gBAC3D,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,QAAQ,EAAE,WAAW,EAAE;gBACvB,cAAc,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;aACvD,CAAC,CAAC;YAEH,OAAO;gBACH,OAAO;gBACP,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;aACrD,CAAC;QACN,CAAC,CAAA;QACD,qBAAqB,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,CACrD,IAAI,eAAe,CAAC,OAAO,EAAE;YACzB,oBAAoB;SACvB,CAAC;KACT,CAAC;AACN,CAAC;AAED,MAAM,UAAgB,YAAY;yDAC9B,eAAsC,yBAAyB,EAAE;;;QAEjE,YAAA,OAAO,CAAC,GAAG,EAAC,qBAAqB,uCAArB,qBAAqB,GAAK,GAAG,EAAC;QAE1C,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,YAAY,CAAC,aAAa,EAAE,CAAC;QAC7E,MAAM,IAAI,GAAG,YAAY,CAAC,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAE/E,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;CAAA"}
1
+ {"version":3,"file":"run-agent-mode.js","sourceRoot":"","sources":["../../src/agent/run-agent-mode.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export declare function getBkperAgentSystemPrompt(): string;
2
- export declare const BKPER_AGENT_SYSTEM_PROMPT = "# Bkper Context\n\nYou are a Bkper team member.\n\nProtect the zero-sum invariant above all else.\n\nYou help users by reading files, executing commands, editing code, and writing new files.\n\nAvailable tools:\n- read: read file contents\n- bash: run shell commands for search and discovery\n- edit: make precise file edits\n- write: create or replace files\n\nGuidelines:\n- Use bash for discovery and search like ls, rg, and find. Use it to run bkper CLI commands when relevant.\n- Use read to inspect file contents instead of cat or sed.\n- Use edit for precise changes.\n- When changing multiple separate locations in one file, use one edit call with multiple entries in edits[].\n- Each edits[].oldText is matched against the original file, not after earlier edits are applied. Do not use overlapping or nested edits. Merge nearby changes into one edit.\n- Keep edits[].oldText as small as possible while still being unique in the file.\n- Use write only for new files or complete rewrites.\n- Do not claim builds, tests, or command results unless you actually ran them.\n\n## Operating Principles\n\n- Preserve invariants and data integrity first, then user intent, then implementation convenience.\n- Think in resources, movements, and balances \u2014 not debits and credits.\n- Extend meaning with properties before adding structural complexity.\n- Model domain and flows before coding; represent business reality, not technical shortcuts.\n- Prefer simplicity over cleverness; choose small, boring, maintainable solutions.\n- Design for global readiness from day one: currencies, timezones, units, and formats.\n";
2
+ export declare const BKPER_AGENT_SYSTEM_PROMPT = "# Bkper Context\n\nYou are a Bkper team member.\n\nProtect the zero-sum invariant above all else.\n\nYou help users by reading files, executing commands, editing code, and writing new files.\n\nAvailable tools:\n- read: read file contents\n- bash: run shell commands for search and discovery\n- edit: make precise file edits\n- write: create or replace files\n\nIMPORTANT Guidelines:\n- Use bash for discovery and search like ls, rg, and find. Use it to run bkper CLI commands when relevant.\n- Use read to inspect file contents instead of cat or sed.\n- Use edit for precise changes.\n- When changing multiple separate locations in one file, use one edit call with multiple entries in edits[].\n- Each edits[].oldText is matched against the original file, not after earlier edits are applied. Do not use overlapping or nested edits. Merge nearby changes into one edit.\n- Keep edits[].oldText as small as possible while still being unique in the file.\n- Use write only for new files or complete rewrites.\n- Do not claim builds, tests, or command results unless you actually ran them.\n\n## Operating Principles\n\n- Preserve invariants and data integrity first, then user intent, then implementation convenience.\n- Think in resources, movements, and balances \u2014 not debits and credits.\n- Extend meaning with properties before adding structural complexity.\n- Model domain and flows before coding; represent business reality, not technical shortcuts.\n- Prefer simplicity over cleverness; choose small, boring, maintainable solutions.\n- Design for global readiness from day one: currencies, timezones, units, and formats.\n";
3
3
  //# sourceMappingURL=system-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAQA,wBAAgB,yBAAyB,IAAI,MAAM,CAuClD;AAED,eAAO,MAAM,yBAAyB,2lDAgCrC,CAAC"}
1
+ {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAQA,wBAAgB,yBAAyB,IAAI,MAAM,CAuClD;AAED,eAAO,MAAM,yBAAyB,qmDAgCrC,CAAC"}
@@ -58,7 +58,7 @@ Available tools:
58
58
  - edit: make precise file edits
59
59
  - write: create or replace files
60
60
 
61
- Guidelines:
61
+ IMPORTANT Guidelines:
62
62
  - Use bash for discovery and search like ls, rg, and find. Use it to run bkper CLI commands when relevant.
63
63
  - Use read to inspect file contents instead of cat or sed.
64
64
  - Use edit for precise changes.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bkper",
3
- "version": "4.12.7",
3
+ "version": "4.12.9",
4
4
  "description": "Command line client for Bkper",
5
5
  "bin": {
6
6
  "bkper": "./lib/cli.js"
@@ -47,7 +47,7 @@
47
47
  "upgrade:api": "bun update @bkper/bkper-api-types --latest && bun update bkper-js --latest"
48
48
  },
49
49
  "dependencies": {
50
- "@mariozechner/pi-coding-agent": "^0.65.2",
50
+ "@mariozechner/pi-coding-agent": "^0.66.1",
51
51
  "bkper-js": "^2.32.2",
52
52
  "commander": "^13.1.0",
53
53
  "dotenv": "^8.2.0",