Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,35 @@ jobs:
echo "::endgroup::"
done

# The object-model SDKs peer on `@mysten/sui ^2.29.0` but are developed
# against the exact 2.29.0 pin. Run their typecheck and tests against the
# pin and the next release inside the range, so a widened peer is proven,
# not assumed. The lockfile is deliberately not frozen here: the script
# rewrites the dev pins first.
sui-matrix:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
sui: ["2.29.0", "2.30.0"]
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.4.0
- name: Pin @mysten/sui ${{ matrix.sui }}
run: bun scripts/use-sui-version.ts ${{ matrix.sui }}
- name: Install dependencies
run: bun install
- name: Typecheck and test partyos, musicos, platform
env:
MISO_SUI_VERSION: ${{ matrix.sui }}
run: |
for pkg in partyos musicos platform; do
bun run --filter "@misofm/$pkg" typecheck
bun run --filter "@misofm/$pkg" test
done

# Packs every workspace package into a real tarball and installs them into
# an isolated fixture consumer, then typechecks and runs it. Inside the
# workspace every import resolves locally regardless of a package's
Expand Down
10 changes: 7 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,14 @@ opinion Miso's product adds on top — including every `party_*` extension — i

## Effect conventions

- Effect v4 release candidate, pinned exactly (see any package's `peerDependencies`). Read
- Stable Effect v4 (`>=4.0.3 <4.1`; see any package's `peerDependencies`). Move `effect` and every
`@effect/*` package together. `@misofm/effect` is the exception: deprecated and frozen on
`4.0.0-rc.112`, outside the release train. Read
`node_modules/effect/AGENTS.md` and `ai-docs/` before writing Effect code; v4 is not v3.
- I/O returns `Effect` with `SuiClient` (from `@misofm/effect`) in the requirements; client
extension classes provide the layer internally. PTB builders stay synchronous.
- I/O returns `Effect` with `Sui` (from `@unconfirmed/sui-effect`; `Miso` also needs
`SuiGraphQL`) in the requirements; each service ships `layer`/`layerConfig`/`layerTest`, and
the derived Promise registrations (`musicos()`, `partyos()`, `miso()`) provide that service
themselves. PTB builders stay synchronous.
- Failures are `Schema.TaggedError` classes in each package's `src/errors.ts` (`./errors`
subpath); never throw strings or plain `Error` from public reads.
- Domain types are `Schema.Class`; generated BCS shapes under `src/contracts/` never appear
Expand Down
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,14 @@ see its `packages` list rather than looking for an enumeration here.
## Effect

Every SDK exposes [Effect](https://effect.website) v4 in its public API: reads and
submissions return `Effect` values that require the `SuiClient` service from
`@misofm/effect` and fail with tagged errors (`Effect.catchTag`); the client
extensions (`miso()`, `partyos()`, `misoPlatform()`) provide that service
themselves so their methods have no requirements; PTB builders stay synchronous.
Each package's `./errors` subpath lists its failures. Pin `effect` to the exact
release candidate the packages peer on.
submissions return `Effect` values that require the `Sui` service from
[`@unconfirmed/sui-effect`](https://github.com/unconfirmedlabs/sui-effect) (`Miso` also
needs `SuiGraphQL`) and fail with tagged errors (`Effect.catchTag`); the Promise
registrations (`musicos()`, `partyos()`, `miso()`, used as `client.$extend(...)`) provide
that service themselves so their methods have no requirements; PTB builders stay synchronous.
Each package's `./errors` subpath lists its failures. The packages peer on
stable Effect `>=4.0.3 <4.1` (and `@unconfirmed/sui-effect` `>=0.3.0 <0.4.0`); install
`effect` and every `@effect/*` package at the same `4.0.x`.

## Development

Expand Down
96 changes: 55 additions & 41 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading