bkper 4.24.3 → 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 (69) 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/git/index.d.ts +2 -2
  13. package/lib/commands/apps/git/index.d.ts.map +1 -1
  14. package/lib/commands/apps/git/index.js +1 -1
  15. package/lib/commands/apps/git/index.js.map +1 -1
  16. package/lib/commands/apps/git/markers.d.ts +2 -2
  17. package/lib/commands/apps/git/markers.d.ts.map +1 -1
  18. package/lib/commands/apps/git/markers.js +10 -2
  19. package/lib/commands/apps/git/markers.js.map +1 -1
  20. package/lib/commands/apps/git/mode.d.ts +3 -4
  21. package/lib/commands/apps/git/mode.d.ts.map +1 -1
  22. package/lib/commands/apps/git/mode.js +24 -28
  23. package/lib/commands/apps/git/mode.js.map +1 -1
  24. package/lib/commands/apps/git/push.d.ts +7 -0
  25. package/lib/commands/apps/git/push.d.ts.map +1 -1
  26. package/lib/commands/apps/git/push.js +31 -0
  27. package/lib/commands/apps/git/push.js.map +1 -1
  28. package/lib/commands/apps/git/types.d.ts +6 -2
  29. package/lib/commands/apps/git/types.d.ts.map +1 -1
  30. package/lib/commands/apps/git/types.js.map +1 -1
  31. package/lib/commands/apps/init.d.ts +3 -1
  32. package/lib/commands/apps/init.d.ts.map +1 -1
  33. package/lib/commands/apps/init.js +105 -58
  34. package/lib/commands/apps/init.js.map +1 -1
  35. package/lib/commands/apps/register.js +2 -2
  36. package/lib/commands/apps/register.js.map +1 -1
  37. package/lib/commands/apps/source-workflow.d.ts.map +1 -1
  38. package/lib/commands/apps/source-workflow.js +19 -9
  39. package/lib/commands/apps/source-workflow.js.map +1 -1
  40. package/lib/dev/miniflare.js +1 -1
  41. package/lib/dev/miniflare.js.map +1 -1
  42. package/lib/dev/preflight.js +1 -1
  43. package/lib/dev/preflight.js.map +1 -1
  44. package/lib/dev/shared.js +1 -1
  45. package/lib/dev/shared.js.map +1 -1
  46. package/lib/docs/apps/app-listing.md +86 -0
  47. package/lib/docs/apps/architecture.md +188 -0
  48. package/lib/docs/apps/configuration.md +171 -0
  49. package/lib/docs/apps/context-menu.md +69 -0
  50. package/lib/docs/apps/deploying.md +181 -0
  51. package/lib/docs/apps/development.md +122 -0
  52. package/lib/docs/apps/event-handlers.md +248 -0
  53. package/lib/docs/apps/first-app.md +76 -0
  54. package/lib/docs/apps/overview.md +100 -0
  55. package/lib/docs/apps/self-hosted.md +63 -0
  56. package/lib/docs/apps/shared-app-source.md +85 -0
  57. package/lib/docs/cli/app-management.md +41 -9
  58. package/lib/docs/index.md +11 -1
  59. package/lib/docs/sdk/bkper-js.md +5 -0
  60. package/lib/upgrade/index.d.ts +1 -1
  61. package/lib/upgrade/index.d.ts.map +1 -1
  62. package/lib/upgrade/index.js +1 -1
  63. package/lib/upgrade/index.js.map +1 -1
  64. package/lib/upgrade/installation.d.ts +4 -0
  65. package/lib/upgrade/installation.d.ts.map +1 -1
  66. package/lib/upgrade/installation.js +23 -0
  67. package/lib/upgrade/installation.js.map +1 -1
  68. package/package.json +3 -3
  69. 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
@@ -11,10 +11,10 @@ Build, deploy, and manage Bkper apps using the `bkper` CLI.
11
11
 
12
12
  Bkper selects source mode without changing the local-build deployment model:
13
13
 
14
- - **Managed source:** the first `bkper app sync` activates private Bkper-managed Git only when that same sync creates the Core App, `bkper.yaml` is at the root of a standalone Git repository, the current clean committed branch is `main`, and no Git remote exists. Bkper configures the managed repository as `origin` and pushes the committed source.
15
- - **External source:** an App keeps direct sync/deploy behavior when it has an external Git remote, is nested in a monorepo, is not rooted at `bkper.yaml`, or already existed in Core without a pending activation marker. Existing no-remote Apps are not migrated automatically. The CLI never changes an existing external remote.
14
+ - **Managed source:** `bkper app sync` activates private Bkper-managed Git for a new or existing App when `bkper.yaml` is at the root of a standalone Git repository, the current clean committed branch is `main`, and no Git remote exists. Bkper configures the managed repository as `origin`. New Apps initially upload `main`; existing Apps atomically upload all local branches and tags.
15
+ - **External source:** an App keeps direct sync/deploy behavior when it has an external Git remote, is nested in a monorepo, or is not rooted at `bkper.yaml`. The CLI never changes an existing external remote.
16
16
 
17
- To opt out for a new standalone App, add a GitHub, GitLab, or other provider remote before its first sync. Managed mode is sticky after activation; adding another remote later does not change it, and Artifacts remains `origin`.
17
+ To opt out, keep a GitHub, GitLab, or other provider remote configured. Managed mode is sticky after activation; adding another remote later does not change it, and Artifacts remains `origin`. The App listing `repoUrl` metadata does not select source mode.
18
18
 
19
19
  Source and deployment remain separate. `git push` stores source only and **never deploys**. `bkper app sync` pushes managed source before syncing local metadata. `bkper app deploy` pushes managed source, verifies that the exact commit exists in the linked repository, and then uploads the existing local `dist/server` and optional `dist/client` output. Builds remain local and explicit; Bkper does not claim reproducible remote CI or prove that the local bundle was built from the declared commit. Source linkage is best-effort provenance for already-authorized developers.
20
20
 
@@ -22,6 +22,26 @@ CLI-managed pushes are clean-tree and fast-forward-only. The CLI never commits,
22
22
 
23
23
  Configured App developers, including matches such as `*@example.com`, can read and modify private managed source under the existing owner/developer policy. App users and Book collaborators do not receive source access unless they also satisfy that developer policy. Repository credentials are exact URL/path-scoped, noninteractive, and valid for five minutes; they are never persisted by Bkper.
24
24
 
25
+ ### Migrate from an external Git provider
26
+
27
+ Source changes remain the user or coding agent's responsibility; the CLI never removes or renames provider remotes. Before migration, verify that `main` is clean and committed, the provider has the latest source, and every desired provider-only branch and tag is available locally. A coding agent must show the exact mutating commands and obtain explicit user approval before continuing.
28
+
29
+ Inspect first:
30
+
31
+ ```bash
32
+ git status --short --branch
33
+ git remote -v
34
+ ```
35
+
36
+ After approval, remove every external remote and sync. For a repository whose only external remote is `origin`:
37
+
38
+ ```bash
39
+ git remote remove origin
40
+ bkper app sync
41
+ ```
42
+
43
+ Sync preserves the existing App identity, activates managed source, configures it as `origin`, and atomically uploads all local branches and tags. If that upload fails, the pending marker makes the next `bkper app sync` retry the complete upload. `bkper app deploy` never activates migration.
44
+
25
45
  ## Verification Workflow
26
46
 
27
47
  When scaffolding, developing, or deploying an app, verify each step before proceeding. This prevents broken deployments and silent failures.
@@ -33,18 +53,30 @@ bkper app init my-app
33
53
  cd my-app
34
54
  ```
35
55
 
36
- `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.
37
66
 
38
67
  Verify:
39
68
 
69
+ - `AGENTS.md` contains each marker exactly once, with `APP_STANDARDS` before `APP_SPECIFICS`
40
70
  - `client/` and `server/` exist
41
71
  - `bkper.yaml` has `id`, `name`, `description`, and `developers`
42
- - `package.json` scripts include `dev` and `build`
43
- - `.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
44
75
 
45
76
  ### 2. Develop
46
77
 
47
78
  ```bash
79
+ bun install
48
80
  npm run dev
49
81
  ```
50
82
 
@@ -192,7 +224,7 @@ Managed sync and deploy require `bkper.yaml` at the Git root, an attached branch
192
224
 
193
225
  | Failure | Safe recovery |
194
226
  | --- | --- |
195
- | No Git repository | For a new standalone App, run `git init -b main`, review files, commit, and retry. Existing Apps are not migrated merely because they lack a remote. |
227
+ | No Git repository | For a standalone App, run `git init -b main`, review files, commit, and retry. An eligible new or existing App activates managed source on sync when no remote exists. |
196
228
  | `bkper.yaml` below Git root | Keep the monorepo/external workflow; managed monorepos are not supported. |
197
229
  | No commits | Review, then run `git add .` and `git commit -m "Initial app"`. |
198
230
  | Detached `HEAD` | Attach a branch with `git switch -c <branch>`; use `main` for first activation. |
@@ -511,11 +543,11 @@ Inside the interactive agent:
511
543
 
512
544
  ### App Lifecycle
513
545
 
514
- - `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.
515
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.
516
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.
517
549
  - `app list` - List all apps you have access to
518
- - `app sync` - Sync [bkper.yaml][bkper.yaml reference] configuration. If this sync creates an eligible new standalone App, activate managed source; if already managed, cleanly fast-forward-push the current committed branch first.
550
+ - `app sync` - Sync [bkper.yaml][bkper.yaml reference] configuration. For an eligible standalone repository with no remote, activate managed source for a new or existing App; existing migrations atomically upload all local branches and tags. If already managed, cleanly fast-forward-push the current committed branch first.
519
551
  - `app build` - Build the server Worker bundle for deployment
520
552
  - `app deploy` - For managed Apps, cleanly fast-forward-push and verify the current commit, then explicitly deploy the existing local build. External Apps keep direct upload behavior.
521
553
  - `-p, --preview` - Deploy to preview environment
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.24.3",
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",