Skip to content

Feature: sdk-outpost - a new chain-neutral typescript facade over producer-owned artifacts - #56

Merged
jglanz merged 52 commits into
masterfrom
feature/sdk-outpost
Aug 28, 2026
Merged

Feature: sdk-outpost - a new chain-neutral typescript facade over producer-owned artifacts#56
jglanz merged 52 commits into
masterfrom
feature/sdk-outpost

Conversation

@joshglogau

@joshglogau joshglogau commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds @wireio/sdk-outpost as the chain-neutral TypeScript facade over producer-owned Ethereum and Solana libraries.

  • validates caller-supplied immutable deployment profiles before creating a client
  • exposes typed reserve lifecycle, reserve-swap, and optional Ethereum BAR node-owner workflows
  • uses ethers v6 and the producer-owned Anchor type throughout
  • selects an exact paired ETH/SOL artifact suite through an internal compile-time registry
  • verifies Ethereum proxy implementations/runtime code and Solana ProgramData/program binaries against that suite

Producer packages

The package pins the real public producer releases:

Producer repositories own package assembly and publication from checksummed deployment handoffs. SDK Outpost imports their generated factories, IDL, types, manifests, and runtime inputs directly; it does not download handoffs, regenerate producer code, or carry generated contract/program assets.

Design boundaries

  • OutpostClient.create(...) remains the single public construction facade and delegates chain selection to the existing internal factory.
  • The artifact-suite registry is internal and keyed only by deployment-profile ABI/IDL identity; it is not an endpoint, environment, or runtime package registry.
  • Providers and deployment profiles remain caller-owned. A same-code deployment respin requires a new profile, not a producer or SDK release.
  • Wire-chain identity and sysio.* orchestration continue to use @wireio/sdk-core.
  • BAR remains optional and fails closed only for node-owner access; reserve and swap behavior is unchanged when BAR is absent.
  • No custom root build/test hook, workflow change, consumer generator, or consumer package verifier is included.
  • For local wire-platform development, the existing root .pnpmfile.cjs links available sibling Ethereum and Solana artifact outputs through the same existence-based flow as OPP; absent outputs resolve the exact npm versions.

Review feedback addressed

All prior review threads are resolved: producer assets moved to producer packages, consumer generate/verify scripts were removed, repository workflows were restored, release documentation lives at the repository root, the public client uses the requested factory boundary, and platform-local artifact linking follows the existing OPP pattern.

Verification

  • SDK Outpost: 12 suites / 65 tests
  • full repository CI-equivalent run: 88 suites / 952 tests
  • repository lint and sdk-core strict-null typecheck pass
  • hybrid CJS/ESM build and npm payload dry-run pass
  • tests read installed 0.3.0 package payloads, verify runtime/IDL/program checksums and required BAR/ERC-1155/swap exports, and reject unregistered or mixed artifact suites
  • live read-only client creation passed against the current sandbox deployment profile for both Ethereum and Solana

After merge and platform approval, the normal repository prepare/tag release workflow can publish the first SDK Outpost version. Staking remains separate follow-up work.

@joshglogau joshglogau changed the title Add a strictly typed, versioned outpost SDK for Ethereum and Solana deployments sdk-outpost: New strictly typed, versioned SDK for Ethereum and Solana deployments, next gen of sdk-stake Aug 3, 2026
@joshglogau joshglogau changed the title sdk-outpost: New strictly typed, versioned SDK for Ethereum and Solana deployments, next gen of sdk-stake Add @wireio/sdk-outpost with typed chain deployments and release automation Aug 3, 2026
@joshglogau
joshglogau marked this pull request as ready for review August 4, 2026 17:10
@joshglogau
joshglogau requested a review from jglanz August 4, 2026 17:11

@jglanz jglanz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This NEEDS to be refactored, the generated assets should not be tracked here, instead they should be published artifacts from wire-{ethereum,solana}.

Scripts need to be refactored with zx and moved to the correct repos and under a folder layout beneath scripts/

Comment thread packages/sdk-outpost/scripts/deployment-utils.mjs Outdated
Comment thread packages/sdk-outpost/scripts/generate-solana-types.mjs Outdated
Comment thread packages/sdk-outpost/scripts/import-deployment.mjs Outdated
@joshglogau joshglogau changed the title Add @wireio/sdk-outpost with typed chain deployments and release automation Add verified sdk-outpost clients generated from source-owned chain artifacts Aug 4, 2026
@joshglogau
joshglogau marked this pull request as draft August 4, 2026 18:49
@joshglogau

Copy link
Copy Markdown
Contributor Author

Waiting for Wire-Network/wire-ethereum#176 & Wire-Network/wire-solana#414 before CI built test will pass to be ready for merge

@joshglogau joshglogau changed the title Add verified sdk-outpost clients generated from source-owned chain artifacts Add deployment-profiled, runtime-verified outpost clients Aug 5, 2026
@joshglogau

joshglogau commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Status: SDK implementation and local verification are complete; this PR remains draft. CI is waiting for wire-ethereum#176 and wire-solana#414 to publish their artifact packages, then the frozen lockfile can be refreshed.

Architecture: one generic SDK facade consumes the source-owned ETH/SOL artifacts plus an immutable deployment profile. Client creation verifies the Wire chain ID, Ethereum EIP-1967 implementation/code hashes, and Solana genesis/ProgramData hashes before returning a client. Mutable RPC/explorer endpoints remain in a separate catalog.

Consumer: wire-tools-ts#53

@joshglogau joshglogau changed the title Add deployment-profiled, runtime-verified outpost clients Add verified Ethereum and Solana outpost SDK Aug 18, 2026

@jglanz jglanz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • pnpmfile.cjs - REVERT -this is the exact thing that caused a MEGA issue!
if (process.env.WIRE_USE_LOCAL_OPP_MODELS === LOCAL_OPP_MODELS_ENABLED) {
  appendLocalOppModelOverrides()
}
  • should generate.mjs still be in this repo (and verify)?

  • RELEASING.md seems like it should belong in the repo root

  • (this one I can accept knowing it can be improved) The OutpostClient shouldn't know about ethereum or solana and should rely instead on a factory pattern

@jglanz jglanz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There are substantive issues, some pre-existing

Comment thread .github/workflows/ci.yaml Outdated
Comment thread .github/workflows/ci.yaml Outdated
Comment thread .github/workflows/prepare-release.yaml Outdated
Comment thread .github/workflows/tag-release.yaml Outdated
Comment thread etc/tsconfig/tsconfig.base.json Outdated
Comment thread packages/sdk-core/package.json Outdated
Comment thread packages/sdk-core/package.json Outdated
Comment thread packages/sdk-core/README.md Outdated
Comment thread pnpm-workspace.yaml
@joshglogau
joshglogau requested a review from jglanz August 19, 2026 13:54

@jglanz jglanz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit-pics aside from the generate.mjs and verify-package.mjs being in the wrong repos; having them in wire-libraries-ts is the same as having a verify script for lodash. They are published packages, verification should have happened already

Comment thread packages/sdk-core/src/contracts/sysio/reserv/Client.ts Outdated
Comment thread pnpm-workspace.yaml
@joshglogau joshglogau changed the title Add verified Ethereum and Solana outpost SDK Add producer-backed outpost SDK with ethers v6 Aug 19, 2026
@joshglogau
joshglogau marked this pull request as draft August 19, 2026 15:35
@joshglogau

Copy link
Copy Markdown
Contributor Author

Generate and verify originally converted raw producer artifacts in this consumer; both scripts are removed, and the producer packages now publish the directly consumable TypeScript libraries.

@joshglogau
joshglogau marked this pull request as ready for review August 27, 2026 18:34
@joshglogau
joshglogau requested a review from jglanz August 27, 2026 18:35
@joshglogau joshglogau changed the title Add producer-backed outpost SDK with ethers v6 Feature: sdk-outpost - a new chain-neutral typescript facade over producer-owned artifacts Aug 27, 2026

@jglanz jglanz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's missing the .pnpmfile.cjs local linking which is required for version alignment from wire-platform.

@jglanz jglanz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Approved, but @joshglogau be sure to look at the cleanup commit I added; I did it for you for the sake of time, but duping code for the sake of it is not ok.

@jglanz
jglanz merged commit ed157aa into master Aug 28, 2026
1 check passed
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