From d2b1632264a3d56077ac6a8818c224babb02bc72 Mon Sep 17 00:00:00 2001 From: maelcaldas Date: Thu, 1 Oct 2026 14:19:58 -0300 Subject: [PATCH 1/3] chore(deps): bump pi to 0.99.2 - Type Bkper AI catalog models as chat configs; pi's provider model config is now a chat, image, and classifier union. Decision models in the catalog stay skipped. - Keep the agent's resolved defaultTools when it is empty: pi now merges an empty override into the inherited list, which re-enabled configured shells that are unavailable. --- bun.lock | 34 +++++++--- package.json | 4 +- src/agent/extensions/bkper-ai-provider.ts | 7 +- src/agent/interactive/run-agent-mode.ts | 3 +- src/agent/interactive/settings.ts | 26 +++++++- .../extensions/bkper-ai-provider.test.ts | 65 +++++++++++++++++-- test/unit/agent/interactive/settings.test.ts | 18 +++++ 7 files changed, 136 insertions(+), 21 deletions(-) diff --git a/bun.lock b/bun.lock index 8f6c0ba..bae1d3b 100644 --- a/bun.lock +++ b/bun.lock @@ -5,8 +5,8 @@ "": { "name": "bkper", "dependencies": { - "@earendil-works/pi-coding-agent": "0.87.1", - "@earendil-works/pi-tui": "0.87.1", + "@earendil-works/pi-coding-agent": "0.99.2", + "@earendil-works/pi-tui": "0.99.2", "bkper-js": "^2.42.0", "commander": "^13.1.0", "dotenv": "^8.2.0", @@ -114,17 +114,21 @@ "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], - "@earendil-works/chord": ["@earendil-works/chord@0.87.1", "", { "dependencies": { "esbuild": "0.28.2" } }, "sha512-bg7IkJGFcEaMqqYgOGUiq5Ky9RghpRfrlZ8I/v/1b4bBZ02A7t3E+6uhPRbadwWb/kWsnVFbZsqOKRN4a3LLCg=="], + "@earendil-works/chord": ["@earendil-works/chord@0.99.2", "", { "dependencies": { "esbuild": "0.28.2" } }, "sha512-2dJWiNsOJm/ioBl1fhpJmw0hIjFUhM0CAteEnVkiVG0Kg4LimR7Asq8PfjclEvrbCPsDntzy7rGKhTZObI9TZw=="], - "@earendil-works/pi-agent-core": ["@earendil-works/pi-agent-core@0.87.1", "", { "dependencies": { "@earendil-works/chord": "^0.87.1", "@earendil-works/pi-ai": "^0.87.1", "@earendil-works/pi-telemetry": "^0.87.1", "diff": "8.0.4", "ignore": "7.0.8", "typebox": "1.3.27", "yaml": "2.9.0" } }, "sha512-Zev3B0HK7YS5A4EZQ2XnEqiJuirx6QBiltJ+LpmjV5a/+2IU0cfKtIfnkNkORK707XOvKBY2WRtk7cAwHpbh2Q=="], + "@earendil-works/pi-agent-core": ["@earendil-works/pi-agent-core@0.99.2", "", { "dependencies": { "@earendil-works/chord": "^0.99.2", "@earendil-works/pi-ai": "^0.99.2", "@earendil-works/pi-telemetry": "^0.99.2", "diff": "8.0.4", "ignore": "7.0.8", "typebox": "1.3.27", "yaml": "2.9.0" } }, "sha512-VX0QMcg8HKBsv1bYP2NwmutBYa44OrwmtqR6Dq7QC3Ln8X/IlpHhUxB5L1JgnXNUUkTm8Wg/HZhzS797NBDMCQ=="], - "@earendil-works/pi-ai": ["@earendil-works/pi-ai@0.87.1", "", { "dependencies": { "@anthropic-ai/sdk": "0.124.0", "@aws-sdk/client-bedrock-runtime": "3.1127.0", "@earendil-works/pi-telemetry": "^0.87.1", "@google/genai": "2.21.0", "@smithy/node-http-handler": "4.12.1", "http-proxy-agent": "9.1.0", "https-proxy-agent": "9.1.0", "openai": "6.40.0", "partial-json": "0.1.7", "typebox": "1.3.27" }, "bin": { "pi-ai": "dist/cli.js" } }, "sha512-X/3PfQBnnoeVdO9Cv8zHghUMglzlgNZYGNzoPnbRoGnHl3Rw3TlA2UKSUB7BRHUOxMryHXYa8dnjWZlbRheDZA=="], + "@earendil-works/pi-ai": ["@earendil-works/pi-ai@0.99.2", "", { "dependencies": { "@anthropic-ai/sdk": "0.124.0", "@aws-sdk/client-bedrock-runtime": "3.1127.0", "@earendil-works/pi-telemetry": "^0.99.2", "@google/genai": "2.21.0", "@smithy/node-http-handler": "4.12.1", "http-proxy-agent": "9.1.0", "https-proxy-agent": "9.1.0", "openai": "7.19.0", "partial-json": "0.1.7", "typebox": "1.3.27" }, "bin": { "pi-ai": "dist/cli.js" } }, "sha512-9RFOEdY+ZTJ1AI+UuAFs4RM0tF2Tje/R/CEv9gWTJHt0iTu8XHZs64U/EIZxNSllFmec/4HfwsOxYj1qQek9bg=="], - "@earendil-works/pi-coding-agent": ["@earendil-works/pi-coding-agent@0.87.1", "", { "dependencies": { "@earendil-works/chord": "^0.87.1", "@earendil-works/pi-agent-core": "^0.87.1", "@earendil-works/pi-ai": "^0.87.1", "@earendil-works/pi-tui": "^0.87.1", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "6.0.0", "cross-spawn": "7.0.6", "diff": "8.0.4", "grok-mermaid": "0.2.3", "highlight.js": "10.7.3", "hosted-git-info": "9.0.3", "ignore": "7.0.8", "jiti": "2.7.0", "minimatch": "10.2.6", "proper-lockfile": "4.1.2", "semver": "7.8.5", "typebox": "1.3.27", "undici": "8.10.2", "yaml": "2.9.0" }, "bin": { "pi": "dist/bundle/cli.js" } }, "sha512-m8ArJUtVcQMSe1lLE/Ei7vX/JV7O39sWmWBsXV2NOU70F0qCp8GubA24pT3LnwTmM6LL2xV80/h6sQg85n69ew=="], + "@earendil-works/pi-codemode": ["@earendil-works/pi-codemode@0.99.2", "", { "dependencies": { "quickjs-wasi": "3.6.2" } }, "sha512-PVxNGu4l7LI92MvwUbaY3trjznU1Mlp2OMGwHwCWzLsjG7/lDa8xf6ei+Gws7VCt+Ri1tO+nFVl9KV2EeX7HWg=="], - "@earendil-works/pi-telemetry": ["@earendil-works/pi-telemetry@0.87.1", "", {}, "sha512-MC6TRQH5lgMXpcN+Vku2WMI2T8BsiUPzMQHGo81uqFZD3/9O79WWJAysEDGuzduP6R4tvtgwMLwmqIxynM10JQ=="], + "@earendil-works/pi-coding-agent": ["@earendil-works/pi-coding-agent@0.99.2", "", { "dependencies": { "@earendil-works/chord": "^0.99.2", "@earendil-works/pi-agent-core": "^0.99.2", "@earendil-works/pi-ai": "^0.99.2", "@earendil-works/pi-codemode": "^0.99.2", "@earendil-works/pi-mcp": "^0.99.2", "@earendil-works/pi-tui": "^0.99.2", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "6.0.0", "cross-spawn": "7.0.6", "diff": "8.0.4", "grok-mermaid": "0.2.3", "highlight.js": "10.7.3", "hosted-git-info": "9.0.3", "ignore": "7.0.8", "jiti": "2.7.0", "minimatch": "10.2.6", "proper-lockfile": "4.1.2", "quickjs-wasi": "3.6.2", "semver": "7.8.5", "typebox": "1.3.27", "undici": "8.10.2", "yaml": "2.9.0" }, "bin": { "pi": "dist/bundle/cli.js" } }, "sha512-6R1BZ2N77CrVcGf3eC2KovTz1Q4RYiAeydvVWQT546N2fi1nBc81aURlbOZCgruWoW9VY/UrLzDynF4YTolpoA=="], - "@earendil-works/pi-tui": ["@earendil-works/pi-tui@0.87.1", "", { "dependencies": { "get-east-asian-width": "1.6.0", "marked": "18.0.11" } }, "sha512-YEH2vRyOeiO7hhN6j6AE6YwKSq2Kz2f3XR8bj1TbR+aGE/JsnY1hLPMI2pvaZfRM1n9Y00tejxFQ4zbzvF7nkQ=="], + "@earendil-works/pi-mcp": ["@earendil-works/pi-mcp@0.99.2", "", { "dependencies": { "cross-spawn": "7.0.6" } }, "sha512-ISk6OIsiUzmULF+sUilLnENGKo9/gVDxZG2CTEq8f4dbp70AXOr/hMiwOjtcrlX6xBd4UMUsIz4EPTOlU6U+HA=="], + + "@earendil-works/pi-telemetry": ["@earendil-works/pi-telemetry@0.99.2", "", {}, "sha512-WThYU4XM6jjjzH4FzLdreN7QAPS9SDdokL0W0Ldheg1ssCIJkfpK7PgebFm7/PoQub7OiXx+SRF6B/oF7z7lXA=="], + + "@earendil-works/pi-tui": ["@earendil-works/pi-tui@0.99.2", "", { "dependencies": { "get-east-asian-width": "1.6.0", "marked": "18.0.11" } }, "sha512-IOcNnd390NCIwBEKeOiBK/bvaR7Z+vEsvB5TtKsFdsY/vAZE6qRHbQqt6jpTefTiKPfQlwG8eS1BU42DeG2v4w=="], "@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], @@ -908,7 +912,7 @@ "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], - "openai": ["openai@6.40.0", "", { "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["ws", "zod"] }, "sha512-MWtTjd/gQt4jpbji61NTgFWJLoY/PdRJ6wG9/ZDRMYNMlBKrCrSlkLI+KgHP1vR1qT6LKSAyAqIxno6lcK9JiA=="], + "openai": ["openai@7.19.0", "", { "peerDependencies": { "@aws-sdk/credential-provider-node": ">=3.972.0 <4", "@smithy/hash-node": ">=4.3.0 <5", "@smithy/signature-v4": ">=5.4.0 <6", "undici": ">=5 <9", "ws": "^8.21.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["@aws-sdk/credential-provider-node", "@smithy/hash-node", "@smithy/signature-v4", "undici", "ws", "zod"] }, "sha512-MX2s3u2L5racTO0CC/SWpCOasJQBCJrqLKXK+l82cAhdeF8mPMBEe/gxMm0ZFa2xpKpOFLRjxv5afYEZbBXmbQ=="], "openapi-fetch": ["openapi-fetch@0.15.2", "", { "dependencies": { "openapi-typescript-helpers": "^0.0.15" } }, "sha512-rdYTzUmSsJevmNqg7fwUVGuKc2Gfb9h6ph74EVPkPfIGJaZTfqdIbJahtbJ3qg1LKinln30hqZniLnKpH0RJBg=="], @@ -980,6 +984,8 @@ "quick-lru": ["quick-lru@4.0.1", "", {}, "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g=="], + "quickjs-wasi": ["quickjs-wasi@3.6.2", "", {}, "sha512-FCqGtGOrMgzUiIrMNMA2YnsOxCNwo31dzqXvclXUC6xeT35NJLKXQJsvbeCTjvoFAwZgEAPg8U6+KAPDGXn8Mg=="], + "read-pkg": ["read-pkg@3.0.0", "", { "dependencies": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", "path-type": "^3.0.0" } }, "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA=="], "read-pkg-up": ["read-pkg-up@7.0.1", "", { "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", "type-fest": "^0.8.1" } }, "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg=="], @@ -1276,6 +1282,8 @@ "@earendil-works/pi-coding-agent/undici": ["undici@8.10.2", "", {}, "sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ=="], + "@earendil-works/pi-mcp/cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + "@eslint/eslintrc/ignore": ["ignore@4.0.6", "", {}, "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg=="], "@eslint/eslintrc/js-yaml": ["js-yaml@3.15.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag=="], @@ -1422,6 +1430,12 @@ "@earendil-works/pi-coding-agent/minimatch/brace-expansion": ["brace-expansion@5.0.9", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg=="], + "@earendil-works/pi-mcp/cross-spawn/path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "@earendil-works/pi-mcp/cross-spawn/shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "@earendil-works/pi-mcp/cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + "@eslint/eslintrc/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], "@eslint/eslintrc/minimatch/brace-expansion": ["brace-expansion@1.1.18", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw=="], @@ -1490,6 +1504,8 @@ "@earendil-works/pi-coding-agent/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], + "@earendil-works/pi-mcp/cross-spawn/shebang-command/shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + "chalk/ansi-styles/color-convert/color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], "eslint/cross-spawn/shebang-command/shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], diff --git a/package.json b/package.json index 0b39a4c..9e55ddd 100644 --- a/package.json +++ b/package.json @@ -62,8 +62,8 @@ "upgrade:api": "bun update @bkper/bkper-api-types --latest && bun update bkper-js --latest" }, "dependencies": { - "@earendil-works/pi-coding-agent": "0.87.1", - "@earendil-works/pi-tui": "0.87.1", + "@earendil-works/pi-coding-agent": "0.99.2", + "@earendil-works/pi-tui": "0.99.2", "bkper-js": "^2.42.0", "commander": "^13.1.0", "dotenv": "^8.2.0", diff --git a/src/agent/extensions/bkper-ai-provider.ts b/src/agent/extensions/bkper-ai-provider.ts index c5d97fe..804504b 100644 --- a/src/agent/extensions/bkper-ai-provider.ts +++ b/src/agent/extensions/bkper-ai-provider.ts @@ -19,7 +19,10 @@ export interface BkperAiModelMetadata { bkperDefaultThinkingLevel?: BkperAiThinkingLevel; } -interface BkperAiModelConfig extends ProviderModelConfig { +/** The chat member of Pi's provider model union; the package root exports only the union. */ +type ProviderChatModelConfig = Extract; + +interface BkperAiModelConfig extends ProviderChatModelConfig { bkperDefault: boolean; bkperDefaultThinkingLevel?: BkperAiThinkingLevel; } @@ -99,7 +102,7 @@ function getDefaultThinkingLevel(model: BkperAiCatalogModel): BkperAiThinkingLev function getThinkingLevelMap( levels: string[] -): NonNullable { +): NonNullable { const supports = (level: string): string | null => (levels.includes(level) ? level : null); return { off: levels.includes('none') ? 'none' : null, diff --git a/src/agent/interactive/run-agent-mode.ts b/src/agent/interactive/run-agent-mode.ts index 810b989..f441a38 100644 --- a/src/agent/interactive/run-agent-mode.ts +++ b/src/agent/interactive/run-agent-mode.ts @@ -29,6 +29,7 @@ import { applyBkperAgentToolSelection, collectSettingsDiagnostics, createStartupSessionManager, + overrideDefaultTools, } from './settings.js'; export interface AgentModeDependencies { @@ -124,7 +125,7 @@ export function createAgentModeDependencies( }, }); applyBkperAgentSettingsDefaults(settingsManager); - settingsManager.applyOverrides({defaultTools: selectedTools}); + overrideDefaultTools(settingsManager, selectedTools); const restoredSessionOptions = restorePersistedSessionOptions( settingsManager, { diff --git a/src/agent/interactive/settings.ts b/src/agent/interactive/settings.ts index 7e9dd5d..086838f 100644 --- a/src/agent/interactive/settings.ts +++ b/src/agent/interactive/settings.ts @@ -62,12 +62,32 @@ export function resolveBkperAgentTools( }; } -type BkperAgentToolSettingsManager = { +type DefaultToolsSettingsManager = { getDefaultTools(): string[] | undefined; - getShellPath(): string | undefined; applyOverrides(overrides: {defaultTools: string[]}): void; }; +type BkperAgentToolSettingsManager = DefaultToolsSettingsManager & { + getShellPath(): string | undefined; +}; + +/** + * Replaces the effective `defaultTools` selection. Pi appends an override without plain tool + * names, including an empty list, to the inherited selection, so an empty selection is + * expressed as removal of every currently selected tool. + */ +export function overrideDefaultTools( + settingsManager: DefaultToolsSettingsManager, + tools: string[] +): void { + settingsManager.applyOverrides({ + defaultTools: + tools.length > 0 + ? tools + : (settingsManager.getDefaultTools() ?? []).map(tool => `-${tool}`), + }); +} + function canResolveShell(resolve: () => unknown): boolean { try { resolve(); @@ -95,7 +115,7 @@ export function applyBkperAgentToolSelection( availability ); - settingsManager.applyOverrides({defaultTools: resolved.tools}); + overrideDefaultTools(settingsManager, resolved.tools); return resolved.warning ? [{type: 'warning', message: resolved.warning}] : []; } diff --git a/test/unit/agent/extensions/bkper-ai-provider.test.ts b/test/unit/agent/extensions/bkper-ai-provider.test.ts index eb64da0..462cb63 100644 --- a/test/unit/agent/extensions/bkper-ai-provider.test.ts +++ b/test/unit/agent/extensions/bkper-ai-provider.test.ts @@ -1,5 +1,5 @@ import {expect} from '../../helpers/test-setup.js'; -import type {ProviderConfig} from '@earendil-works/pi-coding-agent'; +import type {ProviderConfig, ProviderModelConfig} from '@earendil-works/pi-coding-agent'; import sinon from 'sinon'; import { findDefaultBkperAiModel, @@ -17,6 +17,20 @@ function createRefreshContext(): Parameters< }; } +type ProviderChatModelConfig = Extract; + +function isChatModel(model: ProviderModelConfig): model is ProviderChatModelConfig { + return model.type === undefined || model.type === 'chat'; +} + +/** Refreshes the catalog and asserts the provider only offers chat models. */ +async function refreshChatModels(config: ProviderConfig): Promise { + const models = (await config.refreshModels?.(createRefreshContext())) ?? []; + const chatModels = models.filter(isChatModel); + expect(chatModels).to.have.length(models.length); + return chatModels; +} + describe('agent/bkper-ai-provider', function () { it('provides models dynamically through Pi refreshModels', async function () { const fetchModels = sinon.stub().resolves( @@ -68,7 +82,7 @@ describe('agent/bkper-ai-provider', function () { ); expect(config.models).to.deep.equal([]); - const models = await config.refreshModels?.(createRefreshContext()); + const models = await refreshChatModels(config); expect(fetchModels.calledOnce).to.equal(true); expect(fetchModels.firstCall.args[0]).to.equal('https://ai-dev.bkper.app/v1/models'); @@ -161,6 +175,49 @@ describe('agent/bkper-ai-provider', function () { expect(await config.refreshModels?.(createRefreshContext())).to.deep.equal([]); }); + it('skips decision models listed in the catalog', async function () { + const config = getBkperAiProviderConfig({}, sinon.stub().resolves( + new Response(JSON.stringify({ + default_model: 'vision', + data: [ + { + id: 'jev', + object: 'model', + type: 'decision', + input_modalities: ['text'], + pricing: { + inputNanoUsdPerToken: 0, + cachedInputNanoUsdPerToken: 0, + cacheWriteNanoUsdPerToken: 0, + outputNanoUsdPerToken: 0, + }, + context_window: 128000, + max_state_question_tokens: 8192, + question_types: ['noul', 'choice', 'score'], + }, + { + id: 'vision', + object: 'model', + input_modalities: ['text', 'image'], + pricing: { + inputNanoUsdPerToken: 0, + cachedInputNanoUsdPerToken: 0, + cacheWriteNanoUsdPerToken: 0, + outputNanoUsdPerToken: 0, + }, + context_window: 128000, + max_output_tokens: 8192, + thinking_levels: ['low'], + }, + ], + })) + )); + + const models = await refreshChatModels(config); + + expect(models.map(model => model.id)).to.deep.equal(['vision']); + }); + it('enables cache warming only for models with a catalog prompt cache lifetime', async function () { const catalogModel = (id: string, promptCacheTtlSeconds?: unknown) => ({ id, @@ -188,9 +245,9 @@ describe('agent/bkper-ai-provider', function () { })) )); - const models = await config.refreshModels?.(createRefreshContext()); + const models = await refreshChatModels(config); - expect(models?.map(model => [model.id, model.promptCache])).to.deep.equal([ + expect(models.map(model => [model.id, model.promptCache])).to.deep.equal([ ['documented', {short: 300}], ['undocumented', undefined], ['invalid', undefined], diff --git a/test/unit/agent/interactive/settings.test.ts b/test/unit/agent/interactive/settings.test.ts index e1eebf8..d16d6fc 100644 --- a/test/unit/agent/interactive/settings.test.ts +++ b/test/unit/agent/interactive/settings.test.ts @@ -1,5 +1,6 @@ import path from 'node:path'; import sinon from 'sinon'; +import {SettingsManager} from '@earendil-works/pi-coding-agent'; import {expect} from '../../helpers/test-setup.js'; import { applyBkperAgentSettingsDefaults, @@ -94,6 +95,23 @@ describe('interactive agent settings', function () { }); }); + it('disables configured shells even when no configured tool remains', function () { + const settingsManager = SettingsManager.inMemory({ + defaultTools: ['bash'], + shellPath: path.join(REPO_ROOT, 'missing-shell'), + }); + + const diagnostics = applyBkperAgentToolSelection(settingsManager, 'linux'); + + expect(settingsManager.getDefaultTools()).to.deep.equal([]); + expect(diagnostics).to.deep.equal([ + { + type: 'warning', + message: 'Unavailable configured shell tools were disabled: bash.', + }, + ]); + }); + it('persists Bkper agent defaults when no user settings are present', function () { const setShowCacheMissNotices = sinon.stub(); const setTuiMode = sinon.stub(); From 79cb419c9c29a2ac5b6cd3b9f48012570631e9f8 Mon Sep 17 00:00:00 2001 From: maelcaldas Date: Thu, 1 Oct 2026 14:59:08 -0300 Subject: [PATCH 2/3] feat(agent): Bkper logo and light/dark themes - Show the Bkper logo as pixel art in the startup header, in the official account type colors, with the hints in two columns when they fit. - Add bkper-light and bkper-dark themes with brand colors in place of Pi's violet. They replace Pi's built-in themes for the agent session without being saved, since Pi shares the settings file; custom themes are kept. - Truncate header lines to the terminal width; wider lines crash the TUI. - Hide the agent built-ins from the loaded extensions listing. - Update the README screenshot. --- assets/bkper-agent-cli.png | Bin 122632 -> 78103 bytes package.json | 3 +- src/agent/extensions/builtins.ts | 2 + src/agent/extensions/startup-logo.ts | 111 ++++++++++++++ src/agent/extensions/startup.ts | 135 ++++++++++-------- src/agent/interactive/run-agent-mode.ts | 5 + src/agent/interactive/themes.ts | 43 ++++++ src/agent/themes/bkper-dark.json | 80 +++++++++++ src/agent/themes/bkper-light.json | 80 +++++++++++ test/unit/agent/extensions/builtins.test.ts | 19 +++ .../agent/extensions/startup-logo.test.ts | 35 +++++ test/unit/agent/extensions/startup.test.ts | 48 ++++++- test/unit/agent/interactive/themes.test.ts | 95 ++++++++++++ 13 files changed, 591 insertions(+), 65 deletions(-) create mode 100644 src/agent/extensions/startup-logo.ts create mode 100644 src/agent/interactive/themes.ts create mode 100644 src/agent/themes/bkper-dark.json create mode 100644 src/agent/themes/bkper-light.json create mode 100644 test/unit/agent/extensions/startup-logo.test.ts create mode 100644 test/unit/agent/interactive/themes.test.ts diff --git a/assets/bkper-agent-cli.png b/assets/bkper-agent-cli.png index 2692e68931ce46c3874329612e4f5dcbf40f5e1f..33df0337f8a1af5fc655b205a1873202fa817566 100644 GIT binary patch literal 78103 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