feat: bootstrap essentials-sync and first synced package#130
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
tools/typescript/essentials-sync/— an agent that extracts a generic, jargon-freeess-*package out of a team-specific tool in a private repo, refactors the original tool into a thin wrapper that supplies the company defaults, and then syncs the extracted package here. Deterministic scanners (TruffleHog, secretlint, jargon, PII) plus an adversarial LLM reviewer on a different model family gate each phase.packages/python/ess-service-now-incident/— the first package produced by the new flow. Fetches ServiceNow incident records via an authenticated browser session (ess-browser). Exposes abuild_cli(default_instance=...)factory so per-tenant wrappers can bake in their hostname without forking the library.Background
This is the open-source half of an "extract-then-sync" pattern: a single command in essentials-sync produces three artifacts —
honeycomb/packages/python/ess-<name>/(the new generic core),honeycomb/tools/python/<name>/(rewritten as a thin wrapper), andessentials/packages/python/ess-<name>/(the sync target, this PR). Mirrors thelangsmith-hosting/sales-ai-langsmith-hostingsplit that already exists in honeycomb.Test plan
npm run buildpasses intools/typescript/essentials-sync/npm testpasses (21/21 Vitest tests: jargon scanner, PII scanner, extract-plan name/path derivation)uv sync --all-packageson the consuming private repo resolves cleanly with the new workspace memberpytest packages/python/ess-service-now-incident/— 47/47 tests pass (9 CLI + 25 client + 13 get_incident)service-now-incident <real-incident-number>end-to-end (SSO refresh + browser session reuse + description parse all worked)rg -i 'cisco|webex|myid|cec|sjc'against the new package returns zero matchesNotes for reviewers
ess-browser(already in this repo) for the authenticated Chromium session.essentials-syncis implemented in TypeScript because it's a thin CLI around@cursor/sdk. It pins its own Node + Python versions via.nvmrcand.python-versionto dodge a sqlite/node-gyp/distutils issue with Python 3.12 — documented in its README.--instancedefault; callers must pass--instance, setSERVICENOW_INSTANCE, or use a full URL. Per-tenant wrappers in private repos supply the default.Made with Cursor