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
6 changes: 4 additions & 2 deletions .agents/skills/guardian-auth-signature-flows/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,15 @@ Default targeted checks:
```bash
cargo test -p guardian-client
cargo test -p guardian-server
cd packages/guardian-client && npm test
cd packages
npm ci
npm test -w @openzeppelin/guardian-client
```

Expand when the auth or signature change crosses into multisig execution:

- `cargo test -p miden-multisig-client`
- `cd packages/miden-multisig-client && npm test`
- `cd packages && npm run build -w @openzeppelin/guardian-client && npm test -w @openzeppelin/miden-multisig-client`
- `smoke-test-rust-multisig-sdk`
- `smoke-test-ts-multisig-sdk`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Likely surfaces:
Validation:
- `cargo test -p guardian-server`
- `cargo test -p guardian-client`
- `cd packages/guardian-client && npm test`
- `cd packages && npm ci && npm test -w @openzeppelin/guardian-client`
- one upstream smoke when user-visible behavior changes

## Canonicalization Or State Lifecycle
Expand Down Expand Up @@ -85,7 +85,7 @@ Likely surfaces:

Validation:
- `cargo test -p guardian-client`
- `cd packages/guardian-client && npm test`
- `cd packages && npm ci && npm test -w @openzeppelin/guardian-client`

## Multisig Proposal Lifecycle

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,11 @@ Update these when the public workflow or expected responses changed.
Minimum:
- `cargo test -p guardian-server`
- `cargo test -p guardian-client`
- `cd packages/guardian-client && npm test`
- `cd packages && npm ci && npm test -w @openzeppelin/guardian-client`

Expand when the contract crosses layers:
- `cargo test -p miden-multisig-client`
- `cd packages/miden-multisig-client && npm test`
- `cd packages && npm run build -w @openzeppelin/guardian-client && npm test -w @openzeppelin/miden-multisig-client`
- `cargo test -p guardian-demo`
- `cd examples/smoke-web && npm run typecheck && npm run build`
- manual smoke with `smoke-test-rust-multisig-sdk` or `smoke-test-ts-multisig-sdk`
Original file line number Diff line number Diff line change
Expand Up @@ -62,12 +62,15 @@ Default targeted checks:

```bash
cargo test -p miden-multisig-client
cd packages/miden-multisig-client && npm test
cd packages
npm ci
npm run build -w @openzeppelin/guardian-client
npm test -w @openzeppelin/miden-multisig-client
```

Then expand as needed:

- `cargo test -p guardian-client` or `cd packages/guardian-client && npm test` if the change crosses the GUARDIAN client boundary
- `cargo test -p guardian-client` or `cd packages && npm test -w @openzeppelin/guardian-client` if the change crosses the GUARDIAN client boundary
- `cargo test -p guardian-demo`
- `cd examples/smoke-web && npm run typecheck && npm run build`
- `cd examples/web && npm run build`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,10 @@ Code in:

Run:
```bash
cd packages/guardian-client && npm test
cd packages/guardian-client && npm run build
cd packages
npm ci
npm test -w @openzeppelin/guardian-client
npm run build -w @openzeppelin/guardian-client
```

## Rust Multisig SDK
Expand All @@ -63,8 +65,11 @@ Code in:

Run:
```bash
cd packages/miden-multisig-client && npm test
cd packages/miden-multisig-client && npm run build
cd packages
npm ci
npm run build -w @openzeppelin/guardian-client
npm test -w @openzeppelin/miden-multisig-client
npm run build -w @openzeppelin/miden-multisig-client
```

## Rust Example Surface
Expand Down
42 changes: 20 additions & 22 deletions .agents/skills/release-guardian-sdk-packages/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,10 @@ Read the current source of truth at the start of every release task:
- `crates/contracts/Cargo.toml`
- `crates/miden-multisig-client/Cargo.toml`
- `packages/guardian-client/package.json`
- `packages/guardian-client/package-lock.json`
- `packages/guardian-evm-client/package.json`
- `packages/guardian-evm-client/package-lock.json`
- `packages/miden-multisig-client/package.json`
- `packages/miden-multisig-client/package-lock.json`
- `packages/guardian-operator-client/package.json`
- `packages/guardian-operator-client/package-lock.json`
- `packages/package-lock.json`
- `references/release-surface.md`

Trust these sources in this order:
Expand Down Expand Up @@ -101,16 +98,14 @@ For a coordinated release, update all of these:
- `packages/miden-multisig-client/package.json` `@openzeppelin/guardian-client` dependency range
- `packages/guardian-operator-client/package.json` `version`

After editing TypeScript versions, refresh lockfiles from the package directories:
After editing TypeScript versions, refresh the workspace lockfile:

```bash
cd packages/guardian-client && npm install --package-lock-only
cd packages/guardian-evm-client && npm install --package-lock-only
cd packages/miden-multisig-client && npm install --package-lock-only
cd packages/guardian-operator-client && npm install --package-lock-only
cd packages
npm install
```

Inspect the resulting lockfile diff. Keep the refresh focused on version and dependency metadata.
Inspect the resulting lockfile diff. Keep the refresh focused on version and dependency metadata. `@openzeppelin/guardian-client` must remain a workspace link (`resolved: "guardian-client"`, `link: true`), not a registry tarball.

## Validation

Expand All @@ -124,14 +119,16 @@ cargo test -p miden-multisig-client
```

```bash
cd packages/guardian-client && npm test
cd packages/guardian-client && npm run build
cd packages/guardian-evm-client && npm test
cd packages/guardian-evm-client && npm run build
cd packages/miden-multisig-client && npm test
cd packages/miden-multisig-client && npm run build
cd packages/guardian-operator-client && npm test
cd packages/guardian-operator-client && npm run build
cd packages
npm ci
npm run build -w @openzeppelin/guardian-client
npm test -w @openzeppelin/guardian-client
npm run build -w @openzeppelin/guardian-evm-client
npm test -w @openzeppelin/guardian-evm-client
npm run build -w @openzeppelin/miden-multisig-client
npm test -w @openzeppelin/miden-multisig-client
npm run build -w @openzeppelin/guardian-operator-client
npm test -w @openzeppelin/guardian-operator-client
```

Then check that each publishable README still matches its shipped surface.
Expand All @@ -158,10 +155,11 @@ cargo publish --dry-run --locked \
```

```bash
cd packages/guardian-client && npm publish --access public --dry-run
cd packages/guardian-evm-client && npm publish --access public --dry-run
cd packages/miden-multisig-client && npm publish --access public --dry-run
cd packages/guardian-operator-client && npm publish --access public --dry-run
cd packages
npm publish -w @openzeppelin/guardian-client --access public --dry-run
npm publish -w @openzeppelin/guardian-evm-client --access public --dry-run
npm publish -w @openzeppelin/miden-multisig-client --access public --dry-run
npm publish -w @openzeppelin/guardian-operator-client --access public --dry-run
```

If a dry-run or test fails, stop there and report the failing step, package, and minimal next action.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,21 @@ Current coordinated SDK release line: `0.16.x`

## Publishable TypeScript Packages

TypeScript packages live in the `packages/` npm workspace with a single
lockfile at `packages/package-lock.json`. `@openzeppelin/miden-multisig-client` depends
on `@openzeppelin/guardian-client` via a version range; the workspace links the
in-repo package for install/test/publish. Do not use the `workspace:` protocol.

1. `@openzeppelin/guardian-client`
- manifest: `packages/guardian-client/package.json`
- lockfile: `packages/guardian-client/package-lock.json`
2. `@openzeppelin/guardian-evm-client`
- manifest: `packages/guardian-evm-client/package.json`
- lockfile: `packages/guardian-evm-client/package-lock.json`
- no internal release dependencies
3. `@openzeppelin/miden-multisig-client`
- manifest: `packages/miden-multisig-client/package.json`
- lockfile: `packages/miden-multisig-client/package-lock.json`
- internal release dependency: `@openzeppelin/guardian-client`
4. `@openzeppelin/guardian-operator-client`
- manifest: `packages/guardian-operator-client/package.json`
- lockfile: `packages/guardian-operator-client/package-lock.json`
- no internal release dependencies

## Files Usually Touched In A Coordinated Release
Expand All @@ -42,11 +43,10 @@ Current coordinated SDK release line: `0.16.x`
- `crates/contracts/Cargo.toml`
- `crates/miden-multisig-client/Cargo.toml`
- `packages/guardian-client/package.json`
- `packages/guardian-client/package-lock.json`
- `packages/guardian-evm-client/package.json`
- `packages/guardian-evm-client/package-lock.json`
- `packages/miden-multisig-client/package.json`
- `packages/miden-multisig-client/package-lock.json`
- `packages/guardian-operator-client/package.json`
- `packages/package-lock.json`
- `docs/MULTISIG_SDK.md` if release examples or tag snippets need updating

## Rust Publication Automation
Expand Down Expand Up @@ -85,8 +85,10 @@ OIDC trusted publishing is the only publication authentication path.
## TypeScript Publish Sequence

```bash
cd packages/guardian-client && npm publish --access public
cd packages/guardian-evm-client && npm publish --access public
cd packages/miden-multisig-client && npm publish --access public
cd packages/guardian-operator-client && npm publish --access public
cd packages
npm ci
npm publish -w @openzeppelin/guardian-client --access public
npm publish -w @openzeppelin/guardian-evm-client --access public
npm publish -w @openzeppelin/miden-multisig-client --access public
npm publish -w @openzeppelin/guardian-operator-client --access public
```
11 changes: 8 additions & 3 deletions .agents/skills/smoke-test-evm-proposal-support/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,13 @@ Run the focused checks before manual browser work:
```bash
cargo test -p guardian-server
cargo test -p guardian-server --features evm
cd packages/guardian-evm-client && npm test && npm run build
cd examples/evm-smoke-web && npm run typecheck && npm run build
(
cd packages
npm ci
npm test -w @openzeppelin/guardian-evm-client
npm run build -w @openzeppelin/guardian-evm-client
)
(cd examples/evm-smoke-web && npm run typecheck && npm run build)
```

Use `git diff -- packages/guardian-client crates/client crates/shared` when the user wants the EVM client isolated from the base clients. Those paths should stay unchanged unless a separate contract change requires them.
Expand Down Expand Up @@ -135,7 +140,7 @@ EVM_ENTRYPOINT_ADDRESS=0x433709009b8330fda32311df1c2afa402ed8d009 \
node .agents/skills/smoke-test-evm-proposal-support/scripts/run-evm-client-smoke.mjs
```

The script uses the workspace build output at `packages/guardian-evm-client/dist/index.js`, so run `npm run build` in that package first after TypeScript edits.
The script uses the workspace build output at `packages/guardian-evm-client/dist/index.js`, so run `npm run build -w @openzeppelin/guardian-evm-client` from `packages/` first after TypeScript edits.

## Browser Smoke

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env node
import { createRequire } from 'node:module';
import path from 'node:path';
import { fileURLToPath, pathToFileURL } from 'node:url';

Expand All @@ -7,8 +8,9 @@ const skillDir = path.resolve(scriptDir, '..');
const repoRoot = path.resolve(skillDir, '../../..');
const evmClientPackage = path.join(repoRoot, 'packages/guardian-evm-client');
const clientDist = path.join(evmClientPackage, 'dist/index.js');
const viemEntry = path.join(evmClientPackage, 'node_modules/viem/_esm/index.js');
const viemAccountsEntry = path.join(evmClientPackage, 'node_modules/viem/_esm/accounts/index.js');
const workspaceRequire = createRequire(pathToFileURL(clientDist));
const viemEntry = workspaceRequire.resolve('viem');
const viemAccountsEntry = workspaceRequire.resolve('viem/accounts');

const {
GuardianEvmClient,
Expand Down
10 changes: 8 additions & 2 deletions .agents/skills/smoke-test-operator-dashboard/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,14 @@ Use `examples/operator-smoke-web` as the primary smoke surface for operator auth
- `docs/PRODUCTION.md`
2. Run the focused checks:
```bash
cd packages/guardian-operator-client && npm run typecheck && npm test && npm run build
cd examples/operator-smoke-web && npm run typecheck && npm run build
(
cd packages
npm ci
npm run typecheck -w @openzeppelin/guardian-operator-client
npm test -w @openzeppelin/guardian-operator-client
npm run build -w @openzeppelin/guardian-operator-client
)
(cd examples/operator-smoke-web && npm run typecheck && npm run build)
cargo test -p guardian-server api::dashboard::tests
cargo test -p guardian-server dashboard::tests
```
Expand Down
11 changes: 8 additions & 3 deletions .agents/skills/smoke-test-ts-multisig-sdk/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,14 @@ When reporting, capture the concrete tool invocation path used (Chrome MCP vs Cl
- `examples/smoke-web/src/App.tsx`
2. Run targeted TypeScript validation before manual smoke:
```bash
cd packages/miden-multisig-client && npm test
cd examples/smoke-web && npm run typecheck && npm run build
cd examples/web && npm run build
(
cd packages
npm ci
npm run build -w @openzeppelin/guardian-client
npm test -w @openzeppelin/miden-multisig-client
)
(cd examples/smoke-web && npm run typecheck && npm run build)
(cd examples/web && npm run build)
```
3. Start one GUARDIAN server from the repo root:
```bash
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,14 @@ Map the changed area to the smallest browser smoke workflow that still proves th
Run validation first:

```bash
cd packages/miden-multisig-client && npm test
cd examples/smoke-web && npm run typecheck && npm run build
cd examples/web && npm run build
(
cd packages
npm ci
npm run build -w @openzeppelin/guardian-client
npm test -w @openzeppelin/miden-multisig-client
)
(cd examples/smoke-web && npm run typecheck && npm run build)
(cd examples/web && npm run build)
```

Primary smoke server commands:
Expand Down Expand Up @@ -453,4 +458,3 @@ Use when:
- thrown auth/unauthenticated error (proof-of-possession metadata regression)
- recovered `accountId` differs from `originalAccountId` (server-side index regression)
- `verifyStateCommitment` mismatch after recover + load (state-fetch regression)

Loading
Loading