bkper 4.22.2 → 4.24.0
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/README.md +6 -0
- package/lib/agent/{auth-commands.d.ts → extensions/auth-commands.d.ts} +1 -1
- package/lib/agent/extensions/auth-commands.d.ts.map +1 -0
- package/lib/agent/{auth-commands.js → extensions/auth-commands.js} +1 -1
- package/lib/agent/extensions/auth-commands.js.map +1 -0
- package/lib/agent/extensions/bkper-ai-provider.d.ts.map +1 -0
- package/lib/agent/{bkper-ai-provider.js → extensions/bkper-ai-provider.js} +1 -1
- package/lib/agent/extensions/bkper-ai-provider.js.map +1 -0
- package/lib/agent/extensions/builtins.d.ts +23 -0
- package/lib/agent/extensions/builtins.d.ts.map +1 -0
- package/lib/agent/extensions/builtins.js +52 -0
- package/lib/agent/extensions/builtins.js.map +1 -0
- package/lib/agent/extensions/core-concepts-preload.d.ts.map +1 -0
- package/lib/agent/{core-concepts-preload.js → extensions/core-concepts-preload.js} +2 -2
- package/lib/agent/extensions/core-concepts-preload.js.map +1 -0
- package/lib/agent/extensions/handoff.d.ts +54 -0
- package/lib/agent/extensions/handoff.d.ts.map +1 -0
- package/lib/agent/extensions/handoff.js +364 -0
- package/lib/agent/extensions/handoff.js.map +1 -0
- package/lib/agent/extensions/image-fallback.d.ts +23 -0
- package/lib/agent/extensions/image-fallback.d.ts.map +1 -0
- package/lib/agent/extensions/image-fallback.js +177 -0
- package/lib/agent/extensions/image-fallback.js.map +1 -0
- package/lib/agent/extensions/startup.d.ts +8 -0
- package/lib/agent/extensions/startup.d.ts.map +1 -0
- package/lib/agent/extensions/startup.js +118 -0
- package/lib/agent/extensions/startup.js.map +1 -0
- package/lib/agent/interactive/interactive-mode.d.ts +8 -0
- package/lib/agent/interactive/interactive-mode.d.ts.map +1 -0
- package/lib/agent/interactive/interactive-mode.js +79 -0
- package/lib/agent/interactive/interactive-mode.js.map +1 -0
- package/lib/agent/interactive/run-agent-mode.d.ts +19 -0
- package/lib/agent/interactive/run-agent-mode.d.ts.map +1 -0
- package/lib/agent/interactive/run-agent-mode.js +116 -0
- package/lib/agent/interactive/run-agent-mode.js.map +1 -0
- package/lib/agent/interactive/session-keybindings.d.ts +17 -0
- package/lib/agent/interactive/session-keybindings.d.ts.map +1 -0
- package/lib/agent/interactive/session-keybindings.js +50 -0
- package/lib/agent/interactive/session-keybindings.js.map +1 -0
- package/lib/agent/interactive/session-restore.d.ts +40 -0
- package/lib/agent/interactive/session-restore.d.ts.map +1 -0
- package/lib/agent/interactive/session-restore.js +177 -0
- package/lib/agent/interactive/session-restore.js.map +1 -0
- package/lib/agent/interactive/settings.d.ts +26 -0
- package/lib/agent/interactive/settings.d.ts.map +1 -0
- package/lib/agent/interactive/settings.js +25 -0
- package/lib/agent/interactive/settings.js.map +1 -0
- package/lib/commands/agent-command.d.ts +1 -1
- package/lib/commands/agent-command.d.ts.map +1 -1
- package/lib/commands/agent-command.js +1 -1
- package/lib/commands/agent-command.js.map +1 -1
- package/lib/dev/local-outbound.d.ts.map +1 -1
- package/lib/dev/local-outbound.js +4 -4
- package/lib/dev/local-outbound.js.map +1 -1
- package/lib/docs-compliance/rules.d.ts.map +1 -1
- package/lib/docs-compliance/rules.js +0 -68
- package/lib/docs-compliance/rules.js.map +1 -1
- package/package.json +2 -2
- package/lib/agent/auth-commands.d.ts.map +0 -1
- package/lib/agent/auth-commands.js.map +0 -1
- package/lib/agent/bkper-ai-provider.d.ts.map +0 -1
- package/lib/agent/bkper-ai-provider.js.map +0 -1
- package/lib/agent/core-concepts-preload.d.ts.map +0 -1
- package/lib/agent/core-concepts-preload.js.map +0 -1
- package/lib/agent/run-agent-mode.d.ts +0 -107
- package/lib/agent/run-agent-mode.d.ts.map +0 -1
- package/lib/agent/run-agent-mode.js +0 -548
- package/lib/agent/run-agent-mode.js.map +0 -1
- /package/lib/agent/{bkper-ai-provider.d.ts → extensions/bkper-ai-provider.d.ts} +0 -0
- /package/lib/agent/{core-concepts-preload.d.ts → extensions/core-concepts-preload.d.ts} +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
type KeybindingsConfigValue = string | string[] | undefined;
|
|
2
|
+
export type KeybindingsConfigLike = Record<string, KeybindingsConfigValue>;
|
|
3
|
+
export type BkperKeybindingsManager = {
|
|
4
|
+
getUserBindings(): KeybindingsConfigLike;
|
|
5
|
+
setUserBindings(userBindings: KeybindingsConfigLike): void;
|
|
6
|
+
reload(): void;
|
|
7
|
+
};
|
|
8
|
+
declare const BKPER_SESSION_KEYBINDINGS: {
|
|
9
|
+
readonly 'app.session.resume': "ctrl+s";
|
|
10
|
+
readonly 'app.session.tree': "ctrl+r";
|
|
11
|
+
readonly 'app.session.fork': "ctrl+x";
|
|
12
|
+
};
|
|
13
|
+
export declare function applyBkperSessionKeybindings(keybindings: Pick<BkperKeybindingsManager, 'getUserBindings' | 'setUserBindings'>): void;
|
|
14
|
+
export declare function installBkperSessionKeybindings(keybindings: BkperKeybindingsManager): void;
|
|
15
|
+
export declare function formatBkperSessionCommandShortcut(command: string, keybinding: keyof typeof BKPER_SESSION_KEYBINDINGS): string;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=session-keybindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-keybindings.d.ts","sourceRoot":"","sources":["../../../src/agent/interactive/session-keybindings.ts"],"names":[],"mappings":"AAEA,KAAK,sBAAsB,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;AAC5D,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;AAE3E,MAAM,MAAM,uBAAuB,GAAG;IAClC,eAAe,IAAI,qBAAqB,CAAC;IACzC,eAAe,CAAC,YAAY,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC3D,MAAM,IAAI,IAAI,CAAC;CAClB,CAAC;AAEF,QAAA,MAAM,yBAAyB;;;;CAIrB,CAAC;AA8BX,wBAAgB,4BAA4B,CACxC,WAAW,EAAE,IAAI,CAAC,uBAAuB,EAAE,iBAAiB,GAAG,iBAAiB,CAAC,GAClF,IAAI,CAoBN;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,uBAAuB,GAAG,IAAI,CAWzF;AAED,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,OAAO,yBAAyB,GACnD,MAAM,CAGR"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { keyText } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
const BKPER_SESSION_KEYBINDINGS = {
|
|
3
|
+
'app.session.resume': 'ctrl+s',
|
|
4
|
+
'app.session.tree': 'ctrl+r',
|
|
5
|
+
'app.session.fork': 'ctrl+x',
|
|
6
|
+
};
|
|
7
|
+
const installedBkperKeybindingsManagers = new WeakSet();
|
|
8
|
+
function keybindingConfigIncludesShortcut(configuredBinding, shortcut) {
|
|
9
|
+
const normalizedShortcut = shortcut.toLowerCase();
|
|
10
|
+
const configuredShortcuts = Array.isArray(configuredBinding)
|
|
11
|
+
? configuredBinding
|
|
12
|
+
: [configuredBinding];
|
|
13
|
+
return configuredShortcuts.some(configuredShortcut => (configuredShortcut === null || configuredShortcut === void 0 ? void 0 : configuredShortcut.toLowerCase()) === normalizedShortcut);
|
|
14
|
+
}
|
|
15
|
+
function isShortcutClaimedByUserBinding(userBindings, targetKeybinding, shortcut) {
|
|
16
|
+
return Object.entries(userBindings).some(([keybinding, configuredBinding]) => keybinding !== targetKeybinding &&
|
|
17
|
+
keybindingConfigIncludesShortcut(configuredBinding, shortcut));
|
|
18
|
+
}
|
|
19
|
+
export function applyBkperSessionKeybindings(keybindings) {
|
|
20
|
+
const userBindings = keybindings.getUserBindings();
|
|
21
|
+
const nextBindings = Object.assign({}, userBindings);
|
|
22
|
+
let changed = false;
|
|
23
|
+
for (const [keybinding, shortcut] of Object.entries(BKPER_SESSION_KEYBINDINGS)) {
|
|
24
|
+
if (nextBindings[keybinding] !== undefined ||
|
|
25
|
+
isShortcutClaimedByUserBinding(userBindings, keybinding, shortcut)) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
nextBindings[keybinding] = shortcut;
|
|
29
|
+
changed = true;
|
|
30
|
+
}
|
|
31
|
+
if (changed) {
|
|
32
|
+
keybindings.setUserBindings(nextBindings);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function installBkperSessionKeybindings(keybindings) {
|
|
36
|
+
if (!installedBkperKeybindingsManagers.has(keybindings)) {
|
|
37
|
+
const reload = keybindings.reload.bind(keybindings);
|
|
38
|
+
keybindings.reload = () => {
|
|
39
|
+
reload();
|
|
40
|
+
applyBkperSessionKeybindings(keybindings);
|
|
41
|
+
};
|
|
42
|
+
installedBkperKeybindingsManagers.add(keybindings);
|
|
43
|
+
}
|
|
44
|
+
applyBkperSessionKeybindings(keybindings);
|
|
45
|
+
}
|
|
46
|
+
export function formatBkperSessionCommandShortcut(command, keybinding) {
|
|
47
|
+
const shortcut = keyText(keybinding);
|
|
48
|
+
return shortcut ? `${command} (${shortcut})` : command;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=session-keybindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-keybindings.js","sourceRoot":"","sources":["../../../src/agent/interactive/session-keybindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,iCAAiC,CAAC;AAWxD,MAAM,yBAAyB,GAAG;IAC9B,oBAAoB,EAAE,QAAQ;IAC9B,kBAAkB,EAAE,QAAQ;IAC5B,kBAAkB,EAAE,QAAQ;CACtB,CAAC;AAEX,MAAM,iCAAiC,GAAG,IAAI,OAAO,EAA2B,CAAC;AAEjF,SAAS,gCAAgC,CACrC,iBAAyC,EACzC,QAAgB;IAEhB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACxD,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAE1B,OAAO,mBAAmB,CAAC,IAAI,CAC3B,kBAAkB,CAAC,EAAE,CAAC,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,WAAW,EAAE,MAAK,kBAAkB,CACjF,CAAC;AACN,CAAC;AAED,SAAS,8BAA8B,CACnC,YAAmC,EACnC,gBAAwB,EACxB,QAAgB;IAEhB,OAAO,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CACpC,CAAC,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,EAAE,CAChC,UAAU,KAAK,gBAAgB;QAC/B,gCAAgC,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CACpE,CAAC;AACN,CAAC;AAED,MAAM,UAAU,4BAA4B,CACxC,WAAiF;IAEjF,MAAM,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;IACnD,MAAM,YAAY,qBAA8B,YAAY,CAAC,CAAC;IAC9D,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC7E,IACI,YAAY,CAAC,UAAU,CAAC,KAAK,SAAS;YACtC,8BAA8B,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,EACpE,CAAC;YACC,SAAS;QACb,CAAC;QAED,YAAY,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;QACpC,OAAO,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACV,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,8BAA8B,CAAC,WAAoC;IAC/E,IAAI,CAAC,iCAAiC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpD,WAAW,CAAC,MAAM,GAAG,GAAG,EAAE;YACtB,MAAM,EAAE,CAAC;YACT,4BAA4B,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC;QACF,iCAAiC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,4BAA4B,CAAC,WAAW,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC7C,OAAe,EACf,UAAkD;IAElD,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { AgentSessionRuntimeDiagnostic } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
import { type BkperAiThinkingLevel } from '../extensions/bkper-ai-provider.js';
|
|
3
|
+
type ScopedThinkingLevel = BkperAiThinkingLevel;
|
|
4
|
+
type ModelLike = {
|
|
5
|
+
provider: string;
|
|
6
|
+
id: string;
|
|
7
|
+
bkperDefault?: boolean;
|
|
8
|
+
bkperDefaultThinkingLevel?: BkperAiThinkingLevel;
|
|
9
|
+
};
|
|
10
|
+
type ModelRegistryLike<TModel extends ModelLike = ModelLike> = {
|
|
11
|
+
getAvailable(): TModel[];
|
|
12
|
+
find(provider: string, modelId: string): TModel | undefined;
|
|
13
|
+
};
|
|
14
|
+
type SessionManagerLike = {
|
|
15
|
+
buildSessionContext(): {
|
|
16
|
+
messages: unknown[];
|
|
17
|
+
model?: {
|
|
18
|
+
provider: string;
|
|
19
|
+
modelId: string;
|
|
20
|
+
} | null;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
type PersistedModelSettings = {
|
|
24
|
+
getEnabledModels(): string[] | undefined;
|
|
25
|
+
getDefaultProvider(): string | undefined;
|
|
26
|
+
getDefaultModel(): string | undefined;
|
|
27
|
+
};
|
|
28
|
+
type ScopedModel<TModel extends ModelLike = ModelLike> = {
|
|
29
|
+
model: TModel;
|
|
30
|
+
thinkingLevel?: ScopedThinkingLevel;
|
|
31
|
+
};
|
|
32
|
+
export interface RestoredPersistedSessionOptions<TModel extends ModelLike = ModelLike> {
|
|
33
|
+
model?: TModel;
|
|
34
|
+
thinkingLevel?: ScopedThinkingLevel;
|
|
35
|
+
scopedModels: Array<ScopedModel<TModel>>;
|
|
36
|
+
diagnostics: AgentSessionRuntimeDiagnostic[];
|
|
37
|
+
}
|
|
38
|
+
export declare function restorePersistedSessionOptions<TModel extends ModelLike>(settingsManager: PersistedModelSettings, modelRegistry: ModelRegistryLike<TModel>, sessionManager: SessionManagerLike): RestoredPersistedSessionOptions<TModel>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=session-restore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-restore.d.ts","sourceRoot":"","sources":["../../../src/agent/interactive/session-restore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAIH,KAAK,oBAAoB,EAC5B,MAAM,oCAAoC,CAAC;AAE5C,KAAK,mBAAmB,GAAG,oBAAoB,CAAC;AAEhD,KAAK,SAAS,GAAG;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,CAAC,EAAE,oBAAoB,CAAC;CACpD,CAAC;AAEF,KAAK,iBAAiB,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI;IAC3D,YAAY,IAAI,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC/D,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,mBAAmB,IAAI;QACnB,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE;YACJ,QAAQ,EAAE,MAAM,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;SACnB,GAAG,IAAI,CAAC;KACZ,CAAC;CACL,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC1B,gBAAgB,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAAC;IACzC,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,KAAK,WAAW,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACvC,CAAC;AAEF,MAAM,WAAW,+BAA+B,CAAC,MAAM,SAAS,SAAS,GAAG,SAAS;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,WAAW,EAAE,6BAA6B,EAAE,CAAC;CAChD;AAkHD,wBAAgB,8BAA8B,CAAC,MAAM,SAAS,SAAS,EACnE,eAAe,EAAE,sBAAsB,EACvC,aAAa,EAAE,iBAAiB,CAAC,MAAM,CAAC,EACxC,cAAc,EAAE,kBAAkB,GACnC,+BAA+B,CAAC,MAAM,CAAC,CAoHzC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { BKPER_AI_PROVIDER_ID, findDefaultBkperAiModel, getBkperAiDefaultThinkingLevel, } from '../extensions/bkper-ai-provider.js';
|
|
2
|
+
function isSameModel(left, right) {
|
|
3
|
+
return left.provider === right.provider && left.id === right.id;
|
|
4
|
+
}
|
|
5
|
+
function isThinkingLevel(value) {
|
|
6
|
+
return ['off', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'].includes(value);
|
|
7
|
+
}
|
|
8
|
+
function findExactModelMatch(modelReference, availableModels) {
|
|
9
|
+
const trimmedReference = modelReference.trim();
|
|
10
|
+
if (!trimmedReference) {
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
const normalizedReference = trimmedReference.toLowerCase();
|
|
14
|
+
const canonicalMatches = availableModels.filter(model => `${model.provider}/${model.id}`.toLowerCase() === normalizedReference);
|
|
15
|
+
if (canonicalMatches.length > 0) {
|
|
16
|
+
return canonicalMatches;
|
|
17
|
+
}
|
|
18
|
+
const idMatches = availableModels.filter(model => model.id.toLowerCase() === normalizedReference);
|
|
19
|
+
return idMatches.length === 1 ? idMatches : [];
|
|
20
|
+
}
|
|
21
|
+
function hasWildcard(pattern) {
|
|
22
|
+
return pattern.includes('*') || pattern.includes('?');
|
|
23
|
+
}
|
|
24
|
+
function escapeRegExp(value) {
|
|
25
|
+
return value.replace(/[|\\{}()[\]^$+?.]/g, '\\$&');
|
|
26
|
+
}
|
|
27
|
+
function globToRegExp(pattern) {
|
|
28
|
+
let regex = '^';
|
|
29
|
+
for (const char of pattern) {
|
|
30
|
+
if (char === '*') {
|
|
31
|
+
regex += '.*';
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (char === '?') {
|
|
35
|
+
regex += '.';
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
regex += escapeRegExp(char);
|
|
39
|
+
}
|
|
40
|
+
regex += '$';
|
|
41
|
+
return new RegExp(regex, 'i');
|
|
42
|
+
}
|
|
43
|
+
function resolvePatternMatches(rawPattern, availableModels) {
|
|
44
|
+
const exactMatches = findExactModelMatch(rawPattern, availableModels);
|
|
45
|
+
if (exactMatches.length > 0) {
|
|
46
|
+
return { matches: exactMatches };
|
|
47
|
+
}
|
|
48
|
+
let pattern = rawPattern.trim();
|
|
49
|
+
let thinkingLevel;
|
|
50
|
+
const lastColonIndex = pattern.lastIndexOf(':');
|
|
51
|
+
if (lastColonIndex !== -1) {
|
|
52
|
+
const suffix = pattern.substring(lastColonIndex + 1).trim();
|
|
53
|
+
if (isThinkingLevel(suffix)) {
|
|
54
|
+
thinkingLevel = suffix;
|
|
55
|
+
pattern = pattern.substring(0, lastColonIndex).trim();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const exactPatternMatches = findExactModelMatch(pattern, availableModels);
|
|
59
|
+
if (exactPatternMatches.length > 0) {
|
|
60
|
+
return {
|
|
61
|
+
matches: exactPatternMatches,
|
|
62
|
+
thinkingLevel,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (!hasWildcard(pattern)) {
|
|
66
|
+
return {
|
|
67
|
+
matches: [],
|
|
68
|
+
thinkingLevel,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
const regex = globToRegExp(pattern);
|
|
72
|
+
const matches = availableModels.filter(model => {
|
|
73
|
+
const fullId = `${model.provider}/${model.id}`;
|
|
74
|
+
return regex.test(fullId) || regex.test(model.id);
|
|
75
|
+
});
|
|
76
|
+
return {
|
|
77
|
+
matches,
|
|
78
|
+
thinkingLevel,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function restorePersistedSessionOptions(settingsManager, modelRegistry, sessionManager) {
|
|
82
|
+
var _a, _b;
|
|
83
|
+
const availableModels = modelRegistry.getAvailable();
|
|
84
|
+
const sessionContext = sessionManager.buildSessionContext();
|
|
85
|
+
const hasSessionMessages = sessionContext.messages.length > 0;
|
|
86
|
+
const startupDefaultModel = findDefaultBkperAiModel(availableModels);
|
|
87
|
+
const unavailableBkperSessionModel = ((_a = sessionContext.model) === null || _a === void 0 ? void 0 : _a.provider) === BKPER_AI_PROVIDER_ID &&
|
|
88
|
+
modelRegistry.find(sessionContext.model.provider, sessionContext.model.modelId) === undefined;
|
|
89
|
+
const enabledModels = settingsManager.getEnabledModels();
|
|
90
|
+
if (!enabledModels || enabledModels.length === 0) {
|
|
91
|
+
if (hasSessionMessages) {
|
|
92
|
+
return {
|
|
93
|
+
model: unavailableBkperSessionModel ? startupDefaultModel : undefined,
|
|
94
|
+
thinkingLevel: unavailableBkperSessionModel && startupDefaultModel
|
|
95
|
+
? getBkperAiDefaultThinkingLevel(startupDefaultModel)
|
|
96
|
+
: undefined,
|
|
97
|
+
scopedModels: [],
|
|
98
|
+
diagnostics: [],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const defaultProvider = settingsManager.getDefaultProvider();
|
|
102
|
+
const defaultModelId = settingsManager.getDefaultModel();
|
|
103
|
+
const defaultModel = defaultProvider && defaultModelId
|
|
104
|
+
? modelRegistry.find(defaultProvider, defaultModelId)
|
|
105
|
+
: undefined;
|
|
106
|
+
const defaultThinkingLevel = defaultModel
|
|
107
|
+
? getBkperAiDefaultThinkingLevel(defaultModel)
|
|
108
|
+
: undefined;
|
|
109
|
+
const unavailableBkperDefault = defaultProvider === BKPER_AI_PROVIDER_ID &&
|
|
110
|
+
defaultModelId !== undefined &&
|
|
111
|
+
defaultModel === undefined;
|
|
112
|
+
const fallbackStartupModel = (!defaultProvider && !defaultModelId) || unavailableBkperDefault
|
|
113
|
+
? startupDefaultModel
|
|
114
|
+
: undefined;
|
|
115
|
+
return {
|
|
116
|
+
model: defaultThinkingLevel ? defaultModel : fallbackStartupModel,
|
|
117
|
+
thinkingLevel: defaultThinkingLevel !== null && defaultThinkingLevel !== void 0 ? defaultThinkingLevel : (fallbackStartupModel
|
|
118
|
+
? getBkperAiDefaultThinkingLevel(fallbackStartupModel)
|
|
119
|
+
: undefined),
|
|
120
|
+
scopedModels: [],
|
|
121
|
+
diagnostics: [],
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
const scopedModels = [];
|
|
125
|
+
const diagnostics = [];
|
|
126
|
+
for (const pattern of enabledModels) {
|
|
127
|
+
const { matches, thinkingLevel } = resolvePatternMatches(pattern, availableModels);
|
|
128
|
+
if (matches.length === 0) {
|
|
129
|
+
diagnostics.push({
|
|
130
|
+
type: 'warning',
|
|
131
|
+
message: `No models match enabledModels pattern "${pattern}"`,
|
|
132
|
+
});
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
for (const model of matches) {
|
|
136
|
+
if (scopedModels.some(scopedModel => isSameModel(scopedModel.model, model))) {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
const catalogThinkingLevel = getBkperAiDefaultThinkingLevel(model);
|
|
140
|
+
scopedModels.push({
|
|
141
|
+
model,
|
|
142
|
+
thinkingLevel: thinkingLevel !== null && thinkingLevel !== void 0 ? thinkingLevel : catalogThinkingLevel,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (hasSessionMessages) {
|
|
147
|
+
return {
|
|
148
|
+
model: unavailableBkperSessionModel ? startupDefaultModel : undefined,
|
|
149
|
+
thinkingLevel: unavailableBkperSessionModel && startupDefaultModel
|
|
150
|
+
? getBkperAiDefaultThinkingLevel(startupDefaultModel)
|
|
151
|
+
: undefined,
|
|
152
|
+
scopedModels,
|
|
153
|
+
diagnostics,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
if (scopedModels.length === 0) {
|
|
157
|
+
return {
|
|
158
|
+
scopedModels,
|
|
159
|
+
diagnostics,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const defaultProvider = settingsManager.getDefaultProvider();
|
|
163
|
+
const defaultModelId = settingsManager.getDefaultModel();
|
|
164
|
+
const defaultModel = defaultProvider && defaultModelId
|
|
165
|
+
? modelRegistry.find(defaultProvider, defaultModelId)
|
|
166
|
+
: undefined;
|
|
167
|
+
const selectedModel = (_b = (defaultModel
|
|
168
|
+
? scopedModels.find(scopedModel => isSameModel(scopedModel.model, defaultModel))
|
|
169
|
+
: undefined)) !== null && _b !== void 0 ? _b : scopedModels[0];
|
|
170
|
+
return {
|
|
171
|
+
model: selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.model,
|
|
172
|
+
thinkingLevel: selectedModel === null || selectedModel === void 0 ? void 0 : selectedModel.thinkingLevel,
|
|
173
|
+
scopedModels,
|
|
174
|
+
diagnostics,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=session-restore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-restore.js","sourceRoot":"","sources":["../../../src/agent/interactive/session-restore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AgentSessionRuntimeDiagnostic, TuiMode } from '@earendil-works/pi-coding-agent';
|
|
2
|
+
type SettingsError = {
|
|
3
|
+
scope: 'global' | 'project';
|
|
4
|
+
error: Error;
|
|
5
|
+
};
|
|
6
|
+
type BkperAgentSettingsDefaultsManager = {
|
|
7
|
+
getGlobalSettings(): {
|
|
8
|
+
showCacheMissNotices?: boolean;
|
|
9
|
+
tuiMode?: TuiMode;
|
|
10
|
+
};
|
|
11
|
+
getProjectSettings(): {
|
|
12
|
+
showCacheMissNotices?: boolean;
|
|
13
|
+
tuiMode?: TuiMode;
|
|
14
|
+
};
|
|
15
|
+
setShowCacheMissNotices(show: boolean): void;
|
|
16
|
+
setTuiMode(mode: TuiMode): void;
|
|
17
|
+
};
|
|
18
|
+
export declare function applyBkperAgentSettingsDefaults(settingsManager: BkperAgentSettingsDefaultsManager): void;
|
|
19
|
+
export declare function collectSettingsDiagnostics(settingsManager: {
|
|
20
|
+
drainErrors(): SettingsError[];
|
|
21
|
+
}, context: string): AgentSessionRuntimeDiagnostic[];
|
|
22
|
+
export declare function createStartupSessionManager<TSessionManager>(cwd: string, settingsManager: {
|
|
23
|
+
getSessionDir(): string | undefined;
|
|
24
|
+
}, createSessionManager: (cwd: string, sessionDir?: string) => TSessionManager): TSessionManager;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/agent/interactive/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,6BAA6B,EAC7B,OAAO,EACV,MAAM,iCAAiC,CAAC;AAEzC,KAAK,aAAa,GAAG;IACjB,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,KAAK,CAAC;CAChB,CAAC;AAEF,KAAK,iCAAiC,GAAG;IACrC,iBAAiB,IAAI;QACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,kBAAkB,IAAI;QAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC,CAAC;AAEF,wBAAgB,+BAA+B,CAC3C,eAAe,EAAE,iCAAiC,GACnD,IAAI,CAkBN;AAED,wBAAgB,0BAA0B,CACtC,eAAe,EAAE;IAAC,WAAW,IAAI,aAAa,EAAE,CAAA;CAAC,EACjD,OAAO,EAAE,MAAM,GAChB,6BAA6B,EAAE,CAKjC;AAED,wBAAgB,2BAA2B,CAAC,eAAe,EACvD,GAAG,EAAE,MAAM,EACX,eAAe,EAAE;IAAC,aAAa,IAAI,MAAM,GAAG,SAAS,CAAA;CAAC,EACtD,oBAAoB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,eAAe,GAC5E,eAAe,CAEjB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function applyBkperAgentSettingsDefaults(settingsManager) {
|
|
2
|
+
const globalSettings = settingsManager.getGlobalSettings();
|
|
3
|
+
const projectSettings = settingsManager.getProjectSettings();
|
|
4
|
+
const hasExplicitCacheMissNotices = [
|
|
5
|
+
globalSettings.showCacheMissNotices,
|
|
6
|
+
projectSettings.showCacheMissNotices,
|
|
7
|
+
].some(value => value !== undefined);
|
|
8
|
+
const hasExplicitTuiMode = [globalSettings.tuiMode, projectSettings.tuiMode].some(value => value !== undefined);
|
|
9
|
+
if (!hasExplicitCacheMissNotices) {
|
|
10
|
+
settingsManager.setShowCacheMissNotices(true);
|
|
11
|
+
}
|
|
12
|
+
if (!hasExplicitTuiMode) {
|
|
13
|
+
settingsManager.setTuiMode('fullscreen');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export function collectSettingsDiagnostics(settingsManager, context) {
|
|
17
|
+
return settingsManager.drainErrors().map(({ scope, error }) => ({
|
|
18
|
+
type: 'warning',
|
|
19
|
+
message: `(${context}, ${scope} settings) ${error.message}`,
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
export function createStartupSessionManager(cwd, settingsManager, createSessionManager) {
|
|
23
|
+
return createSessionManager(cwd, settingsManager.getSessionDir());
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/agent/interactive/settings.ts"],"names":[],"mappings":"AAuBA,MAAM,UAAU,+BAA+B,CAC3C,eAAkD;IAElD,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAC;IAC3D,MAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,EAAE,CAAC;IAC7D,MAAM,2BAA2B,GAAG;QAChC,cAAc,CAAC,oBAAoB;QACnC,eAAe,CAAC,oBAAoB;KACvC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IACrC,MAAM,kBAAkB,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAC7E,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAC/B,CAAC;IAEF,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAC/B,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtB,eAAe,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CACtC,eAAiD,EACjD,OAAe;IAEf,OAAO,eAAe,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAC,KAAK,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI,OAAO,KAAK,KAAK,cAAc,KAAK,CAAC,OAAO,EAAE;KAC9D,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,UAAU,2BAA2B,CACvC,GAAW,EACX,eAAsD,EACtD,oBAA2E;IAE3E,OAAO,oBAAoB,CAAC,GAAG,EAAE,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
-
import { type SessionOptions } from '../agent/run-agent-mode.js';
|
|
2
|
+
import { type SessionOptions } from '../agent/interactive/run-agent-mode.js';
|
|
3
3
|
export interface AgentCommandEnvironment {
|
|
4
4
|
stdinIsTTY: boolean;
|
|
5
5
|
stdoutIsTTY: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-command.d.ts","sourceRoot":"","sources":["../../src/commands/agent-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAGH,KAAK,cAAc,EACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-command.d.ts","sourceRoot":"","sources":["../../src/commands/agent-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAGH,KAAK,cAAc,EACtB,MAAM,wCAAwC,CAAC;AAGhD,MAAM,WAAW,uBAAuB;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACrC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACzC;AAwGD,wBAAsB,eAAe,CACjC,MAAM,EAAE,MAAM,EAAE,EAChB,YAAY,GAAE,wBAAsD,GACrE,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM5D"}
|
|
@@ -8,7 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
10
|
import { main as runPiMain } from '@earendil-works/pi-coding-agent';
|
|
11
|
-
import { createAgentModeDependencies, runAgentMode, } from '../agent/run-agent-mode.js';
|
|
11
|
+
import { createAgentModeDependencies, runAgentMode, } from '../agent/interactive/run-agent-mode.js';
|
|
12
12
|
import { getBkperAgentSystemPrompt } from '../agent/system-prompt.js';
|
|
13
13
|
// Unit tests and custom dependency injection historically omitted terminal state.
|
|
14
14
|
// Production dependencies always provide the real process TTY state below.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-command.js","sourceRoot":"","sources":["../../src/commands/agent-command.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACH,2BAA2B,EAC3B,YAAY,GAEf,MAAM,
|
|
1
|
+
{"version":3,"file":"agent-command.js","sourceRoot":"","sources":["../../src/commands/agent-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-outbound.d.ts","sourceRoot":"","sources":["../../src/dev/local-outbound.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE3E,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC1D;AAMD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"local-outbound.d.ts","sourceRoot":"","sources":["../../src/dev/local-outbound.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE3E,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC1D;AAMD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,GAAG,oBAAoB,CA0B9F"}
|
|
@@ -21,7 +21,7 @@ export function createLocalOutboundService(options) {
|
|
|
21
21
|
const forwardFetch = (_b = options.forwardFetch) !== null && _b !== void 0 ? _b : ((request) => fetch(request));
|
|
22
22
|
return (request) => __awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
if (!isAllowedBkperApiRequest(request)) {
|
|
24
|
-
return forwardFetch(request);
|
|
24
|
+
return forwardFetch(createForwardRequest(request, new Headers(request.headers), request.redirect));
|
|
25
25
|
}
|
|
26
26
|
const accessToken = normalizeBearerToken(yield getAccessToken());
|
|
27
27
|
if (!accessToken) {
|
|
@@ -34,14 +34,14 @@ export function createLocalOutboundService(options) {
|
|
|
34
34
|
headers.set('Authorization', `Bearer ${accessToken}`);
|
|
35
35
|
headers.set('bkper-agent-id', options.appId);
|
|
36
36
|
stripPlatformCookieHeaders(headers);
|
|
37
|
-
return forwardFetch(createForwardRequest(request, headers));
|
|
37
|
+
return forwardFetch(createForwardRequest(request, headers, 'manual'));
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
-
function createForwardRequest(request, headers) {
|
|
40
|
+
function createForwardRequest(request, headers, redirect) {
|
|
41
41
|
const init = {
|
|
42
42
|
method: request.method,
|
|
43
43
|
headers,
|
|
44
|
-
redirect
|
|
44
|
+
redirect,
|
|
45
45
|
};
|
|
46
46
|
if (request.method !== 'GET' && request.method !== 'HEAD') {
|
|
47
47
|
init.body = request.body;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-outbound.js","sourceRoot":"","sources":["../../src/dev/local-outbound.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAC9C,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;IAC1C,eAAe;IACf,mBAAmB;IACnB,qBAAqB;CACxB,CAAC,CAAC;AAcH,MAAM,UAAU,0BAA0B,CAAC,OAA6B;;IACpE,MAAM,cAAc,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,mBAAmB,CAAC;IACrE,MAAM,YAAY,GAAG,MAAA,OAAO,CAAC,YAAY,mCAAI,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpF,OAAO,CAAO,OAAgB,EAAqB,EAAE;QACjD,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"local-outbound.js","sourceRoot":"","sources":["../../src/dev/local-outbound.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAC9C,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;IAC1C,eAAe;IACf,mBAAmB;IACnB,qBAAqB;CACxB,CAAC,CAAC;AAcH,MAAM,UAAU,0BAA0B,CAAC,OAA6B;;IACpE,MAAM,cAAc,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,mBAAmB,CAAC;IACrE,MAAM,YAAY,GAAG,MAAA,OAAO,CAAC,YAAY,mCAAI,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpF,OAAO,CAAO,OAAgB,EAAqB,EAAE;QACjD,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,YAAY,CACf,oBAAoB,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAChF,CAAC;QACN,CAAC;QAED,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,EAAE;gBAC5E,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAClD,CAAC,CAAC;QACP,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAEpC,OAAO,YAAY,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAA,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CACzB,OAAgB,EAChB,OAAgB,EAChB,QAA6B;IAE7B,MAAM,IAAI,GAA0B;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;QACP,QAAQ;KACX,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACxD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC;IACL,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAgB;IAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,qBAAqB,CAAC;AAC3E,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAyB;IACnD,MAAM,OAAO,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAgB;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SAC3C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB;;IAC5C,MAAM,UAAU,GAAG,MAAA,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0CAAE,IAAI,GAAG,WAAW,EAAE,CAAC;IACrE,OAAO,6BAA6B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/docs-compliance/rules.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/docs-compliance/rules.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B;AA4BD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CA+F1E"}
|
|
@@ -17,25 +17,6 @@ function findMissingQueryErrors(content, commandPattern, code, message) {
|
|
|
17
17
|
}
|
|
18
18
|
return errors;
|
|
19
19
|
}
|
|
20
|
-
function hasHeading(content, heading) {
|
|
21
|
-
return heading.test(content);
|
|
22
|
-
}
|
|
23
|
-
function containsAll(content, terms) {
|
|
24
|
-
const lowerContent = content.toLowerCase();
|
|
25
|
-
return terms.every(term => lowerContent.includes(term.toLowerCase()));
|
|
26
|
-
}
|
|
27
|
-
function containsSequence(content, terms) {
|
|
28
|
-
const lowerContent = content.toLowerCase();
|
|
29
|
-
let startIndex = 0;
|
|
30
|
-
for (const term of terms) {
|
|
31
|
-
const index = lowerContent.indexOf(term.toLowerCase(), startIndex);
|
|
32
|
-
if (index < 0) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
startIndex = index + term.length;
|
|
36
|
-
}
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
20
|
export function evaluateReadmeCompliance(content) {
|
|
40
21
|
const errors = [];
|
|
41
22
|
errors.push(...findMissingQueryErrors(content, /^\s*bkper\s+transaction\s+list\b.*$/gm, 'transaction-list-missing-query', 'Found `bkper transaction list` example without `-q/--query`.'));
|
|
@@ -67,55 +48,6 @@ export function evaluateReadmeCompliance(content) {
|
|
|
67
48
|
line: getLineNumber(content, doubleQuotedDateVariableMatch.index),
|
|
68
49
|
});
|
|
69
50
|
}
|
|
70
|
-
if (!hasHeading(content, /^#{2,6}\s+Book setup guidance\b/im)) {
|
|
71
|
-
errors.push({
|
|
72
|
-
code: 'missing-book-setup-guidance-title',
|
|
73
|
-
message: 'Missing `Book setup guidance` section.',
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
if (!containsSequence(content, ['top-level groups', 'child groups', 'accounts']) ||
|
|
77
|
-
!containsAll(content, ['--parent', '--groups'])) {
|
|
78
|
-
errors.push({
|
|
79
|
-
code: 'missing-book-setup-order-guidance',
|
|
80
|
-
message: 'Missing guidance to create top-level groups first, then child groups, then accounts.',
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
if (!containsAll(content, ['verify', 'hierarchy', 'account membership'])) {
|
|
84
|
-
errors.push({
|
|
85
|
-
code: 'missing-book-setup-verification-guidance',
|
|
86
|
-
message: 'Missing guidance to verify hierarchy and account memberships before success.',
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
if (!/LLM[-\s]first output guidance/i.test(content)) {
|
|
90
|
-
errors.push({
|
|
91
|
-
code: 'missing-llm-guidance-title',
|
|
92
|
-
message: 'Missing `LLM-first output guidance` section.',
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
if (!/LLM[\s\S]*(?:lists|reports)[\s\S]*CSV/i.test(content)) {
|
|
96
|
-
errors.push({
|
|
97
|
-
code: 'missing-csv-guidance',
|
|
98
|
-
message: 'Missing guidance mapping LLM list/report consumption to CSV.',
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
if (!/(?:programmatic|pipelines)[\s\S]*JSON/i.test(content)) {
|
|
102
|
-
errors.push({
|
|
103
|
-
code: 'missing-json-guidance',
|
|
104
|
-
message: 'Missing guidance mapping programmatic pipelines to JSON.',
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
if (!hasHeading(content, /^#{2,6}\s+Query semantics\b/im)) {
|
|
108
|
-
errors.push({
|
|
109
|
-
code: 'missing-query-semantics-section',
|
|
110
|
-
message: 'Missing `Query semantics` section.',
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
if (!containsAll(content, ['after:', 'inclusive', 'before:', 'exclusive'])) {
|
|
114
|
-
errors.push({
|
|
115
|
-
code: 'missing-after-before-semantics',
|
|
116
|
-
message: 'Missing explicit semantics for `after:` and `before:`.',
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
51
|
if (content.includes('Write commands (`account create`, `group create`, `transaction create`) accept JSON data piped via stdin')) {
|
|
120
52
|
errors.push({
|
|
121
53
|
code: 'group-create-stdin-documented',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/docs-compliance/rules.ts"],"names":[],"mappings":"AAUA,SAAS,aAAa,CAAC,OAAe,EAAE,KAAa;IACjD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACtD,CAAC;AAED,SAAS,sBAAsB,CAC3B,OAAe,EACf,cAAsB,EACtB,IAAY,EACZ,OAAe;IAEf,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC;gBACR,IAAI;gBACJ,OAAO;gBACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;aAC5C,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/docs-compliance/rules.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bkper",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.24.0",
|
|
4
4
|
"description": "Command line client for Bkper",
|
|
5
5
|
"bin": {
|
|
6
6
|
"bkper": "./lib/cli.js"
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"upgrade:api": "bun update @bkper/bkper-api-types --latest && bun update bkper-js --latest"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@earendil-works/pi-coding-agent": "0.
|
|
55
|
+
"@earendil-works/pi-coding-agent": "0.84.1",
|
|
56
56
|
"bkper-js": "^2.42.0",
|
|
57
57
|
"commander": "^13.1.0",
|
|
58
58
|
"dotenv": "^8.2.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth-commands.d.ts","sourceRoot":"","sources":["../../src/agent/auth-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,YAAY,EAEjB,KAAK,cAAc,EACtB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAIH,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAKH,KAAK,oBAAoB,EAC5B,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,yBAAyB,sBAAsB,CAAC;AAC7D,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAC/D,eAAO,MAAM,8BAA8B,2BAA2B,CAAC;AAEvE,UAAU,iBAAiB;IACvB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,UAAU,gBAAgB;IACtB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CAChE;AAED,UAAU,SAAS;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB,CAAC,EAAE,oBAAoB,CAAC;CACpD;AAkBD,wBAAgB,8BAA8B,CAC1C,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,gBAAgB,GAChC,IAAI,CAqEN;AAED,wBAAgB,kBAAkB,CAC9B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EAAE,EACzB,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAC7C,MAAM,GAAG,SAAS,CAOpB;AAED,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,SAAS,EAC5D,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,EAAE,OAAO,EACtB,gBAAgB,CAAC,EAAE,MAAM,GAC1B,MAAM,GAAG,SAAS,CAWpB;AAED,MAAM,WAAW,4BAA4B;IACzC,iBAAiB,CACb,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACtC,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1C,eAAe,IAAI,OAAO,CAAC;IAC3B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACtC,eAAe,IAAI,OAAO,CAAC,SAAS;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAoWD,wBAAgB,+BAA+B,CAC3C,EAAE,EAAE,YAAY,EAChB,YAAY,GAAE,4BAA6D,EAC3E,iBAAiB,CAAC,EAAE,yBAAyB,GAC9C,IAAI,CAgBN"}
|