Skip to content

feat(sdk): remove deprecated TS implementation; add napi-rs SDK (@pleaseai/csp-sdk)#56

Merged
amondnet merged 6 commits into
mainfrom
feat/napi-sdk
Jun 23, 2026
Merged

feat(sdk): remove deprecated TS implementation; add napi-rs SDK (@pleaseai/csp-sdk)#56
amondnet merged 6 commits into
mainfrom
feat/napi-sdk

Conversation

@amondnet

@amondnet amondnet commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Two related changes shipped together:

  1. Remove deprecated TypeScript implementation under src/ (57 files) and its dedicated build (tsdown.config.ts) and runtime deps. The Rust port (crates/csp + crates/csp-cli) is the only implementation going forward; upstream Python (MinishLab/semble) is the parity oracle. Node/Bun toolchain is retained for repo JS tooling (lint/typecheck of npm/) and the release-please version anchor.

  2. Add napi-rs native SDK as a separate distribution channel: new crate crates/csp-node with #[napi] bindings over crates/csp, shipped as the @pleaseai/csp-sdk npm package. Distinct from the npm/ CLI/MCP launcher (which execs the standalone binary and preserves the no-runtime Homebrew story).

Changes

  • Remove src/ TypeScript implementation (57 files), tsdown.config.ts, and associated runtime deps
  • Add crates/csp-node crate with #[napi] bindings exposing CspIndex over crates/csp
  • Public surface mirrors the README library contract: CspIndex (fromPath/fromGit/loadFromDisk as async Promise<CspIndex> on the libuv worker pool; search/findRelated/save/stats sync) over camelCase Chunk/SearchResult/IndexStats
  • Add release-sdk.yml — 6-target napi cross-compile matrix + npm Trusted Publishing (OIDC), wired into release-please.yml; all actions SHA-pinned
  • Update bilingual README library section to document @pleaseai/csp-sdk
  • Update CLAUDE.md to reflect Rust-only implementation and SDK packaging decision

Test Plan

  • cargo fmt --check — passes
  • cargo clippy --workspace -D warnings — passes
  • cargo test --workspace — 257 (csp) + 8 (csp-cli) pass, csp-node links
  • Both workflow YAMLs parse

Note / not locally verifiable: the actual napi build cross-compile + npm publish run only in CI; npm publish additionally requires trusted-publisher config for @pleaseai/csp-sdk and its 6 platform packages.


Summary by cubic

Removed the deprecated TypeScript code and made the Rust core the only implementation. Added a native Node SDK via napi-rs (@pleaseai/csp-sdk) with a release pipeline that builds and publishes prebuilt addons (hardened checkout).

  • New Features

    • Added crates/csp-node with #[napi] bindings exposing CspIndex (async fromPath/fromGit/loadFromDisk; sync search/findRelated/save/stats).
    • Introduced release-sdk.yml and triggered it from release-please.yml (OIDC Trusted Publishing) to cross-compile and publish @pleaseai/csp-sdk.
    • Updated docs (EN/KR) to explain @pleaseai/csp (CLI) vs @pleaseai/csp-sdk (in-process SDK).
  • Refactors

    • Deleted the src/ TypeScript implementation, tests, and tsdown.config.ts; package.json now only holds repo tooling.
    • Wrapped the SDK’s CspIndex core in Arc for cheap sharing; removed Bun coverage/Codecov from CI.
    • Wired versioning for crates/csp-node/package.json in release-please-config.json; hardened SDK CI checkout (persist-credentials: false).

Written for commit 2ff840a. Summary will update on new commits.

Summary by CodeRabbit

  • New Features
    • Added the JavaScript/TypeScript SDK (@pleaseai/csp-sdk) for in-process index building and searching using native Rust bindings (including cross-platform native addon distribution).
  • Documentation
    • Updated README (and Korean README) with clearer guidance for @pleaseai/csp (CLI/MCP) vs @pleaseai/csp-sdk (in-process SDK), plus a new SDK usage guide.
  • Chores
    • Updated release automation to build and publish the SDK/native addons.
    • CI no longer runs/upload coverage in the test job.
    • Transitioned to a Rust-first implementation and removed the prior TypeScript/agent docs from this package surface.

amondnet added 3 commits June 23, 2026 20:16
The Rust port (crates/csp + crates/csp-cli) is the only implementation;
the upstream Python (MinishLab/semble) is the parity oracle. The TS src/
was deprecated and is no longer the source of truth, so remove it along
with its dedicated build (tsdown.config.ts) and runtime deps.

Keep the Node/Bun toolchain as repo JS tooling (lint/typecheck of npm/)
and the release-please version anchor, and as scaffolding for the planned
napi-rs native-binding SDK.

- delete src/ (impl + tests; src/agents duplicated crates/csp-cli/agents)
- delete tsdown.config.ts; drop tsdown + TS runtime deps from package.json
- package.json: remove dist build scripts/exports/bin; keep lint/typecheck
- tsconfig: drop src/** and tsdown.config.ts from include
- release-please-config: drop deleted src/version.ts extra-file (node anchor kept)
- ci.yml: drop bun test/codecov steps (Rust tests run in rust.yml)
- CLAUDE.md: reframe to Rust-only impl + record SDK packaging decision (A)
Add the in-process JS SDK distribution channel (decision A): a napi-rs
native addon over crates/csp, shipped as @pleaseai/csp-sdk. Kept separate
from the npm/ CLI/MCP launcher (which execs the standalone binary and
preserves the no-runtime Homebrew story); both share the one crates/csp core.

Public surface mirrors the README library contract — a CspIndex class
(fromPath / fromGit / loadFromDisk / search / findRelated / save / stats)
over camelCase Chunk / SearchResult / IndexStats. napi-rs maps Rust
snake_case to JS camelCase.

- crates/csp-node: Cargo.toml (cdylib+lib), build.rs (napi_build), src/lib.rs (#[napi] bindings)
- @pleaseai/csp-sdk package.json (@napi-rs/cli v2), committed index.d.ts type surface, README, .gitignore
- workspace: add member + napi/napi-derive/napi-build deps
- release-please: sync crates/csp-node/package.json $.version
- CLAUDE.md: record the crate + scaffolding status

Verified: cargo fmt --check, clippy --workspace -D warnings, and
test --workspace (csp 257 + csp-cli 8 pass, csp-node links) all green.
Follow-ups (async factories, napi CI matrix, README cross-link) tracked
in crates/csp-node/README.md.
Complete the three csp-node follow-ups.

1. Async factories — fromPath / fromGit / loadFromDisk now run on the libuv
   worker pool via napi AsyncTask and resolve Promise<CspIndex>, so indexing /
   clone / disk read no longer block the Node event loop (no tokio needed).
   search / findRelated / save / stats stay sync (fast and/or borrow &self).
   index.d.ts updated to Promise<CspIndex>.

2. Release CI — add release-sdk.yml: a 6-target napi cross-compile matrix
   (darwin arm64/x64, linux x64/arm64-gnu + x64-musl via zig, win32 x64) plus
   a publish job using npm Trusted Publishing (OIDC, provenance). Wired into
   release-please.yml as build-and-publish-sdk on release_created. All actions
   SHA-pinned. Publish is credential-gated (needs npm trusted-publisher config).

3. README cross-link — document @pleaseai/csp-sdk in the Library usage section
   of README.md / README.ko.md (bilingual, in sync), and clarify the two npm
   packages: @pleaseai/csp (CLI/MCP launcher) vs @pleaseai/csp-sdk (in-process
   SDK).

Verified: cargo fmt --check, clippy --workspace -D warnings, test --workspace
(csp 257 + csp-cli 8 pass, csp-node links), and both workflow YAMLs parse.
@socket-security

socket-security Bot commented Jun 23, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedcargo/​napi@​2.16.1710010093100100
Addedcargo/​napi-build@​2.3.29810093100100
Addedcargo/​napi-derive@​2.16.139810093100100

View full report

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

🟢 Metrics 22 complexity · 5 duplication

Metric Results
Complexity 22
Duplication 5

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request completes the transition of the codebase from TypeScript to Rust by removing the deprecated TypeScript implementation and introducing crates/csp-node, which provides napi-rs native Node bindings for the core search engine. Feedback on the changes highlights a potential performance risk where the synchronous execution of CspIndex::search and CspIndex::find_related could block the Node.js event loop during CPU-intensive operations. To address this, it is recommended to wrap the inner CoreIndex in std::sync::Arc across the napi tasks, facilitating a smoother transition to asynchronous execution in the future.

Comment thread crates/csp-node/src/lib.rs
Comment thread crates/csp-node/src/lib.rs
Comment thread crates/csp-node/src/lib.rs
Comment thread crates/csp-node/src/lib.rs
@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR removes the entire TypeScript runtime implementation under src/ (indexing, search, ranking, CLI, MCP server, stats, chunking, types, and all corresponding tests) and replaces it with a new crates/csp-node napi-rs crate that exposes the Rust csp core as an in-process Node.js addon (@pleaseai/csp-sdk). A new cross-platform CI workflow builds and publishes the native addon packages, and docs are updated accordingly.

Changes

Rust-only SDK migration

Layer / File(s) Summary
TypeScript runtime surface and CI coverage removal
package.json, tsconfig.json, .github/workflows/ci.yml, src/languages.test.ts
Root package.json is stripped to lint-only scripts with distribution entrypoints removed; tsconfig.json is narrowed to eslint.config.ts only; CI no longer runs coverage or uploads to Codecov; remaining TS test files are deleted.
Cargo workspace and napi dependency wiring
Cargo.toml
crates/csp-node is added to the workspace members; napi, napi-derive, and napi-build are added to workspace dependencies with comments describing the separate distribution channel.
New crate structure and build configuration
crates/csp-node/Cargo.toml, crates/csp-node/build.rs, crates/csp-node/.gitignore
The new crate manifest configures cdylib+rlib output types and declares dependencies on csp, napi, and napi-derive; build.rs calls napi_build::setup(); generated native artifacts are gitignored.
TypeScript type declarations and npm package manifest
crates/csp-node/index.d.ts, crates/csp-node/package.json
The committed index.d.ts declares the full JS API: ContentType, LoadOptions, QueryOptions, Chunk, SearchResult, IndexStats, and the CspIndex class with async constructors and synchronous query/persistence methods. The package.json for @pleaseai/csp-sdk defines version 0.1.4, napi target matrix, entry points, and per-platform optionalDependencies.
N-API binding implementation
crates/csp-node/src/lib.rs
Implements all napi-rs bindings: exported enums and #[napi(object)] structs for JS-facing types; CspIndex class wrapping the Rust core with async napi::Task structs (BuildFromPath, BuildFromGit, LoadFromDisk) dispatched on the libuv worker pool; synchronous search, findRelated, stats, save; and private conversion helpers (including location field derivation on output).
SDK cross-platform build and npm publish workflow
.github/workflows/release-sdk.yml, .github/workflows/release-please.yml, release-please-config.json
release-sdk.yml adds a matrix build job across macOS, Ubuntu glibc/musl (with Zig cross-compilation via minisign-verified toolchain), and Windows, plus a conditional OIDC-based npm Trusted Publishing job. release-please.yml gains a build-and-publish-sdk job calling this workflow on each release. release-please-config.json tracks crates/csp-node/package.json version instead of src/version.ts.
Contributor and user-facing documentation
CLAUDE.md, README.md, README.ko.md, crates/csp-node/README.md
CLAUDE.md is rewritten for a Rust-only stack with Cargo commands and Python upstream parity model. READMEs expand "Library usage" to document both the Rust crate and @pleaseai/csp-sdk with TypeScript examples and package distinction. crates/csp-node/README.md is added for SDK API usage, local dev build steps, and release process.
Development tools configuration
.claude/settings.json
IDE plugins are updated to enable rust-analyzer-lsp@code-intelligence and plannotator@passionfactory to support Rust development.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related issues

  • track: rust-rewrite-20260618 #33: This PR directly implements the Rust rewrite Distribution phase (Phase 7) described in that issue, adding the crates/csp-node napi-rs SDK binding and removing the TypeScript src/ runtime.

Possibly related PRs

  • pleaseai/code-search#34: The new crates/csp-node binding wraps the core csp::indexing::CspIndex and related types from the Rust rewrite.
  • pleaseai/code-search#42: Both PRs modify the GitHub release pipeline to add reusable Rust build and npm OIDC Trusted Publishing jobs.
  • pleaseai/code-search#54: Both PRs modify the README "Library usage" documentation to clarify Rust crate naming and add SDK usage examples.

Poem

🐇 Hoppin' through the diff so wide,
The TypeScript src/ is set aside!
A Rust crate rises, .node in hand,
Built for every OS across the land.
With OIDC tokens and a Zig-cross-compile dream,
@pleaseai/csp-sdk joins the team! 🦀

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the PR's main changes: removal of deprecated TS implementation and addition of napi-rs SDK, clearly communicating the primary architectural shift.
Docstring Coverage ✅ Passed Docstring coverage is 80.95% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/napi-sdk

Comment @coderabbitai help to get the list of available commands.

@amondnet amondnet self-assigned this Jun 23, 2026
CI 'test' job (eslint) flagged three auto-fixable issues:
- release-sdk.yml: unquote a plain-scalar description (yaml/plain-scalar)
- README.md / README.ko.md: sort named imports (ContentType before CspIndex)
@sonarqubecloud

Copy link
Copy Markdown

gemini-code-assist suggestion: hold the core index behind std::sync::Arc so
a future async search / find_related can hand a cheap shared handle to a
libuv worker thread instead of cloning the whole index. Arc derefs
transparently, so the sync method bodies are unchanged.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
crates/csp-node/README.md (1)

55-60: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Align release-process docs with the actual workflow implementation.

Lines 55-60 say CI publishes via napi prepublish -t npm, but .github/workflows/release-sdk.yml currently performs create-npm-dirs + artifacts + direct npm publish. The README should match the real release path.

📝 Suggested text update
-Cross-compilation targets mirror the binary release (`release-rust.yml`): darwin arm64/x64, linux x64/arm64-gnu + x64-musl, win32 x64. Publishing follows the standard napi-rs flow (build per-target on CI → `napi artifacts` → `napi prepublish -t npm`), with the version kept in lockstep by release-please (`crates/csp-node/package.json#version` is an `extra-files` entry).
+Cross-compilation targets mirror the binary release (`release-rust.yml`): darwin arm64/x64, linux x64/arm64-gnu + x64-musl, win32 x64. Publishing in CI assembles platform dirs with `napi create-npm-dirs` + `napi artifacts`, then publishes per-platform packages and the wrapper via npm Trusted Publishing; versioning stays in lockstep via release-please (`crates/csp-node/package.json#version` in `extra-files`).
@@
-Cross-compilation + publish runs in [`release-sdk.yml`](../../.github/workflows/release-sdk.yml): a per-target build matrix produces `csp-sdk.<triple>.node` artifacts, then a publish job runs `napi prepublish -t npm` to push the wrapper + per-platform packages via npm Trusted Publishing (OIDC). It triggers on the `@pleaseai/csp-sdk` release tag (or manual dispatch); the version stays in lockstep via release-please (`extra-files`).
+Cross-compilation + publish runs in [`release-sdk.yml`](../../.github/workflows/release-sdk.yml): a per-target build matrix produces `csp-sdk.<triple>.node` artifacts, then a publish job assembles npm package dirs and runs `npm publish` for platform packages + wrapper via npm Trusted Publishing (OIDC). It runs manually or as a reusable workflow called by `release-please.yml`; versioning stays in lockstep via release-please (`extra-files`).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/csp-node/README.md` around lines 55 - 60, The README documentation in
the "CI / release" section incorrectly describes the publishing process. It
states that the CI performs `napi prepublish -t npm` to publish packages, but
the actual implementation in `.github/workflows/release-sdk.yml` uses a
different sequence: `create-npm-dirs`, `artifacts`, and direct `npm publish`.
Update the documentation in this section to accurately reflect the real release
workflow steps and match what is actually implemented in the GitHub Actions
workflow.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release-sdk.yml:
- Around line 60-62: The checkout action in the release-sdk workflow is using
the default persisted token unnecessarily since this job does not perform any
git pushes. Disable credential persistence by adding the persist-credentials
option set to false in the actions/checkout action. Match the same pattern
already implemented in the publish job which includes this security hardening
practice. This reduces the risk of credential exposure by not persisting the
GitHub token when it is not needed.

In `@CLAUDE.md`:
- Around line 9-12: The documentation in CLAUDE.md lines 9-12 describing the
napi-rs SDK still uses future tense ("planned", "scaffolded", "remaining
follow-ups") even though this PR introduces the shipped crates/csp-node
implementation and SDK release automation. Update the wording in the paragraph
describing the napi-rs SDK and its distribution to reflect present/past tense,
conveying that crates/csp-node is now shipped as `@pleaseai/csp-sdk`, that SDK
bindings and build infrastructure are in place, and that only specific remaining
enhancements (async factories, CI matrix) remain as follow-ups tracked
separately.

---

Outside diff comments:
In `@crates/csp-node/README.md`:
- Around line 55-60: The README documentation in the "CI / release" section
incorrectly describes the publishing process. It states that the CI performs
`napi prepublish -t npm` to publish packages, but the actual implementation in
`.github/workflows/release-sdk.yml` uses a different sequence:
`create-npm-dirs`, `artifacts`, and direct `npm publish`. Update the
documentation in this section to accurately reflect the real release workflow
steps and match what is actually implemented in the GitHub Actions workflow.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 15f36ad4-780e-4ee0-8f5a-9a9ae1385d50

📥 Commits

Reviewing files that changed from the base of the PR and between efff12b and ed76925.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (75)
  • .github/workflows/ci.yml
  • .github/workflows/release-please.yml
  • .github/workflows/release-sdk.yml
  • CLAUDE.md
  • Cargo.toml
  • README.ko.md
  • README.md
  • crates/csp-node/.gitignore
  • crates/csp-node/Cargo.toml
  • crates/csp-node/README.md
  • crates/csp-node/build.rs
  • crates/csp-node/index.d.ts
  • crates/csp-node/package.json
  • crates/csp-node/src/lib.rs
  • package.json
  • release-please-config.json
  • src/agents/antigravity.md
  • src/agents/claude.md
  • src/agents/commandcode.md
  • src/agents/copilot.md
  • src/agents/cursor.md
  • src/agents/gemini.md
  • src/agents/kiro.md
  • src/agents/opencode.md
  • src/agents/pi.md
  • src/agents/reasonix.md
  • src/chunking/.gitkeep
  • src/chunking/chunk-source.test.ts
  • src/chunking/chunk-source.ts
  • src/chunking/core.test.ts
  • src/chunking/core.ts
  • src/cli.test.ts
  • src/cli.ts
  • src/index.test.ts
  • src/index.ts
  • src/indexing/.gitkeep
  • src/indexing/cache.test.ts
  • src/indexing/cache.ts
  • src/indexing/create.test.ts
  • src/indexing/create.ts
  • src/indexing/dense.test.ts
  • src/indexing/dense.ts
  • src/indexing/file-walker.test.ts
  • src/indexing/file-walker.ts
  • src/indexing/index.test.ts
  • src/indexing/index.ts
  • src/indexing/sparse.test.ts
  • src/indexing/sparse.ts
  • src/indexing/types.test.ts
  • src/indexing/types.ts
  • src/languages.test.ts
  • src/languages.ts
  • src/mcp/.gitkeep
  • src/mcp/server.test.ts
  • src/mcp/server.ts
  • src/ranking/.gitkeep
  • src/ranking/boosting.test.ts
  • src/ranking/boosting.ts
  • src/ranking/penalties.test.ts
  • src/ranking/penalties.ts
  • src/ranking/weighting.test.ts
  • src/ranking/weighting.ts
  • src/search.test.ts
  • src/search.ts
  • src/stats.test.ts
  • src/stats.ts
  • src/tokens.test.ts
  • src/tokens.ts
  • src/types.test.ts
  • src/types.ts
  • src/utils.test.ts
  • src/utils.ts
  • src/version.ts
  • tsconfig.json
  • tsdown.config.ts
💤 Files with no reviewable changes (55)
  • src/utils.ts
  • src/tokens.test.ts
  • tsdown.config.ts
  • src/agents/copilot.md
  • src/indexing/file-walker.test.ts
  • src/chunking/core.ts
  • src/agents/antigravity.md
  • src/search.test.ts
  • src/languages.ts
  • src/indexing/types.test.ts
  • src/indexing/sparse.test.ts
  • src/ranking/weighting.test.ts
  • src/indexing/create.ts
  • src/stats.test.ts
  • src/chunking/chunk-source.test.ts
  • src/agents/opencode.md
  • src/indexing/file-walker.ts
  • src/indexing/dense.test.ts
  • src/agents/kiro.md
  • src/index.test.ts
  • src/ranking/weighting.ts
  • src/utils.test.ts
  • src/agents/pi.md
  • src/indexing/types.ts
  • src/mcp/server.test.ts
  • src/chunking/core.test.ts
  • src/indexing/sparse.ts
  • src/indexing/cache.test.ts
  • src/agents/reasonix.md
  • src/indexing/create.test.ts
  • src/types.test.ts
  • src/search.ts
  • src/version.ts
  • src/cli.ts
  • src/agents/cursor.md
  • src/index.ts
  • src/indexing/index.ts
  • src/chunking/chunk-source.ts
  • src/agents/gemini.md
  • src/cli.test.ts
  • src/tokens.ts
  • src/agents/commandcode.md
  • src/ranking/penalties.test.ts
  • src/ranking/penalties.ts
  • src/stats.ts
  • src/types.ts
  • src/indexing/dense.ts
  • src/ranking/boosting.test.ts
  • src/ranking/boosting.ts
  • src/languages.test.ts
  • src/mcp/server.ts
  • src/agents/claude.md
  • .github/workflows/ci.yml
  • src/indexing/index.test.ts
  • src/indexing/cache.ts

Comment thread .github/workflows/release-sdk.yml
Comment thread CLAUDE.md Outdated
…UDE.md

- release-sdk.yml: set persist-credentials: false on the build job checkout
  (build-only, never pushes; matches the publish job) — zizmor artipacked
- CLAUDE.md: update SDK wording from planned/scaffolded to shipped state
  (async factories, Arc-wrapped inner, release-sdk.yml CI all in place; only
  the npm trusted-publisher config remains)
@amondnet amondnet merged commit 1caa29d into main Jun 23, 2026
8 checks passed
@amondnet amondnet deleted the feat/napi-sdk branch June 23, 2026 12:31
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.

1 participant