ur-agent 1.45.6 → 1.47.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 (44) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/QUALITY.md +8 -3
  3. package/README.md +67 -13
  4. package/RELEASE.md +9 -6
  5. package/dist/cli.js +73656 -36080
  6. package/docs/A2A.md +180 -0
  7. package/docs/ACP.md +69 -17
  8. package/docs/AGENT_FEATURES.md +64 -7
  9. package/docs/AGENT_TRENDS.md +91 -26
  10. package/docs/AG_UI.md +132 -0
  11. package/docs/CONFIGURATION.md +123 -3
  12. package/docs/DEVELOPMENT.md +1 -0
  13. package/docs/IDE.md +20 -17
  14. package/docs/TROUBLESHOOTING.md +5 -3
  15. package/docs/USAGE.md +34 -4
  16. package/docs/VALIDATION.md +31 -1
  17. package/docs/providers.md +15 -1
  18. package/documentation/app.js +18 -6
  19. package/documentation/index.html +27 -8
  20. package/examples/agent_features.md +18 -0
  21. package/examples/agent_trends.md +5 -0
  22. package/examples/mcp.md +4 -0
  23. package/examples/memory.md +5 -2
  24. package/extensions/jetbrains-ur/README.md +12 -5
  25. package/extensions/jetbrains-ur/build.gradle.kts +22 -6
  26. package/extensions/jetbrains-ur/gradle.properties +1 -0
  27. package/extensions/jetbrains-ur/settings.gradle.kts +4 -0
  28. package/extensions/jetbrains-ur/src/main/kotlin/dev/urnexus/SendSelectionAction.kt +39 -5
  29. package/extensions/jetbrains-ur/src/main/kotlin/dev/urnexus/UrAcpClient.kt +52 -20
  30. package/extensions/jetbrains-ur/src/main/kotlin/dev/urnexus/UrToolWindowFactory.kt +7 -4
  31. package/extensions/jetbrains-ur/src/main/resources/META-INF/plugin.xml +1 -1
  32. package/extensions/vscode-ur-inline-diffs/README.md +6 -2
  33. package/extensions/vscode-ur-inline-diffs/out/extension.js +328 -157
  34. package/extensions/vscode-ur-inline-diffs/package.json +33 -5
  35. package/package.json +70 -56
  36. package/plugins/core/engineering-discipline/skills/reproducible-release/SKILL.md +2 -1
  37. package/plugins/core/github/skills/github-workflow/SKILL.md +2 -1
  38. package/plugins/core/gitlab/skills/gitlab-workflow/SKILL.md +2 -1
  39. package/plugins/core/huggingface/skills/huggingface-workflow/SKILL.md +2 -1
  40. package/plugins/core/miro/skills/miro-workflow/SKILL.md +2 -1
  41. package/plugins/core/obsidian/skills/second-brain/SKILL.md +2 -1
  42. package/plugins/core/powerpoint/skills/deck-craft/SKILL.md +2 -1
  43. package/plugins/core/skill-forge/skills/skill-authoring/SKILL.md +2 -1
  44. package/plugins/core/word/skills/document-craft/SKILL.md +2 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,74 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.47.0
4
+
5
+ - Added a secure, opt-in AG-UI HTTP/SSE adapter with official schema/encoder
6
+ integration, truthful capability discovery, ordered text/tool/state events,
7
+ cancellation, exact CORS, bearer protection for network exposure, resource
8
+ limits, redacted errors, and explicit rejection of unsupported capabilities.
9
+ - Added a dual-stack A2A server: the stable v0.3 SDK binding remains available,
10
+ while strict v1 ProtoJSON JSON-RPC and HTTP+JSON routes provide versioned
11
+ discovery, pagination, artifacts, cancellation, tenant isolation, durable
12
+ state, and compatibility coverage against the official A2A TCK.
13
+ - Completed the ACP v1 stdio lifecycle with private durable history,
14
+ `session/list`, `session/load`, `session/delete`, bounded ordered replay,
15
+ session modes, configuration options, available-command updates, and
16
+ cancellation-safe concurrent transport behavior.
17
+ - Added an opt-in MCP 2026-07-28 stateless HTTP adapter with strict request
18
+ metadata, negotiated Tasks and Apps extensions, owner-isolated durable tasks,
19
+ schema-referenced extension headers, cache/TTL discovery metadata, CORS,
20
+ bearer authentication, rate/concurrency limits, and corruption quarantine.
21
+ - Added an opt-in OpenAI Responses transport while retaining Chat Completions
22
+ as the default. It supports multimodal/tool translation, structured output,
23
+ semantic SSE streaming, background create/poll/resume/cancel, WebSocket
24
+ continuation, server compaction, deferred tool search, and privacy-first
25
+ `store: false` state handling. No paid API calls are required by its tests.
26
+ - Added explicit OpenTelemetry OTLP/console exporters and current GenAI
27
+ inference, agent, workflow, tool, memory, token, cache, latency,
28
+ time-to-first-chunk, inter-output-chunk latency, and error semantics. Export
29
+ and message-content capture remain disabled by default.
30
+ - Added strict Agent Skills validation, deterministic permission/tree digests,
31
+ Ed25519 signing and trusted-key verification, invocation-time integrity
32
+ rechecks, `ur skill verify|sign|keygen` commands, and deterministic discovery
33
+ from the cross-client `.agents/skills/` project/user locations.
34
+ - Upgraded project task memory to a tamper-evident provenance chain with atomic
35
+ private writes, cross-process locking, legacy anchoring, fail-closed reads,
36
+ verification, quarantine, and rollback commands.
37
+ - Hardened all new durable stores with bounded input/state, symlink rejection,
38
+ private permissions, atomic replacement, corruption handling, and focused
39
+ concurrency/adversarial tests.
40
+
41
+ ## 1.46.0
42
+
43
+ - Added a stable, official-SDK ACP v1 stdio agent with resumable sessions,
44
+ client MCP transports and additional roots, streamed updates, native
45
+ permission requests, cancellation, and private persisted session identity.
46
+ - Added an official-SDK A2A v0.3 JSON-RPC binding and hardened the separate UR
47
+ HTTP compatibility APIs with scoped authorization, strict media/schema
48
+ validation, bounded requests/responses/state, durable task identity, and
49
+ fail-closed permission handling.
50
+ - Hardened OpenAI, Anthropic, and Gemini provider wire behavior, including
51
+ strict tool schemas, exact tool-call identity, Gemini thought signatures,
52
+ request correlation, bounded stdin secrets, and protocol regression tests.
53
+ - Completed background-task management in the VS Code Actions panel and made
54
+ JetBrains prompt cancellation reach the running server task. Modernized and
55
+ verified both IDE extension builds against their supported platforms;
56
+ JetBrains bytecode no longer emits compatibility bridges to internal APIs.
57
+ - Made background manifests cross-process safe, atomic, private, bounded, and
58
+ traversal-resistant; added bounded CLI/log handling and explicit isolated or
59
+ offline task-launch choices without implicit publishing or permission bypass.
60
+ - Updated dependencies and supply-chain automation, pinned CI actions, added
61
+ multi-ecosystem Dependabot coverage, synchronized every release surface, and
62
+ expanded release, packaging, security, protocol, and integration checks.
63
+ - Made source archives Git-ignore-aware, private-state-safe, and replacement-
64
+ safe; provider smoke tests now isolate their JSON reports instead of
65
+ rewriting the tracked diagnostic snapshot, and secret scanning covers new
66
+ non-ignored release files before they are committed.
67
+ - Re-audited the agent roadmap against primary sources after the version bump;
68
+ corrected stale provider and dense-memory claims and recorded dated gaps for
69
+ A2A v1, ACP lifecycle methods, MCP Tasks/Apps, provider-native durable
70
+ inference, Agent Skills governance, GenAI telemetry, and memory integrity.
71
+
3
72
  ## 1.45.6
4
73
 
5
74
  - Deduplicated project verification approval so compile/test/lint commands are
package/QUALITY.md CHANGED
@@ -15,6 +15,7 @@ bun test
15
15
  bun run bundle
16
16
  bun run smoke
17
17
  bun run secrets:scan
18
+ bun run dependencies:audit
18
19
  bun run release:check
19
20
  bun run package:check
20
21
  npm publish --dry-run
@@ -30,8 +31,11 @@ sandbox posture, and secret exfiltration denial. `ur context-pack scan` records
30
31
  the repo architecture and manifest-derived command set; `ur context-pack
31
32
  compress` preserves task decisions, constraints, commands, and diffs.
32
33
 
33
- `bun run release:check` is also wired into `prepack`, so stale bundles and
34
- version drift fail before packaging. The GitHub workflow must keep production
34
+ `bun run dependencies:audit` checks the committed `bun.lock`, including
35
+ development dependencies that are compiled into `dist/cli.js`. `bun run
36
+ release:check` repeats that audit and is also wired into `prepack`, so known
37
+ dependency advisories, stale bundles, and version drift fail before packaging.
38
+ The GitHub workflow must keep production
35
39
  bundle, release, package, and global-install checks after the Bun test step;
36
40
  do not tag or publish until that workflow is green.
37
41
 
@@ -80,7 +84,8 @@ Public feature releases should update the full documentation set:
80
84
  - Deep verification through the verification subagent is manual by default and
81
85
  can be enabled with `UR_VERIFIER_AUTO_SUBAGENT=1`.
82
86
  - Secrets must stay in environment variables, secure storage, or local ignored
83
- settings files; tracked files are scanned by `bun run secrets:scan`.
87
+ settings files; tracked and untracked non-ignored release-candidate files are
88
+ scanned by `bun run secrets:scan`.
84
89
 
85
90
  ## Known Limits
86
91
 
package/README.md CHANGED
@@ -265,6 +265,24 @@ ur config set provider.fallback ollama
265
265
  guidance. UR never switches providers automatically: inspect the failure and
266
266
  select the recovery provider explicitly with `ur config set provider <id>`.
267
267
 
268
+ OpenAI API traffic uses Chat Completions by default. The Responses transport is
269
+ an explicit, provider-scoped opt-in with privacy-conscious defaults:
270
+
271
+ ```sh
272
+ ur config set provider openai-api
273
+ ur config set openai_transport responses
274
+ ur config set responses.store false
275
+ ur config set responses.compact_threshold 20000
276
+ ur config set responses.tool_search hosted
277
+ ```
278
+
279
+ The Responses adapter supports semantic SSE streaming, background
280
+ create/retrieve/poll/cancel, WebSocket continuation, server compaction, and
281
+ deferred tool discovery. `store` defaults to `false`; the durable local cursor
282
+ store records identifiers and status only. Compacted context is persisted only
283
+ when `UR_OPENAI_RESPONSES_STATE_KEY` contains a 32-byte encryption key. Return
284
+ to the default with `ur config set openai_transport chat-completions`.
285
+
268
286
  Provider config accepts canonical IDs and common aliases. Examples:
269
287
  `openai-api`, `anthropic-api`, `gemini-api`, `openrouter`, `ollama`,
270
288
  `lmstudio`, `LM Studio`, `llama.cpp`, `vllm`, and the subscription CLIs
@@ -329,8 +347,9 @@ identity line in the system prompt reflects it too:
329
347
 
330
348
  - **API** providers call each service in its native wire format — Anthropic
331
349
  `x-api-key` + `anthropic-version` on `/v1/messages`, OpenAI `Bearer` on
332
- `/v1/chat/completions`, Gemini `x-goog-api-key` on `:generateContent`,
333
- OpenRouter on its OpenAI-compatible chat endpoint.
350
+ `/v1/chat/completions` by default or `/v1/responses` when explicitly
351
+ selected, Gemini `x-goog-api-key` on `:generateContent`, and OpenRouter on its
352
+ OpenAI-compatible chat endpoint.
334
353
  - **Local/server** providers call the configured endpoint (`/v1/chat/completions`
335
354
  for LM Studio/llama.cpp/vLLM; the native API for Ollama).
336
355
  - **Subscription CLIs** (Codex, Claude Code, Gemini, Antigravity) are external
@@ -369,7 +388,7 @@ as first-class subcommands in the shipped CLI.
369
388
  | `ur test-first` | Detect the project stack, run compile/test/lint commands, store failure traces, and install edit-time verify gates. |
370
389
  | `ur safety` | Inspect or initialize project shell safety policy and evaluate command risk before execution. |
371
390
  | `ur sandbox` | Inspect and manage the sandbox/permission architecture: status, dependency check, policy init, and command approval levels. |
372
- | `ur context-pack` | Write project architecture context, task memory, and compressed context under `.ur/`. Supports memory kinds `decision`, `constraint`, `command`, `diff`, `note`, `architecture`, `preference`, `attempt`, `accepted`, and `rejected`. |
391
+ | `ur context-pack` | Write project architecture context, tamper-evident task memory, and compressed context under `.ur/`; verify, quarantine, or roll back the memory chain. |
373
392
  | `/hooks` | Inspect lifecycle hooks (`BeforeEdit`, `AfterEdit`, `BeforeCommand`, `AfterCommand`, `BeforeCommit`, `OnFailure`) configured via settings files. |
374
393
  | `ur bg` | Run and manage detached local background agents with optional worktrees and PR creation. |
375
394
  | `ur worktree` | List, inspect, and clean up UR agent worktrees. |
@@ -402,14 +421,16 @@ as first-class subcommands in the shipped CLI.
402
421
  | `ur auth gemini` | Use the official Gemini CLI login flow where supported. |
403
422
  | `ur auth antigravity` | Use the official Antigravity CLI login flow where supported. |
404
423
  | `ur config set` | Persist safe non-secret provider settings such as provider, model, base URL, command path, and fallback. |
405
- | `ur mcp` | Configure and manage Model Context Protocol servers. |
424
+ | `ur mcp` | Configure MCP servers, expose fail-closed built-in tools over stdio, or run the opt-in stateless MCP 2026 HTTP adapter with Tasks and Apps. |
425
+ | `ur skill` | Initialize, run, strictly verify, Ed25519-sign, and create trusted signing keys for portable skills. |
426
+ | `ur ag-ui serve` | Start the secure AG-UI HTTP/SSE adapter for user-facing applications with truthful capability discovery. |
406
427
  | `ur plugin` | Install, update, enable, disable, and validate UR plugins that can add MCP tools, skills, templates, validators, language adapters, LSP servers, agents, hooks, output styles, and commands. |
407
428
  | `ur role-mode` | Install built-in Architect, Code, Debug, and Ask role modes. |
408
- | `ur acp` | Start/stop/status the Agent Communication Protocol server for IDE extensions. |
429
+ | `ur acp` | Run official-SDK ACP v1 over stdio, or manage the separate UR HTTP JSON-RPC server. |
409
430
  | `ur exec` | Run one or more prompts in non-interactive mode with optional concurrency. |
410
431
  | `ur ide diff` | Capture editor-readable inline diff bundles. |
411
- | `ur a2a card` | Print UR Card metadata for agent interoperability. |
412
- | `ur a2a serve` | Start an opt-in local A2A task server with bearer or delegation auth. |
432
+ | `ur a2a card` | Print the v0.3 Agent Card preview; the live server negotiates a separate strict v1 card. |
433
+ | `ur a2a serve` | Start opt-in A2A v0.3 plus v1 JSON-RPC/HTTP+JSON bindings and the separate UR compatibility task API. |
413
434
  | `ur sdk` | Show programmatic headless usage and scaffold SDK examples. |
414
435
  | `ur trigger` | Parse a GitHub/Slack webhook payload and optionally launch a headless UR run. |
415
436
  | `ur agent-templates` | List or install reusable project agent templates. |
@@ -468,7 +489,7 @@ contract — see the [IDE Guide](docs/IDE.md) for the full feature list.
468
489
  Inspect and configure integration per editor:
469
490
 
470
491
  ```sh
471
- ur ide status # workspace, ACP server, provider/model, sandbox/verifier mode, plugin count
492
+ ur ide status # workspace, UR HTTP server, provider/model, sandbox/verifier mode, plugin count
472
493
  ur ide doctor # pass/warn/fail checks; reports missing config clearly
473
494
  ur ide config zed # print the .zed/settings.json ACP block
474
495
  ur ide config vscode # VS Code / Cursor / Windsurf setup
@@ -478,7 +499,7 @@ VS Code, Cursor, and Windsurf connect through the UR Inline Diffs extension;
478
499
  Zed and ACP-capable Neovim clients connect through the stdio Agent Client
479
500
  Protocol. The experimental bundled JetBrains plugin under
480
501
  `extensions/jetbrains-ur` uses project-scoped JSON-RPC sessions over the
481
- loopback HTTP ACP endpoint and is installable from its Gradle `buildPlugin`
502
+ loopback UR HTTP compatibility endpoint and is installable from its Gradle `buildPlugin`
482
503
  zip. Start an ACP surface with:
483
504
 
484
505
  ```sh
@@ -496,7 +517,7 @@ commit, push, or create PRs unless explicitly requested:
496
517
  `/debug-v2`, `/refactor`, `/paper-implementation`, `/benchmark`, `/security-review`, `/dockerize`, `/latex-paper`.
497
518
  Install matching agent templates with `ur agent-templates install`.
498
519
 
499
- New built-in tools (exposed through MCP and the ACP server): GitHub, API, Browser, Docker, TestRunner, Database. File-system and terminal tools are already built in (FileRead, FileEdit, FileWrite, Glob, Grep, Bash, PowerShell).
520
+ New built-in tools (exposed through MCP and the UR HTTP compatibility API): GitHub, API, Browser, Docker, TestRunner, Database. File-system and terminal tools are already built in (FileRead, FileEdit, FileWrite, Glob, Grep, Bash, PowerShell).
500
521
 
501
522
  ### Plugin Marketplace
502
523
 
@@ -558,6 +579,9 @@ ur context-pack remember --preference "Use bun test over jest"
558
579
  ur context-pack remember --accepted "Use p-map for bounded concurrency" --scope project
559
580
  ur context-pack remember --rejected "Switch to esbuild" --alternative-to "Keep bun bundle"
560
581
  ur context-pack remember --attempt "Tried Deno runtime" --status superseded
582
+ ur context-pack memory verify
583
+ ur context-pack memory quarantine
584
+ ur context-pack memory rollback --to <entry-id>
561
585
  ur context-pack compress
562
586
  ur ci-loop --command "bun test" --cwd . --max-attempts 3 --dry-run
563
587
  ur bg run "fix the flaky parser test" --worktree --dry-run
@@ -569,6 +593,10 @@ ur code-index repo build
569
593
  ur code-index repo search "rate limiter"
570
594
  ur skill init security-review
571
595
  ur skill run security-review "src/auth.ts"
596
+ ur skill verify security-review --require-trusted
597
+ ur skill keygen release --out ~/.ur/keys/release.pem
598
+ ur skill sign security-review --key ~/.ur/keys/release.pem --key-id release
599
+ UR_MCP_HTTP_TOKEN='<secret>' ur mcp serve-http --port 8976
572
600
  ur artifacts capture-tests --command "bun test"
573
601
  ur artifacts serve --port 4180
574
602
  ur agent-task pr --create --dry-run
@@ -585,14 +613,18 @@ UR reads repository instructions and local runtime state from project files:
585
613
 
586
614
  - `AGENTS.md` and `UR.md` provide shared project instructions.
587
615
  - `UR.local.md` is for private local instructions.
588
- - `.ur/skills/` stores project skills.
616
+ - `.ur/skills/` stores native project skills; `.agents/skills/` is the
617
+ cross-client Agent Skills location. User equivalents live under `~/.ur/skills/`
618
+ and `~/.agents/skills/`, with deterministic project/native precedence.
589
619
  - `.ur/agents/` stores custom agents and role modes.
590
620
  - `.ur/safety-policy.json` configures project shell safety rules for read,
591
621
  write, execute, and network command classes.
592
622
  - `.ur/project-manifest.json` and `.ur/context/` hold architecture summaries,
593
623
  task memory, compressed context, and project memory including architecture
594
- decisions, preferred commands, failed attempts, accepted patterns, and rejected
595
- approaches.
624
+ decisions, preferred commands, failed attempts, accepted patterns, and
625
+ rejected approaches. Task-memory v2 entries include provenance and an
626
+ integrity chain; corrupt tails can be quarantined without discarding the
627
+ verified prefix.
596
628
  - `.ur/specs/`, `.ur/artifacts/`, `.ur/automations/`, `.ur/test-first/`,
597
629
  `.ur/memory/`, and `.ur/index/` hold workflow state, review artifacts,
598
630
  scheduled jobs, failure traces, memory, and indexes.
@@ -624,6 +656,26 @@ settings, generated indexes, memory, logs, and secrets out of Git.
624
656
  - `plugins/community/` stages contributed plugins.
625
657
  - `plugins/examples/` contains plugin templates users can copy.
626
658
 
659
+ ## OpenTelemetry
660
+
661
+ Telemetry export is off unless an operator explicitly configures a signal:
662
+
663
+ ```sh
664
+ OTEL_TRACES_EXPORTER=otlp \
665
+ OTEL_METRICS_EXPORTER=otlp \
666
+ OTEL_LOGS_EXPORTER=otlp \
667
+ OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 \
668
+ ur
669
+ ```
670
+
671
+ UR emits bounded OpenTelemetry GenAI inference, agent, workflow, tool, and
672
+ memory spans plus duration, token, streaming time-to-first-chunk, and
673
+ inter-output-chunk latency metrics. Raw prompts, system instructions, tool
674
+ arguments/results, and memory records are omitted by default; set
675
+ `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=true` only inside an
676
+ appropriately secured telemetry environment. `OTEL_SDK_DISABLED=true` is the
677
+ global kill switch.
678
+
627
679
  ## Safety Model
628
680
 
629
681
  UR can read files, edit code, execute commands, and call configured tools, so
@@ -746,6 +798,8 @@ release until that GitHub run is green.
746
798
  - [Development Guide](docs/DEVELOPMENT.md)
747
799
  - [IDE Guide](docs/IDE.md)
748
800
  - [ACP Guide](docs/ACP.md)
801
+ - [A2A Guide](docs/A2A.md)
802
+ - [AG-UI Guide](docs/AG_UI.md)
749
803
  - [Plugin Guide](docs/plugins.md)
750
804
  - [Validation Runbook](docs/VALIDATION.md)
751
805
  - [Release Runbook](RELEASE.md)
package/RELEASE.md CHANGED
@@ -11,11 +11,13 @@ Release target:
11
11
  Run from the repository root:
12
12
 
13
13
  ```bash
14
- bun install
14
+ bun ci
15
+ bun run dependencies:audit
15
16
  bun test
16
17
  bun run typecheck
17
18
  bun run lint
18
19
  bun run build
20
+ bun run release:check
19
21
  node ./bin/ur.js --version
20
22
  node ./bin/ur.js --help
21
23
  node ./bin/ur.js upgrade
@@ -28,7 +30,7 @@ before release:
28
30
 
29
31
  ```bash
30
32
  bun run release:create-source-zip
31
- bun run release:check-source-zip -- artifacts/source/ur-agent-$(node -p "require('./package.json').version")-source.zip
33
+ bun run release:check-source-zip -- artifacts/source/ur-nexus-$(node -p "require('./package.json').version")-source.zip
32
34
  ```
33
35
 
34
36
  The source zip must contain source inputs such as `package.json`, `bun.lock`,
@@ -52,14 +54,15 @@ rg -n "Version [0-9]|expected: [0-9]|UR-Nexus v[0-9]" README.md docs documentati
52
54
  bun test test/docsCoverage.test.ts test/docsCommands.test.ts
53
55
  ```
54
56
 
55
- Version bump checklist (all three must move together):
57
+ Version bump checklist (all versioned release surfaces must move together):
56
58
 
57
59
  1. `package.json` `version`
58
60
  2. `bunfig.toml` `MACRO.VERSION`
59
61
  3. `documentation/index.html` version eyebrow
60
- 4. `extensions/vscode-ur-inline-diffs/package.json` `version` (the VSIX test
61
- requires it to match the root package version)
62
- 5. Add a `CHANGELOG.md` entry, then run `bun run build` so `dist/cli.js`
62
+ 4. `extensions/vscode-ur-inline-diffs/package.json` and its lockfile version
63
+ fields (the VSIX test requires them to match the root package version)
64
+ 5. `extensions/jetbrains-ur/build.gradle.kts` `version`
65
+ 6. Add a `CHANGELOG.md` entry, then run `bun run build` so `dist/cli.js`
63
66
  embeds the new version (`bun run release:check` verifies all of this).
64
67
 
65
68
  If `npm whoami` fails, run: