Skip to content

Prepare bcli for OSS: standard v2.0 examples only, portable custom APIs - #40

Draft
igor-ctrl wants to merge 5 commits into
mainfrom
cursor/oss-scrub-beautech-9ac6
Draft

igor-ctrl wants to merge 5 commits into
mainfrom
cursor/oss-scrub-beautech-9ac6

Conversation

@igor-ctrl

@igor-ctrl igor-ctrl commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

Removes every organization-specific reference and all aviation-domain examples. The OSS now uses only Microsoft standard Business Central API v2.0 entities. This PR also makes registering your own AL API pages, and sharing them, a one-command step.

Changes

Company and domain scrub

  • Removed every Beautech mention and the internal IMPLEMENTATION-SUMMARY.md worklog.
  • Anonymized a real production record and real-looking identifiers: engine serials, a tail number, airline and customer names.
  • Replaced every aviation example with standard v2.0 entities and CRONUS-style values. This covers engine utilization, ESNs, airworthiness tags, and custom engine* / purchaseHeaders pages. The replacements use customers, salesInvoices, purchaseInvoices and their lines, generalLedgerEntries, and so on. Tests that need a custom route use a neutral contoso/integration/v1.0 / shipmentTrackings placeholder.
  • Dropped the technical SafeContext domain rule. It was identical to the default rule, so behavior is unchanged.
  • Stopped a bundle test from writing finance-*.tar.gz into the repo root. That file had been committed by accident and is now removed.

Custom APIs

  • New bcli registry import --from-file accepts JSON or YAML registry files and Postman collections. A file can set publisher / group / version once and list bare entity-set names. See examples/custom-apis.yaml.
  • --from-metadata now accepts --publisher, --group and --version directly. Previously these had to be stored in the profile first.
  • Imports now merge instead of overwriting. Before, importing a second API route wiped out the first, along with any endpoints a pack had installed. --replace restores the old behavior but still keeps pack-owned entries.
  • New bcli registry export writes a portable file. Pack registry presets accept the same format.
  • An entry that names only part of a route is rejected. Before, it silently routed to /api/v2.0/.
  • Registry entries accept the short keys publisher / group / version.
  • Fixed the "not registered" hint, which suggested the invalid --from-metadata <metadata-url>.
  • Rewrote docs/custom-apis.md and updated the README, getting-started, the command reference, AGENTS.md, and CHANGELOG.
  • --from-postman and --from-json still work, but are now hidden in favor of --from-file.

Test plan

  • uv run pytest tests/ passes (1226 passed, 5 skipped)
  • uv run ruff check src/ tests/ is clean
  • Added tests: tests/test_registry/test_import_file.py and two pack-loader tests
  • Manual testing notes: against a throwaway config, ran registry import --from-file on examples/custom-apis.yaml and on the Postman fixture. The endpoints merged to 7, and endpoint info shows the right route. registry export round-trips. --from-metadata without a route exits 2 with a clear message.
  • A repo-wide search for Beautech and aviation terms finds nothing

Breaking changes

bcli registry import now merges by default. Anyone relying on it to replace the registry should pass --replace.

Not addressed here: git history

Git history still contains the old content and a @beautech.aero author email on 19 commits. The plan is to start a fresh repo from this tree.

Open in Web Open in Cursor 

cursoragent and others added 5 commits September 29, 2026 22:50
- Drop internal IMPLEMENTATION-SUMMARY.md worklog
- Replace Beautech mentions in docs, docstrings, and tests with neutral wording
- Anonymize a real production record and real-looking serials, tail
  numbers, and customer names in test fixtures and examples

Co-authored-by: Igor <igor-ctrl@users.noreply.github.com>
engineOverviews, engineUtilizations, engineCards, and preservationStatuses
were internal custom endpoint names. Swap them (and the private MCP tool
names in docs) for generic equipment-* / inspectionStatuses examples.

Co-authored-by: Igor <igor-ctrl@users.noreply.github.com>
test_make_bundle_produces_valid_manifest used make_bundle's default output
path, dropping finance-2026.05.07-1.tar.gz into the repo root, where it
was accidentally committed.

Co-authored-by: Igor <igor-ctrl@users.noreply.github.com>
…nd tests

Replace the remaining aviation-specific examples (engine utilization,
ESNs, tail numbers, airworthiness tags, custom purchaseHeaders/Lines pages)
with standard v2.0 entities such as customers, salesInvoices,
purchaseInvoices and their lines, using CRONUS-style sample values.
Custom-route tests use a neutral contoso/integration/v1.0 placeholder.

Also drop the 'technical' SafeContext domain rule, which was identical to
the default rule.

Co-authored-by: Igor <igor-ctrl@users.noreply.github.com>
- registry import --from-file: JSON/YAML registry files or Postman
  collections; top-level publisher/group/version with bare entity names
- registry import --from-metadata takes --publisher/--group/--version
- imports merge instead of overwriting (--replace to start over; pack
  entries are kept)
- registry export writes a portable file; pack presets accept it
- entries with a partial custom route are rejected
- short publisher/group/version keys accepted in registry entries
- fix invalid '--from-metadata <metadata-url>' hint
- rewrite docs/custom-apis.md and add examples/custom-apis.yaml

Co-authored-by: Igor <igor-ctrl@users.noreply.github.com>
@cursor cursor Bot changed the title chore: remove company-specific references ahead of OSS launch Prepare bcli for OSS: standard v2.0 examples only, portable custom APIs Sep 29, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants