bkper 4.31.2 → 4.31.3

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,4 +1,4 @@
1
- import type { ExtensionAPI } from '@earendil-works/pi-coding-agent';
1
+ import { type BeforeAgentStartEventResult, type ExtensionAPI } from '@earendil-works/pi-coding-agent';
2
2
  export type CoreConceptsPreloadLevel = 'none' | 'full';
3
3
  export interface CoreConceptsPreloadDefinition {
4
4
  docPath: string;
@@ -7,13 +7,11 @@ export interface CoreConceptsPreloadDefinition {
7
7
  export interface CoreConceptsPreloadInput {
8
8
  prompt: string;
9
9
  }
10
- export interface CoreConceptsPreloadResult {
11
- systemPrompt?: string;
12
- }
10
+ export type CoreConceptsPreloadResult = BeforeAgentStartEventResult;
11
+ export declare const CORE_CONCEPTS_MESSAGE_TYPE = "bkper-core-concepts";
13
12
  export declare function resolveBkperDocPathFromModuleDir(moduleDir: string, relativePath: string): string;
14
13
  export declare function getCoreConceptsDocPath(): string;
15
14
  export declare function getDefaultCoreConceptsPreloadDefinition(): CoreConceptsPreloadDefinition;
16
15
  export declare function detectCoreConceptsPreloadLevel(input: CoreConceptsPreloadInput): CoreConceptsPreloadLevel;
17
- export declare function buildCoreConceptsReadInstruction(coreConceptsPath: string): string;
18
- export declare function registerBkperCoreConceptsPreloadExtension(pi: Pick<ExtensionAPI, 'on'>, definition?: CoreConceptsPreloadDefinition): void;
16
+ export declare function registerBkperCoreConceptsPreloadExtension(pi: Pick<ExtensionAPI, 'on' | 'registerMessageRenderer'>, definition?: CoreConceptsPreloadDefinition): void;
19
17
  //# sourceMappingURL=core-concepts-preload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core-concepts-preload.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/core-concepts-preload.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAUpE,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,6BAA6B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACrB,MAAM,CAaR;AAgBD,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,uCAAuC,IAAI,6BAA6B,CAMvF;AAED,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,wBAAwB,GAChC,wBAAwB,CAoB1B;AAED,wBAAgB,gCAAgC,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAEjF;AAeD,wBAAgB,yCAAyC,CACrD,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAC5B,UAAU,GAAE,6BAAyE,GACtF,IAAI,CAkBN"}
1
+ {"version":3,"file":"core-concepts-preload.d.ts","sourceRoot":"","sources":["../../../src/agent/extensions/core-concepts-preload.ts"],"names":[],"mappings":"AAGA,OAAO,EAGH,KAAK,2BAA2B,EAChC,KAAK,YAAY,EAMpB,MAAM,iCAAiC,CAAC;AAWzC,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,6BAA6B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,yBAAyB,GAAG,2BAA2B,CAAC;AAEpE,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAUhE,wBAAgB,gCAAgC,CAC5C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACrB,MAAM,CAaR;AAOD,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED,wBAAgB,uCAAuC,IAAI,6BAA6B,CAMvF;AAED,wBAAgB,8BAA8B,CAC1C,KAAK,EAAE,wBAAwB,GAChC,wBAAwB,CAoB1B;AAuDD,wBAAgB,yCAAyC,CACrD,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,yBAAyB,CAAC,EACxD,UAAU,GAAE,6BAAyE,GACtF,IAAI,CAqBN"}
@@ -1,10 +1,13 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
+ import { createReadToolDefinition, } from '@earendil-works/pi-coding-agent';
5
+ import { Box } from '@earendil-works/pi-tui';
4
6
  const DOCS_PATTERN = /\b(doc|docs|documentation|readme|guide|guides|example|examples|spec|specs|reference)\b/i;
5
7
  const ANALYSIS_PATTERN = /\b(review|audit|validate|verify|critique|rewrite|document|describe|explain|design|model|map|check|spot)\b/i;
6
8
  const AUTOMATION_PATTERN = /\b(bot|bots|app|apps|automation|automations)\b/i;
7
9
  const SEMANTIC_PATTERN = /\b(bkper|book|books|account|accounts|group|groups|transaction|transactions|balance|balances|incoming|outgoing|asset|assets|liability|liabilities|receivable|receivables|payable|payables|statement|statements|ledger|flow|flows|movement|movements|collection|collections|tax)\b/i;
10
+ export const CORE_CONCEPTS_MESSAGE_TYPE = 'bkper-core-concepts';
8
11
  export function resolveBkperDocPathFromModuleDir(moduleDir, relativePath) {
9
12
  const candidates = [
10
13
  path.resolve(moduleDir, '..', '..', 'docs', relativePath),
@@ -21,13 +24,6 @@ function resolveDocPath(relativePath) {
21
24
  const thisDir = path.dirname(fileURLToPath(import.meta.url));
22
25
  return resolveBkperDocPathFromModuleDir(thisDir, relativePath);
23
26
  }
24
- function normalizePath(filePath) {
25
- return path.resolve(filePath);
26
- }
27
- function getReadToolPath(input) {
28
- const maybeReadInput = input;
29
- return typeof maybeReadInput.path === 'string' ? normalizePath(maybeReadInput.path) : undefined;
30
- }
31
27
  export function getCoreConceptsDocPath() {
32
28
  return resolveDocPath('core/core-concepts.md');
33
29
  }
@@ -55,30 +51,62 @@ export function detectCoreConceptsPreloadLevel(input) {
55
51
  }
56
52
  return 'none';
57
53
  }
58
- export function buildCoreConceptsReadInstruction(coreConceptsPath) {
59
- return `## Mandatory Bkper Core Concepts Read\nBefore doing anything else for this task, use the \`read\` tool to load the Bkper core concepts from:\n\n\`\`\`\n${coreConceptsPath}\n\`\`\`\n\nRead this file before any other tool call or substantive response. After reading it, continue normally.`;
54
+ function buildCoreConceptsMessageContent(definition) {
55
+ return `## Bkper Core Concepts\nLoaded from \`${definition.docPath}\`. Base all reasoning about Bkper data on this reference.\n\n${definition.markdown}`;
60
56
  }
61
- function buildCoreConceptsPreloadResult(systemPrompt, definition) {
62
- return {
63
- systemPrompt: `${systemPrompt}\n\n${buildCoreConceptsReadInstruction(definition.docPath)}`,
64
- };
57
+ function hasCoreConceptsInContext(entries) {
58
+ return entries.some((entry) => entry.type === 'custom_message' && entry.customType === CORE_CONCEPTS_MESSAGE_TYPE);
65
59
  }
66
- function shouldAllowReadToolCall(event, definition) {
67
- return event.toolName === 'read' && getReadToolPath(event.input) === normalizePath(definition.docPath);
60
+ /**
61
+ * Renders the injected message with Pi's own read tool renderers, so it looks
62
+ * like a read of the doc: collapsed shows the path, expanded shows the content.
63
+ */
64
+ function createCoreConceptsMessageRenderer(definition) {
65
+ return (_message, options, theme) => {
66
+ const cwd = process.cwd();
67
+ const read = createReadToolDefinition(cwd);
68
+ if (!read.renderCall || !read.renderResult) {
69
+ return undefined;
70
+ }
71
+ const args = { path: definition.docPath };
72
+ const context = {
73
+ args,
74
+ toolCallId: CORE_CONCEPTS_MESSAGE_TYPE,
75
+ invalidate: () => undefined,
76
+ lastComponent: undefined,
77
+ state: {},
78
+ cwd,
79
+ executionStarted: true,
80
+ argsComplete: true,
81
+ isPartial: false,
82
+ expanded: options.expanded,
83
+ showImages: false,
84
+ isError: false,
85
+ };
86
+ // Same shell Pi uses for a successful tool row.
87
+ const box = new Box(1, 1, (text) => theme.bg('toolSuccessBg', text));
88
+ box.addChild(read.renderCall(args, theme, context));
89
+ box.addChild(read.renderResult({ content: [{ type: 'text', text: definition.markdown }], details: undefined }, { expanded: options.expanded, isPartial: false }, theme, context));
90
+ return box;
91
+ };
68
92
  }
69
93
  export function registerBkperCoreConceptsPreloadExtension(pi, definition = getDefaultCoreConceptsPreloadDefinition()) {
70
- let hasLoadedCoreConcepts = false;
71
- pi.on('before_agent_start', event => {
72
- if (hasLoadedCoreConcepts || detectCoreConceptsPreloadLevel({ prompt: event.prompt }) === 'none') {
94
+ pi.registerMessageRenderer(CORE_CONCEPTS_MESSAGE_TYPE, createCoreConceptsMessageRenderer(definition));
95
+ pi.on('before_agent_start', (event, ctx) => {
96
+ if (detectCoreConceptsPreloadLevel({ prompt: event.prompt }) === 'none') {
73
97
  return undefined;
74
98
  }
75
- return buildCoreConceptsPreloadResult(event.systemPrompt, definition);
76
- });
77
- pi.on('tool_call', event => {
78
- if (shouldAllowReadToolCall(event, definition)) {
79
- hasLoadedCoreConcepts = true;
99
+ // Compaction-aware: content summarized away by compaction is injected again.
100
+ if (hasCoreConceptsInContext(ctx.sessionManager.buildContextEntries())) {
101
+ return undefined;
80
102
  }
81
- return undefined;
103
+ return {
104
+ message: {
105
+ customType: CORE_CONCEPTS_MESSAGE_TYPE,
106
+ content: buildCoreConceptsMessageContent(definition),
107
+ display: true,
108
+ },
109
+ };
82
110
  });
83
111
  }
84
112
  //# sourceMappingURL=core-concepts-preload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"core-concepts-preload.js","sourceRoot":"","sources":["../../../src/agent/extensions/core-concepts-preload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-concepts-preload.js","sourceRoot":"","sources":["../../../src/agent/extensions/core-concepts-preload.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bkper",
3
- "version": "4.31.2",
3
+ "version": "4.31.3",
4
4
  "description": "Official Bkper CLI for accounting data, automation, apps, and AI agents",
5
5
  "bin": {
6
6
  "bkper": "./lib/cli.js"
@@ -47,10 +47,11 @@
47
47
  "predev": "bun run build",
48
48
  "dev": "tsc -w",
49
49
  "ports": "devpod ssh ../ -L 6274",
50
- "test": "TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=tsconfig.test.json mocha",
51
- "test:unit": "TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=tsconfig.test.json mocha --config .mocharc.json",
52
- "test:integration": "TS_NODE_TRANSPILE_ONLY=true BKPER_API_URL=${BKPER_API_URL:-http://localhost:8081/_ah/api/bkper} TS_NODE_PROJECT=tsconfig.test.json mocha --config .mocharc.integration.json",
53
- "test:deploy": "TS_NODE_TRANSPILE_ONLY=true BKPER_PLATFORM_URL=http://localhost:8790 BKPER_API_URL=https://api-dev.bkper.app TS_NODE_PROJECT=tsconfig.test.json mocha --config .mocharc.deploy.json",
50
+ "test:typecheck": "tsc --noEmit -p tsconfig.test.json",
51
+ "test": "bun run test:typecheck && TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=tsconfig.test.json mocha",
52
+ "test:unit": "bun run test:typecheck && TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=tsconfig.test.json mocha --config .mocharc.json",
53
+ "test:integration": "bun run test:typecheck && TS_NODE_TRANSPILE_ONLY=true BKPER_API_URL=${BKPER_API_URL:-http://localhost:8081/_ah/api/bkper} TS_NODE_PROJECT=tsconfig.test.json mocha --config .mocharc.integration.json",
54
+ "test:deploy": "bun run test:typecheck && TS_NODE_TRANSPILE_ONLY=true BKPER_PLATFORM_URL=http://localhost:8790 BKPER_API_URL=https://api-dev.bkper.app TS_NODE_PROJECT=tsconfig.test.json mocha --config .mocharc.deploy.json",
54
55
  "test:all": "bun run test:unit && bun run test:integration",
55
56
  "version": "bun ./scripts/sync-plugin-version.ts && git add .claude-plugin/plugin.json .claude-plugin/marketplace.json .codex-plugin/plugin.json",
56
57
  "release:patch": "npm version patch -m \"chore(release): v%s\"",
@@ -61,8 +62,8 @@
61
62
  "upgrade:api": "bun update @bkper/bkper-api-types --latest && bun update bkper-js --latest"
62
63
  },
63
64
  "dependencies": {
64
- "@earendil-works/pi-coding-agent": "0.87.0",
65
- "@earendil-works/pi-tui": "0.87.0",
65
+ "@earendil-works/pi-coding-agent": "0.87.1",
66
+ "@earendil-works/pi-tui": "0.87.1",
66
67
  "bkper-js": "^2.42.0",
67
68
  "commander": "^13.1.0",
68
69
  "dotenv": "^8.2.0",