{"_id":"@enc-protocol/wallet-cli","name":"@enc-protocol/wallet-cli","description":"Per-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.","dist-tags":{"latest":"0.4.2","local":"0.3.2-local"},"versions":{"0.1.0":{"name":"@enc-protocol/wallet-cli","version":"0.1.0","type":"module","description":"ENC Protocol per-app SDK + skill for the \"wallet\" app. Enclaves: DM,Personal,Registry.","main":"sdk.mjs","files":["sdk.mjs","cli.json","skill/SKILL.md"],"exports":{".":"./sdk.mjs","./sdk":"./sdk.mjs","./cli.json":"./cli.json","./skill":"./skill/SKILL.md"},"dependencies":{"@enc-protocol/cli-sdk-base":"^0.1.0"},"keywords":["enc-protocol","wallet","sdk","skill"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"ERROR: No README data found!","_id":"@enc-protocol/wallet-cli@0.1.0","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/wallet-cli/-/@enc-protocol/wallet-cli-0.1.0.tgz","shasum":"08bcc51702616d0e51883b314c35cc2004743a2f","integrity":"sha512-aKZfYMnVNqzifqcl1fV4TRYYTK1K943Mbw2AAZZDqzgL6z3PrMktqVVQA7aIEttPQKghi9r6G2ABUGOfRcGxgA=="}},"0.1.1":{"name":"@enc-protocol/wallet-cli","version":"0.1.1","type":"module","description":"ENC Protocol per-app SDK + skill for the \"wallet\" app. Enclaves: DM,Personal,Registry.","main":"sdk.mjs","files":["sdk.mjs","cli.json","skill/SKILL.md","README.md"],"exports":{".":"./sdk.mjs","./sdk":"./sdk.mjs","./cli.json":"./cli.json","./skill":"./skill/SKILL.md"},"dependencies":{"@enc-protocol/cli-sdk-base":"^0.1.1"},"keywords":["enc-protocol","wallet","sdk","skill"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/wallet-cli\n\nPer-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/wallet/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme wallet`.\n\n## Install\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/wallet-cli\n```\n\n## Quick example\n\n```js\nimport { WalletSdk } from '@enc-protocol/wallet-cli'\n\nconst sdk = new WalletSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitMessages({\"message_draft\":\"example\"})\nconst events = await sdk.queryProfiles()\n```\n\n## API reference\n\n### `new WalletSdk(opts)`\n\nConstructor. Accepts:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `mode` | `'mem' \\| 'cf'` | Backend: in-process mem or HTTP cf |\n| `identity` | `Identity` | Required for cf mode (signing keypair) |\n| `nodeUrl` | `string` | cf-mode node URL (or set `NODE_URL` env) |\n| `repoRoot` | `string` | Path to repo root for finding `apps/<id>/` and `enclaves/<Name>.json` (defaults to package location) |\n| `encHome` | `string` | Optional state directory (defaults to `~/.enc`) |\n\n### `async init()`\n\nInitialize the SDK: load app definition, register all 3 enclaves (DM, Personal, Registry), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitMessages(args)` | `messages` | `DM.message` | ✓ | CDU | FRIEND \\| OWNER \\| Sender |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryInvites()` | `invites` | `DM.invite` | `subtitle`, `greeting`, `pub`, `accept`, `reject` |\n| `queryAppMessages()` | `app_messages` | *dataview (cross_enclave)* | `body`, `outgoing` |\n| `queryMessages()` | `messages` | `DM.message` | `body`, `outgoing`, `txid`, `tx_amount` |\n\n### Encryption\n\nData types `messages` are flagged `encrypt` in the app schema. The SDK calls `this._encrypt(dataType, args)` before submit. The default `_encrypt` is a pass-through.\n\nTo add real encryption (e.g. MLS for DM), subclass and override:\n\n```js\nclass EncryptedWalletSdk extends WalletSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `DM`, `Personal`, `Registry`\n- **tableMap**: `messages` → `message`, `invites` → `invite`\n- **encrypt**: `messages`\n- **derived views**: `contacts`\n\n## See also\n\n- [`cli.json`](./cli.json) — full app metadata + fuzz contract\n- [`skill/SKILL.md`](./skill/SKILL.md) — Claude Code skill bundle (install via `enc skill install wallet`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/wallet-cli@0.1.1","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/wallet-cli/-/@enc-protocol/wallet-cli-0.1.1.tgz","shasum":"4db26c3dc11d07bb736455aaf573e5091d95e87d","integrity":"sha512-VJtFf+z9hQ8Y/OJWKobrI+lxbxmERk4181sC2nuVm2maDuZST2U7T4TGgI++p8IV5Ejt/3KD4A2lQ1UkOLTFKg=="}},"0.1.2":{"name":"@enc-protocol/wallet-cli","version":"0.1.2","type":"module","description":"ENC Protocol per-app SDK for the \"wallet\" app (typed methods, encryption hook). Enclaves: DM,Personal,Registry. For the Claude Code skill, use @enc-protocol/skill-wallet (or `enc skill add wallet`).","main":"sdk.mjs","files":["sdk.mjs","cli.json","skill/SKILL.md","README.md"],"exports":{".":"./sdk.mjs","./sdk":"./sdk.mjs","./cli.json":"./cli.json","./skill":"./skill/SKILL.md"},"dependencies":{"@enc-protocol/cli-sdk-base":"^0.1.1"},"keywords":["enc-protocol","wallet","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/wallet-cli\n\nPer-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/wallet/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme wallet`.\n\n## Install\n\n### Recommended — via the `enc` CLI\n\n```bash\n# Install the global enc CLI once (any project)\nnpm install -g @enc-protocol/cli --registry https://npm-registry.ocrybit.workers.dev/\n\n# Install the skill into the current project (.claude/commands/wallet.md)\nenc skill add wallet\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc wallet` slash command. The skill package is published as `@enc-protocol/skill-wallet`.\n\n### Programmatic — for direct SDK use\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/wallet-cli\n```\n\n## Quick example\n\n```js\nimport { WalletSdk } from '@enc-protocol/wallet-cli'\n\nconst sdk = new WalletSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitMessages({\"message_draft\":\"example\"})\nconst events = await sdk.queryProfiles()\n```\n\n## API reference\n\n### `new WalletSdk(opts)`\n\nConstructor. Accepts:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `mode` | `'mem' \\| 'cf'` | Backend: in-process mem or HTTP cf |\n| `identity` | `Identity` | Required for cf mode (signing keypair) |\n| `nodeUrl` | `string` | cf-mode node URL (or set `NODE_URL` env) |\n| `repoRoot` | `string` | Path to repo root for finding `apps/<id>/` and `enclaves/<Name>.json` (defaults to package location) |\n| `encHome` | `string` | Optional state directory (defaults to `~/.enc`) |\n\n### `async init()`\n\nInitialize the SDK: load app definition, register all 3 enclaves (DM, Personal, Registry), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitMessages(args)` | `messages` | `DM.message` | ✓ | CDU | FRIEND \\| OWNER \\| Sender |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryInvites()` | `invites` | `DM.invite` | `subtitle`, `greeting`, `pub`, `accept`, `reject` |\n| `queryAppMessages()` | `app_messages` | *dataview (cross_enclave)* | `body`, `outgoing` |\n| `queryMessages()` | `messages` | `DM.message` | `body`, `outgoing`, `txid`, `tx_amount` |\n\n### Encryption\n\nData types `messages` are flagged `encrypt` in the app schema. The SDK calls `this._encrypt(dataType, args)` before submit. The default `_encrypt` is a pass-through.\n\nTo add real encryption (e.g. MLS for DM), subclass and override:\n\n```js\nclass EncryptedWalletSdk extends WalletSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `DM`, `Personal`, `Registry`\n- **tableMap**: `messages` → `message`, `invites` → `invite`\n- **encrypt**: `messages`\n- **derived views**: `contacts`\n\n## See also\n\n- [`cli.json`](./cli.json) — full app metadata + fuzz contract\n- [`skill/SKILL.md`](./skill/SKILL.md) — Claude Code skill bundle (install via `enc skill install wallet`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/wallet-cli@0.1.2","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/wallet-cli/-/@enc-protocol/wallet-cli-0.1.2.tgz","shasum":"931b410b7f7f27d16170049b0528fc0b2f1f52a3","integrity":"sha512-YjNEpXxFISNGLxamFcMeNFXfew2XwiHPlr+JMJAUH67YwkT/P0STfY+WpSh1jhFFmbX4HgJTz4x1hXqQsLUtHQ=="}},"0.2.0":{"name":"@enc-protocol/wallet-cli","version":"0.2.0","type":"module","description":"ENC Protocol per-app SDK for the \"wallet\" app — multi-enclave + external chain. Encrypted: messages.","main":"sdk.mjs","files":["sdk.mjs","cli.json","skill/SKILL.md","README.md"],"exports":{".":"./sdk.mjs","./sdk":"./sdk.mjs","./cli.json":"./cli.json","./skill":"./skill/SKILL.md"},"dependencies":{"@enc-protocol/cli-sdk-base":"^0.2.0"},"keywords":["enc-protocol","wallet","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/wallet-cli\n\nPer-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/wallet/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme wallet`.\n\n## Install\n\n### Recommended — via the `enc` CLI\n\n```bash\n# Install the global enc CLI once (any project)\nnpm install -g @enc-protocol/cli --registry https://npm-registry.ocrybit.workers.dev/\n\n# Install the skill into the current project (.claude/commands/wallet.md)\nenc skill add wallet\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc wallet` slash command. The skill package is published as `@enc-protocol/skill-wallet`.\n\n### Programmatic — for direct SDK use\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/wallet-cli\n```\n\n## Quick example\n\n```js\nimport { WalletSdk } from '@enc-protocol/wallet-cli'\n\nconst sdk = new WalletSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitMessages({\"message_draft\":\"example\"})\nconst events = await sdk.queryProfiles()\n```\n\n## API reference\n\n### `new WalletSdk(opts)`\n\nConstructor. Accepts:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `mode` | `'mem' \\| 'cf'` | Backend: in-process mem or HTTP cf |\n| `identity` | `Identity` | Required for cf mode (signing keypair) |\n| `nodeUrl` | `string` | cf-mode node URL (or set `NODE_URL` env) |\n| `repoRoot` | `string` | Path to repo root for finding `apps/<id>/` and `enclaves/<Name>.json` (defaults to package location) |\n| `encHome` | `string` | Optional state directory (defaults to `~/.enc`) |\n\n### `async init()`\n\nInitialize the SDK: load app definition, register all 3 enclaves (DM, Personal, Registry), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitMessages(args)` | `messages` | `DM.message` | ✓ | CDU | FRIEND \\| OWNER \\| Sender |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryInvites()` | `invites` | `DM.invite` | `subtitle`, `greeting`, `pub`, `accept`, `reject` |\n| `queryAppMessages()` | `app_messages` | *dataview (cross_enclave)* | `body`, `outgoing` |\n| `queryMessages()` | `messages` | `DM.message` | `body`, `outgoing`, `txid`, `tx_amount` |\n\n### Encryption\n\nData types `messages` are flagged `encrypt` in the app schema. The SDK calls `this._encrypt(dataType, args)` before submit. The default `_encrypt` is a pass-through.\n\nTo add real encryption (e.g. MLS for DM), subclass and override:\n\n```js\nclass EncryptedWalletSdk extends WalletSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `DM`, `Personal`, `Registry`\n- **tableMap**: `messages` → `message`, `invites` → `invite`\n- **encrypt**: `messages`\n- **derived views**: `contacts`\n\n## See also\n\n- [`cli.json`](./cli.json) — full app metadata + fuzz contract\n- [`skill/SKILL.md`](./skill/SKILL.md) — Claude Code skill bundle (install via `enc skill install wallet`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/wallet-cli@0.2.0","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/wallet-cli/-/@enc-protocol/wallet-cli-0.2.0.tgz","shasum":"1c1171624376076845c6ab7e89b439f618d3e171","integrity":"sha512-f7/AFIRko6wLqzMxnY6q0F+Y9WZuHJmCluLLxM0XPnAt23K6WXtL2p/60V7Hi0fiRzzDD3W0Zde613thRPL7Ew=="}},"0.3.0":{"name":"@enc-protocol/wallet-cli","version":"0.3.0","type":"module","description":"ENC Protocol per-app SDK for the \"wallet\" app — multi-enclave + external chain. Encrypted: messages.","main":"sdk.mjs","files":["sdk.mjs","cli.json","skill/SKILL.md","README.md"],"exports":{".":"./sdk.mjs","./sdk":"./sdk.mjs","./cli.json":"./cli.json","./skill":"./skill/SKILL.md"},"dependencies":{"@enc-protocol/cli-sdk-base":"^0.3.0"},"keywords":["enc-protocol","wallet","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/wallet-cli\n\nPer-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/wallet/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme wallet`.\n\n## Install\n\n### Recommended — via the `enc` CLI\n\n```bash\n# Install the global enc CLI once (any project)\nnpm install -g @enc-protocol/cli --registry https://npm-registry.ocrybit.workers.dev/\n\n# Install the skill into the current project (.claude/commands/wallet.md)\nenc skill add wallet\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc wallet` slash command. The skill package is published as `@enc-protocol/skill-wallet`.\n\n### Programmatic — for direct SDK use\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/wallet-cli\n```\n\n## Quick example\n\n```js\nimport { WalletSdk } from '@enc-protocol/wallet-cli'\n\nconst sdk = new WalletSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitMessages({\"message_draft\":\"example\"})\nconst events = await sdk.queryProfiles()\n```\n\n## API reference\n\n### `new WalletSdk(opts)`\n\nConstructor. Accepts:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `mode` | `'mem' \\| 'cf'` | Backend: in-process mem or HTTP cf |\n| `identity` | `Identity` | Required for cf mode (signing keypair) |\n| `nodeUrl` | `string` | cf-mode node URL (or set `NODE_URL` env) |\n| `repoRoot` | `string` | Path to repo root for finding `apps/<id>/` and `enclaves/<Name>.json` (defaults to package location) |\n| `encHome` | `string` | Optional state directory (defaults to `~/.enc`) |\n\n### `async init()`\n\nInitialize the SDK: load app definition, register all 3 enclaves (DM, Personal, Registry), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitMessages(args)` | `messages` | `DM.message` | ✓ | CDU | FRIEND \\| OWNER \\| Sender |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryInvites()` | `invites` | `DM.invite` | `subtitle`, `greeting`, `pub`, `accept`, `reject` |\n| `queryAppMessages()` | `app_messages` | *dataview (cross_enclave)* | `body`, `outgoing` |\n| `queryMessages()` | `messages` | `DM.message` | `body`, `outgoing`, `txid`, `tx_amount` |\n\n### Encryption\n\nData types `messages` are flagged `encrypt` in the app schema. The SDK calls `this._encrypt(dataType, args)` before submit. The default `_encrypt` is a pass-through.\n\nTo add real encryption (e.g. MLS for DM), subclass and override:\n\n```js\nclass EncryptedWalletSdk extends WalletSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `DM`, `Personal`, `Registry`\n- **tableMap**: `messages` → `message`, `invites` → `invite`\n- **encrypt**: `messages`\n- **derived views**: `contacts`\n\n## See also\n\n- [`cli.json`](./cli.json) — full app metadata + fuzz contract\n- [`skill/SKILL.md`](./skill/SKILL.md) — Claude Code skill bundle (install via `enc skill install wallet`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/wallet-cli@0.3.0","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/wallet-cli/-/@enc-protocol/wallet-cli-0.3.0.tgz","shasum":"bc6ce3d2c5310b995bf813cecbd295f0f8fb5d13","integrity":"sha512-SYdYXbSX98vbuU5Q6wRpSflDp6pJNgEAj/emLLcHYl5bGBp6dTnM0T+3P7BsmSVWmGeTLgKnOTdnvf61mSc/9g=="}},"0.3.1":{"name":"@enc-protocol/wallet-cli","version":"0.3.1","type":"module","description":"ENC Protocol per-app SDK for the \"wallet\" app — multi-enclave + external chain. Encrypted: messages.","main":"sdk.mjs","files":["sdk.mjs","cli.json","skill/SKILL.md","README.md"],"exports":{".":"./sdk.mjs","./sdk":"./sdk.mjs","./cli.json":"./cli.json","./skill":"./skill/SKILL.md"},"dependencies":{"@enc-protocol/cli-sdk-base":"^0.3.0"},"keywords":["enc-protocol","wallet","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/wallet-cli\n\nPer-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/wallet/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme wallet`.\n\n## Install\n\n### Recommended — via the `enc` CLI\n\n```bash\n# Install the global enc CLI once (any project)\nnpm install -g @enc-protocol/cli --registry https://npm-registry.ocrybit.workers.dev/\n\n# Install the skill into the current project (.claude/commands/wallet.md)\nenc skill add wallet\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc wallet` slash command. The skill package is published as `@enc-protocol/skill-wallet`.\n\n### Programmatic — for direct SDK use\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/wallet-cli\n```\n\n## Quick example\n\n```js\nimport { WalletSdk } from '@enc-protocol/wallet-cli'\n\nconst sdk = new WalletSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitMessages({\"message_draft\":\"example\"})\nconst events = await sdk.queryProfiles()\n```\n\n## API reference\n\n### `new WalletSdk(opts)`\n\nConstructor. Accepts:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `mode` | `'mem' \\| 'cf'` | Backend: in-process mem or HTTP cf |\n| `identity` | `Identity` | Required for cf mode (signing keypair) |\n| `nodeUrl` | `string` | cf-mode node URL (or set `NODE_URL` env) |\n| `repoRoot` | `string` | Path to repo root for finding `apps/<id>/` and `enclaves/<Name>.json` (defaults to package location) |\n| `encHome` | `string` | Optional state directory (defaults to `~/.enc`) |\n\n### `async init()`\n\nInitialize the SDK: load app definition, register all 3 enclaves (DM, Personal, Registry), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitMessages(args)` | `messages` | `DM.message` | ✓ | CDU | FRIEND \\| OWNER \\| Sender |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryInvites()` | `invites` | `DM.invite` | `subtitle`, `greeting`, `pub`, `accept`, `reject` |\n| `queryAppMessages()` | `app_messages` | *dataview (cross_enclave)* | `body`, `outgoing` |\n| `queryMessages()` | `messages` | `DM.message` | `body`, `outgoing`, `txid`, `tx_amount` |\n\n### Encryption\n\nData types `messages` are flagged `encrypt` in the app schema. The SDK calls `this._encrypt(dataType, args)` before submit. The default `_encrypt` is a pass-through.\n\nTo add real encryption (e.g. MLS for DM), subclass and override:\n\n```js\nclass EncryptedWalletSdk extends WalletSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `DM`, `Personal`, `Registry`\n- **tableMap**: `messages` → `message`, `invites` → `invite`\n- **encrypt**: `messages`\n- **derived views**: `contacts`\n\n## See also\n\n- [`cli.json`](./cli.json) — full app metadata + fuzz contract\n- [`skill/SKILL.md`](./skill/SKILL.md) — Claude Code skill bundle (install via `enc skill install wallet`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/wallet-cli@0.3.1","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/wallet-cli/-/@enc-protocol/wallet-cli-0.3.1.tgz","shasum":"9f150e438532aca998968c938b7ca1665184e730","integrity":"sha512-IQs+2EpJ/MWPpTsf2PRfxRVjVoNkOLA7Nz3Hdeq3oDBAjjSkc5An7h+Ks2QPXxyn+HF7do+o8hCcskfEFahaaA=="}},"0.4.1":{"name":"@enc-protocol/wallet-cli","version":"0.4.1","type":"module","description":"ENC Protocol per-app SDK for the \"wallet\" app — multi-enclave + external chain. Encrypted: messages.","main":"sdk.mjs","files":["sdk.mjs","cli.json","skill/SKILL.md","README.md"],"exports":{".":"./sdk.mjs","./sdk":"./sdk.mjs","./cli.json":"./cli.json","./skill":"./skill/SKILL.md"},"dependencies":{"@enc-protocol/cli-sdk-base":"^0.4.0"},"keywords":["enc-protocol","wallet","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/wallet-cli\n\nPer-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/wallet/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme wallet`.\n\n## Install\n\n### Recommended — via the `enc` CLI\n\n```bash\n# Install the global enc CLI once (any project)\nnpm install -g @enc-protocol/cli --registry https://npm-registry.ocrybit.workers.dev/\n\n# Install the skill into the current project (.claude/commands/wallet.md)\nenc skill add wallet\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc wallet` slash command. The skill package is published as `@enc-protocol/skill-wallet`.\n\n### Programmatic — for direct SDK use\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/wallet-cli\n```\n\n## Quick example\n\n```js\nimport { WalletSdk } from '@enc-protocol/wallet-cli'\n\nconst sdk = new WalletSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitMessages({\"message_draft\":\"example\"})\nconst events = await sdk.queryProfiles()\n```\n\n## API reference\n\n### `new WalletSdk(opts)`\n\nConstructor. Accepts:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `mode` | `'mem' \\| 'cf'` | Backend: in-process mem or HTTP cf |\n| `identity` | `Identity` | Required for cf mode (signing keypair) |\n| `nodeUrl` | `string` | cf-mode node URL (or set `NODE_URL` env) |\n| `repoRoot` | `string` | Path to repo root for finding `apps/<id>/` and `enclaves/<Name>.json` (defaults to package location) |\n| `encHome` | `string` | Optional state directory (defaults to `~/.enc`) |\n\n### `async init()`\n\nInitialize the SDK: load app definition, register all 3 enclaves (DM, Personal, Registry), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitMessages(args)` | `messages` | `DM.message` | ✓ | CDU | FRIEND \\| OWNER \\| Sender |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryInvites()` | `invites` | `DM.invite` | `subtitle`, `greeting`, `pub`, `accept`, `reject` |\n| `queryAppMessages()` | `app_messages` | *dataview (cross_enclave)* | `body`, `outgoing` |\n| `queryMessages()` | `messages` | `DM.message` | `body`, `outgoing`, `txid`, `tx_amount` |\n\n### Encryption\n\nData types `messages` are flagged `encrypt` in the app schema. The SDK calls `this._encrypt(dataType, args)` before submit. The default `_encrypt` is a pass-through.\n\nTo add real encryption (e.g. MLS for DM), subclass and override:\n\n```js\nclass EncryptedWalletSdk extends WalletSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `DM`, `Personal`, `Registry`\n- **tableMap**: `messages` → `message`, `invites` → `invite`\n- **encrypt**: `messages`\n- **derived views**: `contacts`\n\n## See also\n\n- [`cli.json`](./cli.json) — full app metadata + fuzz contract\n- [`skill/SKILL.md`](./skill/SKILL.md) — Claude Code skill bundle (install via `enc skill install wallet`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/wallet-cli@0.4.1","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/wallet-cli/-/@enc-protocol/wallet-cli-0.4.1.tgz","shasum":"c1f26dd365ecd8d260412c12671ac752190fd6ff","integrity":"sha512-CCEgwKYfu9TSF9gjJL2rp16/Et7QLBBoUvlt7rn2z0w1XxjYKJtgfj+ej0ojmb3Dtk9y/nel9IxjMi9S/+owZQ=="}},"0.4.2":{"name":"@enc-protocol/wallet-cli","version":"0.4.2","type":"module","description":"ENC Protocol per-app SDK for the \"wallet\" app — multi-enclave + external chain. Encrypted: messages.","main":"sdk.mjs","files":["sdk.mjs","cli.json","skill/SKILL.md","README.md"],"exports":{".":"./sdk.mjs","./sdk":"./sdk.mjs","./cli.json":"./cli.json","./skill":"./skill/SKILL.md"},"dependencies":{"@enc-protocol/cli-sdk-base":"^0.4.0"},"keywords":["enc-protocol","wallet","sdk","cli"],"license":"MIT","publishConfig":{"registry":"https://npm-registry.ocrybit.workers.dev/"},"readme":"# @enc-protocol/wallet-cli\n\nPer-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/wallet/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme wallet`.\n\n## Install\n\n### Recommended — via the `enc` CLI\n\n```bash\n# Install the global enc CLI once (any project)\nnpm install -g @enc-protocol/cli --registry https://npm-registry.ocrybit.workers.dev/\n\n# Install the skill into the current project (.claude/commands/wallet.md)\nenc skill add wallet\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc wallet` slash command. The skill package is published as `@enc-protocol/skill-wallet`.\n\n### Programmatic — for direct SDK use\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/wallet-cli\n```\n\n## Quick example\n\n```js\nimport { WalletSdk } from '@enc-protocol/wallet-cli'\n\nconst sdk = new WalletSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitMessages({\"message_draft\":\"example\"})\nconst events = await sdk.queryProfiles()\n```\n\n## API reference\n\n### `new WalletSdk(opts)`\n\nConstructor. Accepts:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `mode` | `'mem' \\| 'cf'` | Backend: in-process mem or HTTP cf |\n| `identity` | `Identity` | Required for cf mode (signing keypair) |\n| `nodeUrl` | `string` | cf-mode node URL (or set `NODE_URL` env) |\n| `repoRoot` | `string` | Path to repo root for finding `apps/<id>/` and `enclaves/<Name>.json` (defaults to package location) |\n| `encHome` | `string` | Optional state directory (defaults to `~/.enc`) |\n\n### `async init()`\n\nInitialize the SDK: load app definition, register all 3 enclaves (DM, Personal, Registry), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitMessages(args)` | `messages` | `DM.message` | ✓ | CDU | FRIEND \\| OWNER \\| Sender |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryInvites()` | `invites` | `DM.invite` | `subtitle`, `greeting`, `pub`, `accept`, `reject` |\n| `queryAppMessages()` | `app_messages` | *dataview (cross_enclave)* | `body`, `outgoing` |\n| `queryMessages()` | `messages` | `DM.message` | `body`, `outgoing`, `txid`, `tx_amount` |\n\n### Encryption\n\nData types `messages` are flagged `encrypt` in the app schema. The SDK calls `this._encrypt(dataType, args)` before submit. The default `_encrypt` is a pass-through.\n\nTo add real encryption (e.g. MLS for DM), subclass and override:\n\n```js\nclass EncryptedWalletSdk extends WalletSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `DM`, `Personal`, `Registry`\n- **tableMap**: `messages` → `message`, `invites` → `invite`\n- **encrypt**: `messages`\n- **derived views**: `contacts`\n\n## See also\n\n- [`cli.json`](./cli.json) — full app metadata + fuzz contract\n- [`skill/SKILL.md`](./skill/SKILL.md) — Claude Code skill bundle (install via `enc skill install wallet`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","_id":"@enc-protocol/wallet-cli@0.4.2","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/wallet-cli/-/@enc-protocol/wallet-cli-0.4.2.tgz","shasum":"f2eed942015a329ec5e355b1e9a25fb7a6fbcc92","integrity":"sha512-8LMYIXDQSTJHmjE4kBoGfpxOiJgeJXvh35NxHQJLjLcRKgdnmjnz+fljB9ENSuF3973FnBRtHuJ5qY9JFScZow=="}},"0.3.2-local":{"name":"@enc-protocol/wallet-cli","version":"0.3.2-local","type":"module","main":"sdk.mjs","exports":{".":"./sdk.mjs","./sdk.mjs":"./sdk.mjs"},"dependencies":{"@enc-protocol/cli-sdk-base":"^0.3.1"},"readme":"# @enc-protocol/wallet-cli\n\nPer-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/wallet/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme wallet`.\n\n## Install\n\n### Recommended — via the `enc` CLI\n\n```bash\n# Install the global enc CLI once (any project)\nnpm install -g @enc-protocol/cli --registry https://npm-registry.ocrybit.workers.dev/\n\n# Install the skill into the current project (.claude/commands/wallet.md)\nenc skill add wallet\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc wallet` slash command. The skill package is published as `@enc-protocol/skill-wallet`.\n\n### Programmatic — for direct SDK use\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/wallet-cli\n```\n\n## Quick example\n\n```js\nimport { WalletSdk } from '@enc-protocol/wallet-cli'\n\nconst sdk = new WalletSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitMessages({\"message_draft\":\"example\"})\nconst events = await sdk.queryProfiles()\n```\n\n## API reference\n\n### `new WalletSdk(opts)`\n\nConstructor. Accepts:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `mode` | `'mem' \\| 'cf'` | Backend: in-process mem or HTTP cf |\n| `identity` | `Identity` | Required for cf mode (signing keypair) |\n| `nodeUrl` | `string` | cf-mode node URL (or set `NODE_URL` env) |\n| `repoRoot` | `string` | Path to repo root for finding `apps/<id>/` and `enclaves/<Name>.json` (defaults to package location) |\n| `encHome` | `string` | Optional state directory (defaults to `~/.enc`) |\n\n### `async init()`\n\nInitialize the SDK: load app definition, register all 3 enclaves (DM, Personal, Registry), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitMessages(args)` | `messages` | `DM.message` | ✓ | CDU | FRIEND \\| OWNER \\| Sender |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryInvites()` | `invites` | `DM.invite` | `subtitle`, `greeting`, `pub`, `accept`, `reject` |\n| `queryAppMessages()` | `app_messages` | *dataview (cross_enclave)* | `body`, `outgoing` |\n| `queryMessages()` | `messages` | `DM.message` | `body`, `outgoing`, `txid`, `tx_amount` |\n\n### Encryption\n\nData types `messages`, `invites` are flagged `encrypt` in the app schema. The SDK calls `this._encrypt(dataType, args)` before submit. The default `_encrypt` is a pass-through.\n\nTo add real encryption (e.g. MLS for DM), subclass and override:\n\n```js\nclass EncryptedWalletSdk extends WalletSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `DM`, `Personal`, `Registry`\n- **tableMap**: `messages` → `message`, `invites` → `invite`\n- **encrypt**: `messages`, `invites`\n- **derived views**: `contacts`\n\n## See also\n\n- [`cli.json`](./cli.json) — full app metadata + fuzz contract\n- [`skill/SKILL.md`](./skill/SKILL.md) — Claude Code skill bundle (install via `enc skill install wallet`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n","readmeFilename":"README.md","gitHead":"9d8f216d0d69913d9f915ddcdc914e183a2ea52a","_id":"@enc-protocol/wallet-cli@0.3.2-local","description":"Per-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.","_nodeVersion":"26.1.0","_npmVersion":"11.13.0","dist":{"tarball":"https://npm-registry.ocrybit.workers.dev/@enc-protocol/wallet-cli/-/@enc-protocol/wallet-cli-0.3.2-local.tgz","shasum":"5d9407c530e8e27df0f05891c897993b67531e41","integrity":"sha512-RsEnWzjoK49RviFi2z09aNdvjnyw4fhU3HfJhzSlfJjD2XOzXEuDHlsvIItK8kS+6B3VQJarT2UrLnnFETt+/w=="}}},"time":{"created":"2026-05-14T14:59:38.296Z","modified":"2026-06-12T21:35:52.826Z","0.1.0":"2026-05-14T14:59:38.296Z","0.1.1":"2026-05-14T15:08:31.961Z","0.1.2":"2026-05-14T15:18:46.007Z","0.2.0":"2026-05-14T16:19:05.365Z","0.3.0":"2026-05-15T19:19:24.347Z","0.3.1":"2026-05-15T19:53:59.128Z","0.4.1":"2026-05-19T02:59:41.386Z","0.4.2":"2026-05-19T17:59:55.037Z","0.3.2-local":"2026-06-12T21:35:52.826Z"},"readme":"# @enc-protocol/wallet-cli\n\nPer-app SDK for the `wallet` app on ENC Protocol. Enclaves: DM, Personal, Registry.\n\n> Auto-generated by `lib/codegen/readme-codegen.mjs` from `apps/wallet/{app,schema}.json`. Do not hand-edit — regenerate via `enc gen readme wallet`.\n\n## Install\n\n### Recommended — via the `enc` CLI\n\n```bash\n# Install the global enc CLI once (any project)\nnpm install -g @enc-protocol/cli --registry https://npm-registry.ocrybit.workers.dev/\n\n# Install the skill into the current project (.claude/commands/wallet.md)\nenc skill add wallet\n```\n\nThe skill is the recommended consumption surface for Claude Code — adds an `/enc wallet` slash command. The skill package is published as `@enc-protocol/skill-wallet`.\n\n### Programmatic — for direct SDK use\n\n```bash\necho \"@enc-protocol:registry=https://npm-registry.ocrybit.workers.dev/\" >> .npmrc\nnpm install @enc-protocol/wallet-cli\n```\n\n## Quick example\n\n```js\nimport { WalletSdk } from '@enc-protocol/wallet-cli'\n\nconst sdk = new WalletSdk({ mode: 'cf', nodeUrl: process.env.NODE_URL })\nawait sdk.init()\nawait sdk.submitMessages({\"message_draft\":\"example\"})\nconst events = await sdk.queryProfiles()\n```\n\n## API reference\n\n### `new WalletSdk(opts)`\n\nConstructor. Accepts:\n\n| Option | Type | Description |\n|--------|------|-------------|\n| `mode` | `'mem' \\| 'cf'` | Backend: in-process mem or HTTP cf |\n| `identity` | `Identity` | Required for cf mode (signing keypair) |\n| `nodeUrl` | `string` | cf-mode node URL (or set `NODE_URL` env) |\n| `repoRoot` | `string` | Path to repo root for finding `apps/<id>/` and `enclaves/<Name>.json` (defaults to package location) |\n| `encHome` | `string` | Optional state directory (defaults to `~/.enc`) |\n\n### `async init()`\n\nInitialize the SDK: load app definition, register all 3 enclaves (DM, Personal, Registry), wire dataview, mint cf enclaves if needed.\n\n### Write methods\n\n| Method | Data type | Resolves to | Encrypted | Ops | Operators |\n|--------|-----------|-------------|-----------|-----|-----------|\n| `submitMessages(args)` | `messages` | `DM.message` | ✓ | CDU | FRIEND \\| OWNER \\| Sender |\n\n### Read methods\n\n| Method | Read | Source | Fields |\n|--------|------|--------|--------|\n| `queryProfiles()` | `profiles` | *dataview (cross_enclave)* | *all* |\n| `queryInvites()` | `invites` | `DM.invite` | `subtitle`, `greeting`, `pub`, `accept`, `reject` |\n| `queryAppMessages()` | `app_messages` | *dataview (cross_enclave)* | `body`, `outgoing` |\n| `queryMessages()` | `messages` | `DM.message` | `body`, `outgoing`, `txid`, `tx_amount` |\n\n### Encryption\n\nData types `messages`, `invites` are flagged `encrypt` in the app schema. The SDK calls `this._encrypt(dataType, args)` before submit. The default `_encrypt` is a pass-through.\n\nTo add real encryption (e.g. MLS for DM), subclass and override:\n\n```js\nclass EncryptedWalletSdk extends WalletSdk {\n  async _encrypt(dataType, args) {\n    // produce ciphertext for `args`\n    return { ciphertext: /* ... */ }\n  }\n}\n```\n\n## Composition\n\n- **Enclaves**: `DM`, `Personal`, `Registry`\n- **tableMap**: `messages` → `message`, `invites` → `invite`\n- **encrypt**: `messages`, `invites`\n- **derived views**: `contacts`\n\n## See also\n\n- [`cli.json`](./cli.json) — full app metadata + fuzz contract\n- [`skill/SKILL.md`](./skill/SKILL.md) — Claude Code skill bundle (install via `enc skill install wallet`)\n- `@enc-protocol/cli-sdk-base` — base class (`AppSdk`, `AppClient`, `DataView`)\n"}