From f020c53dd83338685bbafcffcd4060d06803a9b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 1 Nov 2026 09:46:00 +0000 Subject: [PATCH] chore(main): release build-loop 0.48.0 --- .agents/plugins/marketplace.json | 2 +- .claude-plugin/marketplace.json | 8 +-- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- .release-please-manifest.json | 2 +- CHANGELOG.md | 103 +++++++++++++++++++++++++++++++ README.md | 2 +- package-lock.json | 4 +- package.json | 2 +- 9 files changed, 115 insertions(+), 12 deletions(-) diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 65a25d89..7057e3f7 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -1,6 +1,6 @@ { "name": "build-loop", - "version": "0.47.0", + "version": "0.48.0", "plugins": [ { "name": "build-loop", diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index a8e12f62..89f4b511 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -5,14 +5,14 @@ "url": "https://github.com/tyroneross" }, "metadata": { - "description": "Official marketplace for build-loop \u2014 orchestrated 5-phase development loop with optional Learn phase", - "version": "0.47.0" + "description": "Official marketplace for build-loop — orchestrated 5-phase development loop with optional Learn phase", + "version": "0.48.0" }, "plugins": [ { "name": "build-loop", "source": "./", - "description": "Orchestrated 5-phase development loop (Assess \u2192 Plan \u2192 Execute \u2192 Review \u2192 Iterate) plus optional Learn phase. Review combines critic, validate, optimize, fact-check, simplify, and report as ordered sub-steps. Bundles native debug-loop, debugging-memory, and logging-tracer skills without a build-loop MCP server. The logging-tracer skill includes an optional Coding Debugger escalation hop to delegate to the standalone supporting plugin for extended capability (cross-project memory, additional assessors). NavGator integration via cherry-pick bridge. Opus 4.7 orchestrator, Sonnet execution, Haiku pattern-matching.", + "description": "Orchestrated 5-phase development loop (Assess → Plan → Execute → Review → Iterate) plus optional Learn phase. Review combines critic, validate, optimize, fact-check, simplify, and report as ordered sub-steps. Bundles native debug-loop, debugging-memory, and logging-tracer skills without a build-loop MCP server. The logging-tracer skill includes an optional Coding Debugger escalation hop to delegate to the standalone supporting plugin for extended capability (cross-project memory, additional assessors). NavGator integration via cherry-pick bridge. Opus 4.7 orchestrator, Sonnet execution, Haiku pattern-matching.", "author": { "name": "Tyrone Ross" }, @@ -32,7 +32,7 @@ "self-improvement", "prompt-engineering" ], - "version": "0.47.0" + "version": "0.48.0" } ] } diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index b2b4c281..594125b1 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "build-loop", - "version": "0.47.0", + "version": "0.48.0", "description": "Multi-phase build orchestration with native debugging: assess, plan, execute, review, iterate. Plan-verify gate on Phase 2. Optional UI design gates. Native debug-loop, debugging-memory, and logging-tracer skills provide root-cause investigation without a bundled MCP server. Orchestrator owns when-to-fire; bundled skills own procedural detail; the logging-tracer skill includes an optional Coding Debugger escalation hop to the standalone supporting plugin for extended capability.", "author": { "name": "Tyrone Ross", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 314e85f4..b6ebef51 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "build-loop", - "version": "0.47.0", + "version": "0.48.0", "description": "Multi-phase build orchestration with native debugging: assess, plan, execute, review, iterate. Plan-verify gate on Phase 2. Optional UI design gates. Native debug-loop, debugging-memory, and logging-tracer skills provide root-cause investigation without a bundled MCP server. Orchestrator owns when-to-fire; bundled skills own procedural detail; bridges are optional escalation hops to supporting plugins for extended capability.", "author": { "name": "Tyrone Ross", diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 3bafaeb4..1383393b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.47.0" + ".": "0.48.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 879b86ad..07ce2028 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,109 @@ - Renamed the repository-governance entrypoint to `repo-maintenance`; `repo-closeout` remains a one-release compatibility alias. - Repository artifact audits now discover nested caches recursively, protect canonical build roots by default, distinguish distributable release artifacts from ordinary build products, and surface live processes that reference already-removed artifact roots. +## [0.48.0](https://github.com/tyroneross/build-loop/compare/build-loop-v0.47.0...build-loop-v0.48.0) (2026-11-01) + + +### Features + +* **acp-practice:** add ACP best-practice skill and Review checklist hook ([e4fa665](https://github.com/tyroneross/build-loop/commit/e4fa66518b6a6b613bb250c013b1f3444fc19e53)) +* **drain_proposals:** rank and cap the digest, add dry-run bulk triage ([2e7ccc5](https://github.com/tyroneross/build-loop/commit/2e7ccc569f6532ebdb9de07fa0880ece37eb4daf)) +* **hooks:** block worktree removal until ignored files are archived ([823d4e1](https://github.com/tyroneross/build-loop/commit/823d4e1a79cbca96a73b6c179a0813d24d85cab6)) +* **learn:** require compatibility disposition and local evidence links ([7012d9f](https://github.com/tyroneross/build-loop/commit/7012d9f8e8a7da75672a9502342e4f597afdb291)) +* **maintenance:** integrate guarded batch reconciliation skill ([8571d93](https://github.com/tyroneross/build-loop/commit/8571d93236eecc85c13387fdb1008d642c9ff471)) +* **plan:** measured effort estimates, dispatch waves and critical path in Phase 2 ([596002b](https://github.com/tyroneross/build-loop/commit/596002bdd5f01bb555ef4118ddced38088522cee)) +* **repo-maintenance:** resolve branches already on main without an owner card ([7e7b17c](https://github.com/tyroneross/build-loop/commit/7e7b17c1e525608fc70d4d1a772baf84148efa1f)) +* **security-scan:** N4 reads tool dispatch in Rust, Go, Swift, Kotlin, Java, C#, Ruby, PHP ([68f796f](https://github.com/tyroneross/build-loop/commit/68f796fbfbaa6fc74c59d57989fedcf36e23e747)) +* **task-queue:** look up open cards before filing; refuse unready intake ([678e7e6](https://github.com/tyroneross/build-loop/commit/678e7e675578dfbc88c28e842f89a562e6bf7502)) +* **unit-guard:** check units on facts/benchmark JSON and parse time output ([04afebf](https://github.com/tyroneross/build-loop/commit/04afebfdd1ed57495499e653d7efa8799bd65e2e)) +* **worktree:** sweep merged worktrees anywhere — patch, archive, then free ([cfc2bc4](https://github.com/tyroneross/build-loop/commit/cfc2bc4eb58d9b7ce9f1a8f4241066fcba752a20)) + + +### Bug Fixes + +* **artifacts:** keep architecture snapshots fresh across commits ([fcd1c1b](https://github.com/tyroneross/build-loop/commit/fcd1c1ba065fbfe7e51281ebf02c191ed8394f39)) +* **audit,security-scan:** withhold stale intent from audit packets; restore distant agent-loop evidence in N4 ([4ea9bd0](https://github.com/tyroneross/build-loop/commit/4ea9bd0c2b8474e90f2b57af365f47153f6bc2be)) +* **audit:** accept status strings in run trajectory metadata ([3feadbd](https://github.com/tyroneross/build-loop/commit/3feadbd97401f47dc0d7541c61c480729c81b675)) +* **build-loop:** automatically repair confirmed authorized findings ([d3dda1c](https://github.com/tyroneross/build-loop/commit/d3dda1c0c36844525b900acc2c06d4a3067c9f3b)) +* **cache-sync:** sync plugin caches only from main in the primary checkout ([33936bb](https://github.com/tyroneross/build-loop/commit/33936bb49b7c4574bc2c8d247a1b771f2b03ec9e)) +* **cache:** sync Claude plugins to their registered active installation ([45266af](https://github.com/tyroneross/build-loop/commit/45266afefedf5be6daddf6e78c44fc81488ab997)) +* **catalogs:** reverify provider lifecycle pricing and evidence ([131830b](https://github.com/tyroneross/build-loop/commit/131830b5d4be9f1481a093dbbf63c988ed170447)) +* **config:** validate runtime inputs and gate TypeScript changes ([c3b9de0](https://github.com/tyroneross/build-loop/commit/c3b9de0ba8fa8720173594c7c3dc1089ecc00a44)) +* **coordination:** distinguish fresh heartbeats from evidence progress ([6d1b927](https://github.com/tyroneross/build-loop/commit/6d1b927f435dc82a4913e3bd2615897bb8e9b118)) +* **credential_policy:** approve git clone from https://github.com over the gh helper ([aa23a05](https://github.com/tyroneross/build-loop/commit/aa23a05ea8b9aaebe74b7fbd9ef405f2f1ef3c88)) +* **credential_policy:** close the 7 Keychain paths from the 2026-10-25 review ([b223e3a](https://github.com/tyroneross/build-loop/commit/b223e3a21be7a47c4c27f7ee2d5954db208aa431)) +* **credential_policy:** match only real Keychain triggers and name them in refusals ([e7f447f](https://github.com/tyroneross/build-loop/commit/e7f447fdb794c65af75b9606769b6f6c6d6ebac3)) +* **credential-policy:** distinguish executable lookup from launch ([cbb0adf](https://github.com/tyroneross/build-loop/commit/cbb0adfc807e3af124611994629aa13b12e74622)) +* **evidence:** bind retrospectives and telemetry to exact run identities ([03746b3](https://github.com/tyroneross/build-loop/commit/03746b3044e50840d30b40994d3ca7b0f27fc586)) +* **groundwork:** accept Groundwork 0.5.0 write-boundary and exchange effect fields ([d45121b](https://github.com/tyroneross/build-loop/commit/d45121be68c46b3fb6dbea11d2bfd1862c5052de)) +* **hook-lint:** heredoc bodies and quoted-command arguments are not commands ([10237d0](https://github.com/tyroneross/build-loop/commit/10237d0521183e063ad22c3003776ee822b997b9)) +* **hooks:** add a fail-closed backstop and close round-2 review findings ([09ec8d2](https://github.com/tyroneross/build-loop/commit/09ec8d27e7a0c78e80d81596d82d8d1abc0e96ea)) +* **hooks:** bound complete lifecycle and preserve incomplete gate decisions ([7660f5f](https://github.com/tyroneross/build-loop/commit/7660f5f380c41cc720b491c0a7f3a9844cd478ff)) +* **hooks:** bound remaining SessionStart work before host deadlines ([3ad7696](https://github.com/tyroneross/build-loop/commit/3ad769614d2f19610500dbb022d61b4e2d2e1c8b)) +* **hooks:** bound startup maintenance and report Codex trust honestly ([97d8b8b](https://github.com/tyroneross/build-loop/commit/97d8b8b69d7c7184c6f7d87aa9fa4d9b75100c43)) +* **hooks:** close the 15 review findings in the worktree-removal guard ([e0f5b60](https://github.com/tyroneross/build-loop/commit/e0f5b605dbaba8f39397bd6ec3f178d3038731bc)) +* **hooks:** drain completed output and guard JSON runtime ([79c37df](https://github.com/tyroneross/build-loop/commit/79c37dff0c57a33c3e27ee208d937e3ed430c9d6)) +* **hooks:** emit Codex-valid PreToolUse and Stop output ([9e81c06](https://github.com/tyroneross/build-loop/commit/9e81c0624cdfad8b88cef9235ae939b51af194c2)) +* **hooks:** emit valid startup JSON within the host deadline ([815da4b](https://github.com/tyroneross/build-loop/commit/815da4ba6dd4172c388bcf23b5fee12a910f121f)) +* **hooks:** keep Rally and observational hooks inside Claude Code timeouts ([8524b29](https://github.com/tyroneross/build-loop/commit/8524b293038f61444ce3867e3924d305789632cc)) +* **hooks:** keep repository startup free of Git installation ([fadfdb3](https://github.com/tyroneross/build-loop/commit/fadfdb3d1e392ed261e484e69f565feee884d2c1)) +* **hooks:** keep the rest of a double-quoted substitution whole instead of parsing its boundaries ([2510b39](https://github.com/tyroneross/build-loop/commit/2510b393d460eec4ed8d6f3e07515050ce65ec88)) +* **hooks:** pre-edit architecture hook finds its freshness script in the plugin ([b5a11fd](https://github.com/tyroneross/build-loop/commit/b5a11fdedf06de22ba88ff9d52b674302904a614)) +* **hooks:** preserve explicit session when cache import fails ([dc4bdfe](https://github.com/tyroneross/build-loop/commit/dc4bdfea63eff3372c39f9f875bdc6363b47a2df)) +* **hooks:** preserve manual diagnosis and handle missing modules ([386bd7d](https://github.com/tyroneross/build-loop/commit/386bd7d5770595fcfb88028e6b236632f66518f7)) +* **hooks:** preserve native events and remove invalid Stop observers ([69d09f7](https://github.com/tyroneross/build-loop/commit/69d09f7c7356d76904b4630e265e60b6097aecf9)) +* **hooks:** preserve session identity on failure and protect literal quotes ([c223d56](https://github.com/tyroneross/build-loop/commit/c223d564c67563a6a856eacb5fe7a18d127379aa)) +* **hooks:** record Codex tool failures from PostToolUse ([271c938](https://github.com/tyroneross/build-loop/commit/271c93887599f6dd8f0784fcd01f62405ffd327f)) +* **hooks:** run plugin drift check without credential helpers ([4eea859](https://github.com/tyroneross/build-loop/commit/4eea859f30853ef3b4d1a4f5d4ac668fdb53e894)) +* **hooks:** separate startup maintenance and make lifecycle writes durable ([2c47e99](https://github.com/tyroneross/build-loop/commit/2c47e9978bb7afaf8408d1f5c3f66e39b30d77e3)) +* **hooks:** worktree guard counts quoted command substitutions and archives deinitialized submodules ([c61d542](https://github.com/tyroneross/build-loop/commit/c61d54250be2c27f750fff5822e47234afd6df19)) +* **identity:** reject conflicting history and undated discovery ([053a5ed](https://github.com/tyroneross/build-loop/commit/053a5ed3ba87c3bad1c1227be96f0b14701cc67e)) +* **ingestion:** guard source descriptors and preserve exact outcomes ([11db0d2](https://github.com/tyroneross/build-loop/commit/11db0d218423dcd8e4bbc00375ae07a40fa28bba)) +* **learn:** execute RossLabs LSP for applicable compatibility reviews ([10d7d7d](https://github.com/tyroneross/build-loop/commit/10d7d7d64d908b8de44e99531c32e1af889f3241)) +* **learning:** retain provisional source evidence and stable suppression ([64157ba](https://github.com/tyroneross/build-loop/commit/64157ba8ea665d5f3375b5d6e95a4779c1ac50b2)) +* **models:** address review — freshness test runs directly, Codex T2 uses 6.1 Sol, doc labels ([022a926](https://github.com/tyroneross/build-loop/commit/022a9266dc05861df7fb69db446e66a43b8bab4d)) +* **models:** route Codex Sol/Terra/Luna to gpt-6.1-sol, gpt-6.1-terra, gpt-6-luna ([30a37c0](https://github.com/tyroneross/build-loop/commit/30a37c0509d566eba663c19fae165f674202a591)) +* **optimize:** enforce evaluator scope and keep accounting ([21b77e8](https://github.com/tyroneross/build-loop/commit/21b77e8d3f8c8c29430635120c2cc62ed39c861a)) +* **orchestrator:** move the reassess-before-retry paragraph into iterate-protocol ([2986c0a](https://github.com/tyroneross/build-loop/commit/2986c0aa734497b36715cc43c7b8709b3e514800)) +* preserve Stop payloads and reject incomplete transcript formats ([d5cdd44](https://github.com/tyroneross/build-loop/commit/d5cdd44ae29fa619bcdf3c96e2d8eb1cae27ccb3)) +* **rally:** let RALLY_TOOL_ID name the native actor ([80a01ec](https://github.com/tyroneross/build-loop/commit/80a01ecdf9af858b8ea7240af56bf928bf664bd5)) +* **rally:** refuse to install git hooks into a tracked core.hooksPath dir ([3ed8fec](https://github.com/tyroneross/build-loop/commit/3ed8feced758c6c0c73d051a764f5753696a0934)) +* reassess related failures and preserve embedding provenance ([f4d113c](https://github.com/tyroneross/build-loop/commit/f4d113c872486f19fbfff2f6cff750ff4eb3f924)) +* **reliability:** repair full-suite root causes and outcome boundaries ([f196d0d](https://github.com/tyroneross/build-loop/commit/f196d0d026a50e8fcd0cd05474a4278919b28eff)) +* respect release ownership and complete direct test discovery ([87ed973](https://github.com/tyroneross/build-loop/commit/87ed97346d80fbbb82e2e6b9436753dc1b61d702)) +* retain usable transcript prose with explicit coverage gaps ([b292560](https://github.com/tyroneross/build-loop/commit/b292560bd4f2a8a0f8c8ff8191ec51ff9af99685)) +* **review:** keep unrepaired statuses blocking despite closed flags ([46b3bab](https://github.com/tyroneross/build-loop/commit/46b3bab3dcbdf17d344df0dafdc3477b1ab353ad)) +* **scan_findings:** match each tool_result to its own Agent call by id ([23111a2](https://github.com/tyroneross/build-loop/commit/23111a2d62255dc52bf871f1a1c3048098be363c)) +* **scan_findings:** stop filing tool output as review proposals ([d688e22](https://github.com/tyroneross/build-loop/commit/d688e22acab2e04492d8f2f8b1a399ea969c4af4)) +* **security-scan:** grade tool dispatch per site, and catch open MCP dispatch ([cb2f293](https://github.com/tyroneross/build-loop/commit/cb2f2938f5457f3eab2c907e98d99b95a533aaf2)) +* **storage:** bind guarded reads to verified file identities ([ff48312](https://github.com/tyroneross/build-loop/commit/ff48312a1b38f85a121544818127d13a13d32d39)) +* **storage:** isolate corrupt records and expose partial coverage ([a9a8fb2](https://github.com/tyroneross/build-loop/commit/a9a8fb20d8e3ce4a978854f1d0c680db67648751)) +* **storage:** publish validated trace revisions and bound log scans ([56fe9c4](https://github.com/tyroneross/build-loop/commit/56fe9c465ae3326723749677763a59e2b96b00d5)) +* **storage:** reject blocking sources and preserve trace contracts ([d04418f](https://github.com/tyroneross/build-loop/commit/d04418fb2a2214e3be9504b045a6f27ae2752590)) +* **storage:** scope canonical lookups independently of legacy faults ([69571d3](https://github.com/tyroneross/build-loop/commit/69571d38d2cc74d0b568561a4bdefcf39b7b9c32)) +* **task-queue:** address Codex review round 1 (13 findings) ([0ae24b6](https://github.com/tyroneross/build-loop/commit/0ae24b6fd2b118713a7abdf7b45d225dd91331db)) +* **task-queue:** address Codex review round 2 (10 findings) ([154d976](https://github.com/tyroneross/build-loop/commit/154d97686cc06dfe00898748243d2e2bb18e1f6c)) +* **task-queue:** address Codex review round 3 (7 findings) ([ba373fd](https://github.com/tyroneross/build-loop/commit/ba373fddee1fa91d78c1c32e5faaf3abbed43447)) +* **tasks:** share outcome validation and expose live ref inventory ([1508000](https://github.com/tyroneross/build-loop/commit/150800025decca2891ffb85fec6ee4457cf61b85)) +* **telemetry:** share bounded ingestion and preserve source attribution ([5e1d305](https://github.com/tyroneross/build-loop/commit/5e1d3058431ae479d1b9910cb8cf8513996f5239)) +* **transcripts:** preserve discovery failures in coverage receipts ([606f788](https://github.com/tyroneross/build-loop/commit/606f788fd606d4a15fa235768bb5a1e0c61a15f1)) +* **unit-guard:** check unit-keyed numeric strings as values; accept <name>_index ordinals ([a20f326](https://github.com/tyroneross/build-loop/commit/a20f3261b2222f6e944e4a4d4d1c198ee38ee792)) +* **unit-guard:** read stat suffixes and rates correctly, compare siblings only ([18c50df](https://github.com/tyroneross/build-loop/commit/18c50df51b3dcc39aed6453f22fed988d6725022)) +* **verification:** share full-suite coverage across local and CI gates ([ad35231](https://github.com/tyroneross/build-loop/commit/ad35231624b1c724bc3b407abaa2716aecddfca6)) +* **wake:** preserve requested and earlier deadline bounds ([de3f690](https://github.com/tyroneross/build-loop/commit/de3f690ba4a053b8486d701f32e31fc1544e203d)) +* **worktree_archive:** never treat tracked folders as caches; guard keeps named roots ([b23286d](https://github.com/tyroneross/build-loop/commit/b23286d6ead72e04ff847f0038b78d3911c88484)) +* **worktree_archive:** only named cache roots count inside nested checkouts ([09f6b29](https://github.com/tyroneross/build-loop/commit/09f6b2942bf350c09f5d8df9ea844d14d436ebc0)) +* **worktree_archive:** recognise CACHEDIR.TAG and Xcode derived data as cache roots ([810ca59](https://github.com/tyroneross/build-loop/commit/810ca597e7f492b7fa20bf8229a8ac91451f1b47)) +* **worktree-gc:** run the merged-worktree sweep detached with a 30 s budget ([14b275c](https://github.com/tyroneross/build-loop/commit/14b275ce2a8f2c225bd2c50eb1dd122a76b36b55)) +* **worktree:** treat a missing archive receipt as a refusal ([024ee27](https://github.com/tyroneross/build-loop/commit/024ee2714bc672deafeacac1f7a2504d9a9f5392)) + + +### Performance Improvements + +* **ingestion:** stream canonical transcript events with revision-safe caching ([df7392d](https://github.com/tyroneross/build-loop/commit/df7392dc84be92d58b9ad7037b62e36ca9ae81ce)) +* **rally:** cut pre-edit hook latency by deduping git lookups and lazy imports ([ccf8b34](https://github.com/tyroneross/build-loop/commit/ccf8b3461e120ab3dcd9c9aeb5d9668394c7d1e4)) +* **rally:** keep the per-tool hook off the rally CLI (1,550 ms -> 180 ms) ([ecc9068](https://github.com/tyroneross/build-loop/commit/ecc9068c342a5fa6d0383d1686485c0f04b37314)) + ## [0.47.0](https://github.com/tyroneross/build-loop/compare/build-loop-v0.46.0...build-loop-v0.47.0) (2026-09-27) diff --git a/README.md b/README.md index d9632166..c4c97815 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ Use npm only for an exact pin or a host without plugin marketplace support: ```bash -npm install -g @tyroneross/build-loop@0.47.0 +npm install -g @tyroneross/build-loop@0.48.0 build-loop-install --host all ``` diff --git a/package-lock.json b/package-lock.json index 37219ff5..15cf9f36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@tyroneross/build-loop", - "version": "0.47.0", + "version": "0.48.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@tyroneross/build-loop", - "version": "0.47.0", + "version": "0.48.0", "license": "Apache-2.0", "os": [ "darwin", diff --git a/package.json b/package.json index 1199f4d5..4d0fbbee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@tyroneross/build-loop", - "version": "0.47.0", + "version": "0.48.0", "publishConfig": { "registry": "https://npm.pkg.github.com", "access": "public"