bkper 4.25.0 → 4.26.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.
Files changed (47) hide show
  1. package/README.md +1 -1
  2. package/lib/agent/extensions/handoff.d.ts.map +1 -1
  3. package/lib/agent/extensions/handoff.js +2 -0
  4. package/lib/agent/extensions/handoff.js.map +1 -1
  5. package/lib/agent/startup-maintenance.d.ts +1 -0
  6. package/lib/agent/startup-maintenance.d.ts.map +1 -1
  7. package/lib/agent/startup-maintenance.js +7 -1
  8. package/lib/agent/startup-maintenance.js.map +1 -1
  9. package/lib/agent/system-prompt.js +1 -1
  10. package/lib/commands/apps/git/clone.js +1 -1
  11. package/lib/commands/apps/git/clone.js.map +1 -1
  12. package/lib/commands/apps/init.d.ts +3 -1
  13. package/lib/commands/apps/init.d.ts.map +1 -1
  14. package/lib/commands/apps/init.js +105 -58
  15. package/lib/commands/apps/init.js.map +1 -1
  16. package/lib/commands/apps/register.js +2 -2
  17. package/lib/commands/apps/register.js.map +1 -1
  18. package/lib/dev/miniflare.js +1 -1
  19. package/lib/dev/miniflare.js.map +1 -1
  20. package/lib/dev/preflight.js +1 -1
  21. package/lib/dev/preflight.js.map +1 -1
  22. package/lib/dev/shared.js +1 -1
  23. package/lib/dev/shared.js.map +1 -1
  24. package/lib/docs/apps/app-listing.md +86 -0
  25. package/lib/docs/apps/architecture.md +188 -0
  26. package/lib/docs/apps/configuration.md +171 -0
  27. package/lib/docs/apps/context-menu.md +69 -0
  28. package/lib/docs/apps/deploying.md +181 -0
  29. package/lib/docs/apps/development.md +122 -0
  30. package/lib/docs/apps/event-handlers.md +248 -0
  31. package/lib/docs/apps/first-app.md +76 -0
  32. package/lib/docs/apps/overview.md +100 -0
  33. package/lib/docs/apps/self-hosted.md +63 -0
  34. package/lib/docs/apps/shared-app-source.md +85 -0
  35. package/lib/docs/cli/app-management.md +16 -4
  36. package/lib/docs/index.md +11 -1
  37. package/lib/docs/sdk/bkper-js.md +5 -0
  38. package/lib/upgrade/index.d.ts +1 -1
  39. package/lib/upgrade/index.d.ts.map +1 -1
  40. package/lib/upgrade/index.js +1 -1
  41. package/lib/upgrade/index.js.map +1 -1
  42. package/lib/upgrade/installation.d.ts +4 -0
  43. package/lib/upgrade/installation.d.ts.map +1 -1
  44. package/lib/upgrade/installation.js +23 -0
  45. package/lib/upgrade/installation.js.map +1 -1
  46. package/package.json +3 -3
  47. package/lib/docs/apps/app-building.md +0 -1429
@@ -0,0 +1,100 @@
1
+ # The Bkper Platform
2
+
3
+ The Bkper Platform is a complete managed environment for building, deploying, and hosting apps on Bkper. It removes infrastructure complexity so you can focus on business logic.
4
+
5
+ ### Hosting
6
+
7
+ Apps are deployed to `{appId}.bkper.app` on a global edge network powered by [Cloudflare Workers for Platforms](https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/). Your app runs close to your users, with zero infrastructure to manage.
8
+
9
+ Preview environments are built in — deploy to a preview URL to test before going to production.
10
+
11
+ ### App APIs
12
+
13
+ The same Worker can expose app-defined `/api/*` routes. Treat those routes as the reusable contract for your app behavior:
14
+
15
+ - The bundled web client can call them.
16
+ - Scripts, external clients, and agents can call them too.
17
+ - The default template documents them with an app OpenAPI spec at `/openapi.json`.
18
+
19
+ ### Authentication
20
+
21
+ OAuth is pre-configured. No client IDs, no redirect URIs, no consent screens to build.
22
+
23
+ - **Web client** — Use `@bkper/web-auth`: `auth.getAccessToken()`. See [App Architecture → Client authentication](https://bkper.com/docs/build/apps/architecture.md#client-authentication).
24
+ - **Server API routes** — Send `Authorization: Bearer <token>` to `/api/*`; dispatch validates it and platform outbound injects auth for server-side Bkper API calls. See [App Architecture → Server API authentication](https://bkper.com/docs/build/apps/architecture.md#server-api-authentication).
25
+ - **Event handlers** — Handle `/events` in the same Worker and call Bkper with server-side `new Bkper()`; dispatch/outbound handle auth and agent identity. See [Event Handlers → Authentication](https://bkper.com/docs/build/apps/event-handlers.md#authentication).
26
+ - **Local development** — The Vite auth middleware uses your CLI credentials. See [Development Experience → Local development authentication](https://bkper.com/docs/build/apps/development.md#local-development-authentication).
27
+
28
+ ### Services
29
+
30
+ Declare the services you need in [`bkper.yaml`](https://bkper.com/docs/build/apps/configuration.md) and the platform provisions them:
31
+
32
+ - **KV storage** — Key-value storage for caching and state. Access via `c.env.KV` in your handlers.
33
+ - **Secrets** — Securely stored environment variables. Set via `bkper app secrets put`, access via `c.env.SECRET_NAME`.
34
+
35
+ ### Developer experience
36
+
37
+ The project template composes the full development environment:
38
+
39
+ ```bash
40
+ npm run dev
41
+ ```
42
+
43
+ This runs two processes concurrently: `vite dev` for the client UI (HMR), and `bkper app dev` for the Worker runtime (Miniflare for `/api/*` and `/events`, plus a Cloudflare tunnel so Bkper can route webhook events to your laptop). Your entire development environment, running locally.
44
+
45
+ ### Shared app source
46
+
47
+ Bkper can host one private codebase for your app. Authorized teammates and coding agents can clone it, improve it locally, and continue building from the same shared history.
48
+
49
+ Source synchronization remains separate from deployment. A Git push stores source but never builds or deploys the app.
50
+
51
+ See [Shared App Source](https://bkper.com/docs/build/apps/shared-app-source.md) for the collaboration workflow, access rules, and external Git options.
52
+
53
+ ### Deployment
54
+
55
+ Check and deploy the app template:
56
+
57
+ ```bash
58
+ npm run check
59
+ npm run deploy
60
+ ```
61
+
62
+ Your app is live at `{appId}.bkper.app`. The platform handles routing, SSL, and edge distribution.
63
+
64
+ ## What you'd build yourself without it
65
+
66
+ Without the platform, creating a Bkper app with a UI, event handling, and authentication requires:
67
+
68
+ | Concern | Without the platform | With the platform |
69
+ | ------------------------ | --------------------------------------------------------------------------------------- | ----------------------------------------------- |
70
+ | **Hosting** | Provision servers, configure domains, SSL, CDN | `bkper app deploy` |
71
+ | **Authentication** | Register OAuth client, build consent screen, handle token refresh, manage redirect URIs | `auth.getAccessToken()` |
72
+ | **Event webhooks** | Set up a public endpoint, configure DNS, handle JWT verification | Declare in `bkper.yaml`, platform routes events |
73
+ | **Local dev webhooks** | Install ngrok or similar, manually configure tunnel URL | `bkper app dev` starts tunnel automatically |
74
+ | **Secrets** | Set up a secrets manager, configure access | `bkper app secrets put` |
75
+ | **KV storage** | Deploy Redis/Memcached, manage connections | Declare `KV` in `bkper.yaml` |
76
+ | **Preview environments** | Build a staging pipeline | `bkper app deploy --preview` |
77
+ | **Shared app source** | Operate a separate private Git host | Managed source for app developers and agents |
78
+ | **Type safety** | Manually create type definitions | `env.d.ts` auto-generated |
79
+
80
+ The platform eliminates all of this. You write business logic, the platform handles infrastructure.
81
+
82
+ ## Getting started
83
+
84
+ ```bash
85
+ # Create a new app from the template
86
+ bkper app init my-app
87
+ cd my-app
88
+
89
+ # Install dependencies and start developing
90
+ npm install
91
+ npm run dev
92
+ ```
93
+
94
+ This gives you a working app with a client UI, server API routes, and `/events` handling in one Worker — all running locally with full HMR and webhook tunneling.
95
+
96
+ ## Next steps
97
+
98
+ - [Your First App](https://bkper.com/docs/build/apps/first-app.md) — Build and deploy a complete platform app
99
+ - [Shared App Source](https://bkper.com/docs/build/apps/shared-app-source.md) — Collaborate from one private codebase
100
+ - [App Architecture](https://bkper.com/docs/build/apps/architecture.md) — Understand how platform apps are structured
@@ -0,0 +1,63 @@
1
+ # Self-Hosted Alternative
2
+
3
+ The [Bkper Platform](https://bkper.com/docs/build/apps/overview.md) handles hosting, authentication, and deployment for you. However, you can host event handlers on your own infrastructure if you have specific requirements — existing cloud setup, compliance constraints, or legacy apps.
4
+
5
+ > **Tip**
6
+ > Use the Bkper Platform unless you have a specific reason to self-host. It eliminates the need to manage authentication, secrets, hosting, and deployment yourself.
7
+ ## Cloud Functions
8
+
9
+ A Bkper event handler running on [Google Cloud Functions](https://cloud.google.com/functions/) receives authenticated calls from the `bkper-hrd@appspot.gserviceaccount.com` service account. You need to grant this service account the [Cloud Functions Invoker IAM role](https://cloud.google.com/functions/docs/securing/managing-access-iam) (`roles/cloudfunctions.invoker`).
10
+
11
+ Set the production endpoint in [`bkper.yaml`](https://bkper.com/docs/build/apps/configuration.md):
12
+
13
+ ```yaml
14
+ webhookUrl: https://us-central1-my-project.cloudfunctions.net/events
15
+ ```
16
+
17
+ ### Authentication
18
+
19
+ An OAuth Access Token **of the user who installed the app** is sent to the production `webhookUrl` endpoint in the `bkper-oauth-token` HTTP header, along with the agent identifier in `bkper-agent-id`, on each event. Your handler uses this token to call the API back on behalf of the user.
20
+
21
+ Both production (`webhookUrl`) and development (`webhookUrlDev`) endpoints receive OAuth tokens in the `bkper-oauth-token` header.
22
+
23
+ ### Throughput and scaling
24
+
25
+ Event throughput can be high, especially when processing large batches. Set the [max instance limit](https://cloud.google.com/functions/docs/max-instances#setting_max_instances_limits) — usually **1-2 is enough**. When the function returns `429 Too Many Requests`, the event is automatically retried with incremental backoff until it receives an HTTP `200`.
26
+
27
+ ### Response format
28
+
29
+ The function response must follow the standard format:
30
+
31
+ ```ts
32
+ { result?: any, error?: any }
33
+ ```
34
+
35
+ See [Event Handlers](https://bkper.com/docs/build/apps/event-handlers.md#response-format) for details on response handling.
36
+
37
+ ### Considerations
38
+
39
+ - Execution environment is subject to [Cloud Function Quotas](https://cloud.google.com/functions/quotas) — quota counts against the developer account, not the end user
40
+ - Recommended for scenarios where event throughput exceeds **1 event/second/user** and processing can be handled asynchronously
41
+ - Can be combined with context menus built with [Apps Script HTML Service](https://developers.google.com/apps-script/guides/html) or any other UI infrastructure
42
+
43
+ ---
44
+
45
+ ## Generic Webhooks
46
+
47
+ You can host event handlers on any infrastructure — other cloud providers, containers, on-premise servers.
48
+
49
+ Configure the same `webhookUrl` property in [`bkper.yaml`](https://bkper.com/docs/build/apps/configuration.md):
50
+
51
+ ```yaml
52
+ webhookUrl: https://my-server.example.com/bkper/events
53
+ ```
54
+
55
+ ### Authentication
56
+
57
+ Calls to the production webhook URL are signed with a JWT token using the [Service to Function](https://cloud.google.com/functions/docs/securing/authenticating#service-to-function) method. You can verify this token to assert the identity of the Bkper service.
58
+
59
+ > **Note**
60
+ > Cloud Functions handles JWT verification automatically. For other infrastructure, you need to implement verification yourself. We strongly recommend Cloud Functions for this reason.
61
+ ### Retry behavior
62
+
63
+ If your infrastructure returns an HTTP `429` status, the event is automatically retried with incremental backoff until it receives an HTTP `200`. Use this to handle temporary overload gracefully.
@@ -0,0 +1,85 @@
1
+ # Shared App Source
2
+
3
+ Bkper-managed app source gives your team and coding agents one shared private codebase for a Bkper app. Authorized app developers can clone the same repository, improve it locally, and continue from one shared history without setting up a separate Git host.
4
+
5
+ Shared app source supports development collaboration. It does not automatically build or deploy your app.
6
+
7
+ ## Who can access the source
8
+
9
+ The app owner and users matched by the `developers` field in `bkper.yaml` can read and update managed source. This includes configured domain patterns such as `*@example.com`.
10
+
11
+ App users and Book collaborators do not receive source access unless they also match the app's developer policy.
12
+
13
+ ## Start a shared codebase
14
+
15
+ A standalone app becomes eligible for Bkper-managed source when:
16
+
17
+ - `bkper.yaml` is at the root of its Git repository.
18
+ - The current branch is `main` for the first managed sync.
19
+ - The working tree is clean and has at least one commit.
20
+ - No Git remote is configured.
21
+
22
+ `bkper app init` initializes Git on `main`, but it does not create the first commit. Review and commit the app before its first sync:
23
+
24
+ ```bash
25
+ bkper app init my-app
26
+ cd my-app
27
+
28
+ # Review the generated app, then commit it
29
+ git add .
30
+ git commit -m "Initial app"
31
+
32
+ bkper app sync
33
+ ```
34
+
35
+ For an eligible app, `bkper app sync` creates its private Bkper-managed source and configures it as `origin`. The same command also syncs app metadata from `bkper.yaml`.
36
+
37
+ ## Clone and continue together
38
+
39
+ Any authorized app developer can start from the shared codebase:
40
+
41
+ ```bash
42
+ bkper app clone <appId>
43
+ cd <appId>
44
+ npm install
45
+ ```
46
+
47
+ `bkper app clone` copies the repository but does not install dependencies or run repository scripts. A teammate or coding agent can then work in the local clone, run the project's checks, commit changes, and push them back to the shared repository. Another authorized developer can pull or clone that history and continue the work.
48
+
49
+ Keep agent instructions such as `AGENTS.md` in the repository so every teammate and coding agent starts with the same project context and safety rules.
50
+
51
+ ## Source synchronization is not deployment
52
+
53
+ Source storage and app deployment are separate operations:
54
+
55
+ | Action | What it does with source | Does it deploy? |
56
+ | ------------------ | ------------------------------------------------------------------------------ | --------------- |
57
+ | `git push` | Stores committed source in the managed repository. | No |
58
+ | `bkper app sync` | Safely pushes managed source, then syncs app metadata from `bkper.yaml`. | No |
59
+ | `npm run build` | Creates local build output in `dist/`. | No |
60
+ | `bkper app deploy` | Pushes and verifies the managed commit, then uploads the existing local build. | Yes |
61
+
62
+ An ordinary Git push never deploys. `bkper app deploy` also does not run a build, so build locally before deploying the result you intend to release.
63
+
64
+ Managed sync and deploy require a clean, committed working tree and use fast-forward safety checks. The CLI does not automatically commit, merge, rebase, force-push, reset, or discard files.
65
+
66
+ ## External Git and monorepos
67
+
68
+ Bkper-managed source is optional. Existing workflows remain external when:
69
+
70
+ - the app already has a GitHub, GitLab, or other provider remote;
71
+ - `bkper.yaml` is inside a monorepo rather than at the repository root; or
72
+ - the app is otherwise not rooted in a standalone Git repository.
73
+
74
+ Clone those apps from their external provider. `bkper app clone` is for Bkper-managed source only.
75
+
76
+ Moving an existing standalone app from an external provider is intentional: the CLI never removes or renames an existing remote. Before changing remotes, make sure every branch and tag you want to preserve is available locally and the current `main` branch is clean and committed. Removing all external remotes and running `bkper app sync` then activates managed source for an eligible app.
77
+
78
+ The `repoUrl` field in `bkper.yaml` is app-listing metadata. It does not select managed or external source mode.
79
+
80
+ ## Next steps
81
+
82
+ - [Your First App](https://bkper.com/docs/build/apps/first-app.md) — Scaffold an app and establish its shared source
83
+ - [Building & Deploying](https://bkper.com/docs/build/apps/deploying.md) — Build, sync, preview, and deploy explicitly
84
+ - [CLI](https://bkper.com/docs/build/tools/cli.md) — Install the CLI and review its app-development workflows
85
+ - [Coding Agents](https://bkper.com/docs/ai/coding-agents.md) — Give coding agents the Bkper and project context they need
@@ -53,18 +53,30 @@ bkper app init my-app
53
53
  cd my-app
54
54
  ```
55
55
 
56
- `bkper app init <name>` creates and scaffolds `./<name>` using the same value as the app id. Run `bkper app init` with no name inside an existing empty or VCS-only directory to use the current folder name as the app id. Init initializes Git on `main` when needed, but does not create commits.
56
+ `bkper app init <name>` creates and scaffolds `./<name>` using the same value as the app id. Run `bkper app init` with no name inside an existing empty or VCS-only directory to use the current folder name as the app id. Init validates the guidance markers in `AGENTS.md` and blocks scaffolding when they are missing, duplicated, malformed, nested, or out of order. It initializes Git on `main` when needed, but never stages, commits, pushes, syncs, or deploys.
57
+
58
+ Init does not install dependencies or execute package lifecycle scripts. The current template uses Bun; enter the App directory and run `bun install` explicitly when ready.
59
+
60
+ Before specializing the App, the active coding agent must read the newly created `AGENTS.md` at the path printed by init. When its marker pairs are present:
61
+
62
+ - Preserve `<!-- APP_STANDARDS:START -->` / `<!-- APP_STANDARDS:END -->` and `<!-- APP_SPECIFICS:START -->` / `<!-- APP_SPECIFICS:END -->`.
63
+ - Preserve `APP_STANDARDS` by default and change it only when explicitly requested.
64
+ - Maintain `APP_SPECIFICS` with the App's purpose, behavior, domain flows, resources, routes, and implementation decisions.
65
+ - Never replace `AGENTS.md` wholesale merely to specialize the App.
57
66
 
58
67
  Verify:
59
68
 
69
+ - `AGENTS.md` contains each marker exactly once, with `APP_STANDARDS` before `APP_SPECIFICS`
60
70
  - `client/` and `server/` exist
61
71
  - `bkper.yaml` has `id`, `name`, `description`, and `developers`
62
- - `package.json` scripts include `dev` and `build`
63
- - `.git` exists on branch `main` with no automatic commit
72
+ - `package.json` scripts include `dev`, `build`, and `check:agent-guidance`
73
+ - dependencies are not installed by init
74
+ - `.git` exists on branch `main` with no automatic staging or commit
64
75
 
65
76
  ### 2. Develop
66
77
 
67
78
  ```bash
79
+ bun install
68
80
  npm run dev
69
81
  ```
70
82
 
@@ -531,7 +543,7 @@ Inside the interactive agent:
531
543
 
532
544
  ### App Lifecycle
533
545
 
534
- - `app init [name]` - Scaffold a new app from the template. With `name`, creates `./<name>` and uses it as the app id. Without `name`, initializes the current directory and derives the app id from the folder name. Initializes Git on `main` when the target is not already a repository, without staging or committing files.
546
+ - `app init [name]` - Scaffold a new app from the template. With `name`, creates `./<name>` and uses it as the app id. Without `name`, initializes the current directory and derives the app id from the folder name. Validates the marked `AGENTS.md`, initializes Git on `main` when needed without staging or committing, and does not install dependencies. Read the printed `AGENTS.md` path before specialization and preserve its standards, specifics, and marker pairs.
535
547
  - `app clone <appId> [path]` - Clone a Bkper-managed App source repository. Does not install dependencies; run `bun install` explicitly afterward. External-source Apps must be cloned from their provider instead.
536
548
  - `app git-credential <appId> [operation]` - Internal noninteractive Git credential helper for managed Artifacts source. Generated repository config pins the App ID and exact remote URL/path; Git appends `get`, `store`, or `erase`. Never persists tokens.
537
549
  - `app list` - List all apps you have access to
package/lib/docs/index.md CHANGED
@@ -7,7 +7,17 @@ For Bkper data, accounting, reporting, tax, or financial-flow tasks, read `core/
7
7
  - `core/core-concepts.md` — canonical Bkper data model: resources, movements, balances, accounts, groups, books, transactions, properties, and the zero-sum invariant.
8
8
  - `cli/data-management.md` — CLI reference for managing financial data and files: books, accounts, groups, files, transactions, per-account balance queries, query operators (on:, after:, before:, account:, group:), output formats (table/json/csv), human-review Bkper UI links, batch operations via stdin/piping, collections.
9
9
  - `cli/app-management.md` — CLI reference for building and deploying Bkper apps: init/git clone/credential helpers, dev/build/deploy workflow, app install/uninstall, secrets management, app logs, bkper.yaml configuration reference (identity, branding, events, menu integration, deployment).
10
- - `apps/app-building.md` — Full app-building reference: single Worker app architecture (`client/` + `server/`), development loop, `/api/*` routes, `/events` handlers, deployment patterns, the Bkper Platform, and self-hosted alternatives. Includes authentication patterns for web clients (`@bkper/web-auth`), server API routes (`Authorization: Bearer` on `/api/*` with outbound auth injection), platform event handlers (`new Bkper()` with outbound auth injection), and local development.
10
+ - `apps/overview.md` — Platform evaluation and capability overview: use when comparing managed Bkper hosting with self-managed infrastructure or clarifying platform responsibilities; use the task-specific app references for implementation.
11
+ - `apps/first-app.md` — First-app walkthrough: scaffold, install, run locally, trigger an event, customize the listing, establish shared source, check, and deploy.
12
+ - `apps/architecture.md` — App and template architecture: npm workspace structure, Lit/Vite client, Hono Worker, typed `/api/*` contracts, authentication, `/events`, static assets, and supported app shapes.
13
+ - `apps/configuration.md` — Complete `bkper.yaml` reference: identity, branding, ownership, access, context menus, event subscriptions, property schemas, and single-Worker deployment settings.
14
+ - `apps/development.md` — Local development: Vite and Worker processes, ports, API proxy, local authentication, secrets, KV, generated environment types, development loop, and debugging.
15
+ - `apps/event-handlers.md` — Event handler behavior: `/events` routing, responses, replay, loop prevention, platform and self-hosted authentication, event payloads, and event types.
16
+ - `apps/deploying.md` — Build, sync, and explicit deploy workflow; production and preview environments, secrets, KV, deployment status, and book installation.
17
+ - `apps/shared-app-source.md` — Bkper-managed private Git source: developer access, first sync, clone workflow, source/deployment separation, safety checks, external remotes, and monorepos.
18
+ - `apps/context-menu.md` — Book context-menu integration: production/development URLs, open modes, and dynamic Book, query, Account, and Group expressions.
19
+ - `apps/app-listing.md` — App listing metadata, visibility, publication review, end-user README guidance, and public listing locations.
20
+ - `apps/self-hosted.md` — Self-hosted event-handler alternatives: Cloud Functions, generic webhooks, direct authentication responsibilities, scaling, responses, and retries.
11
21
  - `reporting/financial-statements.md` — Deterministic reporting principles and Bkper query semantics for balance sheet and P&L: trusted routes, root reporting groups, permanent vs period date rules, and provisional query patterns.
12
22
  - `reporting/taxes.md` — Deterministic tax reporting principles: trusted routes, external tax-rule loading/discovery, user-approved tax-relevant groups/accounts, period activity queries, explicit jurisdiction assumptions, and provisional query patterns.
13
23
  - `advisory/accountant-recommendations.md` — Human accountant / advisor recommendation flow using the OpenAccountants verified network endpoint: jurisdiction resolution, live JSON fetching, no-private-data handoff, profile_url introductions, no-match handling, and tax-review cross-reference.
@@ -630,6 +630,7 @@ It contains all `Accounts` where `Transactions` are recorded/posted;
630
630
  - `getTotalTransactionsCurrentMonth()` → `number` — Gets the total number of posted transactions on current month.
631
631
  - `getTotalTransactionsCurrentYear()` → `number` — Gets the total number of posted transactions on current year.
632
632
  - `getTransaction(id: string)` → `Promise<Transaction | undefined>` — Retrieve a transaction by id.
633
+ - `getTransactionsByIds(ids: string[])` → `Promise<Transaction[]>` — Retrieve complete transactions by id.
633
634
  - `getVisibility()` / `setVisibility(visibility: Visibility)` → `Visibility` — Gets the visibility of the book.
634
635
  - `json()` → `bkper.Book` — Gets an immutable copy of the JSON payload for this resource.
635
636
  - `listEvents(options: ListEventsOptions)` → `Promise<EventList>` — Lists events in the Book based on the provided options.
@@ -731,6 +732,10 @@ const bookWithGroups = await Bkper.getBook(bookId, false, true);
731
732
  const groups2 = await bookWithGroups.getGroups(); // Already cached
732
733
  ```
733
734
 
735
+ **getTransactionsByIds**
736
+
737
+ Requests are sent sequentially in batches of up to 200 IDs.
738
+
734
739
  **mergeTransactions**
735
740
 
736
741
  The merged transaction is created synchronously. Cleanup of the two
@@ -1,4 +1,4 @@
1
- export { VERSION, detectMethod, detectMethodAsync, fetchLatestVersion, getUpgradeCommand, startDetachedUpgrade, } from './installation.js';
1
+ export { VERSION, detectMethod, detectMethodAsync, fetchLatestVersion, getUpgradeCommand, isVersionInstalledAsync, startDetachedUpgrade, } from './installation.js';
2
2
  export { autoUpgrade, foregroundUpgrade, getAvailableUpgrade, isNewerVersion, } from './upgrade.js';
3
3
  export type { InstallMethod } from './installation.js';
4
4
  export type { AvailableUpgrade } from './upgrade.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC"}
@@ -1,3 +1,3 @@
1
- export { VERSION, detectMethod, detectMethodAsync, fetchLatestVersion, getUpgradeCommand, startDetachedUpgrade, } from './installation.js';
1
+ export { VERSION, detectMethod, detectMethodAsync, fetchLatestVersion, getUpgradeCommand, isVersionInstalledAsync, startDetachedUpgrade, } from './installation.js';
2
2
  export { autoUpgrade, foregroundUpgrade, getAvailableUpgrade, isNewerVersion, } from './upgrade.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACjB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/upgrade/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,GACjB,MAAM,cAAc,CAAC"}
@@ -13,6 +13,10 @@ export declare function detectMethod(): InstallMethod;
13
13
  * Async version of installation method detection to avoid blocking the event loop.
14
14
  */
15
15
  export declare function detectMethodAsync(commandRunner?: CommandRunner): Promise<InstallMethod>;
16
+ /**
17
+ * Checks whether a specific Bkper version is already installed globally.
18
+ */
19
+ export declare function isVersionInstalledAsync(method: InstallMethod, version: string, commandRunner?: CommandRunner): Promise<boolean>;
16
20
  /**
17
21
  * Fetches the latest published version from the npm registry.
18
22
  * Returns null if the fetch fails.
@@ -1 +1 @@
1
- {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../src/upgrade/installation.ts"],"names":[],"mappings":"AAMA,4CAA4C;AAC5C,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC;AAK3C,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AACpF,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAwC/D;;;GAGG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAkB5C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,aAAa,GAAE,aAAoC,GACpD,OAAO,CAAC,aAAa,CAAC,CAaxB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWvF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAS3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,cAAc,GAAE,sBAAsD,GACvE,IAAI,CAUN"}
1
+ {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../src/upgrade/installation.ts"],"names":[],"mappings":"AAMA,4CAA4C;AAC5C,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC;AAK3C,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AACpF,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAwC/D;;;GAGG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAkB5C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACnC,aAAa,GAAE,aAAoC,GACpD,OAAO,CAAC,aAAa,CAAC,CAaxB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CACzC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,aAAa,GAAE,aAAoC,GACpD,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiBjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWvF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAS3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,cAAc,GAAE,sBAAsD,GACvE,IAAI,CAUN"}
@@ -90,6 +90,29 @@ export function detectMethodAsync() {
90
90
  return 'unknown';
91
91
  });
92
92
  }
93
+ /**
94
+ * Checks whether a specific Bkper version is already installed globally.
95
+ */
96
+ export function isVersionInstalledAsync(method_1, version_1) {
97
+ return __awaiter(this, arguments, void 0, function* (method, version, commandRunner = defaultCommandRunner) {
98
+ const check = getDetectionChecks().find(check => check.method === method);
99
+ if (!check) {
100
+ return false;
101
+ }
102
+ try {
103
+ const output = yield commandRunner(check.command, 10000);
104
+ const packageVersion = `${PACKAGE_NAME}@${version}`;
105
+ return output.split(/\s+/).some(token => {
106
+ const normalizedToken = token.replace(/^[^A-Za-z0-9@/._+-]+|[^A-Za-z0-9@/._+-]+$/g, '');
107
+ return normalizedToken === packageVersion;
108
+ });
109
+ }
110
+ catch (_a) {
111
+ // Preserve the existing upgrade flow when the check cannot be completed.
112
+ return false;
113
+ }
114
+ });
115
+ }
93
116
  /**
94
117
  * Fetches the latest published version from the npm registry.
95
118
  * Returns null if the fetch fails.
@@ -1 +1 @@
1
- {"version":3,"file":"installation.js","sourceRoot":"","sources":["../../src/upgrade/installation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"installation.js","sourceRoot":"","sources":["../../src/upgrade/installation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bkper",
3
- "version": "4.25.0",
3
+ "version": "4.26.0",
4
4
  "description": "Command line client for Bkper",
5
5
  "bin": {
6
6
  "bkper": "./lib/cli.js"
@@ -52,8 +52,8 @@
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.84.1",
56
- "@earendil-works/pi-tui": "0.84.1",
55
+ "@earendil-works/pi-coding-agent": "0.84.2",
56
+ "@earendil-works/pi-tui": "0.84.2",
57
57
  "bkper-js": "^2.42.0",
58
58
  "commander": "^13.1.0",
59
59
  "dotenv": "^8.2.0",