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.
- package/lib/agent/run-agent-mode.d.ts +42 -2
- package/lib/agent/run-agent-mode.d.ts.map +1 -1
- package/lib/agent/run-agent-mode.js +177 -9
- package/lib/agent/run-agent-mode.js.map +1 -1
- package/lib/agent/system-prompt.d.ts +1 -1
- package/lib/agent/system-prompt.d.ts.map +1 -1
- package/lib/agent/system-prompt.js +1 -1
- package/package.json +2 -2
|
@@ -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
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
50
|
-
agentDir
|
|
51
|
-
sessionManager: SessionManager.create(
|
|
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,
|
|
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\
|
|
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,
|
|
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.
|
|
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.
|
|
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",
|